diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml
deleted file mode 100644
index abd5587..0000000
--- a/.github/workflows/prettier.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-name: make-it-sexy
-
-# This action works with pull requests and pushes
-on:
- pull_request:
- push:
- branches:
- - main
- paths:
- - website/**
-
-permissions:
- contents: write
- pull-requests: write
-
-jobs:
- prettier:
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v3
- with:
- # Make sure the actual branch is checked out when running on pull requests
- ref: ${{ github.head_ref }}
-
- - name: Prettify code
- uses: creyD/prettier_action@v4.3
- with:
- # This part is also where you can pass other options, for example:
- prettier_options: --write **/*.{ts,js}
diff --git a/.github/workflows/react.yml b/.github/workflows/react.yml
deleted file mode 100644
index f091894..0000000
--- a/.github/workflows/react.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-name: react-build-deploy
-
-permissions:
- contents: write
- pull-requests: write
-
-on:
- push:
- branches:
- - "main"
- paths:
- - website/**
-
- pull_request:
- branches: [ "main" ]
-
-jobs:
- build:
-
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v3
-
- - run : cd ./website && npm i
- shell: bash
- - run : cd ./website && npm ci
- shell: bash
- - run : cd ./website && npm run build
- shell: bash
- - run : git config user.name github-actions
- shell: bash
- - run : git config user.email github-actions@github.com
- shell: bash
- - run : cd ./website && git --work-tree dist add --all
- - run : touch .nojekyll
- shell: bash
- - run : git commit -m "Automatic Build and Deploy run by GitHub Actions"
- shell: bash
- - run : git push origin HEAD:gh-pages --force
- shell: bash
diff --git a/website/public/.nojekyll b/.nojekyll
similarity index 100%
rename from website/public/.nojekyll
rename to .nojekyll
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index d739a1b..0000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "cmake.configureOnOpen": false
-}
diff --git a/README.md b/README.md
deleted file mode 100644
index 923e5e9..0000000
--- a/README.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# WATT WIZARD
-
-Watt-Wizards is your go-to platform for sustainable living made fun and rewarding. This innovative app hooks into your smart home or breaker panel to track your energy and water usage in real-time. But that's not all! Challenge your friends in friendly competitions to see who can be the most resource-efficient. Earn points, unlock rewards, and level up your eco-conscious lifestyle, all while reducing your carbon footprint. Watt-Wizards turns everyday sustainability into an engaging game, making it easier than ever to save the planet—and your wallet."
-
-## What it does
-Watt Wizard promotes energy conservation by making it a competitive yet friendly challenge. Users can pit their energy-saving skills against friends and family, vying for the top spot in energy efficiency. By gamifying the process, it taps into the same motivational drive that has made group fitness 25% more effective than individual workouts. Just as people push themselves harder in a group exercise setting, they're also more likely to take energy-saving actions when they know they're in a friendly competition.
-
-## How We Built It
-
-### Website:
-Our website serves as the main portal for users to get acquainted with our app's features, benefits, and the journey of getting started. We chose **React** for the frontend development due to its component-based architecture, which allows for efficient code reuse and dynamic user interfaces. It aids in delivering a smooth and responsive experience for our users. The site's backend is powered by **Firebase**, offering us a scalable cloud solution that seamlessly integrates with our web and mobile platforms. Firebase's real-time database and authentication modules ensured that we have a secure and live-updated platform. Furthermore, the site was styled and structured using **HTML**, **TypeScript**, and various frontend libraries, accounting for the mentioned percentages in our codebase.
-
-### Mobile App:
-The mobile app, the core of our user experience, was built using **Flutter**. Written in **Dart**, Flutter allowed us to create a cross-platform application that maintains a native feel on both Android and iOS devices. The app provides real-time tracking of energy savings, competitive leaderboards, and user rankings. We prioritized user-friendliness in our design, ensuring that users of all technical backgrounds could easily navigate and benefit from our app. Integration with Firebase ensures that user data is consistently synchronized, authenticated, and securely stored.
-
-### Arduino Firmware:
-For the hardware component, we leveraged **Arduino**, programming our devices using a combination of **C++** and the Arduino scripting language. This firmware emulates a smart home device, collecting real-time energy consumption data. Given the nature of IoT devices and the need for efficient performance, our choice of C++ enabled us to manage memory usage directly and ensure swift data processing. The firmware is designed to communicate seamlessly with our mobile application, transmitting real-time energy consumption data for users to monitor and act upon.
-
-### Languages Utilized:
-Our diverse tech stack incorporated various programming languages to meet specific needs:
-- **Dart (31.8%)**: Primarily used for developing our Flutter mobile application.
-- **C++ (25.5%)**: Used for Arduino firmware development to capture and process energy data.
-- **CMake (17.4%)**: Assisted in managing the build process of our software using a compiler-independent method.
-- **TypeScript (15.9%)**: Enhanced our React website development with static typing.
-- **Ruby (2.6%)**: Possibly used in scripting, automation, or specific backend tasks.
-- **HTML (2.4%)**: Structured our React website.
-- **Other (4.4%)**: This likely includes various scripting, configuration, and styling languages that aided in the development and deployment processes.
-
-Our diverse choice of languages and technologies ensured that each component of our project was optimized for performance, scalability, and user experience.
-
-## Challenges I ran into
-- **Integration across platforms**: Ensuring seamless communication between the Arduino device, mobile app, and website was challenging, especially when it came to real-time data transfer.
-- **User Experience Design**: Designing an interface that was both engaging and user-friendly required multiple iterations and feedback sessions.
-- **Data Accuracy**: Ensuring the Arduino device accurately captured and transmitted energy consumption data was crucial for the app's credibility and effectiveness.
-
-## Accomplishments that I'm proud of
-- **Real-time Tracking**: Achieving real-time energy consumption tracking, which provides users with immediate feedback on their energy-saving actions.
-- **Gamification**: Successfully translating the concept of energy saving into a competitive and fun game, making conservation more appealing to a broader audience.
-- **Cross-platform Integration**: Seamlessly integrating data across the website, app, and Arduino device.
-
-## What I learned
-- The importance of user feedback in refining the app experience.
-- The technical intricacies of integrating hardware (Arduino) with software platforms.
-- The power of gamification in driving behavior change.
-
-## What's next for Watt Wizard
-- **Integration with more Smart Devices**: Expanding compatibility to include other smart home devices, allowing users to track a broader range of energy consumption.
-- **Rewards System**: Introducing tangible rewards for top savers, such as discounts on energy bills or eco-friendly products.
-- **Community Features**: Adding features like forums or chat rooms where users can share energy-saving tips and strategies with one another.
diff --git a/SECURITY.md b/SECURITY.md
deleted file mode 100644
index 358d8fd..0000000
--- a/SECURITY.md
+++ /dev/null
@@ -1,43 +0,0 @@
-# Security Policy
-
-## Supported Versions
-
-Currently, only the following versions of our project are being actively supported with security updates:
-
-| Version | Supported |
-| ------- | ------------------ |
-| 5.1.x | :white_check_mark: |
-| 5.0.x | :x: |
-| 4.0.x | :white_check_mark: |
-| < 4.0 | :x: |
-
-If you're using an unsupported version, we recommend upgrading to the latest supported version to ensure you receive all security updates.
-
-## Reporting a Vulnerability
-
-We take security issues very seriously. If you believe you've found a security vulnerability in our project, we encourage you to notify us. We will investigate all legitimate reports and do our best to quickly fix the problem.
-
-### Guidelines:
-
-1. **Private Disclosure**: Please keep the details of any vulnerabilities you discover private until they've been addressed by our team. This will help ensure that malicious actors do not take advantage of the issue before we can address it.
-
-2. **Provide Details**: Offer as much information as possible, including a description of the vulnerability, its potential impact, and steps for reproduction. This will aid our team in understanding and addressing the issue more rapidly.
-
-3. **Communication**: After submitting a report, you can expect to hear back from our team within 48 hours. We'll keep you updated on the status of the fix and provide an estimated timeline for resolution.
-
-4. **Responsible Disclosure**: If we confirm the vulnerability, we ask that you allow us adequate time to address the issue before publicly disclosing it.
-
-### How to Report:
-
-Send an email to our dedicated security team at [security@hackga.tech](mailto:security@hackga.tech). (Replace `example.com` with your actual domain.)
-
-## What's Next:
-
-Upon receiving a vulnerability report, our security team will:
-
-1. Confirm receipt of the report.
-2. Investigate the reported issue.
-3. Take appropriate action to address the vulnerability.
-4. Notify the reporter about the status of the vulnerability, whether it's accepted, declined, or requires more info.
-
-Thank you for helping us ensure the safety and security of our project and its users!
diff --git a/app/watt_wizard/.gitignore b/app/watt_wizard/.gitignore
deleted file mode 100644
index 24476c5..0000000
--- a/app/watt_wizard/.gitignore
+++ /dev/null
@@ -1,44 +0,0 @@
-# Miscellaneous
-*.class
-*.log
-*.pyc
-*.swp
-.DS_Store
-.atom/
-.buildlog/
-.history
-.svn/
-migrate_working_dir/
-
-# IntelliJ related
-*.iml
-*.ipr
-*.iws
-.idea/
-
-# The .vscode folder contains launch configuration and tasks you configure in
-# VS Code which you may wish to be included in version control, so this line
-# is commented out by default.
-#.vscode/
-
-# Flutter/Dart/Pub related
-**/doc/api/
-**/ios/Flutter/.last_build_id
-.dart_tool/
-.flutter-plugins
-.flutter-plugins-dependencies
-.packages
-.pub-cache/
-.pub/
-/build/
-
-# Symbolication related
-app.*.symbols
-
-# Obfuscation related
-app.*.map.json
-
-# Android Studio will place build artifacts here
-/android/app/debug
-/android/app/profile
-/android/app/release
diff --git a/app/watt_wizard/.metadata b/app/watt_wizard/.metadata
deleted file mode 100644
index b48f68e..0000000
--- a/app/watt_wizard/.metadata
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file tracks properties of this Flutter project.
-# Used by Flutter tool to assess capabilities and perform upgrades etc.
-#
-# This file should be version controlled and should not be manually edited.
-
-version:
- revision: "2f708eb8396e362e280fac22cf171c2cb467343c"
- channel: "stable"
-
-project_type: app
-
-# Tracks metadata for the flutter migrate command
-migration:
- platforms:
- - platform: root
- create_revision: 2f708eb8396e362e280fac22cf171c2cb467343c
- base_revision: 2f708eb8396e362e280fac22cf171c2cb467343c
- - platform: android
- create_revision: 2f708eb8396e362e280fac22cf171c2cb467343c
- base_revision: 2f708eb8396e362e280fac22cf171c2cb467343c
- - platform: ios
- create_revision: 2f708eb8396e362e280fac22cf171c2cb467343c
- base_revision: 2f708eb8396e362e280fac22cf171c2cb467343c
- - platform: linux
- create_revision: 2f708eb8396e362e280fac22cf171c2cb467343c
- base_revision: 2f708eb8396e362e280fac22cf171c2cb467343c
- - platform: macos
- create_revision: 2f708eb8396e362e280fac22cf171c2cb467343c
- base_revision: 2f708eb8396e362e280fac22cf171c2cb467343c
- - platform: web
- create_revision: 2f708eb8396e362e280fac22cf171c2cb467343c
- base_revision: 2f708eb8396e362e280fac22cf171c2cb467343c
- - platform: windows
- create_revision: 2f708eb8396e362e280fac22cf171c2cb467343c
- base_revision: 2f708eb8396e362e280fac22cf171c2cb467343c
-
- # User provided section
-
- # List of Local paths (relative to this file) that should be
- # ignored by the migrate tool.
- #
- # Files that are not part of the templates will be ignored by default.
- unmanaged_files:
- - 'lib/main.dart'
- - 'ios/Runner.xcodeproj/project.pbxproj'
diff --git a/app/watt_wizard/README.md b/app/watt_wizard/README.md
deleted file mode 100644
index 5fb9710..0000000
--- a/app/watt_wizard/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# watt_wizard
-
-A new Flutter project.
-
-## Getting Started
-
-This project is a starting point for a Flutter application.
-
-A few resources to get you started if this is your first Flutter project:
-
-- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
-- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
-
-For help getting started with Flutter development, view the
-[online documentation](https://docs.flutter.dev/), which offers tutorials,
-samples, guidance on mobile development, and a full API reference.
diff --git a/app/watt_wizard/analysis_options.yaml b/app/watt_wizard/analysis_options.yaml
deleted file mode 100644
index 0d29021..0000000
--- a/app/watt_wizard/analysis_options.yaml
+++ /dev/null
@@ -1,28 +0,0 @@
-# This file configures the analyzer, which statically analyzes Dart code to
-# check for errors, warnings, and lints.
-#
-# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
-# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
-# invoked from the command line by running `flutter analyze`.
-
-# The following line activates a set of recommended lints for Flutter apps,
-# packages, and plugins designed to encourage good coding practices.
-include: package:flutter_lints/flutter.yaml
-
-linter:
- # The lint rules applied to this project can be customized in the
- # section below to disable rules from the `package:flutter_lints/flutter.yaml`
- # included above or to enable additional rules. A list of all available lints
- # and their documentation is published at https://dart.dev/lints.
- #
- # Instead of disabling a lint rule for the entire project in the
- # section below, it can also be suppressed for a single line of code
- # or a specific dart file by using the `// ignore: name_of_lint` and
- # `// ignore_for_file: name_of_lint` syntax on the line or in the file
- # producing the lint.
- rules:
- # avoid_print: false # Uncomment to disable the `avoid_print` rule
- # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
-
-# Additional information about this file can be found at
-# https://dart.dev/guides/language/analysis-options
diff --git a/app/watt_wizard/android/.gitignore b/app/watt_wizard/android/.gitignore
deleted file mode 100644
index 6f56801..0000000
--- a/app/watt_wizard/android/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-gradle-wrapper.jar
-/.gradle
-/captures/
-/gradlew
-/gradlew.bat
-/local.properties
-GeneratedPluginRegistrant.java
-
-# Remember to never publicly share your keystore.
-# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
-key.properties
-**/*.keystore
-**/*.jks
diff --git a/app/watt_wizard/android/app/build.gradle b/app/watt_wizard/android/app/build.gradle
deleted file mode 100644
index ed1fa74..0000000
--- a/app/watt_wizard/android/app/build.gradle
+++ /dev/null
@@ -1,67 +0,0 @@
-plugins {
- id "com.android.application"
- id "kotlin-android"
- id "dev.flutter.flutter-gradle-plugin"
-}
-
-def localProperties = new Properties()
-def localPropertiesFile = rootProject.file('local.properties')
-if (localPropertiesFile.exists()) {
- localPropertiesFile.withReader('UTF-8') { reader ->
- localProperties.load(reader)
- }
-}
-
-def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
-if (flutterVersionCode == null) {
- flutterVersionCode = '1'
-}
-
-def flutterVersionName = localProperties.getProperty('flutter.versionName')
-if (flutterVersionName == null) {
- flutterVersionName = '1.0'
-}
-
-android {
- namespace "com.example.watt_wizard"
- compileSdkVersion flutter.compileSdkVersion
- ndkVersion flutter.ndkVersion
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- kotlinOptions {
- jvmTarget = '1.8'
- }
-
- sourceSets {
- main.java.srcDirs += 'src/main/kotlin'
- }
-
- defaultConfig {
- // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
- applicationId "com.example.watt_wizard"
- // You can update the following values to match your application needs.
- // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
- minSdkVersion 21
- targetSdkVersion flutter.targetSdkVersion
- versionCode flutterVersionCode.toInteger()
- versionName flutterVersionName
- }
-
- buildTypes {
- release {
- // TODO: Add your own signing config for the release build.
- // Signing with the debug keys for now, so `flutter run --release` works.
- signingConfig signingConfigs.debug
- }
- }
-}
-
-flutter {
- source '../..'
-}
-
-dependencies {}
diff --git a/app/watt_wizard/android/app/google-services.json b/app/watt_wizard/android/app/google-services.json
deleted file mode 100644
index 0bcd6db..0000000
--- a/app/watt_wizard/android/app/google-services.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "project_info": {
- "project_number": "192909855910",
- "project_id": "hackgt2023",
- "storage_bucket": "hackgt2023.appspot.com"
- },
- "client": [
- {
- "client_info": {
- "mobilesdk_app_id": "1:192909855910:android:a3092489a70c4c20873867",
- "android_client_info": {
- "package_name": "com.example.watt_wizard"
- }
- },
- "oauth_client": [],
- "api_key": [
- {
- "current_key": "AIzaSyATxM_RUX_OreCB3ftyZaI2ByYNNZTRqm4"
- }
- ],
- "services": {
- "appinvite_service": {
- "other_platform_oauth_client": []
- }
- }
- }
- ],
- "configuration_version": "1"
-}
diff --git a/app/watt_wizard/android/app/src/debug/AndroidManifest.xml b/app/watt_wizard/android/app/src/debug/AndroidManifest.xml
deleted file mode 100644
index 399f698..0000000
--- a/app/watt_wizard/android/app/src/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
diff --git a/app/watt_wizard/android/app/src/main/AndroidManifest.xml b/app/watt_wizard/android/app/src/main/AndroidManifest.xml
deleted file mode 100644
index 68f4ad0..0000000
--- a/app/watt_wizard/android/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/watt_wizard/android/app/src/main/kotlin/com/example/watt_wizard/MainActivity.kt b/app/watt_wizard/android/app/src/main/kotlin/com/example/watt_wizard/MainActivity.kt
deleted file mode 100644
index 399e427..0000000
--- a/app/watt_wizard/android/app/src/main/kotlin/com/example/watt_wizard/MainActivity.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.example.watt_wizard
-
-import io.flutter.embedding.android.FlutterActivity
-
-class MainActivity: FlutterActivity() {
-}
diff --git a/app/watt_wizard/android/app/src/main/res/drawable-v21/launch_background.xml b/app/watt_wizard/android/app/src/main/res/drawable-v21/launch_background.xml
deleted file mode 100644
index 0944b4d..0000000
--- a/app/watt_wizard/android/app/src/main/res/drawable-v21/launch_background.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- -
-
-
-
diff --git a/app/watt_wizard/android/app/src/main/res/drawable/launch_background.xml b/app/watt_wizard/android/app/src/main/res/drawable/launch_background.xml
deleted file mode 100644
index 6a36c4f..0000000
--- a/app/watt_wizard/android/app/src/main/res/drawable/launch_background.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- -
-
-
-
diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/watt_wizard/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
deleted file mode 100644
index 90f9580..0000000
--- a/app/watt_wizard/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/watt_wizard/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index 8d60cb9..0000000
Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_back.png b/app/watt_wizard/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_back.png
deleted file mode 100644
index a05f3fc..0000000
Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_back.png and /dev/null differ
diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_fore.png b/app/watt_wizard/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_fore.png
deleted file mode 100644
index 4868daa..0000000
Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-hdpi/ic_launcher_adaptive_fore.png and /dev/null differ
diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/watt_wizard/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index f86bc77..0000000
Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_back.png b/app/watt_wizard/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_back.png
deleted file mode 100644
index 3814b23..0000000
Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_back.png and /dev/null differ
diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_fore.png b/app/watt_wizard/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_fore.png
deleted file mode 100644
index 78765d2..0000000
Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-mdpi/ic_launcher_adaptive_fore.png and /dev/null differ
diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/watt_wizard/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index 8b90d02..0000000
Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_back.png b/app/watt_wizard/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_back.png
deleted file mode 100644
index 2e1846f..0000000
Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_back.png and /dev/null differ
diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png b/app/watt_wizard/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png
deleted file mode 100644
index d94be19..0000000
Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png and /dev/null differ
diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/watt_wizard/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 7ba67bf..0000000
Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png b/app/watt_wizard/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png
deleted file mode 100644
index fe154c8..0000000
Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png and /dev/null differ
diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png b/app/watt_wizard/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png
deleted file mode 100644
index 793300a..0000000
Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png and /dev/null differ
diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/watt_wizard/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 2b46da5..0000000
Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png b/app/watt_wizard/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png
deleted file mode 100644
index b640524..0000000
Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png and /dev/null differ
diff --git a/app/watt_wizard/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png b/app/watt_wizard/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png
deleted file mode 100644
index 3109844..0000000
Binary files a/app/watt_wizard/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png and /dev/null differ
diff --git a/app/watt_wizard/android/app/src/main/res/values-night/styles.xml b/app/watt_wizard/android/app/src/main/res/values-night/styles.xml
deleted file mode 100644
index 06952be..0000000
--- a/app/watt_wizard/android/app/src/main/res/values-night/styles.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
diff --git a/app/watt_wizard/android/app/src/main/res/values/styles.xml b/app/watt_wizard/android/app/src/main/res/values/styles.xml
deleted file mode 100644
index cb1ef88..0000000
--- a/app/watt_wizard/android/app/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
diff --git a/app/watt_wizard/android/app/src/profile/AndroidManifest.xml b/app/watt_wizard/android/app/src/profile/AndroidManifest.xml
deleted file mode 100644
index 399f698..0000000
--- a/app/watt_wizard/android/app/src/profile/AndroidManifest.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
diff --git a/app/watt_wizard/android/build.gradle b/app/watt_wizard/android/build.gradle
deleted file mode 100644
index 0391438..0000000
--- a/app/watt_wizard/android/build.gradle
+++ /dev/null
@@ -1,34 +0,0 @@
-buildscript {
- ext.kotlin_version = '1.7.10'
- repositories {
- google()
- mavenCentral()
- }
-
- dependencies {
- classpath 'com.android.tools.build:gradle:7.3.0'
- // START: FlutterFire Configuration
- classpath 'com.google.gms:google-services:4.3.10'
- // END: FlutterFire Configuration
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
- }
-}
-
-allprojects {
- repositories {
- google()
- mavenCentral()
- }
-}
-
-rootProject.buildDir = '../build'
-subprojects {
- project.buildDir = "${rootProject.buildDir}/${project.name}"
-}
-subprojects {
- project.evaluationDependsOn(':app')
-}
-
-tasks.register("clean", Delete) {
- delete rootProject.buildDir
-}
diff --git a/app/watt_wizard/android/gradle.properties b/app/watt_wizard/android/gradle.properties
deleted file mode 100644
index 94adc3a..0000000
--- a/app/watt_wizard/android/gradle.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-org.gradle.jvmargs=-Xmx1536M
-android.useAndroidX=true
-android.enableJetifier=true
diff --git a/app/watt_wizard/android/gradle/wrapper/gradle-wrapper.properties b/app/watt_wizard/android/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 3c472b9..0000000
--- a/app/watt_wizard/android/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
diff --git a/app/watt_wizard/android/settings.gradle b/app/watt_wizard/android/settings.gradle
deleted file mode 100644
index 55c4ca8..0000000
--- a/app/watt_wizard/android/settings.gradle
+++ /dev/null
@@ -1,20 +0,0 @@
-pluginManagement {
- def flutterSdkPath = {
- def properties = new Properties()
- file("local.properties").withInputStream { properties.load(it) }
- def flutterSdkPath = properties.getProperty("flutter.sdk")
- assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
- return flutterSdkPath
- }
- settings.ext.flutterSdkPath = flutterSdkPath()
-
- includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")
-
- plugins {
- id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false
- }
-}
-
-include ":app"
-
-apply from: "${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle/app_plugin_loader.gradle"
diff --git a/app/watt_wizard/assets/icon/android_round.png b/app/watt_wizard/assets/icon/android_round.png
deleted file mode 100644
index 2b46da5..0000000
Binary files a/app/watt_wizard/assets/icon/android_round.png and /dev/null differ
diff --git a/app/watt_wizard/assets/icon/ios_square.png b/app/watt_wizard/assets/icon/ios_square.png
deleted file mode 100644
index 6473067..0000000
Binary files a/app/watt_wizard/assets/icon/ios_square.png and /dev/null differ
diff --git a/app/watt_wizard/ios/.gitignore b/app/watt_wizard/ios/.gitignore
deleted file mode 100644
index 7a7f987..0000000
--- a/app/watt_wizard/ios/.gitignore
+++ /dev/null
@@ -1,34 +0,0 @@
-**/dgph
-*.mode1v3
-*.mode2v3
-*.moved-aside
-*.pbxuser
-*.perspectivev3
-**/*sync/
-.sconsign.dblite
-.tags*
-**/.vagrant/
-**/DerivedData/
-Icon?
-**/Pods/
-**/.symlinks/
-profile
-xcuserdata
-**/.generated/
-Flutter/App.framework
-Flutter/Flutter.framework
-Flutter/Flutter.podspec
-Flutter/Generated.xcconfig
-Flutter/ephemeral/
-Flutter/app.flx
-Flutter/app.zip
-Flutter/flutter_assets/
-Flutter/flutter_export_environment.sh
-ServiceDefinitions.json
-Runner/GeneratedPluginRegistrant.*
-
-# Exceptions to above rules.
-!default.mode1v3
-!default.mode2v3
-!default.pbxuser
-!default.perspectivev3
diff --git a/app/watt_wizard/ios/Flutter/AppFrameworkInfo.plist b/app/watt_wizard/ios/Flutter/AppFrameworkInfo.plist
deleted file mode 100644
index 9625e10..0000000
--- a/app/watt_wizard/ios/Flutter/AppFrameworkInfo.plist
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- en
- CFBundleExecutable
- App
- CFBundleIdentifier
- io.flutter.flutter.app
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- App
- CFBundlePackageType
- FMWK
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1.0
- MinimumOSVersion
- 11.0
-
-
diff --git a/app/watt_wizard/ios/Flutter/Debug.xcconfig b/app/watt_wizard/ios/Flutter/Debug.xcconfig
deleted file mode 100644
index ec97fc6..0000000
--- a/app/watt_wizard/ios/Flutter/Debug.xcconfig
+++ /dev/null
@@ -1,2 +0,0 @@
-#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
-#include "Generated.xcconfig"
diff --git a/app/watt_wizard/ios/Flutter/Release.xcconfig b/app/watt_wizard/ios/Flutter/Release.xcconfig
deleted file mode 100644
index c4855bf..0000000
--- a/app/watt_wizard/ios/Flutter/Release.xcconfig
+++ /dev/null
@@ -1,2 +0,0 @@
-#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
-#include "Generated.xcconfig"
diff --git a/app/watt_wizard/ios/Podfile b/app/watt_wizard/ios/Podfile
deleted file mode 100644
index fdcc671..0000000
--- a/app/watt_wizard/ios/Podfile
+++ /dev/null
@@ -1,44 +0,0 @@
-# Uncomment this line to define a global platform for your project
-# platform :ios, '11.0'
-
-# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
-ENV['COCOAPODS_DISABLE_STATS'] = 'true'
-
-project 'Runner', {
- 'Debug' => :debug,
- 'Profile' => :release,
- 'Release' => :release,
-}
-
-def flutter_root
- generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
- unless File.exist?(generated_xcode_build_settings_path)
- raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
- end
-
- File.foreach(generated_xcode_build_settings_path) do |line|
- matches = line.match(/FLUTTER_ROOT\=(.*)/)
- return matches[1].strip if matches
- end
- raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
-end
-
-require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
-
-flutter_ios_podfile_setup
-
-target 'Runner' do
- use_frameworks!
- use_modular_headers!
-
- flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
- target 'RunnerTests' do
- inherit! :search_paths
- end
-end
-
-post_install do |installer|
- installer.pods_project.targets.each do |target|
- flutter_additional_ios_build_settings(target)
- end
-end
diff --git a/app/watt_wizard/ios/Podfile.lock b/app/watt_wizard/ios/Podfile.lock
deleted file mode 100644
index 6f349b5..0000000
--- a/app/watt_wizard/ios/Podfile.lock
+++ /dev/null
@@ -1,95 +0,0 @@
-PODS:
- - Firebase/Auth (10.15.0):
- - Firebase/CoreOnly
- - FirebaseAuth (~> 10.15.0)
- - Firebase/CoreOnly (10.15.0):
- - FirebaseCore (= 10.15.0)
- - firebase_auth (4.10.1):
- - Firebase/Auth (= 10.15.0)
- - firebase_core
- - Flutter
- - firebase_core (2.17.0):
- - Firebase/CoreOnly (= 10.15.0)
- - Flutter
- - FirebaseAppCheckInterop (10.16.0)
- - FirebaseAuth (10.15.0):
- - FirebaseAppCheckInterop (~> 10.0)
- - FirebaseCore (~> 10.0)
- - GoogleUtilities/AppDelegateSwizzler (~> 7.8)
- - GoogleUtilities/Environment (~> 7.8)
- - GTMSessionFetcher/Core (< 4.0, >= 2.1)
- - RecaptchaInterop (~> 100.0)
- - FirebaseCore (10.15.0):
- - FirebaseCoreInternal (~> 10.0)
- - GoogleUtilities/Environment (~> 7.8)
- - GoogleUtilities/Logger (~> 7.8)
- - FirebaseCoreInternal (10.16.0):
- - "GoogleUtilities/NSData+zlib (~> 7.8)"
- - Flutter (1.0.0)
- - flutter_blue_plus (0.0.1):
- - Flutter
- - GoogleUtilities/AppDelegateSwizzler (7.11.5):
- - GoogleUtilities/Environment
- - GoogleUtilities/Logger
- - GoogleUtilities/Network
- - GoogleUtilities/Environment (7.11.5):
- - PromisesObjC (< 3.0, >= 1.2)
- - GoogleUtilities/Logger (7.11.5):
- - GoogleUtilities/Environment
- - GoogleUtilities/Network (7.11.5):
- - GoogleUtilities/Logger
- - "GoogleUtilities/NSData+zlib"
- - GoogleUtilities/Reachability
- - "GoogleUtilities/NSData+zlib (7.11.5)"
- - GoogleUtilities/Reachability (7.11.5):
- - GoogleUtilities/Logger
- - GTMSessionFetcher/Core (3.1.1)
- - PromisesObjC (2.3.1)
- - RecaptchaInterop (100.0.0)
-
-DEPENDENCIES:
- - firebase_auth (from `.symlinks/plugins/firebase_auth/ios`)
- - firebase_core (from `.symlinks/plugins/firebase_core/ios`)
- - Flutter (from `Flutter`)
- - flutter_blue_plus (from `.symlinks/plugins/flutter_blue_plus/ios`)
-
-SPEC REPOS:
- trunk:
- - Firebase
- - FirebaseAppCheckInterop
- - FirebaseAuth
- - FirebaseCore
- - FirebaseCoreInternal
- - GoogleUtilities
- - GTMSessionFetcher
- - PromisesObjC
- - RecaptchaInterop
-
-EXTERNAL SOURCES:
- firebase_auth:
- :path: ".symlinks/plugins/firebase_auth/ios"
- firebase_core:
- :path: ".symlinks/plugins/firebase_core/ios"
- Flutter:
- :path: Flutter
- flutter_blue_plus:
- :path: ".symlinks/plugins/flutter_blue_plus/ios"
-
-SPEC CHECKSUMS:
- Firebase: 66043bd4579e5b73811f96829c694c7af8d67435
- firebase_auth: b62e99e6ece589afe88ebe8919eb9563b52c384c
- firebase_core: 28e84c2a4fcf6a50ef83f47b145ded8c1fa331e4
- FirebaseAppCheckInterop: 82358cff9f33452dd44259e88eea5e562500b1cb
- FirebaseAuth: a55ec5f7f8a5b1c2dd750235c1bb419bfb642445
- FirebaseCore: 2cec518b43635f96afe7ac3a9c513e47558abd2e
- FirebaseCoreInternal: 26233f705cc4531236818a07ac84d20c333e505a
- Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
- flutter_blue_plus: 4837da7d00cf5d441fdd6635b3a57f936778ea96
- GoogleUtilities: 13e2c67ede716b8741c7989e26893d151b2b2084
- GTMSessionFetcher: e8647203b65cee28c5f73d0f473d096653945e72
- PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4
- RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21
-
-PODFILE CHECKSUM: 70d9d25280d0dd177a5f637cdb0f0b0b12c6a189
-
-COCOAPODS: 1.13.0
diff --git a/app/watt_wizard/ios/Runner.xcodeproj/project.pbxproj b/app/watt_wizard/ios/Runner.xcodeproj/project.pbxproj
deleted file mode 100644
index 0d86fbe..0000000
--- a/app/watt_wizard/ios/Runner.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,728 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 54;
- objects = {
-
-/* Begin PBXBuildFile section */
- 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
- 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
- 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
- 41537795E34FA001EE143254 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 733AA6FE2A4FAD019E87CDBB /* Pods_Runner.framework */; };
- 6553FAFCDC2913BA04B1C689 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = E3751F13A19ED5BCF0C09D8B /* GoogleService-Info.plist */; };
- 697348092253D698AA9D6296 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F28B475E2516064BCD44CB2 /* Pods_RunnerTests.framework */; };
- 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
- 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
- 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
- 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 97C146E61CF9000F007C117D /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 97C146ED1CF9000F007C117D;
- remoteInfo = Runner;
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXCopyFilesBuildPhase section */
- 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- );
- name = "Embed Frameworks";
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
- 08743A3CF09F8CF7840DA1FB /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
- 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
- 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
- 2BF400FBACB249FE6BC0CC53 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; };
- 2F28B475E2516064BCD44CB2 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 2F3A21A663C36D5C2A03B789 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
- 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; };
- 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
- 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
- 733AA6FE2A4FAD019E87CDBB /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
- 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
- 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
- 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
- 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
- 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
- 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
- 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
- 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- B027CC5455B001989665BA70 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; };
- DDDA5D190020F1C26D9811C2 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; };
- E3751F13A19ED5BCF0C09D8B /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = ""; };
- F4A1E74F540296F10E51BF0F /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 09AF838A1E1F5EF0D33E350C /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 697348092253D698AA9D6296 /* Pods_RunnerTests.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 97C146EB1CF9000F007C117D /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 41537795E34FA001EE143254 /* Pods_Runner.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 331C8082294A63A400263BE5 /* RunnerTests */ = {
- isa = PBXGroup;
- children = (
- 331C807B294A618700263BE5 /* RunnerTests.swift */,
- );
- path = RunnerTests;
- sourceTree = "";
- };
- 9740EEB11CF90186004384FC /* Flutter */ = {
- isa = PBXGroup;
- children = (
- 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
- 9740EEB21CF90195004384FC /* Debug.xcconfig */,
- 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
- 9740EEB31CF90195004384FC /* Generated.xcconfig */,
- );
- name = Flutter;
- sourceTree = "";
- };
- 97C146E51CF9000F007C117D = {
- isa = PBXGroup;
- children = (
- 9740EEB11CF90186004384FC /* Flutter */,
- 97C146F01CF9000F007C117D /* Runner */,
- 97C146EF1CF9000F007C117D /* Products */,
- 331C8082294A63A400263BE5 /* RunnerTests */,
- E3751F13A19ED5BCF0C09D8B /* GoogleService-Info.plist */,
- EB5B3D69821204F209175050 /* Pods */,
- A9BF8DF1C7CACDB884E18B9A /* Frameworks */,
- );
- sourceTree = "";
- };
- 97C146EF1CF9000F007C117D /* Products */ = {
- isa = PBXGroup;
- children = (
- 97C146EE1CF9000F007C117D /* Runner.app */,
- 331C8081294A63A400263BE5 /* RunnerTests.xctest */,
- );
- name = Products;
- sourceTree = "";
- };
- 97C146F01CF9000F007C117D /* Runner */ = {
- isa = PBXGroup;
- children = (
- 97C146FA1CF9000F007C117D /* Main.storyboard */,
- 97C146FD1CF9000F007C117D /* Assets.xcassets */,
- 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
- 97C147021CF9000F007C117D /* Info.plist */,
- 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
- 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
- 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
- 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
- );
- path = Runner;
- sourceTree = "";
- };
- A9BF8DF1C7CACDB884E18B9A /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- 733AA6FE2A4FAD019E87CDBB /* Pods_Runner.framework */,
- 2F28B475E2516064BCD44CB2 /* Pods_RunnerTests.framework */,
- );
- name = Frameworks;
- sourceTree = "";
- };
- EB5B3D69821204F209175050 /* Pods */ = {
- isa = PBXGroup;
- children = (
- 2F3A21A663C36D5C2A03B789 /* Pods-Runner.debug.xcconfig */,
- 08743A3CF09F8CF7840DA1FB /* Pods-Runner.release.xcconfig */,
- F4A1E74F540296F10E51BF0F /* Pods-Runner.profile.xcconfig */,
- B027CC5455B001989665BA70 /* Pods-RunnerTests.debug.xcconfig */,
- DDDA5D190020F1C26D9811C2 /* Pods-RunnerTests.release.xcconfig */,
- 2BF400FBACB249FE6BC0CC53 /* Pods-RunnerTests.profile.xcconfig */,
- );
- path = Pods;
- sourceTree = "";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 331C8080294A63A400263BE5 /* RunnerTests */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
- buildPhases = (
- 000E60C6824E88237ED8F19B /* [CP] Check Pods Manifest.lock */,
- 331C807D294A63A400263BE5 /* Sources */,
- 331C807F294A63A400263BE5 /* Resources */,
- 09AF838A1E1F5EF0D33E350C /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- 331C8086294A63A400263BE5 /* PBXTargetDependency */,
- );
- name = RunnerTests;
- productName = RunnerTests;
- productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */;
- productType = "com.apple.product-type.bundle.unit-test";
- };
- 97C146ED1CF9000F007C117D /* Runner */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
- buildPhases = (
- 2B6962DA59A4A54AB7DFED45 /* [CP] Check Pods Manifest.lock */,
- 9740EEB61CF901F6004384FC /* Run Script */,
- 97C146EA1CF9000F007C117D /* Sources */,
- 97C146EB1CF9000F007C117D /* Frameworks */,
- 97C146EC1CF9000F007C117D /* Resources */,
- 9705A1C41CF9048500538489 /* Embed Frameworks */,
- 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
- A3050AD50B0B75530E959A45 /* [CP] Embed Pods Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = Runner;
- productName = Runner;
- productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
- productType = "com.apple.product-type.application";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 97C146E61CF9000F007C117D /* Project object */ = {
- isa = PBXProject;
- attributes = {
- BuildIndependentTargetsInParallel = YES;
- LastUpgradeCheck = 1430;
- ORGANIZATIONNAME = "";
- TargetAttributes = {
- 331C8080294A63A400263BE5 = {
- CreatedOnToolsVersion = 14.0;
- TestTargetID = 97C146ED1CF9000F007C117D;
- };
- 97C146ED1CF9000F007C117D = {
- CreatedOnToolsVersion = 7.3.1;
- LastSwiftMigration = 1100;
- };
- };
- };
- buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
- compatibilityVersion = "Xcode 9.3";
- developmentRegion = en;
- hasScannedForEncodings = 0;
- knownRegions = (
- en,
- Base,
- );
- mainGroup = 97C146E51CF9000F007C117D;
- productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 97C146ED1CF9000F007C117D /* Runner */,
- 331C8080294A63A400263BE5 /* RunnerTests */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 331C807F294A63A400263BE5 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 97C146EC1CF9000F007C117D /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
- 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
- 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
- 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
- 6553FAFCDC2913BA04B1C689 /* GoogleService-Info.plist in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXShellScriptBuildPhase section */
- 000E60C6824E88237ED8F19B /* [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-RunnerTests-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;
- };
- 2B6962DA59A4A54AB7DFED45 /* [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-Runner-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;
- };
- 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
- isa = PBXShellScriptBuildPhase;
- alwaysOutOfDate = 1;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
- );
- name = "Thin Binary";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
- };
- 9740EEB61CF901F6004384FC /* Run Script */ = {
- isa = PBXShellScriptBuildPhase;
- alwaysOutOfDate = 1;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- name = "Run Script";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
- };
- A3050AD50B0B75530E959A45 /* [CP] Embed Pods Frameworks */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
- );
- name = "[CP] Embed Pods Frameworks";
- outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
- showEnvVarsInLog = 0;
- };
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 331C807D294A63A400263BE5 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 97C146EA1CF9000F007C117D /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
- 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- 331C8086294A63A400263BE5 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 97C146ED1CF9000F007C117D /* Runner */;
- targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin PBXVariantGroup section */
- 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
- isa = PBXVariantGroup;
- children = (
- 97C146FB1CF9000F007C117D /* Base */,
- );
- name = Main.storyboard;
- sourceTree = "";
- };
- 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
- isa = PBXVariantGroup;
- children = (
- 97C147001CF9000F007C117D /* Base */,
- );
- name = LaunchScreen.storyboard;
- sourceTree = "";
- };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
- 249021D3217E4FDB00AE95B9 /* Profile */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
- MTL_ENABLE_DEBUG_INFO = NO;
- SDKROOT = iphoneos;
- SUPPORTED_PLATFORMS = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
- };
- name = Profile;
- };
- 249021D4217E4FDB00AE95B9 /* Profile */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = AK36DFTK26;
- ENABLE_BITCODE = NO;
- INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- );
- PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
- SWIFT_VERSION = 5.0;
- VERSIONING_SYSTEM = "apple-generic";
- };
- name = Profile;
- };
- 331C8088294A63A400263BE5 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = B027CC5455B001989665BA70 /* Pods-RunnerTests.debug.xcconfig */;
- buildSettings = {
- BUNDLE_LOADER = "$(TEST_HOST)";
- CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 1;
- GENERATE_INFOPLIST_FILE = YES;
- MARKETING_VERSION = 1.0;
- PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard.RunnerTests;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 5.0;
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
- };
- name = Debug;
- };
- 331C8089294A63A400263BE5 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = DDDA5D190020F1C26D9811C2 /* Pods-RunnerTests.release.xcconfig */;
- buildSettings = {
- BUNDLE_LOADER = "$(TEST_HOST)";
- CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 1;
- GENERATE_INFOPLIST_FILE = YES;
- MARKETING_VERSION = 1.0;
- PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard.RunnerTests;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_VERSION = 5.0;
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
- };
- name = Release;
- };
- 331C808A294A63A400263BE5 /* Profile */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 2BF400FBACB249FE6BC0CC53 /* Pods-RunnerTests.profile.xcconfig */;
- buildSettings = {
- BUNDLE_LOADER = "$(TEST_HOST)";
- CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 1;
- GENERATE_INFOPLIST_FILE = YES;
- MARKETING_VERSION = 1.0;
- PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard.RunnerTests;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_VERSION = 5.0;
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
- };
- name = Profile;
- };
- 97C147031CF9000F007C117D /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = dwarf;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- ENABLE_TESTABILITY = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "$(inherited)",
- );
- GCC_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 = 11.0;
- MTL_ENABLE_DEBUG_INFO = YES;
- ONLY_ACTIVE_ARCH = YES;
- SDKROOT = iphoneos;
- TARGETED_DEVICE_FAMILY = "1,2";
- };
- name = Debug;
- };
- 97C147041CF9000F007C117D /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
- MTL_ENABLE_DEBUG_INFO = NO;
- SDKROOT = iphoneos;
- SUPPORTED_PLATFORMS = iphoneos;
- SWIFT_COMPILATION_MODE = wholemodule;
- SWIFT_OPTIMIZATION_LEVEL = "-O";
- TARGETED_DEVICE_FAMILY = "1,2";
- VALIDATE_PRODUCT = YES;
- };
- name = Release;
- };
- 97C147061CF9000F007C117D /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = AK36DFTK26;
- ENABLE_BITCODE = NO;
- INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- );
- PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 5.0;
- VERSIONING_SYSTEM = "apple-generic";
- };
- name = Debug;
- };
- 97C147071CF9000F007C117D /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = AK36DFTK26;
- ENABLE_BITCODE = NO;
- INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- );
- PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
- SWIFT_VERSION = 5.0;
- VERSIONING_SYSTEM = "apple-generic";
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 331C8088294A63A400263BE5 /* Debug */,
- 331C8089294A63A400263BE5 /* Release */,
- 331C808A294A63A400263BE5 /* Profile */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 97C147031CF9000F007C117D /* Debug */,
- 97C147041CF9000F007C117D /* Release */,
- 249021D3217E4FDB00AE95B9 /* Profile */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 97C147061CF9000F007C117D /* Debug */,
- 97C147071CF9000F007C117D /* Release */,
- 249021D4217E4FDB00AE95B9 /* Profile */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 97C146E61CF9000F007C117D /* Project object */;
-}
diff --git a/app/watt_wizard/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/app/watt_wizard/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
deleted file mode 100644
index 919434a..0000000
--- a/app/watt_wizard/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
diff --git a/app/watt_wizard/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/app/watt_wizard/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
deleted file mode 100644
index 18d9810..0000000
--- a/app/watt_wizard/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- IDEDidComputeMac32BitWarning
-
-
-
diff --git a/app/watt_wizard/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/app/watt_wizard/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
deleted file mode 100644
index f9b0d7c..0000000
--- a/app/watt_wizard/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- PreviewsEnabled
-
-
-
diff --git a/app/watt_wizard/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/app/watt_wizard/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
deleted file mode 100644
index 87131a0..0000000
--- a/app/watt_wizard/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/watt_wizard/ios/Runner.xcworkspace/contents.xcworkspacedata b/app/watt_wizard/ios/Runner.xcworkspace/contents.xcworkspacedata
deleted file mode 100644
index 21a3cc1..0000000
--- a/app/watt_wizard/ios/Runner.xcworkspace/contents.xcworkspacedata
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
diff --git a/app/watt_wizard/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/app/watt_wizard/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
deleted file mode 100644
index 18d9810..0000000
--- a/app/watt_wizard/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- IDEDidComputeMac32BitWarning
-
-
-
diff --git a/app/watt_wizard/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/app/watt_wizard/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
deleted file mode 100644
index f9b0d7c..0000000
--- a/app/watt_wizard/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- PreviewsEnabled
-
-
-
diff --git a/app/watt_wizard/ios/Runner/AppDelegate.swift b/app/watt_wizard/ios/Runner/AppDelegate.swift
deleted file mode 100644
index 70693e4..0000000
--- a/app/watt_wizard/ios/Runner/AppDelegate.swift
+++ /dev/null
@@ -1,13 +0,0 @@
-import UIKit
-import Flutter
-
-@UIApplicationMain
-@objc class AppDelegate: FlutterAppDelegate {
- override func application(
- _ application: UIApplication,
- didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
- ) -> Bool {
- GeneratedPluginRegistrant.register(with: self)
- return super.application(application, didFinishLaunchingWithOptions: launchOptions)
- }
-}
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index d36b1fa..0000000
--- a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,122 +0,0 @@
-{
- "images" : [
- {
- "size" : "20x20",
- "idiom" : "iphone",
- "filename" : "Icon-App-20x20@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "20x20",
- "idiom" : "iphone",
- "filename" : "Icon-App-20x20@3x.png",
- "scale" : "3x"
- },
- {
- "size" : "29x29",
- "idiom" : "iphone",
- "filename" : "Icon-App-29x29@1x.png",
- "scale" : "1x"
- },
- {
- "size" : "29x29",
- "idiom" : "iphone",
- "filename" : "Icon-App-29x29@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "29x29",
- "idiom" : "iphone",
- "filename" : "Icon-App-29x29@3x.png",
- "scale" : "3x"
- },
- {
- "size" : "40x40",
- "idiom" : "iphone",
- "filename" : "Icon-App-40x40@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "40x40",
- "idiom" : "iphone",
- "filename" : "Icon-App-40x40@3x.png",
- "scale" : "3x"
- },
- {
- "size" : "60x60",
- "idiom" : "iphone",
- "filename" : "Icon-App-60x60@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "60x60",
- "idiom" : "iphone",
- "filename" : "Icon-App-60x60@3x.png",
- "scale" : "3x"
- },
- {
- "size" : "20x20",
- "idiom" : "ipad",
- "filename" : "Icon-App-20x20@1x.png",
- "scale" : "1x"
- },
- {
- "size" : "20x20",
- "idiom" : "ipad",
- "filename" : "Icon-App-20x20@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "29x29",
- "idiom" : "ipad",
- "filename" : "Icon-App-29x29@1x.png",
- "scale" : "1x"
- },
- {
- "size" : "29x29",
- "idiom" : "ipad",
- "filename" : "Icon-App-29x29@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "40x40",
- "idiom" : "ipad",
- "filename" : "Icon-App-40x40@1x.png",
- "scale" : "1x"
- },
- {
- "size" : "40x40",
- "idiom" : "ipad",
- "filename" : "Icon-App-40x40@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "76x76",
- "idiom" : "ipad",
- "filename" : "Icon-App-76x76@1x.png",
- "scale" : "1x"
- },
- {
- "size" : "76x76",
- "idiom" : "ipad",
- "filename" : "Icon-App-76x76@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "83.5x83.5",
- "idiom" : "ipad",
- "filename" : "Icon-App-83.5x83.5@2x.png",
- "scale" : "2x"
- },
- {
- "size" : "1024x1024",
- "idiom" : "ios-marketing",
- "filename" : "Icon-App-1024x1024@1x.png",
- "scale" : "1x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
deleted file mode 100644
index ca0e9d0..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
deleted file mode 100644
index b3e4329..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
deleted file mode 100644
index 11beb66..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
deleted file mode 100644
index af9b3b3..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
deleted file mode 100644
index 4a3fbd4..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
deleted file mode 100644
index 4a22e7c..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
deleted file mode 100644
index 7b7a156..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
deleted file mode 100644
index 11beb66..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
deleted file mode 100644
index 01546c7..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
deleted file mode 100644
index 61ff470..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png
deleted file mode 100644
index e2ecf99..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png
deleted file mode 100644
index 1bacdd3..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png
deleted file mode 100644
index cb04fd3..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png
deleted file mode 100644
index 9fb4bef..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
deleted file mode 100644
index 61ff470..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
deleted file mode 100644
index 3062241..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png
deleted file mode 100644
index 4c2c84a..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png
deleted file mode 100644
index 3038c76..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
deleted file mode 100644
index 4794a57..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
deleted file mode 100644
index 83ae483..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
deleted file mode 100644
index afb0d94..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
deleted file mode 100644
index 0bedcf2..0000000
--- a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "idiom" : "universal",
- "filename" : "LaunchImage.png",
- "scale" : "1x"
- },
- {
- "idiom" : "universal",
- "filename" : "LaunchImage@2x.png",
- "scale" : "2x"
- },
- {
- "idiom" : "universal",
- "filename" : "LaunchImage@3x.png",
- "scale" : "3x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
deleted file mode 100644
index 9da19ea..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
deleted file mode 100644
index 9da19ea..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
deleted file mode 100644
index 9da19ea..0000000
Binary files a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png and /dev/null differ
diff --git a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
deleted file mode 100644
index 89c2725..0000000
--- a/app/watt_wizard/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Launch Screen Assets
-
-You can customize the launch screen with your own desired assets by replacing the image files in this directory.
-
-You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
\ No newline at end of file
diff --git a/app/watt_wizard/ios/Runner/Base.lproj/LaunchScreen.storyboard b/app/watt_wizard/ios/Runner/Base.lproj/LaunchScreen.storyboard
deleted file mode 100644
index f2e259c..0000000
--- a/app/watt_wizard/ios/Runner/Base.lproj/LaunchScreen.storyboard
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/watt_wizard/ios/Runner/Base.lproj/Main.storyboard b/app/watt_wizard/ios/Runner/Base.lproj/Main.storyboard
deleted file mode 100644
index f3c2851..0000000
--- a/app/watt_wizard/ios/Runner/Base.lproj/Main.storyboard
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/watt_wizard/ios/Runner/GoogleService-Info.plist b/app/watt_wizard/ios/Runner/GoogleService-Info.plist
deleted file mode 100644
index 8262804..0000000
--- a/app/watt_wizard/ios/Runner/GoogleService-Info.plist
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
- API_KEY
- AIzaSyAecUFC5dEESq3rLDNNx-Kxx0_w5sZvWGs
- GCM_SENDER_ID
- 192909855910
- PLIST_VERSION
- 1
- BUNDLE_ID
- com.example.wattWizard
- PROJECT_ID
- hackgt2023
- STORAGE_BUCKET
- hackgt2023.appspot.com
- IS_ADS_ENABLED
-
- IS_ANALYTICS_ENABLED
-
- IS_APPINVITE_ENABLED
-
- IS_GCM_ENABLED
-
- IS_SIGNIN_ENABLED
-
- GOOGLE_APP_ID
- 1:192909855910:ios:4a2fec003c262c61873867
-
-
\ No newline at end of file
diff --git a/app/watt_wizard/ios/Runner/Info.plist b/app/watt_wizard/ios/Runner/Info.plist
deleted file mode 100644
index 83ff996..0000000
--- a/app/watt_wizard/ios/Runner/Info.plist
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
-
- CADisableMinimumFrameDurationOnPhone
-
- CFBundleDevelopmentRegion
- $(DEVELOPMENT_LANGUAGE)
- CFBundleDisplayName
- Watt Wizard
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- watt_wizard
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- $(FLUTTER_BUILD_NAME)
- CFBundleSignature
- ????
- NSBluetoothAlwaysUsageDescription
- Need BLE permission
- NSBluetoothPeripheralUsageDescription
- Need BLE permission
- NSLocationAlwaysAndWhenInUseUsageDescription
- Need Location permission
- NSLocationAlwaysUsageDescription
- Need Location permission
- NSLocationWhenInUseUsageDescription
- Need Location permission
- CFBundleURLTypes
-
-
- CFBundleTypeRole
- Editor
- CFBundleURLSchemes
-
- app-1-192909855910-ios-4a2fec003c262c61873867
-
-
-
- CFBundleVersion
- $(FLUTTER_BUILD_NUMBER)
- LSRequiresIPhoneOS
-
- UIApplicationSupportsIndirectInputEvents
-
- UILaunchStoryboardName
- LaunchScreen
- UIMainStoryboardFile
- Main
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- UISupportedInterfaceOrientations~ipad
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
-
-
diff --git a/app/watt_wizard/ios/Runner/Runner-Bridging-Header.h b/app/watt_wizard/ios/Runner/Runner-Bridging-Header.h
deleted file mode 100644
index 308a2a5..0000000
--- a/app/watt_wizard/ios/Runner/Runner-Bridging-Header.h
+++ /dev/null
@@ -1 +0,0 @@
-#import "GeneratedPluginRegistrant.h"
diff --git a/app/watt_wizard/ios/RunnerTests/RunnerTests.swift b/app/watt_wizard/ios/RunnerTests/RunnerTests.swift
deleted file mode 100644
index 86a7c3b..0000000
--- a/app/watt_wizard/ios/RunnerTests/RunnerTests.swift
+++ /dev/null
@@ -1,12 +0,0 @@
-import Flutter
-import UIKit
-import XCTest
-
-class RunnerTests: XCTestCase {
-
- func testExample() {
- // If you add code to the Runner application, consider adding tests here.
- // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
- }
-
-}
diff --git a/app/watt_wizard/ios/firebase_app_id_file.json b/app/watt_wizard/ios/firebase_app_id_file.json
deleted file mode 100644
index 124fa18..0000000
--- a/app/watt_wizard/ios/firebase_app_id_file.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "file_generated_by": "FlutterFire CLI",
- "purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
- "GOOGLE_APP_ID": "1:192909855910:ios:4a2fec003c262c61873867",
- "FIREBASE_PROJECT_ID": "hackgt2023",
- "GCM_SENDER_ID": "192909855910"
-}
\ No newline at end of file
diff --git a/app/watt_wizard/lib/firebase_options.dart b/app/watt_wizard/lib/firebase_options.dart
deleted file mode 100644
index 84ce33e..0000000
--- a/app/watt_wizard/lib/firebase_options.dart
+++ /dev/null
@@ -1,80 +0,0 @@
-// File generated by FlutterFire CLI.
-// ignore_for_file: lines_longer_than_80_chars, avoid_classes_with_only_static_members
-import 'package:firebase_core/firebase_core.dart' show FirebaseOptions;
-import 'package:flutter/foundation.dart'
- show defaultTargetPlatform, kIsWeb, TargetPlatform;
-
-/// Default [FirebaseOptions] for use with your Firebase apps.
-///
-/// Example:
-/// ```dart
-/// import 'firebase_options.dart';
-/// // ...
-/// await Firebase.initializeApp(
-/// options: DefaultFirebaseOptions.currentPlatform,
-/// );
-/// ```
-class DefaultFirebaseOptions {
- static FirebaseOptions get currentPlatform {
- if (kIsWeb) {
- return web;
- }
- switch (defaultTargetPlatform) {
- case TargetPlatform.android:
- return android;
- case TargetPlatform.iOS:
- return ios;
- case TargetPlatform.macOS:
- return macos;
- case TargetPlatform.windows:
- throw UnsupportedError(
- 'DefaultFirebaseOptions have not been configured for windows - '
- 'you can reconfigure this by running the FlutterFire CLI again.',
- );
- case TargetPlatform.linux:
- throw UnsupportedError(
- 'DefaultFirebaseOptions have not been configured for linux - '
- 'you can reconfigure this by running the FlutterFire CLI again.',
- );
- default:
- throw UnsupportedError(
- 'DefaultFirebaseOptions are not supported for this platform.',
- );
- }
- }
-
- static const FirebaseOptions web = FirebaseOptions(
- apiKey: 'AIzaSyAEZWnInWLWU5yqG7Y1NyKkQSon_RRxWNY',
- appId: '1:192909855910:web:f50aa440ac666be3873867',
- messagingSenderId: '192909855910',
- projectId: 'hackgt2023',
- authDomain: 'hackgt2023.firebaseapp.com',
- storageBucket: 'hackgt2023.appspot.com',
- );
-
- static const FirebaseOptions android = FirebaseOptions(
- apiKey: 'AIzaSyATxM_RUX_OreCB3ftyZaI2ByYNNZTRqm4',
- appId: '1:192909855910:android:a3092489a70c4c20873867',
- messagingSenderId: '192909855910',
- projectId: 'hackgt2023',
- storageBucket: 'hackgt2023.appspot.com',
- );
-
- static const FirebaseOptions ios = FirebaseOptions(
- apiKey: 'AIzaSyAecUFC5dEESq3rLDNNx-Kxx0_w5sZvWGs',
- appId: '1:192909855910:ios:4a2fec003c262c61873867',
- messagingSenderId: '192909855910',
- projectId: 'hackgt2023',
- storageBucket: 'hackgt2023.appspot.com',
- iosBundleId: 'com.example.wattWizard',
- );
-
- static const FirebaseOptions macos = FirebaseOptions(
- apiKey: 'AIzaSyAecUFC5dEESq3rLDNNx-Kxx0_w5sZvWGs',
- appId: '1:192909855910:ios:a49a650b4f8915ac873867',
- messagingSenderId: '192909855910',
- projectId: 'hackgt2023',
- storageBucket: 'hackgt2023.appspot.com',
- iosBundleId: 'com.example.wattWizard.RunnerTests',
- );
-}
diff --git a/app/watt_wizard/lib/homescreen.dart b/app/watt_wizard/lib/homescreen.dart
deleted file mode 100644
index cf13275..0000000
--- a/app/watt_wizard/lib/homescreen.dart
+++ /dev/null
@@ -1,178 +0,0 @@
-import 'dart:async';
-
-import 'package:firebase_auth/firebase_auth.dart';
-import 'package:flutter/material.dart';
-import 'package:flutter_blue_plus/flutter_blue_plus.dart';
-import 'package:watt_wizard/profile.dart';
-
-import 'widgets/users_leaderboard.dart';
-import 'widgets/homes_leaderboard.dart';
-
-class HomeScreen extends StatefulWidget {
- const HomeScreen({super.key});
-
- @override
- State createState() => _HomeScreenState();
-}
-
-class _HomeScreenState extends State {
- late User user;
- BluetoothAdapterState _adapterState = BluetoothAdapterState.unknown;
- late StreamSubscription _adapterStateStateSubscription;
-
- late String userInput;
-
- Future _showDialog() async {
- return showDialog(
- context: context,
- barrierDismissible: false, // user must tap button to close dialog
- builder: (BuildContext context) {
- return AlertDialog(
- title: Text('Enter Data'),
- content: TextField(
- onChanged: (value) {
- userInput = value;
- },
- decoration: InputDecoration(hintText: "Enter something"),
- ),
- actions: [
- TextButton(
- child: Text('Submit'),
- onPressed: () {
- makeNewHome(userInput);
- Navigator.of(context).pop(); // Close the dialog
- },
- ),
- ],
- );
- },
- );
- }
-
- @override
- void initState() {
- user = FirebaseAuth.instance.currentUser!;
-
- FirebaseAuth.instance.userChanges().listen((event) {
- if (event != null && mounted) {
- setState(() {
- user = event;
- });
- }
-
- _adapterStateStateSubscription = FlutterBluePlus.adapterState.listen((state) {
- _adapterState = state;
- setState(() {});
- });
- });
-
- super.initState();
- }
-
- @override
- void dispose() {
- _adapterStateStateSubscription.cancel();
- super.dispose();
- }
-
- @override
- Widget build(BuildContext context) {
- double screenHeight = MediaQuery.of(context).size.height;
- double screenWidth = MediaQuery.of(context).size.width;
- double appBarHeight = AppBar().preferredSize.height; // Default is 56.0
- double tabBarHeight = 48.0; // Default height for TabBar
-
- double sizedBoxHeight = screenHeight - (2 * appBarHeight) - tabBarHeight;
- double sizedBoxWidth = screenWidth;
-
- return DefaultTabController(
- initialIndex: 0,
- length: 2,
- child: Scaffold(
- appBar: AppBar(
- backgroundColor: Theme.of(context).colorScheme.inversePrimary,
- leading: IconButton(
- icon: const Icon(Icons.logout),
- onPressed: (user.displayName == null)
- ? null
- : () async {
- await FirebaseAuth.instance.signOut();
- },
- ),
- title: Text('Welcome, ${user.displayName ?? ""}'),
-
- actions: [
- IconButton(
- onPressed: () {
- Navigator.push(
- context,
- MaterialPageRoute(builder: (context) => ProfileScreen(username: user.displayName!)),
- );
- },
- icon: const Icon(Icons.account_circle)),
- ],
- bottom: const TabBar(
- tabs: [
- // Tab(
- // icon: Icon(Icons.cloud_outlined),
- // ),
- Tab(
- icon: Icon(Icons.person),
- ),
- Tab(
- icon: Icon(Icons.home),
- ),
- ],
- ),
- ),
- body: TabBarView(
- children: [
- // Center(
- // child: Column(
- // mainAxisAlignment: MainAxisAlignment.center,
- // children: [
- // Text(
- // "Welcome ${user.displayName}",
- // ),
- // _adapterState == BluetoothAdapterState.on
- // ? const Spacer()
- // : FilledButton(
- // onPressed: () async {
- // if (Platform.isAndroid) {
- // await FlutterBluePlus.turnOn();
- // } else {}
- // },
- // child: const Text("Turn Bluetooth On"),
- // ),
- // ],
- // ),
- // ),
- Center(
- child: SizedBox(
- width: sizedBoxWidth,
- height: sizedBoxHeight,
- child: const UserList(),
- ),
- ),
- Center(
- child: Column(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- SizedBox(
- width: sizedBoxWidth,
- height: sizedBoxHeight - 45,
- child: const HomeList(),
- ),
- ElevatedButton(
- onPressed: _showDialog,
- child: const Text("Add Home"),
- )
- ],
- ),
- ),
- ],
- ),
- ),
- );
- }
-}
diff --git a/app/watt_wizard/lib/main.dart b/app/watt_wizard/lib/main.dart
deleted file mode 100644
index 08acf22..0000000
--- a/app/watt_wizard/lib/main.dart
+++ /dev/null
@@ -1,95 +0,0 @@
-import 'package:cloud_firestore/cloud_firestore.dart';
-import 'package:firebase_auth/firebase_auth.dart';
-import 'package:flutter/material.dart';
-import 'package:firebase_core/firebase_core.dart';
-import 'firebase_options.dart';
-import 'homescreen.dart';
-
-final db = FirebaseFirestore.instance;
-
-Future main() async {
- WidgetsFlutterBinding.ensureInitialized();
- await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
- runApp(const MyApp());
-}
-
-class MyApp extends StatelessWidget {
- const MyApp({super.key});
-
- // This widget is the root of your application.
- @override
- Widget build(BuildContext context) {
- // if (Platform.isAndroid) {
- // await FlutterBluePlus.turnOn();
- // }
-
- return MaterialApp(
- title: 'Watt Wizard',
- theme: ThemeData(
- colorScheme: ColorScheme.fromSeed(
- seedColor: const Color(0xff0abde3),
- ),
- scaffoldBackgroundColor: const Color(0xfff5f5f5),
- useMaterial3: true,
- ),
- home: _landingPage(),
- );
- }
-}
-
-Widget _landingPage() {
- return StreamBuilder(
- stream: FirebaseAuth.instance.authStateChanges(),
- builder: (BuildContext context, snapshot) {
- if (snapshot.hasData) {
- return const HomeScreen();
- }
- return const MyHomePage(title: 'Sign in to Watt Wizard');
- });
-}
-
-class MyHomePage extends StatelessWidget {
- const MyHomePage({super.key, required this.title});
- final String title;
-
- void _signInWithGitHub() async {
- GithubAuthProvider githubProvider = GithubAuthProvider();
- await FirebaseAuth.instance.signInWithProvider(githubProvider);
- if (FirebaseAuth.instance.currentUser != null) {
- var userUID = await db.collection('users').doc(FirebaseAuth.instance.currentUser?.uid).get();
- if (!userUID.exists) {
- await db.collection('users').doc(FirebaseAuth.instance.currentUser?.uid).set(
- {
- 'devices': [],
- 'friends': [],
- 'home': "",
- 'name': FirebaseAuth.instance.currentUser?.displayName,
- 'pfp': 'https://m.media-amazon.com/images/I/612-e1vHBAL._AC_SL1145_.jpg'
- },
- );
- }
- }
- }
-
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(
- backgroundColor: Theme.of(context).colorScheme.inversePrimary,
- title: Text(title),
- ),
- body: Center(
- child: Column(
- mainAxisAlignment: MainAxisAlignment.center,
- children: [
- FilledButton.icon(
- onPressed: _signInWithGitHub,
- icon: const Icon(Icons.login),
- label: const Text("Log in with GitHub"),
- ),
- ],
- ),
- ),
- );
- }
-}
diff --git a/app/watt_wizard/lib/profile.dart b/app/watt_wizard/lib/profile.dart
deleted file mode 100644
index 624d2f3..0000000
--- a/app/watt_wizard/lib/profile.dart
+++ /dev/null
@@ -1,174 +0,0 @@
-import 'dart:async';
-
-import 'package:cloud_firestore/cloud_firestore.dart';
-import 'package:firebase_auth/firebase_auth.dart';
-import 'package:flutter/material.dart';
-import 'package:flutter_blue_plus/flutter_blue_plus.dart';
-import 'package:watt_wizard/widgets/connected_device_tile.dart';
-import 'package:watt_wizard/widgets/scan_result_tile.dart';
-import 'package:watt_wizard/utils/extra.dart';
-
-final db = FirebaseFirestore.instance;
-
-class ProfileScreen extends StatefulWidget {
- const ProfileScreen({super.key, required this.username});
-
- final String username;
-
- @override
- State createState() => _ProfileScreenState();
-}
-
-class _ProfileScreenState extends State {
- List _connectedDevices = [];
- List _scanResults = [];
- bool _isScanning = false;
- late StreamSubscription> _scanResultsSubscription;
- late StreamSubscription _isScanningSubscription;
-
- @override
- void initState() {
- super.initState();
-
- FlutterBluePlus.connectedSystemDevices.then((devices) {
- List device = [];
- for (BluetoothDevice d in devices) {
- if (d.platformName == "Light Control") {
- device.add(d);
- }
- }
- _connectedDevices = device;
- setState(() {});
- });
-
- _scanResultsSubscription = FlutterBluePlus.scanResults.listen((results) {
- List result = [];
- for (ScanResult r in results) {
- if (r.device.platformName == "Light Control" && !_connectedDevices.contains(r.device)) {
- result.add(r);
- }
- }
- _scanResults = result;
- setState(() {});
- });
-
- _isScanningSubscription = FlutterBluePlus.isScanning.listen((state) {
- _isScanning = state;
- setState(() {});
- });
- }
-
- @override
- void dispose() {
- _scanResultsSubscription.cancel();
- _isScanningSubscription.cancel();
- super.dispose();
- }
-
- Future onScanPressed() async {
- await FlutterBluePlus.startScan(timeout: const Duration(seconds: 15));
- setState(() {}); // force refresh of connectedSystemDevices
- }
-
- Future onStopPressed() async {
- FlutterBluePlus.stopScan();
- }
-
- void onConnectPressed(BluetoothDevice device) async {
- device.connectAndUpdateStream();
- _connectedDevices.add(device);
-
- var userDoc = await db.collection('users').doc(FirebaseAuth.instance.currentUser?.uid).get();
- List devices = await userDoc.get('devices');
-
- int deviceHash = device.hashCode;
-
- if (!devices.any((element) => element['id'] == deviceHash)) {
- await db.collection('users').doc(FirebaseAuth.instance.currentUser?.uid).update({
- 'devices': FieldValue.arrayUnion([
- {
- 'id': deviceHash,
- 'name': device.platformName,
- 'power': []
- }
- ])
- });
- }
-
- setState(() {});
- }
-
- Future onRefresh() {
- if (_isScanning == false) {
- FlutterBluePlus.startScan(timeout: const Duration(seconds: 15));
- }
- setState(() {});
- return Future.delayed(const Duration(milliseconds: 500));
- }
-
- List _buildConnectedDeviceTiles(BuildContext context) {
- return _connectedDevices
- .map(
- (d) => ConnectedDeviceTile(
- device: d,
- onConnect: () => onConnectPressed(d),
- ),
- )
- .toList();
- }
-
- List _buildScanResultTiles(BuildContext context) {
- return _scanResults
- .map(
- (r) => ScanResultTile(
- result: r,
- onTap: () {
- _scanResults.remove(r);
- setState(() {});
- onConnectPressed(r.device);
- },
- ),
- )
- .toList();
- }
-
- Widget buildScanButton(BuildContext context) {
- if (FlutterBluePlus.isScanningNow) {
- return FloatingActionButton(
- onPressed: onStopPressed,
- backgroundColor: Colors.red,
- child: const Icon(Icons.stop),
- );
- } else {
- return FloatingActionButton(onPressed: onScanPressed, child: const Text("SCAN"));
- }
- }
-
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(
- backgroundColor: Theme.of(context).colorScheme.inversePrimary,
- leading: IconButton(
- icon: const Icon(Icons.chevron_left),
- onPressed: () {
- Navigator.pop(context);
- },
- ),
- title: Text(widget.username),
- ),
- body: RefreshIndicator(
- onRefresh: onRefresh,
- child: ListView(
- children: [
- const Text("Connected Devices"),
- ..._buildConnectedDeviceTiles(context),
- const Text("Scanned Devices:"),
- ..._buildScanResultTiles(context),
- ],
- ),
- ),
- floatingActionButton: buildScanButton(context),
- );
- }
-}
diff --git a/app/watt_wizard/lib/utils/extra.dart b/app/watt_wizard/lib/utils/extra.dart
deleted file mode 100644
index 8a44c33..0000000
--- a/app/watt_wizard/lib/utils/extra.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-import 'utils.dart';
-
-import 'package:flutter_blue_plus/flutter_blue_plus.dart';
-
-final Map> _global = {};
-
-/// connect & disconnect + update stream
-extension Extra on BluetoothDevice {
- // convenience
- StreamControllerReemit get _stream {
- _global[remoteId] ??= StreamControllerReemit(initialValue: false);
- return _global[remoteId]!;
- }
-
- // get stream
- Stream get isConnectingOrDisconnecting {
- return _stream.stream;
- }
-
- // connect & update stream
- Future connectAndUpdateStream() async {
- _stream.add(true);
- try {
- await connect();
- } finally {
- _stream.add(false);
- }
- }
-
- // disconnect & update stream
- Future disconnectAndUpdateStream() async {
- _stream.add(true);
- try {
- await disconnect();
- } finally {
- _stream.add(false);
- }
- }
-}
diff --git a/app/watt_wizard/lib/utils/utils.dart b/app/watt_wizard/lib/utils/utils.dart
deleted file mode 100644
index 048a5a5..0000000
--- a/app/watt_wizard/lib/utils/utils.dart
+++ /dev/null
@@ -1,86 +0,0 @@
-import 'dart:async';
-
-// It is essentially a stream but:
-// 1. we cache the latestValue of the stream
-// 2. the "latestValue" is re-emitted whenever the stream is listened to
-class StreamControllerReemit {
- T? _latestValue;
-
- final StreamController _controller = StreamController.broadcast();
-
- StreamControllerReemit({T? initialValue}) : _latestValue = initialValue;
-
- Stream get stream {
- return _latestValue != null
- ? _controller.stream.newStreamWithInitialValue(_latestValue!)
- : _controller.stream;
- }
-
- T? get value => _latestValue;
-
- void add(T newValue) {
- _latestValue = newValue;
- _controller.add(newValue);
- }
-
- Future close() {
- return _controller.close();
- }
-}
-
-// return a new stream that imediately emits an initial value
-extension _StreamNewStreamWithInitialValue on Stream {
- Stream newStreamWithInitialValue(T initialValue) {
- return transform(_NewStreamWithInitialValueTransformer(initialValue));
- }
-}
-
-// Helper for 'newStreamWithInitialValue' method for streams.
-class _NewStreamWithInitialValueTransformer
- extends StreamTransformerBase {
- final T initialValue;
-
- _NewStreamWithInitialValueTransformer(this.initialValue);
-
- @override
- Stream bind(Stream stream) {
- if (stream.isBroadcast) {
- return _bind(stream).asBroadcastStream();
- } else {
- return _bind(stream);
- }
- }
-
- Stream _bind(Stream stream) {
- StreamController? controller;
- StreamSubscription? subscription;
-
- controller = StreamController(
- onListen: () {
- // Emit the initial value
- controller?.add(initialValue);
-
- subscription = stream.listen(
- controller?.add,
- onError: (Object error) {
- controller?.addError(error);
- controller?.close();
- },
- onDone: controller?.close,
- );
- },
- onPause: ([Future? resumeSignal]) {
- subscription?.pause(resumeSignal);
- },
- onResume: () {
- subscription?.resume();
- },
- onCancel: () {
- return subscription?.cancel();
- },
- sync: true,
- );
-
- return controller.stream;
- }
-}
diff --git a/app/watt_wizard/lib/widgets/connected_device_tile.dart b/app/watt_wizard/lib/widgets/connected_device_tile.dart
deleted file mode 100644
index 4959b2b..0000000
--- a/app/watt_wizard/lib/widgets/connected_device_tile.dart
+++ /dev/null
@@ -1,59 +0,0 @@
-import 'dart:async';
-
-import 'package:flutter/material.dart';
-import 'package:flutter_blue_plus/flutter_blue_plus.dart';
-
-class ConnectedDeviceTile extends StatefulWidget {
- final BluetoothDevice device;
- final VoidCallback onConnect;
-
- const ConnectedDeviceTile({
- required this.device,
- required this.onConnect,
- Key? key,
- }) : super(key: key);
-
- @override
- State createState() => _ConnectedDeviceTileState();
-}
-
-class _ConnectedDeviceTileState extends State {
- BluetoothConnectionState _connectionState =
- BluetoothConnectionState.disconnected;
-
- late StreamSubscription
- _connectionStateSubscription;
-
- @override
- void initState() {
- super.initState();
-
- _connectionStateSubscription =
- widget.device.connectionState.listen((state) {
- _connectionState = state;
- setState(() {});
- });
- }
-
- @override
- void dispose() {
- _connectionStateSubscription.cancel();
- super.dispose();
- }
-
- bool get isConnected {
- return _connectionState == BluetoothConnectionState.connected;
- }
-
- @override
- Widget build(BuildContext context) {
- return ListTile(
- title: Text(widget.device.platformName),
- subtitle: Text(widget.device.remoteId.toString()),
- trailing: ElevatedButton(
- onPressed: isConnected ? null : widget.onConnect,
- child: isConnected ? const Text('OPEN') : const Text('CONNECT'),
- ),
- );
- }
-}
diff --git a/app/watt_wizard/lib/widgets/homes_leaderboard.dart b/app/watt_wizard/lib/widgets/homes_leaderboard.dart
deleted file mode 100644
index 1522cc6..0000000
--- a/app/watt_wizard/lib/widgets/homes_leaderboard.dart
+++ /dev/null
@@ -1,197 +0,0 @@
-// ignore_for_file: prefer_const_constructors_in_immutables,unnecessary_const,library_private_types_in_public_api,avoid_print
-// Copyright 2021, the Chromium project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:cloud_firestore/cloud_firestore.dart';
-import 'package:firebase_auth/firebase_auth.dart';
-import 'package:firebase_core/firebase_core.dart';
-import 'package:flutter/material.dart';
-import '../firebase_options.dart';
-
-// Future main() async {
-// WidgetsFlutterBinding.ensureInitialized();
-// await Firebase.initializeApp(options: defaultFirebaseOptions);
-// }
-
-final _db = FirebaseFirestore.instance;
-
-/// A reference to the list of movies.
-/// We are using `withConverter` to ensure that interactions with the collection
-/// are type-safe.
-final _homesRef = _db.collection('homes').withConverter<_Home>(
- fromFirestore: (snapshots, _) => _Home.fromJson(snapshots.data()!, snapshots.id),
- toFirestore: (home, _) => home.toJson(),
- );
-
-void makeNewHome(String name) async {
- await _db.collection('homes').add({
- 'name': name.substring(0, 30 > name.length ? name.length : 50),
- 'pfp': "https://housing.gatech.edu/sites/default/files/styles/building_hero_/public/2022-04/building-at-night.jpeg.jpg",
- 'users': []
- });
-}
-
-/// Holds all example app films
-class HomeList extends StatefulWidget {
- const HomeList({Key? key}) : super(key: key);
-
- @override
- _HomeListState createState() => _HomeListState();
-}
-
-class _HomeListState extends State {
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- body: StreamBuilder>(
- stream: _homesRef.snapshots(),
- builder: (context, snapshot) {
- if (snapshot.hasError) {
- return Center(
- child: Text(snapshot.error.toString()),
- );
- }
-
- if (!snapshot.hasData) {
- return const Center(child: CircularProgressIndicator());
- }
-
- final data = snapshot.requireData;
-
- return ListView.builder(
- itemCount: data.size,
- itemBuilder: (context, index) {
- return _HomeItem(
- data.docs[index].data(),
- data.docs[index].reference,
- );
- },
- );
- },
- ),
- );
- }
-}
-
-Future updateHome(_Home home) async {
- String userUID = FirebaseAuth.instance.currentUser!.uid;
-
- var userSnapshot = await _db.collection('users').doc(userUID).get();
- String userHome = userSnapshot.get('home') as String;
-
- await _db.collection('users').doc(userUID).update({
- 'home': home.id,
- });
-
- await _db.collection('homes').doc(userHome).update({
- 'users': FieldValue.arrayRemove([
- userUID
- ])
- }).onError((error, stackTrace) => null);
-
- await _db.collection('homes').doc(home.id).update({
- 'users': FieldValue.arrayUnion([
- userUID
- ])
- });
-}
-
-/// A single movie row.
-class _HomeItem extends StatelessWidget {
- _HomeItem(this.home, this.reference);
-
- final _Home home;
- final DocumentReference<_Home> reference;
-
- /// Returns the movie poster.
- Widget get pfp {
- return ClipRRect(
- borderRadius: BorderRadius.circular(15),
- child: Image.network(
- home.pfp,
- width: 50,
- height: 50,
- fit: BoxFit.cover,
- ),
- );
- }
-
- /// Returns user details.
- Widget get details {
- return Padding(
- padding: const EdgeInsets.only(left: 8, right: 8),
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- name,
- ],
- ),
- );
- }
-
- // Return the home name.
- Widget get name {
- return Text(
- home.name,
- style: TextStyle(
- fontSize: 18,
- fontWeight: FontWeight.bold,
- color: Color(0xfff5f5f5),
- ),
- );
- }
-
- Widget updateHomeButton(BuildContext context, _Home home) {
- return FloatingActionButton(
- onPressed: () async {
- await updateHome(home);
- },
- child: const Text("SELECT"),
- );
- }
-
- @override
- Widget build(BuildContext context) {
- return Padding(
- padding: const EdgeInsets.symmetric(vertical: 8),
- child: ListTile(
- leading: pfp,
- title: Text(home.name),
- trailing: updateHomeButton(context, home)
- ),
- );
- }
-}
-
-@immutable
-class _Home {
- _Home({
- required this.pfp,
- required this.users,
- required this.name,
- required this.id,
- });
-
- _Home.fromJson(Map json, String id)
- : this(
- pfp: json['pfp']! as String,
- users: json['users']! as List,
- name: json['name']! as String,
- id: id,
- );
-
- final String pfp;
- final List users;
- final String name;
- final String id;
-
- Map toJson() {
- return {
- 'users': users,
- 'pfp': pfp,
- 'name': name,
- };
- }
-
-}
diff --git a/app/watt_wizard/lib/widgets/scan_result_tile.dart b/app/watt_wizard/lib/widgets/scan_result_tile.dart
deleted file mode 100644
index 10c01d4..0000000
--- a/app/watt_wizard/lib/widgets/scan_result_tile.dart
+++ /dev/null
@@ -1,151 +0,0 @@
-import 'dart:async';
-
-import 'package:flutter/material.dart';
-import 'package:flutter_blue_plus/flutter_blue_plus.dart';
-
-class ScanResultTile extends StatefulWidget {
- const ScanResultTile({Key? key, required this.result, this.onTap})
- : super(key: key);
-
- final ScanResult result;
- final VoidCallback? onTap;
-
- @override
- State createState() => _ScanResultTileState();
-}
-
-class _ScanResultTileState extends State {
- BluetoothConnectionState _connectionState =
- BluetoothConnectionState.disconnected;
-
- late StreamSubscription
- _connectionStateSubscription;
-
- @override
- void initState() {
- super.initState();
-
- _connectionStateSubscription =
- widget.result.device.connectionState.listen((state) {
- _connectionState = state;
- setState(() {});
- });
- }
-
- @override
- void dispose() {
- _connectionStateSubscription.cancel();
- super.dispose();
- }
-
- String getNiceHexArray(List bytes) {
- return '[${bytes.map((i) => i.toRadixString(16).padLeft(2, '0')).join(', ')}]';
- }
-
- String getNiceManufacturerData(Map> data) {
- if (data.isEmpty) {
- return 'N/A';
- }
- return data.entries
- .map((entry) =>
- '${entry.key.toRadixString(16)}: ${getNiceHexArray(entry.value)}')
- .join(', ')
- .toUpperCase();
- }
-
- String getNiceServiceData(Map> data) {
- if (data.isEmpty) {
- return 'N/A';
- }
- return data.entries
- .map((v) => '${v.key}: ${getNiceHexArray(v.value)}')
- .join(', ')
- .toUpperCase();
- }
-
- String getNiceServiceUuids(List serviceUuids) {
- return serviceUuids.isEmpty ? 'N/A' : serviceUuids.join(', ').toUpperCase();
- }
-
- bool get isConnected {
- return _connectionState == BluetoothConnectionState.connected;
- }
-
- Widget _buildTitle(BuildContext context) {
- if (widget.result.device.platformName.isNotEmpty) {
- return Column(
- mainAxisAlignment: MainAxisAlignment.start,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Text(
- widget.result.device.platformName,
- overflow: TextOverflow.ellipsis,
- ),
- Text(
- widget.result.device.remoteId.toString(),
- style: Theme.of(context).textTheme.bodySmall,
- )
- ],
- );
- } else {
- return Text(widget.result.device.remoteId.toString());
- }
- }
-
- Widget _buildConnectButton(BuildContext context) {
- return ElevatedButton(
- child: isConnected ? const Text('OPEN') : const Text('CONNECT'),
- style: ElevatedButton.styleFrom(
- backgroundColor: Colors.black,
- foregroundColor: Colors.white,
- ),
- onPressed:
- (widget.result.advertisementData.connectable) ? widget.onTap : null,
- );
- }
-
- Widget _buildAdvRow(BuildContext context, String title, String value) {
- return Padding(
- padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 4.0),
- child: Row(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Text(title, style: Theme.of(context).textTheme.bodySmall),
- const SizedBox(
- width: 12.0,
- ),
- Expanded(
- child: Text(
- value,
- style: Theme.of(context)
- .textTheme
- .bodySmall
- ?.apply(color: Colors.black),
- softWrap: true,
- ),
- ),
- ],
- ),
- );
- }
-
- @override
- Widget build(BuildContext context) {
- var adv = widget.result.advertisementData;
- return ExpansionTile(
- title: _buildTitle(context),
- leading: Text(widget.result.rssi.toString()),
- trailing: _buildConnectButton(context),
- children: [
- _buildAdvRow(context, 'Complete Local Name', adv.localName),
- _buildAdvRow(context, 'Tx Power Level', '${adv.txPowerLevel ?? 'N/A'}'),
- _buildAdvRow(context, 'Manufacturer Data',
- getNiceManufacturerData(adv.manufacturerData)),
- _buildAdvRow(
- context, 'Service UUIDs', getNiceServiceUuids(adv.serviceUuids)),
- _buildAdvRow(
- context, 'Service Data', getNiceServiceData(adv.serviceData)),
- ],
- );
- }
-}
diff --git a/app/watt_wizard/lib/widgets/users_leaderboard.dart b/app/watt_wizard/lib/widgets/users_leaderboard.dart
deleted file mode 100644
index 4ac87b0..0000000
--- a/app/watt_wizard/lib/widgets/users_leaderboard.dart
+++ /dev/null
@@ -1,146 +0,0 @@
-// ignore_for_file: prefer_const_constructors_in_immutables,unnecessary_const,library_private_types_in_public_api,avoid_print
-// Copyright 2021, the Chromium project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'package:cloud_firestore/cloud_firestore.dart';
-import 'package:firebase_core/firebase_core.dart';
-import 'package:flutter/material.dart';
-import '../firebase_options.dart';
-
-// Future main() async {
-// WidgetsFlutterBinding.ensureInitialized();
-// await Firebase.initializeApp(options: defaultFirebaseOptions);
-// }
-
-final _db = FirebaseFirestore.instance;
-
-/// A reference to the list of movies.
-/// We are using `withConverter` to ensure that interactions with the collection
-/// are type-safe.
-final _usersRef = _db.collection('users').withConverter<_User>(
- fromFirestore: (snapshots, _) => _User.fromJson(snapshots.data()!),
- toFirestore: (user, _) => user.toJson(),
- );
-
-/// Holds all example app films
-class UserList extends StatefulWidget {
- const UserList({Key? key}) : super(key: key);
-
- @override
- _UserListState createState() => _UserListState();
-}
-
-class _UserListState extends State {
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- body: StreamBuilder>(
- stream: _usersRef.snapshots(),
- builder: (context, snapshot) {
- if (snapshot.hasError) {
- return Center(
- child: Text(snapshot.error.toString()),
- );
- }
-
- if (!snapshot.hasData) {
- return const Center(child: CircularProgressIndicator());
- }
-
- final data = snapshot.requireData;
-
- return ListView.builder(
- itemCount: data.size,
- itemBuilder: (context, index) {
- return _UserItem(
- data.docs[index].data(),
- data.docs[index].reference,
- );
- },
- );
- },
- ),
- );
- }
-}
-
-/// A single movie row.
-class _UserItem extends StatelessWidget {
- _UserItem(this.user, this.reference);
-
- final _User user;
- final DocumentReference<_User> reference;
-
- /// Returns the movie poster.
- Widget get pfp {
- return ClipRRect(
- borderRadius: BorderRadius.circular(15),
- child: Image.network(
- user.pfp,
- width: 60,
- fit: BoxFit.cover,
- ),
- );
- }
-
- int get power {
- int power = 0;
- for (var i in user.devices) {
- Map device = i as Map;
- try {
- List powerList = (device['power'] as List).map((item) => item as int).toList();
- power += powerList.last;
- } catch (e) {
- print('Power Array Empty for: ${user.name}');
- }
- }
-
- return power;
- }
-
- @override
- Widget build(BuildContext context) {
- return ListTile(
- leading: pfp,
- title: Text(user.name),
- subtitle: Text("Active Power Consumption: $power"),
- );
- }
-}
-
-@immutable
-class _User {
- _User({
- required this.pfp,
- required this.friends,
- required this.home,
- required this.name,
- required this.devices,
- });
-
- _User.fromJson(Map json)
- : this(
- pfp: json['pfp']! as String,
- home: json['home']! as String,
- friends: json['friends']! as List,
- name: json['name']! as String,
- devices: json['devices']! as List,
- );
-
- final String pfp;
- final List friends;
- final String home;
- final String name;
- final List devices;
-
- Map toJson() {
- return {
- 'home': home,
- 'friends': friends,
- 'pfp': pfp,
- 'name': name,
- 'devices': devices
- };
- }
-}
diff --git a/app/watt_wizard/linux/.gitignore b/app/watt_wizard/linux/.gitignore
deleted file mode 100644
index d3896c9..0000000
--- a/app/watt_wizard/linux/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-flutter/ephemeral
diff --git a/app/watt_wizard/linux/CMakeLists.txt b/app/watt_wizard/linux/CMakeLists.txt
deleted file mode 100644
index cf46d08..0000000
--- a/app/watt_wizard/linux/CMakeLists.txt
+++ /dev/null
@@ -1,139 +0,0 @@
-# Project-level configuration.
-cmake_minimum_required(VERSION 3.10)
-project(runner LANGUAGES CXX)
-
-# The name of the executable created for the application. Change this to change
-# the on-disk name of your application.
-set(BINARY_NAME "watt_wizard")
-# The unique GTK application identifier for this application. See:
-# https://wiki.gnome.org/HowDoI/ChooseApplicationID
-set(APPLICATION_ID "com.example.watt_wizard")
-
-# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
-# versions of CMake.
-cmake_policy(SET CMP0063 NEW)
-
-# Load bundled libraries from the lib/ directory relative to the binary.
-set(CMAKE_INSTALL_RPATH "$ORIGIN/lib")
-
-# Root filesystem for cross-building.
-if(FLUTTER_TARGET_PLATFORM_SYSROOT)
- set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT})
- set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT})
- set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
- set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
- set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
- set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
-endif()
-
-# Define build configuration options.
-if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
- set(CMAKE_BUILD_TYPE "Debug" CACHE
- STRING "Flutter build mode" FORCE)
- set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
- "Debug" "Profile" "Release")
-endif()
-
-# Compilation settings that should be applied to most targets.
-#
-# Be cautious about adding new options here, as plugins use this function by
-# default. In most cases, you should add new options to specific targets instead
-# of modifying this function.
-function(APPLY_STANDARD_SETTINGS TARGET)
- target_compile_features(${TARGET} PUBLIC cxx_std_14)
- target_compile_options(${TARGET} PRIVATE -Wall -Werror)
- target_compile_options(${TARGET} PRIVATE "$<$>:-O3>")
- target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>")
-endfunction()
-
-# Flutter library and tool build rules.
-set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter")
-add_subdirectory(${FLUTTER_MANAGED_DIR})
-
-# System-level dependencies.
-find_package(PkgConfig REQUIRED)
-pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
-
-add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}")
-
-# Define the application target. To change its name, change BINARY_NAME above,
-# not the value here, or `flutter run` will no longer work.
-#
-# Any new source files that you add to the application should be added here.
-add_executable(${BINARY_NAME}
- "main.cc"
- "my_application.cc"
- "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
-)
-
-# Apply the standard set of build settings. This can be removed for applications
-# that need different build settings.
-apply_standard_settings(${BINARY_NAME})
-
-# Add dependency libraries. Add any application-specific dependencies here.
-target_link_libraries(${BINARY_NAME} PRIVATE flutter)
-target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK)
-
-# Run the Flutter tool portions of the build. This must not be removed.
-add_dependencies(${BINARY_NAME} flutter_assemble)
-
-# Only the install-generated bundle's copy of the executable will launch
-# correctly, since the resources must in the right relative locations. To avoid
-# people trying to run the unbundled copy, put it in a subdirectory instead of
-# the default top-level location.
-set_target_properties(${BINARY_NAME}
- PROPERTIES
- RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run"
-)
-
-
-# Generated plugin build rules, which manage building the plugins and adding
-# them to the application.
-include(flutter/generated_plugins.cmake)
-
-
-# === Installation ===
-# By default, "installing" just makes a relocatable bundle in the build
-# directory.
-set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle")
-if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
- set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE)
-endif()
-
-# Start with a clean build bundle directory every time.
-install(CODE "
- file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\")
- " COMPONENT Runtime)
-
-set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data")
-set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib")
-
-install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}"
- COMPONENT Runtime)
-
-install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}"
- COMPONENT Runtime)
-
-install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
- COMPONENT Runtime)
-
-foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES})
- install(FILES "${bundled_library}"
- DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
- COMPONENT Runtime)
-endforeach(bundled_library)
-
-# Fully re-copy the assets directory on each build to avoid having stale files
-# from a previous install.
-set(FLUTTER_ASSET_DIR_NAME "flutter_assets")
-install(CODE "
- file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\")
- " COMPONENT Runtime)
-install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}"
- DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime)
-
-# Install the AOT library on non-Debug builds only.
-if(NOT CMAKE_BUILD_TYPE MATCHES "Debug")
- install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
- COMPONENT Runtime)
-endif()
diff --git a/app/watt_wizard/linux/flutter/CMakeLists.txt b/app/watt_wizard/linux/flutter/CMakeLists.txt
deleted file mode 100644
index d5bd016..0000000
--- a/app/watt_wizard/linux/flutter/CMakeLists.txt
+++ /dev/null
@@ -1,88 +0,0 @@
-# This file controls Flutter-level build steps. It should not be edited.
-cmake_minimum_required(VERSION 3.10)
-
-set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral")
-
-# Configuration provided via flutter tool.
-include(${EPHEMERAL_DIR}/generated_config.cmake)
-
-# TODO: Move the rest of this into files in ephemeral. See
-# https://github.com/flutter/flutter/issues/57146.
-
-# Serves the same purpose as list(TRANSFORM ... PREPEND ...),
-# which isn't available in 3.10.
-function(list_prepend LIST_NAME PREFIX)
- set(NEW_LIST "")
- foreach(element ${${LIST_NAME}})
- list(APPEND NEW_LIST "${PREFIX}${element}")
- endforeach(element)
- set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE)
-endfunction()
-
-# === Flutter Library ===
-# System-level dependencies.
-find_package(PkgConfig REQUIRED)
-pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
-pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0)
-pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0)
-
-set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so")
-
-# Published to parent scope for install step.
-set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE)
-set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE)
-set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE)
-set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE)
-
-list(APPEND FLUTTER_LIBRARY_HEADERS
- "fl_basic_message_channel.h"
- "fl_binary_codec.h"
- "fl_binary_messenger.h"
- "fl_dart_project.h"
- "fl_engine.h"
- "fl_json_message_codec.h"
- "fl_json_method_codec.h"
- "fl_message_codec.h"
- "fl_method_call.h"
- "fl_method_channel.h"
- "fl_method_codec.h"
- "fl_method_response.h"
- "fl_plugin_registrar.h"
- "fl_plugin_registry.h"
- "fl_standard_message_codec.h"
- "fl_standard_method_codec.h"
- "fl_string_codec.h"
- "fl_value.h"
- "fl_view.h"
- "flutter_linux.h"
-)
-list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/")
-add_library(flutter INTERFACE)
-target_include_directories(flutter INTERFACE
- "${EPHEMERAL_DIR}"
-)
-target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}")
-target_link_libraries(flutter INTERFACE
- PkgConfig::GTK
- PkgConfig::GLIB
- PkgConfig::GIO
-)
-add_dependencies(flutter flutter_assemble)
-
-# === Flutter tool backend ===
-# _phony_ is a non-existent file to force this command to run every time,
-# since currently there's no way to get a full input/output list from the
-# flutter tool.
-add_custom_command(
- OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS}
- ${CMAKE_CURRENT_BINARY_DIR}/_phony_
- COMMAND ${CMAKE_COMMAND} -E env
- ${FLUTTER_TOOL_ENVIRONMENT}
- "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh"
- ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE}
- VERBATIM
-)
-add_custom_target(flutter_assemble DEPENDS
- "${FLUTTER_LIBRARY}"
- ${FLUTTER_LIBRARY_HEADERS}
-)
diff --git a/app/watt_wizard/linux/flutter/generated_plugin_registrant.cc b/app/watt_wizard/linux/flutter/generated_plugin_registrant.cc
deleted file mode 100644
index e71a16d..0000000
--- a/app/watt_wizard/linux/flutter/generated_plugin_registrant.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// Generated file. Do not edit.
-//
-
-// clang-format off
-
-#include "generated_plugin_registrant.h"
-
-
-void fl_register_plugins(FlPluginRegistry* registry) {
-}
diff --git a/app/watt_wizard/linux/flutter/generated_plugin_registrant.h b/app/watt_wizard/linux/flutter/generated_plugin_registrant.h
deleted file mode 100644
index e0f0a47..0000000
--- a/app/watt_wizard/linux/flutter/generated_plugin_registrant.h
+++ /dev/null
@@ -1,15 +0,0 @@
-//
-// Generated file. Do not edit.
-//
-
-// clang-format off
-
-#ifndef GENERATED_PLUGIN_REGISTRANT_
-#define GENERATED_PLUGIN_REGISTRANT_
-
-#include
-
-// Registers Flutter plugins.
-void fl_register_plugins(FlPluginRegistry* registry);
-
-#endif // GENERATED_PLUGIN_REGISTRANT_
diff --git a/app/watt_wizard/linux/flutter/generated_plugins.cmake b/app/watt_wizard/linux/flutter/generated_plugins.cmake
deleted file mode 100644
index 2e1de87..0000000
--- a/app/watt_wizard/linux/flutter/generated_plugins.cmake
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# Generated file, do not edit.
-#
-
-list(APPEND FLUTTER_PLUGIN_LIST
-)
-
-list(APPEND FLUTTER_FFI_PLUGIN_LIST
-)
-
-set(PLUGIN_BUNDLED_LIBRARIES)
-
-foreach(plugin ${FLUTTER_PLUGIN_LIST})
- add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin})
- target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
- list(APPEND PLUGIN_BUNDLED_LIBRARIES $)
- list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
-endforeach(plugin)
-
-foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
- add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin})
- list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
-endforeach(ffi_plugin)
diff --git a/app/watt_wizard/linux/main.cc b/app/watt_wizard/linux/main.cc
deleted file mode 100644
index e7c5c54..0000000
--- a/app/watt_wizard/linux/main.cc
+++ /dev/null
@@ -1,6 +0,0 @@
-#include "my_application.h"
-
-int main(int argc, char** argv) {
- g_autoptr(MyApplication) app = my_application_new();
- return g_application_run(G_APPLICATION(app), argc, argv);
-}
diff --git a/app/watt_wizard/linux/my_application.cc b/app/watt_wizard/linux/my_application.cc
deleted file mode 100644
index 428ea07..0000000
--- a/app/watt_wizard/linux/my_application.cc
+++ /dev/null
@@ -1,104 +0,0 @@
-#include "my_application.h"
-
-#include
-#ifdef GDK_WINDOWING_X11
-#include
-#endif
-
-#include "flutter/generated_plugin_registrant.h"
-
-struct _MyApplication {
- GtkApplication parent_instance;
- char** dart_entrypoint_arguments;
-};
-
-G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION)
-
-// Implements GApplication::activate.
-static void my_application_activate(GApplication* application) {
- MyApplication* self = MY_APPLICATION(application);
- GtkWindow* window =
- GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application)));
-
- // Use a header bar when running in GNOME as this is the common style used
- // by applications and is the setup most users will be using (e.g. Ubuntu
- // desktop).
- // If running on X and not using GNOME then just use a traditional title bar
- // in case the window manager does more exotic layout, e.g. tiling.
- // If running on Wayland assume the header bar will work (may need changing
- // if future cases occur).
- gboolean use_header_bar = TRUE;
-#ifdef GDK_WINDOWING_X11
- GdkScreen* screen = gtk_window_get_screen(window);
- if (GDK_IS_X11_SCREEN(screen)) {
- const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen);
- if (g_strcmp0(wm_name, "GNOME Shell") != 0) {
- use_header_bar = FALSE;
- }
- }
-#endif
- if (use_header_bar) {
- GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
- gtk_widget_show(GTK_WIDGET(header_bar));
- gtk_header_bar_set_title(header_bar, "watt_wizard");
- gtk_header_bar_set_show_close_button(header_bar, TRUE);
- gtk_window_set_titlebar(window, GTK_WIDGET(header_bar));
- } else {
- gtk_window_set_title(window, "watt_wizard");
- }
-
- gtk_window_set_default_size(window, 1280, 720);
- gtk_widget_show(GTK_WIDGET(window));
-
- g_autoptr(FlDartProject) project = fl_dart_project_new();
- fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments);
-
- FlView* view = fl_view_new(project);
- gtk_widget_show(GTK_WIDGET(view));
- gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view));
-
- fl_register_plugins(FL_PLUGIN_REGISTRY(view));
-
- gtk_widget_grab_focus(GTK_WIDGET(view));
-}
-
-// Implements GApplication::local_command_line.
-static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) {
- MyApplication* self = MY_APPLICATION(application);
- // Strip out the first argument as it is the binary name.
- self->dart_entrypoint_arguments = g_strdupv(*arguments + 1);
-
- g_autoptr(GError) error = nullptr;
- if (!g_application_register(application, nullptr, &error)) {
- g_warning("Failed to register: %s", error->message);
- *exit_status = 1;
- return TRUE;
- }
-
- g_application_activate(application);
- *exit_status = 0;
-
- return TRUE;
-}
-
-// Implements GObject::dispose.
-static void my_application_dispose(GObject* object) {
- MyApplication* self = MY_APPLICATION(object);
- g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev);
- G_OBJECT_CLASS(my_application_parent_class)->dispose(object);
-}
-
-static void my_application_class_init(MyApplicationClass* klass) {
- G_APPLICATION_CLASS(klass)->activate = my_application_activate;
- G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line;
- G_OBJECT_CLASS(klass)->dispose = my_application_dispose;
-}
-
-static void my_application_init(MyApplication* self) {}
-
-MyApplication* my_application_new() {
- return MY_APPLICATION(g_object_new(my_application_get_type(),
- "application-id", APPLICATION_ID,
- "flags", G_APPLICATION_NON_UNIQUE,
- nullptr));
-}
diff --git a/app/watt_wizard/linux/my_application.h b/app/watt_wizard/linux/my_application.h
deleted file mode 100644
index 72271d5..0000000
--- a/app/watt_wizard/linux/my_application.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef FLUTTER_MY_APPLICATION_H_
-#define FLUTTER_MY_APPLICATION_H_
-
-#include
-
-G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION,
- GtkApplication)
-
-/**
- * my_application_new:
- *
- * Creates a new Flutter-based application.
- *
- * Returns: a new #MyApplication.
- */
-MyApplication* my_application_new();
-
-#endif // FLUTTER_MY_APPLICATION_H_
diff --git a/app/watt_wizard/macos/.gitignore b/app/watt_wizard/macos/.gitignore
deleted file mode 100644
index 746adbb..0000000
--- a/app/watt_wizard/macos/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-# Flutter-related
-**/Flutter/ephemeral/
-**/Pods/
-
-# Xcode-related
-**/dgph
-**/xcuserdata/
diff --git a/app/watt_wizard/macos/Flutter/Flutter-Debug.xcconfig b/app/watt_wizard/macos/Flutter/Flutter-Debug.xcconfig
deleted file mode 100644
index 4b81f9b..0000000
--- a/app/watt_wizard/macos/Flutter/Flutter-Debug.xcconfig
+++ /dev/null
@@ -1,2 +0,0 @@
-#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
-#include "ephemeral/Flutter-Generated.xcconfig"
diff --git a/app/watt_wizard/macos/Flutter/Flutter-Release.xcconfig b/app/watt_wizard/macos/Flutter/Flutter-Release.xcconfig
deleted file mode 100644
index 5caa9d1..0000000
--- a/app/watt_wizard/macos/Flutter/Flutter-Release.xcconfig
+++ /dev/null
@@ -1,2 +0,0 @@
-#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
-#include "ephemeral/Flutter-Generated.xcconfig"
diff --git a/app/watt_wizard/macos/Flutter/GeneratedPluginRegistrant.swift b/app/watt_wizard/macos/Flutter/GeneratedPluginRegistrant.swift
deleted file mode 100644
index 9c2c0d4..0000000
--- a/app/watt_wizard/macos/Flutter/GeneratedPluginRegistrant.swift
+++ /dev/null
@@ -1,18 +0,0 @@
-//
-// Generated file. Do not edit.
-//
-
-import FlutterMacOS
-import Foundation
-
-import cloud_firestore
-import firebase_auth
-import firebase_core
-import flutter_blue_plus
-
-func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
- FLTFirebaseFirestorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseFirestorePlugin"))
- FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin"))
- FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
- FlutterBluePlusPlugin.register(with: registry.registrar(forPlugin: "FlutterBluePlusPlugin"))
-}
diff --git a/app/watt_wizard/macos/Podfile b/app/watt_wizard/macos/Podfile
deleted file mode 100644
index c795730..0000000
--- a/app/watt_wizard/macos/Podfile
+++ /dev/null
@@ -1,43 +0,0 @@
-platform :osx, '10.14'
-
-# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
-ENV['COCOAPODS_DISABLE_STATS'] = 'true'
-
-project 'Runner', {
- 'Debug' => :debug,
- 'Profile' => :release,
- 'Release' => :release,
-}
-
-def flutter_root
- generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__)
- unless File.exist?(generated_xcode_build_settings_path)
- raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first"
- end
-
- File.foreach(generated_xcode_build_settings_path) do |line|
- matches = line.match(/FLUTTER_ROOT\=(.*)/)
- return matches[1].strip if matches
- end
- raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\""
-end
-
-require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
-
-flutter_macos_podfile_setup
-
-target 'Runner' do
- use_frameworks!
- use_modular_headers!
-
- flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__))
- target 'RunnerTests' do
- inherit! :search_paths
- end
-end
-
-post_install do |installer|
- installer.pods_project.targets.each do |target|
- flutter_additional_macos_build_settings(target)
- end
-end
diff --git a/app/watt_wizard/macos/Runner.xcodeproj/project.pbxproj b/app/watt_wizard/macos/Runner.xcodeproj/project.pbxproj
deleted file mode 100644
index 3bdb7d7..0000000
--- a/app/watt_wizard/macos/Runner.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,699 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 54;
- objects = {
-
-/* Begin PBXAggregateTarget section */
- 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = {
- isa = PBXAggregateTarget;
- buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */;
- buildPhases = (
- 33CC111E2044C6BF0003C045 /* ShellScript */,
- );
- dependencies = (
- );
- name = "Flutter Assemble";
- productName = FLX;
- };
-/* End PBXAggregateTarget section */
-
-/* Begin PBXBuildFile section */
- 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; };
- 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; };
- 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; };
- 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; };
- 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; };
- 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; };
- 9DC907619B55D327D732048F /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 6C0CCBF4847BB7A9B689700C /* GoogleService-Info.plist */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 33CC10E52044A3C60003C045 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 33CC10EC2044A3C60003C045;
- remoteInfo = Runner;
- };
- 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 33CC10E52044A3C60003C045 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 33CC111A2044C6BA0003C045;
- remoteInfo = FLX;
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXCopyFilesBuildPhase section */
- 33CC110E2044A8840003C045 /* Bundle Framework */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- );
- name = "Bundle Framework";
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
- 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
- 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; };
- 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; };
- 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; };
- 33CC10ED2044A3C60003C045 /* watt_wizard.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = watt_wizard.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
- 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; };
- 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; };
- 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; };
- 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; };
- 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; };
- 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; };
- 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; };
- 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; };
- 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; };
- 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; };
- 6C0CCBF4847BB7A9B689700C /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = ""; };
- 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; };
- 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 331C80D2294CF70F00263BE5 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 33CC10EA2044A3C60003C045 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 331C80D6294CF71000263BE5 /* RunnerTests */ = {
- isa = PBXGroup;
- children = (
- 331C80D7294CF71000263BE5 /* RunnerTests.swift */,
- );
- path = RunnerTests;
- sourceTree = "";
- };
- 33BA886A226E78AF003329D5 /* Configs */ = {
- isa = PBXGroup;
- children = (
- 33E5194F232828860026EE4D /* AppInfo.xcconfig */,
- 9740EEB21CF90195004384FC /* Debug.xcconfig */,
- 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
- 333000ED22D3DE5D00554162 /* Warnings.xcconfig */,
- );
- path = Configs;
- sourceTree = "";
- };
- 33CC10E42044A3C60003C045 = {
- isa = PBXGroup;
- children = (
- 33FAB671232836740065AC1E /* Runner */,
- 33CEB47122A05771004F2AC0 /* Flutter */,
- 331C80D6294CF71000263BE5 /* RunnerTests */,
- 33CC10EE2044A3C60003C045 /* Products */,
- D73912EC22F37F3D000D13A0 /* Frameworks */,
- 6C0CCBF4847BB7A9B689700C /* GoogleService-Info.plist */,
- );
- sourceTree = "";
- };
- 33CC10EE2044A3C60003C045 /* Products */ = {
- isa = PBXGroup;
- children = (
- 33CC10ED2044A3C60003C045 /* watt_wizard.app */,
- 331C80D5294CF71000263BE5 /* RunnerTests.xctest */,
- );
- name = Products;
- sourceTree = "";
- };
- 33CC11242044D66E0003C045 /* Resources */ = {
- isa = PBXGroup;
- children = (
- 33CC10F22044A3C60003C045 /* Assets.xcassets */,
- 33CC10F42044A3C60003C045 /* MainMenu.xib */,
- 33CC10F72044A3C60003C045 /* Info.plist */,
- );
- name = Resources;
- path = ..;
- sourceTree = "";
- };
- 33CEB47122A05771004F2AC0 /* Flutter */ = {
- isa = PBXGroup;
- children = (
- 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */,
- 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */,
- 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */,
- 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */,
- );
- path = Flutter;
- sourceTree = "";
- };
- 33FAB671232836740065AC1E /* Runner */ = {
- isa = PBXGroup;
- children = (
- 33CC10F02044A3C60003C045 /* AppDelegate.swift */,
- 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */,
- 33E51913231747F40026EE4D /* DebugProfile.entitlements */,
- 33E51914231749380026EE4D /* Release.entitlements */,
- 33CC11242044D66E0003C045 /* Resources */,
- 33BA886A226E78AF003329D5 /* Configs */,
- );
- path = Runner;
- sourceTree = "";
- };
- D73912EC22F37F3D000D13A0 /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- );
- name = Frameworks;
- sourceTree = "";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 331C80D4294CF70F00263BE5 /* RunnerTests */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
- buildPhases = (
- 331C80D1294CF70F00263BE5 /* Sources */,
- 331C80D2294CF70F00263BE5 /* Frameworks */,
- 331C80D3294CF70F00263BE5 /* Resources */,
- );
- buildRules = (
- );
- dependencies = (
- 331C80DA294CF71000263BE5 /* PBXTargetDependency */,
- );
- name = RunnerTests;
- productName = RunnerTests;
- productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */;
- productType = "com.apple.product-type.bundle.unit-test";
- };
- 33CC10EC2044A3C60003C045 /* Runner */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */;
- buildPhases = (
- 33CC10E92044A3C60003C045 /* Sources */,
- 33CC10EA2044A3C60003C045 /* Frameworks */,
- 33CC10EB2044A3C60003C045 /* Resources */,
- 33CC110E2044A8840003C045 /* Bundle Framework */,
- 3399D490228B24CF009A79C7 /* ShellScript */,
- );
- buildRules = (
- );
- dependencies = (
- 33CC11202044C79F0003C045 /* PBXTargetDependency */,
- );
- name = Runner;
- productName = Runner;
- productReference = 33CC10ED2044A3C60003C045 /* watt_wizard.app */;
- productType = "com.apple.product-type.application";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 33CC10E52044A3C60003C045 /* Project object */ = {
- isa = PBXProject;
- attributes = {
- LastSwiftUpdateCheck = 0920;
- LastUpgradeCheck = 1430;
- ORGANIZATIONNAME = "";
- TargetAttributes = {
- 331C80D4294CF70F00263BE5 = {
- CreatedOnToolsVersion = 14.0;
- TestTargetID = 33CC10EC2044A3C60003C045;
- };
- 33CC10EC2044A3C60003C045 = {
- CreatedOnToolsVersion = 9.2;
- LastSwiftMigration = 1100;
- ProvisioningStyle = Automatic;
- SystemCapabilities = {
- com.apple.Sandbox = {
- enabled = 1;
- };
- };
- };
- 33CC111A2044C6BA0003C045 = {
- CreatedOnToolsVersion = 9.2;
- ProvisioningStyle = Manual;
- };
- };
- };
- buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */;
- compatibilityVersion = "Xcode 9.3";
- developmentRegion = en;
- hasScannedForEncodings = 0;
- knownRegions = (
- en,
- Base,
- );
- mainGroup = 33CC10E42044A3C60003C045;
- productRefGroup = 33CC10EE2044A3C60003C045 /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 33CC10EC2044A3C60003C045 /* Runner */,
- 331C80D4294CF70F00263BE5 /* RunnerTests */,
- 33CC111A2044C6BA0003C045 /* Flutter Assemble */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 331C80D3294CF70F00263BE5 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 33CC10EB2044A3C60003C045 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */,
- 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */,
- 9DC907619B55D327D732048F /* GoogleService-Info.plist in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXShellScriptBuildPhase section */
- 3399D490228B24CF009A79C7 /* ShellScript */ = {
- isa = PBXShellScriptBuildPhase;
- alwaysOutOfDate = 1;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- );
- outputFileListPaths = (
- );
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n";
- };
- 33CC111E2044C6BF0003C045 /* ShellScript */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- Flutter/ephemeral/FlutterInputs.xcfilelist,
- );
- inputPaths = (
- Flutter/ephemeral/tripwire,
- );
- outputFileListPaths = (
- Flutter/ephemeral/FlutterOutputs.xcfilelist,
- );
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire";
- };
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 331C80D1294CF70F00263BE5 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 33CC10E92044A3C60003C045 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */,
- 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */,
- 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 33CC10EC2044A3C60003C045 /* Runner */;
- targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */;
- };
- 33CC11202044C79F0003C045 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */;
- targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin PBXVariantGroup section */
- 33CC10F42044A3C60003C045 /* MainMenu.xib */ = {
- isa = PBXVariantGroup;
- children = (
- 33CC10F52044A3C60003C045 /* Base */,
- );
- name = MainMenu.xib;
- path = Runner;
- sourceTree = "";
- };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
- 331C80DB294CF71000263BE5 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- BUNDLE_LOADER = "$(TEST_HOST)";
- CURRENT_PROJECT_VERSION = 1;
- GENERATE_INFOPLIST_FILE = YES;
- MARKETING_VERSION = 1.0;
- PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard.RunnerTests;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_VERSION = 5.0;
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/watt_wizard.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/watt_wizard";
- };
- name = Debug;
- };
- 331C80DC294CF71000263BE5 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- BUNDLE_LOADER = "$(TEST_HOST)";
- CURRENT_PROJECT_VERSION = 1;
- GENERATE_INFOPLIST_FILE = YES;
- MARKETING_VERSION = 1.0;
- PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard.RunnerTests;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_VERSION = 5.0;
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/watt_wizard.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/watt_wizard";
- };
- name = Release;
- };
- 331C80DD294CF71000263BE5 /* Profile */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- BUNDLE_LOADER = "$(TEST_HOST)";
- CURRENT_PROJECT_VERSION = 1;
- GENERATE_INFOPLIST_FILE = YES;
- MARKETING_VERSION = 1.0;
- PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard.RunnerTests;
- PRODUCT_NAME = "$(TARGET_NAME)";
- SWIFT_VERSION = 5.0;
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/watt_wizard.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/watt_wizard";
- };
- name = Profile;
- };
- 338D0CE9231458BD00FA5F75 /* Profile */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- 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_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- 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_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CODE_SIGN_IDENTITY = "-";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.14;
- MTL_ENABLE_DEBUG_INFO = NO;
- SDKROOT = macosx;
- SWIFT_COMPILATION_MODE = wholemodule;
- SWIFT_OPTIMIZATION_LEVEL = "-O";
- };
- name = Profile;
- };
- 338D0CEA231458BD00FA5F75 /* Profile */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
- CODE_SIGN_STYLE = Automatic;
- COMBINE_HIDPI_IMAGES = YES;
- INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/../Frameworks",
- );
- PROVISIONING_PROFILE_SPECIFIER = "";
- SWIFT_VERSION = 5.0;
- };
- name = Profile;
- };
- 338D0CEB231458BD00FA5F75 /* Profile */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- CODE_SIGN_STYLE = Manual;
- PRODUCT_NAME = "$(TARGET_NAME)";
- };
- name = Profile;
- };
- 33CC10F92044A3C60003C045 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- 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_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- 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_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CODE_SIGN_IDENTITY = "-";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = dwarf;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- ENABLE_TESTABILITY = YES;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "$(inherited)",
- );
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.14;
- MTL_ENABLE_DEBUG_INFO = YES;
- ONLY_ACTIVE_ARCH = YES;
- SDKROOT = macosx;
- SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- };
- name = Debug;
- };
- 33CC10FA2044A3C60003C045 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_NONNULL = YES;
- CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
- 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_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
- 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_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CODE_SIGN_IDENTITY = "-";
- COPY_PHASE_STRIP = NO;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- GCC_C_LANGUAGE_STANDARD = gnu11;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- MACOSX_DEPLOYMENT_TARGET = 10.14;
- MTL_ENABLE_DEBUG_INFO = NO;
- SDKROOT = macosx;
- SWIFT_COMPILATION_MODE = wholemodule;
- SWIFT_OPTIMIZATION_LEVEL = "-O";
- };
- name = Release;
- };
- 33CC10FC2044A3C60003C045 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
- CODE_SIGN_STYLE = Automatic;
- COMBINE_HIDPI_IMAGES = YES;
- INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/../Frameworks",
- );
- PROVISIONING_PROFILE_SPECIFIER = "";
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 5.0;
- };
- name = Debug;
- };
- 33CC10FD2044A3C60003C045 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements;
- CODE_SIGN_STYLE = Automatic;
- COMBINE_HIDPI_IMAGES = YES;
- INFOPLIST_FILE = Runner/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/../Frameworks",
- );
- PROVISIONING_PROFILE_SPECIFIER = "";
- SWIFT_VERSION = 5.0;
- };
- name = Release;
- };
- 33CC111C2044C6BA0003C045 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- CODE_SIGN_STYLE = Manual;
- PRODUCT_NAME = "$(TARGET_NAME)";
- };
- name = Debug;
- };
- 33CC111D2044C6BA0003C045 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- CODE_SIGN_STYLE = Automatic;
- PRODUCT_NAME = "$(TARGET_NAME)";
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 331C80DB294CF71000263BE5 /* Debug */,
- 331C80DC294CF71000263BE5 /* Release */,
- 331C80DD294CF71000263BE5 /* Profile */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 33CC10F92044A3C60003C045 /* Debug */,
- 33CC10FA2044A3C60003C045 /* Release */,
- 338D0CE9231458BD00FA5F75 /* Profile */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 33CC10FC2044A3C60003C045 /* Debug */,
- 33CC10FD2044A3C60003C045 /* Release */,
- 338D0CEA231458BD00FA5F75 /* Profile */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 33CC111C2044C6BA0003C045 /* Debug */,
- 33CC111D2044C6BA0003C045 /* Release */,
- 338D0CEB231458BD00FA5F75 /* Profile */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 33CC10E52044A3C60003C045 /* Project object */;
-}
diff --git a/app/watt_wizard/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/app/watt_wizard/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
deleted file mode 100644
index 18d9810..0000000
--- a/app/watt_wizard/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- IDEDidComputeMac32BitWarning
-
-
-
diff --git a/app/watt_wizard/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/app/watt_wizard/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
deleted file mode 100644
index 983fc37..0000000
--- a/app/watt_wizard/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/watt_wizard/macos/Runner.xcworkspace/contents.xcworkspacedata b/app/watt_wizard/macos/Runner.xcworkspace/contents.xcworkspacedata
deleted file mode 100644
index 1d526a1..0000000
--- a/app/watt_wizard/macos/Runner.xcworkspace/contents.xcworkspacedata
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
diff --git a/app/watt_wizard/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/app/watt_wizard/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
deleted file mode 100644
index 18d9810..0000000
--- a/app/watt_wizard/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- IDEDidComputeMac32BitWarning
-
-
-
diff --git a/app/watt_wizard/macos/Runner/AppDelegate.swift b/app/watt_wizard/macos/Runner/AppDelegate.swift
deleted file mode 100644
index d53ef64..0000000
--- a/app/watt_wizard/macos/Runner/AppDelegate.swift
+++ /dev/null
@@ -1,9 +0,0 @@
-import Cocoa
-import FlutterMacOS
-
-@NSApplicationMain
-class AppDelegate: FlutterAppDelegate {
- override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
- return true
- }
-}
diff --git a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
deleted file mode 100644
index a2ec33f..0000000
--- a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "images" : [
- {
- "size" : "16x16",
- "idiom" : "mac",
- "filename" : "app_icon_16.png",
- "scale" : "1x"
- },
- {
- "size" : "16x16",
- "idiom" : "mac",
- "filename" : "app_icon_32.png",
- "scale" : "2x"
- },
- {
- "size" : "32x32",
- "idiom" : "mac",
- "filename" : "app_icon_32.png",
- "scale" : "1x"
- },
- {
- "size" : "32x32",
- "idiom" : "mac",
- "filename" : "app_icon_64.png",
- "scale" : "2x"
- },
- {
- "size" : "128x128",
- "idiom" : "mac",
- "filename" : "app_icon_128.png",
- "scale" : "1x"
- },
- {
- "size" : "128x128",
- "idiom" : "mac",
- "filename" : "app_icon_256.png",
- "scale" : "2x"
- },
- {
- "size" : "256x256",
- "idiom" : "mac",
- "filename" : "app_icon_256.png",
- "scale" : "1x"
- },
- {
- "size" : "256x256",
- "idiom" : "mac",
- "filename" : "app_icon_512.png",
- "scale" : "2x"
- },
- {
- "size" : "512x512",
- "idiom" : "mac",
- "filename" : "app_icon_512.png",
- "scale" : "1x"
- },
- {
- "size" : "512x512",
- "idiom" : "mac",
- "filename" : "app_icon_1024.png",
- "scale" : "2x"
- }
- ],
- "info" : {
- "version" : 1,
- "author" : "xcode"
- }
-}
diff --git a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
deleted file mode 100644
index 82b6f9d..0000000
Binary files a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png and /dev/null differ
diff --git a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png
deleted file mode 100644
index 13b35eb..0000000
Binary files a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png and /dev/null differ
diff --git a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png
deleted file mode 100644
index 0a3f5fa..0000000
Binary files a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png and /dev/null differ
diff --git a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png
deleted file mode 100644
index bdb5722..0000000
Binary files a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png and /dev/null differ
diff --git a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png
deleted file mode 100644
index f083318..0000000
Binary files a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png and /dev/null differ
diff --git a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png
deleted file mode 100644
index 326c0e7..0000000
Binary files a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png and /dev/null differ
diff --git a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png
deleted file mode 100644
index 2f1632c..0000000
Binary files a/app/watt_wizard/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png and /dev/null differ
diff --git a/app/watt_wizard/macos/Runner/Base.lproj/MainMenu.xib b/app/watt_wizard/macos/Runner/Base.lproj/MainMenu.xib
deleted file mode 100644
index 80e867a..0000000
--- a/app/watt_wizard/macos/Runner/Base.lproj/MainMenu.xib
+++ /dev/null
@@ -1,343 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/watt_wizard/macos/Runner/Configs/AppInfo.xcconfig b/app/watt_wizard/macos/Runner/Configs/AppInfo.xcconfig
deleted file mode 100644
index 015e006..0000000
--- a/app/watt_wizard/macos/Runner/Configs/AppInfo.xcconfig
+++ /dev/null
@@ -1,14 +0,0 @@
-// Application-level settings for the Runner target.
-//
-// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the
-// future. If not, the values below would default to using the project name when this becomes a
-// 'flutter create' template.
-
-// The application's name. By default this is also the title of the Flutter window.
-PRODUCT_NAME = watt_wizard
-
-// The application's bundle identifier
-PRODUCT_BUNDLE_IDENTIFIER = com.example.wattWizard
-
-// The copyright displayed in application information
-PRODUCT_COPYRIGHT = Copyright © 2023 com.example. All rights reserved.
diff --git a/app/watt_wizard/macos/Runner/Configs/Debug.xcconfig b/app/watt_wizard/macos/Runner/Configs/Debug.xcconfig
deleted file mode 100644
index 36b0fd9..0000000
--- a/app/watt_wizard/macos/Runner/Configs/Debug.xcconfig
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "../../Flutter/Flutter-Debug.xcconfig"
-#include "Warnings.xcconfig"
diff --git a/app/watt_wizard/macos/Runner/Configs/Release.xcconfig b/app/watt_wizard/macos/Runner/Configs/Release.xcconfig
deleted file mode 100644
index dff4f49..0000000
--- a/app/watt_wizard/macos/Runner/Configs/Release.xcconfig
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "../../Flutter/Flutter-Release.xcconfig"
-#include "Warnings.xcconfig"
diff --git a/app/watt_wizard/macos/Runner/Configs/Warnings.xcconfig b/app/watt_wizard/macos/Runner/Configs/Warnings.xcconfig
deleted file mode 100644
index 42bcbf4..0000000
--- a/app/watt_wizard/macos/Runner/Configs/Warnings.xcconfig
+++ /dev/null
@@ -1,13 +0,0 @@
-WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings
-GCC_WARN_UNDECLARED_SELECTOR = YES
-CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES
-CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE
-CLANG_WARN__DUPLICATE_METHOD_MATCH = YES
-CLANG_WARN_PRAGMA_PACK = YES
-CLANG_WARN_STRICT_PROTOTYPES = YES
-CLANG_WARN_COMMA = YES
-GCC_WARN_STRICT_SELECTOR_MATCH = YES
-CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES
-CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES
-GCC_WARN_SHADOW = YES
-CLANG_WARN_UNREACHABLE_CODE = YES
diff --git a/app/watt_wizard/macos/Runner/DebugProfile.entitlements b/app/watt_wizard/macos/Runner/DebugProfile.entitlements
deleted file mode 100644
index dddb8a3..0000000
--- a/app/watt_wizard/macos/Runner/DebugProfile.entitlements
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
- com.apple.security.app-sandbox
-
- com.apple.security.cs.allow-jit
-
- com.apple.security.network.server
-
-
-
diff --git a/app/watt_wizard/macos/Runner/GoogleService-Info.plist b/app/watt_wizard/macos/Runner/GoogleService-Info.plist
deleted file mode 100644
index 4f0408e..0000000
--- a/app/watt_wizard/macos/Runner/GoogleService-Info.plist
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
- API_KEY
- AIzaSyAecUFC5dEESq3rLDNNx-Kxx0_w5sZvWGs
- GCM_SENDER_ID
- 192909855910
- PLIST_VERSION
- 1
- BUNDLE_ID
- com.example.wattWizard.RunnerTests
- PROJECT_ID
- hackgt2023
- STORAGE_BUCKET
- hackgt2023.appspot.com
- IS_ADS_ENABLED
-
- IS_ANALYTICS_ENABLED
-
- IS_APPINVITE_ENABLED
-
- IS_GCM_ENABLED
-
- IS_SIGNIN_ENABLED
-
- GOOGLE_APP_ID
- 1:192909855910:ios:a49a650b4f8915ac873867
-
-
\ No newline at end of file
diff --git a/app/watt_wizard/macos/Runner/Info.plist b/app/watt_wizard/macos/Runner/Info.plist
deleted file mode 100644
index 4789daa..0000000
--- a/app/watt_wizard/macos/Runner/Info.plist
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- $(DEVELOPMENT_LANGUAGE)
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIconFile
-
- CFBundleIdentifier
- $(PRODUCT_BUNDLE_IDENTIFIER)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- $(FLUTTER_BUILD_NAME)
- CFBundleVersion
- $(FLUTTER_BUILD_NUMBER)
- LSMinimumSystemVersion
- $(MACOSX_DEPLOYMENT_TARGET)
- NSHumanReadableCopyright
- $(PRODUCT_COPYRIGHT)
- NSMainNibFile
- MainMenu
- NSPrincipalClass
- NSApplication
-
-
diff --git a/app/watt_wizard/macos/Runner/MainFlutterWindow.swift b/app/watt_wizard/macos/Runner/MainFlutterWindow.swift
deleted file mode 100644
index 3cc05eb..0000000
--- a/app/watt_wizard/macos/Runner/MainFlutterWindow.swift
+++ /dev/null
@@ -1,15 +0,0 @@
-import Cocoa
-import FlutterMacOS
-
-class MainFlutterWindow: NSWindow {
- override func awakeFromNib() {
- let flutterViewController = FlutterViewController()
- let windowFrame = self.frame
- self.contentViewController = flutterViewController
- self.setFrame(windowFrame, display: true)
-
- RegisterGeneratedPlugins(registry: flutterViewController)
-
- super.awakeFromNib()
- }
-}
diff --git a/app/watt_wizard/macos/Runner/Release.entitlements b/app/watt_wizard/macos/Runner/Release.entitlements
deleted file mode 100644
index 852fa1a..0000000
--- a/app/watt_wizard/macos/Runner/Release.entitlements
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- com.apple.security.app-sandbox
-
-
-
diff --git a/app/watt_wizard/macos/RunnerTests/RunnerTests.swift b/app/watt_wizard/macos/RunnerTests/RunnerTests.swift
deleted file mode 100644
index 5418c9f..0000000
--- a/app/watt_wizard/macos/RunnerTests/RunnerTests.swift
+++ /dev/null
@@ -1,12 +0,0 @@
-import FlutterMacOS
-import Cocoa
-import XCTest
-
-class RunnerTests: XCTestCase {
-
- func testExample() {
- // If you add code to the Runner application, consider adding tests here.
- // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
- }
-
-}
diff --git a/app/watt_wizard/macos/firebase_app_id_file.json b/app/watt_wizard/macos/firebase_app_id_file.json
deleted file mode 100644
index 5ff45d2..0000000
--- a/app/watt_wizard/macos/firebase_app_id_file.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "file_generated_by": "FlutterFire CLI",
- "purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
- "GOOGLE_APP_ID": "1:192909855910:ios:a49a650b4f8915ac873867",
- "FIREBASE_PROJECT_ID": "hackgt2023",
- "GCM_SENDER_ID": "192909855910"
-}
\ No newline at end of file
diff --git a/app/watt_wizard/pubspec.lock b/app/watt_wizard/pubspec.lock
deleted file mode 100644
index 5b567bb..0000000
--- a/app/watt_wizard/pubspec.lock
+++ /dev/null
@@ -1,418 +0,0 @@
-# Generated by pub
-# See https://dart.dev/tools/pub/glossary#lockfile
-packages:
- _flutterfire_internals:
- dependency: transitive
- description:
- name: _flutterfire_internals
- sha256: d84d98f1992976775f83083523a34c5d22fea191eec3abb2bd09537fb623c2e0
- url: "https://pub.dev"
- source: hosted
- version: "1.3.7"
- archive:
- dependency: transitive
- description:
- name: archive
- sha256: "7e0d52067d05f2e0324268097ba723b71cb41ac8a6a2b24d1edf9c536b987b03"
- url: "https://pub.dev"
- source: hosted
- version: "3.4.6"
- args:
- dependency: transitive
- description:
- name: args
- sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596
- url: "https://pub.dev"
- source: hosted
- version: "2.4.2"
- async:
- dependency: transitive
- description:
- name: async
- sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
- url: "https://pub.dev"
- source: hosted
- version: "2.11.0"
- boolean_selector:
- dependency: transitive
- description:
- name: boolean_selector
- sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
- url: "https://pub.dev"
- source: hosted
- version: "2.1.1"
- characters:
- dependency: transitive
- description:
- name: characters
- sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
- url: "https://pub.dev"
- source: hosted
- version: "1.3.0"
- checked_yaml:
- dependency: transitive
- description:
- name: checked_yaml
- sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff
- url: "https://pub.dev"
- source: hosted
- version: "2.0.3"
- cli_util:
- dependency: transitive
- description:
- name: cli_util
- sha256: b8db3080e59b2503ca9e7922c3df2072cf13992354d5e944074ffa836fba43b7
- url: "https://pub.dev"
- source: hosted
- version: "0.4.0"
- clock:
- dependency: transitive
- description:
- name: clock
- sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
- url: "https://pub.dev"
- source: hosted
- version: "1.1.1"
- cloud_firestore:
- dependency: "direct main"
- description:
- name: cloud_firestore
- sha256: "1179ae4c69e2ea18179d844d70fc6ed2f082a2bbeb7fa62d35a2a24e2992bd4d"
- url: "https://pub.dev"
- source: hosted
- version: "4.9.3"
- cloud_firestore_platform_interface:
- dependency: transitive
- description:
- name: cloud_firestore_platform_interface
- sha256: acdcf0743bbdd0e6b342f3d2033e15d260a2c6f9434dd34b008b8f1c35e62b23
- url: "https://pub.dev"
- source: hosted
- version: "5.16.2"
- cloud_firestore_web:
- dependency: transitive
- description:
- name: cloud_firestore_web
- sha256: "321bb0732c8d782a49aede96805e59609e05cf98b6c34370faa04103f46a4a3a"
- url: "https://pub.dev"
- source: hosted
- version: "3.7.2"
- collection:
- dependency: transitive
- description:
- name: collection
- sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
- url: "https://pub.dev"
- source: hosted
- version: "1.17.2"
- convert:
- dependency: transitive
- description:
- name: convert
- sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
- url: "https://pub.dev"
- source: hosted
- version: "3.1.1"
- crypto:
- dependency: transitive
- description:
- name: crypto
- sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
- url: "https://pub.dev"
- source: hosted
- version: "3.0.3"
- cupertino_icons:
- dependency: "direct main"
- description:
- name: cupertino_icons
- sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d
- url: "https://pub.dev"
- source: hosted
- version: "1.0.6"
- fake_async:
- dependency: transitive
- description:
- name: fake_async
- sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
- url: "https://pub.dev"
- source: hosted
- version: "1.3.1"
- firebase_auth:
- dependency: "direct main"
- description:
- name: firebase_auth
- sha256: "95c74884ff25eafcbbbcd5506b738e68ee98ff54d09522a6092a2fb95d02ee7a"
- url: "https://pub.dev"
- source: hosted
- version: "4.10.1"
- firebase_auth_platform_interface:
- dependency: transitive
- description:
- name: firebase_auth_platform_interface
- sha256: "05d2636673e145d2b5eccc452c009808af4c15e8b402f34bb8fec63f2c76e86b"
- url: "https://pub.dev"
- source: hosted
- version: "6.19.1"
- firebase_auth_web:
- dependency: transitive
- description:
- name: firebase_auth_web
- sha256: "4b8374da5d8969f99453ebd65074c1d379fe781bb3680fa7f65a4d3ac4ec87b3"
- url: "https://pub.dev"
- source: hosted
- version: "5.8.2"
- firebase_core:
- dependency: "direct main"
- description:
- name: firebase_core
- sha256: "95580fa07c8ca3072a2bb1fecd792616a33f8683477d25b7d29d3a6a399e6ece"
- url: "https://pub.dev"
- source: hosted
- version: "2.17.0"
- firebase_core_platform_interface:
- dependency: transitive
- description:
- name: firebase_core_platform_interface
- sha256: b63e3be6c96ef5c33bdec1aab23c91eb00696f6452f0519401d640938c94cba2
- url: "https://pub.dev"
- source: hosted
- version: "4.8.0"
- firebase_core_web:
- dependency: transitive
- description:
- name: firebase_core_web
- sha256: e8c408923cd3a25bd342c576a114f2126769cd1a57106a4edeaa67ea4a84e962
- url: "https://pub.dev"
- source: hosted
- version: "2.8.0"
- flutter:
- dependency: "direct main"
- description: flutter
- source: sdk
- version: "0.0.0"
- flutter_blue_plus:
- dependency: "direct main"
- description:
- name: flutter_blue_plus
- sha256: d90c8cd9600d971a9e4007441e0f06b5134b6ba8329e28f255d68b02832ea2d4
- url: "https://pub.dev"
- source: hosted
- version: "1.18.3"
- flutter_launcher_icons:
- dependency: "direct main"
- description:
- name: flutter_launcher_icons
- sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea"
- url: "https://pub.dev"
- source: hosted
- version: "0.13.1"
- flutter_lints:
- dependency: "direct dev"
- description:
- name: flutter_lints
- sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
- url: "https://pub.dev"
- source: hosted
- version: "2.0.3"
- flutter_test:
- dependency: "direct dev"
- description: flutter
- source: sdk
- version: "0.0.0"
- flutter_web_plugins:
- dependency: transitive
- description: flutter
- source: sdk
- version: "0.0.0"
- http_parser:
- dependency: transitive
- description:
- name: http_parser
- sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
- url: "https://pub.dev"
- source: hosted
- version: "4.0.2"
- image:
- dependency: transitive
- description:
- name: image
- sha256: "028f61960d56f26414eb616b48b04eb37d700cbe477b7fb09bf1d7ce57fd9271"
- url: "https://pub.dev"
- source: hosted
- version: "4.1.3"
- js:
- dependency: transitive
- description:
- name: js
- sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
- url: "https://pub.dev"
- source: hosted
- version: "0.6.7"
- json_annotation:
- dependency: transitive
- description:
- name: json_annotation
- sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467
- url: "https://pub.dev"
- source: hosted
- version: "4.8.1"
- lints:
- dependency: transitive
- description:
- name: lints
- sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
- url: "https://pub.dev"
- source: hosted
- version: "2.1.1"
- matcher:
- dependency: transitive
- description:
- name: matcher
- sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
- url: "https://pub.dev"
- source: hosted
- version: "0.12.16"
- material_color_utilities:
- dependency: transitive
- description:
- name: material_color_utilities
- sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
- url: "https://pub.dev"
- source: hosted
- version: "0.5.0"
- meta:
- dependency: transitive
- description:
- name: meta
- sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
- url: "https://pub.dev"
- source: hosted
- version: "1.9.1"
- path:
- dependency: transitive
- description:
- name: path
- sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
- url: "https://pub.dev"
- source: hosted
- version: "1.8.3"
- petitparser:
- dependency: transitive
- description:
- name: petitparser
- sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750
- url: "https://pub.dev"
- source: hosted
- version: "5.4.0"
- plugin_platform_interface:
- dependency: transitive
- description:
- name: plugin_platform_interface
- sha256: da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d
- url: "https://pub.dev"
- source: hosted
- version: "2.1.6"
- pointycastle:
- dependency: transitive
- description:
- name: pointycastle
- sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c"
- url: "https://pub.dev"
- source: hosted
- version: "3.7.3"
- sky_engine:
- dependency: transitive
- description: flutter
- source: sdk
- version: "0.0.99"
- source_span:
- dependency: transitive
- description:
- name: source_span
- sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
- url: "https://pub.dev"
- source: hosted
- version: "1.10.0"
- stack_trace:
- dependency: transitive
- description:
- name: stack_trace
- sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
- url: "https://pub.dev"
- source: hosted
- version: "1.11.0"
- stream_channel:
- dependency: transitive
- description:
- name: stream_channel
- sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
- url: "https://pub.dev"
- source: hosted
- version: "2.1.1"
- string_scanner:
- dependency: transitive
- description:
- name: string_scanner
- sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
- url: "https://pub.dev"
- source: hosted
- version: "1.2.0"
- term_glyph:
- dependency: transitive
- description:
- name: term_glyph
- sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
- url: "https://pub.dev"
- source: hosted
- version: "1.2.1"
- test_api:
- dependency: transitive
- description:
- name: test_api
- sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
- url: "https://pub.dev"
- source: hosted
- version: "0.6.0"
- typed_data:
- dependency: transitive
- description:
- name: typed_data
- sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
- url: "https://pub.dev"
- source: hosted
- version: "1.3.2"
- vector_math:
- dependency: transitive
- description:
- name: vector_math
- sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
- url: "https://pub.dev"
- source: hosted
- version: "2.1.4"
- web:
- dependency: transitive
- description:
- name: web
- sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
- url: "https://pub.dev"
- source: hosted
- version: "0.1.4-beta"
- xml:
- dependency: transitive
- description:
- name: xml
- sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84"
- url: "https://pub.dev"
- source: hosted
- version: "6.3.0"
- yaml:
- dependency: transitive
- description:
- name: yaml
- sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5"
- url: "https://pub.dev"
- source: hosted
- version: "3.1.2"
-sdks:
- dart: ">=3.1.3 <4.0.0"
- flutter: ">=3.3.0"
diff --git a/app/watt_wizard/pubspec.yaml b/app/watt_wizard/pubspec.yaml
deleted file mode 100644
index e592920..0000000
--- a/app/watt_wizard/pubspec.yaml
+++ /dev/null
@@ -1,98 +0,0 @@
-name: watt_wizard
-description: A new Flutter project.
-# The following line prevents the package from being accidentally published to
-# pub.dev using `flutter pub publish`. This is preferred for private packages.
-publish_to: "none" # Remove this line if you wish to publish to pub.dev
-
-# The following defines the version and build number for your application.
-# A version number is three numbers separated by dots, like 1.2.43
-# followed by an optional build number separated by a +.
-# Both the version and the builder number may be overridden in flutter
-# build by specifying --build-name and --build-number, respectively.
-# In Android, build-name is used as versionName while build-number used as versionCode.
-# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
-# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion.
-# Read more about iOS versioning at
-# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
-# In Windows, build-name is used as the major, minor, and patch parts
-# of the product and file versions while build-number is used as the build suffix.
-version: 1.0.0+1
-
-environment:
- sdk: ">=3.1.3 <4.0.0"
-
-# Dependencies specify other packages that your package needs in order to work.
-# To automatically upgrade your package dependencies to the latest versions
-# consider running `flutter pub upgrade --major-versions`. Alternatively,
-# dependencies can be manually updated by changing the version numbers below to
-# the latest version available on pub.dev. To see which dependencies have newer
-# versions available, run `flutter pub outdated`.
-dependencies:
- flutter:
- sdk: flutter
- flutter_launcher_icons: "^0.13.1"
-
- # The following adds the Cupertino Icons font to your application.
- # Use with the CupertinoIcons class for iOS style icons.
- cupertino_icons: ^1.0.2
- firebase_core: ^2.17.0
- firebase_auth: ^4.10.1
- flutter_blue_plus: ^1.18.3
- cloud_firestore: ^4.9.3
-
-dev_dependencies:
- flutter_test:
- sdk: flutter
-
- # The "flutter_lints" package below contains a set of recommended lints to
- # encourage good coding practices. The lint set provided by the package is
- # activated in the `analysis_options.yaml` file located at the root of your
- # package. See that file for information about deactivating specific lint
- # rules and activating additional ones.
- flutter_lints: ^2.0.0
-
-# For information on the generic Dart part of this file, see the
-# following page: https://dart.dev/tools/pub/pubspec
-
-# The following section is specific to Flutter packages.
-flutter:
- # The following line ensures that the Material Icons font is
- # included with your application, so that you can use the icons in
- # the material Icons class.
- uses-material-design: true
-
- # To add assets to your application, add an assets section, like this:
- # assets:
- # - images/a_dot_burr.jpeg
- # - images/a_dot_ham.jpeg
-
- # An image asset can refer to one or more resolution-specific "variants", see
- # https://flutter.dev/assets-and-images/#resolution-aware
-
- # For details regarding adding assets from package dependencies, see
- # https://flutter.dev/assets-and-images/#from-packages
-
- # To add custom fonts to your application, add a fonts section here,
- # in this "flutter" section. Each entry in this list should have a
- # "family" key with the font family name, and a "fonts" key with a
- # list giving the asset and other descriptors for the font. For
- # example:
- # fonts:
- # - family: Schyler
- # fonts:
- # - asset: fonts/Schyler-Regular.ttf
- # - asset: fonts/Schyler-Italic.ttf
- # style: italic
- # - family: Trajan Pro
- # fonts:
- # - asset: fonts/TrajanPro.ttf
- # - asset: fonts/TrajanPro_Bold.ttf
- # weight: 700
- #
- # For details regarding fonts from package dependencies,
- # see https://flutter.dev/custom-fonts/#from-packages
-
-flutter_launcher_icons:
- ios: true
- image_path_ios: "assets/icon/ios_square.png"
- min_sdk_android: 21 # android min sdk min:16, default 21
diff --git a/app/watt_wizard/test/widget_test.dart b/app/watt_wizard/test/widget_test.dart
deleted file mode 100644
index 3626d72..0000000
--- a/app/watt_wizard/test/widget_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// This is a basic Flutter widget test.
-//
-// To perform an interaction with a widget in your test, use the WidgetTester
-// utility in the flutter_test package. For example, you can send tap and scroll
-// gestures. You can also use WidgetTester to find child widgets in the widget
-// tree, read text, and verify that the values of widget properties are correct.
-
-import 'package:flutter/material.dart';
-import 'package:flutter_test/flutter_test.dart';
-
-import 'package:watt_wizard/main.dart';
-
-void main() {
- testWidgets('Counter increments smoke test', (WidgetTester tester) async {
- // Build our app and trigger a frame.
- await tester.pumpWidget(const MyApp());
-
- // Verify that our counter starts at 0.
- expect(find.text('0'), findsOneWidget);
- expect(find.text('1'), findsNothing);
-
- // Tap the '+' icon and trigger a frame.
- await tester.tap(find.byIcon(Icons.add));
- await tester.pump();
-
- // Verify that our counter has incremented.
- expect(find.text('0'), findsNothing);
- expect(find.text('1'), findsOneWidget);
- });
-}
diff --git a/app/watt_wizard/web/favicon.png b/app/watt_wizard/web/favicon.png
deleted file mode 100644
index 8aaa46a..0000000
Binary files a/app/watt_wizard/web/favicon.png and /dev/null differ
diff --git a/app/watt_wizard/web/icons/Icon-192.png b/app/watt_wizard/web/icons/Icon-192.png
deleted file mode 100644
index b749bfe..0000000
Binary files a/app/watt_wizard/web/icons/Icon-192.png and /dev/null differ
diff --git a/app/watt_wizard/web/icons/Icon-512.png b/app/watt_wizard/web/icons/Icon-512.png
deleted file mode 100644
index 88cfd48..0000000
Binary files a/app/watt_wizard/web/icons/Icon-512.png and /dev/null differ
diff --git a/app/watt_wizard/web/icons/Icon-maskable-192.png b/app/watt_wizard/web/icons/Icon-maskable-192.png
deleted file mode 100644
index eb9b4d7..0000000
Binary files a/app/watt_wizard/web/icons/Icon-maskable-192.png and /dev/null differ
diff --git a/app/watt_wizard/web/icons/Icon-maskable-512.png b/app/watt_wizard/web/icons/Icon-maskable-512.png
deleted file mode 100644
index d69c566..0000000
Binary files a/app/watt_wizard/web/icons/Icon-maskable-512.png and /dev/null differ
diff --git a/app/watt_wizard/web/index.html b/app/watt_wizard/web/index.html
deleted file mode 100644
index 117750c..0000000
--- a/app/watt_wizard/web/index.html
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- watt_wizard
-
-
-
-
-
-
-
-
-
-
diff --git a/app/watt_wizard/web/manifest.json b/app/watt_wizard/web/manifest.json
deleted file mode 100644
index d0670cd..0000000
--- a/app/watt_wizard/web/manifest.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "name": "watt_wizard",
- "short_name": "watt_wizard",
- "start_url": ".",
- "display": "standalone",
- "background_color": "#0175C2",
- "theme_color": "#0175C2",
- "description": "A new Flutter project.",
- "orientation": "portrait-primary",
- "prefer_related_applications": false,
- "icons": [
- {
- "src": "icons/Icon-192.png",
- "sizes": "192x192",
- "type": "image/png"
- },
- {
- "src": "icons/Icon-512.png",
- "sizes": "512x512",
- "type": "image/png"
- },
- {
- "src": "icons/Icon-maskable-192.png",
- "sizes": "192x192",
- "type": "image/png",
- "purpose": "maskable"
- },
- {
- "src": "icons/Icon-maskable-512.png",
- "sizes": "512x512",
- "type": "image/png",
- "purpose": "maskable"
- }
- ]
-}
diff --git a/app/watt_wizard/windows/.gitignore b/app/watt_wizard/windows/.gitignore
deleted file mode 100644
index d492d0d..0000000
--- a/app/watt_wizard/windows/.gitignore
+++ /dev/null
@@ -1,17 +0,0 @@
-flutter/ephemeral/
-
-# Visual Studio user-specific files.
-*.suo
-*.user
-*.userosscache
-*.sln.docstates
-
-# Visual Studio build-related files.
-x64/
-x86/
-
-# Visual Studio cache files
-# files ending in .cache can be ignored
-*.[Cc]ache
-# but keep track of directories ending in .cache
-!*.[Cc]ache/
diff --git a/app/watt_wizard/windows/CMakeLists.txt b/app/watt_wizard/windows/CMakeLists.txt
deleted file mode 100644
index 346e2e8..0000000
--- a/app/watt_wizard/windows/CMakeLists.txt
+++ /dev/null
@@ -1,102 +0,0 @@
-# Project-level configuration.
-cmake_minimum_required(VERSION 3.14)
-project(watt_wizard LANGUAGES CXX)
-
-# The name of the executable created for the application. Change this to change
-# the on-disk name of your application.
-set(BINARY_NAME "watt_wizard")
-
-# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
-# versions of CMake.
-cmake_policy(VERSION 3.14...3.25)
-
-# Define build configuration option.
-get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
-if(IS_MULTICONFIG)
- set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release"
- CACHE STRING "" FORCE)
-else()
- if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
- set(CMAKE_BUILD_TYPE "Debug" CACHE
- STRING "Flutter build mode" FORCE)
- set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
- "Debug" "Profile" "Release")
- endif()
-endif()
-# Define settings for the Profile build mode.
-set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
-set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
-set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}")
-set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}")
-
-# Use Unicode for all projects.
-add_definitions(-DUNICODE -D_UNICODE)
-
-# Compilation settings that should be applied to most targets.
-#
-# Be cautious about adding new options here, as plugins use this function by
-# default. In most cases, you should add new options to specific targets instead
-# of modifying this function.
-function(APPLY_STANDARD_SETTINGS TARGET)
- target_compile_features(${TARGET} PUBLIC cxx_std_17)
- target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100")
- target_compile_options(${TARGET} PRIVATE /EHsc)
- target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0")
- target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>")
-endfunction()
-
-# Flutter library and tool build rules.
-set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter")
-add_subdirectory(${FLUTTER_MANAGED_DIR})
-
-# Application build; see runner/CMakeLists.txt.
-add_subdirectory("runner")
-
-
-# Generated plugin build rules, which manage building the plugins and adding
-# them to the application.
-include(flutter/generated_plugins.cmake)
-
-
-# === Installation ===
-# Support files are copied into place next to the executable, so that it can
-# run in place. This is done instead of making a separate bundle (as on Linux)
-# so that building and running from within Visual Studio will work.
-set(BUILD_BUNDLE_DIR "$")
-# Make the "install" step default, as it's required to run.
-set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1)
-if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
- set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE)
-endif()
-
-set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data")
-set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}")
-
-install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}"
- COMPONENT Runtime)
-
-install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}"
- COMPONENT Runtime)
-
-install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
- COMPONENT Runtime)
-
-if(PLUGIN_BUNDLED_LIBRARIES)
- install(FILES "${PLUGIN_BUNDLED_LIBRARIES}"
- DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
- COMPONENT Runtime)
-endif()
-
-# Fully re-copy the assets directory on each build to avoid having stale files
-# from a previous install.
-set(FLUTTER_ASSET_DIR_NAME "flutter_assets")
-install(CODE "
- file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\")
- " COMPONENT Runtime)
-install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}"
- DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime)
-
-# Install the AOT library on non-Debug builds only.
-install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}"
- CONFIGURATIONS Profile;Release
- COMPONENT Runtime)
diff --git a/app/watt_wizard/windows/flutter/CMakeLists.txt b/app/watt_wizard/windows/flutter/CMakeLists.txt
deleted file mode 100644
index 930d207..0000000
--- a/app/watt_wizard/windows/flutter/CMakeLists.txt
+++ /dev/null
@@ -1,104 +0,0 @@
-# This file controls Flutter-level build steps. It should not be edited.
-cmake_minimum_required(VERSION 3.14)
-
-set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral")
-
-# Configuration provided via flutter tool.
-include(${EPHEMERAL_DIR}/generated_config.cmake)
-
-# TODO: Move the rest of this into files in ephemeral. See
-# https://github.com/flutter/flutter/issues/57146.
-set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper")
-
-# === Flutter Library ===
-set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll")
-
-# Published to parent scope for install step.
-set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE)
-set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE)
-set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE)
-set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE)
-
-list(APPEND FLUTTER_LIBRARY_HEADERS
- "flutter_export.h"
- "flutter_windows.h"
- "flutter_messenger.h"
- "flutter_plugin_registrar.h"
- "flutter_texture_registrar.h"
-)
-list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/")
-add_library(flutter INTERFACE)
-target_include_directories(flutter INTERFACE
- "${EPHEMERAL_DIR}"
-)
-target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib")
-add_dependencies(flutter flutter_assemble)
-
-# === Wrapper ===
-list(APPEND CPP_WRAPPER_SOURCES_CORE
- "core_implementations.cc"
- "standard_codec.cc"
-)
-list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/")
-list(APPEND CPP_WRAPPER_SOURCES_PLUGIN
- "plugin_registrar.cc"
-)
-list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/")
-list(APPEND CPP_WRAPPER_SOURCES_APP
- "flutter_engine.cc"
- "flutter_view_controller.cc"
-)
-list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/")
-
-# Wrapper sources needed for a plugin.
-add_library(flutter_wrapper_plugin STATIC
- ${CPP_WRAPPER_SOURCES_CORE}
- ${CPP_WRAPPER_SOURCES_PLUGIN}
-)
-apply_standard_settings(flutter_wrapper_plugin)
-set_target_properties(flutter_wrapper_plugin PROPERTIES
- POSITION_INDEPENDENT_CODE ON)
-set_target_properties(flutter_wrapper_plugin PROPERTIES
- CXX_VISIBILITY_PRESET hidden)
-target_link_libraries(flutter_wrapper_plugin PUBLIC flutter)
-target_include_directories(flutter_wrapper_plugin PUBLIC
- "${WRAPPER_ROOT}/include"
-)
-add_dependencies(flutter_wrapper_plugin flutter_assemble)
-
-# Wrapper sources needed for the runner.
-add_library(flutter_wrapper_app STATIC
- ${CPP_WRAPPER_SOURCES_CORE}
- ${CPP_WRAPPER_SOURCES_APP}
-)
-apply_standard_settings(flutter_wrapper_app)
-target_link_libraries(flutter_wrapper_app PUBLIC flutter)
-target_include_directories(flutter_wrapper_app PUBLIC
- "${WRAPPER_ROOT}/include"
-)
-add_dependencies(flutter_wrapper_app flutter_assemble)
-
-# === Flutter tool backend ===
-# _phony_ is a non-existent file to force this command to run every time,
-# since currently there's no way to get a full input/output list from the
-# flutter tool.
-set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_")
-set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE)
-add_custom_command(
- OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS}
- ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN}
- ${CPP_WRAPPER_SOURCES_APP}
- ${PHONY_OUTPUT}
- COMMAND ${CMAKE_COMMAND} -E env
- ${FLUTTER_TOOL_ENVIRONMENT}
- "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat"
- windows-x64 $
- VERBATIM
-)
-add_custom_target(flutter_assemble DEPENDS
- "${FLUTTER_LIBRARY}"
- ${FLUTTER_LIBRARY_HEADERS}
- ${CPP_WRAPPER_SOURCES_CORE}
- ${CPP_WRAPPER_SOURCES_PLUGIN}
- ${CPP_WRAPPER_SOURCES_APP}
-)
diff --git a/app/watt_wizard/windows/flutter/generated_plugin_registrant.cc b/app/watt_wizard/windows/flutter/generated_plugin_registrant.cc
deleted file mode 100644
index d141b74..0000000
--- a/app/watt_wizard/windows/flutter/generated_plugin_registrant.cc
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-// Generated file. Do not edit.
-//
-
-// clang-format off
-
-#include "generated_plugin_registrant.h"
-
-#include
-#include
-
-void RegisterPlugins(flutter::PluginRegistry* registry) {
- FirebaseAuthPluginCApiRegisterWithRegistrar(
- registry->GetRegistrarForPlugin("FirebaseAuthPluginCApi"));
- FirebaseCorePluginCApiRegisterWithRegistrar(
- registry->GetRegistrarForPlugin("FirebaseCorePluginCApi"));
-}
diff --git a/app/watt_wizard/windows/flutter/generated_plugin_registrant.h b/app/watt_wizard/windows/flutter/generated_plugin_registrant.h
deleted file mode 100644
index dc139d8..0000000
--- a/app/watt_wizard/windows/flutter/generated_plugin_registrant.h
+++ /dev/null
@@ -1,15 +0,0 @@
-//
-// Generated file. Do not edit.
-//
-
-// clang-format off
-
-#ifndef GENERATED_PLUGIN_REGISTRANT_
-#define GENERATED_PLUGIN_REGISTRANT_
-
-#include
-
-// Registers Flutter plugins.
-void RegisterPlugins(flutter::PluginRegistry* registry);
-
-#endif // GENERATED_PLUGIN_REGISTRANT_
diff --git a/app/watt_wizard/windows/flutter/generated_plugins.cmake b/app/watt_wizard/windows/flutter/generated_plugins.cmake
deleted file mode 100644
index 29944d5..0000000
--- a/app/watt_wizard/windows/flutter/generated_plugins.cmake
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Generated file, do not edit.
-#
-
-list(APPEND FLUTTER_PLUGIN_LIST
- firebase_auth
- firebase_core
-)
-
-list(APPEND FLUTTER_FFI_PLUGIN_LIST
-)
-
-set(PLUGIN_BUNDLED_LIBRARIES)
-
-foreach(plugin ${FLUTTER_PLUGIN_LIST})
- add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin})
- target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
- list(APPEND PLUGIN_BUNDLED_LIBRARIES $)
- list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
-endforeach(plugin)
-
-foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
- add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin})
- list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
-endforeach(ffi_plugin)
diff --git a/app/watt_wizard/windows/runner/CMakeLists.txt b/app/watt_wizard/windows/runner/CMakeLists.txt
deleted file mode 100644
index 394917c..0000000
--- a/app/watt_wizard/windows/runner/CMakeLists.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-cmake_minimum_required(VERSION 3.14)
-project(runner LANGUAGES CXX)
-
-# Define the application target. To change its name, change BINARY_NAME in the
-# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer
-# work.
-#
-# Any new source files that you add to the application should be added here.
-add_executable(${BINARY_NAME} WIN32
- "flutter_window.cpp"
- "main.cpp"
- "utils.cpp"
- "win32_window.cpp"
- "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
- "Runner.rc"
- "runner.exe.manifest"
-)
-
-# Apply the standard set of build settings. This can be removed for applications
-# that need different build settings.
-apply_standard_settings(${BINARY_NAME})
-
-# Add preprocessor definitions for the build version.
-target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"")
-target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}")
-target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}")
-target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}")
-target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}")
-
-# Disable Windows macros that collide with C++ standard library functions.
-target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX")
-
-# Add dependency libraries and include directories. Add any application-specific
-# dependencies here.
-target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app)
-target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib")
-target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}")
-
-# Run the Flutter tool portions of the build. This must not be removed.
-add_dependencies(${BINARY_NAME} flutter_assemble)
diff --git a/app/watt_wizard/windows/runner/Runner.rc b/app/watt_wizard/windows/runner/Runner.rc
deleted file mode 100644
index 274ffd3..0000000
--- a/app/watt_wizard/windows/runner/Runner.rc
+++ /dev/null
@@ -1,121 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#pragma code_page(65001)
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include "winres.h"
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// English (United States) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE
-BEGIN
- "resource.h\0"
-END
-
-2 TEXTINCLUDE
-BEGIN
- "#include ""winres.h""\r\n"
- "\0"
-END
-
-3 TEXTINCLUDE
-BEGIN
- "\r\n"
- "\0"
-END
-
-#endif // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Icon
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-IDI_APP_ICON ICON "resources\\app_icon.ico"
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD)
-#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD
-#else
-#define VERSION_AS_NUMBER 1,0,0,0
-#endif
-
-#if defined(FLUTTER_VERSION)
-#define VERSION_AS_STRING FLUTTER_VERSION
-#else
-#define VERSION_AS_STRING "1.0.0"
-#endif
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION VERSION_AS_NUMBER
- PRODUCTVERSION VERSION_AS_NUMBER
- FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
-#ifdef _DEBUG
- FILEFLAGS VS_FF_DEBUG
-#else
- FILEFLAGS 0x0L
-#endif
- FILEOS VOS__WINDOWS32
- FILETYPE VFT_APP
- FILESUBTYPE 0x0L
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "040904e4"
- BEGIN
- VALUE "CompanyName", "com.example" "\0"
- VALUE "FileDescription", "watt_wizard" "\0"
- VALUE "FileVersion", VERSION_AS_STRING "\0"
- VALUE "InternalName", "watt_wizard" "\0"
- VALUE "LegalCopyright", "Copyright (C) 2023 com.example. All rights reserved." "\0"
- VALUE "OriginalFilename", "watt_wizard.exe" "\0"
- VALUE "ProductName", "watt_wizard" "\0"
- VALUE "ProductVersion", VERSION_AS_STRING "\0"
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x409, 1252
- END
-END
-
-#endif // English (United States) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
diff --git a/app/watt_wizard/windows/runner/flutter_window.cpp b/app/watt_wizard/windows/runner/flutter_window.cpp
deleted file mode 100644
index 955ee30..0000000
--- a/app/watt_wizard/windows/runner/flutter_window.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-#include "flutter_window.h"
-
-#include
-
-#include "flutter/generated_plugin_registrant.h"
-
-FlutterWindow::FlutterWindow(const flutter::DartProject& project)
- : project_(project) {}
-
-FlutterWindow::~FlutterWindow() {}
-
-bool FlutterWindow::OnCreate() {
- if (!Win32Window::OnCreate()) {
- return false;
- }
-
- RECT frame = GetClientArea();
-
- // The size here must match the window dimensions to avoid unnecessary surface
- // creation / destruction in the startup path.
- flutter_controller_ = std::make_unique(
- frame.right - frame.left, frame.bottom - frame.top, project_);
- // Ensure that basic setup of the controller was successful.
- if (!flutter_controller_->engine() || !flutter_controller_->view()) {
- return false;
- }
- RegisterPlugins(flutter_controller_->engine());
- SetChildContent(flutter_controller_->view()->GetNativeWindow());
-
- flutter_controller_->engine()->SetNextFrameCallback([&]() {
- this->Show();
- });
-
- // Flutter can complete the first frame before the "show window" callback is
- // registered. The following call ensures a frame is pending to ensure the
- // window is shown. It is a no-op if the first frame hasn't completed yet.
- flutter_controller_->ForceRedraw();
-
- return true;
-}
-
-void FlutterWindow::OnDestroy() {
- if (flutter_controller_) {
- flutter_controller_ = nullptr;
- }
-
- Win32Window::OnDestroy();
-}
-
-LRESULT
-FlutterWindow::MessageHandler(HWND hwnd, UINT const message,
- WPARAM const wparam,
- LPARAM const lparam) noexcept {
- // Give Flutter, including plugins, an opportunity to handle window messages.
- if (flutter_controller_) {
- std::optional result =
- flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam,
- lparam);
- if (result) {
- return *result;
- }
- }
-
- switch (message) {
- case WM_FONTCHANGE:
- flutter_controller_->engine()->ReloadSystemFonts();
- break;
- }
-
- return Win32Window::MessageHandler(hwnd, message, wparam, lparam);
-}
diff --git a/app/watt_wizard/windows/runner/flutter_window.h b/app/watt_wizard/windows/runner/flutter_window.h
deleted file mode 100644
index 6da0652..0000000
--- a/app/watt_wizard/windows/runner/flutter_window.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef RUNNER_FLUTTER_WINDOW_H_
-#define RUNNER_FLUTTER_WINDOW_H_
-
-#include
-#include
-
-#include
-
-#include "win32_window.h"
-
-// A window that does nothing but host a Flutter view.
-class FlutterWindow : public Win32Window {
- public:
- // Creates a new FlutterWindow hosting a Flutter view running |project|.
- explicit FlutterWindow(const flutter::DartProject& project);
- virtual ~FlutterWindow();
-
- protected:
- // Win32Window:
- bool OnCreate() override;
- void OnDestroy() override;
- LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam,
- LPARAM const lparam) noexcept override;
-
- private:
- // The project to run.
- flutter::DartProject project_;
-
- // The Flutter instance hosted by this window.
- std::unique_ptr flutter_controller_;
-};
-
-#endif // RUNNER_FLUTTER_WINDOW_H_
diff --git a/app/watt_wizard/windows/runner/main.cpp b/app/watt_wizard/windows/runner/main.cpp
deleted file mode 100644
index 076ee6a..0000000
--- a/app/watt_wizard/windows/runner/main.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-#include
-#include
-#include
-
-#include "flutter_window.h"
-#include "utils.h"
-
-int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
- _In_ wchar_t *command_line, _In_ int show_command) {
- // Attach to console when present (e.g., 'flutter run') or create a
- // new console when running with a debugger.
- if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) {
- CreateAndAttachConsole();
- }
-
- // Initialize COM, so that it is available for use in the library and/or
- // plugins.
- ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
-
- flutter::DartProject project(L"data");
-
- std::vector command_line_arguments =
- GetCommandLineArguments();
-
- project.set_dart_entrypoint_arguments(std::move(command_line_arguments));
-
- FlutterWindow window(project);
- Win32Window::Point origin(10, 10);
- Win32Window::Size size(1280, 720);
- if (!window.Create(L"watt_wizard", origin, size)) {
- return EXIT_FAILURE;
- }
- window.SetQuitOnClose(true);
-
- ::MSG msg;
- while (::GetMessage(&msg, nullptr, 0, 0)) {
- ::TranslateMessage(&msg);
- ::DispatchMessage(&msg);
- }
-
- ::CoUninitialize();
- return EXIT_SUCCESS;
-}
diff --git a/app/watt_wizard/windows/runner/resource.h b/app/watt_wizard/windows/runner/resource.h
deleted file mode 100644
index 66a65d1..0000000
--- a/app/watt_wizard/windows/runner/resource.h
+++ /dev/null
@@ -1,16 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by Runner.rc
-//
-#define IDI_APP_ICON 101
-
-// Next default values for new objects
-//
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 102
-#define _APS_NEXT_COMMAND_VALUE 40001
-#define _APS_NEXT_CONTROL_VALUE 1001
-#define _APS_NEXT_SYMED_VALUE 101
-#endif
-#endif
diff --git a/app/watt_wizard/windows/runner/resources/app_icon.ico b/app/watt_wizard/windows/runner/resources/app_icon.ico
deleted file mode 100644
index c04e20c..0000000
Binary files a/app/watt_wizard/windows/runner/resources/app_icon.ico and /dev/null differ
diff --git a/app/watt_wizard/windows/runner/runner.exe.manifest b/app/watt_wizard/windows/runner/runner.exe.manifest
deleted file mode 100644
index a42ea76..0000000
--- a/app/watt_wizard/windows/runner/runner.exe.manifest
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- PerMonitorV2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/watt_wizard/windows/runner/utils.cpp b/app/watt_wizard/windows/runner/utils.cpp
deleted file mode 100644
index b2b0873..0000000
--- a/app/watt_wizard/windows/runner/utils.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-#include "utils.h"
-
-#include
-#include
-#include
-#include
-
-#include
-
-void CreateAndAttachConsole() {
- if (::AllocConsole()) {
- FILE *unused;
- if (freopen_s(&unused, "CONOUT$", "w", stdout)) {
- _dup2(_fileno(stdout), 1);
- }
- if (freopen_s(&unused, "CONOUT$", "w", stderr)) {
- _dup2(_fileno(stdout), 2);
- }
- std::ios::sync_with_stdio();
- FlutterDesktopResyncOutputStreams();
- }
-}
-
-std::vector GetCommandLineArguments() {
- // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use.
- int argc;
- wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc);
- if (argv == nullptr) {
- return std::vector();
- }
-
- std::vector command_line_arguments;
-
- // Skip the first argument as it's the binary name.
- for (int i = 1; i < argc; i++) {
- command_line_arguments.push_back(Utf8FromUtf16(argv[i]));
- }
-
- ::LocalFree(argv);
-
- return command_line_arguments;
-}
-
-std::string Utf8FromUtf16(const wchar_t* utf16_string) {
- if (utf16_string == nullptr) {
- return std::string();
- }
- int target_length = ::WideCharToMultiByte(
- CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string,
- -1, nullptr, 0, nullptr, nullptr)
- -1; // remove the trailing null character
- int input_length = (int)wcslen(utf16_string);
- std::string utf8_string;
- if (target_length <= 0 || target_length > utf8_string.max_size()) {
- return utf8_string;
- }
- utf8_string.resize(target_length);
- int converted_length = ::WideCharToMultiByte(
- CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string,
- input_length, utf8_string.data(), target_length, nullptr, nullptr);
- if (converted_length == 0) {
- return std::string();
- }
- return utf8_string;
-}
diff --git a/app/watt_wizard/windows/runner/utils.h b/app/watt_wizard/windows/runner/utils.h
deleted file mode 100644
index 3879d54..0000000
--- a/app/watt_wizard/windows/runner/utils.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef RUNNER_UTILS_H_
-#define RUNNER_UTILS_H_
-
-#include
-#include
-
-// Creates a console for the process, and redirects stdout and stderr to
-// it for both the runner and the Flutter library.
-void CreateAndAttachConsole();
-
-// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string
-// encoded in UTF-8. Returns an empty std::string on failure.
-std::string Utf8FromUtf16(const wchar_t* utf16_string);
-
-// Gets the command line arguments passed in as a std::vector,
-// encoded in UTF-8. Returns an empty std::vector on failure.
-std::vector GetCommandLineArguments();
-
-#endif // RUNNER_UTILS_H_
diff --git a/app/watt_wizard/windows/runner/win32_window.cpp b/app/watt_wizard/windows/runner/win32_window.cpp
deleted file mode 100644
index 60608d0..0000000
--- a/app/watt_wizard/windows/runner/win32_window.cpp
+++ /dev/null
@@ -1,288 +0,0 @@
-#include "win32_window.h"
-
-#include
-#include
-
-#include "resource.h"
-
-namespace {
-
-/// Window attribute that enables dark mode window decorations.
-///
-/// Redefined in case the developer's machine has a Windows SDK older than
-/// version 10.0.22000.0.
-/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute
-#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE
-#define DWMWA_USE_IMMERSIVE_DARK_MODE 20
-#endif
-
-constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW";
-
-/// Registry key for app theme preference.
-///
-/// A value of 0 indicates apps should use dark mode. A non-zero or missing
-/// value indicates apps should use light mode.
-constexpr const wchar_t kGetPreferredBrightnessRegKey[] =
- L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize";
-constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme";
-
-// The number of Win32Window objects that currently exist.
-static int g_active_window_count = 0;
-
-using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd);
-
-// Scale helper to convert logical scaler values to physical using passed in
-// scale factor
-int Scale(int source, double scale_factor) {
- return static_cast(source * scale_factor);
-}
-
-// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module.
-// This API is only needed for PerMonitor V1 awareness mode.
-void EnableFullDpiSupportIfAvailable(HWND hwnd) {
- HMODULE user32_module = LoadLibraryA("User32.dll");
- if (!user32_module) {
- return;
- }
- auto enable_non_client_dpi_scaling =
- reinterpret_cast(
- GetProcAddress(user32_module, "EnableNonClientDpiScaling"));
- if (enable_non_client_dpi_scaling != nullptr) {
- enable_non_client_dpi_scaling(hwnd);
- }
- FreeLibrary(user32_module);
-}
-
-} // namespace
-
-// Manages the Win32Window's window class registration.
-class WindowClassRegistrar {
- public:
- ~WindowClassRegistrar() = default;
-
- // Returns the singleton registrar instance.
- static WindowClassRegistrar* GetInstance() {
- if (!instance_) {
- instance_ = new WindowClassRegistrar();
- }
- return instance_;
- }
-
- // Returns the name of the window class, registering the class if it hasn't
- // previously been registered.
- const wchar_t* GetWindowClass();
-
- // Unregisters the window class. Should only be called if there are no
- // instances of the window.
- void UnregisterWindowClass();
-
- private:
- WindowClassRegistrar() = default;
-
- static WindowClassRegistrar* instance_;
-
- bool class_registered_ = false;
-};
-
-WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr;
-
-const wchar_t* WindowClassRegistrar::GetWindowClass() {
- if (!class_registered_) {
- WNDCLASS window_class{};
- window_class.hCursor = LoadCursor(nullptr, IDC_ARROW);
- window_class.lpszClassName = kWindowClassName;
- window_class.style = CS_HREDRAW | CS_VREDRAW;
- window_class.cbClsExtra = 0;
- window_class.cbWndExtra = 0;
- window_class.hInstance = GetModuleHandle(nullptr);
- window_class.hIcon =
- LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON));
- window_class.hbrBackground = 0;
- window_class.lpszMenuName = nullptr;
- window_class.lpfnWndProc = Win32Window::WndProc;
- RegisterClass(&window_class);
- class_registered_ = true;
- }
- return kWindowClassName;
-}
-
-void WindowClassRegistrar::UnregisterWindowClass() {
- UnregisterClass(kWindowClassName, nullptr);
- class_registered_ = false;
-}
-
-Win32Window::Win32Window() {
- ++g_active_window_count;
-}
-
-Win32Window::~Win32Window() {
- --g_active_window_count;
- Destroy();
-}
-
-bool Win32Window::Create(const std::wstring& title,
- const Point& origin,
- const Size& size) {
- Destroy();
-
- const wchar_t* window_class =
- WindowClassRegistrar::GetInstance()->GetWindowClass();
-
- const POINT target_point = {static_cast(origin.x),
- static_cast(origin.y)};
- HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST);
- UINT dpi = FlutterDesktopGetDpiForMonitor(monitor);
- double scale_factor = dpi / 96.0;
-
- HWND window = CreateWindow(
- window_class, title.c_str(), WS_OVERLAPPEDWINDOW,
- Scale(origin.x, scale_factor), Scale(origin.y, scale_factor),
- Scale(size.width, scale_factor), Scale(size.height, scale_factor),
- nullptr, nullptr, GetModuleHandle(nullptr), this);
-
- if (!window) {
- return false;
- }
-
- UpdateTheme(window);
-
- return OnCreate();
-}
-
-bool Win32Window::Show() {
- return ShowWindow(window_handle_, SW_SHOWNORMAL);
-}
-
-// static
-LRESULT CALLBACK Win32Window::WndProc(HWND const window,
- UINT const message,
- WPARAM const wparam,
- LPARAM const lparam) noexcept {
- if (message == WM_NCCREATE) {
- auto window_struct = reinterpret_cast(lparam);
- SetWindowLongPtr(window, GWLP_USERDATA,
- reinterpret_cast(window_struct->lpCreateParams));
-
- auto that = static_cast(window_struct->lpCreateParams);
- EnableFullDpiSupportIfAvailable(window);
- that->window_handle_ = window;
- } else if (Win32Window* that = GetThisFromHandle(window)) {
- return that->MessageHandler(window, message, wparam, lparam);
- }
-
- return DefWindowProc(window, message, wparam, lparam);
-}
-
-LRESULT
-Win32Window::MessageHandler(HWND hwnd,
- UINT const message,
- WPARAM const wparam,
- LPARAM const lparam) noexcept {
- switch (message) {
- case WM_DESTROY:
- window_handle_ = nullptr;
- Destroy();
- if (quit_on_close_) {
- PostQuitMessage(0);
- }
- return 0;
-
- case WM_DPICHANGED: {
- auto newRectSize = reinterpret_cast(lparam);
- LONG newWidth = newRectSize->right - newRectSize->left;
- LONG newHeight = newRectSize->bottom - newRectSize->top;
-
- SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth,
- newHeight, SWP_NOZORDER | SWP_NOACTIVATE);
-
- return 0;
- }
- case WM_SIZE: {
- RECT rect = GetClientArea();
- if (child_content_ != nullptr) {
- // Size and position the child window.
- MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left,
- rect.bottom - rect.top, TRUE);
- }
- return 0;
- }
-
- case WM_ACTIVATE:
- if (child_content_ != nullptr) {
- SetFocus(child_content_);
- }
- return 0;
-
- case WM_DWMCOLORIZATIONCOLORCHANGED:
- UpdateTheme(hwnd);
- return 0;
- }
-
- return DefWindowProc(window_handle_, message, wparam, lparam);
-}
-
-void Win32Window::Destroy() {
- OnDestroy();
-
- if (window_handle_) {
- DestroyWindow(window_handle_);
- window_handle_ = nullptr;
- }
- if (g_active_window_count == 0) {
- WindowClassRegistrar::GetInstance()->UnregisterWindowClass();
- }
-}
-
-Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept {
- return reinterpret_cast(
- GetWindowLongPtr(window, GWLP_USERDATA));
-}
-
-void Win32Window::SetChildContent(HWND content) {
- child_content_ = content;
- SetParent(content, window_handle_);
- RECT frame = GetClientArea();
-
- MoveWindow(content, frame.left, frame.top, frame.right - frame.left,
- frame.bottom - frame.top, true);
-
- SetFocus(child_content_);
-}
-
-RECT Win32Window::GetClientArea() {
- RECT frame;
- GetClientRect(window_handle_, &frame);
- return frame;
-}
-
-HWND Win32Window::GetHandle() {
- return window_handle_;
-}
-
-void Win32Window::SetQuitOnClose(bool quit_on_close) {
- quit_on_close_ = quit_on_close;
-}
-
-bool Win32Window::OnCreate() {
- // No-op; provided for subclasses.
- return true;
-}
-
-void Win32Window::OnDestroy() {
- // No-op; provided for subclasses.
-}
-
-void Win32Window::UpdateTheme(HWND const window) {
- DWORD light_mode;
- DWORD light_mode_size = sizeof(light_mode);
- LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey,
- kGetPreferredBrightnessRegValue,
- RRF_RT_REG_DWORD, nullptr, &light_mode,
- &light_mode_size);
-
- if (result == ERROR_SUCCESS) {
- BOOL enable_dark_mode = light_mode == 0;
- DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE,
- &enable_dark_mode, sizeof(enable_dark_mode));
- }
-}
diff --git a/app/watt_wizard/windows/runner/win32_window.h b/app/watt_wizard/windows/runner/win32_window.h
deleted file mode 100644
index e901dde..0000000
--- a/app/watt_wizard/windows/runner/win32_window.h
+++ /dev/null
@@ -1,102 +0,0 @@
-#ifndef RUNNER_WIN32_WINDOW_H_
-#define RUNNER_WIN32_WINDOW_H_
-
-#include
-
-#include
-#include
-#include
-
-// A class abstraction for a high DPI-aware Win32 Window. Intended to be
-// inherited from by classes that wish to specialize with custom
-// rendering and input handling
-class Win32Window {
- public:
- struct Point {
- unsigned int x;
- unsigned int y;
- Point(unsigned int x, unsigned int y) : x(x), y(y) {}
- };
-
- struct Size {
- unsigned int width;
- unsigned int height;
- Size(unsigned int width, unsigned int height)
- : width(width), height(height) {}
- };
-
- Win32Window();
- virtual ~Win32Window();
-
- // Creates a win32 window with |title| that is positioned and sized using
- // |origin| and |size|. New windows are created on the default monitor. Window
- // sizes are specified to the OS in physical pixels, hence to ensure a
- // consistent size this function will scale the inputted width and height as
- // as appropriate for the default monitor. The window is invisible until
- // |Show| is called. Returns true if the window was created successfully.
- bool Create(const std::wstring& title, const Point& origin, const Size& size);
-
- // Show the current window. Returns true if the window was successfully shown.
- bool Show();
-
- // Release OS resources associated with window.
- void Destroy();
-
- // Inserts |content| into the window tree.
- void SetChildContent(HWND content);
-
- // Returns the backing Window handle to enable clients to set icon and other
- // window properties. Returns nullptr if the window has been destroyed.
- HWND GetHandle();
-
- // If true, closing this window will quit the application.
- void SetQuitOnClose(bool quit_on_close);
-
- // Return a RECT representing the bounds of the current client area.
- RECT GetClientArea();
-
- protected:
- // Processes and route salient window messages for mouse handling,
- // size change and DPI. Delegates handling of these to member overloads that
- // inheriting classes can handle.
- virtual LRESULT MessageHandler(HWND window,
- UINT const message,
- WPARAM const wparam,
- LPARAM const lparam) noexcept;
-
- // Called when CreateAndShow is called, allowing subclass window-related
- // setup. Subclasses should return false if setup fails.
- virtual bool OnCreate();
-
- // Called when Destroy is called.
- virtual void OnDestroy();
-
- private:
- friend class WindowClassRegistrar;
-
- // OS callback called by message pump. Handles the WM_NCCREATE message which
- // is passed when the non-client area is being created and enables automatic
- // non-client DPI scaling so that the non-client area automatically
- // responds to changes in DPI. All other messages are handled by
- // MessageHandler.
- static LRESULT CALLBACK WndProc(HWND const window,
- UINT const message,
- WPARAM const wparam,
- LPARAM const lparam) noexcept;
-
- // Retrieves a class instance pointer for |window|
- static Win32Window* GetThisFromHandle(HWND const window) noexcept;
-
- // Update the window frame's theme to match the system theme.
- static void UpdateTheme(HWND const window);
-
- bool quit_on_close_ = false;
-
- // window handle for top level window.
- HWND window_handle_ = nullptr;
-
- // window handle for hosted content.
- HWND child_content_ = nullptr;
-};
-
-#endif // RUNNER_WIN32_WINDOW_H_
diff --git a/assets/index-25242b4c.css b/assets/index-25242b4c.css
new file mode 100644
index 0000000..e02a37f
--- /dev/null
+++ b/assets/index-25242b4c.css
@@ -0,0 +1 @@
+@keyframes blink{0%,to{color:transparent}50%{color:#000}}.cursor{font-weight:100;color:#fff;-webkit-animation-name:blink;-webkit-animation-duration:5s;-webkit-animation-iteration-count:infinite;-moz-animation-name:blink;-moz-animation-duration:5s;-moz-animation-iteration-count:infinite;animation-name:blink;animation-duration:5s;animation-iteration-count:infinite;animation-play-state:running}.type{color:#fff;font-size:50px;font-weight:100}.button-style{color:#fff}.subtitle{transition:all .5s ease-in-out}html,body{margin:0;padding:0}
diff --git a/assets/index-9b8004fc.js b/assets/index-9b8004fc.js
new file mode 100644
index 0000000..9a66631
--- /dev/null
+++ b/assets/index-9b8004fc.js
@@ -0,0 +1,3084 @@
+function m2(t,e){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();var g2=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function sf(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function y2(t){if(t.__esModule)return t;var e=t.default;if(typeof e=="function"){var n=function r(){return this instanceof r?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(t).forEach(function(r){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})}),n}var cT={exports:{}},of={},hT={exports:{}},me={};/**
+ * @license React
+ * react.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */var Wu=Symbol.for("react.element"),v2=Symbol.for("react.portal"),_2=Symbol.for("react.fragment"),w2=Symbol.for("react.strict_mode"),x2=Symbol.for("react.profiler"),b2=Symbol.for("react.provider"),E2=Symbol.for("react.context"),T2=Symbol.for("react.forward_ref"),S2=Symbol.for("react.suspense"),k2=Symbol.for("react.memo"),C2=Symbol.for("react.lazy"),bw=Symbol.iterator;function I2(t){return t===null||typeof t!="object"?null:(t=bw&&t[bw]||t["@@iterator"],typeof t=="function"?t:null)}var dT={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},fT=Object.assign,pT={};function ja(t,e,n){this.props=t,this.context=e,this.refs=pT,this.updater=n||dT}ja.prototype.isReactComponent={};ja.prototype.setState=function(t,e){if(typeof t!="object"&&typeof t!="function"&&t!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,t,e,"setState")};ja.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,"forceUpdate")};function mT(){}mT.prototype=ja.prototype;function uv(t,e,n){this.props=t,this.context=e,this.refs=pT,this.updater=n||dT}var cv=uv.prototype=new mT;cv.constructor=uv;fT(cv,ja.prototype);cv.isPureReactComponent=!0;var Ew=Array.isArray,gT=Object.prototype.hasOwnProperty,hv={current:null},yT={key:!0,ref:!0,__self:!0,__source:!0};function vT(t,e,n){var r,i={},s=null,o=null;if(e!=null)for(r in e.ref!==void 0&&(o=e.ref),e.key!==void 0&&(s=""+e.key),e)gT.call(e,r)&&!yT.hasOwnProperty(r)&&(i[r]=e[r]);var a=arguments.length-2;if(a===1)i.children=n;else if(1>>1,q=O[Q];if(0>>1;Qi(ve,L))Wi(re,ve)?(O[Q]=re,O[W]=L,Q=W):(O[Q]=ve,O[R]=L,Q=R);else if(Wi(re,L))O[Q]=re,O[W]=L,Q=W;else break e}}return N}function i(O,N){var L=O.sortIndex-N.sortIndex;return L!==0?L:O.id-N.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;t.unstable_now=function(){return s.now()}}else{var o=Date,a=o.now();t.unstable_now=function(){return o.now()-a}}var l=[],u=[],c=1,h=null,d=3,f=!1,p=!1,m=!1,w=typeof setTimeout=="function"?setTimeout:null,g=typeof clearTimeout=="function"?clearTimeout:null,y=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function v(O){for(var N=n(u);N!==null;){if(N.callback===null)r(u);else if(N.startTime<=O)r(u),N.sortIndex=N.expirationTime,e(l,N);else break;N=n(u)}}function _(O){if(m=!1,v(O),!p)if(n(l)!==null)p=!0,F(x);else{var N=n(u);N!==null&&K(_,N.startTime-O)}}function x(O,N){p=!1,m&&(m=!1,g(C),C=-1),f=!0;var L=d;try{for(v(N),h=n(l);h!==null&&(!(h.expirationTime>N)||O&&!P());){var Q=h.callback;if(typeof Q=="function"){h.callback=null,d=h.priorityLevel;var q=Q(h.expirationTime<=N);N=t.unstable_now(),typeof q=="function"?h.callback=q:h===n(l)&&r(l),v(N)}else r(l);h=n(l)}if(h!==null)var Se=!0;else{var R=n(u);R!==null&&K(_,R.startTime-N),Se=!1}return Se}finally{h=null,d=L,f=!1}}var b=!1,E=null,C=-1,A=5,S=-1;function P(){return!(t.unstable_now()-SO||125Q?(O.sortIndex=L,e(u,O),n(l)===null&&O===n(u)&&(m?(g(C),C=-1):m=!0,K(_,L-Q))):(O.sortIndex=q,e(l,O),p||f||(p=!0,F(x))),O},t.unstable_shouldYield=P,t.unstable_wrapCallback=function(O){var N=d;return function(){var L=d;d=N;try{return O.apply(this,arguments)}finally{d=L}}}})(bT);xT.exports=bT;var V2=xT.exports;/**
+ * @license React
+ * react-dom.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */var ET=T,kn=V2;function H(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),dg=Object.prototype.hasOwnProperty,z2=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Sw={},kw={};function U2(t){return dg.call(kw,t)?!0:dg.call(Sw,t)?!1:z2.test(t)?kw[t]=!0:(Sw[t]=!0,!1)}function j2(t,e,n,r){if(n!==null&&n.type===0)return!1;switch(typeof e){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(t=t.toLowerCase().slice(0,5),t!=="data-"&&t!=="aria-");default:return!1}}function B2(t,e,n,r){if(e===null||typeof e>"u"||j2(t,e,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!e;case 4:return e===!1;case 5:return isNaN(e);case 6:return isNaN(e)||1>e}return!1}function en(t,e,n,r,i,s,o){this.acceptsBooleans=e===2||e===3||e===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=t,this.type=e,this.sanitizeURL=s,this.removeEmptyString=o}var Mt={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(t){Mt[t]=new en(t,0,!1,t,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(t){var e=t[0];Mt[e]=new en(e,1,!1,t[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(t){Mt[t]=new en(t,2,!1,t.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(t){Mt[t]=new en(t,2,!1,t,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(t){Mt[t]=new en(t,3,!1,t.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(t){Mt[t]=new en(t,3,!0,t,null,!1,!1)});["capture","download"].forEach(function(t){Mt[t]=new en(t,4,!1,t,null,!1,!1)});["cols","rows","size","span"].forEach(function(t){Mt[t]=new en(t,6,!1,t,null,!1,!1)});["rowSpan","start"].forEach(function(t){Mt[t]=new en(t,5,!1,t.toLowerCase(),null,!1,!1)});var fv=/[\-:]([a-z])/g;function pv(t){return t[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(t){var e=t.replace(fv,pv);Mt[e]=new en(e,1,!1,t,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(t){var e=t.replace(fv,pv);Mt[e]=new en(e,1,!1,t,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(t){var e=t.replace(fv,pv);Mt[e]=new en(e,1,!1,t,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(t){Mt[t]=new en(t,1,!1,t.toLowerCase(),null,!1,!1)});Mt.xlinkHref=new en("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(t){Mt[t]=new en(t,1,!1,t.toLowerCase(),null,!0,!0)});function mv(t,e,n,r){var i=Mt.hasOwnProperty(e)?Mt[e]:null;(i!==null?i.type!==0:r||!(2a||i[o]!==s[a]){var l=`
+`+i[o].replace(" at new "," at ");return t.displayName&&l.includes("")&&(l=l.replace("",t.displayName)),l}while(1<=o&&0<=a);break}}}finally{jp=!1,Error.prepareStackTrace=n}return(t=t?t.displayName||t.name:"")?_l(t):""}function H2(t){switch(t.tag){case 5:return _l(t.type);case 16:return _l("Lazy");case 13:return _l("Suspense");case 19:return _l("SuspenseList");case 0:case 2:case 15:return t=Bp(t.type,!1),t;case 11:return t=Bp(t.type.render,!1),t;case 1:return t=Bp(t.type,!0),t;default:return""}}function gg(t){if(t==null)return null;if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case Do:return"Fragment";case Oo:return"Portal";case fg:return"Profiler";case gv:return"StrictMode";case pg:return"Suspense";case mg:return"SuspenseList"}if(typeof t=="object")switch(t.$$typeof){case kT:return(t.displayName||"Context")+".Consumer";case ST:return(t._context.displayName||"Context")+".Provider";case yv:var e=t.render;return t=t.displayName,t||(t=e.displayName||e.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case vv:return e=t.displayName||null,e!==null?e:gg(t.type)||"Memo";case Mi:e=t._payload,t=t._init;try{return gg(t(e))}catch{}}return null}function W2(t){var e=t.type;switch(t.tag){case 24:return"Cache";case 9:return(e.displayName||"Context")+".Consumer";case 10:return(e._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return t=e.render,t=t.displayName||t.name||"",e.displayName||(t!==""?"ForwardRef("+t+")":"ForwardRef");case 7:return"Fragment";case 5:return e;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return gg(e);case 8:return e===gv?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e}return null}function rs(t){switch(typeof t){case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function IT(t){var e=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function q2(t){var e=IT(t)?"checked":"value",n=Object.getOwnPropertyDescriptor(t.constructor.prototype,e),r=""+t[e];if(!t.hasOwnProperty(e)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,s=n.set;return Object.defineProperty(t,e,{configurable:!0,get:function(){return i.call(this)},set:function(o){r=""+o,s.call(this,o)}}),Object.defineProperty(t,e,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(o){r=""+o},stopTracking:function(){t._valueTracker=null,delete t[e]}}}}function Pc(t){t._valueTracker||(t._valueTracker=q2(t))}function PT(t){if(!t)return!1;var e=t._valueTracker;if(!e)return!0;var n=e.getValue(),r="";return t&&(r=IT(t)?t.checked?"true":"false":t.value),t=r,t!==n?(e.setValue(t),!0):!1}function zh(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}function yg(t,e){var n=e.checked;return Ke({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??t._wrapperState.initialChecked})}function Iw(t,e){var n=e.defaultValue==null?"":e.defaultValue,r=e.checked!=null?e.checked:e.defaultChecked;n=rs(e.value!=null?e.value:n),t._wrapperState={initialChecked:r,initialValue:n,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function AT(t,e){e=e.checked,e!=null&&mv(t,"checked",e,!1)}function vg(t,e){AT(t,e);var n=rs(e.value),r=e.type;if(n!=null)r==="number"?(n===0&&t.value===""||t.value!=n)&&(t.value=""+n):t.value!==""+n&&(t.value=""+n);else if(r==="submit"||r==="reset"){t.removeAttribute("value");return}e.hasOwnProperty("value")?_g(t,e.type,n):e.hasOwnProperty("defaultValue")&&_g(t,e.type,rs(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(t.defaultChecked=!!e.defaultChecked)}function Pw(t,e,n){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var r=e.type;if(!(r!=="submit"&&r!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+t._wrapperState.initialValue,n||e===t.value||(t.value=e),t.defaultValue=e}n=t.name,n!==""&&(t.name=""),t.defaultChecked=!!t._wrapperState.initialChecked,n!==""&&(t.name=n)}function _g(t,e,n){(e!=="number"||zh(t.ownerDocument)!==t)&&(n==null?t.defaultValue=""+t._wrapperState.initialValue:t.defaultValue!==""+n&&(t.defaultValue=""+n))}var wl=Array.isArray;function Qo(t,e,n,r){if(t=t.options,e){e={};for(var i=0;i"+e.valueOf().toString()+"",e=Ac.firstChild;t.firstChild;)t.removeChild(t.firstChild);for(;e.firstChild;)t.appendChild(e.firstChild)}});function Xl(t,e){if(e){var n=t.firstChild;if(n&&n===t.lastChild&&n.nodeType===3){n.nodeValue=e;return}}t.textContent=e}var Pl={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},G2=["Webkit","ms","Moz","O"];Object.keys(Pl).forEach(function(t){G2.forEach(function(e){e=e+t.charAt(0).toUpperCase()+t.substring(1),Pl[e]=Pl[t]})});function DT(t,e,n){return e==null||typeof e=="boolean"||e===""?"":n||typeof e!="number"||e===0||Pl.hasOwnProperty(t)&&Pl[t]?(""+e).trim():e+"px"}function NT(t,e){t=t.style;for(var n in e)if(e.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=DT(n,e[n],r);n==="float"&&(n="cssFloat"),r?t.setProperty(n,i):t[n]=i}}var K2=Ke({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function bg(t,e){if(e){if(K2[t]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(H(137,t));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(H(60));if(typeof e.dangerouslySetInnerHTML!="object"||!("__html"in e.dangerouslySetInnerHTML))throw Error(H(61))}if(e.style!=null&&typeof e.style!="object")throw Error(H(62))}}function Eg(t,e){if(t.indexOf("-")===-1)return typeof e.is=="string";switch(t){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Tg=null;function _v(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var Sg=null,Yo=null,Xo=null;function Mw(t){if(t=Ku(t)){if(typeof Sg!="function")throw Error(H(280));var e=t.stateNode;e&&(e=hf(e),Sg(t.stateNode,t.type,e))}}function $T(t){Yo?Xo?Xo.push(t):Xo=[t]:Yo=t}function LT(){if(Yo){var t=Yo,e=Xo;if(Xo=Yo=null,Mw(t),e)for(t=0;t>>=0,t===0?32:31-(sM(t)/oM|0)|0}var Rc=64,Mc=4194304;function xl(t){switch(t&-t){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: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 t&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return t&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return t}}function Hh(t,e){var n=t.pendingLanes;if(n===0)return 0;var r=0,i=t.suspendedLanes,s=t.pingedLanes,o=n&268435455;if(o!==0){var a=o&~i;a!==0?r=xl(a):(s&=o,s!==0&&(r=xl(s)))}else o=n&~i,o!==0?r=xl(o):s!==0&&(r=xl(s));if(r===0)return 0;if(e!==0&&e!==r&&!(e&i)&&(i=r&-r,s=e&-e,i>=s||i===16&&(s&4194240)!==0))return e;if(r&4&&(r|=n&16),e=t.entangledLanes,e!==0)for(t=t.entanglements,e&=r;0n;n++)e.push(t);return e}function qu(t,e,n){t.pendingLanes|=e,e!==536870912&&(t.suspendedLanes=0,t.pingedLanes=0),t=t.eventTimes,e=31-sr(e),t[e]=n}function cM(t,e){var n=t.pendingLanes&~e;t.pendingLanes=e,t.suspendedLanes=0,t.pingedLanes=0,t.expiredLanes&=e,t.mutableReadLanes&=e,t.entangledLanes&=e,e=t.entanglements;var r=t.eventTimes;for(t=t.expirationTimes;0=Rl),Uw=String.fromCharCode(32),jw=!1;function rS(t,e){switch(t){case"keyup":return FM.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function iS(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var No=!1;function zM(t,e){switch(t){case"compositionend":return iS(e);case"keypress":return e.which!==32?null:(jw=!0,Uw);case"textInput":return t=e.data,t===Uw&&jw?null:t;default:return null}}function UM(t,e){if(No)return t==="compositionend"||!Cv&&rS(t,e)?(t=tS(),fh=Tv=Vi=null,No=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:n,offset:e-t};t=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=qw(n)}}function lS(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?lS(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function uS(){for(var t=window,e=zh();e instanceof t.HTMLIFrameElement;){try{var n=typeof e.contentWindow.location.href=="string"}catch{n=!1}if(n)t=e.contentWindow;else break;e=zh(t.document)}return e}function Iv(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}function YM(t){var e=uS(),n=t.focusedElem,r=t.selectionRange;if(e!==n&&n&&n.ownerDocument&&lS(n.ownerDocument.documentElement,n)){if(r!==null&&Iv(n)){if(e=r.start,t=r.end,t===void 0&&(t=e),"selectionStart"in n)n.selectionStart=e,n.selectionEnd=Math.min(t,n.value.length);else if(t=(e=n.ownerDocument||document)&&e.defaultView||window,t.getSelection){t=t.getSelection();var i=n.textContent.length,s=Math.min(r.start,i);r=r.end===void 0?s:Math.min(r.end,i),!t.extend&&s>r&&(i=r,r=s,s=i),i=Gw(n,s);var o=Gw(n,r);i&&o&&(t.rangeCount!==1||t.anchorNode!==i.node||t.anchorOffset!==i.offset||t.focusNode!==o.node||t.focusOffset!==o.offset)&&(e=e.createRange(),e.setStart(i.node,i.offset),t.removeAllRanges(),s>r?(t.addRange(e),t.extend(o.node,o.offset)):(e.setEnd(o.node,o.offset),t.addRange(e)))}}for(e=[],t=n;t=t.parentNode;)t.nodeType===1&&e.push({element:t,left:t.scrollLeft,top:t.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,$o=null,Rg=null,Ol=null,Mg=!1;function Kw(t,e,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Mg||$o==null||$o!==zh(r)||(r=$o,"selectionStart"in r&&Iv(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Ol&&ru(Ol,r)||(Ol=r,r=Gh(Rg,"onSelect"),0Vo||(t.current=Fg[Vo],Fg[Vo]=null,Vo--)}function De(t,e){Vo++,Fg[Vo]=t.current,t.current=e}var is={},Wt=hs(is),ln=hs(!1),Bs=is;function ha(t,e){var n=t.type.contextTypes;if(!n)return is;var r=t.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===e)return r.__reactInternalMemoizedMaskedChildContext;var i={},s;for(s in n)i[s]=e[s];return r&&(t=t.stateNode,t.__reactInternalMemoizedUnmaskedChildContext=e,t.__reactInternalMemoizedMaskedChildContext=i),i}function un(t){return t=t.childContextTypes,t!=null}function Qh(){Ve(ln),Ve(Wt)}function t1(t,e,n){if(Wt.current!==is)throw Error(H(168));De(Wt,e),De(ln,n)}function vS(t,e,n){var r=t.stateNode;if(e=e.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in e))throw Error(H(108,W2(t)||"Unknown",i));return Ke({},n,r)}function Yh(t){return t=(t=t.stateNode)&&t.__reactInternalMemoizedMergedChildContext||is,Bs=Wt.current,De(Wt,t),De(ln,ln.current),!0}function n1(t,e,n){var r=t.stateNode;if(!r)throw Error(H(169));n?(t=vS(t,e,Bs),r.__reactInternalMemoizedMergedChildContext=t,Ve(ln),Ve(Wt),De(Wt,t)):Ve(ln),De(ln,n)}var Gr=null,df=!1,rm=!1;function _S(t){Gr===null?Gr=[t]:Gr.push(t)}function lO(t){df=!0,_S(t)}function ds(){if(!rm&&Gr!==null){rm=!0;var t=0,e=Re;try{var n=Gr;for(Re=1;t>=o,i-=o,Yr=1<<32-sr(e)+i|n<C?(A=E,E=null):A=E.sibling;var S=d(g,E,v[C],_);if(S===null){E===null&&(E=A);break}t&&E&&S.alternate===null&&e(g,E),y=s(S,y,C),b===null?x=S:b.sibling=S,b=S,E=A}if(C===v.length)return n(g,E),He&&_s(g,C),x;if(E===null){for(;CC?(A=E,E=null):A=E.sibling;var P=d(g,E,S.value,_);if(P===null){E===null&&(E=A);break}t&&E&&P.alternate===null&&e(g,E),y=s(P,y,C),b===null?x=P:b.sibling=P,b=P,E=A}if(S.done)return n(g,E),He&&_s(g,C),x;if(E===null){for(;!S.done;C++,S=v.next())S=h(g,S.value,_),S!==null&&(y=s(S,y,C),b===null?x=S:b.sibling=S,b=S);return He&&_s(g,C),x}for(E=r(g,E);!S.done;C++,S=v.next())S=f(E,g,C,S.value,_),S!==null&&(t&&S.alternate!==null&&E.delete(S.key===null?C:S.key),y=s(S,y,C),b===null?x=S:b.sibling=S,b=S);return t&&E.forEach(function(M){return e(g,M)}),He&&_s(g,C),x}function w(g,y,v,_){if(typeof v=="object"&&v!==null&&v.type===Do&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case Ic:e:{for(var x=v.key,b=y;b!==null;){if(b.key===x){if(x=v.type,x===Do){if(b.tag===7){n(g,b.sibling),y=i(b,v.props.children),y.return=g,g=y;break e}}else if(b.elementType===x||typeof x=="object"&&x!==null&&x.$$typeof===Mi&&u1(x)===b.type){n(g,b.sibling),y=i(b,v.props),y.ref=ol(g,b,v),y.return=g,g=y;break e}n(g,b);break}else e(g,b);b=b.sibling}v.type===Do?(y=Ls(v.props.children,g.mode,_,v.key),y.return=g,g=y):(_=xh(v.type,v.key,v.props,null,g.mode,_),_.ref=ol(g,y,v),_.return=g,g=_)}return o(g);case Oo:e:{for(b=v.key;y!==null;){if(y.key===b)if(y.tag===4&&y.stateNode.containerInfo===v.containerInfo&&y.stateNode.implementation===v.implementation){n(g,y.sibling),y=i(y,v.children||[]),y.return=g,g=y;break e}else{n(g,y);break}else e(g,y);y=y.sibling}y=hm(v,g.mode,_),y.return=g,g=y}return o(g);case Mi:return b=v._init,w(g,y,b(v._payload),_)}if(wl(v))return p(g,y,v,_);if(tl(v))return m(g,y,v,_);Vc(g,v)}return typeof v=="string"&&v!==""||typeof v=="number"?(v=""+v,y!==null&&y.tag===6?(n(g,y.sibling),y=i(y,v),y.return=g,g=y):(n(g,y),y=cm(v,g.mode,_),y.return=g,g=y),o(g)):n(g,y)}return w}var fa=CS(!0),IS=CS(!1),Qu={},Mr=hs(Qu),au=hs(Qu),lu=hs(Qu);function Cs(t){if(t===Qu)throw Error(H(174));return t}function Lv(t,e){switch(De(lu,e),De(au,t),De(Mr,Qu),t=e.nodeType,t){case 9:case 11:e=(e=e.documentElement)?e.namespaceURI:xg(null,"");break;default:t=t===8?e.parentNode:e,e=t.namespaceURI||null,t=t.tagName,e=xg(e,t)}Ve(Mr),De(Mr,e)}function pa(){Ve(Mr),Ve(au),Ve(lu)}function PS(t){Cs(lu.current);var e=Cs(Mr.current),n=xg(e,t.type);e!==n&&(De(au,t),De(Mr,n))}function Fv(t){au.current===t&&(Ve(Mr),Ve(au))}var qe=hs(0);function nd(t){for(var e=t;e!==null;){if(e.tag===13){var n=e.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return e}else if(e.tag===19&&e.memoizedProps.revealOrder!==void 0){if(e.flags&128)return e}else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break;for(;e.sibling===null;){if(e.return===null||e.return===t)return null;e=e.return}e.sibling.return=e.return,e=e.sibling}return null}var im=[];function Vv(){for(var t=0;tn?n:4,t(!0);var r=sm.transition;sm.transition={};try{t(!1),e()}finally{Re=n,sm.transition=r}}function WS(){return Gn().memoizedState}function dO(t,e,n){var r=Yi(t);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},qS(t))GS(e,n);else if(n=ES(t,e,n,r),n!==null){var i=Yt();or(n,t,r,i),KS(n,e,r)}}function fO(t,e,n){var r=Yi(t),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(qS(t))GS(e,i);else{var s=t.alternate;if(t.lanes===0&&(s===null||s.lanes===0)&&(s=e.lastRenderedReducer,s!==null))try{var o=e.lastRenderedState,a=s(o,n);if(i.hasEagerState=!0,i.eagerState=a,dr(a,o)){var l=e.interleaved;l===null?(i.next=i,Nv(e)):(i.next=l.next,l.next=i),e.interleaved=i;return}}catch{}finally{}n=ES(t,e,i,r),n!==null&&(i=Yt(),or(n,t,r,i),KS(n,e,r))}}function qS(t){var e=t.alternate;return t===Ge||e!==null&&e===Ge}function GS(t,e){Dl=rd=!0;var n=t.pending;n===null?e.next=e:(e.next=n.next,n.next=e),t.pending=e}function KS(t,e,n){if(n&4194240){var r=e.lanes;r&=t.pendingLanes,n|=r,e.lanes=n,xv(t,n)}}var id={readContext:qn,useCallback:Dt,useContext:Dt,useEffect:Dt,useImperativeHandle:Dt,useInsertionEffect:Dt,useLayoutEffect:Dt,useMemo:Dt,useReducer:Dt,useRef:Dt,useState:Dt,useDebugValue:Dt,useDeferredValue:Dt,useTransition:Dt,useMutableSource:Dt,useSyncExternalStore:Dt,useId:Dt,unstable_isNewReconciler:!1},pO={readContext:qn,useCallback:function(t,e){return br().memoizedState=[t,e===void 0?null:e],t},useContext:qn,useEffect:h1,useImperativeHandle:function(t,e,n){return n=n!=null?n.concat([t]):null,yh(4194308,4,zS.bind(null,e,t),n)},useLayoutEffect:function(t,e){return yh(4194308,4,t,e)},useInsertionEffect:function(t,e){return yh(4,2,t,e)},useMemo:function(t,e){var n=br();return e=e===void 0?null:e,t=t(),n.memoizedState=[t,e],t},useReducer:function(t,e,n){var r=br();return e=n!==void 0?n(e):e,r.memoizedState=r.baseState=e,t={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:e},r.queue=t,t=t.dispatch=dO.bind(null,Ge,t),[r.memoizedState,t]},useRef:function(t){var e=br();return t={current:t},e.memoizedState=t},useState:c1,useDebugValue:Hv,useDeferredValue:function(t){return br().memoizedState=t},useTransition:function(){var t=c1(!1),e=t[0];return t=hO.bind(null,t[1]),br().memoizedState=t,[e,t]},useMutableSource:function(){},useSyncExternalStore:function(t,e,n){var r=Ge,i=br();if(He){if(n===void 0)throw Error(H(407));n=n()}else{if(n=e(),yt===null)throw Error(H(349));Ws&30||MS(r,e,n)}i.memoizedState=n;var s={value:n,getSnapshot:e};return i.queue=s,h1(DS.bind(null,r,s,t),[t]),r.flags|=2048,hu(9,OS.bind(null,r,s,n,e),void 0,null),n},useId:function(){var t=br(),e=yt.identifierPrefix;if(He){var n=Xr,r=Yr;n=(r&~(1<<32-sr(r)-1)).toString(32)+n,e=":"+e+"R"+n,n=uu++,0<\/script>",t=t.removeChild(t.firstChild)):typeof r.is=="string"?t=o.createElement(n,{is:r.is}):(t=o.createElement(n),n==="select"&&(o=t,r.multiple?o.multiple=!0:r.size&&(o.size=r.size))):t=o.createElementNS(t,n),t[Sr]=e,t[ou]=r,rk(t,e,!1,!1),e.stateNode=t;e:{switch(o=Eg(n,r),n){case"dialog":Ne("cancel",t),Ne("close",t),i=r;break;case"iframe":case"object":case"embed":Ne("load",t),i=r;break;case"video":case"audio":for(i=0;iga&&(e.flags|=128,r=!0,al(s,!1),e.lanes=4194304)}else{if(!r)if(t=nd(o),t!==null){if(e.flags|=128,r=!0,n=t.updateQueue,n!==null&&(e.updateQueue=n,e.flags|=4),al(s,!0),s.tail===null&&s.tailMode==="hidden"&&!o.alternate&&!He)return Nt(e),null}else 2*et()-s.renderingStartTime>ga&&n!==1073741824&&(e.flags|=128,r=!0,al(s,!1),e.lanes=4194304);s.isBackwards?(o.sibling=e.child,e.child=o):(n=s.last,n!==null?n.sibling=o:e.child=o,s.last=o)}return s.tail!==null?(e=s.tail,s.rendering=e,s.tail=e.sibling,s.renderingStartTime=et(),e.sibling=null,n=qe.current,De(qe,r?n&1|2:n&1),e):(Nt(e),null);case 22:case 23:return Yv(),r=e.memoizedState!==null,t!==null&&t.memoizedState!==null!==r&&(e.flags|=8192),r&&e.mode&1?vn&1073741824&&(Nt(e),e.subtreeFlags&6&&(e.flags|=8192)):Nt(e),null;case 24:return null;case 25:return null}throw Error(H(156,e.tag))}function bO(t,e){switch(Av(e),e.tag){case 1:return un(e.type)&&Qh(),t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 3:return pa(),Ve(ln),Ve(Wt),Vv(),t=e.flags,t&65536&&!(t&128)?(e.flags=t&-65537|128,e):null;case 5:return Fv(e),null;case 13:if(Ve(qe),t=e.memoizedState,t!==null&&t.dehydrated!==null){if(e.alternate===null)throw Error(H(340));da()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 19:return Ve(qe),null;case 4:return pa(),null;case 10:return Dv(e.type._context),null;case 22:case 23:return Yv(),null;case 24:return null;default:return null}}var Uc=!1,Vt=!1,EO=typeof WeakSet=="function"?WeakSet:Set,X=null;function Bo(t,e){var n=t.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Je(t,e,r)}else n.current=null}function Yg(t,e,n){try{n()}catch(r){Je(t,e,r)}}var w1=!1;function TO(t,e){if(Og=Wh,t=uS(),Iv(t)){if("selectionStart"in t)var n={start:t.selectionStart,end:t.selectionEnd};else e:{n=(n=t.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,s=r.focusNode;r=r.focusOffset;try{n.nodeType,s.nodeType}catch{n=null;break e}var o=0,a=-1,l=-1,u=0,c=0,h=t,d=null;t:for(;;){for(var f;h!==n||i!==0&&h.nodeType!==3||(a=o+i),h!==s||r!==0&&h.nodeType!==3||(l=o+r),h.nodeType===3&&(o+=h.nodeValue.length),(f=h.firstChild)!==null;)d=h,h=f;for(;;){if(h===t)break t;if(d===n&&++u===i&&(a=o),d===s&&++c===r&&(l=o),(f=h.nextSibling)!==null)break;h=d,d=h.parentNode}h=f}n=a===-1||l===-1?null:{start:a,end:l}}else n=null}n=n||{start:0,end:0}}else n=null;for(Dg={focusedElem:t,selectionRange:n},Wh=!1,X=e;X!==null;)if(e=X,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,X=t;else for(;X!==null;){e=X;try{var p=e.alternate;if(e.flags&1024)switch(e.tag){case 0:case 11:case 15:break;case 1:if(p!==null){var m=p.memoizedProps,w=p.memoizedState,g=e.stateNode,y=g.getSnapshotBeforeUpdate(e.elementType===e.type?m:er(e.type,m),w);g.__reactInternalSnapshotBeforeUpdate=y}break;case 3:var v=e.stateNode.containerInfo;v.nodeType===1?v.textContent="":v.nodeType===9&&v.documentElement&&v.removeChild(v.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(H(163))}}catch(_){Je(e,e.return,_)}if(t=e.sibling,t!==null){t.return=e.return,X=t;break}X=e.return}return p=w1,w1=!1,p}function Nl(t,e,n){var r=e.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var i=r=r.next;do{if((i.tag&t)===t){var s=i.destroy;i.destroy=void 0,s!==void 0&&Yg(e,n,s)}i=i.next}while(i!==r)}}function mf(t,e){if(e=e.updateQueue,e=e!==null?e.lastEffect:null,e!==null){var n=e=e.next;do{if((n.tag&t)===t){var r=n.create;n.destroy=r()}n=n.next}while(n!==e)}}function Xg(t){var e=t.ref;if(e!==null){var n=t.stateNode;switch(t.tag){case 5:t=n;break;default:t=n}typeof e=="function"?e(t):e.current=t}}function ok(t){var e=t.alternate;e!==null&&(t.alternate=null,ok(e)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(e=t.stateNode,e!==null&&(delete e[Sr],delete e[ou],delete e[Lg],delete e[oO],delete e[aO])),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}function ak(t){return t.tag===5||t.tag===3||t.tag===4}function x1(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||ak(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Jg(t,e,n){var r=t.tag;if(r===5||r===6)t=t.stateNode,e?n.nodeType===8?n.parentNode.insertBefore(t,e):n.insertBefore(t,e):(n.nodeType===8?(e=n.parentNode,e.insertBefore(t,n)):(e=n,e.appendChild(t)),n=n._reactRootContainer,n!=null||e.onclick!==null||(e.onclick=Kh));else if(r!==4&&(t=t.child,t!==null))for(Jg(t,e,n),t=t.sibling;t!==null;)Jg(t,e,n),t=t.sibling}function Zg(t,e,n){var r=t.tag;if(r===5||r===6)t=t.stateNode,e?n.insertBefore(t,e):n.appendChild(t);else if(r!==4&&(t=t.child,t!==null))for(Zg(t,e,n),t=t.sibling;t!==null;)Zg(t,e,n),t=t.sibling}var Tt=null,tr=!1;function Pi(t,e,n){for(n=n.child;n!==null;)lk(t,e,n),n=n.sibling}function lk(t,e,n){if(Rr&&typeof Rr.onCommitFiberUnmount=="function")try{Rr.onCommitFiberUnmount(af,n)}catch{}switch(n.tag){case 5:Vt||Bo(n,e);case 6:var r=Tt,i=tr;Tt=null,Pi(t,e,n),Tt=r,tr=i,Tt!==null&&(tr?(t=Tt,n=n.stateNode,t.nodeType===8?t.parentNode.removeChild(n):t.removeChild(n)):Tt.removeChild(n.stateNode));break;case 18:Tt!==null&&(tr?(t=Tt,n=n.stateNode,t.nodeType===8?nm(t.parentNode,n):t.nodeType===1&&nm(t,n),tu(t)):nm(Tt,n.stateNode));break;case 4:r=Tt,i=tr,Tt=n.stateNode.containerInfo,tr=!0,Pi(t,e,n),Tt=r,tr=i;break;case 0:case 11:case 14:case 15:if(!Vt&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var s=i,o=s.destroy;s=s.tag,o!==void 0&&(s&2||s&4)&&Yg(n,e,o),i=i.next}while(i!==r)}Pi(t,e,n);break;case 1:if(!Vt&&(Bo(n,e),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(a){Je(n,e,a)}Pi(t,e,n);break;case 21:Pi(t,e,n);break;case 22:n.mode&1?(Vt=(r=Vt)||n.memoizedState!==null,Pi(t,e,n),Vt=r):Pi(t,e,n);break;default:Pi(t,e,n)}}function b1(t){var e=t.updateQueue;if(e!==null){t.updateQueue=null;var n=t.stateNode;n===null&&(n=t.stateNode=new EO),e.forEach(function(r){var i=OO.bind(null,t,r);n.has(r)||(n.add(r),r.then(i,i))})}}function Zn(t,e){var n=e.deletions;if(n!==null)for(var r=0;ri&&(i=o),r&=~s}if(r=i,r=et()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*kO(r/1960))-r,10t?16:t,zi===null)var r=!1;else{if(t=zi,zi=null,ad=0,we&6)throw Error(H(331));var i=we;for(we|=4,X=t.current;X!==null;){var s=X,o=s.child;if(X.flags&16){var a=s.deletions;if(a!==null){for(var l=0;let()-Kv?$s(t,0):Gv|=n),cn(t,e)}function gk(t,e){e===0&&(t.mode&1?(e=Mc,Mc<<=1,!(Mc&130023424)&&(Mc=4194304)):e=1);var n=Yt();t=hi(t,e),t!==null&&(qu(t,e,n),cn(t,n))}function MO(t){var e=t.memoizedState,n=0;e!==null&&(n=e.retryLane),gk(t,n)}function OO(t,e){var n=0;switch(t.tag){case 13:var r=t.stateNode,i=t.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=t.stateNode;break;default:throw Error(H(314))}r!==null&&r.delete(e),gk(t,n)}var yk;yk=function(t,e,n){if(t!==null)if(t.memoizedProps!==e.pendingProps||ln.current)sn=!0;else{if(!(t.lanes&n)&&!(e.flags&128))return sn=!1,wO(t,e,n);sn=!!(t.flags&131072)}else sn=!1,He&&e.flags&1048576&&wS(e,Jh,e.index);switch(e.lanes=0,e.tag){case 2:var r=e.type;vh(t,e),t=e.pendingProps;var i=ha(e,Wt.current);Zo(e,n),i=Uv(null,e,r,t,i,n);var s=jv();return e.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(e.tag=1,e.memoizedState=null,e.updateQueue=null,un(r)?(s=!0,Yh(e)):s=!1,e.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,$v(e),i.updater=ff,e.stateNode=i,i._reactInternals=e,Bg(e,r,t,n),e=qg(null,e,r,!0,s,n)):(e.tag=0,He&&s&&Pv(e),Kt(null,e,i,n),e=e.child),e;case 16:r=e.elementType;e:{switch(vh(t,e),t=e.pendingProps,i=r._init,r=i(r._payload),e.type=r,i=e.tag=NO(r),t=er(r,t),i){case 0:e=Wg(null,e,r,t,n);break e;case 1:e=y1(null,e,r,t,n);break e;case 11:e=m1(null,e,r,t,n);break e;case 14:e=g1(null,e,r,er(r.type,t),n);break e}throw Error(H(306,r,""))}return e;case 0:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:er(r,i),Wg(t,e,r,i,n);case 1:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:er(r,i),y1(t,e,r,i,n);case 3:e:{if(ek(e),t===null)throw Error(H(387));r=e.pendingProps,s=e.memoizedState,i=s.element,TS(t,e),td(e,r,null,n);var o=e.memoizedState;if(r=o.element,s.isDehydrated)if(s={element:r,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},e.updateQueue.baseState=s,e.memoizedState=s,e.flags&256){i=ma(Error(H(423)),e),e=v1(t,e,r,n,i);break e}else if(r!==i){i=ma(Error(H(424)),e),e=v1(t,e,r,n,i);break e}else for(xn=Gi(e.stateNode.containerInfo.firstChild),bn=e,He=!0,nr=null,n=IS(e,null,r,n),e.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(da(),r===i){e=di(t,e,n);break e}Kt(t,e,r,n)}e=e.child}return e;case 5:return PS(e),t===null&&zg(e),r=e.type,i=e.pendingProps,s=t!==null?t.memoizedProps:null,o=i.children,Ng(r,i)?o=null:s!==null&&Ng(r,s)&&(e.flags|=32),ZS(t,e),Kt(t,e,o,n),e.child;case 6:return t===null&&zg(e),null;case 13:return tk(t,e,n);case 4:return Lv(e,e.stateNode.containerInfo),r=e.pendingProps,t===null?e.child=fa(e,null,r,n):Kt(t,e,r,n),e.child;case 11:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:er(r,i),m1(t,e,r,i,n);case 7:return Kt(t,e,e.pendingProps,n),e.child;case 8:return Kt(t,e,e.pendingProps.children,n),e.child;case 12:return Kt(t,e,e.pendingProps.children,n),e.child;case 10:e:{if(r=e.type._context,i=e.pendingProps,s=e.memoizedProps,o=i.value,De(Zh,r._currentValue),r._currentValue=o,s!==null)if(dr(s.value,o)){if(s.children===i.children&&!ln.current){e=di(t,e,n);break e}}else for(s=e.child,s!==null&&(s.return=e);s!==null;){var a=s.dependencies;if(a!==null){o=s.child;for(var l=a.firstContext;l!==null;){if(l.context===r){if(s.tag===1){l=ii(-1,n&-n),l.tag=2;var u=s.updateQueue;if(u!==null){u=u.shared;var c=u.pending;c===null?l.next=l:(l.next=c.next,c.next=l),u.pending=l}}s.lanes|=n,l=s.alternate,l!==null&&(l.lanes|=n),Ug(s.return,n,e),a.lanes|=n;break}l=l.next}}else if(s.tag===10)o=s.type===e.type?null:s.child;else if(s.tag===18){if(o=s.return,o===null)throw Error(H(341));o.lanes|=n,a=o.alternate,a!==null&&(a.lanes|=n),Ug(o,n,e),o=s.sibling}else o=s.child;if(o!==null)o.return=s;else for(o=s;o!==null;){if(o===e){o=null;break}if(s=o.sibling,s!==null){s.return=o.return,o=s;break}o=o.return}s=o}Kt(t,e,i.children,n),e=e.child}return e;case 9:return i=e.type,r=e.pendingProps.children,Zo(e,n),i=qn(i),r=r(i),e.flags|=1,Kt(t,e,r,n),e.child;case 14:return r=e.type,i=er(r,e.pendingProps),i=er(r.type,i),g1(t,e,r,i,n);case 15:return XS(t,e,e.type,e.pendingProps,n);case 17:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:er(r,i),vh(t,e),e.tag=1,un(r)?(t=!0,Yh(e)):t=!1,Zo(e,n),kS(e,r,i),Bg(e,r,i,n),qg(null,e,r,!0,t,n);case 19:return nk(t,e,n);case 22:return JS(t,e,n)}throw Error(H(156,e.tag))};function vk(t,e){return HT(t,e)}function DO(t,e,n,r){this.tag=t,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=e,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 jn(t,e,n,r){return new DO(t,e,n,r)}function Jv(t){return t=t.prototype,!(!t||!t.isReactComponent)}function NO(t){if(typeof t=="function")return Jv(t)?1:0;if(t!=null){if(t=t.$$typeof,t===yv)return 11;if(t===vv)return 14}return 2}function Xi(t,e){var n=t.alternate;return n===null?(n=jn(t.tag,e,t.key,t.mode),n.elementType=t.elementType,n.type=t.type,n.stateNode=t.stateNode,n.alternate=t,t.alternate=n):(n.pendingProps=e,n.type=t.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=t.flags&14680064,n.childLanes=t.childLanes,n.lanes=t.lanes,n.child=t.child,n.memoizedProps=t.memoizedProps,n.memoizedState=t.memoizedState,n.updateQueue=t.updateQueue,e=t.dependencies,n.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext},n.sibling=t.sibling,n.index=t.index,n.ref=t.ref,n}function xh(t,e,n,r,i,s){var o=2;if(r=t,typeof t=="function")Jv(t)&&(o=1);else if(typeof t=="string")o=5;else e:switch(t){case Do:return Ls(n.children,i,s,e);case gv:o=8,i|=8;break;case fg:return t=jn(12,n,e,i|2),t.elementType=fg,t.lanes=s,t;case pg:return t=jn(13,n,e,i),t.elementType=pg,t.lanes=s,t;case mg:return t=jn(19,n,e,i),t.elementType=mg,t.lanes=s,t;case CT:return yf(n,i,s,e);default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case ST:o=10;break e;case kT:o=9;break e;case yv:o=11;break e;case vv:o=14;break e;case Mi:o=16,r=null;break e}throw Error(H(130,t==null?t:typeof t,""))}return e=jn(o,n,e,i),e.elementType=t,e.type=r,e.lanes=s,e}function Ls(t,e,n,r){return t=jn(7,t,r,e),t.lanes=n,t}function yf(t,e,n,r){return t=jn(22,t,r,e),t.elementType=CT,t.lanes=n,t.stateNode={isHidden:!1},t}function cm(t,e,n){return t=jn(6,t,null,e),t.lanes=n,t}function hm(t,e,n){return e=jn(4,t.children!==null?t.children:[],t.key,e),e.lanes=n,e.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},e}function $O(t,e,n,r,i){this.tag=e,this.containerInfo=t,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Wp(0),this.expirationTimes=Wp(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Wp(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function Zv(t,e,n,r,i,s,o,a,l){return t=new $O(t,e,n,a,l),e===1?(e=1,s===!0&&(e|=8)):e=0,s=jn(3,null,null,e),t.current=s,s.stateNode=t,s.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},$v(s),t}function LO(t,e,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(bk)}catch(t){console.error(t)}}bk(),wT.exports=An;var r0=wT.exports;const Hc=sf(r0);var A1=r0;hg.createRoot=A1.createRoot,hg.hydrateRoot=A1.hydrateRoot;/**
+ * @license
+ * Copyright 2017 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ *//**
+ * @license
+ * Copyright 2017 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const Ek=function(t){const e=[];let n=0;for(let r=0;r>6|192,e[n++]=i&63|128):(i&64512)===55296&&r+1>18|240,e[n++]=i>>12&63|128,e[n++]=i>>6&63|128,e[n++]=i&63|128):(e[n++]=i>>12|224,e[n++]=i>>6&63|128,e[n++]=i&63|128)}return e},jO=function(t){const e=[];let n=0,r=0;for(;n191&&i<224){const s=t[n++];e[r++]=String.fromCharCode((i&31)<<6|s&63)}else if(i>239&&i<365){const s=t[n++],o=t[n++],a=t[n++],l=((i&7)<<18|(s&63)<<12|(o&63)<<6|a&63)-65536;e[r++]=String.fromCharCode(55296+(l>>10)),e[r++]=String.fromCharCode(56320+(l&1023))}else{const s=t[n++],o=t[n++];e[r++]=String.fromCharCode((i&15)<<12|(s&63)<<6|o&63)}}return e.join("")},Tk={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:typeof atob=="function",encodeByteArray(t,e){if(!Array.isArray(t))throw Error("encodeByteArray takes an array as a parameter");this.init_();const n=e?this.byteToCharMapWebSafe_:this.byteToCharMap_,r=[];for(let i=0;i>2,h=(s&3)<<4|a>>4;let d=(a&15)<<2|u>>6,f=u&63;l||(f=64,o||(d=64)),r.push(n[c],n[h],n[d],n[f])}return r.join("")},encodeString(t,e){return this.HAS_NATIVE_SUPPORT&&!e?btoa(t):this.encodeByteArray(Ek(t),e)},decodeString(t,e){return this.HAS_NATIVE_SUPPORT&&!e?atob(t):jO(this.decodeStringToByteArray(t,e))},decodeStringToByteArray(t,e){this.init_();const n=e?this.charToByteMapWebSafe_:this.charToByteMap_,r=[];for(let i=0;i>4;if(r.push(d),u!==64){const f=a<<4&240|u>>2;if(r.push(f),h!==64){const p=u<<6&192|h;r.push(p)}}}return r},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let t=0;t=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(t)]=t,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(t)]=t)}}};class BO extends Error{constructor(){super(...arguments),this.name="DecodeBase64StringError"}}const HO=function(t){const e=Ek(t);return Tk.encodeByteArray(e,!0)},cd=function(t){return HO(t).replace(/\./g,"")},Sk=function(t){try{return Tk.decodeString(t,!0)}catch(e){console.error("base64Decode failed: ",e)}return null};/**
+ * @license
+ * Copyright 2022 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function WO(){if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("Unable to locate global object.")}/**
+ * @license
+ * Copyright 2022 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const qO=()=>WO().__FIREBASE_DEFAULTS__,GO=()=>{if(typeof process>"u"||typeof process.env>"u")return;const t={}.__FIREBASE_DEFAULTS__;if(t)return JSON.parse(t)},KO=()=>{if(typeof document>"u")return;let t;try{t=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch{return}const e=t&&Sk(t[1]);return e&&JSON.parse(e)},i0=()=>{try{return qO()||GO()||KO()}catch(t){console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${t}`);return}},kk=t=>{var e,n;return(n=(e=i0())===null||e===void 0?void 0:e.emulatorHosts)===null||n===void 0?void 0:n[t]},QO=t=>{const e=kk(t);if(!e)return;const n=e.lastIndexOf(":");if(n<=0||n+1===e.length)throw new Error(`Invalid host ${e} with no separate hostname and port!`);const r=parseInt(e.substring(n+1),10);return e[0]==="["?[e.substring(1,n-1),r]:[e.substring(0,n),r]},Ck=()=>{var t;return(t=i0())===null||t===void 0?void 0:t.config},Ik=t=>{var e;return(e=i0())===null||e===void 0?void 0:e[`_${t}`]};/**
+ * @license
+ * Copyright 2017 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class YO{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise((e,n)=>{this.resolve=e,this.reject=n})}wrapCallback(e){return(n,r)=>{n?this.reject(n):this.resolve(r),typeof e=="function"&&(this.promise.catch(()=>{}),e.length===1?e(n):e(n,r))}}}/**
+ * @license
+ * Copyright 2021 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function XO(t,e){if(t.uid)throw new Error('The "uid" field is no longer supported by mockUserToken. Please use "sub" instead for Firebase Auth User ID.');const n={alg:"none",type:"JWT"},r=e||"demo-project",i=t.iat||0,s=t.sub||t.user_id;if(!s)throw new Error("mockUserToken must contain 'sub' or 'user_id' field!");const o=Object.assign({iss:`https://securetoken.google.com/${r}`,aud:r,iat:i,exp:i+3600,auth_time:i,sub:s,user_id:s,firebase:{sign_in_provider:"custom",identities:{}}},t),a="";return[cd(JSON.stringify(n)),cd(JSON.stringify(o)),a].join(".")}/**
+ * @license
+ * Copyright 2017 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function qt(){return typeof navigator<"u"&&typeof navigator.userAgent=="string"?navigator.userAgent:""}function JO(){return typeof window<"u"&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(qt())}function ZO(){const t=typeof chrome=="object"?chrome.runtime:typeof browser=="object"?browser.runtime:void 0;return typeof t=="object"&&t.id!==void 0}function eD(){return typeof navigator=="object"&&navigator.product==="ReactNative"}function tD(){const t=qt();return t.indexOf("MSIE ")>=0||t.indexOf("Trident/")>=0}function nD(){try{return typeof indexedDB=="object"}catch{return!1}}function rD(){return new Promise((t,e)=>{try{let n=!0;const r="validate-browser-context-for-indexeddb-analytics-module",i=self.indexedDB.open(r);i.onsuccess=()=>{i.result.close(),n||self.indexedDB.deleteDatabase(r),t(!0)},i.onupgradeneeded=()=>{n=!1},i.onerror=()=>{var s;e(((s=i.error)===null||s===void 0?void 0:s.message)||"")}}catch(n){e(n)}})}/**
+ * @license
+ * Copyright 2017 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const iD="FirebaseError";class bi extends Error{constructor(e,n,r){super(n),this.code=e,this.customData=r,this.name=iD,Object.setPrototypeOf(this,bi.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,Yu.prototype.create)}}class Yu{constructor(e,n,r){this.service=e,this.serviceName=n,this.errors=r}create(e,...n){const r=n[0]||{},i=`${this.service}/${e}`,s=this.errors[e],o=s?sD(s,r):"Error",a=`${this.serviceName}: ${o} (${i}).`;return new bi(i,a,r)}}function sD(t,e){return t.replace(oD,(n,r)=>{const i=e[r];return i!=null?String(i):`<${r}?>`})}const oD=/\{\$([^}]+)}/g;function aD(t){for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e))return!1;return!0}function hd(t,e){if(t===e)return!0;const n=Object.keys(t),r=Object.keys(e);for(const i of n){if(!r.includes(i))return!1;const s=t[i],o=e[i];if(R1(s)&&R1(o)){if(!hd(s,o))return!1}else if(s!==o)return!1}for(const i of r)if(!n.includes(i))return!1;return!0}function R1(t){return t!==null&&typeof t=="object"}/**
+ * @license
+ * Copyright 2017 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function Xu(t){const e=[];for(const[n,r]of Object.entries(t))Array.isArray(r)?r.forEach(i=>{e.push(encodeURIComponent(n)+"="+encodeURIComponent(i))}):e.push(encodeURIComponent(n)+"="+encodeURIComponent(r));return e.length?"&"+e.join("&"):""}function lD(t,e){const n=new uD(t,e);return n.subscribe.bind(n)}class uD{constructor(e,n){this.observers=[],this.unsubscribes=[],this.observerCount=0,this.task=Promise.resolve(),this.finalized=!1,this.onNoObservers=n,this.task.then(()=>{e(this)}).catch(r=>{this.error(r)})}next(e){this.forEachObserver(n=>{n.next(e)})}error(e){this.forEachObserver(n=>{n.error(e)}),this.close(e)}complete(){this.forEachObserver(e=>{e.complete()}),this.close()}subscribe(e,n,r){let i;if(e===void 0&&n===void 0&&r===void 0)throw new Error("Missing Observer.");cD(e,["next","error","complete"])?i=e:i={next:e,error:n,complete:r},i.next===void 0&&(i.next=dm),i.error===void 0&&(i.error=dm),i.complete===void 0&&(i.complete=dm);const s=this.unsubscribeOne.bind(this,this.observers.length);return this.finalized&&this.task.then(()=>{try{this.finalError?i.error(this.finalError):i.complete()}catch{}}),this.observers.push(i),s}unsubscribeOne(e){this.observers===void 0||this.observers[e]===void 0||(delete this.observers[e],this.observerCount-=1,this.observerCount===0&&this.onNoObservers!==void 0&&this.onNoObservers(this))}forEachObserver(e){if(!this.finalized)for(let n=0;n{if(this.observers!==void 0&&this.observers[e]!==void 0)try{n(this.observers[e])}catch(r){typeof console<"u"&&console.error&&console.error(r)}})}close(e){this.finalized||(this.finalized=!0,e!==void 0&&(this.finalError=e),this.task.then(()=>{this.observers=void 0,this.onNoObservers=void 0}))}}function cD(t,e){if(typeof t!="object"||t===null)return!1;for(const n of e)if(n in t&&typeof t[n]=="function")return!0;return!1}function dm(){}/**
+ * @license
+ * Copyright 2021 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function pn(t){return t&&t._delegate?t._delegate:t}class Ks{constructor(e,n,r){this.name=e,this.instanceFactory=n,this.type=r,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(e){return this.instantiationMode=e,this}setMultipleInstances(e){return this.multipleInstances=e,this}setServiceProps(e){return this.serviceProps=e,this}setInstanceCreatedCallback(e){return this.onInstanceCreated=e,this}}/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const xs="[DEFAULT]";/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class hD{constructor(e,n){this.name=e,this.container=n,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(e){const n=this.normalizeInstanceIdentifier(e);if(!this.instancesDeferred.has(n)){const r=new YO;if(this.instancesDeferred.set(n,r),this.isInitialized(n)||this.shouldAutoInitialize())try{const i=this.getOrInitializeService({instanceIdentifier:n});i&&r.resolve(i)}catch{}}return this.instancesDeferred.get(n).promise}getImmediate(e){var n;const r=this.normalizeInstanceIdentifier(e==null?void 0:e.identifier),i=(n=e==null?void 0:e.optional)!==null&&n!==void 0?n:!1;if(this.isInitialized(r)||this.shouldAutoInitialize())try{return this.getOrInitializeService({instanceIdentifier:r})}catch(s){if(i)return null;throw s}else{if(i)return null;throw Error(`Service ${this.name} is not available`)}}getComponent(){return this.component}setComponent(e){if(e.name!==this.name)throw Error(`Mismatching Component ${e.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=e,!!this.shouldAutoInitialize()){if(fD(e))try{this.getOrInitializeService({instanceIdentifier:xs})}catch{}for(const[n,r]of this.instancesDeferred.entries()){const i=this.normalizeInstanceIdentifier(n);try{const s=this.getOrInitializeService({instanceIdentifier:i});r.resolve(s)}catch{}}}}clearInstance(e=xs){this.instancesDeferred.delete(e),this.instancesOptions.delete(e),this.instances.delete(e)}async delete(){const e=Array.from(this.instances.values());await Promise.all([...e.filter(n=>"INTERNAL"in n).map(n=>n.INTERNAL.delete()),...e.filter(n=>"_delete"in n).map(n=>n._delete())])}isComponentSet(){return this.component!=null}isInitialized(e=xs){return this.instances.has(e)}getOptions(e=xs){return this.instancesOptions.get(e)||{}}initialize(e={}){const{options:n={}}=e,r=this.normalizeInstanceIdentifier(e.instanceIdentifier);if(this.isInitialized(r))throw Error(`${this.name}(${r}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);const i=this.getOrInitializeService({instanceIdentifier:r,options:n});for(const[s,o]of this.instancesDeferred.entries()){const a=this.normalizeInstanceIdentifier(s);r===a&&o.resolve(i)}return i}onInit(e,n){var r;const i=this.normalizeInstanceIdentifier(n),s=(r=this.onInitCallbacks.get(i))!==null&&r!==void 0?r:new Set;s.add(e),this.onInitCallbacks.set(i,s);const o=this.instances.get(i);return o&&e(o,i),()=>{s.delete(e)}}invokeOnInitCallbacks(e,n){const r=this.onInitCallbacks.get(n);if(r)for(const i of r)try{i(e,n)}catch{}}getOrInitializeService({instanceIdentifier:e,options:n={}}){let r=this.instances.get(e);if(!r&&this.component&&(r=this.component.instanceFactory(this.container,{instanceIdentifier:dD(e),options:n}),this.instances.set(e,r),this.instancesOptions.set(e,n),this.invokeOnInitCallbacks(r,e),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,e,r)}catch{}return r||null}normalizeInstanceIdentifier(e=xs){return this.component?this.component.multipleInstances?e:xs:e}shouldAutoInitialize(){return!!this.component&&this.component.instantiationMode!=="EXPLICIT"}}function dD(t){return t===xs?void 0:t}function fD(t){return t.instantiationMode==="EAGER"}/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class pD{constructor(e){this.name=e,this.providers=new Map}addComponent(e){const n=this.getProvider(e.name);if(n.isComponentSet())throw new Error(`Component ${e.name} has already been registered with ${this.name}`);n.setComponent(e)}addOrOverwriteComponent(e){this.getProvider(e.name).isComponentSet()&&this.providers.delete(e.name),this.addComponent(e)}getProvider(e){if(this.providers.has(e))return this.providers.get(e);const n=new hD(e,this);return this.providers.set(e,n),n}getProviders(){return Array.from(this.providers.values())}}/**
+ * @license
+ * Copyright 2017 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */var ge;(function(t){t[t.DEBUG=0]="DEBUG",t[t.VERBOSE=1]="VERBOSE",t[t.INFO=2]="INFO",t[t.WARN=3]="WARN",t[t.ERROR=4]="ERROR",t[t.SILENT=5]="SILENT"})(ge||(ge={}));const mD={debug:ge.DEBUG,verbose:ge.VERBOSE,info:ge.INFO,warn:ge.WARN,error:ge.ERROR,silent:ge.SILENT},gD=ge.INFO,yD={[ge.DEBUG]:"log",[ge.VERBOSE]:"log",[ge.INFO]:"info",[ge.WARN]:"warn",[ge.ERROR]:"error"},vD=(t,e,...n)=>{if(ee.some(n=>t instanceof n);let M1,O1;function wD(){return M1||(M1=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function xD(){return O1||(O1=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const Pk=new WeakMap,iy=new WeakMap,Ak=new WeakMap,fm=new WeakMap,o0=new WeakMap;function bD(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",s),t.removeEventListener("error",o)},s=()=>{n(Ji(t.result)),i()},o=()=>{r(t.error),i()};t.addEventListener("success",s),t.addEventListener("error",o)});return e.then(n=>{n instanceof IDBCursor&&Pk.set(n,t)}).catch(()=>{}),o0.set(e,t),e}function ED(t){if(iy.has(t))return;const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("complete",s),t.removeEventListener("error",o),t.removeEventListener("abort",o)},s=()=>{n(),i()},o=()=>{r(t.error||new DOMException("AbortError","AbortError")),i()};t.addEventListener("complete",s),t.addEventListener("error",o),t.addEventListener("abort",o)});iy.set(t,e)}let sy={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return iy.get(t);if(e==="objectStoreNames")return t.objectStoreNames||Ak.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return Ji(t[e])},set(t,e,n){return t[e]=n,!0},has(t,e){return t instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in t}};function TD(t){sy=t(sy)}function SD(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(pm(this),e,...n);return Ak.set(r,e.sort?e.sort():[e]),Ji(r)}:xD().includes(t)?function(...e){return t.apply(pm(this),e),Ji(Pk.get(this))}:function(...e){return Ji(t.apply(pm(this),e))}}function kD(t){return typeof t=="function"?SD(t):(t instanceof IDBTransaction&&ED(t),_D(t,wD())?new Proxy(t,sy):t)}function Ji(t){if(t instanceof IDBRequest)return bD(t);if(fm.has(t))return fm.get(t);const e=kD(t);return e!==t&&(fm.set(t,e),o0.set(e,t)),e}const pm=t=>o0.get(t);function CD(t,e,{blocked:n,upgrade:r,blocking:i,terminated:s}={}){const o=indexedDB.open(t,e),a=Ji(o);return r&&o.addEventListener("upgradeneeded",l=>{r(Ji(o.result),l.oldVersion,l.newVersion,Ji(o.transaction),l)}),n&&o.addEventListener("blocked",l=>n(l.oldVersion,l.newVersion,l)),a.then(l=>{s&&l.addEventListener("close",()=>s()),i&&l.addEventListener("versionchange",u=>i(u.oldVersion,u.newVersion,u))}).catch(()=>{}),a}const ID=["get","getKey","getAll","getAllKeys","count"],PD=["put","add","delete","clear"],mm=new Map;function D1(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(mm.get(e))return mm.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=PD.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||ID.includes(n)))return;const s=async function(o,...a){const l=this.transaction(o,i?"readwrite":"readonly");let u=l.store;return r&&(u=u.index(a.shift())),(await Promise.all([u[n](...a),i&&l.done]))[0]};return mm.set(e,s),s}TD(t=>({...t,get:(e,n,r)=>D1(e,n)||t.get(e,n,r),has:(e,n)=>!!D1(e,n)||t.has(e,n)}));/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class AD{constructor(e){this.container=e}getPlatformInfoString(){return this.container.getProviders().map(n=>{if(RD(n)){const r=n.getImmediate();return`${r.library}/${r.version}`}else return null}).filter(n=>n).join(" ")}}function RD(t){const e=t.getComponent();return(e==null?void 0:e.type)==="VERSION"}const oy="@firebase/app",N1="0.9.20";/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const Qs=new s0("@firebase/app"),MD="@firebase/app-compat",OD="@firebase/analytics-compat",DD="@firebase/analytics",ND="@firebase/app-check-compat",$D="@firebase/app-check",LD="@firebase/auth",FD="@firebase/auth-compat",VD="@firebase/database",zD="@firebase/database-compat",UD="@firebase/functions",jD="@firebase/functions-compat",BD="@firebase/installations",HD="@firebase/installations-compat",WD="@firebase/messaging",qD="@firebase/messaging-compat",GD="@firebase/performance",KD="@firebase/performance-compat",QD="@firebase/remote-config",YD="@firebase/remote-config-compat",XD="@firebase/storage",JD="@firebase/storage-compat",ZD="@firebase/firestore",eN="@firebase/firestore-compat",tN="firebase",nN="10.5.0";/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const ay="[DEFAULT]",rN={[oy]:"fire-core",[MD]:"fire-core-compat",[DD]:"fire-analytics",[OD]:"fire-analytics-compat",[$D]:"fire-app-check",[ND]:"fire-app-check-compat",[LD]:"fire-auth",[FD]:"fire-auth-compat",[VD]:"fire-rtdb",[zD]:"fire-rtdb-compat",[UD]:"fire-fn",[jD]:"fire-fn-compat",[BD]:"fire-iid",[HD]:"fire-iid-compat",[WD]:"fire-fcm",[qD]:"fire-fcm-compat",[GD]:"fire-perf",[KD]:"fire-perf-compat",[QD]:"fire-rc",[YD]:"fire-rc-compat",[XD]:"fire-gcs",[JD]:"fire-gcs-compat",[ZD]:"fire-fst",[eN]:"fire-fst-compat","fire-js":"fire-js",[tN]:"fire-js-all"};/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const dd=new Map,ly=new Map;function iN(t,e){try{t.container.addComponent(e)}catch(n){Qs.debug(`Component ${e.name} failed to register with FirebaseApp ${t.name}`,n)}}function ya(t){const e=t.name;if(ly.has(e))return Qs.debug(`There were multiple attempts to register component ${e}.`),!1;ly.set(e,t);for(const n of dd.values())iN(n,t);return!0}function a0(t,e){const n=t.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),t.container.getProvider(e)}/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const sN={"no-app":"No Firebase App '{$appName}' has been created - call initializeApp() first","bad-app-name":"Illegal App name: '{$appName}","duplicate-app":"Firebase App named '{$appName}' already exists with different options or config","app-deleted":"Firebase App named '{$appName}' already deleted","no-options":"Need to provide options, when not being deployed to hosting via source.","invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance.","invalid-log-argument":"First argument to `onLog` must be null or a function.","idb-open":"Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.","idb-get":"Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.","idb-set":"Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.","idb-delete":"Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}."},Zi=new Yu("app","Firebase",sN);/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class oN{constructor(e,n,r){this._isDeleted=!1,this._options=Object.assign({},e),this._config=Object.assign({},n),this._name=n.name,this._automaticDataCollectionEnabled=n.automaticDataCollectionEnabled,this._container=r,this.container.addComponent(new Ks("app",()=>this,"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this.checkDestroyed(),this._automaticDataCollectionEnabled=e}get name(){return this.checkDestroyed(),this._name}get options(){return this.checkDestroyed(),this._options}get config(){return this.checkDestroyed(),this._config}get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(e){this._isDeleted=e}checkDestroyed(){if(this.isDeleted)throw Zi.create("app-deleted",{appName:this._name})}}/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const Wa=nN;function Rk(t,e={}){let n=t;typeof e!="object"&&(e={name:e});const r=Object.assign({name:ay,automaticDataCollectionEnabled:!1},e),i=r.name;if(typeof i!="string"||!i)throw Zi.create("bad-app-name",{appName:String(i)});if(n||(n=Ck()),!n)throw Zi.create("no-options");const s=dd.get(i);if(s){if(hd(n,s.options)&&hd(r,s.config))return s;throw Zi.create("duplicate-app",{appName:i})}const o=new pD(i);for(const l of ly.values())o.addComponent(l);const a=new oN(n,r,o);return dd.set(i,a),a}function Mk(t=ay){const e=dd.get(t);if(!e&&t===ay&&Ck())return Rk();if(!e)throw Zi.create("no-app",{appName:t});return e}function es(t,e,n){var r;let i=(r=rN[t])!==null&&r!==void 0?r:t;n&&(i+=`-${n}`);const s=i.match(/\s|\//),o=e.match(/\s|\//);if(s||o){const a=[`Unable to register library "${i}" with version "${e}":`];s&&a.push(`library name "${i}" contains illegal characters (whitespace or "/")`),s&&o&&a.push("and"),o&&a.push(`version name "${e}" contains illegal characters (whitespace or "/")`),Qs.warn(a.join(" "));return}ya(new Ks(`${i}-version`,()=>({library:i,version:e}),"VERSION"))}/**
+ * @license
+ * Copyright 2021 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const aN="firebase-heartbeat-database",lN=1,fu="firebase-heartbeat-store";let gm=null;function Ok(){return gm||(gm=CD(aN,lN,{upgrade:(t,e)=>{switch(e){case 0:t.createObjectStore(fu)}}}).catch(t=>{throw Zi.create("idb-open",{originalErrorMessage:t.message})})),gm}async function uN(t){try{return await(await Ok()).transaction(fu).objectStore(fu).get(Dk(t))}catch(e){if(e instanceof bi)Qs.warn(e.message);else{const n=Zi.create("idb-get",{originalErrorMessage:e==null?void 0:e.message});Qs.warn(n.message)}}}async function $1(t,e){try{const r=(await Ok()).transaction(fu,"readwrite");await r.objectStore(fu).put(e,Dk(t)),await r.done}catch(n){if(n instanceof bi)Qs.warn(n.message);else{const r=Zi.create("idb-set",{originalErrorMessage:n==null?void 0:n.message});Qs.warn(r.message)}}}function Dk(t){return`${t.name}!${t.options.appId}`}/**
+ * @license
+ * Copyright 2021 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const cN=1024,hN=30*24*60*60*1e3;class dN{constructor(e){this.container=e,this._heartbeatsCache=null;const n=this.container.getProvider("app").getImmediate();this._storage=new pN(n),this._heartbeatsCachePromise=this._storage.read().then(r=>(this._heartbeatsCache=r,r))}async triggerHeartbeat(){const n=this.container.getProvider("platform-logger").getImmediate().getPlatformInfoString(),r=L1();if(this._heartbeatsCache===null&&(this._heartbeatsCache=await this._heartbeatsCachePromise),!(this._heartbeatsCache.lastSentHeartbeatDate===r||this._heartbeatsCache.heartbeats.some(i=>i.date===r)))return this._heartbeatsCache.heartbeats.push({date:r,agent:n}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter(i=>{const s=new Date(i.date).valueOf();return Date.now()-s<=hN}),this._storage.overwrite(this._heartbeatsCache)}async getHeartbeatsHeader(){if(this._heartbeatsCache===null&&await this._heartbeatsCachePromise,this._heartbeatsCache===null||this._heartbeatsCache.heartbeats.length===0)return"";const e=L1(),{heartbeatsToSend:n,unsentEntries:r}=fN(this._heartbeatsCache.heartbeats),i=cd(JSON.stringify({version:2,heartbeats:n}));return this._heartbeatsCache.lastSentHeartbeatDate=e,r.length>0?(this._heartbeatsCache.heartbeats=r,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),i}}function L1(){return new Date().toISOString().substring(0,10)}function fN(t,e=cN){const n=[];let r=t.slice();for(const i of t){const s=n.find(o=>o.agent===i.agent);if(s){if(s.dates.push(i.date),F1(n)>e){s.dates.pop();break}}else if(n.push({agent:i.agent,dates:[i.date]}),F1(n)>e){n.pop();break}r=r.slice(1)}return{heartbeatsToSend:n,unsentEntries:r}}class pN{constructor(e){this.app=e,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return nD()?rD().then(()=>!0).catch(()=>!1):!1}async read(){return await this._canUseIndexedDBPromise?await uN(this.app)||{heartbeats:[]}:{heartbeats:[]}}async overwrite(e){var n;if(await this._canUseIndexedDBPromise){const i=await this.read();return $1(this.app,{lastSentHeartbeatDate:(n=e.lastSentHeartbeatDate)!==null&&n!==void 0?n:i.lastSentHeartbeatDate,heartbeats:e.heartbeats})}else return}async add(e){var n;if(await this._canUseIndexedDBPromise){const i=await this.read();return $1(this.app,{lastSentHeartbeatDate:(n=e.lastSentHeartbeatDate)!==null&&n!==void 0?n:i.lastSentHeartbeatDate,heartbeats:[...i.heartbeats,...e.heartbeats]})}else return}}function F1(t){return cd(JSON.stringify({version:2,heartbeats:t})).length}/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function mN(t){ya(new Ks("platform-logger",e=>new AD(e),"PRIVATE")),ya(new Ks("heartbeat",e=>new dN(e),"PRIVATE")),es(oy,N1,t),es(oy,N1,"esm2017"),es("fire-js","")}mN("");function l0(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,r=Object.getOwnPropertySymbols(t);i"u")return null;const t=navigator;return t.languages&&t.languages[0]||t.language||null}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class Ju{constructor(e,n){this.shortDelay=e,this.longDelay=n,fi(n>e,"Short delay should be less than long delay!"),this.isMobile=JO()||eD()}get(){return wN()?this.isMobile?this.longDelay:this.shortDelay:Math.min(5e3,this.shortDelay)}}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function c0(t,e){fi(t.emulator,"Emulator should always be set here");const{url:n}=t.emulator;return e?`${n}${e.startsWith("/")?e.slice(1):e}`:n}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class Fk{static initialize(e,n,r){this.fetchImpl=e,n&&(this.headersImpl=n),r&&(this.responseImpl=r)}static fetch(){if(this.fetchImpl)return this.fetchImpl;if(typeof self<"u"&&"fetch"in self)return self.fetch;Jr("Could not find fetch implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static headers(){if(this.headersImpl)return this.headersImpl;if(typeof self<"u"&&"Headers"in self)return self.Headers;Jr("Could not find Headers implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}static response(){if(this.responseImpl)return this.responseImpl;if(typeof self<"u"&&"Response"in self)return self.Response;Jr("Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill")}}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const bN={CREDENTIAL_MISMATCH:"custom-token-mismatch",MISSING_CUSTOM_TOKEN:"internal-error",INVALID_IDENTIFIER:"invalid-email",MISSING_CONTINUE_URI:"internal-error",INVALID_PASSWORD:"wrong-password",MISSING_PASSWORD:"missing-password",EMAIL_EXISTS:"email-already-in-use",PASSWORD_LOGIN_DISABLED:"operation-not-allowed",INVALID_IDP_RESPONSE:"invalid-credential",INVALID_PENDING_TOKEN:"invalid-credential",FEDERATED_USER_ID_ALREADY_LINKED:"credential-already-in-use",MISSING_REQ_TYPE:"internal-error",EMAIL_NOT_FOUND:"user-not-found",RESET_PASSWORD_EXCEED_LIMIT:"too-many-requests",EXPIRED_OOB_CODE:"expired-action-code",INVALID_OOB_CODE:"invalid-action-code",MISSING_OOB_CODE:"internal-error",CREDENTIAL_TOO_OLD_LOGIN_AGAIN:"requires-recent-login",INVALID_ID_TOKEN:"invalid-user-token",TOKEN_EXPIRED:"user-token-expired",USER_NOT_FOUND:"user-token-expired",TOO_MANY_ATTEMPTS_TRY_LATER:"too-many-requests",PASSWORD_DOES_NOT_MEET_REQUIREMENTS:"password-does-not-meet-requirements",INVALID_CODE:"invalid-verification-code",INVALID_SESSION_INFO:"invalid-verification-id",INVALID_TEMPORARY_PROOF:"invalid-credential",MISSING_SESSION_INFO:"missing-verification-id",SESSION_EXPIRED:"code-expired",MISSING_ANDROID_PACKAGE_NAME:"missing-android-pkg-name",UNAUTHORIZED_DOMAIN:"unauthorized-continue-uri",INVALID_OAUTH_CLIENT_ID:"invalid-oauth-client-id",ADMIN_ONLY_OPERATION:"admin-restricted-operation",INVALID_MFA_PENDING_CREDENTIAL:"invalid-multi-factor-session",MFA_ENROLLMENT_NOT_FOUND:"multi-factor-info-not-found",MISSING_MFA_ENROLLMENT_ID:"missing-multi-factor-info",MISSING_MFA_PENDING_CREDENTIAL:"missing-multi-factor-session",SECOND_FACTOR_EXISTS:"second-factor-already-in-use",SECOND_FACTOR_LIMIT_EXCEEDED:"maximum-second-factor-count-exceeded",BLOCKING_FUNCTION_ERROR_RESPONSE:"internal-error",RECAPTCHA_NOT_ENABLED:"recaptcha-not-enabled",MISSING_RECAPTCHA_TOKEN:"missing-recaptcha-token",INVALID_RECAPTCHA_TOKEN:"invalid-recaptcha-token",INVALID_RECAPTCHA_ACTION:"invalid-recaptcha-action",MISSING_CLIENT_TYPE:"missing-client-type",MISSING_RECAPTCHA_VERSION:"missing-recaptcha-version",INVALID_RECAPTCHA_VERSION:"invalid-recaptcha-version",INVALID_REQ_TYPE:"invalid-req-type"};/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const EN=new Ju(3e4,6e4);function Vk(t,e){return t.tenantId&&!e.tenantId?Object.assign(Object.assign({},e),{tenantId:t.tenantId}):e}async function Zu(t,e,n,r,i={}){return zk(t,i,async()=>{let s={},o={};r&&(e==="GET"?o=r:s={body:JSON.stringify(r)});const a=Xu(Object.assign({key:t.config.apiKey},o)).slice(1),l=await t._getAdditionalHeaders();return l["Content-Type"]="application/json",t.languageCode&&(l["X-Firebase-Locale"]=t.languageCode),Fk.fetch()(Uk(t,t.config.apiHost,n,a),Object.assign({method:e,headers:l,referrerPolicy:"no-referrer"},s))})}async function zk(t,e,n){t._canInitEmulator=!1;const r=Object.assign(Object.assign({},bN),e);try{const i=new SN(t),s=await Promise.race([n(),i.promise]);i.clearNetworkTimeout();const o=await s.json();if("needConfirmation"in o)throw Wc(t,"account-exists-with-different-credential",o);if(s.ok&&!("errorMessage"in o))return o;{const a=s.ok?o.errorMessage:o.error.message,[l,u]=a.split(" : ");if(l==="FEDERATED_USER_ID_ALREADY_LINKED")throw Wc(t,"credential-already-in-use",o);if(l==="EMAIL_EXISTS")throw Wc(t,"email-already-in-use",o);if(l==="USER_DISABLED")throw Wc(t,"user-disabled",o);const c=r[l]||l.toLowerCase().replace(/[_\s]+/g,"-");if(u)throw Lk(t,c,u);zr(t,c)}}catch(i){if(i instanceof bi)throw i;zr(t,"network-request-failed",{message:String(i)})}}async function TN(t,e,n,r,i={}){const s=await Zu(t,e,n,r,i);return"mfaPendingCredential"in s&&zr(t,"multi-factor-auth-required",{_serverResponse:s}),s}function Uk(t,e,n,r){const i=`${e}${n}?${r}`;return t.config.emulator?c0(t.config,i):`${t.config.apiScheme}://${i}`}class SN{constructor(e){this.auth=e,this.timer=null,this.promise=new Promise((n,r)=>{this.timer=setTimeout(()=>r(Or(this.auth,"network-request-failed")),EN.get())})}clearNetworkTimeout(){clearTimeout(this.timer)}}function Wc(t,e,n){const r={appName:t.name};n.email&&(r.email=n.email),n.phoneNumber&&(r.phoneNumber=n.phoneNumber);const i=Or(t,e,r);return i.customData._tokenResponse=n,i}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */async function kN(t,e){return Zu(t,"POST","/v1/accounts:delete",e)}async function CN(t,e){return Zu(t,"POST","/v1/accounts:lookup",e)}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function Fl(t){if(t)try{const e=new Date(Number(t));if(!isNaN(e.getTime()))return e.toUTCString()}catch{}}async function IN(t,e=!1){const n=pn(t),r=await n.getIdToken(e),i=h0(r);le(i&&i.exp&&i.auth_time&&i.iat,n.auth,"internal-error");const s=typeof i.firebase=="object"?i.firebase:void 0,o=s==null?void 0:s.sign_in_provider;return{claims:i,token:r,authTime:Fl(ym(i.auth_time)),issuedAtTime:Fl(ym(i.iat)),expirationTime:Fl(ym(i.exp)),signInProvider:o||null,signInSecondFactor:(s==null?void 0:s.sign_in_second_factor)||null}}function ym(t){return Number(t)*1e3}function h0(t){const[e,n,r]=t.split(".");if(e===void 0||n===void 0||r===void 0)return bh("JWT malformed, contained fewer than 3 sections"),null;try{const i=Sk(n);return i?JSON.parse(i):(bh("Failed to decode base64 JWT payload"),null)}catch(i){return bh("Caught error parsing JWT payload as JSON",i==null?void 0:i.toString()),null}}function PN(t){const e=h0(t);return le(e,"internal-error"),le(typeof e.exp<"u","internal-error"),le(typeof e.iat<"u","internal-error"),Number(e.exp)-Number(e.iat)}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */async function pu(t,e,n=!1){if(n)return e;try{return await e}catch(r){throw r instanceof bi&&AN(r)&&t.auth.currentUser===t&&await t.auth.signOut(),r}}function AN({code:t}){return t==="auth/user-disabled"||t==="auth/user-token-expired"}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class RN{constructor(e){this.user=e,this.isRunning=!1,this.timerId=null,this.errorBackoff=3e4}_start(){this.isRunning||(this.isRunning=!0,this.schedule())}_stop(){this.isRunning&&(this.isRunning=!1,this.timerId!==null&&clearTimeout(this.timerId))}getInterval(e){var n;if(e){const r=this.errorBackoff;return this.errorBackoff=Math.min(this.errorBackoff*2,96e4),r}else{this.errorBackoff=3e4;const i=((n=this.user.stsTokenManager.expirationTime)!==null&&n!==void 0?n:0)-Date.now()-3e5;return Math.max(0,i)}}schedule(e=!1){if(!this.isRunning)return;const n=this.getInterval(e);this.timerId=setTimeout(async()=>{await this.iteration()},n)}async iteration(){try{await this.user.getIdToken(!0)}catch(e){(e==null?void 0:e.code)==="auth/network-request-failed"&&this.schedule(!0);return}this.schedule()}}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class jk{constructor(e,n){this.createdAt=e,this.lastLoginAt=n,this._initializeTime()}_initializeTime(){this.lastSignInTime=Fl(this.lastLoginAt),this.creationTime=Fl(this.createdAt)}_copy(e){this.createdAt=e.createdAt,this.lastLoginAt=e.lastLoginAt,this._initializeTime()}toJSON(){return{createdAt:this.createdAt,lastLoginAt:this.lastLoginAt}}}/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */async function pd(t){var e;const n=t.auth,r=await t.getIdToken(),i=await pu(t,CN(n,{idToken:r}));le(i==null?void 0:i.users.length,n,"internal-error");const s=i.users[0];t._notifyReloadListener(s);const o=!((e=s.providerUserInfo)===null||e===void 0)&&e.length?DN(s.providerUserInfo):[],a=ON(t.providerData,o),l=t.isAnonymous,u=!(t.email&&s.passwordHash)&&!(a!=null&&a.length),c=l?u:!1,h={uid:s.localId,displayName:s.displayName||null,photoURL:s.photoUrl||null,email:s.email||null,emailVerified:s.emailVerified||!1,phoneNumber:s.phoneNumber||null,tenantId:s.tenantId||null,providerData:a,metadata:new jk(s.createdAt,s.lastLoginAt),isAnonymous:c};Object.assign(t,h)}async function MN(t){const e=pn(t);await pd(e),await e.auth._persistUserIfCurrent(e),e.auth._notifyListenersIfCurrent(e)}function ON(t,e){return[...t.filter(r=>!e.some(i=>i.providerId===r.providerId)),...e]}function DN(t){return t.map(e=>{var{providerId:n}=e,r=l0(e,["providerId"]);return{providerId:n,uid:r.rawId||"",displayName:r.displayName||null,email:r.email||null,phoneNumber:r.phoneNumber||null,photoURL:r.photoUrl||null}})}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */async function NN(t,e){const n=await zk(t,{},async()=>{const r=Xu({grant_type:"refresh_token",refresh_token:e}).slice(1),{tokenApiHost:i,apiKey:s}=t.config,o=Uk(t,i,"/v1/token",`key=${s}`),a=await t._getAdditionalHeaders();return a["Content-Type"]="application/x-www-form-urlencoded",Fk.fetch()(o,{method:"POST",headers:a,body:r})});return{accessToken:n.access_token,expiresIn:n.expires_in,refreshToken:n.refresh_token}}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class mu{constructor(){this.refreshToken=null,this.accessToken=null,this.expirationTime=null}get isExpired(){return!this.expirationTime||Date.now()>this.expirationTime-3e4}updateFromServerResponse(e){le(e.idToken,"internal-error"),le(typeof e.idToken<"u","internal-error"),le(typeof e.refreshToken<"u","internal-error");const n="expiresIn"in e&&typeof e.expiresIn<"u"?Number(e.expiresIn):PN(e.idToken);this.updateTokensAndExpiration(e.idToken,e.refreshToken,n)}async getToken(e,n=!1){return le(!this.accessToken||this.refreshToken,e,"user-token-expired"),!n&&this.accessToken&&!this.isExpired?this.accessToken:this.refreshToken?(await this.refresh(e,this.refreshToken),this.accessToken):null}clearRefreshToken(){this.refreshToken=null}async refresh(e,n){const{accessToken:r,refreshToken:i,expiresIn:s}=await NN(e,n);this.updateTokensAndExpiration(r,i,Number(s))}updateTokensAndExpiration(e,n,r){this.refreshToken=n||null,this.accessToken=e||null,this.expirationTime=Date.now()+r*1e3}static fromJSON(e,n){const{refreshToken:r,accessToken:i,expirationTime:s}=n,o=new mu;return r&&(le(typeof r=="string","internal-error",{appName:e}),o.refreshToken=r),i&&(le(typeof i=="string","internal-error",{appName:e}),o.accessToken=i),s&&(le(typeof s=="number","internal-error",{appName:e}),o.expirationTime=s),o}toJSON(){return{refreshToken:this.refreshToken,accessToken:this.accessToken,expirationTime:this.expirationTime}}_assign(e){this.accessToken=e.accessToken,this.refreshToken=e.refreshToken,this.expirationTime=e.expirationTime}_clone(){return Object.assign(new mu,this.toJSON())}_performRefresh(){return Jr("not implemented")}}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function Ai(t,e){le(typeof t=="string"||typeof t>"u","internal-error",{appName:e})}class Fs{constructor(e){var{uid:n,auth:r,stsTokenManager:i}=e,s=l0(e,["uid","auth","stsTokenManager"]);this.providerId="firebase",this.proactiveRefresh=new RN(this),this.reloadUserInfo=null,this.reloadListener=null,this.uid=n,this.auth=r,this.stsTokenManager=i,this.accessToken=i.accessToken,this.displayName=s.displayName||null,this.email=s.email||null,this.emailVerified=s.emailVerified||!1,this.phoneNumber=s.phoneNumber||null,this.photoURL=s.photoURL||null,this.isAnonymous=s.isAnonymous||!1,this.tenantId=s.tenantId||null,this.providerData=s.providerData?[...s.providerData]:[],this.metadata=new jk(s.createdAt||void 0,s.lastLoginAt||void 0)}async getIdToken(e){const n=await pu(this,this.stsTokenManager.getToken(this.auth,e));return le(n,this.auth,"internal-error"),this.accessToken!==n&&(this.accessToken=n,await this.auth._persistUserIfCurrent(this),this.auth._notifyListenersIfCurrent(this)),n}getIdTokenResult(e){return IN(this,e)}reload(){return MN(this)}_assign(e){this!==e&&(le(this.uid===e.uid,this.auth,"internal-error"),this.displayName=e.displayName,this.photoURL=e.photoURL,this.email=e.email,this.emailVerified=e.emailVerified,this.phoneNumber=e.phoneNumber,this.isAnonymous=e.isAnonymous,this.tenantId=e.tenantId,this.providerData=e.providerData.map(n=>Object.assign({},n)),this.metadata._copy(e.metadata),this.stsTokenManager._assign(e.stsTokenManager))}_clone(e){const n=new Fs(Object.assign(Object.assign({},this),{auth:e,stsTokenManager:this.stsTokenManager._clone()}));return n.metadata._copy(this.metadata),n}_onReload(e){le(!this.reloadListener,this.auth,"internal-error"),this.reloadListener=e,this.reloadUserInfo&&(this._notifyReloadListener(this.reloadUserInfo),this.reloadUserInfo=null)}_notifyReloadListener(e){this.reloadListener?this.reloadListener(e):this.reloadUserInfo=e}_startProactiveRefresh(){this.proactiveRefresh._start()}_stopProactiveRefresh(){this.proactiveRefresh._stop()}async _updateTokensIfNecessary(e,n=!1){let r=!1;e.idToken&&e.idToken!==this.stsTokenManager.accessToken&&(this.stsTokenManager.updateFromServerResponse(e),r=!0),n&&await pd(this),await this.auth._persistUserIfCurrent(this),r&&this.auth._notifyListenersIfCurrent(this)}async delete(){const e=await this.getIdToken();return await pu(this,kN(this.auth,{idToken:e})),this.stsTokenManager.clearRefreshToken(),this.auth.signOut()}toJSON(){return Object.assign(Object.assign({uid:this.uid,email:this.email||void 0,emailVerified:this.emailVerified,displayName:this.displayName||void 0,isAnonymous:this.isAnonymous,photoURL:this.photoURL||void 0,phoneNumber:this.phoneNumber||void 0,tenantId:this.tenantId||void 0,providerData:this.providerData.map(e=>Object.assign({},e)),stsTokenManager:this.stsTokenManager.toJSON(),_redirectEventId:this._redirectEventId},this.metadata.toJSON()),{apiKey:this.auth.config.apiKey,appName:this.auth.name})}get refreshToken(){return this.stsTokenManager.refreshToken||""}static _fromJSON(e,n){var r,i,s,o,a,l,u,c;const h=(r=n.displayName)!==null&&r!==void 0?r:void 0,d=(i=n.email)!==null&&i!==void 0?i:void 0,f=(s=n.phoneNumber)!==null&&s!==void 0?s:void 0,p=(o=n.photoURL)!==null&&o!==void 0?o:void 0,m=(a=n.tenantId)!==null&&a!==void 0?a:void 0,w=(l=n._redirectEventId)!==null&&l!==void 0?l:void 0,g=(u=n.createdAt)!==null&&u!==void 0?u:void 0,y=(c=n.lastLoginAt)!==null&&c!==void 0?c:void 0,{uid:v,emailVerified:_,isAnonymous:x,providerData:b,stsTokenManager:E}=n;le(v&&E,e,"internal-error");const C=mu.fromJSON(this.name,E);le(typeof v=="string",e,"internal-error"),Ai(h,e.name),Ai(d,e.name),le(typeof _=="boolean",e,"internal-error"),le(typeof x=="boolean",e,"internal-error"),Ai(f,e.name),Ai(p,e.name),Ai(m,e.name),Ai(w,e.name),Ai(g,e.name),Ai(y,e.name);const A=new Fs({uid:v,auth:e,email:d,emailVerified:_,displayName:h,isAnonymous:x,photoURL:p,phoneNumber:f,tenantId:m,stsTokenManager:C,createdAt:g,lastLoginAt:y});return b&&Array.isArray(b)&&(A.providerData=b.map(S=>Object.assign({},S))),w&&(A._redirectEventId=w),A}static async _fromIdTokenResponse(e,n,r=!1){const i=new mu;i.updateFromServerResponse(n);const s=new Fs({uid:n.localId,auth:e,stsTokenManager:i,isAnonymous:r});return await pd(s),s}}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const z1=new Map;function Zr(t){fi(t instanceof Function,"Expected a class definition");let e=z1.get(t);return e?(fi(e instanceof t,"Instance stored in cache mismatched with class"),e):(e=new t,z1.set(t,e),e)}/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class Bk{constructor(){this.type="NONE",this.storage={}}async _isAvailable(){return!0}async _set(e,n){this.storage[e]=n}async _get(e){const n=this.storage[e];return n===void 0?null:n}async _remove(e){delete this.storage[e]}_addListener(e,n){}_removeListener(e,n){}}Bk.type="NONE";const U1=Bk;/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function Eh(t,e,n){return`firebase:${t}:${e}:${n}`}class ta{constructor(e,n,r){this.persistence=e,this.auth=n,this.userKey=r;const{config:i,name:s}=this.auth;this.fullUserKey=Eh(this.userKey,i.apiKey,s),this.fullPersistenceKey=Eh("persistence",i.apiKey,s),this.boundEventHandler=n._onStorageEvent.bind(n),this.persistence._addListener(this.fullUserKey,this.boundEventHandler)}setCurrentUser(e){return this.persistence._set(this.fullUserKey,e.toJSON())}async getCurrentUser(){const e=await this.persistence._get(this.fullUserKey);return e?Fs._fromJSON(this.auth,e):null}removeCurrentUser(){return this.persistence._remove(this.fullUserKey)}savePersistenceForRedirect(){return this.persistence._set(this.fullPersistenceKey,this.persistence.type)}async setPersistence(e){if(this.persistence===e)return;const n=await this.getCurrentUser();if(await this.removeCurrentUser(),this.persistence=e,n)return this.setCurrentUser(n)}delete(){this.persistence._removeListener(this.fullUserKey,this.boundEventHandler)}static async create(e,n,r="authUser"){if(!n.length)return new ta(Zr(U1),e,r);const i=(await Promise.all(n.map(async u=>{if(await u._isAvailable())return u}))).filter(u=>u);let s=i[0]||Zr(U1);const o=Eh(r,e.config.apiKey,e.name);let a=null;for(const u of n)try{const c=await u._get(o);if(c){const h=Fs._fromJSON(e,c);u!==s&&(a=h),s=u;break}}catch{}const l=i.filter(u=>u._shouldAllowMigration);return!s._shouldAllowMigration||!l.length?new ta(s,e,r):(s=l[0],a&&await s._set(o,a.toJSON()),await Promise.all(n.map(async u=>{if(u!==s)try{await u._remove(o)}catch{}})),new ta(s,e,r))}}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function j1(t){const e=t.toLowerCase();if(e.includes("opera/")||e.includes("opr/")||e.includes("opios/"))return"Opera";if(qk(e))return"IEMobile";if(e.includes("msie")||e.includes("trident/"))return"IE";if(e.includes("edge/"))return"Edge";if(Hk(e))return"Firefox";if(e.includes("silk/"))return"Silk";if(Kk(e))return"Blackberry";if(Qk(e))return"Webos";if(d0(e))return"Safari";if((e.includes("chrome/")||Wk(e))&&!e.includes("edge/"))return"Chrome";if(Gk(e))return"Android";{const n=/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/,r=t.match(n);if((r==null?void 0:r.length)===2)return r[1]}return"Other"}function Hk(t=qt()){return/firefox\//i.test(t)}function d0(t=qt()){const e=t.toLowerCase();return e.includes("safari/")&&!e.includes("chrome/")&&!e.includes("crios/")&&!e.includes("android")}function Wk(t=qt()){return/crios\//i.test(t)}function qk(t=qt()){return/iemobile/i.test(t)}function Gk(t=qt()){return/android/i.test(t)}function Kk(t=qt()){return/blackberry/i.test(t)}function Qk(t=qt()){return/webos/i.test(t)}function bf(t=qt()){return/iphone|ipad|ipod/i.test(t)||/macintosh/i.test(t)&&/mobile/i.test(t)}function $N(t=qt()){var e;return bf(t)&&!!(!((e=window.navigator)===null||e===void 0)&&e.standalone)}function LN(){return tD()&&document.documentMode===10}function Yk(t=qt()){return bf(t)||Gk(t)||Qk(t)||Kk(t)||/windows phone/i.test(t)||qk(t)}function FN(){try{return!!(window&&window!==window.top)}catch{return!1}}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function Xk(t,e=[]){let n;switch(t){case"Browser":n=j1(qt());break;case"Worker":n=`${j1(qt())}-${t}`;break;default:n=t}const r=e.length?e.join(","):"FirebaseCore-web";return`${n}/JsCore/${Wa}/${r}`}/**
+ * @license
+ * Copyright 2022 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class VN{constructor(e){this.auth=e,this.queue=[]}pushCallback(e,n){const r=s=>new Promise((o,a)=>{try{const l=e(s);o(l)}catch(l){a(l)}});r.onAbort=n,this.queue.push(r);const i=this.queue.length-1;return()=>{this.queue[i]=()=>Promise.resolve()}}async runMiddleware(e){if(this.auth.currentUser===e)return;const n=[];try{for(const r of this.queue)await r(e),r.onAbort&&n.push(r.onAbort)}catch(r){n.reverse();for(const i of n)try{i()}catch{}throw this.auth._errorFactory.create("login-blocked",{originalMessage:r==null?void 0:r.message})}}}/**
+ * @license
+ * Copyright 2023 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */async function zN(t,e={}){return Zu(t,"GET","/v2/passwordPolicy",Vk(t,e))}/**
+ * @license
+ * Copyright 2023 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const UN=6;class jN{constructor(e){var n,r,i,s;const o=e.customStrengthOptions;this.customStrengthOptions={},this.customStrengthOptions.minPasswordLength=(n=o.minPasswordLength)!==null&&n!==void 0?n:UN,o.maxPasswordLength&&(this.customStrengthOptions.maxPasswordLength=o.maxPasswordLength),o.containsLowercaseCharacter!==void 0&&(this.customStrengthOptions.containsLowercaseLetter=o.containsLowercaseCharacter),o.containsUppercaseCharacter!==void 0&&(this.customStrengthOptions.containsUppercaseLetter=o.containsUppercaseCharacter),o.containsNumericCharacter!==void 0&&(this.customStrengthOptions.containsNumericCharacter=o.containsNumericCharacter),o.containsNonAlphanumericCharacter!==void 0&&(this.customStrengthOptions.containsNonAlphanumericCharacter=o.containsNonAlphanumericCharacter),this.enforcementState=e.enforcementState,this.enforcementState==="ENFORCEMENT_STATE_UNSPECIFIED"&&(this.enforcementState="OFF"),this.allowedNonAlphanumericCharacters=(i=(r=e.allowedNonAlphanumericCharacters)===null||r===void 0?void 0:r.join(""))!==null&&i!==void 0?i:"",this.forceUpgradeOnSignin=(s=e.forceUpgradeOnSignin)!==null&&s!==void 0?s:!1,this.schemaVersion=e.schemaVersion}validatePassword(e){var n,r,i,s,o,a;const l={isValid:!0,passwordPolicy:this};return this.validatePasswordLengthOptions(e,l),this.validatePasswordCharacterOptions(e,l),l.isValid&&(l.isValid=(n=l.meetsMinPasswordLength)!==null&&n!==void 0?n:!0),l.isValid&&(l.isValid=(r=l.meetsMaxPasswordLength)!==null&&r!==void 0?r:!0),l.isValid&&(l.isValid=(i=l.containsLowercaseLetter)!==null&&i!==void 0?i:!0),l.isValid&&(l.isValid=(s=l.containsUppercaseLetter)!==null&&s!==void 0?s:!0),l.isValid&&(l.isValid=(o=l.containsNumericCharacter)!==null&&o!==void 0?o:!0),l.isValid&&(l.isValid=(a=l.containsNonAlphanumericCharacter)!==null&&a!==void 0?a:!0),l}validatePasswordLengthOptions(e,n){const r=this.customStrengthOptions.minPasswordLength,i=this.customStrengthOptions.maxPasswordLength;r&&(n.meetsMinPasswordLength=e.length>=r),i&&(n.meetsMaxPasswordLength=e.length<=i)}validatePasswordCharacterOptions(e,n){this.updatePasswordCharacterOptionsStatuses(n,!1,!1,!1,!1);let r;for(let i=0;i="a"&&r<="z",r>="A"&&r<="Z",r>="0"&&r<="9",this.allowedNonAlphanumericCharacters.includes(r))}updatePasswordCharacterOptionsStatuses(e,n,r,i,s){this.customStrengthOptions.containsLowercaseLetter&&(e.containsLowercaseLetter||(e.containsLowercaseLetter=n)),this.customStrengthOptions.containsUppercaseLetter&&(e.containsUppercaseLetter||(e.containsUppercaseLetter=r)),this.customStrengthOptions.containsNumericCharacter&&(e.containsNumericCharacter||(e.containsNumericCharacter=i)),this.customStrengthOptions.containsNonAlphanumericCharacter&&(e.containsNonAlphanumericCharacter||(e.containsNonAlphanumericCharacter=s))}}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class BN{constructor(e,n,r,i){this.app=e,this.heartbeatServiceProvider=n,this.appCheckServiceProvider=r,this.config=i,this.currentUser=null,this.emulatorConfig=null,this.operations=Promise.resolve(),this.authStateSubscription=new B1(this),this.idTokenSubscription=new B1(this),this.beforeStateQueue=new VN(this),this.redirectUser=null,this.isProactiveRefreshEnabled=!1,this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION=1,this._canInitEmulator=!0,this._isInitialized=!1,this._deleted=!1,this._initializationPromise=null,this._popupRedirectResolver=null,this._errorFactory=$k,this._agentRecaptchaConfig=null,this._tenantRecaptchaConfigs={},this._projectPasswordPolicy=null,this._tenantPasswordPolicies={},this.lastNotifiedUid=void 0,this.languageCode=null,this.tenantId=null,this.settings={appVerificationDisabledForTesting:!1},this.frameworks=[],this.name=e.name,this.clientVersion=i.sdkClientVersion}_initializeWithPersistence(e,n){return n&&(this._popupRedirectResolver=Zr(n)),this._initializationPromise=this.queue(async()=>{var r,i;if(!this._deleted&&(this.persistenceManager=await ta.create(this,e),!this._deleted)){if(!((r=this._popupRedirectResolver)===null||r===void 0)&&r._shouldInitProactively)try{await this._popupRedirectResolver._initialize(this)}catch{}await this.initializeCurrentUser(n),this.lastNotifiedUid=((i=this.currentUser)===null||i===void 0?void 0:i.uid)||null,!this._deleted&&(this._isInitialized=!0)}}),this._initializationPromise}async _onStorageEvent(){if(this._deleted)return;const e=await this.assertedPersistence.getCurrentUser();if(!(!this.currentUser&&!e)){if(this.currentUser&&e&&this.currentUser.uid===e.uid){this._currentUser._assign(e),await this.currentUser.getIdToken();return}await this._updateCurrentUser(e,!0)}}async initializeCurrentUser(e){var n;const r=await this.assertedPersistence.getCurrentUser();let i=r,s=!1;if(e&&this.config.authDomain){await this.getOrInitRedirectPersistenceManager();const o=(n=this.redirectUser)===null||n===void 0?void 0:n._redirectEventId,a=i==null?void 0:i._redirectEventId,l=await this.tryRedirectSignIn(e);(!o||o===a)&&(l!=null&&l.user)&&(i=l.user,s=!0)}if(!i)return this.directlySetCurrentUser(null);if(!i._redirectEventId){if(s)try{await this.beforeStateQueue.runMiddleware(i)}catch(o){i=r,this._popupRedirectResolver._overrideRedirectResult(this,()=>Promise.reject(o))}return i?this.reloadAndSetCurrentUserOrClear(i):this.directlySetCurrentUser(null)}return le(this._popupRedirectResolver,this,"argument-error"),await this.getOrInitRedirectPersistenceManager(),this.redirectUser&&this.redirectUser._redirectEventId===i._redirectEventId?this.directlySetCurrentUser(i):this.reloadAndSetCurrentUserOrClear(i)}async tryRedirectSignIn(e){let n=null;try{n=await this._popupRedirectResolver._completeRedirectFn(this,e,!0)}catch{await this._setRedirectUser(null)}return n}async reloadAndSetCurrentUserOrClear(e){try{await pd(e)}catch(n){if((n==null?void 0:n.code)!=="auth/network-request-failed")return this.directlySetCurrentUser(null)}return this.directlySetCurrentUser(e)}useDeviceLanguage(){this.languageCode=xN()}async _delete(){this._deleted=!0}async updateCurrentUser(e){const n=e?pn(e):null;return n&&le(n.auth.config.apiKey===this.config.apiKey,this,"invalid-user-token"),this._updateCurrentUser(n&&n._clone(this))}async _updateCurrentUser(e,n=!1){if(!this._deleted)return e&&le(this.tenantId===e.tenantId,this,"tenant-id-mismatch"),n||await this.beforeStateQueue.runMiddleware(e),this.queue(async()=>{await this.directlySetCurrentUser(e),this.notifyAuthListeners()})}async signOut(){return await this.beforeStateQueue.runMiddleware(null),(this.redirectPersistenceManager||this._popupRedirectResolver)&&await this._setRedirectUser(null),this._updateCurrentUser(null,!0)}setPersistence(e){return this.queue(async()=>{await this.assertedPersistence.setPersistence(Zr(e))})}_getRecaptchaConfig(){return this.tenantId==null?this._agentRecaptchaConfig:this._tenantRecaptchaConfigs[this.tenantId]}async validatePassword(e){this._getPasswordPolicyInternal()||await this._updatePasswordPolicy();const n=this._getPasswordPolicyInternal();return n.schemaVersion!==this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION?Promise.reject(this._errorFactory.create("unsupported-password-policy-schema-version",{})):n.validatePassword(e)}_getPasswordPolicyInternal(){return this.tenantId===null?this._projectPasswordPolicy:this._tenantPasswordPolicies[this.tenantId]}async _updatePasswordPolicy(){const e=await zN(this),n=new jN(e);this.tenantId===null?this._projectPasswordPolicy=n:this._tenantPasswordPolicies[this.tenantId]=n}_getPersistence(){return this.assertedPersistence.persistence.type}_updateErrorMap(e){this._errorFactory=new Yu("auth","Firebase",e())}onAuthStateChanged(e,n,r){return this.registerStateListener(this.authStateSubscription,e,n,r)}beforeAuthStateChanged(e,n){return this.beforeStateQueue.pushCallback(e,n)}onIdTokenChanged(e,n,r){return this.registerStateListener(this.idTokenSubscription,e,n,r)}authStateReady(){return new Promise((e,n)=>{if(this.currentUser)e();else{const r=this.onAuthStateChanged(()=>{r(),e()},n)}})}toJSON(){var e;return{apiKey:this.config.apiKey,authDomain:this.config.authDomain,appName:this.name,currentUser:(e=this._currentUser)===null||e===void 0?void 0:e.toJSON()}}async _setRedirectUser(e,n){const r=await this.getOrInitRedirectPersistenceManager(n);return e===null?r.removeCurrentUser():r.setCurrentUser(e)}async getOrInitRedirectPersistenceManager(e){if(!this.redirectPersistenceManager){const n=e&&Zr(e)||this._popupRedirectResolver;le(n,this,"argument-error"),this.redirectPersistenceManager=await ta.create(this,[Zr(n._redirectPersistence)],"redirectUser"),this.redirectUser=await this.redirectPersistenceManager.getCurrentUser()}return this.redirectPersistenceManager}async _redirectUserForId(e){var n,r;return this._isInitialized&&await this.queue(async()=>{}),((n=this._currentUser)===null||n===void 0?void 0:n._redirectEventId)===e?this._currentUser:((r=this.redirectUser)===null||r===void 0?void 0:r._redirectEventId)===e?this.redirectUser:null}async _persistUserIfCurrent(e){if(e===this.currentUser)return this.queue(async()=>this.directlySetCurrentUser(e))}_notifyListenersIfCurrent(e){e===this.currentUser&&this.notifyAuthListeners()}_key(){return`${this.config.authDomain}:${this.config.apiKey}:${this.name}`}_startProactiveRefresh(){this.isProactiveRefreshEnabled=!0,this.currentUser&&this._currentUser._startProactiveRefresh()}_stopProactiveRefresh(){this.isProactiveRefreshEnabled=!1,this.currentUser&&this._currentUser._stopProactiveRefresh()}get _currentUser(){return this.currentUser}notifyAuthListeners(){var e,n;if(!this._isInitialized)return;this.idTokenSubscription.next(this.currentUser);const r=(n=(e=this.currentUser)===null||e===void 0?void 0:e.uid)!==null&&n!==void 0?n:null;this.lastNotifiedUid!==r&&(this.lastNotifiedUid=r,this.authStateSubscription.next(this.currentUser))}registerStateListener(e,n,r,i){if(this._deleted)return()=>{};const s=typeof n=="function"?n:n.next.bind(n);let o=!1;const a=this._isInitialized?Promise.resolve():this._initializationPromise;if(le(a,this,"internal-error"),a.then(()=>{o||s(this.currentUser)}),typeof n=="function"){const l=e.addObserver(n,r,i);return()=>{o=!0,l()}}else{const l=e.addObserver(n);return()=>{o=!0,l()}}}async directlySetCurrentUser(e){this.currentUser&&this.currentUser!==e&&this._currentUser._stopProactiveRefresh(),e&&this.isProactiveRefreshEnabled&&e._startProactiveRefresh(),this.currentUser=e,e?await this.assertedPersistence.setCurrentUser(e):await this.assertedPersistence.removeCurrentUser()}queue(e){return this.operations=this.operations.then(e,e),this.operations}get assertedPersistence(){return le(this.persistenceManager,this,"internal-error"),this.persistenceManager}_logFramework(e){!e||this.frameworks.includes(e)||(this.frameworks.push(e),this.frameworks.sort(),this.clientVersion=Xk(this.config.clientPlatform,this._getFrameworks()))}_getFrameworks(){return this.frameworks}async _getAdditionalHeaders(){var e;const n={"X-Client-Version":this.clientVersion};this.app.options.appId&&(n["X-Firebase-gmpid"]=this.app.options.appId);const r=await((e=this.heartbeatServiceProvider.getImmediate({optional:!0}))===null||e===void 0?void 0:e.getHeartbeatsHeader());r&&(n["X-Firebase-Client"]=r);const i=await this._getAppCheckToken();return i&&(n["X-Firebase-AppCheck"]=i),n}async _getAppCheckToken(){var e;const n=await((e=this.appCheckServiceProvider.getImmediate({optional:!0}))===null||e===void 0?void 0:e.getToken());return n!=null&&n.error&&yN(`Error while retrieving App Check token: ${n.error}`),n==null?void 0:n.token}}function Ef(t){return pn(t)}class B1{constructor(e){this.auth=e,this.observer=null,this.addObserver=lD(n=>this.observer=n)}get next(){return le(this.observer,this.auth,"internal-error"),this.observer.next.bind(this.observer)}}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function HN(){var t,e;return(e=(t=document.getElementsByTagName("head"))===null||t===void 0?void 0:t[0])!==null&&e!==void 0?e:document}function WN(t){return new Promise((e,n)=>{const r=document.createElement("script");r.setAttribute("src",t),r.onload=e,r.onerror=i=>{const s=Or("internal-error");s.customData=i,n(s)},r.type="text/javascript",r.charset="UTF-8",HN().appendChild(r)})}function qN(t){return`__${t}${Math.floor(Math.random()*1e6)}`}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function GN(t,e){const n=a0(t,"auth");if(n.isInitialized()){const i=n.getImmediate(),s=n.getOptions();if(hd(s,e??{}))return i;zr(i,"already-initialized")}return n.initialize({options:e})}function KN(t,e){const n=(e==null?void 0:e.persistence)||[],r=(Array.isArray(n)?n:[n]).map(Zr);e!=null&&e.errorMap&&t._updateErrorMap(e.errorMap),t._initializeWithPersistence(r,e==null?void 0:e.popupRedirectResolver)}function QN(t,e,n){const r=Ef(t);le(r._canInitEmulator,r,"emulator-config-failed"),le(/^https?:\/\//.test(e),r,"invalid-emulator-scheme");const i=!!(n!=null&&n.disableWarnings),s=Jk(e),{host:o,port:a}=YN(e),l=a===null?"":`:${a}`;r.config.emulator={url:`${s}//${o}${l}/`},r.settings.appVerificationDisabledForTesting=!0,r.emulatorConfig=Object.freeze({host:o,port:a,protocol:s.replace(":",""),options:Object.freeze({disableWarnings:i})}),i||XN()}function Jk(t){const e=t.indexOf(":");return e<0?"":t.substr(0,e+1)}function YN(t){const e=Jk(t),n=/(\/\/)?([^?#/]+)/.exec(t.substr(e.length));if(!n)return{host:"",port:null};const r=n[2].split("@").pop()||"",i=/^(\[[^\]]+\])(:|$)/.exec(r);if(i){const s=i[1];return{host:s,port:H1(r.substr(s.length+1))}}else{const[s,o]=r.split(":");return{host:s,port:H1(o)}}}function H1(t){if(!t)return null;const e=Number(t);return isNaN(e)?null:e}function XN(){function t(){const e=document.createElement("p"),n=e.style;e.innerText="Running in emulator mode. Do not use with production credentials.",n.position="fixed",n.width="100%",n.backgroundColor="#ffffff",n.border=".1em solid #000000",n.color="#b50000",n.bottom="0px",n.left="0px",n.margin="0px",n.zIndex="10000",n.textAlign="center",e.classList.add("firebase-emulator-warning"),document.body.appendChild(e)}typeof console<"u"&&typeof console.info=="function"&&console.info("WARNING: You are using the Auth Emulator, which is intended for local testing only. Do not use with production credentials."),typeof window<"u"&&typeof document<"u"&&(document.readyState==="loading"?window.addEventListener("DOMContentLoaded",t):t())}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class Zk{constructor(e,n){this.providerId=e,this.signInMethod=n}toJSON(){return Jr("not implemented")}_getIdTokenResponse(e){return Jr("not implemented")}_linkToIdToken(e,n){return Jr("not implemented")}_getReauthenticationResolver(e){return Jr("not implemented")}}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */async function na(t,e){return TN(t,"POST","/v1/accounts:signInWithIdp",Vk(t,e))}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const JN="http://localhost";class Ys extends Zk{constructor(){super(...arguments),this.pendingToken=null}static _fromParams(e){const n=new Ys(e.providerId,e.signInMethod);return e.idToken||e.accessToken?(e.idToken&&(n.idToken=e.idToken),e.accessToken&&(n.accessToken=e.accessToken),e.nonce&&!e.pendingToken&&(n.nonce=e.nonce),e.pendingToken&&(n.pendingToken=e.pendingToken)):e.oauthToken&&e.oauthTokenSecret?(n.accessToken=e.oauthToken,n.secret=e.oauthTokenSecret):zr("argument-error"),n}toJSON(){return{idToken:this.idToken,accessToken:this.accessToken,secret:this.secret,nonce:this.nonce,pendingToken:this.pendingToken,providerId:this.providerId,signInMethod:this.signInMethod}}static fromJSON(e){const n=typeof e=="string"?JSON.parse(e):e,{providerId:r,signInMethod:i}=n,s=l0(n,["providerId","signInMethod"]);if(!r||!i)return null;const o=new Ys(r,i);return o.idToken=s.idToken||void 0,o.accessToken=s.accessToken||void 0,o.secret=s.secret,o.nonce=s.nonce,o.pendingToken=s.pendingToken||null,o}_getIdTokenResponse(e){const n=this.buildRequest();return na(e,n)}_linkToIdToken(e,n){const r=this.buildRequest();return r.idToken=n,na(e,r)}_getReauthenticationResolver(e){const n=this.buildRequest();return n.autoCreate=!1,na(e,n)}buildRequest(){const e={requestUri:JN,returnSecureToken:!0};if(this.pendingToken)e.pendingToken=this.pendingToken;else{const n={};this.idToken&&(n.id_token=this.idToken),this.accessToken&&(n.access_token=this.accessToken),this.secret&&(n.oauth_token_secret=this.secret),n.providerId=this.providerId,this.nonce&&!this.pendingToken&&(n.nonce=this.nonce),e.postBody=Xu(n)}return e}}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class f0{constructor(e){this.providerId=e,this.defaultLanguageCode=null,this.customParameters={}}setDefaultLanguage(e){this.defaultLanguageCode=e}setCustomParameters(e){return this.customParameters=e,this}getCustomParameters(){return this.customParameters}}/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class ec extends f0{constructor(){super(...arguments),this.scopes=[]}addScope(e){return this.scopes.includes(e)||this.scopes.push(e),this}getScopes(){return[...this.scopes]}}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class $i extends ec{constructor(){super("facebook.com")}static credential(e){return Ys._fromParams({providerId:$i.PROVIDER_ID,signInMethod:$i.FACEBOOK_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return $i.credentialFromTaggedObject(e)}static credentialFromError(e){return $i.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e||!("oauthAccessToken"in e)||!e.oauthAccessToken)return null;try{return $i.credential(e.oauthAccessToken)}catch{return null}}}$i.FACEBOOK_SIGN_IN_METHOD="facebook.com";$i.PROVIDER_ID="facebook.com";/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class Li extends ec{constructor(){super("google.com"),this.addScope("profile")}static credential(e,n){return Ys._fromParams({providerId:Li.PROVIDER_ID,signInMethod:Li.GOOGLE_SIGN_IN_METHOD,idToken:e,accessToken:n})}static credentialFromResult(e){return Li.credentialFromTaggedObject(e)}static credentialFromError(e){return Li.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;const{oauthIdToken:n,oauthAccessToken:r}=e;if(!n&&!r)return null;try{return Li.credential(n,r)}catch{return null}}}Li.GOOGLE_SIGN_IN_METHOD="google.com";Li.PROVIDER_ID="google.com";/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class Kr extends ec{constructor(){super("github.com")}static credential(e){return Ys._fromParams({providerId:Kr.PROVIDER_ID,signInMethod:Kr.GITHUB_SIGN_IN_METHOD,accessToken:e})}static credentialFromResult(e){return Kr.credentialFromTaggedObject(e)}static credentialFromError(e){return Kr.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e||!("oauthAccessToken"in e)||!e.oauthAccessToken)return null;try{return Kr.credential(e.oauthAccessToken)}catch{return null}}}Kr.GITHUB_SIGN_IN_METHOD="github.com";Kr.PROVIDER_ID="github.com";/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class Fi extends ec{constructor(){super("twitter.com")}static credential(e,n){return Ys._fromParams({providerId:Fi.PROVIDER_ID,signInMethod:Fi.TWITTER_SIGN_IN_METHOD,oauthToken:e,oauthTokenSecret:n})}static credentialFromResult(e){return Fi.credentialFromTaggedObject(e)}static credentialFromError(e){return Fi.credentialFromTaggedObject(e.customData||{})}static credentialFromTaggedObject({_tokenResponse:e}){if(!e)return null;const{oauthAccessToken:n,oauthTokenSecret:r}=e;if(!n||!r)return null;try{return Fi.credential(n,r)}catch{return null}}}Fi.TWITTER_SIGN_IN_METHOD="twitter.com";Fi.PROVIDER_ID="twitter.com";/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class va{constructor(e){this.user=e.user,this.providerId=e.providerId,this._tokenResponse=e._tokenResponse,this.operationType=e.operationType}static async _fromIdTokenResponse(e,n,r,i=!1){const s=await Fs._fromIdTokenResponse(e,r,i),o=W1(r);return new va({user:s,providerId:o,_tokenResponse:r,operationType:n})}static async _forOperation(e,n,r){await e._updateTokensIfNecessary(r,!0);const i=W1(r);return new va({user:e,providerId:i,_tokenResponse:r,operationType:n})}}function W1(t){return t.providerId?t.providerId:"phoneNumber"in t?"phone":null}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class md extends bi{constructor(e,n,r,i){var s;super(n.code,n.message),this.operationType=r,this.user=i,Object.setPrototypeOf(this,md.prototype),this.customData={appName:e.name,tenantId:(s=e.tenantId)!==null&&s!==void 0?s:void 0,_serverResponse:n.customData._serverResponse,operationType:r}}static _fromErrorAndOperation(e,n,r,i){return new md(e,n,r,i)}}function eC(t,e,n,r){return(e==="reauthenticate"?n._getReauthenticationResolver(t):n._getIdTokenResponse(t)).catch(s=>{throw s.code==="auth/multi-factor-auth-required"?md._fromErrorAndOperation(t,s,e,r):s})}async function ZN(t,e,n=!1){const r=await pu(t,e._linkToIdToken(t.auth,await t.getIdToken()),n);return va._forOperation(t,"link",r)}/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */async function e$(t,e,n=!1){const{auth:r}=t,i="reauthenticate";try{const s=await pu(t,eC(r,i,e,t),n);le(s.idToken,r,"internal-error");const o=h0(s.idToken);le(o,r,"internal-error");const{sub:a}=o;return le(t.uid===a,r,"user-mismatch"),va._forOperation(t,i,s)}catch(s){throw(s==null?void 0:s.code)==="auth/user-not-found"&&zr(r,"user-mismatch"),s}}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */async function t$(t,e,n=!1){const r="signIn",i=await eC(t,r,e),s=await va._fromIdTokenResponse(t,r,i);return n||await t._updateCurrentUser(s.user),s}function n$(t,e,n,r){return pn(t).onIdTokenChanged(e,n,r)}function r$(t,e,n){return pn(t).beforeAuthStateChanged(e,n)}function i$(t,e,n,r){return pn(t).onAuthStateChanged(e,n,r)}function s$(t){return pn(t).signOut()}const gd="__sak";/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class tC{constructor(e,n){this.storageRetriever=e,this.type=n}_isAvailable(){try{return this.storage?(this.storage.setItem(gd,"1"),this.storage.removeItem(gd),Promise.resolve(!0)):Promise.resolve(!1)}catch{return Promise.resolve(!1)}}_set(e,n){return this.storage.setItem(e,JSON.stringify(n)),Promise.resolve()}_get(e){const n=this.storage.getItem(e);return Promise.resolve(n?JSON.parse(n):null)}_remove(e){return this.storage.removeItem(e),Promise.resolve()}get storage(){return this.storageRetriever()}}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function o$(){const t=qt();return d0(t)||bf(t)}const a$=1e3,l$=10;class nC extends tC{constructor(){super(()=>window.localStorage,"LOCAL"),this.boundEventHandler=(e,n)=>this.onStorageEvent(e,n),this.listeners={},this.localCache={},this.pollTimer=null,this.safariLocalStorageNotSynced=o$()&&FN(),this.fallbackToPolling=Yk(),this._shouldAllowMigration=!0}forAllChangedKeys(e){for(const n of Object.keys(this.listeners)){const r=this.storage.getItem(n),i=this.localCache[n];r!==i&&e(n,i,r)}}onStorageEvent(e,n=!1){if(!e.key){this.forAllChangedKeys((o,a,l)=>{this.notifyListeners(o,l)});return}const r=e.key;if(n?this.detachListener():this.stopPolling(),this.safariLocalStorageNotSynced){const o=this.storage.getItem(r);if(e.newValue!==o)e.newValue!==null?this.storage.setItem(r,e.newValue):this.storage.removeItem(r);else if(this.localCache[r]===e.newValue&&!n)return}const i=()=>{const o=this.storage.getItem(r);!n&&this.localCache[r]===o||this.notifyListeners(r,o)},s=this.storage.getItem(r);LN()&&s!==e.newValue&&e.newValue!==e.oldValue?setTimeout(i,l$):i()}notifyListeners(e,n){this.localCache[e]=n;const r=this.listeners[e];if(r)for(const i of Array.from(r))i(n&&JSON.parse(n))}startPolling(){this.stopPolling(),this.pollTimer=setInterval(()=>{this.forAllChangedKeys((e,n,r)=>{this.onStorageEvent(new StorageEvent("storage",{key:e,oldValue:n,newValue:r}),!0)})},a$)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}attachListener(){window.addEventListener("storage",this.boundEventHandler)}detachListener(){window.removeEventListener("storage",this.boundEventHandler)}_addListener(e,n){Object.keys(this.listeners).length===0&&(this.fallbackToPolling?this.startPolling():this.attachListener()),this.listeners[e]||(this.listeners[e]=new Set,this.localCache[e]=this.storage.getItem(e)),this.listeners[e].add(n)}_removeListener(e,n){this.listeners[e]&&(this.listeners[e].delete(n),this.listeners[e].size===0&&delete this.listeners[e]),Object.keys(this.listeners).length===0&&(this.detachListener(),this.stopPolling())}async _set(e,n){await super._set(e,n),this.localCache[e]=JSON.stringify(n)}async _get(e){const n=await super._get(e);return this.localCache[e]=JSON.stringify(n),n}async _remove(e){await super._remove(e),delete this.localCache[e]}}nC.type="LOCAL";const u$=nC;/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class rC extends tC{constructor(){super(()=>window.sessionStorage,"SESSION")}_addListener(e,n){}_removeListener(e,n){}}rC.type="SESSION";const iC=rC;/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function c$(t){return Promise.all(t.map(async e=>{try{return{fulfilled:!0,value:await e}}catch(n){return{fulfilled:!1,reason:n}}}))}/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class Tf{constructor(e){this.eventTarget=e,this.handlersMap={},this.boundEventHandler=this.handleEvent.bind(this)}static _getInstance(e){const n=this.receivers.find(i=>i.isListeningto(e));if(n)return n;const r=new Tf(e);return this.receivers.push(r),r}isListeningto(e){return this.eventTarget===e}async handleEvent(e){const n=e,{eventId:r,eventType:i,data:s}=n.data,o=this.handlersMap[i];if(!(o!=null&&o.size))return;n.ports[0].postMessage({status:"ack",eventId:r,eventType:i});const a=Array.from(o).map(async u=>u(n.origin,s)),l=await c$(a);n.ports[0].postMessage({status:"done",eventId:r,eventType:i,response:l})}_subscribe(e,n){Object.keys(this.handlersMap).length===0&&this.eventTarget.addEventListener("message",this.boundEventHandler),this.handlersMap[e]||(this.handlersMap[e]=new Set),this.handlersMap[e].add(n)}_unsubscribe(e,n){this.handlersMap[e]&&n&&this.handlersMap[e].delete(n),(!n||this.handlersMap[e].size===0)&&delete this.handlersMap[e],Object.keys(this.handlersMap).length===0&&this.eventTarget.removeEventListener("message",this.boundEventHandler)}}Tf.receivers=[];/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function p0(t="",e=10){let n="";for(let r=0;r{const u=p0("",20);i.port1.start();const c=setTimeout(()=>{l(new Error("unsupported_event"))},r);o={messageChannel:i,onMessage(h){const d=h;if(d.data.eventId===u)switch(d.data.status){case"ack":clearTimeout(c),s=setTimeout(()=>{l(new Error("timeout"))},3e3);break;case"done":clearTimeout(s),a(d.data.response);break;default:clearTimeout(c),clearTimeout(s),l(new Error("invalid_response"));break}}},this.handlers.add(o),i.port1.addEventListener("message",o.onMessage),this.target.postMessage({eventType:e,eventId:u,data:n},[i.port2])}).finally(()=>{o&&this.removeMessageHandler(o)})}}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function Dr(){return window}function d$(t){Dr().location.href=t}/**
+ * @license
+ * Copyright 2020 Google LLC.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function sC(){return typeof Dr().WorkerGlobalScope<"u"&&typeof Dr().importScripts=="function"}async function f$(){if(!(navigator!=null&&navigator.serviceWorker))return null;try{return(await navigator.serviceWorker.ready).active}catch{return null}}function p$(){var t;return((t=navigator==null?void 0:navigator.serviceWorker)===null||t===void 0?void 0:t.controller)||null}function m$(){return sC()?self:null}/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const oC="firebaseLocalStorageDb",g$=1,yd="firebaseLocalStorage",aC="fbase_key";class tc{constructor(e){this.request=e}toPromise(){return new Promise((e,n)=>{this.request.addEventListener("success",()=>{e(this.request.result)}),this.request.addEventListener("error",()=>{n(this.request.error)})})}}function Sf(t,e){return t.transaction([yd],e?"readwrite":"readonly").objectStore(yd)}function y$(){const t=indexedDB.deleteDatabase(oC);return new tc(t).toPromise()}function cy(){const t=indexedDB.open(oC,g$);return new Promise((e,n)=>{t.addEventListener("error",()=>{n(t.error)}),t.addEventListener("upgradeneeded",()=>{const r=t.result;try{r.createObjectStore(yd,{keyPath:aC})}catch(i){n(i)}}),t.addEventListener("success",async()=>{const r=t.result;r.objectStoreNames.contains(yd)?e(r):(r.close(),await y$(),e(await cy()))})})}async function q1(t,e,n){const r=Sf(t,!0).put({[aC]:e,value:n});return new tc(r).toPromise()}async function v$(t,e){const n=Sf(t,!1).get(e),r=await new tc(n).toPromise();return r===void 0?null:r.value}function G1(t,e){const n=Sf(t,!0).delete(e);return new tc(n).toPromise()}const _$=800,w$=3;class lC{constructor(){this.type="LOCAL",this._shouldAllowMigration=!0,this.listeners={},this.localCache={},this.pollTimer=null,this.pendingWrites=0,this.receiver=null,this.sender=null,this.serviceWorkerReceiverAvailable=!1,this.activeServiceWorker=null,this._workerInitializationPromise=this.initializeServiceWorkerMessaging().then(()=>{},()=>{})}async _openDb(){return this.db?this.db:(this.db=await cy(),this.db)}async _withRetries(e){let n=0;for(;;)try{const r=await this._openDb();return await e(r)}catch(r){if(n++>w$)throw r;this.db&&(this.db.close(),this.db=void 0)}}async initializeServiceWorkerMessaging(){return sC()?this.initializeReceiver():this.initializeSender()}async initializeReceiver(){this.receiver=Tf._getInstance(m$()),this.receiver._subscribe("keyChanged",async(e,n)=>({keyProcessed:(await this._poll()).includes(n.key)})),this.receiver._subscribe("ping",async(e,n)=>["keyChanged"])}async initializeSender(){var e,n;if(this.activeServiceWorker=await f$(),!this.activeServiceWorker)return;this.sender=new h$(this.activeServiceWorker);const r=await this.sender._send("ping",{},800);r&&!((e=r[0])===null||e===void 0)&&e.fulfilled&&!((n=r[0])===null||n===void 0)&&n.value.includes("keyChanged")&&(this.serviceWorkerReceiverAvailable=!0)}async notifyServiceWorker(e){if(!(!this.sender||!this.activeServiceWorker||p$()!==this.activeServiceWorker))try{await this.sender._send("keyChanged",{key:e},this.serviceWorkerReceiverAvailable?800:50)}catch{}}async _isAvailable(){try{if(!indexedDB)return!1;const e=await cy();return await q1(e,gd,"1"),await G1(e,gd),!0}catch{}return!1}async _withPendingWrite(e){this.pendingWrites++;try{await e()}finally{this.pendingWrites--}}async _set(e,n){return this._withPendingWrite(async()=>(await this._withRetries(r=>q1(r,e,n)),this.localCache[e]=n,this.notifyServiceWorker(e)))}async _get(e){const n=await this._withRetries(r=>v$(r,e));return this.localCache[e]=n,n}async _remove(e){return this._withPendingWrite(async()=>(await this._withRetries(n=>G1(n,e)),delete this.localCache[e],this.notifyServiceWorker(e)))}async _poll(){const e=await this._withRetries(i=>{const s=Sf(i,!1).getAll();return new tc(s).toPromise()});if(!e)return[];if(this.pendingWrites!==0)return[];const n=[],r=new Set;for(const{fbase_key:i,value:s}of e)r.add(i),JSON.stringify(this.localCache[i])!==JSON.stringify(s)&&(this.notifyListeners(i,s),n.push(i));for(const i of Object.keys(this.localCache))this.localCache[i]&&!r.has(i)&&(this.notifyListeners(i,null),n.push(i));return n}notifyListeners(e,n){this.localCache[e]=n;const r=this.listeners[e];if(r)for(const i of Array.from(r))i(n)}startPolling(){this.stopPolling(),this.pollTimer=setInterval(async()=>this._poll(),_$)}stopPolling(){this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=null)}_addListener(e,n){Object.keys(this.listeners).length===0&&this.startPolling(),this.listeners[e]||(this.listeners[e]=new Set,this._get(e)),this.listeners[e].add(n)}_removeListener(e,n){this.listeners[e]&&(this.listeners[e].delete(n),this.listeners[e].size===0&&delete this.listeners[e]),Object.keys(this.listeners).length===0&&this.stopPolling()}}lC.type="LOCAL";const x$=lC;new Ju(3e4,6e4);/**
+ * @license
+ * Copyright 2021 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function uC(t,e){return e?Zr(e):(le(t._popupRedirectResolver,t,"argument-error"),t._popupRedirectResolver)}/**
+ * @license
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class m0 extends Zk{constructor(e){super("custom","custom"),this.params=e}_getIdTokenResponse(e){return na(e,this._buildIdpRequest())}_linkToIdToken(e,n){return na(e,this._buildIdpRequest(n))}_getReauthenticationResolver(e){return na(e,this._buildIdpRequest())}_buildIdpRequest(e){const n={requestUri:this.params.requestUri,sessionId:this.params.sessionId,postBody:this.params.postBody,tenantId:this.params.tenantId,pendingToken:this.params.pendingToken,returnSecureToken:!0,returnIdpCredential:!0};return e&&(n.idToken=e),n}}function b$(t){return t$(t.auth,new m0(t),t.bypassAuthState)}function E$(t){const{auth:e,user:n}=t;return le(n,e,"internal-error"),e$(n,new m0(t),t.bypassAuthState)}async function T$(t){const{auth:e,user:n}=t;return le(n,e,"internal-error"),ZN(n,new m0(t),t.bypassAuthState)}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class cC{constructor(e,n,r,i,s=!1){this.auth=e,this.resolver=r,this.user=i,this.bypassAuthState=s,this.pendingPromise=null,this.eventManager=null,this.filter=Array.isArray(n)?n:[n]}execute(){return new Promise(async(e,n)=>{this.pendingPromise={resolve:e,reject:n};try{this.eventManager=await this.resolver._initialize(this.auth),await this.onExecution(),this.eventManager.registerConsumer(this)}catch(r){this.reject(r)}})}async onAuthEvent(e){const{urlResponse:n,sessionId:r,postBody:i,tenantId:s,error:o,type:a}=e;if(o){this.reject(o);return}const l={auth:this.auth,requestUri:n,sessionId:r,tenantId:s||void 0,postBody:i||void 0,user:this.user,bypassAuthState:this.bypassAuthState};try{this.resolve(await this.getIdpTask(a)(l))}catch(u){this.reject(u)}}onError(e){this.reject(e)}getIdpTask(e){switch(e){case"signInViaPopup":case"signInViaRedirect":return b$;case"linkViaPopup":case"linkViaRedirect":return T$;case"reauthViaPopup":case"reauthViaRedirect":return E$;default:zr(this.auth,"internal-error")}}resolve(e){fi(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.resolve(e),this.unregisterAndCleanUp()}reject(e){fi(this.pendingPromise,"Pending promise was never set"),this.pendingPromise.reject(e),this.unregisterAndCleanUp()}unregisterAndCleanUp(){this.eventManager&&this.eventManager.unregisterConsumer(this),this.pendingPromise=null,this.cleanUp()}}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const S$=new Ju(2e3,1e4);class Wo extends cC{constructor(e,n,r,i,s){super(e,n,i,s),this.provider=r,this.authWindow=null,this.pollId=null,Wo.currentPopupAction&&Wo.currentPopupAction.cancel(),Wo.currentPopupAction=this}async executeNotNull(){const e=await this.execute();return le(e,this.auth,"internal-error"),e}async onExecution(){fi(this.filter.length===1,"Popup operations only handle one event");const e=p0();this.authWindow=await this.resolver._openPopup(this.auth,this.provider,this.filter[0],e),this.authWindow.associatedEvent=e,this.resolver._originValidation(this.auth).catch(n=>{this.reject(n)}),this.resolver._isIframeWebStorageSupported(this.auth,n=>{n||this.reject(Or(this.auth,"web-storage-unsupported"))}),this.pollUserCancellation()}get eventId(){var e;return((e=this.authWindow)===null||e===void 0?void 0:e.associatedEvent)||null}cancel(){this.reject(Or(this.auth,"cancelled-popup-request"))}cleanUp(){this.authWindow&&this.authWindow.close(),this.pollId&&window.clearTimeout(this.pollId),this.authWindow=null,this.pollId=null,Wo.currentPopupAction=null}pollUserCancellation(){const e=()=>{var n,r;if(!((r=(n=this.authWindow)===null||n===void 0?void 0:n.window)===null||r===void 0)&&r.closed){this.pollId=window.setTimeout(()=>{this.pollId=null,this.reject(Or(this.auth,"popup-closed-by-user"))},8e3);return}this.pollId=window.setTimeout(e,S$.get())};e()}}Wo.currentPopupAction=null;/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const k$="pendingRedirect",Th=new Map;class C$ extends cC{constructor(e,n,r=!1){super(e,["signInViaRedirect","linkViaRedirect","reauthViaRedirect","unknown"],n,void 0,r),this.eventId=null}async execute(){let e=Th.get(this.auth._key());if(!e){try{const r=await I$(this.resolver,this.auth)?await super.execute():null;e=()=>Promise.resolve(r)}catch(n){e=()=>Promise.reject(n)}Th.set(this.auth._key(),e)}return this.bypassAuthState||Th.set(this.auth._key(),()=>Promise.resolve(null)),e()}async onAuthEvent(e){if(e.type==="signInViaRedirect")return super.onAuthEvent(e);if(e.type==="unknown"){this.resolve(null);return}if(e.eventId){const n=await this.auth._redirectUserForId(e.eventId);if(n)return this.user=n,super.onAuthEvent(e);this.resolve(null)}}async onExecution(){}cleanUp(){}}async function I$(t,e){const n=dC(e),r=hC(t);if(!await r._isAvailable())return!1;const i=await r._get(n)==="true";return await r._remove(n),i}async function P$(t,e){return hC(t)._set(dC(e),"true")}function A$(t,e){Th.set(t._key(),e)}function hC(t){return Zr(t._redirectPersistence)}function dC(t){return Eh(k$,t.config.apiKey,t.name)}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function R$(t,e,n){return M$(t,e,n)}async function M$(t,e,n){const r=Ef(t);vN(t,e,f0),await r._initializationPromise;const i=uC(r,n);return await P$(i,r),i._openRedirect(r,e,"signInViaRedirect")}async function O$(t,e,n=!1){const r=Ef(t),i=uC(r,e),o=await new C$(r,i,n).execute();return o&&!n&&(delete o.user._redirectEventId,await r._persistUserIfCurrent(o.user),await r._setRedirectUser(null,e)),o}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const D$=10*60*1e3;class N${constructor(e){this.auth=e,this.cachedEventUids=new Set,this.consumers=new Set,this.queuedRedirectEvent=null,this.hasHandledPotentialRedirect=!1,this.lastProcessedEventTime=Date.now()}registerConsumer(e){this.consumers.add(e),this.queuedRedirectEvent&&this.isEventForConsumer(this.queuedRedirectEvent,e)&&(this.sendToConsumer(this.queuedRedirectEvent,e),this.saveEventToCache(this.queuedRedirectEvent),this.queuedRedirectEvent=null)}unregisterConsumer(e){this.consumers.delete(e)}onEvent(e){if(this.hasEventBeenHandled(e))return!1;let n=!1;return this.consumers.forEach(r=>{this.isEventForConsumer(e,r)&&(n=!0,this.sendToConsumer(e,r),this.saveEventToCache(e))}),this.hasHandledPotentialRedirect||!$$(e)||(this.hasHandledPotentialRedirect=!0,n||(this.queuedRedirectEvent=e,n=!0)),n}sendToConsumer(e,n){var r;if(e.error&&!fC(e)){const i=((r=e.error.code)===null||r===void 0?void 0:r.split("auth/")[1])||"internal-error";n.onError(Or(this.auth,i))}else n.onAuthEvent(e)}isEventForConsumer(e,n){const r=n.eventId===null||!!e.eventId&&e.eventId===n.eventId;return n.filter.includes(e.type)&&r}hasEventBeenHandled(e){return Date.now()-this.lastProcessedEventTime>=D$&&this.cachedEventUids.clear(),this.cachedEventUids.has(K1(e))}saveEventToCache(e){this.cachedEventUids.add(K1(e)),this.lastProcessedEventTime=Date.now()}}function K1(t){return[t.type,t.eventId,t.sessionId,t.tenantId].filter(e=>e).join("-")}function fC({type:t,error:e}){return t==="unknown"&&(e==null?void 0:e.code)==="auth/no-auth-event"}function $$(t){switch(t.type){case"signInViaRedirect":case"linkViaRedirect":case"reauthViaRedirect":return!0;case"unknown":return fC(t);default:return!1}}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */async function L$(t,e={}){return Zu(t,"GET","/v1/projects",e)}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const F$=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,V$=/^https?/;async function z$(t){if(t.config.emulator)return;const{authorizedDomains:e}=await L$(t);for(const n of e)try{if(U$(n))return}catch{}zr(t,"unauthorized-domain")}function U$(t){const e=uy(),{protocol:n,hostname:r}=new URL(e);if(t.startsWith("chrome-extension://")){const o=new URL(t);return o.hostname===""&&r===""?n==="chrome-extension:"&&t.replace("chrome-extension://","")===e.replace("chrome-extension://",""):n==="chrome-extension:"&&o.hostname===r}if(!V$.test(n))return!1;if(F$.test(t))return r===t;const i=t.replace(/\./g,"\\.");return new RegExp("^(.+\\."+i+"|"+i+")$","i").test(r)}/**
+ * @license
+ * Copyright 2020 Google LLC.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const j$=new Ju(3e4,6e4);function Q1(){const t=Dr().___jsl;if(t!=null&&t.H){for(const e of Object.keys(t.H))if(t.H[e].r=t.H[e].r||[],t.H[e].L=t.H[e].L||[],t.H[e].r=[...t.H[e].L],t.CP)for(let n=0;n{var r,i,s;function o(){Q1(),gapi.load("gapi.iframes",{callback:()=>{e(gapi.iframes.getContext())},ontimeout:()=>{Q1(),n(Or(t,"network-request-failed"))},timeout:j$.get()})}if(!((i=(r=Dr().gapi)===null||r===void 0?void 0:r.iframes)===null||i===void 0)&&i.Iframe)e(gapi.iframes.getContext());else if(!((s=Dr().gapi)===null||s===void 0)&&s.load)o();else{const a=qN("iframefcb");return Dr()[a]=()=>{gapi.load?o():n(Or(t,"network-request-failed"))},WN(`https://apis.google.com/js/api.js?onload=${a}`).catch(l=>n(l))}}).catch(e=>{throw Sh=null,e})}let Sh=null;function H$(t){return Sh=Sh||B$(t),Sh}/**
+ * @license
+ * Copyright 2020 Google LLC.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const W$=new Ju(5e3,15e3),q$="__/auth/iframe",G$="emulator/auth/iframe",K$={style:{position:"absolute",top:"-100px",width:"1px",height:"1px"},"aria-hidden":"true",tabindex:"-1"},Q$=new Map([["identitytoolkit.googleapis.com","p"],["staging-identitytoolkit.sandbox.googleapis.com","s"],["test-identitytoolkit.sandbox.googleapis.com","t"]]);function Y$(t){const e=t.config;le(e.authDomain,t,"auth-domain-config-required");const n=e.emulator?c0(e,G$):`https://${t.config.authDomain}/${q$}`,r={apiKey:e.apiKey,appName:t.name,v:Wa},i=Q$.get(t.config.apiHost);i&&(r.eid=i);const s=t._getFrameworks();return s.length&&(r.fw=s.join(",")),`${n}?${Xu(r).slice(1)}`}async function X$(t){const e=await H$(t),n=Dr().gapi;return le(n,t,"internal-error"),e.open({where:document.body,url:Y$(t),messageHandlersFilter:n.iframes.CROSS_ORIGIN_IFRAMES_FILTER,attributes:K$,dontclear:!0},r=>new Promise(async(i,s)=>{await r.restyle({setHideOnLeave:!1});const o=Or(t,"network-request-failed"),a=Dr().setTimeout(()=>{s(o)},W$.get());function l(){Dr().clearTimeout(a),i(r)}r.ping(l).then(l,()=>{s(o)})}))}/**
+ * @license
+ * Copyright 2020 Google LLC.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const J$={location:"yes",resizable:"yes",statusbar:"yes",toolbar:"no"},Z$=500,eL=600,tL="_blank",nL="http://localhost";class Y1{constructor(e){this.window=e,this.associatedEvent=null}close(){if(this.window)try{this.window.close()}catch{}}}function rL(t,e,n,r=Z$,i=eL){const s=Math.max((window.screen.availHeight-i)/2,0).toString(),o=Math.max((window.screen.availWidth-r)/2,0).toString();let a="";const l=Object.assign(Object.assign({},J$),{width:r.toString(),height:i.toString(),top:s,left:o}),u=qt().toLowerCase();n&&(a=Wk(u)?tL:n),Hk(u)&&(e=e||nL,l.scrollbars="yes");const c=Object.entries(l).reduce((d,[f,p])=>`${d}${f}=${p},`,"");if($N(u)&&a!=="_self")return iL(e||"",a),new Y1(null);const h=window.open(e||"",a,c);le(h,t,"popup-blocked");try{h.focus()}catch{}return new Y1(h)}function iL(t,e){const n=document.createElement("a");n.href=t,n.target=e;const r=document.createEvent("MouseEvent");r.initMouseEvent("click",!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,1,null),n.dispatchEvent(r)}/**
+ * @license
+ * Copyright 2021 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const sL="__/auth/handler",oL="emulator/auth/handler",aL=encodeURIComponent("fac");async function X1(t,e,n,r,i,s){le(t.config.authDomain,t,"auth-domain-config-required"),le(t.config.apiKey,t,"invalid-api-key");const o={apiKey:t.config.apiKey,appName:t.name,authType:n,redirectUrl:r,v:Wa,eventId:i};if(e instanceof f0){e.setDefaultLanguage(t.languageCode),o.providerId=e.providerId||"",aD(e.getCustomParameters())||(o.customParameters=JSON.stringify(e.getCustomParameters()));for(const[c,h]of Object.entries(s||{}))o[c]=h}if(e instanceof ec){const c=e.getScopes().filter(h=>h!=="");c.length>0&&(o.scopes=c.join(","))}t.tenantId&&(o.tid=t.tenantId);const a=o;for(const c of Object.keys(a))a[c]===void 0&&delete a[c];const l=await t._getAppCheckToken(),u=l?`#${aL}=${encodeURIComponent(l)}`:"";return`${lL(t)}?${Xu(a).slice(1)}${u}`}function lL({config:t}){return t.emulator?c0(t,oL):`https://${t.authDomain}/${sL}`}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const vm="webStorageSupport";class uL{constructor(){this.eventManagers={},this.iframes={},this.originValidationPromises={},this._redirectPersistence=iC,this._completeRedirectFn=O$,this._overrideRedirectResult=A$}async _openPopup(e,n,r,i){var s;fi((s=this.eventManagers[e._key()])===null||s===void 0?void 0:s.manager,"_initialize() not called before _openPopup()");const o=await X1(e,n,r,uy(),i);return rL(e,o,p0())}async _openRedirect(e,n,r,i){await this._originValidation(e);const s=await X1(e,n,r,uy(),i);return d$(s),new Promise(()=>{})}_initialize(e){const n=e._key();if(this.eventManagers[n]){const{manager:i,promise:s}=this.eventManagers[n];return i?Promise.resolve(i):(fi(s,"If manager is not set, promise should be"),s)}const r=this.initAndGetManager(e);return this.eventManagers[n]={promise:r},r.catch(()=>{delete this.eventManagers[n]}),r}async initAndGetManager(e){const n=await X$(e),r=new N$(e);return n.register("authEvent",i=>(le(i==null?void 0:i.authEvent,e,"invalid-auth-event"),{status:r.onEvent(i.authEvent)?"ACK":"ERROR"}),gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER),this.eventManagers[e._key()]={manager:r},this.iframes[e._key()]=n,r}_isIframeWebStorageSupported(e,n){this.iframes[e._key()].send(vm,{type:vm},i=>{var s;const o=(s=i==null?void 0:i[0])===null||s===void 0?void 0:s[vm];o!==void 0&&n(!!o),zr(e,"internal-error")},gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER)}_originValidation(e){const n=e._key();return this.originValidationPromises[n]||(this.originValidationPromises[n]=z$(e)),this.originValidationPromises[n]}get _shouldInitProactively(){return Yk()||d0()||bf()}}const cL=uL;var J1="@firebase/auth",Z1="1.3.0";/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */class hL{constructor(e){this.auth=e,this.internalListeners=new Map}getUid(){var e;return this.assertAuthConfigured(),((e=this.auth.currentUser)===null||e===void 0?void 0:e.uid)||null}async getToken(e){return this.assertAuthConfigured(),await this.auth._initializationPromise,this.auth.currentUser?{accessToken:await this.auth.currentUser.getIdToken(e)}:null}addAuthTokenListener(e){if(this.assertAuthConfigured(),this.internalListeners.has(e))return;const n=this.auth.onIdTokenChanged(r=>{e((r==null?void 0:r.stsTokenManager.accessToken)||null)});this.internalListeners.set(e,n),this.updateProactiveRefresh()}removeAuthTokenListener(e){this.assertAuthConfigured();const n=this.internalListeners.get(e);n&&(this.internalListeners.delete(e),n(),this.updateProactiveRefresh())}assertAuthConfigured(){le(this.auth._initializationPromise,"dependent-sdk-initialized-before-auth")}updateProactiveRefresh(){this.internalListeners.size>0?this.auth._startProactiveRefresh():this.auth._stopProactiveRefresh()}}/**
+ * @license
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */function dL(t){switch(t){case"Node":return"node";case"ReactNative":return"rn";case"Worker":return"webworker";case"Cordova":return"cordova";default:return}}function fL(t){ya(new Ks("auth",(e,{options:n})=>{const r=e.getProvider("app").getImmediate(),i=e.getProvider("heartbeat"),s=e.getProvider("app-check-internal"),{apiKey:o,authDomain:a}=r.options;le(o&&!o.includes(":"),"invalid-api-key",{appName:r.name});const l={apiKey:o,authDomain:a,clientPlatform:t,apiHost:"identitytoolkit.googleapis.com",tokenApiHost:"securetoken.googleapis.com",apiScheme:"https",sdkClientVersion:Xk(t)},u=new BN(r,i,s,l);return KN(u,n),u},"PUBLIC").setInstantiationMode("EXPLICIT").setInstanceCreatedCallback((e,n,r)=>{e.getProvider("auth-internal").initialize()})),ya(new Ks("auth-internal",e=>{const n=Ef(e.getProvider("auth").getImmediate());return(r=>new hL(r))(n)},"PRIVATE").setInstantiationMode("EXPLICIT")),es(J1,Z1,dL(t)),es(J1,Z1,"esm2017")}/**
+ * @license
+ * Copyright 2021 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * 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.
+ */const pL=5*60,mL=Ik("authIdTokenMaxAge")||pL;let ex=null;const gL=t=>async e=>{const n=e&&await e.getIdTokenResult(),r=n&&(new Date().getTime()-Date.parse(n.issuedAtTime))/1e3;if(r&&r>mL)return;const i=n==null?void 0:n.token;ex!==i&&(ex=i,await fetch(t,{method:i?"POST":"DELETE",headers:i?{Authorization:`Bearer ${i}`}:{}}))};function yL(t=Mk()){const e=a0(t,"auth");if(e.isInitialized())return e.getImmediate();const n=GN(t,{popupRedirectResolver:cL,persistence:[x$,u$,iC]}),r=Ik("authTokenSyncURL");if(r){const s=gL(r);r$(n,s,()=>s(n.currentUser)),n$(n,o=>s(o))}const i=kk("auth");return i&&QN(n,`http://${i}`),n}fL("Browser");const vL={black:"#000",white:"#fff"},gu=vL,_L={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},wo=_L,wL={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},xo=wL,xL={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},bo=xL,bL={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},Eo=bL,EL={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"},To=EL,TL={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},ul=TL,SL={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"},kL=SL;function I(){return I=Object.assign?Object.assign.bind():function(t){for(var e=1;e{e[n]=pC(t[n])}),e}function ar(t,e,n={clone:!0}){const r=n.clone?I({},t):t;return Qr(t)&&Qr(e)&&Object.keys(e).forEach(i=>{i!=="__proto__"&&(Qr(e[i])&&i in t&&Qr(t[i])?r[i]=ar(t[i],e[i],n):n.clone?r[i]=Qr(e[i])?pC(e[i]):e[i]:r[i]=e[i])}),r}var mC={exports:{}},CL="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",IL=CL,PL=IL;function gC(){}function yC(){}yC.resetWarningCache=gC;var AL=function(){function t(r,i,s,o,a,l){if(l!==PL){var u=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 u.name="Invariant Violation",u}}t.isRequired=t;function e(){return t}var n={array:t,bigint:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:yC,resetWarningCache:gC};return n.PropTypes=n,n};mC.exports=AL();var RL=mC.exports;const ie=sf(RL);function _a(t){let e="https://mui.com/production-error/?code="+t;for(let n=1;nn==null?e:function(...i){e.apply(this,i),n.apply(this,i)},()=>{})}function ML(t,e=166){let n;function r(...i){const s=()=>{t.apply(this,i)};clearTimeout(n),n=setTimeout(s,e)}return r.clear=()=>{clearTimeout(n)},r}function OL(t,e){return()=>null}function DL(t,e){var n,r;return T.isValidElement(t)&&e.indexOf((n=t.type.muiName)!=null?n:(r=t.type)==null||(r=r._payload)==null||(r=r.value)==null?void 0:r.muiName)!==-1}function lr(t){return t&&t.ownerDocument||document}function nc(t){return lr(t).defaultView||window}function NL(t,e){return()=>null}function vd(t,e){typeof t=="function"?t(e):t&&(t.current=e)}const $L=typeof window<"u"?T.useLayoutEffect:T.useEffect,ss=$L;let tx=0;function LL(t){const[e,n]=T.useState(t),r=t||e;return T.useEffect(()=>{e==null&&(tx+=1,n(`mui-${tx}`))},[e]),r}const nx=cg["useId".toString()];function vC(t){if(nx!==void 0){const e=nx();return t??e}return LL(t)}function FL(t,e,n,r,i){return null}function VL({controlled:t,default:e,name:n,state:r="value"}){const{current:i}=T.useRef(t!==void 0),[s,o]=T.useState(e),a=i?t:s,l=T.useCallback(u=>{i||o(u)},[]);return[a,l]}function Is(t){const e=T.useRef(t);return ss(()=>{e.current=t}),T.useCallback((...n)=>(0,e.current)(...n),[])}function fr(...t){return T.useMemo(()=>t.every(e=>e==null)?null:e=>{t.forEach(n=>{vd(n,e)})},t)}let kf=!0,dy=!1,rx;const zL={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function UL(t){const{type:e,tagName:n}=t;return!!(n==="INPUT"&&zL[e]&&!t.readOnly||n==="TEXTAREA"&&!t.readOnly||t.isContentEditable)}function jL(t){t.metaKey||t.altKey||t.ctrlKey||(kf=!0)}function _m(){kf=!1}function BL(){this.visibilityState==="hidden"&&dy&&(kf=!0)}function HL(t){t.addEventListener("keydown",jL,!0),t.addEventListener("mousedown",_m,!0),t.addEventListener("pointerdown",_m,!0),t.addEventListener("touchstart",_m,!0),t.addEventListener("visibilitychange",BL,!0)}function WL(t){const{target:e}=t;try{return e.matches(":focus-visible")}catch{}return kf||UL(e)}function _C(){const t=T.useCallback(i=>{i!=null&&HL(i.ownerDocument)},[]),e=T.useRef(!1);function n(){return e.current?(dy=!0,window.clearTimeout(rx),rx=window.setTimeout(()=>{dy=!1},100),e.current=!1,!0):!1}function r(i){return WL(i)?(e.current=!0,!0):!1}return{isFocusVisibleRef:e,onFocus:r,onBlur:n,ref:t}}function qL(t){const e=t.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}function g0(t,e){const n=I({},e);return Object.keys(t).forEach(r=>{if(r.toString().match(/^(components|slots)$/))n[r]=I({},t[r],n[r]);else if(r.toString().match(/^(componentsProps|slotProps)$/)){const i=t[r]||{},s=e[r];n[r]={},!s||!Object.keys(s)?n[r]=i:!i||!Object.keys(i)?n[r]=s:(n[r]=I({},s),Object.keys(i).forEach(o=>{n[r][o]=g0(i[o],s[o])}))}else n[r]===void 0&&(n[r]=t[r])}),n}function lt(t,e,n=void 0){const r={};return Object.keys(t).forEach(i=>{r[i]=t[i].reduce((s,o)=>{if(o){const a=e(o);a!==""&&s.push(a),n&&n[o]&&s.push(n[o])}return s},[]).join(" ")}),r}const ix=t=>t,GL=()=>{let t=ix;return{configure(e){t=e},generate(e){return t(e)},reset(){t=ix}}},KL=GL(),y0=KL,QL={active:"active",checked:"checked",completed:"completed",disabled:"disabled",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",open:"open",readOnly:"readOnly",required:"required",selected:"selected"};function ut(t,e,n="Mui"){const r=QL[e];return r?`${n}-${r}`:`${y0.generate(t)}-${e}`}function ct(t,e,n="Mui"){const r={};return e.forEach(i=>{r[i]=ut(t,i,n)}),r}const wa="$$material";function ue(t,e){if(t==null)return{};var n={},r=Object.keys(t),i,s;for(s=0;s=0)&&(n[i]=t[i]);return n}function wC(t){var e=Object.create(null);return function(n){return e[n]===void 0&&(e[n]=t(n)),e[n]}}var YL=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,XL=wC(function(t){return YL.test(t)||t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&t.charCodeAt(2)<91});function JL(t){if(t.sheet)return t.sheet;for(var e=0;e0?kt(qa,--mn):0,xa--,st===10&&(xa=1,If--),st}function En(){return st=mn2||vu(st)>3?"":" "}function h4(t,e){for(;--e&&En()&&!(st<48||st>102||st>57&&st<65||st>70&&st<97););return rc(t,kh()+(e<6&&Nr()==32&&En()==32))}function py(t){for(;En();)switch(st){case t:return mn;case 34:case 39:t!==34&&t!==39&&py(st);break;case 40:t===41&&py(t);break;case 92:En();break}return mn}function d4(t,e){for(;En()&&t+st!==47+10;)if(t+st===42+42&&Nr()===47)break;return"/*"+rc(e,mn-1)+"*"+Cf(t===47?t:En())}function f4(t){for(;!vu(Nr());)En();return rc(t,mn)}function p4(t){return kC(Ih("",null,null,null,[""],t=SC(t),0,[0],t))}function Ih(t,e,n,r,i,s,o,a,l){for(var u=0,c=0,h=o,d=0,f=0,p=0,m=1,w=1,g=1,y=0,v="",_=i,x=s,b=r,E=v;w;)switch(p=y,y=En()){case 40:if(p!=108&&kt(E,h-1)==58){fy(E+=Ie(Ch(y),"&","&\f"),"&\f")!=-1&&(g=-1);break}case 34:case 39:case 91:E+=Ch(y);break;case 9:case 10:case 13:case 32:E+=c4(p);break;case 92:E+=h4(kh()-1,7);continue;case 47:switch(Nr()){case 42:case 47:qc(m4(d4(En(),kh()),e,n),l);break;default:E+="/"}break;case 123*m:a[u++]=Er(E)*g;case 125*m:case 59:case 0:switch(y){case 0:case 125:w=0;case 59+c:g==-1&&(E=Ie(E,/\f/g,"")),f>0&&Er(E)-h&&qc(f>32?ox(E+";",r,n,h-1):ox(Ie(E," ","")+";",r,n,h-2),l);break;case 59:E+=";";default:if(qc(b=sx(E,e,n,u,c,i,a,v,_=[],x=[],h),s),y===123)if(c===0)Ih(E,e,b,b,_,s,h,a,x);else switch(d===99&&kt(E,3)===110?100:d){case 100:case 108:case 109:case 115:Ih(t,b,b,r&&qc(sx(t,b,b,0,0,i,a,v,i,_=[],h),x),i,x,h,a,r?_:x);break;default:Ih(E,b,b,b,[""],x,0,a,x)}}u=c=f=0,m=g=1,v=E="",h=o;break;case 58:h=1+Er(E),f=p;default:if(m<1){if(y==123)--m;else if(y==125&&m++==0&&u4()==125)continue}switch(E+=Cf(y),y*m){case 38:g=c>0?1:(E+="\f",-1);break;case 44:a[u++]=(Er(E)-1)*g,g=1;break;case 64:Nr()===45&&(E+=Ch(En())),d=Nr(),c=h=Er(v=E+=f4(kh())),y++;break;case 45:p===45&&Er(E)==2&&(m=0)}}return s}function sx(t,e,n,r,i,s,o,a,l,u,c){for(var h=i-1,d=i===0?s:[""],f=w0(d),p=0,m=0,w=0;p0?d[g]+" "+y:Ie(y,/&\f/g,d[g])))&&(l[w++]=v);return Pf(t,e,n,i===0?v0:a,l,u,c)}function m4(t,e,n){return Pf(t,e,n,xC,Cf(l4()),yu(t,2,-2),0)}function ox(t,e,n,r){return Pf(t,e,n,_0,yu(t,0,r),yu(t,r+1,-1),r)}function ra(t,e){for(var n="",r=w0(t),i=0;i6)switch(kt(t,e+1)){case 109:if(kt(t,e+4)!==45)break;case 102:return Ie(t,/(.+:)(.+)-([^]+)/,"$1"+Ce+"$2-$3$1"+_d+(kt(t,e+3)==108?"$3":"$2-$3"))+t;case 115:return~fy(t,"stretch")?CC(Ie(t,"stretch","fill-available"),e)+t:t}break;case 4949:if(kt(t,e+1)!==115)break;case 6444:switch(kt(t,Er(t)-3-(~fy(t,"!important")&&10))){case 107:return Ie(t,":",":"+Ce)+t;case 101:return Ie(t,/(.+:)([^;!]+)(;|!.+)?/,"$1"+Ce+(kt(t,14)===45?"inline-":"")+"box$3$1"+Ce+"$2$3$1"+Lt+"$2box$3")+t}break;case 5936:switch(kt(t,e+11)){case 114:return Ce+t+Lt+Ie(t,/[svh]\w+-[tblr]{2}/,"tb")+t;case 108:return Ce+t+Lt+Ie(t,/[svh]\w+-[tblr]{2}/,"tb-rl")+t;case 45:return Ce+t+Lt+Ie(t,/[svh]\w+-[tblr]{2}/,"lr")+t}return Ce+t+Lt+t+t}return t}var T4=function(e,n,r,i){if(e.length>-1&&!e.return)switch(e.type){case _0:e.return=CC(e.value,e.length);break;case bC:return ra([cl(e,{value:Ie(e.value,"@","@"+Ce)})],i);case v0:if(e.length)return a4(e.props,function(s){switch(o4(s,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return ra([cl(e,{props:[Ie(s,/:(read-\w+)/,":"+_d+"$1")]})],i);case"::placeholder":return ra([cl(e,{props:[Ie(s,/:(plac\w+)/,":"+Ce+"input-$1")]}),cl(e,{props:[Ie(s,/:(plac\w+)/,":"+_d+"$1")]}),cl(e,{props:[Ie(s,/:(plac\w+)/,Lt+"input-$1")]})],i)}return""})}},S4=[T4],k4=function(e){var n=e.key;if(n==="css"){var r=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(r,function(m){var w=m.getAttribute("data-emotion");w.indexOf(" ")!==-1&&(document.head.appendChild(m),m.setAttribute("data-s",""))})}var i=e.stylisPlugins||S4,s={},o,a=[];o=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+n+' "]'),function(m){for(var w=m.getAttribute("data-emotion").split(" "),g=1;g=4;++r,i-=4)n=t.charCodeAt(r)&255|(t.charCodeAt(++r)&255)<<8|(t.charCodeAt(++r)&255)<<16|(t.charCodeAt(++r)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,e=(n&65535)*1540483477+((n>>>16)*59797<<16)^(e&65535)*1540483477+((e>>>16)*59797<<16);switch(i){case 3:e^=(t.charCodeAt(r+2)&255)<<16;case 2:e^=(t.charCodeAt(r+1)&255)<<8;case 1:e^=t.charCodeAt(r)&255,e=(e&65535)*1540483477+((e>>>16)*59797<<16)}return e^=e>>>13,e=(e&65535)*1540483477+((e>>>16)*59797<<16),((e^e>>>15)>>>0).toString(36)}var V4={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},z4=/[A-Z]|^ms/g,U4=/_EMO_([^_]+?)_([^]*?)_EMO_/g,OC=function(e){return e.charCodeAt(1)===45},lx=function(e){return e!=null&&typeof e!="boolean"},wm=wC(function(t){return OC(t)?t:t.replace(z4,"-$&").toLowerCase()}),ux=function(e,n){switch(e){case"animation":case"animationName":if(typeof n=="string")return n.replace(U4,function(r,i,s){return Tr={name:i,styles:s,next:Tr},i})}return V4[e]!==1&&!OC(e)&&typeof n=="number"&&n!==0?n+"px":n};function _u(t,e,n){if(n==null)return"";if(n.__emotion_styles!==void 0)return n;switch(typeof n){case"boolean":return"";case"object":{if(n.anim===1)return Tr={name:n.name,styles:n.styles,next:Tr},n.name;if(n.styles!==void 0){var r=n.next;if(r!==void 0)for(;r!==void 0;)Tr={name:r.name,styles:r.styles,next:Tr},r=r.next;var i=n.styles+";";return i}return j4(t,e,n)}case"function":{if(t!==void 0){var s=Tr,o=n(t);return Tr=s,_u(t,e,o)}break}}if(e==null)return n;var a=e[n];return a!==void 0?a:n}function j4(t,e,n){var r="";if(Array.isArray(n))for(var i=0;i96?G4:K4},dx=function(e,n,r){var i;if(n){var s=n.shouldForwardProp;i=e.__emotion_forwardProp&&s?function(o){return e.__emotion_forwardProp(o)&&s(o)}:s}return typeof i!="function"&&r&&(i=e.__emotion_forwardProp),i},Q4=function(e){var n=e.cache,r=e.serialized,i=e.isStringTag;return MC(n,r,i),W4(function(){return L4(n,r,i)}),null},Y4=function t(e,n){var r=e.__emotion_real===e,i=r&&e.__emotion_base||e,s,o;n!==void 0&&(s=n.label,o=n.target);var a=dx(e,n,r),l=a||hx(i),u=!l("as");return function(){var c=arguments,h=r&&e.__emotion_styles!==void 0?e.__emotion_styles.slice(0):[];if(s!==void 0&&h.push("label:"+s+";"),c[0]==null||c[0].raw===void 0)h.push.apply(h,c);else{h.push(c[0][0]);for(var d=c.length,f=1;f{Array.isArray(t.__emotion_styles)&&(t.__emotion_styles=e(t.__emotion_styles))},Z4=["values","unit","step"],eF=t=>{const e=Object.keys(t).map(n=>({key:n,val:t[n]}))||[];return e.sort((n,r)=>n.val-r.val),e.reduce((n,r)=>I({},n,{[r.key]:r.val}),{})};function tF(t){const{values:e={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:r=5}=t,i=ue(t,Z4),s=eF(e),o=Object.keys(s);function a(d){return`@media (min-width:${typeof e[d]=="number"?e[d]:d}${n})`}function l(d){return`@media (max-width:${(typeof e[d]=="number"?e[d]:d)-r/100}${n})`}function u(d,f){const p=o.indexOf(f);return`@media (min-width:${typeof e[d]=="number"?e[d]:d}${n}) and (max-width:${(p!==-1&&typeof e[o[p]]=="number"?e[o[p]]:f)-r/100}${n})`}function c(d){return o.indexOf(d)+1`@media (min-width:${k0[t]}px)`};function Kn(t,e,n){const r=t.theme||{};if(Array.isArray(e)){const s=r.breakpoints||fx;return e.reduce((o,a,l)=>(o[s.up(s.keys[l])]=n(e[l]),o),{})}if(typeof e=="object"){const s=r.breakpoints||fx;return Object.keys(e).reduce((o,a)=>{if(Object.keys(s.values||k0).indexOf(a)!==-1){const l=s.up(a);o[l]=n(e[a],a)}else{const l=a;o[l]=e[l]}return o},{})}return n(e)}function iF(t={}){var e;return((e=t.keys)==null?void 0:e.reduce((r,i)=>{const s=t.up(i);return r[s]={},r},{}))||{}}function sF(t,e){return t.reduce((n,r)=>{const i=n[r];return(!i||Object.keys(i).length===0)&&delete n[r],n},e)}function oF(t,e){if(typeof t!="object")return{};const n={},r=Object.keys(e);return Array.isArray(t)?r.forEach((i,s)=>{s{t[i]!=null&&(n[i]=!0)}),n}function zf({values:t,breakpoints:e,base:n}){const r=n||oF(t,e),i=Object.keys(r);if(i.length===0)return t;let s;return i.reduce((o,a,l)=>(Array.isArray(t)?(o[a]=t[l]!=null?t[l]:t[s],s=l):typeof t=="object"?(o[a]=t[a]!=null?t[a]:t[s],s=a):o[a]=t,o),{})}function Uf(t,e,n=!0){if(!e||typeof e!="string")return null;if(t&&t.vars&&n){const r=`vars.${e}`.split(".").reduce((i,s)=>i&&i[s]?i[s]:null,t);if(r!=null)return r}return e.split(".").reduce((r,i)=>r&&r[i]!=null?r[i]:null,t)}function wd(t,e,n,r=n){let i;return typeof t=="function"?i=t(n):Array.isArray(t)?i=t[n]||r:i=Uf(t,n)||r,e&&(i=e(i,r,t)),i}function Ae(t){const{prop:e,cssProperty:n=t.prop,themeKey:r,transform:i}=t,s=o=>{if(o[e]==null)return null;const a=o[e],l=o.theme,u=Uf(l,r)||{};return Kn(o,a,h=>{let d=wd(u,i,h);return h===d&&typeof h=="string"&&(d=wd(u,i,`${e}${h==="default"?"":be(h)}`,h)),n===!1?d:{[n]:d}})};return s.propTypes={},s.filterProps=[e],s}function aF(t){const e={};return n=>(e[n]===void 0&&(e[n]=t(n)),e[n])}const lF={m:"margin",p:"padding"},uF={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},px={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},cF=aF(t=>{if(t.length>2)if(px[t])t=px[t];else return[t];const[e,n]=t.split(""),r=lF[e],i=uF[n]||"";return Array.isArray(i)?i.map(s=>r+s):[r+i]}),C0=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],I0=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"];[...C0,...I0];function sc(t,e,n,r){var i;const s=(i=Uf(t,e,!1))!=null?i:n;return typeof s=="number"?o=>typeof o=="string"?o:s*o:Array.isArray(s)?o=>typeof o=="string"?o:s[o]:typeof s=="function"?s:()=>{}}function LC(t){return sc(t,"spacing",8)}function oc(t,e){if(typeof e=="string"||e==null)return e;const n=Math.abs(e),r=t(n);return e>=0?r:typeof r=="number"?-r:`-${r}`}function hF(t,e){return n=>t.reduce((r,i)=>(r[i]=oc(e,n),r),{})}function dF(t,e,n,r){if(e.indexOf(n)===-1)return null;const i=cF(n),s=hF(i,r),o=t[n];return Kn(t,o,s)}function FC(t,e){const n=LC(t.theme);return Object.keys(t).map(r=>dF(t,e,r,n)).reduce(Vl,{})}function Ye(t){return FC(t,C0)}Ye.propTypes={};Ye.filterProps=C0;function Xe(t){return FC(t,I0)}Xe.propTypes={};Xe.filterProps=I0;function fF(t=8){if(t.mui)return t;const e=LC({spacing:t}),n=(...r)=>(r.length===0?[1]:r).map(s=>{const o=e(s);return typeof o=="number"?`${o}px`:o}).join(" ");return n.mui=!0,n}function jf(...t){const e=t.reduce((r,i)=>(i.filterProps.forEach(s=>{r[s]=i}),r),{}),n=r=>Object.keys(r).reduce((i,s)=>e[s]?Vl(i,e[s](r)):i,{});return n.propTypes={},n.filterProps=t.reduce((r,i)=>r.concat(i.filterProps),[]),n}function kr(t){return typeof t!="number"?t:`${t}px solid`}const pF=Ae({prop:"border",themeKey:"borders",transform:kr}),mF=Ae({prop:"borderTop",themeKey:"borders",transform:kr}),gF=Ae({prop:"borderRight",themeKey:"borders",transform:kr}),yF=Ae({prop:"borderBottom",themeKey:"borders",transform:kr}),vF=Ae({prop:"borderLeft",themeKey:"borders",transform:kr}),_F=Ae({prop:"borderColor",themeKey:"palette"}),wF=Ae({prop:"borderTopColor",themeKey:"palette"}),xF=Ae({prop:"borderRightColor",themeKey:"palette"}),bF=Ae({prop:"borderBottomColor",themeKey:"palette"}),EF=Ae({prop:"borderLeftColor",themeKey:"palette"}),Bf=t=>{if(t.borderRadius!==void 0&&t.borderRadius!==null){const e=sc(t.theme,"shape.borderRadius",4),n=r=>({borderRadius:oc(e,r)});return Kn(t,t.borderRadius,n)}return null};Bf.propTypes={};Bf.filterProps=["borderRadius"];jf(pF,mF,gF,yF,vF,_F,wF,xF,bF,EF,Bf);const Hf=t=>{if(t.gap!==void 0&&t.gap!==null){const e=sc(t.theme,"spacing",8),n=r=>({gap:oc(e,r)});return Kn(t,t.gap,n)}return null};Hf.propTypes={};Hf.filterProps=["gap"];const Wf=t=>{if(t.columnGap!==void 0&&t.columnGap!==null){const e=sc(t.theme,"spacing",8),n=r=>({columnGap:oc(e,r)});return Kn(t,t.columnGap,n)}return null};Wf.propTypes={};Wf.filterProps=["columnGap"];const qf=t=>{if(t.rowGap!==void 0&&t.rowGap!==null){const e=sc(t.theme,"spacing",8),n=r=>({rowGap:oc(e,r)});return Kn(t,t.rowGap,n)}return null};qf.propTypes={};qf.filterProps=["rowGap"];const TF=Ae({prop:"gridColumn"}),SF=Ae({prop:"gridRow"}),kF=Ae({prop:"gridAutoFlow"}),CF=Ae({prop:"gridAutoColumns"}),IF=Ae({prop:"gridAutoRows"}),PF=Ae({prop:"gridTemplateColumns"}),AF=Ae({prop:"gridTemplateRows"}),RF=Ae({prop:"gridTemplateAreas"}),MF=Ae({prop:"gridArea"});jf(Hf,Wf,qf,TF,SF,kF,CF,IF,PF,AF,RF,MF);function ia(t,e){return e==="grey"?e:t}const OF=Ae({prop:"color",themeKey:"palette",transform:ia}),DF=Ae({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:ia}),NF=Ae({prop:"backgroundColor",themeKey:"palette",transform:ia});jf(OF,DF,NF);function _n(t){return t<=1&&t!==0?`${t*100}%`:t}const $F=Ae({prop:"width",transform:_n}),P0=t=>{if(t.maxWidth!==void 0&&t.maxWidth!==null){const e=n=>{var r,i;const s=((r=t.theme)==null||(r=r.breakpoints)==null||(r=r.values)==null?void 0:r[n])||k0[n];return s?((i=t.theme)==null||(i=i.breakpoints)==null?void 0:i.unit)!=="px"?{maxWidth:`${s}${t.theme.breakpoints.unit}`}:{maxWidth:s}:{maxWidth:_n(n)}};return Kn(t,t.maxWidth,e)}return null};P0.filterProps=["maxWidth"];const LF=Ae({prop:"minWidth",transform:_n}),FF=Ae({prop:"height",transform:_n}),VF=Ae({prop:"maxHeight",transform:_n}),zF=Ae({prop:"minHeight",transform:_n});Ae({prop:"size",cssProperty:"width",transform:_n});Ae({prop:"size",cssProperty:"height",transform:_n});const UF=Ae({prop:"boxSizing"});jf($F,P0,LF,FF,VF,zF,UF);const jF={border:{themeKey:"borders",transform:kr},borderTop:{themeKey:"borders",transform:kr},borderRight:{themeKey:"borders",transform:kr},borderBottom:{themeKey:"borders",transform:kr},borderLeft:{themeKey:"borders",transform:kr},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:Bf},color:{themeKey:"palette",transform:ia},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:ia},backgroundColor:{themeKey:"palette",transform:ia},p:{style:Xe},pt:{style:Xe},pr:{style:Xe},pb:{style:Xe},pl:{style:Xe},px:{style:Xe},py:{style:Xe},padding:{style:Xe},paddingTop:{style:Xe},paddingRight:{style:Xe},paddingBottom:{style:Xe},paddingLeft:{style:Xe},paddingX:{style:Xe},paddingY:{style:Xe},paddingInline:{style:Xe},paddingInlineStart:{style:Xe},paddingInlineEnd:{style:Xe},paddingBlock:{style:Xe},paddingBlockStart:{style:Xe},paddingBlockEnd:{style:Xe},m:{style:Ye},mt:{style:Ye},mr:{style:Ye},mb:{style:Ye},ml:{style:Ye},mx:{style:Ye},my:{style:Ye},margin:{style:Ye},marginTop:{style:Ye},marginRight:{style:Ye},marginBottom:{style:Ye},marginLeft:{style:Ye},marginX:{style:Ye},marginY:{style:Ye},marginInline:{style:Ye},marginInlineStart:{style:Ye},marginInlineEnd:{style:Ye},marginBlock:{style:Ye},marginBlockStart:{style:Ye},marginBlockEnd:{style:Ye},displayPrint:{cssProperty:!1,transform:t=>({"@media print":{display:t}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:Hf},rowGap:{style:qf},columnGap:{style:Wf},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:_n},maxWidth:{style:P0},minWidth:{transform:_n},height:{transform:_n},maxHeight:{transform:_n},minHeight:{transform:_n},boxSizing:{},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}},Gf=jF;function BF(...t){const e=t.reduce((r,i)=>r.concat(Object.keys(i)),[]),n=new Set(e);return t.every(r=>n.size===Object.keys(r).length)}function HF(t,e){return typeof t=="function"?t(e):t}function WF(){function t(n,r,i,s){const o={[n]:r,theme:i},a=s[n];if(!a)return{[n]:r};const{cssProperty:l=n,themeKey:u,transform:c,style:h}=a;if(r==null)return null;if(u==="typography"&&r==="inherit")return{[n]:r};const d=Uf(i,u)||{};return h?h(o):Kn(o,r,p=>{let m=wd(d,c,p);return p===m&&typeof p=="string"&&(m=wd(d,c,`${n}${p==="default"?"":be(p)}`,p)),l===!1?m:{[l]:m}})}function e(n){var r;const{sx:i,theme:s={}}=n||{};if(!i)return null;const o=(r=s.unstable_sxConfig)!=null?r:Gf;function a(l){let u=l;if(typeof l=="function")u=l(s);else if(typeof l!="object")return l;if(!u)return null;const c=iF(s.breakpoints),h=Object.keys(c);let d=c;return Object.keys(u).forEach(f=>{const p=HF(u[f],s);if(p!=null)if(typeof p=="object")if(o[f])d=Vl(d,t(f,p,s,o));else{const m=Kn({theme:s},p,w=>({[f]:w}));BF(m,p)?d[f]=e({sx:p,theme:s}):d=Vl(d,m)}else d=Vl(d,t(f,p,s,o))}),sF(h,d)}return Array.isArray(i)?i.map(a):a(i)}return e}const VC=WF();VC.filterProps=["sx"];const Kf=VC,qF=["breakpoints","palette","spacing","shape"];function A0(t={},...e){const{breakpoints:n={},palette:r={},spacing:i,shape:s={}}=t,o=ue(t,qF),a=tF(n),l=fF(i);let u=ar({breakpoints:a,direction:"ltr",components:{},palette:I({mode:"light"},r),spacing:l,shape:I({},rF,s)},o);return u=e.reduce((c,h)=>ar(c,h),u),u.unstable_sxConfig=I({},Gf,o==null?void 0:o.unstable_sxConfig),u.unstable_sx=function(h){return Kf({sx:h,theme:this})},u}function GF(t){return Object.keys(t).length===0}function zC(t=null){const e=T.useContext(T0);return!e||GF(e)?t:e}const KF=A0();function R0(t=KF){return zC(t)}const QF=["sx"],YF=t=>{var e,n;const r={systemProps:{},otherProps:{}},i=(e=t==null||(n=t.theme)==null?void 0:n.unstable_sxConfig)!=null?e:Gf;return Object.keys(t).forEach(s=>{i[s]?r.systemProps[s]=t[s]:r.otherProps[s]=t[s]}),r};function M0(t){const{sx:e}=t,n=ue(t,QF),{systemProps:r,otherProps:i}=YF(n);let s;return Array.isArray(e)?s=[r,...e]:typeof e=="function"?s=(...o)=>{const a=e(...o);return Qr(a)?I({},r,a):r}:s=I({},r,e),I({},i,{sx:s})}function UC(t){var e,n,r="";if(typeof t=="string"||typeof t=="number")r+=t;else if(typeof t=="object")if(Array.isArray(t))for(e=0;ea!=="theme"&&a!=="sx"&&a!=="as"})(Kf);return T.forwardRef(function(l,u){const c=R0(n),h=M0(l),{className:d,component:f="div"}=h,p=ue(h,XF);return k.jsx(s,I({as:f,ref:u,className:$e(d,i?i(r):r),theme:e&&c[e]||c},p))})}const JF=jC(),ZF=JF,eV=["variant"];function mx(t){return t.length===0}function BC(t){const{variant:e}=t,n=ue(t,eV);let r=e||"";return Object.keys(n).sort().forEach(i=>{i==="color"?r+=mx(r)?t[i]:be(t[i]):r+=`${mx(r)?i:be(i)}${be(t[i].toString())}`}),r}const tV=["name","slot","skipVariantsResolver","skipSx","overridesResolver"];function nV(t){return Object.keys(t).length===0}function rV(t){return typeof t=="string"&&t.charCodeAt(0)>96}const iV=(t,e)=>e.components&&e.components[t]&&e.components[t].styleOverrides?e.components[t].styleOverrides:null,xd=t=>{const e={};return t&&t.forEach(n=>{const r=BC(n.props);e[r]=n.style}),e},sV=(t,e)=>{let n=[];return e&&e.components&&e.components[t]&&e.components[t].variants&&(n=e.components[t].variants),xd(n)},bd=(t,e,n)=>{const{ownerState:r={}}=t,i=[];return n&&n.forEach(s=>{let o=!0;Object.keys(s.props).forEach(a=>{r[a]!==s.props[a]&&t[a]!==s.props[a]&&(o=!1)}),o&&i.push(e[BC(s.props)])}),i},oV=(t,e,n,r)=>{var i;const s=n==null||(i=n.components)==null||(i=i[r])==null?void 0:i.variants;return bd(t,e,s)};function Ph(t){return t!=="ownerState"&&t!=="theme"&&t!=="sx"&&t!=="as"}const aV=A0(),lV=t=>t&&t.charAt(0).toLowerCase()+t.slice(1);function Ah({defaultTheme:t,theme:e,themeId:n}){return nV(e)?t:e[n]||e}function uV(t){return t?(e,n)=>n[t]:null}const gx=({styledArg:t,props:e,defaultTheme:n,themeId:r})=>{const i=t(I({},e,{theme:Ah(I({},e,{defaultTheme:n,themeId:r}))}));let s;if(i&&i.variants&&(s=i.variants,delete i.variants),s){const o=bd(e,xd(s),s);return[i,...o]}return i};function cV(t={}){const{themeId:e,defaultTheme:n=aV,rootShouldForwardProp:r=Ph,slotShouldForwardProp:i=Ph}=t,s=o=>Kf(I({},o,{theme:Ah(I({},o,{defaultTheme:n,themeId:e}))}));return s.__mui_systemSx=!0,(o,a={})=>{J4(o,_=>_.filter(x=>!(x!=null&&x.__mui_systemSx)));const{name:l,slot:u,skipVariantsResolver:c,skipSx:h,overridesResolver:d=uV(lV(u))}=a,f=ue(a,tV),p=c!==void 0?c:u&&u!=="Root"&&u!=="root"||!1,m=h||!1;let w,g=Ph;u==="Root"||u==="root"?g=r:u?g=i:rV(o)&&(g=void 0);const y=$C(o,I({shouldForwardProp:g,label:w},f)),v=(_,...x)=>{const b=x?x.map(S=>{if(typeof S=="function"&&S.__emotion_real!==S)return P=>gx({styledArg:S,props:P,defaultTheme:n,themeId:e});if(Qr(S)){let P=S,M;return S&&S.variants&&(M=S.variants,delete P.variants,P=D=>{let $=S;return bd(D,xd(M),M).forEach(F=>{$=ar($,F)}),$}),P}return S}):[];let E=_;if(Qr(_)){let S;_&&_.variants&&(S=_.variants,delete E.variants,E=P=>{let M=_;return bd(P,xd(S),S).forEach($=>{M=ar(M,$)}),M})}else typeof _=="function"&&_.__emotion_real!==_&&(E=S=>gx({styledArg:_,props:S,defaultTheme:n,themeId:e}));l&&d&&b.push(S=>{const P=Ah(I({},S,{defaultTheme:n,themeId:e})),M=iV(l,P);if(M){const D={};return Object.entries(M).forEach(([$,B])=>{D[$]=typeof B=="function"?B(I({},S,{theme:P})):B}),d(S,D)}return null}),l&&!p&&b.push(S=>{const P=Ah(I({},S,{defaultTheme:n,themeId:e}));return oV(S,sV(l,P),P,l)}),m||b.push(s);const C=b.length-x.length;if(Array.isArray(_)&&C>0){const S=new Array(C).fill("");E=[..._,...S],E.raw=[..._.raw,...S]}const A=y(E,...b);return o.muiName&&(A.muiName=o.muiName),A};return y.withConfig&&(v.withConfig=y.withConfig),v}}function hV(t){const{theme:e,name:n,props:r}=t;return!e||!e.components||!e.components[n]||!e.components[n].defaultProps?r:g0(e.components[n].defaultProps,r)}function dV({props:t,name:e,defaultTheme:n,themeId:r}){let i=R0(n);return r&&(i=i[r]||i),hV({theme:i,name:e,props:t})}function O0(t,e=0,n=1){return Math.min(Math.max(e,t),n)}function fV(t){t=t.slice(1);const e=new RegExp(`.{1,${t.length>=6?2:1}}`,"g");let n=t.match(e);return n&&n[0].length===1&&(n=n.map(r=>r+r)),n?`rgb${n.length===4?"a":""}(${n.map((r,i)=>i<3?parseInt(r,16):Math.round(parseInt(r,16)/255*1e3)/1e3).join(", ")})`:""}function Xs(t){if(t.type)return t;if(t.charAt(0)==="#")return Xs(fV(t));const e=t.indexOf("("),n=t.substring(0,e);if(["rgb","rgba","hsl","hsla","color"].indexOf(n)===-1)throw new Error(_a(9,t));let r=t.substring(e+1,t.length-1),i;if(n==="color"){if(r=r.split(" "),i=r.shift(),r.length===4&&r[3].charAt(0)==="/"&&(r[3]=r[3].slice(1)),["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(i)===-1)throw new Error(_a(10,i))}else r=r.split(",");return r=r.map(s=>parseFloat(s)),{type:n,values:r,colorSpace:i}}function Qf(t){const{type:e,colorSpace:n}=t;let{values:r}=t;return e.indexOf("rgb")!==-1?r=r.map((i,s)=>s<3?parseInt(i,10):i):e.indexOf("hsl")!==-1&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),e.indexOf("color")!==-1?r=`${n} ${r.join(" ")}`:r=`${r.join(", ")}`,`${e}(${r})`}function pV(t){t=Xs(t);const{values:e}=t,n=e[0],r=e[1]/100,i=e[2]/100,s=r*Math.min(i,1-i),o=(u,c=(u+n/30)%12)=>i-s*Math.max(Math.min(c-3,9-c,1),-1);let a="rgb";const l=[Math.round(o(0)*255),Math.round(o(8)*255),Math.round(o(4)*255)];return t.type==="hsla"&&(a+="a",l.push(e[3])),Qf({type:a,values:l})}function yx(t){t=Xs(t);let e=t.type==="hsl"||t.type==="hsla"?Xs(pV(t)).values:t.values;return e=e.map(n=>(t.type!=="color"&&(n/=255),n<=.03928?n/12.92:((n+.055)/1.055)**2.4)),Number((.2126*e[0]+.7152*e[1]+.0722*e[2]).toFixed(3))}function mV(t,e){const n=yx(t),r=yx(e);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function Ui(t,e){return t=Xs(t),e=O0(e),(t.type==="rgb"||t.type==="hsl")&&(t.type+="a"),t.type==="color"?t.values[3]=`/${e}`:t.values[3]=e,Qf(t)}function gV(t,e){if(t=Xs(t),e=O0(e),t.type.indexOf("hsl")!==-1)t.values[2]*=1-e;else if(t.type.indexOf("rgb")!==-1||t.type.indexOf("color")!==-1)for(let n=0;n<3;n+=1)t.values[n]*=1-e;return Qf(t)}function yV(t,e){if(t=Xs(t),e=O0(e),t.type.indexOf("hsl")!==-1)t.values[2]+=(100-t.values[2])*e;else if(t.type.indexOf("rgb")!==-1)for(let n=0;n<3;n+=1)t.values[n]+=(255-t.values[n])*e;else if(t.type.indexOf("color")!==-1)for(let n=0;n<3;n+=1)t.values[n]+=(1-t.values[n])*e;return Qf(t)}const vV=T.createContext(null),HC=vV;function WC(){return T.useContext(HC)}const _V=typeof Symbol=="function"&&Symbol.for,wV=_V?Symbol.for("mui.nested"):"__THEME_NESTED__";function xV(t,e){return typeof e=="function"?e(t):I({},t,e)}function bV(t){const{children:e,theme:n}=t,r=WC(),i=T.useMemo(()=>{const s=r===null?n:xV(r,n);return s!=null&&(s[wV]=r!==null),s},[n,r]);return k.jsx(HC.Provider,{value:i,children:e})}const vx={};function _x(t,e,n,r=!1){return T.useMemo(()=>{const i=t&&e[t]||e;if(typeof n=="function"){const s=n(i),o=t?I({},e,{[t]:s}):s;return r?()=>o:o}return t?I({},e,{[t]:n}):I({},e,n)},[t,e,n,r])}function EV(t){const{children:e,theme:n,themeId:r}=t,i=zC(vx),s=WC()||vx,o=_x(r,i,n),a=_x(r,s,n,!0);return k.jsx(bV,{theme:a,children:k.jsx(T0.Provider,{value:o,children:e})})}function TV(t,e){return I({toolbar:{minHeight:56,[t.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[t.up("sm")]:{minHeight:64}}},e)}const SV=["mode","contrastThreshold","tonalOffset"],wx={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:gu.white,default:gu.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}},xm={text:{primary:gu.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:gu.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}};function xx(t,e,n,r){const i=r.light||r,s=r.dark||r*1.5;t[e]||(t.hasOwnProperty(n)?t[e]=t[n]:e==="light"?t.light=yV(t.main,i):e==="dark"&&(t.dark=gV(t.main,s)))}function kV(t="light"){return t==="dark"?{main:bo[200],light:bo[50],dark:bo[400]}:{main:bo[700],light:bo[400],dark:bo[800]}}function CV(t="light"){return t==="dark"?{main:xo[200],light:xo[50],dark:xo[400]}:{main:xo[500],light:xo[300],dark:xo[700]}}function IV(t="light"){return t==="dark"?{main:wo[500],light:wo[300],dark:wo[700]}:{main:wo[700],light:wo[400],dark:wo[800]}}function PV(t="light"){return t==="dark"?{main:Eo[400],light:Eo[300],dark:Eo[700]}:{main:Eo[700],light:Eo[500],dark:Eo[900]}}function AV(t="light"){return t==="dark"?{main:To[400],light:To[300],dark:To[700]}:{main:To[800],light:To[500],dark:To[900]}}function RV(t="light"){return t==="dark"?{main:ul[400],light:ul[300],dark:ul[700]}:{main:"#ed6c02",light:ul[500],dark:ul[900]}}function MV(t){const{mode:e="light",contrastThreshold:n=3,tonalOffset:r=.2}=t,i=ue(t,SV),s=t.primary||kV(e),o=t.secondary||CV(e),a=t.error||IV(e),l=t.info||PV(e),u=t.success||AV(e),c=t.warning||RV(e);function h(m){return mV(m,xm.text.primary)>=n?xm.text.primary:wx.text.primary}const d=({color:m,name:w,mainShade:g=500,lightShade:y=300,darkShade:v=700})=>{if(m=I({},m),!m.main&&m[g]&&(m.main=m[g]),!m.hasOwnProperty("main"))throw new Error(_a(11,w?` (${w})`:"",g));if(typeof m.main!="string")throw new Error(_a(12,w?` (${w})`:"",JSON.stringify(m.main)));return xx(m,"light",y,r),xx(m,"dark",v,r),m.contrastText||(m.contrastText=h(m.main)),m},f={dark:xm,light:wx};return ar(I({common:I({},gu),mode:e,primary:d({color:s,name:"primary"}),secondary:d({color:o,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:d({color:a,name:"error"}),warning:d({color:c,name:"warning"}),info:d({color:l,name:"info"}),success:d({color:u,name:"success"}),grey:kL,contrastThreshold:n,getContrastText:h,augmentColor:d,tonalOffset:r},f[e]),i)}const OV=["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"];function DV(t){return Math.round(t*1e5)/1e5}const bx={textTransform:"uppercase"},Ex='"Roboto", "Helvetica", "Arial", sans-serif';function NV(t,e){const n=typeof e=="function"?e(t):e,{fontFamily:r=Ex,fontSize:i=14,fontWeightLight:s=300,fontWeightRegular:o=400,fontWeightMedium:a=500,fontWeightBold:l=700,htmlFontSize:u=16,allVariants:c,pxToRem:h}=n,d=ue(n,OV),f=i/14,p=h||(g=>`${g/u*f}rem`),m=(g,y,v,_,x)=>I({fontFamily:r,fontWeight:g,fontSize:p(y),lineHeight:v},r===Ex?{letterSpacing:`${DV(_/y)}em`}:{},x,c),w={h1:m(s,96,1.167,-1.5),h2:m(s,60,1.2,-.5),h3:m(o,48,1.167,0),h4:m(o,34,1.235,.25),h5:m(o,24,1.334,0),h6:m(a,20,1.6,.15),subtitle1:m(o,16,1.75,.15),subtitle2:m(a,14,1.57,.1),body1:m(o,16,1.5,.15),body2:m(o,14,1.43,.15),button:m(a,14,1.75,.4,bx),caption:m(o,12,1.66,.4),overline:m(o,12,2.66,1,bx),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return ar(I({htmlFontSize:u,pxToRem:p,fontFamily:r,fontSize:i,fontWeightLight:s,fontWeightRegular:o,fontWeightMedium:a,fontWeightBold:l},w),d,{clone:!1})}const $V=.2,LV=.14,FV=.12;function Be(...t){return[`${t[0]}px ${t[1]}px ${t[2]}px ${t[3]}px rgba(0,0,0,${$V})`,`${t[4]}px ${t[5]}px ${t[6]}px ${t[7]}px rgba(0,0,0,${LV})`,`${t[8]}px ${t[9]}px ${t[10]}px ${t[11]}px rgba(0,0,0,${FV})`].join(",")}const VV=["none",Be(0,2,1,-1,0,1,1,0,0,1,3,0),Be(0,3,1,-2,0,2,2,0,0,1,5,0),Be(0,3,3,-2,0,3,4,0,0,1,8,0),Be(0,2,4,-1,0,4,5,0,0,1,10,0),Be(0,3,5,-1,0,5,8,0,0,1,14,0),Be(0,3,5,-1,0,6,10,0,0,1,18,0),Be(0,4,5,-2,0,7,10,1,0,2,16,1),Be(0,5,5,-3,0,8,10,1,0,3,14,2),Be(0,5,6,-3,0,9,12,1,0,3,16,2),Be(0,6,6,-3,0,10,14,1,0,4,18,3),Be(0,6,7,-4,0,11,15,1,0,4,20,3),Be(0,7,8,-4,0,12,17,2,0,5,22,4),Be(0,7,8,-4,0,13,19,2,0,5,24,4),Be(0,7,9,-4,0,14,21,2,0,5,26,4),Be(0,8,9,-5,0,15,22,2,0,6,28,5),Be(0,8,10,-5,0,16,24,2,0,6,30,5),Be(0,8,11,-5,0,17,26,2,0,6,32,5),Be(0,9,11,-5,0,18,28,2,0,7,34,6),Be(0,9,12,-6,0,19,29,2,0,7,36,6),Be(0,10,13,-6,0,20,31,3,0,8,38,7),Be(0,10,13,-6,0,21,33,3,0,8,40,7),Be(0,10,14,-6,0,22,35,3,0,8,42,7),Be(0,11,14,-7,0,23,36,3,0,9,44,8),Be(0,11,15,-7,0,24,38,3,0,9,46,8)],zV=VV,UV=["duration","easing","delay"],jV={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},BV={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function Tx(t){return`${Math.round(t)}ms`}function HV(t){if(!t)return 0;const e=t/36;return Math.round((4+15*e**.25+e/5)*10)}function WV(t){const e=I({},jV,t.easing),n=I({},BV,t.duration);return I({getAutoHeightDuration:HV,create:(i=["all"],s={})=>{const{duration:o=n.standard,easing:a=e.easeInOut,delay:l=0}=s;return ue(s,UV),(Array.isArray(i)?i:[i]).map(u=>`${u} ${typeof o=="string"?o:Tx(o)} ${a} ${typeof l=="string"?l:Tx(l)}`).join(",")}},t,{easing:e,duration:n})}const qV={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500},GV=qV,KV=["breakpoints","mixins","spacing","palette","transitions","typography","shape"];function D0(t={},...e){const{mixins:n={},palette:r={},transitions:i={},typography:s={}}=t,o=ue(t,KV);if(t.vars)throw new Error(_a(18));const a=MV(r),l=A0(t);let u=ar(l,{mixins:TV(l.breakpoints,n),palette:a,shadows:zV.slice(),typography:NV(a,s),transitions:WV(i),zIndex:I({},GV)});return u=ar(u,o),u=e.reduce((c,h)=>ar(c,h),u),u.unstable_sxConfig=I({},Gf,o==null?void 0:o.unstable_sxConfig),u.unstable_sx=function(h){return Kf({sx:h,theme:this})},u}const QV=D0(),N0=QV;function lo(){const t=R0(N0);return t[wa]||t}function tn({props:t,name:e}){return dV({props:t,name:e,defaultTheme:N0,themeId:wa})}const qC=t=>Ph(t)&&t!=="classes",YV=cV({themeId:wa,defaultTheme:N0,rootShouldForwardProp:qC}),Te=YV,XV=["theme"];function JV(t){let{theme:e}=t,n=ue(t,XV);const r=e[wa];return k.jsx(EV,I({},n,{themeId:r?wa:void 0,theme:r||e}))}const ZV=t=>{let e;return t<1?e=5.11916*t**2:e=4.5*Math.log(t+1)+2,(e/100).toFixed(2)},Sx=ZV;function e5(t){return ut("MuiSvgIcon",t)}ct("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);const t5=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],n5=t=>{const{color:e,fontSize:n,classes:r}=t,i={root:["root",e!=="inherit"&&`color${be(e)}`,`fontSize${be(n)}`]};return lt(i,e5,r)},r5=Te("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,n.color!=="inherit"&&e[`color${be(n.color)}`],e[`fontSize${be(n.fontSize)}`]]}})(({theme:t,ownerState:e})=>{var n,r,i,s,o,a,l,u,c,h,d,f,p;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:e.hasSvgAsChild?void 0:"currentColor",flexShrink:0,transition:(n=t.transitions)==null||(r=n.create)==null?void 0:r.call(n,"fill",{duration:(i=t.transitions)==null||(i=i.duration)==null?void 0:i.shorter}),fontSize:{inherit:"inherit",small:((s=t.typography)==null||(o=s.pxToRem)==null?void 0:o.call(s,20))||"1.25rem",medium:((a=t.typography)==null||(l=a.pxToRem)==null?void 0:l.call(a,24))||"1.5rem",large:((u=t.typography)==null||(c=u.pxToRem)==null?void 0:c.call(u,35))||"2.1875rem"}[e.fontSize],color:(h=(d=(t.vars||t).palette)==null||(d=d[e.color])==null?void 0:d.main)!=null?h:{action:(f=(t.vars||t).palette)==null||(f=f.action)==null?void 0:f.active,disabled:(p=(t.vars||t).palette)==null||(p=p.action)==null?void 0:p.disabled,inherit:void 0}[e.color]}}),GC=T.forwardRef(function(e,n){const r=tn({props:e,name:"MuiSvgIcon"}),{children:i,className:s,color:o="inherit",component:a="svg",fontSize:l="medium",htmlColor:u,inheritViewBox:c=!1,titleAccess:h,viewBox:d="0 0 24 24"}=r,f=ue(r,t5),p=T.isValidElement(i)&&i.type==="svg",m=I({},r,{color:o,component:a,fontSize:l,instanceFontSize:e.fontSize,inheritViewBox:c,viewBox:d,hasSvgAsChild:p}),w={};c||(w.viewBox=d);const g=n5(m);return k.jsxs(r5,I({as:a,className:$e(g.root,s),focusable:"false",color:u,"aria-hidden":h?void 0:!0,role:h?"img":void 0,ref:n},w,f,p&&i.props,{ownerState:m,children:[p?i.props.children:i,h?k.jsx("title",{children:h}):null]}))});GC.muiName="SvgIcon";const kx=GC;function i5(t,e){function n(r,i){return k.jsx(kx,I({"data-testid":`${e}Icon`,ref:i},r,{children:t}))}return n.muiName=kx.muiName,T.memo(T.forwardRef(n))}const s5={configure:t=>{y0.configure(t)}},o5=Object.freeze(Object.defineProperty({__proto__:null,capitalize:be,createChainedFunction:hy,createSvgIcon:i5,debounce:ML,deprecatedPropType:OL,isMuiElement:DL,ownerDocument:lr,ownerWindow:nc,requirePropFactory:NL,setRef:vd,unstable_ClassNameGenerator:s5,unstable_useEnhancedEffect:ss,unstable_useId:vC,unsupportedProp:FL,useControlled:VL,useEventCallback:Is,useForkRef:fr,useIsFocusVisible:_C},Symbol.toStringTag,{value:"Module"}));function gy(t,e){return gy=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},gy(t,e)}function KC(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,gy(t,e)}const Cx={disabled:!1},Ed=wn.createContext(null);var a5=function(e){return e.scrollTop},El="unmounted",bs="exited",Es="entering",Po="entered",yy="exiting",Ei=function(t){KC(e,t);function e(r,i){var s;s=t.call(this,r,i)||this;var o=i,a=o&&!o.isMounting?r.enter:r.appear,l;return s.appearStatus=null,r.in?a?(l=bs,s.appearStatus=Es):l=Po:r.unmountOnExit||r.mountOnEnter?l=El:l=bs,s.state={status:l},s.nextCallback=null,s}e.getDerivedStateFromProps=function(i,s){var o=i.in;return o&&s.status===El?{status:bs}:null};var n=e.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(i){var s=null;if(i!==this.props){var o=this.state.status;this.props.in?o!==Es&&o!==Po&&(s=Es):(o===Es||o===Po)&&(s=yy)}this.updateStatus(!1,s)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var i=this.props.timeout,s,o,a;return s=o=a=i,i!=null&&typeof i!="number"&&(s=i.exit,o=i.enter,a=i.appear!==void 0?i.appear:o),{exit:s,enter:o,appear:a}},n.updateStatus=function(i,s){if(i===void 0&&(i=!1),s!==null)if(this.cancelNextCallback(),s===Es){if(this.props.unmountOnExit||this.props.mountOnEnter){var o=this.props.nodeRef?this.props.nodeRef.current:Hc.findDOMNode(this);o&&a5(o)}this.performEnter(i)}else this.performExit();else this.props.unmountOnExit&&this.state.status===bs&&this.setState({status:El})},n.performEnter=function(i){var s=this,o=this.props.enter,a=this.context?this.context.isMounting:i,l=this.props.nodeRef?[a]:[Hc.findDOMNode(this),a],u=l[0],c=l[1],h=this.getTimeouts(),d=a?h.appear:h.enter;if(!i&&!o||Cx.disabled){this.safeSetState({status:Po},function(){s.props.onEntered(u)});return}this.props.onEnter(u,c),this.safeSetState({status:Es},function(){s.props.onEntering(u,c),s.onTransitionEnd(d,function(){s.safeSetState({status:Po},function(){s.props.onEntered(u,c)})})})},n.performExit=function(){var i=this,s=this.props.exit,o=this.getTimeouts(),a=this.props.nodeRef?void 0:Hc.findDOMNode(this);if(!s||Cx.disabled){this.safeSetState({status:bs},function(){i.props.onExited(a)});return}this.props.onExit(a),this.safeSetState({status:yy},function(){i.props.onExiting(a),i.onTransitionEnd(o.exit,function(){i.safeSetState({status:bs},function(){i.props.onExited(a)})})})},n.cancelNextCallback=function(){this.nextCallback!==null&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(i,s){s=this.setNextCallback(s),this.setState(i,s)},n.setNextCallback=function(i){var s=this,o=!0;return this.nextCallback=function(a){o&&(o=!1,s.nextCallback=null,i(a))},this.nextCallback.cancel=function(){o=!1},this.nextCallback},n.onTransitionEnd=function(i,s){this.setNextCallback(s);var o=this.props.nodeRef?this.props.nodeRef.current:Hc.findDOMNode(this),a=i==null&&!this.props.addEndListener;if(!o||a){setTimeout(this.nextCallback,0);return}if(this.props.addEndListener){var l=this.props.nodeRef?[this.nextCallback]:[o,this.nextCallback],u=l[0],c=l[1];this.props.addEndListener(u,c)}i!=null&&setTimeout(this.nextCallback,i)},n.render=function(){var i=this.state.status;if(i===El)return null;var s=this.props,o=s.children;s.in,s.mountOnEnter,s.unmountOnExit,s.appear,s.enter,s.exit,s.timeout,s.addEndListener,s.onEnter,s.onEntering,s.onEntered,s.onExit,s.onExiting,s.onExited,s.nodeRef;var a=ue(s,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]);return wn.createElement(Ed.Provider,{value:null},typeof o=="function"?o(i,a):wn.cloneElement(wn.Children.only(o),a))},e}(wn.Component);Ei.contextType=Ed;Ei.propTypes={};function So(){}Ei.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:So,onEntering:So,onEntered:So,onExit:So,onExiting:So,onExited:So};Ei.UNMOUNTED=El;Ei.EXITED=bs;Ei.ENTERING=Es;Ei.ENTERED=Po;Ei.EXITING=yy;const l5=Ei;function u5(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function $0(t,e){var n=function(s){return e&&T.isValidElement(s)?e(s):s},r=Object.create(null);return t&&T.Children.map(t,function(i){return i}).forEach(function(i){r[i.key]=n(i)}),r}function c5(t,e){t=t||{},e=e||{};function n(c){return c in e?e[c]:t[c]}var r=Object.create(null),i=[];for(var s in t)s in e?i.length&&(r[s]=i,i=[]):i.push(s);var o,a={};for(var l in e){if(r[l])for(o=0;ot.scrollTop;function Ix(t,e){var n,r;const{timeout:i,easing:s,style:o={}}=t;return{duration:(n=o.transitionDuration)!=null?n:typeof i=="number"?i:i[e.mode]||0,easing:(r=o.transitionTimingFunction)!=null?r:typeof s=="object"?s[e.mode]:s,delay:o.transitionDelay}}function y5(t){return ut("MuiPaper",t)}ct("MuiPaper",["root","rounded","outlined","elevation","elevation0","elevation1","elevation2","elevation3","elevation4","elevation5","elevation6","elevation7","elevation8","elevation9","elevation10","elevation11","elevation12","elevation13","elevation14","elevation15","elevation16","elevation17","elevation18","elevation19","elevation20","elevation21","elevation22","elevation23","elevation24"]);const v5=["className","component","elevation","square","variant"],_5=t=>{const{square:e,elevation:n,variant:r,classes:i}=t,s={root:["root",r,!e&&"rounded",r==="elevation"&&`elevation${n}`]};return lt(s,y5,i)},w5=Te("div",{name:"MuiPaper",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,e[n.variant],!n.square&&e.rounded,n.variant==="elevation"&&e[`elevation${n.elevation}`]]}})(({theme:t,ownerState:e})=>{var n;return I({backgroundColor:(t.vars||t).palette.background.paper,color:(t.vars||t).palette.text.primary,transition:t.transitions.create("box-shadow")},!e.square&&{borderRadius:t.shape.borderRadius},e.variant==="outlined"&&{border:`1px solid ${(t.vars||t).palette.divider}`},e.variant==="elevation"&&I({boxShadow:(t.vars||t).shadows[e.elevation]},!t.vars&&t.palette.mode==="dark"&&{backgroundImage:`linear-gradient(${Ui("#fff",Sx(e.elevation))}, ${Ui("#fff",Sx(e.elevation))})`},t.vars&&{backgroundImage:(n=t.vars.overlays)==null?void 0:n[e.elevation]}))}),x5=T.forwardRef(function(e,n){const r=tn({props:e,name:"MuiPaper"}),{className:i,component:s="div",elevation:o=1,square:a=!1,variant:l="elevation"}=r,u=ue(r,v5),c=I({},r,{component:s,elevation:o,square:a,variant:l}),h=_5(c);return k.jsx(w5,I({as:s,ownerState:c,className:$e(h.root,i),ref:n},u))}),b5=x5;function E5(t){const{className:e,classes:n,pulsate:r=!1,rippleX:i,rippleY:s,rippleSize:o,in:a,onExited:l,timeout:u}=t,[c,h]=T.useState(!1),d=$e(e,n.ripple,n.rippleVisible,r&&n.ripplePulsate),f={width:o,height:o,top:-(o/2)+s,left:-(o/2)+i},p=$e(n.child,c&&n.childLeaving,r&&n.childPulsate);return!a&&!c&&h(!0),T.useEffect(()=>{if(!a&&l!=null){const m=setTimeout(l,u);return()=>{clearTimeout(m)}}},[l,a,u]),k.jsx("span",{className:d,style:f,children:k.jsx("span",{className:p})})}const T5=ct("MuiTouchRipple",["root","ripple","rippleVisible","ripplePulsate","child","childLeaving","childPulsate"]),Ln=T5,S5=["center","classes","className"];let Yf=t=>t,Px,Ax,Rx,Mx;const vy=550,k5=80,C5=ic(Px||(Px=Yf`
+ 0% {
+ transform: scale(0);
+ opacity: 0.1;
+ }
+
+ 100% {
+ transform: scale(1);
+ opacity: 0.3;
+ }
+`)),I5=ic(Ax||(Ax=Yf`
+ 0% {
+ opacity: 1;
+ }
+
+ 100% {
+ opacity: 0;
+ }
+`)),P5=ic(Rx||(Rx=Yf`
+ 0% {
+ transform: scale(1);
+ }
+
+ 50% {
+ transform: scale(0.92);
+ }
+
+ 100% {
+ transform: scale(1);
+ }
+`)),A5=Te("span",{name:"MuiTouchRipple",slot:"Root"})({overflow:"hidden",pointerEvents:"none",position:"absolute",zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:"inherit"}),R5=Te(E5,{name:"MuiTouchRipple",slot:"Ripple"})(Mx||(Mx=Yf`
+ opacity: 0;
+ position: absolute;
+
+ &.${0} {
+ opacity: 0.3;
+ transform: scale(1);
+ animation-name: ${0};
+ animation-duration: ${0}ms;
+ animation-timing-function: ${0};
+ }
+
+ &.${0} {
+ animation-duration: ${0}ms;
+ }
+
+ & .${0} {
+ opacity: 1;
+ display: block;
+ width: 100%;
+ height: 100%;
+ border-radius: 50%;
+ background-color: currentColor;
+ }
+
+ & .${0} {
+ opacity: 0;
+ animation-name: ${0};
+ animation-duration: ${0}ms;
+ animation-timing-function: ${0};
+ }
+
+ & .${0} {
+ position: absolute;
+ /* @noflip */
+ left: 0px;
+ top: 0;
+ animation-name: ${0};
+ animation-duration: 2500ms;
+ animation-timing-function: ${0};
+ animation-iteration-count: infinite;
+ animation-delay: 200ms;
+ }
+`),Ln.rippleVisible,C5,vy,({theme:t})=>t.transitions.easing.easeInOut,Ln.ripplePulsate,({theme:t})=>t.transitions.duration.shorter,Ln.child,Ln.childLeaving,I5,vy,({theme:t})=>t.transitions.easing.easeInOut,Ln.childPulsate,P5,({theme:t})=>t.transitions.easing.easeInOut),M5=T.forwardRef(function(e,n){const r=tn({props:e,name:"MuiTouchRipple"}),{center:i=!1,classes:s={},className:o}=r,a=ue(r,S5),[l,u]=T.useState([]),c=T.useRef(0),h=T.useRef(null);T.useEffect(()=>{h.current&&(h.current(),h.current=null)},[l]);const d=T.useRef(!1),f=T.useRef(0),p=T.useRef(null),m=T.useRef(null);T.useEffect(()=>()=>{f.current&&clearTimeout(f.current)},[]);const w=T.useCallback(_=>{const{pulsate:x,rippleX:b,rippleY:E,rippleSize:C,cb:A}=_;u(S=>[...S,k.jsx(R5,{classes:{ripple:$e(s.ripple,Ln.ripple),rippleVisible:$e(s.rippleVisible,Ln.rippleVisible),ripplePulsate:$e(s.ripplePulsate,Ln.ripplePulsate),child:$e(s.child,Ln.child),childLeaving:$e(s.childLeaving,Ln.childLeaving),childPulsate:$e(s.childPulsate,Ln.childPulsate)},timeout:vy,pulsate:x,rippleX:b,rippleY:E,rippleSize:C},c.current)]),c.current+=1,h.current=A},[s]),g=T.useCallback((_={},x={},b=()=>{})=>{const{pulsate:E=!1,center:C=i||x.pulsate,fakeElement:A=!1}=x;if((_==null?void 0:_.type)==="mousedown"&&d.current){d.current=!1;return}(_==null?void 0:_.type)==="touchstart"&&(d.current=!0);const S=A?null:m.current,P=S?S.getBoundingClientRect():{width:0,height:0,left:0,top:0};let M,D,$;if(C||_===void 0||_.clientX===0&&_.clientY===0||!_.clientX&&!_.touches)M=Math.round(P.width/2),D=Math.round(P.height/2);else{const{clientX:B,clientY:F}=_.touches&&_.touches.length>0?_.touches[0]:_;M=Math.round(B-P.left),D=Math.round(F-P.top)}if(C)$=Math.sqrt((2*P.width**2+P.height**2)/3),$%2===0&&($+=1);else{const B=Math.max(Math.abs((S?S.clientWidth:0)-M),M)*2+2,F=Math.max(Math.abs((S?S.clientHeight:0)-D),D)*2+2;$=Math.sqrt(B**2+F**2)}_!=null&&_.touches?p.current===null&&(p.current=()=>{w({pulsate:E,rippleX:M,rippleY:D,rippleSize:$,cb:b})},f.current=setTimeout(()=>{p.current&&(p.current(),p.current=null)},k5)):w({pulsate:E,rippleX:M,rippleY:D,rippleSize:$,cb:b})},[i,w]),y=T.useCallback(()=>{g({},{pulsate:!0})},[g]),v=T.useCallback((_,x)=>{if(clearTimeout(f.current),(_==null?void 0:_.type)==="touchend"&&p.current){p.current(),p.current=null,f.current=setTimeout(()=>{v(_,x)});return}p.current=null,u(b=>b.length>0?b.slice(1):b),h.current=x},[]);return T.useImperativeHandle(n,()=>({pulsate:y,start:g,stop:v}),[y,g,v]),k.jsx(A5,I({className:$e(Ln.root,s.root,o),ref:m},a,{children:k.jsx(m5,{component:null,exit:!0,children:l})}))}),O5=M5;function D5(t){return ut("MuiButtonBase",t)}const N5=ct("MuiButtonBase",["root","disabled","focusVisible"]),$5=N5,L5=["action","centerRipple","children","className","component","disabled","disableRipple","disableTouchRipple","focusRipple","focusVisibleClassName","LinkComponent","onBlur","onClick","onContextMenu","onDragLeave","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","type"],F5=t=>{const{disabled:e,focusVisible:n,focusVisibleClassName:r,classes:i}=t,o=lt({root:["root",e&&"disabled",n&&"focusVisible"]},D5,i);return n&&r&&(o.root+=` ${r}`),o},V5=Te("button",{name:"MuiButtonBase",slot:"Root",overridesResolver:(t,e)=>e.root})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},[`&.${$5.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),z5=T.forwardRef(function(e,n){const r=tn({props:e,name:"MuiButtonBase"}),{action:i,centerRipple:s=!1,children:o,className:a,component:l="button",disabled:u=!1,disableRipple:c=!1,disableTouchRipple:h=!1,focusRipple:d=!1,LinkComponent:f="a",onBlur:p,onClick:m,onContextMenu:w,onDragLeave:g,onFocus:y,onFocusVisible:v,onKeyDown:_,onKeyUp:x,onMouseDown:b,onMouseLeave:E,onMouseUp:C,onTouchEnd:A,onTouchMove:S,onTouchStart:P,tabIndex:M=0,TouchRippleProps:D,touchRippleRef:$,type:B}=r,F=ue(r,L5),K=T.useRef(null),O=T.useRef(null),N=fr(O,$),{isFocusVisibleRef:L,onFocus:Q,onBlur:q,ref:Se}=_C(),[R,ve]=T.useState(!1);u&&R&&ve(!1),T.useImperativeHandle(i,()=>({focusVisible:()=>{ve(!0),K.current.focus()}}),[]);const[W,re]=T.useState(!1);T.useEffect(()=>{re(!0)},[]);const ke=W&&!c&&!u;T.useEffect(()=>{R&&d&&!c&&W&&O.current.pulsate()},[c,d,R,W]);function U(ce,vo,Vp=h){return Is(ys=>(vo&&vo(ys),!Vp&&O.current&&O.current[ce](ys),!0))}const Y=U("start",b),te=U("stop",w),z=U("stop",g),xe=U("stop",C),de=U("stop",ce=>{R&&ce.preventDefault(),E&&E(ce)}),nt=U("start",P),je=U("stop",A),nn=U("stop",S),Hr=U("stop",ce=>{q(ce),L.current===!1&&ve(!1),p&&p(ce)},!1),el=Is(ce=>{K.current||(K.current=ce.currentTarget),Q(ce),L.current===!0&&(ve(!0),v&&v(ce)),y&&y(ce)}),gn=()=>{const ce=K.current;return l&&l!=="button"&&!(ce.tagName==="A"&&ce.href)},Jn=T.useRef(!1),ki=Is(ce=>{d&&!Jn.current&&R&&O.current&&ce.key===" "&&(Jn.current=!0,O.current.stop(ce,()=>{O.current.start(ce)})),ce.target===ce.currentTarget&&gn()&&ce.key===" "&&ce.preventDefault(),_&&_(ce),ce.target===ce.currentTarget&&gn()&&ce.key==="Enter"&&!u&&(ce.preventDefault(),m&&m(ce))}),Ci=Is(ce=>{d&&ce.key===" "&&O.current&&R&&!ce.defaultPrevented&&(Jn.current=!1,O.current.stop(ce,()=>{O.current.pulsate(ce)})),x&&x(ce),m&&ce.target===ce.currentTarget&&gn()&&ce.key===" "&&!ce.defaultPrevented&&m(ce)});let wr=l;wr==="button"&&(F.href||F.to)&&(wr=f);const On={};wr==="button"?(On.type=B===void 0?"button":B,On.disabled=u):(!F.href&&!F.to&&(On.role="button"),u&&(On["aria-disabled"]=u));const Wr=fr(n,Se,K),Ii=I({},r,{centerRipple:s,component:l,disabled:u,disableRipple:c,disableTouchRipple:h,focusRipple:d,tabIndex:M,focusVisible:R}),yo=F5(Ii);return k.jsxs(V5,I({as:wr,className:$e(yo.root,a),ownerState:Ii,onBlur:Hr,onClick:m,onContextMenu:te,onFocus:el,onKeyDown:ki,onKeyUp:Ci,onMouseDown:Y,onMouseLeave:de,onMouseUp:xe,onDragLeave:z,onTouchEnd:je,onTouchMove:nn,onTouchStart:nt,ref:Wr,tabIndex:u?-1:M,type:B},On,F,{children:[o,ke?k.jsx(O5,I({ref:N,center:s},D)):null]}))}),QC=z5;function U5(t){return ut("MuiIconButton",t)}const j5=ct("MuiIconButton",["root","disabled","colorInherit","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","edgeStart","edgeEnd","sizeSmall","sizeMedium","sizeLarge"]),B5=j5,H5=["edge","children","className","color","disabled","disableFocusRipple","size"],W5=t=>{const{classes:e,disabled:n,color:r,edge:i,size:s}=t,o={root:["root",n&&"disabled",r!=="default"&&`color${be(r)}`,i&&`edge${be(i)}`,`size${be(s)}`]};return lt(o,U5,e)},q5=Te(QC,{name:"MuiIconButton",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,n.color!=="default"&&e[`color${be(n.color)}`],n.edge&&e[`edge${be(n.edge)}`],e[`size${be(n.size)}`]]}})(({theme:t,ownerState:e})=>I({textAlign:"center",flex:"0 0 auto",fontSize:t.typography.pxToRem(24),padding:8,borderRadius:"50%",overflow:"visible",color:(t.vars||t).palette.action.active,transition:t.transitions.create("background-color",{duration:t.transitions.duration.shortest})},!e.disableRipple&&{"&:hover":{backgroundColor:t.vars?`rgba(${t.vars.palette.action.activeChannel} / ${t.vars.palette.action.hoverOpacity})`:Ui(t.palette.action.active,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},e.edge==="start"&&{marginLeft:e.size==="small"?-3:-12},e.edge==="end"&&{marginRight:e.size==="small"?-3:-12}),({theme:t,ownerState:e})=>{var n;const r=(n=(t.vars||t).palette)==null?void 0:n[e.color];return I({},e.color==="inherit"&&{color:"inherit"},e.color!=="inherit"&&e.color!=="default"&&I({color:r==null?void 0:r.main},!e.disableRipple&&{"&:hover":I({},r&&{backgroundColor:t.vars?`rgba(${r.mainChannel} / ${t.vars.palette.action.hoverOpacity})`:Ui(r.main,t.palette.action.hoverOpacity)},{"@media (hover: none)":{backgroundColor:"transparent"}})}),e.size==="small"&&{padding:5,fontSize:t.typography.pxToRem(18)},e.size==="large"&&{padding:12,fontSize:t.typography.pxToRem(28)},{[`&.${B5.disabled}`]:{backgroundColor:"transparent",color:(t.vars||t).palette.action.disabled}})}),G5=T.forwardRef(function(e,n){const r=tn({props:e,name:"MuiIconButton"}),{edge:i=!1,children:s,className:o,color:a="default",disabled:l=!1,disableFocusRipple:u=!1,size:c="medium"}=r,h=ue(r,H5),d=I({},r,{edge:i,color:a,disabled:l,disableFocusRipple:u,size:c}),f=W5(d);return k.jsx(q5,I({className:$e(f.root,o),centerRipple:!0,focusRipple:!u,disabled:l,ref:n,ownerState:d},h,{children:s}))}),K5=G5;function Q5(t){return ut("MuiTypography",t)}ct("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);const Y5=["align","className","component","gutterBottom","noWrap","paragraph","variant","variantMapping"],X5=t=>{const{align:e,gutterBottom:n,noWrap:r,paragraph:i,variant:s,classes:o}=t,a={root:["root",s,t.align!=="inherit"&&`align${be(e)}`,n&&"gutterBottom",r&&"noWrap",i&&"paragraph"]};return lt(a,Q5,o)},J5=Te("span",{name:"MuiTypography",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,n.variant&&e[n.variant],n.align!=="inherit"&&e[`align${be(n.align)}`],n.noWrap&&e.noWrap,n.gutterBottom&&e.gutterBottom,n.paragraph&&e.paragraph]}})(({theme:t,ownerState:e})=>I({margin:0},e.variant==="inherit"&&{font:"inherit"},e.variant!=="inherit"&&t.typography[e.variant],e.align!=="inherit"&&{textAlign:e.align},e.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},e.gutterBottom&&{marginBottom:"0.35em"},e.paragraph&&{marginBottom:16})),Ox={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},Z5={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},ez=t=>Z5[t]||t,tz=T.forwardRef(function(e,n){const r=tn({props:e,name:"MuiTypography"}),i=ez(r.color),s=M0(I({},r,{color:i})),{align:o="inherit",className:a,component:l,gutterBottom:u=!1,noWrap:c=!1,paragraph:h=!1,variant:d="body1",variantMapping:f=Ox}=s,p=ue(s,Y5),m=I({},s,{align:o,color:i,className:a,component:l,gutterBottom:u,noWrap:c,paragraph:h,variant:d,variantMapping:f}),w=l||(h?"p":f[d]||Ox[d])||"span",g=X5(m);return k.jsx(J5,I({as:w,ref:n,ownerState:m,className:$e(g.root,a)},p))}),Xt=tz;function nz(t){return typeof t=="string"}function rz(t,e,n){return t===void 0||nz(t)?e:I({},e,{ownerState:I({},e.ownerState,n)})}const iz={disableDefaultClasses:!1},sz=T.createContext(iz);function oz(t){const{disableDefaultClasses:e}=T.useContext(sz);return n=>e?"":t(n)}function YC(t,e=[]){if(t===void 0)return{};const n={};return Object.keys(t).filter(r=>r.match(/^on[A-Z]/)&&typeof t[r]=="function"&&!e.includes(r)).forEach(r=>{n[r]=t[r]}),n}function az(t,e,n){return typeof t=="function"?t(e,n):t}function Dx(t){if(t===void 0)return{};const e={};return Object.keys(t).filter(n=>!(n.match(/^on[A-Z]/)&&typeof t[n]=="function")).forEach(n=>{e[n]=t[n]}),e}function lz(t){const{getSlotProps:e,additionalProps:n,externalSlotProps:r,externalForwardedProps:i,className:s}=t;if(!e){const f=$e(i==null?void 0:i.className,r==null?void 0:r.className,s,n==null?void 0:n.className),p=I({},n==null?void 0:n.style,i==null?void 0:i.style,r==null?void 0:r.style),m=I({},n,i,r);return f.length>0&&(m.className=f),Object.keys(p).length>0&&(m.style=p),{props:m,internalRef:void 0}}const o=YC(I({},i,r)),a=Dx(r),l=Dx(i),u=e(o),c=$e(u==null?void 0:u.className,n==null?void 0:n.className,s,i==null?void 0:i.className,r==null?void 0:r.className),h=I({},u==null?void 0:u.style,n==null?void 0:n.style,i==null?void 0:i.style,r==null?void 0:r.style),d=I({},u,n,l,a);return c.length>0&&(d.className=c),Object.keys(h).length>0&&(d.style=h),{props:d,internalRef:u.ref}}const uz=["elementType","externalSlotProps","ownerState","skipResolvingSlotProps"];function Cn(t){var e;const{elementType:n,externalSlotProps:r,ownerState:i,skipResolvingSlotProps:s=!1}=t,o=ue(t,uz),a=s?{}:az(r,i),{props:l,internalRef:u}=lz(I({},o,{externalSlotProps:a})),c=fr(u,a==null?void 0:a.ref,(e=t.additionalProps)==null?void 0:e.ref);return rz(n,I({},l,{ref:c}),i)}const cz=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])'].join(",");function hz(t){const e=parseInt(t.getAttribute("tabindex")||"",10);return Number.isNaN(e)?t.contentEditable==="true"||(t.nodeName==="AUDIO"||t.nodeName==="VIDEO"||t.nodeName==="DETAILS")&&t.getAttribute("tabindex")===null?0:t.tabIndex:e}function dz(t){if(t.tagName!=="INPUT"||t.type!=="radio"||!t.name)return!1;const e=r=>t.ownerDocument.querySelector(`input[type="radio"]${r}`);let n=e(`[name="${t.name}"]:checked`);return n||(n=e(`[name="${t.name}"]`)),n!==t}function fz(t){return!(t.disabled||t.tagName==="INPUT"&&t.type==="hidden"||dz(t))}function pz(t){const e=[],n=[];return Array.from(t.querySelectorAll(cz)).forEach((r,i)=>{const s=hz(r);s===-1||!fz(r)||(s===0?e.push(r):n.push({documentOrder:i,tabIndex:s,node:r}))}),n.sort((r,i)=>r.tabIndex===i.tabIndex?r.documentOrder-i.documentOrder:r.tabIndex-i.tabIndex).map(r=>r.node).concat(e)}function mz(){return!0}function gz(t){const{children:e,disableAutoFocus:n=!1,disableEnforceFocus:r=!1,disableRestoreFocus:i=!1,getTabbable:s=pz,isEnabled:o=mz,open:a}=t,l=T.useRef(!1),u=T.useRef(null),c=T.useRef(null),h=T.useRef(null),d=T.useRef(null),f=T.useRef(!1),p=T.useRef(null),m=fr(e.ref,p),w=T.useRef(null);T.useEffect(()=>{!a||!p.current||(f.current=!n)},[n,a]),T.useEffect(()=>{if(!a||!p.current)return;const v=lr(p.current);return p.current.contains(v.activeElement)||(p.current.hasAttribute("tabIndex")||p.current.setAttribute("tabIndex","-1"),f.current&&p.current.focus()),()=>{i||(h.current&&h.current.focus&&(l.current=!0,h.current.focus()),h.current=null)}},[a]),T.useEffect(()=>{if(!a||!p.current)return;const v=lr(p.current),_=E=>{w.current=E,!(r||!o()||E.key!=="Tab")&&v.activeElement===p.current&&E.shiftKey&&(l.current=!0,c.current&&c.current.focus())},x=()=>{const E=p.current;if(E===null)return;if(!v.hasFocus()||!o()||l.current){l.current=!1;return}if(E.contains(v.activeElement)||r&&v.activeElement!==u.current&&v.activeElement!==c.current)return;if(v.activeElement!==d.current)d.current=null;else if(d.current!==null)return;if(!f.current)return;let C=[];if((v.activeElement===u.current||v.activeElement===c.current)&&(C=s(p.current)),C.length>0){var A,S;const P=!!((A=w.current)!=null&&A.shiftKey&&((S=w.current)==null?void 0:S.key)==="Tab"),M=C[0],D=C[C.length-1];typeof M!="string"&&typeof D!="string"&&(P?D.focus():M.focus())}else E.focus()};v.addEventListener("focusin",x),v.addEventListener("keydown",_,!0);const b=setInterval(()=>{v.activeElement&&v.activeElement.tagName==="BODY"&&x()},50);return()=>{clearInterval(b),v.removeEventListener("focusin",x),v.removeEventListener("keydown",_,!0)}},[n,r,i,o,a,s]);const g=v=>{h.current===null&&(h.current=v.relatedTarget),f.current=!0,d.current=v.target;const _=e.props.onFocus;_&&_(v)},y=v=>{h.current===null&&(h.current=v.relatedTarget),f.current=!0};return k.jsxs(T.Fragment,{children:[k.jsx("div",{tabIndex:a?0:-1,onFocus:y,ref:u,"data-testid":"sentinelStart"}),T.cloneElement(e,{ref:m,onFocus:g}),k.jsx("div",{tabIndex:a?0:-1,onFocus:y,ref:c,"data-testid":"sentinelEnd"})]})}var hn="top",Qn="bottom",Yn="right",dn="left",F0="auto",ac=[hn,Qn,Yn,dn],ba="start",wu="end",yz="clippingParents",XC="viewport",hl="popper",vz="reference",Nx=ac.reduce(function(t,e){return t.concat([e+"-"+ba,e+"-"+wu])},[]),JC=[].concat(ac,[F0]).reduce(function(t,e){return t.concat([e,e+"-"+ba,e+"-"+wu])},[]),_z="beforeRead",wz="read",xz="afterRead",bz="beforeMain",Ez="main",Tz="afterMain",Sz="beforeWrite",kz="write",Cz="afterWrite",Iz=[_z,wz,xz,bz,Ez,Tz,Sz,kz,Cz];function Ur(t){return t?(t.nodeName||"").toLowerCase():null}function In(t){if(t==null)return window;if(t.toString()!=="[object Window]"){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Js(t){var e=In(t).Element;return t instanceof e||t instanceof Element}function Wn(t){var e=In(t).HTMLElement;return t instanceof e||t instanceof HTMLElement}function V0(t){if(typeof ShadowRoot>"u")return!1;var e=In(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Pz(t){var e=t.state;Object.keys(e.elements).forEach(function(n){var r=e.styles[n]||{},i=e.attributes[n]||{},s=e.elements[n];!Wn(s)||!Ur(s)||(Object.assign(s.style,r),Object.keys(i).forEach(function(o){var a=i[o];a===!1?s.removeAttribute(o):s.setAttribute(o,a===!0?"":a)}))})}function Az(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach(function(r){var i=e.elements[r],s=e.attributes[r]||{},o=Object.keys(e.styles.hasOwnProperty(r)?e.styles[r]:n[r]),a=o.reduce(function(l,u){return l[u]="",l},{});!Wn(i)||!Ur(i)||(Object.assign(i.style,a),Object.keys(s).forEach(function(l){i.removeAttribute(l)}))})}}const Rz={name:"applyStyles",enabled:!0,phase:"write",fn:Pz,effect:Az,requires:["computeStyles"]};function $r(t){return t.split("-")[0]}var Vs=Math.max,Td=Math.min,Ea=Math.round;function _y(){var t=navigator.userAgentData;return t!=null&&t.brands&&Array.isArray(t.brands)?t.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function ZC(){return!/^((?!chrome|android).)*safari/i.test(_y())}function Ta(t,e,n){e===void 0&&(e=!1),n===void 0&&(n=!1);var r=t.getBoundingClientRect(),i=1,s=1;e&&Wn(t)&&(i=t.offsetWidth>0&&Ea(r.width)/t.offsetWidth||1,s=t.offsetHeight>0&&Ea(r.height)/t.offsetHeight||1);var o=Js(t)?In(t):window,a=o.visualViewport,l=!ZC()&&n,u=(r.left+(l&&a?a.offsetLeft:0))/i,c=(r.top+(l&&a?a.offsetTop:0))/s,h=r.width/i,d=r.height/s;return{width:h,height:d,top:c,right:u+h,bottom:c+d,left:u,x:u,y:c}}function z0(t){var e=Ta(t),n=t.offsetWidth,r=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-r)<=1&&(r=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:r}}function eI(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&V0(n)){var r=e;do{if(r&&t.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function pi(t){return In(t).getComputedStyle(t)}function Mz(t){return["table","td","th"].indexOf(Ur(t))>=0}function fs(t){return((Js(t)?t.ownerDocument:t.document)||window.document).documentElement}function Xf(t){return Ur(t)==="html"?t:t.assignedSlot||t.parentNode||(V0(t)?t.host:null)||fs(t)}function $x(t){return!Wn(t)||pi(t).position==="fixed"?null:t.offsetParent}function Oz(t){var e=/firefox/i.test(_y()),n=/Trident/i.test(_y());if(n&&Wn(t)){var r=pi(t);if(r.position==="fixed")return null}var i=Xf(t);for(V0(i)&&(i=i.host);Wn(i)&&["html","body"].indexOf(Ur(i))<0;){var s=pi(i);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||e&&s.willChange==="filter"||e&&s.filter&&s.filter!=="none")return i;i=i.parentNode}return null}function lc(t){for(var e=In(t),n=$x(t);n&&Mz(n)&&pi(n).position==="static";)n=$x(n);return n&&(Ur(n)==="html"||Ur(n)==="body"&&pi(n).position==="static")?e:n||Oz(t)||e}function U0(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function zl(t,e,n){return Vs(t,Td(e,n))}function Dz(t,e,n){var r=zl(t,e,n);return r>n?n:r}function tI(){return{top:0,right:0,bottom:0,left:0}}function nI(t){return Object.assign({},tI(),t)}function rI(t,e){return e.reduce(function(n,r){return n[r]=t,n},{})}var Nz=function(e,n){return e=typeof e=="function"?e(Object.assign({},n.rects,{placement:n.placement})):e,nI(typeof e!="number"?e:rI(e,ac))};function $z(t){var e,n=t.state,r=t.name,i=t.options,s=n.elements.arrow,o=n.modifiersData.popperOffsets,a=$r(n.placement),l=U0(a),u=[dn,Yn].indexOf(a)>=0,c=u?"height":"width";if(!(!s||!o)){var h=Nz(i.padding,n),d=z0(s),f=l==="y"?hn:dn,p=l==="y"?Qn:Yn,m=n.rects.reference[c]+n.rects.reference[l]-o[l]-n.rects.popper[c],w=o[l]-n.rects.reference[l],g=lc(s),y=g?l==="y"?g.clientHeight||0:g.clientWidth||0:0,v=m/2-w/2,_=h[f],x=y-d[c]-h[p],b=y/2-d[c]/2+v,E=zl(_,b,x),C=l;n.modifiersData[r]=(e={},e[C]=E,e.centerOffset=E-b,e)}}function Lz(t){var e=t.state,n=t.options,r=n.element,i=r===void 0?"[data-popper-arrow]":r;i!=null&&(typeof i=="string"&&(i=e.elements.popper.querySelector(i),!i)||eI(e.elements.popper,i)&&(e.elements.arrow=i))}const Fz={name:"arrow",enabled:!0,phase:"main",fn:$z,effect:Lz,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Sa(t){return t.split("-")[1]}var Vz={top:"auto",right:"auto",bottom:"auto",left:"auto"};function zz(t,e){var n=t.x,r=t.y,i=e.devicePixelRatio||1;return{x:Ea(n*i)/i||0,y:Ea(r*i)/i||0}}function Lx(t){var e,n=t.popper,r=t.popperRect,i=t.placement,s=t.variation,o=t.offsets,a=t.position,l=t.gpuAcceleration,u=t.adaptive,c=t.roundOffsets,h=t.isFixed,d=o.x,f=d===void 0?0:d,p=o.y,m=p===void 0?0:p,w=typeof c=="function"?c({x:f,y:m}):{x:f,y:m};f=w.x,m=w.y;var g=o.hasOwnProperty("x"),y=o.hasOwnProperty("y"),v=dn,_=hn,x=window;if(u){var b=lc(n),E="clientHeight",C="clientWidth";if(b===In(n)&&(b=fs(n),pi(b).position!=="static"&&a==="absolute"&&(E="scrollHeight",C="scrollWidth")),b=b,i===hn||(i===dn||i===Yn)&&s===wu){_=Qn;var A=h&&b===x&&x.visualViewport?x.visualViewport.height:b[E];m-=A-r.height,m*=l?1:-1}if(i===dn||(i===hn||i===Qn)&&s===wu){v=Yn;var S=h&&b===x&&x.visualViewport?x.visualViewport.width:b[C];f-=S-r.width,f*=l?1:-1}}var P=Object.assign({position:a},u&&Vz),M=c===!0?zz({x:f,y:m},In(n)):{x:f,y:m};if(f=M.x,m=M.y,l){var D;return Object.assign({},P,(D={},D[_]=y?"0":"",D[v]=g?"0":"",D.transform=(x.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",D))}return Object.assign({},P,(e={},e[_]=y?m+"px":"",e[v]=g?f+"px":"",e.transform="",e))}function Uz(t){var e=t.state,n=t.options,r=n.gpuAcceleration,i=r===void 0?!0:r,s=n.adaptive,o=s===void 0?!0:s,a=n.roundOffsets,l=a===void 0?!0:a,u={placement:$r(e.placement),variation:Sa(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:i,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,Lx(Object.assign({},u,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:o,roundOffsets:l})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,Lx(Object.assign({},u,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}const jz={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Uz,data:{}};var Gc={passive:!0};function Bz(t){var e=t.state,n=t.instance,r=t.options,i=r.scroll,s=i===void 0?!0:i,o=r.resize,a=o===void 0?!0:o,l=In(e.elements.popper),u=[].concat(e.scrollParents.reference,e.scrollParents.popper);return s&&u.forEach(function(c){c.addEventListener("scroll",n.update,Gc)}),a&&l.addEventListener("resize",n.update,Gc),function(){s&&u.forEach(function(c){c.removeEventListener("scroll",n.update,Gc)}),a&&l.removeEventListener("resize",n.update,Gc)}}const Hz={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Bz,data:{}};var Wz={left:"right",right:"left",bottom:"top",top:"bottom"};function Rh(t){return t.replace(/left|right|bottom|top/g,function(e){return Wz[e]})}var qz={start:"end",end:"start"};function Fx(t){return t.replace(/start|end/g,function(e){return qz[e]})}function j0(t){var e=In(t),n=e.pageXOffset,r=e.pageYOffset;return{scrollLeft:n,scrollTop:r}}function B0(t){return Ta(fs(t)).left+j0(t).scrollLeft}function Gz(t,e){var n=In(t),r=fs(t),i=n.visualViewport,s=r.clientWidth,o=r.clientHeight,a=0,l=0;if(i){s=i.width,o=i.height;var u=ZC();(u||!u&&e==="fixed")&&(a=i.offsetLeft,l=i.offsetTop)}return{width:s,height:o,x:a+B0(t),y:l}}function Kz(t){var e,n=fs(t),r=j0(t),i=(e=t.ownerDocument)==null?void 0:e.body,s=Vs(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),o=Vs(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),a=-r.scrollLeft+B0(t),l=-r.scrollTop;return pi(i||n).direction==="rtl"&&(a+=Vs(n.clientWidth,i?i.clientWidth:0)-s),{width:s,height:o,x:a,y:l}}function H0(t){var e=pi(t),n=e.overflow,r=e.overflowX,i=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)}function iI(t){return["html","body","#document"].indexOf(Ur(t))>=0?t.ownerDocument.body:Wn(t)&&H0(t)?t:iI(Xf(t))}function Ul(t,e){var n;e===void 0&&(e=[]);var r=iI(t),i=r===((n=t.ownerDocument)==null?void 0:n.body),s=In(r),o=i?[s].concat(s.visualViewport||[],H0(r)?r:[]):r,a=e.concat(o);return i?a:a.concat(Ul(Xf(o)))}function wy(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Qz(t,e){var n=Ta(t,!1,e==="fixed");return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}function Vx(t,e,n){return e===XC?wy(Gz(t,n)):Js(e)?Qz(e,n):wy(Kz(fs(t)))}function Yz(t){var e=Ul(Xf(t)),n=["absolute","fixed"].indexOf(pi(t).position)>=0,r=n&&Wn(t)?lc(t):t;return Js(r)?e.filter(function(i){return Js(i)&&eI(i,r)&&Ur(i)!=="body"}):[]}function Xz(t,e,n,r){var i=e==="clippingParents"?Yz(t):[].concat(e),s=[].concat(i,[n]),o=s[0],a=s.reduce(function(l,u){var c=Vx(t,u,r);return l.top=Vs(c.top,l.top),l.right=Td(c.right,l.right),l.bottom=Td(c.bottom,l.bottom),l.left=Vs(c.left,l.left),l},Vx(t,o,r));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function sI(t){var e=t.reference,n=t.element,r=t.placement,i=r?$r(r):null,s=r?Sa(r):null,o=e.x+e.width/2-n.width/2,a=e.y+e.height/2-n.height/2,l;switch(i){case hn:l={x:o,y:e.y-n.height};break;case Qn:l={x:o,y:e.y+e.height};break;case Yn:l={x:e.x+e.width,y:a};break;case dn:l={x:e.x-n.width,y:a};break;default:l={x:e.x,y:e.y}}var u=i?U0(i):null;if(u!=null){var c=u==="y"?"height":"width";switch(s){case ba:l[u]=l[u]-(e[c]/2-n[c]/2);break;case wu:l[u]=l[u]+(e[c]/2-n[c]/2);break}}return l}function xu(t,e){e===void 0&&(e={});var n=e,r=n.placement,i=r===void 0?t.placement:r,s=n.strategy,o=s===void 0?t.strategy:s,a=n.boundary,l=a===void 0?yz:a,u=n.rootBoundary,c=u===void 0?XC:u,h=n.elementContext,d=h===void 0?hl:h,f=n.altBoundary,p=f===void 0?!1:f,m=n.padding,w=m===void 0?0:m,g=nI(typeof w!="number"?w:rI(w,ac)),y=d===hl?vz:hl,v=t.rects.popper,_=t.elements[p?y:d],x=Xz(Js(_)?_:_.contextElement||fs(t.elements.popper),l,c,o),b=Ta(t.elements.reference),E=sI({reference:b,element:v,strategy:"absolute",placement:i}),C=wy(Object.assign({},v,E)),A=d===hl?C:b,S={top:x.top-A.top+g.top,bottom:A.bottom-x.bottom+g.bottom,left:x.left-A.left+g.left,right:A.right-x.right+g.right},P=t.modifiersData.offset;if(d===hl&&P){var M=P[i];Object.keys(S).forEach(function(D){var $=[Yn,Qn].indexOf(D)>=0?1:-1,B=[hn,Qn].indexOf(D)>=0?"y":"x";S[D]+=M[B]*$})}return S}function Jz(t,e){e===void 0&&(e={});var n=e,r=n.placement,i=n.boundary,s=n.rootBoundary,o=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,u=l===void 0?JC:l,c=Sa(r),h=c?a?Nx:Nx.filter(function(p){return Sa(p)===c}):ac,d=h.filter(function(p){return u.indexOf(p)>=0});d.length===0&&(d=h);var f=d.reduce(function(p,m){return p[m]=xu(t,{placement:m,boundary:i,rootBoundary:s,padding:o})[$r(m)],p},{});return Object.keys(f).sort(function(p,m){return f[p]-f[m]})}function Zz(t){if($r(t)===F0)return[];var e=Rh(t);return[Fx(t),e,Fx(e)]}function e3(t){var e=t.state,n=t.options,r=t.name;if(!e.modifiersData[r]._skip){for(var i=n.mainAxis,s=i===void 0?!0:i,o=n.altAxis,a=o===void 0?!0:o,l=n.fallbackPlacements,u=n.padding,c=n.boundary,h=n.rootBoundary,d=n.altBoundary,f=n.flipVariations,p=f===void 0?!0:f,m=n.allowedAutoPlacements,w=e.options.placement,g=$r(w),y=g===w,v=l||(y||!p?[Rh(w)]:Zz(w)),_=[w].concat(v).reduce(function(R,ve){return R.concat($r(ve)===F0?Jz(e,{placement:ve,boundary:c,rootBoundary:h,padding:u,flipVariations:p,allowedAutoPlacements:m}):ve)},[]),x=e.rects.reference,b=e.rects.popper,E=new Map,C=!0,A=_[0],S=0;S<_.length;S++){var P=_[S],M=$r(P),D=Sa(P)===ba,$=[hn,Qn].indexOf(M)>=0,B=$?"width":"height",F=xu(e,{placement:P,boundary:c,rootBoundary:h,altBoundary:d,padding:u}),K=$?D?Yn:dn:D?Qn:hn;x[B]>b[B]&&(K=Rh(K));var O=Rh(K),N=[];if(s&&N.push(F[M]<=0),a&&N.push(F[K]<=0,F[O]<=0),N.every(function(R){return R})){A=P,C=!1;break}E.set(P,N)}if(C)for(var L=p?3:1,Q=function(ve){var W=_.find(function(re){var ke=E.get(re);if(ke)return ke.slice(0,ve).every(function(U){return U})});if(W)return A=W,"break"},q=L;q>0;q--){var Se=Q(q);if(Se==="break")break}e.placement!==A&&(e.modifiersData[r]._skip=!0,e.placement=A,e.reset=!0)}}const t3={name:"flip",enabled:!0,phase:"main",fn:e3,requiresIfExists:["offset"],data:{_skip:!1}};function zx(t,e,n){return n===void 0&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function Ux(t){return[hn,Yn,Qn,dn].some(function(e){return t[e]>=0})}function n3(t){var e=t.state,n=t.name,r=e.rects.reference,i=e.rects.popper,s=e.modifiersData.preventOverflow,o=xu(e,{elementContext:"reference"}),a=xu(e,{altBoundary:!0}),l=zx(o,r),u=zx(a,i,s),c=Ux(l),h=Ux(u);e.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:h},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":h})}const r3={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:n3};function i3(t,e,n){var r=$r(t),i=[dn,hn].indexOf(r)>=0?-1:1,s=typeof n=="function"?n(Object.assign({},e,{placement:t})):n,o=s[0],a=s[1];return o=o||0,a=(a||0)*i,[dn,Yn].indexOf(r)>=0?{x:a,y:o}:{x:o,y:a}}function s3(t){var e=t.state,n=t.options,r=t.name,i=n.offset,s=i===void 0?[0,0]:i,o=JC.reduce(function(c,h){return c[h]=i3(h,e.rects,s),c},{}),a=o[e.placement],l=a.x,u=a.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=u),e.modifiersData[r]=o}const o3={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:s3};function a3(t){var e=t.state,n=t.name;e.modifiersData[n]=sI({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})}const l3={name:"popperOffsets",enabled:!0,phase:"read",fn:a3,data:{}};function u3(t){return t==="x"?"y":"x"}function c3(t){var e=t.state,n=t.options,r=t.name,i=n.mainAxis,s=i===void 0?!0:i,o=n.altAxis,a=o===void 0?!1:o,l=n.boundary,u=n.rootBoundary,c=n.altBoundary,h=n.padding,d=n.tether,f=d===void 0?!0:d,p=n.tetherOffset,m=p===void 0?0:p,w=xu(e,{boundary:l,rootBoundary:u,padding:h,altBoundary:c}),g=$r(e.placement),y=Sa(e.placement),v=!y,_=U0(g),x=u3(_),b=e.modifiersData.popperOffsets,E=e.rects.reference,C=e.rects.popper,A=typeof m=="function"?m(Object.assign({},e.rects,{placement:e.placement})):m,S=typeof A=="number"?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),P=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,M={x:0,y:0};if(b){if(s){var D,$=_==="y"?hn:dn,B=_==="y"?Qn:Yn,F=_==="y"?"height":"width",K=b[_],O=K+w[$],N=K-w[B],L=f?-C[F]/2:0,Q=y===ba?E[F]:C[F],q=y===ba?-C[F]:-E[F],Se=e.elements.arrow,R=f&&Se?z0(Se):{width:0,height:0},ve=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:tI(),W=ve[$],re=ve[B],ke=zl(0,E[F],R[F]),U=v?E[F]/2-L-ke-W-S.mainAxis:Q-ke-W-S.mainAxis,Y=v?-E[F]/2+L+ke+re+S.mainAxis:q+ke+re+S.mainAxis,te=e.elements.arrow&&lc(e.elements.arrow),z=te?_==="y"?te.clientTop||0:te.clientLeft||0:0,xe=(D=P==null?void 0:P[_])!=null?D:0,de=K+U-xe-z,nt=K+Y-xe,je=zl(f?Td(O,de):O,K,f?Vs(N,nt):N);b[_]=je,M[_]=je-K}if(a){var nn,Hr=_==="x"?hn:dn,el=_==="x"?Qn:Yn,gn=b[x],Jn=x==="y"?"height":"width",ki=gn+w[Hr],Ci=gn-w[el],wr=[hn,dn].indexOf(g)!==-1,On=(nn=P==null?void 0:P[x])!=null?nn:0,Wr=wr?ki:gn-E[Jn]-C[Jn]-On+S.altAxis,Ii=wr?gn+E[Jn]+C[Jn]-On-S.altAxis:Ci,yo=f&&wr?Dz(Wr,gn,Ii):zl(f?Wr:ki,gn,f?Ii:Ci);b[x]=yo,M[x]=yo-gn}e.modifiersData[r]=M}}const h3={name:"preventOverflow",enabled:!0,phase:"main",fn:c3,requiresIfExists:["offset"]};function d3(t){return{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function f3(t){return t===In(t)||!Wn(t)?j0(t):d3(t)}function p3(t){var e=t.getBoundingClientRect(),n=Ea(e.width)/t.offsetWidth||1,r=Ea(e.height)/t.offsetHeight||1;return n!==1||r!==1}function m3(t,e,n){n===void 0&&(n=!1);var r=Wn(e),i=Wn(e)&&p3(e),s=fs(e),o=Ta(t,i,n),a={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(r||!r&&!n)&&((Ur(e)!=="body"||H0(s))&&(a=f3(e)),Wn(e)?(l=Ta(e,!0),l.x+=e.clientLeft,l.y+=e.clientTop):s&&(l.x=B0(s))),{x:o.left+a.scrollLeft-l.x,y:o.top+a.scrollTop-l.y,width:o.width,height:o.height}}function g3(t){var e=new Map,n=new Set,r=[];t.forEach(function(s){e.set(s.name,s)});function i(s){n.add(s.name);var o=[].concat(s.requires||[],s.requiresIfExists||[]);o.forEach(function(a){if(!n.has(a)){var l=e.get(a);l&&i(l)}}),r.push(s)}return t.forEach(function(s){n.has(s.name)||i(s)}),r}function y3(t){var e=g3(t);return Iz.reduce(function(n,r){return n.concat(e.filter(function(i){return i.phase===r}))},[])}function v3(t){var e;return function(){return e||(e=new Promise(function(n){Promise.resolve().then(function(){e=void 0,n(t())})})),e}}function _3(t){var e=t.reduce(function(n,r){var i=n[r.name];return n[r.name]=i?Object.assign({},i,r,{options:Object.assign({},i.options,r.options),data:Object.assign({},i.data,r.data)}):r,n},{});return Object.keys(e).map(function(n){return e[n]})}var jx={placement:"bottom",modifiers:[],strategy:"absolute"};function Bx(){for(var t=arguments.length,e=new Array(t),n=0;n{s||a(E3(i)||document.body)},[i,s]),ss(()=>{if(o&&!s)return vd(n,o),()=>{vd(n,null)}},[n,o,s]),s){if(T.isValidElement(r)){const u={ref:l};return T.cloneElement(r,u)}return k.jsx(T.Fragment,{children:r})}return k.jsx(T.Fragment,{children:o&&r0.createPortal(r,o)})});function T3(t){return ut("MuiPopper",t)}ct("MuiPopper",["root"]);const S3=["anchorEl","children","direction","disablePortal","modifiers","open","placement","popperOptions","popperRef","slotProps","slots","TransitionProps","ownerState"],k3=["anchorEl","children","container","direction","disablePortal","keepMounted","modifiers","open","placement","popperOptions","popperRef","style","transition","slotProps","slots"];function C3(t,e){if(e==="ltr")return t;switch(t){case"bottom-end":return"bottom-start";case"bottom-start":return"bottom-end";case"top-end":return"top-start";case"top-start":return"top-end";default:return t}}function xy(t){return typeof t=="function"?t():t}function I3(t){return t.nodeType!==void 0}const P3=()=>lt({root:["root"]},oz(T3)),A3={},R3=T.forwardRef(function(e,n){var r;const{anchorEl:i,children:s,direction:o,disablePortal:a,modifiers:l,open:u,placement:c,popperOptions:h,popperRef:d,slotProps:f={},slots:p={},TransitionProps:m}=e,w=ue(e,S3),g=T.useRef(null),y=fr(g,n),v=T.useRef(null),_=fr(v,d),x=T.useRef(_);ss(()=>{x.current=_},[_]),T.useImperativeHandle(d,()=>v.current,[]);const b=C3(c,o),[E,C]=T.useState(b),[A,S]=T.useState(xy(i));T.useEffect(()=>{v.current&&v.current.forceUpdate()}),T.useEffect(()=>{i&&S(xy(i))},[i]),ss(()=>{if(!A||!u)return;const B=O=>{C(O.placement)};let F=[{name:"preventOverflow",options:{altBoundary:a}},{name:"flip",options:{altBoundary:a}},{name:"onUpdate",enabled:!0,phase:"afterWrite",fn:({state:O})=>{B(O)}}];l!=null&&(F=F.concat(l)),h&&h.modifiers!=null&&(F=F.concat(h.modifiers));const K=b3(A,g.current,I({placement:b},h,{modifiers:F}));return x.current(K),()=>{K.destroy(),x.current(null)}},[A,a,l,u,h,b]);const P={placement:E};m!==null&&(P.TransitionProps=m);const M=P3(),D=(r=p.root)!=null?r:"div",$=Cn({elementType:D,externalSlotProps:f.root,externalForwardedProps:w,additionalProps:{role:"tooltip",ref:y},ownerState:e,className:M.root});return k.jsx(D,I({},$,{children:typeof s=="function"?s(P):s}))}),M3=T.forwardRef(function(e,n){const{anchorEl:r,children:i,container:s,direction:o="ltr",disablePortal:a=!1,keepMounted:l=!1,modifiers:u,open:c,placement:h="bottom",popperOptions:d=A3,popperRef:f,style:p,transition:m=!1,slotProps:w={},slots:g={}}=e,y=ue(e,k3),[v,_]=T.useState(!0),x=()=>{_(!1)},b=()=>{_(!0)};if(!l&&!c&&(!m||v))return null;let E;if(s)E=s;else if(r){const S=xy(r);E=S&&I3(S)?lr(S).body:lr(null).body}const C=!c&&l&&(!m||v)?"none":void 0,A=m?{in:c,onEnter:x,onExited:b}:void 0;return k.jsx(oI,{disablePortal:a,container:E,children:k.jsx(R3,I({anchorEl:r,direction:o,disablePortal:a,modifiers:u,ref:n,open:m?!v:c,placement:h,popperOptions:d,popperRef:f,slotProps:w,slots:g},y,{style:I({position:"fixed",top:0,left:0,display:C},p),TransitionProps:A,children:i}))})});function O3(t){const e=lr(t);return e.body===t?nc(t).innerWidth>e.documentElement.clientWidth:t.scrollHeight>t.clientHeight}function jl(t,e){e?t.setAttribute("aria-hidden","true"):t.removeAttribute("aria-hidden")}function Hx(t){return parseInt(nc(t).getComputedStyle(t).paddingRight,10)||0}function D3(t){const n=["TEMPLATE","SCRIPT","STYLE","LINK","MAP","META","NOSCRIPT","PICTURE","COL","COLGROUP","PARAM","SLOT","SOURCE","TRACK"].indexOf(t.tagName)!==-1,r=t.tagName==="INPUT"&&t.getAttribute("type")==="hidden";return n||r}function Wx(t,e,n,r,i){const s=[e,n,...r];[].forEach.call(t.children,o=>{const a=s.indexOf(o)===-1,l=!D3(o);a&&l&&jl(o,i)})}function bm(t,e){let n=-1;return t.some((r,i)=>e(r)?(n=i,!0):!1),n}function N3(t,e){const n=[],r=t.container;if(!e.disableScrollLock){if(O3(r)){const o=qL(lr(r));n.push({value:r.style.paddingRight,property:"padding-right",el:r}),r.style.paddingRight=`${Hx(r)+o}px`;const a=lr(r).querySelectorAll(".mui-fixed");[].forEach.call(a,l=>{n.push({value:l.style.paddingRight,property:"padding-right",el:l}),l.style.paddingRight=`${Hx(l)+o}px`})}let s;if(r.parentNode instanceof DocumentFragment)s=lr(r).body;else{const o=r.parentElement,a=nc(r);s=(o==null?void 0:o.nodeName)==="HTML"&&a.getComputedStyle(o).overflowY==="scroll"?o:r}n.push({value:s.style.overflow,property:"overflow",el:s},{value:s.style.overflowX,property:"overflow-x",el:s},{value:s.style.overflowY,property:"overflow-y",el:s}),s.style.overflow="hidden"}return()=>{n.forEach(({value:s,el:o,property:a})=>{s?o.style.setProperty(a,s):o.style.removeProperty(a)})}}function $3(t){const e=[];return[].forEach.call(t.children,n=>{n.getAttribute("aria-hidden")==="true"&&e.push(n)}),e}class L3{constructor(){this.containers=void 0,this.modals=void 0,this.modals=[],this.containers=[]}add(e,n){let r=this.modals.indexOf(e);if(r!==-1)return r;r=this.modals.length,this.modals.push(e),e.modalRef&&jl(e.modalRef,!1);const i=$3(n);Wx(n,e.mount,e.modalRef,i,!0);const s=bm(this.containers,o=>o.container===n);return s!==-1?(this.containers[s].modals.push(e),r):(this.containers.push({modals:[e],container:n,restore:null,hiddenSiblings:i}),r)}mount(e,n){const r=bm(this.containers,s=>s.modals.indexOf(e)!==-1),i=this.containers[r];i.restore||(i.restore=N3(i,n))}remove(e,n=!0){const r=this.modals.indexOf(e);if(r===-1)return r;const i=bm(this.containers,o=>o.modals.indexOf(e)!==-1),s=this.containers[i];if(s.modals.splice(s.modals.indexOf(e),1),this.modals.splice(r,1),s.modals.length===0)s.restore&&s.restore(),e.modalRef&&jl(e.modalRef,n),Wx(s.container,e.mount,e.modalRef,s.hiddenSiblings,!1),this.containers.splice(i,1);else{const o=s.modals[s.modals.length-1];o.modalRef&&jl(o.modalRef,!1)}return r}isTopModal(e){return this.modals.length>0&&this.modals[this.modals.length-1]===e}}function F3(t){return typeof t=="function"?t():t}function V3(t){return t?t.props.hasOwnProperty("in"):!1}const z3=new L3;function U3(t){const{container:e,disableEscapeKeyDown:n=!1,disableScrollLock:r=!1,manager:i=z3,closeAfterTransition:s=!1,onTransitionEnter:o,onTransitionExited:a,children:l,onClose:u,open:c,rootRef:h}=t,d=T.useRef({}),f=T.useRef(null),p=T.useRef(null),m=fr(p,h),[w,g]=T.useState(!c),y=V3(l);let v=!0;(t["aria-hidden"]==="false"||t["aria-hidden"]===!1)&&(v=!1);const _=()=>lr(f.current),x=()=>(d.current.modalRef=p.current,d.current.mount=f.current,d.current),b=()=>{i.mount(x(),{disableScrollLock:r}),p.current&&(p.current.scrollTop=0)},E=Is(()=>{const F=F3(e)||_().body;i.add(x(),F),p.current&&b()}),C=T.useCallback(()=>i.isTopModal(x()),[i]),A=Is(F=>{f.current=F,F&&(c&&C()?b():p.current&&jl(p.current,v))}),S=T.useCallback(()=>{i.remove(x(),v)},[v,i]);T.useEffect(()=>()=>{S()},[S]),T.useEffect(()=>{c?E():(!y||!s)&&S()},[c,S,y,s,E]);const P=F=>K=>{var O;(O=F.onKeyDown)==null||O.call(F,K),!(K.key!=="Escape"||!C())&&(n||(K.stopPropagation(),u&&u(K,"escapeKeyDown")))},M=F=>K=>{var O;(O=F.onClick)==null||O.call(F,K),K.target===K.currentTarget&&u&&u(K,"backdropClick")};return{getRootProps:(F={})=>{const K=YC(t);delete K.onTransitionEnter,delete K.onTransitionExited;const O=I({},K,F);return I({role:"presentation"},O,{onKeyDown:P(O),ref:m})},getBackdropProps:(F={})=>{const K=F;return I({"aria-hidden":!0},K,{onClick:M(K),open:c})},getTransitionProps:()=>{const F=()=>{g(!1),o&&o()},K=()=>{g(!0),a&&a(),s&&S()};return{onEnter:hy(F,l==null?void 0:l.props.onEnter),onExited:hy(K,l==null?void 0:l.props.onExited)}},rootRef:m,portalRef:A,isTopModal:C,exited:w,hasTransition:y}}function aI(t){const{children:e,defer:n=!1,fallback:r=null}=t,[i,s]=T.useState(!1);return ss(()=>{n||s(!0)},[n]),T.useEffect(()=>{n&&s(!0)},[n]),k.jsx(T.Fragment,{children:i?e:r})}const j3=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"],B3={entering:{opacity:1},entered:{opacity:1}},H3=T.forwardRef(function(e,n){const r=lo(),i={enter:r.transitions.duration.enteringScreen,exit:r.transitions.duration.leavingScreen},{addEndListener:s,appear:o=!0,children:a,easing:l,in:u,onEnter:c,onEntered:h,onEntering:d,onExit:f,onExited:p,onExiting:m,style:w,timeout:g=i,TransitionComponent:y=l5}=e,v=ue(e,j3),_=T.useRef(null),x=fr(_,a.ref,n),b=$=>B=>{if($){const F=_.current;B===void 0?$(F):$(F,B)}},E=b(d),C=b(($,B)=>{g5($);const F=Ix({style:w,timeout:g,easing:l},{mode:"enter"});$.style.webkitTransition=r.transitions.create("opacity",F),$.style.transition=r.transitions.create("opacity",F),c&&c($,B)}),A=b(h),S=b(m),P=b($=>{const B=Ix({style:w,timeout:g,easing:l},{mode:"exit"});$.style.webkitTransition=r.transitions.create("opacity",B),$.style.transition=r.transitions.create("opacity",B),f&&f($)}),M=b(p),D=$=>{s&&s(_.current,$)};return k.jsx(y,I({appear:o,in:u,nodeRef:_,onEnter:C,onEntered:A,onEntering:E,onExit:P,onExited:M,onExiting:S,addEndListener:D,timeout:g},v,{children:($,B)=>T.cloneElement(a,I({style:I({opacity:0,visibility:$==="exited"&&!u?"hidden":void 0},B3[$],w,a.props.style),ref:x},B))}))}),W3=H3;function q3(t){return ut("MuiBackdrop",t)}ct("MuiBackdrop",["root","invisible"]);const G3=["children","className","component","components","componentsProps","invisible","open","slotProps","slots","TransitionComponent","transitionDuration"],K3=t=>{const{classes:e,invisible:n}=t;return lt({root:["root",n&&"invisible"]},q3,e)},Q3=Te("div",{name:"MuiBackdrop",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,n.invisible&&e.invisible]}})(({ownerState:t})=>I({position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent"},t.invisible&&{backgroundColor:"transparent"})),Y3=T.forwardRef(function(e,n){var r,i,s;const o=tn({props:e,name:"MuiBackdrop"}),{children:a,className:l,component:u="div",components:c={},componentsProps:h={},invisible:d=!1,open:f,slotProps:p={},slots:m={},TransitionComponent:w=W3,transitionDuration:g}=o,y=ue(o,G3),v=I({},o,{component:u,invisible:d}),_=K3(v),x=(r=p.root)!=null?r:h.root;return k.jsx(w,I({in:f,timeout:g},y,{children:k.jsx(Q3,I({"aria-hidden":!0},x,{as:(i=(s=m.root)!=null?s:c.Root)!=null?i:u,className:$e(_.root,l,x==null?void 0:x.className),ownerState:I({},v,x==null?void 0:x.ownerState),classes:_,ref:n,children:a}))}))}),X3=Y3,J3=D0(),Z3=jC({themeId:wa,defaultTheme:J3,defaultClassName:"MuiBox-root",generateClassName:y0.generate}),ei=Z3;function eU(t){return ut("MuiButton",t)}const tU=ct("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]),Kc=tU,nU=T.createContext({}),rU=nU,iU=T.createContext(void 0),sU=iU,oU=["children","color","component","className","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"],aU=t=>{const{color:e,disableElevation:n,fullWidth:r,size:i,variant:s,classes:o}=t,a={root:["root",s,`${s}${be(e)}`,`size${be(i)}`,`${s}Size${be(i)}`,e==="inherit"&&"colorInherit",n&&"disableElevation",r&&"fullWidth"],label:["label"],startIcon:["startIcon",`iconSize${be(i)}`],endIcon:["endIcon",`iconSize${be(i)}`]},l=lt(a,eU,o);return I({},o,l)},lI=t=>I({},t.size==="small"&&{"& > *:nth-of-type(1)":{fontSize:18}},t.size==="medium"&&{"& > *:nth-of-type(1)":{fontSize:20}},t.size==="large"&&{"& > *:nth-of-type(1)":{fontSize:22}}),lU=Te(QC,{shouldForwardProp:t=>qC(t)||t==="classes",name:"MuiButton",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,e[n.variant],e[`${n.variant}${be(n.color)}`],e[`size${be(n.size)}`],e[`${n.variant}Size${be(n.size)}`],n.color==="inherit"&&e.colorInherit,n.disableElevation&&e.disableElevation,n.fullWidth&&e.fullWidth]}})(({theme:t,ownerState:e})=>{var n,r;const i=t.palette.mode==="light"?t.palette.grey[300]:t.palette.grey[800],s=t.palette.mode==="light"?t.palette.grey.A100:t.palette.grey[700];return I({},t.typography.button,{minWidth:64,padding:"6px 16px",borderRadius:(t.vars||t).shape.borderRadius,transition:t.transitions.create(["background-color","box-shadow","border-color","color"],{duration:t.transitions.duration.short}),"&:hover":I({textDecoration:"none",backgroundColor:t.vars?`rgba(${t.vars.palette.text.primaryChannel} / ${t.vars.palette.action.hoverOpacity})`:Ui(t.palette.text.primary,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},e.variant==="text"&&e.color!=="inherit"&&{backgroundColor:t.vars?`rgba(${t.vars.palette[e.color].mainChannel} / ${t.vars.palette.action.hoverOpacity})`:Ui(t.palette[e.color].main,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},e.variant==="outlined"&&e.color!=="inherit"&&{border:`1px solid ${(t.vars||t).palette[e.color].main}`,backgroundColor:t.vars?`rgba(${t.vars.palette[e.color].mainChannel} / ${t.vars.palette.action.hoverOpacity})`:Ui(t.palette[e.color].main,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},e.variant==="contained"&&{backgroundColor:t.vars?t.vars.palette.Button.inheritContainedHoverBg:s,boxShadow:(t.vars||t).shadows[4],"@media (hover: none)":{boxShadow:(t.vars||t).shadows[2],backgroundColor:(t.vars||t).palette.grey[300]}},e.variant==="contained"&&e.color!=="inherit"&&{backgroundColor:(t.vars||t).palette[e.color].dark,"@media (hover: none)":{backgroundColor:(t.vars||t).palette[e.color].main}}),"&:active":I({},e.variant==="contained"&&{boxShadow:(t.vars||t).shadows[8]}),[`&.${Kc.focusVisible}`]:I({},e.variant==="contained"&&{boxShadow:(t.vars||t).shadows[6]}),[`&.${Kc.disabled}`]:I({color:(t.vars||t).palette.action.disabled},e.variant==="outlined"&&{border:`1px solid ${(t.vars||t).palette.action.disabledBackground}`},e.variant==="contained"&&{color:(t.vars||t).palette.action.disabled,boxShadow:(t.vars||t).shadows[0],backgroundColor:(t.vars||t).palette.action.disabledBackground})},e.variant==="text"&&{padding:"6px 8px"},e.variant==="text"&&e.color!=="inherit"&&{color:(t.vars||t).palette[e.color].main},e.variant==="outlined"&&{padding:"5px 15px",border:"1px solid currentColor"},e.variant==="outlined"&&e.color!=="inherit"&&{color:(t.vars||t).palette[e.color].main,border:t.vars?`1px solid rgba(${t.vars.palette[e.color].mainChannel} / 0.5)`:`1px solid ${Ui(t.palette[e.color].main,.5)}`},e.variant==="contained"&&{color:t.vars?t.vars.palette.text.primary:(n=(r=t.palette).getContrastText)==null?void 0:n.call(r,t.palette.grey[300]),backgroundColor:t.vars?t.vars.palette.Button.inheritContainedBg:i,boxShadow:(t.vars||t).shadows[2]},e.variant==="contained"&&e.color!=="inherit"&&{color:(t.vars||t).palette[e.color].contrastText,backgroundColor:(t.vars||t).palette[e.color].main},e.color==="inherit"&&{color:"inherit",borderColor:"currentColor"},e.size==="small"&&e.variant==="text"&&{padding:"4px 5px",fontSize:t.typography.pxToRem(13)},e.size==="large"&&e.variant==="text"&&{padding:"8px 11px",fontSize:t.typography.pxToRem(15)},e.size==="small"&&e.variant==="outlined"&&{padding:"3px 9px",fontSize:t.typography.pxToRem(13)},e.size==="large"&&e.variant==="outlined"&&{padding:"7px 21px",fontSize:t.typography.pxToRem(15)},e.size==="small"&&e.variant==="contained"&&{padding:"4px 10px",fontSize:t.typography.pxToRem(13)},e.size==="large"&&e.variant==="contained"&&{padding:"8px 22px",fontSize:t.typography.pxToRem(15)},e.fullWidth&&{width:"100%"})},({ownerState:t})=>t.disableElevation&&{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${Kc.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${Kc.disabled}`]:{boxShadow:"none"}}),uU=Te("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.startIcon,e[`iconSize${be(n.size)}`]]}})(({ownerState:t})=>I({display:"inherit",marginRight:8,marginLeft:-4},t.size==="small"&&{marginLeft:-2},lI(t))),cU=Te("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.endIcon,e[`iconSize${be(n.size)}`]]}})(({ownerState:t})=>I({display:"inherit",marginRight:-4,marginLeft:8},t.size==="small"&&{marginRight:-2},lI(t))),hU=T.forwardRef(function(e,n){const r=T.useContext(rU),i=T.useContext(sU),s=g0(r,e),o=tn({props:s,name:"MuiButton"}),{children:a,color:l="primary",component:u="button",className:c,disabled:h=!1,disableElevation:d=!1,disableFocusRipple:f=!1,endIcon:p,focusVisibleClassName:m,fullWidth:w=!1,size:g="medium",startIcon:y,type:v,variant:_="text"}=o,x=ue(o,oU),b=I({},o,{color:l,component:u,disabled:h,disableElevation:d,disableFocusRipple:f,fullWidth:w,size:g,type:v,variant:_}),E=aU(b),C=y&&k.jsx(uU,{className:E.startIcon,ownerState:b,children:y}),A=p&&k.jsx(cU,{className:E.endIcon,ownerState:b,children:p}),S=i||"";return k.jsxs(lU,I({ownerState:b,className:$e(r.className,E.root,c,S),component:u,disabled:h,focusRipple:!f,focusVisibleClassName:$e(E.focusVisible,m),ref:n,type:v},x,{classes:E,children:[C,a,A]}))}),by=hU;function dU(t){return ut("MuiCard",t)}ct("MuiCard",["root"]);const fU=["className","raised"],pU=t=>{const{classes:e}=t;return lt({root:["root"]},dU,e)},mU=Te(b5,{name:"MuiCard",slot:"Root",overridesResolver:(t,e)=>e.root})(()=>({overflow:"hidden"})),gU=T.forwardRef(function(e,n){const r=tn({props:e,name:"MuiCard"}),{className:i,raised:s=!1}=r,o=ue(r,fU),a=I({},r,{raised:s}),l=pU(a);return k.jsx(mU,I({className:$e(l.root,i),elevation:s?8:void 0,ref:n,ownerState:a},o))}),Mh=gU;function yU(t){return ut("MuiCircularProgress",t)}ct("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"]);const vU=["className","color","disableShrink","size","style","thickness","value","variant"];let Jf=t=>t,qx,Gx,Kx,Qx;const Ri=44,_U=ic(qx||(qx=Jf`
+ 0% {
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ transform: rotate(360deg);
+ }
+`)),wU=ic(Gx||(Gx=Jf`
+ 0% {
+ stroke-dasharray: 1px, 200px;
+ stroke-dashoffset: 0;
+ }
+
+ 50% {
+ stroke-dasharray: 100px, 200px;
+ stroke-dashoffset: -15px;
+ }
+
+ 100% {
+ stroke-dasharray: 100px, 200px;
+ stroke-dashoffset: -125px;
+ }
+`)),xU=t=>{const{classes:e,variant:n,color:r,disableShrink:i}=t,s={root:["root",n,`color${be(r)}`],svg:["svg"],circle:["circle",`circle${be(n)}`,i&&"circleDisableShrink"]};return lt(s,yU,e)},bU=Te("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,e[n.variant],e[`color${be(n.color)}`]]}})(({ownerState:t,theme:e})=>I({display:"inline-block"},t.variant==="determinate"&&{transition:e.transitions.create("transform")},t.color!=="inherit"&&{color:(e.vars||e).palette[t.color].main}),({ownerState:t})=>t.variant==="indeterminate"&&S0(Kx||(Kx=Jf`
+ animation: ${0} 1.4s linear infinite;
+ `),_U)),EU=Te("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(t,e)=>e.svg})({display:"block"}),TU=Te("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.circle,e[`circle${be(n.variant)}`],n.disableShrink&&e.circleDisableShrink]}})(({ownerState:t,theme:e})=>I({stroke:"currentColor"},t.variant==="determinate"&&{transition:e.transitions.create("stroke-dashoffset")},t.variant==="indeterminate"&&{strokeDasharray:"80px, 200px",strokeDashoffset:0}),({ownerState:t})=>t.variant==="indeterminate"&&!t.disableShrink&&S0(Qx||(Qx=Jf`
+ animation: ${0} 1.4s ease-in-out infinite;
+ `),wU)),SU=T.forwardRef(function(e,n){const r=tn({props:e,name:"MuiCircularProgress"}),{className:i,color:s="primary",disableShrink:o=!1,size:a=40,style:l,thickness:u=3.6,value:c=0,variant:h="indeterminate"}=r,d=ue(r,vU),f=I({},r,{color:s,disableShrink:o,size:a,thickness:u,value:c,variant:h}),p=xU(f),m={},w={},g={};if(h==="determinate"){const y=2*Math.PI*((Ri-u)/2);m.strokeDasharray=y.toFixed(3),g["aria-valuenow"]=Math.round(c),m.strokeDashoffset=`${((100-c)/100*y).toFixed(3)}px`,w.transform="rotate(-90deg)"}return k.jsx(bU,I({className:$e(p.root,i),style:I({width:a,height:a},w,l),ownerState:f,ref:n,role:"progressbar"},g,d,{children:k.jsx(EU,{className:p.svg,ownerState:f,viewBox:`${Ri/2} ${Ri/2} ${Ri} ${Ri}`,children:k.jsx(TU,{className:p.circle,style:m,ownerState:f,cx:Ri,cy:Ri,r:(Ri-u)/2,fill:"none",strokeWidth:u})})}))}),W0=SU;function kU(t){return ut("MuiModal",t)}ct("MuiModal",["root","hidden","backdrop"]);const CU=["BackdropComponent","BackdropProps","classes","className","closeAfterTransition","children","container","component","components","componentsProps","disableAutoFocus","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","disableScrollLock","hideBackdrop","keepMounted","onBackdropClick","onClose","onTransitionEnter","onTransitionExited","open","slotProps","slots","theme"],IU=t=>{const{open:e,exited:n,classes:r}=t;return lt({root:["root",!e&&n&&"hidden"],backdrop:["backdrop"]},kU,r)},PU=Te("div",{name:"MuiModal",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t;return[e.root,!n.open&&n.exited&&e.hidden]}})(({theme:t,ownerState:e})=>I({position:"fixed",zIndex:(t.vars||t).zIndex.modal,right:0,bottom:0,top:0,left:0},!e.open&&e.exited&&{visibility:"hidden"})),AU=Te(X3,{name:"MuiModal",slot:"Backdrop",overridesResolver:(t,e)=>e.backdrop})({zIndex:-1}),RU=T.forwardRef(function(e,n){var r,i,s,o,a,l;const u=tn({name:"MuiModal",props:e}),{BackdropComponent:c=AU,BackdropProps:h,className:d,closeAfterTransition:f=!1,children:p,container:m,component:w,components:g={},componentsProps:y={},disableAutoFocus:v=!1,disableEnforceFocus:_=!1,disableEscapeKeyDown:x=!1,disablePortal:b=!1,disableRestoreFocus:E=!1,disableScrollLock:C=!1,hideBackdrop:A=!1,keepMounted:S=!1,onBackdropClick:P,open:M,slotProps:D,slots:$}=u,B=ue(u,CU),F=I({},u,{closeAfterTransition:f,disableAutoFocus:v,disableEnforceFocus:_,disableEscapeKeyDown:x,disablePortal:b,disableRestoreFocus:E,disableScrollLock:C,hideBackdrop:A,keepMounted:S}),{getRootProps:K,getBackdropProps:O,getTransitionProps:N,portalRef:L,isTopModal:Q,exited:q,hasTransition:Se}=U3(I({},F,{rootRef:n})),R=I({},F,{exited:q}),ve=IU(R),W={};if(p.props.tabIndex===void 0&&(W.tabIndex="-1"),Se){const{onEnter:xe,onExited:de}=N();W.onEnter=xe,W.onExited=de}const re=(r=(i=$==null?void 0:$.root)!=null?i:g.Root)!=null?r:PU,ke=(s=(o=$==null?void 0:$.backdrop)!=null?o:g.Backdrop)!=null?s:c,U=(a=D==null?void 0:D.root)!=null?a:y.root,Y=(l=D==null?void 0:D.backdrop)!=null?l:y.backdrop,te=Cn({elementType:re,externalSlotProps:U,externalForwardedProps:B,getSlotProps:K,additionalProps:{ref:n,as:w},ownerState:R,className:$e(d,U==null?void 0:U.className,ve==null?void 0:ve.root,!R.open&&R.exited&&(ve==null?void 0:ve.hidden))}),z=Cn({elementType:ke,externalSlotProps:Y,additionalProps:h,getSlotProps:xe=>O(I({},xe,{onClick:de=>{P&&P(de),xe!=null&&xe.onClick&&xe.onClick(de)}})),className:$e(Y==null?void 0:Y.className,h==null?void 0:h.className,ve==null?void 0:ve.backdrop),ownerState:R});return!S&&!M&&(!Se||q)?null:k.jsx(oI,{ref:L,container:m,disablePortal:b,children:k.jsxs(re,I({},te,{children:[!A&&c?k.jsx(ke,I({},z)):null,k.jsx(gz,{disableEnforceFocus:_,disableAutoFocus:v,disableRestoreFocus:E,isEnabled:Q,open:M,children:T.cloneElement(p,W)})]}))})}),MU=RU,OU=T.createContext(),Yx=OU;function DU(t){return ut("MuiGrid",t)}const NU=[0,1,2,3,4,5,6,7,8,9,10],$U=["column-reverse","column","row-reverse","row"],LU=["nowrap","wrap-reverse","wrap"],dl=["auto",!0,1,2,3,4,5,6,7,8,9,10,11,12],FU=ct("MuiGrid",["root","container","item","zeroMinWidth",...NU.map(t=>`spacing-xs-${t}`),...$U.map(t=>`direction-xs-${t}`),...LU.map(t=>`wrap-xs-${t}`),...dl.map(t=>`grid-xs-${t}`),...dl.map(t=>`grid-sm-${t}`),...dl.map(t=>`grid-md-${t}`),...dl.map(t=>`grid-lg-${t}`),...dl.map(t=>`grid-xl-${t}`)]),bu=FU,VU=["className","columns","columnSpacing","component","container","direction","item","rowSpacing","spacing","wrap","zeroMinWidth"];function sa(t){const e=parseFloat(t);return`${e}${String(t).replace(String(e),"")||"px"}`}function zU({theme:t,ownerState:e}){let n;return t.breakpoints.keys.reduce((r,i)=>{let s={};if(e[i]&&(n=e[i]),!n)return r;if(n===!0)s={flexBasis:0,flexGrow:1,maxWidth:"100%"};else if(n==="auto")s={flexBasis:"auto",flexGrow:0,flexShrink:0,maxWidth:"none",width:"auto"};else{const o=zf({values:e.columns,breakpoints:t.breakpoints.values}),a=typeof o=="object"?o[i]:o;if(a==null)return r;const l=`${Math.round(n/a*1e8)/1e6}%`;let u={};if(e.container&&e.item&&e.columnSpacing!==0){const c=t.spacing(e.columnSpacing);if(c!=="0px"){const h=`calc(${l} + ${sa(c)})`;u={flexBasis:h,maxWidth:h}}}s=I({flexBasis:l,flexGrow:0,maxWidth:l},u)}return t.breakpoints.values[i]===0?Object.assign(r,s):r[t.breakpoints.up(i)]=s,r},{})}function UU({theme:t,ownerState:e}){const n=zf({values:e.direction,breakpoints:t.breakpoints.values});return Kn({theme:t},n,r=>{const i={flexDirection:r};return r.indexOf("column")===0&&(i[`& > .${bu.item}`]={maxWidth:"none"}),i})}function uI({breakpoints:t,values:e}){let n="";Object.keys(e).forEach(i=>{n===""&&e[i]!==0&&(n=i)});const r=Object.keys(t).sort((i,s)=>t[i]-t[s]);return r.slice(0,r.indexOf(n))}function jU({theme:t,ownerState:e}){const{container:n,rowSpacing:r}=e;let i={};if(n&&r!==0){const s=zf({values:r,breakpoints:t.breakpoints.values});let o;typeof s=="object"&&(o=uI({breakpoints:t.breakpoints.values,values:s})),i=Kn({theme:t},s,(a,l)=>{var u;const c=t.spacing(a);return c!=="0px"?{marginTop:`-${sa(c)}`,[`& > .${bu.item}`]:{paddingTop:sa(c)}}:(u=o)!=null&&u.includes(l)?{}:{marginTop:0,[`& > .${bu.item}`]:{paddingTop:0}}})}return i}function BU({theme:t,ownerState:e}){const{container:n,columnSpacing:r}=e;let i={};if(n&&r!==0){const s=zf({values:r,breakpoints:t.breakpoints.values});let o;typeof s=="object"&&(o=uI({breakpoints:t.breakpoints.values,values:s})),i=Kn({theme:t},s,(a,l)=>{var u;const c=t.spacing(a);return c!=="0px"?{width:`calc(100% + ${sa(c)})`,marginLeft:`-${sa(c)}`,[`& > .${bu.item}`]:{paddingLeft:sa(c)}}:(u=o)!=null&&u.includes(l)?{}:{width:"100%",marginLeft:0,[`& > .${bu.item}`]:{paddingLeft:0}}})}return i}function HU(t,e,n={}){if(!t||t<=0)return[];if(typeof t=="string"&&!Number.isNaN(Number(t))||typeof t=="number")return[n[`spacing-xs-${String(t)}`]];const r=[];return e.forEach(i=>{const s=t[i];Number(s)>0&&r.push(n[`spacing-${i}-${String(s)}`])}),r}const WU=Te("div",{name:"MuiGrid",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:n}=t,{container:r,direction:i,item:s,spacing:o,wrap:a,zeroMinWidth:l,breakpoints:u}=n;let c=[];r&&(c=HU(o,u,e));const h=[];return u.forEach(d=>{const f=n[d];f&&h.push(e[`grid-${d}-${String(f)}`])}),[e.root,r&&e.container,s&&e.item,l&&e.zeroMinWidth,...c,i!=="row"&&e[`direction-xs-${String(i)}`],a!=="wrap"&&e[`wrap-xs-${String(a)}`],...h]}})(({ownerState:t})=>I({boxSizing:"border-box"},t.container&&{display:"flex",flexWrap:"wrap",width:"100%"},t.item&&{margin:0},t.zeroMinWidth&&{minWidth:0},t.wrap!=="wrap"&&{flexWrap:t.wrap}),UU,jU,BU,zU);function qU(t,e){if(!t||t<=0)return[];if(typeof t=="string"&&!Number.isNaN(Number(t))||typeof t=="number")return[`spacing-xs-${String(t)}`];const n=[];return e.forEach(r=>{const i=t[r];if(Number(i)>0){const s=`spacing-${r}-${String(i)}`;n.push(s)}}),n}const GU=t=>{const{classes:e,container:n,direction:r,item:i,spacing:s,wrap:o,zeroMinWidth:a,breakpoints:l}=t;let u=[];n&&(u=qU(s,l));const c=[];l.forEach(d=>{const f=t[d];f&&c.push(`grid-${d}-${String(f)}`)});const h={root:["root",n&&"container",i&&"item",a&&"zeroMinWidth",...u,r!=="row"&&`direction-xs-${String(r)}`,o!=="wrap"&&`wrap-xs-${String(o)}`,...c]};return lt(h,DU,e)},KU=T.forwardRef(function(e,n){const r=tn({props:e,name:"MuiGrid"}),{breakpoints:i}=lo(),s=M0(r),{className:o,columns:a,columnSpacing:l,component:u="div",container:c=!1,direction:h="row",item:d=!1,rowSpacing:f,spacing:p=0,wrap:m="wrap",zeroMinWidth:w=!1}=s,g=ue(s,VU),y=f||p,v=l||p,_=T.useContext(Yx),x=c?a||12:_,b={},E=I({},g);i.keys.forEach(S=>{g[S]!=null&&(b[S]=g[S],delete E[S])});const C=I({},s,{columns:x,container:c,direction:h,item:d,rowSpacing:y,columnSpacing:v,wrap:m,zeroMinWidth:w,spacing:p},b,{breakpoints:i.keys}),A=GU(C);return k.jsx(Yx.Provider,{value:x,children:k.jsx(WU,I({ownerState:C,className:$e(A.root,o),as:u,ref:n},E))})}),Qc=KU;var cI={exports:{}};(function(t,e){(function(n,r){t.exports=r(T)})(typeof self<"u"?self:g2,n=>(()=>{var r={7403:(a,l,u)=>{u.d(l,{default:()=>O});var c=u(4087),h=u.n(c);const d=function(N){return new RegExp(/<[a-z][\s\S]*>/i).test(N)},f=function(N,L){return Math.floor(Math.random()*(L-N+1))+N};var p="TYPE_CHARACTER",m="REMOVE_CHARACTER",w="REMOVE_ALL",g="REMOVE_LAST_VISIBLE_NODE",y="PAUSE_FOR",v="CALL_FUNCTION",_="ADD_HTML_TAG_ELEMENT",x="CHANGE_DELETE_SPEED",b="CHANGE_DELAY",E="CHANGE_CURSOR",C="PASTE_STRING",A="HTML_TAG";function S(N){return S=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(L){return typeof L}:function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},S(N)}function P(N,L){var Q=Object.keys(N);if(Object.getOwnPropertySymbols){var q=Object.getOwnPropertySymbols(N);L&&(q=q.filter(function(Se){return Object.getOwnPropertyDescriptor(N,Se).enumerable})),Q.push.apply(Q,q)}return Q}function M(N){for(var L=1;LN.length)&&(L=N.length);for(var Q=0,q=new Array(L);Q1&&arguments[1]!==void 0?arguments[1]:null;if(d(W))return R.typeOutHTMLString(W,re);if(W){var ke=(R.options||{}).stringSplitter,U=typeof ke=="function"?ke(W):W.split("");R.typeCharacters(U,re)}return R}),F(this,"pasteString",function(W){var re=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;return d(W)?R.typeOutHTMLString(W,re,!0):(W&&R.addEventToQueue(C,{character:W,node:re}),R)}),F(this,"typeOutHTMLString",function(W){var re=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,ke=arguments.length>2?arguments[2]:void 0,U=function(xe){var de=document.createElement("div");return de.innerHTML=xe,de.childNodes}(W);if(U.length>0)for(var Y=0;Y0&&arguments[0]!==void 0?arguments[0]:"natural";return R.addEventToQueue(w,{speed:W}),R}),F(this,"changeDeleteSpeed",function(W){if(!W)throw new Error("Must provide new delete speed");return R.addEventToQueue(x,{speed:W}),R}),F(this,"changeDelay",function(W){if(!W)throw new Error("Must provide new delay");return R.addEventToQueue(b,{delay:W}),R}),F(this,"changeCursor",function(W){if(!W)throw new Error("Must provide new cursor");return R.addEventToQueue(E,{cursor:W}),R}),F(this,"deleteChars",function(W){if(!W)throw new Error("Must provide amount of characters to delete");for(var re=0;re1&&arguments[1]!==void 0?arguments[1]:null;if(!W||!Array.isArray(W))throw new Error("Characters must be an array");return W.forEach(function(ke){R.addEventToQueue(p,{character:ke,node:re})}),R}),F(this,"removeCharacters",function(W){if(!W||!Array.isArray(W))throw new Error("Characters must be an array");return W.forEach(function(){R.addEventToQueue(m)}),R}),F(this,"addEventToQueue",function(W,re){var ke=arguments.length>2&&arguments[2]!==void 0&&arguments[2];return R.addEventToStateProperty(W,re,ke,"eventQueue")}),F(this,"addReverseCalledEvent",function(W,re){var ke=arguments.length>2&&arguments[2]!==void 0&&arguments[2];return R.options.loop?R.addEventToStateProperty(W,re,ke,"reverseCalledEvents"):R}),F(this,"addEventToStateProperty",function(W,re){var ke=arguments.length>2&&arguments[2]!==void 0&&arguments[2],U=arguments.length>3?arguments[3]:void 0,Y={eventName:W,eventArgs:re||{}};return R.state[U]=ke?[Y].concat(D(R.state[U])):[].concat(D(R.state[U]),[Y]),R}),F(this,"runEventLoop",function(){R.state.lastFrameTime||(R.state.lastFrameTime=Date.now());var W=Date.now(),re=W-R.state.lastFrameTime;if(!R.state.eventQueue.length){if(!R.options.loop)return;R.state.eventQueue=D(R.state.calledEvents),R.state.calledEvents=[],R.options=M({},R.state.initialOptions)}if(R.state.eventLoop=h()(R.runEventLoop),!R.state.eventLoopPaused){if(R.state.pauseUntil){if(W{var c=u(852)(u(5639),"DataView");a.exports=c},1989:(a,l,u)=>{var c=u(1789),h=u(401),d=u(7667),f=u(1327),p=u(1866);function m(w){var g=-1,y=w==null?0:w.length;for(this.clear();++g{var c=u(7040),h=u(4125),d=u(2117),f=u(7518),p=u(4705);function m(w){var g=-1,y=w==null?0:w.length;for(this.clear();++g{var c=u(852)(u(5639),"Map");a.exports=c},3369:(a,l,u)=>{var c=u(4785),h=u(1285),d=u(6e3),f=u(9916),p=u(5265);function m(w){var g=-1,y=w==null?0:w.length;for(this.clear();++g{var c=u(852)(u(5639),"Promise");a.exports=c},8525:(a,l,u)=>{var c=u(852)(u(5639),"Set");a.exports=c},8668:(a,l,u)=>{var c=u(3369),h=u(619),d=u(2385);function f(p){var m=-1,w=p==null?0:p.length;for(this.__data__=new c;++m