From 6a875266b10c1bd751663a02c2d8a9716478e5a1 Mon Sep 17 00:00:00 2001 From: Igor Katson Date: Fri, 8 Dec 2023 22:13:30 +0000 Subject: [PATCH 1/4] Added JSON logs to Desktop --- crates/dht/src/persistence.rs | 4 +- crates/librqbit/src/http_api.rs | 4 +- .../webui/src/components/LogStream.tsx | 110 +++++++++++++++--- crates/upnp/src/lib.rs | 10 +- desktop/src-tauri/Cargo.lock | 13 +++ desktop/src-tauri/Cargo.toml | 2 +- desktop/src-tauri/src/main.rs | 4 +- 7 files changed, 117 insertions(+), 30 deletions(-) diff --git a/crates/dht/src/persistence.rs b/crates/dht/src/persistence.rs index 30d3f9b0..b19f9e7a 100644 --- a/crates/dht/src/persistence.rs +++ b/crates/dht/src/persistence.rs @@ -152,9 +152,9 @@ impl PersistentDht { tokio::time::sleep(dump_interval).await; match dump_dht(&dht, &config_filename, &tempfile_name) { - Ok(_) => debug!("dumped DHT to {:?}", &config_filename), + Ok(_) => debug!(filename=?config_filename, "dumped DHT"), Err(e) => { - error!("error dumping DHT to {:?}: {:#}", &config_filename, e) + error!(filename=?config_filename, "error dumping DHT: {:#}", e) } } } diff --git a/crates/librqbit/src/http_api.rs b/crates/librqbit/src/http_api.rs index face7db6..622df659 100644 --- a/crates/librqbit/src/http_api.rs +++ b/crates/librqbit/src/http_api.rs @@ -262,12 +262,12 @@ impl HttpApi { }; let app = app - .layer(cors_layer) + .layer(cors_layer) .layer(tower_http::trace::TraceLayer::new_for_http()) .with_state(state) .into_make_service(); - info!("starting HTTP server on {}", addr); + info!(%addr, "starting HTTP server"); use tokio::net::TcpListener; let listener = TcpListener::bind(&addr) diff --git a/crates/librqbit/webui/src/components/LogStream.tsx b/crates/librqbit/webui/src/components/LogStream.tsx index 59025759..4a23a980 100644 --- a/crates/librqbit/webui/src/components/LogStream.tsx +++ b/crates/librqbit/webui/src/components/LogStream.tsx @@ -100,45 +100,119 @@ const streamLogs = ( return cancel; }; -const SplitByLevelRegexp = new RegExp( - /(.*?) +(INFO|WARN|TRACE|ERROR|DEBUG) +(.*)/ -); +type Value = string | number | boolean; + +interface Span { + name: string; + [key: string]: Value; +} + +interface JSONLogLine { + level: string; + timestamp: string; + fields: { + message: string; + [key: string]: Value; + }; + target: string; + span: Span; + spans: Span[]; +} + +const EXAMPLE_LOG_JSON: JSONLogLine = { + timestamp: "2023-12-08T21:48:13.649165Z", + level: "DEBUG", + fields: { message: "successfully port forwarded 192.168.0.112:4225" }, + target: "librqbit_upnp", + span: { port: 4225, name: "manage_port" }, + spans: [ + { port: 4225, name: "upnp_forward" }, + { + location: "http://192.168.0.1:49152/IGDdevicedesc_brlan0.xml", + name: "upnp_endpoint", + }, + { device: "ARRIS TG3492LG", name: "device" }, + { device: "WANDevice:1", name: "device" }, + { device: "WANConnectionDevice:1", name: "device" }, + { url: "/upnp/control/WANIPConnection0", name: "service" }, + { port: 4225, name: "manage_port" }, + ], +}; const LogLine = ({ line }: { line: string }) => { - line.split; - const getClassNameByLevel = (level: string) => { + let parsed: JSONLogLine = JSON.parse(line); + + const classNameByLevel = (level: string) => { switch (level) { + case "DEBUG": + return "text-primary"; case "INFO": return "text-success"; case "WARN": return "text-warning"; case "ERROR": return "text-danger"; - case "DEBUG": - return "text-primary"; default: - return "text-secondary"; + return "text-muted"; } }; - const getContent = () => { - let match = line.match(SplitByLevelRegexp); - if (!match) { - return line; + const spanFields = (span: Span) => { + let fields = Object.entries(span).filter(([name, value]) => name != "name"); + if (fields.length == 0) { + return null; } - const [beforeLevel, level, afterLevel] = match.slice(1); return ( <> - {beforeLevel} - {level} - {afterLevel} + {"{"} + {fields + .map(([name, value]) => { + return ( + <> + {name} = {value} + + ); + }) + .reduce((prev, curr) => ( + <> + {prev}, {curr} + + ))} + {"}"} ); }; return ( -

- {getContent()} +

+ {parsed.timestamp} + + {parsed.level} + + + + {parsed.spans.map((span, i) => ( + + {span.name} + {spanFields(span)}: + + ))} + + {parsed.target} + + {parsed.fields.message} + {Object.entries(parsed.fields) + .filter(([key, value]) => key != "message") + .map(([key, value]) => ( + + {key}={value} + + ))} +

); }; diff --git a/crates/upnp/src/lib.rs b/crates/upnp/src/lib.rs index 77eed8a1..b61d3651 100644 --- a/crates/upnp/src/lib.rs +++ b/crates/upnp/src/lib.rs @@ -105,11 +105,11 @@ async fn forward_port( .await .context("error reading response text")?; - trace!("AddPortMapping response: {} {}", status, response_text); + trace!(status = %status, text=response_text, "AddPortMapping response"); if !status.is_success() { bail!("failed port forwarding: {}", status); } else { - debug!("successfully port forwarded {}:{}", local_ip, port); + debug!(%local_ip, port, "successfully port forwarded"); } Ok(()) } @@ -155,7 +155,7 @@ impl Device { } pub fn span(&self, parent: tracing::Span) -> tracing::Span { - error_span!(parent: parent, "device", name = self.name()) + error_span!(parent: parent, "device", device = self.name()) } } @@ -355,11 +355,11 @@ impl UpnpPortForwarder { let response = match std::str::from_utf8(&buffer[..len]) { Ok(response) => response, Err(_) => { - warn!("received invalid utf-8 from {addr}"); + warn!(%addr, "received invalid utf-8"); continue; }, }; - trace!("received response from {addr}: {response}"); + trace!(%addr, response, "response"); match parse_upnp_discover_response(response, addr) { Ok(r) => { tx.send(r)?; diff --git a/desktop/src-tauri/Cargo.lock b/desktop/src-tauri/Cargo.lock index 0575f8af..50024cd6 100644 --- a/desktop/src-tauri/Cargo.lock +++ b/desktop/src-tauri/Cargo.lock @@ -4126,6 +4126,16 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-serde" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +dependencies = [ + "serde", + "tracing-core", +] + [[package]] name = "tracing-subscriber" version = "0.3.18" @@ -4136,12 +4146,15 @@ dependencies = [ "nu-ansi-term", "once_cell", "regex", + "serde", + "serde_json", "sharded-slab", "smallvec", "thread_local", "tracing", "tracing-core", "tracing-log", + "tracing-serde", ] [[package]] diff --git a/desktop/src-tauri/Cargo.toml b/desktop/src-tauri/Cargo.toml index 4620672d..6b0a3ec4 100644 --- a/desktop/src-tauri/Cargo.toml +++ b/desktop/src-tauri/Cargo.toml @@ -22,7 +22,7 @@ anyhow = "1.0.75" base64 = "0.21.5" http = "1.0.0" directories = "5.0.1" -tracing-subscriber = {version = "0.3.18", features = ["env-filter"] } +tracing-subscriber = {version = "0.3.18", features = ["env-filter", "json"] } tracing = "0.1" serde_with = "3.4.0" parking_lot = "0.12.1" diff --git a/desktop/src-tauri/src/main.rs b/desktop/src-tauri/src/main.rs index d5af5a32..744d1a11 100644 --- a/desktop/src-tauri/src/main.rs +++ b/desktop/src-tauri/src/main.rs @@ -323,8 +323,8 @@ fn init_logging() -> InitLogging { .with( fmt::layer() .with_ansi(false) - .fmt_fields(tracing_subscriber::fmt::format::DefaultFields::new().delimited(",")) - .event_format(fmt::format().with_ansi(false)) + .fmt_fields(tracing_subscriber::fmt::format::JsonFields::new()) + .event_format(fmt::format().with_ansi(false).json()) .with_writer(line_sub) .with_filter(EnvFilter::builder().parse("info,librqbit=debug").unwrap()), ); From c80eb2e4ebf5dde5724fc5e21e6cab6e60a10854 Mon Sep 17 00:00:00 2001 From: Igor Katson Date: Fri, 8 Dec 2023 22:55:51 +0000 Subject: [PATCH 2/4] Move logging config into librqbit for reuse --- .vscode/settings.json | 3 + Cargo.lock | 13 ++ crates/librqbit/Cargo.toml | 2 +- crates/librqbit/src/api.rs | 2 +- crates/librqbit/src/lib.rs | 2 +- crates/librqbit/src/log_subscriber.rs | 47 ----- .../src/tracing_subscriber_config_utils.rs | 142 +++++++++++++++ crates/rqbit/src/main.rs | 162 ++++-------------- desktop/src-tauri/src/main.rs | 77 ++------- 9 files changed, 208 insertions(+), 242 deletions(-) delete mode 100644 crates/librqbit/src/log_subscriber.rs create mode 100644 crates/librqbit/src/tracing_subscriber_config_utils.rs diff --git a/.vscode/settings.json b/.vscode/settings.json index 8b856a54..dc6e86ef 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,5 +2,8 @@ "editor.defaultFormatter": "esbenp.prettier-vscode", "[javascript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[rust]": { + "editor.defaultFormatter": "rust-lang.rust-analyzer" } } diff --git a/Cargo.lock b/Cargo.lock index 277a6434..183c3321 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2667,6 +2667,16 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-serde" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +dependencies = [ + "serde", + "tracing-core", +] + [[package]] name = "tracing-subscriber" version = "0.3.18" @@ -2677,12 +2687,15 @@ dependencies = [ "nu-ansi-term", "once_cell", "regex", + "serde", + "serde_json", "sharded-slab", "smallvec", "thread_local", "tracing", "tracing-core", "tracing-log", + "tracing-serde", ] [[package]] diff --git a/crates/librqbit/Cargo.toml b/crates/librqbit/Cargo.toml index 633a3c6c..5118f12f 100644 --- a/crates/librqbit/Cargo.toml +++ b/crates/librqbit/Cargo.toml @@ -55,7 +55,7 @@ rand = "0.8" openssl = {version="0.10", optional=true} crypto-hash = {version="0.3", optional=true} sha1 = {version = "0.10", optional=true} -tracing-subscriber = {version = "0.3", default-features = false} +tracing-subscriber = {version = "0.3", default-features = false, features = ["json"]} uuid = {version = "1.2", features = ["v4"]} futures = "0.3" diff --git a/crates/librqbit/src/api.rs b/crates/librqbit/src/api.rs index 042020f2..54061ae7 100644 --- a/crates/librqbit/src/api.rs +++ b/crates/librqbit/src/api.rs @@ -19,7 +19,7 @@ use crate::{ torrent_state::{ peer::stats::snapshot::{PeerStatsFilter, PeerStatsSnapshot}, ManagedTorrentHandle, - }, log_subscriber::LineBroadcast, + }, tracing_subscriber_config_utils::LineBroadcast, }; pub use crate::torrent_state::stats::{LiveStats, TorrentStats}; diff --git a/crates/librqbit/src/lib.rs b/crates/librqbit/src/lib.rs index 767372a3..a1076371 100644 --- a/crates/librqbit/src/lib.rs +++ b/crates/librqbit/src/lib.rs @@ -29,7 +29,7 @@ mod dht_utils; mod file_ops; pub mod http_api; pub mod http_api_client; -pub mod log_subscriber; +pub mod tracing_subscriber_config_utils; mod peer_connection; mod peer_info_reader; mod session; diff --git a/crates/librqbit/src/log_subscriber.rs b/crates/librqbit/src/log_subscriber.rs deleted file mode 100644 index 3817915b..00000000 --- a/crates/librqbit/src/log_subscriber.rs +++ /dev/null @@ -1,47 +0,0 @@ -use std::io::LineWriter; - -use bytes::Bytes; -use tracing_subscriber::fmt::MakeWriter; - -pub struct Subscriber { - tx: tokio::sync::broadcast::Sender, -} - -pub struct Writer { - tx: tokio::sync::broadcast::Sender, -} - -pub type LineBroadcast = tokio::sync::broadcast::Sender; - -impl Subscriber { - pub fn new() -> (Self, LineBroadcast) { - let (tx, _) = tokio::sync::broadcast::channel(100); - (Self { tx: tx.clone() }, tx) - } -} - -impl<'a> MakeWriter<'a> for Subscriber { - type Writer = LineWriter; - - fn make_writer(&self) -> Self::Writer { - LineWriter::new(Writer { - tx: self.tx.clone(), - }) - } -} - -impl std::io::Write for Writer { - fn write(&mut self, buf: &[u8]) -> std::io::Result { - let len = buf.len(); - if self.tx.receiver_count() == 0 { - return Ok(len); - } - let arc = buf.to_vec().into(); - let _ = self.tx.send(arc); - Ok(len) - } - - fn flush(&mut self) -> std::io::Result<()> { - Ok(()) - } -} diff --git a/crates/librqbit/src/tracing_subscriber_config_utils.rs b/crates/librqbit/src/tracing_subscriber_config_utils.rs new file mode 100644 index 00000000..0d56f9b6 --- /dev/null +++ b/crates/librqbit/src/tracing_subscriber_config_utils.rs @@ -0,0 +1,142 @@ +use std::io::LineWriter; + +use anyhow::Context; +use bytes::Bytes; +use librqbit_core::spawn_utils::spawn; +use tracing::error_span; +use tracing_subscriber::fmt::MakeWriter; + +struct Subscriber { + tx: tokio::sync::broadcast::Sender, +} + +struct Writer { + tx: tokio::sync::broadcast::Sender, +} + +pub type LineBroadcast = tokio::sync::broadcast::Sender; + +impl Subscriber { + pub fn new() -> (Self, LineBroadcast) { + let (tx, _) = tokio::sync::broadcast::channel(100); + (Self { tx: tx.clone() }, tx) + } +} + +impl<'a> MakeWriter<'a> for Subscriber { + type Writer = LineWriter; + + fn make_writer(&self) -> Self::Writer { + LineWriter::new(Writer { + tx: self.tx.clone(), + }) + } +} + +impl std::io::Write for Writer { + fn write(&mut self, buf: &[u8]) -> std::io::Result { + let len = buf.len(); + if self.tx.receiver_count() == 0 { + return Ok(len); + } + let arc = buf.to_vec().into(); + let _ = self.tx.send(arc); + Ok(len) + } + + fn flush(&mut self) -> std::io::Result<()> { + Ok(()) + } +} + +pub struct InitLoggingOptions<'a> { + pub default_rust_log_value: Option<&'a str>, + pub log_file: Option<&'a str>, + pub log_file_rust_log: Option<&'a str>, +} + +pub struct InitLoggingResult { + pub rust_log_reload_tx: tokio::sync::mpsc::UnboundedSender, + pub line_broadcast: LineBroadcast, +} + +pub fn init_logging(opts: InitLoggingOptions) -> anyhow::Result { + let stderr_filter = EnvFilter::builder() + .with_default_directive( + opts.default_rust_log_value + .unwrap_or("info") + .parse() + .context("can't parse provided rust_log value")?, + ) + .from_env() + .context("invalid RUST_LOG value")?; + + let (stderr_filter, reload_stderr_filter) = + tracing_subscriber::reload::Layer::new(stderr_filter); + + use tracing_subscriber::{fmt, prelude::*, EnvFilter}; + + let (line_sub, line_broadcast) = Subscriber::new(); + + let layered = tracing_subscriber::registry() + // Stderr logging layer. + .with(fmt::layer().with_filter(stderr_filter)) + // HTTP API log broadcast layer. + .with( + fmt::layer() + .with_ansi(false) + .fmt_fields(tracing_subscriber::fmt::format::JsonFields::new()) + .event_format(fmt::format().with_ansi(false).json()) + .with_writer(line_sub) + .with_filter(EnvFilter::builder().parse("info,librqbit=debug").unwrap()), + ); + if let Some(log_file) = &opts.log_file { + let log_file = log_file.to_string(); + let log_file = move || { + LineWriter::new( + std::fs::OpenOptions::new() + .create(true) + .append(true) + .write(true) + .open(&log_file) + .with_context(|| format!("error opening log file {:?}", log_file)) + .unwrap(), + ) + }; + layered + .with( + fmt::layer() + .with_ansi(false) + .with_writer(log_file) + .with_filter( + EnvFilter::builder() + .parse(opts.log_file_rust_log.unwrap_or("info,librqbit=debug")) + .context("can't parse log-file-rust-log")?, + ), + ) + .try_init() + .context("can't init logging")?; + } else { + layered.try_init().context("can't init logging")?; + } + + let (reload_tx, mut reload_rx) = tokio::sync::mpsc::unbounded_channel::(); + spawn(error_span!("fmt_filter_reloader"), async move { + while let Some(rust_log) = reload_rx.recv().await { + let stderr_env_filter = match EnvFilter::builder().parse(&rust_log) { + Ok(f) => f, + Err(e) => { + eprintln!("can't parse env filter {:?}: {:#?}", rust_log, e); + continue; + } + }; + eprintln!("setting RUST_LOG to {:?}", rust_log); + let _ = reload_stderr_filter.reload(stderr_env_filter); + } + Ok(()) + }); + Ok(InitLoggingResult { + rust_log_reload_tx: reload_tx, + line_broadcast, + }) +} diff --git a/crates/rqbit/src/main.rs b/crates/rqbit/src/main.rs index 6e3436db..873a09dc 100644 --- a/crates/rqbit/src/main.rs +++ b/crates/rqbit/src/main.rs @@ -1,11 +1,14 @@ -use std::{io::LineWriter, net::SocketAddr, path::PathBuf, sync::Arc, time::Duration}; +use std::{net::SocketAddr, path::PathBuf, sync::Arc, time::Duration}; use anyhow::Context; use clap::{Parser, ValueEnum}; use librqbit::{ - api::ApiAddTorrentResponse, http_api::{HttpApi, HttpApiOptions}, http_api_client, librqbit_spawn, AddTorrent, - AddTorrentOptions, AddTorrentResponse, ListOnlyResponse, ManagedTorrentState, - PeerConnectionOptions, Session, SessionOptions, log_subscriber::LineBroadcast, Api, + api::ApiAddTorrentResponse, + http_api::{HttpApi, HttpApiOptions}, + http_api_client, librqbit_spawn, + tracing_subscriber_config_utils::{init_logging, InitLoggingOptions}, + AddTorrent, AddTorrentOptions, AddTorrentResponse, Api, ListOnlyResponse, ManagedTorrentState, + PeerConnectionOptions, Session, SessionOptions, }; use size_format::SizeFormatterBinary as SF; use tracing::{error, error_span, info, trace_span, warn}; @@ -178,125 +181,6 @@ enum SubCommand { Download(DownloadOpts), } -struct InitLoggingResult { - rust_log_reload_tx: tokio::sync::mpsc::UnboundedSender, - line_broadcast: LineBroadcast, -} - -// Init logging and make a channel to send new RUST_LOG values to. -fn init_logging(opts: &Opts) -> InitLoggingResult { - let default_rust_log = match opts.log_level.as_ref() { - Some(level) => match level { - LogLevel::Trace => "trace", - LogLevel::Debug => "debug", - LogLevel::Info => "info", - LogLevel::Warn => "warn", - LogLevel::Error => "error", - }, - None => "info", - }; - let stderr_filter = match std::env::var("RUST_LOG").ok() { - Some(rust_log) => EnvFilter::builder() - .parse(rust_log) - .expect("can't parse RUST_LOG"), - None => EnvFilter::builder() - .parse(default_rust_log) - .expect("can't parse default_rust_log"), - }; - - let (stderr_filter, reload_stderr_filter) = - tracing_subscriber::reload::Layer::new(stderr_filter); - - use tracing_subscriber::{fmt, prelude::*, EnvFilter}; - - let (line_sub, line_broadcast) = librqbit::log_subscriber::Subscriber::new(); - - #[cfg(feature = "tokio-console")] - { - let (console_layer, server) = console_subscriber::Builder::default() - .with_default_env() - .build(); - - tracing_subscriber::registry() - .with(fmt::layer().with_filter(stderr_filter)) - .with(console_layer) - .init(); - - spawn( - "console_subscriber server", - error_span!("console_subscriber server"), - async move { - server - .serve() - .await - .map_err(|e| anyhow::anyhow!("{:#?}", e)) - .context("error running console subscriber server") - }, - ); - } - - #[cfg(not(feature = "tokio-console"))] - { - let layered = tracing_subscriber::registry() - .with(fmt::layer().with_filter(stderr_filter)) - .with( - fmt::layer() - .event_format(fmt::format().with_ansi(false).compact()) - .with_ansi(false) - .with_writer(line_sub) - .with_filter(EnvFilter::builder().parse("info").unwrap()), - ); - if let Some(log_file) = &opts.log_file { - let log_file = log_file.clone(); - let log_file = move || { - LineWriter::new( - std::fs::OpenOptions::new() - .create(true) - .append(true) - .write(true) - .open(&log_file) - .with_context(|| format!("error opening log file {:?}", log_file)) - .unwrap(), - ) - }; - layered - .with( - fmt::layer() - .with_ansi(false) - .with_writer(log_file) - .with_filter(EnvFilter::builder().parse(&opts.log_file_rust_log).unwrap()), - ) - .init(); - } else { - layered.init(); - } - } - - let (reload_tx, mut reload_rx) = tokio::sync::mpsc::unbounded_channel::(); - librqbit_spawn( - "fmt_filter_reloader", - error_span!("fmt_filter_reloader"), - async move { - while let Some(rust_log) = reload_rx.recv().await { - let stderr_env_filter = match EnvFilter::builder().parse(&rust_log) { - Ok(f) => f, - Err(e) => { - eprintln!("can't parse env filter {:?}: {:#?}", rust_log, e); - continue; - } - }; - eprintln!("setting RUST_LOG to {:?}", rust_log); - let _ = reload_stderr_filter.reload(stderr_env_filter); - } - Ok(()) - }, - ); - InitLoggingResult { - rust_log_reload_tx: reload_tx, - line_broadcast, - } -} - fn _start_deadlock_detector_thread() { use parking_lot::deadlock; use std::thread; @@ -350,7 +234,17 @@ fn main() -> anyhow::Result<()> { } async fn async_main(opts: Opts) -> anyhow::Result<()> { - let log_config = init_logging(&opts); + let log_config = init_logging(InitLoggingOptions { + default_rust_log_value: Some(match opts.log_level.unwrap_or(LogLevel::Info) { + LogLevel::Trace => "trace", + LogLevel::Debug => "debug", + LogLevel::Info => "info", + LogLevel::Warn => "warn", + LogLevel::Error => "error", + }), + log_file: opts.log_file.as_deref(), + log_file_rust_log: Some(&opts.log_file_rust_log), + })?; let mut sopts = SessionOptions { disable_dht: opts.disable_dht, @@ -445,10 +339,14 @@ async fn async_main(opts: Opts) -> anyhow::Result<()> { trace_span!("stats_printer"), stats_printer(session.clone()), ); - let api = Api::new(session, Some(log_config.rust_log_reload_tx), Some(log_config.line_broadcast)); + let api = Api::new( + session, + Some(log_config.rust_log_reload_tx), + Some(log_config.line_broadcast), + ); let http_api = HttpApi::new( api, - Some(HttpApiOptions{ + Some(HttpApiOptions { read_only: false, cors_enable_all: false, }), @@ -532,9 +430,17 @@ async fn async_main(opts: Opts) -> anyhow::Result<()> { trace_span!("stats_printer"), stats_printer(session.clone()), ); - let api = Api::new(session.clone(), Some(log_config.rust_log_reload_tx), Some(log_config.line_broadcast)); + let api = Api::new( + session.clone(), + Some(log_config.rust_log_reload_tx), + Some(log_config.line_broadcast), + ); let http_api = HttpApi::new( - api, Some(HttpApiOptions { cors_enable_all: false, read_only: true }) + api, + Some(HttpApiOptions { + cors_enable_all: false, + read_only: true, + }), ); let http_api_listen_addr = opts.http_api_listen_addr; librqbit_spawn( diff --git a/desktop/src-tauri/src/main.rs b/desktop/src-tauri/src/main.rs index 744d1a11..f900daa1 100644 --- a/desktop/src-tauri/src/main.rs +++ b/desktop/src-tauri/src/main.rs @@ -19,8 +19,7 @@ use librqbit::{ TorrentStats, }, dht::PersistentDhtConfig, - librqbit_spawn, - log_subscriber::LineBroadcast, + tracing_subscriber_config_utils::{init_logging, InitLoggingOptions, InitLoggingResult}, AddTorrent, AddTorrentOptions, Api, ApiError, PeerConnectionOptions, Session, SessionOptions, }; use parking_lot::RwLock; @@ -35,12 +34,10 @@ struct StateShared { api: Option, } -type RustLogReloadTx = tokio::sync::mpsc::UnboundedSender; - struct State { config_filename: String, shared: Arc>>, - init_logging: InitLogging, + init_logging: InitLoggingResult, } fn read_config(path: &str) -> anyhow::Result { @@ -65,7 +62,7 @@ fn write_config(path: &str, config: &RqbitDesktopConfig) -> anyhow::Result<()> { } async fn api_from_config( - init_logging: &InitLogging, + init_logging: &InitLoggingResult, config: &RqbitDesktopConfig, ) -> anyhow::Result { let session = Session::new_with_opts( @@ -98,7 +95,7 @@ async fn api_from_config( let api = Api::new( session.clone(), - Some(init_logging.reload_stdout_tx.clone()), + Some(init_logging.rust_log_reload_tx.clone()), Some(init_logging.line_broadcast.clone()), ); @@ -118,7 +115,7 @@ async fn api_from_config( } impl State { - async fn new(init_logging: InitLogging) -> Self { + async fn new(init_logging: InitLoggingResult) -> Self { let config_filename = directories::ProjectDirs::from("com", "rqbit", "desktop") .expect("directories::ProjectDirs::from") .config_dir() @@ -302,64 +299,16 @@ fn get_version() -> &'static str { env!("CARGO_PKG_VERSION") } -struct InitLogging { - reload_stdout_tx: RustLogReloadTx, - line_broadcast: LineBroadcast, -} - -fn init_logging() -> InitLogging { - use tracing_subscriber::{fmt, prelude::*, EnvFilter}; - let (stderr_filter, reload_stderr_filter) = tracing_subscriber::reload::Layer::new( - EnvFilter::builder() - .with_default_directive("info".parse().unwrap()) - .from_env() - .unwrap(), - ); - - let (line_sub, line_broadcast) = librqbit::log_subscriber::Subscriber::new(); - - let layered = tracing_subscriber::registry() - .with(fmt::layer().with_filter(stderr_filter)) - .with( - fmt::layer() - .with_ansi(false) - .fmt_fields(tracing_subscriber::fmt::format::JsonFields::new()) - .event_format(fmt::format().with_ansi(false).json()) - .with_writer(line_sub) - .with_filter(EnvFilter::builder().parse("info,librqbit=debug").unwrap()), - ); - layered.init(); - - let (reload_tx, mut reload_rx) = tokio::sync::mpsc::unbounded_channel::(); - librqbit_spawn( - "fmt_filter_reloader", - error_span!("fmt_filter_reloader"), - async move { - while let Some(rust_log) = reload_rx.recv().await { - let stderr_env_filter = match EnvFilter::builder().parse(&rust_log) { - Ok(f) => f, - Err(e) => { - eprintln!("can't parse env filter {:?}: {:#?}", rust_log, e); - continue; - } - }; - eprintln!("setting RUST_LOG to {:?}", rust_log); - let _ = reload_stderr_filter.reload(stderr_env_filter); - } - Ok(()) - }, - ); - InitLogging { - reload_stdout_tx: reload_tx, - line_broadcast, - } -} - async fn start() { tauri::async_runtime::set(tokio::runtime::Handle::current()); - let rust_log_reload_tx = init_logging(); - - let state = State::new(rust_log_reload_tx).await; + let init_logging_result = init_logging(InitLoggingOptions { + default_rust_log_value: Some("info"), + log_file: None, + log_file_rust_log: None, + }) + .unwrap(); + + let state = State::new(init_logging_result).await; tauri::Builder::default() .manage(state) From f95aba851d4799bf5753521749a85fea07c90802 Mon Sep 17 00:00:00 2001 From: Igor Katson Date: Sat, 9 Dec 2023 00:12:24 +0000 Subject: [PATCH 3/4] Log printer now available in both Desktop and Web UI --- crates/dht/src/persistence.rs | 15 +-- crates/librqbit/src/api.rs | 7 +- crates/librqbit/src/lib.rs | 2 +- crates/librqbit/src/session.rs | 14 +-- crates/librqbit/webui/dist/assets/index.js | 20 ++-- crates/librqbit/webui/dist/manifest.json | 2 +- .../webui/src/components/LogStream.tsx | 113 +++++++++++++----- crates/librqbit/webui/src/rqbit-web.tsx | 21 +++- desktop/src/rqbit-desktop.tsx | 33 +++-- 9 files changed, 150 insertions(+), 77 deletions(-) diff --git a/crates/dht/src/persistence.rs b/crates/dht/src/persistence.rs index b19f9e7a..0f15236a 100644 --- a/crates/dht/src/persistence.rs +++ b/crates/dht/src/persistence.rs @@ -11,7 +11,7 @@ use std::time::Duration; use tokio_util::sync::CancellationToken; use anyhow::Context; -use tracing::{debug, error, error_span, info, trace, warn}; +use tracing::{error, error_span, info, trace, warn}; use crate::peer_store::PeerStore; use crate::routing_table::RoutingTable; @@ -86,8 +86,8 @@ impl PersistentDht { }; info!( - "will store DHT routing table to {:?} periodically", - &config_filename + filename=?config_filename, + "will store DHT routing table periodically", ); if let Some(parent) = config_filename.parent() { @@ -100,13 +100,14 @@ impl PersistentDht { let reader = BufReader::new(dht_json); match serde_json::from_reader::<_, DhtSerialize>(reader) { Ok(r) => { - info!("loaded DHT routing table from {:?}", &config_filename); + info!(filename=?config_filename, "loaded DHT routing table from"); Some(r) } Err(e) => { warn!( - "cannot deserialize routing table from file {:?}: {:#}", - &config_filename, e + filename=?config_filename, + "cannot deserialize routing table: {:#}", + e ); None } @@ -152,7 +153,7 @@ impl PersistentDht { tokio::time::sleep(dump_interval).await; match dump_dht(&dht, &config_filename, &tempfile_name) { - Ok(_) => debug!(filename=?config_filename, "dumped DHT"), + Ok(_) => trace!(filename=?config_filename, "dumped DHT"), Err(e) => { error!(filename=?config_filename, "error dumping DHT: {:#}", e) } diff --git a/crates/librqbit/src/api.rs b/crates/librqbit/src/api.rs index 54061ae7..f8427a62 100644 --- a/crates/librqbit/src/api.rs +++ b/crates/librqbit/src/api.rs @@ -19,7 +19,8 @@ use crate::{ torrent_state::{ peer::stats::snapshot::{PeerStatsFilter, PeerStatsSnapshot}, ManagedTorrentHandle, - }, tracing_subscriber_config_utils::LineBroadcast, + }, + tracing_subscriber_config_utils::LineBroadcast, }; pub use crate::torrent_state::stats::{LiveStats, TorrentStats}; @@ -39,12 +40,12 @@ impl Api { pub fn new( session: Arc, rust_log_reload_tx: Option>, - line_broadcast: Option + line_broadcast: Option, ) -> Self { Self { session, rust_log_reload_tx, - line_broadcast + line_broadcast, } } diff --git a/crates/librqbit/src/lib.rs b/crates/librqbit/src/lib.rs index a1076371..aee40f26 100644 --- a/crates/librqbit/src/lib.rs +++ b/crates/librqbit/src/lib.rs @@ -29,12 +29,12 @@ mod dht_utils; mod file_ops; pub mod http_api; pub mod http_api_client; -pub mod tracing_subscriber_config_utils; mod peer_connection; mod peer_info_reader; mod session; mod spawn_utils; mod torrent_state; +pub mod tracing_subscriber_config_utils; mod tracker_comms; mod type_aliases; diff --git a/crates/librqbit/src/session.rs b/crates/librqbit/src/session.rs index 5c028dd8..c825988f 100644 --- a/crates/librqbit/src/session.rs +++ b/crates/librqbit/src/session.rs @@ -725,7 +725,7 @@ impl Session { std::fs::rename(&tmp_filename, &self.persistence_filename) .context("error renaming persistence file")?; - debug!("wrote persistence to {:?}", &self.persistence_filename); + trace!(filename=?self.persistence_filename, "wrote persistence"); Ok(()) } @@ -779,7 +779,7 @@ impl Session { }) .collect(); - debug!("querying DHT for {:?}", info_hash); + debug!(?info_hash, "querying DHT"); let (info, dht_rx, initial_peers) = match read_metainfo_from_peer_receiver( self.peer_id, info_hash, @@ -794,7 +794,7 @@ impl Session { anyhow::bail!("DHT died, no way to discover torrent metainfo") } }; - debug!("received result from DHT: {:?}", info); + debug!(?info, "received result from DHT"); ( info_hash, info, @@ -828,7 +828,7 @@ impl Session { let dht_rx = match self.dht.as_ref() { Some(dht) if !opts.paused && !opts.list_only => { - debug!("reading peers for {:?} from DHT", torrent.info_hash); + debug!(info_hash=?torrent.info_hash, "reading peers from DHT"); Some(dht.get_peers(torrent.info_hash, announce_port)?) } _ => None, @@ -911,7 +911,7 @@ impl Session { continue; } if !list_only { - info!("Will download {:?}", filename); + info!(?filename, "will download"); } } Ok(Some(only_files)) @@ -1043,14 +1043,14 @@ impl Session { match (paused, delete_files) { (Err(e), true) => Err(e).context("torrent deleted, but could not delete files"), (Err(e), false) => { - warn!("could not delete torrent files: {:?}", e); + warn!(error=?e, "could not delete torrent files"); Ok(()) } (Ok(Some(paused)), true) => { drop(paused.files); for file in paused.filenames { if let Err(e) = std::fs::remove_file(&file) { - warn!("could not delete file {:?}: {:?}", file, e); + warn!(?file, error=?e, "could not delete file"); } } Ok(()) diff --git a/crates/librqbit/webui/dist/assets/index.js b/crates/librqbit/webui/dist/assets/index.js index 41b0f303..e868bc15 100644 --- a/crates/librqbit/webui/dist/assets/index.js +++ b/crates/librqbit/webui/dist/assets/index.js @@ -1,4 +1,4 @@ -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const o of l)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(l){const o={};return l.integrity&&(o.integrity=l.integrity),l.referrerPolicy&&(o.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?o.credentials="include":l.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(l){if(l.ep)return;l.ep=!0;const o=n(l);fetch(l.href,o)}})();function Yl(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var _a={exports:{}},Zl={},Na={exports:{}},F={};/** +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const o of l)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(l){const o={};return l.integrity&&(o.integrity=l.integrity),l.referrerPolicy&&(o.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?o.credentials="include":l.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(l){if(l.ep)return;l.ep=!0;const o=n(l);fetch(l.href,o)}})();function Zl(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Na={exports:{}},Jl={},Ta={exports:{}},F={};/** * @license React * react.production.min.js * @@ -6,7 +6,7 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var $r=Symbol.for("react.element"),Yd=Symbol.for("react.portal"),Zd=Symbol.for("react.fragment"),Jd=Symbol.for("react.strict_mode"),qd=Symbol.for("react.profiler"),bd=Symbol.for("react.provider"),ep=Symbol.for("react.context"),tp=Symbol.for("react.forward_ref"),np=Symbol.for("react.suspense"),rp=Symbol.for("react.memo"),lp=Symbol.for("react.lazy"),ts=Symbol.iterator;function op(e){return e===null||typeof e!="object"?null:(e=ts&&e[ts]||e["@@iterator"],typeof e=="function"?e:null)}var Ta={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},ja=Object.assign,La={};function Hn(e,t,n){this.props=e,this.context=t,this.refs=La,this.updater=n||Ta}Hn.prototype.isReactComponent={};Hn.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")};Hn.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Oa(){}Oa.prototype=Hn.prototype;function Yi(e,t,n){this.props=e,this.context=t,this.refs=La,this.updater=n||Ta}var Zi=Yi.prototype=new Oa;Zi.constructor=Yi;ja(Zi,Hn.prototype);Zi.isPureReactComponent=!0;var ns=Array.isArray,Ra=Object.prototype.hasOwnProperty,Ji={current:null},Pa={key:!0,ref:!0,__self:!0,__source:!0};function Fa(e,t,n){var r,l={},o=null,i=null;if(t!=null)for(r in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(o=""+t.key),t)Ra.call(t,r)&&!Pa.hasOwnProperty(r)&&(l[r]=t[r]);var u=arguments.length-2;if(u===1)l.children=n;else if(1>>1,A=C[I];if(0>>1;Il(tt,R))Pel(vt,tt)?(C[I]=vt,C[Pe]=R,I=Pe):(C[I]=tt,C[Re]=R,I=Re);else if(Pel(vt,R))C[I]=vt,C[Pe]=R,I=Pe;else break e}}return O}function l(C,O){var R=C.sortIndex-O.sortIndex;return R!==0?R:C.id-O.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var i=Date,u=i.now();e.unstable_now=function(){return i.now()-u}}var s=[],a=[],m=1,h=null,d=3,g=!1,w=!1,E=!1,L=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 v(C){for(var O=n(a);O!==null;){if(O.callback===null)r(a);else if(O.startTime<=C)r(a),O.sortIndex=O.expirationTime,t(s,O);else break;O=n(a)}}function x(C){if(E=!1,v(C),!w)if(n(s)!==null)w=!0,Oe(N);else{var O=n(a);O!==null&&Ye(x,O.startTime-C)}}function N(C,O){w=!1,E&&(E=!1,p(j),j=-1),g=!0;var R=d;try{for(v(O),h=n(s);h!==null&&(!(h.expirationTime>O)||C&&!ie());){var I=h.callback;if(typeof I=="function"){h.callback=null,d=h.priorityLevel;var A=I(h.expirationTime<=O);O=e.unstable_now(),typeof A=="function"?h.callback=A:h===n(s)&&r(s),v(O)}else r(s);h=n(s)}if(h!==null)var fe=!0;else{var Re=n(a);Re!==null&&Ye(x,Re.startTime-O),fe=!1}return fe}finally{h=null,d=R,g=!1}}var k=!1,_=null,j=-1,B=5,P=-1;function ie(){return!(e.unstable_now()-PC||125I?(C.sortIndex=R,t(a,C),n(s)===null&&C===n(a)&&(E?(p(j),j=-1):E=!0,Ye(x,R-I))):(C.sortIndex=A,t(s,C),w||g||(w=!0,Oe(N))),C},e.unstable_shouldYield=ie,e.unstable_wrapCallback=function(C){var O=d;return function(){var R=d;d=O;try{return C.apply(this,arguments)}finally{d=R}}}})(Ia);$a.exports=Ia;var vp=$a.exports;/** + */(function(e){function t(C,R){var O=C.length;C.push(R);e:for(;0>>1,A=C[I];if(0>>1;Il(tt,O))Pel(vt,tt)?(C[I]=vt,C[Pe]=O,I=Pe):(C[I]=tt,C[Oe]=O,I=Oe);else if(Pel(vt,O))C[I]=vt,C[Pe]=O,I=Pe;else break e}}return R}function l(C,R){var O=C.sortIndex-R.sortIndex;return O!==0?O:C.id-R.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var i=Date,u=i.now();e.unstable_now=function(){return i.now()-u}}var s=[],a=[],d=1,m=null,p=3,y=!1,w=!1,S=!1,L=typeof setTimeout=="function"?setTimeout:null,h=typeof clearTimeout=="function"?clearTimeout:null,f=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function g(C){for(var R=n(a);R!==null;){if(R.callback===null)r(a);else if(R.startTime<=C)r(a),R.sortIndex=R.expirationTime,t(s,R);else break;R=n(a)}}function x(C){if(S=!1,g(C),!w)if(n(s)!==null)w=!0,Re(T);else{var R=n(a);R!==null&&Ye(x,R.startTime-C)}}function T(C,R){w=!1,S&&(S=!1,h(j),j=-1),y=!0;var O=p;try{for(g(R),m=n(s);m!==null&&(!(m.expirationTime>R)||C&&!se());){var I=m.callback;if(typeof I=="function"){m.callback=null,p=m.priorityLevel;var A=I(m.expirationTime<=R);R=e.unstable_now(),typeof A=="function"?m.callback=A:m===n(s)&&r(s),g(R)}else r(s);m=n(s)}if(m!==null)var pe=!0;else{var Oe=n(a);Oe!==null&&Ye(x,Oe.startTime-R),pe=!1}return pe}finally{m=null,p=O,y=!1}}var k=!1,N=null,j=-1,B=5,P=-1;function se(){return!(e.unstable_now()-PC||125I?(C.sortIndex=O,t(a,C),n(s)===null&&C===n(a)&&(S?(h(j),j=-1):S=!0,Ye(x,O-I))):(C.sortIndex=A,t(s,C),w||y||(w=!0,Re(T))),C},e.unstable_shouldYield=se,e.unstable_wrapCallback=function(C){var R=p;return function(){var O=p;p=R;try{return C.apply(this,arguments)}finally{p=O}}}})(Ia);$a.exports=Ia;var gp=$a.exports;/** * @license React * react-dom.production.min.js * @@ -30,15 +30,15 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Da=y,Te=vp;function S(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"),Zo=Object.prototype.hasOwnProperty,yp=/^[: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]*$/,ls={},os={};function gp(e){return Zo.call(os,e)?!0:Zo.call(ls,e)?!1:yp.test(e)?os[e]=!0:(ls[e]=!0,!1)}function wp(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 xp(e,t,n,r){if(t===null||typeof t>"u"||wp(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 ve(e,t,n,r,l,o,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var oe={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){oe[e]=new ve(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];oe[t]=new ve(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){oe[e]=new ve(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){oe[e]=new ve(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){oe[e]=new ve(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){oe[e]=new ve(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){oe[e]=new ve(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){oe[e]=new ve(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){oe[e]=new ve(e,5,!1,e.toLowerCase(),null,!1,!1)});var bi=/[\-:]([a-z])/g;function eu(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(bi,eu);oe[t]=new ve(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(bi,eu);oe[t]=new ve(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(bi,eu);oe[t]=new ve(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){oe[e]=new ve(e,1,!1,e.toLowerCase(),null,!1,!1)});oe.xlinkHref=new ve("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){oe[e]=new ve(e,1,!1,e.toLowerCase(),null,!0,!0)});function tu(e,t,n,r){var l=oe.hasOwnProperty(t)?oe[t]:null;(l!==null?l.type!==0:r||!(2"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Jo=Object.prototype.hasOwnProperty,yp=/^[: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]*$/,ls={},os={};function wp(e){return Jo.call(os,e)?!0:Jo.call(ls,e)?!1:yp.test(e)?os[e]=!0:(ls[e]=!0,!1)}function xp(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 Sp(e,t,n,r){if(t===null||typeof t>"u"||xp(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 ge(e,t,n,r,l,o,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var ue={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){ue[e]=new ge(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];ue[t]=new ge(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){ue[e]=new ge(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){ue[e]=new ge(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){ue[e]=new ge(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){ue[e]=new ge(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){ue[e]=new ge(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){ue[e]=new ge(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){ue[e]=new ge(e,5,!1,e.toLowerCase(),null,!1,!1)});var eu=/[\-:]([a-z])/g;function tu(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(eu,tu);ue[t]=new ge(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(eu,tu);ue[t]=new ge(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(eu,tu);ue[t]=new ge(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){ue[e]=new ge(e,1,!1,e.toLowerCase(),null,!1,!1)});ue.xlinkHref=new ge("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){ue[e]=new ge(e,1,!1,e.toLowerCase(),null,!0,!0)});function nu(e,t,n,r){var l=ue.hasOwnProperty(t)?ue[t]:null;(l!==null?l.type!==0:r||!(2u||l[i]!==o[u]){var s=` -`+l[i].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=i&&0<=u);break}}}finally{wo=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?lr(e):""}function Sp(e){switch(e.tag){case 5:return lr(e.type);case 16:return lr("Lazy");case 13:return lr("Suspense");case 19:return lr("SuspenseList");case 0:case 2:case 15:return e=xo(e.type,!1),e;case 11:return e=xo(e.type.render,!1),e;case 1:return e=xo(e.type,!0),e;default:return""}}function ei(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 vn:return"Fragment";case hn:return"Portal";case Jo:return"Profiler";case nu:return"StrictMode";case qo:return"Suspense";case bo:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Ua:return(e.displayName||"Context")+".Consumer";case Ba:return(e._context.displayName||"Context")+".Provider";case ru:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case lu:return t=e.displayName||null,t!==null?t:ei(e.type)||"Memo";case wt:t=e._payload,e=e._init;try{return ei(e(t))}catch{}}return null}function Ep(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 ei(t);case 8:return t===nu?"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 zt(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Va(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function kp(e){var t=Va(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 l=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(i){r=""+i,o.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Kr(e){e._valueTracker||(e._valueTracker=kp(e))}function Wa(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Va(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Sl(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 ti(e,t){var n=t.checked;return Y({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function us(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=zt(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 Qa(e,t){t=t.checked,t!=null&&tu(e,"checked",t,!1)}function ni(e,t){Qa(e,t);var n=zt(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")?ri(e,t.type,n):t.hasOwnProperty("defaultValue")&&ri(e,t.type,zt(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function ss(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 ri(e,t,n){(t!=="number"||Sl(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var or=Array.isArray;function jn(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=Gr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function wr(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var ar={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},Cp=["Webkit","ms","Moz","O"];Object.keys(ar).forEach(function(e){Cp.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ar[t]=ar[e]})});function Ya(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||ar.hasOwnProperty(e)&&ar[e]?(""+t).trim():t+"px"}function Za(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=Ya(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var _p=Y({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 ii(e,t){if(t){if(_p[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(S(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(S(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(S(61))}if(t.style!=null&&typeof t.style!="object")throw Error(S(62))}}function ui(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 si=null;function ou(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ai=null,Ln=null,On=null;function fs(e){if(e=Ar(e)){if(typeof ai!="function")throw Error(S(280));var t=e.stateNode;t&&(t=to(t),ai(e.stateNode,e.type,t))}}function Ja(e){Ln?On?On.push(e):On=[e]:Ln=e}function qa(){if(Ln){var e=Ln,t=On;if(On=Ln=null,fs(e),t)for(e=0;e>>=0,e===0?32:31-($p(e)/Ip|0)|0}var Xr=64,Yr=4194304;function ir(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 _l(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,l=e.suspendedLanes,o=e.pingedLanes,i=n&268435455;if(i!==0){var u=i&~l;u!==0?r=ir(u):(o&=i,o!==0&&(r=ir(o)))}else i=n&~l,i!==0?r=ir(i):o!==0&&(r=ir(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&l)&&(l=r&-r,o=t&-t,l>=o||l===16&&(o&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 Ir(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-We(t),e[t]=n}function Up(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=fr),xs=String.fromCharCode(32),Ss=!1;function gc(e,t){switch(e){case"keyup":return hm.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function wc(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var yn=!1;function ym(e,t){switch(e){case"compositionend":return wc(t);case"keypress":return t.which!==32?null:(Ss=!0,xs);case"textInput":return e=t.data,e===xs&&Ss?null:e;default:return null}}function gm(e,t){if(yn)return e==="compositionend"||!pu&&gc(e,t)?(e=vc(),dl=cu=Ct=null,yn=!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=_s(n)}}function kc(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?kc(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Cc(){for(var e=window,t=Sl();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Sl(e.document)}return t}function mu(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 Tm(e){var t=Cc(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&kc(n.ownerDocument.documentElement,n)){if(r!==null&&mu(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 l=n.textContent.length,o=Math.min(r.start,l);r=r.end===void 0?o:Math.min(r.end,l),!e.extend&&o>r&&(l=r,r=o,o=l),l=Ns(n,o);var i=Ns(n,r);l&&i&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.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,gn=null,hi=null,pr=null,vi=!1;function Ts(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;vi||gn==null||gn!==Sl(r)||(r=gn,"selectionStart"in r&&mu(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}),pr&&_r(pr,r)||(pr=r,r=jl(hi,"onSelect"),0Sn||(e.current=Ei[Sn],Ei[Sn]=null,Sn--)}function U(e,t){Sn++,Ei[Sn]=e.current,e.current=t}var $t={},ce=Dt($t),Se=Dt(!1),Jt=$t;function zn(e,t){var n=e.type.contextTypes;if(!n)return $t;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},o;for(o in n)l[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function Ee(e){return e=e.childContextTypes,e!=null}function Ol(){W(Se),W(ce)}function Ms(e,t,n){if(ce.current!==$t)throw Error(S(168));U(ce,t),U(Se,n)}function Fc(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in t))throw Error(S(108,Ep(e)||"Unknown",l));return Y({},n,r)}function Rl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||$t,Jt=ce.current,U(ce,e),U(Se,Se.current),!0}function zs(e,t,n){var r=e.stateNode;if(!r)throw Error(S(169));n?(e=Fc(e,t,Jt),r.__reactInternalMemoizedMergedChildContext=e,W(Se),W(ce),U(ce,e)):W(Se),U(Se,n)}var lt=null,no=!1,Mo=!1;function Mc(e){lt===null?lt=[e]:lt.push(e)}function Am(e){no=!0,Mc(e)}function At(){if(!Mo&<!==null){Mo=!0;var e=0,t=D;try{var n=lt;for(D=1;e>=i,l-=i,ot=1<<32-We(t)+l|n<j?(B=_,_=null):B=_.sibling;var P=d(p,_,v[j],x);if(P===null){_===null&&(_=B);break}e&&_&&P.alternate===null&&t(p,_),c=o(P,c,j),k===null?N=P:k.sibling=P,k=P,_=B}if(j===v.length)return n(p,_),Q&&Ut(p,j),N;if(_===null){for(;jj?(B=_,_=null):B=_.sibling;var ie=d(p,_,P.value,x);if(ie===null){_===null&&(_=B);break}e&&_&&ie.alternate===null&&t(p,_),c=o(ie,c,j),k===null?N=ie:k.sibling=ie,k=ie,_=B}if(P.done)return n(p,_),Q&&Ut(p,j),N;if(_===null){for(;!P.done;j++,P=v.next())P=h(p,P.value,x),P!==null&&(c=o(P,c,j),k===null?N=P:k.sibling=P,k=P);return Q&&Ut(p,j),N}for(_=r(p,_);!P.done;j++,P=v.next())P=g(_,p,j,P.value,x),P!==null&&(e&&P.alternate!==null&&_.delete(P.key===null?j:P.key),c=o(P,c,j),k===null?N=P:k.sibling=P,k=P);return e&&_.forEach(function(Ge){return t(p,Ge)}),Q&&Ut(p,j),N}function L(p,c,v,x){if(typeof v=="object"&&v!==null&&v.type===vn&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case Qr:e:{for(var N=v.key,k=c;k!==null;){if(k.key===N){if(N=v.type,N===vn){if(k.tag===7){n(p,k.sibling),c=l(k,v.props.children),c.return=p,p=c;break e}}else if(k.elementType===N||typeof N=="object"&&N!==null&&N.$$typeof===wt&&Hs(N)===k.type){n(p,k.sibling),c=l(k,v.props),c.ref=tr(p,k,v),c.return=p,p=c;break e}n(p,k);break}else t(p,k);k=k.sibling}v.type===vn?(c=Yt(v.props.children,p.mode,x,v.key),c.return=p,p=c):(x=xl(v.type,v.key,v.props,null,p.mode,x),x.ref=tr(p,c,v),x.return=p,p=x)}return i(p);case hn:e:{for(k=v.key;c!==null;){if(c.key===k)if(c.tag===4&&c.stateNode.containerInfo===v.containerInfo&&c.stateNode.implementation===v.implementation){n(p,c.sibling),c=l(c,v.children||[]),c.return=p,p=c;break e}else{n(p,c);break}else t(p,c);c=c.sibling}c=Ho(v,p.mode,x),c.return=p,p=c}return i(p);case wt:return k=v._init,L(p,c,k(v._payload),x)}if(or(v))return w(p,c,v,x);if(Zn(v))return E(p,c,v,x);nl(p,v)}return typeof v=="string"&&v!==""||typeof v=="number"?(v=""+v,c!==null&&c.tag===6?(n(p,c.sibling),c=l(c,v),c.return=p,p=c):(n(p,c),c=Uo(v,p.mode,x),c.return=p,p=c),i(p)):n(p,c)}return L}var In=Hc(!0),Vc=Hc(!1),Br={},et=Dt(Br),Lr=Dt(Br),Or=Dt(Br);function Gt(e){if(e===Br)throw Error(S(174));return e}function ku(e,t){switch(U(Or,t),U(Lr,e),U(et,Br),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:oi(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=oi(t,e)}W(et),U(et,t)}function Dn(){W(et),W(Lr),W(Or)}function Wc(e){Gt(Or.current);var t=Gt(et.current),n=oi(t,e.type);t!==n&&(U(Lr,e),U(et,n))}function Cu(e){Lr.current===e&&(W(et),W(Lr))}var G=Dt(0);function Il(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 zo=[];function _u(){for(var e=0;en?n:4,e(!0);var r=$o.transition;$o.transition={};try{e(!1),t()}finally{D=n,$o.transition=r}}function uf(){return Ae().memoizedState}function Vm(e,t,n){var r=Pt(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},sf(e))af(t,n);else if(n=Dc(e,t,n,r),n!==null){var l=me();Qe(n,e,r,l),cf(n,t,r)}}function Wm(e,t,n){var r=Pt(e),l={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(sf(e))af(t,l);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var i=t.lastRenderedState,u=o(i,n);if(l.hasEagerState=!0,l.eagerState=u,Ke(u,i)){var s=t.interleaved;s===null?(l.next=l,Su(t)):(l.next=s.next,s.next=l),t.interleaved=l;return}}catch{}finally{}n=Dc(e,t,l,r),n!==null&&(l=me(),Qe(n,e,r,l),cf(n,t,r))}}function sf(e){var t=e.alternate;return e===X||t!==null&&t===X}function af(e,t){mr=Dl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function cf(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,uu(e,n)}}var Al={readContext:De,useCallback:ue,useContext:ue,useEffect:ue,useImperativeHandle:ue,useInsertionEffect:ue,useLayoutEffect:ue,useMemo:ue,useReducer:ue,useRef:ue,useState:ue,useDebugValue:ue,useDeferredValue:ue,useTransition:ue,useMutableSource:ue,useSyncExternalStore:ue,useId:ue,unstable_isNewReconciler:!1},Qm={readContext:De,useCallback:function(e,t){return Je().memoizedState=[e,t===void 0?null:t],e},useContext:De,useEffect:Ws,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,vl(4194308,4,tf.bind(null,t,e),n)},useLayoutEffect:function(e,t){return vl(4194308,4,e,t)},useInsertionEffect:function(e,t){return vl(4,2,e,t)},useMemo:function(e,t){var n=Je();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Je();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=Vm.bind(null,X,e),[r.memoizedState,e]},useRef:function(e){var t=Je();return e={current:e},t.memoizedState=e},useState:Vs,useDebugValue:Ou,useDeferredValue:function(e){return Je().memoizedState=e},useTransition:function(){var e=Vs(!1),t=e[0];return e=Hm.bind(null,e[1]),Je().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=X,l=Je();if(Q){if(n===void 0)throw Error(S(407));n=n()}else{if(n=t(),ne===null)throw Error(S(349));bt&30||Gc(r,t,n)}l.memoizedState=n;var o={value:n,getSnapshot:t};return l.queue=o,Ws(Yc.bind(null,r,o,e),[e]),r.flags|=2048,Fr(9,Xc.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=Je(),t=ne.identifierPrefix;if(Q){var n=it,r=ot;n=(r&~(1<<32-We(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Rr++,0")&&(s=s.replace("",e.displayName)),s}while(1<=i&&0<=u);break}}}finally{So=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?or(e):""}function Ep(e){switch(e.tag){case 5:return or(e.type);case 16:return or("Lazy");case 13:return or("Suspense");case 19:return or("SuspenseList");case 0:case 2:case 15:return e=Eo(e.type,!1),e;case 11:return e=Eo(e.type.render,!1),e;case 1:return e=Eo(e.type,!0),e;default:return""}}function ti(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 gn:return"Fragment";case vn:return"Portal";case qo:return"Profiler";case ru:return"StrictMode";case bo:return"Suspense";case ei:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Ua:return(e.displayName||"Context")+".Consumer";case Ba:return(e._context.displayName||"Context")+".Provider";case lu:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ou:return t=e.displayName||null,t!==null?t:ti(e.type)||"Memo";case wt:t=e._payload,e=e._init;try{return ti(e(t))}catch{}}return null}function kp(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 ti(t);case 8:return t===ru?"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 zt(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Va(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Cp(e){var t=Va(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 l=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(i){r=""+i,o.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Kr(e){e._valueTracker||(e._valueTracker=Cp(e))}function Wa(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Va(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function El(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 ni(e,t){var n=t.checked;return Y({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function us(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=zt(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 Qa(e,t){t=t.checked,t!=null&&nu(e,"checked",t,!1)}function ri(e,t){Qa(e,t);var n=zt(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")?li(e,t.type,n):t.hasOwnProperty("defaultValue")&&li(e,t.type,zt(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function ss(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 li(e,t,n){(t!=="number"||El(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var ir=Array.isArray;function Ln(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=Gr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function xr(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var cr={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},Np=["Webkit","ms","Moz","O"];Object.keys(cr).forEach(function(e){Np.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),cr[t]=cr[e]})});function Ya(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||cr.hasOwnProperty(e)&&cr[e]?(""+t).trim():t+"px"}function Za(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=Ya(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var Tp=Y({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 ui(e,t){if(t){if(Tp[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 si(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 ai=null;function iu(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ci=null,Rn=null,On=null;function fs(e){if(e=Ar(e)){if(typeof ci!="function")throw Error(E(280));var t=e.stateNode;t&&(t=no(t),ci(e.stateNode,e.type,t))}}function Ja(e){Rn?On?On.push(e):On=[e]:Rn=e}function qa(){if(Rn){var e=Rn,t=On;if(On=Rn=null,fs(e),t)for(e=0;e>>=0,e===0?32:31-(Ip(e)/Dp|0)|0}var Xr=64,Yr=4194304;function ur(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 Tl(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,l=e.suspendedLanes,o=e.pingedLanes,i=n&268435455;if(i!==0){var u=i&~l;u!==0?r=ur(u):(o&=i,o!==0&&(r=ur(o)))}else i=n&~l,i!==0?r=ur(i):o!==0&&(r=ur(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&l)&&(l=r&-r,o=t&-t,l>=o||l===16&&(o&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 Ir(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-We(t),e[t]=n}function Hp(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=dr),xs=String.fromCharCode(32),Ss=!1;function yc(e,t){switch(e){case"keyup":return vm.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function wc(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var yn=!1;function ym(e,t){switch(e){case"compositionend":return wc(t);case"keypress":return t.which!==32?null:(Ss=!0,xs);case"textInput":return e=t.data,e===xs&&Ss?null:e;default:return null}}function wm(e,t){if(yn)return e==="compositionend"||!mu&&yc(e,t)?(e=vc(),dl=fu=Ct=null,yn=!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=Ns(n)}}function kc(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?kc(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Cc(){for(var e=window,t=El();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=El(e.document)}return t}function hu(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 jm(e){var t=Cc(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&kc(n.ownerDocument.documentElement,n)){if(r!==null&&hu(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 l=n.textContent.length,o=Math.min(r.start,l);r=r.end===void 0?o:Math.min(r.end,l),!e.extend&&o>r&&(l=r,r=o,o=l),l=Ts(n,o);var i=Ts(n,r);l&&i&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.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,wn=null,vi=null,mr=null,gi=!1;function _s(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;gi||wn==null||wn!==El(r)||(r=wn,"selectionStart"in r&&hu(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}),mr&&Tr(mr,r)||(mr=r,r=Ll(vi,"onSelect"),0En||(e.current=ki[En],ki[En]=null,En--)}function U(e,t){En++,ki[En]=e.current,e.current=t}var $t={},de=At($t),Se=At(!1),bt=$t;function $n(e,t){var n=e.type.contextTypes;if(!n)return $t;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},o;for(o in n)l[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function Ee(e){return e=e.childContextTypes,e!=null}function Ol(){W(Se),W(de)}function Ms(e,t,n){if(de.current!==$t)throw Error(E(168));U(de,t),U(Se,n)}function Fc(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in t))throw Error(E(108,kp(e)||"Unknown",l));return Y({},n,r)}function Pl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||$t,bt=de.current,U(de,e),U(Se,Se.current),!0}function zs(e,t,n){var r=e.stateNode;if(!r)throw Error(E(169));n?(e=Fc(e,t,bt),r.__reactInternalMemoizedMergedChildContext=e,W(Se),W(de),U(de,e)):W(Se),U(Se,n)}var lt=null,ro=!1,$o=!1;function Mc(e){lt===null?lt=[e]:lt.push(e)}function Bm(e){ro=!0,Mc(e)}function Bt(){if(!$o&<!==null){$o=!0;var e=0,t=D;try{var n=lt;for(D=1;e>=i,l-=i,ot=1<<32-We(t)+l|n<j?(B=N,N=null):B=N.sibling;var P=p(h,N,g[j],x);if(P===null){N===null&&(N=B);break}e&&N&&P.alternate===null&&t(h,N),f=o(P,f,j),k===null?T=P:k.sibling=P,k=P,N=B}if(j===g.length)return n(h,N),Q&&Vt(h,j),T;if(N===null){for(;jj?(B=N,N=null):B=N.sibling;var se=p(h,N,P.value,x);if(se===null){N===null&&(N=B);break}e&&N&&se.alternate===null&&t(h,N),f=o(se,f,j),k===null?T=se:k.sibling=se,k=se,N=B}if(P.done)return n(h,N),Q&&Vt(h,j),T;if(N===null){for(;!P.done;j++,P=g.next())P=m(h,P.value,x),P!==null&&(f=o(P,f,j),k===null?T=P:k.sibling=P,k=P);return Q&&Vt(h,j),T}for(N=r(h,N);!P.done;j++,P=g.next())P=y(N,h,j,P.value,x),P!==null&&(e&&P.alternate!==null&&N.delete(P.key===null?j:P.key),f=o(P,f,j),k===null?T=P:k.sibling=P,k=P);return e&&N.forEach(function(Ge){return t(h,Ge)}),Q&&Vt(h,j),T}function L(h,f,g,x){if(typeof g=="object"&&g!==null&&g.type===gn&&g.key===null&&(g=g.props.children),typeof g=="object"&&g!==null){switch(g.$$typeof){case Qr:e:{for(var T=g.key,k=f;k!==null;){if(k.key===T){if(T=g.type,T===gn){if(k.tag===7){n(h,k.sibling),f=l(k,g.props.children),f.return=h,h=f;break e}}else if(k.elementType===T||typeof T=="object"&&T!==null&&T.$$typeof===wt&&Hs(T)===k.type){n(h,k.sibling),f=l(k,g.props),f.ref=nr(h,k,g),f.return=h,h=f;break e}n(h,k);break}else t(h,k);k=k.sibling}g.type===gn?(f=Jt(g.props.children,h.mode,x,g.key),f.return=h,h=f):(x=xl(g.type,g.key,g.props,null,h.mode,x),x.ref=nr(h,f,g),x.return=h,h=x)}return i(h);case vn:e:{for(k=g.key;f!==null;){if(f.key===k)if(f.tag===4&&f.stateNode.containerInfo===g.containerInfo&&f.stateNode.implementation===g.implementation){n(h,f.sibling),f=l(f,g.children||[]),f.return=h,h=f;break e}else{n(h,f);break}else t(h,f);f=f.sibling}f=Wo(g,h.mode,x),f.return=h,h=f}return i(h);case wt:return k=g._init,L(h,f,k(g._payload),x)}if(ir(g))return w(h,f,g,x);if(Jn(g))return S(h,f,g,x);nl(h,g)}return typeof g=="string"&&g!==""||typeof g=="number"?(g=""+g,f!==null&&f.tag===6?(n(h,f.sibling),f=l(f,g),f.return=h,h=f):(n(h,f),f=Vo(g,h.mode,x),f.return=h,h=f),i(h)):n(h,f)}return L}var Dn=Hc(!0),Vc=Hc(!1),Br={},et=At(Br),Rr=At(Br),Or=At(Br);function Yt(e){if(e===Br)throw Error(E(174));return e}function Cu(e,t){switch(U(Or,t),U(Rr,e),U(et,Br),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:ii(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=ii(t,e)}W(et),U(et,t)}function An(){W(et),W(Rr),W(Or)}function Wc(e){Yt(Or.current);var t=Yt(et.current),n=ii(t,e.type);t!==n&&(U(Rr,e),U(et,n))}function Nu(e){Rr.current===e&&(W(et),W(Rr))}var G=At(0);function Dl(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 Io=[];function Tu(){for(var e=0;en?n:4,e(!0);var r=Do.transition;Do.transition={};try{e(!1),t()}finally{D=n,Do.transition=r}}function uf(){return Ae().memoizedState}function Wm(e,t,n){var r=Pt(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},sf(e))af(t,n);else if(n=Dc(e,t,n,r),n!==null){var l=he();Qe(n,e,r,l),cf(n,t,r)}}function Qm(e,t,n){var r=Pt(e),l={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(sf(e))af(t,l);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var i=t.lastRenderedState,u=o(i,n);if(l.hasEagerState=!0,l.eagerState=u,Ke(u,i)){var s=t.interleaved;s===null?(l.next=l,Eu(t)):(l.next=s.next,s.next=l),t.interleaved=l;return}}catch{}finally{}n=Dc(e,t,l,r),n!==null&&(l=he(),Qe(n,e,r,l),cf(n,t,r))}}function sf(e){var t=e.alternate;return e===X||t!==null&&t===X}function af(e,t){hr=Al=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function cf(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,su(e,n)}}var Bl={readContext:De,useCallback:ae,useContext:ae,useEffect:ae,useImperativeHandle:ae,useInsertionEffect:ae,useLayoutEffect:ae,useMemo:ae,useReducer:ae,useRef:ae,useState:ae,useDebugValue:ae,useDeferredValue:ae,useTransition:ae,useMutableSource:ae,useSyncExternalStore:ae,useId:ae,unstable_isNewReconciler:!1},Km={readContext:De,useCallback:function(e,t){return Je().memoizedState=[e,t===void 0?null:t],e},useContext:De,useEffect:Ws,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,vl(4194308,4,tf.bind(null,t,e),n)},useLayoutEffect:function(e,t){return vl(4194308,4,e,t)},useInsertionEffect:function(e,t){return vl(4,2,e,t)},useMemo:function(e,t){var n=Je();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Je();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=Wm.bind(null,X,e),[r.memoizedState,e]},useRef:function(e){var t=Je();return e={current:e},t.memoizedState=e},useState:Vs,useDebugValue:Ou,useDeferredValue:function(e){return Je().memoizedState=e},useTransition:function(){var e=Vs(!1),t=e[0];return e=Vm.bind(null,e[1]),Je().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=X,l=Je();if(Q){if(n===void 0)throw Error(E(407));n=n()}else{if(n=t(),le===null)throw Error(E(349));tn&30||Gc(r,t,n)}l.memoizedState=n;var o={value:n,getSnapshot:t};return l.queue=o,Ws(Yc.bind(null,r,o,e),[e]),r.flags|=2048,Mr(9,Xc.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=Je(),t=le.identifierPrefix;if(Q){var n=it,r=ot;n=(r&~(1<<32-We(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Pr++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[qe]=t,e[jr]=r,wf(e,t,!1,!1),t.stateNode=e;e:{switch(i=ui(n,r),n){case"dialog":V("cancel",e),V("close",e),l=r;break;case"iframe":case"object":case"embed":V("load",e),l=r;break;case"video":case"audio":for(l=0;lBn&&(t.flags|=128,r=!0,nr(o,!1),t.lanes=4194304)}else{if(!r)if(e=Il(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),nr(o,!0),o.tail===null&&o.tailMode==="hidden"&&!i.alternate&&!Q)return se(t),null}else 2*J()-o.renderingStartTime>Bn&&n!==1073741824&&(t.flags|=128,r=!0,nr(o,!1),t.lanes=4194304);o.isBackwards?(i.sibling=t.child,t.child=i):(n=o.last,n!==null?n.sibling=i:t.child=i,o.last=i)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=J(),t.sibling=null,n=G.current,U(G,r?n&1|2:n&1),t):(se(t),null);case 22:case 23:return $u(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Ce&1073741824&&(se(t),t.subtreeFlags&6&&(t.flags|=8192)):se(t),null;case 24:return null;case 25:return null}throw Error(S(156,t.tag))}function bm(e,t){switch(vu(t),t.tag){case 1:return Ee(t.type)&&Ol(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Dn(),W(Se),W(ce),_u(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Cu(t),null;case 13:if(W(G),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(S(340));$n()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return W(G),null;case 4:return Dn(),null;case 10:return xu(t.type._context),null;case 22:case 23:return $u(),null;case 24:return null;default:return null}}var ll=!1,ae=!1,eh=typeof WeakSet=="function"?WeakSet:Set,T=null;function _n(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Z(e,t,r)}else n.current=null}function Mi(e,t,n){try{n()}catch(r){Z(e,t,r)}}var bs=!1;function th(e,t){if(yi=Nl,e=Cc(),mu(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 l=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var i=0,u=-1,s=-1,a=0,m=0,h=e,d=null;t:for(;;){for(var g;h!==n||l!==0&&h.nodeType!==3||(u=i+l),h!==o||r!==0&&h.nodeType!==3||(s=i+r),h.nodeType===3&&(i+=h.nodeValue.length),(g=h.firstChild)!==null;)d=h,h=g;for(;;){if(h===e)break t;if(d===n&&++a===l&&(u=i),d===o&&++m===r&&(s=i),(g=h.nextSibling)!==null)break;h=d,d=h.parentNode}h=g}n=u===-1||s===-1?null:{start:u,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(gi={focusedElem:e,selectionRange:n},Nl=!1,T=t;T!==null;)if(t=T,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,T=e;else for(;T!==null;){t=T;try{var w=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(w!==null){var E=w.memoizedProps,L=w.memoizedState,p=t.stateNode,c=p.getSnapshotBeforeUpdate(t.elementType===t.type?E:Ue(t.type,E),L);p.__reactInternalSnapshotBeforeUpdate=c}break;case 3:var v=t.stateNode.containerInfo;v.nodeType===1?v.textContent="":v.nodeType===9&&v.documentElement&&v.removeChild(v.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(S(163))}}catch(x){Z(t,t.return,x)}if(e=t.sibling,e!==null){e.return=t.return,T=e;break}T=t.return}return w=bs,bs=!1,w}function hr(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var o=l.destroy;l.destroy=void 0,o!==void 0&&Mi(t,n,o)}l=l.next}while(l!==r)}}function oo(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 zi(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 Ef(e){var t=e.alternate;t!==null&&(e.alternate=null,Ef(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[qe],delete t[jr],delete t[Si],delete t[Im],delete t[Dm])),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 kf(e){return e.tag===5||e.tag===3||e.tag===4}function ea(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||kf(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 $i(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=Ll));else if(r!==4&&(e=e.child,e!==null))for($i(e,t,n),e=e.sibling;e!==null;)$i(e,t,n),e=e.sibling}function Ii(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(Ii(e,t,n),e=e.sibling;e!==null;)Ii(e,t,n),e=e.sibling}var re=null,He=!1;function yt(e,t,n){for(n=n.child;n!==null;)Cf(e,t,n),n=n.sibling}function Cf(e,t,n){if(be&&typeof be.onCommitFiberUnmount=="function")try{be.onCommitFiberUnmount(Jl,n)}catch{}switch(n.tag){case 5:ae||_n(n,t);case 6:var r=re,l=He;re=null,yt(e,t,n),re=r,He=l,re!==null&&(He?(e=re,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):re.removeChild(n.stateNode));break;case 18:re!==null&&(He?(e=re,n=n.stateNode,e.nodeType===8?Fo(e.parentNode,n):e.nodeType===1&&Fo(e,n),kr(e)):Fo(re,n.stateNode));break;case 4:r=re,l=He,re=n.stateNode.containerInfo,He=!0,yt(e,t,n),re=r,He=l;break;case 0:case 11:case 14:case 15:if(!ae&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var o=l,i=o.destroy;o=o.tag,i!==void 0&&(o&2||o&4)&&Mi(n,t,i),l=l.next}while(l!==r)}yt(e,t,n);break;case 1:if(!ae&&(_n(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(u){Z(n,t,u)}yt(e,t,n);break;case 21:yt(e,t,n);break;case 22:n.mode&1?(ae=(r=ae)||n.memoizedState!==null,yt(e,t,n),ae=r):yt(e,t,n);break;default:yt(e,t,n)}}function ta(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new eh),t.forEach(function(r){var l=ch.bind(null,e,r);n.has(r)||(n.add(r),r.then(l,l))})}}function Be(e,t){var n=t.deletions;if(n!==null)for(var r=0;rl&&(l=i),r&=~o}if(r=l,r=J()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*rh(r/1960))-r,10e?16:e,_t===null)var r=!1;else{if(e=_t,_t=null,Hl=0,z&6)throw Error(S(331));var l=z;for(z|=4,T=e.current;T!==null;){var o=T,i=o.child;if(T.flags&16){var u=o.deletions;if(u!==null){for(var s=0;sJ()-Mu?Xt(e,0):Fu|=n),ke(e,t)}function Pf(e,t){t===0&&(e.mode&1?(t=Yr,Yr<<=1,!(Yr&130023424)&&(Yr=4194304)):t=1);var n=me();e=ft(e,t),e!==null&&(Ir(e,t,n),ke(e,n))}function ah(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Pf(e,n)}function ch(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(S(314))}r!==null&&r.delete(t),Pf(e,n)}var Ff;Ff=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Se.current)xe=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return xe=!1,Jm(e,t,n);xe=!!(e.flags&131072)}else xe=!1,Q&&t.flags&1048576&&zc(t,Fl,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;yl(e,t),e=t.pendingProps;var l=zn(t,ce.current);Pn(t,n),l=Tu(null,t,r,e,l,n);var o=ju();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ee(r)?(o=!0,Rl(t)):o=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,Eu(t),l.updater=ro,t.stateNode=l,l._reactInternals=t,Ti(t,r,e,n),t=Oi(null,t,r,!0,o,n)):(t.tag=0,Q&&o&&hu(t),de(null,t,l,n),t=t.child),t;case 16:r=t.elementType;e:{switch(yl(e,t),e=t.pendingProps,l=r._init,r=l(r._payload),t.type=r,l=t.tag=dh(r),e=Ue(r,e),l){case 0:t=Li(null,t,r,e,n);break e;case 1:t=Zs(null,t,r,e,n);break e;case 11:t=Xs(null,t,r,e,n);break e;case 14:t=Ys(null,t,r,Ue(r.type,e),n);break e}throw Error(S(306,r,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ue(r,l),Li(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ue(r,l),Zs(e,t,r,l,n);case 3:e:{if(vf(t),e===null)throw Error(S(387));r=t.pendingProps,o=t.memoizedState,l=o.element,Ac(e,t),$l(t,r,null,n);var i=t.memoizedState;if(r=i.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){l=An(Error(S(423)),t),t=Js(e,t,r,n,l);break e}else if(r!==l){l=An(Error(S(424)),t),t=Js(e,t,r,n,l);break e}else for(_e=Lt(t.stateNode.containerInfo.firstChild),Ne=t,Q=!0,Ve=null,n=Vc(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if($n(),r===l){t=dt(e,t,n);break e}de(e,t,r,n)}t=t.child}return t;case 5:return Wc(t),e===null&&Ci(t),r=t.type,l=t.pendingProps,o=e!==null?e.memoizedProps:null,i=l.children,wi(r,l)?i=null:o!==null&&wi(r,o)&&(t.flags|=32),hf(e,t),de(e,t,i,n),t.child;case 6:return e===null&&Ci(t),null;case 13:return yf(e,t,n);case 4:return ku(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=In(t,null,r,n):de(e,t,r,n),t.child;case 11:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ue(r,l),Xs(e,t,r,l,n);case 7:return de(e,t,t.pendingProps,n),t.child;case 8:return de(e,t,t.pendingProps.children,n),t.child;case 12:return de(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,l=t.pendingProps,o=t.memoizedProps,i=l.value,U(Ml,r._currentValue),r._currentValue=i,o!==null)if(Ke(o.value,i)){if(o.children===l.children&&!Se.current){t=dt(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var u=o.dependencies;if(u!==null){i=o.child;for(var s=u.firstContext;s!==null;){if(s.context===r){if(o.tag===1){s=ut(-1,n&-n),s.tag=2;var a=o.updateQueue;if(a!==null){a=a.shared;var m=a.pending;m===null?s.next=s:(s.next=m.next,m.next=s),a.pending=s}}o.lanes|=n,s=o.alternate,s!==null&&(s.lanes|=n),_i(o.return,n,t),u.lanes|=n;break}s=s.next}}else if(o.tag===10)i=o.type===t.type?null:o.child;else if(o.tag===18){if(i=o.return,i===null)throw Error(S(341));i.lanes|=n,u=i.alternate,u!==null&&(u.lanes|=n),_i(i,n,t),i=o.sibling}else i=o.child;if(i!==null)i.return=o;else for(i=o;i!==null;){if(i===t){i=null;break}if(o=i.sibling,o!==null){o.return=i.return,i=o;break}i=i.return}o=i}de(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,r=t.pendingProps.children,Pn(t,n),l=De(l),r=r(l),t.flags|=1,de(e,t,r,n),t.child;case 14:return r=t.type,l=Ue(r,t.pendingProps),l=Ue(r.type,l),Ys(e,t,r,l,n);case 15:return pf(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ue(r,l),yl(e,t),t.tag=1,Ee(r)?(e=!0,Rl(t)):e=!1,Pn(t,n),Uc(t,r,l),Ti(t,r,l,n),Oi(null,t,r,!0,e,n);case 19:return gf(e,t,n);case 22:return mf(e,t,n)}throw Error(S(156,t.tag))};function Mf(e,t){return oc(e,t)}function fh(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 $e(e,t,n,r){return new fh(e,t,n,r)}function Du(e){return e=e.prototype,!(!e||!e.isReactComponent)}function dh(e){if(typeof e=="function")return Du(e)?1:0;if(e!=null){if(e=e.$$typeof,e===ru)return 11;if(e===lu)return 14}return 2}function Ft(e,t){var n=e.alternate;return n===null?(n=$e(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 xl(e,t,n,r,l,o){var i=2;if(r=e,typeof e=="function")Du(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case vn:return Yt(n.children,l,o,t);case nu:i=8,l|=8;break;case Jo:return e=$e(12,n,t,l|2),e.elementType=Jo,e.lanes=o,e;case qo:return e=$e(13,n,t,l),e.elementType=qo,e.lanes=o,e;case bo:return e=$e(19,n,t,l),e.elementType=bo,e.lanes=o,e;case Ha:return uo(n,l,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Ba:i=10;break e;case Ua:i=9;break e;case ru:i=11;break e;case lu:i=14;break e;case wt:i=16,r=null;break e}throw Error(S(130,e==null?e:typeof e,""))}return t=$e(i,n,t,l),t.elementType=e,t.type=r,t.lanes=o,t}function Yt(e,t,n,r){return e=$e(7,e,r,t),e.lanes=n,e}function uo(e,t,n,r){return e=$e(22,e,r,t),e.elementType=Ha,e.lanes=n,e.stateNode={isHidden:!1},e}function Uo(e,t,n){return e=$e(6,e,null,t),e.lanes=n,e}function Ho(e,t,n){return t=$e(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function ph(e,t,n,r,l){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=Eo(0),this.expirationTimes=Eo(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Eo(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function Au(e,t,n,r,l,o,i,u,s){return e=new ph(e,t,n,u,s),t===1?(t=1,o===!0&&(t|=8)):t=0,o=$e(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Eu(o),e}function mh(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Df)}catch(e){console.error(e)}}Df(),za.exports=je;var Af=za.exports;const Tn=Yl(Af);var aa=Af;Yo.createRoot=aa.createRoot,Yo.hydrateRoot=aa.hydrateRoot;const on=y.createContext({listTorrents:()=>{throw new Error("Function not implemented.")},getTorrentDetails:()=>{throw new Error("Function not implemented.")},getTorrentStats:()=>{throw new Error("Function not implemented.")},uploadTorrent:()=>{throw new Error("Function not implemented.")},pause:()=>{throw new Error("Function not implemented.")},start:()=>{throw new Error("Function not implemented.")},forget:()=>{throw new Error("Function not implemented.")},delete:()=>{throw new Error("Function not implemented.")}}),Ur=y.createContext({setCloseableError:e=>{},refreshTorrents:()=>{}}),Bf=y.createContext({refresh:()=>{}});var Uf={exports:{}};/*! +`+o.stack}return{value:e,source:t,stack:l,digest:null}}function Uo(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function Li(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var Ym=typeof WeakMap=="function"?WeakMap:Map;function ff(e,t,n){n=ut(-1,n),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Hl||(Hl=!0,Ai=r),Li(e,t)},n}function df(e,t,n){n=ut(-1,n),n.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r=="function"){var l=t.value;n.payload=function(){return r(l)},n.callback=function(){Li(e,t)}}var o=e.stateNode;return o!==null&&typeof o.componentDidCatch=="function"&&(n.callback=function(){Li(e,t),typeof r!="function"&&(Ot===null?Ot=new Set([this]):Ot.add(this));var i=t.stack;this.componentDidCatch(t.value,{componentStack:i!==null?i:""})}),n}function Qs(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Ym;var l=new Set;r.set(t,l)}else l=r.get(t),l===void 0&&(l=new Set,r.set(t,l));l.has(n)||(l.add(n),e=ah.bind(null,e,t,n),t.then(e,e))}function Ks(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 Gs(e,t,n,r,l){return e.mode&1?(e.flags|=65536,e.lanes=l,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=ut(-1,1),t.tag=2,Rt(n,t,1))),n.lanes|=1),e)}var Zm=mt.ReactCurrentOwner,xe=!1;function me(e,t,n,r){t.child=e===null?Vc(t,null,n,r):Dn(t,e.child,n,r)}function Xs(e,t,n,r,l){n=n.render;var o=t.ref;return Fn(t,l),r=ju(e,t,n,r,o,l),n=Lu(),e!==null&&!xe?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~l,dt(e,t,l)):(Q&&n&&vu(t),t.flags|=1,me(e,t,r,l),t.child)}function Ys(e,t,n,r,l){if(e===null){var o=n.type;return typeof o=="function"&&!Au(o)&&o.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(t.tag=15,t.type=o,pf(e,t,o,r,l)):(e=xl(n.type,null,r,t,t.mode,l),e.ref=t.ref,e.return=t,t.child=e)}if(o=e.child,!(e.lanes&l)){var i=o.memoizedProps;if(n=n.compare,n=n!==null?n:Tr,n(i,r)&&e.ref===t.ref)return dt(e,t,l)}return t.flags|=1,e=Ft(o,r),e.ref=t.ref,e.return=t,t.child=e}function pf(e,t,n,r,l){if(e!==null){var o=e.memoizedProps;if(Tr(o,r)&&e.ref===t.ref)if(xe=!1,t.pendingProps=r=o,(e.lanes&l)!==0)e.flags&131072&&(xe=!0);else return t.lanes=e.lanes,dt(e,t,l)}return Ri(e,t,n,r,l)}function mf(e,t,n){var r=t.pendingProps,l=r.children,o=e!==null?e.memoizedState:null;if(r.mode==="hidden")if(!(t.mode&1))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},U(_n,Ce),Ce|=n;else{if(!(n&1073741824))return e=o!==null?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,U(_n,Ce),Ce|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=o!==null?o.baseLanes:n,U(_n,Ce),Ce|=r}else o!==null?(r=o.baseLanes|n,t.memoizedState=null):r=n,U(_n,Ce),Ce|=r;return me(e,t,l,n),t.child}function hf(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Ri(e,t,n,r,l){var o=Ee(n)?bt:de.current;return o=$n(t,o),Fn(t,l),n=ju(e,t,n,r,o,l),r=Lu(),e!==null&&!xe?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~l,dt(e,t,l)):(Q&&r&&vu(t),t.flags|=1,me(e,t,n,l),t.child)}function Zs(e,t,n,r,l){if(Ee(n)){var o=!0;Pl(t)}else o=!1;if(Fn(t,l),t.stateNode===null)gl(e,t),Uc(t,n,r),ji(t,n,r,l),r=!0;else if(e===null){var i=t.stateNode,u=t.memoizedProps;i.props=u;var s=i.context,a=n.contextType;typeof a=="object"&&a!==null?a=De(a):(a=Ee(n)?bt:de.current,a=$n(t,a));var d=n.getDerivedStateFromProps,m=typeof d=="function"||typeof i.getSnapshotBeforeUpdate=="function";m||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(u!==r||s!==a)&&Us(t,i,r,a),xt=!1;var p=t.memoizedState;i.state=p,Il(t,r,i,l),s=t.memoizedState,u!==r||p!==s||Se.current||xt?(typeof d=="function"&&(_i(t,n,d,r),s=t.memoizedState),(u=xt||Bs(t,n,u,r,p,s,a))?(m||typeof i.UNSAFE_componentWillMount!="function"&&typeof i.componentWillMount!="function"||(typeof i.componentWillMount=="function"&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount=="function"&&i.UNSAFE_componentWillMount()),typeof i.componentDidMount=="function"&&(t.flags|=4194308)):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=a,r=u):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),r=!1)}else{i=t.stateNode,Ac(e,t),u=t.memoizedProps,a=t.type===t.elementType?u:Ue(t.type,u),i.props=a,m=t.pendingProps,p=i.context,s=n.contextType,typeof s=="object"&&s!==null?s=De(s):(s=Ee(n)?bt:de.current,s=$n(t,s));var y=n.getDerivedStateFromProps;(d=typeof y=="function"||typeof i.getSnapshotBeforeUpdate=="function")||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(u!==m||p!==s)&&Us(t,i,r,s),xt=!1,p=t.memoizedState,i.state=p,Il(t,r,i,l);var w=t.memoizedState;u!==m||p!==w||Se.current||xt?(typeof y=="function"&&(_i(t,n,y,r),w=t.memoizedState),(a=xt||Bs(t,n,a,r,p,w,s)||!1)?(d||typeof i.UNSAFE_componentWillUpdate!="function"&&typeof i.componentWillUpdate!="function"||(typeof i.componentWillUpdate=="function"&&i.componentWillUpdate(r,w,s),typeof i.UNSAFE_componentWillUpdate=="function"&&i.UNSAFE_componentWillUpdate(r,w,s)),typeof i.componentDidUpdate=="function"&&(t.flags|=4),typeof i.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof i.componentDidUpdate!="function"||u===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||u===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=w),i.props=r,i.state=w,i.context=s,r=a):(typeof i.componentDidUpdate!="function"||u===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||u===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),r=!1)}return Oi(e,t,n,r,o,l)}function Oi(e,t,n,r,l,o){hf(e,t);var i=(t.flags&128)!==0;if(!r&&!i)return l&&zs(t,n,!1),dt(e,t,o);r=t.stateNode,Zm.current=t;var u=i&&typeof n.getDerivedStateFromError!="function"?null:r.render();return t.flags|=1,e!==null&&i?(t.child=Dn(t,e.child,null,o),t.child=Dn(t,null,u,o)):me(e,t,u,o),t.memoizedState=r.state,l&&zs(t,n,!0),t.child}function vf(e){var t=e.stateNode;t.pendingContext?Ms(e,t.pendingContext,t.pendingContext!==t.context):t.context&&Ms(e,t.context,!1),Cu(e,t.containerInfo)}function Js(e,t,n,r,l){return In(),yu(l),t.flags|=256,me(e,t,n,r),t.child}var Pi={dehydrated:null,treeContext:null,retryLane:0};function Fi(e){return{baseLanes:e,cachePool:null,transitions:null}}function gf(e,t,n){var r=t.pendingProps,l=G.current,o=!1,i=(t.flags&128)!==0,u;if((u=i)||(u=e!==null&&e.memoizedState===null?!1:(l&2)!==0),u?(o=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(l|=1),U(G,l&1),e===null)return Ni(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):(i=r.children,e=r.fallback,o?(r=t.mode,o=t.child,i={mode:"hidden",children:i},!(r&1)&&o!==null?(o.childLanes=0,o.pendingProps=i):o=so(i,r,0,null),e=Jt(e,r,n,null),o.return=t,e.return=t,o.sibling=e,t.child=o,t.child.memoizedState=Fi(n),t.memoizedState=Pi,e):Pu(t,i));if(l=e.memoizedState,l!==null&&(u=l.dehydrated,u!==null))return Jm(e,t,i,r,u,l,n);if(o){o=r.fallback,i=t.mode,l=e.child,u=l.sibling;var s={mode:"hidden",children:r.children};return!(i&1)&&t.child!==l?(r=t.child,r.childLanes=0,r.pendingProps=s,t.deletions=null):(r=Ft(l,s),r.subtreeFlags=l.subtreeFlags&14680064),u!==null?o=Ft(u,o):(o=Jt(o,i,n,null),o.flags|=2),o.return=t,r.return=t,r.sibling=o,t.child=r,r=o,o=t.child,i=e.child.memoizedState,i=i===null?Fi(n):{baseLanes:i.baseLanes|n,cachePool:null,transitions:i.transitions},o.memoizedState=i,o.childLanes=e.childLanes&~n,t.memoizedState=Pi,r}return o=e.child,e=o.sibling,r=Ft(o,{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 Pu(e,t){return t=so({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function rl(e,t,n,r){return r!==null&&yu(r),Dn(t,e.child,null,n),e=Pu(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Jm(e,t,n,r,l,o,i){if(n)return t.flags&256?(t.flags&=-257,r=Uo(Error(E(422))),rl(e,t,i,r)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(o=r.fallback,l=t.mode,r=so({mode:"visible",children:r.children},l,0,null),o=Jt(o,l,i,null),o.flags|=2,r.return=t,o.return=t,r.sibling=o,t.child=r,t.mode&1&&Dn(t,e.child,null,i),t.child.memoizedState=Fi(i),t.memoizedState=Pi,o);if(!(t.mode&1))return rl(e,t,i,null);if(l.data==="$!"){if(r=l.nextSibling&&l.nextSibling.dataset,r)var u=r.dgst;return r=u,o=Error(E(419)),r=Uo(o,r,void 0),rl(e,t,i,r)}if(u=(i&e.childLanes)!==0,xe||u){if(r=le,r!==null){switch(i&-i){case 4:l=2;break;case 16:l=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:l=32;break;case 536870912:l=268435456;break;default:l=0}l=l&(r.suspendedLanes|i)?0:l,l!==0&&l!==o.retryLane&&(o.retryLane=l,ft(e,l),Qe(r,e,l,-1))}return Du(),r=Uo(Error(E(421))),rl(e,t,i,r)}return l.data==="$?"?(t.flags|=128,t.child=e.child,t=ch.bind(null,e),l._reactRetry=t,null):(e=o.treeContext,Ne=Lt(l.nextSibling),Te=t,Q=!0,Ve=null,e!==null&&(Fe[Me++]=ot,Fe[Me++]=it,Fe[Me++]=en,ot=e.id,it=e.overflow,en=t),t=Pu(t,r.children),t.flags|=4096,t)}function qs(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),Ti(e.return,t,n)}function Ho(e,t,n,r,l){var o=e.memoizedState;o===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:l}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=l)}function yf(e,t,n){var r=t.pendingProps,l=r.revealOrder,o=r.tail;if(me(e,t,r.children,n),r=G.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&&qs(e,n,t);else if(e.tag===19)qs(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(U(G,r),!(t.mode&1))t.memoizedState=null;else switch(l){case"forwards":for(n=t.child,l=null;n!==null;)e=n.alternate,e!==null&&Dl(e)===null&&(l=n),n=n.sibling;n=l,n===null?(l=t.child,t.child=null):(l=n.sibling,n.sibling=null),Ho(t,!1,l,n,o);break;case"backwards":for(n=null,l=t.child,t.child=null;l!==null;){if(e=l.alternate,e!==null&&Dl(e)===null){t.child=l;break}e=l.sibling,l.sibling=n,n=l,l=e}Ho(t,!0,n,null,o);break;case"together":Ho(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function gl(e,t){!(t.mode&1)&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function dt(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),nn|=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=Ft(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=Ft(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function qm(e,t,n){switch(t.tag){case 3:vf(t),In();break;case 5:Wc(t);break;case 1:Ee(t.type)&&Pl(t);break;case 4:Cu(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,l=t.memoizedProps.value;U(zl,r._currentValue),r._currentValue=l;break;case 13:if(r=t.memoizedState,r!==null)return r.dehydrated!==null?(U(G,G.current&1),t.flags|=128,null):n&t.child.childLanes?gf(e,t,n):(U(G,G.current&1),e=dt(e,t,n),e!==null?e.sibling:null);U(G,G.current&1);break;case 19:if(r=(n&t.childLanes)!==0,e.flags&128){if(r)return yf(e,t,n);t.flags|=128}if(l=t.memoizedState,l!==null&&(l.rendering=null,l.tail=null,l.lastEffect=null),U(G,G.current),r)break;return null;case 22:case 23:return t.lanes=0,mf(e,t,n)}return dt(e,t,n)}var wf,Mi,xf,Sf;wf=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}};Mi=function(){};xf=function(e,t,n,r){var l=e.memoizedProps;if(l!==r){e=t.stateNode,Yt(et.current);var o=null;switch(n){case"input":l=ni(e,l),r=ni(e,r),o=[];break;case"select":l=Y({},l,{value:void 0}),r=Y({},r,{value:void 0}),o=[];break;case"textarea":l=oi(e,l),r=oi(e,r),o=[];break;default:typeof l.onClick!="function"&&typeof r.onClick=="function"&&(e.onclick=Rl)}ui(n,r);var i;n=null;for(a in l)if(!r.hasOwnProperty(a)&&l.hasOwnProperty(a)&&l[a]!=null)if(a==="style"){var u=l[a];for(i in u)u.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else a!=="dangerouslySetInnerHTML"&&a!=="children"&&a!=="suppressContentEditableWarning"&&a!=="suppressHydrationWarning"&&a!=="autoFocus"&&(wr.hasOwnProperty(a)?o||(o=[]):(o=o||[]).push(a,null));for(a in r){var s=r[a];if(u=l!=null?l[a]:void 0,r.hasOwnProperty(a)&&s!==u&&(s!=null||u!=null))if(a==="style")if(u){for(i in u)!u.hasOwnProperty(i)||s&&s.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in s)s.hasOwnProperty(i)&&u[i]!==s[i]&&(n||(n={}),n[i]=s[i])}else n||(o||(o=[]),o.push(a,n)),n=s;else a==="dangerouslySetInnerHTML"?(s=s?s.__html:void 0,u=u?u.__html:void 0,s!=null&&u!==s&&(o=o||[]).push(a,s)):a==="children"?typeof s!="string"&&typeof s!="number"||(o=o||[]).push(a,""+s):a!=="suppressContentEditableWarning"&&a!=="suppressHydrationWarning"&&(wr.hasOwnProperty(a)?(s!=null&&a==="onScroll"&&V("scroll",e),o||u===s||(o=[])):(o=o||[]).push(a,s))}n&&(o=o||[]).push("style",n);var a=o;(t.updateQueue=a)&&(t.flags|=4)}};Sf=function(e,t,n,r){n!==r&&(t.flags|=4)};function rr(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 ce(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var l=e.child;l!==null;)n|=l.lanes|l.childLanes,r|=l.subtreeFlags&14680064,r|=l.flags&14680064,l.return=e,l=l.sibling;else for(l=e.child;l!==null;)n|=l.lanes|l.childLanes,r|=l.subtreeFlags,r|=l.flags,l.return=e,l=l.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function bm(e,t,n){var r=t.pendingProps;switch(gu(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return ce(t),null;case 1:return Ee(t.type)&&Ol(),ce(t),null;case 3:return r=t.stateNode,An(),W(Se),W(de),Tu(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),(e===null||e.child===null)&&(tl(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,Ve!==null&&(Hi(Ve),Ve=null))),Mi(e,t),ce(t),null;case 5:Nu(t);var l=Yt(Or.current);if(n=t.type,e!==null&&t.stateNode!=null)xf(e,t,n,r,l),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(t.stateNode===null)throw Error(E(166));return ce(t),null}if(e=Yt(et.current),tl(t)){r=t.stateNode,n=t.type;var o=t.memoizedProps;switch(r[qe]=t,r[Lr]=o,e=(t.mode&1)!==0,n){case"dialog":V("cancel",r),V("close",r);break;case"iframe":case"object":case"embed":V("load",r);break;case"video":case"audio":for(l=0;l<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[qe]=t,e[Lr]=r,wf(e,t,!1,!1),t.stateNode=e;e:{switch(i=si(n,r),n){case"dialog":V("cancel",e),V("close",e),l=r;break;case"iframe":case"object":case"embed":V("load",e),l=r;break;case"video":case"audio":for(l=0;lUn&&(t.flags|=128,r=!0,rr(o,!1),t.lanes=4194304)}else{if(!r)if(e=Dl(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),rr(o,!0),o.tail===null&&o.tailMode==="hidden"&&!i.alternate&&!Q)return ce(t),null}else 2*J()-o.renderingStartTime>Un&&n!==1073741824&&(t.flags|=128,r=!0,rr(o,!1),t.lanes=4194304);o.isBackwards?(i.sibling=t.child,t.child=i):(n=o.last,n!==null?n.sibling=i:t.child=i,o.last=i)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=J(),t.sibling=null,n=G.current,U(G,r?n&1|2:n&1),t):(ce(t),null);case 22:case 23:return Iu(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Ce&1073741824&&(ce(t),t.subtreeFlags&6&&(t.flags|=8192)):ce(t),null;case 24:return null;case 25:return null}throw Error(E(156,t.tag))}function eh(e,t){switch(gu(t),t.tag){case 1:return Ee(t.type)&&Ol(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return An(),W(Se),W(de),Tu(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Nu(t),null;case 13:if(W(G),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(E(340));In()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return W(G),null;case 4:return An(),null;case 10:return Su(t.type._context),null;case 22:case 23:return Iu(),null;case 24:return null;default:return null}}var ll=!1,fe=!1,th=typeof WeakSet=="function"?WeakSet:Set,_=null;function Tn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Z(e,t,r)}else n.current=null}function zi(e,t,n){try{n()}catch(r){Z(e,t,r)}}var bs=!1;function nh(e,t){if(yi=_l,e=Cc(),hu(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 l=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var i=0,u=-1,s=-1,a=0,d=0,m=e,p=null;t:for(;;){for(var y;m!==n||l!==0&&m.nodeType!==3||(u=i+l),m!==o||r!==0&&m.nodeType!==3||(s=i+r),m.nodeType===3&&(i+=m.nodeValue.length),(y=m.firstChild)!==null;)p=m,m=y;for(;;){if(m===e)break t;if(p===n&&++a===l&&(u=i),p===o&&++d===r&&(s=i),(y=m.nextSibling)!==null)break;m=p,p=m.parentNode}m=y}n=u===-1||s===-1?null:{start:u,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(wi={focusedElem:e,selectionRange:n},_l=!1,_=t;_!==null;)if(t=_,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,_=e;else for(;_!==null;){t=_;try{var w=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(w!==null){var S=w.memoizedProps,L=w.memoizedState,h=t.stateNode,f=h.getSnapshotBeforeUpdate(t.elementType===t.type?S:Ue(t.type,S),L);h.__reactInternalSnapshotBeforeUpdate=f}break;case 3:var g=t.stateNode.containerInfo;g.nodeType===1?g.textContent="":g.nodeType===9&&g.documentElement&&g.removeChild(g.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(E(163))}}catch(x){Z(t,t.return,x)}if(e=t.sibling,e!==null){e.return=t.return,_=e;break}_=t.return}return w=bs,bs=!1,w}function vr(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var o=l.destroy;l.destroy=void 0,o!==void 0&&zi(t,n,o)}l=l.next}while(l!==r)}}function io(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 $i(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 Ef(e){var t=e.alternate;t!==null&&(e.alternate=null,Ef(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[qe],delete t[Lr],delete t[Ei],delete t[Dm],delete t[Am])),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 kf(e){return e.tag===5||e.tag===3||e.tag===4}function ea(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||kf(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 Ii(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=Rl));else if(r!==4&&(e=e.child,e!==null))for(Ii(e,t,n),e=e.sibling;e!==null;)Ii(e,t,n),e=e.sibling}function Di(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(Di(e,t,n),e=e.sibling;e!==null;)Di(e,t,n),e=e.sibling}var oe=null,He=!1;function gt(e,t,n){for(n=n.child;n!==null;)Cf(e,t,n),n=n.sibling}function Cf(e,t,n){if(be&&typeof be.onCommitFiberUnmount=="function")try{be.onCommitFiberUnmount(ql,n)}catch{}switch(n.tag){case 5:fe||Tn(n,t);case 6:var r=oe,l=He;oe=null,gt(e,t,n),oe=r,He=l,oe!==null&&(He?(e=oe,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):oe.removeChild(n.stateNode));break;case 18:oe!==null&&(He?(e=oe,n=n.stateNode,e.nodeType===8?zo(e.parentNode,n):e.nodeType===1&&zo(e,n),Cr(e)):zo(oe,n.stateNode));break;case 4:r=oe,l=He,oe=n.stateNode.containerInfo,He=!0,gt(e,t,n),oe=r,He=l;break;case 0:case 11:case 14:case 15:if(!fe&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var o=l,i=o.destroy;o=o.tag,i!==void 0&&(o&2||o&4)&&zi(n,t,i),l=l.next}while(l!==r)}gt(e,t,n);break;case 1:if(!fe&&(Tn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(u){Z(n,t,u)}gt(e,t,n);break;case 21:gt(e,t,n);break;case 22:n.mode&1?(fe=(r=fe)||n.memoizedState!==null,gt(e,t,n),fe=r):gt(e,t,n);break;default:gt(e,t,n)}}function ta(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new th),t.forEach(function(r){var l=fh.bind(null,e,r);n.has(r)||(n.add(r),r.then(l,l))})}}function Be(e,t){var n=t.deletions;if(n!==null)for(var r=0;rl&&(l=i),r&=~o}if(r=l,r=J()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*lh(r/1960))-r,10e?16:e,Nt===null)var r=!1;else{if(e=Nt,Nt=null,Vl=0,z&6)throw Error(E(331));var l=z;for(z|=4,_=e.current;_!==null;){var o=_,i=o.child;if(_.flags&16){var u=o.deletions;if(u!==null){for(var s=0;sJ()-zu?Zt(e,0):Mu|=n),ke(e,t)}function Pf(e,t){t===0&&(e.mode&1?(t=Yr,Yr<<=1,!(Yr&130023424)&&(Yr=4194304)):t=1);var n=he();e=ft(e,t),e!==null&&(Ir(e,t,n),ke(e,n))}function ch(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Pf(e,n)}function fh(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(E(314))}r!==null&&r.delete(t),Pf(e,n)}var Ff;Ff=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Se.current)xe=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return xe=!1,qm(e,t,n);xe=!!(e.flags&131072)}else xe=!1,Q&&t.flags&1048576&&zc(t,Ml,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;gl(e,t),e=t.pendingProps;var l=$n(t,de.current);Fn(t,n),l=ju(null,t,r,e,l,n);var o=Lu();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ee(r)?(o=!0,Pl(t)):o=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,ku(t),l.updater=lo,t.stateNode=l,l._reactInternals=t,ji(t,r,e,n),t=Oi(null,t,r,!0,o,n)):(t.tag=0,Q&&o&&vu(t),me(null,t,l,n),t=t.child),t;case 16:r=t.elementType;e:{switch(gl(e,t),e=t.pendingProps,l=r._init,r=l(r._payload),t.type=r,l=t.tag=ph(r),e=Ue(r,e),l){case 0:t=Ri(null,t,r,e,n);break e;case 1:t=Zs(null,t,r,e,n);break e;case 11:t=Xs(null,t,r,e,n);break e;case 14:t=Ys(null,t,r,Ue(r.type,e),n);break e}throw Error(E(306,r,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ue(r,l),Ri(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ue(r,l),Zs(e,t,r,l,n);case 3:e:{if(vf(t),e===null)throw Error(E(387));r=t.pendingProps,o=t.memoizedState,l=o.element,Ac(e,t),Il(t,r,null,n);var i=t.memoizedState;if(r=i.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){l=Bn(Error(E(423)),t),t=Js(e,t,r,n,l);break e}else if(r!==l){l=Bn(Error(E(424)),t),t=Js(e,t,r,n,l);break e}else for(Ne=Lt(t.stateNode.containerInfo.firstChild),Te=t,Q=!0,Ve=null,n=Vc(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(In(),r===l){t=dt(e,t,n);break e}me(e,t,r,n)}t=t.child}return t;case 5:return Wc(t),e===null&&Ni(t),r=t.type,l=t.pendingProps,o=e!==null?e.memoizedProps:null,i=l.children,xi(r,l)?i=null:o!==null&&xi(r,o)&&(t.flags|=32),hf(e,t),me(e,t,i,n),t.child;case 6:return e===null&&Ni(t),null;case 13:return gf(e,t,n);case 4:return Cu(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Dn(t,null,r,n):me(e,t,r,n),t.child;case 11:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ue(r,l),Xs(e,t,r,l,n);case 7:return me(e,t,t.pendingProps,n),t.child;case 8:return me(e,t,t.pendingProps.children,n),t.child;case 12:return me(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,l=t.pendingProps,o=t.memoizedProps,i=l.value,U(zl,r._currentValue),r._currentValue=i,o!==null)if(Ke(o.value,i)){if(o.children===l.children&&!Se.current){t=dt(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var u=o.dependencies;if(u!==null){i=o.child;for(var s=u.firstContext;s!==null;){if(s.context===r){if(o.tag===1){s=ut(-1,n&-n),s.tag=2;var a=o.updateQueue;if(a!==null){a=a.shared;var d=a.pending;d===null?s.next=s:(s.next=d.next,d.next=s),a.pending=s}}o.lanes|=n,s=o.alternate,s!==null&&(s.lanes|=n),Ti(o.return,n,t),u.lanes|=n;break}s=s.next}}else if(o.tag===10)i=o.type===t.type?null:o.child;else if(o.tag===18){if(i=o.return,i===null)throw Error(E(341));i.lanes|=n,u=i.alternate,u!==null&&(u.lanes|=n),Ti(i,n,t),i=o.sibling}else i=o.child;if(i!==null)i.return=o;else for(i=o;i!==null;){if(i===t){i=null;break}if(o=i.sibling,o!==null){o.return=i.return,i=o;break}i=i.return}o=i}me(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,r=t.pendingProps.children,Fn(t,n),l=De(l),r=r(l),t.flags|=1,me(e,t,r,n),t.child;case 14:return r=t.type,l=Ue(r,t.pendingProps),l=Ue(r.type,l),Ys(e,t,r,l,n);case 15:return pf(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ue(r,l),gl(e,t),t.tag=1,Ee(r)?(e=!0,Pl(t)):e=!1,Fn(t,n),Uc(t,r,l),ji(t,r,l,n),Oi(null,t,r,!0,e,n);case 19:return yf(e,t,n);case 22:return mf(e,t,n)}throw Error(E(156,t.tag))};function Mf(e,t){return oc(e,t)}function dh(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 $e(e,t,n,r){return new dh(e,t,n,r)}function Au(e){return e=e.prototype,!(!e||!e.isReactComponent)}function ph(e){if(typeof e=="function")return Au(e)?1:0;if(e!=null){if(e=e.$$typeof,e===lu)return 11;if(e===ou)return 14}return 2}function Ft(e,t){var n=e.alternate;return n===null?(n=$e(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 xl(e,t,n,r,l,o){var i=2;if(r=e,typeof e=="function")Au(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case gn:return Jt(n.children,l,o,t);case ru:i=8,l|=8;break;case qo:return e=$e(12,n,t,l|2),e.elementType=qo,e.lanes=o,e;case bo:return e=$e(13,n,t,l),e.elementType=bo,e.lanes=o,e;case ei:return e=$e(19,n,t,l),e.elementType=ei,e.lanes=o,e;case Ha:return so(n,l,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Ba:i=10;break e;case Ua:i=9;break e;case lu:i=11;break e;case ou:i=14;break e;case wt:i=16,r=null;break e}throw Error(E(130,e==null?e:typeof e,""))}return t=$e(i,n,t,l),t.elementType=e,t.type=r,t.lanes=o,t}function Jt(e,t,n,r){return e=$e(7,e,r,t),e.lanes=n,e}function so(e,t,n,r){return e=$e(22,e,r,t),e.elementType=Ha,e.lanes=n,e.stateNode={isHidden:!1},e}function Vo(e,t,n){return e=$e(6,e,null,t),e.lanes=n,e}function Wo(e,t,n){return t=$e(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function mh(e,t,n,r,l){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=Co(0),this.expirationTimes=Co(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Co(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function Bu(e,t,n,r,l,o,i,u,s){return e=new mh(e,t,n,u,s),t===1?(t=1,o===!0&&(t|=8)):t=0,o=$e(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},ku(o),e}function hh(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Df)}catch(e){console.error(e)}}Df(),za.exports=je;var Af=za.exports;const jn=Zl(Af);var aa=Af;Zo.createRoot=aa.createRoot,Zo.hydrateRoot=aa.hydrateRoot;const Ut=v.createContext({listTorrents:()=>{throw new Error("Function not implemented.")},getTorrentDetails:()=>{throw new Error("Function not implemented.")},getTorrentStats:()=>{throw new Error("Function not implemented.")},uploadTorrent:()=>{throw new Error("Function not implemented.")},pause:()=>{throw new Error("Function not implemented.")},start:()=>{throw new Error("Function not implemented.")},forget:()=>{throw new Error("Function not implemented.")},delete:()=>{throw new Error("Function not implemented.")}}),Ur=v.createContext({setCloseableError:e=>{},refreshTorrents:()=>{}}),Bf=v.createContext({refresh:()=>{}});var Uf={exports:{}};/*! Copyright (c) 2018 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames -*/(function(e){(function(){var t={}.hasOwnProperty;function n(){for(var r=[],l=0;l=0)&&(n[l]=e[l]);return n}function ca(e){return"default"+e.charAt(0).toUpperCase()+e.substr(1)}function xh(e){var t=Sh(e,"string");return typeof t=="symbol"?t:String(t)}function Sh(e,t){if(typeof e!="object"||e===null)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Eh(e,t,n){var r=y.useRef(e!==void 0),l=y.useState(t),o=l[0],i=l[1],u=e!==void 0,s=r.current;return r.current=u,!u&&s&&o!==t&&i(t),[u?e:o,y.useCallback(function(a){for(var m=arguments.length,h=new Array(m>1?m-1:0),d=1;d{o.target===e&&(l(),t(o))},n+r)}function Kh(e){e.offsetHeight}const pa=e=>!e||typeof e=="function"?e:t=>{e.current=t};function Gh(e,t){const n=pa(e),r=pa(t);return l=>{n&&n(l),r&&r(l)}}function ho(e,t){return y.useMemo(()=>Gh(e,t),[e,t])}function Xh(e){return e&&"setState"in e?Tn.findDOMNode(e):e??null}const Yh=we.forwardRef(({onEnter:e,onEntering:t,onEntered:n,onExit:r,onExiting:l,onExited:o,addEndListener:i,children:u,childRef:s,...a},m)=>{const h=y.useRef(null),d=ho(h,s),g=k=>{d(Xh(k))},w=k=>_=>{k&&h.current&&k(h.current,_)},E=y.useCallback(w(e),[e]),L=y.useCallback(w(t),[t]),p=y.useCallback(w(n),[n]),c=y.useCallback(w(r),[r]),v=y.useCallback(w(l),[l]),x=y.useCallback(w(o),[o]),N=y.useCallback(w(i),[i]);return f.jsx(Uh,{ref:m,...a,onEnter:E,onEntered:p,onEntering:L,onExit:c,onExited:x,onExiting:v,addEndListener:N,nodeRef:h,children:typeof u=="function"?(k,_)=>u(k,{..._,ref:g}):we.cloneElement(u,{ref:g})})}),Zh=Yh;function Jh(e){const t=y.useRef(e);return y.useEffect(()=>{t.current=e},[e]),t}function ze(e){const t=Jh(e);return y.useCallback(function(...n){return t.current&&t.current(...n)},[t])}const Jf=e=>y.forwardRef((t,n)=>f.jsx("div",{...t,ref:n,className:M(t.className,e)})),qf=Jf("h4");qf.displayName="DivStyledAsH4";const bf=y.forwardRef(({className:e,bsPrefix:t,as:n=qf,...r},l)=>(t=H(t,"alert-heading"),f.jsx(n,{ref:l,className:M(e,t),...r})));bf.displayName="AlertHeading";const qh=bf;function bh(){return y.useState(null)}function ev(){const e=y.useRef(!0),t=y.useRef(()=>e.current);return y.useEffect(()=>(e.current=!0,()=>{e.current=!1}),[]),t.current}function tv(e){const t=y.useRef(null);return y.useEffect(()=>{t.current=e}),t.current}const nv=typeof global<"u"&&global.navigator&&global.navigator.product==="ReactNative",rv=typeof document<"u",ma=rv||nv?y.useLayoutEffect:y.useEffect,lv=["as","disabled"];function ov(e,t){if(e==null)return{};var n={},r=Object.keys(e),l,o;for(o=0;o=0)&&(n[l]=e[l]);return n}function iv(e){return!e||e.trim()==="#"}function Vu({tagName:e,disabled:t,href:n,target:r,rel:l,role:o,onClick:i,tabIndex:u=0,type:s}){e||(n!=null||r!=null||l!=null?e="a":e="button");const a={tagName:e};if(e==="button")return[{type:s||"button",disabled:t},a];const m=d=>{if((t||e==="a"&&iv(n))&&d.preventDefault(),t){d.stopPropagation();return}i==null||i(d)},h=d=>{d.key===" "&&(d.preventDefault(),m(d))};return e==="a"&&(n||(n="#"),t&&(n=void 0)),[{role:o??"button",disabled:void 0,tabIndex:t?void 0:u,href:n,target:e==="a"?r:void 0,"aria-disabled":t||void 0,rel:e==="a"?l:void 0,onClick:m,onKeyDown:h},a]}const uv=y.forwardRef((e,t)=>{let{as:n,disabled:r}=e,l=ov(e,lv);const[o,{tagName:i}]=Vu(Object.assign({tagName:n,disabled:r},l));return f.jsx(i,Object.assign({},l,o,{ref:t}))});uv.displayName="Button";const sv=["onKeyDown"];function av(e,t){if(e==null)return{};var n={},r=Object.keys(e),l,o;for(o=0;o=0)&&(n[l]=e[l]);return n}function cv(e){return!e||e.trim()==="#"}const ed=y.forwardRef((e,t)=>{let{onKeyDown:n}=e,r=av(e,sv);const[l]=Vu(Object.assign({tagName:"a"},r)),o=ze(i=>{l.onKeyDown(i),n==null||n(i)});return cv(r.href)||r.role==="button"?f.jsx("a",Object.assign({ref:t},r,l,{onKeyDown:o})):f.jsx("a",Object.assign({ref:t},r,{onKeyDown:n}))});ed.displayName="Anchor";const fv=ed,td=y.forwardRef(({className:e,bsPrefix:t,as:n=fv,...r},l)=>(t=H(t,"alert-link"),f.jsx(n,{ref:l,className:M(e,t),...r})));td.displayName="AlertLink";const dv=td,pv={[St]:"show",[Wt]:"show"},nd=y.forwardRef(({className:e,children:t,transitionClasses:n={},onEnter:r,...l},o)=>{const i={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1,...l},u=y.useCallback((s,a)=>{Kh(s),r==null||r(s,a)},[r]);return f.jsx(Zh,{ref:o,addEndListener:Qh,...i,onEnter:u,childRef:t.ref,children:(s,a)=>y.cloneElement(t,{...a,className:M("fade",e,t.props.className,pv[s],n[s])})})});nd.displayName="Fade";const Kl=nd,mv={"aria-label":st.string,onClick:st.func,variant:st.oneOf(["white"])},Wu=y.forwardRef(({className:e,variant:t,"aria-label":n="Close",...r},l)=>f.jsx("button",{ref:l,type:"button",className:M("btn-close",t&&`btn-close-${t}`,e),"aria-label":n,...r}));Wu.displayName="CloseButton";Wu.propTypes=mv;const rd=Wu,ld=y.forwardRef((e,t)=>{const{bsPrefix:n,show:r=!0,closeLabel:l="Close alert",closeVariant:o,className:i,children:u,variant:s="primary",onClose:a,dismissible:m,transition:h=Kl,...d}=kh(e,{show:"onClose"}),g=H(n,"alert"),w=ze(p=>{a&&a(!1,p)}),E=h===!0?Kl:h,L=f.jsxs("div",{role:"alert",...E?void 0:d,ref:t,className:M(i,g,s&&`${g}-${s}`,m&&`${g}-dismissible`),children:[m&&f.jsx(rd,{onClick:w,"aria-label":l,variant:o}),u]});return E?f.jsx(E,{unmountOnExit:!0,...d,ref:void 0,in:r,children:L}):r?L:null});ld.displayName="Alert";const ha=Object.assign(ld,{Link:dv,Heading:qh}),od=y.forwardRef(({as:e,bsPrefix:t,variant:n="primary",size:r,active:l=!1,disabled:o=!1,className:i,...u},s)=>{const a=H(t,"btn"),[m,{tagName:h}]=Vu({tagName:e,disabled:o,...u}),d=h;return f.jsx(d,{...m,...u,ref:s,disabled:o,className:M(i,a,l&&"active",n&&`${a}-${n}`,r&&`${a}-${r}`,u.href&&o&&"disabled")})});od.displayName="Button";const nn=od;function hv(e){const t=y.useRef(e);return t.current=e,t}function id(e){const t=hv(e);y.useEffect(()=>()=>t.current(),[])}function vv(e,t){let n=0;return y.Children.map(e,r=>y.isValidElement(r)?t(r,n++):r)}function yv(e,t){return y.Children.toArray(e).some(n=>y.isValidElement(n)&&n.type===t)}function gv({as:e,bsPrefix:t,className:n,...r}){t=H(t,"col");const l=Vf(),o=Wf(),i=[],u=[];return l.forEach(s=>{const a=r[s];delete r[s];let m,h,d;typeof a=="object"&&a!=null?{span:m,offset:h,order:d}=a:m=a;const g=s!==o?`-${s}`:"";m&&i.push(m===!0?`${t}${g}`:`${t}${g}-${m}`),d!=null&&u.push(`order${g}-${d}`),h!=null&&u.push(`offset${g}-${h}`)}),[{...r,className:M(n,...i,...u)},{as:e,bsPrefix:t,spans:i}]}const ud=y.forwardRef((e,t)=>{const[{className:n,...r},{as:l="div",bsPrefix:o,spans:i}]=gv(e);return f.jsx(l,{...r,ref:t,className:M(n,!i.length&&o)})});ud.displayName="Col";const Qu=ud,sd=y.forwardRef(({bsPrefix:e,fluid:t=!1,as:n="div",className:r,...l},o)=>{const i=H(e,"container"),u=typeof t=="string"?`-${t}`:"-fluid";return f.jsx(n,{ref:o,...l,className:M(r,t?`${i}${u}`:i)})});sd.displayName="Container";const wv=sd;var xv=Function.prototype.bind.call(Function.prototype.call,[].slice);function pn(e,t){return xv(e.querySelectorAll(t))}function va(e,t){if(e.contains)return e.contains(t);if(e.compareDocumentPosition)return e===t||!!(e.compareDocumentPosition(t)&16)}const Sv="data-rr-ui-";function Ev(e){return`${Sv}${e}`}const ad=y.createContext(Qn?window:void 0);ad.Provider;function Ku(){return y.useContext(ad)}const kv={type:st.string,tooltip:st.bool,as:st.elementType},Gu=y.forwardRef(({as:e="div",className:t,type:n="valid",tooltip:r=!1,...l},o)=>f.jsx(e,{...l,ref:o,className:M(t,`${n}-${r?"tooltip":"feedback"}`)}));Gu.displayName="Feedback";Gu.propTypes=kv;const cd=Gu,Cv=y.createContext({}),pt=Cv,fd=y.forwardRef(({id:e,bsPrefix:t,className:n,type:r="checkbox",isValid:l=!1,isInvalid:o=!1,as:i="input",...u},s)=>{const{controlId:a}=y.useContext(pt);return t=H(t,"form-check-input"),f.jsx(i,{...u,ref:s,type:r,id:e||a,className:M(n,t,l&&"is-valid",o&&"is-invalid")})});fd.displayName="FormCheckInput";const dd=fd,pd=y.forwardRef(({bsPrefix:e,className:t,htmlFor:n,...r},l)=>{const{controlId:o}=y.useContext(pt);return e=H(e,"form-check-label"),f.jsx("label",{...r,ref:l,htmlFor:n||o,className:M(t,e)})});pd.displayName="FormCheckLabel";const Xi=pd,md=y.forwardRef(({id:e,bsPrefix:t,bsSwitchPrefix:n,inline:r=!1,reverse:l=!1,disabled:o=!1,isValid:i=!1,isInvalid:u=!1,feedbackTooltip:s=!1,feedback:a,feedbackType:m,className:h,style:d,title:g="",type:w="checkbox",label:E,children:L,as:p="input",...c},v)=>{t=H(t,"form-check"),n=H(n,"form-switch");const{controlId:x}=y.useContext(pt),N=y.useMemo(()=>({controlId:e||x}),[x,e]),k=!L&&E!=null&&E!==!1||yv(L,Xi),_=f.jsx(dd,{...c,type:w==="switch"?"checkbox":w,ref:v,isValid:i,isInvalid:u,disabled:o,as:p});return f.jsx(pt.Provider,{value:N,children:f.jsx("div",{style:d,className:M(h,k&&t,r&&`${t}-inline`,l&&`${t}-reverse`,w==="switch"&&n),children:L||f.jsxs(f.Fragment,{children:[_,k&&f.jsx(Xi,{title:g,children:E}),a&&f.jsx(cd,{type:m,tooltip:s,children:a})]})})})});md.displayName="FormCheck";const Gl=Object.assign(md,{Input:dd,Label:Xi}),hd=y.forwardRef(({bsPrefix:e,type:t,size:n,htmlSize:r,id:l,className:o,isValid:i=!1,isInvalid:u=!1,plaintext:s,readOnly:a,as:m="input",...h},d)=>{const{controlId:g}=y.useContext(pt);return e=H(e,"form-control"),f.jsx(m,{...h,type:t,size:r,ref:d,readOnly:a,id:l||g,className:M(o,s?`${e}-plaintext`:e,n&&`${e}-${n}`,t==="color"&&`${e}-color`,i&&"is-valid",u&&"is-invalid")})});hd.displayName="FormControl";const _v=Object.assign(hd,{Feedback:cd}),vd=y.forwardRef(({className:e,bsPrefix:t,as:n="div",...r},l)=>(t=H(t,"form-floating"),f.jsx(n,{ref:l,className:M(e,t),...r})));vd.displayName="FormFloating";const Nv=vd,yd=y.forwardRef(({controlId:e,as:t="div",...n},r)=>{const l=y.useMemo(()=>({controlId:e}),[e]);return f.jsx(pt.Provider,{value:l,children:f.jsx(t,{...n,ref:r})})});yd.displayName="FormGroup";const gd=yd,wd=y.forwardRef(({as:e="label",bsPrefix:t,column:n=!1,visuallyHidden:r=!1,className:l,htmlFor:o,...i},u)=>{const{controlId:s}=y.useContext(pt);t=H(t,"form-label");let a="col-form-label";typeof n=="string"&&(a=`${a} ${a}-${n}`);const m=M(l,t,r&&"visually-hidden",n&&a);return o=o||s,n?f.jsx(Qu,{ref:u,as:"label",className:m,htmlFor:o,...i}):f.jsx(e,{ref:u,className:m,htmlFor:o,...i})});wd.displayName="FormLabel";const Tv=wd,xd=y.forwardRef(({bsPrefix:e,className:t,id:n,...r},l)=>{const{controlId:o}=y.useContext(pt);return e=H(e,"form-range"),f.jsx("input",{...r,type:"range",ref:l,className:M(t,e),id:n||o})});xd.displayName="FormRange";const jv=xd,Sd=y.forwardRef(({bsPrefix:e,size:t,htmlSize:n,className:r,isValid:l=!1,isInvalid:o=!1,id:i,...u},s)=>{const{controlId:a}=y.useContext(pt);return e=H(e,"form-select"),f.jsx("select",{...u,size:n,ref:s,className:M(r,e,t&&`${e}-${t}`,l&&"is-valid",o&&"is-invalid"),id:i||a})});Sd.displayName="FormSelect";const Lv=Sd,Ed=y.forwardRef(({bsPrefix:e,className:t,as:n="small",muted:r,...l},o)=>(e=H(e,"form-text"),f.jsx(n,{...l,ref:o,className:M(t,e,r&&"text-muted")})));Ed.displayName="FormText";const Ov=Ed,kd=y.forwardRef((e,t)=>f.jsx(Gl,{...e,ref:t,type:"switch"}));kd.displayName="Switch";const Rv=Object.assign(kd,{Input:Gl.Input,Label:Gl.Label}),Cd=y.forwardRef(({bsPrefix:e,className:t,children:n,controlId:r,label:l,...o},i)=>(e=H(e,"form-floating"),f.jsxs(gd,{ref:i,className:M(t,e),controlId:r,...o,children:[n,f.jsx("label",{htmlFor:r,children:l})]})));Cd.displayName="FloatingLabel";const Pv=Cd,Fv={_ref:st.any,validated:st.bool,as:st.elementType},Xu=y.forwardRef(({className:e,validated:t,as:n="form",...r},l)=>f.jsx(n,{...r,ref:l,className:M(e,t&&"was-validated")}));Xu.displayName="Form";Xu.propTypes=Fv;const pe=Object.assign(Xu,{Group:gd,Control:_v,Floating:Nv,Check:Gl,Switch:Rv,Label:Tv,Text:Ov,Range:jv,Select:Lv,FloatingLabel:Pv});var sl;function ya(e){if((!sl&&sl!==0||e)&&Qn){var t=document.createElement("div");t.style.position="absolute",t.style.top="-9999px",t.style.width="50px",t.style.height="50px",t.style.overflow="scroll",document.body.appendChild(t),sl=t.offsetWidth-t.clientWidth,document.body.removeChild(t)}return sl}function Wo(e){e===void 0&&(e=mo());try{var t=e.activeElement;return!t||!t.nodeName?null:t}catch{return e.body}}function Mv(e=document){const t=e.defaultView;return Math.abs(t.innerWidth-e.documentElement.clientWidth)}const ga=Ev("modal-open");class zv{constructor({ownerDocument:t,handleContainerOverflow:n=!0,isRTL:r=!1}={}){this.handleContainerOverflow=n,this.isRTL=r,this.modals=[],this.ownerDocument=t}getScrollbarWidth(){return Mv(this.ownerDocument)}getElement(){return(this.ownerDocument||document).body}setModalAttributes(t){}removeModalAttributes(t){}setContainerStyle(t){const n={overflow:"hidden"},r=this.isRTL?"paddingLeft":"paddingRight",l=this.getElement();t.style={overflow:l.style.overflow,[r]:l.style[r]},t.scrollBarWidth&&(n[r]=`${parseInt(Zt(l,r)||"0",10)+t.scrollBarWidth}px`),l.setAttribute(ga,""),Zt(l,n)}reset(){[...this.modals].forEach(t=>this.remove(t))}removeContainerStyle(t){const n=this.getElement();n.removeAttribute(ga),Object.assign(n.style,t.style)}add(t){let n=this.modals.indexOf(t);return n!==-1||(n=this.modals.length,this.modals.push(t),this.setModalAttributes(t),n!==0)||(this.state={scrollBarWidth:this.getScrollbarWidth(),style:{}},this.handleContainerOverflow&&this.setContainerStyle(this.state)),n}remove(t){const n=this.modals.indexOf(t);n!==-1&&(this.modals.splice(n,1),!this.modals.length&&this.handleContainerOverflow&&this.removeContainerStyle(this.state),this.removeModalAttributes(t))}isTopModal(t){return!!this.modals.length&&this.modals[this.modals.length-1]===t}}const Yu=zv,Qo=(e,t)=>Qn?e==null?(t||mo()).body:(typeof e=="function"&&(e=e()),e&&"current"in e&&(e=e.current),e&&("nodeType"in e||e.getBoundingClientRect)?e:null):null;function $v(e,t){const n=Ku(),[r,l]=y.useState(()=>Qo(e,n==null?void 0:n.document));if(!r){const o=Qo(e);o&&l(o)}return y.useEffect(()=>{t&&r&&t(r)},[t,r]),y.useEffect(()=>{const o=Qo(e);o!==r&&l(o)},[e,r]),r}function Iv({children:e,in:t,onExited:n,mountOnEnter:r,unmountOnExit:l}){const o=y.useRef(null),i=y.useRef(t),u=ze(n);y.useEffect(()=>{t?i.current=!0:u(o.current)},[t,u]);const s=ho(o,e.ref),a=y.cloneElement(e,{ref:s});return t?a:l||!i.current&&r?null:a}function Dv({in:e,onTransition:t}){const n=y.useRef(null),r=y.useRef(!0),l=ze(t);return ma(()=>{if(!n.current)return;let o=!1;return l({in:e,element:n.current,initial:r.current,isStale:()=>o}),()=>{o=!0}},[e,l]),ma(()=>(r.current=!1,()=>{r.current=!0}),[]),n}function Av({children:e,in:t,onExited:n,onEntered:r,transition:l}){const[o,i]=y.useState(!t);t&&o&&i(!1);const u=Dv({in:!!t,onTransition:a=>{const m=()=>{a.isStale()||(a.in?r==null||r(a.element,a.initial):(i(!0),n==null||n(a.element)))};Promise.resolve(l(a)).then(m,h=>{throw a.in||i(!0),h})}}),s=ho(u,e.ref);return o&&!t?null:y.cloneElement(e,{ref:s})}function wa(e,t,n){return e?f.jsx(e,Object.assign({},n)):t?f.jsx(Av,Object.assign({},n,{transition:t})):f.jsx(Iv,Object.assign({},n))}function Bv(e){return e.code==="Escape"||e.keyCode===27}const Uv=["show","role","className","style","children","backdrop","keyboard","onBackdropClick","onEscapeKeyDown","transition","runTransition","backdropTransition","runBackdropTransition","autoFocus","enforceFocus","restoreFocus","restoreFocusOptions","renderDialog","renderBackdrop","manager","container","onShow","onHide","onExit","onExited","onExiting","onEnter","onEntering","onEntered"];function Hv(e,t){if(e==null)return{};var n={},r=Object.keys(e),l,o;for(o=0;o=0)&&(n[l]=e[l]);return n}let Ko;function Vv(e){return Ko||(Ko=new Yu({ownerDocument:e==null?void 0:e.document})),Ko}function Wv(e){const t=Ku(),n=e||Vv(t),r=y.useRef({dialog:null,backdrop:null});return Object.assign(r.current,{add:()=>n.add(r.current),remove:()=>n.remove(r.current),isTopModal:()=>n.isTopModal(r.current),setDialogRef:y.useCallback(l=>{r.current.dialog=l},[]),setBackdropRef:y.useCallback(l=>{r.current.backdrop=l},[])})}const _d=y.forwardRef((e,t)=>{let{show:n=!1,role:r="dialog",className:l,style:o,children:i,backdrop:u=!0,keyboard:s=!0,onBackdropClick:a,onEscapeKeyDown:m,transition:h,runTransition:d,backdropTransition:g,runBackdropTransition:w,autoFocus:E=!0,enforceFocus:L=!0,restoreFocus:p=!0,restoreFocusOptions:c,renderDialog:v,renderBackdrop:x=K=>f.jsx("div",Object.assign({},K)),manager:N,container:k,onShow:_,onHide:j=()=>{},onExit:B,onExited:P,onExiting:ie,onEnter:Ge,onEntering:Xe,onEntered:un}=e,Kn=Hv(e,Uv);const Oe=Ku(),Ye=$v(k),C=Wv(N),O=ev(),R=tv(n),[I,A]=y.useState(!n),fe=y.useRef(null);y.useImperativeHandle(t,()=>C,[C]),Qn&&!R&&n&&(fe.current=Wo(Oe==null?void 0:Oe.document)),n&&I&&A(!1);const Re=ze(()=>{if(C.add(),an.current=Ql(document,"keydown",vo),sn.current=Ql(document,"focus",()=>setTimeout(Pe),!0),_&&_(),E){var K,Vr;const Yn=Wo((K=(Vr=C.dialog)==null?void 0:Vr.ownerDocument)!=null?K:Oe==null?void 0:Oe.document);C.dialog&&Yn&&!va(C.dialog,Yn)&&(fe.current=Yn,C.dialog.focus())}}),tt=ze(()=>{if(C.remove(),an.current==null||an.current(),sn.current==null||sn.current(),p){var K;(K=fe.current)==null||K.focus==null||K.focus(c),fe.current=null}});y.useEffect(()=>{!n||!Ye||Re()},[n,Ye,Re]),y.useEffect(()=>{I&&tt()},[I,tt]),id(()=>{tt()});const Pe=ze(()=>{if(!L||!O()||!C.isTopModal())return;const K=Wo(Oe==null?void 0:Oe.document);C.dialog&&K&&!va(C.dialog,K)&&C.dialog.focus()}),vt=ze(K=>{K.target===K.currentTarget&&(a==null||a(K),u===!0&&j())}),vo=ze(K=>{s&&Bv(K)&&C.isTopModal()&&(m==null||m(K),K.defaultPrevented||j())}),sn=y.useRef(),an=y.useRef(),Gn=(...K)=>{A(!0),P==null||P(...K)};if(!Ye)return null;const Hr=Object.assign({role:r,ref:C.setDialogRef,"aria-modal":r==="dialog"?!0:void 0},Kn,{style:o,className:l,tabIndex:-1});let Xn=v?v(Hr):f.jsx("div",Object.assign({},Hr,{children:y.cloneElement(i,{role:"document"})}));Xn=wa(h,d,{unmountOnExit:!0,mountOnEnter:!0,appear:!0,in:!!n,onExit:B,onExiting:ie,onExited:Gn,onEnter:Ge,onEntering:Xe,onEntered:un,children:Xn});let Bt=null;return u&&(Bt=x({ref:C.setBackdropRef,onClick:vt}),Bt=wa(g,w,{in:!!n,appear:!0,mountOnEnter:!0,unmountOnExit:!0,children:Bt})),f.jsx(f.Fragment,{children:Tn.createPortal(f.jsxs(f.Fragment,{children:[Bt,Xn]}),Ye)})});_d.displayName="Modal";const Qv=Object.assign(_d,{Manager:Yu});function Kv(e,t){return e.classList?!!t&&e.classList.contains(t):(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")!==-1}function Gv(e,t){e.classList?e.classList.add(t):Kv(e,t)||(typeof e.className=="string"?e.className=e.className+" "+t:e.setAttribute("class",(e.className&&e.className.baseVal||"")+" "+t))}function xa(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}function Xv(e,t){e.classList?e.classList.remove(t):typeof e.className=="string"?e.className=xa(e.className,t):e.setAttribute("class",xa(e.className&&e.className.baseVal||"",t))}const mn={FIXED_CONTENT:".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",STICKY_CONTENT:".sticky-top",NAVBAR_TOGGLER:".navbar-toggler"};class Yv extends Yu{adjustAndStore(t,n,r){const l=n.style[t];n.dataset[t]=l,Zt(n,{[t]:`${parseFloat(Zt(n,t))+r}px`})}restore(t,n){const r=n.dataset[t];r!==void 0&&(delete n.dataset[t],Zt(n,{[t]:r}))}setContainerStyle(t){super.setContainerStyle(t);const n=this.getElement();if(Gv(n,"modal-open"),!t.scrollBarWidth)return;const r=this.isRTL?"paddingLeft":"paddingRight",l=this.isRTL?"marginLeft":"marginRight";pn(n,mn.FIXED_CONTENT).forEach(o=>this.adjustAndStore(r,o,t.scrollBarWidth)),pn(n,mn.STICKY_CONTENT).forEach(o=>this.adjustAndStore(l,o,-t.scrollBarWidth)),pn(n,mn.NAVBAR_TOGGLER).forEach(o=>this.adjustAndStore(l,o,t.scrollBarWidth))}removeContainerStyle(t){super.removeContainerStyle(t);const n=this.getElement();Xv(n,"modal-open");const r=this.isRTL?"paddingLeft":"paddingRight",l=this.isRTL?"marginLeft":"marginRight";pn(n,mn.FIXED_CONTENT).forEach(o=>this.restore(r,o)),pn(n,mn.STICKY_CONTENT).forEach(o=>this.restore(l,o)),pn(n,mn.NAVBAR_TOGGLER).forEach(o=>this.restore(l,o))}}let Go;function Zv(e){return Go||(Go=new Yv(e)),Go}const Nd=y.forwardRef(({className:e,bsPrefix:t,as:n="div",...r},l)=>(t=H(t,"modal-body"),f.jsx(n,{ref:l,className:M(e,t),...r})));Nd.displayName="ModalBody";const Jv=Nd,qv=y.createContext({onHide(){}}),Td=qv,jd=y.forwardRef(({bsPrefix:e,className:t,contentClassName:n,centered:r,size:l,fullscreen:o,children:i,scrollable:u,...s},a)=>{e=H(e,"modal");const m=`${e}-dialog`,h=typeof o=="string"?`${e}-fullscreen-${o}`:`${e}-fullscreen`;return f.jsx("div",{...s,ref:a,className:M(m,t,l&&`${e}-${l}`,r&&`${m}-centered`,u&&`${m}-scrollable`,o&&h),children:f.jsx("div",{className:M(`${e}-content`,n),children:i})})});jd.displayName="ModalDialog";const Ld=jd,Od=y.forwardRef(({className:e,bsPrefix:t,as:n="div",...r},l)=>(t=H(t,"modal-footer"),f.jsx(n,{ref:l,className:M(e,t),...r})));Od.displayName="ModalFooter";const bv=Od,e0=y.forwardRef(({closeLabel:e="Close",closeVariant:t,closeButton:n=!1,onHide:r,children:l,...o},i)=>{const u=y.useContext(Td),s=ze(()=>{u==null||u.onHide(),r==null||r()});return f.jsxs("div",{ref:i,...o,children:[l,n&&f.jsx(rd,{"aria-label":e,variant:t,onClick:s})]})}),t0=e0,Rd=y.forwardRef(({bsPrefix:e,className:t,closeLabel:n="Close",closeButton:r=!1,...l},o)=>(e=H(e,"modal-header"),f.jsx(t0,{ref:o,...l,className:M(t,e),closeLabel:n,closeButton:r})));Rd.displayName="ModalHeader";const n0=Rd,r0=Jf("h4"),Pd=y.forwardRef(({className:e,bsPrefix:t,as:n=r0,...r},l)=>(t=H(t,"modal-title"),f.jsx(n,{ref:l,className:M(e,t),...r})));Pd.displayName="ModalTitle";const l0=Pd;function o0(e){return f.jsx(Kl,{...e,timeout:null})}function i0(e){return f.jsx(Kl,{...e,timeout:null})}const Fd=y.forwardRef(({bsPrefix:e,className:t,style:n,dialogClassName:r,contentClassName:l,children:o,dialogAs:i=Ld,"aria-labelledby":u,"aria-describedby":s,"aria-label":a,show:m=!1,animation:h=!0,backdrop:d=!0,keyboard:g=!0,onEscapeKeyDown:w,onShow:E,onHide:L,container:p,autoFocus:c=!0,enforceFocus:v=!0,restoreFocus:x=!0,restoreFocusOptions:N,onEntered:k,onExit:_,onExiting:j,onEnter:B,onEntering:P,onExited:ie,backdropClassName:Ge,manager:Xe,...un},Kn)=>{const[Oe,Ye]=y.useState({}),[C,O]=y.useState(!1),R=y.useRef(!1),I=y.useRef(!1),A=y.useRef(null),[fe,Re]=bh(),tt=ho(Kn,Re),Pe=ze(L),vt=Th();e=H(e,"modal");const vo=y.useMemo(()=>({onHide:Pe}),[Pe]);function sn(){return Xe||Zv({isRTL:vt})}function an($){if(!Qn)return;const cn=sn().getScrollbarWidth()>0,es=$.scrollHeight>mo($).documentElement.clientHeight;Ye({paddingRight:cn&&!es?ya():void 0,paddingLeft:!cn&&es?ya():void 0})}const Gn=ze(()=>{fe&&an(fe.dialog)});id(()=>{Gi(window,"resize",Gn),A.current==null||A.current()});const Hr=()=>{R.current=!0},Xn=$=>{R.current&&fe&&$.target===fe.dialog&&(I.current=!0),R.current=!1},Bt=()=>{O(!0),A.current=Zf(fe.dialog,()=>{O(!1)})},K=$=>{$.target===$.currentTarget&&Bt()},Vr=$=>{if(d==="static"){K($);return}if(I.current||$.target!==$.currentTarget){I.current=!1;return}L==null||L()},Yn=$=>{g?w==null||w($):($.preventDefault(),d==="static"&&Bt())},Vd=($,cn)=>{$&&an($),B==null||B($,cn)},Wd=$=>{A.current==null||A.current(),_==null||_($)},Qd=($,cn)=>{P==null||P($,cn),Yf(window,"resize",Gn)},Kd=$=>{$&&($.style.display=""),ie==null||ie($),Gi(window,"resize",Gn)},Gd=y.useCallback($=>f.jsx("div",{...$,className:M(`${e}-backdrop`,Ge,!h&&"show")}),[h,Ge,e]),bu={...n,...Oe};bu.display="block";const Xd=$=>f.jsx("div",{role:"dialog",...$,style:bu,className:M(t,e,C&&`${e}-static`,!h&&"show"),onClick:d?Vr:void 0,onMouseUp:Xn,"aria-label":a,"aria-labelledby":u,"aria-describedby":s,children:f.jsx(i,{...un,onMouseDown:Hr,className:r,contentClassName:l,children:o})});return f.jsx(Td.Provider,{value:vo,children:f.jsx(Qv,{show:m,ref:tt,backdrop:d,container:p,keyboard:!0,autoFocus:c,enforceFocus:v,restoreFocus:x,restoreFocusOptions:N,onEscapeKeyDown:Yn,onShow:E,onHide:L,onEnter:Vd,onEntering:Qd,onEntered:k,onExit:Wd,onExiting:j,onExited:Kd,manager:sn(),transition:h?o0:void 0,backdropTransition:h?i0:void 0,renderBackdrop:Gd,renderDialog:Xd})})});Fd.displayName="Modal";const ge=Object.assign(Fd,{Body:Jv,Header:n0,Title:l0,Footer:bv,Dialog:Ld,TRANSITION_DURATION:300,BACKDROP_TRANSITION_DURATION:150}),Sa=1e3;function u0(e,t,n){const r=(e-t)/(n-t)*100;return Math.round(r*Sa)/Sa}function Ea({min:e,now:t,max:n,label:r,visuallyHidden:l,striped:o,animated:i,className:u,style:s,variant:a,bsPrefix:m,...h},d){return f.jsx("div",{ref:d,...h,role:"progressbar",className:M(u,`${m}-bar`,{[`bg-${a}`]:a,[`${m}-bar-animated`]:i,[`${m}-bar-striped`]:i||o}),style:{width:`${u0(t,e,n)}%`,...s},"aria-valuenow":t,"aria-valuemin":e,"aria-valuemax":n,children:l?f.jsx("span",{className:"visually-hidden",children:r}):r})}const Md=y.forwardRef(({isChild:e=!1,...t},n)=>{const r={min:0,max:100,animated:!1,visuallyHidden:!1,striped:!1,...t};if(r.bsPrefix=H(r.bsPrefix,"progress"),e)return Ea(r,n);const{min:l,now:o,max:i,label:u,visuallyHidden:s,striped:a,animated:m,bsPrefix:h,variant:d,className:g,children:w,...E}=r;return f.jsx("div",{ref:n,...E,className:M(g,h),children:w?vv(w,L=>y.cloneElement(L,{isChild:!0})):Ea({min:l,now:o,max:i,label:u,visuallyHidden:s,striped:a,animated:m,bsPrefix:h,variant:d},n)})});Md.displayName="ProgressBar";const s0=Md,zd=y.forwardRef(({bsPrefix:e,className:t,as:n="div",...r},l)=>{const o=H(e,"row"),i=Vf(),u=Wf(),s=`${o}-cols`,a=[];return i.forEach(m=>{const h=r[m];delete r[m];let d;h!=null&&typeof h=="object"?{cols:d}=h:d=h;const g=m!==u?`-${m}`:"";d!=null&&a.push(`${s}${g}-${d}`)}),f.jsx(n,{ref:l,...r,className:M(t,o,...a)})});zd.displayName="Row";const $d=zd,Id=y.forwardRef(({bsPrefix:e,variant:t,animation:n="border",size:r,as:l="div",className:o,...i},u)=>{e=H(e,"spinner");const s=`${e}-${n}`;return f.jsx(l,{ref:u,...i,className:M(o,s,r&&`${s}-${r}`,t&&`text-${t}`)})});Id.displayName="Spinner";const Un=Id,Xl="initializing",Dd="paused",Ad="live",a0="error";function Zu(e,t){let n,r=t;const l=async()=>{if(r=await e(),r==null)throw"asyncCallback returned null or undefined";o()};let o=()=>{n=setTimeout(l,r)};return o(),()=>{clearTimeout(n)}}function c0(e,t){let n;const r=async()=>{await e().then(()=>!1,()=>!0)&&l()};let l=o=>{n=setTimeout(r,o!==void 0?o:t)};return l(0),()=>clearTimeout(n)}const Xo=e=>{const{onClick:t,disabled:n,color:r,children:l,className:o,...i}=e,u=a=>{a.stopPropagation(),!n&&t()},s=r?`text-${r}`:"";return f.jsx("a",{className:`p-1 ${s} ${o}`,onClick:u,href:"#",...i,children:l})},zr=e=>{var r,l,o;let{error:t,remove:n}=e;return t==null?null:f.jsxs(ha,{variant:"danger",onClose:n,dismissible:n!=null,children:[f.jsx(ha.Heading,{children:t.text}),((r=t.details)==null?void 0:r.statusText)&&f.jsx("p",{children:f.jsx("strong",{children:(l=t.details)==null?void 0:l.statusText})}),f.jsx("pre",{children:(o=t.details)==null?void 0:o.text})]})},f0=({id:e,show:t,onHide:n})=>{if(!t)return null;const[r,l]=y.useState(!1),[o,i]=y.useState(null),[u,s]=y.useState(!1),a=y.useContext(Ur),m=y.useContext(on),h=()=>{l(!1),i(null),s(!1),n()},d=()=>{s(!0),(r?m.delete:m.forget)(e).then(()=>{a.refreshTorrents(),h()}).catch(w=>{i({text:`Error deleting torrent id=${e}`,details:w}),s(!1)})};return f.jsxs(ge,{show:t,onHide:h,children:[f.jsx(ge.Header,{closeButton:!0,children:"Delete torrent"}),f.jsxs(ge.Body,{children:[f.jsx(pe,{children:f.jsx(pe.Group,{controlId:"delete-torrent",children:f.jsx(pe.Check,{type:"checkbox",label:"Also delete files",checked:r,onChange:()=>l(!r)})})}),o&&f.jsx(zr,{error:o})]}),f.jsxs(ge.Footer,{children:[u&&f.jsx(Un,{}),f.jsx(nn,{variant:"primary",onClick:d,disabled:u,children:"OK"}),f.jsx(nn,{variant:"secondary",onClick:h,children:"Cancel"})]})]})};var Bd={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},ka=we.createContext&&we.createContext(Bd),Mt=globalThis&&globalThis.__assign||function(){return Mt=Object.assign||function(e){for(var t,n=1,r=arguments.length;n{let n=t.state,[r,l]=y.useState(!1),[o,i]=y.useState(!1),u=y.useContext(Bf);const s=n=="live",a=n=="paused"||n=="error",m=y.useContext(Ur),h=y.useContext(on),d=()=>{l(!0),h.start(e).then(()=>{u.refresh()},L=>{m.setCloseableError({text:`Error starting torrent id=${e}`,details:L})}).finally(()=>l(!1))},g=()=>{l(!0),h.pause(e).then(()=>{u.refresh()},L=>{m.setCloseableError({text:`Error pausing torrent id=${e}`,details:L})}).finally(()=>l(!1))},w=()=>{l(!0),i(!0)},E=()=>{l(!1),i(!1)};return f.jsx($d,{children:f.jsxs(Qu,{children:[a&&f.jsx(Xo,{onClick:d,disabled:r,color:"success",children:f.jsx(h0,{})}),s&&f.jsx(Xo,{onClick:g,disabled:r,children:f.jsx(m0,{})}),f.jsx(Xo,{onClick:w,disabled:r,color:"danger",children:f.jsx(v0,{})}),f.jsx(f0,{id:e,show:o,onHide:E})]})})};function qu(e){if(e===0)return"0 Bytes";const t=1024,n=["Bytes","KB","MB","GB"],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/Math.pow(t,r)).toFixed(2))+" "+n[r]}const g0=({statsResponse:e})=>{var t,n;switch(e.state){case Dd:return"Paused";case Xl:return"Checking files";case a0:return"Error"}return e.state!="live"||e.live===null?e.state:f.jsxs(f.Fragment,{children:[!e.finished&&f.jsxs("div",{className:"download-speed",children:["↓ ",(t=e.live.download_speed)==null?void 0:t.human_readable]}),f.jsxs("div",{className:"upload-speed",children:["↑ ",(n=e.live.upload_speed)==null?void 0:n.human_readable,e.live.snapshot.uploaded_bytes>0&&f.jsxs("span",{children:[" ","(",qu(e.live.snapshot.uploaded_bytes),")"]})]})]})},gt=({size:e,label:t,children:n})=>f.jsxs(Qu,{md:e||1,className:"py-3",children:[f.jsx("div",{className:"fw-bold",children:t}),n]});function w0(e){return e.files.filter(n=>n.included).reduce((n,r)=>n.length>r.length?n:r).name}function x0(e){const t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60,l=(o,i)=>o>0?`${o}${i}`:"";return t>0?`${l(t,"h")} ${l(n,"m")}`.trim():n>0?`${l(n,"m")} ${l(r,"s")}`.trim():`${l(r,"s")}`.trim()}function S0(e){var n,r,l;let t=(l=(r=(n=e==null?void 0:e.live)==null?void 0:n.time_remaining)==null?void 0:r.duration)==null?void 0:l.secs;return t==null?"N/A":x0(t)}const E0=({id:e,detailsResponse:t,statsResponse:n})=>{const r=(n==null?void 0:n.state)??"",l=n==null?void 0:n.error,o=(n==null?void 0:n.total_bytes)??1,i=(n==null?void 0:n.progress_bytes)??0,u=(n==null?void 0:n.finished)||!1,s=l?100:i/o*100,a=(r==Xl||r==Ad)&&!u,m=l?"Error":`${s.toFixed(2)}%`,h=l?"danger":u?"success":r==Xl?"warning":"primary",d=()=>{var E;let w=(E=n==null?void 0:n.live)==null?void 0:E.snapshot.peer_stats;return w?`${w.live} / ${w.seen}`:""};let g=[];return l?g.push("bg-warning"):e%2==0&&g.push("bg-light"),f.jsxs($d,{className:g.join(" "),children:[f.jsx(gt,{size:3,label:"Name",children:t?f.jsxs(f.Fragment,{children:[f.jsx("div",{className:"text-truncate",children:w0(t)}),l&&f.jsxs("p",{className:"text-danger",children:[f.jsx("strong",{children:"Error:"})," ",l]})]}):f.jsx(Un,{})}),n?f.jsxs(f.Fragment,{children:[f.jsx(gt,{label:"Size",children:`${qu(o)} `}),f.jsx(gt,{size:2,label:(r==Dd,"Progress"),children:f.jsx(s0,{now:s,label:m,animated:a,variant:h})}),f.jsx(gt,{size:2,label:"Speed",children:f.jsx(g0,{statsResponse:n})}),f.jsx(gt,{label:"ETA",children:S0(n)}),f.jsx(gt,{size:2,label:"Live / Seen",children:d()}),f.jsx(gt,{label:"Actions",children:f.jsx(y0,{id:e,statsResponse:n})})]}):f.jsx(gt,{label:"Loading stats",size:8,children:f.jsx(Un,{})})]})},k0=({id:e,torrent:t})=>{const[n,r]=y.useState(null),[l,o]=y.useState(null),[i,u]=y.useState(0),s=y.useContext(on),a=()=>{u(i+1)};return y.useEffect(()=>{if(n===null)return c0(async()=>{await s.getTorrentDetails(t.id).then(r)},1e3)},[n]),y.useEffect(()=>Zu(async()=>s.getTorrentStats(t.id).then(g=>(o(g),g)).then(g=>g.state==Xl||g.state==Ad?1e3:1e4,()=>1e4),0),[i]),f.jsx(Bf.Provider,{value:{refresh:a},children:f.jsx(E0,{id:e,detailsResponse:n,statsResponse:l})})},C0=e=>{if(e.torrents===null&&e.loading)return f.jsx(Un,{});if(e.torrents!==null)return e.torrents.length===0?f.jsx("div",{className:"text-center",children:f.jsx("p",{children:"No existing torrents found. Add them through buttons below."})}):f.jsx("div",{style:{fontSize:"smaller"},children:e.torrents.map(t=>f.jsx(k0,{id:t.id,torrent:t},t.id))})},_0=e=>{let{onHide:t,listTorrentResponse:n,listTorrentError:r,listTorrentLoading:l,data:o}=e;const[i,u]=y.useState([]),[s,a]=y.useState(!1),[m,h]=y.useState(null),[d,g]=y.useState(!1),[w,E]=y.useState(""),L=y.useContext(Ur),p=y.useContext(on);y.useEffect(()=>{console.log(n),u(n?n.details.files.map((k,_)=>_):[]),E((n==null?void 0:n.output_folder)||"")},[n]);const c=()=>{t(),u([]),h(null),a(!1)},v=k=>{i.includes(k)?u(i.filter(_=>_!==k)):u([...i,k])},x=async()=>{if(!n)return;a(!0);let k=n.seen_peers?n.seen_peers.slice(0,32):null,_={overwrite:!0,only_files:i,initial_peers:k,output_folder:w};d&&(_.peer_opts={connect_timeout:20,read_write_timeout:60}),p.uploadTorrent(o,_).then(()=>{t(),L.refreshTorrents()},j=>{h({text:"Error starting torrent",details:j})}).finally(()=>a(!1))},N=()=>{if(l)return f.jsx(Un,{});if(r)return f.jsx(zr,{error:r});if(n)return f.jsxs(pe,{children:[f.jsxs("fieldset",{className:"mb-4",children:[f.jsx("legend",{children:"Pick the files to download"}),n.details.files.map((k,_)=>f.jsx(pe.Group,{controlId:`check-${_}`,children:f.jsx(pe.Check,{type:"checkbox",label:`${k.name} (${qu(k.length)})`,checked:i.includes(_),onChange:()=>v(_)})},_))]}),f.jsxs("fieldset",{children:[f.jsx("legend",{children:"Options"}),f.jsxs(pe.Group,{controlId:"output-folder",className:"mb-3",children:[f.jsx(pe.Label,{children:"Output folder"}),f.jsx(pe.Control,{type:"text",value:w,onChange:k=>E(k.target.value)})]}),f.jsxs(pe.Group,{controlId:"unpopular-torrent",className:"mb-3",children:[f.jsx(pe.Check,{type:"checkbox",label:"Increase timeouts",checked:d,onChange:()=>g(!d)}),f.jsx("small",{id:"emailHelp",className:"form-text text-muted",children:"This might be useful for unpopular torrents with few peers. It will slow down fast torrents though."})]})]})]})};return f.jsxs(ge,{show:!0,onHide:c,size:"lg",children:[f.jsx(ge.Header,{closeButton:!0,children:f.jsx(ge.Title,{children:"Add torrent"})}),f.jsxs(ge.Body,{children:[N(),f.jsx(zr,{error:m})]}),f.jsxs(ge.Footer,{children:[s&&f.jsx(Un,{}),f.jsx(nn,{variant:"primary",onClick:x,disabled:l||s||i.length==0,children:"OK"}),f.jsx(nn,{variant:"secondary",onClick:c,children:"Cancel"})]})]})},Hd=({buttonText:e,onClick:t,data:n,resetData:r,variant:l})=>{const[o,i]=y.useState(!1),[u,s]=y.useState(null),[a,m]=y.useState(null),h=y.useContext(on);y.useEffect(()=>{if(n===null)return;let g=setTimeout(async()=>{i(!0);try{const w=await h.uploadTorrent(n,{list_only:!0});s(w)}catch(w){m({text:"Error listing torrent files",details:w})}finally{i(!1)}},0);return()=>clearTimeout(g)},[n]);const d=()=>{r(),m(null),s(null),i(!1)};return f.jsxs(f.Fragment,{children:[f.jsx(nn,{variant:l,onClick:t,className:"m-1",children:e}),n&&f.jsx(_0,{onHide:d,listTorrentError:a,listTorrentResponse:u,data:n,listTorrentLoading:o})]})},N0=({show:e,setUrl:t,cancel:n})=>{let[r,l]=y.useState("");return f.jsxs(ge,{show:e,onHide:n,size:"lg",children:[f.jsx(ge.Header,{closeButton:!0,children:f.jsx(ge.Title,{children:"Add torrent"})}),f.jsx(ge.Body,{children:f.jsx(pe,{children:f.jsxs(pe.Group,{className:"mb-3",controlId:"url",children:[f.jsx(pe.Label,{children:"Enter magnet or HTTP(S) URL to the .torrent"}),f.jsx(pe.Control,{value:r,placeholder:"magnet:?xt=urn:btih:...",onChange:o=>{l(o.target.value)}})]})})}),f.jsxs(ge.Footer,{children:[f.jsx(nn,{variant:"primary",onClick:()=>{t(r),l("")},disabled:r.length==0,children:"OK"}),f.jsx(nn,{variant:"secondary",onClick:n,children:"Cancel"})]})]})},T0=()=>{let[e,t]=y.useState(null),[n,r]=y.useState(!1);return f.jsxs(f.Fragment,{children:[f.jsx(Hd,{variant:"primary",buttonText:"Add Torrent from Magnet / URL",onClick:()=>{r(!0)},data:e,resetData:()=>t(null)}),f.jsx(N0,{show:n,setUrl:l=>{r(!1),t(l)},cancel:()=>{r(!1),t(null)}})]})},j0=()=>{const e=y.useRef(),[t,n]=y.useState(null),r=async()=>{var u;if(!((u=e==null?void 0:e.current)!=null&&u.files))return;const i=e.current.files[0];n(i)},l=()=>{e!=null&&e.current&&(e.current.value="",n(null))},o=()=>{e!=null&&e.current&&e.current.click()};return f.jsxs(f.Fragment,{children:[f.jsx("input",{type:"file",ref:e,accept:".torrent",onChange:r,className:"d-none"}),f.jsx(Hd,{variant:"secondary",buttonText:"Upload .torrent File",onClick:o,data:t,resetData:l})]})},L0=()=>f.jsxs("div",{id:"buttons-container",className:"mt-3",children:[f.jsx(T0,{}),f.jsx(j0,{})]}),O0=e=>{let t=y.useContext(Ur);return f.jsxs(wv,{children:[f.jsx(zr,{error:e.closeableError,remove:()=>t.setCloseableError(null)}),f.jsx(zr,{error:e.otherError}),f.jsx(C0,{torrents:e.torrents,loading:e.torrentsLoading}),f.jsx(L0,{})]})},R0=e=>{const[t,n]=y.useState(null),[r,l]=y.useState(null),[o,i]=y.useState(null),[u,s]=y.useState(!1),a=y.useContext(on),m=async()=>{s(!0);let d=await a.listTorrents().finally(()=>s(!1));i(d.torrents)};y.useEffect(()=>Zu(async()=>m().then(()=>(l(null),5e3),d=>(l({text:"Error refreshing torrents",details:d}),console.error(d),5e3)),0),[]);const h={setCloseableError:n,refreshTorrents:m};return f.jsx(Ur.Provider,{value:h,children:f.jsxs("div",{className:"text-center",children:[f.jsx("h1",{className:"mt-3 mb-4",children:e.title}),f.jsx(O0,{closeableError:t,otherError:r,torrents:o,torrentsLoading:u})]})})},P0=window.origin==="null"||window.origin==="http://localhost:3031"?"http://localhost:3030":"",nt=async(e,t,n)=>{console.log(e,t);const r=P0+t,l={method:e,headers:{Accept:"application/json"},body:n};let o={method:e,path:t,text:""},i;try{i=await fetch(r,l)}catch{return o.text="network error",Promise.reject(o)}if(o.status=i.status,o.statusText=`${i.status} ${i.statusText}`,!i.ok){const s=await i.text();try{const a=JSON.parse(s);o.text=a.human_readable!==void 0?a.human_readable:JSON.stringify(a,null,2)}catch{o.text=s}return Promise.reject(o)}return await i.json()},Ca={listTorrents:()=>nt("GET","/torrents"),getTorrentDetails:e=>nt("GET",`/torrents/${e}`),getTorrentStats:e=>nt("GET",`/torrents/${e}/stats/v1`),uploadTorrent:(e,t)=>{var r,l;let n="/torrents?&overwrite=true";return t!=null&&t.list_only&&(n+="&list_only=true"),(t==null?void 0:t.only_files)!=null&&(n+=`&only_files=${t.only_files.join(",")}`),(r=t==null?void 0:t.peer_opts)!=null&&r.connect_timeout&&(n+=`&peer_connect_timeout=${t.peer_opts.connect_timeout}`),(l=t==null?void 0:t.peer_opts)!=null&&l.read_write_timeout&&(n+=`&peer_read_write_timeout=${t.peer_opts.read_write_timeout}`),t!=null&&t.initial_peers&&(n+=`&initial_peers=${t.initial_peers.join(",")}`),t!=null&&t.output_folder&&(n+=`&output_folder=${t.output_folder}`),typeof e=="string"&&(n+="&is_url=true"),nt("POST",n,e)},pause:e=>nt("POST",`/torrents/${e}/pause`),start:e=>nt("POST",`/torrents/${e}/start`),forget:e=>nt("POST",`/torrents/${e}/forget`),delete:e=>nt("POST",`/torrents/${e}/delete`),getVersion:async()=>(await nt("GET","/")).version},F0=()=>{let[e,t]=y.useState("rqbit web UI");return y.useEffect(()=>Zu(()=>Ca.getVersion().then(r=>{const l=`rqbit web UI - v${r}`;return t(l),document.title=l,1e4},r=>1e3),0),[]),f.jsx(y.StrictMode,{children:f.jsx(on.Provider,{value:Ca,children:f.jsx(R0,{title:e})})})};Yo.createRoot(document.getElementById("app")).render(f.jsx(F0,{})); +*/(function(e){(function(){var t={}.hasOwnProperty;function n(){for(var r=[],l=0;l=0)&&(n[l]=e[l]);return n}function ca(e){return"default"+e.charAt(0).toUpperCase()+e.substr(1)}function Sh(e){var t=Eh(e,"string");return typeof t=="symbol"?t:String(t)}function Eh(e,t){if(typeof e!="object"||e===null)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function kh(e,t,n){var r=v.useRef(e!==void 0),l=v.useState(t),o=l[0],i=l[1],u=e!==void 0,s=r.current;return r.current=u,!u&&s&&o!==t&&i(t),[u?e:o,v.useCallback(function(a){for(var d=arguments.length,m=new Array(d>1?d-1:0),p=1;p{o.target===e&&(l(),t(o))},n+r)}function Gh(e){e.offsetHeight}const pa=e=>!e||typeof e=="function"?e:t=>{e.current=t};function Xh(e,t){const n=pa(e),r=pa(t);return l=>{n&&n(l),r&&r(l)}}function vo(e,t){return v.useMemo(()=>Xh(e,t),[e,t])}function Yh(e){return e&&"setState"in e?jn.findDOMNode(e):e??null}const Zh=we.forwardRef(({onEnter:e,onEntering:t,onEntered:n,onExit:r,onExiting:l,onExited:o,addEndListener:i,children:u,childRef:s,...a},d)=>{const m=v.useRef(null),p=vo(m,s),y=k=>{p(Yh(k))},w=k=>N=>{k&&m.current&&k(m.current,N)},S=v.useCallback(w(e),[e]),L=v.useCallback(w(t),[t]),h=v.useCallback(w(n),[n]),f=v.useCallback(w(r),[r]),g=v.useCallback(w(l),[l]),x=v.useCallback(w(o),[o]),T=v.useCallback(w(i),[i]);return c.jsx(Hh,{ref:d,...a,onEnter:S,onEntered:h,onEntering:L,onExit:f,onExited:x,onExiting:g,addEndListener:T,nodeRef:m,children:typeof u=="function"?(k,N)=>u(k,{...N,ref:y}):we.cloneElement(u,{ref:y})})}),Jh=Zh;function qh(e){const t=v.useRef(e);return v.useEffect(()=>{t.current=e},[e]),t}function ze(e){const t=qh(e);return v.useCallback(function(...n){return t.current&&t.current(...n)},[t])}const Jf=e=>v.forwardRef((t,n)=>c.jsx("div",{...t,ref:n,className:M(t.className,e)})),qf=Jf("h4");qf.displayName="DivStyledAsH4";const bf=v.forwardRef(({className:e,bsPrefix:t,as:n=qf,...r},l)=>(t=H(t,"alert-heading"),c.jsx(n,{ref:l,className:M(e,t),...r})));bf.displayName="AlertHeading";const bh=bf;function ev(){return v.useState(null)}function tv(){const e=v.useRef(!0),t=v.useRef(()=>e.current);return v.useEffect(()=>(e.current=!0,()=>{e.current=!1}),[]),t.current}function nv(e){const t=v.useRef(null);return v.useEffect(()=>{t.current=e}),t.current}const rv=typeof global<"u"&&global.navigator&&global.navigator.product==="ReactNative",lv=typeof document<"u",ma=lv||rv?v.useLayoutEffect:v.useEffect,ov=["as","disabled"];function iv(e,t){if(e==null)return{};var n={},r=Object.keys(e),l,o;for(o=0;o=0)&&(n[l]=e[l]);return n}function uv(e){return!e||e.trim()==="#"}function Wu({tagName:e,disabled:t,href:n,target:r,rel:l,role:o,onClick:i,tabIndex:u=0,type:s}){e||(n!=null||r!=null||l!=null?e="a":e="button");const a={tagName:e};if(e==="button")return[{type:s||"button",disabled:t},a];const d=p=>{if((t||e==="a"&&uv(n))&&p.preventDefault(),t){p.stopPropagation();return}i==null||i(p)},m=p=>{p.key===" "&&(p.preventDefault(),d(p))};return e==="a"&&(n||(n="#"),t&&(n=void 0)),[{role:o??"button",disabled:void 0,tabIndex:t?void 0:u,href:n,target:e==="a"?r:void 0,"aria-disabled":t||void 0,rel:e==="a"?l:void 0,onClick:d,onKeyDown:m},a]}const sv=v.forwardRef((e,t)=>{let{as:n,disabled:r}=e,l=iv(e,ov);const[o,{tagName:i}]=Wu(Object.assign({tagName:n,disabled:r},l));return c.jsx(i,Object.assign({},l,o,{ref:t}))});sv.displayName="Button";const av=["onKeyDown"];function cv(e,t){if(e==null)return{};var n={},r=Object.keys(e),l,o;for(o=0;o=0)&&(n[l]=e[l]);return n}function fv(e){return!e||e.trim()==="#"}const ed=v.forwardRef((e,t)=>{let{onKeyDown:n}=e,r=cv(e,av);const[l]=Wu(Object.assign({tagName:"a"},r)),o=ze(i=>{l.onKeyDown(i),n==null||n(i)});return fv(r.href)||r.role==="button"?c.jsx("a",Object.assign({ref:t},r,l,{onKeyDown:o})):c.jsx("a",Object.assign({ref:t},r,{onKeyDown:n}))});ed.displayName="Anchor";const dv=ed,td=v.forwardRef(({className:e,bsPrefix:t,as:n=dv,...r},l)=>(t=H(t,"alert-link"),c.jsx(n,{ref:l,className:M(e,t),...r})));td.displayName="AlertLink";const pv=td,mv={[St]:"show",[Kt]:"show"},nd=v.forwardRef(({className:e,children:t,transitionClasses:n={},onEnter:r,...l},o)=>{const i={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1,...l},u=v.useCallback((s,a)=>{Gh(s),r==null||r(s,a)},[r]);return c.jsx(Jh,{ref:o,addEndListener:Kh,...i,onEnter:u,childRef:t.ref,children:(s,a)=>v.cloneElement(t,{...a,className:M("fade",e,t.props.className,mv[s],n[s])})})});nd.displayName="Fade";const Gl=nd,hv={"aria-label":st.string,onClick:st.func,variant:st.oneOf(["white"])},Qu=v.forwardRef(({className:e,variant:t,"aria-label":n="Close",...r},l)=>c.jsx("button",{ref:l,type:"button",className:M("btn-close",t&&`btn-close-${t}`,e),"aria-label":n,...r}));Qu.displayName="CloseButton";Qu.propTypes=hv;const rd=Qu,ld=v.forwardRef((e,t)=>{const{bsPrefix:n,show:r=!0,closeLabel:l="Close alert",closeVariant:o,className:i,children:u,variant:s="primary",onClose:a,dismissible:d,transition:m=Gl,...p}=Ch(e,{show:"onClose"}),y=H(n,"alert"),w=ze(h=>{a&&a(!1,h)}),S=m===!0?Gl:m,L=c.jsxs("div",{role:"alert",...S?void 0:p,ref:t,className:M(i,y,s&&`${y}-${s}`,d&&`${y}-dismissible`),children:[d&&c.jsx(rd,{onClick:w,"aria-label":l,variant:o}),u]});return S?c.jsx(S,{unmountOnExit:!0,...p,ref:void 0,in:r,children:L}):r?L:null});ld.displayName="Alert";const ha=Object.assign(ld,{Link:pv,Heading:bh}),od=v.forwardRef(({as:e,bsPrefix:t,variant:n="primary",size:r,active:l=!1,disabled:o=!1,className:i,...u},s)=>{const a=H(t,"btn"),[d,{tagName:m}]=Wu({tagName:e,disabled:o,...u}),p=m;return c.jsx(p,{...d,...u,ref:s,disabled:o,className:M(i,a,l&&"active",n&&`${a}-${n}`,r&&`${a}-${r}`,u.href&&o&&"disabled")})});od.displayName="Button";const It=od;function vv(e){const t=v.useRef(e);return t.current=e,t}function id(e){const t=vv(e);v.useEffect(()=>()=>t.current(),[])}function gv(e,t){let n=0;return v.Children.map(e,r=>v.isValidElement(r)?t(r,n++):r)}function yv(e,t){return v.Children.toArray(e).some(n=>v.isValidElement(n)&&n.type===t)}function wv({as:e,bsPrefix:t,className:n,...r}){t=H(t,"col");const l=Vf(),o=Wf(),i=[],u=[];return l.forEach(s=>{const a=r[s];delete r[s];let d,m,p;typeof a=="object"&&a!=null?{span:d,offset:m,order:p}=a:d=a;const y=s!==o?`-${s}`:"";d&&i.push(d===!0?`${t}${y}`:`${t}${y}-${d}`),p!=null&&u.push(`order${y}-${p}`),m!=null&&u.push(`offset${y}-${m}`)}),[{...r,className:M(n,...i,...u)},{as:e,bsPrefix:t,spans:i}]}const ud=v.forwardRef((e,t)=>{const[{className:n,...r},{as:l="div",bsPrefix:o,spans:i}]=wv(e);return c.jsx(l,{...r,ref:t,className:M(n,!i.length&&o)})});ud.displayName="Col";const Ku=ud,sd=v.forwardRef(({bsPrefix:e,fluid:t=!1,as:n="div",className:r,...l},o)=>{const i=H(e,"container"),u=typeof t=="string"?`-${t}`:"-fluid";return c.jsx(n,{ref:o,...l,className:M(r,t?`${i}${u}`:i)})});sd.displayName="Container";const xv=sd;var Sv=Function.prototype.bind.call(Function.prototype.call,[].slice);function mn(e,t){return Sv(e.querySelectorAll(t))}function va(e,t){if(e.contains)return e.contains(t);if(e.compareDocumentPosition)return e===t||!!(e.compareDocumentPosition(t)&16)}const Ev="data-rr-ui-";function kv(e){return`${Ev}${e}`}const ad=v.createContext(Kn?window:void 0);ad.Provider;function Gu(){return v.useContext(ad)}const Cv={type:st.string,tooltip:st.bool,as:st.elementType},Xu=v.forwardRef(({as:e="div",className:t,type:n="valid",tooltip:r=!1,...l},o)=>c.jsx(e,{...l,ref:o,className:M(t,`${n}-${r?"tooltip":"feedback"}`)}));Xu.displayName="Feedback";Xu.propTypes=Cv;const cd=Xu,Nv=v.createContext({}),pt=Nv,fd=v.forwardRef(({id:e,bsPrefix:t,className:n,type:r="checkbox",isValid:l=!1,isInvalid:o=!1,as:i="input",...u},s)=>{const{controlId:a}=v.useContext(pt);return t=H(t,"form-check-input"),c.jsx(i,{...u,ref:s,type:r,id:e||a,className:M(n,t,l&&"is-valid",o&&"is-invalid")})});fd.displayName="FormCheckInput";const dd=fd,pd=v.forwardRef(({bsPrefix:e,className:t,htmlFor:n,...r},l)=>{const{controlId:o}=v.useContext(pt);return e=H(e,"form-check-label"),c.jsx("label",{...r,ref:l,htmlFor:n||o,className:M(t,e)})});pd.displayName="FormCheckLabel";const Yi=pd,md=v.forwardRef(({id:e,bsPrefix:t,bsSwitchPrefix:n,inline:r=!1,reverse:l=!1,disabled:o=!1,isValid:i=!1,isInvalid:u=!1,feedbackTooltip:s=!1,feedback:a,feedbackType:d,className:m,style:p,title:y="",type:w="checkbox",label:S,children:L,as:h="input",...f},g)=>{t=H(t,"form-check"),n=H(n,"form-switch");const{controlId:x}=v.useContext(pt),T=v.useMemo(()=>({controlId:e||x}),[x,e]),k=!L&&S!=null&&S!==!1||yv(L,Yi),N=c.jsx(dd,{...f,type:w==="switch"?"checkbox":w,ref:g,isValid:i,isInvalid:u,disabled:o,as:h});return c.jsx(pt.Provider,{value:T,children:c.jsx("div",{style:p,className:M(m,k&&t,r&&`${t}-inline`,l&&`${t}-reverse`,w==="switch"&&n),children:L||c.jsxs(c.Fragment,{children:[N,k&&c.jsx(Yi,{title:y,children:S}),a&&c.jsx(cd,{type:d,tooltip:s,children:a})]})})})});md.displayName="FormCheck";const Xl=Object.assign(md,{Input:dd,Label:Yi}),hd=v.forwardRef(({bsPrefix:e,type:t,size:n,htmlSize:r,id:l,className:o,isValid:i=!1,isInvalid:u=!1,plaintext:s,readOnly:a,as:d="input",...m},p)=>{const{controlId:y}=v.useContext(pt);return e=H(e,"form-control"),c.jsx(d,{...m,type:t,size:r,ref:p,readOnly:a,id:l||y,className:M(o,s?`${e}-plaintext`:e,n&&`${e}-${n}`,t==="color"&&`${e}-color`,i&&"is-valid",u&&"is-invalid")})});hd.displayName="FormControl";const Tv=Object.assign(hd,{Feedback:cd}),vd=v.forwardRef(({className:e,bsPrefix:t,as:n="div",...r},l)=>(t=H(t,"form-floating"),c.jsx(n,{ref:l,className:M(e,t),...r})));vd.displayName="FormFloating";const _v=vd,gd=v.forwardRef(({controlId:e,as:t="div",...n},r)=>{const l=v.useMemo(()=>({controlId:e}),[e]);return c.jsx(pt.Provider,{value:l,children:c.jsx(t,{...n,ref:r})})});gd.displayName="FormGroup";const yd=gd,wd=v.forwardRef(({as:e="label",bsPrefix:t,column:n=!1,visuallyHidden:r=!1,className:l,htmlFor:o,...i},u)=>{const{controlId:s}=v.useContext(pt);t=H(t,"form-label");let a="col-form-label";typeof n=="string"&&(a=`${a} ${a}-${n}`);const d=M(l,t,r&&"visually-hidden",n&&a);return o=o||s,n?c.jsx(Ku,{ref:u,as:"label",className:d,htmlFor:o,...i}):c.jsx(e,{ref:u,className:d,htmlFor:o,...i})});wd.displayName="FormLabel";const jv=wd,xd=v.forwardRef(({bsPrefix:e,className:t,id:n,...r},l)=>{const{controlId:o}=v.useContext(pt);return e=H(e,"form-range"),c.jsx("input",{...r,type:"range",ref:l,className:M(t,e),id:n||o})});xd.displayName="FormRange";const Lv=xd,Sd=v.forwardRef(({bsPrefix:e,size:t,htmlSize:n,className:r,isValid:l=!1,isInvalid:o=!1,id:i,...u},s)=>{const{controlId:a}=v.useContext(pt);return e=H(e,"form-select"),c.jsx("select",{...u,size:n,ref:s,className:M(r,e,t&&`${e}-${t}`,l&&"is-valid",o&&"is-invalid"),id:i||a})});Sd.displayName="FormSelect";const Rv=Sd,Ed=v.forwardRef(({bsPrefix:e,className:t,as:n="small",muted:r,...l},o)=>(e=H(e,"form-text"),c.jsx(n,{...l,ref:o,className:M(t,e,r&&"text-muted")})));Ed.displayName="FormText";const Ov=Ed,kd=v.forwardRef((e,t)=>c.jsx(Xl,{...e,ref:t,type:"switch"}));kd.displayName="Switch";const Pv=Object.assign(kd,{Input:Xl.Input,Label:Xl.Label}),Cd=v.forwardRef(({bsPrefix:e,className:t,children:n,controlId:r,label:l,...o},i)=>(e=H(e,"form-floating"),c.jsxs(yd,{ref:i,className:M(t,e),controlId:r,...o,children:[n,c.jsx("label",{htmlFor:r,children:l})]})));Cd.displayName="FloatingLabel";const Fv=Cd,Mv={_ref:st.any,validated:st.bool,as:st.elementType},Yu=v.forwardRef(({className:e,validated:t,as:n="form",...r},l)=>c.jsx(n,{...r,ref:l,className:M(e,t&&"was-validated")}));Yu.displayName="Form";Yu.propTypes=Mv;const re=Object.assign(Yu,{Group:yd,Control:Tv,Floating:_v,Check:Xl,Switch:Pv,Label:jv,Text:Ov,Range:Lv,Select:Rv,FloatingLabel:Fv});var sl;function ga(e){if((!sl&&sl!==0||e)&&Kn){var t=document.createElement("div");t.style.position="absolute",t.style.top="-9999px",t.style.width="50px",t.style.height="50px",t.style.overflow="scroll",document.body.appendChild(t),sl=t.offsetWidth-t.clientWidth,document.body.removeChild(t)}return sl}function Ko(e){e===void 0&&(e=ho());try{var t=e.activeElement;return!t||!t.nodeName?null:t}catch{return e.body}}function zv(e=document){const t=e.defaultView;return Math.abs(t.innerWidth-e.documentElement.clientWidth)}const ya=kv("modal-open");class $v{constructor({ownerDocument:t,handleContainerOverflow:n=!0,isRTL:r=!1}={}){this.handleContainerOverflow=n,this.isRTL=r,this.modals=[],this.ownerDocument=t}getScrollbarWidth(){return zv(this.ownerDocument)}getElement(){return(this.ownerDocument||document).body}setModalAttributes(t){}removeModalAttributes(t){}setContainerStyle(t){const n={overflow:"hidden"},r=this.isRTL?"paddingLeft":"paddingRight",l=this.getElement();t.style={overflow:l.style.overflow,[r]:l.style[r]},t.scrollBarWidth&&(n[r]=`${parseInt(qt(l,r)||"0",10)+t.scrollBarWidth}px`),l.setAttribute(ya,""),qt(l,n)}reset(){[...this.modals].forEach(t=>this.remove(t))}removeContainerStyle(t){const n=this.getElement();n.removeAttribute(ya),Object.assign(n.style,t.style)}add(t){let n=this.modals.indexOf(t);return n!==-1||(n=this.modals.length,this.modals.push(t),this.setModalAttributes(t),n!==0)||(this.state={scrollBarWidth:this.getScrollbarWidth(),style:{}},this.handleContainerOverflow&&this.setContainerStyle(this.state)),n}remove(t){const n=this.modals.indexOf(t);n!==-1&&(this.modals.splice(n,1),!this.modals.length&&this.handleContainerOverflow&&this.removeContainerStyle(this.state),this.removeModalAttributes(t))}isTopModal(t){return!!this.modals.length&&this.modals[this.modals.length-1]===t}}const Zu=$v,Go=(e,t)=>Kn?e==null?(t||ho()).body:(typeof e=="function"&&(e=e()),e&&"current"in e&&(e=e.current),e&&("nodeType"in e||e.getBoundingClientRect)?e:null):null;function Iv(e,t){const n=Gu(),[r,l]=v.useState(()=>Go(e,n==null?void 0:n.document));if(!r){const o=Go(e);o&&l(o)}return v.useEffect(()=>{t&&r&&t(r)},[t,r]),v.useEffect(()=>{const o=Go(e);o!==r&&l(o)},[e,r]),r}function Dv({children:e,in:t,onExited:n,mountOnEnter:r,unmountOnExit:l}){const o=v.useRef(null),i=v.useRef(t),u=ze(n);v.useEffect(()=>{t?i.current=!0:u(o.current)},[t,u]);const s=vo(o,e.ref),a=v.cloneElement(e,{ref:s});return t?a:l||!i.current&&r?null:a}function Av({in:e,onTransition:t}){const n=v.useRef(null),r=v.useRef(!0),l=ze(t);return ma(()=>{if(!n.current)return;let o=!1;return l({in:e,element:n.current,initial:r.current,isStale:()=>o}),()=>{o=!0}},[e,l]),ma(()=>(r.current=!1,()=>{r.current=!0}),[]),n}function Bv({children:e,in:t,onExited:n,onEntered:r,transition:l}){const[o,i]=v.useState(!t);t&&o&&i(!1);const u=Av({in:!!t,onTransition:a=>{const d=()=>{a.isStale()||(a.in?r==null||r(a.element,a.initial):(i(!0),n==null||n(a.element)))};Promise.resolve(l(a)).then(d,m=>{throw a.in||i(!0),m})}}),s=vo(u,e.ref);return o&&!t?null:v.cloneElement(e,{ref:s})}function wa(e,t,n){return e?c.jsx(e,Object.assign({},n)):t?c.jsx(Bv,Object.assign({},n,{transition:t})):c.jsx(Dv,Object.assign({},n))}function Uv(e){return e.code==="Escape"||e.keyCode===27}const Hv=["show","role","className","style","children","backdrop","keyboard","onBackdropClick","onEscapeKeyDown","transition","runTransition","backdropTransition","runBackdropTransition","autoFocus","enforceFocus","restoreFocus","restoreFocusOptions","renderDialog","renderBackdrop","manager","container","onShow","onHide","onExit","onExited","onExiting","onEnter","onEntering","onEntered"];function Vv(e,t){if(e==null)return{};var n={},r=Object.keys(e),l,o;for(o=0;o=0)&&(n[l]=e[l]);return n}let Xo;function Wv(e){return Xo||(Xo=new Zu({ownerDocument:e==null?void 0:e.document})),Xo}function Qv(e){const t=Gu(),n=e||Wv(t),r=v.useRef({dialog:null,backdrop:null});return Object.assign(r.current,{add:()=>n.add(r.current),remove:()=>n.remove(r.current),isTopModal:()=>n.isTopModal(r.current),setDialogRef:v.useCallback(l=>{r.current.dialog=l},[]),setBackdropRef:v.useCallback(l=>{r.current.backdrop=l},[])})}const Nd=v.forwardRef((e,t)=>{let{show:n=!1,role:r="dialog",className:l,style:o,children:i,backdrop:u=!0,keyboard:s=!0,onBackdropClick:a,onEscapeKeyDown:d,transition:m,runTransition:p,backdropTransition:y,runBackdropTransition:w,autoFocus:S=!0,enforceFocus:L=!0,restoreFocus:h=!0,restoreFocusOptions:f,renderDialog:g,renderBackdrop:x=K=>c.jsx("div",Object.assign({},K)),manager:T,container:k,onShow:N,onHide:j=()=>{},onExit:B,onExited:P,onExiting:se,onEnter:Ge,onEntering:Xe,onEntered:sn}=e,Gn=Vv(e,Hv);const Re=Gu(),Ye=Iv(k),C=Qv(T),R=tv(),O=nv(n),[I,A]=v.useState(!n),pe=v.useRef(null);v.useImperativeHandle(t,()=>C,[C]),Kn&&!O&&n&&(pe.current=Ko(Re==null?void 0:Re.document)),n&&I&&A(!1);const Oe=ze(()=>{if(C.add(),cn.current=Kl(document,"keydown",yo),an.current=Kl(document,"focus",()=>setTimeout(Pe),!0),N&&N(),S){var K,Vr;const Zn=Ko((K=(Vr=C.dialog)==null?void 0:Vr.ownerDocument)!=null?K:Re==null?void 0:Re.document);C.dialog&&Zn&&!va(C.dialog,Zn)&&(pe.current=Zn,C.dialog.focus())}}),tt=ze(()=>{if(C.remove(),cn.current==null||cn.current(),an.current==null||an.current(),h){var K;(K=pe.current)==null||K.focus==null||K.focus(f),pe.current=null}});v.useEffect(()=>{!n||!Ye||Oe()},[n,Ye,Oe]),v.useEffect(()=>{I&&tt()},[I,tt]),id(()=>{tt()});const Pe=ze(()=>{if(!L||!R()||!C.isTopModal())return;const K=Ko(Re==null?void 0:Re.document);C.dialog&&K&&!va(C.dialog,K)&&C.dialog.focus()}),vt=ze(K=>{K.target===K.currentTarget&&(a==null||a(K),u===!0&&j())}),yo=ze(K=>{s&&Uv(K)&&C.isTopModal()&&(d==null||d(K),K.defaultPrevented||j())}),an=v.useRef(),cn=v.useRef(),Xn=(...K)=>{A(!0),P==null||P(...K)};if(!Ye)return null;const Hr=Object.assign({role:r,ref:C.setDialogRef,"aria-modal":r==="dialog"?!0:void 0},Gn,{style:o,className:l,tabIndex:-1});let Yn=g?g(Hr):c.jsx("div",Object.assign({},Hr,{children:v.cloneElement(i,{role:"document"})}));Yn=wa(m,p,{unmountOnExit:!0,mountOnEnter:!0,appear:!0,in:!!n,onExit:B,onExiting:se,onExited:Xn,onEnter:Ge,onEntering:Xe,onEntered:sn,children:Yn});let Ht=null;return u&&(Ht=x({ref:C.setBackdropRef,onClick:vt}),Ht=wa(y,w,{in:!!n,appear:!0,mountOnEnter:!0,unmountOnExit:!0,children:Ht})),c.jsx(c.Fragment,{children:jn.createPortal(c.jsxs(c.Fragment,{children:[Ht,Yn]}),Ye)})});Nd.displayName="Modal";const Kv=Object.assign(Nd,{Manager:Zu});function Gv(e,t){return e.classList?!!t&&e.classList.contains(t):(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")!==-1}function Xv(e,t){e.classList?e.classList.add(t):Gv(e,t)||(typeof e.className=="string"?e.className=e.className+" "+t:e.setAttribute("class",(e.className&&e.className.baseVal||"")+" "+t))}function xa(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}function Yv(e,t){e.classList?e.classList.remove(t):typeof e.className=="string"?e.className=xa(e.className,t):e.setAttribute("class",xa(e.className&&e.className.baseVal||"",t))}const hn={FIXED_CONTENT:".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",STICKY_CONTENT:".sticky-top",NAVBAR_TOGGLER:".navbar-toggler"};class Zv extends Zu{adjustAndStore(t,n,r){const l=n.style[t];n.dataset[t]=l,qt(n,{[t]:`${parseFloat(qt(n,t))+r}px`})}restore(t,n){const r=n.dataset[t];r!==void 0&&(delete n.dataset[t],qt(n,{[t]:r}))}setContainerStyle(t){super.setContainerStyle(t);const n=this.getElement();if(Xv(n,"modal-open"),!t.scrollBarWidth)return;const r=this.isRTL?"paddingLeft":"paddingRight",l=this.isRTL?"marginLeft":"marginRight";mn(n,hn.FIXED_CONTENT).forEach(o=>this.adjustAndStore(r,o,t.scrollBarWidth)),mn(n,hn.STICKY_CONTENT).forEach(o=>this.adjustAndStore(l,o,-t.scrollBarWidth)),mn(n,hn.NAVBAR_TOGGLER).forEach(o=>this.adjustAndStore(l,o,t.scrollBarWidth))}removeContainerStyle(t){super.removeContainerStyle(t);const n=this.getElement();Yv(n,"modal-open");const r=this.isRTL?"paddingLeft":"paddingRight",l=this.isRTL?"marginLeft":"marginRight";mn(n,hn.FIXED_CONTENT).forEach(o=>this.restore(r,o)),mn(n,hn.STICKY_CONTENT).forEach(o=>this.restore(l,o)),mn(n,hn.NAVBAR_TOGGLER).forEach(o=>this.restore(l,o))}}let Yo;function Jv(e){return Yo||(Yo=new Zv(e)),Yo}const Td=v.forwardRef(({className:e,bsPrefix:t,as:n="div",...r},l)=>(t=H(t,"modal-body"),c.jsx(n,{ref:l,className:M(e,t),...r})));Td.displayName="ModalBody";const qv=Td,bv=v.createContext({onHide(){}}),_d=bv,jd=v.forwardRef(({bsPrefix:e,className:t,contentClassName:n,centered:r,size:l,fullscreen:o,children:i,scrollable:u,...s},a)=>{e=H(e,"modal");const d=`${e}-dialog`,m=typeof o=="string"?`${e}-fullscreen-${o}`:`${e}-fullscreen`;return c.jsx("div",{...s,ref:a,className:M(d,t,l&&`${e}-${l}`,r&&`${d}-centered`,u&&`${d}-scrollable`,o&&m),children:c.jsx("div",{className:M(`${e}-content`,n),children:i})})});jd.displayName="ModalDialog";const Ld=jd,Rd=v.forwardRef(({className:e,bsPrefix:t,as:n="div",...r},l)=>(t=H(t,"modal-footer"),c.jsx(n,{ref:l,className:M(e,t),...r})));Rd.displayName="ModalFooter";const e0=Rd,t0=v.forwardRef(({closeLabel:e="Close",closeVariant:t,closeButton:n=!1,onHide:r,children:l,...o},i)=>{const u=v.useContext(_d),s=ze(()=>{u==null||u.onHide(),r==null||r()});return c.jsxs("div",{ref:i,...o,children:[l,n&&c.jsx(rd,{"aria-label":e,variant:t,onClick:s})]})}),n0=t0,Od=v.forwardRef(({bsPrefix:e,className:t,closeLabel:n="Close",closeButton:r=!1,...l},o)=>(e=H(e,"modal-header"),c.jsx(n0,{ref:o,...l,className:M(t,e),closeLabel:n,closeButton:r})));Od.displayName="ModalHeader";const r0=Od,l0=Jf("h4"),Pd=v.forwardRef(({className:e,bsPrefix:t,as:n=l0,...r},l)=>(t=H(t,"modal-title"),c.jsx(n,{ref:l,className:M(e,t),...r})));Pd.displayName="ModalTitle";const o0=Pd;function i0(e){return c.jsx(Gl,{...e,timeout:null})}function u0(e){return c.jsx(Gl,{...e,timeout:null})}const Fd=v.forwardRef(({bsPrefix:e,className:t,style:n,dialogClassName:r,contentClassName:l,children:o,dialogAs:i=Ld,"aria-labelledby":u,"aria-describedby":s,"aria-label":a,show:d=!1,animation:m=!0,backdrop:p=!0,keyboard:y=!0,onEscapeKeyDown:w,onShow:S,onHide:L,container:h,autoFocus:f=!0,enforceFocus:g=!0,restoreFocus:x=!0,restoreFocusOptions:T,onEntered:k,onExit:N,onExiting:j,onEnter:B,onEntering:P,onExited:se,backdropClassName:Ge,manager:Xe,...sn},Gn)=>{const[Re,Ye]=v.useState({}),[C,R]=v.useState(!1),O=v.useRef(!1),I=v.useRef(!1),A=v.useRef(null),[pe,Oe]=ev(),tt=vo(Gn,Oe),Pe=ze(L),vt=jh();e=H(e,"modal");const yo=v.useMemo(()=>({onHide:Pe}),[Pe]);function an(){return Xe||Jv({isRTL:vt})}function cn($){if(!Kn)return;const fn=an().getScrollbarWidth()>0,es=$.scrollHeight>ho($).documentElement.clientHeight;Ye({paddingRight:fn&&!es?ga():void 0,paddingLeft:!fn&&es?ga():void 0})}const Xn=ze(()=>{pe&&cn(pe.dialog)});id(()=>{Xi(window,"resize",Xn),A.current==null||A.current()});const Hr=()=>{O.current=!0},Yn=$=>{O.current&&pe&&$.target===pe.dialog&&(I.current=!0),O.current=!1},Ht=()=>{R(!0),A.current=Zf(pe.dialog,()=>{R(!1)})},K=$=>{$.target===$.currentTarget&&Ht()},Vr=$=>{if(p==="static"){K($);return}if(I.current||$.target!==$.currentTarget){I.current=!1;return}L==null||L()},Zn=$=>{y?w==null||w($):($.preventDefault(),p==="static"&&Ht())},Wd=($,fn)=>{$&&cn($),B==null||B($,fn)},Qd=$=>{A.current==null||A.current(),N==null||N($)},Kd=($,fn)=>{P==null||P($,fn),Yf(window,"resize",Xn)},Gd=$=>{$&&($.style.display=""),se==null||se($),Xi(window,"resize",Xn)},Xd=v.useCallback($=>c.jsx("div",{...$,className:M(`${e}-backdrop`,Ge,!m&&"show")}),[m,Ge,e]),bu={...n,...Re};bu.display="block";const Yd=$=>c.jsx("div",{role:"dialog",...$,style:bu,className:M(t,e,C&&`${e}-static`,!m&&"show"),onClick:p?Vr:void 0,onMouseUp:Yn,"aria-label":a,"aria-labelledby":u,"aria-describedby":s,children:c.jsx(i,{...sn,onMouseDown:Hr,className:r,contentClassName:l,children:o})});return c.jsx(_d.Provider,{value:yo,children:c.jsx(Kv,{show:d,ref:tt,backdrop:p,container:h,keyboard:!0,autoFocus:f,enforceFocus:g,restoreFocus:x,restoreFocusOptions:T,onEscapeKeyDown:Zn,onShow:S,onHide:L,onEnter:Wd,onEntering:Kd,onEntered:k,onExit:Qd,onExiting:j,onExited:Gd,manager:an(),transition:m?i0:void 0,backdropTransition:m?u0:void 0,renderBackdrop:Xd,renderDialog:Yd})})});Fd.displayName="Modal";const ee=Object.assign(Fd,{Body:qv,Header:r0,Title:o0,Footer:e0,Dialog:Ld,TRANSITION_DURATION:300,BACKDROP_TRANSITION_DURATION:150}),Sa=1e3;function s0(e,t,n){const r=(e-t)/(n-t)*100;return Math.round(r*Sa)/Sa}function Ea({min:e,now:t,max:n,label:r,visuallyHidden:l,striped:o,animated:i,className:u,style:s,variant:a,bsPrefix:d,...m},p){return c.jsx("div",{ref:p,...m,role:"progressbar",className:M(u,`${d}-bar`,{[`bg-${a}`]:a,[`${d}-bar-animated`]:i,[`${d}-bar-striped`]:i||o}),style:{width:`${s0(t,e,n)}%`,...s},"aria-valuenow":t,"aria-valuemin":e,"aria-valuemax":n,children:l?c.jsx("span",{className:"visually-hidden",children:r}):r})}const Md=v.forwardRef(({isChild:e=!1,...t},n)=>{const r={min:0,max:100,animated:!1,visuallyHidden:!1,striped:!1,...t};if(r.bsPrefix=H(r.bsPrefix,"progress"),e)return Ea(r,n);const{min:l,now:o,max:i,label:u,visuallyHidden:s,striped:a,animated:d,bsPrefix:m,variant:p,className:y,children:w,...S}=r;return c.jsx("div",{ref:n,...S,className:M(y,m),children:w?gv(w,L=>v.cloneElement(L,{isChild:!0})):Ea({min:l,now:o,max:i,label:u,visuallyHidden:s,striped:a,animated:d,bsPrefix:m,variant:p},n)})});Md.displayName="ProgressBar";const a0=Md,zd=v.forwardRef(({bsPrefix:e,className:t,as:n="div",...r},l)=>{const o=H(e,"row"),i=Vf(),u=Wf(),s=`${o}-cols`,a=[];return i.forEach(d=>{const m=r[d];delete r[d];let p;m!=null&&typeof m=="object"?{cols:p}=m:p=m;const y=d!==u?`-${d}`:"";p!=null&&a.push(`${s}${y}-${p}`)}),c.jsx(n,{ref:l,...r,className:M(t,o,...a)})});zd.displayName="Row";const $d=zd,Id=v.forwardRef(({bsPrefix:e,variant:t,animation:n="border",size:r,as:l="div",className:o,...i},u)=>{e=H(e,"spinner");const s=`${e}-${n}`;return c.jsx(l,{ref:u,...i,className:M(o,s,r&&`${s}-${r}`,t&&`text-${t}`)})});Id.displayName="Spinner";const Hn=Id,Yl="initializing",Dd="paused",Ad="live",c0="error";function Ju(e,t){let n,r=t;const l=async()=>{if(r=await e(),r==null)throw"asyncCallback returned null or undefined";o()};let o=()=>{n=setTimeout(l,r)};return o(),()=>{clearTimeout(n)}}function f0(e,t){let n;const r=async()=>{await e().then(()=>!1,()=>!0)&&l()};let l=o=>{n=setTimeout(r,o!==void 0?o:t)};return l(0),()=>clearTimeout(n)}const Sl=e=>{const{onClick:t,disabled:n,color:r,children:l,className:o,...i}=e,u=a=>{a.stopPropagation(),!n&&t()},s=r?`text-${r}`:"";return c.jsx("a",{className:`p-1 ${s} ${o}`,onClick:u,href:"#",...i,children:l})},ln=e=>{var r,l,o;let{error:t,remove:n}=e;return t==null?null:c.jsxs(ha,{variant:"danger",onClose:n,dismissible:n!=null,children:[c.jsx(ha.Heading,{children:t.text}),((r=t.details)==null?void 0:r.statusText)&&c.jsx("p",{children:c.jsx("strong",{children:(l=t.details)==null?void 0:l.statusText})}),c.jsx("pre",{children:(o=t.details)==null?void 0:o.text})]})},d0=({id:e,show:t,onHide:n})=>{if(!t)return null;const[r,l]=v.useState(!1),[o,i]=v.useState(null),[u,s]=v.useState(!1),a=v.useContext(Ur),d=v.useContext(Ut),m=()=>{l(!1),i(null),s(!1),n()},p=()=>{s(!0),(r?d.delete:d.forget)(e).then(()=>{a.refreshTorrents(),m()}).catch(w=>{i({text:`Error deleting torrent id=${e}`,details:w}),s(!1)})};return c.jsxs(ee,{show:t,onHide:m,children:[c.jsx(ee.Header,{closeButton:!0,children:"Delete torrent"}),c.jsxs(ee.Body,{children:[c.jsx(re,{children:c.jsx(re.Group,{controlId:"delete-torrent",children:c.jsx(re.Check,{type:"checkbox",label:"Also delete files",checked:r,onChange:()=>l(!r)})})}),o&&c.jsx(ln,{error:o})]}),c.jsxs(ee.Footer,{children:[u&&c.jsx(Hn,{}),c.jsx(It,{variant:"primary",onClick:p,disabled:u,children:"OK"}),c.jsx(It,{variant:"secondary",onClick:m,children:"Cancel"})]})]})};var Bd={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},ka=we.createContext&&we.createContext(Bd),Mt=globalThis&&globalThis.__assign||function(){return Mt=Object.assign||function(e){for(var t,n=1,r=arguments.length;n{let n=t.state,[r,l]=v.useState(!1),[o,i]=v.useState(!1),u=v.useContext(Bf);const s=n=="live",a=n=="paused"||n=="error",d=v.useContext(Ur),m=v.useContext(Ut),p=()=>{l(!0),m.start(e).then(()=>{u.refresh()},L=>{d.setCloseableError({text:`Error starting torrent id=${e}`,details:L})}).finally(()=>l(!1))},y=()=>{l(!0),m.pause(e).then(()=>{u.refresh()},L=>{d.setCloseableError({text:`Error pausing torrent id=${e}`,details:L})}).finally(()=>l(!1))},w=()=>{l(!0),i(!0)},S=()=>{l(!1),i(!1)};return c.jsx($d,{children:c.jsxs(Ku,{children:[a&&c.jsx(Sl,{onClick:p,disabled:r,color:"success",children:c.jsx(g0,{})}),s&&c.jsx(Sl,{onClick:y,disabled:r,children:c.jsx(v0,{})}),c.jsx(Sl,{onClick:w,disabled:r,color:"danger",children:c.jsx(y0,{})}),c.jsx(d0,{id:e,show:o,onHide:S})]})})};function qu(e){if(e===0)return"0 Bytes";const t=1024,n=["Bytes","KB","MB","GB"],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/Math.pow(t,r)).toFixed(2))+" "+n[r]}const x0=({statsResponse:e})=>{var t,n;switch(e.state){case Dd:return"Paused";case Yl:return"Checking files";case c0:return"Error"}return e.state!="live"||e.live===null?e.state:c.jsxs(c.Fragment,{children:[!e.finished&&c.jsxs("div",{className:"download-speed",children:["↓ ",(t=e.live.download_speed)==null?void 0:t.human_readable]}),c.jsxs("div",{className:"upload-speed",children:["↑ ",(n=e.live.upload_speed)==null?void 0:n.human_readable,e.live.snapshot.uploaded_bytes>0&&c.jsxs("span",{children:[" ","(",qu(e.live.snapshot.uploaded_bytes),")"]})]})]})},yt=({size:e,label:t,children:n})=>c.jsxs(Ku,{md:e||1,className:"py-3",children:[c.jsx("div",{className:"fw-bold",children:t}),n]});function S0(e){return e.files.filter(n=>n.included).reduce((n,r)=>n.length>r.length?n:r).name}function E0(e){const t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=e%60,l=(o,i)=>o>0?`${o}${i}`:"";return t>0?`${l(t,"h")} ${l(n,"m")}`.trim():n>0?`${l(n,"m")} ${l(r,"s")}`.trim():`${l(r,"s")}`.trim()}function k0(e){var n,r,l;let t=(l=(r=(n=e==null?void 0:e.live)==null?void 0:n.time_remaining)==null?void 0:r.duration)==null?void 0:l.secs;return t==null?"N/A":E0(t)}const C0=({id:e,detailsResponse:t,statsResponse:n})=>{const r=(n==null?void 0:n.state)??"",l=n==null?void 0:n.error,o=(n==null?void 0:n.total_bytes)??1,i=(n==null?void 0:n.progress_bytes)??0,u=(n==null?void 0:n.finished)||!1,s=l?100:i/o*100,a=(r==Yl||r==Ad)&&!u,d=l?"Error":`${s.toFixed(2)}%`,m=l?"danger":u?"success":r==Yl?"warning":"primary",p=()=>{var S;let w=(S=n==null?void 0:n.live)==null?void 0:S.snapshot.peer_stats;return w?`${w.live} / ${w.seen}`:""};let y=[];return l?y.push("bg-warning"):e%2==0&&y.push("bg-light"),c.jsxs($d,{className:y.join(" "),children:[c.jsx(yt,{size:3,label:"Name",children:t?c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"text-truncate",children:S0(t)}),l&&c.jsxs("p",{className:"text-danger",children:[c.jsx("strong",{children:"Error:"})," ",l]})]}):c.jsx(Hn,{})}),n?c.jsxs(c.Fragment,{children:[c.jsx(yt,{label:"Size",children:`${qu(o)} `}),c.jsx(yt,{size:2,label:(r==Dd,"Progress"),children:c.jsx(a0,{now:s,label:d,animated:a,variant:m})}),c.jsx(yt,{size:2,label:"Speed",children:c.jsx(x0,{statsResponse:n})}),c.jsx(yt,{label:"ETA",children:k0(n)}),c.jsx(yt,{size:2,label:"Live / Seen",children:p()}),c.jsx(yt,{label:"Actions",children:c.jsx(w0,{id:e,statsResponse:n})})]}):c.jsx(yt,{label:"Loading stats",size:8,children:c.jsx(Hn,{})})]})},N0=({id:e,torrent:t})=>{const[n,r]=v.useState(null),[l,o]=v.useState(null),[i,u]=v.useState(0),s=v.useContext(Ut),a=()=>{u(i+1)};return v.useEffect(()=>{if(n===null)return f0(async()=>{await s.getTorrentDetails(t.id).then(r)},1e3)},[n]),v.useEffect(()=>Ju(async()=>s.getTorrentStats(t.id).then(y=>(o(y),y)).then(y=>y.state==Yl||y.state==Ad?1e3:1e4,()=>1e4),0),[i]),c.jsx(Bf.Provider,{value:{refresh:a},children:c.jsx(C0,{id:e,detailsResponse:n,statsResponse:l})})},T0=e=>{if(e.torrents===null&&e.loading)return c.jsx(Hn,{});if(e.torrents!==null)return e.torrents.length===0?c.jsx("div",{className:"text-center",children:c.jsx("p",{children:"No existing torrents found. Add them through buttons below."})}):c.jsx("div",{style:{fontSize:"smaller"},children:e.torrents.map(t=>c.jsx(N0,{id:t.id,torrent:t},t.id))})},_0=e=>{let{onHide:t,listTorrentResponse:n,listTorrentError:r,listTorrentLoading:l,data:o}=e;const[i,u]=v.useState([]),[s,a]=v.useState(!1),[d,m]=v.useState(null),[p,y]=v.useState(!1),[w,S]=v.useState(""),L=v.useContext(Ur),h=v.useContext(Ut);v.useEffect(()=>{console.log(n),u(n?n.details.files.map((k,N)=>N):[]),S((n==null?void 0:n.output_folder)||"")},[n]);const f=()=>{t(),u([]),m(null),a(!1)},g=k=>{i.includes(k)?u(i.filter(N=>N!==k)):u([...i,k])},x=async()=>{if(!n)return;a(!0);let k=n.seen_peers?n.seen_peers.slice(0,32):null,N={overwrite:!0,only_files:i,initial_peers:k,output_folder:w};p&&(N.peer_opts={connect_timeout:20,read_write_timeout:60}),h.uploadTorrent(o,N).then(()=>{t(),L.refreshTorrents()},j=>{m({text:"Error starting torrent",details:j})}).finally(()=>a(!1))},T=()=>{if(l)return c.jsx(Hn,{});if(r)return c.jsx(ln,{error:r});if(n)return c.jsxs(re,{children:[c.jsxs("fieldset",{className:"mb-4",children:[c.jsx("legend",{children:"Pick the files to download"}),n.details.files.map((k,N)=>c.jsx(re.Group,{controlId:`check-${N}`,children:c.jsx(re.Check,{type:"checkbox",label:`${k.name} (${qu(k.length)})`,checked:i.includes(N),onChange:()=>g(N)})},N))]}),c.jsxs("fieldset",{children:[c.jsx("legend",{children:"Options"}),c.jsxs(re.Group,{controlId:"output-folder",className:"mb-3",children:[c.jsx(re.Label,{children:"Output folder"}),c.jsx(re.Control,{type:"text",value:w,onChange:k=>S(k.target.value)})]}),c.jsxs(re.Group,{controlId:"unpopular-torrent",className:"mb-3",children:[c.jsx(re.Check,{type:"checkbox",label:"Increase timeouts",checked:p,onChange:()=>y(!p)}),c.jsx("small",{id:"emailHelp",className:"form-text text-muted",children:"This might be useful for unpopular torrents with few peers. It will slow down fast torrents though."})]})]})]})};return c.jsxs(ee,{show:!0,onHide:f,size:"lg",children:[c.jsx(ee.Header,{closeButton:!0,children:c.jsx(ee.Title,{children:"Add torrent"})}),c.jsxs(ee.Body,{children:[T(),c.jsx(ln,{error:d})]}),c.jsxs(ee.Footer,{children:[s&&c.jsx(Hn,{}),c.jsx(It,{variant:"primary",onClick:x,disabled:l||s||i.length==0,children:"OK"}),c.jsx(It,{variant:"secondary",onClick:f,children:"Cancel"})]})]})},Hd=({buttonText:e,onClick:t,data:n,resetData:r,variant:l})=>{const[o,i]=v.useState(!1),[u,s]=v.useState(null),[a,d]=v.useState(null),m=v.useContext(Ut);v.useEffect(()=>{if(n===null)return;let y=setTimeout(async()=>{i(!0);try{const w=await m.uploadTorrent(n,{list_only:!0});s(w)}catch(w){d({text:"Error listing torrent files",details:w})}finally{i(!1)}},0);return()=>clearTimeout(y)},[n]);const p=()=>{r(),d(null),s(null),i(!1)};return c.jsxs(c.Fragment,{children:[c.jsx(It,{variant:l,onClick:t,className:"m-1",children:e}),n&&c.jsx(_0,{onHide:p,listTorrentError:a,listTorrentResponse:u,data:n,listTorrentLoading:o})]})},j0=({show:e,setUrl:t,cancel:n})=>{let[r,l]=v.useState("");return c.jsxs(ee,{show:e,onHide:n,size:"lg",children:[c.jsx(ee.Header,{closeButton:!0,children:c.jsx(ee.Title,{children:"Add torrent"})}),c.jsx(ee.Body,{children:c.jsx(re,{children:c.jsxs(re.Group,{className:"mb-3",controlId:"url",children:[c.jsx(re.Label,{children:"Enter magnet or HTTP(S) URL to the .torrent"}),c.jsx(re.Control,{value:r,placeholder:"magnet:?xt=urn:btih:...",onChange:o=>{l(o.target.value)}})]})})}),c.jsxs(ee.Footer,{children:[c.jsx(It,{variant:"primary",onClick:()=>{t(r),l("")},disabled:r.length==0,children:"OK"}),c.jsx(It,{variant:"secondary",onClick:n,children:"Cancel"})]})]})},L0=()=>{let[e,t]=v.useState(null),[n,r]=v.useState(!1);return c.jsxs(c.Fragment,{children:[c.jsx(Hd,{variant:"primary",buttonText:"Add Torrent from Magnet / URL",onClick:()=>{r(!0)},data:e,resetData:()=>t(null)}),c.jsx(j0,{show:n,setUrl:l=>{r(!1),t(l)},cancel:()=>{r(!1),t(null)}})]})},R0=()=>{const e=v.useRef(),[t,n]=v.useState(null),r=async()=>{var u;if(!((u=e==null?void 0:e.current)!=null&&u.files))return;const i=e.current.files[0];n(i)},l=()=>{e!=null&&e.current&&(e.current.value="",n(null))},o=()=>{e!=null&&e.current&&e.current.click()};return c.jsxs(c.Fragment,{children:[c.jsx("input",{type:"file",ref:e,accept:".torrent",onChange:r,className:"d-none"}),c.jsx(Hd,{variant:"secondary",buttonText:"Upload .torrent File",onClick:o,data:t,resetData:l})]})},O0=()=>c.jsxs("div",{id:"buttons-container",className:"mt-3",children:[c.jsx(L0,{}),c.jsx(R0,{})]}),P0=e=>{let t=v.useContext(Ur);return c.jsxs(xv,{children:[c.jsx(ln,{error:e.closeableError,remove:()=>t.setCloseableError(null)}),c.jsx(ln,{error:e.otherError}),c.jsx(T0,{torrents:e.torrents,loading:e.torrentsLoading}),c.jsx(O0,{})]})},F0=(e,t)=>{const n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n},M0=(e,t,n)=>{const r=new AbortController,l=r.signal;let o=!1;const i=()=>{console.log("cancelling fetch"),o=!0,r.abort()};return(async()=>{let s=null;try{s=await fetch(e+"/stream_logs",{signal:l})}catch(m){return o?void 0:(n({text:"network error fetching logs",details:{text:m.toString()}}),null)}if(!s.ok){let m=await s.text();n({text:"error fetching logs",details:{statusText:s.statusText,text:m}})}if(!s.body)throw n({text:"error fetching logs: ReadableStream not supported."}),new Error("ReadableStream not supported.");const a=s.body.getReader();let d=new Uint8Array;for(;;){const{done:m,value:p}=await a.read();if(m)break;for(d=F0(d,p);;){const y=d.indexOf(10);if(y===-1)break;let w=d.slice(0,y),S=new TextDecoder().decode(w);t.current(S),d=d.slice(y+1)}}})(),i},z0=({line:e})=>{var l;const t=e.parsed,n=o=>{switch(o){case"DEBUG":return"text-primary";case"INFO":return"text-success";case"WARN":return"text-warning";case"ERROR":return"text-danger";default:return"text-muted"}},r=o=>{let i=Object.entries(o).filter(([u,s])=>u!="name");return i.length==0?null:c.jsxs(c.Fragment,{children:["{",i.map(([u,s])=>c.jsxs("span",{children:[u," = ",s]},u)).reduce((u,s)=>c.jsxs(c.Fragment,{children:[u,", ",s]})),"}"]})};return c.jsxs("p",{hidden:!e.show,className:"font-monospace m-0 text-break",style:{fontSize:"10px"},children:[c.jsx("span",{className:"m-1",children:t.timestamp}),c.jsx("span",{className:`m-1 ${n(t.level)}`,children:t.level}),c.jsx("span",{className:"m-1",children:(l=t.spans)==null?void 0:l.map((o,i)=>c.jsxs("span",{children:[c.jsx("span",{className:"fw-bold",children:o.name}),r(o),":"]},i))}),c.jsx("span",{className:"m-1 text-muted",children:t.target}),c.jsxs("span",{className:`m-1 ${t.fields.message.match(/error|fail/g)?"text-danger":"text-muted"}`,children:[t.fields.message,Object.entries(t.fields).filter(([o,i])=>o!="message").map(([o,i])=>c.jsxs("span",{className:"m-1",children:[c.jsx("span",{className:"fst-italic fw-bold",children:o}),"=",i]},o))]})]})},$0=({httpApiBase:e,maxLines:t})=>{const[n,r]=v.useState([]),[l,o]=v.useState(null),[i,u]=v.useState(""),s=v.useRef(new RegExp("")),a=t??1e3,d=v.useCallback(y=>{r(w=>[{id:w.length==0?0:w[0].id+1,content:y,parsed:JSON.parse(y),show:!!y.match(s.current)},...w.slice(0,a-1)])},[s.current,t]),m=v.useRef(d);m.current=d;const p=y=>{u(y);try{let w=new RegExp(y);s.current=w,r(S=>{let L=[...S];for(let h of L)h.show=!!h.content.match(w);return L})}catch{}};return v.useEffect(()=>M0(e,m,o),[e]),c.jsxs("div",{className:"row",children:[c.jsx(ln,{error:l}),c.jsxs("div",{className:"mb-3",children:["Showing last ",a," logs since this window was opened"]}),c.jsx(re,{children:c.jsx(re.Group,{className:"mb-3",children:c.jsx(re.Control,{type:"text",value:i,placeholder:"Enter filter (regex)",onChange:y=>p(y.target.value)})})}),n.map(y=>c.jsx(z0,{line:y},y.id))]})},I0=({show:e,onClose:t})=>{const r=v.useContext(Ut).getHttpBaseUrl();return c.jsxs(ee,{size:"xl",show:e,onHide:t,children:[c.jsx(ee.Header,{closeButton:!0,children:c.jsx(ee.Title,{children:"rqbit server logs"})}),c.jsx(ee.Body,{children:r?c.jsx($0,{httpApiBase:r}):c.jsx(ln,{error:{text:"HTTP API not available to stream logs"}})}),c.jsx(ee.Footer,{children:c.jsx(It,{variant:"primary",onClick:t,children:"Close"})})]})},D0=e=>{const[t,n]=v.useState(null),[r,l]=v.useState(null),[o,i]=v.useState(null),[u,s]=v.useState(!1);let[a,d]=v.useState(!1);const m=v.useContext(Ut),p=async()=>{s(!0);let w=await m.listTorrents().finally(()=>s(!1));i(w.torrents)};v.useEffect(()=>Ju(async()=>p().then(()=>(l(null),5e3),w=>(l({text:"Error refreshing torrents",details:w}),console.error(w),5e3)),0),[]);const y={setCloseableError:n,refreshTorrents:p};return c.jsxs(Ur.Provider,{value:y,children:[c.jsxs("div",{className:"text-center",children:[c.jsx("h1",{className:"mt-3 mb-4",children:e.title}),c.jsx(P0,{closeableError:t,otherError:r,torrents:o,torrentsLoading:u})]}),c.jsxs("div",{className:"position-absolute top-0 start-0 p-1",children:[e.menuButtons&&e.menuButtons.map((w,S)=>c.jsx("span",{children:w},S)),c.jsx(Sl,{onClick:()=>d(!0),children:c.jsx(h0,{})})]}),c.jsx(I0,{show:a,onClose:()=>d(!1)})]})},Vd=window.origin==="null"||window.origin==="http://localhost:3031"?"http://localhost:3030":"",nt=async(e,t,n)=>{console.log(e,t);const r=Vd+t,l={method:e,headers:{Accept:"application/json"},body:n};let o={method:e,path:t,text:""},i;try{i=await fetch(r,l)}catch{return o.text="network error",Promise.reject(o)}if(o.status=i.status,o.statusText=`${i.status} ${i.statusText}`,!i.ok){const s=await i.text();try{const a=JSON.parse(s);o.text=a.human_readable!==void 0?a.human_readable:JSON.stringify(a,null,2)}catch{o.text=s}return Promise.reject(o)}return await i.json()},Ca={getHttpBaseUrl:()=>Vd,listTorrents:()=>nt("GET","/torrents"),getTorrentDetails:e=>nt("GET",`/torrents/${e}`),getTorrentStats:e=>nt("GET",`/torrents/${e}/stats/v1`),uploadTorrent:(e,t)=>{var r,l;let n="/torrents?&overwrite=true";return t!=null&&t.list_only&&(n+="&list_only=true"),(t==null?void 0:t.only_files)!=null&&(n+=`&only_files=${t.only_files.join(",")}`),(r=t==null?void 0:t.peer_opts)!=null&&r.connect_timeout&&(n+=`&peer_connect_timeout=${t.peer_opts.connect_timeout}`),(l=t==null?void 0:t.peer_opts)!=null&&l.read_write_timeout&&(n+=`&peer_read_write_timeout=${t.peer_opts.read_write_timeout}`),t!=null&&t.initial_peers&&(n+=`&initial_peers=${t.initial_peers.join(",")}`),t!=null&&t.output_folder&&(n+=`&output_folder=${t.output_folder}`),typeof e=="string"&&(n+="&is_url=true"),nt("POST",n,e)},pause:e=>nt("POST",`/torrents/${e}/pause`),start:e=>nt("POST",`/torrents/${e}/start`),forget:e=>nt("POST",`/torrents/${e}/forget`),delete:e=>nt("POST",`/torrents/${e}/delete`),getVersion:async()=>(await nt("GET","/")).version},A0=()=>{let[e,t]=v.useState("rqbit web UI");return v.useEffect(()=>Ju(()=>Ca.getVersion().then(r=>{const l=`rqbit web UI - v${r}`;return t(l),document.title=l,1e4},r=>1e3),0),[]),c.jsx(v.StrictMode,{children:c.jsx(Ut.Provider,{value:Ca,children:c.jsx(D0,{title:e})})})};Zo.createRoot(document.getElementById("app")).render(c.jsx(A0,{})); diff --git a/crates/librqbit/webui/dist/manifest.json b/crates/librqbit/webui/dist/manifest.json index 07371437..4fbd7141 100644 --- a/crates/librqbit/webui/dist/manifest.json +++ b/crates/librqbit/webui/dist/manifest.json @@ -4,7 +4,7 @@ "src": "assets/logo.svg" }, "index.html": { - "file": "assets/index-b673c0d1.js", + "file": "assets/index-67d5d1d3.js", "isEntry": true, "src": "index.html" } diff --git a/crates/librqbit/webui/src/components/LogStream.tsx b/crates/librqbit/webui/src/components/LogStream.tsx index 4a23a980..932ac9ab 100644 --- a/crates/librqbit/webui/src/components/LogStream.tsx +++ b/crates/librqbit/webui/src/components/LogStream.tsx @@ -1,6 +1,13 @@ -import React, { useEffect, useState } from "react"; +import React, { + useCallback, + useEffect, + useMemo, + useRef, + useState, +} from "react"; import { ErrorWithLabel } from "../rqbit-web"; import { ErrorComponent } from "./ErrorComponent"; +import { Form } from "react-bootstrap"; interface LogStreamProps { httpApiBase: string; @@ -10,6 +17,8 @@ interface LogStreamProps { interface Line { id: number; content: string; + parsed: JSONLogLine; + show: boolean; } const mergeBuffers = (a1: Uint8Array, a2: Uint8Array): Uint8Array => { @@ -21,13 +30,13 @@ const mergeBuffers = (a1: Uint8Array, a2: Uint8Array): Uint8Array => { const streamLogs = ( httpApiBase: string, - addLine: (text: string) => void, + addLine: React.MutableRefObject<(text: string) => void>, setError: (error: ErrorWithLabel | null) => void ): (() => void) => { const controller = new AbortController(); const signal = controller.signal; - let canceled = true; + let canceled = false; const cancel = () => { console.log("cancelling fetch"); @@ -90,7 +99,7 @@ const streamLogs = ( } let lineBytes = buffer.slice(0, newLineIdx); let line = new TextDecoder().decode(lineBytes); - addLine(line); + addLine.current(line); buffer = buffer.slice(newLineIdx + 1); } } @@ -139,8 +148,8 @@ const EXAMPLE_LOG_JSON: JSONLogLine = { ], }; -const LogLine = ({ line }: { line: string }) => { - let parsed: JSONLogLine = JSON.parse(line); +const LogLine = ({ line }: { line: Line }) => { + const parsed = line.parsed; const classNameByLevel = (level: string) => { switch (level) { @@ -168,9 +177,9 @@ const LogLine = ({ line }: { line: string }) => { {fields .map(([name, value]) => { return ( - <> + {name} = {value} - + ); }) .reduce((prev, curr) => ( @@ -184,16 +193,20 @@ const LogLine = ({ line }: { line: string }) => { }; return ( -

+

+
+ Showing last {maxL} logs since this window was opened +
+
+ + handleFilterChange(e.target.value)} + /> + +
+ {logLines.map((line) => ( - + ))}
); diff --git a/crates/librqbit/webui/src/rqbit-web.tsx b/crates/librqbit/webui/src/rqbit-web.tsx index f489f3a0..b459094d 100644 --- a/crates/librqbit/webui/src/rqbit-web.tsx +++ b/crates/librqbit/webui/src/rqbit-web.tsx @@ -3,6 +3,9 @@ import { TorrentId, ErrorDetails as ApiErrorDetails } from "./api-types"; import { AppContext, APIContext } from "./context"; import { RootContent } from "./components/RootContent"; import { customSetInterval } from "./helper/customSetInterval"; +import { IconButton } from "./components/IconButton"; +import { BsBodyText } from "react-icons/bs"; +import { LogStreamModal } from "./components/LogStreamModal"; export interface ErrorWithLabel { text: string; @@ -14,7 +17,10 @@ export interface ContextType { refreshTorrents: () => void; } -export const RqbitWebUI = (props: { title: string }) => { +export const RqbitWebUI = (props: { + title: string; + menuButtons?: JSX.Element[]; +}) => { const [closeableError, setCloseableError] = useState( null ); @@ -22,6 +28,8 @@ export const RqbitWebUI = (props: { title: string }) => { const [torrents, setTorrents] = useState | null>(null); const [torrentsLoading, setTorrentsLoading] = useState(false); + let [logsOpened, setLogsOpened] = useState(false); + const API = useContext(APIContext); const refreshTorrents = async () => { @@ -66,6 +74,17 @@ export const RqbitWebUI = (props: { title: string }) => { torrentsLoading={torrentsLoading} /> + + {/* Menu buttons */} +
+ {props.menuButtons && + props.menuButtons.map((b, i) => {b})} + setLogsOpened(true)}> + + +
+ + setLogsOpened(false)} /> ); }; diff --git a/desktop/src/rqbit-desktop.tsx b/desktop/src/rqbit-desktop.tsx index f7af6366..4e7bcdde 100644 --- a/desktop/src/rqbit-desktop.tsx +++ b/desktop/src/rqbit-desktop.tsx @@ -18,27 +18,25 @@ export const RqbitDesktop: React.FC<{ currentState.config ?? defaultConfig ); let [configurationOpened, setConfigurationOpened] = useState(false); - let [logsOpened, setLogsOpened] = useState(false); + + const configButton = ( + { + setConfigurationOpened(true); + }} + > + + + ); return ( {configured && ( - - )} - {configured && ( -
- { - setConfigurationOpened(true); - }} - > - - - setLogsOpened(true)}> - - -
+ )} - setLogsOpened(false)} />
); }; From 1eb6f29db0c3c95323cece897b921517807a4803 Mon Sep 17 00:00:00 2001 From: Igor Katson Date: Sat, 9 Dec 2023 00:14:03 +0000 Subject: [PATCH 4/4] Fix JS type error --- crates/librqbit/webui/dist/assets/index.js | 2 +- crates/librqbit/webui/dist/manifest.json | 2 +- crates/librqbit/webui/src/context.tsx | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/crates/librqbit/webui/dist/assets/index.js b/crates/librqbit/webui/dist/assets/index.js index e868bc15..e2bc00ff 100644 --- a/crates/librqbit/webui/dist/assets/index.js +++ b/crates/librqbit/webui/dist/assets/index.js @@ -37,7 +37,7 @@ `+l[i].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=i&&0<=u);break}}}finally{So=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?or(e):""}function Ep(e){switch(e.tag){case 5:return or(e.type);case 16:return or("Lazy");case 13:return or("Suspense");case 19:return or("SuspenseList");case 0:case 2:case 15:return e=Eo(e.type,!1),e;case 11:return e=Eo(e.type.render,!1),e;case 1:return e=Eo(e.type,!0),e;default:return""}}function ti(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 gn:return"Fragment";case vn:return"Portal";case qo:return"Profiler";case ru:return"StrictMode";case bo:return"Suspense";case ei:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Ua:return(e.displayName||"Context")+".Consumer";case Ba:return(e._context.displayName||"Context")+".Provider";case lu:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ou:return t=e.displayName||null,t!==null?t:ti(e.type)||"Memo";case wt:t=e._payload,e=e._init;try{return ti(e(t))}catch{}}return null}function kp(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 ti(t);case 8:return t===ru?"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 zt(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Va(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Cp(e){var t=Va(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 l=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(i){r=""+i,o.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Kr(e){e._valueTracker||(e._valueTracker=Cp(e))}function Wa(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Va(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function El(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 ni(e,t){var n=t.checked;return Y({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function us(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=zt(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 Qa(e,t){t=t.checked,t!=null&&nu(e,"checked",t,!1)}function ri(e,t){Qa(e,t);var n=zt(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")?li(e,t.type,n):t.hasOwnProperty("defaultValue")&&li(e,t.type,zt(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function ss(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 li(e,t,n){(t!=="number"||El(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var ir=Array.isArray;function Ln(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=Gr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function xr(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var cr={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},Np=["Webkit","ms","Moz","O"];Object.keys(cr).forEach(function(e){Np.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),cr[t]=cr[e]})});function Ya(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||cr.hasOwnProperty(e)&&cr[e]?(""+t).trim():t+"px"}function Za(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=Ya(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var Tp=Y({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 ui(e,t){if(t){if(Tp[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 si(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 ai=null;function iu(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ci=null,Rn=null,On=null;function fs(e){if(e=Ar(e)){if(typeof ci!="function")throw Error(E(280));var t=e.stateNode;t&&(t=no(t),ci(e.stateNode,e.type,t))}}function Ja(e){Rn?On?On.push(e):On=[e]:Rn=e}function qa(){if(Rn){var e=Rn,t=On;if(On=Rn=null,fs(e),t)for(e=0;e>>=0,e===0?32:31-(Ip(e)/Dp|0)|0}var Xr=64,Yr=4194304;function ur(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 Tl(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,l=e.suspendedLanes,o=e.pingedLanes,i=n&268435455;if(i!==0){var u=i&~l;u!==0?r=ur(u):(o&=i,o!==0&&(r=ur(o)))}else i=n&~l,i!==0?r=ur(i):o!==0&&(r=ur(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&l)&&(l=r&-r,o=t&-t,l>=o||l===16&&(o&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 Ir(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-We(t),e[t]=n}function Hp(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=dr),xs=String.fromCharCode(32),Ss=!1;function yc(e,t){switch(e){case"keyup":return vm.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function wc(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var yn=!1;function ym(e,t){switch(e){case"compositionend":return wc(t);case"keypress":return t.which!==32?null:(Ss=!0,xs);case"textInput":return e=t.data,e===xs&&Ss?null:e;default:return null}}function wm(e,t){if(yn)return e==="compositionend"||!mu&&yc(e,t)?(e=vc(),dl=fu=Ct=null,yn=!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=Ns(n)}}function kc(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?kc(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Cc(){for(var e=window,t=El();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=El(e.document)}return t}function hu(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 jm(e){var t=Cc(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&kc(n.ownerDocument.documentElement,n)){if(r!==null&&hu(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 l=n.textContent.length,o=Math.min(r.start,l);r=r.end===void 0?o:Math.min(r.end,l),!e.extend&&o>r&&(l=r,r=o,o=l),l=Ts(n,o);var i=Ts(n,r);l&&i&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.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,wn=null,vi=null,mr=null,gi=!1;function _s(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;gi||wn==null||wn!==El(r)||(r=wn,"selectionStart"in r&&hu(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}),mr&&Tr(mr,r)||(mr=r,r=Ll(vi,"onSelect"),0En||(e.current=ki[En],ki[En]=null,En--)}function U(e,t){En++,ki[En]=e.current,e.current=t}var $t={},de=At($t),Se=At(!1),bt=$t;function $n(e,t){var n=e.type.contextTypes;if(!n)return $t;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},o;for(o in n)l[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function Ee(e){return e=e.childContextTypes,e!=null}function Ol(){W(Se),W(de)}function Ms(e,t,n){if(de.current!==$t)throw Error(E(168));U(de,t),U(Se,n)}function Fc(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in t))throw Error(E(108,kp(e)||"Unknown",l));return Y({},n,r)}function Pl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||$t,bt=de.current,U(de,e),U(Se,Se.current),!0}function zs(e,t,n){var r=e.stateNode;if(!r)throw Error(E(169));n?(e=Fc(e,t,bt),r.__reactInternalMemoizedMergedChildContext=e,W(Se),W(de),U(de,e)):W(Se),U(Se,n)}var lt=null,ro=!1,$o=!1;function Mc(e){lt===null?lt=[e]:lt.push(e)}function Bm(e){ro=!0,Mc(e)}function Bt(){if(!$o&<!==null){$o=!0;var e=0,t=D;try{var n=lt;for(D=1;e>=i,l-=i,ot=1<<32-We(t)+l|n<j?(B=N,N=null):B=N.sibling;var P=p(h,N,g[j],x);if(P===null){N===null&&(N=B);break}e&&N&&P.alternate===null&&t(h,N),f=o(P,f,j),k===null?T=P:k.sibling=P,k=P,N=B}if(j===g.length)return n(h,N),Q&&Vt(h,j),T;if(N===null){for(;jj?(B=N,N=null):B=N.sibling;var se=p(h,N,P.value,x);if(se===null){N===null&&(N=B);break}e&&N&&se.alternate===null&&t(h,N),f=o(se,f,j),k===null?T=se:k.sibling=se,k=se,N=B}if(P.done)return n(h,N),Q&&Vt(h,j),T;if(N===null){for(;!P.done;j++,P=g.next())P=m(h,P.value,x),P!==null&&(f=o(P,f,j),k===null?T=P:k.sibling=P,k=P);return Q&&Vt(h,j),T}for(N=r(h,N);!P.done;j++,P=g.next())P=y(N,h,j,P.value,x),P!==null&&(e&&P.alternate!==null&&N.delete(P.key===null?j:P.key),f=o(P,f,j),k===null?T=P:k.sibling=P,k=P);return e&&N.forEach(function(Ge){return t(h,Ge)}),Q&&Vt(h,j),T}function L(h,f,g,x){if(typeof g=="object"&&g!==null&&g.type===gn&&g.key===null&&(g=g.props.children),typeof g=="object"&&g!==null){switch(g.$$typeof){case Qr:e:{for(var T=g.key,k=f;k!==null;){if(k.key===T){if(T=g.type,T===gn){if(k.tag===7){n(h,k.sibling),f=l(k,g.props.children),f.return=h,h=f;break e}}else if(k.elementType===T||typeof T=="object"&&T!==null&&T.$$typeof===wt&&Hs(T)===k.type){n(h,k.sibling),f=l(k,g.props),f.ref=nr(h,k,g),f.return=h,h=f;break e}n(h,k);break}else t(h,k);k=k.sibling}g.type===gn?(f=Jt(g.props.children,h.mode,x,g.key),f.return=h,h=f):(x=xl(g.type,g.key,g.props,null,h.mode,x),x.ref=nr(h,f,g),x.return=h,h=x)}return i(h);case vn:e:{for(k=g.key;f!==null;){if(f.key===k)if(f.tag===4&&f.stateNode.containerInfo===g.containerInfo&&f.stateNode.implementation===g.implementation){n(h,f.sibling),f=l(f,g.children||[]),f.return=h,h=f;break e}else{n(h,f);break}else t(h,f);f=f.sibling}f=Wo(g,h.mode,x),f.return=h,h=f}return i(h);case wt:return k=g._init,L(h,f,k(g._payload),x)}if(ir(g))return w(h,f,g,x);if(Jn(g))return S(h,f,g,x);nl(h,g)}return typeof g=="string"&&g!==""||typeof g=="number"?(g=""+g,f!==null&&f.tag===6?(n(h,f.sibling),f=l(f,g),f.return=h,h=f):(n(h,f),f=Vo(g,h.mode,x),f.return=h,h=f),i(h)):n(h,f)}return L}var Dn=Hc(!0),Vc=Hc(!1),Br={},et=At(Br),Rr=At(Br),Or=At(Br);function Yt(e){if(e===Br)throw Error(E(174));return e}function Cu(e,t){switch(U(Or,t),U(Rr,e),U(et,Br),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:ii(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=ii(t,e)}W(et),U(et,t)}function An(){W(et),W(Rr),W(Or)}function Wc(e){Yt(Or.current);var t=Yt(et.current),n=ii(t,e.type);t!==n&&(U(Rr,e),U(et,n))}function Nu(e){Rr.current===e&&(W(et),W(Rr))}var G=At(0);function Dl(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 Io=[];function Tu(){for(var e=0;en?n:4,e(!0);var r=Do.transition;Do.transition={};try{e(!1),t()}finally{D=n,Do.transition=r}}function uf(){return Ae().memoizedState}function Wm(e,t,n){var r=Pt(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},sf(e))af(t,n);else if(n=Dc(e,t,n,r),n!==null){var l=he();Qe(n,e,r,l),cf(n,t,r)}}function Qm(e,t,n){var r=Pt(e),l={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(sf(e))af(t,l);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var i=t.lastRenderedState,u=o(i,n);if(l.hasEagerState=!0,l.eagerState=u,Ke(u,i)){var s=t.interleaved;s===null?(l.next=l,Eu(t)):(l.next=s.next,s.next=l),t.interleaved=l;return}}catch{}finally{}n=Dc(e,t,l,r),n!==null&&(l=he(),Qe(n,e,r,l),cf(n,t,r))}}function sf(e){var t=e.alternate;return e===X||t!==null&&t===X}function af(e,t){hr=Al=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function cf(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,su(e,n)}}var Bl={readContext:De,useCallback:ae,useContext:ae,useEffect:ae,useImperativeHandle:ae,useInsertionEffect:ae,useLayoutEffect:ae,useMemo:ae,useReducer:ae,useRef:ae,useState:ae,useDebugValue:ae,useDeferredValue:ae,useTransition:ae,useMutableSource:ae,useSyncExternalStore:ae,useId:ae,unstable_isNewReconciler:!1},Km={readContext:De,useCallback:function(e,t){return Je().memoizedState=[e,t===void 0?null:t],e},useContext:De,useEffect:Ws,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,vl(4194308,4,tf.bind(null,t,e),n)},useLayoutEffect:function(e,t){return vl(4194308,4,e,t)},useInsertionEffect:function(e,t){return vl(4,2,e,t)},useMemo:function(e,t){var n=Je();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Je();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=Wm.bind(null,X,e),[r.memoizedState,e]},useRef:function(e){var t=Je();return e={current:e},t.memoizedState=e},useState:Vs,useDebugValue:Ou,useDeferredValue:function(e){return Je().memoizedState=e},useTransition:function(){var e=Vs(!1),t=e[0];return e=Vm.bind(null,e[1]),Je().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=X,l=Je();if(Q){if(n===void 0)throw Error(E(407));n=n()}else{if(n=t(),le===null)throw Error(E(349));tn&30||Gc(r,t,n)}l.memoizedState=n;var o={value:n,getSnapshot:t};return l.queue=o,Ws(Yc.bind(null,r,o,e),[e]),r.flags|=2048,Mr(9,Xc.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=Je(),t=le.identifierPrefix;if(Q){var n=it,r=ot;n=(r&~(1<<32-We(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Pr++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[qe]=t,e[Lr]=r,wf(e,t,!1,!1),t.stateNode=e;e:{switch(i=si(n,r),n){case"dialog":V("cancel",e),V("close",e),l=r;break;case"iframe":case"object":case"embed":V("load",e),l=r;break;case"video":case"audio":for(l=0;lUn&&(t.flags|=128,r=!0,rr(o,!1),t.lanes=4194304)}else{if(!r)if(e=Dl(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),rr(o,!0),o.tail===null&&o.tailMode==="hidden"&&!i.alternate&&!Q)return ce(t),null}else 2*J()-o.renderingStartTime>Un&&n!==1073741824&&(t.flags|=128,r=!0,rr(o,!1),t.lanes=4194304);o.isBackwards?(i.sibling=t.child,t.child=i):(n=o.last,n!==null?n.sibling=i:t.child=i,o.last=i)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=J(),t.sibling=null,n=G.current,U(G,r?n&1|2:n&1),t):(ce(t),null);case 22:case 23:return Iu(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Ce&1073741824&&(ce(t),t.subtreeFlags&6&&(t.flags|=8192)):ce(t),null;case 24:return null;case 25:return null}throw Error(E(156,t.tag))}function eh(e,t){switch(gu(t),t.tag){case 1:return Ee(t.type)&&Ol(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return An(),W(Se),W(de),Tu(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Nu(t),null;case 13:if(W(G),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(E(340));In()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return W(G),null;case 4:return An(),null;case 10:return Su(t.type._context),null;case 22:case 23:return Iu(),null;case 24:return null;default:return null}}var ll=!1,fe=!1,th=typeof WeakSet=="function"?WeakSet:Set,_=null;function Tn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Z(e,t,r)}else n.current=null}function zi(e,t,n){try{n()}catch(r){Z(e,t,r)}}var bs=!1;function nh(e,t){if(yi=_l,e=Cc(),hu(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 l=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var i=0,u=-1,s=-1,a=0,d=0,m=e,p=null;t:for(;;){for(var y;m!==n||l!==0&&m.nodeType!==3||(u=i+l),m!==o||r!==0&&m.nodeType!==3||(s=i+r),m.nodeType===3&&(i+=m.nodeValue.length),(y=m.firstChild)!==null;)p=m,m=y;for(;;){if(m===e)break t;if(p===n&&++a===l&&(u=i),p===o&&++d===r&&(s=i),(y=m.nextSibling)!==null)break;m=p,p=m.parentNode}m=y}n=u===-1||s===-1?null:{start:u,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(wi={focusedElem:e,selectionRange:n},_l=!1,_=t;_!==null;)if(t=_,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,_=e;else for(;_!==null;){t=_;try{var w=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(w!==null){var S=w.memoizedProps,L=w.memoizedState,h=t.stateNode,f=h.getSnapshotBeforeUpdate(t.elementType===t.type?S:Ue(t.type,S),L);h.__reactInternalSnapshotBeforeUpdate=f}break;case 3:var g=t.stateNode.containerInfo;g.nodeType===1?g.textContent="":g.nodeType===9&&g.documentElement&&g.removeChild(g.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(E(163))}}catch(x){Z(t,t.return,x)}if(e=t.sibling,e!==null){e.return=t.return,_=e;break}_=t.return}return w=bs,bs=!1,w}function vr(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var o=l.destroy;l.destroy=void 0,o!==void 0&&zi(t,n,o)}l=l.next}while(l!==r)}}function io(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 $i(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 Ef(e){var t=e.alternate;t!==null&&(e.alternate=null,Ef(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[qe],delete t[Lr],delete t[Ei],delete t[Dm],delete t[Am])),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 kf(e){return e.tag===5||e.tag===3||e.tag===4}function ea(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||kf(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 Ii(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=Rl));else if(r!==4&&(e=e.child,e!==null))for(Ii(e,t,n),e=e.sibling;e!==null;)Ii(e,t,n),e=e.sibling}function Di(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(Di(e,t,n),e=e.sibling;e!==null;)Di(e,t,n),e=e.sibling}var oe=null,He=!1;function gt(e,t,n){for(n=n.child;n!==null;)Cf(e,t,n),n=n.sibling}function Cf(e,t,n){if(be&&typeof be.onCommitFiberUnmount=="function")try{be.onCommitFiberUnmount(ql,n)}catch{}switch(n.tag){case 5:fe||Tn(n,t);case 6:var r=oe,l=He;oe=null,gt(e,t,n),oe=r,He=l,oe!==null&&(He?(e=oe,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):oe.removeChild(n.stateNode));break;case 18:oe!==null&&(He?(e=oe,n=n.stateNode,e.nodeType===8?zo(e.parentNode,n):e.nodeType===1&&zo(e,n),Cr(e)):zo(oe,n.stateNode));break;case 4:r=oe,l=He,oe=n.stateNode.containerInfo,He=!0,gt(e,t,n),oe=r,He=l;break;case 0:case 11:case 14:case 15:if(!fe&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var o=l,i=o.destroy;o=o.tag,i!==void 0&&(o&2||o&4)&&zi(n,t,i),l=l.next}while(l!==r)}gt(e,t,n);break;case 1:if(!fe&&(Tn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(u){Z(n,t,u)}gt(e,t,n);break;case 21:gt(e,t,n);break;case 22:n.mode&1?(fe=(r=fe)||n.memoizedState!==null,gt(e,t,n),fe=r):gt(e,t,n);break;default:gt(e,t,n)}}function ta(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new th),t.forEach(function(r){var l=fh.bind(null,e,r);n.has(r)||(n.add(r),r.then(l,l))})}}function Be(e,t){var n=t.deletions;if(n!==null)for(var r=0;rl&&(l=i),r&=~o}if(r=l,r=J()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*lh(r/1960))-r,10e?16:e,Nt===null)var r=!1;else{if(e=Nt,Nt=null,Vl=0,z&6)throw Error(E(331));var l=z;for(z|=4,_=e.current;_!==null;){var o=_,i=o.child;if(_.flags&16){var u=o.deletions;if(u!==null){for(var s=0;sJ()-zu?Zt(e,0):Mu|=n),ke(e,t)}function Pf(e,t){t===0&&(e.mode&1?(t=Yr,Yr<<=1,!(Yr&130023424)&&(Yr=4194304)):t=1);var n=he();e=ft(e,t),e!==null&&(Ir(e,t,n),ke(e,n))}function ch(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Pf(e,n)}function fh(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(E(314))}r!==null&&r.delete(t),Pf(e,n)}var Ff;Ff=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Se.current)xe=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return xe=!1,qm(e,t,n);xe=!!(e.flags&131072)}else xe=!1,Q&&t.flags&1048576&&zc(t,Ml,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;gl(e,t),e=t.pendingProps;var l=$n(t,de.current);Fn(t,n),l=ju(null,t,r,e,l,n);var o=Lu();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ee(r)?(o=!0,Pl(t)):o=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,ku(t),l.updater=lo,t.stateNode=l,l._reactInternals=t,ji(t,r,e,n),t=Oi(null,t,r,!0,o,n)):(t.tag=0,Q&&o&&vu(t),me(null,t,l,n),t=t.child),t;case 16:r=t.elementType;e:{switch(gl(e,t),e=t.pendingProps,l=r._init,r=l(r._payload),t.type=r,l=t.tag=ph(r),e=Ue(r,e),l){case 0:t=Ri(null,t,r,e,n);break e;case 1:t=Zs(null,t,r,e,n);break e;case 11:t=Xs(null,t,r,e,n);break e;case 14:t=Ys(null,t,r,Ue(r.type,e),n);break e}throw Error(E(306,r,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ue(r,l),Ri(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ue(r,l),Zs(e,t,r,l,n);case 3:e:{if(vf(t),e===null)throw Error(E(387));r=t.pendingProps,o=t.memoizedState,l=o.element,Ac(e,t),Il(t,r,null,n);var i=t.memoizedState;if(r=i.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){l=Bn(Error(E(423)),t),t=Js(e,t,r,n,l);break e}else if(r!==l){l=Bn(Error(E(424)),t),t=Js(e,t,r,n,l);break e}else for(Ne=Lt(t.stateNode.containerInfo.firstChild),Te=t,Q=!0,Ve=null,n=Vc(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(In(),r===l){t=dt(e,t,n);break e}me(e,t,r,n)}t=t.child}return t;case 5:return Wc(t),e===null&&Ni(t),r=t.type,l=t.pendingProps,o=e!==null?e.memoizedProps:null,i=l.children,xi(r,l)?i=null:o!==null&&xi(r,o)&&(t.flags|=32),hf(e,t),me(e,t,i,n),t.child;case 6:return e===null&&Ni(t),null;case 13:return gf(e,t,n);case 4:return Cu(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Dn(t,null,r,n):me(e,t,r,n),t.child;case 11:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ue(r,l),Xs(e,t,r,l,n);case 7:return me(e,t,t.pendingProps,n),t.child;case 8:return me(e,t,t.pendingProps.children,n),t.child;case 12:return me(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,l=t.pendingProps,o=t.memoizedProps,i=l.value,U(zl,r._currentValue),r._currentValue=i,o!==null)if(Ke(o.value,i)){if(o.children===l.children&&!Se.current){t=dt(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var u=o.dependencies;if(u!==null){i=o.child;for(var s=u.firstContext;s!==null;){if(s.context===r){if(o.tag===1){s=ut(-1,n&-n),s.tag=2;var a=o.updateQueue;if(a!==null){a=a.shared;var d=a.pending;d===null?s.next=s:(s.next=d.next,d.next=s),a.pending=s}}o.lanes|=n,s=o.alternate,s!==null&&(s.lanes|=n),Ti(o.return,n,t),u.lanes|=n;break}s=s.next}}else if(o.tag===10)i=o.type===t.type?null:o.child;else if(o.tag===18){if(i=o.return,i===null)throw Error(E(341));i.lanes|=n,u=i.alternate,u!==null&&(u.lanes|=n),Ti(i,n,t),i=o.sibling}else i=o.child;if(i!==null)i.return=o;else for(i=o;i!==null;){if(i===t){i=null;break}if(o=i.sibling,o!==null){o.return=i.return,i=o;break}i=i.return}o=i}me(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,r=t.pendingProps.children,Fn(t,n),l=De(l),r=r(l),t.flags|=1,me(e,t,r,n),t.child;case 14:return r=t.type,l=Ue(r,t.pendingProps),l=Ue(r.type,l),Ys(e,t,r,l,n);case 15:return pf(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ue(r,l),gl(e,t),t.tag=1,Ee(r)?(e=!0,Pl(t)):e=!1,Fn(t,n),Uc(t,r,l),ji(t,r,l,n),Oi(null,t,r,!0,e,n);case 19:return yf(e,t,n);case 22:return mf(e,t,n)}throw Error(E(156,t.tag))};function Mf(e,t){return oc(e,t)}function dh(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 $e(e,t,n,r){return new dh(e,t,n,r)}function Au(e){return e=e.prototype,!(!e||!e.isReactComponent)}function ph(e){if(typeof e=="function")return Au(e)?1:0;if(e!=null){if(e=e.$$typeof,e===lu)return 11;if(e===ou)return 14}return 2}function Ft(e,t){var n=e.alternate;return n===null?(n=$e(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 xl(e,t,n,r,l,o){var i=2;if(r=e,typeof e=="function")Au(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case gn:return Jt(n.children,l,o,t);case ru:i=8,l|=8;break;case qo:return e=$e(12,n,t,l|2),e.elementType=qo,e.lanes=o,e;case bo:return e=$e(13,n,t,l),e.elementType=bo,e.lanes=o,e;case ei:return e=$e(19,n,t,l),e.elementType=ei,e.lanes=o,e;case Ha:return so(n,l,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Ba:i=10;break e;case Ua:i=9;break e;case lu:i=11;break e;case ou:i=14;break e;case wt:i=16,r=null;break e}throw Error(E(130,e==null?e:typeof e,""))}return t=$e(i,n,t,l),t.elementType=e,t.type=r,t.lanes=o,t}function Jt(e,t,n,r){return e=$e(7,e,r,t),e.lanes=n,e}function so(e,t,n,r){return e=$e(22,e,r,t),e.elementType=Ha,e.lanes=n,e.stateNode={isHidden:!1},e}function Vo(e,t,n){return e=$e(6,e,null,t),e.lanes=n,e}function Wo(e,t,n){return t=$e(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function mh(e,t,n,r,l){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=Co(0),this.expirationTimes=Co(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Co(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function Bu(e,t,n,r,l,o,i,u,s){return e=new mh(e,t,n,u,s),t===1?(t=1,o===!0&&(t|=8)):t=0,o=$e(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},ku(o),e}function hh(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Df)}catch(e){console.error(e)}}Df(),za.exports=je;var Af=za.exports;const jn=Zl(Af);var aa=Af;Zo.createRoot=aa.createRoot,Zo.hydrateRoot=aa.hydrateRoot;const Ut=v.createContext({listTorrents:()=>{throw new Error("Function not implemented.")},getTorrentDetails:()=>{throw new Error("Function not implemented.")},getTorrentStats:()=>{throw new Error("Function not implemented.")},uploadTorrent:()=>{throw new Error("Function not implemented.")},pause:()=>{throw new Error("Function not implemented.")},start:()=>{throw new Error("Function not implemented.")},forget:()=>{throw new Error("Function not implemented.")},delete:()=>{throw new Error("Function not implemented.")}}),Ur=v.createContext({setCloseableError:e=>{},refreshTorrents:()=>{}}),Bf=v.createContext({refresh:()=>{}});var Uf={exports:{}};/*! +`+o.stack}return{value:e,source:t,stack:l,digest:null}}function Uo(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function Li(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var Ym=typeof WeakMap=="function"?WeakMap:Map;function ff(e,t,n){n=ut(-1,n),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Hl||(Hl=!0,Ai=r),Li(e,t)},n}function df(e,t,n){n=ut(-1,n),n.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r=="function"){var l=t.value;n.payload=function(){return r(l)},n.callback=function(){Li(e,t)}}var o=e.stateNode;return o!==null&&typeof o.componentDidCatch=="function"&&(n.callback=function(){Li(e,t),typeof r!="function"&&(Ot===null?Ot=new Set([this]):Ot.add(this));var i=t.stack;this.componentDidCatch(t.value,{componentStack:i!==null?i:""})}),n}function Qs(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Ym;var l=new Set;r.set(t,l)}else l=r.get(t),l===void 0&&(l=new Set,r.set(t,l));l.has(n)||(l.add(n),e=ah.bind(null,e,t,n),t.then(e,e))}function Ks(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 Gs(e,t,n,r,l){return e.mode&1?(e.flags|=65536,e.lanes=l,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=ut(-1,1),t.tag=2,Rt(n,t,1))),n.lanes|=1),e)}var Zm=mt.ReactCurrentOwner,xe=!1;function me(e,t,n,r){t.child=e===null?Vc(t,null,n,r):Dn(t,e.child,n,r)}function Xs(e,t,n,r,l){n=n.render;var o=t.ref;return Fn(t,l),r=ju(e,t,n,r,o,l),n=Lu(),e!==null&&!xe?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~l,dt(e,t,l)):(Q&&n&&vu(t),t.flags|=1,me(e,t,r,l),t.child)}function Ys(e,t,n,r,l){if(e===null){var o=n.type;return typeof o=="function"&&!Au(o)&&o.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(t.tag=15,t.type=o,pf(e,t,o,r,l)):(e=xl(n.type,null,r,t,t.mode,l),e.ref=t.ref,e.return=t,t.child=e)}if(o=e.child,!(e.lanes&l)){var i=o.memoizedProps;if(n=n.compare,n=n!==null?n:Tr,n(i,r)&&e.ref===t.ref)return dt(e,t,l)}return t.flags|=1,e=Ft(o,r),e.ref=t.ref,e.return=t,t.child=e}function pf(e,t,n,r,l){if(e!==null){var o=e.memoizedProps;if(Tr(o,r)&&e.ref===t.ref)if(xe=!1,t.pendingProps=r=o,(e.lanes&l)!==0)e.flags&131072&&(xe=!0);else return t.lanes=e.lanes,dt(e,t,l)}return Ri(e,t,n,r,l)}function mf(e,t,n){var r=t.pendingProps,l=r.children,o=e!==null?e.memoizedState:null;if(r.mode==="hidden")if(!(t.mode&1))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},U(_n,Ce),Ce|=n;else{if(!(n&1073741824))return e=o!==null?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,U(_n,Ce),Ce|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=o!==null?o.baseLanes:n,U(_n,Ce),Ce|=r}else o!==null?(r=o.baseLanes|n,t.memoizedState=null):r=n,U(_n,Ce),Ce|=r;return me(e,t,l,n),t.child}function hf(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Ri(e,t,n,r,l){var o=Ee(n)?bt:de.current;return o=$n(t,o),Fn(t,l),n=ju(e,t,n,r,o,l),r=Lu(),e!==null&&!xe?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~l,dt(e,t,l)):(Q&&r&&vu(t),t.flags|=1,me(e,t,n,l),t.child)}function Zs(e,t,n,r,l){if(Ee(n)){var o=!0;Pl(t)}else o=!1;if(Fn(t,l),t.stateNode===null)gl(e,t),Uc(t,n,r),ji(t,n,r,l),r=!0;else if(e===null){var i=t.stateNode,u=t.memoizedProps;i.props=u;var s=i.context,a=n.contextType;typeof a=="object"&&a!==null?a=De(a):(a=Ee(n)?bt:de.current,a=$n(t,a));var d=n.getDerivedStateFromProps,m=typeof d=="function"||typeof i.getSnapshotBeforeUpdate=="function";m||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(u!==r||s!==a)&&Us(t,i,r,a),xt=!1;var p=t.memoizedState;i.state=p,Il(t,r,i,l),s=t.memoizedState,u!==r||p!==s||Se.current||xt?(typeof d=="function"&&(_i(t,n,d,r),s=t.memoizedState),(u=xt||Bs(t,n,u,r,p,s,a))?(m||typeof i.UNSAFE_componentWillMount!="function"&&typeof i.componentWillMount!="function"||(typeof i.componentWillMount=="function"&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount=="function"&&i.UNSAFE_componentWillMount()),typeof i.componentDidMount=="function"&&(t.flags|=4194308)):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=a,r=u):(typeof i.componentDidMount=="function"&&(t.flags|=4194308),r=!1)}else{i=t.stateNode,Ac(e,t),u=t.memoizedProps,a=t.type===t.elementType?u:Ue(t.type,u),i.props=a,m=t.pendingProps,p=i.context,s=n.contextType,typeof s=="object"&&s!==null?s=De(s):(s=Ee(n)?bt:de.current,s=$n(t,s));var y=n.getDerivedStateFromProps;(d=typeof y=="function"||typeof i.getSnapshotBeforeUpdate=="function")||typeof i.UNSAFE_componentWillReceiveProps!="function"&&typeof i.componentWillReceiveProps!="function"||(u!==m||p!==s)&&Us(t,i,r,s),xt=!1,p=t.memoizedState,i.state=p,Il(t,r,i,l);var w=t.memoizedState;u!==m||p!==w||Se.current||xt?(typeof y=="function"&&(_i(t,n,y,r),w=t.memoizedState),(a=xt||Bs(t,n,a,r,p,w,s)||!1)?(d||typeof i.UNSAFE_componentWillUpdate!="function"&&typeof i.componentWillUpdate!="function"||(typeof i.componentWillUpdate=="function"&&i.componentWillUpdate(r,w,s),typeof i.UNSAFE_componentWillUpdate=="function"&&i.UNSAFE_componentWillUpdate(r,w,s)),typeof i.componentDidUpdate=="function"&&(t.flags|=4),typeof i.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof i.componentDidUpdate!="function"||u===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||u===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=w),i.props=r,i.state=w,i.context=s,r=a):(typeof i.componentDidUpdate!="function"||u===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),typeof i.getSnapshotBeforeUpdate!="function"||u===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),r=!1)}return Oi(e,t,n,r,o,l)}function Oi(e,t,n,r,l,o){hf(e,t);var i=(t.flags&128)!==0;if(!r&&!i)return l&&zs(t,n,!1),dt(e,t,o);r=t.stateNode,Zm.current=t;var u=i&&typeof n.getDerivedStateFromError!="function"?null:r.render();return t.flags|=1,e!==null&&i?(t.child=Dn(t,e.child,null,o),t.child=Dn(t,null,u,o)):me(e,t,u,o),t.memoizedState=r.state,l&&zs(t,n,!0),t.child}function vf(e){var t=e.stateNode;t.pendingContext?Ms(e,t.pendingContext,t.pendingContext!==t.context):t.context&&Ms(e,t.context,!1),Cu(e,t.containerInfo)}function Js(e,t,n,r,l){return In(),yu(l),t.flags|=256,me(e,t,n,r),t.child}var Pi={dehydrated:null,treeContext:null,retryLane:0};function Fi(e){return{baseLanes:e,cachePool:null,transitions:null}}function gf(e,t,n){var r=t.pendingProps,l=G.current,o=!1,i=(t.flags&128)!==0,u;if((u=i)||(u=e!==null&&e.memoizedState===null?!1:(l&2)!==0),u?(o=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(l|=1),U(G,l&1),e===null)return Ni(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):(i=r.children,e=r.fallback,o?(r=t.mode,o=t.child,i={mode:"hidden",children:i},!(r&1)&&o!==null?(o.childLanes=0,o.pendingProps=i):o=so(i,r,0,null),e=Jt(e,r,n,null),o.return=t,e.return=t,o.sibling=e,t.child=o,t.child.memoizedState=Fi(n),t.memoizedState=Pi,e):Pu(t,i));if(l=e.memoizedState,l!==null&&(u=l.dehydrated,u!==null))return Jm(e,t,i,r,u,l,n);if(o){o=r.fallback,i=t.mode,l=e.child,u=l.sibling;var s={mode:"hidden",children:r.children};return!(i&1)&&t.child!==l?(r=t.child,r.childLanes=0,r.pendingProps=s,t.deletions=null):(r=Ft(l,s),r.subtreeFlags=l.subtreeFlags&14680064),u!==null?o=Ft(u,o):(o=Jt(o,i,n,null),o.flags|=2),o.return=t,r.return=t,r.sibling=o,t.child=r,r=o,o=t.child,i=e.child.memoizedState,i=i===null?Fi(n):{baseLanes:i.baseLanes|n,cachePool:null,transitions:i.transitions},o.memoizedState=i,o.childLanes=e.childLanes&~n,t.memoizedState=Pi,r}return o=e.child,e=o.sibling,r=Ft(o,{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 Pu(e,t){return t=so({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function rl(e,t,n,r){return r!==null&&yu(r),Dn(t,e.child,null,n),e=Pu(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Jm(e,t,n,r,l,o,i){if(n)return t.flags&256?(t.flags&=-257,r=Uo(Error(E(422))),rl(e,t,i,r)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(o=r.fallback,l=t.mode,r=so({mode:"visible",children:r.children},l,0,null),o=Jt(o,l,i,null),o.flags|=2,r.return=t,o.return=t,r.sibling=o,t.child=r,t.mode&1&&Dn(t,e.child,null,i),t.child.memoizedState=Fi(i),t.memoizedState=Pi,o);if(!(t.mode&1))return rl(e,t,i,null);if(l.data==="$!"){if(r=l.nextSibling&&l.nextSibling.dataset,r)var u=r.dgst;return r=u,o=Error(E(419)),r=Uo(o,r,void 0),rl(e,t,i,r)}if(u=(i&e.childLanes)!==0,xe||u){if(r=le,r!==null){switch(i&-i){case 4:l=2;break;case 16:l=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:l=32;break;case 536870912:l=268435456;break;default:l=0}l=l&(r.suspendedLanes|i)?0:l,l!==0&&l!==o.retryLane&&(o.retryLane=l,ft(e,l),Qe(r,e,l,-1))}return Du(),r=Uo(Error(E(421))),rl(e,t,i,r)}return l.data==="$?"?(t.flags|=128,t.child=e.child,t=ch.bind(null,e),l._reactRetry=t,null):(e=o.treeContext,Ne=Lt(l.nextSibling),Te=t,Q=!0,Ve=null,e!==null&&(Fe[Me++]=ot,Fe[Me++]=it,Fe[Me++]=en,ot=e.id,it=e.overflow,en=t),t=Pu(t,r.children),t.flags|=4096,t)}function qs(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),Ti(e.return,t,n)}function Ho(e,t,n,r,l){var o=e.memoizedState;o===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:l}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=l)}function yf(e,t,n){var r=t.pendingProps,l=r.revealOrder,o=r.tail;if(me(e,t,r.children,n),r=G.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&&qs(e,n,t);else if(e.tag===19)qs(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(U(G,r),!(t.mode&1))t.memoizedState=null;else switch(l){case"forwards":for(n=t.child,l=null;n!==null;)e=n.alternate,e!==null&&Dl(e)===null&&(l=n),n=n.sibling;n=l,n===null?(l=t.child,t.child=null):(l=n.sibling,n.sibling=null),Ho(t,!1,l,n,o);break;case"backwards":for(n=null,l=t.child,t.child=null;l!==null;){if(e=l.alternate,e!==null&&Dl(e)===null){t.child=l;break}e=l.sibling,l.sibling=n,n=l,l=e}Ho(t,!0,n,null,o);break;case"together":Ho(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function gl(e,t){!(t.mode&1)&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function dt(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),nn|=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=Ft(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=Ft(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function qm(e,t,n){switch(t.tag){case 3:vf(t),In();break;case 5:Wc(t);break;case 1:Ee(t.type)&&Pl(t);break;case 4:Cu(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,l=t.memoizedProps.value;U(zl,r._currentValue),r._currentValue=l;break;case 13:if(r=t.memoizedState,r!==null)return r.dehydrated!==null?(U(G,G.current&1),t.flags|=128,null):n&t.child.childLanes?gf(e,t,n):(U(G,G.current&1),e=dt(e,t,n),e!==null?e.sibling:null);U(G,G.current&1);break;case 19:if(r=(n&t.childLanes)!==0,e.flags&128){if(r)return yf(e,t,n);t.flags|=128}if(l=t.memoizedState,l!==null&&(l.rendering=null,l.tail=null,l.lastEffect=null),U(G,G.current),r)break;return null;case 22:case 23:return t.lanes=0,mf(e,t,n)}return dt(e,t,n)}var wf,Mi,xf,Sf;wf=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}};Mi=function(){};xf=function(e,t,n,r){var l=e.memoizedProps;if(l!==r){e=t.stateNode,Yt(et.current);var o=null;switch(n){case"input":l=ni(e,l),r=ni(e,r),o=[];break;case"select":l=Y({},l,{value:void 0}),r=Y({},r,{value:void 0}),o=[];break;case"textarea":l=oi(e,l),r=oi(e,r),o=[];break;default:typeof l.onClick!="function"&&typeof r.onClick=="function"&&(e.onclick=Rl)}ui(n,r);var i;n=null;for(a in l)if(!r.hasOwnProperty(a)&&l.hasOwnProperty(a)&&l[a]!=null)if(a==="style"){var u=l[a];for(i in u)u.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else a!=="dangerouslySetInnerHTML"&&a!=="children"&&a!=="suppressContentEditableWarning"&&a!=="suppressHydrationWarning"&&a!=="autoFocus"&&(wr.hasOwnProperty(a)?o||(o=[]):(o=o||[]).push(a,null));for(a in r){var s=r[a];if(u=l!=null?l[a]:void 0,r.hasOwnProperty(a)&&s!==u&&(s!=null||u!=null))if(a==="style")if(u){for(i in u)!u.hasOwnProperty(i)||s&&s.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in s)s.hasOwnProperty(i)&&u[i]!==s[i]&&(n||(n={}),n[i]=s[i])}else n||(o||(o=[]),o.push(a,n)),n=s;else a==="dangerouslySetInnerHTML"?(s=s?s.__html:void 0,u=u?u.__html:void 0,s!=null&&u!==s&&(o=o||[]).push(a,s)):a==="children"?typeof s!="string"&&typeof s!="number"||(o=o||[]).push(a,""+s):a!=="suppressContentEditableWarning"&&a!=="suppressHydrationWarning"&&(wr.hasOwnProperty(a)?(s!=null&&a==="onScroll"&&V("scroll",e),o||u===s||(o=[])):(o=o||[]).push(a,s))}n&&(o=o||[]).push("style",n);var a=o;(t.updateQueue=a)&&(t.flags|=4)}};Sf=function(e,t,n,r){n!==r&&(t.flags|=4)};function rr(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 ce(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var l=e.child;l!==null;)n|=l.lanes|l.childLanes,r|=l.subtreeFlags&14680064,r|=l.flags&14680064,l.return=e,l=l.sibling;else for(l=e.child;l!==null;)n|=l.lanes|l.childLanes,r|=l.subtreeFlags,r|=l.flags,l.return=e,l=l.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function bm(e,t,n){var r=t.pendingProps;switch(gu(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return ce(t),null;case 1:return Ee(t.type)&&Ol(),ce(t),null;case 3:return r=t.stateNode,An(),W(Se),W(de),Tu(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),(e===null||e.child===null)&&(tl(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,Ve!==null&&(Hi(Ve),Ve=null))),Mi(e,t),ce(t),null;case 5:Nu(t);var l=Yt(Or.current);if(n=t.type,e!==null&&t.stateNode!=null)xf(e,t,n,r,l),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(t.stateNode===null)throw Error(E(166));return ce(t),null}if(e=Yt(et.current),tl(t)){r=t.stateNode,n=t.type;var o=t.memoizedProps;switch(r[qe]=t,r[Lr]=o,e=(t.mode&1)!==0,n){case"dialog":V("cancel",r),V("close",r);break;case"iframe":case"object":case"embed":V("load",r);break;case"video":case"audio":for(l=0;l<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[qe]=t,e[Lr]=r,wf(e,t,!1,!1),t.stateNode=e;e:{switch(i=si(n,r),n){case"dialog":V("cancel",e),V("close",e),l=r;break;case"iframe":case"object":case"embed":V("load",e),l=r;break;case"video":case"audio":for(l=0;lUn&&(t.flags|=128,r=!0,rr(o,!1),t.lanes=4194304)}else{if(!r)if(e=Dl(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),rr(o,!0),o.tail===null&&o.tailMode==="hidden"&&!i.alternate&&!Q)return ce(t),null}else 2*J()-o.renderingStartTime>Un&&n!==1073741824&&(t.flags|=128,r=!0,rr(o,!1),t.lanes=4194304);o.isBackwards?(i.sibling=t.child,t.child=i):(n=o.last,n!==null?n.sibling=i:t.child=i,o.last=i)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=J(),t.sibling=null,n=G.current,U(G,r?n&1|2:n&1),t):(ce(t),null);case 22:case 23:return Iu(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Ce&1073741824&&(ce(t),t.subtreeFlags&6&&(t.flags|=8192)):ce(t),null;case 24:return null;case 25:return null}throw Error(E(156,t.tag))}function eh(e,t){switch(gu(t),t.tag){case 1:return Ee(t.type)&&Ol(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return An(),W(Se),W(de),Tu(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Nu(t),null;case 13:if(W(G),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(E(340));In()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return W(G),null;case 4:return An(),null;case 10:return Su(t.type._context),null;case 22:case 23:return Iu(),null;case 24:return null;default:return null}}var ll=!1,fe=!1,th=typeof WeakSet=="function"?WeakSet:Set,_=null;function Tn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Z(e,t,r)}else n.current=null}function zi(e,t,n){try{n()}catch(r){Z(e,t,r)}}var bs=!1;function nh(e,t){if(yi=_l,e=Cc(),hu(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 l=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var i=0,u=-1,s=-1,a=0,d=0,m=e,p=null;t:for(;;){for(var y;m!==n||l!==0&&m.nodeType!==3||(u=i+l),m!==o||r!==0&&m.nodeType!==3||(s=i+r),m.nodeType===3&&(i+=m.nodeValue.length),(y=m.firstChild)!==null;)p=m,m=y;for(;;){if(m===e)break t;if(p===n&&++a===l&&(u=i),p===o&&++d===r&&(s=i),(y=m.nextSibling)!==null)break;m=p,p=m.parentNode}m=y}n=u===-1||s===-1?null:{start:u,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(wi={focusedElem:e,selectionRange:n},_l=!1,_=t;_!==null;)if(t=_,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,_=e;else for(;_!==null;){t=_;try{var w=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(w!==null){var S=w.memoizedProps,L=w.memoizedState,h=t.stateNode,f=h.getSnapshotBeforeUpdate(t.elementType===t.type?S:Ue(t.type,S),L);h.__reactInternalSnapshotBeforeUpdate=f}break;case 3:var g=t.stateNode.containerInfo;g.nodeType===1?g.textContent="":g.nodeType===9&&g.documentElement&&g.removeChild(g.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(E(163))}}catch(x){Z(t,t.return,x)}if(e=t.sibling,e!==null){e.return=t.return,_=e;break}_=t.return}return w=bs,bs=!1,w}function vr(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var o=l.destroy;l.destroy=void 0,o!==void 0&&zi(t,n,o)}l=l.next}while(l!==r)}}function io(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 $i(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 Ef(e){var t=e.alternate;t!==null&&(e.alternate=null,Ef(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[qe],delete t[Lr],delete t[Ei],delete t[Dm],delete t[Am])),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 kf(e){return e.tag===5||e.tag===3||e.tag===4}function ea(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||kf(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 Ii(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=Rl));else if(r!==4&&(e=e.child,e!==null))for(Ii(e,t,n),e=e.sibling;e!==null;)Ii(e,t,n),e=e.sibling}function Di(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(Di(e,t,n),e=e.sibling;e!==null;)Di(e,t,n),e=e.sibling}var oe=null,He=!1;function gt(e,t,n){for(n=n.child;n!==null;)Cf(e,t,n),n=n.sibling}function Cf(e,t,n){if(be&&typeof be.onCommitFiberUnmount=="function")try{be.onCommitFiberUnmount(ql,n)}catch{}switch(n.tag){case 5:fe||Tn(n,t);case 6:var r=oe,l=He;oe=null,gt(e,t,n),oe=r,He=l,oe!==null&&(He?(e=oe,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):oe.removeChild(n.stateNode));break;case 18:oe!==null&&(He?(e=oe,n=n.stateNode,e.nodeType===8?zo(e.parentNode,n):e.nodeType===1&&zo(e,n),Cr(e)):zo(oe,n.stateNode));break;case 4:r=oe,l=He,oe=n.stateNode.containerInfo,He=!0,gt(e,t,n),oe=r,He=l;break;case 0:case 11:case 14:case 15:if(!fe&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var o=l,i=o.destroy;o=o.tag,i!==void 0&&(o&2||o&4)&&zi(n,t,i),l=l.next}while(l!==r)}gt(e,t,n);break;case 1:if(!fe&&(Tn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(u){Z(n,t,u)}gt(e,t,n);break;case 21:gt(e,t,n);break;case 22:n.mode&1?(fe=(r=fe)||n.memoizedState!==null,gt(e,t,n),fe=r):gt(e,t,n);break;default:gt(e,t,n)}}function ta(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new th),t.forEach(function(r){var l=fh.bind(null,e,r);n.has(r)||(n.add(r),r.then(l,l))})}}function Be(e,t){var n=t.deletions;if(n!==null)for(var r=0;rl&&(l=i),r&=~o}if(r=l,r=J()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*lh(r/1960))-r,10e?16:e,Nt===null)var r=!1;else{if(e=Nt,Nt=null,Vl=0,z&6)throw Error(E(331));var l=z;for(z|=4,_=e.current;_!==null;){var o=_,i=o.child;if(_.flags&16){var u=o.deletions;if(u!==null){for(var s=0;sJ()-zu?Zt(e,0):Mu|=n),ke(e,t)}function Pf(e,t){t===0&&(e.mode&1?(t=Yr,Yr<<=1,!(Yr&130023424)&&(Yr=4194304)):t=1);var n=he();e=ft(e,t),e!==null&&(Ir(e,t,n),ke(e,n))}function ch(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Pf(e,n)}function fh(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(E(314))}r!==null&&r.delete(t),Pf(e,n)}var Ff;Ff=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Se.current)xe=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return xe=!1,qm(e,t,n);xe=!!(e.flags&131072)}else xe=!1,Q&&t.flags&1048576&&zc(t,Ml,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;gl(e,t),e=t.pendingProps;var l=$n(t,de.current);Fn(t,n),l=ju(null,t,r,e,l,n);var o=Lu();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ee(r)?(o=!0,Pl(t)):o=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,ku(t),l.updater=lo,t.stateNode=l,l._reactInternals=t,ji(t,r,e,n),t=Oi(null,t,r,!0,o,n)):(t.tag=0,Q&&o&&vu(t),me(null,t,l,n),t=t.child),t;case 16:r=t.elementType;e:{switch(gl(e,t),e=t.pendingProps,l=r._init,r=l(r._payload),t.type=r,l=t.tag=ph(r),e=Ue(r,e),l){case 0:t=Ri(null,t,r,e,n);break e;case 1:t=Zs(null,t,r,e,n);break e;case 11:t=Xs(null,t,r,e,n);break e;case 14:t=Ys(null,t,r,Ue(r.type,e),n);break e}throw Error(E(306,r,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ue(r,l),Ri(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ue(r,l),Zs(e,t,r,l,n);case 3:e:{if(vf(t),e===null)throw Error(E(387));r=t.pendingProps,o=t.memoizedState,l=o.element,Ac(e,t),Il(t,r,null,n);var i=t.memoizedState;if(r=i.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){l=Bn(Error(E(423)),t),t=Js(e,t,r,n,l);break e}else if(r!==l){l=Bn(Error(E(424)),t),t=Js(e,t,r,n,l);break e}else for(Ne=Lt(t.stateNode.containerInfo.firstChild),Te=t,Q=!0,Ve=null,n=Vc(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(In(),r===l){t=dt(e,t,n);break e}me(e,t,r,n)}t=t.child}return t;case 5:return Wc(t),e===null&&Ni(t),r=t.type,l=t.pendingProps,o=e!==null?e.memoizedProps:null,i=l.children,xi(r,l)?i=null:o!==null&&xi(r,o)&&(t.flags|=32),hf(e,t),me(e,t,i,n),t.child;case 6:return e===null&&Ni(t),null;case 13:return gf(e,t,n);case 4:return Cu(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Dn(t,null,r,n):me(e,t,r,n),t.child;case 11:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ue(r,l),Xs(e,t,r,l,n);case 7:return me(e,t,t.pendingProps,n),t.child;case 8:return me(e,t,t.pendingProps.children,n),t.child;case 12:return me(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,l=t.pendingProps,o=t.memoizedProps,i=l.value,U(zl,r._currentValue),r._currentValue=i,o!==null)if(Ke(o.value,i)){if(o.children===l.children&&!Se.current){t=dt(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var u=o.dependencies;if(u!==null){i=o.child;for(var s=u.firstContext;s!==null;){if(s.context===r){if(o.tag===1){s=ut(-1,n&-n),s.tag=2;var a=o.updateQueue;if(a!==null){a=a.shared;var d=a.pending;d===null?s.next=s:(s.next=d.next,d.next=s),a.pending=s}}o.lanes|=n,s=o.alternate,s!==null&&(s.lanes|=n),Ti(o.return,n,t),u.lanes|=n;break}s=s.next}}else if(o.tag===10)i=o.type===t.type?null:o.child;else if(o.tag===18){if(i=o.return,i===null)throw Error(E(341));i.lanes|=n,u=i.alternate,u!==null&&(u.lanes|=n),Ti(i,n,t),i=o.sibling}else i=o.child;if(i!==null)i.return=o;else for(i=o;i!==null;){if(i===t){i=null;break}if(o=i.sibling,o!==null){o.return=i.return,i=o;break}i=i.return}o=i}me(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,r=t.pendingProps.children,Fn(t,n),l=De(l),r=r(l),t.flags|=1,me(e,t,r,n),t.child;case 14:return r=t.type,l=Ue(r,t.pendingProps),l=Ue(r.type,l),Ys(e,t,r,l,n);case 15:return pf(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ue(r,l),gl(e,t),t.tag=1,Ee(r)?(e=!0,Pl(t)):e=!1,Fn(t,n),Uc(t,r,l),ji(t,r,l,n),Oi(null,t,r,!0,e,n);case 19:return yf(e,t,n);case 22:return mf(e,t,n)}throw Error(E(156,t.tag))};function Mf(e,t){return oc(e,t)}function dh(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 $e(e,t,n,r){return new dh(e,t,n,r)}function Au(e){return e=e.prototype,!(!e||!e.isReactComponent)}function ph(e){if(typeof e=="function")return Au(e)?1:0;if(e!=null){if(e=e.$$typeof,e===lu)return 11;if(e===ou)return 14}return 2}function Ft(e,t){var n=e.alternate;return n===null?(n=$e(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 xl(e,t,n,r,l,o){var i=2;if(r=e,typeof e=="function")Au(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case gn:return Jt(n.children,l,o,t);case ru:i=8,l|=8;break;case qo:return e=$e(12,n,t,l|2),e.elementType=qo,e.lanes=o,e;case bo:return e=$e(13,n,t,l),e.elementType=bo,e.lanes=o,e;case ei:return e=$e(19,n,t,l),e.elementType=ei,e.lanes=o,e;case Ha:return so(n,l,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Ba:i=10;break e;case Ua:i=9;break e;case lu:i=11;break e;case ou:i=14;break e;case wt:i=16,r=null;break e}throw Error(E(130,e==null?e:typeof e,""))}return t=$e(i,n,t,l),t.elementType=e,t.type=r,t.lanes=o,t}function Jt(e,t,n,r){return e=$e(7,e,r,t),e.lanes=n,e}function so(e,t,n,r){return e=$e(22,e,r,t),e.elementType=Ha,e.lanes=n,e.stateNode={isHidden:!1},e}function Vo(e,t,n){return e=$e(6,e,null,t),e.lanes=n,e}function Wo(e,t,n){return t=$e(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function mh(e,t,n,r,l){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=Co(0),this.expirationTimes=Co(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Co(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function Bu(e,t,n,r,l,o,i,u,s){return e=new mh(e,t,n,u,s),t===1?(t=1,o===!0&&(t|=8)):t=0,o=$e(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},ku(o),e}function hh(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Df)}catch(e){console.error(e)}}Df(),za.exports=je;var Af=za.exports;const jn=Zl(Af);var aa=Af;Zo.createRoot=aa.createRoot,Zo.hydrateRoot=aa.hydrateRoot;const Ut=v.createContext({listTorrents:()=>{throw new Error("Function not implemented.")},getTorrentDetails:()=>{throw new Error("Function not implemented.")},getTorrentStats:()=>{throw new Error("Function not implemented.")},uploadTorrent:()=>{throw new Error("Function not implemented.")},pause:()=>{throw new Error("Function not implemented.")},start:()=>{throw new Error("Function not implemented.")},forget:()=>{throw new Error("Function not implemented.")},delete:()=>{throw new Error("Function not implemented.")},getHttpBaseUrl:()=>{throw new Error("Function not implemented.")}}),Ur=v.createContext({setCloseableError:e=>{},refreshTorrents:()=>{}}),Bf=v.createContext({refresh:()=>{}});var Uf={exports:{}};/*! Copyright (c) 2018 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames diff --git a/crates/librqbit/webui/dist/manifest.json b/crates/librqbit/webui/dist/manifest.json index 4fbd7141..b2065fde 100644 --- a/crates/librqbit/webui/dist/manifest.json +++ b/crates/librqbit/webui/dist/manifest.json @@ -4,7 +4,7 @@ "src": "assets/logo.svg" }, "index.html": { - "file": "assets/index-67d5d1d3.js", + "file": "assets/index-050cef91.js", "isEntry": true, "src": "index.html" } diff --git a/crates/librqbit/webui/src/context.tsx b/crates/librqbit/webui/src/context.tsx index 1346e90c..674e8cbd 100644 --- a/crates/librqbit/webui/src/context.tsx +++ b/crates/librqbit/webui/src/context.tsx @@ -27,6 +27,9 @@ export const APIContext = createContext({ delete: () => { throw new Error("Function not implemented."); }, + getHttpBaseUrl: () => { + throw new Error("Function not implemented."); + }, }); export const AppContext = createContext({ setCloseableError: (_) => {},