From c9939450a965d611d34680e943b42ec436111b0f Mon Sep 17 00:00:00 2001 From: narumincho <16481886+narumincho@users.noreply.github.com> Date: Sat, 22 Jun 2024 19:35:41 +0900 Subject: [PATCH] delete Flutter --- .fvmrc | 4 - .metadata | 39 - .vscode/launch.json | 9 +- .vscode/settings.json | 1 - README.md | 16 +- analysis_options.yaml | 63 - client/main.tsx | 18 + client/start.tsx | 10 + deno.json | 10 +- deno.lock | 160 +- dist.json | 1 + lib/app.dart | 140 - lib/codegen.dart | 30 - lib/codegen_api.dart | 94 - lib/env.dart | 6 - lib/graphql/api.dart | 806 --- lib/graphql/query.dart | 5390 ----------------- lib/graphql/type.dart | 597 -- lib/localization.dart | 595 -- lib/main.dart | 9 - lib/model/log_in_state.dart | 16 - lib/page/about.dart | 36 - lib/page/account.dart | 77 - lib/setup_no_web.dart | 1 - lib/setup_web.dart | 5 - .../input_account_code_and_display_name.dart | 238 - lib/widget/input_totp_code.dart | 147 - lib/widget/language_dropdown.dart | 50 - lib/widget/login_dialog.dart | 47 - lib/widget/signup_dialog.dart | 42 - pubspec.lock | 479 -- pubspec.yaml | 28 - script/buildClient.ts | 10 + script/startInDenoDeploy.ts | 2 +- server/{main.ts => main.tsx} | 34 + test/widget_test.dart | 14 - web/favicon.png | Bin 917 -> 0 bytes web/icons/Icon-192.png | Bin 5292 -> 0 bytes web/icons/Icon-512.png | Bin 8252 -> 0 bytes web/icons/Icon-maskable-192.png | Bin 5594 -> 0 bytes web/icons/Icon-maskable-512.png | Bin 20998 -> 0 bytes web/index.html | 93 - web/manifest.json | 35 - windows/.gitignore | 17 - windows/CMakeLists.txt | 108 - windows/flutter/CMakeLists.txt | 109 - .../flutter/generated_plugin_registrant.cc | 14 - windows/flutter/generated_plugin_registrant.h | 15 - windows/flutter/generated_plugins.cmake | 24 - windows/runner/CMakeLists.txt | 40 - windows/runner/Runner.rc | 121 - windows/runner/flutter_window.cpp | 71 - windows/runner/flutter_window.h | 33 - windows/runner/main.cpp | 43 - windows/runner/resource.h | 16 - windows/runner/resources/app_icon.ico | Bin 33772 -> 0 bytes windows/runner/runner.exe.manifest | 20 - windows/runner/utils.cpp | 65 - windows/runner/utils.h | 19 - windows/runner/win32_window.cpp | 288 - windows/runner/win32_window.h | 102 - 61 files changed, 237 insertions(+), 10220 deletions(-) delete mode 100644 .fvmrc delete mode 100644 .metadata delete mode 100644 analysis_options.yaml create mode 100644 client/main.tsx create mode 100644 client/start.tsx create mode 100644 dist.json delete mode 100644 lib/app.dart delete mode 100644 lib/codegen.dart delete mode 100644 lib/codegen_api.dart delete mode 100644 lib/env.dart delete mode 100644 lib/graphql/api.dart delete mode 100644 lib/graphql/query.dart delete mode 100644 lib/graphql/type.dart delete mode 100644 lib/localization.dart delete mode 100644 lib/main.dart delete mode 100644 lib/model/log_in_state.dart delete mode 100644 lib/page/about.dart delete mode 100644 lib/page/account.dart delete mode 100644 lib/setup_no_web.dart delete mode 100644 lib/setup_web.dart delete mode 100644 lib/widget/input_account_code_and_display_name.dart delete mode 100644 lib/widget/input_totp_code.dart delete mode 100644 lib/widget/language_dropdown.dart delete mode 100644 lib/widget/login_dialog.dart delete mode 100644 lib/widget/signup_dialog.dart delete mode 100644 pubspec.lock delete mode 100644 pubspec.yaml create mode 100644 script/buildClient.ts rename server/{main.ts => main.tsx} (76%) delete mode 100644 test/widget_test.dart delete mode 100644 web/favicon.png delete mode 100644 web/icons/Icon-192.png delete mode 100644 web/icons/Icon-512.png delete mode 100644 web/icons/Icon-maskable-192.png delete mode 100644 web/icons/Icon-maskable-512.png delete mode 100644 web/index.html delete mode 100644 web/manifest.json delete mode 100644 windows/.gitignore delete mode 100644 windows/CMakeLists.txt delete mode 100644 windows/flutter/CMakeLists.txt delete mode 100644 windows/flutter/generated_plugin_registrant.cc delete mode 100644 windows/flutter/generated_plugin_registrant.h delete mode 100644 windows/flutter/generated_plugins.cmake delete mode 100644 windows/runner/CMakeLists.txt delete mode 100644 windows/runner/Runner.rc delete mode 100644 windows/runner/flutter_window.cpp delete mode 100644 windows/runner/flutter_window.h delete mode 100644 windows/runner/main.cpp delete mode 100644 windows/runner/resource.h delete mode 100644 windows/runner/resources/app_icon.ico delete mode 100644 windows/runner/runner.exe.manifest delete mode 100644 windows/runner/utils.cpp delete mode 100644 windows/runner/utils.h delete mode 100644 windows/runner/win32_window.cpp delete mode 100644 windows/runner/win32_window.h diff --git a/.fvmrc b/.fvmrc deleted file mode 100644 index 26d017c2..00000000 --- a/.fvmrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "flutter": "3.22.2", - "flavors": {} -} \ No newline at end of file diff --git a/.metadata b/.metadata deleted file mode 100644 index f2a6fb3d..00000000 --- a/.metadata +++ /dev/null @@ -1,39 +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: "9e1c857886f07d342cf106f2cd588bcd5e031bb2" - channel: "stable" - -project_type: app - -# Tracks metadata for the flutter migrate command -migration: - platforms: - - platform: root - create_revision: 9e1c857886f07d342cf106f2cd588bcd5e031bb2 - base_revision: 9e1c857886f07d342cf106f2cd588bcd5e031bb2 - - platform: android - create_revision: 9e1c857886f07d342cf106f2cd588bcd5e031bb2 - base_revision: 9e1c857886f07d342cf106f2cd588bcd5e031bb2 - - platform: ios - create_revision: 9e1c857886f07d342cf106f2cd588bcd5e031bb2 - base_revision: 9e1c857886f07d342cf106f2cd588bcd5e031bb2 - - platform: web - create_revision: 9e1c857886f07d342cf106f2cd588bcd5e031bb2 - base_revision: 9e1c857886f07d342cf106f2cd588bcd5e031bb2 - - platform: windows - create_revision: 9e1c857886f07d342cf106f2cd588bcd5e031bb2 - base_revision: 9e1c857886f07d342cf106f2cd588bcd5e031bb2 - - # 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/.vscode/launch.json b/.vscode/launch.json index 8808fa91..0fcda594 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -15,20 +15,13 @@ // "--watch", // ファイルの変更を監視して自動で再起動したかったが, なぜか動かない "--inspect", "--check", - "--unstable", + "--unstable-kv", "--allow-net=:8000", "--allow-read=local.sqlite*", "--allow-write=local.sqlite*" ], "program": "${workspaceFolder}/script/startInLocal.ts", "attachSimplePort": 9229 - }, - { - "name": "start client", - "request": "launch", - "type": "dart", - "flutterMode": "debug", - "args": [] } ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index fe23b0c8..aaaa00b5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -18,5 +18,4 @@ "[markdown]": { "editor.defaultFormatter": "denoland.vscode-deno" }, - "dart.flutterSdkPath": ".fvm/versions/3.22.2" } \ No newline at end of file diff --git a/README.md b/README.md index 1d74b547..577a3a39 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ startDefinyServer(); ``` ```sh -deno run --check --watch --unstable --allow-net=:8000 ./script/startInLocal.ts +deno run --check --watch --unstable-kv --allow-net=:8000 ./script/startInLocal.ts ``` ## client build @@ -32,20 +32,6 @@ deno run --check --watch --unstable --allow-net=:8000 ./script/startInLocal.ts deno run --check --allow-env --allow-net --allow-read --allow-write=./dist.json ./script/buildClient.ts ``` -## client graphql codegen - -### step 1 query gen - -```sh -fvm flutter pub run ./lib/codegen.dart && fvm dart fix --apply && fvm dart format . -``` - -### step 2 api gen - -```sh -fvm flutter pub run ./lib/codegen_api.dart && fvm dart fix --apply && fvm dart format . -``` - ## type check ```sh diff --git a/analysis_options.yaml b/analysis_options.yaml deleted file mode 100644 index aa6b41df..00000000 --- a/analysis_options.yaml +++ /dev/null @@ -1,63 +0,0 @@ -include: package:flutter_lints/flutter.yaml - -linter: - # https://dart-lang.github.io/linter/lints/ - # から役立ちそうなルールを適宜追加する - rules: - - always_use_package_imports - - avoid_dynamic_calls - - avoid_type_to_string - - avoid_classes_with_only_static_members - - avoid_double_and_int_checks - - avoid_escaping_inner_quotes - - avoid_final_parameters # parameter_assignments を指定しているため - - avoid_implementing_value_types - - avoid_js_rounded_ints - - avoid_multiple_declarations_per_line - - avoid_equals_and_hash_code_on_mutable_classes - - avoid_redundant_argument_values - - avoid_unused_constructor_parameters - - avoid_void_async - - cascade_invocations - - conditional_uri_does_not_exist - - deprecated_consistency - - directives_ordering - - do_not_use_environment - - eol_at_end_of_file - - leading_newlines_in_multiline_strings - - no_runtimeType_toString - - only_throw_errors - - parameter_assignments - - prefer_asserts_in_initializer_lists - - prefer_asserts_with_message - - prefer_final_in_for_each - - prefer_final_locals - - prefer_if_elements_to_conditional_expressions - - prefer_int_literals - - prefer_null_aware_method_calls - - prefer_single_quotes - - sized_box_shrink_expand - - sort_constructors_first - - sort_unnamed_constructors_first - - tighten_type_of_initializing_formals - - type_annotate_public_apis - - unawaited_futures - - unnecessary_parenthesis - - unnecessary_raw_strings - - use_colored_box - - use_decorated_box - - use_if_null_to_convert_nulls_to_bools - - use_is_even_rather_than_modulo - - use_named_constants - - use_raw_strings - - use_to_and_as_if_applicable - - secure_pubspec_urls - - sort_pub_dependencies - -analyzer: - language: - strict-casts: true - strict-inference: true - strict-raw-types: true - errors: - parameter_assignments: error diff --git a/client/main.tsx b/client/main.tsx new file mode 100644 index 00000000..54e65037 --- /dev/null +++ b/client/main.tsx @@ -0,0 +1,18 @@ +import React from "https://esm.sh/react@18.3.1"; + +export const App = () => { + const [count, setCount] = React.useState(0); + + return ( +
+

definy

