diff --git a/.env.example b/.env.example index e5133add..245877d2 100644 --- a/.env.example +++ b/.env.example @@ -16,5 +16,5 @@ # S3_ACCESS_KEY=minioadmin # S3_SECRET__KEY=minioadmin # S3_REGION=eu-north-1 -# S3_BUCKET=uqbar +# S3_BUCKET=nectar # S3_ENDPOINT=http://localhost:9000 diff --git a/.gitignore b/.gitignore index d013db92..fd202596 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ target/ wit/ -uqbar .vscode .app-signing .DS_Store diff --git a/Cargo.lock b/Cargo.lock index 3394b767..1a7b819f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2978,6 +2978,67 @@ dependencies = [ "tempfile", ] +[[package]] +name = "nectar" +version = "0.5.0" +dependencies = [ + "aes-gcm 0.10.2", + "anyhow", + "async-trait", + "base64 0.13.1", + "bincode", + "blake3", + "bytes", + "cap-std", + "chacha20poly1305 0.10.1", + "chrono", + "clap", + "crossterm", + "dashmap", + "digest", + "elliptic-curve", + "ethers", + "ethers-providers", + "flate2", + "futures", + "generic-array", + "getrandom", + "hex", + "hkdf", + "hmac", + "http", + "jwt", + "lazy_static", + "log", + "nohash-hasher", + "num-traits", + "open", + "public-ip", + "rand", + "reqwest", + "ring", + "rmp-serde", + "rocksdb", + "route-recognizer", + "rusqlite", + "serde", + "serde_json", + "serde_urlencoded", + "sha2", + "snow", + "static_dir", + "thiserror", + "tokio", + "tokio-tungstenite 0.20.1", + "url", + "uuid 1.4.1", + "walkdir", + "warp", + "wasmtime", + "wasmtime-wasi", + "zip", +] + [[package]] name = "new_debug_unreachable" version = "1.0.4" @@ -5057,67 +5118,6 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" -[[package]] -name = "uqbar" -version = "0.5.0" -dependencies = [ - "aes-gcm 0.10.2", - "anyhow", - "async-trait", - "base64 0.13.1", - "bincode", - "blake3", - "bytes", - "cap-std", - "chacha20poly1305 0.10.1", - "chrono", - "clap", - "crossterm", - "dashmap", - "digest", - "elliptic-curve", - "ethers", - "ethers-providers", - "flate2", - "futures", - "generic-array", - "getrandom", - "hex", - "hkdf", - "hmac", - "http", - "jwt", - "lazy_static", - "log", - "nohash-hasher", - "num-traits", - "open", - "public-ip", - "rand", - "reqwest", - "ring", - "rmp-serde", - "rocksdb", - "route-recognizer", - "rusqlite", - "serde", - "serde_json", - "serde_urlencoded", - "sha2", - "snow", - "static_dir", - "thiserror", - "tokio", - "tokio-tungstenite 0.20.1", - "url", - "uuid 1.4.1", - "walkdir", - "warp", - "wasmtime", - "wasmtime-wasi", - "zip", -] - [[package]] name = "url" version = "2.4.1" diff --git a/Cargo.toml b/Cargo.toml index 1bd7cc60..85d281b5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "uqbar" +name = "nectar" authors = ["UqbarDAO"] version = "0.5.0" edition = "2021" diff --git a/README.md b/README.md index 4076f859..38c13622 100644 --- a/README.md +++ b/README.md @@ -5,15 +5,15 @@ ```bash # Clone the repo. -git clone git@github.com:uqbar-dao/uqbar.git +git clone git@github.com:uqbar-dao/nectar.git # Configure dependency retrieval from GitHub mkdir .cargo echo "net.git-fetch-with-cli = true" > .cargo/config -# Get some stuff so we can build wasm. +# Get some stuff so we can build Wasm. -cd uqbar +cd nectar cargo install wasm-tools rustup install nightly rustup target add wasm32-wasi @@ -55,14 +55,14 @@ On boot you will be prompted to navigate to `localhost:8080`. Make sure your ETH - CTRL+R to search history, CTRL+R again to toggle through search results, CTRL+G to cancel search - `/message
`: send an inter-process message.
is formatted as @. is formatted as ::. - - Example: `/message our@net:sys:uqbar diagnostics` + - Example: `/message our@net:sys:nectar diagnostics` - `our` will always be interpolated by the system as your node's name - - Can also use `/m` for same command: `/m our@net:sys:uqbar diagnostics` + - Can also use `/m` for same command: `/m our@net:sys:nectar diagnostics` - `/app
`: set the terminal to a mode where all messages go to a specific app. To clear this selection, use `/app clear` or simply `/app`. This is useful for apps that have a command line interface. - - Example: `/app our@net:sys:uqbar`, then `/m diagnostics` - - Can also use `/a` for same command: `/a our@net:sys:uqbar` + - Example: `/app our@net:sys:nectar`, then `/m diagnostics` + - Can also use `/a` for same command: `/a our@net:sys:nectar` - Example of sending many messages: - - `/a ben.uq@net:sys:uqbar` + - `/a ben.uq@net:sys:nectar` - `/m hey there` - `/m how are you?` - `/a` (to exit app mode) @@ -73,6 +73,6 @@ On boot you will be prompted to navigate to `localhost:8080`. Make sure your ETH Download and install an app: ``` -/m our@main:app_store:uqbar {"Download": {"package": {"package_name": "", "publisher_node": ""}, "install_from": ""}} -/m our@main:app_store:uqbar {"Install": {"package_name": "", "publisher_node": ""}} +/m our@main:app_store:nectar {"Download": {"package": {"package_name": "", "publisher_node": ""}, "install_from": ""}} +/m our@main:app_store:nectar {"Install": {"package_name": "", "publisher_node": ""}} ``` diff --git a/build-release.py b/build-release.py index 8477e5e0..9a40570d 100755 --- a/build-release.py +++ b/build-release.py @@ -11,13 +11,13 @@ def build_and_move(feature, tmp_dir): if feature: subprocess.run(["cargo", "+nightly", "build", "--release", "--features", feature], check=True) - binary_name = f"uqbar-{feature}" + binary_name = f"nectar-{feature}" else: subprocess.run(["cargo", "+nightly", "build", "--release"], check=True) - binary_name = "uqbar" + binary_name = "nectar" # Move and rename the binary - source_path = "target/release/uqbar" + source_path = "target/release/nectar" dest_path = os.path.join(tmp_dir, binary_name) shutil.move(source_path, dest_path) @@ -26,7 +26,7 @@ def main(): features = ["", "simulation-mode"] # Add more features as needed # Ensure the tmp directory is clean - tmp_dir = "/tmp/uqbar-release" + tmp_dir = "/tmp/nectar-release" if os.path.exists(tmp_dir): shutil.rmtree(tmp_dir) os.makedirs(tmp_dir) diff --git a/build.rs b/build.rs index ed316573..d6a91923 100644 --- a/build.rs +++ b/build.rs @@ -138,11 +138,11 @@ fn main() { // Pull wit from git repo let wit_dir = pwd.join("wit"); fs::create_dir_all(&wit_dir).unwrap(); - let wit_file = wit_dir.join("uqbar.wit"); + let wit_file = wit_dir.join("nectar.wit"); //if !wit_file.exists() { // TODO: cache in better way let mut wit_file = std::fs::File::create(&wit_file).unwrap(); - let uqbar_wit_url = "https://raw.githubusercontent.com/uqbar-dao/uqwit/master/uqbar.wit"; - let mut response = reqwest::blocking::get(uqbar_wit_url).unwrap(); + let nectar_wit_url = "https://raw.githubusercontent.com/uqbar-dao/uqwit/master/nectar.wit"; + let mut response = reqwest::blocking::get(nectar_wit_url).unwrap(); io::copy(&mut response, &mut wit_file).unwrap(); // Create target.wasm (compiled .wit) & world diff --git a/modules/app_store/app_store/Cargo.toml b/modules/app_store/app_store/Cargo.toml index b23abb9a..7a9d27ab 100644 --- a/modules/app_store/app_store/Cargo.toml +++ b/modules/app_store/app_store/Cargo.toml @@ -15,11 +15,11 @@ rand = "0.8" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" sha2 = "0.10.8" -uqbar_process_lib = { git = "ssh://git@github.com/uqbar-dao/process_lib.git", rev = "e72a791" } +nectar_process_lib = { git = "ssh://git@github.com/uqbar-dao/process_lib.git", rev = "6520b95" } wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "efcc759" } [lib] crate-type = ["cdylib"] [package.metadata.component] -package = "uqbar:process" +package = "nectar:process" diff --git a/modules/app_store/app_store/src/lib.rs b/modules/app_store/app_store/src/lib.rs index a3c62ca5..17f9a49c 100644 --- a/modules/app_store/app_store/src/lib.rs +++ b/modules/app_store/app_store/src/lib.rs @@ -1,10 +1,10 @@ +use nectar_process_lib::kernel_types as kt; +use nectar_process_lib::println; +use nectar_process_lib::*; use serde::{Deserialize, Serialize}; use serde_json::Value; use sha2::Digest; use std::collections::{HashMap, HashSet}; -use uqbar_process_lib::kernel_types as kt; -use uqbar_process_lib::println; -use uqbar_process_lib::*; wit_bindgen::generate!({ path: "../../../wit", @@ -19,7 +19,7 @@ use ft_worker_lib::{ spawn_receive_transfer, spawn_transfer, FTWorkerCommand, FTWorkerResult, FileTransferContext, }; -/// Uqbar App Store: +/// Nectar App Store: /// acts as both a local package manager and a protocol to share packages across the network. /// packages are apps; apps are packages. we use an onchain app listing contract to determine /// what apps are available to download and what node(s) to download them from. @@ -346,7 +346,7 @@ fn handle_new_package( // create a new drive for this package in VFS Request::new() - .target(("our", "vfs", "sys", "uqbar")) + .target(("our", "vfs", "sys", "nectar")) .ipc(serde_json::to_vec(&vfs::VfsRequest { path: drive.clone(), action: vfs::VfsAction::CreateDrive, @@ -361,7 +361,7 @@ fn handle_new_package( // add zip bytes payload.mime = Some("application/zip".to_string()); let response = Request::new() - .target(("our", "vfs", "sys", "uqbar")) + .target(("our", "vfs", "sys", "nectar")) .ipc(serde_json::to_vec(&vfs::VfsRequest { path: drive.clone(), action: vfs::VfsAction::AddZip, @@ -379,7 +379,7 @@ fn handle_new_package( // call it .zip let zip_path = format!("{}/{}.zip", drive.clone(), package); Request::new() - .target(("our", "vfs", "sys", "uqbar")) + .target(("our", "vfs", "sys", "nectar")) .inherit(true) .ipc(serde_json::to_vec(&vfs::VfsRequest { path: zip_path, @@ -392,7 +392,7 @@ fn handle_new_package( // now, read the pkg contents to create our own listing and state, // such that we can mirror this package to others. Request::new() - .target(("our", "vfs", "sys", "uqbar")) + .target(("our", "vfs", "sys", "nectar")) .ipc(serde_json::to_vec(&vfs::VfsRequest { path: metadata_path, action: vfs::VfsAction::Read, @@ -427,7 +427,7 @@ fn handle_new_package( fn handle_install(our: &Address, package: &PackageId) -> anyhow::Result<()> { let drive_path = format!("/{}/pkg", package); Request::new() - .target(("our", "vfs", "sys", "uqbar")) + .target(("our", "vfs", "sys", "nectar")) .ipc(serde_json::to_vec(&vfs::VfsRequest { path: format!("{}/manifest.json", drive_path), action: vfs::VfsAction::Read, @@ -440,7 +440,7 @@ fn handle_install(our: &Address, package: &PackageId) -> anyhow::Result<()> { let manifest = serde_json::from_str::>(&manifest)?; // always grant read/write to their drive, which we created for them let Some(read_cap) = get_capability( - &Address::new(&our.node, ("vfs", "sys", "uqbar")), + &Address::new(&our.node, ("vfs", "sys", "nectar")), &serde_json::to_string(&serde_json::json!({ "kind": "read", "drive": drive_path, @@ -449,7 +449,7 @@ fn handle_install(our: &Address, package: &PackageId) -> anyhow::Result<()> { return Err(anyhow::anyhow!("app store: no read cap")); }; let Some(write_cap) = get_capability( - &Address::new(&our.node, ("vfs", "sys", "uqbar")), + &Address::new(&our.node, ("vfs", "sys", "nectar")), &serde_json::to_string(&serde_json::json!({ "kind": "write", "drive": drive_path, @@ -458,7 +458,7 @@ fn handle_install(our: &Address, package: &PackageId) -> anyhow::Result<()> { return Err(anyhow::anyhow!("app store: no write cap")); }; let Some(networking_cap) = get_capability( - &Address::new(&our.node, ("kernel", "sys", "uqbar")), + &Address::new(&our.node, ("kernel", "sys", "nectar")), &"\"network\"".to_string(), ) else { return Err(anyhow::anyhow!("app store: no net cap")); @@ -486,14 +486,14 @@ fn handle_install(our: &Address, package: &PackageId) -> anyhow::Result<()> { }; // kill process if it already exists Request::new() - .target(("our", "kernel", "sys", "uqbar")) + .target(("our", "kernel", "sys", "nectar")) .ipc(serde_json::to_vec(&kt::KernelCommand::KillProcess( parsed_new_process_id.clone(), ))?) .send()?; let _bytes_response = Request::new() - .target(("our", "vfs", "sys", "uqbar")) + .target(("our", "vfs", "sys", "nectar")) .ipc(serde_json::to_vec(&vfs::VfsRequest { path: wasm_path.clone(), action: vfs::VfsAction::Read, @@ -554,7 +554,7 @@ fn handle_install(our: &Address, package: &PackageId) -> anyhow::Result<()> { } } Request::new() - .target(("our", "kernel", "sys", "uqbar")) + .target(("our", "kernel", "sys", "nectar")) .ipc(serde_json::to_vec(&kt::KernelCommand::InitializeProcess { id: parsed_new_process_id.clone(), wasm_bytes_handle: wasm_path, @@ -571,7 +571,7 @@ fn handle_install(our: &Address, package: &PackageId) -> anyhow::Result<()> { serde_json::Value::String(process_name) => { if let Ok(parsed_process_id) = ProcessId::from_str(&process_name) { let _ = Request::new() - .target(("our", "kernel", "sys", "uqbar")) + .target(("our", "kernel", "sys", "nectar")) .ipc( serde_json::to_vec(&kt::KernelCommand::GrantCapabilities { target: parsed_process_id, @@ -595,7 +595,7 @@ fn handle_install(our: &Address, package: &PackageId) -> anyhow::Result<()> { { if let Some(params) = map.get("params") { let _ = Request::new() - .target(("our", "kernel", "sys", "uqbar")) + .target(("our", "kernel", "sys", "nectar")) .ipc( serde_json::to_vec( &kt::KernelCommand::GrantCapabilities { @@ -623,7 +623,7 @@ fn handle_install(our: &Address, package: &PackageId) -> anyhow::Result<()> { } } Request::new() - .target(("our", "kernel", "sys", "uqbar")) + .target(("our", "kernel", "sys", "nectar")) .ipc(serde_json::to_vec(&kt::KernelCommand::RunProcess( parsed_new_process_id, ))?) @@ -635,7 +635,7 @@ fn handle_install(our: &Address, package: &PackageId) -> anyhow::Result<()> { fn handle_uninstall(package: &PackageId) -> anyhow::Result<()> { let drive_path = format!("/{}/pkg", package); Request::new() - .target(("our", "vfs", "sys", "uqbar")) + .target(("our", "vfs", "sys", "nectar")) .ipc(serde_json::to_vec(&vfs::VfsRequest { path: format!("{}/manifest.json", drive_path), action: vfs::VfsAction::Read, @@ -653,7 +653,7 @@ fn handle_uninstall(package: &PackageId) -> anyhow::Result<()> { continue; }; Request::new() - .target(("our", "kernel", "sys", "uqbar")) + .target(("our", "kernel", "sys", "nectar")) .ipc(serde_json::to_vec(&kt::KernelCommand::KillProcess( parsed_new_process_id, ))?) @@ -661,7 +661,7 @@ fn handle_uninstall(package: &PackageId) -> anyhow::Result<()> { } // then, delete the drive Request::new() - .target(("our", "vfs", "sys", "uqbar")) + .target(("our", "vfs", "sys", "nectar")) .ipc(serde_json::to_vec(&vfs::VfsRequest { path: drive_path, action: vfs::VfsAction::RemoveDirAll, @@ -687,7 +687,7 @@ fn handle_remote_request( // get the .zip from VFS and attach as payload to response let file_path = format!("/{}/pkg/{}.zip", package, package); let Ok(Ok(_)) = Request::new() - .target(("our", "vfs", "sys", "uqbar")) + .target(("our", "vfs", "sys", "nectar")) .ipc( serde_json::to_vec(&vfs::VfsRequest { path: file_path, diff --git a/modules/app_store/ft_worker/Cargo.toml b/modules/app_store/ft_worker/Cargo.toml index 678b79b3..0d23c054 100644 --- a/modules/app_store/ft_worker/Cargo.toml +++ b/modules/app_store/ft_worker/Cargo.toml @@ -16,11 +16,11 @@ bincode = "1.3.3" rand = "0.8" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -uqbar_process_lib = { git = "ssh://git@github.com/uqbar-dao/process_lib.git", rev = "e72a791" } +nectar_process_lib = { git = "ssh://git@github.com/uqbar-dao/process_lib.git", rev = "6520b95" } wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "efcc759" } [lib] crate-type = ["cdylib"] [package.metadata.component] -package = "uqbar:process" +package = "nectar:process" diff --git a/modules/app_store/ft_worker/src/ft_worker_lib.rs b/modules/app_store/ft_worker/src/ft_worker_lib.rs index 8b9c572b..d5767a9f 100644 --- a/modules/app_store/ft_worker/src/ft_worker_lib.rs +++ b/modules/app_store/ft_worker/src/ft_worker_lib.rs @@ -1,5 +1,5 @@ +use nectar_process_lib::*; use serde::{Deserialize, Serialize}; -use uqbar_process_lib::*; #[derive(Debug, Serialize, Deserialize)] pub struct FileTransferContext { diff --git a/modules/app_store/ft_worker/src/lib.rs b/modules/app_store/ft_worker/src/lib.rs index 6f9822dd..a9c42b39 100644 --- a/modules/app_store/ft_worker/src/lib.rs +++ b/modules/app_store/ft_worker/src/lib.rs @@ -1,6 +1,6 @@ +use nectar_process_lib::println; +use nectar_process_lib::*; use serde::{Deserialize, Serialize}; -use uqbar_process_lib::*; -use uqbar_process_lib::println; mod ft_worker_lib; use ft_worker_lib::*; @@ -23,9 +23,14 @@ pub enum FTWorkerProtocol { call_init!(init); fn init(our: Address) { - let Ok(Message::Request { source: parent_process, ipc, .. }) = await_message() else { - panic!("ft_worker: got bad init message"); - }; + let Ok(Message::Request { + source: parent_process, + ipc, + .. + }) = await_message() + else { + panic!("ft_worker: got bad init message"); + }; let command = serde_json::from_slice::(&ipc) .expect("ft_worker: got unparseable init message"); @@ -42,7 +47,9 @@ fn init(our: Address) { timeout, .. } => handle_receive(parent_process, &file_name, total_chunks, timeout), - }) else { return }; + }) else { + return; + }; Response::new() .ipc(serde_json::to_vec(&result).unwrap()) @@ -56,7 +63,7 @@ fn handle_send(our: &Address, target: &Address, file_name: &str, timeout: u64) - let transfer_id: u64 = our.process().parse().unwrap(); let Some(payload) = get_payload() else { println!("ft_worker: wasn't given payload!"); - return FTWorkerResult::Err(TransferError::SourceFailed) + return FTWorkerResult::Err(TransferError::SourceFailed); }; let file_bytes = payload.bytes; let mut file_size = file_bytes.len() as u64; @@ -69,19 +76,23 @@ fn handle_send(our: &Address, target: &Address, file_name: &str, timeout: u64) - // send contents in chunks and wait for // acknowledgement. let Ok(Ok(response)) = Request::to(target.clone()) - .ipc(serde_json::to_vec(&FTWorkerCommand::Receive { - transfer_id, - file_name: file_name.to_string(), - file_size, - total_chunks, - timeout, - }).unwrap()) - .send_and_await_response(timeout) else { - return FTWorkerResult::Err(TransferError::TargetOffline) - }; + .ipc( + serde_json::to_vec(&FTWorkerCommand::Receive { + transfer_id, + file_name: file_name.to_string(), + file_size, + total_chunks, + timeout, + }) + .unwrap(), + ) + .send_and_await_response(timeout) + else { + return FTWorkerResult::Err(TransferError::TargetOffline); + }; let opp_worker = response.source(); let Ok(FTWorkerProtocol::Ready) = serde_json::from_slice(&response.ipc()) else { - return FTWorkerResult::Err(TransferError::TargetRejected) + return FTWorkerResult::Err(TransferError::TargetRejected); }; // send file in chunks loop { @@ -110,10 +121,10 @@ fn handle_send(our: &Address, target: &Address, file_name: &str, timeout: u64) - } // now wait for Finished response let Ok(Message::Response { ipc, .. }) = await_message() else { - return FTWorkerResult::Err(TransferError::TargetRejected) + return FTWorkerResult::Err(TransferError::TargetRejected); }; let Ok(FTWorkerProtocol::Finished) = serde_json::from_slice(&ipc) else { - return FTWorkerResult::Err(TransferError::TargetRejected) + return FTWorkerResult::Err(TransferError::TargetRejected); }; // return success to parent return FTWorkerResult::SendSuccess; @@ -138,13 +149,13 @@ fn handle_receive( let start_time = std::time::Instant::now(); loop { let Ok(Message::Request { .. }) = await_message() else { - return Some(FTWorkerResult::Err(TransferError::SourceFailed)) + return Some(FTWorkerResult::Err(TransferError::SourceFailed)); }; if start_time.elapsed().as_secs() > timeout { - return Some(FTWorkerResult::Err(TransferError::SourceFailed)) + return Some(FTWorkerResult::Err(TransferError::SourceFailed)); } let Some(payload) = get_payload() else { - return Some(FTWorkerResult::Err(TransferError::SourceFailed)) + return Some(FTWorkerResult::Err(TransferError::SourceFailed)); }; chunks_received += 1; file_bytes.extend(payload.bytes); diff --git a/modules/app_store/pkg/manifest.json b/modules/app_store/pkg/manifest.json index de1e7080..7eeb25e2 100644 --- a/modules/app_store/pkg/manifest.json +++ b/modules/app_store/pkg/manifest.json @@ -5,25 +5,25 @@ "on_exit": "Restart", "request_networking": true, "request_capabilities": [ - "terminal:terminal:uqbar", - "filesystem:sys:uqbar", - "http_server:sys:uqbar", - "http_client:sys:uqbar", - "net:sys:uqbar", - "vfs:sys:uqbar", - "kernel:sys:uqbar", - "eth:sys:uqbar", + "terminal:terminal:nectar", + "filesystem:sys:nectar", + "http_server:sys:nectar", + "http_client:sys:nectar", + "net:sys:nectar", + "vfs:sys:nectar", + "kernel:sys:nectar", + "eth:sys:nectar", { - "process": "vfs:sys:uqbar", + "process": "vfs:sys:nectar", "params": { "root": true } } ], "grant_capabilities": [ - "http_server:sys:uqbar", - "terminal:terminal:uqbar", - "vfs:sys:uqbar" + "http_server:sys:nectar", + "terminal:terminal:nectar", + "vfs:sys:nectar" ], "public": false } diff --git a/modules/app_store/pkg/metadata.json b/modules/app_store/pkg/metadata.json index c3fd552d..46998f5b 100644 --- a/modules/app_store/pkg/metadata.json +++ b/modules/app_store/pkg/metadata.json @@ -1,6 +1,10 @@ { "package": "app_store", - "publisher": "uqbar", - "version": [0, 2, 0], + "publisher": "nectar", + "version": [ + 0, + 2, + 0 + ], "description": "A package manager + app store." -} +} \ No newline at end of file diff --git a/modules/chess/chess/Cargo.toml b/modules/chess/chess/Cargo.toml index f720cb82..b6f85d0e 100644 --- a/modules/chess/chess/Cargo.toml +++ b/modules/chess/chess/Cargo.toml @@ -16,11 +16,11 @@ pleco = "0.5" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" url = "*" -uqbar_process_lib = { git = "ssh://git@github.com/uqbar-dao/process_lib.git", rev = "e72a791" } +nectar_process_lib = { git = "ssh://git@github.com/uqbar-dao/process_lib.git", rev = "6520b95" } wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "efcc759" } [lib] crate-type = ["cdylib"] [package.metadata.component] -package = "uqbar:process" +package = "nectar:process" diff --git a/modules/chess/chess/src/lib.rs b/modules/chess/chess/src/lib.rs index 5e7c796e..9d96c9a0 100644 --- a/modules/chess/chess/src/lib.rs +++ b/modules/chess/chess/src/lib.rs @@ -1,11 +1,11 @@ #![feature(let_chains)] -use pleco::Board; -use serde::{Deserialize, Serialize}; -use std::collections::{HashMap, HashSet}; -use uqbar_process_lib::{ +use nectar_process_lib::{ await_message, call_init, get_payload, get_typed_state, http, println, set_state, Address, Message, NodeId, Payload, Request, Response, }; +use pleco::Board; +use serde::{Deserialize, Serialize}; +use std::collections::{HashMap, HashSet}; extern crate base64; // @@ -73,7 +73,7 @@ fn load_chess_state() -> ChessState { fn send_ws_update(our: &Address, game: &Game, open_channels: &HashSet) -> anyhow::Result<()> { for channel in open_channels { Request::new() - .target((&our.node, "http_server", "sys", "uqbar")) + .target((&our.node, "http_server", "sys", "nectar")) .ipc(serde_json::to_vec( &http::HttpServerAction::WebSocketPush { channel_id: *channel, @@ -94,7 +94,7 @@ fn send_ws_update(our: &Address, game: &Game, open_channels: &HashSet) -> a Ok(()) } -// Boilerplate: generate the wasm bindings for an Uqbar app +// Boilerplate: generate the wasm bindings for a Nectar app wit_bindgen::generate!({ path: "../../../wit", world: "process", @@ -168,14 +168,14 @@ fn handle_request(our: &Address, message: &Message, state: &mut ChessState) -> a // Note that since this is a local request, we *can* trust the ProcessId. // Here, we'll accept messages from the local terminal so as to make this a "CLI" app. } else if message.source().node == our.node - && message.source().process == "terminal:terminal:uqbar" + && message.source().process == "terminal:terminal:nectar" { let Ok(chess_request) = serde_json::from_slice::(message.ipc()) else { return Err(anyhow::anyhow!("invalid chess request")); }; handle_local_request(our, state, &chess_request) } else if message.source().node == our.node - && message.source().process == "http_server:sys:uqbar" + && message.source().process == "http_server:sys:nectar" { // receive HTTP requests and websocket connection messages from our server match serde_json::from_slice::(message.ipc())? { diff --git a/modules/chess/pkg/manifest.json b/modules/chess/pkg/manifest.json index 87f51417..9ca0c311 100644 --- a/modules/chess/pkg/manifest.json +++ b/modules/chess/pkg/manifest.json @@ -5,10 +5,10 @@ "on_exit": "Restart", "request_networking": true, "request_capabilities": [ - "net:sys:uqbar" + "net:sys:nectar" ], "grant_capabilities": [ - "http_server:sys:uqbar" + "http_server:sys:nectar" ], "public": true } diff --git a/modules/chess/pkg/metadata.json b/modules/chess/pkg/metadata.json index 59360b8e..c0d8cd22 100644 --- a/modules/chess/pkg/metadata.json +++ b/modules/chess/pkg/metadata.json @@ -1,5 +1,9 @@ { "package": "chess", - "publisher": "uqbar", - "version": [0, 2, 0] -} + "publisher": "nectar", + "version": [ + 0, + 2, + 0 + ] +} \ No newline at end of file diff --git a/modules/chess/pkg/ui/assets/index-43cbed78.js b/modules/chess/pkg/ui/assets/index-43cbed78.js index 63dc0c0b..ffcc546f 100644 --- a/modules/chess/pkg/ui/assets/index-43cbed78.js +++ b/modules/chess/pkg/ui/assets/index-43cbed78.js @@ -1,4 +1,4 @@ -var wh=Object.defineProperty;var kh=(e,t,n)=>t in e?wh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Ze=(e,t,n)=>(kh(e,typeof t!="symbol"?t+"":t,n),n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const s of i.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(o){if(o.ep)return;o.ep=!0;const i=n(o);fetch(o.href,i)}})();function wc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var kc={exports:{}},di={},Ec={exports:{}},z={};/** +var wh = Object.defineProperty; var kh = (e, t, n) => t in e ? wh(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n; var Ze = (e, t, n) => (kh(e, typeof t != "symbol" ? t + "" : t, n), n); (function () { const t = document.createElement("link").relList; if (t && t.supports && t.supports("modulepreload")) return; for (const o of document.querySelectorAll('link[rel="modulepreload"]')) r(o); new MutationObserver(o => { for (const i of o) if (i.type === "childList") for (const s of i.addedNodes) s.tagName === "LINK" && s.rel === "modulepreload" && r(s) }).observe(document, { childList: !0, subtree: !0 }); function n(o) { const i = {}; return o.integrity && (i.integrity = o.integrity), o.referrerPolicy && (i.referrerPolicy = o.referrerPolicy), o.crossOrigin === "use-credentials" ? i.credentials = "include" : o.crossOrigin === "anonymous" ? i.credentials = "omit" : i.credentials = "same-origin", i } function r(o) { if (o.ep) return; o.ep = !0; const i = n(o); fetch(o.href, i) } })(); function wc(e) { return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e } var kc = { exports: {} }, di = {}, Ec = { exports: {} }, z = {};/** * @license React * react.production.min.js * @@ -6,7 +6,7 @@ var wh=Object.defineProperty;var kh=(e,t,n)=>t in e?wh(e,t,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Vr=Symbol.for("react.element"),Eh=Symbol.for("react.portal"),Ch=Symbol.for("react.fragment"),xh=Symbol.for("react.strict_mode"),_h=Symbol.for("react.profiler"),Oh=Symbol.for("react.provider"),Th=Symbol.for("react.context"),Dh=Symbol.for("react.forward_ref"),Ph=Symbol.for("react.suspense"),Ih=Symbol.for("react.memo"),jh=Symbol.for("react.lazy"),ju=Symbol.iterator;function Lh(e){return e===null||typeof e!="object"?null:(e=ju&&e[ju]||e["@@iterator"],typeof e=="function"?e:null)}var Cc={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},xc=Object.assign,_c={};function Xn(e,t,n){this.props=e,this.context=t,this.refs=_c,this.updater=n||Cc}Xn.prototype.isReactComponent={};Xn.prototype.setState=function(e,t){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.");this.updater.enqueueSetState(this,e,t,"setState")};Xn.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Oc(){}Oc.prototype=Xn.prototype;function _l(e,t,n){this.props=e,this.context=t,this.refs=_c,this.updater=n||Cc}var Ol=_l.prototype=new Oc;Ol.constructor=_l;xc(Ol,Xn.prototype);Ol.isPureReactComponent=!0;var Lu=Array.isArray,Tc=Object.prototype.hasOwnProperty,Tl={current:null},Dc={key:!0,ref:!0,__self:!0,__source:!0};function Pc(e,t,n){var r,o={},i=null,s=null;if(t!=null)for(r in t.ref!==void 0&&(s=t.ref),t.key!==void 0&&(i=""+t.key),t)Tc.call(t,r)&&!Dc.hasOwnProperty(r)&&(o[r]=t[r]);var l=arguments.length-2;if(l===1)o.children=n;else if(1t in e?wh(e,t,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var zh=C,$h=Symbol.for("react.element"),Fh=Symbol.for("react.fragment"),Uh=Object.prototype.hasOwnProperty,Hh=zh.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Bh={key:!0,ref:!0,__self:!0,__source:!0};function Ic(e,t,n){var r,o={},i=null,s=null;n!==void 0&&(i=""+n),t.key!==void 0&&(i=""+t.key),t.ref!==void 0&&(s=t.ref);for(r in t)Uh.call(t,r)&&!Bh.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps,t)o[r]===void 0&&(o[r]=t[r]);return{$$typeof:$h,type:e,key:i,ref:s,props:o,_owner:Hh.current}}di.Fragment=Fh;di.jsx=Ic;di.jsxs=Ic;kc.exports=di;var S=kc.exports,_s={},jc={exports:{}},Ae={},Lc={exports:{}},Nc={};/** + */var zh = C, $h = Symbol.for("react.element"), Fh = Symbol.for("react.fragment"), Uh = Object.prototype.hasOwnProperty, Hh = zh.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, Bh = { key: !0, ref: !0, __self: !0, __source: !0 }; function Ic(e, t, n) { var r, o = {}, i = null, s = null; n !== void 0 && (i = "" + n), t.key !== void 0 && (i = "" + t.key), t.ref !== void 0 && (s = t.ref); for (r in t) Uh.call(t, r) && !Bh.hasOwnProperty(r) && (o[r] = t[r]); if (e && e.defaultProps) for (r in t = e.defaultProps, t) o[r] === void 0 && (o[r] = t[r]); return { $$typeof: $h, type: e, key: i, ref: s, props: o, _owner: Hh.current } } di.Fragment = Fh; di.jsx = Ic; di.jsxs = Ic; kc.exports = di; var S = kc.exports, _s = {}, jc = { exports: {} }, Ae = {}, Lc = { exports: {} }, Nc = {};/** * @license React * scheduler.production.min.js * @@ -22,7 +22,7 @@ var wh=Object.defineProperty;var kh=(e,t,n)=>t in e?wh(e,t,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */(function(e){function t(D,L){var R=D.length;D.push(L);e:for(;0>>1,Y=D[U];if(0>>1;Uo(_t,R))Xeo(ze,_t)?(D[U]=ze,D[Xe]=R,U=Xe):(D[U]=_t,D[b]=R,U=b);else if(Xeo(ze,R))D[U]=ze,D[Xe]=R,U=Xe;else break e}}return L}function o(D,L){var R=D.sortIndex-L.sortIndex;return R!==0?R:D.id-L.id}if(typeof performance=="object"&&typeof performance.now=="function"){var i=performance;e.unstable_now=function(){return i.now()}}else{var s=Date,l=s.now();e.unstable_now=function(){return s.now()-l}}var u=[],a=[],h=1,m=null,d=3,g=!1,v=!1,y=!1,w=typeof setTimeout=="function"?setTimeout:null,p=typeof clearTimeout=="function"?clearTimeout:null,c=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function f(D){for(var L=n(a);L!==null;){if(L.callback===null)r(a);else if(L.startTime<=D)r(a),L.sortIndex=L.expirationTime,t(u,L);else break;L=n(a)}}function k(D){if(y=!1,f(D),!v)if(n(u)!==null)v=!0,tn(x);else{var L=n(a);L!==null&&nn(k,L.startTime-D)}}function x(D,L){v=!1,y&&(y=!1,p(T),T=-1),g=!0;var R=d;try{for(f(L),m=n(u);m!==null&&(!(m.expirationTime>L)||D&&!ne());){var U=m.callback;if(typeof U=="function"){m.callback=null,d=m.priorityLevel;var Y=U(m.expirationTime<=L);L=e.unstable_now(),typeof Y=="function"?m.callback=Y:m===n(u)&&r(u),f(L)}else r(u);m=n(u)}if(m!==null)var lt=!0;else{var b=n(a);b!==null&&nn(k,b.startTime-L),lt=!1}return lt}finally{m=null,d=R,g=!1}}var _=!1,O=null,T=-1,j=5,I=-1;function ne(){return!(e.unstable_now()-ID||125U?(D.sortIndex=R,t(a,D),n(u)===null&&D===n(a)&&(y?(p(T),T=-1):y=!0,nn(k,R-U))):(D.sortIndex=Y,t(u,D),v||g||(v=!0,tn(x))),D},e.unstable_shouldYield=ne,e.unstable_wrapCallback=function(D){var L=d;return function(){var R=d;d=L;try{return D.apply(this,arguments)}finally{d=R}}}})(Nc);Lc.exports=Nc;var qh=Lc.exports;/** + */(function (e) { function t(D, L) { var R = D.length; D.push(L); e: for (; 0 < R;) { var U = R - 1 >>> 1, Y = D[U]; if (0 < o(Y, L)) D[U] = L, D[R] = Y, R = U; else break e } } function n(D) { return D.length === 0 ? null : D[0] } function r(D) { if (D.length === 0) return null; var L = D[0], R = D.pop(); if (R !== L) { D[0] = R; e: for (var U = 0, Y = D.length, lt = Y >>> 1; U < lt;) { var b = 2 * (U + 1) - 1, _t = D[b], Xe = b + 1, ze = D[Xe]; if (0 > o(_t, R)) Xe < Y && 0 > o(ze, _t) ? (D[U] = ze, D[Xe] = R, U = Xe) : (D[U] = _t, D[b] = R, U = b); else if (Xe < Y && 0 > o(ze, R)) D[U] = ze, D[Xe] = R, U = Xe; else break e } } return L } function o(D, L) { var R = D.sortIndex - L.sortIndex; return R !== 0 ? R : D.id - L.id } if (typeof performance == "object" && typeof performance.now == "function") { var i = performance; e.unstable_now = function () { return i.now() } } else { var s = Date, l = s.now(); e.unstable_now = function () { return s.now() - l } } var u = [], a = [], h = 1, m = null, d = 3, g = !1, v = !1, y = !1, w = typeof setTimeout == "function" ? setTimeout : null, p = typeof clearTimeout == "function" ? clearTimeout : null, c = typeof setImmediate < "u" ? setImmediate : null; typeof navigator < "u" && navigator.scheduling !== void 0 && navigator.scheduling.isInputPending !== void 0 && navigator.scheduling.isInputPending.bind(navigator.scheduling); function f(D) { for (var L = n(a); L !== null;) { if (L.callback === null) r(a); else if (L.startTime <= D) r(a), L.sortIndex = L.expirationTime, t(u, L); else break; L = n(a) } } function k(D) { if (y = !1, f(D), !v) if (n(u) !== null) v = !0, tn(x); else { var L = n(a); L !== null && nn(k, L.startTime - D) } } function x(D, L) { v = !1, y && (y = !1, p(T), T = -1), g = !0; var R = d; try { for (f(L), m = n(u); m !== null && (!(m.expirationTime > L) || D && !ne());) { var U = m.callback; if (typeof U == "function") { m.callback = null, d = m.priorityLevel; var Y = U(m.expirationTime <= L); L = e.unstable_now(), typeof Y == "function" ? m.callback = Y : m === n(u) && r(u), f(L) } else r(u); m = n(u) } if (m !== null) var lt = !0; else { var b = n(a); b !== null && nn(k, b.startTime - L), lt = !1 } return lt } finally { m = null, d = R, g = !1 } } var _ = !1, O = null, T = -1, j = 5, I = -1; function ne() { return !(e.unstable_now() - I < j) } function fe() { if (O !== null) { var D = e.unstable_now(); I = D; var L = !0; try { L = O(!0, D) } finally { L ? ye() : (_ = !1, O = null) } } else _ = !1 } var ye; if (typeof c == "function") ye = function () { c(fe) }; else if (typeof MessageChannel < "u") { var De = new MessageChannel, en = De.port2; De.port1.onmessage = fe, ye = function () { en.postMessage(null) } } else ye = function () { w(fe, 0) }; function tn(D) { O = D, _ || (_ = !0, ye()) } function nn(D, L) { T = w(function () { D(e.unstable_now()) }, L) } e.unstable_IdlePriority = 5, e.unstable_ImmediatePriority = 1, e.unstable_LowPriority = 4, e.unstable_NormalPriority = 3, e.unstable_Profiling = null, e.unstable_UserBlockingPriority = 2, e.unstable_cancelCallback = function (D) { D.callback = null }, e.unstable_continueExecution = function () { v || g || (v = !0, tn(x)) }, e.unstable_forceFrameRate = function (D) { 0 > D || 125 < D ? console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported") : j = 0 < D ? Math.floor(1e3 / D) : 5 }, e.unstable_getCurrentPriorityLevel = function () { return d }, e.unstable_getFirstCallbackNode = function () { return n(u) }, e.unstable_next = function (D) { switch (d) { case 1: case 2: case 3: var L = 3; break; default: L = d }var R = d; d = L; try { return D() } finally { d = R } }, e.unstable_pauseExecution = function () { }, e.unstable_requestPaint = function () { }, e.unstable_runWithPriority = function (D, L) { switch (D) { case 1: case 2: case 3: case 4: case 5: break; default: D = 3 }var R = d; d = D; try { return L() } finally { d = R } }, e.unstable_scheduleCallback = function (D, L, R) { var U = e.unstable_now(); switch (typeof R == "object" && R !== null ? (R = R.delay, R = typeof R == "number" && 0 < R ? U + R : U) : R = U, D) { case 1: var Y = -1; break; case 2: Y = 250; break; case 5: Y = 1073741823; break; case 4: Y = 1e4; break; default: Y = 5e3 }return Y = R + Y, D = { id: h++, callback: L, priorityLevel: D, startTime: R, expirationTime: Y, sortIndex: -1 }, R > U ? (D.sortIndex = R, t(a, D), n(u) === null && D === n(a) && (y ? (p(T), T = -1) : y = !0, nn(k, R - U))) : (D.sortIndex = Y, t(u, D), v || g || (v = !0, tn(x))), D }, e.unstable_shouldYield = ne, e.unstable_wrapCallback = function (D) { var L = d; return function () { var R = d; d = L; try { return D.apply(this, arguments) } finally { d = R } } } })(Nc); Lc.exports = Nc; var qh = Lc.exports;/** * @license React * react-dom.production.min.js * @@ -30,14 +30,32 @@ var wh=Object.defineProperty;var kh=(e,t,n)=>t in e?wh(e,t,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Mc=C,Re=qh;function E(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Os=Object.prototype.hasOwnProperty,Wh=/^[: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]*$/,Mu={},Ru={};function Qh(e){return Os.call(Ru,e)?!0:Os.call(Mu,e)?!1:Wh.test(e)?Ru[e]=!0:(Mu[e]=!0,!1)}function Kh(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function Vh(e,t,n,r){if(t===null||typeof t>"u"||Kh(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Ee(e,t,n,r,o,i,s){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=s}var de={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){de[e]=new Ee(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];de[t]=new Ee(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){de[e]=new Ee(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){de[e]=new Ee(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){de[e]=new Ee(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){de[e]=new Ee(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){de[e]=new Ee(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){de[e]=new Ee(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){de[e]=new Ee(e,5,!1,e.toLowerCase(),null,!1,!1)});var Pl=/[\-:]([a-z])/g;function Il(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Pl,Il);de[t]=new Ee(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Pl,Il);de[t]=new Ee(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Pl,Il);de[t]=new Ee(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){de[e]=new Ee(e,1,!1,e.toLowerCase(),null,!1,!1)});de.xlinkHref=new Ee("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){de[e]=new Ee(e,1,!1,e.toLowerCase(),null,!0,!0)});function jl(e,t,n,r){var o=de.hasOwnProperty(t)?de[t]:null;(o!==null?o.type!==0:r||!(2l||o[s]!==i[l]){var u=` -`+o[s].replace(" at new "," at ");return e.displayName&&u.includes("")&&(u=u.replace("",e.displayName)),u}while(1<=s&&0<=l);break}}}finally{qi=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?fr(e):""}function Gh(e){switch(e.tag){case 5:return fr(e.type);case 16:return fr("Lazy");case 13:return fr("Suspense");case 19:return fr("SuspenseList");case 0:case 2:case 15:return e=Wi(e.type,!1),e;case 11:return e=Wi(e.type.render,!1),e;case 1:return e=Wi(e.type,!0),e;default:return""}}function Is(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case On:return"Fragment";case _n:return"Portal";case Ts:return"Profiler";case Ll:return"StrictMode";case Ds:return"Suspense";case Ps:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case bc:return(e.displayName||"Context")+".Consumer";case Ac:return(e._context.displayName||"Context")+".Provider";case Nl:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Ml:return t=e.displayName||null,t!==null?t:Is(e.type)||"Memo";case Lt:t=e._payload,e=e._init;try{return Is(e(t))}catch{}}return null}function Yh(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Is(t);case 8:return t===Ll?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Gt(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function $c(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Xh(e){var t=$c(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(s){r=""+s,i.call(this,s)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(s){r=""+s},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function so(e){e._valueTracker||(e._valueTracker=Xh(e))}function Fc(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=$c(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Fo(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function js(e,t){var n=t.checked;return G({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function bu(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Gt(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Uc(e,t){t=t.checked,t!=null&&jl(e,"checked",t,!1)}function Ls(e,t){Uc(e,t);var n=Gt(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Ns(e,t.type,n):t.hasOwnProperty("defaultValue")&&Ns(e,t.type,Gt(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function zu(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Ns(e,t,n){(t!=="number"||Fo(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var hr=Array.isArray;function bn(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=lo.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Pr(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var vr={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Jh=["Webkit","ms","Moz","O"];Object.keys(vr).forEach(function(e){Jh.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),vr[t]=vr[e]})});function Wc(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||vr.hasOwnProperty(e)&&vr[e]?(""+t).trim():t+"px"}function Qc(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=Wc(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}var Zh=G({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function As(e,t){if(t){if(Zh[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(E(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(E(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(E(61))}if(t.style!=null&&typeof t.style!="object")throw Error(E(62))}}function bs(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var zs=null;function Rl(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var $s=null,zn=null,$n=null;function Uu(e){if(e=Xr(e)){if(typeof $s!="function")throw Error(E(280));var t=e.stateNode;t&&(t=mi(t),$s(e.stateNode,e.type,t))}}function Kc(e){zn?$n?$n.push(e):$n=[e]:zn=e}function Vc(){if(zn){var e=zn,t=$n;if($n=zn=null,Uu(e),t)for(e=0;e>>=0,e===0?32:31-(cp(e)/dp|0)|0}var uo=64,ao=4194304;function pr(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function qo(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,o=e.suspendedLanes,i=e.pingedLanes,s=n&268435455;if(s!==0){var l=s&~o;l!==0?r=pr(l):(i&=s,i!==0&&(r=pr(i)))}else s=n&~o,s!==0?r=pr(s):i!==0&&(r=pr(i));if(r===0)return 0;if(t!==0&&t!==r&&!(t&o)&&(o=r&-r,i=t&-t,o>=i||o===16&&(i&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Gr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-ot(t),e[t]=n}function gp(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Sr),Yu=String.fromCharCode(32),Xu=!1;function pd(e,t){switch(e){case"keyup":return Bp.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function gd(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Tn=!1;function Wp(e,t){switch(e){case"compositionend":return gd(t);case"keypress":return t.which!==32?null:(Xu=!0,Yu);case"textInput":return e=t.data,e===Yu&&Xu?null:e;default:return null}}function Qp(e,t){if(Tn)return e==="compositionend"||!Bl&&pd(e,t)?(e=fd(),Po=Fl=zt=null,Tn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=ta(n)}}function Sd(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Sd(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function wd(){for(var e=window,t=Fo();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Fo(e.document)}return t}function ql(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function t0(e){var t=wd(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Sd(n.ownerDocument.documentElement,n)){if(r!==null&&ql(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=n.textContent.length,i=Math.min(r.start,o);r=r.end===void 0?i:Math.min(r.end,o),!e.extend&&i>r&&(o=r,r=i,i=o),o=na(n,i);var s=na(n,r);o&&s&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==s.node||e.focusOffset!==s.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(s.node,s.offset)):(t.setEnd(s.node,s.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Dn=null,Ws=null,kr=null,Qs=!1;function ra(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Qs||Dn==null||Dn!==Fo(r)||(r=Dn,"selectionStart"in r&&ql(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),kr&&Rr(kr,r)||(kr=r,r=Ko(Ws,"onSelect"),0jn||(e.current=Js[jn],Js[jn]=null,jn--)}function H(e,t){jn++,Js[jn]=e.current,e.current=t}var Yt={},ve=Jt(Yt),_e=Jt(!1),fn=Yt;function qn(e,t){var n=e.type.contextTypes;if(!n)return Yt;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o={},i;for(i in n)o[i]=t[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function Oe(e){return e=e.childContextTypes,e!=null}function Go(){W(_e),W(ve)}function ca(e,t,n){if(ve.current!==Yt)throw Error(E(168));H(ve,t),H(_e,n)}function Pd(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in t))throw Error(E(108,Yh(e)||"Unknown",o));return G({},n,r)}function Yo(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Yt,fn=ve.current,H(ve,e),H(_e,_e.current),!0}function da(e,t,n){var r=e.stateNode;if(!r)throw Error(E(169));n?(e=Pd(e,t,fn),r.__reactInternalMemoizedMergedChildContext=e,W(_e),W(ve),H(ve,e)):W(_e),H(_e,n)}var gt=null,vi=!1,is=!1;function Id(e){gt===null?gt=[e]:gt.push(e)}function h0(e){vi=!0,Id(e)}function Zt(){if(!is&>!==null){is=!0;var e=0,t=F;try{var n=gt;for(F=1;e>=s,o-=s,mt=1<<32-ot(t)+o|n<T?(j=O,O=null):j=O.sibling;var I=d(p,O,f[T],k);if(I===null){O===null&&(O=j);break}e&&O&&I.alternate===null&&t(p,O),c=i(I,c,T),_===null?x=I:_.sibling=I,_=I,O=j}if(T===f.length)return n(p,O),Q&&rn(p,T),x;if(O===null){for(;TT?(j=O,O=null):j=O.sibling;var ne=d(p,O,I.value,k);if(ne===null){O===null&&(O=j);break}e&&O&&ne.alternate===null&&t(p,O),c=i(ne,c,T),_===null?x=ne:_.sibling=ne,_=ne,O=j}if(I.done)return n(p,O),Q&&rn(p,T),x;if(O===null){for(;!I.done;T++,I=f.next())I=m(p,I.value,k),I!==null&&(c=i(I,c,T),_===null?x=I:_.sibling=I,_=I);return Q&&rn(p,T),x}for(O=r(p,O);!I.done;T++,I=f.next())I=g(O,p,T,I.value,k),I!==null&&(e&&I.alternate!==null&&O.delete(I.key===null?T:I.key),c=i(I,c,T),_===null?x=I:_.sibling=I,_=I);return e&&O.forEach(function(fe){return t(p,fe)}),Q&&rn(p,T),x}function w(p,c,f,k){if(typeof f=="object"&&f!==null&&f.type===On&&f.key===null&&(f=f.props.children),typeof f=="object"&&f!==null){switch(f.$$typeof){case io:e:{for(var x=f.key,_=c;_!==null;){if(_.key===x){if(x=f.type,x===On){if(_.tag===7){n(p,_.sibling),c=o(_,f.props.children),c.return=p,p=c;break e}}else if(_.elementType===x||typeof x=="object"&&x!==null&&x.$$typeof===Lt&&ya(x)===_.type){n(p,_.sibling),c=o(_,f.props),c.ref=sr(p,_,f),c.return=p,p=c;break e}n(p,_);break}else t(p,_);_=_.sibling}f.type===On?(c=cn(f.props.children,p.mode,k,f.key),c.return=p,p=c):(k=bo(f.type,f.key,f.props,null,p.mode,k),k.ref=sr(p,c,f),k.return=p,p=k)}return s(p);case _n:e:{for(_=f.key;c!==null;){if(c.key===_)if(c.tag===4&&c.stateNode.containerInfo===f.containerInfo&&c.stateNode.implementation===f.implementation){n(p,c.sibling),c=o(c,f.children||[]),c.return=p,p=c;break e}else{n(p,c);break}else t(p,c);c=c.sibling}c=hs(f,p.mode,k),c.return=p,p=c}return s(p);case Lt:return _=f._init,w(p,c,_(f._payload),k)}if(hr(f))return v(p,c,f,k);if(tr(f))return y(p,c,f,k);vo(p,f)}return typeof f=="string"&&f!==""||typeof f=="number"?(f=""+f,c!==null&&c.tag===6?(n(p,c.sibling),c=o(c,f),c.return=p,p=c):(n(p,c),c=fs(f,p.mode,k),c.return=p,p=c),s(p)):n(p,c)}return w}var Qn=zd(!0),$d=zd(!1),Jr={},ft=Jt(Jr),$r=Jt(Jr),Fr=Jt(Jr);function un(e){if(e===Jr)throw Error(E(174));return e}function Zl(e,t){switch(H(Fr,t),H($r,e),H(ft,Jr),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Rs(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Rs(t,e)}W(ft),H(ft,t)}function Kn(){W(ft),W($r),W(Fr)}function Fd(e){un(Fr.current);var t=un(ft.current),n=Rs(t,e.type);t!==n&&(H($r,e),H(ft,n))}function eu(e){$r.current===e&&(W(ft),W($r))}var K=Jt(0);function ni(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ss=[];function tu(){for(var e=0;en?n:4,e(!0);var r=ls.transition;ls.transition={};try{e(!1),t()}finally{F=n,ls.transition=r}}function nf(){return Ye().memoizedState}function v0(e,t,n){var r=Qt(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},rf(e))of(t,n);else if(n=Md(e,t,n,r),n!==null){var o=we();it(n,e,r,o),sf(n,t,r)}}function y0(e,t,n){var r=Qt(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(rf(e))of(t,o);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var s=t.lastRenderedState,l=i(s,n);if(o.hasEagerState=!0,o.eagerState=l,st(l,s)){var u=t.interleaved;u===null?(o.next=o,Xl(t)):(o.next=u.next,u.next=o),t.interleaved=o;return}}catch{}finally{}n=Md(e,t,o,r),n!==null&&(o=we(),it(n,e,r,o),sf(n,t,r))}}function rf(e){var t=e.alternate;return e===V||t!==null&&t===V}function of(e,t){Er=ri=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function sf(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,bl(e,n)}}var oi={readContext:Ge,useCallback:he,useContext:he,useEffect:he,useImperativeHandle:he,useInsertionEffect:he,useLayoutEffect:he,useMemo:he,useReducer:he,useRef:he,useState:he,useDebugValue:he,useDeferredValue:he,useTransition:he,useMutableSource:he,useSyncExternalStore:he,useId:he,unstable_isNewReconciler:!1},S0={readContext:Ge,useCallback:function(e,t){return at().memoizedState=[e,t===void 0?null:t],e},useContext:Ge,useEffect:wa,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,No(4194308,4,Xd.bind(null,t,e),n)},useLayoutEffect:function(e,t){return No(4194308,4,e,t)},useInsertionEffect:function(e,t){return No(4,2,e,t)},useMemo:function(e,t){var n=at();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=at();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=v0.bind(null,V,e),[r.memoizedState,e]},useRef:function(e){var t=at();return e={current:e},t.memoizedState=e},useState:Sa,useDebugValue:su,useDeferredValue:function(e){return at().memoizedState=e},useTransition:function(){var e=Sa(!1),t=e[0];return e=m0.bind(null,e[1]),at().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=V,o=at();if(Q){if(n===void 0)throw Error(E(407));n=n()}else{if(n=t(),le===null)throw Error(E(349));pn&30||Bd(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,wa(Wd.bind(null,r,i,e),[e]),r.flags|=2048,Br(9,qd.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=at(),t=le.identifierPrefix;if(Q){var n=vt,r=mt;n=(r&~(1<<32-ot(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Ur++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=s.createElement(n,{is:r.is}):(e=s.createElement(n),n==="select"&&(s=e,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):e=s.createElementNS(e,n),e[ct]=t,e[zr]=r,gf(e,t,!1,!1),t.stateNode=e;e:{switch(s=bs(n,r),n){case"dialog":q("cancel",e),q("close",e),o=r;break;case"iframe":case"object":case"embed":q("load",e),o=r;break;case"video":case"audio":for(o=0;oGn&&(t.flags|=128,r=!0,lr(i,!1),t.lanes=4194304)}else{if(!r)if(e=ni(s),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),lr(i,!0),i.tail===null&&i.tailMode==="hidden"&&!s.alternate&&!Q)return pe(t),null}else 2*J()-i.renderingStartTime>Gn&&n!==1073741824&&(t.flags|=128,r=!0,lr(i,!1),t.lanes=4194304);i.isBackwards?(s.sibling=t.child,t.child=s):(n=i.last,n!==null?n.sibling=s:t.child=s,i.last=s)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=J(),t.sibling=null,n=K.current,H(K,r?n&1|2:n&1),t):(pe(t),null);case 22:case 23:return fu(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Le&1073741824&&(pe(t),t.subtreeFlags&6&&(t.flags|=8192)):pe(t),null;case 24:return null;case 25:return null}throw Error(E(156,t.tag))}function T0(e,t){switch(Ql(t),t.tag){case 1:return Oe(t.type)&&Go(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Kn(),W(_e),W(ve),tu(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return eu(t),null;case 13:if(W(K),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(E(340));Wn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return W(K),null;case 4:return Kn(),null;case 10:return Yl(t.type._context),null;case 22:case 23:return fu(),null;case 24:return null;default:return null}}var So=!1,me=!1,D0=typeof WeakSet=="function"?WeakSet:Set,P=null;function Rn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){X(e,t,r)}else n.current=null}function cl(e,t,n){try{n()}catch(r){X(e,t,r)}}var Pa=!1;function P0(e,t){if(Ks=Wo,e=wd(),ql(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var s=0,l=-1,u=-1,a=0,h=0,m=e,d=null;t:for(;;){for(var g;m!==n||o!==0&&m.nodeType!==3||(l=s+o),m!==i||r!==0&&m.nodeType!==3||(u=s+r),m.nodeType===3&&(s+=m.nodeValue.length),(g=m.firstChild)!==null;)d=m,m=g;for(;;){if(m===e)break t;if(d===n&&++a===o&&(l=s),d===i&&++h===r&&(u=s),(g=m.nextSibling)!==null)break;m=d,d=m.parentNode}m=g}n=l===-1||u===-1?null:{start:l,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(Vs={focusedElem:e,selectionRange:n},Wo=!1,P=t;P!==null;)if(t=P,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,P=e;else for(;P!==null;){t=P;try{var v=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(v!==null){var y=v.memoizedProps,w=v.memoizedState,p=t.stateNode,c=p.getSnapshotBeforeUpdate(t.elementType===t.type?y:tt(t.type,y),w);p.__reactInternalSnapshotBeforeUpdate=c}break;case 3:var f=t.stateNode.containerInfo;f.nodeType===1?f.textContent="":f.nodeType===9&&f.documentElement&&f.removeChild(f.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(E(163))}}catch(k){X(t,t.return,k)}if(e=t.sibling,e!==null){e.return=t.return,P=e;break}P=t.return}return v=Pa,Pa=!1,v}function Cr(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var i=o.destroy;o.destroy=void 0,i!==void 0&&cl(t,n,i)}o=o.next}while(o!==r)}}function wi(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function dl(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function yf(e){var t=e.alternate;t!==null&&(e.alternate=null,yf(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[ct],delete t[zr],delete t[Xs],delete t[d0],delete t[f0])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Sf(e){return e.tag===5||e.tag===3||e.tag===4}function Ia(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Sf(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function fl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Vo));else if(r!==4&&(e=e.child,e!==null))for(fl(e,t,n),e=e.sibling;e!==null;)fl(e,t,n),e=e.sibling}function hl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(hl(e,t,n),e=e.sibling;e!==null;)hl(e,t,n),e=e.sibling}var ae=null,nt=!1;function Pt(e,t,n){for(n=n.child;n!==null;)wf(e,t,n),n=n.sibling}function wf(e,t,n){if(dt&&typeof dt.onCommitFiberUnmount=="function")try{dt.onCommitFiberUnmount(fi,n)}catch{}switch(n.tag){case 5:me||Rn(n,t);case 6:var r=ae,o=nt;ae=null,Pt(e,t,n),ae=r,nt=o,ae!==null&&(nt?(e=ae,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):ae.removeChild(n.stateNode));break;case 18:ae!==null&&(nt?(e=ae,n=n.stateNode,e.nodeType===8?os(e.parentNode,n):e.nodeType===1&&os(e,n),Nr(e)):os(ae,n.stateNode));break;case 4:r=ae,o=nt,ae=n.stateNode.containerInfo,nt=!0,Pt(e,t,n),ae=r,nt=o;break;case 0:case 11:case 14:case 15:if(!me&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var i=o,s=i.destroy;i=i.tag,s!==void 0&&(i&2||i&4)&&cl(n,t,s),o=o.next}while(o!==r)}Pt(e,t,n);break;case 1:if(!me&&(Rn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(l){X(n,t,l)}Pt(e,t,n);break;case 21:Pt(e,t,n);break;case 22:n.mode&1?(me=(r=me)||n.memoizedState!==null,Pt(e,t,n),me=r):Pt(e,t,n);break;default:Pt(e,t,n)}}function ja(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new D0),t.forEach(function(r){var o=z0.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function et(e,t){var n=t.deletions;if(n!==null)for(var r=0;ro&&(o=s),r&=~i}if(r=o,r=J()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*j0(r/1960))-r,10e?16:e,$t===null)var r=!1;else{if(e=$t,$t=null,li=0,$&6)throw Error(E(331));var o=$;for($|=4,P=e.current;P!==null;){var i=P,s=i.child;if(P.flags&16){var l=i.deletions;if(l!==null){for(var u=0;uJ()-cu?an(e,0):au|=n),Te(e,t)}function Df(e,t){t===0&&(e.mode&1?(t=ao,ao<<=1,!(ao&130023424)&&(ao=4194304)):t=1);var n=we();e=kt(e,t),e!==null&&(Gr(e,t,n),Te(e,n))}function b0(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Df(e,n)}function z0(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(E(314))}r!==null&&r.delete(t),Df(e,n)}var Pf;Pf=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||_e.current)xe=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return xe=!1,_0(e,t,n);xe=!!(e.flags&131072)}else xe=!1,Q&&t.flags&1048576&&jd(t,Jo,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Mo(e,t),e=t.pendingProps;var o=qn(t,ve.current);Un(t,n),o=ru(null,t,r,e,o,n);var i=ou();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Oe(r)?(i=!0,Yo(t)):i=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,Jl(t),o.updater=yi,t.stateNode=o,o._reactInternals=t,rl(t,r,e,n),t=sl(null,t,r,!0,i,n)):(t.tag=0,Q&&i&&Wl(t),Se(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Mo(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=F0(r),e=tt(r,e),o){case 0:t=il(null,t,r,e,n);break e;case 1:t=Oa(null,t,r,e,n);break e;case 11:t=xa(null,t,r,e,n);break e;case 14:t=_a(null,t,r,tt(r.type,e),n);break e}throw Error(E(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:tt(r,o),il(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:tt(r,o),Oa(e,t,r,o,n);case 3:e:{if(ff(t),e===null)throw Error(E(387));r=t.pendingProps,i=t.memoizedState,o=i.element,Rd(e,t),ti(t,r,null,n);var s=t.memoizedState;if(r=s.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){o=Vn(Error(E(423)),t),t=Ta(e,t,r,n,o);break e}else if(r!==o){o=Vn(Error(E(424)),t),t=Ta(e,t,r,n,o);break e}else for(Ne=Bt(t.stateNode.containerInfo.firstChild),Me=t,Q=!0,rt=null,n=$d(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Wn(),r===o){t=Et(e,t,n);break e}Se(e,t,r,n)}t=t.child}return t;case 5:return Fd(t),e===null&&el(t),r=t.type,o=t.pendingProps,i=e!==null?e.memoizedProps:null,s=o.children,Gs(r,o)?s=null:i!==null&&Gs(r,i)&&(t.flags|=32),df(e,t),Se(e,t,s,n),t.child;case 6:return e===null&&el(t),null;case 13:return hf(e,t,n);case 4:return Zl(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Qn(t,null,r,n):Se(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:tt(r,o),xa(e,t,r,o,n);case 7:return Se(e,t,t.pendingProps,n),t.child;case 8:return Se(e,t,t.pendingProps.children,n),t.child;case 12:return Se(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,i=t.memoizedProps,s=o.value,H(Zo,r._currentValue),r._currentValue=s,i!==null)if(st(i.value,s)){if(i.children===o.children&&!_e.current){t=Et(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var l=i.dependencies;if(l!==null){s=i.child;for(var u=l.firstContext;u!==null;){if(u.context===r){if(i.tag===1){u=yt(-1,n&-n),u.tag=2;var a=i.updateQueue;if(a!==null){a=a.shared;var h=a.pending;h===null?u.next=u:(u.next=h.next,h.next=u),a.pending=u}}i.lanes|=n,u=i.alternate,u!==null&&(u.lanes|=n),tl(i.return,n,t),l.lanes|=n;break}u=u.next}}else if(i.tag===10)s=i.type===t.type?null:i.child;else if(i.tag===18){if(s=i.return,s===null)throw Error(E(341));s.lanes|=n,l=s.alternate,l!==null&&(l.lanes|=n),tl(s,n,t),s=i.sibling}else s=i.child;if(s!==null)s.return=i;else for(s=i;s!==null;){if(s===t){s=null;break}if(i=s.sibling,i!==null){i.return=s.return,s=i;break}s=s.return}i=s}Se(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,Un(t,n),o=Ge(o),r=r(o),t.flags|=1,Se(e,t,r,n),t.child;case 14:return r=t.type,o=tt(r,t.pendingProps),o=tt(r.type,o),_a(e,t,r,o,n);case 15:return af(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:tt(r,o),Mo(e,t),t.tag=1,Oe(r)?(e=!0,Yo(t)):e=!1,Un(t,n),bd(t,r,o),rl(t,r,o,n),sl(null,t,r,!0,e,n);case 19:return pf(e,t,n);case 22:return cf(e,t,n)}throw Error(E(156,t.tag))};function If(e,t){return td(e,t)}function $0(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ke(e,t,n,r){return new $0(e,t,n,r)}function pu(e){return e=e.prototype,!(!e||!e.isReactComponent)}function F0(e){if(typeof e=="function")return pu(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Nl)return 11;if(e===Ml)return 14}return 2}function Kt(e,t){var n=e.alternate;return n===null?(n=Ke(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function bo(e,t,n,r,o,i){var s=2;if(r=e,typeof e=="function")pu(e)&&(s=1);else if(typeof e=="string")s=5;else e:switch(e){case On:return cn(n.children,o,i,t);case Ll:s=8,o|=8;break;case Ts:return e=Ke(12,n,t,o|2),e.elementType=Ts,e.lanes=i,e;case Ds:return e=Ke(13,n,t,o),e.elementType=Ds,e.lanes=i,e;case Ps:return e=Ke(19,n,t,o),e.elementType=Ps,e.lanes=i,e;case zc:return Ei(n,o,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Ac:s=10;break e;case bc:s=9;break e;case Nl:s=11;break e;case Ml:s=14;break e;case Lt:s=16,r=null;break e}throw Error(E(130,e==null?e:typeof e,""))}return t=Ke(s,n,t,o),t.elementType=e,t.type=r,t.lanes=i,t}function cn(e,t,n,r){return e=Ke(7,e,r,t),e.lanes=n,e}function Ei(e,t,n,r){return e=Ke(22,e,r,t),e.elementType=zc,e.lanes=n,e.stateNode={isHidden:!1},e}function fs(e,t,n){return e=Ke(6,e,null,t),e.lanes=n,e}function hs(e,t,n){return t=Ke(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function U0(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Ki(0),this.expirationTimes=Ki(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ki(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function gu(e,t,n,r,o,i,s,l,u){return e=new U0(e,t,n,l,u),t===1?(t=1,i===!0&&(t|=8)):t=0,i=Ke(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Jl(i),e}function H0(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Mf)}catch(e){console.error(e)}}Mf(),jc.exports=Ae;var K0=jc.exports,$a=K0;_s.createRoot=$a.createRoot,_s.hydrateRoot=$a.hydrateRoot;/** + */var Mc = C, Re = qh; function E(e) { for (var t = "https://reactjs.org/docs/error-decoder.html?invariant=" + e, n = 1; n < arguments.length; n++)t += "&args[]=" + encodeURIComponent(arguments[n]); return "Minified React error #" + e + "; visit " + t + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings." } var Rc = new Set, Dr = {}; function Sn(e, t) { Bn(e, t), Bn(e + "Capture", t) } function Bn(e, t) { for (Dr[e] = t, e = 0; e < t.length; e++)Rc.add(t[e]) } var St = !(typeof window > "u" || typeof window.document > "u" || typeof window.document.createElement > "u"), Os = Object.prototype.hasOwnProperty, Wh = /^[: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]*$/, Mu = {}, Ru = {}; function Qh(e) { return Os.call(Ru, e) ? !0 : Os.call(Mu, e) ? !1 : Wh.test(e) ? Ru[e] = !0 : (Mu[e] = !0, !1) } function Kh(e, t, n, r) { if (n !== null && n.type === 0) return !1; switch (typeof t) { case "function": case "symbol": return !0; case "boolean": return r ? !1 : n !== null ? !n.acceptsBooleans : (e = e.toLowerCase().slice(0, 5), e !== "data-" && e !== "aria-"); default: return !1 } } function Vh(e, t, n, r) { if (t === null || typeof t > "u" || Kh(e, t, n, r)) return !0; if (r) return !1; if (n !== null) switch (n.type) { case 3: return !t; case 4: return t === !1; case 5: return isNaN(t); case 6: return isNaN(t) || 1 > t }return !1 } function Ee(e, t, n, r, o, i, s) { this.acceptsBooleans = t === 2 || t === 3 || t === 4, this.attributeName = r, this.attributeNamespace = o, this.mustUseProperty = n, this.propertyName = e, this.type = t, this.sanitizeURL = i, this.removeEmptyString = s } var de = {}; "children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function (e) { de[e] = new Ee(e, 0, !1, e, null, !1, !1) });[["acceptCharset", "accept-charset"], ["className", "class"], ["htmlFor", "for"], ["httpEquiv", "http-equiv"]].forEach(function (e) { var t = e[0]; de[t] = new Ee(t, 1, !1, e[1], null, !1, !1) });["contentEditable", "draggable", "spellCheck", "value"].forEach(function (e) { de[e] = new Ee(e, 2, !1, e.toLowerCase(), null, !1, !1) });["autoReverse", "externalResourcesRequired", "focusable", "preserveAlpha"].forEach(function (e) { de[e] = new Ee(e, 2, !1, e, null, !1, !1) }); "allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function (e) { de[e] = new Ee(e, 3, !1, e.toLowerCase(), null, !1, !1) });["checked", "multiple", "muted", "selected"].forEach(function (e) { de[e] = new Ee(e, 3, !0, e, null, !1, !1) });["capture", "download"].forEach(function (e) { de[e] = new Ee(e, 4, !1, e, null, !1, !1) });["cols", "rows", "size", "span"].forEach(function (e) { de[e] = new Ee(e, 6, !1, e, null, !1, !1) });["rowSpan", "start"].forEach(function (e) { de[e] = new Ee(e, 5, !1, e.toLowerCase(), null, !1, !1) }); var Pl = /[\-:]([a-z])/g; function Il(e) { return e[1].toUpperCase() } "accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function (e) { var t = e.replace(Pl, Il); de[t] = new Ee(t, 1, !1, e, null, !1, !1) }); "xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function (e) { var t = e.replace(Pl, Il); de[t] = new Ee(t, 1, !1, e, "http://www.w3.org/1999/xlink", !1, !1) });["xml:base", "xml:lang", "xml:space"].forEach(function (e) { var t = e.replace(Pl, Il); de[t] = new Ee(t, 1, !1, e, "http://www.w3.org/XML/1998/namespace", !1, !1) });["tabIndex", "crossOrigin"].forEach(function (e) { de[e] = new Ee(e, 1, !1, e.toLowerCase(), null, !1, !1) }); de.xlinkHref = new Ee("xlinkHref", 1, !1, "xlink:href", "http://www.w3.org/1999/xlink", !0, !1);["src", "href", "action", "formAction"].forEach(function (e) { de[e] = new Ee(e, 1, !1, e.toLowerCase(), null, !0, !0) }); function jl(e, t, n, r) { var o = de.hasOwnProperty(t) ? de[t] : null; (o !== null ? o.type !== 0 : r || !(2 < t.length) || t[0] !== "o" && t[0] !== "O" || t[1] !== "n" && t[1] !== "N") && (Vh(t, n, o, r) && (n = null), r || o === null ? Qh(t) && (n === null ? e.removeAttribute(t) : e.setAttribute(t, "" + n)) : o.mustUseProperty ? e[o.propertyName] = n === null ? o.type === 3 ? !1 : "" : n : (t = o.attributeName, r = o.attributeNamespace, n === null ? e.removeAttribute(t) : (o = o.type, n = o === 3 || o === 4 && n === !0 ? "" : "" + n, r ? e.setAttributeNS(r, t, n) : e.setAttribute(t, n)))) } var Ct = Mc.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, io = Symbol.for("react.element"), _n = Symbol.for("react.portal"), On = Symbol.for("react.fragment"), Ll = Symbol.for("react.strict_mode"), Ts = Symbol.for("react.profiler"), Ac = Symbol.for("react.provider"), bc = Symbol.for("react.context"), Nl = Symbol.for("react.forward_ref"), Ds = Symbol.for("react.suspense"), Ps = Symbol.for("react.suspense_list"), Ml = Symbol.for("react.memo"), Lt = Symbol.for("react.lazy"), zc = Symbol.for("react.offscreen"), Au = Symbol.iterator; function tr(e) { return e === null || typeof e != "object" ? null : (e = Au && e[Au] || e["@@iterator"], typeof e == "function" ? e : null) } var G = Object.assign, Bi; function fr(e) { + if (Bi === void 0) try { throw Error() } catch (n) { var t = n.stack.trim().match(/\n( *(at )?)/); Bi = t && t[1] || "" } return ` +`+ Bi + e +} var qi = !1; function Wi(e, t) { + if (!e || qi) return ""; qi = !0; var n = Error.prepareStackTrace; Error.prepareStackTrace = void 0; try { if (t) if (t = function () { throw Error() }, Object.defineProperty(t.prototype, "props", { set: function () { throw Error() } }), typeof Reflect == "object" && Reflect.construct) { try { Reflect.construct(t, []) } catch (a) { var r = a } Reflect.construct(e, [], t) } else { try { t.call() } catch (a) { r = a } e.call(t.prototype) } else { try { throw Error() } catch (a) { r = a } e() } } catch (a) { + if (a && r && typeof a.stack == "string") { + for (var o = a.stack.split(` +`), i = r.stack.split(` +`), s = o.length - 1, l = i.length - 1; 1 <= s && 0 <= l && o[s] !== i[l];)l--; for (; 1 <= s && 0 <= l; s--, l--)if (o[s] !== i[l]) { + if (s !== 1 || l !== 1) do if (s--, l--, 0 > l || o[s] !== i[l]) { + var u = ` +`+ o[s].replace(" at new ", " at "); return e.displayName && u.includes("") && (u = u.replace("", e.displayName)), u + } while (1 <= s && 0 <= l); break + } + } + } finally { qi = !1, Error.prepareStackTrace = n } return (e = e ? e.displayName || e.name : "") ? fr(e) : "" +} function Gh(e) { switch (e.tag) { case 5: return fr(e.type); case 16: return fr("Lazy"); case 13: return fr("Suspense"); case 19: return fr("SuspenseList"); case 0: case 2: case 15: return e = Wi(e.type, !1), e; case 11: return e = Wi(e.type.render, !1), e; case 1: return e = Wi(e.type, !0), e; default: return "" } } function Is(e) { if (e == null) return null; if (typeof e == "function") return e.displayName || e.name || null; if (typeof e == "string") return e; switch (e) { case On: return "Fragment"; case _n: return "Portal"; case Ts: return "Profiler"; case Ll: return "StrictMode"; case Ds: return "Suspense"; case Ps: return "SuspenseList" }if (typeof e == "object") switch (e.$$typeof) { case bc: return (e.displayName || "Context") + ".Consumer"; case Ac: return (e._context.displayName || "Context") + ".Provider"; case Nl: var t = e.render; return e = e.displayName, e || (e = t.displayName || t.name || "", e = e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef"), e; case Ml: return t = e.displayName || null, t !== null ? t : Is(e.type) || "Memo"; case Lt: t = e._payload, e = e._init; try { return Is(e(t)) } catch { } }return null } function Yh(e) { var t = e.type; switch (e.tag) { case 24: return "Cache"; case 9: return (t.displayName || "Context") + ".Consumer"; case 10: return (t._context.displayName || "Context") + ".Provider"; case 18: return "DehydratedFragment"; case 11: return e = t.render, e = e.displayName || e.name || "", t.displayName || (e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef"); case 7: return "Fragment"; case 5: return t; case 4: return "Portal"; case 3: return "Root"; case 6: return "Text"; case 16: return Is(t); case 8: return t === Ll ? "StrictMode" : "Mode"; case 22: return "Offscreen"; case 12: return "Profiler"; case 21: return "Scope"; case 13: return "Suspense"; case 19: return "SuspenseList"; case 25: return "TracingMarker"; case 1: case 0: case 17: case 2: case 14: case 15: if (typeof t == "function") return t.displayName || t.name || null; if (typeof t == "string") return t }return null } function Gt(e) { switch (typeof e) { case "boolean": case "number": case "string": case "undefined": return e; case "object": return e; default: return "" } } function $c(e) { var t = e.type; return (e = e.nodeName) && e.toLowerCase() === "input" && (t === "checkbox" || t === "radio") } function Xh(e) { var t = $c(e) ? "checked" : "value", n = Object.getOwnPropertyDescriptor(e.constructor.prototype, t), r = "" + e[t]; if (!e.hasOwnProperty(t) && typeof n < "u" && typeof n.get == "function" && typeof n.set == "function") { var o = n.get, i = n.set; return Object.defineProperty(e, t, { configurable: !0, get: function () { return o.call(this) }, set: function (s) { r = "" + s, i.call(this, s) } }), Object.defineProperty(e, t, { enumerable: n.enumerable }), { getValue: function () { return r }, setValue: function (s) { r = "" + s }, stopTracking: function () { e._valueTracker = null, delete e[t] } } } } function so(e) { e._valueTracker || (e._valueTracker = Xh(e)) } function Fc(e) { if (!e) return !1; var t = e._valueTracker; if (!t) return !0; var n = t.getValue(), r = ""; return e && (r = $c(e) ? e.checked ? "true" : "false" : e.value), e = r, e !== n ? (t.setValue(e), !0) : !1 } function Fo(e) { if (e = e || (typeof document < "u" ? document : void 0), typeof e > "u") return null; try { return e.activeElement || e.body } catch { return e.body } } function js(e, t) { var n = t.checked; return G({}, t, { defaultChecked: void 0, defaultValue: void 0, value: void 0, checked: n ?? e._wrapperState.initialChecked }) } function bu(e, t) { var n = t.defaultValue == null ? "" : t.defaultValue, r = t.checked != null ? t.checked : t.defaultChecked; n = Gt(t.value != null ? t.value : n), e._wrapperState = { initialChecked: r, initialValue: n, controlled: t.type === "checkbox" || t.type === "radio" ? t.checked != null : t.value != null } } function Uc(e, t) { t = t.checked, t != null && jl(e, "checked", t, !1) } function Ls(e, t) { Uc(e, t); var n = Gt(t.value), r = t.type; if (n != null) r === "number" ? (n === 0 && e.value === "" || e.value != n) && (e.value = "" + n) : e.value !== "" + n && (e.value = "" + n); else if (r === "submit" || r === "reset") { e.removeAttribute("value"); return } t.hasOwnProperty("value") ? Ns(e, t.type, n) : t.hasOwnProperty("defaultValue") && Ns(e, t.type, Gt(t.defaultValue)), t.checked == null && t.defaultChecked != null && (e.defaultChecked = !!t.defaultChecked) } function zu(e, t, n) { if (t.hasOwnProperty("value") || t.hasOwnProperty("defaultValue")) { var r = t.type; if (!(r !== "submit" && r !== "reset" || t.value !== void 0 && t.value !== null)) return; t = "" + e._wrapperState.initialValue, n || t === e.value || (e.value = t), e.defaultValue = t } n = e.name, n !== "" && (e.name = ""), e.defaultChecked = !!e._wrapperState.initialChecked, n !== "" && (e.name = n) } function Ns(e, t, n) { (t !== "number" || Fo(e.ownerDocument) !== e) && (n == null ? e.defaultValue = "" + e._wrapperState.initialValue : e.defaultValue !== "" + n && (e.defaultValue = "" + n)) } var hr = Array.isArray; function bn(e, t, n, r) { if (e = e.options, t) { t = {}; for (var o = 0; o < n.length; o++)t["$" + n[o]] = !0; for (n = 0; n < e.length; n++)o = t.hasOwnProperty("$" + e[n].value), e[n].selected !== o && (e[n].selected = o), o && r && (e[n].defaultSelected = !0) } else { for (n = "" + Gt(n), t = null, o = 0; o < e.length; o++) { if (e[o].value === n) { e[o].selected = !0, r && (e[o].defaultSelected = !0); return } t !== null || e[o].disabled || (t = e[o]) } t !== null && (t.selected = !0) } } function Ms(e, t) { if (t.dangerouslySetInnerHTML != null) throw Error(E(91)); return G({}, t, { value: void 0, defaultValue: void 0, children: "" + e._wrapperState.initialValue }) } function $u(e, t) { var n = t.value; if (n == null) { if (n = t.children, t = t.defaultValue, n != null) { if (t != null) throw Error(E(92)); if (hr(n)) { if (1 < n.length) throw Error(E(93)); n = n[0] } t = n } t == null && (t = ""), n = t } e._wrapperState = { initialValue: Gt(n) } } function Hc(e, t) { var n = Gt(t.value), r = Gt(t.defaultValue); n != null && (n = "" + n, n !== e.value && (e.value = n), t.defaultValue == null && e.defaultValue !== n && (e.defaultValue = n)), r != null && (e.defaultValue = "" + r) } function Fu(e) { var t = e.textContent; t === e._wrapperState.initialValue && t !== "" && t !== null && (e.value = t) } function Bc(e) { switch (e) { case "svg": return "http://www.w3.org/2000/svg"; case "math": return "http://www.w3.org/1998/Math/MathML"; default: return "http://www.w3.org/1999/xhtml" } } function Rs(e, t) { return e == null || e === "http://www.w3.org/1999/xhtml" ? Bc(t) : e === "http://www.w3.org/2000/svg" && t === "foreignObject" ? "http://www.w3.org/1999/xhtml" : e } var lo, qc = function (e) { return typeof MSApp < "u" && MSApp.execUnsafeLocalFunction ? function (t, n, r, o) { MSApp.execUnsafeLocalFunction(function () { return e(t, n, r, o) }) } : e }(function (e, t) { if (e.namespaceURI !== "http://www.w3.org/2000/svg" || "innerHTML" in e) e.innerHTML = t; else { for (lo = lo || document.createElement("div"), lo.innerHTML = "" + t.valueOf().toString() + "", t = lo.firstChild; e.firstChild;)e.removeChild(e.firstChild); for (; t.firstChild;)e.appendChild(t.firstChild) } }); function Pr(e, t) { if (t) { var n = e.firstChild; if (n && n === e.lastChild && n.nodeType === 3) { n.nodeValue = t; return } } e.textContent = t } var vr = { animationIterationCount: !0, aspectRatio: !0, borderImageOutset: !0, borderImageSlice: !0, borderImageWidth: !0, boxFlex: !0, boxFlexGroup: !0, boxOrdinalGroup: !0, columnCount: !0, columns: !0, flex: !0, flexGrow: !0, flexPositive: !0, flexShrink: !0, flexNegative: !0, flexOrder: !0, gridArea: !0, gridRow: !0, gridRowEnd: !0, gridRowSpan: !0, gridRowStart: !0, gridColumn: !0, gridColumnEnd: !0, gridColumnSpan: !0, gridColumnStart: !0, fontWeight: !0, lineClamp: !0, lineHeight: !0, opacity: !0, order: !0, orphans: !0, tabSize: !0, widows: !0, zIndex: !0, zoom: !0, fillOpacity: !0, floodOpacity: !0, stopOpacity: !0, strokeDasharray: !0, strokeDashoffset: !0, strokeMiterlimit: !0, strokeOpacity: !0, strokeWidth: !0 }, Jh = ["Webkit", "ms", "Moz", "O"]; Object.keys(vr).forEach(function (e) { Jh.forEach(function (t) { t = t + e.charAt(0).toUpperCase() + e.substring(1), vr[t] = vr[e] }) }); function Wc(e, t, n) { return t == null || typeof t == "boolean" || t === "" ? "" : n || typeof t != "number" || t === 0 || vr.hasOwnProperty(e) && vr[e] ? ("" + t).trim() : t + "px" } function Qc(e, t) { e = e.style; for (var n in t) if (t.hasOwnProperty(n)) { var r = n.indexOf("--") === 0, o = Wc(n, t[n], r); n === "float" && (n = "cssFloat"), r ? e.setProperty(n, o) : e[n] = o } } var Zh = G({ menuitem: !0 }, { area: !0, base: !0, br: !0, col: !0, embed: !0, hr: !0, img: !0, input: !0, keygen: !0, link: !0, meta: !0, param: !0, source: !0, track: !0, wbr: !0 }); function As(e, t) { if (t) { if (Zh[e] && (t.children != null || t.dangerouslySetInnerHTML != null)) throw Error(E(137, e)); if (t.dangerouslySetInnerHTML != null) { if (t.children != null) throw Error(E(60)); if (typeof t.dangerouslySetInnerHTML != "object" || !("__html" in t.dangerouslySetInnerHTML)) throw Error(E(61)) } if (t.style != null && typeof t.style != "object") throw Error(E(62)) } } function bs(e, t) { if (e.indexOf("-") === -1) return typeof t.is == "string"; switch (e) { case "annotation-xml": case "color-profile": case "font-face": case "font-face-src": case "font-face-uri": case "font-face-format": case "font-face-name": case "missing-glyph": return !1; default: return !0 } } var zs = null; function Rl(e) { return e = e.target || e.srcElement || window, e.correspondingUseElement && (e = e.correspondingUseElement), e.nodeType === 3 ? e.parentNode : e } var $s = null, zn = null, $n = null; function Uu(e) { if (e = Xr(e)) { if (typeof $s != "function") throw Error(E(280)); var t = e.stateNode; t && (t = mi(t), $s(e.stateNode, e.type, t)) } } function Kc(e) { zn ? $n ? $n.push(e) : $n = [e] : zn = e } function Vc() { if (zn) { var e = zn, t = $n; if ($n = zn = null, Uu(e), t) for (e = 0; e < t.length; e++)Uu(t[e]) } } function Gc(e, t) { return e(t) } function Yc() { } var Qi = !1; function Xc(e, t, n) { if (Qi) return e(t, n); Qi = !0; try { return Gc(e, t, n) } finally { Qi = !1, (zn !== null || $n !== null) && (Yc(), Vc()) } } function Ir(e, t) { var n = e.stateNode; if (n === null) return null; var r = mi(n); if (r === null) return null; n = r[t]; e: switch (t) { case "onClick": case "onClickCapture": case "onDoubleClick": case "onDoubleClickCapture": case "onMouseDown": case "onMouseDownCapture": case "onMouseMove": case "onMouseMoveCapture": case "onMouseUp": case "onMouseUpCapture": case "onMouseEnter": (r = !r.disabled) || (e = e.type, r = !(e === "button" || e === "input" || e === "select" || e === "textarea")), e = !r; break e; default: e = !1 }if (e) return null; if (n && typeof n != "function") throw Error(E(231, t, typeof n)); return n } var Fs = !1; if (St) try { var nr = {}; Object.defineProperty(nr, "passive", { get: function () { Fs = !0 } }), window.addEventListener("test", nr, nr), window.removeEventListener("test", nr, nr) } catch { Fs = !1 } function ep(e, t, n, r, o, i, s, l, u) { var a = Array.prototype.slice.call(arguments, 3); try { t.apply(n, a) } catch (h) { this.onError(h) } } var yr = !1, Uo = null, Ho = !1, Us = null, tp = { onError: function (e) { yr = !0, Uo = e } }; function np(e, t, n, r, o, i, s, l, u) { yr = !1, Uo = null, ep.apply(tp, arguments) } function rp(e, t, n, r, o, i, s, l, u) { if (np.apply(this, arguments), yr) { if (yr) { var a = Uo; yr = !1, Uo = null } else throw Error(E(198)); Ho || (Ho = !0, Us = a) } } function wn(e) { var t = e, n = e; if (e.alternate) for (; t.return;)t = t.return; else { e = t; do t = e, t.flags & 4098 && (n = t.return), e = t.return; while (e) } return t.tag === 3 ? n : null } function Jc(e) { if (e.tag === 13) { var t = e.memoizedState; if (t === null && (e = e.alternate, e !== null && (t = e.memoizedState)), t !== null) return t.dehydrated } return null } function Hu(e) { if (wn(e) !== e) throw Error(E(188)) } function op(e) { var t = e.alternate; if (!t) { if (t = wn(e), t === null) throw Error(E(188)); return t !== e ? null : e } for (var n = e, r = t; ;) { var o = n.return; if (o === null) break; var i = o.alternate; if (i === null) { if (r = o.return, r !== null) { n = r; continue } break } if (o.child === i.child) { for (i = o.child; i;) { if (i === n) return Hu(o), e; if (i === r) return Hu(o), t; i = i.sibling } throw Error(E(188)) } if (n.return !== r.return) n = o, r = i; else { for (var s = !1, l = o.child; l;) { if (l === n) { s = !0, n = o, r = i; break } if (l === r) { s = !0, r = o, n = i; break } l = l.sibling } if (!s) { for (l = i.child; l;) { if (l === n) { s = !0, n = i, r = o; break } if (l === r) { s = !0, r = i, n = o; break } l = l.sibling } if (!s) throw Error(E(189)) } } if (n.alternate !== r) throw Error(E(190)) } if (n.tag !== 3) throw Error(E(188)); return n.stateNode.current === n ? e : t } function Zc(e) { return e = op(e), e !== null ? ed(e) : null } function ed(e) { if (e.tag === 5 || e.tag === 6) return e; for (e = e.child; e !== null;) { var t = ed(e); if (t !== null) return t; e = e.sibling } return null } var td = Re.unstable_scheduleCallback, Bu = Re.unstable_cancelCallback, ip = Re.unstable_shouldYield, sp = Re.unstable_requestPaint, J = Re.unstable_now, lp = Re.unstable_getCurrentPriorityLevel, Al = Re.unstable_ImmediatePriority, nd = Re.unstable_UserBlockingPriority, Bo = Re.unstable_NormalPriority, up = Re.unstable_LowPriority, rd = Re.unstable_IdlePriority, fi = null, dt = null; function ap(e) { if (dt && typeof dt.onCommitFiberRoot == "function") try { dt.onCommitFiberRoot(fi, e, void 0, (e.current.flags & 128) === 128) } catch { } } var ot = Math.clz32 ? Math.clz32 : fp, cp = Math.log, dp = Math.LN2; function fp(e) { return e >>>= 0, e === 0 ? 32 : 31 - (cp(e) / dp | 0) | 0 } var uo = 64, ao = 4194304; function pr(e) { switch (e & -e) { case 1: return 1; case 2: return 2; case 4: return 4; case 8: return 8; case 16: return 16; case 32: return 32; case 64: case 128: case 256: case 512: case 1024: case 2048: case 4096: case 8192: case 16384: case 32768: case 65536: case 131072: case 262144: case 524288: case 1048576: case 2097152: return e & 4194240; case 4194304: case 8388608: case 16777216: case 33554432: case 67108864: return e & 130023424; case 134217728: return 134217728; case 268435456: return 268435456; case 536870912: return 536870912; case 1073741824: return 1073741824; default: return e } } function qo(e, t) { var n = e.pendingLanes; if (n === 0) return 0; var r = 0, o = e.suspendedLanes, i = e.pingedLanes, s = n & 268435455; if (s !== 0) { var l = s & ~o; l !== 0 ? r = pr(l) : (i &= s, i !== 0 && (r = pr(i))) } else s = n & ~o, s !== 0 ? r = pr(s) : i !== 0 && (r = pr(i)); if (r === 0) return 0; if (t !== 0 && t !== r && !(t & o) && (o = r & -r, i = t & -t, o >= i || o === 16 && (i & 4194240) !== 0)) return t; if (r & 4 && (r |= n & 16), t = e.entangledLanes, t !== 0) for (e = e.entanglements, t &= r; 0 < t;)n = 31 - ot(t), o = 1 << n, r |= e[n], t &= ~o; return r } function hp(e, t) { switch (e) { case 1: case 2: case 4: return t + 250; case 8: case 16: case 32: case 64: case 128: case 256: case 512: case 1024: case 2048: case 4096: case 8192: case 16384: case 32768: case 65536: case 131072: case 262144: case 524288: case 1048576: case 2097152: return t + 5e3; case 4194304: case 8388608: case 16777216: case 33554432: case 67108864: return -1; case 134217728: case 268435456: case 536870912: case 1073741824: return -1; default: return -1 } } function pp(e, t) { for (var n = e.suspendedLanes, r = e.pingedLanes, o = e.expirationTimes, i = e.pendingLanes; 0 < i;) { var s = 31 - ot(i), l = 1 << s, u = o[s]; u === -1 ? (!(l & n) || l & r) && (o[s] = hp(l, t)) : u <= t && (e.expiredLanes |= l), i &= ~l } } function Hs(e) { return e = e.pendingLanes & -1073741825, e !== 0 ? e : e & 1073741824 ? 1073741824 : 0 } function od() { var e = uo; return uo <<= 1, !(uo & 4194240) && (uo = 64), e } function Ki(e) { for (var t = [], n = 0; 31 > n; n++)t.push(e); return t } function Gr(e, t, n) { e.pendingLanes |= t, t !== 536870912 && (e.suspendedLanes = 0, e.pingedLanes = 0), e = e.eventTimes, t = 31 - ot(t), e[t] = n } function gp(e, t) { var n = e.pendingLanes & ~t; e.pendingLanes = t, e.suspendedLanes = 0, e.pingedLanes = 0, e.expiredLanes &= t, e.mutableReadLanes &= t, e.entangledLanes &= t, t = e.entanglements; var r = e.eventTimes; for (e = e.expirationTimes; 0 < n;) { var o = 31 - ot(n), i = 1 << o; t[o] = 0, r[o] = -1, e[o] = -1, n &= ~i } } function bl(e, t) { var n = e.entangledLanes |= t; for (e = e.entanglements; n;) { var r = 31 - ot(n), o = 1 << r; o & t | e[r] & t && (e[r] |= t), n &= ~o } } var F = 0; function id(e) { return e &= -e, 1 < e ? 4 < e ? e & 268435455 ? 16 : 536870912 : 4 : 1 } var sd, zl, ld, ud, ad, Bs = !1, co = [], Ft = null, Ut = null, Ht = null, jr = new Map, Lr = new Map, Rt = [], mp = "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(" "); function qu(e, t) { switch (e) { case "focusin": case "focusout": Ft = null; break; case "dragenter": case "dragleave": Ut = null; break; case "mouseover": case "mouseout": Ht = null; break; case "pointerover": case "pointerout": jr.delete(t.pointerId); break; case "gotpointercapture": case "lostpointercapture": Lr.delete(t.pointerId) } } function rr(e, t, n, r, o, i) { return e === null || e.nativeEvent !== i ? (e = { blockedOn: t, domEventName: n, eventSystemFlags: r, nativeEvent: i, targetContainers: [o] }, t !== null && (t = Xr(t), t !== null && zl(t)), e) : (e.eventSystemFlags |= r, t = e.targetContainers, o !== null && t.indexOf(o) === -1 && t.push(o), e) } function vp(e, t, n, r, o) { switch (t) { case "focusin": return Ft = rr(Ft, e, t, n, r, o), !0; case "dragenter": return Ut = rr(Ut, e, t, n, r, o), !0; case "mouseover": return Ht = rr(Ht, e, t, n, r, o), !0; case "pointerover": var i = o.pointerId; return jr.set(i, rr(jr.get(i) || null, e, t, n, r, o)), !0; case "gotpointercapture": return i = o.pointerId, Lr.set(i, rr(Lr.get(i) || null, e, t, n, r, o)), !0 }return !1 } function cd(e) { var t = sn(e.target); if (t !== null) { var n = wn(t); if (n !== null) { if (t = n.tag, t === 13) { if (t = Jc(n), t !== null) { e.blockedOn = t, ad(e.priority, function () { ld(n) }); return } } else if (t === 3 && n.stateNode.current.memoizedState.isDehydrated) { e.blockedOn = n.tag === 3 ? n.stateNode.containerInfo : null; return } } } e.blockedOn = null } function Do(e) { if (e.blockedOn !== null) return !1; for (var t = e.targetContainers; 0 < t.length;) { var n = qs(e.domEventName, e.eventSystemFlags, t[0], e.nativeEvent); if (n === null) { n = e.nativeEvent; var r = new n.constructor(n.type, n); zs = r, n.target.dispatchEvent(r), zs = null } else return t = Xr(n), t !== null && zl(t), e.blockedOn = n, !1; t.shift() } return !0 } function Wu(e, t, n) { Do(e) && n.delete(t) } function yp() { Bs = !1, Ft !== null && Do(Ft) && (Ft = null), Ut !== null && Do(Ut) && (Ut = null), Ht !== null && Do(Ht) && (Ht = null), jr.forEach(Wu), Lr.forEach(Wu) } function or(e, t) { e.blockedOn === t && (e.blockedOn = null, Bs || (Bs = !0, Re.unstable_scheduleCallback(Re.unstable_NormalPriority, yp))) } function Nr(e) { function t(o) { return or(o, e) } if (0 < co.length) { or(co[0], e); for (var n = 1; n < co.length; n++) { var r = co[n]; r.blockedOn === e && (r.blockedOn = null) } } for (Ft !== null && or(Ft, e), Ut !== null && or(Ut, e), Ht !== null && or(Ht, e), jr.forEach(t), Lr.forEach(t), n = 0; n < Rt.length; n++)r = Rt[n], r.blockedOn === e && (r.blockedOn = null); for (; 0 < Rt.length && (n = Rt[0], n.blockedOn === null);)cd(n), n.blockedOn === null && Rt.shift() } var Fn = Ct.ReactCurrentBatchConfig, Wo = !0; function Sp(e, t, n, r) { var o = F, i = Fn.transition; Fn.transition = null; try { F = 1, $l(e, t, n, r) } finally { F = o, Fn.transition = i } } function wp(e, t, n, r) { var o = F, i = Fn.transition; Fn.transition = null; try { F = 4, $l(e, t, n, r) } finally { F = o, Fn.transition = i } } function $l(e, t, n, r) { if (Wo) { var o = qs(e, t, n, r); if (o === null) rs(e, t, r, Qo, n), qu(e, r); else if (vp(o, e, t, n, r)) r.stopPropagation(); else if (qu(e, r), t & 4 && -1 < mp.indexOf(e)) { for (; o !== null;) { var i = Xr(o); if (i !== null && sd(i), i = qs(e, t, n, r), i === null && rs(e, t, r, Qo, n), i === o) break; o = i } o !== null && r.stopPropagation() } else rs(e, t, r, null, n) } } var Qo = null; function qs(e, t, n, r) { if (Qo = null, e = Rl(r), e = sn(e), e !== null) if (t = wn(e), t === null) e = null; else if (n = t.tag, n === 13) { if (e = Jc(t), e !== null) return e; e = null } else if (n === 3) { if (t.stateNode.current.memoizedState.isDehydrated) return t.tag === 3 ? t.stateNode.containerInfo : null; e = null } else t !== e && (e = null); return Qo = e, null } function dd(e) { switch (e) { case "cancel": case "click": case "close": case "contextmenu": case "copy": case "cut": case "auxclick": case "dblclick": case "dragend": case "dragstart": case "drop": case "focusin": case "focusout": case "input": case "invalid": case "keydown": case "keypress": case "keyup": case "mousedown": case "mouseup": case "paste": case "pause": case "play": case "pointercancel": case "pointerdown": case "pointerup": case "ratechange": case "reset": case "resize": case "seeked": case "submit": case "touchcancel": case "touchend": case "touchstart": case "volumechange": case "change": case "selectionchange": case "textInput": case "compositionstart": case "compositionend": case "compositionupdate": case "beforeblur": case "afterblur": case "beforeinput": case "blur": case "fullscreenchange": case "focus": case "hashchange": case "popstate": case "select": case "selectstart": return 1; case "drag": case "dragenter": case "dragexit": case "dragleave": case "dragover": case "mousemove": case "mouseout": case "mouseover": case "pointermove": case "pointerout": case "pointerover": case "scroll": case "toggle": case "touchmove": case "wheel": case "mouseenter": case "mouseleave": case "pointerenter": case "pointerleave": return 4; case "message": switch (lp()) { case Al: return 1; case nd: return 4; case Bo: case up: return 16; case rd: return 536870912; default: return 16 }default: return 16 } } var zt = null, Fl = null, Po = null; function fd() { if (Po) return Po; var e, t = Fl, n = t.length, r, o = "value" in zt ? zt.value : zt.textContent, i = o.length; for (e = 0; e < n && t[e] === o[e]; e++); var s = n - e; for (r = 1; r <= s && t[n - r] === o[i - r]; r++); return Po = o.slice(e, 1 < r ? 1 - r : void 0) } function Io(e) { var t = e.keyCode; return "charCode" in e ? (e = e.charCode, e === 0 && t === 13 && (e = 13)) : e = t, e === 10 && (e = 13), 32 <= e || e === 13 ? e : 0 } function fo() { return !0 } function Qu() { return !1 } function be(e) { function t(n, r, o, i, s) { this._reactName = n, this._targetInst = o, this.type = r, this.nativeEvent = i, this.target = s, this.currentTarget = null; for (var l in e) e.hasOwnProperty(l) && (n = e[l], this[l] = n ? n(i) : i[l]); return this.isDefaultPrevented = (i.defaultPrevented != null ? i.defaultPrevented : i.returnValue === !1) ? fo : Qu, this.isPropagationStopped = Qu, this } return G(t.prototype, { preventDefault: function () { this.defaultPrevented = !0; var n = this.nativeEvent; n && (n.preventDefault ? n.preventDefault() : typeof n.returnValue != "unknown" && (n.returnValue = !1), this.isDefaultPrevented = fo) }, stopPropagation: function () { var n = this.nativeEvent; n && (n.stopPropagation ? n.stopPropagation() : typeof n.cancelBubble != "unknown" && (n.cancelBubble = !0), this.isPropagationStopped = fo) }, persist: function () { }, isPersistent: fo }), t } var Jn = { eventPhase: 0, bubbles: 0, cancelable: 0, timeStamp: function (e) { return e.timeStamp || Date.now() }, defaultPrevented: 0, isTrusted: 0 }, Ul = be(Jn), Yr = G({}, Jn, { view: 0, detail: 0 }), kp = be(Yr), Vi, Gi, ir, hi = G({}, Yr, { screenX: 0, screenY: 0, clientX: 0, clientY: 0, pageX: 0, pageY: 0, ctrlKey: 0, shiftKey: 0, altKey: 0, metaKey: 0, getModifierState: Hl, button: 0, buttons: 0, relatedTarget: function (e) { return e.relatedTarget === void 0 ? e.fromElement === e.srcElement ? e.toElement : e.fromElement : e.relatedTarget }, movementX: function (e) { return "movementX" in e ? e.movementX : (e !== ir && (ir && e.type === "mousemove" ? (Vi = e.screenX - ir.screenX, Gi = e.screenY - ir.screenY) : Gi = Vi = 0, ir = e), Vi) }, movementY: function (e) { return "movementY" in e ? e.movementY : Gi } }), Ku = be(hi), Ep = G({}, hi, { dataTransfer: 0 }), Cp = be(Ep), xp = G({}, Yr, { relatedTarget: 0 }), Yi = be(xp), _p = G({}, Jn, { animationName: 0, elapsedTime: 0, pseudoElement: 0 }), Op = be(_p), Tp = G({}, Jn, { clipboardData: function (e) { return "clipboardData" in e ? e.clipboardData : window.clipboardData } }), Dp = be(Tp), Pp = G({}, Jn, { data: 0 }), Vu = be(Pp), Ip = { Esc: "Escape", Spacebar: " ", Left: "ArrowLeft", Up: "ArrowUp", Right: "ArrowRight", Down: "ArrowDown", Del: "Delete", Win: "OS", Menu: "ContextMenu", Apps: "ContextMenu", Scroll: "ScrollLock", MozPrintableKey: "Unidentified" }, jp = { 8: "Backspace", 9: "Tab", 12: "Clear", 13: "Enter", 16: "Shift", 17: "Control", 18: "Alt", 19: "Pause", 20: "CapsLock", 27: "Escape", 32: " ", 33: "PageUp", 34: "PageDown", 35: "End", 36: "Home", 37: "ArrowLeft", 38: "ArrowUp", 39: "ArrowRight", 40: "ArrowDown", 45: "Insert", 46: "Delete", 112: "F1", 113: "F2", 114: "F3", 115: "F4", 116: "F5", 117: "F6", 118: "F7", 119: "F8", 120: "F9", 121: "F10", 122: "F11", 123: "F12", 144: "NumLock", 145: "ScrollLock", 224: "Meta" }, Lp = { Alt: "altKey", Control: "ctrlKey", Meta: "metaKey", Shift: "shiftKey" }; function Np(e) { var t = this.nativeEvent; return t.getModifierState ? t.getModifierState(e) : (e = Lp[e]) ? !!t[e] : !1 } function Hl() { return Np } var Mp = G({}, Yr, { key: function (e) { if (e.key) { var t = Ip[e.key] || e.key; if (t !== "Unidentified") return t } return e.type === "keypress" ? (e = Io(e), e === 13 ? "Enter" : String.fromCharCode(e)) : e.type === "keydown" || e.type === "keyup" ? jp[e.keyCode] || "Unidentified" : "" }, code: 0, location: 0, ctrlKey: 0, shiftKey: 0, altKey: 0, metaKey: 0, repeat: 0, locale: 0, getModifierState: Hl, charCode: function (e) { return e.type === "keypress" ? Io(e) : 0 }, keyCode: function (e) { return e.type === "keydown" || e.type === "keyup" ? e.keyCode : 0 }, which: function (e) { return e.type === "keypress" ? Io(e) : e.type === "keydown" || e.type === "keyup" ? e.keyCode : 0 } }), Rp = be(Mp), Ap = G({}, hi, { pointerId: 0, width: 0, height: 0, pressure: 0, tangentialPressure: 0, tiltX: 0, tiltY: 0, twist: 0, pointerType: 0, isPrimary: 0 }), Gu = be(Ap), bp = G({}, Yr, { touches: 0, targetTouches: 0, changedTouches: 0, altKey: 0, metaKey: 0, ctrlKey: 0, shiftKey: 0, getModifierState: Hl }), zp = be(bp), $p = G({}, Jn, { propertyName: 0, elapsedTime: 0, pseudoElement: 0 }), Fp = be($p), Up = G({}, hi, { deltaX: function (e) { return "deltaX" in e ? e.deltaX : "wheelDeltaX" in e ? -e.wheelDeltaX : 0 }, deltaY: function (e) { return "deltaY" in e ? e.deltaY : "wheelDeltaY" in e ? -e.wheelDeltaY : "wheelDelta" in e ? -e.wheelDelta : 0 }, deltaZ: 0, deltaMode: 0 }), Hp = be(Up), Bp = [9, 13, 27, 32], Bl = St && "CompositionEvent" in window, Sr = null; St && "documentMode" in document && (Sr = document.documentMode); var qp = St && "TextEvent" in window && !Sr, hd = St && (!Bl || Sr && 8 < Sr && 11 >= Sr), Yu = String.fromCharCode(32), Xu = !1; function pd(e, t) { switch (e) { case "keyup": return Bp.indexOf(t.keyCode) !== -1; case "keydown": return t.keyCode !== 229; case "keypress": case "mousedown": case "focusout": return !0; default: return !1 } } function gd(e) { return e = e.detail, typeof e == "object" && "data" in e ? e.data : null } var Tn = !1; function Wp(e, t) { switch (e) { case "compositionend": return gd(t); case "keypress": return t.which !== 32 ? null : (Xu = !0, Yu); case "textInput": return e = t.data, e === Yu && Xu ? null : e; default: return null } } function Qp(e, t) { if (Tn) return e === "compositionend" || !Bl && pd(e, t) ? (e = fd(), Po = Fl = zt = null, Tn = !1, e) : null; switch (e) { case "paste": return null; case "keypress": if (!(t.ctrlKey || t.altKey || t.metaKey) || t.ctrlKey && t.altKey) { if (t.char && 1 < t.char.length) return t.char; if (t.which) return String.fromCharCode(t.which) } return null; case "compositionend": return hd && t.locale !== "ko" ? null : t.data; default: return null } } var Kp = { color: !0, date: !0, datetime: !0, "datetime-local": !0, email: !0, month: !0, number: !0, password: !0, range: !0, search: !0, tel: !0, text: !0, time: !0, url: !0, week: !0 }; function Ju(e) { var t = e && e.nodeName && e.nodeName.toLowerCase(); return t === "input" ? !!Kp[e.type] : t === "textarea" } function md(e, t, n, r) { Kc(r), t = Ko(t, "onChange"), 0 < t.length && (n = new Ul("onChange", "change", null, n, r), e.push({ event: n, listeners: t })) } var wr = null, Mr = null; function Vp(e) { Td(e, 0) } function pi(e) { var t = In(e); if (Fc(t)) return e } function Gp(e, t) { if (e === "change") return t } var vd = !1; if (St) { var Xi; if (St) { var Ji = "oninput" in document; if (!Ji) { var Zu = document.createElement("div"); Zu.setAttribute("oninput", "return;"), Ji = typeof Zu.oninput == "function" } Xi = Ji } else Xi = !1; vd = Xi && (!document.documentMode || 9 < document.documentMode) } function ea() { wr && (wr.detachEvent("onpropertychange", yd), Mr = wr = null) } function yd(e) { if (e.propertyName === "value" && pi(Mr)) { var t = []; md(t, Mr, e, Rl(e)), Xc(Vp, t) } } function Yp(e, t, n) { e === "focusin" ? (ea(), wr = t, Mr = n, wr.attachEvent("onpropertychange", yd)) : e === "focusout" && ea() } function Xp(e) { if (e === "selectionchange" || e === "keyup" || e === "keydown") return pi(Mr) } function Jp(e, t) { if (e === "click") return pi(t) } function Zp(e, t) { if (e === "input" || e === "change") return pi(t) } function e0(e, t) { return e === t && (e !== 0 || 1 / e === 1 / t) || e !== e && t !== t } var st = typeof Object.is == "function" ? Object.is : e0; function Rr(e, t) { if (st(e, t)) return !0; if (typeof e != "object" || e === null || typeof t != "object" || t === null) return !1; var n = Object.keys(e), r = Object.keys(t); if (n.length !== r.length) return !1; for (r = 0; r < n.length; r++) { var o = n[r]; if (!Os.call(t, o) || !st(e[o], t[o])) return !1 } return !0 } function ta(e) { for (; e && e.firstChild;)e = e.firstChild; return e } function na(e, t) { var n = ta(e); e = 0; for (var r; n;) { if (n.nodeType === 3) { if (r = e + n.textContent.length, e <= t && r >= t) return { node: n, offset: t - e }; e = r } e: { for (; n;) { if (n.nextSibling) { n = n.nextSibling; break e } n = n.parentNode } n = void 0 } n = ta(n) } } function Sd(e, t) { return e && t ? e === t ? !0 : e && e.nodeType === 3 ? !1 : t && t.nodeType === 3 ? Sd(e, t.parentNode) : "contains" in e ? e.contains(t) : e.compareDocumentPosition ? !!(e.compareDocumentPosition(t) & 16) : !1 : !1 } function wd() { for (var e = window, t = Fo(); t instanceof e.HTMLIFrameElement;) { try { var n = typeof t.contentWindow.location.href == "string" } catch { n = !1 } if (n) e = t.contentWindow; else break; t = Fo(e.document) } return t } function ql(e) { var t = e && e.nodeName && e.nodeName.toLowerCase(); return t && (t === "input" && (e.type === "text" || e.type === "search" || e.type === "tel" || e.type === "url" || e.type === "password") || t === "textarea" || e.contentEditable === "true") } function t0(e) { var t = wd(), n = e.focusedElem, r = e.selectionRange; if (t !== n && n && n.ownerDocument && Sd(n.ownerDocument.documentElement, n)) { if (r !== null && ql(n)) { if (t = r.start, e = r.end, e === void 0 && (e = t), "selectionStart" in n) n.selectionStart = t, n.selectionEnd = Math.min(e, n.value.length); else if (e = (t = n.ownerDocument || document) && t.defaultView || window, e.getSelection) { e = e.getSelection(); var o = n.textContent.length, i = Math.min(r.start, o); r = r.end === void 0 ? i : Math.min(r.end, o), !e.extend && i > r && (o = r, r = i, i = o), o = na(n, i); var s = na(n, r); o && s && (e.rangeCount !== 1 || e.anchorNode !== o.node || e.anchorOffset !== o.offset || e.focusNode !== s.node || e.focusOffset !== s.offset) && (t = t.createRange(), t.setStart(o.node, o.offset), e.removeAllRanges(), i > r ? (e.addRange(t), e.extend(s.node, s.offset)) : (t.setEnd(s.node, s.offset), e.addRange(t))) } } for (t = [], e = n; e = e.parentNode;)e.nodeType === 1 && t.push({ element: e, left: e.scrollLeft, top: e.scrollTop }); for (typeof n.focus == "function" && n.focus(), n = 0; n < t.length; n++)e = t[n], e.element.scrollLeft = e.left, e.element.scrollTop = e.top } } var n0 = St && "documentMode" in document && 11 >= document.documentMode, Dn = null, Ws = null, kr = null, Qs = !1; function ra(e, t, n) { var r = n.window === n ? n.document : n.nodeType === 9 ? n : n.ownerDocument; Qs || Dn == null || Dn !== Fo(r) || (r = Dn, "selectionStart" in r && ql(r) ? r = { start: r.selectionStart, end: r.selectionEnd } : (r = (r.ownerDocument && r.ownerDocument.defaultView || window).getSelection(), r = { anchorNode: r.anchorNode, anchorOffset: r.anchorOffset, focusNode: r.focusNode, focusOffset: r.focusOffset }), kr && Rr(kr, r) || (kr = r, r = Ko(Ws, "onSelect"), 0 < r.length && (t = new Ul("onSelect", "select", null, t, n), e.push({ event: t, listeners: r }), t.target = Dn))) } function ho(e, t) { var n = {}; return n[e.toLowerCase()] = t.toLowerCase(), n["Webkit" + e] = "webkit" + t, n["Moz" + e] = "moz" + t, n } var Pn = { animationend: ho("Animation", "AnimationEnd"), animationiteration: ho("Animation", "AnimationIteration"), animationstart: ho("Animation", "AnimationStart"), transitionend: ho("Transition", "TransitionEnd") }, Zi = {}, kd = {}; St && (kd = document.createElement("div").style, "AnimationEvent" in window || (delete Pn.animationend.animation, delete Pn.animationiteration.animation, delete Pn.animationstart.animation), "TransitionEvent" in window || delete Pn.transitionend.transition); function gi(e) { if (Zi[e]) return Zi[e]; if (!Pn[e]) return e; var t = Pn[e], n; for (n in t) if (t.hasOwnProperty(n) && n in kd) return Zi[e] = t[n]; return e } var Ed = gi("animationend"), Cd = gi("animationiteration"), xd = gi("animationstart"), _d = gi("transitionend"), Od = new Map, oa = "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(" "); function Xt(e, t) { Od.set(e, t), Sn(t, [e]) } for (var es = 0; es < oa.length; es++) { var ts = oa[es], r0 = ts.toLowerCase(), o0 = ts[0].toUpperCase() + ts.slice(1); Xt(r0, "on" + o0) } Xt(Ed, "onAnimationEnd"); Xt(Cd, "onAnimationIteration"); Xt(xd, "onAnimationStart"); Xt("dblclick", "onDoubleClick"); Xt("focusin", "onFocus"); Xt("focusout", "onBlur"); Xt(_d, "onTransitionEnd"); Bn("onMouseEnter", ["mouseout", "mouseover"]); Bn("onMouseLeave", ["mouseout", "mouseover"]); Bn("onPointerEnter", ["pointerout", "pointerover"]); Bn("onPointerLeave", ["pointerout", "pointerover"]); Sn("onChange", "change click focusin focusout input keydown keyup selectionchange".split(" ")); Sn("onSelect", "focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")); Sn("onBeforeInput", ["compositionend", "keypress", "textInput", "paste"]); Sn("onCompositionEnd", "compositionend focusout keydown keypress keyup mousedown".split(" ")); Sn("onCompositionStart", "compositionstart focusout keydown keypress keyup mousedown".split(" ")); Sn("onCompositionUpdate", "compositionupdate focusout keydown keypress keyup mousedown".split(" ")); var gr = "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(" "), i0 = new Set("cancel close invalid load scroll toggle".split(" ").concat(gr)); function ia(e, t, n) { var r = e.type || "unknown-event"; e.currentTarget = n, rp(r, t, void 0, e), e.currentTarget = null } function Td(e, t) { t = (t & 4) !== 0; for (var n = 0; n < e.length; n++) { var r = e[n], o = r.event; r = r.listeners; e: { var i = void 0; if (t) for (var s = r.length - 1; 0 <= s; s--) { var l = r[s], u = l.instance, a = l.currentTarget; if (l = l.listener, u !== i && o.isPropagationStopped()) break e; ia(o, l, a), i = u } else for (s = 0; s < r.length; s++) { if (l = r[s], u = l.instance, a = l.currentTarget, l = l.listener, u !== i && o.isPropagationStopped()) break e; ia(o, l, a), i = u } } } if (Ho) throw e = Us, Ho = !1, Us = null, e } function q(e, t) { var n = t[Xs]; n === void 0 && (n = t[Xs] = new Set); var r = e + "__bubble"; n.has(r) || (Dd(t, e, 2, !1), n.add(r)) } function ns(e, t, n) { var r = 0; t && (r |= 4), Dd(n, e, r, t) } var po = "_reactListening" + Math.random().toString(36).slice(2); function Ar(e) { if (!e[po]) { e[po] = !0, Rc.forEach(function (n) { n !== "selectionchange" && (i0.has(n) || ns(n, !1, e), ns(n, !0, e)) }); var t = e.nodeType === 9 ? e : e.ownerDocument; t === null || t[po] || (t[po] = !0, ns("selectionchange", !1, t)) } } function Dd(e, t, n, r) { switch (dd(t)) { case 1: var o = Sp; break; case 4: o = wp; break; default: o = $l }n = o.bind(null, t, n, e), o = void 0, !Fs || t !== "touchstart" && t !== "touchmove" && t !== "wheel" || (o = !0), r ? o !== void 0 ? e.addEventListener(t, n, { capture: !0, passive: o }) : e.addEventListener(t, n, !0) : o !== void 0 ? e.addEventListener(t, n, { passive: o }) : e.addEventListener(t, n, !1) } function rs(e, t, n, r, o) { var i = r; if (!(t & 1) && !(t & 2) && r !== null) e: for (; ;) { if (r === null) return; var s = r.tag; if (s === 3 || s === 4) { var l = r.stateNode.containerInfo; if (l === o || l.nodeType === 8 && l.parentNode === o) break; if (s === 4) for (s = r.return; s !== null;) { var u = s.tag; if ((u === 3 || u === 4) && (u = s.stateNode.containerInfo, u === o || u.nodeType === 8 && u.parentNode === o)) return; s = s.return } for (; l !== null;) { if (s = sn(l), s === null) return; if (u = s.tag, u === 5 || u === 6) { r = i = s; continue e } l = l.parentNode } } r = r.return } Xc(function () { var a = i, h = Rl(n), m = []; e: { var d = Od.get(e); if (d !== void 0) { var g = Ul, v = e; switch (e) { case "keypress": if (Io(n) === 0) break e; case "keydown": case "keyup": g = Rp; break; case "focusin": v = "focus", g = Yi; break; case "focusout": v = "blur", g = Yi; break; case "beforeblur": case "afterblur": g = Yi; break; case "click": if (n.button === 2) break e; case "auxclick": case "dblclick": case "mousedown": case "mousemove": case "mouseup": case "mouseout": case "mouseover": case "contextmenu": g = Ku; break; case "drag": case "dragend": case "dragenter": case "dragexit": case "dragleave": case "dragover": case "dragstart": case "drop": g = Cp; break; case "touchcancel": case "touchend": case "touchmove": case "touchstart": g = zp; break; case Ed: case Cd: case xd: g = Op; break; case _d: g = Fp; break; case "scroll": g = kp; break; case "wheel": g = Hp; break; case "copy": case "cut": case "paste": g = Dp; break; case "gotpointercapture": case "lostpointercapture": case "pointercancel": case "pointerdown": case "pointermove": case "pointerout": case "pointerover": case "pointerup": g = Gu }var y = (t & 4) !== 0, w = !y && e === "scroll", p = y ? d !== null ? d + "Capture" : null : d; y = []; for (var c = a, f; c !== null;) { f = c; var k = f.stateNode; if (f.tag === 5 && k !== null && (f = k, p !== null && (k = Ir(c, p), k != null && y.push(br(c, k, f)))), w) break; c = c.return } 0 < y.length && (d = new g(d, v, null, n, h), m.push({ event: d, listeners: y })) } } if (!(t & 7)) { e: { if (d = e === "mouseover" || e === "pointerover", g = e === "mouseout" || e === "pointerout", d && n !== zs && (v = n.relatedTarget || n.fromElement) && (sn(v) || v[wt])) break e; if ((g || d) && (d = h.window === h ? h : (d = h.ownerDocument) ? d.defaultView || d.parentWindow : window, g ? (v = n.relatedTarget || n.toElement, g = a, v = v ? sn(v) : null, v !== null && (w = wn(v), v !== w || v.tag !== 5 && v.tag !== 6) && (v = null)) : (g = null, v = a), g !== v)) { if (y = Ku, k = "onMouseLeave", p = "onMouseEnter", c = "mouse", (e === "pointerout" || e === "pointerover") && (y = Gu, k = "onPointerLeave", p = "onPointerEnter", c = "pointer"), w = g == null ? d : In(g), f = v == null ? d : In(v), d = new y(k, c + "leave", g, n, h), d.target = w, d.relatedTarget = f, k = null, sn(h) === a && (y = new y(p, c + "enter", v, n, h), y.target = f, y.relatedTarget = w, k = y), w = k, g && v) t: { for (y = g, p = v, c = 0, f = y; f; f = Cn(f))c++; for (f = 0, k = p; k; k = Cn(k))f++; for (; 0 < c - f;)y = Cn(y), c--; for (; 0 < f - c;)p = Cn(p), f--; for (; c--;) { if (y === p || p !== null && y === p.alternate) break t; y = Cn(y), p = Cn(p) } y = null } else y = null; g !== null && sa(m, d, g, y, !1), v !== null && w !== null && sa(m, w, v, y, !0) } } e: { if (d = a ? In(a) : window, g = d.nodeName && d.nodeName.toLowerCase(), g === "select" || g === "input" && d.type === "file") var x = Gp; else if (Ju(d)) if (vd) x = Zp; else { x = Xp; var _ = Yp } else (g = d.nodeName) && g.toLowerCase() === "input" && (d.type === "checkbox" || d.type === "radio") && (x = Jp); if (x && (x = x(e, a))) { md(m, x, n, h); break e } _ && _(e, d, a), e === "focusout" && (_ = d._wrapperState) && _.controlled && d.type === "number" && Ns(d, "number", d.value) } switch (_ = a ? In(a) : window, e) { case "focusin": (Ju(_) || _.contentEditable === "true") && (Dn = _, Ws = a, kr = null); break; case "focusout": kr = Ws = Dn = null; break; case "mousedown": Qs = !0; break; case "contextmenu": case "mouseup": case "dragend": Qs = !1, ra(m, n, h); break; case "selectionchange": if (n0) break; case "keydown": case "keyup": ra(m, n, h) }var O; if (Bl) e: { switch (e) { case "compositionstart": var T = "onCompositionStart"; break e; case "compositionend": T = "onCompositionEnd"; break e; case "compositionupdate": T = "onCompositionUpdate"; break e }T = void 0 } else Tn ? pd(e, n) && (T = "onCompositionEnd") : e === "keydown" && n.keyCode === 229 && (T = "onCompositionStart"); T && (hd && n.locale !== "ko" && (Tn || T !== "onCompositionStart" ? T === "onCompositionEnd" && Tn && (O = fd()) : (zt = h, Fl = "value" in zt ? zt.value : zt.textContent, Tn = !0)), _ = Ko(a, T), 0 < _.length && (T = new Vu(T, e, null, n, h), m.push({ event: T, listeners: _ }), O ? T.data = O : (O = gd(n), O !== null && (T.data = O)))), (O = qp ? Wp(e, n) : Qp(e, n)) && (a = Ko(a, "onBeforeInput"), 0 < a.length && (h = new Vu("onBeforeInput", "beforeinput", null, n, h), m.push({ event: h, listeners: a }), h.data = O)) } Td(m, t) }) } function br(e, t, n) { return { instance: e, listener: t, currentTarget: n } } function Ko(e, t) { for (var n = t + "Capture", r = []; e !== null;) { var o = e, i = o.stateNode; o.tag === 5 && i !== null && (o = i, i = Ir(e, n), i != null && r.unshift(br(e, i, o)), i = Ir(e, t), i != null && r.push(br(e, i, o))), e = e.return } return r } function Cn(e) { if (e === null) return null; do e = e.return; while (e && e.tag !== 5); return e || null } function sa(e, t, n, r, o) { for (var i = t._reactName, s = []; n !== null && n !== r;) { var l = n, u = l.alternate, a = l.stateNode; if (u !== null && u === r) break; l.tag === 5 && a !== null && (l = a, o ? (u = Ir(n, i), u != null && s.unshift(br(n, u, l))) : o || (u = Ir(n, i), u != null && s.push(br(n, u, l)))), n = n.return } s.length !== 0 && e.push({ event: t, listeners: s }) } var s0 = /\r\n?/g, l0 = /\u0000|\uFFFD/g; function la(e) { + return (typeof e == "string" ? e : "" + e).replace(s0, ` +`).replace(l0, "") +} function go(e, t, n) { if (t = la(t), la(e) !== t && n) throw Error(E(425)) } function Vo() { } var Ks = null, Vs = null; function Gs(e, t) { return e === "textarea" || e === "noscript" || typeof t.children == "string" || typeof t.children == "number" || typeof t.dangerouslySetInnerHTML == "object" && t.dangerouslySetInnerHTML !== null && t.dangerouslySetInnerHTML.__html != null } var Ys = typeof setTimeout == "function" ? setTimeout : void 0, u0 = typeof clearTimeout == "function" ? clearTimeout : void 0, ua = typeof Promise == "function" ? Promise : void 0, a0 = typeof queueMicrotask == "function" ? queueMicrotask : typeof ua < "u" ? function (e) { return ua.resolve(null).then(e).catch(c0) } : Ys; function c0(e) { setTimeout(function () { throw e }) } function os(e, t) { var n = t, r = 0; do { var o = n.nextSibling; if (e.removeChild(n), o && o.nodeType === 8) if (n = o.data, n === "/$") { if (r === 0) { e.removeChild(o), Nr(t); return } r-- } else n !== "$" && n !== "$?" && n !== "$!" || r++; n = o } while (n); Nr(t) } function Bt(e) { for (; e != null; e = e.nextSibling) { var t = e.nodeType; if (t === 1 || t === 3) break; if (t === 8) { if (t = e.data, t === "$" || t === "$!" || t === "$?") break; if (t === "/$") return null } } return e } function aa(e) { e = e.previousSibling; for (var t = 0; e;) { if (e.nodeType === 8) { var n = e.data; if (n === "$" || n === "$!" || n === "$?") { if (t === 0) return e; t-- } else n === "/$" && t++ } e = e.previousSibling } return null } var Zn = Math.random().toString(36).slice(2), ct = "__reactFiber$" + Zn, zr = "__reactProps$" + Zn, wt = "__reactContainer$" + Zn, Xs = "__reactEvents$" + Zn, d0 = "__reactListeners$" + Zn, f0 = "__reactHandles$" + Zn; function sn(e) { var t = e[ct]; if (t) return t; for (var n = e.parentNode; n;) { if (t = n[wt] || n[ct]) { if (n = t.alternate, t.child !== null || n !== null && n.child !== null) for (e = aa(e); e !== null;) { if (n = e[ct]) return n; e = aa(e) } return t } e = n, n = e.parentNode } return null } function Xr(e) { return e = e[ct] || e[wt], !e || e.tag !== 5 && e.tag !== 6 && e.tag !== 13 && e.tag !== 3 ? null : e } function In(e) { if (e.tag === 5 || e.tag === 6) return e.stateNode; throw Error(E(33)) } function mi(e) { return e[zr] || null } var Js = [], jn = -1; function Jt(e) { return { current: e } } function W(e) { 0 > jn || (e.current = Js[jn], Js[jn] = null, jn--) } function H(e, t) { jn++, Js[jn] = e.current, e.current = t } var Yt = {}, ve = Jt(Yt), _e = Jt(!1), fn = Yt; function qn(e, t) { var n = e.type.contextTypes; if (!n) return Yt; var r = e.stateNode; if (r && r.__reactInternalMemoizedUnmaskedChildContext === t) return r.__reactInternalMemoizedMaskedChildContext; var o = {}, i; for (i in n) o[i] = t[i]; return r && (e = e.stateNode, e.__reactInternalMemoizedUnmaskedChildContext = t, e.__reactInternalMemoizedMaskedChildContext = o), o } function Oe(e) { return e = e.childContextTypes, e != null } function Go() { W(_e), W(ve) } function ca(e, t, n) { if (ve.current !== Yt) throw Error(E(168)); H(ve, t), H(_e, n) } function Pd(e, t, n) { var r = e.stateNode; if (t = t.childContextTypes, typeof r.getChildContext != "function") return n; r = r.getChildContext(); for (var o in r) if (!(o in t)) throw Error(E(108, Yh(e) || "Unknown", o)); return G({}, n, r) } function Yo(e) { return e = (e = e.stateNode) && e.__reactInternalMemoizedMergedChildContext || Yt, fn = ve.current, H(ve, e), H(_e, _e.current), !0 } function da(e, t, n) { var r = e.stateNode; if (!r) throw Error(E(169)); n ? (e = Pd(e, t, fn), r.__reactInternalMemoizedMergedChildContext = e, W(_e), W(ve), H(ve, e)) : W(_e), H(_e, n) } var gt = null, vi = !1, is = !1; function Id(e) { gt === null ? gt = [e] : gt.push(e) } function h0(e) { vi = !0, Id(e) } function Zt() { if (!is && gt !== null) { is = !0; var e = 0, t = F; try { var n = gt; for (F = 1; e < n.length; e++) { var r = n[e]; do r = r(!0); while (r !== null) } gt = null, vi = !1 } catch (o) { throw gt !== null && (gt = gt.slice(e + 1)), td(Al, Zt), o } finally { F = t, is = !1 } } return null } var Ln = [], Nn = 0, Xo = null, Jo = 0, qe = [], We = 0, hn = null, mt = 1, vt = ""; function rn(e, t) { Ln[Nn++] = Jo, Ln[Nn++] = Xo, Xo = e, Jo = t } function jd(e, t, n) { qe[We++] = mt, qe[We++] = vt, qe[We++] = hn, hn = e; var r = mt; e = vt; var o = 32 - ot(r) - 1; r &= ~(1 << o), n += 1; var i = 32 - ot(t) + o; if (30 < i) { var s = o - o % 5; i = (r & (1 << s) - 1).toString(32), r >>= s, o -= s, mt = 1 << 32 - ot(t) + o | n << o | r, vt = i + e } else mt = 1 << i | n << o | r, vt = e } function Wl(e) { e.return !== null && (rn(e, 1), jd(e, 1, 0)) } function Ql(e) { for (; e === Xo;)Xo = Ln[--Nn], Ln[Nn] = null, Jo = Ln[--Nn], Ln[Nn] = null; for (; e === hn;)hn = qe[--We], qe[We] = null, vt = qe[--We], qe[We] = null, mt = qe[--We], qe[We] = null } var Me = null, Ne = null, Q = !1, rt = null; function Ld(e, t) { var n = Ke(5, null, null, 0); n.elementType = "DELETED", n.stateNode = t, n.return = e, t = e.deletions, t === null ? (e.deletions = [n], e.flags |= 16) : t.push(n) } function fa(e, t) { switch (e.tag) { case 5: var n = e.type; return t = t.nodeType !== 1 || n.toLowerCase() !== t.nodeName.toLowerCase() ? null : t, t !== null ? (e.stateNode = t, Me = e, Ne = Bt(t.firstChild), !0) : !1; case 6: return t = e.pendingProps === "" || t.nodeType !== 3 ? null : t, t !== null ? (e.stateNode = t, Me = e, Ne = null, !0) : !1; case 13: return t = t.nodeType !== 8 ? null : t, t !== null ? (n = hn !== null ? { id: mt, overflow: vt } : null, e.memoizedState = { dehydrated: t, treeContext: n, retryLane: 1073741824 }, n = Ke(18, null, null, 0), n.stateNode = t, n.return = e, e.child = n, Me = e, Ne = null, !0) : !1; default: return !1 } } function Zs(e) { return (e.mode & 1) !== 0 && (e.flags & 128) === 0 } function el(e) { if (Q) { var t = Ne; if (t) { var n = t; if (!fa(e, t)) { if (Zs(e)) throw Error(E(418)); t = Bt(n.nextSibling); var r = Me; t && fa(e, t) ? Ld(r, n) : (e.flags = e.flags & -4097 | 2, Q = !1, Me = e) } } else { if (Zs(e)) throw Error(E(418)); e.flags = e.flags & -4097 | 2, Q = !1, Me = e } } } function ha(e) { for (e = e.return; e !== null && e.tag !== 5 && e.tag !== 3 && e.tag !== 13;)e = e.return; Me = e } function mo(e) { if (e !== Me) return !1; if (!Q) return ha(e), Q = !0, !1; var t; if ((t = e.tag !== 3) && !(t = e.tag !== 5) && (t = e.type, t = t !== "head" && t !== "body" && !Gs(e.type, e.memoizedProps)), t && (t = Ne)) { if (Zs(e)) throw Nd(), Error(E(418)); for (; t;)Ld(e, t), t = Bt(t.nextSibling) } if (ha(e), e.tag === 13) { if (e = e.memoizedState, e = e !== null ? e.dehydrated : null, !e) throw Error(E(317)); e: { for (e = e.nextSibling, t = 0; e;) { if (e.nodeType === 8) { var n = e.data; if (n === "/$") { if (t === 0) { Ne = Bt(e.nextSibling); break e } t-- } else n !== "$" && n !== "$!" && n !== "$?" || t++ } e = e.nextSibling } Ne = null } } else Ne = Me ? Bt(e.stateNode.nextSibling) : null; return !0 } function Nd() { for (var e = Ne; e;)e = Bt(e.nextSibling) } function Wn() { Ne = Me = null, Q = !1 } function Kl(e) { rt === null ? rt = [e] : rt.push(e) } var p0 = Ct.ReactCurrentBatchConfig; function tt(e, t) { if (e && e.defaultProps) { t = G({}, t), e = e.defaultProps; for (var n in e) t[n] === void 0 && (t[n] = e[n]); return t } return t } var Zo = Jt(null), ei = null, Mn = null, Vl = null; function Gl() { Vl = Mn = ei = null } function Yl(e) { var t = Zo.current; W(Zo), e._currentValue = t } function tl(e, t, n) { for (; e !== null;) { var r = e.alternate; if ((e.childLanes & t) !== t ? (e.childLanes |= t, r !== null && (r.childLanes |= t)) : r !== null && (r.childLanes & t) !== t && (r.childLanes |= t), e === n) break; e = e.return } } function Un(e, t) { ei = e, Vl = Mn = null, e = e.dependencies, e !== null && e.firstContext !== null && (e.lanes & t && (xe = !0), e.firstContext = null) } function Ge(e) { var t = e._currentValue; if (Vl !== e) if (e = { context: e, memoizedValue: t, next: null }, Mn === null) { if (ei === null) throw Error(E(308)); Mn = e, ei.dependencies = { lanes: 0, firstContext: e } } else Mn = Mn.next = e; return t } var ln = null; function Xl(e) { ln === null ? ln = [e] : ln.push(e) } function Md(e, t, n, r) { var o = t.interleaved; return o === null ? (n.next = n, Xl(t)) : (n.next = o.next, o.next = n), t.interleaved = n, kt(e, r) } function kt(e, t) { e.lanes |= t; var n = e.alternate; for (n !== null && (n.lanes |= t), n = e, e = e.return; e !== null;)e.childLanes |= t, n = e.alternate, n !== null && (n.childLanes |= t), n = e, e = e.return; return n.tag === 3 ? n.stateNode : null } var Nt = !1; function Jl(e) { e.updateQueue = { baseState: e.memoizedState, firstBaseUpdate: null, lastBaseUpdate: null, shared: { pending: null, interleaved: null, lanes: 0 }, effects: null } } function Rd(e, t) { e = e.updateQueue, t.updateQueue === e && (t.updateQueue = { baseState: e.baseState, firstBaseUpdate: e.firstBaseUpdate, lastBaseUpdate: e.lastBaseUpdate, shared: e.shared, effects: e.effects }) } function yt(e, t) { return { eventTime: e, lane: t, tag: 0, payload: null, callback: null, next: null } } function qt(e, t, n) { var r = e.updateQueue; if (r === null) return null; if (r = r.shared, $ & 2) { var o = r.pending; return o === null ? t.next = t : (t.next = o.next, o.next = t), r.pending = t, kt(e, n) } return o = r.interleaved, o === null ? (t.next = t, Xl(r)) : (t.next = o.next, o.next = t), r.interleaved = t, kt(e, n) } function jo(e, t, n) { if (t = t.updateQueue, t !== null && (t = t.shared, (n & 4194240) !== 0)) { var r = t.lanes; r &= e.pendingLanes, n |= r, t.lanes = n, bl(e, n) } } function pa(e, t) { var n = e.updateQueue, r = e.alternate; if (r !== null && (r = r.updateQueue, n === r)) { var o = null, i = null; if (n = n.firstBaseUpdate, n !== null) { do { var s = { eventTime: n.eventTime, lane: n.lane, tag: n.tag, payload: n.payload, callback: n.callback, next: null }; i === null ? o = i = s : i = i.next = s, n = n.next } while (n !== null); i === null ? o = i = t : i = i.next = t } else o = i = t; n = { baseState: r.baseState, firstBaseUpdate: o, lastBaseUpdate: i, shared: r.shared, effects: r.effects }, e.updateQueue = n; return } e = n.lastBaseUpdate, e === null ? n.firstBaseUpdate = t : e.next = t, n.lastBaseUpdate = t } function ti(e, t, n, r) { var o = e.updateQueue; Nt = !1; var i = o.firstBaseUpdate, s = o.lastBaseUpdate, l = o.shared.pending; if (l !== null) { o.shared.pending = null; var u = l, a = u.next; u.next = null, s === null ? i = a : s.next = a, s = u; var h = e.alternate; h !== null && (h = h.updateQueue, l = h.lastBaseUpdate, l !== s && (l === null ? h.firstBaseUpdate = a : l.next = a, h.lastBaseUpdate = u)) } if (i !== null) { var m = o.baseState; s = 0, h = a = u = null, l = i; do { var d = l.lane, g = l.eventTime; if ((r & d) === d) { h !== null && (h = h.next = { eventTime: g, lane: 0, tag: l.tag, payload: l.payload, callback: l.callback, next: null }); e: { var v = e, y = l; switch (d = t, g = n, y.tag) { case 1: if (v = y.payload, typeof v == "function") { m = v.call(g, m, d); break e } m = v; break e; case 3: v.flags = v.flags & -65537 | 128; case 0: if (v = y.payload, d = typeof v == "function" ? v.call(g, m, d) : v, d == null) break e; m = G({}, m, d); break e; case 2: Nt = !0 } } l.callback !== null && l.lane !== 0 && (e.flags |= 64, d = o.effects, d === null ? o.effects = [l] : d.push(l)) } else g = { eventTime: g, lane: d, tag: l.tag, payload: l.payload, callback: l.callback, next: null }, h === null ? (a = h = g, u = m) : h = h.next = g, s |= d; if (l = l.next, l === null) { if (l = o.shared.pending, l === null) break; d = l, l = d.next, d.next = null, o.lastBaseUpdate = d, o.shared.pending = null } } while (1); if (h === null && (u = m), o.baseState = u, o.firstBaseUpdate = a, o.lastBaseUpdate = h, t = o.shared.interleaved, t !== null) { o = t; do s |= o.lane, o = o.next; while (o !== t) } else i === null && (o.shared.lanes = 0); gn |= s, e.lanes = s, e.memoizedState = m } } function ga(e, t, n) { if (e = t.effects, t.effects = null, e !== null) for (t = 0; t < e.length; t++) { var r = e[t], o = r.callback; if (o !== null) { if (r.callback = null, r = n, typeof o != "function") throw Error(E(191, o)); o.call(r) } } } var Ad = new Mc.Component().refs; function nl(e, t, n, r) { t = e.memoizedState, n = n(r, t), n = n == null ? t : G({}, t, n), e.memoizedState = n, e.lanes === 0 && (e.updateQueue.baseState = n) } var yi = { isMounted: function (e) { return (e = e._reactInternals) ? wn(e) === e : !1 }, enqueueSetState: function (e, t, n) { e = e._reactInternals; var r = we(), o = Qt(e), i = yt(r, o); i.payload = t, n != null && (i.callback = n), t = qt(e, i, o), t !== null && (it(t, e, o, r), jo(t, e, o)) }, enqueueReplaceState: function (e, t, n) { e = e._reactInternals; var r = we(), o = Qt(e), i = yt(r, o); i.tag = 1, i.payload = t, n != null && (i.callback = n), t = qt(e, i, o), t !== null && (it(t, e, o, r), jo(t, e, o)) }, enqueueForceUpdate: function (e, t) { e = e._reactInternals; var n = we(), r = Qt(e), o = yt(n, r); o.tag = 2, t != null && (o.callback = t), t = qt(e, o, r), t !== null && (it(t, e, r, n), jo(t, e, r)) } }; function ma(e, t, n, r, o, i, s) { return e = e.stateNode, typeof e.shouldComponentUpdate == "function" ? e.shouldComponentUpdate(r, i, s) : t.prototype && t.prototype.isPureReactComponent ? !Rr(n, r) || !Rr(o, i) : !0 } function bd(e, t, n) { var r = !1, o = Yt, i = t.contextType; return typeof i == "object" && i !== null ? i = Ge(i) : (o = Oe(t) ? fn : ve.current, r = t.contextTypes, i = (r = r != null) ? qn(e, o) : Yt), t = new t(n, i), e.memoizedState = t.state !== null && t.state !== void 0 ? t.state : null, t.updater = yi, e.stateNode = t, t._reactInternals = e, r && (e = e.stateNode, e.__reactInternalMemoizedUnmaskedChildContext = o, e.__reactInternalMemoizedMaskedChildContext = i), t } function va(e, t, n, r) { e = t.state, typeof t.componentWillReceiveProps == "function" && t.componentWillReceiveProps(n, r), typeof t.UNSAFE_componentWillReceiveProps == "function" && t.UNSAFE_componentWillReceiveProps(n, r), t.state !== e && yi.enqueueReplaceState(t, t.state, null) } function rl(e, t, n, r) { var o = e.stateNode; o.props = n, o.state = e.memoizedState, o.refs = Ad, Jl(e); var i = t.contextType; typeof i == "object" && i !== null ? o.context = Ge(i) : (i = Oe(t) ? fn : ve.current, o.context = qn(e, i)), o.state = e.memoizedState, i = t.getDerivedStateFromProps, typeof i == "function" && (nl(e, t, i, n), o.state = e.memoizedState), typeof t.getDerivedStateFromProps == "function" || typeof o.getSnapshotBeforeUpdate == "function" || typeof o.UNSAFE_componentWillMount != "function" && typeof o.componentWillMount != "function" || (t = o.state, typeof o.componentWillMount == "function" && o.componentWillMount(), typeof o.UNSAFE_componentWillMount == "function" && o.UNSAFE_componentWillMount(), t !== o.state && yi.enqueueReplaceState(o, o.state, null), ti(e, n, o, r), o.state = e.memoizedState), typeof o.componentDidMount == "function" && (e.flags |= 4194308) } function sr(e, t, n) { if (e = n.ref, e !== null && typeof e != "function" && typeof e != "object") { if (n._owner) { if (n = n._owner, n) { if (n.tag !== 1) throw Error(E(309)); var r = n.stateNode } if (!r) throw Error(E(147, e)); var o = r, i = "" + e; return t !== null && t.ref !== null && typeof t.ref == "function" && t.ref._stringRef === i ? t.ref : (t = function (s) { var l = o.refs; l === Ad && (l = o.refs = {}), s === null ? delete l[i] : l[i] = s }, t._stringRef = i, t) } if (typeof e != "string") throw Error(E(284)); if (!n._owner) throw Error(E(290, e)) } return e } function vo(e, t) { throw e = Object.prototype.toString.call(t), Error(E(31, e === "[object Object]" ? "object with keys {" + Object.keys(t).join(", ") + "}" : e)) } function ya(e) { var t = e._init; return t(e._payload) } function zd(e) { function t(p, c) { if (e) { var f = p.deletions; f === null ? (p.deletions = [c], p.flags |= 16) : f.push(c) } } function n(p, c) { if (!e) return null; for (; c !== null;)t(p, c), c = c.sibling; return null } function r(p, c) { for (p = new Map; c !== null;)c.key !== null ? p.set(c.key, c) : p.set(c.index, c), c = c.sibling; return p } function o(p, c) { return p = Kt(p, c), p.index = 0, p.sibling = null, p } function i(p, c, f) { return p.index = f, e ? (f = p.alternate, f !== null ? (f = f.index, f < c ? (p.flags |= 2, c) : f) : (p.flags |= 2, c)) : (p.flags |= 1048576, c) } function s(p) { return e && p.alternate === null && (p.flags |= 2), p } function l(p, c, f, k) { return c === null || c.tag !== 6 ? (c = fs(f, p.mode, k), c.return = p, c) : (c = o(c, f), c.return = p, c) } function u(p, c, f, k) { var x = f.type; return x === On ? h(p, c, f.props.children, k, f.key) : c !== null && (c.elementType === x || typeof x == "object" && x !== null && x.$$typeof === Lt && ya(x) === c.type) ? (k = o(c, f.props), k.ref = sr(p, c, f), k.return = p, k) : (k = bo(f.type, f.key, f.props, null, p.mode, k), k.ref = sr(p, c, f), k.return = p, k) } function a(p, c, f, k) { return c === null || c.tag !== 4 || c.stateNode.containerInfo !== f.containerInfo || c.stateNode.implementation !== f.implementation ? (c = hs(f, p.mode, k), c.return = p, c) : (c = o(c, f.children || []), c.return = p, c) } function h(p, c, f, k, x) { return c === null || c.tag !== 7 ? (c = cn(f, p.mode, k, x), c.return = p, c) : (c = o(c, f), c.return = p, c) } function m(p, c, f) { if (typeof c == "string" && c !== "" || typeof c == "number") return c = fs("" + c, p.mode, f), c.return = p, c; if (typeof c == "object" && c !== null) { switch (c.$$typeof) { case io: return f = bo(c.type, c.key, c.props, null, p.mode, f), f.ref = sr(p, null, c), f.return = p, f; case _n: return c = hs(c, p.mode, f), c.return = p, c; case Lt: var k = c._init; return m(p, k(c._payload), f) }if (hr(c) || tr(c)) return c = cn(c, p.mode, f, null), c.return = p, c; vo(p, c) } return null } function d(p, c, f, k) { var x = c !== null ? c.key : null; if (typeof f == "string" && f !== "" || typeof f == "number") return x !== null ? null : l(p, c, "" + f, k); if (typeof f == "object" && f !== null) { switch (f.$$typeof) { case io: return f.key === x ? u(p, c, f, k) : null; case _n: return f.key === x ? a(p, c, f, k) : null; case Lt: return x = f._init, d(p, c, x(f._payload), k) }if (hr(f) || tr(f)) return x !== null ? null : h(p, c, f, k, null); vo(p, f) } return null } function g(p, c, f, k, x) { if (typeof k == "string" && k !== "" || typeof k == "number") return p = p.get(f) || null, l(c, p, "" + k, x); if (typeof k == "object" && k !== null) { switch (k.$$typeof) { case io: return p = p.get(k.key === null ? f : k.key) || null, u(c, p, k, x); case _n: return p = p.get(k.key === null ? f : k.key) || null, a(c, p, k, x); case Lt: var _ = k._init; return g(p, c, f, _(k._payload), x) }if (hr(k) || tr(k)) return p = p.get(f) || null, h(c, p, k, x, null); vo(c, k) } return null } function v(p, c, f, k) { for (var x = null, _ = null, O = c, T = c = 0, j = null; O !== null && T < f.length; T++) { O.index > T ? (j = O, O = null) : j = O.sibling; var I = d(p, O, f[T], k); if (I === null) { O === null && (O = j); break } e && O && I.alternate === null && t(p, O), c = i(I, c, T), _ === null ? x = I : _.sibling = I, _ = I, O = j } if (T === f.length) return n(p, O), Q && rn(p, T), x; if (O === null) { for (; T < f.length; T++)O = m(p, f[T], k), O !== null && (c = i(O, c, T), _ === null ? x = O : _.sibling = O, _ = O); return Q && rn(p, T), x } for (O = r(p, O); T < f.length; T++)j = g(O, p, T, f[T], k), j !== null && (e && j.alternate !== null && O.delete(j.key === null ? T : j.key), c = i(j, c, T), _ === null ? x = j : _.sibling = j, _ = j); return e && O.forEach(function (ne) { return t(p, ne) }), Q && rn(p, T), x } function y(p, c, f, k) { var x = tr(f); if (typeof x != "function") throw Error(E(150)); if (f = x.call(f), f == null) throw Error(E(151)); for (var _ = x = null, O = c, T = c = 0, j = null, I = f.next(); O !== null && !I.done; T++, I = f.next()) { O.index > T ? (j = O, O = null) : j = O.sibling; var ne = d(p, O, I.value, k); if (ne === null) { O === null && (O = j); break } e && O && ne.alternate === null && t(p, O), c = i(ne, c, T), _ === null ? x = ne : _.sibling = ne, _ = ne, O = j } if (I.done) return n(p, O), Q && rn(p, T), x; if (O === null) { for (; !I.done; T++, I = f.next())I = m(p, I.value, k), I !== null && (c = i(I, c, T), _ === null ? x = I : _.sibling = I, _ = I); return Q && rn(p, T), x } for (O = r(p, O); !I.done; T++, I = f.next())I = g(O, p, T, I.value, k), I !== null && (e && I.alternate !== null && O.delete(I.key === null ? T : I.key), c = i(I, c, T), _ === null ? x = I : _.sibling = I, _ = I); return e && O.forEach(function (fe) { return t(p, fe) }), Q && rn(p, T), x } function w(p, c, f, k) { if (typeof f == "object" && f !== null && f.type === On && f.key === null && (f = f.props.children), typeof f == "object" && f !== null) { switch (f.$$typeof) { case io: e: { for (var x = f.key, _ = c; _ !== null;) { if (_.key === x) { if (x = f.type, x === On) { if (_.tag === 7) { n(p, _.sibling), c = o(_, f.props.children), c.return = p, p = c; break e } } else if (_.elementType === x || typeof x == "object" && x !== null && x.$$typeof === Lt && ya(x) === _.type) { n(p, _.sibling), c = o(_, f.props), c.ref = sr(p, _, f), c.return = p, p = c; break e } n(p, _); break } else t(p, _); _ = _.sibling } f.type === On ? (c = cn(f.props.children, p.mode, k, f.key), c.return = p, p = c) : (k = bo(f.type, f.key, f.props, null, p.mode, k), k.ref = sr(p, c, f), k.return = p, p = k) } return s(p); case _n: e: { for (_ = f.key; c !== null;) { if (c.key === _) if (c.tag === 4 && c.stateNode.containerInfo === f.containerInfo && c.stateNode.implementation === f.implementation) { n(p, c.sibling), c = o(c, f.children || []), c.return = p, p = c; break e } else { n(p, c); break } else t(p, c); c = c.sibling } c = hs(f, p.mode, k), c.return = p, p = c } return s(p); case Lt: return _ = f._init, w(p, c, _(f._payload), k) }if (hr(f)) return v(p, c, f, k); if (tr(f)) return y(p, c, f, k); vo(p, f) } return typeof f == "string" && f !== "" || typeof f == "number" ? (f = "" + f, c !== null && c.tag === 6 ? (n(p, c.sibling), c = o(c, f), c.return = p, p = c) : (n(p, c), c = fs(f, p.mode, k), c.return = p, p = c), s(p)) : n(p, c) } return w } var Qn = zd(!0), $d = zd(!1), Jr = {}, ft = Jt(Jr), $r = Jt(Jr), Fr = Jt(Jr); function un(e) { if (e === Jr) throw Error(E(174)); return e } function Zl(e, t) { switch (H(Fr, t), H($r, e), H(ft, Jr), e = t.nodeType, e) { case 9: case 11: t = (t = t.documentElement) ? t.namespaceURI : Rs(null, ""); break; default: e = e === 8 ? t.parentNode : t, t = e.namespaceURI || null, e = e.tagName, t = Rs(t, e) }W(ft), H(ft, t) } function Kn() { W(ft), W($r), W(Fr) } function Fd(e) { un(Fr.current); var t = un(ft.current), n = Rs(t, e.type); t !== n && (H($r, e), H(ft, n)) } function eu(e) { $r.current === e && (W(ft), W($r)) } var K = Jt(0); function ni(e) { for (var t = e; t !== null;) { if (t.tag === 13) { var n = t.memoizedState; if (n !== null && (n = n.dehydrated, n === null || n.data === "$?" || n.data === "$!")) return t } else if (t.tag === 19 && t.memoizedProps.revealOrder !== void 0) { if (t.flags & 128) return t } else if (t.child !== null) { t.child.return = t, t = t.child; continue } if (t === e) break; for (; t.sibling === null;) { if (t.return === null || t.return === e) return null; t = t.return } t.sibling.return = t.return, t = t.sibling } return null } var ss = []; function tu() { for (var e = 0; e < ss.length; e++)ss[e]._workInProgressVersionPrimary = null; ss.length = 0 } var Lo = Ct.ReactCurrentDispatcher, ls = Ct.ReactCurrentBatchConfig, pn = 0, V = null, ee = null, se = null, ri = !1, Er = !1, Ur = 0, g0 = 0; function he() { throw Error(E(321)) } function nu(e, t) { if (t === null) return !1; for (var n = 0; n < t.length && n < e.length; n++)if (!st(e[n], t[n])) return !1; return !0 } function ru(e, t, n, r, o, i) { if (pn = i, V = t, t.memoizedState = null, t.updateQueue = null, t.lanes = 0, Lo.current = e === null || e.memoizedState === null ? S0 : w0, e = n(r, o), Er) { i = 0; do { if (Er = !1, Ur = 0, 25 <= i) throw Error(E(301)); i += 1, se = ee = null, t.updateQueue = null, Lo.current = k0, e = n(r, o) } while (Er) } if (Lo.current = oi, t = ee !== null && ee.next !== null, pn = 0, se = ee = V = null, ri = !1, t) throw Error(E(300)); return e } function ou() { var e = Ur !== 0; return Ur = 0, e } function at() { var e = { memoizedState: null, baseState: null, baseQueue: null, queue: null, next: null }; return se === null ? V.memoizedState = se = e : se = se.next = e, se } function Ye() { if (ee === null) { var e = V.alternate; e = e !== null ? e.memoizedState : null } else e = ee.next; var t = se === null ? V.memoizedState : se.next; if (t !== null) se = t, ee = e; else { if (e === null) throw Error(E(310)); ee = e, e = { memoizedState: ee.memoizedState, baseState: ee.baseState, baseQueue: ee.baseQueue, queue: ee.queue, next: null }, se === null ? V.memoizedState = se = e : se = se.next = e } return se } function Hr(e, t) { return typeof t == "function" ? t(e) : t } function us(e) { var t = Ye(), n = t.queue; if (n === null) throw Error(E(311)); n.lastRenderedReducer = e; var r = ee, o = r.baseQueue, i = n.pending; if (i !== null) { if (o !== null) { var s = o.next; o.next = i.next, i.next = s } r.baseQueue = o = i, n.pending = null } if (o !== null) { i = o.next, r = r.baseState; var l = s = null, u = null, a = i; do { var h = a.lane; if ((pn & h) === h) u !== null && (u = u.next = { lane: 0, action: a.action, hasEagerState: a.hasEagerState, eagerState: a.eagerState, next: null }), r = a.hasEagerState ? a.eagerState : e(r, a.action); else { var m = { lane: h, action: a.action, hasEagerState: a.hasEagerState, eagerState: a.eagerState, next: null }; u === null ? (l = u = m, s = r) : u = u.next = m, V.lanes |= h, gn |= h } a = a.next } while (a !== null && a !== i); u === null ? s = r : u.next = l, st(r, t.memoizedState) || (xe = !0), t.memoizedState = r, t.baseState = s, t.baseQueue = u, n.lastRenderedState = r } if (e = n.interleaved, e !== null) { o = e; do i = o.lane, V.lanes |= i, gn |= i, o = o.next; while (o !== e) } else o === null && (n.lanes = 0); return [t.memoizedState, n.dispatch] } function as(e) { var t = Ye(), n = t.queue; if (n === null) throw Error(E(311)); n.lastRenderedReducer = e; var r = n.dispatch, o = n.pending, i = t.memoizedState; if (o !== null) { n.pending = null; var s = o = o.next; do i = e(i, s.action), s = s.next; while (s !== o); st(i, t.memoizedState) || (xe = !0), t.memoizedState = i, t.baseQueue === null && (t.baseState = i), n.lastRenderedState = i } return [i, r] } function Ud() { } function Hd(e, t) { var n = V, r = Ye(), o = t(), i = !st(r.memoizedState, o); if (i && (r.memoizedState = o, xe = !0), r = r.queue, iu(Wd.bind(null, n, r, e), [e]), r.getSnapshot !== t || i || se !== null && se.memoizedState.tag & 1) { if (n.flags |= 2048, Br(9, qd.bind(null, n, r, o, t), void 0, null), le === null) throw Error(E(349)); pn & 30 || Bd(n, t, o) } return o } function Bd(e, t, n) { e.flags |= 16384, e = { getSnapshot: t, value: n }, t = V.updateQueue, t === null ? (t = { lastEffect: null, stores: null }, V.updateQueue = t, t.stores = [e]) : (n = t.stores, n === null ? t.stores = [e] : n.push(e)) } function qd(e, t, n, r) { t.value = n, t.getSnapshot = r, Qd(t) && Kd(e) } function Wd(e, t, n) { return n(function () { Qd(t) && Kd(e) }) } function Qd(e) { var t = e.getSnapshot; e = e.value; try { var n = t(); return !st(e, n) } catch { return !0 } } function Kd(e) { var t = kt(e, 1); t !== null && it(t, e, 1, -1) } function Sa(e) { var t = at(); return typeof e == "function" && (e = e()), t.memoizedState = t.baseState = e, e = { pending: null, interleaved: null, lanes: 0, dispatch: null, lastRenderedReducer: Hr, lastRenderedState: e }, t.queue = e, e = e.dispatch = y0.bind(null, V, e), [t.memoizedState, e] } function Br(e, t, n, r) { return e = { tag: e, create: t, destroy: n, deps: r, next: null }, t = V.updateQueue, t === null ? (t = { lastEffect: null, stores: null }, V.updateQueue = t, t.lastEffect = e.next = e) : (n = t.lastEffect, n === null ? t.lastEffect = e.next = e : (r = n.next, n.next = e, e.next = r, t.lastEffect = e)), e } function Vd() { return Ye().memoizedState } function No(e, t, n, r) { var o = at(); V.flags |= e, o.memoizedState = Br(1 | t, n, void 0, r === void 0 ? null : r) } function Si(e, t, n, r) { var o = Ye(); r = r === void 0 ? null : r; var i = void 0; if (ee !== null) { var s = ee.memoizedState; if (i = s.destroy, r !== null && nu(r, s.deps)) { o.memoizedState = Br(t, n, i, r); return } } V.flags |= e, o.memoizedState = Br(1 | t, n, i, r) } function wa(e, t) { return No(8390656, 8, e, t) } function iu(e, t) { return Si(2048, 8, e, t) } function Gd(e, t) { return Si(4, 2, e, t) } function Yd(e, t) { return Si(4, 4, e, t) } function Xd(e, t) { if (typeof t == "function") return e = e(), t(e), function () { t(null) }; if (t != null) return e = e(), t.current = e, function () { t.current = null } } function Jd(e, t, n) { return n = n != null ? n.concat([e]) : null, Si(4, 4, Xd.bind(null, t, e), n) } function su() { } function Zd(e, t) { var n = Ye(); t = t === void 0 ? null : t; var r = n.memoizedState; return r !== null && t !== null && nu(t, r[1]) ? r[0] : (n.memoizedState = [e, t], e) } function ef(e, t) { var n = Ye(); t = t === void 0 ? null : t; var r = n.memoizedState; return r !== null && t !== null && nu(t, r[1]) ? r[0] : (e = e(), n.memoizedState = [e, t], e) } function tf(e, t, n) { return pn & 21 ? (st(n, t) || (n = od(), V.lanes |= n, gn |= n, e.baseState = !0), t) : (e.baseState && (e.baseState = !1, xe = !0), e.memoizedState = n) } function m0(e, t) { var n = F; F = n !== 0 && 4 > n ? n : 4, e(!0); var r = ls.transition; ls.transition = {}; try { e(!1), t() } finally { F = n, ls.transition = r } } function nf() { return Ye().memoizedState } function v0(e, t, n) { var r = Qt(e); if (n = { lane: r, action: n, hasEagerState: !1, eagerState: null, next: null }, rf(e)) of(t, n); else if (n = Md(e, t, n, r), n !== null) { var o = we(); it(n, e, r, o), sf(n, t, r) } } function y0(e, t, n) { var r = Qt(e), o = { lane: r, action: n, hasEagerState: !1, eagerState: null, next: null }; if (rf(e)) of(t, o); else { var i = e.alternate; if (e.lanes === 0 && (i === null || i.lanes === 0) && (i = t.lastRenderedReducer, i !== null)) try { var s = t.lastRenderedState, l = i(s, n); if (o.hasEagerState = !0, o.eagerState = l, st(l, s)) { var u = t.interleaved; u === null ? (o.next = o, Xl(t)) : (o.next = u.next, u.next = o), t.interleaved = o; return } } catch { } finally { } n = Md(e, t, o, r), n !== null && (o = we(), it(n, e, r, o), sf(n, t, r)) } } function rf(e) { var t = e.alternate; return e === V || t !== null && t === V } function of(e, t) { Er = ri = !0; var n = e.pending; n === null ? t.next = t : (t.next = n.next, n.next = t), e.pending = t } function sf(e, t, n) { if (n & 4194240) { var r = t.lanes; r &= e.pendingLanes, n |= r, t.lanes = n, bl(e, n) } } var oi = { readContext: Ge, useCallback: he, useContext: he, useEffect: he, useImperativeHandle: he, useInsertionEffect: he, useLayoutEffect: he, useMemo: he, useReducer: he, useRef: he, useState: he, useDebugValue: he, useDeferredValue: he, useTransition: he, useMutableSource: he, useSyncExternalStore: he, useId: he, unstable_isNewReconciler: !1 }, S0 = { readContext: Ge, useCallback: function (e, t) { return at().memoizedState = [e, t === void 0 ? null : t], e }, useContext: Ge, useEffect: wa, useImperativeHandle: function (e, t, n) { return n = n != null ? n.concat([e]) : null, No(4194308, 4, Xd.bind(null, t, e), n) }, useLayoutEffect: function (e, t) { return No(4194308, 4, e, t) }, useInsertionEffect: function (e, t) { return No(4, 2, e, t) }, useMemo: function (e, t) { var n = at(); return t = t === void 0 ? null : t, e = e(), n.memoizedState = [e, t], e }, useReducer: function (e, t, n) { var r = at(); return t = n !== void 0 ? n(t) : t, r.memoizedState = r.baseState = t, e = { pending: null, interleaved: null, lanes: 0, dispatch: null, lastRenderedReducer: e, lastRenderedState: t }, r.queue = e, e = e.dispatch = v0.bind(null, V, e), [r.memoizedState, e] }, useRef: function (e) { var t = at(); return e = { current: e }, t.memoizedState = e }, useState: Sa, useDebugValue: su, useDeferredValue: function (e) { return at().memoizedState = e }, useTransition: function () { var e = Sa(!1), t = e[0]; return e = m0.bind(null, e[1]), at().memoizedState = e, [t, e] }, useMutableSource: function () { }, useSyncExternalStore: function (e, t, n) { var r = V, o = at(); if (Q) { if (n === void 0) throw Error(E(407)); n = n() } else { if (n = t(), le === null) throw Error(E(349)); pn & 30 || Bd(r, t, n) } o.memoizedState = n; var i = { value: n, getSnapshot: t }; return o.queue = i, wa(Wd.bind(null, r, i, e), [e]), r.flags |= 2048, Br(9, qd.bind(null, r, i, n, t), void 0, null), n }, useId: function () { var e = at(), t = le.identifierPrefix; if (Q) { var n = vt, r = mt; n = (r & ~(1 << 32 - ot(r) - 1)).toString(32) + n, t = ":" + t + "R" + n, n = Ur++, 0 < n && (t += "H" + n.toString(32)), t += ":" } else n = g0++, t = ":" + t + "r" + n.toString(32) + ":"; return e.memoizedState = t }, unstable_isNewReconciler: !1 }, w0 = { readContext: Ge, useCallback: Zd, useContext: Ge, useEffect: iu, useImperativeHandle: Jd, useInsertionEffect: Gd, useLayoutEffect: Yd, useMemo: ef, useReducer: us, useRef: Vd, useState: function () { return us(Hr) }, useDebugValue: su, useDeferredValue: function (e) { var t = Ye(); return tf(t, ee.memoizedState, e) }, useTransition: function () { var e = us(Hr)[0], t = Ye().memoizedState; return [e, t] }, useMutableSource: Ud, useSyncExternalStore: Hd, useId: nf, unstable_isNewReconciler: !1 }, k0 = { readContext: Ge, useCallback: Zd, useContext: Ge, useEffect: iu, useImperativeHandle: Jd, useInsertionEffect: Gd, useLayoutEffect: Yd, useMemo: ef, useReducer: as, useRef: Vd, useState: function () { return as(Hr) }, useDebugValue: su, useDeferredValue: function (e) { var t = Ye(); return ee === null ? t.memoizedState = e : tf(t, ee.memoizedState, e) }, useTransition: function () { var e = as(Hr)[0], t = Ye().memoizedState; return [e, t] }, useMutableSource: Ud, useSyncExternalStore: Hd, useId: nf, unstable_isNewReconciler: !1 }; function Vn(e, t) { + try { var n = "", r = t; do n += Gh(r), r = r.return; while (r); var o = n } catch (i) { + o = ` +Error generating stack: `+ i.message + ` +`+ i.stack + } return { value: e, source: t, stack: o, digest: null } +} function cs(e, t, n) { return { value: e, source: null, stack: n ?? null, digest: t ?? null } } function ol(e, t) { try { console.error(t.value) } catch (n) { setTimeout(function () { throw n }) } } var E0 = typeof WeakMap == "function" ? WeakMap : Map; function lf(e, t, n) { n = yt(-1, n), n.tag = 3, n.payload = { element: null }; var r = t.value; return n.callback = function () { si || (si = !0, pl = r), ol(e, t) }, n } function uf(e, t, n) { n = yt(-1, n), n.tag = 3; var r = e.type.getDerivedStateFromError; if (typeof r == "function") { var o = t.value; n.payload = function () { return r(o) }, n.callback = function () { ol(e, t) } } var i = e.stateNode; return i !== null && typeof i.componentDidCatch == "function" && (n.callback = function () { ol(e, t), typeof r != "function" && (Wt === null ? Wt = new Set([this]) : Wt.add(this)); var s = t.stack; this.componentDidCatch(t.value, { componentStack: s !== null ? s : "" }) }), n } function ka(e, t, n) { var r = e.pingCache; if (r === null) { r = e.pingCache = new E0; var o = new Set; r.set(t, o) } else o = r.get(t), o === void 0 && (o = new Set, r.set(t, o)); o.has(n) || (o.add(n), e = A0.bind(null, e, t, n), t.then(e, e)) } function Ea(e) { do { var t; if ((t = e.tag === 13) && (t = e.memoizedState, t = t !== null ? t.dehydrated !== null : !0), t) return e; e = e.return } while (e !== null); return null } function Ca(e, t, n, r, o) { return e.mode & 1 ? (e.flags |= 65536, e.lanes = o, e) : (e === t ? e.flags |= 65536 : (e.flags |= 128, n.flags |= 131072, n.flags &= -52805, n.tag === 1 && (n.alternate === null ? n.tag = 17 : (t = yt(-1, 1), t.tag = 2, qt(n, t, 1))), n.lanes |= 1), e) } var C0 = Ct.ReactCurrentOwner, xe = !1; function Se(e, t, n, r) { t.child = e === null ? $d(t, null, n, r) : Qn(t, e.child, n, r) } function xa(e, t, n, r, o) { n = n.render; var i = t.ref; return Un(t, o), r = ru(e, t, n, r, i, o), n = ou(), e !== null && !xe ? (t.updateQueue = e.updateQueue, t.flags &= -2053, e.lanes &= ~o, Et(e, t, o)) : (Q && n && Wl(t), t.flags |= 1, Se(e, t, r, o), t.child) } function _a(e, t, n, r, o) { if (e === null) { var i = n.type; return typeof i == "function" && !pu(i) && i.defaultProps === void 0 && n.compare === null && n.defaultProps === void 0 ? (t.tag = 15, t.type = i, af(e, t, i, r, o)) : (e = bo(n.type, null, r, t, t.mode, o), e.ref = t.ref, e.return = t, t.child = e) } if (i = e.child, !(e.lanes & o)) { var s = i.memoizedProps; if (n = n.compare, n = n !== null ? n : Rr, n(s, r) && e.ref === t.ref) return Et(e, t, o) } return t.flags |= 1, e = Kt(i, r), e.ref = t.ref, e.return = t, t.child = e } function af(e, t, n, r, o) { if (e !== null) { var i = e.memoizedProps; if (Rr(i, r) && e.ref === t.ref) if (xe = !1, t.pendingProps = r = i, (e.lanes & o) !== 0) e.flags & 131072 && (xe = !0); else return t.lanes = e.lanes, Et(e, t, o) } return il(e, t, n, r, o) } function cf(e, t, n) { var r = t.pendingProps, o = r.children, i = e !== null ? e.memoizedState : null; if (r.mode === "hidden") if (!(t.mode & 1)) t.memoizedState = { baseLanes: 0, cachePool: null, transitions: null }, H(An, Le), Le |= n; else { if (!(n & 1073741824)) return e = i !== null ? i.baseLanes | n : n, t.lanes = t.childLanes = 1073741824, t.memoizedState = { baseLanes: e, cachePool: null, transitions: null }, t.updateQueue = null, H(An, Le), Le |= e, null; t.memoizedState = { baseLanes: 0, cachePool: null, transitions: null }, r = i !== null ? i.baseLanes : n, H(An, Le), Le |= r } else i !== null ? (r = i.baseLanes | n, t.memoizedState = null) : r = n, H(An, Le), Le |= r; return Se(e, t, o, n), t.child } function df(e, t) { var n = t.ref; (e === null && n !== null || e !== null && e.ref !== n) && (t.flags |= 512, t.flags |= 2097152) } function il(e, t, n, r, o) { var i = Oe(n) ? fn : ve.current; return i = qn(t, i), Un(t, o), n = ru(e, t, n, r, i, o), r = ou(), e !== null && !xe ? (t.updateQueue = e.updateQueue, t.flags &= -2053, e.lanes &= ~o, Et(e, t, o)) : (Q && r && Wl(t), t.flags |= 1, Se(e, t, n, o), t.child) } function Oa(e, t, n, r, o) { if (Oe(n)) { var i = !0; Yo(t) } else i = !1; if (Un(t, o), t.stateNode === null) Mo(e, t), bd(t, n, r), rl(t, n, r, o), r = !0; else if (e === null) { var s = t.stateNode, l = t.memoizedProps; s.props = l; var u = s.context, a = n.contextType; typeof a == "object" && a !== null ? a = Ge(a) : (a = Oe(n) ? fn : ve.current, a = qn(t, a)); var h = n.getDerivedStateFromProps, m = typeof h == "function" || typeof s.getSnapshotBeforeUpdate == "function"; m || typeof s.UNSAFE_componentWillReceiveProps != "function" && typeof s.componentWillReceiveProps != "function" || (l !== r || u !== a) && va(t, s, r, a), Nt = !1; var d = t.memoizedState; s.state = d, ti(t, r, s, o), u = t.memoizedState, l !== r || d !== u || _e.current || Nt ? (typeof h == "function" && (nl(t, n, h, r), u = t.memoizedState), (l = Nt || ma(t, n, l, r, d, u, a)) ? (m || typeof s.UNSAFE_componentWillMount != "function" && typeof s.componentWillMount != "function" || (typeof s.componentWillMount == "function" && s.componentWillMount(), typeof s.UNSAFE_componentWillMount == "function" && s.UNSAFE_componentWillMount()), typeof s.componentDidMount == "function" && (t.flags |= 4194308)) : (typeof s.componentDidMount == "function" && (t.flags |= 4194308), t.memoizedProps = r, t.memoizedState = u), s.props = r, s.state = u, s.context = a, r = l) : (typeof s.componentDidMount == "function" && (t.flags |= 4194308), r = !1) } else { s = t.stateNode, Rd(e, t), l = t.memoizedProps, a = t.type === t.elementType ? l : tt(t.type, l), s.props = a, m = t.pendingProps, d = s.context, u = n.contextType, typeof u == "object" && u !== null ? u = Ge(u) : (u = Oe(n) ? fn : ve.current, u = qn(t, u)); var g = n.getDerivedStateFromProps; (h = typeof g == "function" || typeof s.getSnapshotBeforeUpdate == "function") || typeof s.UNSAFE_componentWillReceiveProps != "function" && typeof s.componentWillReceiveProps != "function" || (l !== m || d !== u) && va(t, s, r, u), Nt = !1, d = t.memoizedState, s.state = d, ti(t, r, s, o); var v = t.memoizedState; l !== m || d !== v || _e.current || Nt ? (typeof g == "function" && (nl(t, n, g, r), v = t.memoizedState), (a = Nt || ma(t, n, a, r, d, v, u) || !1) ? (h || typeof s.UNSAFE_componentWillUpdate != "function" && typeof s.componentWillUpdate != "function" || (typeof s.componentWillUpdate == "function" && s.componentWillUpdate(r, v, u), typeof s.UNSAFE_componentWillUpdate == "function" && s.UNSAFE_componentWillUpdate(r, v, u)), typeof s.componentDidUpdate == "function" && (t.flags |= 4), typeof s.getSnapshotBeforeUpdate == "function" && (t.flags |= 1024)) : (typeof s.componentDidUpdate != "function" || l === e.memoizedProps && d === e.memoizedState || (t.flags |= 4), typeof s.getSnapshotBeforeUpdate != "function" || l === e.memoizedProps && d === e.memoizedState || (t.flags |= 1024), t.memoizedProps = r, t.memoizedState = v), s.props = r, s.state = v, s.context = u, r = a) : (typeof s.componentDidUpdate != "function" || l === e.memoizedProps && d === e.memoizedState || (t.flags |= 4), typeof s.getSnapshotBeforeUpdate != "function" || l === e.memoizedProps && d === e.memoizedState || (t.flags |= 1024), r = !1) } return sl(e, t, n, r, i, o) } function sl(e, t, n, r, o, i) { df(e, t); var s = (t.flags & 128) !== 0; if (!r && !s) return o && da(t, n, !1), Et(e, t, i); r = t.stateNode, C0.current = t; var l = s && typeof n.getDerivedStateFromError != "function" ? null : r.render(); return t.flags |= 1, e !== null && s ? (t.child = Qn(t, e.child, null, i), t.child = Qn(t, null, l, i)) : Se(e, t, l, i), t.memoizedState = r.state, o && da(t, n, !0), t.child } function ff(e) { var t = e.stateNode; t.pendingContext ? ca(e, t.pendingContext, t.pendingContext !== t.context) : t.context && ca(e, t.context, !1), Zl(e, t.containerInfo) } function Ta(e, t, n, r, o) { return Wn(), Kl(o), t.flags |= 256, Se(e, t, n, r), t.child } var ll = { dehydrated: null, treeContext: null, retryLane: 0 }; function ul(e) { return { baseLanes: e, cachePool: null, transitions: null } } function hf(e, t, n) { var r = t.pendingProps, o = K.current, i = !1, s = (t.flags & 128) !== 0, l; if ((l = s) || (l = e !== null && e.memoizedState === null ? !1 : (o & 2) !== 0), l ? (i = !0, t.flags &= -129) : (e === null || e.memoizedState !== null) && (o |= 1), H(K, o & 1), e === null) return el(t), e = t.memoizedState, e !== null && (e = e.dehydrated, e !== null) ? (t.mode & 1 ? e.data === "$!" ? t.lanes = 8 : t.lanes = 1073741824 : t.lanes = 1, null) : (s = r.children, e = r.fallback, i ? (r = t.mode, i = t.child, s = { mode: "hidden", children: s }, !(r & 1) && i !== null ? (i.childLanes = 0, i.pendingProps = s) : i = Ei(s, r, 0, null), e = cn(e, r, n, null), i.return = t, e.return = t, i.sibling = e, t.child = i, t.child.memoizedState = ul(n), t.memoizedState = ll, e) : lu(t, s)); if (o = e.memoizedState, o !== null && (l = o.dehydrated, l !== null)) return x0(e, t, s, r, l, o, n); if (i) { i = r.fallback, s = t.mode, o = e.child, l = o.sibling; var u = { mode: "hidden", children: r.children }; return !(s & 1) && t.child !== o ? (r = t.child, r.childLanes = 0, r.pendingProps = u, t.deletions = null) : (r = Kt(o, u), r.subtreeFlags = o.subtreeFlags & 14680064), l !== null ? i = Kt(l, i) : (i = cn(i, s, n, null), i.flags |= 2), i.return = t, r.return = t, r.sibling = i, t.child = r, r = i, i = t.child, s = e.child.memoizedState, s = s === null ? ul(n) : { baseLanes: s.baseLanes | n, cachePool: null, transitions: s.transitions }, i.memoizedState = s, i.childLanes = e.childLanes & ~n, t.memoizedState = ll, r } return i = e.child, e = i.sibling, r = Kt(i, { mode: "visible", children: r.children }), !(t.mode & 1) && (r.lanes = n), r.return = t, r.sibling = null, e !== null && (n = t.deletions, n === null ? (t.deletions = [e], t.flags |= 16) : n.push(e)), t.child = r, t.memoizedState = null, r } function lu(e, t) { return t = Ei({ mode: "visible", children: t }, e.mode, 0, null), t.return = e, e.child = t } function yo(e, t, n, r) { return r !== null && Kl(r), Qn(t, e.child, null, n), e = lu(t, t.pendingProps.children), e.flags |= 2, t.memoizedState = null, e } function x0(e, t, n, r, o, i, s) { if (n) return t.flags & 256 ? (t.flags &= -257, r = cs(Error(E(422))), yo(e, t, s, r)) : t.memoizedState !== null ? (t.child = e.child, t.flags |= 128, null) : (i = r.fallback, o = t.mode, r = Ei({ mode: "visible", children: r.children }, o, 0, null), i = cn(i, o, s, null), i.flags |= 2, r.return = t, i.return = t, r.sibling = i, t.child = r, t.mode & 1 && Qn(t, e.child, null, s), t.child.memoizedState = ul(s), t.memoizedState = ll, i); if (!(t.mode & 1)) return yo(e, t, s, null); if (o.data === "$!") { if (r = o.nextSibling && o.nextSibling.dataset, r) var l = r.dgst; return r = l, i = Error(E(419)), r = cs(i, r, void 0), yo(e, t, s, r) } if (l = (s & e.childLanes) !== 0, xe || l) { if (r = le, r !== null) { switch (s & -s) { case 4: o = 2; break; case 16: o = 8; break; case 64: case 128: case 256: case 512: case 1024: case 2048: case 4096: case 8192: case 16384: case 32768: case 65536: case 131072: case 262144: case 524288: case 1048576: case 2097152: case 4194304: case 8388608: case 16777216: case 33554432: case 67108864: o = 32; break; case 536870912: o = 268435456; break; default: o = 0 }o = o & (r.suspendedLanes | s) ? 0 : o, o !== 0 && o !== i.retryLane && (i.retryLane = o, kt(e, o), it(r, e, o, -1)) } return hu(), r = cs(Error(E(421))), yo(e, t, s, r) } return o.data === "$?" ? (t.flags |= 128, t.child = e.child, t = b0.bind(null, e), o._reactRetry = t, null) : (e = i.treeContext, Ne = Bt(o.nextSibling), Me = t, Q = !0, rt = null, e !== null && (qe[We++] = mt, qe[We++] = vt, qe[We++] = hn, mt = e.id, vt = e.overflow, hn = t), t = lu(t, r.children), t.flags |= 4096, t) } function Da(e, t, n) { e.lanes |= t; var r = e.alternate; r !== null && (r.lanes |= t), tl(e.return, t, n) } function ds(e, t, n, r, o) { var i = e.memoizedState; i === null ? e.memoizedState = { isBackwards: t, rendering: null, renderingStartTime: 0, last: r, tail: n, tailMode: o } : (i.isBackwards = t, i.rendering = null, i.renderingStartTime = 0, i.last = r, i.tail = n, i.tailMode = o) } function pf(e, t, n) { var r = t.pendingProps, o = r.revealOrder, i = r.tail; if (Se(e, t, r.children, n), r = K.current, r & 2) r = r & 1 | 2, t.flags |= 128; else { if (e !== null && e.flags & 128) e: for (e = t.child; e !== null;) { if (e.tag === 13) e.memoizedState !== null && Da(e, n, t); else if (e.tag === 19) Da(e, n, t); else if (e.child !== null) { e.child.return = e, e = e.child; continue } if (e === t) break e; for (; e.sibling === null;) { if (e.return === null || e.return === t) break e; e = e.return } e.sibling.return = e.return, e = e.sibling } r &= 1 } if (H(K, r), !(t.mode & 1)) t.memoizedState = null; else switch (o) { case "forwards": for (n = t.child, o = null; n !== null;)e = n.alternate, e !== null && ni(e) === null && (o = n), n = n.sibling; n = o, n === null ? (o = t.child, t.child = null) : (o = n.sibling, n.sibling = null), ds(t, !1, o, n, i); break; case "backwards": for (n = null, o = t.child, t.child = null; o !== null;) { if (e = o.alternate, e !== null && ni(e) === null) { t.child = o; break } e = o.sibling, o.sibling = n, n = o, o = e } ds(t, !0, n, null, i); break; case "together": ds(t, !1, null, null, void 0); break; default: t.memoizedState = null }return t.child } function Mo(e, t) { !(t.mode & 1) && e !== null && (e.alternate = null, t.alternate = null, t.flags |= 2) } function Et(e, t, n) { if (e !== null && (t.dependencies = e.dependencies), gn |= t.lanes, !(n & t.childLanes)) return null; if (e !== null && t.child !== e.child) throw Error(E(153)); if (t.child !== null) { for (e = t.child, n = Kt(e, e.pendingProps), t.child = n, n.return = t; e.sibling !== null;)e = e.sibling, n = n.sibling = Kt(e, e.pendingProps), n.return = t; n.sibling = null } return t.child } function _0(e, t, n) { switch (t.tag) { case 3: ff(t), Wn(); break; case 5: Fd(t); break; case 1: Oe(t.type) && Yo(t); break; case 4: Zl(t, t.stateNode.containerInfo); break; case 10: var r = t.type._context, o = t.memoizedProps.value; H(Zo, r._currentValue), r._currentValue = o; break; case 13: if (r = t.memoizedState, r !== null) return r.dehydrated !== null ? (H(K, K.current & 1), t.flags |= 128, null) : n & t.child.childLanes ? hf(e, t, n) : (H(K, K.current & 1), e = Et(e, t, n), e !== null ? e.sibling : null); H(K, K.current & 1); break; case 19: if (r = (n & t.childLanes) !== 0, e.flags & 128) { if (r) return pf(e, t, n); t.flags |= 128 } if (o = t.memoizedState, o !== null && (o.rendering = null, o.tail = null, o.lastEffect = null), H(K, K.current), r) break; return null; case 22: case 23: return t.lanes = 0, cf(e, t, n) }return Et(e, t, n) } var gf, al, mf, vf; gf = function (e, t) { for (var n = t.child; n !== null;) { if (n.tag === 5 || n.tag === 6) e.appendChild(n.stateNode); else if (n.tag !== 4 && n.child !== null) { n.child.return = n, n = n.child; continue } if (n === t) break; for (; n.sibling === null;) { if (n.return === null || n.return === t) return; n = n.return } n.sibling.return = n.return, n = n.sibling } }; al = function () { }; mf = function (e, t, n, r) { var o = e.memoizedProps; if (o !== r) { e = t.stateNode, un(ft.current); var i = null; switch (n) { case "input": o = js(e, o), r = js(e, r), i = []; break; case "select": o = G({}, o, { value: void 0 }), r = G({}, r, { value: void 0 }), i = []; break; case "textarea": o = Ms(e, o), r = Ms(e, r), i = []; break; default: typeof o.onClick != "function" && typeof r.onClick == "function" && (e.onclick = Vo) }As(n, r); var s; n = null; for (a in o) if (!r.hasOwnProperty(a) && o.hasOwnProperty(a) && o[a] != null) if (a === "style") { var l = o[a]; for (s in l) l.hasOwnProperty(s) && (n || (n = {}), n[s] = "") } else a !== "dangerouslySetInnerHTML" && a !== "children" && a !== "suppressContentEditableWarning" && a !== "suppressHydrationWarning" && a !== "autoFocus" && (Dr.hasOwnProperty(a) ? i || (i = []) : (i = i || []).push(a, null)); for (a in r) { var u = r[a]; if (l = o != null ? o[a] : void 0, r.hasOwnProperty(a) && u !== l && (u != null || l != null)) if (a === "style") if (l) { for (s in l) !l.hasOwnProperty(s) || u && u.hasOwnProperty(s) || (n || (n = {}), n[s] = ""); for (s in u) u.hasOwnProperty(s) && l[s] !== u[s] && (n || (n = {}), n[s] = u[s]) } else n || (i || (i = []), i.push(a, n)), n = u; else a === "dangerouslySetInnerHTML" ? (u = u ? u.__html : void 0, l = l ? l.__html : void 0, u != null && l !== u && (i = i || []).push(a, u)) : a === "children" ? typeof u != "string" && typeof u != "number" || (i = i || []).push(a, "" + u) : a !== "suppressContentEditableWarning" && a !== "suppressHydrationWarning" && (Dr.hasOwnProperty(a) ? (u != null && a === "onScroll" && q("scroll", e), i || l === u || (i = [])) : (i = i || []).push(a, u)) } n && (i = i || []).push("style", n); var a = i; (t.updateQueue = a) && (t.flags |= 4) } }; vf = function (e, t, n, r) { n !== r && (t.flags |= 4) }; function lr(e, t) { if (!Q) switch (e.tailMode) { case "hidden": t = e.tail; for (var n = null; t !== null;)t.alternate !== null && (n = t), t = t.sibling; n === null ? e.tail = null : n.sibling = null; break; case "collapsed": n = e.tail; for (var r = null; n !== null;)n.alternate !== null && (r = n), n = n.sibling; r === null ? t || e.tail === null ? e.tail = null : e.tail.sibling = null : r.sibling = null } } function pe(e) { var t = e.alternate !== null && e.alternate.child === e.child, n = 0, r = 0; if (t) for (var o = e.child; o !== null;)n |= o.lanes | o.childLanes, r |= o.subtreeFlags & 14680064, r |= o.flags & 14680064, o.return = e, o = o.sibling; else for (o = e.child; o !== null;)n |= o.lanes | o.childLanes, r |= o.subtreeFlags, r |= o.flags, o.return = e, o = o.sibling; return e.subtreeFlags |= r, e.childLanes = n, t } function O0(e, t, n) { var r = t.pendingProps; switch (Ql(t), t.tag) { case 2: case 16: case 15: case 0: case 11: case 7: case 8: case 12: case 9: case 14: return pe(t), null; case 1: return Oe(t.type) && Go(), pe(t), null; case 3: return r = t.stateNode, Kn(), W(_e), W(ve), tu(), r.pendingContext && (r.context = r.pendingContext, r.pendingContext = null), (e === null || e.child === null) && (mo(t) ? t.flags |= 4 : e === null || e.memoizedState.isDehydrated && !(t.flags & 256) || (t.flags |= 1024, rt !== null && (vl(rt), rt = null))), al(e, t), pe(t), null; case 5: eu(t); var o = un(Fr.current); if (n = t.type, e !== null && t.stateNode != null) mf(e, t, n, r, o), e.ref !== t.ref && (t.flags |= 512, t.flags |= 2097152); else { if (!r) { if (t.stateNode === null) throw Error(E(166)); return pe(t), null } if (e = un(ft.current), mo(t)) { r = t.stateNode, n = t.type; var i = t.memoizedProps; switch (r[ct] = t, r[zr] = i, e = (t.mode & 1) !== 0, n) { case "dialog": q("cancel", r), q("close", r); break; case "iframe": case "object": case "embed": q("load", r); break; case "video": case "audio": for (o = 0; o < gr.length; o++)q(gr[o], r); break; case "source": q("error", r); break; case "img": case "image": case "link": q("error", r), q("load", r); break; case "details": q("toggle", r); break; case "input": bu(r, i), q("invalid", r); break; case "select": r._wrapperState = { wasMultiple: !!i.multiple }, q("invalid", r); break; case "textarea": $u(r, i), q("invalid", r) }As(n, i), o = null; for (var s in i) if (i.hasOwnProperty(s)) { var l = i[s]; s === "children" ? typeof l == "string" ? r.textContent !== l && (i.suppressHydrationWarning !== !0 && go(r.textContent, l, e), o = ["children", l]) : typeof l == "number" && r.textContent !== "" + l && (i.suppressHydrationWarning !== !0 && go(r.textContent, l, e), o = ["children", "" + l]) : Dr.hasOwnProperty(s) && l != null && s === "onScroll" && q("scroll", r) } switch (n) { case "input": so(r), zu(r, i, !0); break; case "textarea": so(r), Fu(r); break; case "select": case "option": break; default: typeof i.onClick == "function" && (r.onclick = Vo) }r = o, t.updateQueue = r, r !== null && (t.flags |= 4) } else { s = o.nodeType === 9 ? o : o.ownerDocument, e === "http://www.w3.org/1999/xhtml" && (e = Bc(n)), e === "http://www.w3.org/1999/xhtml" ? n === "script" ? (e = s.createElement("div"), e.innerHTML = " - - - - - Chess - - - - -
- - - + + + + + + + + + Chess + + + + + +
+ + + + \ No newline at end of file diff --git a/modules/homepage/homepage/Cargo.toml b/modules/homepage/homepage/Cargo.toml index 3abb71b6..b244e785 100644 --- a/modules/homepage/homepage/Cargo.toml +++ b/modules/homepage/homepage/Cargo.toml @@ -15,11 +15,11 @@ anyhow = "1.0" bincode = "1.3.3" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -uqbar_process_lib = { git = "ssh://git@github.com/uqbar-dao/process_lib.git", rev = "e72a791" } +nectar_process_lib = { git = "ssh://git@github.com/uqbar-dao/process_lib.git", rev = "6520b95" } wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "efcc759" } [lib] crate-type = ["cdylib"] [package.metadata.component] -package = "uqbar:process" +package = "nectar:process" diff --git a/modules/homepage/homepage/src/home.html b/modules/homepage/homepage/src/home.html index fa7be274..6638652d 100644 --- a/modules/homepage/homepage/src/home.html +++ b/modules/homepage/homepage/src/home.html @@ -1,255 +1,267 @@ - - ${our} - Home - - - - - - - - -
-
- -

Uqbar

-
-

Welcome ${our}!

+ a { + color: white; + margin-bottom: 2em; + } -

Apps:

- - Chess + a:visited { + color: white; + } + + + + +
+
+ +

Nectar

- - + - - + // setTimeout(() => { + // webSocket.send(JSON.stringify({ + // Action: { + // auth_token: getCookie(`nectar-ws-auth_${window.our}`), + // target: { + // node: window.our, + // process: 'homepage' + // }, + // channel_id: 'homepage', + // json: { + // action: 'ping' + // // You could add a unique ID here so that the server can respond to only this ID + // } + // } + // })) + // }, 1000) + // } + // webSocket.onmessage = (message) => { + // console.log('GOT WS MESSAGE: ', message) + // } + }) + + + + \ No newline at end of file diff --git a/modules/homepage/homepage/src/lib.rs b/modules/homepage/homepage/src/lib.rs index 490bbbef..14755c47 100644 --- a/modules/homepage/homepage/src/lib.rs +++ b/modules/homepage/homepage/src/lib.rs @@ -1,7 +1,7 @@ #![feature(let_chains)] -use uqbar_process_lib::{ - await_message, http::bind_http_static_path, http::HttpServerError, println, - Address, Message, ProcessId, +use nectar_process_lib::{ + await_message, http::bind_http_static_path, http::HttpServerError, println, Address, Message, + ProcessId, }; wit_bindgen::generate!({ @@ -66,7 +66,7 @@ fn main(our: Address) -> anyhow::Result<()> { continue; }; if let Message::Response { source, ipc, .. } = message - && source.process == "http_server:sys:uqbar" + && source.process == "http_server:sys:nectar" { match serde_json::from_slice::>(&ipc) { Ok(Ok(())) => continue, diff --git a/modules/homepage/pkg/manifest.json b/modules/homepage/pkg/manifest.json index 76ee4900..5534220d 100644 --- a/modules/homepage/pkg/manifest.json +++ b/modules/homepage/pkg/manifest.json @@ -5,10 +5,10 @@ "on_exit": "Restart", "request_networking": false, "request_capabilities": [ - "http_server:sys:uqbar" + "http_server:sys:nectar" ], "grant_capabilities": [ - "http_server:sys:uqbar" + "http_server:sys:nectar" ], "public": false } diff --git a/modules/homepage/pkg/metadata.json b/modules/homepage/pkg/metadata.json index 5f440264..12b3abfd 100644 --- a/modules/homepage/pkg/metadata.json +++ b/modules/homepage/pkg/metadata.json @@ -1,5 +1,9 @@ { "package": "homepage", - "publisher": "uqbar", - "version": [0, 1, 0] -} + "publisher": "nectar", + "version": [ + 0, + 1, + 0 + ] +} \ No newline at end of file diff --git a/modules/qns_indexer/pkg/manifest.json b/modules/qns_indexer/pkg/manifest.json index 4de3830e..cbcb523f 100644 --- a/modules/qns_indexer/pkg/manifest.json +++ b/modules/qns_indexer/pkg/manifest.json @@ -5,10 +5,10 @@ "on_exit": "Restart", "request_networking": true, "request_capabilities": [ - "net:sys:uqbar", - "http_server:sys:uqbar", - "eth:sys:uqbar" + "net:sys:nectar", + "http_server:sys:nectar", + "eth:sys:nectar" ], "public": true } -] +] \ No newline at end of file diff --git a/modules/qns_indexer/pkg/metadata.json b/modules/qns_indexer/pkg/metadata.json index 1a50d51f..2432c229 100644 --- a/modules/qns_indexer/pkg/metadata.json +++ b/modules/qns_indexer/pkg/metadata.json @@ -1,5 +1,9 @@ { "package": "qns_indexer", - "publisher": "uqbar", - "version": [0, 1, 0] -} + "publisher": "nectar", + "version": [ + 0, + 1, + 0 + ] +} \ No newline at end of file diff --git a/modules/qns_indexer/qns_indexer/Cargo.toml b/modules/qns_indexer/qns_indexer/Cargo.toml index 2b8af68f..9803c5dd 100644 --- a/modules/qns_indexer/qns_indexer/Cargo.toml +++ b/modules/qns_indexer/qns_indexer/Cargo.toml @@ -20,11 +20,11 @@ hex = "0.4.3" rmp-serde = "1.1.2" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -uqbar_process_lib = { git = "ssh://git@github.com/uqbar-dao/process_lib.git", rev = "6228e0f", features = ["eth"] } +nectar_process_lib = { git = "ssh://git@github.com/uqbar-dao/process_lib.git", rev = "6228e0f", features = ["eth"] } wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "efcc759" } [lib] crate-type = ["cdylib"] [package.metadata.component] -package = "uqbar:process" +package = "nectar:process" diff --git a/modules/qns_indexer/qns_indexer/src/lib.rs b/modules/qns_indexer/qns_indexer/src/lib.rs index d4a1ce4f..a39d9a28 100644 --- a/modules/qns_indexer/qns_indexer/src/lib.rs +++ b/modules/qns_indexer/qns_indexer/src/lib.rs @@ -1,15 +1,15 @@ use alloy_primitives::B256; use alloy_rpc_types::Log; use alloy_sol_types::{sol, SolEvent}; +use nectar_process_lib::eth::{EthAddress, SubscribeLogsRequest}; +use nectar_process_lib::{ + await_message, get_typed_state, http, print_to_terminal, println, set_state, Address, Message, + Payload, Request, Response, +}; use serde::{Deserialize, Serialize}; use std::collections::hash_map::{Entry, HashMap}; use std::str::FromStr; use std::string::FromUtf8Error; -use uqbar_process_lib::eth::{EthAddress, SubscribeLogsRequest}; -use uqbar_process_lib::{ - await_message, get_typed_state, http, print_to_terminal, println, set_state, Address, Message, - Payload, Request, Response, -}; wit_bindgen::generate!({ path: "../../../wit", @@ -112,7 +112,7 @@ impl Guest for Component { fn main(our: Address, mut state: State) -> anyhow::Result<()> { // shove all state into net::net Request::new() - .target((&our.node, "net", "sys", "uqbar")) + .target((&our.node, "net", "sys", "nectar")) .try_ipc(NetActions::QnsBatchUpdate( state.nodes.values().cloned().collect::>(), ))? @@ -145,7 +145,7 @@ fn main(our: Address, mut state: State) -> anyhow::Result<()> { continue; }; - if source.process == "http_server:sys:uqbar" { + if source.process == "http_server:sys:nectar" { if let Ok(ipc_json) = serde_json::from_slice::(&ipc) { if ipc_json["path"].as_str().unwrap_or_default() == "/node/:name" { if let Some(name) = ipc_json["url_params"]["name"].as_str() { @@ -239,7 +239,7 @@ fn main(our: Address, mut state: State) -> anyhow::Result<()> { if send { print_to_terminal(1, &format!("qns_indexer: sending ID to net: {:?}", node)); Request::new() - .target((&our.node, "net", "sys", "uqbar")) + .target((&our.node, "net", "sys", "nectar")) .try_ipc(NetActions::QnsUpdate(node.clone()))? .send()?; } diff --git a/modules/terminal/pkg/manifest.json b/modules/terminal/pkg/manifest.json index f646fe74..d90e9056 100644 --- a/modules/terminal/pkg/manifest.json +++ b/modules/terminal/pkg/manifest.json @@ -5,10 +5,10 @@ "on_exit": "Restart", "request_networking": true, "request_capabilities": [ - "net:sys:uqbar", - "http_client:sys:uqbar", - "kernel:sys:uqbar" + "net:sys:nectar", + "http_client:sys:nectar", + "kernel:sys:nectar" ], "public": true } -] +] \ No newline at end of file diff --git a/modules/terminal/pkg/metadata.json b/modules/terminal/pkg/metadata.json index 5d8539c8..e7181d7d 100644 --- a/modules/terminal/pkg/metadata.json +++ b/modules/terminal/pkg/metadata.json @@ -1,5 +1,9 @@ { "package": "terminal", - "publisher": "uqbar", - "version": [0, 1, 0] -} + "publisher": "nectar", + "version": [ + 0, + 1, + 0 + ] +} \ No newline at end of file diff --git a/modules/terminal/terminal/Cargo.toml b/modules/terminal/terminal/Cargo.toml index ba430dc1..60d7c445 100644 --- a/modules/terminal/terminal/Cargo.toml +++ b/modules/terminal/terminal/Cargo.toml @@ -15,11 +15,11 @@ anyhow = "1.0" bincode = "1.3.3" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -uqbar_process_lib = { git = "ssh://git@github.com/uqbar-dao/process_lib.git", rev = "e72a791" } +nectar_process_lib = { git = "ssh://git@github.com/uqbar-dao/process_lib.git", rev = "6520b95" } wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "efcc759" } [lib] crate-type = ["cdylib"] [package.metadata.component] -package = "uqbar:process" +package = "nectar:process" diff --git a/modules/terminal/terminal/src/lib.rs b/modules/terminal/terminal/src/lib.rs index c4645a94..793ae1d3 100644 --- a/modules/terminal/terminal/src/lib.rs +++ b/modules/terminal/terminal/src/lib.rs @@ -1,6 +1,6 @@ use anyhow::anyhow; -use uqbar_process_lib::uqbar::process::standard as wit; -use uqbar_process_lib::{println, Address, Request}; +use nectar_process_lib::nectar::process::standard as wit; +use nectar_process_lib::{println, Address, Request}; wit_bindgen::generate!({ path: "../../../wit", @@ -29,9 +29,13 @@ fn parse_command(state: &mut TerminalState, line: &str) -> anyhow::Result<()> { Some((s, t)) => (s, t), None => return Err(anyhow!("invalid command: \"{line}\"")), }; - let node_id = if node_id == "our" { &state.our.node } else { node_id }; + let node_id = if node_id == "our" { + &state.our.node + } else { + node_id + }; Request::new() - .target((node_id, "net", "sys", "uqbar")) + .target((node_id, "net", "sys", "nectar")) .ipc(message) .expects_response(5) .send()?; @@ -56,10 +60,7 @@ fn parse_command(state: &mut TerminalState, line: &str) -> anyhow::Result<()> { // otherwise use the current_target "/m" | "/message" => { if let Some(target) = &state.current_target { - Request::new() - .target(target.clone()) - .ipc(tail) - .send() + Request::new().target(target.clone()).ipc(tail).send() } else { let (target, ipc) = match tail.split_once(" ") { Some((a, p)) => (a, p), @@ -68,10 +69,7 @@ fn parse_command(state: &mut TerminalState, line: &str) -> anyhow::Result<()> { let Ok(target) = Address::from_str(target) else { return Err(anyhow!("invalid address: \"{target}\"")); }; - Request::new() - .target(target) - .ipc(ipc) - .send() + Request::new().target(target).ipc(ipc).send() } } _ => return Err(anyhow!("invalid command: \"{line}\"")), @@ -94,10 +92,7 @@ impl Guest for Component { } }; match message { - wit::Message::Request(wit::Request { - ipc, - .. - }) => { + wit::Message::Request(wit::Request { ipc, .. }) => { if state.our.node != source.node || state.our.process != source.process { continue; } diff --git a/modules/tester/pkg/manifest.json b/modules/tester/pkg/manifest.json index 59254970..c34704dc 100644 --- a/modules/tester/pkg/manifest.json +++ b/modules/tester/pkg/manifest.json @@ -5,11 +5,11 @@ "on_exit": "Restart", "request_networking": true, "request_capabilities": [ - "net:sys:uqbar", - "kernel:sys:uqbar" + "net:sys:nectar", + "kernel:sys:nectar" ], "grant_capabilities": [ - "vfs:sys:uqbar" + "vfs:sys:nectar" ], "public": true } diff --git a/modules/tester/pkg/metadata.json b/modules/tester/pkg/metadata.json index 1b5b73d5..d49e7e22 100644 --- a/modules/tester/pkg/metadata.json +++ b/modules/tester/pkg/metadata.json @@ -1,5 +1,9 @@ { "package": "tester", - "publisher": "uqbar", - "version": [0, 1, 0] -} + "publisher": "nectar", + "version": [ + 0, + 1, + 0 + ] +} \ No newline at end of file diff --git a/modules/tester/test_runner/Cargo.toml b/modules/tester/test_runner/Cargo.toml index 023dcc6e..c44bd44d 100644 --- a/modules/tester/test_runner/Cargo.toml +++ b/modules/tester/test_runner/Cargo.toml @@ -16,11 +16,11 @@ bincode = "1.3.3" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" thiserror = "1.0" -uqbar_process_lib = { git = "ssh://git@github.com/uqbar-dao/process_lib.git", rev = "e72a791" } +nectar_process_lib = { git = "ssh://git@github.com/uqbar-dao/process_lib.git", rev = "6520b95" } wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "efcc759" } [lib] crate-type = ["cdylib"] [package.metadata.component] -package = "uqbar:process" +package = "nectar:process" diff --git a/modules/tester/test_runner/src/lib.rs b/modules/tester/test_runner/src/lib.rs index 2519c8e5..b3f1099d 100644 --- a/modules/tester/test_runner/src/lib.rs +++ b/modules/tester/test_runner/src/lib.rs @@ -1,9 +1,9 @@ use serde::{Deserialize, Serialize}; use std::collections::{HashMap, HashSet}; -use uqbar_process_lib::kernel_types as kt; -use uqbar_process_lib::uqbar::process::standard as wit; -use uqbar_process_lib::{ +use nectar_process_lib::kernel_types as kt; +use nectar_process_lib::nectar::process::standard as wit; +use nectar_process_lib::{ our_capabilities, spawn, vfs, Address, Message, OnExit, ProcessId, Request, Response, }; @@ -21,7 +21,7 @@ wit_bindgen::generate!({ fn make_vfs_address(our: &wit::Address) -> anyhow::Result
{ Ok(wit::Address { node: our.node.clone(), - process: ProcessId::from_str("vfs:sys:uqbar")?, + process: ProcessId::from_str("vfs:sys:nectar")?, }) } @@ -44,7 +44,7 @@ fn handle_message(our: &Address) -> anyhow::Result<()> { let response = Request::new() .target(make_vfs_address(&our)?) .ipc(serde_json::to_vec(&vfs::VfsRequest { - path: "/tester:uqbar/tests".into(), + path: "/tester:nectar/tests".into(), action: vfs::VfsAction::ReadDir, })?) .send_and_await_response(test_timeout)? diff --git a/modules/tester/tester/Cargo.toml b/modules/tester/tester/Cargo.toml index f990cdbc..6e9ebda0 100644 --- a/modules/tester/tester/Cargo.toml +++ b/modules/tester/tester/Cargo.toml @@ -17,11 +17,11 @@ indexmap = "2.1" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" thiserror = "1.0" -uqbar_process_lib = { git = "ssh://git@github.com/uqbar-dao/process_lib.git", rev = "e72a791" } +nectar_process_lib = { git = "ssh://git@github.com/uqbar-dao/process_lib.git", rev = "6520b95" } wit-bindgen = { git = "https://github.com/bytecodealliance/wit-bindgen", rev = "efcc759" } [lib] crate-type = ["cdylib"] [package.metadata.component] -package = "uqbar:process" +package = "nectar:process" diff --git a/modules/tester/tester/src/lib.rs b/modules/tester/tester/src/lib.rs index d993df3c..a734107c 100644 --- a/modules/tester/tester/src/lib.rs +++ b/modules/tester/tester/src/lib.rs @@ -1,7 +1,7 @@ use indexmap::map::IndexMap; -use uqbar_process_lib::kernel_types as kt; -use uqbar_process_lib::{ +use nectar_process_lib::kernel_types as kt; +use nectar_process_lib::{ await_message, call_init, our_capabilities, println, spawn, vfs, Address, Capability, Message, OnExit, ProcessId, Request, Response, }; @@ -22,7 +22,7 @@ type Messages = IndexMap; fn make_vfs_address(our: &Address) -> anyhow::Result
{ Ok(Address { node: our.node.clone(), - process: ProcessId::from_str("vfs:sys:uqbar")?, + process: ProcessId::from_str("vfs:sys:nectar")?, }) } @@ -40,7 +40,7 @@ fn handle_message( match serde_json::from_slice(&ipc)? { tt::TesterResponse::Pass | tt::TesterResponse::Fail { .. } => { if (source.process.package_name != "tester") - | (source.process.publisher_node != "uqbar") + | (source.process.publisher_node != "nectar") { return Err(tt::TesterError::UnexpectedResponse.into()); } @@ -70,13 +70,13 @@ fn handle_message( .unwrap(); } else { // we are master node - let child = "/tester:uqbar/pkg/test_runner.wasm"; + let child = "/tester:nectar/pkg/test_runner.wasm"; let child_process_id = match spawn( None, child, OnExit::None, // TODO: notify us our_capabilities(), - vec![ProcessId::from_str("vfs:sys:uqbar").unwrap()], + vec![ProcessId::from_str("vfs:sys:nectar").unwrap()], false, // not public ) { Ok(child_process_id) => child_process_id, @@ -114,7 +114,7 @@ fn init(our: Address) { .target(make_vfs_address(&our).unwrap()) .ipc( serde_json::to_vec(&vfs::VfsRequest { - path: "/tester:uqbar/tests".into(), + path: "/tester:nectar/tests".into(), action: vfs::VfsAction::CreateDrive, }) .unwrap(), @@ -123,18 +123,18 @@ fn init(our: Address) { .unwrap() .unwrap(); let _ = Request::new() - .target(("our", "kernel", "sys", "uqbar")) + .target(("our", "kernel", "sys", "nectar")) .ipc( serde_json::to_vec(&kt::KernelCommand::GrantCapabilities { - target: ProcessId::new(Some("http_server"), "sys", "uqbar"), + target: ProcessId::new(Some("http_server"), "sys", "nectar"), capabilities: vec![kt::Capability { issuer: Address::new( our.node.clone(), - ProcessId::new(Some("vfs"), "sys", "uqbar"), + ProcessId::new(Some("vfs"), "sys", "nectar"), ), params: serde_json::json!({ "kind": "write", - "drive": "/tester:uqbar/tests", + "drive": "/tester:nectar/tests", }) .to_string(), }], @@ -150,7 +150,7 @@ fn init(our: Address) { .target(make_vfs_address(&our).unwrap()) .ipc( serde_json::to_vec(&vfs::VfsRequest { - path: "/tester:uqbar/tests".into(), + path: "/tester:nectar/tests".into(), action: vfs::VfsAction::CreateDrive, }) .unwrap(), diff --git a/modules/tester/tester_types.rs b/modules/tester/tester_types.rs index 6e42af60..882a19f8 100644 --- a/modules/tester/tester_types.rs +++ b/modules/tester/tester_types.rs @@ -1,9 +1,9 @@ use serde::{Deserialize, Serialize}; use std::collections::HashMap; -use uqbar_process_lib::kernel_types as kt; -use uqbar_process_lib::{Address, Response}; -// use uqbar_process_lib::uqbar::process::standard as wit; +use nectar_process_lib::kernel_types as kt; +use nectar_process_lib::{Address, Response}; +// use nectar_process_lib::nectar::process::standard as wit; type Rsvp = Option
; diff --git a/src/http/client.rs b/src/http/client.rs index 1f7b4f52..61b97f1d 100644 --- a/src/http/client.rs +++ b/src/http/client.rs @@ -207,7 +207,7 @@ async fn connect_websocket( id, source: Address { node: our.to_string(), - process: ProcessId::new(Some("http_client"), "sys", "uqbar"), + process: ProcessId::new(Some("http_client"), "sys", "nectar"), }, target: target.clone(), rsvp: None, @@ -449,7 +449,7 @@ async fn handle_http_request( id, source: Address { node: our.to_string(), - process: ProcessId::new(Some("http_client"), "sys", "uqbar"), + process: ProcessId::new(Some("http_client"), "sys", "nectar"), }, target, rsvp: None, @@ -549,7 +549,7 @@ async fn http_error_message( id, source: Address { node: our.to_string(), - process: ProcessId::new(Some("http_client"), "sys", "uqbar"), + process: ProcessId::new(Some("http_client"), "sys", "nectar"), }, target, rsvp: None, @@ -586,7 +586,7 @@ async fn websocket_error_message( id, source: Address { node: our.to_string(), - process: ProcessId::new(Some("http_client"), "sys", "uqbar"), + process: ProcessId::new(Some("http_client"), "sys", "nectar"), }, target, rsvp: None, @@ -691,7 +691,7 @@ async fn handle_ws_message( id, source: Address { node: our.to_string(), - process: ProcessId::new(Some("http_client"), "sys", "uqbar"), + process: ProcessId::new(Some("http_client"), "sys", "nectar"), }, target, rsvp: None, diff --git a/src/http/login.html b/src/http/login.html index 88ff597b..61c53238 100644 --- a/src/http/login.html +++ b/src/http/login.html @@ -19,7 +19,7 @@

iconLogin to Uqbar

+ style="margin: 0px 1em 0.2em 0px;">Login to Nectar
diff --git a/src/http/server.rs b/src/http/server.rs index 0fa6fc55..bb7135bc 100644 --- a/src/http/server.rs +++ b/src/http/server.rs @@ -86,13 +86,13 @@ pub async fn http_server( // add RPC path let mut bindings_map: Router = Router::new(); let rpc_bound_path = BoundPath { - app: ProcessId::from_str("rpc:sys:uqbar").unwrap(), + app: ProcessId::from_str("rpc:sys:nectar").unwrap(), secure_subdomain: None, // TODO maybe RPC should have subdomain? authenticated: false, local_only: true, static_content: None, }; - bindings_map.add("/rpc:sys:uqbar/message", rpc_bound_path); + bindings_map.add("/rpc:sys:nectar/message", rpc_bound_path); let path_bindings: PathBindings = Arc::new(RwLock::new(bindings_map)); // ws path bindings @@ -241,7 +241,7 @@ async fn login_handler( ) .into_response(); - match HeaderValue::from_str(&format!("uqbar-auth_{}={};", our.as_ref(), &token)) { + match HeaderValue::from_str(&format!("nectar-auth_{}={};", our.as_ref(), &token)) { Ok(v) => { response.headers_mut().append(http::header::SET_COOKIE, v); Ok(response) @@ -456,10 +456,10 @@ async fn http_handler( } } - // RPC functionality: if path is /rpc:sys:uqbar/message, + // RPC functionality: if path is /rpc:sys:nectar/message, // we extract message from base64 encoded bytes in data // and send it to the correct app. - let message = if bound_path.app == "rpc:sys:uqbar" { + let message = if bound_path.app == "rpc:sys:nectar" { match handle_rpc_message(our, id, body, print_tx).await { Ok(message) => message, Err(e) => { @@ -797,7 +797,7 @@ async fn handle_app_message( return; }; // if path is /rpc/message, return accordingly with base64 encoded payload - if path == "/rpc:sys:uqbar/message" { + if path == "/rpc:sys:nectar/message" { let payload = km.payload.map(|p| Payload { mime: p.mime, bytes: base64::encode(p.bytes).into_bytes(), @@ -859,7 +859,7 @@ async fn handle_app_message( cache, } => { let mut path_bindings = path_bindings.write().await; - if km.source.process != "homepage:homepage:uqbar" { + if km.source.process != "homepage:homepage:nectar" { path = if path.starts_with('/') { format!("/{}{}", km.source.process, path) } else { diff --git a/src/http/types.rs b/src/http/types.rs index 033c7ca3..c9cf697f 100644 --- a/src/http/types.rs +++ b/src/http/types.rs @@ -4,7 +4,7 @@ use std::collections::HashMap; use thiserror::Error; /// HTTP Request type that can be shared over WASM boundary to apps. -/// This is the one you receive from the `http_server:sys:uqbar` service. +/// This is the one you receive from the `http_server:sys:nectar` service. #[derive(Debug, Serialize, Deserialize)] pub enum HttpServerRequest { Http(IncomingHttpRequest), @@ -38,7 +38,7 @@ pub struct IncomingHttpRequest { } /// HTTP Request type that can be shared over WASM boundary to apps. -/// This is the one you send to the `http_client:sys:uqbar` service. +/// This is the one you send to the `http_client:sys:nectar` service. #[derive(Debug, Serialize, Deserialize)] pub struct OutgoingHttpRequest { pub method: String, // must parse to http::Method @@ -59,7 +59,7 @@ pub struct HttpResponse { } /// WebSocket Client Request type that can be shared over WASM boundary to apps. -/// This is the one you send to the `http_client:sys:uqbar` service. +/// This is the one you send to the `http_client:sys:nectar` service. #[derive(Debug, Serialize, Deserialize)] pub enum WebSocketClientAction { Open { @@ -114,7 +114,7 @@ pub enum WebSocketClientError { CloseFailed { channel_id: u32 }, } -/// Request type sent to `http_server:sys:uqbar` in order to configure it. +/// Request type sent to `http_server:sys:nectar` in order to configure it. /// You can also send [`type@HttpServerAction::WebSocketPush`], which /// allows you to push messages across an existing open WebSocket connection. /// diff --git a/src/http/utils.rs b/src/http/utils.rs index 81393bf1..f21c55ce 100644 --- a/src/http/utils.rs +++ b/src/http/utils.rs @@ -43,7 +43,7 @@ pub fn auth_cookie_valid(our_node: &str, cookie: &str, jwt_secret: &[u8]) -> boo for cookie_part in cookie_parts { let cookie_part_parts: Vec<&str> = cookie_part.split('=').collect(); if cookie_part_parts.len() == 2 - && cookie_part_parts[0] == format!("uqbar-auth_{}", our_node) + && cookie_part_parts[0] == format!("nectar-auth_{}", our_node) { auth_token = Some(cookie_part_parts[1].to_string()); break; diff --git a/src/kernel/mod.rs b/src/kernel/mod.rs index 462bd304..2c28f021 100644 --- a/src/kernel/mod.rs +++ b/src/kernel/mod.rs @@ -12,7 +12,7 @@ use wasmtime::{Config, Engine, WasmBacktraceDetails}; /// Manipulate a single process. pub mod process; -/// Implement the functions served to processes by `uqbar.wit`. +/// Implement the functions served to processes by `nectar.wit`. mod standard_host; const PROCESS_CHANNEL_CAPACITY: usize = 100; @@ -604,7 +604,7 @@ async fn start_process( Ok(()) } -/// the uqbar kernel. contains event loop which handles all message-passing between +/// the nectar kernel. contains event loop which handles all message-passing between /// all processes (WASM apps) and also runtime tasks. pub async fn kernel( our: t::Identity, @@ -635,7 +635,7 @@ pub async fn kernel( let mut senders: Senders = HashMap::new(); senders.insert( - t::ProcessId::new(Some("net"), "sys", "uqbar"), + t::ProcessId::new(Some("net"), "sys", "nectar"), ProcessSender::Runtime(send_to_net.clone()), ); for (process_id, sender, _) in runtime_extensions { @@ -777,7 +777,7 @@ pub async fn kernel( .expect("fatal: kernel event loop died"); #[cfg(feature = "simulation-mode")] - let tester_process_id = t::ProcessId::new(Some("tester"), "tester", "uqbar"); + let tester_process_id = t::ProcessId::new(Some("tester"), "tester", "nectar"); // main event loop loop { diff --git a/src/kernel/process.rs b/src/kernel/process.rs index b75158e3..61d3dd0a 100644 --- a/src/kernel/process.rs +++ b/src/kernel/process.rs @@ -2,12 +2,12 @@ use crate::kernel::{ProcessMessageReceiver, ProcessMessageSender}; use crate::types as t; use crate::KERNEL_PROCESS_ID; use anyhow::Result; +pub use nectar::process::standard as wit; +pub use nectar::process::standard::Host as StandardHost; use ring::signature::{self, KeyPair}; use std::collections::{HashMap, VecDeque}; use std::sync::Arc; use tokio::task::JoinHandle; -pub use uqbar::process::standard as wit; -pub use uqbar::process::standard::Host as StandardHost; use wasmtime::component::*; use wasmtime::{Engine, Store}; use wasmtime_wasi::preview2::{Table, WasiCtx, WasiCtxBuilder, WasiView}; diff --git a/src/kernel/standard_host.rs b/src/kernel/standard_host.rs index 8bed37a7..acc7f354 100644 --- a/src/kernel/standard_host.rs +++ b/src/kernel/standard_host.rs @@ -1,5 +1,5 @@ use crate::kernel::process; -use crate::kernel::process::uqbar::process::standard as wit; +use crate::kernel::process::nectar::process::standard as wit; use crate::kernel::process::StandardHost; use crate::types as t; use crate::types::STATE_PROCESS_ID; diff --git a/src/main.rs b/src/main.rs index e0218cf3..7b2c7b3d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -91,7 +91,7 @@ async fn serve_register_fe( #[tokio::main] async fn main() { - let app = Command::new("Uqbar") + let app = Command::new("nectar") .version(VERSION) .author("Uqbar DAO: https://github.com/uqbar-dao") .about("A General Purpose Sovereign Cloud Computing Platform") @@ -197,7 +197,7 @@ async fn main() { let http_server_port = http::utils::find_open_port(port).await.unwrap(); if http_server_port != port { let error_message = format!( - "uqbar: couldn't bind {}; first available port found {}. Set an available port with `--port` and try again.", + "error: couldn't bind {}; first available port found {}. Set an available port with `--port` and try again.", port, http_server_port, ); @@ -315,38 +315,38 @@ async fn main() { #[allow(unused_mut)] let mut runtime_extensions = vec![ ( - ProcessId::new(Some("http_server"), "sys", "uqbar"), + ProcessId::new(Some("http_server"), "sys", "nectar"), http_server_sender, true, ), ( - ProcessId::new(Some("http_client"), "sys", "uqbar"), + ProcessId::new(Some("http_client"), "sys", "nectar"), http_client_sender, false, ), ( - ProcessId::new(Some("timer"), "sys", "uqbar"), + ProcessId::new(Some("timer"), "sys", "nectar"), timer_service_sender, true, ), ( - ProcessId::new(Some("eth"), "sys", "uqbar"), + ProcessId::new(Some("eth"), "sys", "nectar"), eth_provider_sender, true, ), ( - ProcessId::new(Some("vfs"), "sys", "uqbar"), + ProcessId::new(Some("vfs"), "sys", "nectar"), vfs_message_sender, true, ), ( - ProcessId::new(Some("state"), "sys", "uqbar"), + ProcessId::new(Some("state"), "sys", "nectar"), state_sender, true, ), - (ProcessId::new(Some("kv"), "sys", "uqbar"), kv_sender, true), + (ProcessId::new(Some("kv"), "sys", "nectar"), kv_sender, true), ( - ProcessId::new(Some("sqlite"), "sys", "uqbar"), + ProcessId::new(Some("sqlite"), "sys", "nectar"), sqlite_sender, true, ), @@ -354,7 +354,7 @@ async fn main() { /* * the kernel module will handle our userspace processes and receives - * all "messages", the basic message format for uqbar. + * all "messages", the basic message format for nectar. * * if any of these modules fail, the program exits with an error. */ diff --git a/src/net/mod.rs b/src/net/mod.rs index d84b57a5..987be289 100644 --- a/src/net/mod.rs +++ b/src/net/mod.rs @@ -638,7 +638,7 @@ async fn recv_connection( noise.read_message(first_message, &mut buf)?; // -> e, ee, s, es - send_uqbar_handshake( + send_nectar_handshake( our, keypair, &our_static_key, @@ -651,7 +651,7 @@ async fn recv_connection( // <- s, se let their_handshake = - recv_uqbar_handshake(&mut noise, &mut buf, &mut read_stream, &mut write_stream).await?; + recv_nectar_handshake(&mut noise, &mut buf, &mut read_stream, &mut write_stream).await?; // now validate this handshake payload against the QNS PKI let their_id = pki @@ -717,7 +717,7 @@ async fn recv_connection_via_router( )?; // -> e, ee, s, es - send_uqbar_handshake( + send_nectar_handshake( our, keypair, &our_static_key, @@ -730,7 +730,7 @@ async fn recv_connection_via_router( // <- s, se let their_handshake = - recv_uqbar_handshake(&mut noise, &mut buf, &mut read_stream, &mut write_stream).await?; + recv_nectar_handshake(&mut noise, &mut buf, &mut read_stream, &mut write_stream).await?; // now validate this handshake payload against the QNS PKI let their_id = pki @@ -809,7 +809,7 @@ async fn init_connection( // <- e, ee, s, es let their_handshake = - recv_uqbar_handshake(&mut noise, &mut buf, &mut read_stream, &mut write_stream).await?; + recv_nectar_handshake(&mut noise, &mut buf, &mut read_stream, &mut write_stream).await?; // now validate this handshake payload against the QNS PKI validate_handshake( @@ -821,7 +821,7 @@ async fn init_connection( )?; // -> s, se - send_uqbar_handshake( + send_nectar_handshake( our, keypair, &our_static_key, @@ -922,7 +922,7 @@ async fn handle_local_message( id: km.id, source: Address { node: our.name.clone(), - process: ProcessId::from_str("net:sys:uqbar").unwrap(), + process: ProcessId::from_str("net:sys:nectar").unwrap(), }, target: km.rsvp.unwrap_or(km.source), rsvp: None, diff --git a/src/net/utils.rs b/src/net/utils.rs index 167b2c36..b9220e4d 100644 --- a/src/net/utils.rs +++ b/src/net/utils.rs @@ -59,7 +59,7 @@ pub async fn maintain_connection( let mut last_message = std::time::Instant::now(); loop { tokio::select! { - recv_result = recv_uqbar_message(&mut conn) => { + recv_result = recv_nectar_message(&mut conn) => { match recv_result { Ok(km) => { if km.source.node != peer_name { @@ -81,7 +81,7 @@ pub async fn maintain_connection( maybe_recv = peer_rx.recv() => { match maybe_recv { Some(km) => { - match send_uqbar_message(&km, &mut conn).await { + match send_nectar_message(&km, &mut conn).await { Ok(()) => { last_message = std::time::Instant::now(); continue @@ -209,17 +209,17 @@ pub async fn create_passthrough( if !target_peer.routing_for { return Err(anyhow!("we don't route for that indirect node")); } - // send their net:sys:uqbar process a message, notifying it to create a *matching* + // send their net:sys:nectar process a message, notifying it to create a *matching* // passthrough request, which we can pair with this pending one. target_peer.sender.send(KernelMessage { id: rand::random(), source: Address { node: our.name.clone(), - process: ProcessId::from_str("net:sys:uqbar").unwrap(), + process: ProcessId::from_str("net:sys:nectar").unwrap(), }, target: Address { node: to_name.clone(), - process: ProcessId::from_str("net:sys:uqbar").unwrap(), + process: ProcessId::from_str("net:sys:nectar").unwrap(), }, rsvp: None, message: Message::Request(Request { @@ -299,7 +299,7 @@ pub fn validate_handshake( Ok(()) } -pub async fn send_uqbar_message(km: &KernelMessage, conn: &mut PeerConnection) -> Result<()> { +pub async fn send_nectar_message(km: &KernelMessage, conn: &mut PeerConnection) -> Result<()> { let serialized = rmp_serde::to_vec(km)?; if serialized.len() > MESSAGE_MAX_SIZE as usize { return Err(anyhow!("message too large")); @@ -320,13 +320,13 @@ pub async fn send_uqbar_message(km: &KernelMessage, conn: &mut PeerConnection) - } /// any error in receiving a message will result in the connection being closed. -pub async fn recv_uqbar_message(conn: &mut PeerConnection) -> Result { +pub async fn recv_nectar_message(conn: &mut PeerConnection) -> Result { let outer_len = conn.noise.read_message( &ws_recv(&mut conn.read_stream, &mut conn.write_stream).await?, &mut conn.buf, )?; if outer_len < 4 { - return Err(anyhow!("uqbar message too small!")); + return Err(anyhow!("nectar message too small!")); } let length_bytes = [conn.buf[0], conn.buf[1], conn.buf[2], conn.buf[3]]; @@ -349,7 +349,7 @@ pub async fn recv_uqbar_message(conn: &mut PeerConnection) -> Result>>, @@ -485,7 +485,7 @@ pub async fn parse_hello_message( id: km.id, source: Address { node: our.name.clone(), - process: ProcessId::from_str("net:sys:uqbar").unwrap(), + process: ProcessId::from_str("net:sys:nectar").unwrap(), }, target: km.rsvp.as_ref().unwrap_or(&km.source).clone(), rsvp: None, diff --git a/src/register-ui/build/index.html b/src/register-ui/build/index.html index fb14feae..3704e580 100644 --- a/src/register-ui/build/index.html +++ b/src/register-ui/build/index.html @@ -1 +1,23 @@ -Welcome - Uqbar
\ No newline at end of file + + + + + Welcome - Nectar + + + + + + + + + + + + +
+ + + \ No newline at end of file diff --git a/src/register.rs b/src/register.rs index 069d7b62..7bad705c 100644 --- a/src/register.rs +++ b/src/register.rs @@ -117,9 +117,9 @@ pub async fn register( ws_routing: Some((ip.clone(), ws_port)), allowed_routers: vec![ "nectar-next-router.uq".into(), - // "uqbar-router-1.uq".into(), - // "uqbar-router-2.uq".into(), - // "uqbar-router-3.uq".into(), + // "nectar-router-1.uq".into(), + // "nectar-router-2.uq".into(), + // "nectar-router-3.uq".into(), ], }); @@ -535,7 +535,7 @@ async fn success_response( let headers = response.headers_mut(); - match HeaderValue::from_str(&format!("uqbar-auth_{}={};", &our.name, &token)) { + match HeaderValue::from_str(&format!("nectar-auth_{}={};", &our.name, &token)) { Ok(v) => { headers.append(SET_COOKIE, v); } diff --git a/src/state.rs b/src/state.rs index fd5afae9..fa268e45 100644 --- a/src/state.rs +++ b/src/state.rs @@ -299,7 +299,7 @@ async fn bootstrap( let k_cap = Capability { issuer: Address { node: our_name.to_string(), - process: ProcessId::from_str("kernel:sys:uqbar").unwrap(), + process: ProcessId::from_str("kernel:sys:nectar").unwrap(), }, params: "\"messaging\"".into(), }; @@ -308,7 +308,7 @@ async fn bootstrap( let n_cap = Capability { issuer: Address { node: our_name.to_string(), - process: ProcessId::from_str("net:sys:uqbar").unwrap(), + process: ProcessId::from_str("net:sys:nectar").unwrap(), }, params: "\"messaging\"".into(), }; @@ -336,7 +336,7 @@ async fn bootstrap( // finally, save runtime modules in state map as well, somewhat fakely // special cases for kernel and net process_map - .entry(ProcessId::from_str("kernel:sys:uqbar").unwrap()) + .entry(ProcessId::from_str("kernel:sys:nectar").unwrap()) .or_insert(PersistedProcess { wasm_bytes_handle: "".into(), wit_version: None, @@ -345,7 +345,7 @@ async fn bootstrap( public: false, }); process_map - .entry(ProcessId::from_str("net:sys:uqbar").unwrap()) + .entry(ProcessId::from_str("net:sys:nectar").unwrap()) .or_insert(PersistedProcess { wasm_bytes_handle: "".into(), wit_version: None, diff --git a/src/terminal/mod.rs b/src/terminal/mod.rs index e61d50d9..09ebfcc0 100644 --- a/src/terminal/mod.rs +++ b/src/terminal/mod.rs @@ -34,7 +34,7 @@ pub async fn terminal( execute!( stdout, EnableBracketedPaste, - terminal::SetTitle(format!("{}@{}", our.name, "uqbar")) + terminal::SetTitle(format!("{}@{}", our.name, "nectar")) )?; let (mut win_cols, mut win_rows) = terminal::size().unwrap(); @@ -131,18 +131,19 @@ pub async fn terminal( let mut log_writer = BufWriter::new(log_handle); // use to trigger cleanup if receive signal to kill process - let mut sigalrm = signal(SignalKind::alarm()).expect("uqbar: failed to set up SIGALRM handler"); - let mut sighup = signal(SignalKind::hangup()).expect("uqbar: failed to set up SIGHUP handler"); + let mut sigalrm = + signal(SignalKind::alarm()).expect("nectar: failed to set up SIGALRM handler"); + let mut sighup = signal(SignalKind::hangup()).expect("nectar: failed to set up SIGHUP handler"); let mut sigint = - signal(SignalKind::interrupt()).expect("uqbar: failed to set up SIGINT handler"); - let mut sigpipe = signal(SignalKind::pipe()).expect("uqbar: failed to set up SIGPIPE handler"); - let mut sigquit = signal(SignalKind::quit()).expect("uqbar: failed to set up SIGQUIT handler"); + signal(SignalKind::interrupt()).expect("nectar: failed to set up SIGINT handler"); + let mut sigpipe = signal(SignalKind::pipe()).expect("nectar: failed to set up SIGPIPE handler"); + let mut sigquit = signal(SignalKind::quit()).expect("nectar: failed to set up SIGQUIT handler"); let mut sigterm = - signal(SignalKind::terminate()).expect("uqbar: failed to set up SIGTERM handler"); + signal(SignalKind::terminate()).expect("nectar: failed to set up SIGTERM handler"); let mut sigusr1 = - signal(SignalKind::user_defined1()).expect("uqbar: failed to set up SIGUSR1 handler"); + signal(SignalKind::user_defined1()).expect("nectar: failed to set up SIGUSR1 handler"); let mut sigusr2 = - signal(SignalKind::user_defined2()).expect("uqbar: failed to set up SIGUSR2 handler"); + signal(SignalKind::user_defined2()).expect("nectar: failed to set up SIGUSR2 handler"); loop { let event = reader.next().fuse(); diff --git a/src/types.rs b/src/types.rs index d6ac2eb1..53bf000c 100644 --- a/src/types.rs +++ b/src/types.rs @@ -5,16 +5,16 @@ use std::collections::{HashMap, HashSet}; use thiserror::Error; lazy_static::lazy_static! { - pub static ref ETH_PROCESS_ID: ProcessId = ProcessId::new(Some("eth"), "sys", "uqbar"); - pub static ref HTTP_CLIENT_PROCESS_ID: ProcessId = ProcessId::new(Some("http_client"), "sys", "uqbar"); - pub static ref HTTP_SERVER_PROCESS_ID: ProcessId = ProcessId::new(Some("http_server"), "sys", "uqbar"); - pub static ref KERNEL_PROCESS_ID: ProcessId = ProcessId::new(Some("kernel"), "sys", "uqbar"); - pub static ref TERMINAL_PROCESS_ID: ProcessId = ProcessId::new(Some("terminal"), "terminal", "uqbar"); - pub static ref TIMER_PROCESS_ID: ProcessId = ProcessId::new(Some("timer"), "sys", "uqbar"); - pub static ref VFS_PROCESS_ID: ProcessId = ProcessId::new(Some("vfs"), "sys", "uqbar"); - pub static ref STATE_PROCESS_ID: ProcessId = ProcessId::new(Some("state"), "sys", "uqbar"); - pub static ref KV_PROCESS_ID: ProcessId = ProcessId::new(Some("kv"), "sys", "uqbar"); - pub static ref SQLITE_PROCESS_ID: ProcessId = ProcessId::new(Some("sqlite"), "sys", "uqbar"); + pub static ref ETH_PROCESS_ID: ProcessId = ProcessId::new(Some("eth"), "sys", "nectar"); + pub static ref HTTP_CLIENT_PROCESS_ID: ProcessId = ProcessId::new(Some("http_client"), "sys", "nectar"); + pub static ref HTTP_SERVER_PROCESS_ID: ProcessId = ProcessId::new(Some("http_server"), "sys", "nectar"); + pub static ref KERNEL_PROCESS_ID: ProcessId = ProcessId::new(Some("kernel"), "sys", "nectar"); + pub static ref TERMINAL_PROCESS_ID: ProcessId = ProcessId::new(Some("terminal"), "terminal", "nectar"); + pub static ref TIMER_PROCESS_ID: ProcessId = ProcessId::new(Some("timer"), "sys", "nectar"); + pub static ref VFS_PROCESS_ID: ProcessId = ProcessId::new(Some("vfs"), "sys", "nectar"); + pub static ref STATE_PROCESS_ID: ProcessId = ProcessId::new(Some("state"), "sys", "nectar"); + pub static ref KV_PROCESS_ID: ProcessId = ProcessId::new(Some("kv"), "sys", "nectar"); + pub static ref SQLITE_PROCESS_ID: ProcessId = ProcessId::new(Some("sqlite"), "sys", "nectar"); } // @@ -697,7 +697,7 @@ pub type CapMessageSender = tokio::sync::mpsc::Sender; pub type CapMessageReceiver = tokio::sync::mpsc::Receiver; // -// types used for UQI: uqbar's identity system +// types used for Nectar's identity system // #[derive(Debug, Serialize, Deserialize)]