+ +
+ ); +}; diff --git a/client/start.tsx b/client/start.tsx new file mode 100644 index 00000000..fa600ee5 --- /dev/null +++ b/client/start.tsx @@ -0,0 +1,10 @@ +import { createRoot } from "https://esm.sh/react-dom@18.3.1/client"; +import { App } from "./main.tsx"; +import React from "https://esm.sh/v128/@types/react@18.2.38/index.d.ts"; + +const root = document.getElementById("root"); +if (root === null) { + throw new Error("root element not found"); +} + +createRoot(root).render(); diff --git a/deno.json b/deno.json index c1b151cf..287b03f9 100644 --- a/deno.json +++ b/deno.json @@ -9,12 +9,8 @@ "deno.unstable" ] }, - "fmt": { - "include": ["**"], - "exclude": ["build/**", ".dart_tool/**", ".fvm/**"] - }, - "lint": { - "include": ["**"], - "exclude": ["build/**", ".dart_tool/**", ".fvm/**"] + "tasks": { + "server-dev": "deno run --check --watch --allow-env --allow-net --allow-read --allow-write=./dist.json ./script/startInLocal.ts", + "client-build": "deno run --check --allow-env --allow-net --allow-read --allow-write=./dist.json ./script/buildClient.ts" } } diff --git a/deno.lock b/deno.lock index 13c13aa7..5179ff29 100644 --- a/deno.lock +++ b/deno.lock @@ -2,10 +2,60 @@ "version": "3", "packages": { "specifiers": { + "jsr:@deno/cache-dir@0.8": "jsr:@deno/cache-dir@0.8.0", + "jsr:@deno/graph@^0.69.7": "jsr:@deno/graph@0.69.10", + "jsr:@std/assert@^0.218.2": "jsr:@std/assert@0.218.2", + "jsr:@std/bytes@^0.218.2": "jsr:@std/bytes@0.218.2", + "jsr:@std/fmt@^0.218.2": "jsr:@std/fmt@0.218.2", + "jsr:@std/fs@^0.218.2": "jsr:@std/fs@0.218.2", + "jsr:@std/io@^0.218.2": "jsr:@std/io@0.218.2", + "jsr:@std/path@^0.218.2": "jsr:@std/path@0.218.2", "npm:@narumincho/simple-graphql-server-common@0.1.2": "npm:@narumincho/simple-graphql-server-common@0.1.2", "npm:dataloader": "npm:dataloader@2.2.2", "npm:graphql": "npm:graphql@16.8.1", - "npm:graphql-http": "npm:graphql-http@1.22.0_graphql@16.8.1" + "npm:graphql-http": "npm:graphql-http@1.22.0_graphql@16.8.1", + "npm:react": "npm:react@18.3.1", + "npm:react-dom": "npm:react-dom@18.3.1_react@18.3.1" + }, + "jsr": { + "@deno/cache-dir@0.8.0": { + "integrity": "e87e80a404958f6350d903e6238b72afb92468378b0b32111f7a1e4916ac7fe7", + "dependencies": [ + "jsr:@deno/graph@^0.69.7", + "jsr:@std/fmt@^0.218.2", + "jsr:@std/fs@^0.218.2", + "jsr:@std/io@^0.218.2", + "jsr:@std/path@^0.218.2" + ] + }, + "@deno/graph@0.69.10": { + "integrity": "38fe22ac5686f6ece5daeec5a4df65c6314d7d32adcc33f77917a13cfaffa26f" + }, + "@std/assert@0.218.2": { + "integrity": "7f0a5a1a8cf86607cd6c2c030584096e1ffad27fc9271429a8cb48cfbdee5eaf" + }, + "@std/bytes@0.218.2": { + "integrity": "91fe54b232dcca73856b79a817247f4a651dbb60d51baafafb6408c137241670" + }, + "@std/fmt@0.218.2": { + "integrity": "99526449d2505aa758b6cbef81e7dd471d8b28ec0dcb1491d122b284c548788a" + }, + "@std/fs@0.218.2": { + "integrity": "dd9431453f7282e8c577cc22c9e6d036055a9a980b5549f887d6012969fabcca" + }, + "@std/io@0.218.2": { + "integrity": "c64fbfa087b7c9d4d386c5672f291f607d88cb7d44fc299c20c713e345f2785f", + "dependencies": [ + "jsr:@std/assert@^0.218.2", + "jsr:@std/bytes@^0.218.2" + ] + }, + "@std/path@0.218.2": { + "integrity": "b568fd923d9e53ad76d17c513e7310bda8e755a3e825e6289a0ce536404e2662", + "dependencies": [ + "jsr:@std/assert@^0.218.2" + ] + } }, "npm": { "@narumincho/simple-graphql-server-common@0.1.2": { @@ -27,10 +77,77 @@ "graphql@16.8.1": { "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", "dependencies": {} + }, + "js-tokens@4.0.0": { + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dependencies": {} + }, + "loose-envify@1.4.0": { + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "js-tokens@4.0.0" + } + }, + "react-dom@18.3.1_react@18.3.1": { + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "loose-envify@1.4.0", + "react": "react@18.3.1", + "scheduler": "scheduler@0.23.2" + } + }, + "react@18.3.1": { + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "loose-envify@1.4.0" + } + }, + "scheduler@0.23.2": { + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "loose-envify@1.4.0" + } } } }, + "redirects": { + "https://esm.sh/v128/@types/react@~18.2/index.d.ts": "https://esm.sh/v128/@types/react@18.2.38/index.d.ts", + "https://esm.sh/v128/@types/react@~18.3/index.d.ts": "https://esm.sh/v128/@types/react@18.2.38/index.d.ts", + "https://esm.sh/v135/@types/react-dom@~18.2/index.d.ts": "https://esm.sh/v135/@types/react-dom@18.2.25/index.d.ts", + "https://esm.sh/v135/@types/react-dom@~18.3/client~.d.ts": "https://esm.sh/v135/@types/react-dom@18.3.0/client~.d.ts", + "https://esm.sh/v135/@types/react-dom@~18.3/server~.d.ts": "https://esm.sh/v135/@types/react-dom@18.3.0/server~.d.ts" + }, "remote": { + "https://deno.land/std@0.140.0/_util/assert.ts": "e94f2eb37cebd7f199952e242c77654e43333c1ac4c5c700e929ea3aa5489f74", + "https://deno.land/std@0.140.0/_util/os.ts": "3b4c6e27febd119d36a416d7a97bd3b0251b77c88942c8f16ee5953ea13e2e49", + "https://deno.land/std@0.140.0/bytes/bytes_list.ts": "67eb118e0b7891d2f389dad4add35856f4ad5faab46318ff99653456c23b025d", + "https://deno.land/std@0.140.0/bytes/equals.ts": "fc16dff2090cced02497f16483de123dfa91e591029f985029193dfaa9d894c9", + "https://deno.land/std@0.140.0/bytes/mod.ts": "763f97d33051cc3f28af1a688dfe2830841192a9fea0cbaa55f927b49d49d0bf", + "https://deno.land/std@0.140.0/fmt/colors.ts": "30455035d6d728394781c10755351742dd731e3db6771b1843f9b9e490104d37", + "https://deno.land/std@0.140.0/fs/_util.ts": "0fb24eb4bfebc2c194fb1afdb42b9c3dda12e368f43e8f2321f84fc77d42cb0f", + "https://deno.land/std@0.140.0/fs/ensure_dir.ts": "9dc109c27df4098b9fc12d949612ae5c9c7169507660dcf9ad90631833209d9d", + "https://deno.land/std@0.140.0/io/buffer.ts": "bd0c4bf53db4b4be916ca5963e454bddfd3fcd45039041ea161dbf826817822b", + "https://deno.land/std@0.140.0/path/_constants.ts": "df1db3ffa6dd6d1252cc9617e5d72165cd2483df90e93833e13580687b6083c3", + "https://deno.land/std@0.140.0/path/_interface.ts": "ee3b431a336b80cf445441109d089b70d87d5e248f4f90ff906820889ecf8d09", + "https://deno.land/std@0.140.0/path/_util.ts": "c1e9686d0164e29f7d880b2158971d805b6e0efc3110d0b3e24e4b8af2190d2b", + "https://deno.land/std@0.140.0/path/common.ts": "bee563630abd2d97f99d83c96c2fa0cca7cee103e8cb4e7699ec4d5db7bd2633", + "https://deno.land/std@0.140.0/path/glob.ts": "cb5255638de1048973c3e69e420c77dc04f75755524cb3b2e160fe9277d939ee", + "https://deno.land/std@0.140.0/path/mod.ts": "d3e68d0abb393fb0bf94a6d07c46ec31dc755b544b13144dee931d8d5f06a52d", + "https://deno.land/std@0.140.0/path/posix.ts": "293cdaec3ecccec0a9cc2b534302dfe308adb6f10861fa183275d6695faace44", + "https://deno.land/std@0.140.0/path/separator.ts": "fe1816cb765a8068afb3e8f13ad272351c85cbc739af56dacfc7d93d710fe0f9", + "https://deno.land/std@0.140.0/path/win32.ts": "31811536855e19ba37a999cd8d1b62078235548d67902ece4aa6b814596dd757", + "https://deno.land/std@0.140.0/streams/conversion.ts": "712585bfa0172a97fb68dd46e784ae8ad59d11b88079d6a4ab098ff42e697d21", + "https://deno.land/std@0.186.0/_util/asserts.ts": "178dfc49a464aee693a7e285567b3d0b555dc805ff490505a8aae34f9cfb1462", + "https://deno.land/std@0.186.0/_util/os.ts": "d932f56d41e4f6a6093d56044e29ce637f8dcc43c5a90af43504a889cf1775e3", + "https://deno.land/std@0.186.0/path/_constants.ts": "e49961f6f4f48039c0dfed3c3f93e963ca3d92791c9d478ac5b43183413136e0", + "https://deno.land/std@0.186.0/path/_interface.ts": "6471159dfbbc357e03882c2266d21ef9afdb1e4aa771b0545e90db58a0ba314b", + "https://deno.land/std@0.186.0/path/_util.ts": "d7abb1e0dea065f427b89156e28cdeb32b045870acdf865833ba808a73b576d0", + "https://deno.land/std@0.186.0/path/common.ts": "ee7505ab01fd22de3963b64e46cff31f40de34f9f8de1fff6a1bd2fe79380000", + "https://deno.land/std@0.186.0/path/glob.ts": "d479e0a695621c94d3fd7fe7abd4f9499caf32a8de13f25073451c6ef420a4e1", + "https://deno.land/std@0.186.0/path/mod.ts": "ee161baec5ded6510ee1d1fb6a75a0f5e4b41f3f3301c92c716ecbdf7dae910d", + "https://deno.land/std@0.186.0/path/posix.ts": "8b7c67ac338714b30c816079303d0285dd24af6b284f7ad63da5b27372a2c94d", + "https://deno.land/std@0.186.0/path/separator.ts": "0fb679739d0d1d7bf45b68dacfb4ec7563597a902edbaf3c59b50d5bcadd93b1", + "https://deno.land/std@0.186.0/path/win32.ts": "d186344e5583bcbf8b18af416d13d82b35a317116e6460a5a3953508c3de5bba", "https://deno.land/std@0.211.0/assert/_constants.ts": "a271e8ef5a573f1df8e822a6eb9d09df064ad66a4390f21b3e31f820a38e0975", "https://deno.land/std@0.211.0/assert/_diff.ts": "6a2d68f2c42d73a1e31818a4195f40598d672c7f02ac75c7f1b1e6789852c2bc", "https://deno.land/std@0.211.0/assert/_format.ts": "0ba808961bf678437fb486b56405b6fefad2cf87b5809667c781ddee8c32aff4", @@ -140,8 +257,47 @@ "https://deno.land/std@0.211.0/path/windows/separator.ts": "2bbcc551f64810fb43252185bd1d33d66e0477d74bd52f03b89f5dc21a3dd486", "https://deno.land/std@0.211.0/path/windows/to_file_url.ts": "1cd63fd35ec8d1370feaa4752eccc4cc05ea5362a878be8dc7db733650995484", "https://deno.land/std@0.211.0/path/windows/to_namespaced_path.ts": "4ffa4fb6fae321448d5fe810b3ca741d84df4d7897e61ee29be961a6aac89a4c", + "https://deno.land/x/deno_cache@0.5.2/auth_tokens.ts": "5d1d56474c54a9d152e44d43ea17c2e6a398dd1e9682c69811a313567c01ee1e", + "https://deno.land/x/deno_cache@0.5.2/cache.ts": "92ce8511e1e5c00fdf53a41619aa77d632ea8e0fc711324322e4d5ebf8133911", + "https://deno.land/x/deno_cache@0.5.2/deno_dir.ts": "1ea355b8ba11c630d076b222b197cfc937dd81e5a4a260938997da99e8ff93a0", + "https://deno.land/x/deno_cache@0.5.2/deps.ts": "26a75905652510b76e54b6d5ef3cf824d1062031e00782efcd768978419224e7", + "https://deno.land/x/deno_cache@0.5.2/dirs.ts": "009c6f54e0b610914d6ce9f72f6f6ccfffd2d47a79a19061e0a9eb4253836069", + "https://deno.land/x/deno_cache@0.5.2/disk_cache.ts": "66a1e604a8d564b6dd0500326cac33d08b561d331036bf7272def80f2f7952aa", + "https://deno.land/x/deno_cache@0.5.2/file_fetcher.ts": "89616c50b6df73fb04e73d0b7cd99e5f2ed7967386913d65b9e8baa4238501f7", + "https://deno.land/x/deno_cache@0.5.2/http_cache.ts": "407135eaf2802809ed373c230d57da7ef8dff923c4abf205410b9b99886491fd", + "https://deno.land/x/deno_cache@0.5.2/lib/deno_cache_dir.generated.js": "18b6526d0c50791a73dd0eb894e99de1ac05ee79dcbd53298ff5b5b6b0757fe6", + "https://deno.land/x/deno_cache@0.5.2/lib/snippets/deno_cache_dir-77bed54ace8005e0/fs.js": "cbe3a976ed63c72c7cb34ef845c27013033a3b11f9d8d3e2c4aa5dda2c0c7af6", + "https://deno.land/x/deno_cache@0.5.2/mod.ts": "0b4d071ad095128bdc2b1bc6e5d2095222dcbae08287261690ee9757e6300db6", + "https://deno.land/x/deno_cache@0.5.2/util.ts": "f3f5a0cfc60051f09162942fb0ee87a0e27b11a12aec4c22076e3006be4cc1e2", + "https://deno.land/x/deno_graph@0.26.0/lib/deno_graph.generated.js": "2f7ca85b2ceb80ec4b3d1b7f3a504956083258610c7b9a1246238c5b7c68f62d", + "https://deno.land/x/deno_graph@0.26.0/lib/loader.ts": "380e37e71d0649eb50176a9786795988fc3c47063a520a54b616d7727b0f8629", + "https://deno.land/x/deno_graph@0.26.0/lib/media_type.ts": "222626d524fa2f9ebcc0ec7c7a7d5dfc74cc401cc46790f7c5e0eab0b0787707", + "https://deno.land/x/deno_graph@0.26.0/lib/snippets/deno_graph-de651bc9c240ed8d/src/deno_apis.js": "41192baaa550a5c6a146280fae358cede917ae16ec4e4315be51bef6631ca892", + "https://deno.land/x/deno_graph@0.26.0/mod.ts": "11131ae166580a1c7fa8506ff553751465a81c263d94443f18f353d0c320bc14", + "https://deno.land/x/dir@1.5.1/data_local_dir/mod.ts": "91eb1c4bfadfbeda30171007bac6d85aadacd43224a5ed721bbe56bc64e9eb66", + "https://deno.land/x/emit@0.32.0/_utils.ts": "98412edc7aa29e77d592b54fbad00bdec1b05d0c25eb772a5f8edc9813e08d88", + "https://deno.land/x/emit@0.32.0/emit.generated.js": "8c8e1fed94f6b742042897312ad223fff0f5d3c92317ff9970a5b7e8b2bd9441", + "https://deno.land/x/emit@0.32.0/mod.ts": "326c48e48f3f3c83c11b089aec803e6270bcd64493f250aeb56f46f6960a8458", + "https://deno.land/x/emit@0.40.0/_utils.ts": "98412edc7aa29e77d592b54fbad00bdec1b05d0c25eb772a5f8edc9813e08d88", + "https://deno.land/x/emit@0.40.0/emit.generated.js": "65621c730ae9e4e818a3f83913562101dc9a371befbdb44d81e09a1532af5089", + "https://deno.land/x/emit@0.40.0/mod.ts": "04b1818a60d6f85ca991bc4369634ea55d51388c4154b0100dfbe3c9684e2318", "https://deno.land/x/totp@1.0.1/base32.ts": "6c675077ab4eb286f5befdd469935fe37e7c8ecc8a23ca0fb5e6e2b9361c5329", "https://deno.land/x/totp@1.0.1/mod.ts": "8295580c3cadd6d9a0f7c52b997cad223e18170c19a7d240745b9e7fa0dfc64b", - "https://deno.land/x/totp@1.0.1/totp.ts": "5957de480d854f258aeed1f3acea59aabb677d7cb7b5fe48620857035f0cd344" + "https://deno.land/x/totp@1.0.1/totp.ts": "5957de480d854f258aeed1f3acea59aabb677d7cb7b5fe48620857035f0cd344", + "https://deno.land/x/wasmbuild@0.15.1/cache.ts": "9d01b5cb24e7f2a942bbd8d14b093751fa690a6cde8e21709ddc97667e6669ed", + "https://deno.land/x/wasmbuild@0.15.1/loader.ts": "8c2fc10e21678e42f84c5135d8ab6ab7dc92424c3f05d2354896a29ccfd02a63", + "https://esm.sh/react-dom@18.2.0": "f6b0d147f7c364819144f06e24839ed89354ce25d8b6608de57871130b19a0b2", + "https://esm.sh/react-dom@18.3.1/client": "3e23a449c16029111f8fa64809dd83ea5f896a4065f956b6b6d87998854efa1e", + "https://esm.sh/react-dom@18.3.1/server": "90e374c5323303d5315c780b19e5d6297ec5a569f9cee1df28ee1030dd23af9c", + "https://esm.sh/react@18.2.0": "8950a34a030620fce8349d6bd3913b3bdb186c5ec7968fa5ba4d054e22d78e6c", + "https://esm.sh/react@18.3.1": "52480d4c00855e4f76843caa4f2818eb001671523740cbf064cbd108721c29c8", + "https://esm.sh/stable/react@18.2.0/denonext/react.mjs": "3c4f23bcfc53b256fcfaf6f834fa9f584c3bb7be667b2682c6cb6ba8ef88f8e6", + "https://esm.sh/stable/react@18.3.1/denonext/react.mjs": "fc048ffc55366baf7669519127d186761db72046e2bebf35fe8d0de3964defa3", + "https://esm.sh/v135/react-dom@18.2.0/denonext/react-dom.mjs": "8191fc377ea7083cca5640699c4abd75de033089eb932799e29aa04bb136838f", + "https://esm.sh/v135/react-dom@18.3.1/denonext/client.js": "51910a60c05a5614b9dbec634d8594f74a4300fed2023dbdf1f8ea2a41a82b96", + "https://esm.sh/v135/react-dom@18.3.1/denonext/react-dom.mjs": "0c4ad76e514ad1c9d8987d49679c5f2a6299b34c1b7fbf10a5da056ae4a0963f", + "https://esm.sh/v135/react-dom@18.3.1/denonext/server.js": "b4db56f16b45002b5e9b127a9938ab45b12f39825161dffe875920510c524878", + "https://esm.sh/v135/scheduler@0.23.0/denonext/scheduler.mjs": "cdbc6d2823e2c6fffcb14501146ff2602a38c48d3c9dd9268f308e833ede2b49", + "https://esm.sh/v135/scheduler@0.23.2/denonext/scheduler.mjs": "dc96e5be52b14a40ce36295d938d5211e520c4da3183fe2ad4283ed103747d82" } } diff --git a/dist.json b/dist.json new file mode 100644 index 00000000..045fd781 --- /dev/null +++ b/dist.json @@ -0,0 +1 @@ +{"code":"var B = Object.create;\nvar E = Object.defineProperty;\nvar H = Object.getOwnPropertyDescriptor;\nvar W = Object.getOwnPropertyNames;\nvar Y = Object.getPrototypeOf, G = Object.prototype.hasOwnProperty;\nvar x = (e, t)=>()=>(t || e((t = {\n exports: {}\n }).exports, t), t.exports), J = (e, t)=>{\n for(var r in t)E(e, r, {\n get: t[r],\n enumerable: !0\n });\n}, S = (e, t, r, u)=>{\n if (t && typeof t == \"object\" || typeof t == \"function\") for (let o of W(t))!G.call(e, o) && o !== r && E(e, o, {\n get: ()=>t[o],\n enumerable: !(u = H(t, o)) || u.enumerable\n });\n return e;\n}, y = (e, t, r)=>(S(e, t, \"default\"), r && S(r, t, \"default\")), O = (e, t, r)=>(r = e != null ? B(Y(e)) : {}, S(t || !e || !e.__esModule ? E(r, \"default\", {\n value: e,\n enumerable: !0\n }) : r, e));\nvar q = x((n)=>{\n \"use strict\";\n var _ = Symbol.for(\"react.element\"), K = Symbol.for(\"react.portal\"), Q = Symbol.for(\"react.fragment\"), X = Symbol.for(\"react.strict_mode\"), Z = Symbol.for(\"react.profiler\"), ee = Symbol.for(\"react.provider\"), te = Symbol.for(\"react.context\"), re = Symbol.for(\"react.forward_ref\"), ne = Symbol.for(\"react.suspense\"), oe = Symbol.for(\"react.memo\"), ue = Symbol.for(\"react.lazy\"), j = Symbol.iterator;\n function se(e) {\n return e === null || typeof e != \"object\" ? null : (e = j && e[j] || e[\"@@iterator\"], typeof e == \"function\" ? e : null);\n }\n var P = {\n isMounted: function() {\n return !1;\n },\n enqueueForceUpdate: function() {},\n enqueueReplaceState: function() {},\n enqueueSetState: function() {}\n }, T = Object.assign, D = {};\n function d(e, t, r) {\n this.props = e, this.context = t, this.refs = D, this.updater = r || P;\n }\n d.prototype.isReactComponent = {};\n d.prototype.setState = function(e, t) {\n if (typeof e != \"object\" && typeof e != \"function\" && e != null) throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");\n this.updater.enqueueSetState(this, e, t, \"setState\");\n };\n d.prototype.forceUpdate = function(e) {\n this.updater.enqueueForceUpdate(this, e, \"forceUpdate\");\n };\n function V() {}\n V.prototype = d.prototype;\n function C(e, t, r) {\n this.props = e, this.context = t, this.refs = D, this.updater = r || P;\n }\n var k = C.prototype = new V;\n k.constructor = C;\n T(k, d.prototype);\n k.isPureReactComponent = !0;\n var I = Array.isArray, L = Object.prototype.hasOwnProperty, w = {\n current: null\n }, N = {\n key: !0,\n ref: !0,\n __self: !0,\n __source: !0\n };\n function F(e, t, r) {\n var u, o = {}, c = null, f = null;\n if (t != null) for(u in t.ref !== void 0 && (f = t.ref), t.key !== void 0 && (c = \"\" + t.key), t)L.call(t, u) && !N.hasOwnProperty(u) && (o[u] = t[u]);\n var i = arguments.length - 2;\n if (i === 1) o.children = r;\n else if (1 < i) {\n for(var s = Array(i), a = 0; a < i; a++)s[a] = arguments[a + 2];\n o.children = s;\n }\n if (e && e.defaultProps) for(u in i = e.defaultProps, i)o[u] === void 0 && (o[u] = i[u]);\n return {\n $$typeof: _,\n type: e,\n key: c,\n ref: f,\n props: o,\n _owner: w.current\n };\n }\n function ce(e, t) {\n return {\n $$typeof: _,\n type: e.type,\n key: t,\n ref: e.ref,\n props: e.props,\n _owner: e._owner\n };\n }\n function b(e) {\n return typeof e == \"object\" && e !== null && e.$$typeof === _;\n }\n function ie(e) {\n var t = {\n \"=\": \"=0\",\n \":\": \"=2\"\n };\n return \"$\" + e.replace(/[=:]/g, function(r) {\n return t[r];\n });\n }\n var g = /\\/+/g;\n function R(e, t) {\n return typeof e == \"object\" && e !== null && e.key != null ? ie(\"\" + e.key) : t.toString(36);\n }\n function h(e, t, r, u, o) {\n var c = typeof e;\n (c === \"undefined\" || c === \"boolean\") && (e = null);\n var f = !1;\n if (e === null) f = !0;\n else switch(c){\n case \"string\":\n case \"number\":\n f = !0;\n break;\n case \"object\":\n switch(e.$$typeof){\n case _:\n case K:\n f = !0;\n }\n }\n if (f) return f = e, o = o(f), e = u === \"\" ? \".\" + R(f, 0) : u, I(o) ? (r = \"\", e != null && (r = e.replace(g, \"$&/\") + \"/\"), h(o, t, r, \"\", function(a) {\n return a;\n })) : o != null && (b(o) && (o = ce(o, r + (!o.key || f && f.key === o.key ? \"\" : (\"\" + o.key).replace(g, \"$&/\") + \"/\") + e)), t.push(o)), 1;\n if (f = 0, u = u === \"\" ? \".\" : u + \":\", I(e)) for(var i = 0; i < e.length; i++){\n c = e[i];\n var s = u + R(c, i);\n f += h(c, t, r, s, o);\n }\n else if (s = se(e), typeof s == \"function\") for(e = s.call(e), i = 0; !(c = e.next()).done;)c = c.value, s = u + R(c, i++), f += h(c, t, r, s, o);\n else if (c === \"object\") throw t = String(e), Error(\"Objects are not valid as a React child (found: \" + (t === \"[object Object]\" ? \"object with keys {\" + Object.keys(e).join(\", \") + \"}\" : t) + \"). If you meant to render a collection of children, use an array instead.\");\n return f;\n }\n function m(e, t, r) {\n if (e == null) return e;\n var u = [], o = 0;\n return h(e, u, \"\", \"\", function(c) {\n return t.call(r, c, o++);\n }), u;\n }\n function fe(e) {\n if (e._status === -1) {\n var t = e._result;\n t = t(), t.then(function(r) {\n (e._status === 0 || e._status === -1) && (e._status = 1, e._result = r);\n }, function(r) {\n (e._status === 0 || e._status === -1) && (e._status = 2, e._result = r);\n }), e._status === -1 && (e._status = 0, e._result = t);\n }\n if (e._status === 1) return e._result.default;\n throw e._result;\n }\n var l = {\n current: null\n }, v = {\n transition: null\n }, le = {\n ReactCurrentDispatcher: l,\n ReactCurrentBatchConfig: v,\n ReactCurrentOwner: w\n };\n function U() {\n throw Error(\"act(...) is not supported in production builds of React.\");\n }\n n.Children = {\n map: m,\n forEach: function(e, t, r) {\n m(e, function() {\n t.apply(this, arguments);\n }, r);\n },\n count: function(e) {\n var t = 0;\n return m(e, function() {\n t++;\n }), t;\n },\n toArray: function(e) {\n return m(e, function(t) {\n return t;\n }) || [];\n },\n only: function(e) {\n if (!b(e)) throw Error(\"React.Children.only expected to receive a single React element child.\");\n return e;\n }\n };\n n.Component = d;\n n.Fragment = Q;\n n.Profiler = Z;\n n.PureComponent = C;\n n.StrictMode = X;\n n.Suspense = ne;\n n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = le;\n n.act = U;\n n.cloneElement = function(e, t, r) {\n if (e == null) throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \" + e + \".\");\n var u = T({}, e.props), o = e.key, c = e.ref, f = e._owner;\n if (t != null) {\n if (t.ref !== void 0 && (c = t.ref, f = w.current), t.key !== void 0 && (o = \"\" + t.key), e.type && e.type.defaultProps) var i = e.type.defaultProps;\n for(s in t)L.call(t, s) && !N.hasOwnProperty(s) && (u[s] = t[s] === void 0 && i !== void 0 ? i[s] : t[s]);\n }\n var s = arguments.length - 2;\n if (s === 1) u.children = r;\n else if (1 < s) {\n i = Array(s);\n for(var a = 0; a < s; a++)i[a] = arguments[a + 2];\n u.children = i;\n }\n return {\n $$typeof: _,\n type: e.type,\n key: o,\n ref: c,\n props: u,\n _owner: f\n };\n };\n n.createContext = function(e) {\n return e = {\n $$typeof: te,\n _currentValue: e,\n _currentValue2: e,\n _threadCount: 0,\n Provider: null,\n Consumer: null,\n _defaultValue: null,\n _globalName: null\n }, e.Provider = {\n $$typeof: ee,\n _context: e\n }, e.Consumer = e;\n };\n n.createElement = F;\n n.createFactory = function(e) {\n var t = F.bind(null, e);\n return t.type = e, t;\n };\n n.createRef = function() {\n return {\n current: null\n };\n };\n n.forwardRef = function(e) {\n return {\n $$typeof: re,\n render: e\n };\n };\n n.isValidElement = b;\n n.lazy = function(e) {\n return {\n $$typeof: ue,\n _payload: {\n _status: -1,\n _result: e\n },\n _init: fe\n };\n };\n n.memo = function(e, t) {\n return {\n $$typeof: oe,\n type: e,\n compare: t === void 0 ? null : t\n };\n };\n n.startTransition = function(e) {\n var t = v.transition;\n v.transition = {};\n try {\n e();\n } finally{\n v.transition = t;\n }\n };\n n.unstable_act = U;\n n.useCallback = function(e, t) {\n return l.current.useCallback(e, t);\n };\n n.useContext = function(e) {\n return l.current.useContext(e);\n };\n n.useDebugValue = function() {};\n n.useDeferredValue = function(e) {\n return l.current.useDeferredValue(e);\n };\n n.useEffect = function(e, t) {\n return l.current.useEffect(e, t);\n };\n n.useId = function() {\n return l.current.useId();\n };\n n.useImperativeHandle = function(e, t, r) {\n return l.current.useImperativeHandle(e, t, r);\n };\n n.useInsertionEffect = function(e, t) {\n return l.current.useInsertionEffect(e, t);\n };\n n.useLayoutEffect = function(e, t) {\n return l.current.useLayoutEffect(e, t);\n };\n n.useMemo = function(e, t) {\n return l.current.useMemo(e, t);\n };\n n.useReducer = function(e, t, r) {\n return l.current.useReducer(e, t, r);\n };\n n.useRef = function(e) {\n return l.current.useRef(e);\n };\n n.useState = function(e) {\n return l.current.useState(e);\n };\n n.useSyncExternalStore = function(e, t, r) {\n return l.current.useSyncExternalStore(e, t, r);\n };\n n.useTransition = function() {\n return l.current.useTransition();\n };\n n.version = \"18.3.1\";\n});\nvar $ = x((Qe, A)=>{\n \"use strict\";\n A.exports = q();\n});\nvar p = {};\nJ(p, {\n Children: ()=>ae,\n Component: ()=>pe,\n Fragment: ()=>ye,\n Profiler: ()=>de,\n PureComponent: ()=>_e,\n StrictMode: ()=>me,\n Suspense: ()=>he,\n __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: ()=>ve,\n act: ()=>Se,\n cloneElement: ()=>Ee,\n createContext: ()=>Re,\n createElement: ()=>Ce,\n createFactory: ()=>ke,\n createRef: ()=>we,\n default: ()=>Ge,\n forwardRef: ()=>be,\n isValidElement: ()=>$e,\n lazy: ()=>xe,\n memo: ()=>Oe,\n startTransition: ()=>je,\n unstable_act: ()=>Ie,\n useCallback: ()=>ge,\n useContext: ()=>Pe,\n useDebugValue: ()=>Te,\n useDeferredValue: ()=>De,\n useEffect: ()=>Ve,\n useId: ()=>Le,\n useImperativeHandle: ()=>Ne,\n useInsertionEffect: ()=>Fe,\n useLayoutEffect: ()=>Ue,\n useMemo: ()=>qe,\n useReducer: ()=>Ae,\n useRef: ()=>Me,\n useState: ()=>ze,\n useSyncExternalStore: ()=>Be,\n useTransition: ()=>He,\n version: ()=>We\n});\nvar z = O($());\ny(p, O($()));\nvar { Children: ae, Component: pe, Fragment: ye, Profiler: de, PureComponent: _e, StrictMode: me, Suspense: he, __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: ve, act: Se, cloneElement: Ee, createContext: Re, createElement: Ce, createFactory: ke, createRef: we, forwardRef: be, isValidElement: $e, lazy: xe, memo: Oe, startTransition: je, unstable_act: Ie, useCallback: ge, useContext: Pe, useDebugValue: Te, useDeferredValue: De, useEffect: Ve, useId: Le, useImperativeHandle: Ne, useInsertionEffect: Fe, useLayoutEffect: Ue, useMemo: qe, useReducer: Ae, useRef: Me, useState: ze, useSyncExternalStore: Be, useTransition: He, version: We } = z, { default: M, ...Ye } = z, Ge = M !== void 0 ? M : Ye;\nconst mod = {\n Children: ae,\n Component: pe,\n Fragment: ye,\n Profiler: de,\n PureComponent: _e,\n StrictMode: me,\n Suspense: he,\n __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: ve,\n act: Se,\n cloneElement: Ee,\n createContext: Re,\n createElement: Ce,\n createFactory: ke,\n createRef: we,\n default: Ge,\n forwardRef: be,\n isValidElement: $e,\n lazy: xe,\n memo: Oe,\n startTransition: je,\n unstable_act: Ie,\n useCallback: ge,\n useContext: Pe,\n useDebugValue: Te,\n useDeferredValue: De,\n useEffect: Ve,\n useId: Le,\n useImperativeHandle: Ne,\n useInsertionEffect: Fe,\n useLayoutEffect: Ue,\n useMemo: qe,\n useReducer: Ae,\n useRef: Me,\n useState: ze,\n useSyncExternalStore: Be,\n useTransition: He,\n version: We\n};\nvar __setImmediate$ = (cb, ...args)=>setTimeout(cb, 0, ...args);\nvar ee = Object.create;\nvar T = Object.defineProperty;\nvar ne = Object.getOwnPropertyDescriptor;\nvar te = Object.getOwnPropertyNames;\nvar re = Object.getPrototypeOf, le = Object.prototype.hasOwnProperty;\nvar W1 = (e, n)=>()=>(n || e((n = {\n exports: {}\n }).exports, n), n.exports), ie = (e, n)=>{\n for(var t in n)T(e, t, {\n get: n[t],\n enumerable: !0\n });\n}, E1 = (e, n, t, l)=>{\n if (n && typeof n == \"object\" || typeof n == \"function\") for (let i of te(n))!le.call(e, i) && i !== t && T(e, i, {\n get: ()=>n[i],\n enumerable: !(l = ne(n, i)) || l.enumerable\n });\n return e;\n}, d = (e, n, t)=>(E1(e, n, \"default\"), t && E1(t, n, \"default\")), Y1 = (e, n, t)=>(t = e != null ? ee(re(e)) : {}, E1(n || !e || !e.__esModule ? T(t, \"default\", {\n value: e,\n enumerable: !0\n }) : t, e));\nvar U = W1((r)=>{\n \"use strict\";\n function M(e, n) {\n var t = e.length;\n e.push(n);\n e: for(; 0 < t;){\n var l = t - 1 >>> 1, i = e[l];\n if (0 < k(i, n)) e[l] = n, e[t] = i, t = l;\n else break e;\n }\n }\n function o(e) {\n return e.length === 0 ? null : e[0];\n }\n function w(e) {\n if (e.length === 0) return null;\n var n = e[0], t = e.pop();\n if (t !== n) {\n e[0] = t;\n e: for(var l = 0, i = e.length, g = i >>> 1; l < g;){\n var b = 2 * (l + 1) - 1, C = e[b], _ = b + 1, h = e[_];\n if (0 > k(C, t)) _ < i && 0 > k(h, C) ? (e[l] = h, e[_] = t, l = _) : (e[l] = C, e[b] = t, l = b);\n else if (_ < i && 0 > k(h, t)) e[l] = h, e[_] = t, l = _;\n else break e;\n }\n }\n return n;\n }\n function k(e, n) {\n var t = e.sortIndex - n.sortIndex;\n return t !== 0 ? t : e.id - n.id;\n }\n typeof performance == \"object\" && typeof performance.now == \"function\" ? (z = performance, r.unstable_now = function() {\n return z.now();\n }) : (L = Date, A = L.now(), r.unstable_now = function() {\n return L.now() - A;\n });\n var z, L, A, s = [], c = [], ue = 1, a = null, u = 3, x = !1, p = !1, y = !1, J = typeof setTimeout == \"function\" ? setTimeout : null, K = typeof clearTimeout == \"function\" ? clearTimeout : null, G = typeof __setImmediate$ < \"u\" ? __setImmediate$ : null;\n typeof navigator < \"u\" && navigator.scheduling !== void 0 && navigator.scheduling.isInputPending !== void 0 && navigator.scheduling.isInputPending.bind(navigator.scheduling);\n function j(e) {\n for(var n = o(c); n !== null;){\n if (n.callback === null) w(c);\n else if (n.startTime <= e) w(c), n.sortIndex = n.expirationTime, M(s, n);\n else break;\n n = o(c);\n }\n }\n function R(e) {\n if (y = !1, j(e), !p) if (o(s) !== null) p = !0, D(B);\n else {\n var n = o(c);\n n !== null && q(R, n.startTime - e);\n }\n }\n function B(e, n) {\n p = !1, y && (y = !1, K(m), m = -1), x = !0;\n var t = u;\n try {\n for(j(n), a = o(s); a !== null && (!(a.expirationTime > n) || e && !V());){\n var l = a.callback;\n if (typeof l == \"function\") {\n a.callback = null, u = a.priorityLevel;\n var i = l(a.expirationTime <= n);\n n = r.unstable_now(), typeof i == \"function\" ? a.callback = i : a === o(s) && w(s), j(n);\n } else w(s);\n a = o(s);\n }\n if (a !== null) var g = !0;\n else {\n var b = o(c);\n b !== null && q(R, b.startTime - n), g = !1;\n }\n return g;\n } finally{\n a = null, u = t, x = !1;\n }\n }\n var I = !1, P = null, m = -1, Q = 5, S = -1;\n function V() {\n return !(r.unstable_now() - S < Q);\n }\n function N() {\n if (P !== null) {\n var e = r.unstable_now();\n S = e;\n var n = !0;\n try {\n n = P(!0, e);\n } finally{\n n ? v() : (I = !1, P = null);\n }\n } else I = !1;\n }\n var v;\n typeof G == \"function\" ? v = function() {\n G(N);\n } : typeof MessageChannel < \"u\" ? (F = new MessageChannel, H = F.port2, F.port1.onmessage = N, v = function() {\n H.postMessage(null);\n }) : v = function() {\n J(N, 0);\n };\n var F, H;\n function D(e) {\n P = e, I || (I = !0, v());\n }\n function q(e, n) {\n m = J(function() {\n e(r.unstable_now());\n }, n);\n }\n r.unstable_IdlePriority = 5;\n r.unstable_ImmediatePriority = 1;\n r.unstable_LowPriority = 4;\n r.unstable_NormalPriority = 3;\n r.unstable_Profiling = null;\n r.unstable_UserBlockingPriority = 2;\n r.unstable_cancelCallback = function(e) {\n e.callback = null;\n };\n r.unstable_continueExecution = function() {\n p || x || (p = !0, D(B));\n };\n r.unstable_forceFrameRate = function(e) {\n 0 > e || 125 < e ? console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\") : Q = 0 < e ? Math.floor(1e3 / e) : 5;\n };\n r.unstable_getCurrentPriorityLevel = function() {\n return u;\n };\n r.unstable_getFirstCallbackNode = function() {\n return o(s);\n };\n r.unstable_next = function(e) {\n switch(u){\n case 1:\n case 2:\n case 3:\n var n = 3;\n break;\n default:\n n = u;\n }\n var t = u;\n u = n;\n try {\n return e();\n } finally{\n u = t;\n }\n };\n r.unstable_pauseExecution = function() {};\n r.unstable_requestPaint = function() {};\n r.unstable_runWithPriority = function(e, n) {\n switch(e){\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n break;\n default:\n e = 3;\n }\n var t = u;\n u = e;\n try {\n return n();\n } finally{\n u = t;\n }\n };\n r.unstable_scheduleCallback = function(e, n, t) {\n var l = r.unstable_now();\n switch(typeof t == \"object\" && t !== null ? (t = t.delay, t = typeof t == \"number\" && 0 < t ? l + t : l) : t = l, e){\n case 1:\n var i = -1;\n break;\n case 2:\n i = 250;\n break;\n case 5:\n i = 1073741823;\n break;\n case 4:\n i = 1e4;\n break;\n default:\n i = 5e3;\n }\n return i = t + i, e = {\n id: ue++,\n callback: n,\n priorityLevel: e,\n startTime: t,\n expirationTime: i,\n sortIndex: -1\n }, t > l ? (e.sortIndex = t, M(c, e), o(s) === null && e === o(c) && (y ? (K(m), m = -1) : y = !0, q(R, t - l))) : (e.sortIndex = i, M(s, e), p || x || (p = !0, D(B))), e;\n };\n r.unstable_shouldYield = V;\n r.unstable_wrapCallback = function(e) {\n var n = u;\n return function() {\n var t = u;\n u = n;\n try {\n return e.apply(this, arguments);\n } finally{\n u = t;\n }\n };\n };\n});\nvar O1 = W1((Ne, X)=>{\n \"use strict\";\n X.exports = U();\n});\nvar f = {};\nie(f, {\n default: ()=>Ee1,\n unstable_IdlePriority: ()=>oe,\n unstable_ImmediatePriority: ()=>se,\n unstable_LowPriority: ()=>ce,\n unstable_NormalPriority: ()=>fe,\n unstable_Profiling: ()=>be1,\n unstable_UserBlockingPriority: ()=>_e1,\n unstable_cancelCallback: ()=>de1,\n unstable_continueExecution: ()=>pe1,\n unstable_forceFrameRate: ()=>ve1,\n unstable_getCurrentPriorityLevel: ()=>ye1,\n unstable_getFirstCallbackNode: ()=>me1,\n unstable_next: ()=>ge1,\n unstable_now: ()=>ae1,\n unstable_pauseExecution: ()=>he1,\n unstable_requestPaint: ()=>ke1,\n unstable_runWithPriority: ()=>Pe1,\n unstable_scheduleCallback: ()=>we1,\n unstable_shouldYield: ()=>xe1,\n unstable_wrapCallback: ()=>Ie1\n});\nvar $1 = Y1(O1());\nd(f, Y1(O1()));\nvar { unstable_now: ae1, unstable_IdlePriority: oe, unstable_ImmediatePriority: se, unstable_LowPriority: ce, unstable_NormalPriority: fe, unstable_Profiling: be1, unstable_UserBlockingPriority: _e1, unstable_cancelCallback: de1, unstable_continueExecution: pe1, unstable_forceFrameRate: ve1, unstable_getCurrentPriorityLevel: ye1, unstable_getFirstCallbackNode: me1, unstable_next: ge1, unstable_pauseExecution: he1, unstable_requestPaint: ke1, unstable_runWithPriority: Pe1, unstable_scheduleCallback: we1, unstable_shouldYield: xe1, unstable_wrapCallback: Ie1 } = $1, { default: Z, ...Ce1 } = $1, Ee1 = Z !== void 0 ? Z : Ce1;\nconst mod1 = {\n default: Ee1,\n unstable_IdlePriority: oe,\n unstable_ImmediatePriority: se,\n unstable_LowPriority: ce,\n unstable_NormalPriority: fe,\n unstable_Profiling: be1,\n unstable_UserBlockingPriority: _e1,\n unstable_cancelCallback: de1,\n unstable_continueExecution: pe1,\n unstable_forceFrameRate: ve1,\n unstable_getCurrentPriorityLevel: ye1,\n unstable_getFirstCallbackNode: me1,\n unstable_next: ge1,\n unstable_now: ae1,\n unstable_pauseExecution: he1,\n unstable_requestPaint: ke1,\n unstable_runWithPriority: Pe1,\n unstable_scheduleCallback: we1,\n unstable_shouldYield: xe1,\n unstable_wrapCallback: Ie1\n};\nvar require = (n)=>{\n const e = (m)=>typeof m.default < \"u\" ? m.default : m;\n switch(n){\n case \"react\":\n return e(mod);\n case \"scheduler\":\n return e(mod1);\n default:\n throw new Error(\"module \\\"\" + n + \"\\\" not found\");\n }\n};\nvar ka = Object.create;\nvar tl = Object.defineProperty;\nvar Ea = Object.getOwnPropertyDescriptor;\nvar Ca = Object.getOwnPropertyNames;\nvar xa = Object.getPrototypeOf, Na = Object.prototype.hasOwnProperty;\nvar su = ((e)=>typeof require < \"u\" ? require : typeof Proxy < \"u\" ? new Proxy(e, {\n get: (n, t)=>(typeof require < \"u\" ? require : n)[t]\n }) : e)(function(e) {\n if (typeof require < \"u\") return require.apply(this, arguments);\n throw Error('Dynamic require of \"' + e + '\" is not supported');\n});\nvar au = (e, n)=>()=>(n || e((n = {\n exports: {}\n }).exports, n), n.exports), _a = (e, n)=>{\n for(var t in n)tl(e, t, {\n get: n[t],\n enumerable: !0\n });\n}, nl = (e, n, t, r)=>{\n if (n && typeof n == \"object\" || typeof n == \"function\") for (let l of Ca(n))!Na.call(e, l) && l !== t && tl(e, l, {\n get: ()=>n[l],\n enumerable: !(r = Ea(n, l)) || r.enumerable\n });\n return e;\n}, an = (e, n, t)=>(nl(e, n, \"default\"), t && nl(t, n, \"default\")), cu = (e, n, t)=>(t = e != null ? ka(xa(e)) : {}, nl(n || !e || !e.__esModule ? tl(t, \"default\", {\n value: e,\n enumerable: !0\n }) : t, e));\nvar ha = au((fe)=>{\n \"use strict\";\n var za = su(\"react\"), ae = su(\"scheduler\");\n function v(e) {\n for(var n = \"https://reactjs.org/docs/error-decoder.html?invariant=\" + e, t = 1; t < arguments.length; t++)n += \"&args[]=\" + encodeURIComponent(arguments[t]);\n return \"Minified React error #\" + e + \"; visit \" + n + \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\";\n }\n var go = new Set, St = {};\n function En(e, n) {\n Qn(e, n), Qn(e + \"Capture\", n);\n }\n function Qn(e, n) {\n for(St[e] = n, e = 0; e < n.length; e++)go.add(n[e]);\n }\n var Fe = !(typeof window > \"u\" || typeof window.document > \"u\" || typeof window.document.createElement > \"u\"), Nl = Object.prototype.hasOwnProperty, Pa = /^[: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]*$/, fu = {}, du = {};\n function La(e) {\n return Nl.call(du, e) ? !0 : Nl.call(fu, e) ? !1 : Pa.test(e) ? du[e] = !0 : (fu[e] = !0, !1);\n }\n function Ta(e, n, t, r) {\n if (t !== null && t.type === 0) return !1;\n switch(typeof n){\n case \"function\":\n case \"symbol\":\n return !0;\n case \"boolean\":\n return r ? !1 : t !== null ? !t.acceptsBooleans : (e = e.toLowerCase().slice(0, 5), e !== \"data-\" && e !== \"aria-\");\n default:\n return !1;\n }\n }\n function Ma(e, n, t, r) {\n if (n === null || typeof n > \"u\" || Ta(e, n, t, r)) return !0;\n if (r) return !1;\n if (t !== null) switch(t.type){\n case 3:\n return !n;\n case 4:\n return n === !1;\n case 5:\n return isNaN(n);\n case 6:\n return isNaN(n) || 1 > n;\n }\n return !1;\n }\n function ee(e, n, t, r, l, i, u) {\n this.acceptsBooleans = n === 2 || n === 3 || n === 4, this.attributeName = r, this.attributeNamespace = l, this.mustUseProperty = t, this.propertyName = e, this.type = n, this.sanitizeURL = i, this.removeEmptyString = u;\n }\n var Y = {};\n \"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(e) {\n Y[e] = new ee(e, 0, !1, e, null, !1, !1);\n });\n [\n [\n \"acceptCharset\",\n \"accept-charset\"\n ],\n [\n \"className\",\n \"class\"\n ],\n [\n \"htmlFor\",\n \"for\"\n ],\n [\n \"httpEquiv\",\n \"http-equiv\"\n ]\n ].forEach(function(e) {\n var n = e[0];\n Y[n] = new ee(n, 1, !1, e[1], null, !1, !1);\n });\n [\n \"contentEditable\",\n \"draggable\",\n \"spellCheck\",\n \"value\"\n ].forEach(function(e) {\n Y[e] = new ee(e, 2, !1, e.toLowerCase(), null, !1, !1);\n });\n [\n \"autoReverse\",\n \"externalResourcesRequired\",\n \"focusable\",\n \"preserveAlpha\"\n ].forEach(function(e) {\n Y[e] = new ee(e, 2, !1, e, null, !1, !1);\n });\n \"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(e) {\n Y[e] = new ee(e, 3, !1, e.toLowerCase(), null, !1, !1);\n });\n [\n \"checked\",\n \"multiple\",\n \"muted\",\n \"selected\"\n ].forEach(function(e) {\n Y[e] = new ee(e, 3, !0, e, null, !1, !1);\n });\n [\n \"capture\",\n \"download\"\n ].forEach(function(e) {\n Y[e] = new ee(e, 4, !1, e, null, !1, !1);\n });\n [\n \"cols\",\n \"rows\",\n \"size\",\n \"span\"\n ].forEach(function(e) {\n Y[e] = new ee(e, 6, !1, e, null, !1, !1);\n });\n [\n \"rowSpan\",\n \"start\"\n ].forEach(function(e) {\n Y[e] = new ee(e, 5, !1, e.toLowerCase(), null, !1, !1);\n });\n var yi = /[\\-:]([a-z])/g;\n function gi(e) {\n return e[1].toUpperCase();\n }\n \"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(e) {\n var n = e.replace(yi, gi);\n Y[n] = new ee(n, 1, !1, e, null, !1, !1);\n });\n \"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(e) {\n var n = e.replace(yi, gi);\n Y[n] = new ee(n, 1, !1, e, \"http://www.w3.org/1999/xlink\", !1, !1);\n });\n [\n \"xml:base\",\n \"xml:lang\",\n \"xml:space\"\n ].forEach(function(e) {\n var n = e.replace(yi, gi);\n Y[n] = new ee(n, 1, !1, e, \"http://www.w3.org/XML/1998/namespace\", !1, !1);\n });\n [\n \"tabIndex\",\n \"crossOrigin\"\n ].forEach(function(e) {\n Y[e] = new ee(e, 1, !1, e.toLowerCase(), null, !1, !1);\n });\n Y.xlinkHref = new ee(\"xlinkHref\", 1, !1, \"xlink:href\", \"http://www.w3.org/1999/xlink\", !0, !1);\n [\n \"src\",\n \"href\",\n \"action\",\n \"formAction\"\n ].forEach(function(e) {\n Y[e] = new ee(e, 1, !1, e.toLowerCase(), null, !0, !0);\n });\n function wi(e, n, t, r) {\n var l = Y.hasOwnProperty(n) ? Y[n] : null;\n (l !== null ? l.type !== 0 : r || !(2 < n.length) || n[0] !== \"o\" && n[0] !== \"O\" || n[1] !== \"n\" && n[1] !== \"N\") && (Ma(n, t, l, r) && (t = null), r || l === null ? La(n) && (t === null ? e.removeAttribute(n) : e.setAttribute(n, \"\" + t)) : l.mustUseProperty ? e[l.propertyName] = t === null ? l.type === 3 ? !1 : \"\" : t : (n = l.attributeName, r = l.attributeNamespace, t === null ? e.removeAttribute(n) : (l = l.type, t = l === 3 || l === 4 && t === !0 ? \"\" : \"\" + t, r ? e.setAttributeNS(r, n, t) : e.setAttribute(n, t))));\n }\n var Ve = za.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, Bt = Symbol.for(\"react.element\"), _n = Symbol.for(\"react.portal\"), zn = Symbol.for(\"react.fragment\"), Si = Symbol.for(\"react.strict_mode\"), _l = Symbol.for(\"react.profiler\"), wo = Symbol.for(\"react.provider\"), So = Symbol.for(\"react.context\"), ki = Symbol.for(\"react.forward_ref\"), zl = Symbol.for(\"react.suspense\"), Pl = Symbol.for(\"react.suspense_list\"), Ei = Symbol.for(\"react.memo\"), He = Symbol.for(\"react.lazy\");\n Symbol.for(\"react.scope\");\n Symbol.for(\"react.debug_trace_mode\");\n var ko = Symbol.for(\"react.offscreen\");\n Symbol.for(\"react.legacy_hidden\");\n Symbol.for(\"react.cache\");\n Symbol.for(\"react.tracing_marker\");\n var pu = Symbol.iterator;\n function bn(e) {\n return e === null || typeof e != \"object\" ? null : (e = pu && e[pu] || e[\"@@iterator\"], typeof e == \"function\" ? e : null);\n }\n var F = Object.assign, rl;\n function ot(e) {\n if (rl === void 0) try {\n throw Error();\n } catch (t) {\n var n = t.stack.trim().match(/\\n( *(at )?)/);\n rl = n && n[1] || \"\";\n }\n return `\n` + rl + e;\n }\n var ll = !1;\n function il(e, n) {\n if (!e || ll) return \"\";\n ll = !0;\n var t = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n try {\n if (n) if (n = function() {\n throw Error();\n }, Object.defineProperty(n.prototype, \"props\", {\n set: function() {\n throw Error();\n }\n }), typeof Reflect == \"object\" && Reflect.construct) {\n try {\n Reflect.construct(n, []);\n } catch (d) {\n var r = d;\n }\n Reflect.construct(e, [], n);\n } else {\n try {\n n.call();\n } catch (d) {\n r = d;\n }\n e.call(n.prototype);\n }\n else {\n try {\n throw Error();\n } catch (d) {\n r = d;\n }\n e();\n }\n } catch (d) {\n if (d && r && typeof d.stack == \"string\") {\n for(var l = d.stack.split(`\n`), i = r.stack.split(`\n`), u = l.length - 1, o = i.length - 1; 1 <= u && 0 <= o && l[u] !== i[o];)o--;\n for(; 1 <= u && 0 <= o; u--, o--)if (l[u] !== i[o]) {\n if (u !== 1 || o !== 1) do if (u--, o--, 0 > o || l[u] !== i[o]) {\n var s = `\n` + l[u].replace(\" at new \", \" at \");\n return e.displayName && s.includes(\"\") && (s = s.replace(\"\", e.displayName)), s;\n }\n while (1 <= u && 0 <= o)\n break;\n }\n }\n } finally{\n ll = !1, Error.prepareStackTrace = t;\n }\n return (e = e ? e.displayName || e.name : \"\") ? ot(e) : \"\";\n }\n function Da(e) {\n switch(e.tag){\n case 5:\n return ot(e.type);\n case 16:\n return ot(\"Lazy\");\n case 13:\n return ot(\"Suspense\");\n case 19:\n return ot(\"SuspenseList\");\n case 0:\n case 2:\n case 15:\n return e = il(e.type, !1), e;\n case 11:\n return e = il(e.type.render, !1), e;\n case 1:\n return e = il(e.type, !0), e;\n default:\n return \"\";\n }\n }\n function Ll(e) {\n if (e == null) return null;\n if (typeof e == \"function\") return e.displayName || e.name || null;\n if (typeof e == \"string\") return e;\n switch(e){\n case zn:\n return \"Fragment\";\n case _n:\n return \"Portal\";\n case _l:\n return \"Profiler\";\n case Si:\n return \"StrictMode\";\n case zl:\n return \"Suspense\";\n case Pl:\n return \"SuspenseList\";\n }\n if (typeof e == \"object\") switch(e.$$typeof){\n case So:\n return (e.displayName || \"Context\") + \".Consumer\";\n case wo:\n return (e._context.displayName || \"Context\") + \".Provider\";\n case ki:\n var n = e.render;\n return e = e.displayName, e || (e = n.displayName || n.name || \"\", e = e !== \"\" ? \"ForwardRef(\" + e + \")\" : \"ForwardRef\"), e;\n case Ei:\n return n = e.displayName || null, n !== null ? n : Ll(e.type) || \"Memo\";\n case He:\n n = e._payload, e = e._init;\n try {\n return Ll(e(n));\n } catch {}\n }\n return null;\n }\n function Oa(e) {\n var n = e.type;\n switch(e.tag){\n case 24:\n return \"Cache\";\n case 9:\n return (n.displayName || \"Context\") + \".Consumer\";\n case 10:\n return (n._context.displayName || \"Context\") + \".Provider\";\n case 18:\n return \"DehydratedFragment\";\n case 11:\n return e = n.render, e = e.displayName || e.name || \"\", n.displayName || (e !== \"\" ? \"ForwardRef(\" + e + \")\" : \"ForwardRef\");\n case 7:\n return \"Fragment\";\n case 5:\n return n;\n case 4:\n return \"Portal\";\n case 3:\n return \"Root\";\n case 6:\n return \"Text\";\n case 16:\n return Ll(n);\n case 8:\n return n === Si ? \"StrictMode\" : \"Mode\";\n case 22:\n return \"Offscreen\";\n case 12:\n return \"Profiler\";\n case 21:\n return \"Scope\";\n case 13:\n return \"Suspense\";\n case 19:\n return \"SuspenseList\";\n case 25:\n return \"TracingMarker\";\n case 1:\n case 0:\n case 17:\n case 2:\n case 14:\n case 15:\n if (typeof n == \"function\") return n.displayName || n.name || null;\n if (typeof n == \"string\") return n;\n }\n return null;\n }\n function tn(e) {\n switch(typeof e){\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"undefined\":\n return e;\n case \"object\":\n return e;\n default:\n return \"\";\n }\n }\n function Eo(e) {\n var n = e.type;\n return (e = e.nodeName) && e.toLowerCase() === \"input\" && (n === \"checkbox\" || n === \"radio\");\n }\n function Ra(e) {\n var n = Eo(e) ? \"checked\" : \"value\", t = Object.getOwnPropertyDescriptor(e.constructor.prototype, n), r = \"\" + e[n];\n if (!e.hasOwnProperty(n) && typeof t < \"u\" && typeof t.get == \"function\" && typeof t.set == \"function\") {\n var l = t.get, i = t.set;\n return Object.defineProperty(e, n, {\n configurable: !0,\n get: function() {\n return l.call(this);\n },\n set: function(u) {\n r = \"\" + u, i.call(this, u);\n }\n }), Object.defineProperty(e, n, {\n enumerable: t.enumerable\n }), {\n getValue: function() {\n return r;\n },\n setValue: function(u) {\n r = \"\" + u;\n },\n stopTracking: function() {\n e._valueTracker = null, delete e[n];\n }\n };\n }\n }\n function Ht(e) {\n e._valueTracker || (e._valueTracker = Ra(e));\n }\n function Co(e) {\n if (!e) return !1;\n var n = e._valueTracker;\n if (!n) return !0;\n var t = n.getValue(), r = \"\";\n return e && (r = Eo(e) ? e.checked ? \"true\" : \"false\" : e.value), e = r, e !== t ? (n.setValue(e), !0) : !1;\n }\n function vr(e) {\n if (e = e || (typeof document < \"u\" ? document : void 0), typeof e > \"u\") return null;\n try {\n return e.activeElement || e.body;\n } catch {\n return e.body;\n }\n }\n function Tl(e, n) {\n var t = n.checked;\n return F({}, n, {\n defaultChecked: void 0,\n defaultValue: void 0,\n value: void 0,\n checked: t ?? e._wrapperState.initialChecked\n });\n }\n function mu(e, n) {\n var t = n.defaultValue == null ? \"\" : n.defaultValue, r = n.checked != null ? n.checked : n.defaultChecked;\n t = tn(n.value != null ? n.value : t), e._wrapperState = {\n initialChecked: r,\n initialValue: t,\n controlled: n.type === \"checkbox\" || n.type === \"radio\" ? n.checked != null : n.value != null\n };\n }\n function xo(e, n) {\n n = n.checked, n != null && wi(e, \"checked\", n, !1);\n }\n function Ml(e, n) {\n xo(e, n);\n var t = tn(n.value), r = n.type;\n if (t != null) r === \"number\" ? (t === 0 && e.value === \"\" || e.value != t) && (e.value = \"\" + t) : e.value !== \"\" + t && (e.value = \"\" + t);\n else if (r === \"submit\" || r === \"reset\") {\n e.removeAttribute(\"value\");\n return;\n }\n n.hasOwnProperty(\"value\") ? Dl(e, n.type, t) : n.hasOwnProperty(\"defaultValue\") && Dl(e, n.type, tn(n.defaultValue)), n.checked == null && n.defaultChecked != null && (e.defaultChecked = !!n.defaultChecked);\n }\n function hu(e, n, t) {\n if (n.hasOwnProperty(\"value\") || n.hasOwnProperty(\"defaultValue\")) {\n var r = n.type;\n if (!(r !== \"submit\" && r !== \"reset\" || n.value !== void 0 && n.value !== null)) return;\n n = \"\" + e._wrapperState.initialValue, t || n === e.value || (e.value = n), e.defaultValue = n;\n }\n t = e.name, t !== \"\" && (e.name = \"\"), e.defaultChecked = !!e._wrapperState.initialChecked, t !== \"\" && (e.name = t);\n }\n function Dl(e, n, t) {\n (n !== \"number\" || vr(e.ownerDocument) !== e) && (t == null ? e.defaultValue = \"\" + e._wrapperState.initialValue : e.defaultValue !== \"\" + t && (e.defaultValue = \"\" + t));\n }\n var st = Array.isArray;\n function jn(e, n, t, r) {\n if (e = e.options, n) {\n n = {};\n for(var l = 0; l < t.length; l++)n[\"$\" + t[l]] = !0;\n for(t = 0; t < e.length; t++)l = n.hasOwnProperty(\"$\" + e[t].value), e[t].selected !== l && (e[t].selected = l), l && r && (e[t].defaultSelected = !0);\n } else {\n for(t = \"\" + tn(t), n = null, l = 0; l < e.length; l++){\n if (e[l].value === t) {\n e[l].selected = !0, r && (e[l].defaultSelected = !0);\n return;\n }\n n !== null || e[l].disabled || (n = e[l]);\n }\n n !== null && (n.selected = !0);\n }\n }\n function Ol(e, n) {\n if (n.dangerouslySetInnerHTML != null) throw Error(v(91));\n return F({}, n, {\n value: void 0,\n defaultValue: void 0,\n children: \"\" + e._wrapperState.initialValue\n });\n }\n function vu(e, n) {\n var t = n.value;\n if (t == null) {\n if (t = n.children, n = n.defaultValue, t != null) {\n if (n != null) throw Error(v(92));\n if (st(t)) {\n if (1 < t.length) throw Error(v(93));\n t = t[0];\n }\n n = t;\n }\n n == null && (n = \"\"), t = n;\n }\n e._wrapperState = {\n initialValue: tn(t)\n };\n }\n function No(e, n) {\n var t = tn(n.value), r = tn(n.defaultValue);\n t != null && (t = \"\" + t, t !== e.value && (e.value = t), n.defaultValue == null && e.defaultValue !== t && (e.defaultValue = t)), r != null && (e.defaultValue = \"\" + r);\n }\n function yu(e) {\n var n = e.textContent;\n n === e._wrapperState.initialValue && n !== \"\" && n !== null && (e.value = n);\n }\n function _o(e) {\n switch(e){\n case \"svg\":\n return \"http://www.w3.org/2000/svg\";\n case \"math\":\n return \"http://www.w3.org/1998/Math/MathML\";\n default:\n return \"http://www.w3.org/1999/xhtml\";\n }\n }\n function Rl(e, n) {\n return e == null || e === \"http://www.w3.org/1999/xhtml\" ? _o(n) : e === \"http://www.w3.org/2000/svg\" && n === \"foreignObject\" ? \"http://www.w3.org/1999/xhtml\" : e;\n }\n var Wt, zo = function(e) {\n return typeof MSApp < \"u\" && MSApp.execUnsafeLocalFunction ? function(n, t, r, l) {\n MSApp.execUnsafeLocalFunction(function() {\n return e(n, t, r, l);\n });\n } : e;\n }(function(e, n) {\n if (e.namespaceURI !== \"http://www.w3.org/2000/svg\" || \"innerHTML\" in e) e.innerHTML = n;\n else {\n for(Wt = Wt || document.createElement(\"div\"), Wt.innerHTML = \"\" + n.valueOf().toString() + \"\", n = Wt.firstChild; e.firstChild;)e.removeChild(e.firstChild);\n for(; n.firstChild;)e.appendChild(n.firstChild);\n }\n });\n function kt(e, n) {\n if (n) {\n var t = e.firstChild;\n if (t && t === e.lastChild && t.nodeType === 3) {\n t.nodeValue = n;\n return;\n }\n }\n e.textContent = n;\n }\n var ft = {\n animationIterationCount: !0,\n aspectRatio: !0,\n borderImageOutset: !0,\n borderImageSlice: !0,\n borderImageWidth: !0,\n boxFlex: !0,\n boxFlexGroup: !0,\n boxOrdinalGroup: !0,\n columnCount: !0,\n columns: !0,\n flex: !0,\n flexGrow: !0,\n flexPositive: !0,\n flexShrink: !0,\n flexNegative: !0,\n flexOrder: !0,\n gridArea: !0,\n gridRow: !0,\n gridRowEnd: !0,\n gridRowSpan: !0,\n gridRowStart: !0,\n gridColumn: !0,\n gridColumnEnd: !0,\n gridColumnSpan: !0,\n gridColumnStart: !0,\n fontWeight: !0,\n lineClamp: !0,\n lineHeight: !0,\n opacity: !0,\n order: !0,\n orphans: !0,\n tabSize: !0,\n widows: !0,\n zIndex: !0,\n zoom: !0,\n fillOpacity: !0,\n floodOpacity: !0,\n stopOpacity: !0,\n strokeDasharray: !0,\n strokeDashoffset: !0,\n strokeMiterlimit: !0,\n strokeOpacity: !0,\n strokeWidth: !0\n }, Fa = [\n \"Webkit\",\n \"ms\",\n \"Moz\",\n \"O\"\n ];\n Object.keys(ft).forEach(function(e) {\n Fa.forEach(function(n) {\n n = n + e.charAt(0).toUpperCase() + e.substring(1), ft[n] = ft[e];\n });\n });\n function Po(e, n, t) {\n return n == null || typeof n == \"boolean\" || n === \"\" ? \"\" : t || typeof n != \"number\" || n === 0 || ft.hasOwnProperty(e) && ft[e] ? (\"\" + n).trim() : n + \"px\";\n }\n function Lo(e, n) {\n e = e.style;\n for(var t in n)if (n.hasOwnProperty(t)) {\n var r = t.indexOf(\"--\") === 0, l = Po(t, n[t], r);\n t === \"float\" && (t = \"cssFloat\"), r ? e.setProperty(t, l) : e[t] = l;\n }\n }\n var Ia = F({\n menuitem: !0\n }, {\n area: !0,\n base: !0,\n br: !0,\n col: !0,\n embed: !0,\n hr: !0,\n img: !0,\n input: !0,\n keygen: !0,\n link: !0,\n meta: !0,\n param: !0,\n source: !0,\n track: !0,\n wbr: !0\n });\n function Fl(e, n) {\n if (n) {\n if (Ia[e] && (n.children != null || n.dangerouslySetInnerHTML != null)) throw Error(v(137, e));\n if (n.dangerouslySetInnerHTML != null) {\n if (n.children != null) throw Error(v(60));\n if (typeof n.dangerouslySetInnerHTML != \"object\" || !(\"__html\" in n.dangerouslySetInnerHTML)) throw Error(v(61));\n }\n if (n.style != null && typeof n.style != \"object\") throw Error(v(62));\n }\n }\n function Il(e, n) {\n if (e.indexOf(\"-\") === -1) return typeof n.is == \"string\";\n switch(e){\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n return !1;\n default:\n return !0;\n }\n }\n var Ul = null;\n function Ci(e) {\n return e = e.target || e.srcElement || window, e.correspondingUseElement && (e = e.correspondingUseElement), e.nodeType === 3 ? e.parentNode : e;\n }\n var jl = null, Vn = null, An = null;\n function gu(e) {\n if (e = Vt(e)) {\n if (typeof jl != \"function\") throw Error(v(280));\n var n = e.stateNode;\n n && (n = Qr(n), jl(e.stateNode, e.type, n));\n }\n }\n function To(e) {\n Vn ? An ? An.push(e) : An = [\n e\n ] : Vn = e;\n }\n function Mo() {\n if (Vn) {\n var e = Vn, n = An;\n if (An = Vn = null, gu(e), n) for(e = 0; e < n.length; e++)gu(n[e]);\n }\n }\n function Do(e, n) {\n return e(n);\n }\n function Oo() {}\n var ul = !1;\n function Ro(e, n, t) {\n if (ul) return e(n, t);\n ul = !0;\n try {\n return Do(e, n, t);\n } finally{\n ul = !1, (Vn !== null || An !== null) && (Oo(), Mo());\n }\n }\n function Et(e, n) {\n var t = e.stateNode;\n if (t === null) return null;\n var r = Qr(t);\n if (r === null) return null;\n t = r[n];\n e: switch(n){\n case \"onClick\":\n case \"onClickCapture\":\n case \"onDoubleClick\":\n case \"onDoubleClickCapture\":\n case \"onMouseDown\":\n case \"onMouseDownCapture\":\n case \"onMouseMove\":\n case \"onMouseMoveCapture\":\n case \"onMouseUp\":\n case \"onMouseUpCapture\":\n case \"onMouseEnter\":\n (r = !r.disabled) || (e = e.type, r = !(e === \"button\" || e === \"input\" || e === \"select\" || e === \"textarea\")), e = !r;\n break e;\n default:\n e = !1;\n }\n if (e) return null;\n if (t && typeof t != \"function\") throw Error(v(231, n, typeof t));\n return t;\n }\n var Vl = !1;\n if (Fe) try {\n xn = {}, Object.defineProperty(xn, \"passive\", {\n get: function() {\n Vl = !0;\n }\n }), window.addEventListener(\"test\", xn, xn), window.removeEventListener(\"test\", xn, xn);\n } catch {\n Vl = !1;\n }\n var xn;\n function Ua(e, n, t, r, l, i, u, o, s) {\n var d = Array.prototype.slice.call(arguments, 3);\n try {\n n.apply(t, d);\n } catch (m) {\n this.onError(m);\n }\n }\n var dt = !1, yr = null, gr = !1, Al = null, ja = {\n onError: function(e) {\n dt = !0, yr = e;\n }\n };\n function Va(e, n, t, r, l, i, u, o, s) {\n dt = !1, yr = null, Ua.apply(ja, arguments);\n }\n function Aa(e, n, t, r, l, i, u, o, s) {\n if (Va.apply(this, arguments), dt) {\n if (dt) {\n var d = yr;\n dt = !1, yr = null;\n } else throw Error(v(198));\n gr || (gr = !0, Al = d);\n }\n }\n function Cn(e) {\n var n = e, t = e;\n if (e.alternate) for(; n.return;)n = n.return;\n else {\n e = n;\n do n = e, n.flags & 4098 && (t = n.return), e = n.return;\n while (e)\n }\n return n.tag === 3 ? t : null;\n }\n function Fo(e) {\n if (e.tag === 13) {\n var n = e.memoizedState;\n if (n === null && (e = e.alternate, e !== null && (n = e.memoizedState)), n !== null) return n.dehydrated;\n }\n return null;\n }\n function wu(e) {\n if (Cn(e) !== e) throw Error(v(188));\n }\n function Ba(e) {\n var n = e.alternate;\n if (!n) {\n if (n = Cn(e), n === null) throw Error(v(188));\n return n !== e ? null : e;\n }\n for(var t = e, r = n;;){\n var l = t.return;\n if (l === null) break;\n var i = l.alternate;\n if (i === null) {\n if (r = l.return, r !== null) {\n t = r;\n continue;\n }\n break;\n }\n if (l.child === i.child) {\n for(i = l.child; i;){\n if (i === t) return wu(l), e;\n if (i === r) return wu(l), n;\n i = i.sibling;\n }\n throw Error(v(188));\n }\n if (t.return !== r.return) t = l, r = i;\n else {\n for(var u = !1, o = l.child; o;){\n if (o === t) {\n u = !0, t = l, r = i;\n break;\n }\n if (o === r) {\n u = !0, r = l, t = i;\n break;\n }\n o = o.sibling;\n }\n if (!u) {\n for(o = i.child; o;){\n if (o === t) {\n u = !0, t = i, r = l;\n break;\n }\n if (o === r) {\n u = !0, r = i, t = l;\n break;\n }\n o = o.sibling;\n }\n if (!u) throw Error(v(189));\n }\n }\n if (t.alternate !== r) throw Error(v(190));\n }\n if (t.tag !== 3) throw Error(v(188));\n return t.stateNode.current === t ? e : n;\n }\n function Io(e) {\n return e = Ba(e), e !== null ? Uo(e) : null;\n }\n function Uo(e) {\n if (e.tag === 5 || e.tag === 6) return e;\n for(e = e.child; e !== null;){\n var n = Uo(e);\n if (n !== null) return n;\n e = e.sibling;\n }\n return null;\n }\n var jo = ae.unstable_scheduleCallback, Su = ae.unstable_cancelCallback, Ha = ae.unstable_shouldYield, Wa = ae.unstable_requestPaint, j = ae.unstable_now, Qa = ae.unstable_getCurrentPriorityLevel, xi = ae.unstable_ImmediatePriority, Vo = ae.unstable_UserBlockingPriority, wr = ae.unstable_NormalPriority, $a = ae.unstable_LowPriority, Ao = ae.unstable_IdlePriority, Ar = null, Pe = null;\n function Ka(e) {\n if (Pe && typeof Pe.onCommitFiberRoot == \"function\") try {\n Pe.onCommitFiberRoot(Ar, e, void 0, (e.current.flags & 128) === 128);\n } catch {}\n }\n var Ee = Math.clz32 ? Math.clz32 : Ga, Ya = Math.log, Xa = Math.LN2;\n function Ga(e) {\n return e >>>= 0, e === 0 ? 32 : 31 - (Ya(e) / Xa | 0) | 0;\n }\n var Qt = 64, $t = 4194304;\n function at(e) {\n switch(e & -e){\n case 1:\n return 1;\n case 2:\n return 2;\n case 4:\n return 4;\n case 8:\n return 8;\n case 16:\n return 16;\n case 32:\n return 32;\n case 64:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return e & 4194240;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n case 67108864:\n return e & 130023424;\n case 134217728:\n return 134217728;\n case 268435456:\n return 268435456;\n case 536870912:\n return 536870912;\n case 1073741824:\n return 1073741824;\n default:\n return e;\n }\n }\n function Sr(e, n) {\n var t = e.pendingLanes;\n if (t === 0) return 0;\n var r = 0, l = e.suspendedLanes, i = e.pingedLanes, u = t & 268435455;\n if (u !== 0) {\n var o = u & ~l;\n o !== 0 ? r = at(o) : (i &= u, i !== 0 && (r = at(i)));\n } else u = t & ~l, u !== 0 ? r = at(u) : i !== 0 && (r = at(i));\n if (r === 0) return 0;\n if (n !== 0 && n !== r && !(n & l) && (l = r & -r, i = n & -n, l >= i || l === 16 && (i & 4194240) !== 0)) return n;\n if (r & 4 && (r |= t & 16), n = e.entangledLanes, n !== 0) for(e = e.entanglements, n &= r; 0 < n;)t = 31 - Ee(n), l = 1 << t, r |= e[t], n &= ~l;\n return r;\n }\n function Za(e, n) {\n switch(e){\n case 1:\n case 2:\n case 4:\n return n + 250;\n case 8:\n case 16:\n case 32:\n case 64:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return n + 5e3;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n case 67108864:\n return -1;\n case 134217728:\n case 268435456:\n case 536870912:\n case 1073741824:\n return -1;\n default:\n return -1;\n }\n }\n function Ja(e, n) {\n for(var t = e.suspendedLanes, r = e.pingedLanes, l = e.expirationTimes, i = e.pendingLanes; 0 < i;){\n var u = 31 - Ee(i), o = 1 << u, s = l[u];\n s === -1 ? (!(o & t) || o & r) && (l[u] = Za(o, n)) : s <= n && (e.expiredLanes |= o), i &= ~o;\n }\n }\n function Bl(e) {\n return e = e.pendingLanes & -1073741825, e !== 0 ? e : e & 1073741824 ? 1073741824 : 0;\n }\n function Bo() {\n var e = Qt;\n return Qt <<= 1, !(Qt & 4194240) && (Qt = 64), e;\n }\n function ol(e) {\n for(var n = [], t = 0; 31 > t; t++)n.push(e);\n return n;\n }\n function Ut(e, n, t) {\n e.pendingLanes |= n, n !== 536870912 && (e.suspendedLanes = 0, e.pingedLanes = 0), e = e.eventTimes, n = 31 - Ee(n), e[n] = t;\n }\n function qa(e, n) {\n var t = e.pendingLanes & ~n;\n e.pendingLanes = n, e.suspendedLanes = 0, e.pingedLanes = 0, e.expiredLanes &= n, e.mutableReadLanes &= n, e.entangledLanes &= n, n = e.entanglements;\n var r = e.eventTimes;\n for(e = e.expirationTimes; 0 < t;){\n var l = 31 - Ee(t), i = 1 << l;\n n[l] = 0, r[l] = -1, e[l] = -1, t &= ~i;\n }\n }\n function Ni(e, n) {\n var t = e.entangledLanes |= n;\n for(e = e.entanglements; t;){\n var r = 31 - Ee(t), l = 1 << r;\n l & n | e[r] & n && (e[r] |= n), t &= ~l;\n }\n }\n var P = 0;\n function Ho(e) {\n return e &= -e, 1 < e ? 4 < e ? e & 268435455 ? 16 : 536870912 : 4 : 1;\n }\n var Wo, _i, Qo, $o, Ko, Hl = !1, Kt = [], Xe = null, Ge = null, Ze = null, Ct = new Map, xt = new Map, Qe = [], ba = \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\n function ku(e, n) {\n switch(e){\n case \"focusin\":\n case \"focusout\":\n Xe = null;\n break;\n case \"dragenter\":\n case \"dragleave\":\n Ge = null;\n break;\n case \"mouseover\":\n case \"mouseout\":\n Ze = null;\n break;\n case \"pointerover\":\n case \"pointerout\":\n Ct.delete(n.pointerId);\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n xt.delete(n.pointerId);\n }\n }\n function et(e, n, t, r, l, i) {\n return e === null || e.nativeEvent !== i ? (e = {\n blockedOn: n,\n domEventName: t,\n eventSystemFlags: r,\n nativeEvent: i,\n targetContainers: [\n l\n ]\n }, n !== null && (n = Vt(n), n !== null && _i(n)), e) : (e.eventSystemFlags |= r, n = e.targetContainers, l !== null && n.indexOf(l) === -1 && n.push(l), e);\n }\n function ec(e, n, t, r, l) {\n switch(n){\n case \"focusin\":\n return Xe = et(Xe, e, n, t, r, l), !0;\n case \"dragenter\":\n return Ge = et(Ge, e, n, t, r, l), !0;\n case \"mouseover\":\n return Ze = et(Ze, e, n, t, r, l), !0;\n case \"pointerover\":\n var i = l.pointerId;\n return Ct.set(i, et(Ct.get(i) || null, e, n, t, r, l)), !0;\n case \"gotpointercapture\":\n return i = l.pointerId, xt.set(i, et(xt.get(i) || null, e, n, t, r, l)), !0;\n }\n return !1;\n }\n function Yo(e) {\n var n = dn(e.target);\n if (n !== null) {\n var t = Cn(n);\n if (t !== null) {\n if (n = t.tag, n === 13) {\n if (n = Fo(t), n !== null) {\n e.blockedOn = n, Ko(e.priority, function() {\n Qo(t);\n });\n return;\n }\n } else if (n === 3 && t.stateNode.current.memoizedState.isDehydrated) {\n e.blockedOn = t.tag === 3 ? t.stateNode.containerInfo : null;\n return;\n }\n }\n }\n e.blockedOn = null;\n }\n function ur(e) {\n if (e.blockedOn !== null) return !1;\n for(var n = e.targetContainers; 0 < n.length;){\n var t = Wl(e.domEventName, e.eventSystemFlags, n[0], e.nativeEvent);\n if (t === null) {\n t = e.nativeEvent;\n var r = new t.constructor(t.type, t);\n Ul = r, t.target.dispatchEvent(r), Ul = null;\n } else return n = Vt(t), n !== null && _i(n), e.blockedOn = t, !1;\n n.shift();\n }\n return !0;\n }\n function Eu(e, n, t) {\n ur(e) && t.delete(n);\n }\n function nc() {\n Hl = !1, Xe !== null && ur(Xe) && (Xe = null), Ge !== null && ur(Ge) && (Ge = null), Ze !== null && ur(Ze) && (Ze = null), Ct.forEach(Eu), xt.forEach(Eu);\n }\n function nt(e, n) {\n e.blockedOn === n && (e.blockedOn = null, Hl || (Hl = !0, ae.unstable_scheduleCallback(ae.unstable_NormalPriority, nc)));\n }\n function Nt(e) {\n function n(l) {\n return nt(l, e);\n }\n if (0 < Kt.length) {\n nt(Kt[0], e);\n for(var t = 1; t < Kt.length; t++){\n var r = Kt[t];\n r.blockedOn === e && (r.blockedOn = null);\n }\n }\n for(Xe !== null && nt(Xe, e), Ge !== null && nt(Ge, e), Ze !== null && nt(Ze, e), Ct.forEach(n), xt.forEach(n), t = 0; t < Qe.length; t++)r = Qe[t], r.blockedOn === e && (r.blockedOn = null);\n for(; 0 < Qe.length && (t = Qe[0], t.blockedOn === null);)Yo(t), t.blockedOn === null && Qe.shift();\n }\n var Bn = Ve.ReactCurrentBatchConfig, kr = !0;\n function tc(e, n, t, r) {\n var l = P, i = Bn.transition;\n Bn.transition = null;\n try {\n P = 1, zi(e, n, t, r);\n } finally{\n P = l, Bn.transition = i;\n }\n }\n function rc(e, n, t, r) {\n var l = P, i = Bn.transition;\n Bn.transition = null;\n try {\n P = 4, zi(e, n, t, r);\n } finally{\n P = l, Bn.transition = i;\n }\n }\n function zi(e, n, t, r) {\n if (kr) {\n var l = Wl(e, n, t, r);\n if (l === null) ml(e, n, r, Er, t), ku(e, r);\n else if (ec(l, e, n, t, r)) r.stopPropagation();\n else if (ku(e, r), n & 4 && -1 < ba.indexOf(e)) {\n for(; l !== null;){\n var i = Vt(l);\n if (i !== null && Wo(i), i = Wl(e, n, t, r), i === null && ml(e, n, r, Er, t), i === l) break;\n l = i;\n }\n l !== null && r.stopPropagation();\n } else ml(e, n, r, null, t);\n }\n }\n var Er = null;\n function Wl(e, n, t, r) {\n if (Er = null, e = Ci(r), e = dn(e), e !== null) if (n = Cn(e), n === null) e = null;\n else if (t = n.tag, t === 13) {\n if (e = Fo(n), e !== null) return e;\n e = null;\n } else if (t === 3) {\n if (n.stateNode.current.memoizedState.isDehydrated) return n.tag === 3 ? n.stateNode.containerInfo : null;\n e = null;\n } else n !== e && (e = null);\n return Er = e, null;\n }\n function Xo(e) {\n switch(e){\n case \"cancel\":\n case \"click\":\n case \"close\":\n case \"contextmenu\":\n case \"copy\":\n case \"cut\":\n case \"auxclick\":\n case \"dblclick\":\n case \"dragend\":\n case \"dragstart\":\n case \"drop\":\n case \"focusin\":\n case \"focusout\":\n case \"input\":\n case \"invalid\":\n case \"keydown\":\n case \"keypress\":\n case \"keyup\":\n case \"mousedown\":\n case \"mouseup\":\n case \"paste\":\n case \"pause\":\n case \"play\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointerup\":\n case \"ratechange\":\n case \"reset\":\n case \"resize\":\n case \"seeked\":\n case \"submit\":\n case \"touchcancel\":\n case \"touchend\":\n case \"touchstart\":\n case \"volumechange\":\n case \"change\":\n case \"selectionchange\":\n case \"textInput\":\n case \"compositionstart\":\n case \"compositionend\":\n case \"compositionupdate\":\n case \"beforeblur\":\n case \"afterblur\":\n case \"beforeinput\":\n case \"blur\":\n case \"fullscreenchange\":\n case \"focus\":\n case \"hashchange\":\n case \"popstate\":\n case \"select\":\n case \"selectstart\":\n return 1;\n case \"drag\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"mousemove\":\n case \"mouseout\":\n case \"mouseover\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"scroll\":\n case \"toggle\":\n case \"touchmove\":\n case \"wheel\":\n case \"mouseenter\":\n case \"mouseleave\":\n case \"pointerenter\":\n case \"pointerleave\":\n return 4;\n case \"message\":\n switch(Qa()){\n case xi:\n return 1;\n case Vo:\n return 4;\n case wr:\n case $a:\n return 16;\n case Ao:\n return 536870912;\n default:\n return 16;\n }\n default:\n return 16;\n }\n }\n var Ke = null, Pi = null, or = null;\n function Go() {\n if (or) return or;\n var e, n = Pi, t = n.length, r, l = \"value\" in Ke ? Ke.value : Ke.textContent, i = l.length;\n for(e = 0; e < t && n[e] === l[e]; e++);\n var u = t - e;\n for(r = 1; r <= u && n[t - r] === l[i - r]; r++);\n return or = l.slice(e, 1 < r ? 1 - r : void 0);\n }\n function sr(e) {\n var n = e.keyCode;\n return \"charCode\" in e ? (e = e.charCode, e === 0 && n === 13 && (e = 13)) : e = n, e === 10 && (e = 13), 32 <= e || e === 13 ? e : 0;\n }\n function Yt() {\n return !0;\n }\n function Cu() {\n return !1;\n }\n function ce(e) {\n function n(t, r, l, i, u) {\n this._reactName = t, this._targetInst = l, this.type = r, this.nativeEvent = i, this.target = u, this.currentTarget = null;\n for(var o in e)e.hasOwnProperty(o) && (t = e[o], this[o] = t ? t(i) : i[o]);\n return this.isDefaultPrevented = (i.defaultPrevented != null ? i.defaultPrevented : i.returnValue === !1) ? Yt : Cu, this.isPropagationStopped = Cu, this;\n }\n return F(n.prototype, {\n preventDefault: function() {\n this.defaultPrevented = !0;\n var t = this.nativeEvent;\n t && (t.preventDefault ? t.preventDefault() : typeof t.returnValue != \"unknown\" && (t.returnValue = !1), this.isDefaultPrevented = Yt);\n },\n stopPropagation: function() {\n var t = this.nativeEvent;\n t && (t.stopPropagation ? t.stopPropagation() : typeof t.cancelBubble != \"unknown\" && (t.cancelBubble = !0), this.isPropagationStopped = Yt);\n },\n persist: function() {},\n isPersistent: Yt\n }), n;\n }\n var Jn = {\n eventPhase: 0,\n bubbles: 0,\n cancelable: 0,\n timeStamp: function(e) {\n return e.timeStamp || Date.now();\n },\n defaultPrevented: 0,\n isTrusted: 0\n }, Li = ce(Jn), jt = F({}, Jn, {\n view: 0,\n detail: 0\n }), lc = ce(jt), sl, al, tt, Br = F({}, jt, {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n pageX: 0,\n pageY: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n getModifierState: Ti,\n button: 0,\n buttons: 0,\n relatedTarget: function(e) {\n return e.relatedTarget === void 0 ? e.fromElement === e.srcElement ? e.toElement : e.fromElement : e.relatedTarget;\n },\n movementX: function(e) {\n return \"movementX\" in e ? e.movementX : (e !== tt && (tt && e.type === \"mousemove\" ? (sl = e.screenX - tt.screenX, al = e.screenY - tt.screenY) : al = sl = 0, tt = e), sl);\n },\n movementY: function(e) {\n return \"movementY\" in e ? e.movementY : al;\n }\n }), xu = ce(Br), ic = F({}, Br, {\n dataTransfer: 0\n }), uc = ce(ic), oc = F({}, jt, {\n relatedTarget: 0\n }), cl = ce(oc), sc = F({}, Jn, {\n animationName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }), ac = ce(sc), cc = F({}, Jn, {\n clipboardData: function(e) {\n return \"clipboardData\" in e ? e.clipboardData : window.clipboardData;\n }\n }), fc = ce(cc), dc = F({}, Jn, {\n data: 0\n }), Nu = ce(dc), pc = {\n Esc: \"Escape\",\n Spacebar: \" \",\n Left: \"ArrowLeft\",\n Up: \"ArrowUp\",\n Right: \"ArrowRight\",\n Down: \"ArrowDown\",\n Del: \"Delete\",\n Win: \"OS\",\n Menu: \"ContextMenu\",\n Apps: \"ContextMenu\",\n Scroll: \"ScrollLock\",\n MozPrintableKey: \"Unidentified\"\n }, mc = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 12: \"Clear\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 45: \"Insert\",\n 46: \"Delete\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 224: \"Meta\"\n }, hc = {\n Alt: \"altKey\",\n Control: \"ctrlKey\",\n Meta: \"metaKey\",\n Shift: \"shiftKey\"\n };\n function vc(e) {\n var n = this.nativeEvent;\n return n.getModifierState ? n.getModifierState(e) : (e = hc[e]) ? !!n[e] : !1;\n }\n function Ti() {\n return vc;\n }\n var yc = F({}, jt, {\n key: function(e) {\n if (e.key) {\n var n = pc[e.key] || e.key;\n if (n !== \"Unidentified\") return n;\n }\n return e.type === \"keypress\" ? (e = sr(e), e === 13 ? \"Enter\" : String.fromCharCode(e)) : e.type === \"keydown\" || e.type === \"keyup\" ? mc[e.keyCode] || \"Unidentified\" : \"\";\n },\n code: 0,\n location: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n repeat: 0,\n locale: 0,\n getModifierState: Ti,\n charCode: function(e) {\n return e.type === \"keypress\" ? sr(e) : 0;\n },\n keyCode: function(e) {\n return e.type === \"keydown\" || e.type === \"keyup\" ? e.keyCode : 0;\n },\n which: function(e) {\n return e.type === \"keypress\" ? sr(e) : e.type === \"keydown\" || e.type === \"keyup\" ? e.keyCode : 0;\n }\n }), gc = ce(yc), wc = F({}, Br, {\n pointerId: 0,\n width: 0,\n height: 0,\n pressure: 0,\n tangentialPressure: 0,\n tiltX: 0,\n tiltY: 0,\n twist: 0,\n pointerType: 0,\n isPrimary: 0\n }), _u = ce(wc), Sc = F({}, jt, {\n touches: 0,\n targetTouches: 0,\n changedTouches: 0,\n altKey: 0,\n metaKey: 0,\n ctrlKey: 0,\n shiftKey: 0,\n getModifierState: Ti\n }), kc = ce(Sc), Ec = F({}, Jn, {\n propertyName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }), Cc = ce(Ec), xc = F({}, Br, {\n deltaX: function(e) {\n return \"deltaX\" in e ? e.deltaX : \"wheelDeltaX\" in e ? -e.wheelDeltaX : 0;\n },\n deltaY: function(e) {\n return \"deltaY\" in e ? e.deltaY : \"wheelDeltaY\" in e ? -e.wheelDeltaY : \"wheelDelta\" in e ? -e.wheelDelta : 0;\n },\n deltaZ: 0,\n deltaMode: 0\n }), Nc = ce(xc), _c = [\n 9,\n 13,\n 27,\n 32\n ], Mi = Fe && \"CompositionEvent\" in window, pt = null;\n Fe && \"documentMode\" in document && (pt = document.documentMode);\n var zc = Fe && \"TextEvent\" in window && !pt, Zo = Fe && (!Mi || pt && 8 < pt && 11 >= pt), zu = \" \", Pu = !1;\n function Jo(e, n) {\n switch(e){\n case \"keyup\":\n return _c.indexOf(n.keyCode) !== -1;\n case \"keydown\":\n return n.keyCode !== 229;\n case \"keypress\":\n case \"mousedown\":\n case \"focusout\":\n return !0;\n default:\n return !1;\n }\n }\n function qo(e) {\n return e = e.detail, typeof e == \"object\" && \"data\" in e ? e.data : null;\n }\n var Pn = !1;\n function Pc(e, n) {\n switch(e){\n case \"compositionend\":\n return qo(n);\n case \"keypress\":\n return n.which !== 32 ? null : (Pu = !0, zu);\n case \"textInput\":\n return e = n.data, e === zu && Pu ? null : e;\n default:\n return null;\n }\n }\n function Lc(e, n) {\n if (Pn) return e === \"compositionend\" || !Mi && Jo(e, n) ? (e = Go(), or = Pi = Ke = null, Pn = !1, e) : null;\n switch(e){\n case \"paste\":\n return null;\n case \"keypress\":\n if (!(n.ctrlKey || n.altKey || n.metaKey) || n.ctrlKey && n.altKey) {\n if (n.char && 1 < n.char.length) return n.char;\n if (n.which) return String.fromCharCode(n.which);\n }\n return null;\n case \"compositionend\":\n return Zo && n.locale !== \"ko\" ? null : n.data;\n default:\n return null;\n }\n }\n var Tc = {\n color: !0,\n date: !0,\n datetime: !0,\n \"datetime-local\": !0,\n email: !0,\n month: !0,\n number: !0,\n password: !0,\n range: !0,\n search: !0,\n tel: !0,\n text: !0,\n time: !0,\n url: !0,\n week: !0\n };\n function Lu(e) {\n var n = e && e.nodeName && e.nodeName.toLowerCase();\n return n === \"input\" ? !!Tc[e.type] : n === \"textarea\";\n }\n function bo(e, n, t, r) {\n To(r), n = Cr(n, \"onChange\"), 0 < n.length && (t = new Li(\"onChange\", \"change\", null, t, r), e.push({\n event: t,\n listeners: n\n }));\n }\n var mt = null, _t = null;\n function Mc(e) {\n cs(e, 0);\n }\n function Hr(e) {\n var n = Mn(e);\n if (Co(n)) return e;\n }\n function Dc(e, n) {\n if (e === \"change\") return n;\n }\n var es = !1;\n Fe && (Fe ? (Gt = \"oninput\" in document, Gt || (fl = document.createElement(\"div\"), fl.setAttribute(\"oninput\", \"return;\"), Gt = typeof fl.oninput == \"function\"), Xt = Gt) : Xt = !1, es = Xt && (!document.documentMode || 9 < document.documentMode));\n var Xt, Gt, fl;\n function Tu() {\n mt && (mt.detachEvent(\"onpropertychange\", ns), _t = mt = null);\n }\n function ns(e) {\n if (e.propertyName === \"value\" && Hr(_t)) {\n var n = [];\n bo(n, _t, e, Ci(e)), Ro(Mc, n);\n }\n }\n function Oc(e, n, t) {\n e === \"focusin\" ? (Tu(), mt = n, _t = t, mt.attachEvent(\"onpropertychange\", ns)) : e === \"focusout\" && Tu();\n }\n function Rc(e) {\n if (e === \"selectionchange\" || e === \"keyup\" || e === \"keydown\") return Hr(_t);\n }\n function Fc(e, n) {\n if (e === \"click\") return Hr(n);\n }\n function Ic(e, n) {\n if (e === \"input\" || e === \"change\") return Hr(n);\n }\n function Uc(e, n) {\n return e === n && (e !== 0 || 1 / e === 1 / n) || e !== e && n !== n;\n }\n var xe = typeof Object.is == \"function\" ? Object.is : Uc;\n function zt(e, n) {\n if (xe(e, n)) return !0;\n if (typeof e != \"object\" || e === null || typeof n != \"object\" || n === null) return !1;\n var t = Object.keys(e), r = Object.keys(n);\n if (t.length !== r.length) return !1;\n for(r = 0; r < t.length; r++){\n var l = t[r];\n if (!Nl.call(n, l) || !xe(e[l], n[l])) return !1;\n }\n return !0;\n }\n function Mu(e) {\n for(; e && e.firstChild;)e = e.firstChild;\n return e;\n }\n function Du(e, n) {\n var t = Mu(e);\n e = 0;\n for(var r; t;){\n if (t.nodeType === 3) {\n if (r = e + t.textContent.length, e <= n && r >= n) return {\n node: t,\n offset: n - e\n };\n e = r;\n }\n e: {\n for(; t;){\n if (t.nextSibling) {\n t = t.nextSibling;\n break e;\n }\n t = t.parentNode;\n }\n t = void 0;\n }\n t = Mu(t);\n }\n }\n function ts(e, n) {\n return e && n ? e === n ? !0 : e && e.nodeType === 3 ? !1 : n && n.nodeType === 3 ? ts(e, n.parentNode) : \"contains\" in e ? e.contains(n) : e.compareDocumentPosition ? !!(e.compareDocumentPosition(n) & 16) : !1 : !1;\n }\n function rs() {\n for(var e = window, n = vr(); n instanceof e.HTMLIFrameElement;){\n try {\n var t = typeof n.contentWindow.location.href == \"string\";\n } catch {\n t = !1;\n }\n if (t) e = n.contentWindow;\n else break;\n n = vr(e.document);\n }\n return n;\n }\n function Di(e) {\n var n = e && e.nodeName && e.nodeName.toLowerCase();\n return n && (n === \"input\" && (e.type === \"text\" || e.type === \"search\" || e.type === \"tel\" || e.type === \"url\" || e.type === \"password\") || n === \"textarea\" || e.contentEditable === \"true\");\n }\n function jc(e) {\n var n = rs(), t = e.focusedElem, r = e.selectionRange;\n if (n !== t && t && t.ownerDocument && ts(t.ownerDocument.documentElement, t)) {\n if (r !== null && Di(t)) {\n if (n = r.start, e = r.end, e === void 0 && (e = n), \"selectionStart\" in t) t.selectionStart = n, t.selectionEnd = Math.min(e, t.value.length);\n else if (e = (n = t.ownerDocument || document) && n.defaultView || window, e.getSelection) {\n e = e.getSelection();\n var l = t.textContent.length, i = Math.min(r.start, l);\n r = r.end === void 0 ? i : Math.min(r.end, l), !e.extend && i > r && (l = r, r = i, i = l), l = Du(t, i);\n var u = Du(t, r);\n l && u && (e.rangeCount !== 1 || e.anchorNode !== l.node || e.anchorOffset !== l.offset || e.focusNode !== u.node || e.focusOffset !== u.offset) && (n = n.createRange(), n.setStart(l.node, l.offset), e.removeAllRanges(), i > r ? (e.addRange(n), e.extend(u.node, u.offset)) : (n.setEnd(u.node, u.offset), e.addRange(n)));\n }\n }\n for(n = [], e = t; e = e.parentNode;)e.nodeType === 1 && n.push({\n element: e,\n left: e.scrollLeft,\n top: e.scrollTop\n });\n for(typeof t.focus == \"function\" && t.focus(), t = 0; t < n.length; t++)e = n[t], e.element.scrollLeft = e.left, e.element.scrollTop = e.top;\n }\n }\n var Vc = Fe && \"documentMode\" in document && 11 >= document.documentMode, Ln = null, Ql = null, ht = null, $l = !1;\n function Ou(e, n, t) {\n var r = t.window === t ? t.document : t.nodeType === 9 ? t : t.ownerDocument;\n $l || Ln == null || Ln !== vr(r) || (r = Ln, \"selectionStart\" in r && Di(r) ? r = {\n start: r.selectionStart,\n end: r.selectionEnd\n } : (r = (r.ownerDocument && r.ownerDocument.defaultView || window).getSelection(), r = {\n anchorNode: r.anchorNode,\n anchorOffset: r.anchorOffset,\n focusNode: r.focusNode,\n focusOffset: r.focusOffset\n }), ht && zt(ht, r) || (ht = r, r = Cr(Ql, \"onSelect\"), 0 < r.length && (n = new Li(\"onSelect\", \"select\", null, n, t), e.push({\n event: n,\n listeners: r\n }), n.target = Ln)));\n }\n function Zt(e, n) {\n var t = {};\n return t[e.toLowerCase()] = n.toLowerCase(), t[\"Webkit\" + e] = \"webkit\" + n, t[\"Moz\" + e] = \"moz\" + n, t;\n }\n var Tn = {\n animationend: Zt(\"Animation\", \"AnimationEnd\"),\n animationiteration: Zt(\"Animation\", \"AnimationIteration\"),\n animationstart: Zt(\"Animation\", \"AnimationStart\"),\n transitionend: Zt(\"Transition\", \"TransitionEnd\")\n }, dl = {}, ls = {};\n Fe && (ls = document.createElement(\"div\").style, \"AnimationEvent\" in window || (delete Tn.animationend.animation, delete Tn.animationiteration.animation, delete Tn.animationstart.animation), \"TransitionEvent\" in window || delete Tn.transitionend.transition);\n function Wr(e) {\n if (dl[e]) return dl[e];\n if (!Tn[e]) return e;\n var n = Tn[e], t;\n for(t in n)if (n.hasOwnProperty(t) && t in ls) return dl[e] = n[t];\n return e;\n }\n var is = Wr(\"animationend\"), us = Wr(\"animationiteration\"), os = Wr(\"animationstart\"), ss = Wr(\"transitionend\"), as = new Map, Ru = \"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\n function ln(e, n) {\n as.set(e, n), En(n, [\n e\n ]);\n }\n for(Jt = 0; Jt < Ru.length; Jt++)qt = Ru[Jt], Fu = qt.toLowerCase(), Iu = qt[0].toUpperCase() + qt.slice(1), ln(Fu, \"on\" + Iu);\n var qt, Fu, Iu, Jt;\n ln(is, \"onAnimationEnd\");\n ln(us, \"onAnimationIteration\");\n ln(os, \"onAnimationStart\");\n ln(\"dblclick\", \"onDoubleClick\");\n ln(\"focusin\", \"onFocus\");\n ln(\"focusout\", \"onBlur\");\n ln(ss, \"onTransitionEnd\");\n Qn(\"onMouseEnter\", [\n \"mouseout\",\n \"mouseover\"\n ]);\n Qn(\"onMouseLeave\", [\n \"mouseout\",\n \"mouseover\"\n ]);\n Qn(\"onPointerEnter\", [\n \"pointerout\",\n \"pointerover\"\n ]);\n Qn(\"onPointerLeave\", [\n \"pointerout\",\n \"pointerover\"\n ]);\n En(\"onChange\", \"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));\n En(\"onSelect\", \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));\n En(\"onBeforeInput\", [\n \"compositionend\",\n \"keypress\",\n \"textInput\",\n \"paste\"\n ]);\n En(\"onCompositionEnd\", \"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));\n En(\"onCompositionStart\", \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\n En(\"onCompositionUpdate\", \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));\n var ct = \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"), Ac = new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(ct));\n function Uu(e, n, t) {\n var r = e.type || \"unknown-event\";\n e.currentTarget = t, Aa(r, n, void 0, e), e.currentTarget = null;\n }\n function cs(e, n) {\n n = (n & 4) !== 0;\n for(var t = 0; t < e.length; t++){\n var r = e[t], l = r.event;\n r = r.listeners;\n e: {\n var i = void 0;\n if (n) for(var u = r.length - 1; 0 <= u; u--){\n var o = r[u], s = o.instance, d = o.currentTarget;\n if (o = o.listener, s !== i && l.isPropagationStopped()) break e;\n Uu(l, o, d), i = s;\n }\n else for(u = 0; u < r.length; u++){\n if (o = r[u], s = o.instance, d = o.currentTarget, o = o.listener, s !== i && l.isPropagationStopped()) break e;\n Uu(l, o, d), i = s;\n }\n }\n }\n if (gr) throw e = Al, gr = !1, Al = null, e;\n }\n function T(e, n) {\n var t = n[Zl];\n t === void 0 && (t = n[Zl] = new Set);\n var r = e + \"__bubble\";\n t.has(r) || (fs(n, e, 2, !1), t.add(r));\n }\n function pl(e, n, t) {\n var r = 0;\n n && (r |= 4), fs(t, e, r, n);\n }\n var bt = \"_reactListening\" + Math.random().toString(36).slice(2);\n function Pt(e) {\n if (!e[bt]) {\n e[bt] = !0, go.forEach(function(t) {\n t !== \"selectionchange\" && (Ac.has(t) || pl(t, !1, e), pl(t, !0, e));\n });\n var n = e.nodeType === 9 ? e : e.ownerDocument;\n n === null || n[bt] || (n[bt] = !0, pl(\"selectionchange\", !1, n));\n }\n }\n function fs(e, n, t, r) {\n switch(Xo(n)){\n case 1:\n var l = tc;\n break;\n case 4:\n l = rc;\n break;\n default:\n l = zi;\n }\n t = l.bind(null, n, t, e), l = void 0, !Vl || n !== \"touchstart\" && n !== \"touchmove\" && n !== \"wheel\" || (l = !0), r ? l !== void 0 ? e.addEventListener(n, t, {\n capture: !0,\n passive: l\n }) : e.addEventListener(n, t, !0) : l !== void 0 ? e.addEventListener(n, t, {\n passive: l\n }) : e.addEventListener(n, t, !1);\n }\n function ml(e, n, t, r, l) {\n var i = r;\n if (!(n & 1) && !(n & 2) && r !== null) e: for(;;){\n if (r === null) return;\n var u = r.tag;\n if (u === 3 || u === 4) {\n var o = r.stateNode.containerInfo;\n if (o === l || o.nodeType === 8 && o.parentNode === l) break;\n if (u === 4) for(u = r.return; u !== null;){\n var s = u.tag;\n if ((s === 3 || s === 4) && (s = u.stateNode.containerInfo, s === l || s.nodeType === 8 && s.parentNode === l)) return;\n u = u.return;\n }\n for(; o !== null;){\n if (u = dn(o), u === null) return;\n if (s = u.tag, s === 5 || s === 6) {\n r = i = u;\n continue e;\n }\n o = o.parentNode;\n }\n }\n r = r.return;\n }\n Ro(function() {\n var d = i, m = Ci(t), h = [];\n e: {\n var p = as.get(e);\n if (p !== void 0) {\n var g = Li, S = e;\n switch(e){\n case \"keypress\":\n if (sr(t) === 0) break e;\n case \"keydown\":\n case \"keyup\":\n g = gc;\n break;\n case \"focusin\":\n S = \"focus\", g = cl;\n break;\n case \"focusout\":\n S = \"blur\", g = cl;\n break;\n case \"beforeblur\":\n case \"afterblur\":\n g = cl;\n break;\n case \"click\":\n if (t.button === 2) break e;\n case \"auxclick\":\n case \"dblclick\":\n case \"mousedown\":\n case \"mousemove\":\n case \"mouseup\":\n case \"mouseout\":\n case \"mouseover\":\n case \"contextmenu\":\n g = xu;\n break;\n case \"drag\":\n case \"dragend\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"dragstart\":\n case \"drop\":\n g = uc;\n break;\n case \"touchcancel\":\n case \"touchend\":\n case \"touchmove\":\n case \"touchstart\":\n g = kc;\n break;\n case is:\n case us:\n case os:\n g = ac;\n break;\n case ss:\n g = Cc;\n break;\n case \"scroll\":\n g = lc;\n break;\n case \"wheel\":\n g = Nc;\n break;\n case \"copy\":\n case \"cut\":\n case \"paste\":\n g = fc;\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"pointerup\":\n g = _u;\n }\n var k = (n & 4) !== 0, U = !k && e === \"scroll\", c = k ? p !== null ? p + \"Capture\" : null : p;\n k = [];\n for(var a = d, f; a !== null;){\n f = a;\n var y = f.stateNode;\n if (f.tag === 5 && y !== null && (f = y, c !== null && (y = Et(a, c), y != null && k.push(Lt(a, y, f)))), U) break;\n a = a.return;\n }\n 0 < k.length && (p = new g(p, S, null, t, m), h.push({\n event: p,\n listeners: k\n }));\n }\n }\n if (!(n & 7)) {\n e: {\n if (p = e === \"mouseover\" || e === \"pointerover\", g = e === \"mouseout\" || e === \"pointerout\", p && t !== Ul && (S = t.relatedTarget || t.fromElement) && (dn(S) || S[Ie])) break e;\n if ((g || p) && (p = m.window === m ? m : (p = m.ownerDocument) ? p.defaultView || p.parentWindow : window, g ? (S = t.relatedTarget || t.toElement, g = d, S = S ? dn(S) : null, S !== null && (U = Cn(S), S !== U || S.tag !== 5 && S.tag !== 6) && (S = null)) : (g = null, S = d), g !== S)) {\n if (k = xu, y = \"onMouseLeave\", c = \"onMouseEnter\", a = \"mouse\", (e === \"pointerout\" || e === \"pointerover\") && (k = _u, y = \"onPointerLeave\", c = \"onPointerEnter\", a = \"pointer\"), U = g == null ? p : Mn(g), f = S == null ? p : Mn(S), p = new k(y, a + \"leave\", g, t, m), p.target = U, p.relatedTarget = f, y = null, dn(m) === d && (k = new k(c, a + \"enter\", S, t, m), k.target = f, k.relatedTarget = U, y = k), U = y, g && S) n: {\n for(k = g, c = S, a = 0, f = k; f; f = Nn(f))a++;\n for(f = 0, y = c; y; y = Nn(y))f++;\n for(; 0 < a - f;)k = Nn(k), a--;\n for(; 0 < f - a;)c = Nn(c), f--;\n for(; a--;){\n if (k === c || c !== null && k === c.alternate) break n;\n k = Nn(k), c = Nn(c);\n }\n k = null;\n }\n else k = null;\n g !== null && ju(h, p, g, k, !1), S !== null && U !== null && ju(h, U, S, k, !0);\n }\n }\n e: {\n if (p = d ? Mn(d) : window, g = p.nodeName && p.nodeName.toLowerCase(), g === \"select\" || g === \"input\" && p.type === \"file\") var E = Dc;\n else if (Lu(p)) if (es) E = Ic;\n else {\n E = Rc;\n var C = Oc;\n }\n else (g = p.nodeName) && g.toLowerCase() === \"input\" && (p.type === \"checkbox\" || p.type === \"radio\") && (E = Fc);\n if (E && (E = E(e, d))) {\n bo(h, E, t, m);\n break e;\n }\n C && C(e, p, d), e === \"focusout\" && (C = p._wrapperState) && C.controlled && p.type === \"number\" && Dl(p, \"number\", p.value);\n }\n switch(C = d ? Mn(d) : window, e){\n case \"focusin\":\n (Lu(C) || C.contentEditable === \"true\") && (Ln = C, Ql = d, ht = null);\n break;\n case \"focusout\":\n ht = Ql = Ln = null;\n break;\n case \"mousedown\":\n $l = !0;\n break;\n case \"contextmenu\":\n case \"mouseup\":\n case \"dragend\":\n $l = !1, Ou(h, t, m);\n break;\n case \"selectionchange\":\n if (Vc) break;\n case \"keydown\":\n case \"keyup\":\n Ou(h, t, m);\n }\n var x;\n if (Mi) e: {\n switch(e){\n case \"compositionstart\":\n var N = \"onCompositionStart\";\n break e;\n case \"compositionend\":\n N = \"onCompositionEnd\";\n break e;\n case \"compositionupdate\":\n N = \"onCompositionUpdate\";\n break e;\n }\n N = void 0;\n }\n else Pn ? Jo(e, t) && (N = \"onCompositionEnd\") : e === \"keydown\" && t.keyCode === 229 && (N = \"onCompositionStart\");\n N && (Zo && t.locale !== \"ko\" && (Pn || N !== \"onCompositionStart\" ? N === \"onCompositionEnd\" && Pn && (x = Go()) : (Ke = m, Pi = \"value\" in Ke ? Ke.value : Ke.textContent, Pn = !0)), C = Cr(d, N), 0 < C.length && (N = new Nu(N, e, null, t, m), h.push({\n event: N,\n listeners: C\n }), x ? N.data = x : (x = qo(t), x !== null && (N.data = x)))), (x = zc ? Pc(e, t) : Lc(e, t)) && (d = Cr(d, \"onBeforeInput\"), 0 < d.length && (m = new Nu(\"onBeforeInput\", \"beforeinput\", null, t, m), h.push({\n event: m,\n listeners: d\n }), m.data = x));\n }\n cs(h, n);\n });\n }\n function Lt(e, n, t) {\n return {\n instance: e,\n listener: n,\n currentTarget: t\n };\n }\n function Cr(e, n) {\n for(var t = n + \"Capture\", r = []; e !== null;){\n var l = e, i = l.stateNode;\n l.tag === 5 && i !== null && (l = i, i = Et(e, t), i != null && r.unshift(Lt(e, i, l)), i = Et(e, n), i != null && r.push(Lt(e, i, l))), e = e.return;\n }\n return r;\n }\n function Nn(e) {\n if (e === null) return null;\n do e = e.return;\n while (e && e.tag !== 5)\n return e || null;\n }\n function ju(e, n, t, r, l) {\n for(var i = n._reactName, u = []; t !== null && t !== r;){\n var o = t, s = o.alternate, d = o.stateNode;\n if (s !== null && s === r) break;\n o.tag === 5 && d !== null && (o = d, l ? (s = Et(t, i), s != null && u.unshift(Lt(t, s, o))) : l || (s = Et(t, i), s != null && u.push(Lt(t, s, o)))), t = t.return;\n }\n u.length !== 0 && e.push({\n event: n,\n listeners: u\n });\n }\n var Bc = /\\r\\n?/g, Hc = /\\u0000|\\uFFFD/g;\n function Vu(e) {\n return (typeof e == \"string\" ? e : \"\" + e).replace(Bc, `\n`).replace(Hc, \"\");\n }\n function er(e, n, t) {\n if (n = Vu(n), Vu(e) !== n && t) throw Error(v(425));\n }\n function xr() {}\n var Kl = null, Yl = null;\n function Xl(e, n) {\n return e === \"textarea\" || e === \"noscript\" || typeof n.children == \"string\" || typeof n.children == \"number\" || typeof n.dangerouslySetInnerHTML == \"object\" && n.dangerouslySetInnerHTML !== null && n.dangerouslySetInnerHTML.__html != null;\n }\n var Gl = typeof setTimeout == \"function\" ? setTimeout : void 0, Wc = typeof clearTimeout == \"function\" ? clearTimeout : void 0, Au = typeof Promise == \"function\" ? Promise : void 0, Qc = typeof queueMicrotask == \"function\" ? queueMicrotask : typeof Au < \"u\" ? function(e) {\n return Au.resolve(null).then(e).catch($c);\n } : Gl;\n function $c(e) {\n setTimeout(function() {\n throw e;\n });\n }\n function hl(e, n) {\n var t = n, r = 0;\n do {\n var l = t.nextSibling;\n if (e.removeChild(t), l && l.nodeType === 8) if (t = l.data, t === \"/$\") {\n if (r === 0) {\n e.removeChild(l), Nt(n);\n return;\n }\n r--;\n } else t !== \"$\" && t !== \"$?\" && t !== \"$!\" || r++;\n t = l;\n }while (t)\n Nt(n);\n }\n function Je(e) {\n for(; e != null; e = e.nextSibling){\n var n = e.nodeType;\n if (n === 1 || n === 3) break;\n if (n === 8) {\n if (n = e.data, n === \"$\" || n === \"$!\" || n === \"$?\") break;\n if (n === \"/$\") return null;\n }\n }\n return e;\n }\n function Bu(e) {\n e = e.previousSibling;\n for(var n = 0; e;){\n if (e.nodeType === 8) {\n var t = e.data;\n if (t === \"$\" || t === \"$!\" || t === \"$?\") {\n if (n === 0) return e;\n n--;\n } else t === \"/$\" && n++;\n }\n e = e.previousSibling;\n }\n return null;\n }\n var qn = Math.random().toString(36).slice(2), ze = \"__reactFiber$\" + qn, Tt = \"__reactProps$\" + qn, Ie = \"__reactContainer$\" + qn, Zl = \"__reactEvents$\" + qn, Kc = \"__reactListeners$\" + qn, Yc = \"__reactHandles$\" + qn;\n function dn(e) {\n var n = e[ze];\n if (n) return n;\n for(var t = e.parentNode; t;){\n if (n = t[Ie] || t[ze]) {\n if (t = n.alternate, n.child !== null || t !== null && t.child !== null) for(e = Bu(e); e !== null;){\n if (t = e[ze]) return t;\n e = Bu(e);\n }\n return n;\n }\n e = t, t = e.parentNode;\n }\n return null;\n }\n function Vt(e) {\n return e = e[ze] || e[Ie], !e || e.tag !== 5 && e.tag !== 6 && e.tag !== 13 && e.tag !== 3 ? null : e;\n }\n function Mn(e) {\n if (e.tag === 5 || e.tag === 6) return e.stateNode;\n throw Error(v(33));\n }\n function Qr(e) {\n return e[Tt] || null;\n }\n var Jl = [], Dn = -1;\n function un(e) {\n return {\n current: e\n };\n }\n function M(e) {\n 0 > Dn || (e.current = Jl[Dn], Jl[Dn] = null, Dn--);\n }\n function L(e, n) {\n Dn++, Jl[Dn] = e.current, e.current = n;\n }\n var rn = {}, J = un(rn), re = un(!1), yn = rn;\n function $n(e, n) {\n var t = e.type.contextTypes;\n if (!t) return rn;\n var r = e.stateNode;\n if (r && r.__reactInternalMemoizedUnmaskedChildContext === n) return r.__reactInternalMemoizedMaskedChildContext;\n var l = {}, i;\n for(i in t)l[i] = n[i];\n return r && (e = e.stateNode, e.__reactInternalMemoizedUnmaskedChildContext = n, e.__reactInternalMemoizedMaskedChildContext = l), l;\n }\n function le(e) {\n return e = e.childContextTypes, e != null;\n }\n function Nr() {\n M(re), M(J);\n }\n function Hu(e, n, t) {\n if (J.current !== rn) throw Error(v(168));\n L(J, n), L(re, t);\n }\n function ds(e, n, t) {\n var r = e.stateNode;\n if (n = n.childContextTypes, typeof r.getChildContext != \"function\") return t;\n r = r.getChildContext();\n for(var l in r)if (!(l in n)) throw Error(v(108, Oa(e) || \"Unknown\", l));\n return F({}, t, r);\n }\n function _r(e) {\n return e = (e = e.stateNode) && e.__reactInternalMemoizedMergedChildContext || rn, yn = J.current, L(J, e), L(re, re.current), !0;\n }\n function Wu(e, n, t) {\n var r = e.stateNode;\n if (!r) throw Error(v(169));\n t ? (e = ds(e, n, yn), r.__reactInternalMemoizedMergedChildContext = e, M(re), M(J), L(J, e)) : M(re), L(re, t);\n }\n var Me = null, $r = !1, vl = !1;\n function ps(e) {\n Me === null ? Me = [\n e\n ] : Me.push(e);\n }\n function Xc(e) {\n $r = !0, ps(e);\n }\n function on() {\n if (!vl && Me !== null) {\n vl = !0;\n var e = 0, n = P;\n try {\n var t = Me;\n for(P = 1; e < t.length; e++){\n var r = t[e];\n do r = r(!0);\n while (r !== null)\n }\n Me = null, $r = !1;\n } catch (l) {\n throw Me !== null && (Me = Me.slice(e + 1)), jo(xi, on), l;\n } finally{\n P = n, vl = !1;\n }\n }\n return null;\n }\n var On = [], Rn = 0, zr = null, Pr = 0, de = [], pe = 0, gn = null, De = 1, Oe = \"\";\n function cn(e, n) {\n On[Rn++] = Pr, On[Rn++] = zr, zr = e, Pr = n;\n }\n function ms(e, n, t) {\n de[pe++] = De, de[pe++] = Oe, de[pe++] = gn, gn = e;\n var r = De;\n e = Oe;\n var l = 32 - Ee(r) - 1;\n r &= ~(1 << l), t += 1;\n var i = 32 - Ee(n) + l;\n if (30 < i) {\n var u = l - l % 5;\n i = (r & (1 << u) - 1).toString(32), r >>= u, l -= u, De = 1 << 32 - Ee(n) + l | t << l | r, Oe = i + e;\n } else De = 1 << i | t << l | r, Oe = e;\n }\n function Oi(e) {\n e.return !== null && (cn(e, 1), ms(e, 1, 0));\n }\n function Ri(e) {\n for(; e === zr;)zr = On[--Rn], On[Rn] = null, Pr = On[--Rn], On[Rn] = null;\n for(; e === gn;)gn = de[--pe], de[pe] = null, Oe = de[--pe], de[pe] = null, De = de[--pe], de[pe] = null;\n }\n var se = null, oe = null, D = !1, ke = null;\n function hs(e, n) {\n var t = me(5, null, null, 0);\n t.elementType = \"DELETED\", t.stateNode = n, t.return = e, n = e.deletions, n === null ? (e.deletions = [\n t\n ], e.flags |= 16) : n.push(t);\n }\n function Qu(e, n) {\n switch(e.tag){\n case 5:\n var t = e.type;\n return n = n.nodeType !== 1 || t.toLowerCase() !== n.nodeName.toLowerCase() ? null : n, n !== null ? (e.stateNode = n, se = e, oe = Je(n.firstChild), !0) : !1;\n case 6:\n return n = e.pendingProps === \"\" || n.nodeType !== 3 ? null : n, n !== null ? (e.stateNode = n, se = e, oe = null, !0) : !1;\n case 13:\n return n = n.nodeType !== 8 ? null : n, n !== null ? (t = gn !== null ? {\n id: De,\n overflow: Oe\n } : null, e.memoizedState = {\n dehydrated: n,\n treeContext: t,\n retryLane: 1073741824\n }, t = me(18, null, null, 0), t.stateNode = n, t.return = e, e.child = t, se = e, oe = null, !0) : !1;\n default:\n return !1;\n }\n }\n function ql(e) {\n return (e.mode & 1) !== 0 && (e.flags & 128) === 0;\n }\n function bl(e) {\n if (D) {\n var n = oe;\n if (n) {\n var t = n;\n if (!Qu(e, n)) {\n if (ql(e)) throw Error(v(418));\n n = Je(t.nextSibling);\n var r = se;\n n && Qu(e, n) ? hs(r, t) : (e.flags = e.flags & -4097 | 2, D = !1, se = e);\n }\n } else {\n if (ql(e)) throw Error(v(418));\n e.flags = e.flags & -4097 | 2, D = !1, se = e;\n }\n }\n }\n function $u(e) {\n for(e = e.return; e !== null && e.tag !== 5 && e.tag !== 3 && e.tag !== 13;)e = e.return;\n se = e;\n }\n function nr(e) {\n if (e !== se) return !1;\n if (!D) return $u(e), D = !0, !1;\n var n;\n if ((n = e.tag !== 3) && !(n = e.tag !== 5) && (n = e.type, n = n !== \"head\" && n !== \"body\" && !Xl(e.type, e.memoizedProps)), n && (n = oe)) {\n if (ql(e)) throw vs(), Error(v(418));\n for(; n;)hs(e, n), n = Je(n.nextSibling);\n }\n if ($u(e), e.tag === 13) {\n if (e = e.memoizedState, e = e !== null ? e.dehydrated : null, !e) throw Error(v(317));\n e: {\n for(e = e.nextSibling, n = 0; e;){\n if (e.nodeType === 8) {\n var t = e.data;\n if (t === \"/$\") {\n if (n === 0) {\n oe = Je(e.nextSibling);\n break e;\n }\n n--;\n } else t !== \"$\" && t !== \"$!\" && t !== \"$?\" || n++;\n }\n e = e.nextSibling;\n }\n oe = null;\n }\n } else oe = se ? Je(e.stateNode.nextSibling) : null;\n return !0;\n }\n function vs() {\n for(var e = oe; e;)e = Je(e.nextSibling);\n }\n function Kn() {\n oe = se = null, D = !1;\n }\n function Fi(e) {\n ke === null ? ke = [\n e\n ] : ke.push(e);\n }\n var Gc = Ve.ReactCurrentBatchConfig;\n function rt(e, n, t) {\n if (e = t.ref, e !== null && typeof e != \"function\" && typeof e != \"object\") {\n if (t._owner) {\n if (t = t._owner, t) {\n if (t.tag !== 1) throw Error(v(309));\n var r = t.stateNode;\n }\n if (!r) throw Error(v(147, e));\n var l = r, i = \"\" + e;\n return n !== null && n.ref !== null && typeof n.ref == \"function\" && n.ref._stringRef === i ? n.ref : (n = function(u) {\n var o = l.refs;\n u === null ? delete o[i] : o[i] = u;\n }, n._stringRef = i, n);\n }\n if (typeof e != \"string\") throw Error(v(284));\n if (!t._owner) throw Error(v(290, e));\n }\n return e;\n }\n function tr(e, n) {\n throw e = Object.prototype.toString.call(n), Error(v(31, e === \"[object Object]\" ? \"object with keys {\" + Object.keys(n).join(\", \") + \"}\" : e));\n }\n function Ku(e) {\n var n = e._init;\n return n(e._payload);\n }\n function ys(e) {\n function n(c, a) {\n if (e) {\n var f = c.deletions;\n f === null ? (c.deletions = [\n a\n ], c.flags |= 16) : f.push(a);\n }\n }\n function t(c, a) {\n if (!e) return null;\n for(; a !== null;)n(c, a), a = a.sibling;\n return null;\n }\n function r(c, a) {\n for(c = new Map; a !== null;)a.key !== null ? c.set(a.key, a) : c.set(a.index, a), a = a.sibling;\n return c;\n }\n function l(c, a) {\n return c = nn(c, a), c.index = 0, c.sibling = null, c;\n }\n function i(c, a, f) {\n return c.index = f, e ? (f = c.alternate, f !== null ? (f = f.index, f < a ? (c.flags |= 2, a) : f) : (c.flags |= 2, a)) : (c.flags |= 1048576, a);\n }\n function u(c) {\n return e && c.alternate === null && (c.flags |= 2), c;\n }\n function o(c, a, f, y) {\n return a === null || a.tag !== 6 ? (a = Cl(f, c.mode, y), a.return = c, a) : (a = l(a, f), a.return = c, a);\n }\n function s(c, a, f, y) {\n var E = f.type;\n return E === zn ? m(c, a, f.props.children, y, f.key) : a !== null && (a.elementType === E || typeof E == \"object\" && E !== null && E.$$typeof === He && Ku(E) === a.type) ? (y = l(a, f.props), y.ref = rt(c, a, f), y.return = c, y) : (y = hr(f.type, f.key, f.props, null, c.mode, y), y.ref = rt(c, a, f), y.return = c, y);\n }\n function d(c, a, f, y) {\n return a === null || a.tag !== 4 || a.stateNode.containerInfo !== f.containerInfo || a.stateNode.implementation !== f.implementation ? (a = xl(f, c.mode, y), a.return = c, a) : (a = l(a, f.children || []), a.return = c, a);\n }\n function m(c, a, f, y, E) {\n return a === null || a.tag !== 7 ? (a = vn(f, c.mode, y, E), a.return = c, a) : (a = l(a, f), a.return = c, a);\n }\n function h(c, a, f) {\n if (typeof a == \"string\" && a !== \"\" || typeof a == \"number\") return a = Cl(\"\" + a, c.mode, f), a.return = c, a;\n if (typeof a == \"object\" && a !== null) {\n switch(a.$$typeof){\n case Bt:\n return f = hr(a.type, a.key, a.props, null, c.mode, f), f.ref = rt(c, null, a), f.return = c, f;\n case _n:\n return a = xl(a, c.mode, f), a.return = c, a;\n case He:\n var y = a._init;\n return h(c, y(a._payload), f);\n }\n if (st(a) || bn(a)) return a = vn(a, c.mode, f, null), a.return = c, a;\n tr(c, a);\n }\n return null;\n }\n function p(c, a, f, y) {\n var E = a !== null ? a.key : null;\n if (typeof f == \"string\" && f !== \"\" || typeof f == \"number\") return E !== null ? null : o(c, a, \"\" + f, y);\n if (typeof f == \"object\" && f !== null) {\n switch(f.$$typeof){\n case Bt:\n return f.key === E ? s(c, a, f, y) : null;\n case _n:\n return f.key === E ? d(c, a, f, y) : null;\n case He:\n return E = f._init, p(c, a, E(f._payload), y);\n }\n if (st(f) || bn(f)) return E !== null ? null : m(c, a, f, y, null);\n tr(c, f);\n }\n return null;\n }\n function g(c, a, f, y, E) {\n if (typeof y == \"string\" && y !== \"\" || typeof y == \"number\") return c = c.get(f) || null, o(a, c, \"\" + y, E);\n if (typeof y == \"object\" && y !== null) {\n switch(y.$$typeof){\n case Bt:\n return c = c.get(y.key === null ? f : y.key) || null, s(a, c, y, E);\n case _n:\n return c = c.get(y.key === null ? f : y.key) || null, d(a, c, y, E);\n case He:\n var C = y._init;\n return g(c, a, f, C(y._payload), E);\n }\n if (st(y) || bn(y)) return c = c.get(f) || null, m(a, c, y, E, null);\n tr(a, y);\n }\n return null;\n }\n function S(c, a, f, y) {\n for(var E = null, C = null, x = a, N = a = 0, H = null; x !== null && N < f.length; N++){\n x.index > N ? (H = x, x = null) : H = x.sibling;\n var z = p(c, x, f[N], y);\n if (z === null) {\n x === null && (x = H);\n break;\n }\n e && x && z.alternate === null && n(c, x), a = i(z, a, N), C === null ? E = z : C.sibling = z, C = z, x = H;\n }\n if (N === f.length) return t(c, x), D && cn(c, N), E;\n if (x === null) {\n for(; N < f.length; N++)x = h(c, f[N], y), x !== null && (a = i(x, a, N), C === null ? E = x : C.sibling = x, C = x);\n return D && cn(c, N), E;\n }\n for(x = r(c, x); N < f.length; N++)H = g(x, c, N, f[N], y), H !== null && (e && H.alternate !== null && x.delete(H.key === null ? N : H.key), a = i(H, a, N), C === null ? E = H : C.sibling = H, C = H);\n return e && x.forEach(function(Ae) {\n return n(c, Ae);\n }), D && cn(c, N), E;\n }\n function k(c, a, f, y) {\n var E = bn(f);\n if (typeof E != \"function\") throw Error(v(150));\n if (f = E.call(f), f == null) throw Error(v(151));\n for(var C = E = null, x = a, N = a = 0, H = null, z = f.next(); x !== null && !z.done; N++, z = f.next()){\n x.index > N ? (H = x, x = null) : H = x.sibling;\n var Ae = p(c, x, z.value, y);\n if (Ae === null) {\n x === null && (x = H);\n break;\n }\n e && x && Ae.alternate === null && n(c, x), a = i(Ae, a, N), C === null ? E = Ae : C.sibling = Ae, C = Ae, x = H;\n }\n if (z.done) return t(c, x), D && cn(c, N), E;\n if (x === null) {\n for(; !z.done; N++, z = f.next())z = h(c, z.value, y), z !== null && (a = i(z, a, N), C === null ? E = z : C.sibling = z, C = z);\n return D && cn(c, N), E;\n }\n for(x = r(c, x); !z.done; N++, z = f.next())z = g(x, c, N, z.value, y), z !== null && (e && z.alternate !== null && x.delete(z.key === null ? N : z.key), a = i(z, a, N), C === null ? E = z : C.sibling = z, C = z);\n return e && x.forEach(function(Sa) {\n return n(c, Sa);\n }), D && cn(c, N), E;\n }\n function U(c, a, f, y) {\n if (typeof f == \"object\" && f !== null && f.type === zn && f.key === null && (f = f.props.children), typeof f == \"object\" && f !== null) {\n switch(f.$$typeof){\n case Bt:\n e: {\n for(var E = f.key, C = a; C !== null;){\n if (C.key === E) {\n if (E = f.type, E === zn) {\n if (C.tag === 7) {\n t(c, C.sibling), a = l(C, f.props.children), a.return = c, c = a;\n break e;\n }\n } else if (C.elementType === E || typeof E == \"object\" && E !== null && E.$$typeof === He && Ku(E) === C.type) {\n t(c, C.sibling), a = l(C, f.props), a.ref = rt(c, C, f), a.return = c, c = a;\n break e;\n }\n t(c, C);\n break;\n } else n(c, C);\n C = C.sibling;\n }\n f.type === zn ? (a = vn(f.props.children, c.mode, y, f.key), a.return = c, c = a) : (y = hr(f.type, f.key, f.props, null, c.mode, y), y.ref = rt(c, a, f), y.return = c, c = y);\n }\n return u(c);\n case _n:\n e: {\n for(C = f.key; a !== null;){\n if (a.key === C) if (a.tag === 4 && a.stateNode.containerInfo === f.containerInfo && a.stateNode.implementation === f.implementation) {\n t(c, a.sibling), a = l(a, f.children || []), a.return = c, c = a;\n break e;\n } else {\n t(c, a);\n break;\n }\n else n(c, a);\n a = a.sibling;\n }\n a = xl(f, c.mode, y), a.return = c, c = a;\n }\n return u(c);\n case He:\n return C = f._init, U(c, a, C(f._payload), y);\n }\n if (st(f)) return S(c, a, f, y);\n if (bn(f)) return k(c, a, f, y);\n tr(c, f);\n }\n return typeof f == \"string\" && f !== \"\" || typeof f == \"number\" ? (f = \"\" + f, a !== null && a.tag === 6 ? (t(c, a.sibling), a = l(a, f), a.return = c, c = a) : (t(c, a), a = Cl(f, c.mode, y), a.return = c, c = a), u(c)) : t(c, a);\n }\n return U;\n }\n var Yn = ys(!0), gs = ys(!1), Lr = un(null), Tr = null, Fn = null, Ii = null;\n function Ui() {\n Ii = Fn = Tr = null;\n }\n function ji(e) {\n var n = Lr.current;\n M(Lr), e._currentValue = n;\n }\n function ei(e, n, t) {\n for(; e !== null;){\n var r = e.alternate;\n if ((e.childLanes & n) !== n ? (e.childLanes |= n, r !== null && (r.childLanes |= n)) : r !== null && (r.childLanes & n) !== n && (r.childLanes |= n), e === t) break;\n e = e.return;\n }\n }\n function Hn(e, n) {\n Tr = e, Ii = Fn = null, e = e.dependencies, e !== null && e.firstContext !== null && (e.lanes & n && (te = !0), e.firstContext = null);\n }\n function ve(e) {\n var n = e._currentValue;\n if (Ii !== e) if (e = {\n context: e,\n memoizedValue: n,\n next: null\n }, Fn === null) {\n if (Tr === null) throw Error(v(308));\n Fn = e, Tr.dependencies = {\n lanes: 0,\n firstContext: e\n };\n } else Fn = Fn.next = e;\n return n;\n }\n var pn = null;\n function Vi(e) {\n pn === null ? pn = [\n e\n ] : pn.push(e);\n }\n function ws(e, n, t, r) {\n var l = n.interleaved;\n return l === null ? (t.next = t, Vi(n)) : (t.next = l.next, l.next = t), n.interleaved = t, Ue(e, r);\n }\n function Ue(e, n) {\n e.lanes |= n;\n var t = e.alternate;\n for(t !== null && (t.lanes |= n), t = e, e = e.return; e !== null;)e.childLanes |= n, t = e.alternate, t !== null && (t.childLanes |= n), t = e, e = e.return;\n return t.tag === 3 ? t.stateNode : null;\n }\n var We = !1;\n function Ai(e) {\n e.updateQueue = {\n baseState: e.memoizedState,\n firstBaseUpdate: null,\n lastBaseUpdate: null,\n shared: {\n pending: null,\n interleaved: null,\n lanes: 0\n },\n effects: null\n };\n }\n function Ss(e, n) {\n e = e.updateQueue, n.updateQueue === e && (n.updateQueue = {\n baseState: e.baseState,\n firstBaseUpdate: e.firstBaseUpdate,\n lastBaseUpdate: e.lastBaseUpdate,\n shared: e.shared,\n effects: e.effects\n });\n }\n function Re(e, n) {\n return {\n eventTime: e,\n lane: n,\n tag: 0,\n payload: null,\n callback: null,\n next: null\n };\n }\n function qe(e, n, t) {\n var r = e.updateQueue;\n if (r === null) return null;\n if (r = r.shared, _ & 2) {\n var l = r.pending;\n return l === null ? n.next = n : (n.next = l.next, l.next = n), r.pending = n, Ue(e, t);\n }\n return l = r.interleaved, l === null ? (n.next = n, Vi(r)) : (n.next = l.next, l.next = n), r.interleaved = n, Ue(e, t);\n }\n function ar(e, n, t) {\n if (n = n.updateQueue, n !== null && (n = n.shared, (t & 4194240) !== 0)) {\n var r = n.lanes;\n r &= e.pendingLanes, t |= r, n.lanes = t, Ni(e, t);\n }\n }\n function Yu(e, n) {\n var t = e.updateQueue, r = e.alternate;\n if (r !== null && (r = r.updateQueue, t === r)) {\n var l = null, i = null;\n if (t = t.firstBaseUpdate, t !== null) {\n do {\n var u = {\n eventTime: t.eventTime,\n lane: t.lane,\n tag: t.tag,\n payload: t.payload,\n callback: t.callback,\n next: null\n };\n i === null ? l = i = u : i = i.next = u, t = t.next;\n }while (t !== null)\n i === null ? l = i = n : i = i.next = n;\n } else l = i = n;\n t = {\n baseState: r.baseState,\n firstBaseUpdate: l,\n lastBaseUpdate: i,\n shared: r.shared,\n effects: r.effects\n }, e.updateQueue = t;\n return;\n }\n e = t.lastBaseUpdate, e === null ? t.firstBaseUpdate = n : e.next = n, t.lastBaseUpdate = n;\n }\n function Mr(e, n, t, r) {\n var l = e.updateQueue;\n We = !1;\n var i = l.firstBaseUpdate, u = l.lastBaseUpdate, o = l.shared.pending;\n if (o !== null) {\n l.shared.pending = null;\n var s = o, d = s.next;\n s.next = null, u === null ? i = d : u.next = d, u = s;\n var m = e.alternate;\n m !== null && (m = m.updateQueue, o = m.lastBaseUpdate, o !== u && (o === null ? m.firstBaseUpdate = d : o.next = d, m.lastBaseUpdate = s));\n }\n if (i !== null) {\n var h = l.baseState;\n u = 0, m = d = s = null, o = i;\n do {\n var p = o.lane, g = o.eventTime;\n if ((r & p) === p) {\n m !== null && (m = m.next = {\n eventTime: g,\n lane: 0,\n tag: o.tag,\n payload: o.payload,\n callback: o.callback,\n next: null\n });\n e: {\n var S = e, k = o;\n switch(p = n, g = t, k.tag){\n case 1:\n if (S = k.payload, typeof S == \"function\") {\n h = S.call(g, h, p);\n break e;\n }\n h = S;\n break e;\n case 3:\n S.flags = S.flags & -65537 | 128;\n case 0:\n if (S = k.payload, p = typeof S == \"function\" ? S.call(g, h, p) : S, p == null) break e;\n h = F({}, h, p);\n break e;\n case 2:\n We = !0;\n }\n }\n o.callback !== null && o.lane !== 0 && (e.flags |= 64, p = l.effects, p === null ? l.effects = [\n o\n ] : p.push(o));\n } else g = {\n eventTime: g,\n lane: p,\n tag: o.tag,\n payload: o.payload,\n callback: o.callback,\n next: null\n }, m === null ? (d = m = g, s = h) : m = m.next = g, u |= p;\n if (o = o.next, o === null) {\n if (o = l.shared.pending, o === null) break;\n p = o, o = p.next, p.next = null, l.lastBaseUpdate = p, l.shared.pending = null;\n }\n }while (!0)\n if (m === null && (s = h), l.baseState = s, l.firstBaseUpdate = d, l.lastBaseUpdate = m, n = l.shared.interleaved, n !== null) {\n l = n;\n do u |= l.lane, l = l.next;\n while (l !== n)\n } else i === null && (l.shared.lanes = 0);\n Sn |= u, e.lanes = u, e.memoizedState = h;\n }\n }\n function Xu(e, n, t) {\n if (e = n.effects, n.effects = null, e !== null) for(n = 0; n < e.length; n++){\n var r = e[n], l = r.callback;\n if (l !== null) {\n if (r.callback = null, r = t, typeof l != \"function\") throw Error(v(191, l));\n l.call(r);\n }\n }\n }\n var At = {}, Le = un(At), Mt = un(At), Dt = un(At);\n function mn(e) {\n if (e === At) throw Error(v(174));\n return e;\n }\n function Bi(e, n) {\n switch(L(Dt, n), L(Mt, e), L(Le, At), e = n.nodeType, e){\n case 9:\n case 11:\n n = (n = n.documentElement) ? n.namespaceURI : Rl(null, \"\");\n break;\n default:\n e = e === 8 ? n.parentNode : n, n = e.namespaceURI || null, e = e.tagName, n = Rl(n, e);\n }\n M(Le), L(Le, n);\n }\n function Xn() {\n M(Le), M(Mt), M(Dt);\n }\n function ks(e) {\n mn(Dt.current);\n var n = mn(Le.current), t = Rl(n, e.type);\n n !== t && (L(Mt, e), L(Le, t));\n }\n function Hi(e) {\n Mt.current === e && (M(Le), M(Mt));\n }\n var O = un(0);\n function Dr(e) {\n for(var n = e; n !== null;){\n if (n.tag === 13) {\n var t = n.memoizedState;\n if (t !== null && (t = t.dehydrated, t === null || t.data === \"$?\" || t.data === \"$!\")) return n;\n } else if (n.tag === 19 && n.memoizedProps.revealOrder !== void 0) {\n if (n.flags & 128) return n;\n } else if (n.child !== null) {\n n.child.return = n, n = n.child;\n continue;\n }\n if (n === e) break;\n for(; n.sibling === null;){\n if (n.return === null || n.return === e) return null;\n n = n.return;\n }\n n.sibling.return = n.return, n = n.sibling;\n }\n return null;\n }\n var yl = [];\n function Wi() {\n for(var e = 0; e < yl.length; e++)yl[e]._workInProgressVersionPrimary = null;\n yl.length = 0;\n }\n var cr = Ve.ReactCurrentDispatcher, gl = Ve.ReactCurrentBatchConfig, wn = 0, R = null, A = null, W = null, Or = !1, vt = !1, Ot = 0, Zc = 0;\n function X() {\n throw Error(v(321));\n }\n function Qi(e, n) {\n if (n === null) return !1;\n for(var t = 0; t < n.length && t < e.length; t++)if (!xe(e[t], n[t])) return !1;\n return !0;\n }\n function $i(e, n, t, r, l, i) {\n if (wn = i, R = n, n.memoizedState = null, n.updateQueue = null, n.lanes = 0, cr.current = e === null || e.memoizedState === null ? ef : nf, e = t(r, l), vt) {\n i = 0;\n do {\n if (vt = !1, Ot = 0, 25 <= i) throw Error(v(301));\n i += 1, W = A = null, n.updateQueue = null, cr.current = tf, e = t(r, l);\n }while (vt)\n }\n if (cr.current = Rr, n = A !== null && A.next !== null, wn = 0, W = A = R = null, Or = !1, n) throw Error(v(300));\n return e;\n }\n function Ki() {\n var e = Ot !== 0;\n return Ot = 0, e;\n }\n function _e() {\n var e = {\n memoizedState: null,\n baseState: null,\n baseQueue: null,\n queue: null,\n next: null\n };\n return W === null ? R.memoizedState = W = e : W = W.next = e, W;\n }\n function ye() {\n if (A === null) {\n var e = R.alternate;\n e = e !== null ? e.memoizedState : null;\n } else e = A.next;\n var n = W === null ? R.memoizedState : W.next;\n if (n !== null) W = n, A = e;\n else {\n if (e === null) throw Error(v(310));\n A = e, e = {\n memoizedState: A.memoizedState,\n baseState: A.baseState,\n baseQueue: A.baseQueue,\n queue: A.queue,\n next: null\n }, W === null ? R.memoizedState = W = e : W = W.next = e;\n }\n return W;\n }\n function Rt(e, n) {\n return typeof n == \"function\" ? n(e) : n;\n }\n function wl(e) {\n var n = ye(), t = n.queue;\n if (t === null) throw Error(v(311));\n t.lastRenderedReducer = e;\n var r = A, l = r.baseQueue, i = t.pending;\n if (i !== null) {\n if (l !== null) {\n var u = l.next;\n l.next = i.next, i.next = u;\n }\n r.baseQueue = l = i, t.pending = null;\n }\n if (l !== null) {\n i = l.next, r = r.baseState;\n var o = u = null, s = null, d = i;\n do {\n var m = d.lane;\n if ((wn & m) === m) s !== null && (s = s.next = {\n lane: 0,\n action: d.action,\n hasEagerState: d.hasEagerState,\n eagerState: d.eagerState,\n next: null\n }), r = d.hasEagerState ? d.eagerState : e(r, d.action);\n else {\n var h = {\n lane: m,\n action: d.action,\n hasEagerState: d.hasEagerState,\n eagerState: d.eagerState,\n next: null\n };\n s === null ? (o = s = h, u = r) : s = s.next = h, R.lanes |= m, Sn |= m;\n }\n d = d.next;\n }while (d !== null && d !== i)\n s === null ? u = r : s.next = o, xe(r, n.memoizedState) || (te = !0), n.memoizedState = r, n.baseState = u, n.baseQueue = s, t.lastRenderedState = r;\n }\n if (e = t.interleaved, e !== null) {\n l = e;\n do i = l.lane, R.lanes |= i, Sn |= i, l = l.next;\n while (l !== e)\n } else l === null && (t.lanes = 0);\n return [\n n.memoizedState,\n t.dispatch\n ];\n }\n function Sl(e) {\n var n = ye(), t = n.queue;\n if (t === null) throw Error(v(311));\n t.lastRenderedReducer = e;\n var r = t.dispatch, l = t.pending, i = n.memoizedState;\n if (l !== null) {\n t.pending = null;\n var u = l = l.next;\n do i = e(i, u.action), u = u.next;\n while (u !== l)\n xe(i, n.memoizedState) || (te = !0), n.memoizedState = i, n.baseQueue === null && (n.baseState = i), t.lastRenderedState = i;\n }\n return [\n i,\n r\n ];\n }\n function Es() {}\n function Cs(e, n) {\n var t = R, r = ye(), l = n(), i = !xe(r.memoizedState, l);\n if (i && (r.memoizedState = l, te = !0), r = r.queue, Yi(_s.bind(null, t, r, e), [\n e\n ]), r.getSnapshot !== n || i || W !== null && W.memoizedState.tag & 1) {\n if (t.flags |= 2048, Ft(9, Ns.bind(null, t, r, l, n), void 0, null), Q === null) throw Error(v(349));\n wn & 30 || xs(t, n, l);\n }\n return l;\n }\n function xs(e, n, t) {\n e.flags |= 16384, e = {\n getSnapshot: n,\n value: t\n }, n = R.updateQueue, n === null ? (n = {\n lastEffect: null,\n stores: null\n }, R.updateQueue = n, n.stores = [\n e\n ]) : (t = n.stores, t === null ? n.stores = [\n e\n ] : t.push(e));\n }\n function Ns(e, n, t, r) {\n n.value = t, n.getSnapshot = r, zs(n) && Ps(e);\n }\n function _s(e, n, t) {\n return t(function() {\n zs(n) && Ps(e);\n });\n }\n function zs(e) {\n var n = e.getSnapshot;\n e = e.value;\n try {\n var t = n();\n return !xe(e, t);\n } catch {\n return !0;\n }\n }\n function Ps(e) {\n var n = Ue(e, 1);\n n !== null && Ce(n, e, 1, -1);\n }\n function Gu(e) {\n var n = _e();\n return typeof e == \"function\" && (e = e()), n.memoizedState = n.baseState = e, e = {\n pending: null,\n interleaved: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: Rt,\n lastRenderedState: e\n }, n.queue = e, e = e.dispatch = bc.bind(null, R, e), [\n n.memoizedState,\n e\n ];\n }\n function Ft(e, n, t, r) {\n return e = {\n tag: e,\n create: n,\n destroy: t,\n deps: r,\n next: null\n }, n = R.updateQueue, n === null ? (n = {\n lastEffect: null,\n stores: null\n }, R.updateQueue = n, n.lastEffect = e.next = e) : (t = n.lastEffect, t === null ? n.lastEffect = e.next = e : (r = t.next, t.next = e, e.next = r, n.lastEffect = e)), e;\n }\n function Ls() {\n return ye().memoizedState;\n }\n function fr(e, n, t, r) {\n var l = _e();\n R.flags |= e, l.memoizedState = Ft(1 | n, t, void 0, r === void 0 ? null : r);\n }\n function Kr(e, n, t, r) {\n var l = ye();\n r = r === void 0 ? null : r;\n var i = void 0;\n if (A !== null) {\n var u = A.memoizedState;\n if (i = u.destroy, r !== null && Qi(r, u.deps)) {\n l.memoizedState = Ft(n, t, i, r);\n return;\n }\n }\n R.flags |= e, l.memoizedState = Ft(1 | n, t, i, r);\n }\n function Zu(e, n) {\n return fr(8390656, 8, e, n);\n }\n function Yi(e, n) {\n return Kr(2048, 8, e, n);\n }\n function Ts(e, n) {\n return Kr(4, 2, e, n);\n }\n function Ms(e, n) {\n return Kr(4, 4, e, n);\n }\n function Ds(e, n) {\n if (typeof n == \"function\") return e = e(), n(e), function() {\n n(null);\n };\n if (n != null) return e = e(), n.current = e, function() {\n n.current = null;\n };\n }\n function Os(e, n, t) {\n return t = t != null ? t.concat([\n e\n ]) : null, Kr(4, 4, Ds.bind(null, n, e), t);\n }\n function Xi() {}\n function Rs(e, n) {\n var t = ye();\n n = n === void 0 ? null : n;\n var r = t.memoizedState;\n return r !== null && n !== null && Qi(n, r[1]) ? r[0] : (t.memoizedState = [\n e,\n n\n ], e);\n }\n function Fs(e, n) {\n var t = ye();\n n = n === void 0 ? null : n;\n var r = t.memoizedState;\n return r !== null && n !== null && Qi(n, r[1]) ? r[0] : (e = e(), t.memoizedState = [\n e,\n n\n ], e);\n }\n function Is(e, n, t) {\n return wn & 21 ? (xe(t, n) || (t = Bo(), R.lanes |= t, Sn |= t, e.baseState = !0), n) : (e.baseState && (e.baseState = !1, te = !0), e.memoizedState = t);\n }\n function Jc(e, n) {\n var t = P;\n P = t !== 0 && 4 > t ? t : 4, e(!0);\n var r = gl.transition;\n gl.transition = {};\n try {\n e(!1), n();\n } finally{\n P = t, gl.transition = r;\n }\n }\n function Us() {\n return ye().memoizedState;\n }\n function qc(e, n, t) {\n var r = en(e);\n if (t = {\n lane: r,\n action: t,\n hasEagerState: !1,\n eagerState: null,\n next: null\n }, js(e)) Vs(n, t);\n else if (t = ws(e, n, t, r), t !== null) {\n var l = b();\n Ce(t, e, r, l), As(t, n, r);\n }\n }\n function bc(e, n, t) {\n var r = en(e), l = {\n lane: r,\n action: t,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (js(e)) Vs(n, l);\n else {\n var i = e.alternate;\n if (e.lanes === 0 && (i === null || i.lanes === 0) && (i = n.lastRenderedReducer, i !== null)) try {\n var u = n.lastRenderedState, o = i(u, t);\n if (l.hasEagerState = !0, l.eagerState = o, xe(o, u)) {\n var s = n.interleaved;\n s === null ? (l.next = l, Vi(n)) : (l.next = s.next, s.next = l), n.interleaved = l;\n return;\n }\n } catch {} finally{}\n t = ws(e, n, l, r), t !== null && (l = b(), Ce(t, e, r, l), As(t, n, r));\n }\n }\n function js(e) {\n var n = e.alternate;\n return e === R || n !== null && n === R;\n }\n function Vs(e, n) {\n vt = Or = !0;\n var t = e.pending;\n t === null ? n.next = n : (n.next = t.next, t.next = n), e.pending = n;\n }\n function As(e, n, t) {\n if (t & 4194240) {\n var r = n.lanes;\n r &= e.pendingLanes, t |= r, n.lanes = t, Ni(e, t);\n }\n }\n var Rr = {\n readContext: ve,\n useCallback: X,\n useContext: X,\n useEffect: X,\n useImperativeHandle: X,\n useInsertionEffect: X,\n useLayoutEffect: X,\n useMemo: X,\n useReducer: X,\n useRef: X,\n useState: X,\n useDebugValue: X,\n useDeferredValue: X,\n useTransition: X,\n useMutableSource: X,\n useSyncExternalStore: X,\n useId: X,\n unstable_isNewReconciler: !1\n }, ef = {\n readContext: ve,\n useCallback: function(e, n) {\n return _e().memoizedState = [\n e,\n n === void 0 ? null : n\n ], e;\n },\n useContext: ve,\n useEffect: Zu,\n useImperativeHandle: function(e, n, t) {\n return t = t != null ? t.concat([\n e\n ]) : null, fr(4194308, 4, Ds.bind(null, n, e), t);\n },\n useLayoutEffect: function(e, n) {\n return fr(4194308, 4, e, n);\n },\n useInsertionEffect: function(e, n) {\n return fr(4, 2, e, n);\n },\n useMemo: function(e, n) {\n var t = _e();\n return n = n === void 0 ? null : n, e = e(), t.memoizedState = [\n e,\n n\n ], e;\n },\n useReducer: function(e, n, t) {\n var r = _e();\n return n = t !== void 0 ? t(n) : n, r.memoizedState = r.baseState = n, e = {\n pending: null,\n interleaved: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: e,\n lastRenderedState: n\n }, r.queue = e, e = e.dispatch = qc.bind(null, R, e), [\n r.memoizedState,\n e\n ];\n },\n useRef: function(e) {\n var n = _e();\n return e = {\n current: e\n }, n.memoizedState = e;\n },\n useState: Gu,\n useDebugValue: Xi,\n useDeferredValue: function(e) {\n return _e().memoizedState = e;\n },\n useTransition: function() {\n var e = Gu(!1), n = e[0];\n return e = Jc.bind(null, e[1]), _e().memoizedState = e, [\n n,\n e\n ];\n },\n useMutableSource: function() {},\n useSyncExternalStore: function(e, n, t) {\n var r = R, l = _e();\n if (D) {\n if (t === void 0) throw Error(v(407));\n t = t();\n } else {\n if (t = n(), Q === null) throw Error(v(349));\n wn & 30 || xs(r, n, t);\n }\n l.memoizedState = t;\n var i = {\n value: t,\n getSnapshot: n\n };\n return l.queue = i, Zu(_s.bind(null, r, i, e), [\n e\n ]), r.flags |= 2048, Ft(9, Ns.bind(null, r, i, t, n), void 0, null), t;\n },\n useId: function() {\n var e = _e(), n = Q.identifierPrefix;\n if (D) {\n var t = Oe, r = De;\n t = (r & ~(1 << 32 - Ee(r) - 1)).toString(32) + t, n = \":\" + n + \"R\" + t, t = Ot++, 0 < t && (n += \"H\" + t.toString(32)), n += \":\";\n } else t = Zc++, n = \":\" + n + \"r\" + t.toString(32) + \":\";\n return e.memoizedState = n;\n },\n unstable_isNewReconciler: !1\n }, nf = {\n readContext: ve,\n useCallback: Rs,\n useContext: ve,\n useEffect: Yi,\n useImperativeHandle: Os,\n useInsertionEffect: Ts,\n useLayoutEffect: Ms,\n useMemo: Fs,\n useReducer: wl,\n useRef: Ls,\n useState: function() {\n return wl(Rt);\n },\n useDebugValue: Xi,\n useDeferredValue: function(e) {\n var n = ye();\n return Is(n, A.memoizedState, e);\n },\n useTransition: function() {\n var e = wl(Rt)[0], n = ye().memoizedState;\n return [\n e,\n n\n ];\n },\n useMutableSource: Es,\n useSyncExternalStore: Cs,\n useId: Us,\n unstable_isNewReconciler: !1\n }, tf = {\n readContext: ve,\n useCallback: Rs,\n useContext: ve,\n useEffect: Yi,\n useImperativeHandle: Os,\n useInsertionEffect: Ts,\n useLayoutEffect: Ms,\n useMemo: Fs,\n useReducer: Sl,\n useRef: Ls,\n useState: function() {\n return Sl(Rt);\n },\n useDebugValue: Xi,\n useDeferredValue: function(e) {\n var n = ye();\n return A === null ? n.memoizedState = e : Is(n, A.memoizedState, e);\n },\n useTransition: function() {\n var e = Sl(Rt)[0], n = ye().memoizedState;\n return [\n e,\n n\n ];\n },\n useMutableSource: Es,\n useSyncExternalStore: Cs,\n useId: Us,\n unstable_isNewReconciler: !1\n };\n function we(e, n) {\n if (e && e.defaultProps) {\n n = F({}, n), e = e.defaultProps;\n for(var t in e)n[t] === void 0 && (n[t] = e[t]);\n return n;\n }\n return n;\n }\n function ni(e, n, t, r) {\n n = e.memoizedState, t = t(r, n), t = t == null ? n : F({}, n, t), e.memoizedState = t, e.lanes === 0 && (e.updateQueue.baseState = t);\n }\n var Yr = {\n isMounted: function(e) {\n return (e = e._reactInternals) ? Cn(e) === e : !1;\n },\n enqueueSetState: function(e, n, t) {\n e = e._reactInternals;\n var r = b(), l = en(e), i = Re(r, l);\n i.payload = n, t != null && (i.callback = t), n = qe(e, i, l), n !== null && (Ce(n, e, l, r), ar(n, e, l));\n },\n enqueueReplaceState: function(e, n, t) {\n e = e._reactInternals;\n var r = b(), l = en(e), i = Re(r, l);\n i.tag = 1, i.payload = n, t != null && (i.callback = t), n = qe(e, i, l), n !== null && (Ce(n, e, l, r), ar(n, e, l));\n },\n enqueueForceUpdate: function(e, n) {\n e = e._reactInternals;\n var t = b(), r = en(e), l = Re(t, r);\n l.tag = 2, n != null && (l.callback = n), n = qe(e, l, r), n !== null && (Ce(n, e, r, t), ar(n, e, r));\n }\n };\n function Ju(e, n, t, r, l, i, u) {\n return e = e.stateNode, typeof e.shouldComponentUpdate == \"function\" ? e.shouldComponentUpdate(r, i, u) : n.prototype && n.prototype.isPureReactComponent ? !zt(t, r) || !zt(l, i) : !0;\n }\n function Bs(e, n, t) {\n var r = !1, l = rn, i = n.contextType;\n return typeof i == \"object\" && i !== null ? i = ve(i) : (l = le(n) ? yn : J.current, r = n.contextTypes, i = (r = r != null) ? $n(e, l) : rn), n = new n(t, i), e.memoizedState = n.state !== null && n.state !== void 0 ? n.state : null, n.updater = Yr, e.stateNode = n, n._reactInternals = e, r && (e = e.stateNode, e.__reactInternalMemoizedUnmaskedChildContext = l, e.__reactInternalMemoizedMaskedChildContext = i), n;\n }\n function qu(e, n, t, r) {\n e = n.state, typeof n.componentWillReceiveProps == \"function\" && n.componentWillReceiveProps(t, r), typeof n.UNSAFE_componentWillReceiveProps == \"function\" && n.UNSAFE_componentWillReceiveProps(t, r), n.state !== e && Yr.enqueueReplaceState(n, n.state, null);\n }\n function ti(e, n, t, r) {\n var l = e.stateNode;\n l.props = t, l.state = e.memoizedState, l.refs = {}, Ai(e);\n var i = n.contextType;\n typeof i == \"object\" && i !== null ? l.context = ve(i) : (i = le(n) ? yn : J.current, l.context = $n(e, i)), l.state = e.memoizedState, i = n.getDerivedStateFromProps, typeof i == \"function\" && (ni(e, n, i, t), l.state = e.memoizedState), typeof n.getDerivedStateFromProps == \"function\" || typeof l.getSnapshotBeforeUpdate == \"function\" || typeof l.UNSAFE_componentWillMount != \"function\" && typeof l.componentWillMount != \"function\" || (n = l.state, typeof l.componentWillMount == \"function\" && l.componentWillMount(), typeof l.UNSAFE_componentWillMount == \"function\" && l.UNSAFE_componentWillMount(), n !== l.state && Yr.enqueueReplaceState(l, l.state, null), Mr(e, t, l, r), l.state = e.memoizedState), typeof l.componentDidMount == \"function\" && (e.flags |= 4194308);\n }\n function Gn(e, n) {\n try {\n var t = \"\", r = n;\n do t += Da(r), r = r.return;\n while (r)\n var l = t;\n } catch (i) {\n l = `\nError generating stack: ` + i.message + `\n` + i.stack;\n }\n return {\n value: e,\n source: n,\n stack: l,\n digest: null\n };\n }\n function kl(e, n, t) {\n return {\n value: e,\n source: null,\n stack: t ?? null,\n digest: n ?? null\n };\n }\n function ri(e, n) {\n try {\n console.error(n.value);\n } catch (t) {\n setTimeout(function() {\n throw t;\n });\n }\n }\n var rf = typeof WeakMap == \"function\" ? WeakMap : Map;\n function Hs(e, n, t) {\n t = Re(-1, t), t.tag = 3, t.payload = {\n element: null\n };\n var r = n.value;\n return t.callback = function() {\n Ir || (Ir = !0, pi = r), ri(e, n);\n }, t;\n }\n function Ws(e, n, t) {\n t = Re(-1, t), t.tag = 3;\n var r = e.type.getDerivedStateFromError;\n if (typeof r == \"function\") {\n var l = n.value;\n t.payload = function() {\n return r(l);\n }, t.callback = function() {\n ri(e, n);\n };\n }\n var i = e.stateNode;\n return i !== null && typeof i.componentDidCatch == \"function\" && (t.callback = function() {\n ri(e, n), typeof r != \"function\" && (be === null ? be = new Set([\n this\n ]) : be.add(this));\n var u = n.stack;\n this.componentDidCatch(n.value, {\n componentStack: u !== null ? u : \"\"\n });\n }), t;\n }\n function bu(e, n, t) {\n var r = e.pingCache;\n if (r === null) {\n r = e.pingCache = new rf;\n var l = new Set;\n r.set(n, l);\n } else l = r.get(n), l === void 0 && (l = new Set, r.set(n, l));\n l.has(t) || (l.add(t), e = gf.bind(null, e, n, t), n.then(e, e));\n }\n function eo(e) {\n do {\n var n;\n if ((n = e.tag === 13) && (n = e.memoizedState, n = n !== null ? n.dehydrated !== null : !0), n) return e;\n e = e.return;\n }while (e !== null)\n return null;\n }\n function no(e, n, t, r, l) {\n return e.mode & 1 ? (e.flags |= 65536, e.lanes = l, e) : (e === n ? e.flags |= 65536 : (e.flags |= 128, t.flags |= 131072, t.flags &= -52805, t.tag === 1 && (t.alternate === null ? t.tag = 17 : (n = Re(-1, 1), n.tag = 2, qe(t, n, 1))), t.lanes |= 1), e);\n }\n var lf = Ve.ReactCurrentOwner, te = !1;\n function q(e, n, t, r) {\n n.child = e === null ? gs(n, null, t, r) : Yn(n, e.child, t, r);\n }\n function to(e, n, t, r, l) {\n t = t.render;\n var i = n.ref;\n return Hn(n, l), r = $i(e, n, t, r, i, l), t = Ki(), e !== null && !te ? (n.updateQueue = e.updateQueue, n.flags &= -2053, e.lanes &= ~l, je(e, n, l)) : (D && t && Oi(n), n.flags |= 1, q(e, n, r, l), n.child);\n }\n function ro(e, n, t, r, l) {\n if (e === null) {\n var i = t.type;\n return typeof i == \"function\" && !tu(i) && i.defaultProps === void 0 && t.compare === null && t.defaultProps === void 0 ? (n.tag = 15, n.type = i, Qs(e, n, i, r, l)) : (e = hr(t.type, null, r, n, n.mode, l), e.ref = n.ref, e.return = n, n.child = e);\n }\n if (i = e.child, !(e.lanes & l)) {\n var u = i.memoizedProps;\n if (t = t.compare, t = t !== null ? t : zt, t(u, r) && e.ref === n.ref) return je(e, n, l);\n }\n return n.flags |= 1, e = nn(i, r), e.ref = n.ref, e.return = n, n.child = e;\n }\n function Qs(e, n, t, r, l) {\n if (e !== null) {\n var i = e.memoizedProps;\n if (zt(i, r) && e.ref === n.ref) if (te = !1, n.pendingProps = r = i, (e.lanes & l) !== 0) e.flags & 131072 && (te = !0);\n else return n.lanes = e.lanes, je(e, n, l);\n }\n return li(e, n, t, r, l);\n }\n function $s(e, n, t) {\n var r = n.pendingProps, l = r.children, i = e !== null ? e.memoizedState : null;\n if (r.mode === \"hidden\") if (!(n.mode & 1)) n.memoizedState = {\n baseLanes: 0,\n cachePool: null,\n transitions: null\n }, L(Un, ue), ue |= t;\n else {\n if (!(t & 1073741824)) return e = i !== null ? i.baseLanes | t : t, n.lanes = n.childLanes = 1073741824, n.memoizedState = {\n baseLanes: e,\n cachePool: null,\n transitions: null\n }, n.updateQueue = null, L(Un, ue), ue |= e, null;\n n.memoizedState = {\n baseLanes: 0,\n cachePool: null,\n transitions: null\n }, r = i !== null ? i.baseLanes : t, L(Un, ue), ue |= r;\n }\n else i !== null ? (r = i.baseLanes | t, n.memoizedState = null) : r = t, L(Un, ue), ue |= r;\n return q(e, n, l, t), n.child;\n }\n function Ks(e, n) {\n var t = n.ref;\n (e === null && t !== null || e !== null && e.ref !== t) && (n.flags |= 512, n.flags |= 2097152);\n }\n function li(e, n, t, r, l) {\n var i = le(t) ? yn : J.current;\n return i = $n(n, i), Hn(n, l), t = $i(e, n, t, r, i, l), r = Ki(), e !== null && !te ? (n.updateQueue = e.updateQueue, n.flags &= -2053, e.lanes &= ~l, je(e, n, l)) : (D && r && Oi(n), n.flags |= 1, q(e, n, t, l), n.child);\n }\n function lo(e, n, t, r, l) {\n if (le(t)) {\n var i = !0;\n _r(n);\n } else i = !1;\n if (Hn(n, l), n.stateNode === null) dr(e, n), Bs(n, t, r), ti(n, t, r, l), r = !0;\n else if (e === null) {\n var u = n.stateNode, o = n.memoizedProps;\n u.props = o;\n var s = u.context, d = t.contextType;\n typeof d == \"object\" && d !== null ? d = ve(d) : (d = le(t) ? yn : J.current, d = $n(n, d));\n var m = t.getDerivedStateFromProps, h = typeof m == \"function\" || typeof u.getSnapshotBeforeUpdate == \"function\";\n h || typeof u.UNSAFE_componentWillReceiveProps != \"function\" && typeof u.componentWillReceiveProps != \"function\" || (o !== r || s !== d) && qu(n, u, r, d), We = !1;\n var p = n.memoizedState;\n u.state = p, Mr(n, r, u, l), s = n.memoizedState, o !== r || p !== s || re.current || We ? (typeof m == \"function\" && (ni(n, t, m, r), s = n.memoizedState), (o = We || Ju(n, t, o, r, p, s, d)) ? (h || typeof u.UNSAFE_componentWillMount != \"function\" && typeof u.componentWillMount != \"function\" || (typeof u.componentWillMount == \"function\" && u.componentWillMount(), typeof u.UNSAFE_componentWillMount == \"function\" && u.UNSAFE_componentWillMount()), typeof u.componentDidMount == \"function\" && (n.flags |= 4194308)) : (typeof u.componentDidMount == \"function\" && (n.flags |= 4194308), n.memoizedProps = r, n.memoizedState = s), u.props = r, u.state = s, u.context = d, r = o) : (typeof u.componentDidMount == \"function\" && (n.flags |= 4194308), r = !1);\n } else {\n u = n.stateNode, Ss(e, n), o = n.memoizedProps, d = n.type === n.elementType ? o : we(n.type, o), u.props = d, h = n.pendingProps, p = u.context, s = t.contextType, typeof s == \"object\" && s !== null ? s = ve(s) : (s = le(t) ? yn : J.current, s = $n(n, s));\n var g = t.getDerivedStateFromProps;\n (m = typeof g == \"function\" || typeof u.getSnapshotBeforeUpdate == \"function\") || typeof u.UNSAFE_componentWillReceiveProps != \"function\" && typeof u.componentWillReceiveProps != \"function\" || (o !== h || p !== s) && qu(n, u, r, s), We = !1, p = n.memoizedState, u.state = p, Mr(n, r, u, l);\n var S = n.memoizedState;\n o !== h || p !== S || re.current || We ? (typeof g == \"function\" && (ni(n, t, g, r), S = n.memoizedState), (d = We || Ju(n, t, d, r, p, S, s) || !1) ? (m || typeof u.UNSAFE_componentWillUpdate != \"function\" && typeof u.componentWillUpdate != \"function\" || (typeof u.componentWillUpdate == \"function\" && u.componentWillUpdate(r, S, s), typeof u.UNSAFE_componentWillUpdate == \"function\" && u.UNSAFE_componentWillUpdate(r, S, s)), typeof u.componentDidUpdate == \"function\" && (n.flags |= 4), typeof u.getSnapshotBeforeUpdate == \"function\" && (n.flags |= 1024)) : (typeof u.componentDidUpdate != \"function\" || o === e.memoizedProps && p === e.memoizedState || (n.flags |= 4), typeof u.getSnapshotBeforeUpdate != \"function\" || o === e.memoizedProps && p === e.memoizedState || (n.flags |= 1024), n.memoizedProps = r, n.memoizedState = S), u.props = r, u.state = S, u.context = s, r = d) : (typeof u.componentDidUpdate != \"function\" || o === e.memoizedProps && p === e.memoizedState || (n.flags |= 4), typeof u.getSnapshotBeforeUpdate != \"function\" || o === e.memoizedProps && p === e.memoizedState || (n.flags |= 1024), r = !1);\n }\n return ii(e, n, t, r, i, l);\n }\n function ii(e, n, t, r, l, i) {\n Ks(e, n);\n var u = (n.flags & 128) !== 0;\n if (!r && !u) return l && Wu(n, t, !1), je(e, n, i);\n r = n.stateNode, lf.current = n;\n var o = u && typeof t.getDerivedStateFromError != \"function\" ? null : r.render();\n return n.flags |= 1, e !== null && u ? (n.child = Yn(n, e.child, null, i), n.child = Yn(n, null, o, i)) : q(e, n, o, i), n.memoizedState = r.state, l && Wu(n, t, !0), n.child;\n }\n function Ys(e) {\n var n = e.stateNode;\n n.pendingContext ? Hu(e, n.pendingContext, n.pendingContext !== n.context) : n.context && Hu(e, n.context, !1), Bi(e, n.containerInfo);\n }\n function io(e, n, t, r, l) {\n return Kn(), Fi(l), n.flags |= 256, q(e, n, t, r), n.child;\n }\n var ui = {\n dehydrated: null,\n treeContext: null,\n retryLane: 0\n };\n function oi(e) {\n return {\n baseLanes: e,\n cachePool: null,\n transitions: null\n };\n }\n function Xs(e, n, t) {\n var r = n.pendingProps, l = O.current, i = !1, u = (n.flags & 128) !== 0, o;\n if ((o = u) || (o = e !== null && e.memoizedState === null ? !1 : (l & 2) !== 0), o ? (i = !0, n.flags &= -129) : (e === null || e.memoizedState !== null) && (l |= 1), L(O, l & 1), e === null) return bl(n), e = n.memoizedState, e !== null && (e = e.dehydrated, e !== null) ? (n.mode & 1 ? e.data === \"$!\" ? n.lanes = 8 : n.lanes = 1073741824 : n.lanes = 1, null) : (u = r.children, e = r.fallback, i ? (r = n.mode, i = n.child, u = {\n mode: \"hidden\",\n children: u\n }, !(r & 1) && i !== null ? (i.childLanes = 0, i.pendingProps = u) : i = Zr(u, r, 0, null), e = vn(e, r, t, null), i.return = n, e.return = n, i.sibling = e, n.child = i, n.child.memoizedState = oi(t), n.memoizedState = ui, e) : Gi(n, u));\n if (l = e.memoizedState, l !== null && (o = l.dehydrated, o !== null)) return uf(e, n, u, r, o, l, t);\n if (i) {\n i = r.fallback, u = n.mode, l = e.child, o = l.sibling;\n var s = {\n mode: \"hidden\",\n children: r.children\n };\n return !(u & 1) && n.child !== l ? (r = n.child, r.childLanes = 0, r.pendingProps = s, n.deletions = null) : (r = nn(l, s), r.subtreeFlags = l.subtreeFlags & 14680064), o !== null ? i = nn(o, i) : (i = vn(i, u, t, null), i.flags |= 2), i.return = n, r.return = n, r.sibling = i, n.child = r, r = i, i = n.child, u = e.child.memoizedState, u = u === null ? oi(t) : {\n baseLanes: u.baseLanes | t,\n cachePool: null,\n transitions: u.transitions\n }, i.memoizedState = u, i.childLanes = e.childLanes & ~t, n.memoizedState = ui, r;\n }\n return i = e.child, e = i.sibling, r = nn(i, {\n mode: \"visible\",\n children: r.children\n }), !(n.mode & 1) && (r.lanes = t), r.return = n, r.sibling = null, e !== null && (t = n.deletions, t === null ? (n.deletions = [\n e\n ], n.flags |= 16) : t.push(e)), n.child = r, n.memoizedState = null, r;\n }\n function Gi(e, n) {\n return n = Zr({\n mode: \"visible\",\n children: n\n }, e.mode, 0, null), n.return = e, e.child = n;\n }\n function rr(e, n, t, r) {\n return r !== null && Fi(r), Yn(n, e.child, null, t), e = Gi(n, n.pendingProps.children), e.flags |= 2, n.memoizedState = null, e;\n }\n function uf(e, n, t, r, l, i, u) {\n if (t) return n.flags & 256 ? (n.flags &= -257, r = kl(Error(v(422))), rr(e, n, u, r)) : n.memoizedState !== null ? (n.child = e.child, n.flags |= 128, null) : (i = r.fallback, l = n.mode, r = Zr({\n mode: \"visible\",\n children: r.children\n }, l, 0, null), i = vn(i, l, u, null), i.flags |= 2, r.return = n, i.return = n, r.sibling = i, n.child = r, n.mode & 1 && Yn(n, e.child, null, u), n.child.memoizedState = oi(u), n.memoizedState = ui, i);\n if (!(n.mode & 1)) return rr(e, n, u, null);\n if (l.data === \"$!\") {\n if (r = l.nextSibling && l.nextSibling.dataset, r) var o = r.dgst;\n return r = o, i = Error(v(419)), r = kl(i, r, void 0), rr(e, n, u, r);\n }\n if (o = (u & e.childLanes) !== 0, te || o) {\n if (r = Q, r !== null) {\n switch(u & -u){\n case 4:\n l = 2;\n break;\n case 16:\n l = 8;\n break;\n case 64:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n case 67108864:\n l = 32;\n break;\n case 536870912:\n l = 268435456;\n break;\n default:\n l = 0;\n }\n l = l & (r.suspendedLanes | u) ? 0 : l, l !== 0 && l !== i.retryLane && (i.retryLane = l, Ue(e, l), Ce(r, e, l, -1));\n }\n return nu(), r = kl(Error(v(421))), rr(e, n, u, r);\n }\n return l.data === \"$?\" ? (n.flags |= 128, n.child = e.child, n = wf.bind(null, e), l._reactRetry = n, null) : (e = i.treeContext, oe = Je(l.nextSibling), se = n, D = !0, ke = null, e !== null && (de[pe++] = De, de[pe++] = Oe, de[pe++] = gn, De = e.id, Oe = e.overflow, gn = n), n = Gi(n, r.children), n.flags |= 4096, n);\n }\n function uo(e, n, t) {\n e.lanes |= n;\n var r = e.alternate;\n r !== null && (r.lanes |= n), ei(e.return, n, t);\n }\n function El(e, n, t, r, l) {\n var i = e.memoizedState;\n i === null ? e.memoizedState = {\n isBackwards: n,\n rendering: null,\n renderingStartTime: 0,\n last: r,\n tail: t,\n tailMode: l\n } : (i.isBackwards = n, i.rendering = null, i.renderingStartTime = 0, i.last = r, i.tail = t, i.tailMode = l);\n }\n function Gs(e, n, t) {\n var r = n.pendingProps, l = r.revealOrder, i = r.tail;\n if (q(e, n, r.children, t), r = O.current, r & 2) r = r & 1 | 2, n.flags |= 128;\n else {\n if (e !== null && e.flags & 128) e: for(e = n.child; e !== null;){\n if (e.tag === 13) e.memoizedState !== null && uo(e, t, n);\n else if (e.tag === 19) uo(e, t, n);\n else if (e.child !== null) {\n e.child.return = e, e = e.child;\n continue;\n }\n if (e === n) break e;\n for(; e.sibling === null;){\n if (e.return === null || e.return === n) break e;\n e = e.return;\n }\n e.sibling.return = e.return, e = e.sibling;\n }\n r &= 1;\n }\n if (L(O, r), !(n.mode & 1)) n.memoizedState = null;\n else switch(l){\n case \"forwards\":\n for(t = n.child, l = null; t !== null;)e = t.alternate, e !== null && Dr(e) === null && (l = t), t = t.sibling;\n t = l, t === null ? (l = n.child, n.child = null) : (l = t.sibling, t.sibling = null), El(n, !1, l, t, i);\n break;\n case \"backwards\":\n for(t = null, l = n.child, n.child = null; l !== null;){\n if (e = l.alternate, e !== null && Dr(e) === null) {\n n.child = l;\n break;\n }\n e = l.sibling, l.sibling = t, t = l, l = e;\n }\n El(n, !0, t, null, i);\n break;\n case \"together\":\n El(n, !1, null, null, void 0);\n break;\n default:\n n.memoizedState = null;\n }\n return n.child;\n }\n function dr(e, n) {\n !(n.mode & 1) && e !== null && (e.alternate = null, n.alternate = null, n.flags |= 2);\n }\n function je(e, n, t) {\n if (e !== null && (n.dependencies = e.dependencies), Sn |= n.lanes, !(t & n.childLanes)) return null;\n if (e !== null && n.child !== e.child) throw Error(v(153));\n if (n.child !== null) {\n for(e = n.child, t = nn(e, e.pendingProps), n.child = t, t.return = n; e.sibling !== null;)e = e.sibling, t = t.sibling = nn(e, e.pendingProps), t.return = n;\n t.sibling = null;\n }\n return n.child;\n }\n function of(e, n, t) {\n switch(n.tag){\n case 3:\n Ys(n), Kn();\n break;\n case 5:\n ks(n);\n break;\n case 1:\n le(n.type) && _r(n);\n break;\n case 4:\n Bi(n, n.stateNode.containerInfo);\n break;\n case 10:\n var r = n.type._context, l = n.memoizedProps.value;\n L(Lr, r._currentValue), r._currentValue = l;\n break;\n case 13:\n if (r = n.memoizedState, r !== null) return r.dehydrated !== null ? (L(O, O.current & 1), n.flags |= 128, null) : t & n.child.childLanes ? Xs(e, n, t) : (L(O, O.current & 1), e = je(e, n, t), e !== null ? e.sibling : null);\n L(O, O.current & 1);\n break;\n case 19:\n if (r = (t & n.childLanes) !== 0, e.flags & 128) {\n if (r) return Gs(e, n, t);\n n.flags |= 128;\n }\n if (l = n.memoizedState, l !== null && (l.rendering = null, l.tail = null, l.lastEffect = null), L(O, O.current), r) break;\n return null;\n case 22:\n case 23:\n return n.lanes = 0, $s(e, n, t);\n }\n return je(e, n, t);\n }\n var Zs, si, Js, qs;\n Zs = function(e, n) {\n for(var t = n.child; t !== null;){\n if (t.tag === 5 || t.tag === 6) e.appendChild(t.stateNode);\n else if (t.tag !== 4 && t.child !== null) {\n t.child.return = t, t = t.child;\n continue;\n }\n if (t === n) break;\n for(; t.sibling === null;){\n if (t.return === null || t.return === n) return;\n t = t.return;\n }\n t.sibling.return = t.return, t = t.sibling;\n }\n };\n si = function() {};\n Js = function(e, n, t, r) {\n var l = e.memoizedProps;\n if (l !== r) {\n e = n.stateNode, mn(Le.current);\n var i = null;\n switch(t){\n case \"input\":\n l = Tl(e, l), r = Tl(e, r), i = [];\n break;\n case \"select\":\n l = F({}, l, {\n value: void 0\n }), r = F({}, r, {\n value: void 0\n }), i = [];\n break;\n case \"textarea\":\n l = Ol(e, l), r = Ol(e, r), i = [];\n break;\n default:\n typeof l.onClick != \"function\" && typeof r.onClick == \"function\" && (e.onclick = xr);\n }\n Fl(t, r);\n var u;\n t = null;\n for(d in l)if (!r.hasOwnProperty(d) && l.hasOwnProperty(d) && l[d] != null) if (d === \"style\") {\n var o = l[d];\n for(u in o)o.hasOwnProperty(u) && (t || (t = {}), t[u] = \"\");\n } else d !== \"dangerouslySetInnerHTML\" && d !== \"children\" && d !== \"suppressContentEditableWarning\" && d !== \"suppressHydrationWarning\" && d !== \"autoFocus\" && (St.hasOwnProperty(d) ? i || (i = []) : (i = i || []).push(d, null));\n for(d in r){\n var s = r[d];\n if (o = l?.[d], r.hasOwnProperty(d) && s !== o && (s != null || o != null)) if (d === \"style\") if (o) {\n for(u in o)!o.hasOwnProperty(u) || s && s.hasOwnProperty(u) || (t || (t = {}), t[u] = \"\");\n for(u in s)s.hasOwnProperty(u) && o[u] !== s[u] && (t || (t = {}), t[u] = s[u]);\n } else t || (i || (i = []), i.push(d, t)), t = s;\n else d === \"dangerouslySetInnerHTML\" ? (s = s ? s.__html : void 0, o = o ? o.__html : void 0, s != null && o !== s && (i = i || []).push(d, s)) : d === \"children\" ? typeof s != \"string\" && typeof s != \"number\" || (i = i || []).push(d, \"\" + s) : d !== \"suppressContentEditableWarning\" && d !== \"suppressHydrationWarning\" && (St.hasOwnProperty(d) ? (s != null && d === \"onScroll\" && T(\"scroll\", e), i || o === s || (i = [])) : (i = i || []).push(d, s));\n }\n t && (i = i || []).push(\"style\", t);\n var d = i;\n (n.updateQueue = d) && (n.flags |= 4);\n }\n };\n qs = function(e, n, t, r) {\n t !== r && (n.flags |= 4);\n };\n function lt(e, n) {\n if (!D) switch(e.tailMode){\n case \"hidden\":\n n = e.tail;\n for(var t = null; n !== null;)n.alternate !== null && (t = n), n = n.sibling;\n t === null ? e.tail = null : t.sibling = null;\n break;\n case \"collapsed\":\n t = e.tail;\n for(var r = null; t !== null;)t.alternate !== null && (r = t), t = t.sibling;\n r === null ? n || e.tail === null ? e.tail = null : e.tail.sibling = null : r.sibling = null;\n }\n }\n function G(e) {\n var n = e.alternate !== null && e.alternate.child === e.child, t = 0, r = 0;\n if (n) for(var l = e.child; l !== null;)t |= l.lanes | l.childLanes, r |= l.subtreeFlags & 14680064, r |= l.flags & 14680064, l.return = e, l = l.sibling;\n else for(l = e.child; l !== null;)t |= l.lanes | l.childLanes, r |= l.subtreeFlags, r |= l.flags, l.return = e, l = l.sibling;\n return e.subtreeFlags |= r, e.childLanes = t, n;\n }\n function sf(e, n, t) {\n var r = n.pendingProps;\n switch(Ri(n), n.tag){\n case 2:\n case 16:\n case 15:\n case 0:\n case 11:\n case 7:\n case 8:\n case 12:\n case 9:\n case 14:\n return G(n), null;\n case 1:\n return le(n.type) && Nr(), G(n), null;\n case 3:\n return r = n.stateNode, Xn(), M(re), M(J), Wi(), r.pendingContext && (r.context = r.pendingContext, r.pendingContext = null), (e === null || e.child === null) && (nr(n) ? n.flags |= 4 : e === null || e.memoizedState.isDehydrated && !(n.flags & 256) || (n.flags |= 1024, ke !== null && (vi(ke), ke = null))), si(e, n), G(n), null;\n case 5:\n Hi(n);\n var l = mn(Dt.current);\n if (t = n.type, e !== null && n.stateNode != null) Js(e, n, t, r, l), e.ref !== n.ref && (n.flags |= 512, n.flags |= 2097152);\n else {\n if (!r) {\n if (n.stateNode === null) throw Error(v(166));\n return G(n), null;\n }\n if (e = mn(Le.current), nr(n)) {\n r = n.stateNode, t = n.type;\n var i = n.memoizedProps;\n switch(r[ze] = n, r[Tt] = i, e = (n.mode & 1) !== 0, t){\n case \"dialog\":\n T(\"cancel\", r), T(\"close\", r);\n break;\n case \"iframe\":\n case \"object\":\n case \"embed\":\n T(\"load\", r);\n break;\n case \"video\":\n case \"audio\":\n for(l = 0; l < ct.length; l++)T(ct[l], r);\n break;\n case \"source\":\n T(\"error\", r);\n break;\n case \"img\":\n case \"image\":\n case \"link\":\n T(\"error\", r), T(\"load\", r);\n break;\n case \"details\":\n T(\"toggle\", r);\n break;\n case \"input\":\n mu(r, i), T(\"invalid\", r);\n break;\n case \"select\":\n r._wrapperState = {\n wasMultiple: !!i.multiple\n }, T(\"invalid\", r);\n break;\n case \"textarea\":\n vu(r, i), T(\"invalid\", r);\n }\n Fl(t, i), l = null;\n for(var u in i)if (i.hasOwnProperty(u)) {\n var o = i[u];\n u === \"children\" ? typeof o == \"string\" ? r.textContent !== o && (i.suppressHydrationWarning !== !0 && er(r.textContent, o, e), l = [\n \"children\",\n o\n ]) : typeof o == \"number\" && r.textContent !== \"\" + o && (i.suppressHydrationWarning !== !0 && er(r.textContent, o, e), l = [\n \"children\",\n \"\" + o\n ]) : St.hasOwnProperty(u) && o != null && u === \"onScroll\" && T(\"scroll\", r);\n }\n switch(t){\n case \"input\":\n Ht(r), hu(r, i, !0);\n break;\n case \"textarea\":\n Ht(r), yu(r);\n break;\n case \"select\":\n case \"option\":\n break;\n default:\n typeof i.onClick == \"function\" && (r.onclick = xr);\n }\n r = l, n.updateQueue = r, r !== null && (n.flags |= 4);\n } else {\n u = l.nodeType === 9 ? l : l.ownerDocument, e === \"http://www.w3.org/1999/xhtml\" && (e = _o(t)), e === \"http://www.w3.org/1999/xhtml\" ? t === \"script\" ? (e = u.createElement(\"div\"), e.innerHTML = \" - - - \ No newline at end of file diff --git a/web/manifest.json b/web/manifest.json deleted file mode 100644 index f7ebb0dc..00000000 --- a/web/manifest.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "definy", - "short_name": "definy", - "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/windows/.gitignore b/windows/.gitignore deleted file mode 100644 index d492d0d9..00000000 --- a/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/windows/CMakeLists.txt b/windows/CMakeLists.txt deleted file mode 100644 index b5cb5c56..00000000 --- a/windows/CMakeLists.txt +++ /dev/null @@ -1,108 +0,0 @@ -# Project-level configuration. -cmake_minimum_required(VERSION 3.14) -project(definy 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 "definy") - -# 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() - -# Copy the native assets provided by the build.dart from all packages. -set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/windows/") -install(DIRECTORY "${NATIVE_ASSETS_DIR}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -# 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/windows/flutter/CMakeLists.txt b/windows/flutter/CMakeLists.txt deleted file mode 100644 index 903f4899..00000000 --- a/windows/flutter/CMakeLists.txt +++ /dev/null @@ -1,109 +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") - -# Set fallback configurations for older versions of the flutter tool. -if (NOT DEFINED FLUTTER_TARGET_PLATFORM) - set(FLUTTER_TARGET_PLATFORM "windows-x64") -endif() - -# === 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" - ${FLUTTER_TARGET_PLATFORM} $ - 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/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc deleted file mode 100644 index 4f788487..00000000 --- a/windows/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,14 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - -#include - -void RegisterPlugins(flutter::PluginRegistry* registry) { - UrlLauncherWindowsRegisterWithRegistrar( - registry->GetRegistrarForPlugin("UrlLauncherWindows")); -} diff --git a/windows/flutter/generated_plugin_registrant.h b/windows/flutter/generated_plugin_registrant.h deleted file mode 100644 index dc139d85..00000000 --- a/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/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake deleted file mode 100644 index 88b22e5c..00000000 --- a/windows/flutter/generated_plugins.cmake +++ /dev/null @@ -1,24 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST - url_launcher_windows -) - -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/windows/runner/CMakeLists.txt b/windows/runner/CMakeLists.txt deleted file mode 100644 index 394917c0..00000000 --- a/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/windows/runner/Runner.rc b/windows/runner/Runner.rc deleted file mode 100644 index b0fb7252..00000000 --- a/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", "definy" "\0" - VALUE "FileVersion", VERSION_AS_STRING "\0" - VALUE "InternalName", "definy" "\0" - VALUE "LegalCopyright", "Copyright (C) 2024 com.example. All rights reserved." "\0" - VALUE "OriginalFilename", "definy.exe" "\0" - VALUE "ProductName", "definy" "\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/windows/runner/flutter_window.cpp b/windows/runner/flutter_window.cpp deleted file mode 100644 index 955ee303..00000000 --- a/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/windows/runner/flutter_window.h b/windows/runner/flutter_window.h deleted file mode 100644 index 6da0652f..00000000 --- a/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/windows/runner/main.cpp b/windows/runner/main.cpp deleted file mode 100644 index 1ad9db2d..00000000 --- a/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"definy", 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/windows/runner/resource.h b/windows/runner/resource.h deleted file mode 100644 index 66a65d1e..00000000 --- a/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/windows/runner/resources/app_icon.ico b/windows/runner/resources/app_icon.ico deleted file mode 100644 index c04e20caf6370ebb9253ad831cc31de4a9c965f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33772 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 diff --git a/windows/runner/runner.exe.manifest b/windows/runner/runner.exe.manifest deleted file mode 100644 index a42ea768..00000000 --- a/windows/runner/runner.exe.manifest +++ /dev/null @@ -1,20 +0,0 @@ - - - - - PerMonitorV2 - - - - - - - - - - - - - - - diff --git a/windows/runner/utils.cpp b/windows/runner/utils.cpp deleted file mode 100644 index b2b08734..00000000 --- a/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/windows/runner/utils.h b/windows/runner/utils.h deleted file mode 100644 index 3879d547..00000000 --- a/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/windows/runner/win32_window.cpp b/windows/runner/win32_window.cpp deleted file mode 100644 index 60608d0f..00000000 --- a/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/windows/runner/win32_window.h b/windows/runner/win32_window.h deleted file mode 100644 index e901dde6..00000000 --- a/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_