diff --git a/.github/update.log b/.github/update.log index e3af4d96fa..ae5e42795e 100644 --- a/.github/update.log +++ b/.github/update.log @@ -788,3 +788,4 @@ Update On Sat Oct 5 20:31:49 CEST 2024 Update On Sun Oct 6 20:31:42 CEST 2024 Update On Mon Oct 7 20:33:33 CEST 2024 Update On Tue Oct 8 20:36:30 CEST 2024 +Update On Wed Oct 9 20:34:31 CEST 2024 diff --git a/clash-meta/adapter/outbound/hysteria.go b/clash-meta/adapter/outbound/hysteria.go index a7367b83bc..55c66c455b 100644 --- a/clash-meta/adapter/outbound/hysteria.go +++ b/clash-meta/adapter/outbound/hysteria.go @@ -131,11 +131,7 @@ func (c *HysteriaOption) Speed() (uint64, uint64, error) { } func NewHysteria(option HysteriaOption) (*Hysteria, error) { - clientTransport := &transport.ClientTransport{ - Dialer: &net.Dialer{ - Timeout: 8 * time.Second, - }, - } + clientTransport := &transport.ClientTransport{} addr := net.JoinHostPort(option.Server, strconv.Itoa(option.Port)) ports := option.Ports diff --git a/clash-meta/component/http/http.go b/clash-meta/component/http/http.go index 3fc06da3cb..63ea5be7bc 100644 --- a/clash-meta/component/http/http.go +++ b/clash-meta/component/http/http.go @@ -12,6 +12,7 @@ import ( "time" "github.com/metacubex/mihomo/component/ca" + "github.com/metacubex/mihomo/component/dialer" "github.com/metacubex/mihomo/listener/inner" ) @@ -71,8 +72,7 @@ func HttpRequestWithProxy(ctx context.Context, url, method string, header map[st if conn, err := inner.HandleTcp(address, specialProxy); err == nil { return conn, nil } else { - d := net.Dialer{} - return d.DialContext(ctx, network, address) + return dialer.DialContext(ctx, network, address) } }, TLSClientConfig: ca.GetGlobalTLSConfig(&tls.Config{}), diff --git a/clash-meta/transport/hysteria/transport/client.go b/clash-meta/transport/hysteria/transport/client.go index f5cc9f07ec..91876ea9f4 100644 --- a/clash-meta/transport/hysteria/transport/client.go +++ b/clash-meta/transport/hysteria/transport/client.go @@ -4,7 +4,6 @@ import ( "crypto/tls" "fmt" "net" - "strings" "time" "github.com/metacubex/quic-go" @@ -16,9 +15,7 @@ import ( "github.com/metacubex/mihomo/transport/hysteria/utils" ) -type ClientTransport struct { - Dialer *net.Dialer -} +type ClientTransport struct{} func (ct *ClientTransport) quicPacketConn(proto string, rAddr net.Addr, serverPorts string, obfs obfsPkg.Obfuscator, hopInterval time.Duration, dialer utils.PacketDialer) (net.PacketConn, error) { server := rAddr.String() @@ -86,23 +83,3 @@ func (ct *ClientTransport) QUICDial(proto string, server string, serverPorts str } return qs, nil } - -func (ct *ClientTransport) DialTCP(raddr *net.TCPAddr) (*net.TCPConn, error) { - conn, err := ct.Dialer.Dial("tcp", raddr.String()) - if err != nil { - return nil, err - } - return conn.(*net.TCPConn), nil -} - -func (ct *ClientTransport) ListenUDP() (*net.UDPConn, error) { - return net.ListenUDP("udp", nil) -} - -func isMultiPortAddr(addr string) bool { - _, portStr, err := net.SplitHostPort(addr) - if err == nil && (strings.Contains(portStr, ",") || strings.Contains(portStr, "-")) { - return true - } - return false -} diff --git a/clash-nyanpasu/backend/Cargo.lock b/clash-nyanpasu/backend/Cargo.lock index 0b621d683c..395ead4b9b 100644 --- a/clash-nyanpasu/backend/Cargo.lock +++ b/clash-nyanpasu/backend/Cargo.lock @@ -315,77 +315,36 @@ dependencies = [ "slab", ] -[[package]] -name = "async-fs" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" -dependencies = [ - "async-lock 2.8.0", - "autocfg", - "blocking", - "futures-lite 1.13.0", -] - [[package]] name = "async-fs" version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" dependencies = [ - "async-lock 3.4.0", + "async-lock", "blocking", "futures-lite 2.3.0", ] -[[package]] -name = "async-io" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" -dependencies = [ - "async-lock 2.8.0", - "autocfg", - "cfg-if", - "concurrent-queue", - "futures-lite 1.13.0", - "log", - "parking", - "polling 2.8.0", - "rustix 0.37.27", - "slab", - "socket2 0.4.10", - "waker-fn", -] - [[package]] name = "async-io" version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" dependencies = [ - "async-lock 3.4.0", + "async-lock", "cfg-if", "concurrent-queue", "futures-io", "futures-lite 2.3.0", "parking", "polling 3.7.3", - "rustix 0.38.37", + "rustix", "slab", "tracing", "windows-sys 0.59.0", ] -[[package]] -name = "async-lock" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" -dependencies = [ - "event-listener 2.5.3", -] - [[package]] name = "async-lock" version = "3.4.0" @@ -397,45 +356,17 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "async-net" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0434b1ed18ce1cf5769b8ac540e33f01fa9471058b5e89da9e06f3c882a8c12f" -dependencies = [ - "async-io 1.13.0", - "blocking", - "futures-lite 1.13.0", -] - [[package]] name = "async-net" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" dependencies = [ - "async-io 2.3.4", + "async-io", "blocking", "futures-lite 2.3.0", ] -[[package]] -name = "async-process" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" -dependencies = [ - "async-io 1.13.0", - "async-lock 2.8.0", - "async-signal", - "blocking", - "cfg-if", - "event-listener 3.1.0", - "futures-lite 1.13.0", - "rustix 0.38.37", - "windows-sys 0.48.0", -] - [[package]] name = "async-process" version = "2.3.0" @@ -443,15 +374,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" dependencies = [ "async-channel 2.3.1", - "async-io 2.3.4", - "async-lock 3.4.0", + "async-io", + "async-lock", "async-signal", "async-task", "blocking", "cfg-if", "event-listener 5.3.0", "futures-lite 2.3.0", - "rustix 0.38.37", + "rustix", "tracing", ] @@ -472,13 +403,13 @@ version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" dependencies = [ - "async-io 2.3.4", - "async-lock 3.4.0", + "async-io", + "async-lock", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 0.38.37", + "rustix", "signal-hook-registry", "slab", "windows-sys 0.59.0", @@ -712,7 +643,7 @@ dependencies = [ "bitflags 2.6.0", "cexpr", "clang-sys", - "itertools 0.11.0", + "itertools 0.12.1", "lazy_static", "lazycell", "log", @@ -948,7 +879,7 @@ dependencies = [ "indoc", "isahc", "rustc-hash 2.0.0", - "smol 2.0.2", + "smol", "textwrap", "tracing", ] @@ -1240,9 +1171,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.19" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7be5744db7978a28d9df86a214130d106a89ce49644cbc4e3f0c22c3fba30615" +checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" dependencies = [ "clap_builder", "clap_derive", @@ -1250,9 +1181,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.19" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5fbc17d3ef8278f55b282b2a2e75ae6f6c7d4bb70ed3d0382375104bfafdb4b" +checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" dependencies = [ "anstream", "anstyle", @@ -1357,7 +1288,7 @@ dependencies = [ "rs-snowflake", "runas", "rust-i18n", - "rustc_version 0.4.1", + "rustc_version", "semver 1.0.23", "serde", "serde_json", @@ -1769,7 +1700,7 @@ dependencies = [ "openssl-probe", "openssl-sys", "schannel", - "socket2 0.5.7", + "socket2", "windows-sys 0.52.0", ] @@ -1886,23 +1817,22 @@ checksum = "da692b8d1080ea3045efaab14434d40468c3d8657e42abddfffca87b428f4c1b" [[package]] name = "delay_timer" version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20eba879b7ee5f1d255d5666e16646fe384f899f71a4c0b4b0644e2e074964fe" +source = "git+https://github.com/libnyanpasu/delay-timer.git#76615d9b0c1bb830212fe84b5d18ee5444831625" dependencies = [ "anyhow", "async-trait", "autocfg", "concat-idents", "cron_clock", - "dashmap 5.5.3", + "dashmap 6.1.0", "event-listener 5.3.0", "futures", "log", "lru", "once_cell", "rs-snowflake", - "rustc_version 0.2.3", - "smol 1.3.0", + "rustc_version", + "smol", "thiserror", "tokio", "tracing", @@ -1942,18 +1872,18 @@ dependencies = [ [[package]] name = "derive_builder" -version = "0.20.1" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd33f37ee6a119146a1781d3356a7c26028f83d779b2e04ecd45fdc75c76877b" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" dependencies = [ "derive_builder_macro", ] [[package]] name = "derive_builder_core" -version = "0.20.1" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7431fa049613920234f22c47fdc33e6cf3ee83067091ea4277a3f8c4587aae38" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ "darling", "proc-macro2", @@ -1963,9 +1893,9 @@ dependencies = [ [[package]] name = "derive_builder_macro" -version = "0.20.1" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4abae7035bf79b9877b779505d8cf3749285b80c43941eda66604841889451dc" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", "syn 2.0.79", @@ -1980,7 +1910,7 @@ dependencies = [ "convert_case 0.4.0", "proc-macro2", "quote", - "rustc_version 0.4.1", + "rustc_version", "syn 2.0.79", ] @@ -2219,7 +2149,7 @@ checksum = "f4e24052d7be71f0efb50c201557f6fe7d237cfd5a64fd5bcd7fd8fe32dbbffa" dependencies = [ "cc", "memchr", - "rustc_version 0.4.1", + "rustc_version", "toml 0.8.2", "vswhom", "winreg", @@ -2326,17 +2256,6 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" -[[package]] -name = "event-listener" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - [[package]] name = "event-listener" version = "5.3.0" @@ -2423,7 +2342,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" dependencies = [ "memoffset 0.9.1", - "rustc_version 0.4.1", + "rustc_version", ] [[package]] @@ -2816,7 +2735,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc3655aa6818d65bc620d6911f05aa7b6aeb596291e1e9f79e52df85583d1e30" dependencies = [ - "rustix 0.38.37", + "rustix", "windows-targets 0.52.6", ] @@ -3332,7 +3251,7 @@ dependencies = [ "http-body", "hyper", "pin-project-lite", - "socket2 0.5.7", + "socket2", "tokio", "tower-service", "tracing", @@ -3666,17 +3585,6 @@ dependencies = [ "memoffset 0.9.1", ] -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi 0.3.9", - "libc", - "windows-sys 0.48.0", -] - [[package]] name = "ipnet" version = "2.10.1" @@ -4008,7 +3916,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-targets 0.48.5", ] [[package]] @@ -4056,12 +3964,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - [[package]] name = "linux-raw-sys" version = "0.4.14" @@ -5055,9 +4957,9 @@ checksum = "fb37767f6569cd834a413442455e0f066d0d522de8630436e2a1761d9726ba56" [[package]] name = "oxc_allocator" -version = "0.30.5" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff0bca77a2d50ab7ad00c2e6041fa497e61b74bd8933bfedf1adb7fa23b6d69" +checksum = "9186b2689dd687b435b54ff13a5f8673f8d7d6cd51211f514f9a9fc7f4ca64b6" dependencies = [ "allocator-api2", "bumpalo", @@ -5065,9 +4967,9 @@ dependencies = [ [[package]] name = "oxc_ast" -version = "0.30.5" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8682a40306a94ed0c05165fdfa0ffd0bca275dd368b401765b26eb9d5c2d2ddc" +checksum = "d90e2d0a935fa2a9271a37e180e0725a902450474a0f2e8d104fb643f29cce67" dependencies = [ "bitflags 2.6.0", "num-bigint", @@ -5080,9 +4982,9 @@ dependencies = [ [[package]] name = "oxc_ast_macros" -version = "0.30.5" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b09d1bd60764db308e540d7e0b2855e63f37ba03074b7baca303a219c4b15147" +checksum = "a2b1072cb32335b47745c9ea9d614a6d5d36ba9f528fce1da428d5f7e20c3ed1" dependencies = [ "proc-macro2", "quote", @@ -5091,9 +4993,9 @@ dependencies = [ [[package]] name = "oxc_diagnostics" -version = "0.30.5" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d13d2cfe0599ab204044a6a3b7e051f43ada33805ca962241cd093c6dbac6bcb" +checksum = "da1421cd82c209a7dfc830fdd09b5c6372e28dfc419e9e67868c6159ab5c127b" dependencies = [ "miette", "owo-colors", @@ -5104,15 +5006,15 @@ dependencies = [ [[package]] name = "oxc_index" -version = "0.30.5" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f8f41bef7cee40604b4e15f4439ae79cbb02ad0a3e357c3ecee64f1a2a4135f" +checksum = "cb46cc4ce3d5820ad5e5737f84f5206307b293f9984f9da219ac51ccdc0ea4c8" [[package]] name = "oxc_parser" -version = "0.30.5" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d9d3ad9f100094890cf87bd2f4c1197f8f2b56115c91e0eaa8da5b5b0aa2f7b" +checksum = "8afe7b80a710daa7a07eec92bc46ed5a2d08581f15e833ee1eded5d929283893" dependencies = [ "assert-unchecked", "bitflags 2.6.0", @@ -5126,15 +5028,16 @@ dependencies = [ "oxc_regular_expression", "oxc_span", "oxc_syntax", + "oxc_syntax_operations", "rustc-hash 2.0.0", "seq-macro", ] [[package]] name = "oxc_regular_expression" -version = "0.30.5" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f021c18692754a2647d862b2ff5bc2a33a3e74f25b4006a83a218ca971012ea" +checksum = "3bc9d3d0ca89ebc9860b6d458f671d06c887bf1fa08accf504c65b5824ea5d87" dependencies = [ "oxc_allocator", "oxc_ast_macros", @@ -5147,9 +5050,9 @@ dependencies = [ [[package]] name = "oxc_span" -version = "0.30.5" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "872f1d0c9422b43c07ab03de817b0c8cfde70e0b9b31bd9279cf87bfaba78694" +checksum = "5c6a6c56f8482e48b6b7a953e55efe59ea55a0f00451a3f3aaf3c09c955c11c0" dependencies = [ "compact_str", "miette", @@ -5159,9 +5062,9 @@ dependencies = [ [[package]] name = "oxc_syntax" -version = "0.30.5" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a4cb91daf6f98a036b245d24efc93bda2990c6aab1066d943d5ec6547e0070d" +checksum = "2e1b7860133b880b357bb400e12a791e86dd8165ebcbfda1f3b7f31dd2f645ab" dependencies = [ "assert-unchecked", "bitflags 2.6.0", @@ -5176,6 +5079,16 @@ dependencies = [ "unicode-id-start", ] +[[package]] +name = "oxc_syntax_operations" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "509fc5ab630ee66ce1d6fcb41d07a646cc14d91014bf31b0c731d219d31018cf" +dependencies = [ + "oxc_ast", + "oxc_span", +] + [[package]] name = "pango" version = "0.18.3" @@ -5571,7 +5484,7 @@ dependencies = [ "concurrent-queue", "hermit-abi 0.4.0", "pin-project-lite", - "rustix 0.38.37", + "rustix", "tracing", "windows-sys 0.59.0", ] @@ -5687,9 +5600,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" dependencies = [ "unicode-ident", ] @@ -5776,7 +5689,7 @@ dependencies = [ "quinn-udp", "rustc-hash 2.0.0", "rustls", - "socket2 0.5.7", + "socket2", "thiserror", "tokio", "tracing", @@ -5807,7 +5720,7 @@ checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" dependencies = [ "libc", "once_cell", - "socket2 0.5.7", + "socket2", "tracing", "windows-sys 0.59.0", ] @@ -6278,15 +6191,6 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver 0.9.0", -] - [[package]] name = "rustc_version" version = "0.4.1" @@ -6296,20 +6200,6 @@ dependencies = [ "semver 1.0.23", ] -[[package]] -name = "rustix" -version = "0.37.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.3.8", - "windows-sys 0.48.0", -] - [[package]] name = "rustix" version = "0.38.37" @@ -6319,7 +6209,7 @@ dependencies = [ "bitflags 2.6.0", "errno", "libc", - "linux-raw-sys 0.4.14", + "linux-raw-sys", "windows-sys 0.52.0", ] @@ -6481,22 +6371,13 @@ dependencies = [ "thin-slice", ] -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser 0.7.0", -] - [[package]] name = "semver" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" dependencies = [ - "semver-parser 0.10.2", + "semver-parser", ] [[package]] @@ -6508,12 +6389,6 @@ dependencies = [ "serde", ] -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - [[package]] name = "semver-parser" version = "0.10.2" @@ -6823,9 +6698,9 @@ checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "simd-json" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f0b376aada35f30a0012f5790e50aed62f91804a0682669aefdbe81c7fcb91" +checksum = "bfa5500f67df6466a45c6f83d1aada89fe0f7e9b17afec424ea06feee0906549" dependencies = [ "getrandom 0.2.15", "halfbrown", @@ -6919,7 +6794,7 @@ dependencies = [ "libc", "log", "memmap2", - "rustix 0.38.37", + "rustix", "thiserror", "wayland-backend", "wayland-client", @@ -6931,23 +6806,6 @@ dependencies = [ "xkeysym", ] -[[package]] -name = "smol" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13f2b548cd8447f8de0fdf1c592929f70f4fc7039a05e47404b0d096ec6987a1" -dependencies = [ - "async-channel 1.9.0", - "async-executor", - "async-fs 1.6.0", - "async-io 1.13.0", - "async-lock 2.8.0", - "async-net 1.8.0", - "async-process 1.8.1", - "blocking", - "futures-lite 1.13.0", -] - [[package]] name = "smol" version = "2.0.2" @@ -6956,25 +6814,15 @@ checksum = "a33bd3e260892199c3ccfc487c88b2da2265080acb316cd920da72fdfd7c599f" dependencies = [ "async-channel 2.3.1", "async-executor", - "async-fs 2.1.2", - "async-io 2.3.4", - "async-lock 3.4.0", - "async-net 2.0.0", - "async-process 2.3.0", + "async-fs", + "async-io", + "async-lock", + "async-net", + "async-process", "blocking", "futures-lite 2.3.0", ] -[[package]] -name = "socket2" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "socket2" version = "0.5.7" @@ -7748,7 +7596,7 @@ dependencies = [ "cfg-if", "fastrand 2.1.1", "once_cell", - "rustix 0.38.37", + "rustix", "windows-sys 0.59.0", ] @@ -7995,7 +7843,7 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.7", + "socket2", "tokio-macros", "tracing", "windows-sys 0.52.0", @@ -8723,7 +8571,7 @@ checksum = "056535ced7a150d45159d3a8dc30f91a2e2d588ca0b23f70e56033622b8016f6" dependencies = [ "cc", "downcast-rs", - "rustix 0.38.37", + "rustix", "scoped-tls", "smallvec", "wayland-sys", @@ -8736,7 +8584,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3f45d1222915ef1fd2057220c1d9d9624b7654443ea35c3877f7a52bd0a5a2d" dependencies = [ "bitflags 2.6.0", - "rustix 0.38.37", + "rustix", "wayland-backend", "wayland-scanner", ] @@ -8758,7 +8606,7 @@ version = "0.31.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a94697e66e76c85923b0d28a0c251e8f0666f58fc47d316c0f4da6da75d37cb" dependencies = [ - "rustix 0.38.37", + "rustix", "wayland-client", "xcursor", ] @@ -8936,7 +8784,7 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.37", + "rustix", ] [[package]] @@ -8947,7 +8795,7 @@ checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" dependencies = [ "either", "home", - "rustix 0.38.37", + "rustix", "winsafe", ] @@ -9558,7 +9406,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" dependencies = [ "gethostname 0.4.3", - "rustix 0.38.37", + "rustix", "x11rb-protocol", ] @@ -9575,8 +9423,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ "libc", - "linux-raw-sys 0.4.14", - "rustix 0.38.37", + "linux-raw-sys", + "rustix", ] [[package]] @@ -9656,10 +9504,10 @@ checksum = "7b8e3d6ae3342792a6cc2340e4394334c7402f3d793b390d2c5494a4032b3030" dependencies = [ "async-broadcast", "async-executor", - "async-fs 2.1.2", - "async-io 2.3.4", - "async-lock 3.4.0", - "async-process 2.3.0", + "async-fs", + "async-io", + "async-lock", + "async-process", "async-recursion", "async-task", "async-trait", diff --git a/clash-nyanpasu/backend/tauri/Cargo.toml b/clash-nyanpasu/backend/tauri/Cargo.toml index 11437603bd..100413ddaf 100644 --- a/clash-nyanpasu/backend/tauri/Cargo.toml +++ b/clash-nyanpasu/backend/tauri/Cargo.toml @@ -46,7 +46,7 @@ serde_yaml = { version = "0.10", package = "serde_yaml_ng", git = "https://githu auto-launch = { git = "https://github.com/zzzgydi/auto-launch.git", version = "0.5" } once_cell = "1.19.0" port_scanner = "0.1.5" -delay_timer = "0.11.5" +delay_timer = { version = "0.11", git = "https://github.com/libnyanpasu/delay-timer.git" } parking_lot = { version = "0.12.1" } tokio = { version = "1", features = ["full"] } serde = { version = "1.0", features = ["derive"] } @@ -117,11 +117,11 @@ os_pipe = "1.2.0" whoami = "1.5.1" atomic_enum = "0.3.0" boa_engine.workspace = true -oxc_parser = "0.30" -oxc_allocator = "0.30" -oxc_span = "0.30" -oxc_ast = "0.30" -oxc_syntax = "0.30" +oxc_parser = "0.31" +oxc_allocator = "0.31" +oxc_span = "0.31" +oxc_ast = "0.31" +oxc_syntax = "0.31" mlua = { version = "0.9", features = [ "lua54", "async", diff --git a/clash-nyanpasu/backend/tauri/src/config/profile/item/remote.rs b/clash-nyanpasu/backend/tauri/src/config/profile/item/remote.rs index 89022748ee..63fa812779 100644 --- a/clash-nyanpasu/backend/tauri/src/config/profile/item/remote.rs +++ b/clash-nyanpasu/backend/tauri/src/config/profile/item/remote.rs @@ -55,6 +55,7 @@ pub struct RemoteProfile { ))] #[builder_update(nested)] #[builder_field_attr(serde(default))] + #[serde(default)] pub option: RemoteProfileOptions, /// process chains #[builder(default)] diff --git a/clash-nyanpasu/frontend/interface/package.json b/clash-nyanpasu/frontend/interface/package.json index 694e78a2f1..619ef0ae8e 100644 --- a/clash-nyanpasu/frontend/interface/package.json +++ b/clash-nyanpasu/frontend/interface/package.json @@ -13,7 +13,7 @@ "dependencies": { "@tauri-apps/api": "2.0.2", "ahooks": "3.8.1", - "ofetch": "1.4.0", + "ofetch": "1.4.1", "react": "rc", "swr": "2.2.5" }, diff --git a/clash-nyanpasu/frontend/nyanpasu/package.json b/clash-nyanpasu/frontend/nyanpasu/package.json index a8f6af7b3a..ccf39c930d 100644 --- a/clash-nyanpasu/frontend/nyanpasu/package.json +++ b/clash-nyanpasu/frontend/nyanpasu/package.json @@ -16,12 +16,12 @@ "@emotion/styled": "11.13.0", "@juggle/resize-observer": "3.4.0", "@material/material-color-utilities": "0.3.0", - "@mui/icons-material": "6.1.2", - "@mui/lab": "6.0.0-beta.10", - "@mui/material": "6.1.2", + "@mui/icons-material": "6.1.3", + "@mui/lab": "6.0.0-beta.11", + "@mui/material": "6.1.3", "@nyanpasu/interface": "workspace:^", "@nyanpasu/ui": "workspace:^", - "@tanstack/router-zod-adapter": "1.63.2", + "@tanstack/router-zod-adapter": "1.63.5", "@tauri-apps/api": "2.0.2", "@types/json-schema": "7.0.15", "ahooks": "3.8.1", @@ -46,18 +46,18 @@ "react-split-grid": "1.0.4", "react-use": "17.5.1", "swr": "2.2.5", - "virtua": "0.34.2", + "virtua": "0.35.0", "vite-bundle-visualizer": "1.2.1" }, "devDependencies": { "@csstools/normalize.css": "12.1.1", "@emotion/babel-plugin": "11.12.0", "@emotion/react": "11.13.3", - "@iconify/json": "2.2.257", + "@iconify/json": "2.2.258", "@monaco-editor/react": "4.6.0", - "@tanstack/react-router": "1.63.2", - "@tanstack/router-devtools": "1.63.2", - "@tanstack/router-plugin": "1.62.0", + "@tanstack/react-router": "1.63.5", + "@tanstack/router-devtools": "1.63.5", + "@tanstack/router-plugin": "1.63.5", "@tauri-apps/plugin-clipboard-manager": "2.0.0", "@tauri-apps/plugin-dialog": "2.0.0", "@tauri-apps/plugin-fs": "2.0.0", diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/connections/connections-table.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/connections/connections-table.tsx index 1355ac1c75..ea8ad7b8ff 100644 --- a/clash-nyanpasu/frontend/nyanpasu/src/components/connections/connections-table.tsx +++ b/clash-nyanpasu/frontend/nyanpasu/src/components/connections/connections-table.tsx @@ -108,14 +108,14 @@ export const ConnectionsTable = ({ searchTerm }: { searchTerm?: string }) => { accessorFn: ({ metadata }) => metadata.process, }, { - header: t("Download"), + header: t("Downloaded"), size: 88, accessorFn: ({ download }) => parseTraffic(download).join(" "), sortingFn: (rowA, rowB) => rowB.original.download - rowA.original.download, }, { - header: t("Upload"), + header: t("Uploaded"), size: 88, accessorFn: ({ upload }) => parseTraffic(upload).join(" "), sortingFn: (rowA, rowB) => rowB.original.upload - rowA.original.upload, @@ -142,7 +142,7 @@ export const ConnectionsTable = ({ searchTerm }: { searchTerm?: string }) => { accessorFn: ({ chains }) => [...chains].reverse().join(" / "), }, { - header: "Rule", + header: t("Rule"), size: 200, accessorFn: ({ rule, rulePayload }) => rulePayload ? `${rule} (${rulePayload})` : rule, @@ -155,7 +155,7 @@ export const ConnectionsTable = ({ searchTerm }: { searchTerm?: string }) => { dayjs(rowB.original.start).diff(rowA.original.start), }, { - header: "Source", + header: t("Source"), size: 200, accessorFn: ({ metadata: { sourceIP, sourcePort } }) => `${sourceIP}:${sourcePort}`, @@ -204,7 +204,7 @@ export const ConnectionsTable = ({ searchTerm }: { searchTerm?: string }) => { ) : ( ); }; diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/connections/header-search.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/connections/header-search.tsx index a90b591c1f..59fd35c887 100644 --- a/clash-nyanpasu/frontend/nyanpasu/src/components/connections/header-search.tsx +++ b/clash-nyanpasu/frontend/nyanpasu/src/components/connections/header-search.tsx @@ -32,7 +32,7 @@ export const HeaderSearch = (props: TextFieldProps) => { autoComplete="off" spellCheck="false" hiddenLabel - placeholder={t("Type to Filter")} + placeholder={t("Filter conditions")} variant="filled" className="!pb-0" sx={{ input: { py: 1, fontSize: 14 } }} diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/dashboard/proxy-shortcuts.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/dashboard/proxy-shortcuts.tsx index 7871d8e7fe..4f36a6526e 100644 --- a/clash-nyanpasu/frontend/nyanpasu/src/components/dashboard/proxy-shortcuts.tsx +++ b/clash-nyanpasu/frontend/nyanpasu/src/components/dashboard/proxy-shortcuts.tsx @@ -30,18 +30,18 @@ const TitleComp = () => { if (port == clashConfigs?.["mixed-port"]) { return { - label: "Success", + label: t("Success"), color: "success", }; } else { return { - label: "Occupied", + label: t("Occupied"), color: "warning", }; } } else { return { - label: "Disabled", + label: t("Disabled"), color: "error", }; } diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/dashboard/service-shortcuts.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/dashboard/service-shortcuts.tsx index d89ec54a7f..2ec70828af 100644 --- a/clash-nyanpasu/frontend/nyanpasu/src/components/dashboard/service-shortcuts.tsx +++ b/clash-nyanpasu/frontend/nyanpasu/src/components/dashboard/service-shortcuts.tsx @@ -35,14 +35,14 @@ export const ServiceShortcuts = () => { switch (serviceStatus) { case "running": { return { - label: "running", + label: t("running"), color: alpha(palette.success[palette.mode], 0.3), }; } case "stopped": { return { - label: "stopped", + label: t("stopped"), color: alpha(palette.error[palette.mode], 0.3), }; } @@ -50,7 +50,7 @@ export const ServiceShortcuts = () => { default: case "not_installed": { return { - label: "not_installed", + label: t("not_installed"), color: palette.mode == "light" ? palette.grey[100] diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/profile-dialog.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/profile-dialog.tsx index 77a83c4025..11e5d5fffa 100644 --- a/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/profile-dialog.tsx +++ b/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/profile-dialog.tsx @@ -218,7 +218,7 @@ export const ProfileDialog = ({ /> } - label={isRemote ? "Remote" : "Local"} + label={isRemote ? t("Remote") : t("Local")} /> diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/setting/modules/hotkey-dialog.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/setting/modules/hotkey-dialog.tsx index 26834cb328..578e2dd86e 100644 --- a/clash-nyanpasu/frontend/nyanpasu/src/components/setting/modules/hotkey-dialog.tsx +++ b/clash-nyanpasu/frontend/nyanpasu/src/components/setting/modules/hotkey-dialog.tsx @@ -139,7 +139,7 @@ export default function HotkeyDialog({ return ( setTrayIcon()} > - 修改 + {t("Edit")} setTrayIcon(true)} > - 重置 + {t("Reset")} ) : ( @@ -96,7 +96,7 @@ function TrayIconItem({ mode }: { mode: "system_proxy" | "tun" | "normal" }) { disabled={loading || isLoading} onClick={() => setTrayIcon()} > - 设置 + {t("Set")} )} diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/setting/setting-clash-base.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/setting/setting-clash-base.tsx index c90c35e4b0..b53bbcf5d9 100644 --- a/clash-nyanpasu/frontend/nyanpasu/src/components/setting/setting-clash-base.tsx +++ b/clash-nyanpasu/frontend/nyanpasu/src/components/setting/setting-clash-base.tsx @@ -98,7 +98,7 @@ export const SettingClashBase = () => { )} diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/setting/setting-nyanpasu-ui.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/setting/setting-nyanpasu-ui.tsx index 59129b4ab5..a1d7d7f46e 100644 --- a/clash-nyanpasu/frontend/nyanpasu/src/components/setting/setting-nyanpasu-ui.tsx +++ b/clash-nyanpasu/frontend/nyanpasu/src/components/setting/setting-nyanpasu-ui.tsx @@ -34,7 +34,7 @@ export const SettingNyanpasuUI = () => { const [onlyIcon, setOnlyIcon] = useAtom(atomIsDrawerOnlyIcon); return ( - + { const { nyanpasuConfig, setNyanpasuConfig } = useNyanpasu(); return ( - + { }; return ( - + { setRuntimeConfigViewerOpen(true); }} diff --git a/clash-nyanpasu/frontend/nyanpasu/src/pages/settings.tsx b/clash-nyanpasu/frontend/nyanpasu/src/pages/settings.tsx index 0c2e380f22..323d0ea9d1 100644 --- a/clash-nyanpasu/frontend/nyanpasu/src/pages/settings.tsx +++ b/clash-nyanpasu/frontend/nyanpasu/src/pages/settings.tsx @@ -15,78 +15,82 @@ export const Route = createFileRoute("/settings")({ component: SettingPage, }); -const GithubIcon = () => { - const toGithubRepo = useLockFn(() => { - return openThat("https://github.com/LibNyanpasu/clash-nyanpasu"); - }); - - return ( - - - - ); -}; - -const FeedbackIcon = () => { - const toFeedback = useLockFn(async () => { - const envs = await collect_envs(); - const formattedEnv = encodeURIComponent( - formatEnvInfos(envs) - .split("\n") - .map((v) => `> ${v}`) - .join("\n"), - ); - return openThat( - "https://github.com/LibNyanpasu/clash-nyanpasu/issues/new?assignees=&labels=T%3A+Bug%2CS%3A+Untriaged&projects=&template=bug_report.yaml&env_infos=" + - formattedEnv, - ); - }); - return ( - - - - ); -}; - -// FIXME: it should move to a proper place -const HotkeyButton = () => { - const [open, setOpen] = React.useState(false); - return ( - <> - setOpen(false)} /> - setOpen(true)}> - - - - ); -}; - -// FIXME: it should move to a proper place -const TrayIconButton = () => { - const [open, setOpen] = React.useState(false); - return ( - <> - setOpen(false)} /> - setOpen(true)} - > - - - - ); -}; - function SettingPage() { const { t } = useTranslation(); const Component = lazy(() => import("@/components/setting/setting-page")); + const GithubIcon = () => { + const toGithubRepo = useLockFn(() => { + return openThat("https://github.com/libnyanpasu/clash-nyanpasu"); + }); + + return ( + + + + ); + }; + + const FeedbackIcon = () => { + const toFeedback = useLockFn(async () => { + const envs = await collect_envs(); + const formattedEnv = encodeURIComponent( + formatEnvInfos(envs) + .split("\n") + .map((v) => `> ${v}`) + .join("\n"), + ); + return openThat( + "https://github.com/libnyanpasu/clash-nyanpasu/issues/new?assignees=&labels=T%3A+Bug%2CS%3A+Untriaged&projects=&template=bug_report.yaml&env_infos=" + + formattedEnv, + ); + }); + return ( + + + + ); + }; + + // FIXME: it should move to a proper place + const HotkeyButton = () => { + const [open, setOpen] = React.useState(false); + return ( + <> + setOpen(false)} /> + setOpen(true)} + > + + + + ); + }; + + // FIXME: it should move to a proper place + const TrayIconButton = () => { + const [open, setOpen] = React.useState(false); + return ( + <> + setOpen(false)} /> + setOpen(true)} + > + + + + ); + }; + return ( =14.0.0'} peerDependencies: - '@mui/material': ^6.1.2 + '@mui/material': ^6.1.3 '@types/react': npm:types-react@rc react: ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': optional: true - '@mui/lab@6.0.0-beta.10': - resolution: {integrity: sha512-eqCBz5SZS8Un9To3UcjH01AxkOOgvme/g0ZstFC8Nz1Kg5/EJMA0ByhKS5AvUMzUKrv0FXMdbuPqbBvF3bVrXg==} + '@mui/lab@6.0.0-beta.11': + resolution: {integrity: sha512-IoYzxAepMs0gnQ2tTMokEd8Bmqt+To/8HQyzjrQCbYZmKyYR/6aK3wm3Y5NpfSLuBo1UrkeXWyKsHeRcHreGdQ==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@mui/material': ^6.1.1 - '@mui/material-pigment-css': ^6.1.1 + '@mui/material': ^6.1.3 + '@mui/material-pigment-css': ^6.1.3 '@types/react': npm:types-react@rc react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -1484,13 +1490,13 @@ packages: '@types/react': optional: true - '@mui/material@6.1.2': - resolution: {integrity: sha512-5TtHeAVX9D5d2LYfB1GAUn29BcVETVsrQ76Dwb2SpAfQGW3JVy4deJCAd0RrIkI3eEUrsl0E4xuBdreszxdTTg==} + '@mui/material@6.1.3': + resolution: {integrity: sha512-loV5MBoMKLrK80JeWINmQ1A4eWoLv51O2dBPLJ260IAhupkB3Wol8lEQTEvvR2vO3o6xRHuXe1WaQEP6N3riqg==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@mui/material-pigment-css': ^6.1.2 + '@mui/material-pigment-css': ^6.1.3 '@types/react': npm:types-react@rc react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -1514,18 +1520,8 @@ packages: '@types/react': optional: true - '@mui/private-theming@6.1.1': - resolution: {integrity: sha512-JlrjIdhyZUtewtdAuUsvi3ZnO0YS49IW4Mfz19ZWTlQ0sDGga6LNPVwHClWr2/zJK2we2BQx9/i8M32rgKuzrg==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@types/react': npm:types-react@rc - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/private-theming@6.1.2': - resolution: {integrity: sha512-S8WcjZdNdi++8UhrrY8Lton5h/suRiQexvdTfdcPAlbajlvgM+kx+uJstuVIEyTb3gMkxzIZep87knZ0tqcR0g==} + '@mui/private-theming@6.1.3': + resolution: {integrity: sha512-XK5OYCM0x7gxWb/WBEySstBmn+dE3YKX7U7jeBRLm6vHU5fGUd7GiJWRirpivHjOK9mRH6E1MPIVd+ze5vguKQ==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': npm:types-react@rc @@ -1547,21 +1543,8 @@ packages: '@emotion/styled': optional: true - '@mui/styled-engine@6.1.1': - resolution: {integrity: sha512-HJyIoMpFb11fnHuRtUILOXgq6vj4LhIlE8maG4SwP/W+E5sa7HFexhnB3vOMT7bKys4UKNxhobC8jwWxYilGsA==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@emotion/react': ^11.4.1 - '@emotion/styled': ^11.3.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - - '@mui/styled-engine@6.1.2': - resolution: {integrity: sha512-uKOfWkR23X39xj7th2nyTcCHqInTAXtUnqD3T5qRVdJcOPvu1rlgTleTwJC/FJvWZJBU6ieuTWDhbcx5SNViHQ==} + '@mui/styled-engine@6.1.3': + resolution: {integrity: sha512-i4yh9m+eMZE3cNERpDhVr6Wn73Yz6C7MH0eE2zZvw8d7EFkIJlCQNZd1xxGZqarD2DDq2qWHcjIOucWGhxACtA==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -1589,24 +1572,8 @@ packages: '@types/react': optional: true - '@mui/system@6.1.1': - resolution: {integrity: sha512-PaYsCz2tUOcpu3T0okDEsSuP/yCDIj9JZ4Tox1JovRSKIjltHpXPsXZSGr3RiWdtM1MTQMFMCZzu0+CKbyy+Kw==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@types/react': npm:types-react@rc - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@types/react': - optional: true - - '@mui/system@6.1.2': - resolution: {integrity: sha512-mzW7F1ZMIYS1aLON48Nrk9c65OrVEVQ+R4lUcTWs1lCSul0VGK23eo4dmY0NX5PS7Oe4xz3P5B9tQZZ7SYgxcg==} + '@mui/system@6.1.3': + resolution: {integrity: sha512-ILaD9UsLTBLjMcep3OumJMXh1PYr7aqnkHm/L47bH46+YmSL1zWAX6tWG8swEQROzW2GvYluEMp5FreoxOOC6w==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -1629,6 +1596,14 @@ packages: '@types/react': optional: true + '@mui/types@7.2.18': + resolution: {integrity: sha512-uvK9dWeyCJl/3ocVnTOS6nlji/Knj8/tVqVX03UVTpdmTJYu/s4jtDd9Kvv0nRGE0CUSNW1UYAci7PYypjealg==} + peerDependencies: + '@types/react': npm:types-react@rc + peerDependenciesMeta: + '@types/react': + optional: true + '@mui/utils@5.16.6': resolution: {integrity: sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==} engines: {node: '>=12.0.0'} @@ -1649,18 +1624,8 @@ packages: '@types/react': optional: true - '@mui/utils@6.1.1': - resolution: {integrity: sha512-HlRrgdJSPbYDXPpoVMWZV8AE7WcFtAk13rWNWAEVWKSanzBBkymjz3km+Th/Srowsh4pf1fTSP1B0L116wQBYw==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@types/react': npm:types-react@rc - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/utils@6.1.2': - resolution: {integrity: sha512-6+B1YZ8cCBWD1fc3RjqpclF9UA0MLUiuXhyCO+XowD/Z2ku5IlxeEhHHlgglyBWFGMu4kib4YU3CDsG5/zVjJQ==} + '@mui/utils@6.1.3': + resolution: {integrity: sha512-4JBpLkjprlKjN10DGb1aiy/ii9TKbQ601uSHtAmYFAS879QZgAD7vRnv/YBE4iBbc7NXzFgbQMCOFrupXWekIA==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': npm:types-react@rc @@ -2286,11 +2251,11 @@ packages: resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/react-router@1.63.2': - resolution: {integrity: sha512-6Bla8LK4cu4L0atBZNNIUhQpiCgXNIa2XnrybHVbqTipWlfRJ0I71pXWuSVqGP487wNGZgVG5ITZFLR+y+NhKg==} + '@tanstack/react-router@1.63.5': + resolution: {integrity: sha512-478jbiHNLcS6K1G8YNZ1tzpdh07GjUr0b3IP9bqaFhHIDChDviyGvA/fq+zhcTITBSgU3+LgCAwRWt05hp961w==} engines: {node: '>=12'} peerDependencies: - '@tanstack/router-generator': 1.58.12 + '@tanstack/router-generator': 1.63.5 react: '>=18' react-dom: '>=18' peerDependenciesMeta: @@ -2316,20 +2281,20 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@tanstack/router-devtools@1.63.2': - resolution: {integrity: sha512-qNtjl6fbgjybVyvxPNHgx91F2JqiWLIuIoCTLVN6yX/WRGH6SfWT4SxEfWGYieHTT9YX8fsFo44F15WeStFHVg==} + '@tanstack/router-devtools@1.63.5': + resolution: {integrity: sha512-kG3ei8q7XVKOE60eniK3Dn5NDiRjs0KrktM4Av8tlgIFd/89BLiXkMnYqWlDd2fp7yxmEiX3GiQv7pNedfaMiA==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.63.2 + '@tanstack/react-router': ^1.63.5 react: '>=18' react-dom: '>=18' - '@tanstack/router-generator@1.58.12': - resolution: {integrity: sha512-Ovzb+zCbiRgJAg6awTXWQjn1uRkVyiBc4jiIk7ll2hg0bHjIOsgiegwx/F2YKycY98vWj9TLv/U4Hoo4rmK0IA==} + '@tanstack/router-generator@1.63.5': + resolution: {integrity: sha512-vhSlnztluTFqnGMN4lFJFpCYtW1jUlFW6hBl93/QlV03mbtAwBTpPT/BkGk3wZkvsUMgDP86tCyu1ytQDZwi3w==} engines: {node: '>=12'} - '@tanstack/router-plugin@1.62.0': - resolution: {integrity: sha512-I+S1QWjKKvWqEns4pwH4KfM0jkiXv00Q5DnG0lw7DKETfBy77UpMLUDruayKfeqErbMv/ksxt6hSlpm3Hlx2dw==} + '@tanstack/router-plugin@1.63.5': + resolution: {integrity: sha512-PdGy1iHCkYp8Kj7m0uFRsKYPzy+V8QQNHXuXB9mxcKx5I+hgkqWkEu5gtvrunjemsaxxp7duvKJ3/tC8C4k/ZQ==} engines: {node: '>=12'} peerDependencies: '@rsbuild/core': '>=1.0.2' @@ -2343,8 +2308,8 @@ packages: webpack: optional: true - '@tanstack/router-zod-adapter@1.63.2': - resolution: {integrity: sha512-slgMifFZTCwRcsOg5sgSeHTxXuOphdRHnTV3wdMtpLnJFR7fULGrWaTDm+sLTROIDjiF0hoh9Y2zJU3M2XxrsA==} + '@tanstack/router-zod-adapter@1.63.5': + resolution: {integrity: sha512-sFrVUWE6MGs31gwNXUvZ+ZQxTH6C6aMeBUzDfdW+CJPzAHbeKEeMCq4zOxl1gh43CcqwDaarNov7tCFBUbfSJQ==} engines: {node: '>=12'} peerDependencies: '@tanstack/react-router': '>=1.43.2' @@ -2663,9 +2628,6 @@ packages: '@types/postcss-modules-scope@3.0.4': resolution: {integrity: sha512-//ygSisVq9kVI0sqx3UPLzWIMCmtSVrzdljtuaAEJtGoGnpjBikZ2sXO5MpH9SnWX9HRfXxHifDAXcQjupWnIQ==} - '@types/prop-types@15.7.12': - resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - '@types/prop-types@15.7.13': resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} @@ -4073,8 +4035,8 @@ packages: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} - figlet@1.7.0: - resolution: {integrity: sha512-gO8l3wvqo0V7wEFLXPbkX83b7MVjRrk1oRLfYlZXol8nEpb/ON9pcKLI4qpBv5YtOTfrINtqb7b40iYY2FTWFg==} + figlet@1.8.0: + resolution: {integrity: sha512-chzvGjd+Sp7KUvPHZv6EXV5Ir3Q7kYNpCr4aHrRW79qFtTefmQZNny+W1pW9kf5zeE6dikku2W50W/wAH2xWgw==} engines: {node: '>= 0.4.0'} hasBin: true @@ -4853,8 +4815,8 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - knip@5.33.1: - resolution: {integrity: sha512-SeuH+6IcDNNFRdVsi2uGnO6gsSDlx1V+TcQkKnzciF2Z7QHHasKseGUf9GMNVm3bSCKDeqaKPMp0F6BOiKuYRA==} + knip@5.33.2: + resolution: {integrity: sha512-Ni6uBzUONCjTYjOutffsAvoKOYt1pgVZJlEmOxDYcLAjkuoLwSMnZu6/aB4DbSNMUSOJMCTNxO3kQSrxx6LtKg==} engines: {node: '>=18.6.0'} hasBin: true peerDependencies: @@ -5395,8 +5357,8 @@ packages: resolution: {integrity: sha512-wbqF4uc1YbcldtiBFfkSnquHtECEIpYD78YUXI6ri1Im5OO2NLo6ZVpRdbJpdnpZ05zMrVPssNiEo6JQtea+Qg==} engines: {node: '>= 18'} - ofetch@1.4.0: - resolution: {integrity: sha512-MuHgsEhU6zGeX+EMh+8mSMrYTnsqJQQrpM00Q6QHMKNqQ0bKy0B43tk8tL1wg+CnsSTy1kg4Ir2T5Ig6rD+dfQ==} + ofetch@1.4.1: + resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -5862,10 +5824,10 @@ packages: resolution: {integrity: sha512-FqHzVpsWddE5j0BtvjPiPGYiXWDat5EQWGl2oG8xVQs2zJ1KH0zHcu5a7ZdGVgKJWGvYl731J0/k/oOtFSiWfg==} hasBin: true - react-dom@19.0.0-rc-1460d67c-20241003: - resolution: {integrity: sha512-kCA+qeQSA4C0K7C2I149Fl0oJrVbRf8VRjFritxSNHvHI8JZeDv5AvPIfVQ0I+u2gnw94bsJcj4dXf+ER2m7Fw==} + react-dom@19.0.0-rc-ed966dac-20241007: + resolution: {integrity: sha512-USdxDSSetbWFUURISXaSh8fRJPeJ55tSKw+AYJjq9zMHvYF2iTwau++UfuvHXFcbH+zuKCbWkgYrNSqE6sK0zw==} peerDependencies: - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 react-error-boundary@4.0.13: resolution: {integrity: sha512-b6PwbdSv8XeOSYvjt8LpgpKrZ0yGdtZokYwkwV2wlcZbxgopHX/hgPl5VgpnoVOWd868n1hktM8Qm4b+02MiLQ==} @@ -5967,8 +5929,8 @@ packages: react: '*' react-dom: '*' - react@19.0.0-rc-1460d67c-20241003: - resolution: {integrity: sha512-KT4jQ8fBVToxk8aLapQsfbmNapcPPEKFdFOT2hCgT5H8vjwG6l6HP1zE91sivFzdCswOeLCi0QRXCgGUjBuBKQ==} + react@19.0.0-rc-ed966dac-20241007: + resolution: {integrity: sha512-9lX9zCQHA4q9mXxYPIpo4OqZ7y5uzGwtGUKkm5EcPp9xkBsX6IToQZLonaRiYJA/tRJnVvVmB7p+M4Afv0RuEA==} engines: {node: '>=0.10.0'} read-cache@1.0.0: @@ -6267,8 +6229,8 @@ packages: sax@1.3.0: resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} - scheduler@0.25.0-rc-1460d67c-20241003: - resolution: {integrity: sha512-+LRGWRM9+vafEG4utFLeLR9iLERBwLbYWER6Qh8hx0vreY/ZcCRWY8s5jhLE70En+yjqBIwohrM3lTCQOKlwEA==} + scheduler@0.25.0-rc-ed966dac-20241007: + resolution: {integrity: sha512-pOk5tHsTlOaoDy3MwELAOhUaxEBae7Cj6LSBnZWeZHgfir1+D8K2o5sbhgVYtGma4taFUajzlLAQAWZBRJ+Dbw==} screenfull@5.2.0: resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} @@ -6828,14 +6790,11 @@ packages: engines: {node: '>=14.17'} hasBin: true - typescript@5.6.2: - resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} engines: {node: '>=14.17'} hasBin: true - ufo@1.5.3: - resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} - ufo@1.5.4: resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} @@ -6849,8 +6808,8 @@ packages: resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} - undici@6.19.8: - resolution: {integrity: sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==} + undici@6.20.0: + resolution: {integrity: sha512-AITZfPuxubm31Sx0vr8bteSalEbs9wQb/BOBi9FPlD9Qpd6HxZ4Q0+hI742jBhkPb4RT2v5MQzaW5VhRVyj+9A==} engines: {node: '>=18.17'} unicorn-magic@0.1.0: @@ -7005,8 +6964,8 @@ packages: vfile@6.0.1: resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} - virtua@0.34.2: - resolution: {integrity: sha512-r43hQsryJRqVChrf6Go52rScyc89szl/IxFclOJRXF5qd6fv1Lzb68K51htI1NhtaPk+GQxuS2Gd21YL5ZGeDg==} + virtua@0.35.0: + resolution: {integrity: sha512-k7JHQFRznKNwJb0XmBGQ0Wt3iFeqbvjHcOobQbSF87KZCgV+zgYBx7wREIvlkQJ+KffUN4VabK3+5IXhXCrdpw==} peerDependencies: react: '>=16.14.0' react-dom: '>=16.14.0' @@ -7677,11 +7636,11 @@ snapshots: '@bufbuild/protobuf@1.10.0': {} - '@commitlint/cli@19.5.0(@types/node@22.7.5)(typescript@5.6.2)': + '@commitlint/cli@19.5.0(@types/node@22.7.5)(typescript@5.6.3)': dependencies: '@commitlint/format': 19.5.0 '@commitlint/lint': 19.5.0 - '@commitlint/load': 19.5.0(@types/node@22.7.5)(typescript@5.6.2) + '@commitlint/load': 19.5.0(@types/node@22.7.5)(typescript@5.6.3) '@commitlint/read': 19.5.0 '@commitlint/types': 19.5.0 tinyexec: 0.3.0 @@ -7728,15 +7687,15 @@ snapshots: '@commitlint/rules': 19.5.0 '@commitlint/types': 19.5.0 - '@commitlint/load@19.5.0(@types/node@22.7.5)(typescript@5.6.2)': + '@commitlint/load@19.5.0(@types/node@22.7.5)(typescript@5.6.3)': dependencies: '@commitlint/config-validator': 19.5.0 '@commitlint/execute-rule': 19.5.0 '@commitlint/resolve-extends': 19.5.0 '@commitlint/types': 19.5.0 chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.6.2) - cosmiconfig-typescript-loader: 5.0.0(@types/node@22.7.5)(cosmiconfig@9.0.0(typescript@5.6.2))(typescript@5.6.2) + cosmiconfig: 9.0.0(typescript@5.6.3) + cosmiconfig-typescript-loader: 5.0.0(@types/node@22.7.5)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -7808,29 +7767,29 @@ snapshots: '@ctrl/tinycolor@4.1.0': {} - '@dnd-kit/accessibility@3.1.0(react@19.0.0-rc-1460d67c-20241003)': + '@dnd-kit/accessibility@3.1.0(react@19.0.0-rc-ed966dac-20241007)': dependencies: - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 tslib: 2.6.2 - '@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)': + '@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)': dependencies: - '@dnd-kit/accessibility': 3.1.0(react@19.0.0-rc-1460d67c-20241003) - '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-1460d67c-20241003) - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + '@dnd-kit/accessibility': 3.1.0(react@19.0.0-rc-ed966dac-20241007) + '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-ed966dac-20241007) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) tslib: 2.6.2 - '@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)': + '@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)': dependencies: - '@dnd-kit/core': 6.1.0(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003) - '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-1460d67c-20241003) - react: 19.0.0-rc-1460d67c-20241003 + '@dnd-kit/core': 6.1.0(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007) + '@dnd-kit/utilities': 3.2.2(react@19.0.0-rc-ed966dac-20241007) + react: 19.0.0-rc-ed966dac-20241007 tslib: 2.6.2 - '@dnd-kit/utilities@3.2.2(react@19.0.0-rc-1460d67c-20241003)': + '@dnd-kit/utilities@3.2.2(react@19.0.0-rc-ed966dac-20241007)': dependencies: - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 tslib: 2.6.2 '@dual-bundle/import-meta-resolve@4.1.0': {} @@ -7887,17 +7846,17 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.24.8 '@emotion/babel-plugin': 11.12.0 '@emotion/cache': 11.13.0 '@emotion/serialize': 1.3.1 - '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@19.0.0-rc-1460d67c-20241003) + '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@19.0.0-rc-ed966dac-20241007) '@emotion/utils': 1.4.0 '@emotion/weak-memoize': 0.4.0 hoist-non-react-statics: 3.3.2 - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 @@ -7917,18 +7876,26 @@ snapshots: '@emotion/utils': 1.4.0 csstype: 3.1.3 + '@emotion/serialize@1.3.2': + dependencies: + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/unitless': 0.10.0 + '@emotion/utils': 1.4.1 + csstype: 3.1.3 + '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.24.8 '@emotion/babel-plugin': 11.12.0 '@emotion/is-prop-valid': 1.3.0 - '@emotion/react': 11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) '@emotion/serialize': 1.3.0 - '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@19.0.0-rc-1460d67c-20241003) + '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@19.0.0-rc-ed966dac-20241007) '@emotion/utils': 1.4.0 - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 @@ -7936,12 +7903,14 @@ snapshots: '@emotion/unitless@0.9.0': {} - '@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@19.0.0-rc-1460d67c-20241003)': + '@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@19.0.0-rc-ed966dac-20241007)': dependencies: - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 '@emotion/utils@1.4.0': {} + '@emotion/utils@1.4.1': {} + '@emotion/weak-memoize@0.4.0': {} '@esbuild/aix-ppc64@0.21.5': @@ -8119,11 +8088,11 @@ snapshots: '@floating-ui/core': 1.6.1 '@floating-ui/utils': 0.2.2 - '@floating-ui/react-dom@2.1.2(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)': + '@floating-ui/react-dom@2.1.2(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)': dependencies: '@floating-ui/dom': 1.6.5 - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) '@floating-ui/utils@0.2.2': {} @@ -8156,7 +8125,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@iconify/json@2.2.257': + '@iconify/json@2.2.258': dependencies: '@iconify/types': 2.0.0 pathe: 1.1.2 @@ -8249,253 +8218,209 @@ snapshots: monaco-editor: 0.52.0 state-local: 1.0.7 - '@monaco-editor/react@4.6.0(monaco-editor@0.52.0)(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)': + '@monaco-editor/react@4.6.0(monaco-editor@0.52.0)(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)': dependencies: '@monaco-editor/loader': 1.4.0(monaco-editor@0.52.0) monaco-editor: 0.52.0 - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) - '@mui/base@5.0.0-beta.58(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@mui/base@5.0.0-beta.58(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003) - '@mui/types': 7.2.17(types-react@19.0.0-rc.1) - '@mui/utils': 6.0.0-rc.0(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) + '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007) + '@mui/types': 7.2.18(types-react@19.0.0-rc.1) + '@mui/utils': 6.0.0-rc.0(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) '@popperjs/core': 2.11.8 clsx: 2.1.1 prop-types: 15.8.1 - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/core-downloads-tracker@6.1.2': {} + '@mui/core-downloads-tracker@6.1.3': {} - '@mui/icons-material@6.1.2(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@mui/icons-material@6.1.3(@mui/material@6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@mui/material': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-1460d67c-20241003 + '@mui/material': 6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-ed966dac-20241007 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/lab@6.0.0-beta.10(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@mui/lab@6.0.0-beta.11(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@mui/material@6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@mui/base': 5.0.0-beta.58(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@mui/material': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@mui/system': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@mui/types': 7.2.17(types-react@19.0.0-rc.1) - '@mui/utils': 6.1.1(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) + '@mui/base': 5.0.0-beta.58(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@mui/material': 6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@mui/system': 6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@mui/types': 7.2.18(types-react@19.0.0-rc.1) + '@mui/utils': 6.1.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) clsx: 2.1.1 prop-types: 15.8.1 - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) '@types/react': types-react@19.0.0-rc.1 - '@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@mui/material@6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@mui/core-downloads-tracker': 6.1.2 - '@mui/system': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@mui/types': 7.2.17(types-react@19.0.0-rc.1) - '@mui/utils': 6.1.2(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) + '@mui/core-downloads-tracker': 6.1.3 + '@mui/system': 6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@mui/types': 7.2.18(types-react@19.0.0-rc.1) + '@mui/utils': 6.1.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) '@popperjs/core': 2.11.8 '@types/react-transition-group': 4.4.11 clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) react-is: 18.3.1 - react-transition-group: 4.4.5(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003) + react-transition-group: 4.4.5(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007) optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) '@types/react': types-react@19.0.0-rc.1 - '@mui/private-theming@5.16.6(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@mui/private-theming@5.16.6(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@mui/utils': 5.16.6(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) + '@mui/utils': 5.16.6(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) prop-types: 15.8.1 - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/private-theming@6.1.1(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@mui/private-theming@6.1.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@mui/utils': 6.1.1(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) + '@mui/utils': 6.1.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) prop-types: 15.8.1 - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/private-theming@6.1.2(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': - dependencies: - '@babel/runtime': 7.25.6 - '@mui/utils': 6.1.2(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - prop-types: 15.8.1 - react: 19.0.0-rc-1460d67c-20241003 - optionalDependencies: - '@types/react': types-react@19.0.0-rc.1 - - '@mui/styled-engine@5.16.6(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)': + '@mui/styled-engine@5.16.6(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)': dependencies: '@babel/runtime': 7.25.6 '@emotion/cache': 11.13.1 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) - '@mui/styled-engine@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)': + '@mui/styled-engine@6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)': dependencies: '@babel/runtime': 7.25.6 '@emotion/cache': 11.13.1 + '@emotion/serialize': 1.3.2 '@emotion/sheet': 1.4.0 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) - '@mui/styled-engine@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)': + '@mui/system@5.16.7(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@emotion/cache': 11.13.1 - '@emotion/sheet': 1.4.0 - csstype: 3.1.3 - prop-types: 15.8.1 - react: 19.0.0-rc-1460d67c-20241003 - optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - - '@mui/system@5.16.7(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': - dependencies: - '@babel/runtime': 7.25.6 - '@mui/private-theming': 5.16.6(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@mui/styled-engine': 5.16.6(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003) + '@mui/private-theming': 5.16.6(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@mui/styled-engine': 5.16.6(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007) '@mui/types': 7.2.17(types-react@19.0.0-rc.1) - '@mui/utils': 5.16.6(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) + '@mui/utils': 5.16.6(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) '@types/react': types-react@19.0.0-rc.1 - '@mui/system@6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@mui/system@6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@mui/private-theming': 6.1.1(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@mui/styled-engine': 6.1.1(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003) - '@mui/types': 7.2.17(types-react@19.0.0-rc.1) - '@mui/utils': 6.1.1(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) + '@mui/private-theming': 6.1.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@mui/styled-engine': 6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007) + '@mui/types': 7.2.18(types-react@19.0.0-rc.1) + '@mui/utils': 6.1.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@types/react': types-react@19.0.0-rc.1 - - '@mui/system@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': - dependencies: - '@babel/runtime': 7.25.6 - '@mui/private-theming': 6.1.2(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@mui/styled-engine': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003) - '@mui/types': 7.2.17(types-react@19.0.0-rc.1) - '@mui/utils': 6.1.2(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - clsx: 2.1.1 - csstype: 3.1.3 - prop-types: 15.8.1 - react: 19.0.0-rc-1460d67c-20241003 - optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) '@types/react': types-react@19.0.0-rc.1 '@mui/types@7.2.17(types-react@19.0.0-rc.1)': optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/utils@5.16.6(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@mui/types@7.2.18(types-react@19.0.0-rc.1)': + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@mui/utils@5.16.6(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 '@mui/types': 7.2.17(types-react@19.0.0-rc.1) '@types/prop-types': 15.7.13 clsx: 2.1.1 prop-types: 15.8.1 - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 react-is: 18.3.1 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/utils@6.0.0-rc.0(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@mui/utils@6.0.0-rc.0(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@mui/types': 7.2.17(types-react@19.0.0-rc.1) - '@types/prop-types': 15.7.12 - clsx: 2.1.1 - prop-types: 15.8.1 - react: 19.0.0-rc-1460d67c-20241003 - react-is: 18.3.1 - optionalDependencies: - '@types/react': types-react@19.0.0-rc.1 - - '@mui/utils@6.1.1(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': - dependencies: - '@babel/runtime': 7.25.6 - '@mui/types': 7.2.17(types-react@19.0.0-rc.1) - '@types/prop-types': 15.7.12 - clsx: 2.1.1 - prop-types: 15.8.1 - react: 19.0.0-rc-1460d67c-20241003 - react-is: 18.3.1 - optionalDependencies: - '@types/react': types-react@19.0.0-rc.1 - - '@mui/utils@6.1.2(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': - dependencies: - '@babel/runtime': 7.25.6 - '@mui/types': 7.2.17(types-react@19.0.0-rc.1) + '@mui/types': 7.2.18(types-react@19.0.0-rc.1) '@types/prop-types': 15.7.13 clsx: 2.1.1 prop-types: 15.8.1 - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 react-is: 18.3.1 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@mui/x-date-pickers@7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@mui/utils@6.1.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: '@babel/runtime': 7.25.6 - '@mui/base': 5.0.0-beta.58(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@mui/material': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@mui/system': 5.16.7(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@mui/utils': 5.16.6(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) + '@mui/types': 7.2.18(types-react@19.0.0-rc.1) + '@types/prop-types': 15.7.13 + clsx: 2.1.1 + prop-types: 15.8.1 + react: 19.0.0-rc-ed966dac-20241007 + react-is: 18.3.1 + optionalDependencies: + '@types/react': types-react@19.0.0-rc.1 + + '@mui/x-date-pickers@7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@mui/material@6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': + dependencies: + '@babel/runtime': 7.25.6 + '@mui/base': 5.0.0-beta.58(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@mui/material': 6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@mui/system': 5.16.7(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@mui/utils': 5.16.6(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) '@types/react-transition-group': 4.4.11 clsx: 2.1.1 prop-types: 15.8.1 - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) - react-transition-group: 4.4.5(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) + react-transition-group: 4.4.5(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007) optionalDependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) dayjs: 1.11.13 transitivePeerDependencies: - '@types/react' @@ -8722,82 +8647,82 @@ snapshots: '@radix-ui/primitive@1.1.0': {} - '@radix-ui/react-compose-refs@1.1.0(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@radix-ui/react-compose-refs@1.1.0(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-context@1.1.1(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@radix-ui/react-context@1.1.1(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-direction@1.1.0(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@radix-ui/react-direction@1.1.0(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-portal@1.1.2(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@radix-ui/react-portal@1.1.2(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: - '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-presence@1.1.1(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@radix-ui/react-presence@1.1.1(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-primitive@2.0.0(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@radix-ui/react-primitive@2.0.0(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: - '@radix-ui/react-slot': 1.1.0(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + '@radix-ui/react-slot': 1.1.0(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-scroll-area@1.2.0(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@radix-ui/react-scroll-area@1.2.0(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: '@radix-ui/number': 1.1.0 '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@radix-ui/react-context': 1.1.1(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@radix-ui/react-direction': 1.1.0(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@radix-ui/react-presence': 1.1.1(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@radix-ui/react-context': 1.1.1(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@radix-ui/react-direction': 1.1.0(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@radix-ui/react-presence': 1.1.1(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@radix-ui/react-primitive': 2.0.0(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-callback-ref': 1.1.0(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@radix-ui/react-use-layout-effect': 1.1.0(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-slot@1.1.0(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@radix-ui/react-slot@1.1.0(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: - '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-1460d67c-20241003 + '@radix-ui/react-compose-refs': 1.1.0(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-ed966dac-20241007 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-use-callback-ref@1.1.0(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@radix-ui/react-use-callback-ref@1.1.0(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - '@radix-ui/react-use-layout-effect@1.1.0(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1)': + '@radix-ui/react-use-layout-effect@1.1.0(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1)': dependencies: - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 optionalDependencies: '@types/react': types-react@19.0.0-rc.1 @@ -8974,12 +8899,12 @@ snapshots: '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.25.2) '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.25.2) - '@svgr/core@8.1.0(typescript@5.6.2)': + '@svgr/core@8.1.0(typescript@5.6.3)': dependencies: '@babel/core': 7.25.2 '@svgr/babel-preset': 8.1.0(@babel/core@7.25.2) camelcase: 6.3.0 - cosmiconfig: 8.3.6(typescript@5.6.2) + cosmiconfig: 8.3.6(typescript@5.6.3) snake-case: 3.0.4 transitivePeerDependencies: - supports-color @@ -8990,11 +8915,11 @@ snapshots: '@babel/types': 7.25.7 entities: 4.5.0 - '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.6.2))': + '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.6.3))': dependencies: '@babel/core': 7.25.2 '@svgr/babel-preset': 8.1.0(@babel/core@7.25.2) - '@svgr/core': 8.1.0(typescript@5.6.2) + '@svgr/core': 8.1.0(typescript@5.6.3) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 transitivePeerDependencies: @@ -9062,54 +8987,54 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/react-router@1.63.2(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)': + '@tanstack/react-router@1.63.5(@tanstack/router-generator@1.63.5)(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)': dependencies: '@tanstack/history': 1.61.1 - '@tanstack/react-store': 0.5.5(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003) - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + '@tanstack/react-store': 0.5.5(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) tiny-invariant: 1.3.3 tiny-warning: 1.0.3 optionalDependencies: - '@tanstack/router-generator': 1.58.12 + '@tanstack/router-generator': 1.63.5 - '@tanstack/react-store@0.5.5(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)': + '@tanstack/react-store@0.5.5(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)': dependencies: '@tanstack/store': 0.5.5 - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) - use-sync-external-store: 1.2.2(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) + use-sync-external-store: 1.2.2(react@19.0.0-rc-ed966dac-20241007) - '@tanstack/react-table@8.20.5(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)': + '@tanstack/react-table@8.20.5(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)': dependencies: '@tanstack/table-core': 8.20.5 - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) - '@tanstack/react-virtual@3.10.6(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)': + '@tanstack/react-virtual@3.10.6(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)': dependencies: '@tanstack/virtual-core': 3.10.6 - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) - '@tanstack/router-devtools@1.63.2(@tanstack/react-router@1.63.2(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003))(csstype@3.1.3)(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)': + '@tanstack/router-devtools@1.63.5(@tanstack/react-router@1.63.5(@tanstack/router-generator@1.63.5)(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007))(csstype@3.1.3)(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)': dependencies: - '@tanstack/react-router': 1.63.2(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003) + '@tanstack/react-router': 1.63.5(@tanstack/router-generator@1.63.5)(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007) clsx: 2.1.1 goober: 2.1.14(csstype@3.1.3) - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) transitivePeerDependencies: - csstype - '@tanstack/router-generator@1.58.12': + '@tanstack/router-generator@1.63.5': dependencies: '@tanstack/virtual-file-routes': 1.56.0 prettier: 3.3.3 tsx: 4.19.1 zod: 3.23.8 - '@tanstack/router-plugin@1.62.0(vite@5.4.8(@types/node@22.7.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.4)(stylus@0.62.0))(webpack-sources@3.2.3)': + '@tanstack/router-plugin@1.63.5(vite@5.4.8(@types/node@22.7.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.4)(stylus@0.62.0))(webpack-sources@3.2.3)': dependencies: '@babel/core': 7.25.7 '@babel/generator': 7.25.7 @@ -9119,7 +9044,7 @@ snapshots: '@babel/template': 7.25.7 '@babel/traverse': 7.25.7 '@babel/types': 7.25.7 - '@tanstack/router-generator': 1.58.12 + '@tanstack/router-generator': 1.63.5 '@tanstack/virtual-file-routes': 1.56.0 '@types/babel__core': 7.20.5 '@types/babel__generator': 7.6.8 @@ -9135,9 +9060,9 @@ snapshots: - supports-color - webpack-sources - '@tanstack/router-zod-adapter@1.63.2(@tanstack/react-router@1.63.2(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003))(zod@3.23.8)': + '@tanstack/router-zod-adapter@1.63.5(@tanstack/react-router@1.63.5(@tanstack/router-generator@1.63.5)(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007))(zod@3.23.8)': dependencies: - '@tanstack/react-router': 1.63.2(@tanstack/router-generator@1.58.12)(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003) + '@tanstack/react-router': 1.63.5(@tanstack/router-generator@1.63.5)(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007) zod: 3.23.8 '@tanstack/store@0.5.5': {} @@ -9474,8 +9399,6 @@ snapshots: dependencies: postcss: 8.4.47 - '@types/prop-types@15.7.12': {} - '@types/prop-types@15.7.13': {} '@types/react-transition-group@4.4.11': @@ -9499,34 +9422,34 @@ snapshots: '@types/node': 22.7.5 optional: true - '@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2)': + '@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.6.2) + '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.6.3) '@typescript-eslint/scope-manager': 8.7.0 - '@typescript-eslint/type-utils': 8.7.0(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/utils': 8.7.0(eslint@8.57.1)(typescript@5.6.2) + '@typescript-eslint/type-utils': 8.7.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/utils': 8.7.0(eslint@8.57.1)(typescript@5.6.3) '@typescript-eslint/visitor-keys': 8.7.0 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.6.2) + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.6.2 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.6.2)': + '@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.6.3)': dependencies: '@typescript-eslint/scope-manager': 8.7.0 '@typescript-eslint/types': 8.7.0 - '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.2) + '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.3) '@typescript-eslint/visitor-keys': 8.7.0 debug: 4.3.7 eslint: 8.57.1 optionalDependencies: - typescript: 5.6.2 + typescript: 5.6.3 transitivePeerDependencies: - supports-color @@ -9535,21 +9458,21 @@ snapshots: '@typescript-eslint/types': 8.7.0 '@typescript-eslint/visitor-keys': 8.7.0 - '@typescript-eslint/type-utils@8.7.0(eslint@8.57.1)(typescript@5.6.2)': + '@typescript-eslint/type-utils@8.7.0(eslint@8.57.1)(typescript@5.6.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.2) - '@typescript-eslint/utils': 8.7.0(eslint@8.57.1)(typescript@5.6.2) + '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.7.0(eslint@8.57.1)(typescript@5.6.3) debug: 4.3.7 - ts-api-utils: 1.3.0(typescript@5.6.2) + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.6.2 + typescript: 5.6.3 transitivePeerDependencies: - eslint - supports-color '@typescript-eslint/types@8.7.0': {} - '@typescript-eslint/typescript-estree@8.7.0(typescript@5.6.2)': + '@typescript-eslint/typescript-estree@8.7.0(typescript@5.6.3)': dependencies: '@typescript-eslint/types': 8.7.0 '@typescript-eslint/visitor-keys': 8.7.0 @@ -9558,18 +9481,18 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.6.2) + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.6.2 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.7.0(eslint@8.57.1)(typescript@5.6.2)': + '@typescript-eslint/utils@8.7.0(eslint@8.57.1)(typescript@5.6.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) '@typescript-eslint/scope-manager': 8.7.0 '@typescript-eslint/types': 8.7.0 - '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.2) + '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.3) eslint: 8.57.1 transitivePeerDependencies: - supports-color @@ -9630,7 +9553,7 @@ snapshots: de-indent: 1.0.2 he: 1.2.0 - '@vue/language-core@2.1.6(typescript@5.6.2)': + '@vue/language-core@2.1.6(typescript@5.6.3)': dependencies: '@volar/language-core': 2.4.5 '@vue/compiler-dom': 3.4.38 @@ -9641,7 +9564,7 @@ snapshots: muggle-string: 0.4.1 path-browserify: 1.0.1 optionalDependencies: - typescript: 5.6.2 + typescript: 5.6.3 '@vue/shared@3.4.38': {} @@ -9686,14 +9609,14 @@ snapshots: clean-stack: 5.2.0 indent-string: 5.0.0 - ahooks@3.8.1(react@19.0.0-rc-1460d67c-20241003): + ahooks@3.8.1(react@19.0.0-rc-ed966dac-20241007): dependencies: '@babel/runtime': 7.24.8 dayjs: 1.11.12 intersection-observer: 0.12.2 js-cookie: 3.0.5 lodash: 4.17.21 - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 react-fast-compare: 3.2.2 resize-observer-polyfill: 1.5.1 screenfull: 5.2.0 @@ -9735,16 +9658,16 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - allotment@1.20.2(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003): + allotment@1.20.2(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007): dependencies: classnames: 2.5.1 eventemitter3: 5.0.1 lodash.clamp: 4.0.3 lodash.debounce: 4.0.8 lodash.isequal: 4.5.0 - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) - use-resize-observer: 9.1.0(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) + use-resize-observer: 9.1.0(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007) ansi-align@2.0.0: dependencies: @@ -10187,12 +10110,12 @@ snapshots: dependencies: toggle-selection: 1.0.6 - cosmiconfig-typescript-loader@5.0.0(@types/node@22.7.5)(cosmiconfig@9.0.0(typescript@5.6.2))(typescript@5.6.2): + cosmiconfig-typescript-loader@5.0.0(@types/node@22.7.5)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3): dependencies: '@types/node': 22.7.5 - cosmiconfig: 9.0.0(typescript@5.6.2) + cosmiconfig: 9.0.0(typescript@5.6.3) jiti: 1.21.6 - typescript: 5.6.2 + typescript: 5.6.3 cosmiconfig@7.1.0: dependencies: @@ -10202,23 +10125,23 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 - cosmiconfig@8.3.6(typescript@5.6.2): + cosmiconfig@8.3.6(typescript@5.6.3): dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: - typescript: 5.6.2 + typescript: 5.6.3 - cosmiconfig@9.0.0(typescript@5.6.2): + cosmiconfig@9.0.0(typescript@5.6.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.6.2 + typescript: 5.6.3 country-code-emoji@2.3.0: {} @@ -10852,16 +10775,16 @@ snapshots: dependencies: eslint: 8.57.1 - eslint-config-standard@17.1.0(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1))(eslint-plugin-n@17.10.3(eslint@8.57.1))(eslint-plugin-promise@7.1.0(eslint@8.57.1))(eslint@8.57.1): + eslint-config-standard@17.1.0(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1))(eslint-plugin-n@17.10.3(eslint@8.57.1))(eslint-plugin-promise@7.1.0(eslint@8.57.1))(eslint@8.57.1): dependencies: eslint: 8.57.1 - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1) eslint-plugin-n: 17.10.3(eslint@8.57.1) eslint-plugin-promise: 7.1.0(eslint@8.57.1) - eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)): + eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)): dependencies: - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1) eslint-import-resolver-node@0.3.9: dependencies: @@ -10871,11 +10794,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): + eslint-module-utils@2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.6.2) + '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.6.3) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -10892,7 +10815,7 @@ snapshots: dependencies: htmlparser2: 9.1.0 - eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1): + eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -10903,7 +10826,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.7.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -10914,7 +10837,7 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.6.2) + '@typescript-eslint/parser': 8.7.0(eslint@8.57.1)(typescript@5.6.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -11160,7 +11083,7 @@ snapshots: node-domexception: 1.0.0 web-streams-polyfill: 3.3.3 - figlet@1.7.0: {} + figlet@1.8.0: {} file-entry-cache@6.0.1: dependencies: @@ -11215,13 +11138,13 @@ snapshots: fraction.js@4.3.7: {} - framer-motion@12.0.0-alpha.1(@emotion/is-prop-valid@1.3.0)(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003): + framer-motion@12.0.0-alpha.1(@emotion/is-prop-valid@1.3.0)(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007): dependencies: tslib: 2.6.2 optionalDependencies: '@emotion/is-prop-valid': 1.3.0 - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) fs-extra@11.2.0: dependencies: @@ -11835,10 +11758,10 @@ snapshots: jju@1.4.0: {} - jotai@2.10.0(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1): + jotai@2.10.0(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1): optionalDependencies: '@types/react': types-react@19.0.0-rc.1 - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 js-cookie@2.2.1: {} @@ -11908,7 +11831,7 @@ snapshots: kind-of@6.0.3: {} - knip@5.33.1(@types/node@22.7.5)(typescript@5.6.2): + knip@5.33.2(@types/node@22.7.5)(typescript@5.6.3): dependencies: '@nodelib/fs.walk': 1.2.8 '@snyk/github-codeowners': 1.1.0 @@ -11925,7 +11848,7 @@ snapshots: smol-toml: 1.3.0 strip-json-comments: 5.0.1 summary: 2.1.0 - typescript: 5.6.2 + typescript: 5.6.3 zod: 3.23.8 zod-validation-error: 3.3.1(zod@3.23.8) @@ -12087,19 +12010,19 @@ snapshots: escape-string-regexp: 4.0.0 optional: true - material-react-table@3.0.1(n4i7ircogkstcizgl4g4wumfki): + material-react-table@3.0.1(jdqedeqlttvjs37e3mysijinza): dependencies: - '@emotion/react': 11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@mui/icons-material': 6.1.2(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@mui/material': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) + '@emotion/react': 11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@mui/icons-material': 6.1.3(@mui/material@6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@mui/material': 6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@mui/material@6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) '@tanstack/match-sorter-utils': 8.19.4 - '@tanstack/react-table': 8.20.5(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003) - '@tanstack/react-virtual': 3.10.6(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003) + '@tanstack/react-table': 8.20.5(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007) + '@tanstack/react-virtual': 3.10.6(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007) highlight-words: 1.2.2 - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) mathml-tag-names@2.1.3: {} @@ -12389,7 +12312,7 @@ snapshots: acorn: 8.12.1 pathe: 1.1.2 pkg-types: 1.1.3 - ufo: 1.5.3 + ufo: 1.5.4 monaco-editor@0.52.0: {} @@ -12432,14 +12355,14 @@ snapshots: muggle-string@0.4.1: {} - mui-color-input@4.0.1(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1): + mui-color-input@4.0.1(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@mui/material@6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1): dependencies: '@ctrl/tinycolor': 4.1.0 - '@emotion/react': 11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@mui/material': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + '@emotion/react': 11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@mui/material': 6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) optionalDependencies: '@types/react': types-react@19.0.0-rc.1 @@ -12449,15 +12372,15 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nano-css@5.6.2(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003): + nano-css@5.6.2(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007): dependencies: '@jridgewell/sourcemap-codec': 1.5.0 css-tree: 1.1.3 csstype: 3.1.3 fastest-stable-stringify: 2.0.2 inline-style-prefixer: 7.0.1 - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) rtl-css-js: 1.16.1 stacktrace-js: 2.0.2 stylis: 4.3.2 @@ -12594,7 +12517,7 @@ snapshots: '@octokit/request-error': 6.1.1 '@octokit/types': 13.6.1 - ofetch@1.4.0: + ofetch@1.4.1: dependencies: destr: 2.0.3 node-fetch-native: 1.6.4 @@ -13000,50 +12923,50 @@ snapshots: - supports-color - utf-8-validate - react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003): + react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007): dependencies: - react: 19.0.0-rc-1460d67c-20241003 - scheduler: 0.25.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 + scheduler: 0.25.0-rc-ed966dac-20241007 - react-error-boundary@4.0.13(react@19.0.0-rc-1460d67c-20241003): + react-error-boundary@4.0.13(react@19.0.0-rc-ed966dac-20241007): dependencies: '@babel/runtime': 7.24.5 - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 react-fast-compare@3.2.2: {} - react-fast-marquee@1.6.5(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003): + react-fast-marquee@1.6.5(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007): dependencies: - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) - react-hook-form-mui@7.2.1(fxszhmwpjed2v6dcamjpyjhgqy): + react-hook-form-mui@7.2.1(seelerdzwk3hufv7wh5kqgfh44): dependencies: - '@mui/material': 6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - react: 19.0.0-rc-1460d67c-20241003 - react-hook-form: 7.52.1(react@19.0.0-rc-1460d67c-20241003) + '@mui/material': 6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + react: 19.0.0-rc-ed966dac-20241007 + react-hook-form: 7.52.1(react@19.0.0-rc-ed966dac-20241007) optionalDependencies: - '@mui/icons-material': 6.1.2(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) - '@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@mui/material@6.1.2(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1) + '@mui/icons-material': 6.1.3(@mui/material@6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) + '@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@mui/material@6.1.3(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1) - react-hook-form@7.52.1(react@19.0.0-rc-1460d67c-20241003): + react-hook-form@7.52.1(react@19.0.0-rc-ed966dac-20241007): dependencies: - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 - react-i18next@15.0.2(i18next@23.15.2)(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003): + react-i18next@15.0.2(i18next@23.15.2)(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007): dependencies: '@babel/runtime': 7.25.6 html-parse-stringify: 3.0.1 i18next: 23.15.2 - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 optionalDependencies: - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) react-is@16.13.1: {} react-is@18.3.1: {} - react-markdown@9.0.1(react@19.0.0-rc-1460d67c-20241003)(types-react@19.0.0-rc.1): + react-markdown@9.0.1(react@19.0.0-rc-ed966dac-20241007)(types-react@19.0.0-rc.1): dependencies: '@types/hast': 3.0.4 '@types/react': types-react@19.0.0-rc.1 @@ -13051,7 +12974,7 @@ snapshots: hast-util-to-jsx-runtime: 2.3.0 html-url-attributes: 3.0.0 mdast-util-to-hast: 13.1.0 - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 remark-parse: 11.0.0 remark-rehype: 11.1.0 unified: 11.0.4 @@ -13062,39 +12985,39 @@ snapshots: react-refresh@0.14.2: {} - react-router-dom@6.26.2(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003): + react-router-dom@6.26.2(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007): dependencies: '@remix-run/router': 1.19.2 - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) - react-router: 6.26.2(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) + react-router: 6.26.2(react@19.0.0-rc-ed966dac-20241007) - react-router@6.26.2(react@19.0.0-rc-1460d67c-20241003): + react-router@6.26.2(react@19.0.0-rc-ed966dac-20241007): dependencies: '@remix-run/router': 1.19.2 - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 - react-split-grid@1.0.4(react@19.0.0-rc-1460d67c-20241003): + react-split-grid@1.0.4(react@19.0.0-rc-ed966dac-20241007): dependencies: prop-types: 15.8.1 - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 split-grid: 1.0.11 - react-transition-group@4.4.5(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003): + react-transition-group@4.4.5(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007): dependencies: '@babel/runtime': 7.25.6 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) - react-universal-interface@0.6.2(react@19.0.0-rc-1460d67c-20241003)(tslib@2.6.2): + react-universal-interface@0.6.2(react@19.0.0-rc-ed966dac-20241007)(tslib@2.6.2): dependencies: - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 tslib: 2.6.2 - react-use@17.5.1(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003): + react-use@17.5.1(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007): dependencies: '@types/js-cookie': 2.2.7 '@xobotyi/scrollbar-width': 1.9.5 @@ -13102,10 +13025,10 @@ snapshots: fast-deep-equal: 3.1.3 fast-shallow-equal: 1.0.0 js-cookie: 2.2.1 - nano-css: 5.6.2(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003) - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) - react-universal-interface: 0.6.2(react@19.0.0-rc-1460d67c-20241003)(tslib@2.6.2) + nano-css: 5.6.2(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) + react-universal-interface: 0.6.2(react@19.0.0-rc-ed966dac-20241007)(tslib@2.6.2) resize-observer-polyfill: 1.5.1 screenfull: 5.2.0 set-harmonic-interval: 1.0.1 @@ -13113,7 +13036,7 @@ snapshots: ts-easing: 0.2.0 tslib: 2.6.2 - react@19.0.0-rc-1460d67c-20241003: {} + react@19.0.0-rc-ed966dac-20241007: {} read-cache@1.0.0: dependencies: @@ -13409,7 +13332,7 @@ snapshots: sax@1.3.0: {} - scheduler@0.25.0-rc-1460d67c-20241003: {} + scheduler@0.25.0-rc-ed966dac-20241007: {} screenfull@5.2.0: {} @@ -13673,36 +13596,36 @@ snapshots: dependencies: inline-style-parser: 0.2.3 - stylelint-config-html@1.1.0(postcss-html@1.7.0)(stylelint@16.9.0(typescript@5.6.2)): + stylelint-config-html@1.1.0(postcss-html@1.7.0)(stylelint@16.9.0(typescript@5.6.3)): dependencies: postcss-html: 1.7.0 - stylelint: 16.9.0(typescript@5.6.2) + stylelint: 16.9.0(typescript@5.6.3) - stylelint-config-recess-order@5.1.1(stylelint@16.9.0(typescript@5.6.2)): + stylelint-config-recess-order@5.1.1(stylelint@16.9.0(typescript@5.6.3)): dependencies: - stylelint: 16.9.0(typescript@5.6.2) - stylelint-order: 6.0.4(stylelint@16.9.0(typescript@5.6.2)) + stylelint: 16.9.0(typescript@5.6.3) + stylelint-order: 6.0.4(stylelint@16.9.0(typescript@5.6.3)) - stylelint-config-recommended@14.0.1(stylelint@16.9.0(typescript@5.6.2)): + stylelint-config-recommended@14.0.1(stylelint@16.9.0(typescript@5.6.3)): dependencies: - stylelint: 16.9.0(typescript@5.6.2) + stylelint: 16.9.0(typescript@5.6.3) - stylelint-config-standard@36.0.1(stylelint@16.9.0(typescript@5.6.2)): + stylelint-config-standard@36.0.1(stylelint@16.9.0(typescript@5.6.3)): dependencies: - stylelint: 16.9.0(typescript@5.6.2) - stylelint-config-recommended: 14.0.1(stylelint@16.9.0(typescript@5.6.2)) + stylelint: 16.9.0(typescript@5.6.3) + stylelint-config-recommended: 14.0.1(stylelint@16.9.0(typescript@5.6.3)) - stylelint-declaration-block-no-ignored-properties@2.8.0(stylelint@16.9.0(typescript@5.6.2)): + stylelint-declaration-block-no-ignored-properties@2.8.0(stylelint@16.9.0(typescript@5.6.3)): dependencies: - stylelint: 16.9.0(typescript@5.6.2) + stylelint: 16.9.0(typescript@5.6.3) - stylelint-order@6.0.4(stylelint@16.9.0(typescript@5.6.2)): + stylelint-order@6.0.4(stylelint@16.9.0(typescript@5.6.3)): dependencies: postcss: 8.4.47 postcss-sorting: 8.0.2(postcss@8.4.47) - stylelint: 16.9.0(typescript@5.6.2) + stylelint: 16.9.0(typescript@5.6.3) - stylelint-scss@6.7.0(stylelint@16.9.0(typescript@5.6.2)): + stylelint-scss@6.7.0(stylelint@16.9.0(typescript@5.6.3)): dependencies: css-tree: 2.3.1 is-plain-object: 5.0.0 @@ -13711,9 +13634,9 @@ snapshots: postcss-resolve-nested-selector: 0.1.6 postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - stylelint: 16.9.0(typescript@5.6.2) + stylelint: 16.9.0(typescript@5.6.3) - stylelint@16.9.0(typescript@5.6.2): + stylelint@16.9.0(typescript@5.6.3): dependencies: '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1) '@csstools/css-tokenizer': 3.0.1 @@ -13722,7 +13645,7 @@ snapshots: '@dual-bundle/import-meta-resolve': 4.1.0 balanced-match: 2.0.0 colord: 2.9.3 - cosmiconfig: 9.0.0(typescript@5.6.2) + cosmiconfig: 9.0.0(typescript@5.6.3) css-functions-list: 3.2.2 css-tree: 2.3.1 debug: 4.3.7 @@ -13817,11 +13740,11 @@ snapshots: svg-tags@1.0.0: {} - swr@2.2.5(react@19.0.0-rc-1460d67c-20241003): + swr@2.2.5(react@19.0.0-rc-ed966dac-20241007): dependencies: client-only: 0.0.1 - react: 19.0.0-rc-1460d67c-20241003 - use-sync-external-store: 1.2.2(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + use-sync-external-store: 1.2.2(react@19.0.0-rc-ed966dac-20241007) synckit@0.9.1: dependencies: @@ -13969,9 +13892,9 @@ snapshots: trough@2.2.0: {} - ts-api-utils@1.3.0(typescript@5.6.2): + ts-api-utils@1.3.0(typescript@5.6.3): dependencies: - typescript: 5.6.2 + typescript: 5.6.3 ts-custom-error@3.3.1: {} @@ -13979,9 +13902,9 @@ snapshots: ts-interface-checker@0.1.13: {} - tsconfck@3.0.3(typescript@5.6.2): + tsconfck@3.0.3(typescript@5.6.3): optionalDependencies: - typescript: 5.6.2 + typescript: 5.6.3 tsconfig-paths@3.15.0: dependencies: @@ -14064,7 +13987,7 @@ snapshots: dependencies: csstype: 3.1.3 - typescript-plugin-css-modules@5.1.0(typescript@5.6.2): + typescript-plugin-css-modules@5.1.0(typescript@5.6.3): dependencies: '@types/postcss-modules-local-by-default': 4.0.2 '@types/postcss-modules-scope': 3.0.4 @@ -14082,16 +14005,14 @@ snapshots: source-map-js: 1.2.0 stylus: 0.62.0 tsconfig-paths: 4.2.0 - typescript: 5.6.2 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - ts-node typescript@5.4.2: {} - typescript@5.6.2: {} - - ufo@1.5.3: {} + typescript@5.6.3: {} ufo@1.5.4: {} @@ -14108,7 +14029,7 @@ snapshots: dependencies: '@fastify/busboy': 2.1.1 - undici@6.19.8: {} + undici@6.20.0: {} unicorn-magic@0.1.0: {} @@ -14197,7 +14118,7 @@ snapshots: - rollup - webpack-sources - unplugin-icons@0.19.3(@svgr/core@8.1.0(typescript@5.6.2)): + unplugin-icons@0.19.3(@svgr/core@8.1.0(typescript@5.6.3)): dependencies: '@antfu/install-pkg': 0.4.1 '@antfu/utils': 0.7.10 @@ -14207,7 +14128,7 @@ snapshots: local-pkg: 0.5.0 unplugin: 1.12.0 optionalDependencies: - '@svgr/core': 8.1.0(typescript@5.6.2) + '@svgr/core': 8.1.0(typescript@5.6.3) transitivePeerDependencies: - supports-color @@ -14266,15 +14187,15 @@ snapshots: dependencies: prepend-http: 1.0.4 - use-resize-observer@9.1.0(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003): + use-resize-observer@9.1.0(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007): dependencies: '@juggle/resize-observer': 3.4.0 - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) - use-sync-external-store@1.2.2(react@19.0.0-rc-1460d67c-20241003): + use-sync-external-store@1.2.2(react@19.0.0-rc-ed966dac-20241007): dependencies: - react: 19.0.0-rc-1460d67c-20241003 + react: 19.0.0-rc-ed966dac-20241007 utf-8-validate@5.0.10: dependencies: @@ -14297,10 +14218,10 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - virtua@0.34.2(react-dom@19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003))(react@19.0.0-rc-1460d67c-20241003): + virtua@0.35.0(react-dom@19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007))(react@19.0.0-rc-ed966dac-20241007): optionalDependencies: - react: 19.0.0-rc-1460d67c-20241003 - react-dom: 19.0.0-rc-1460d67c-20241003(react@19.0.0-rc-1460d67c-20241003) + react: 19.0.0-rc-ed966dac-20241007 + react-dom: 19.0.0-rc-ed966dac-20241007(react@19.0.0-rc-ed966dac-20241007) vite-bundle-visualizer@1.2.1(rollup@4.21.0): dependencies: @@ -14312,18 +14233,18 @@ snapshots: - rollup - supports-color - vite-plugin-dts@4.2.3(@types/node@22.7.5)(rollup@4.21.0)(typescript@5.6.2)(vite@5.4.8(@types/node@22.7.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.4)(stylus@0.62.0)): + vite-plugin-dts@4.2.3(@types/node@22.7.5)(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.8(@types/node@22.7.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.4)(stylus@0.62.0)): dependencies: '@microsoft/api-extractor': 7.47.7(@types/node@22.7.5) '@rollup/pluginutils': 5.1.0(rollup@4.21.0) '@volar/typescript': 2.4.5 - '@vue/language-core': 2.1.6(typescript@5.6.2) + '@vue/language-core': 2.1.6(typescript@5.6.3) compare-versions: 6.1.1 debug: 4.3.7 kolorist: 1.8.0 local-pkg: 0.5.0 magic-string: 0.30.11 - typescript: 5.6.2 + typescript: 5.6.3 optionalDependencies: vite: 5.4.8(@types/node@22.7.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.4)(stylus@0.62.0) transitivePeerDependencies: @@ -14339,22 +14260,22 @@ snapshots: sass-embedded: 1.78.0 vite: 5.4.8(@types/node@22.7.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.4)(stylus@0.62.0) - vite-plugin-svgr@4.2.0(rollup@4.21.0)(typescript@5.6.2)(vite@5.4.8(@types/node@22.7.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.4)(stylus@0.62.0)): + vite-plugin-svgr@4.2.0(rollup@4.21.0)(typescript@5.6.3)(vite@5.4.8(@types/node@22.7.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.4)(stylus@0.62.0)): dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.21.0) - '@svgr/core': 8.1.0(typescript@5.6.2) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.6.2)) + '@svgr/core': 8.1.0(typescript@5.6.3) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.6.3)) vite: 5.4.8(@types/node@22.7.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.4)(stylus@0.62.0) transitivePeerDependencies: - rollup - supports-color - typescript - vite-tsconfig-paths@5.0.1(typescript@5.6.2)(vite@5.4.8(@types/node@22.7.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.4)(stylus@0.62.0)): + vite-tsconfig-paths@5.0.1(typescript@5.6.3)(vite@5.4.8(@types/node@22.7.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.4)(stylus@0.62.0)): dependencies: debug: 4.3.6 globrex: 0.1.2 - tsconfck: 3.0.3(typescript@5.6.2) + tsconfck: 3.0.3(typescript@5.6.3) optionalDependencies: vite: 5.4.8(@types/node@22.7.5)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.79.4)(stylus@0.62.0) transitivePeerDependencies: diff --git a/clash-nyanpasu/scripts/package.json b/clash-nyanpasu/scripts/package.json index f241cf8331..4c67eb6605 100644 --- a/clash-nyanpasu/scripts/package.json +++ b/clash-nyanpasu/scripts/package.json @@ -5,7 +5,7 @@ "dependencies": { "@actions/github": "6.0.0", "@types/figlet": "1.7.0", - "figlet": "1.7.0", + "figlet": "1.8.0", "p-retry": "6.2.0" }, "devDependencies": { @@ -21,6 +21,6 @@ "picocolors": "1.1.0", "tar": "7.4.3", "telegram": "2.25.15", - "undici": "6.19.8" + "undici": "6.20.0" } } diff --git a/lede/README.md b/lede/README.md index 03b67faf16..70a6ab00e6 100644 --- a/lede/README.md +++ b/lede/README.md @@ -40,7 +40,7 @@ ArmSoM-Sige 系列:软路由、单板计算机、小型服务器与智能家 bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \ git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libfuse-dev libglib2.0-dev libgmp3-dev \ libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev libreadline-dev \ - libssl-dev libtool lrzsz mkisofs msmtp ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 \ + libssl-dev libtool lrzsz mkisofs msmtp ninja-build p7zip p7zip-full patch pkgconf python3 \ python3-pyelftools python3-setuptools qemu-utils rsync scons squashfs-tools subversion swig texinfo \ uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev ``` diff --git a/lede/README_EN.md b/lede/README_EN.md index 40ece09f36..96c222f021 100644 --- a/lede/README_EN.md +++ b/lede/README_EN.md @@ -46,7 +46,7 @@ Buy Link : bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \ git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \ libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \ - mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \ + mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python3 python3-pyelftools \ libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \ vim wget xmlto xxd zlib1g-dev python3-setuptools ``` diff --git a/lede/README_JA.md b/lede/README_JA.md index 9fdc58046f..5b853886da 100644 --- a/lede/README_JA.md +++ b/lede/README_JA.md @@ -48,7 +48,7 @@ I18N: [English](README_EN.md) | [简体中文](README.md) | [日本語](README_J bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \ git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \ libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \ - mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \ + mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python3 python3-pyelftools \ libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \ vim wget xmlto xxd zlib1g-dev python3-setuptools ``` diff --git a/lede/target/linux/generic/backport-6.6/898-v6.7-mtd-spinand-winbond-add-support-for-serial-NAND-flash.patch b/lede/target/linux/generic/backport-6.6/898-v6.7-mtd-spinand-winbond-add-support-for-serial-NAND-flash.patch new file mode 100644 index 0000000000..b5aeaef835 --- /dev/null +++ b/lede/target/linux/generic/backport-6.6/898-v6.7-mtd-spinand-winbond-add-support-for-serial-NAND-flash.patch @@ -0,0 +1,75 @@ +From 6a804fb72de56d6a99b799f565ae45f2cec7cd55 Mon Sep 17 00:00:00 2001 +From: Sridharan S N +Date: Thu, 12 Oct 2023 12:11:34 +0530 +Subject: mtd: spinand: winbond: add support for serial NAND flash + +Add support for W25N01JW, W25N02JWZEIF, W25N512GW, +W25N02KWZEIR and W25N01GWZEIG. + +W25N02KWZEIR has 8b/512b on-die ECC capability and other +four has 4b/512b on-die ECC capability. + +Signed-off-by: Sridharan S N +Signed-off-by: Md Sadre Alam +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20231012064134.4068621-1-quic_sridsn@quicinc.com +--- + drivers/mtd/nand/spi/winbond.c | 45 ++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 45 insertions(+) + +(limited to 'drivers/mtd/nand/spi/winbond.c') + +--- a/drivers/mtd/nand/spi/winbond.c ++++ b/drivers/mtd/nand/spi/winbond.c +@@ -169,6 +169,51 @@ static const struct spinand_info winbond + &update_cache_variants), + 0, + SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)), ++ SPINAND_INFO("W25N01JW", ++ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xbc, 0x21), ++ NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1), ++ NAND_ECCREQ(4, 512), ++ SPINAND_INFO_OP_VARIANTS(&read_cache_variants, ++ &write_cache_variants, ++ &update_cache_variants), ++ 0, ++ SPINAND_ECCINFO(&w25m02gv_ooblayout, w25n02kv_ecc_get_status)), ++ SPINAND_INFO("W25N02JWZEIF", ++ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xbf, 0x22), ++ NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 2, 1), ++ NAND_ECCREQ(4, 512), ++ SPINAND_INFO_OP_VARIANTS(&read_cache_variants, ++ &write_cache_variants, ++ &update_cache_variants), ++ 0, ++ SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)), ++ SPINAND_INFO("W25N512GW", ++ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xba, 0x20), ++ NAND_MEMORG(1, 2048, 64, 64, 512, 10, 1, 1, 1), ++ NAND_ECCREQ(4, 512), ++ SPINAND_INFO_OP_VARIANTS(&read_cache_variants, ++ &write_cache_variants, ++ &update_cache_variants), ++ 0, ++ SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)), ++ SPINAND_INFO("W25N02KWZEIR", ++ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xba, 0x22), ++ NAND_MEMORG(1, 2048, 128, 64, 2048, 40, 1, 1, 1), ++ NAND_ECCREQ(8, 512), ++ SPINAND_INFO_OP_VARIANTS(&read_cache_variants, ++ &write_cache_variants, ++ &update_cache_variants), ++ 0, ++ SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)), ++ SPINAND_INFO("W25N01GWZEIG", ++ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xba, 0x21), ++ NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1), ++ NAND_ECCREQ(4, 512), ++ SPINAND_INFO_OP_VARIANTS(&read_cache_variants, ++ &write_cache_variants, ++ &update_cache_variants), ++ 0, ++ SPINAND_ECCINFO(&w25m02gv_ooblayout, w25n02kv_ecc_get_status)), + }; + + static int winbond_spinand_init(struct spinand_device *spinand) diff --git a/lede/target/linux/generic/backport-6.6/899-v6.9-mtd-spinand-winbond-add-W25N04KV.patch b/lede/target/linux/generic/backport-6.6/899-v6.9-mtd-spinand-winbond-add-W25N04KV.patch new file mode 100644 index 0000000000..3e5d918c61 --- /dev/null +++ b/lede/target/linux/generic/backport-6.6/899-v6.9-mtd-spinand-winbond-add-W25N04KV.patch @@ -0,0 +1,53 @@ +From e0ccf861b80698a5cc6f97c89bf8d5761f465fce Mon Sep 17 00:00:00 2001 +From: Zhi-Jun You +Date: Sun, 7 Jan 2024 14:41:20 +0000 +Subject: mtd: spinand: winbond: add support for W25N04KV + +Add support for W25N04KV. + +W25N04KV has 8-bit on-die ECC. + +Signed-off-by: Zhi-Jun You +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20240107144120.532-1-hujy652@gmail.com +--- + drivers/mtd/nand/spi/winbond.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +(limited to 'drivers/mtd/nand/spi/winbond.c') + +--- a/drivers/mtd/nand/spi/winbond.c ++++ b/drivers/mtd/nand/spi/winbond.c +@@ -15,6 +15,8 @@ + + #define WINBOND_CFG_BUF_READ BIT(3) + ++#define W25N04KV_STATUS_ECC_5_8_BITFLIPS (3 << 4) ++ + static SPINAND_OP_VARIANTS(read_cache_variants, + SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 2, NULL, 0), + SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0), +@@ -118,6 +120,7 @@ static int w25n02kv_ecc_get_status(struc + return -EBADMSG; + + case STATUS_ECC_HAS_BITFLIPS: ++ case W25N04KV_STATUS_ECC_5_8_BITFLIPS: + /* + * Let's try to retrieve the real maximum number of bitflips + * in order to avoid forcing the wear-leveling layer to move +@@ -214,6 +217,15 @@ static const struct spinand_info winbond + &update_cache_variants), + 0, + SPINAND_ECCINFO(&w25m02gv_ooblayout, w25n02kv_ecc_get_status)), ++ SPINAND_INFO("W25N04KV", ++ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0xaa, 0x23), ++ NAND_MEMORG(1, 2048, 128, 64, 4096, 40, 2, 1, 1), ++ NAND_ECCREQ(8, 512), ++ SPINAND_INFO_OP_VARIANTS(&read_cache_variants, ++ &write_cache_variants, ++ &update_cache_variants), ++ 0, ++ SPINAND_ECCINFO(&w25n02kv_ooblayout, w25n02kv_ecc_get_status)), + }; + + static int winbond_spinand_init(struct spinand_device *spinand) diff --git a/lede/target/linux/generic/pending-6.6/489-mtd-spinand-winbond-add-support-for-W25N01KV.patch b/lede/target/linux/generic/pending-6.6/489-mtd-spinand-winbond-add-support-for-W25N01KV.patch index 78498af1ce..b72e28a3dd 100644 --- a/lede/target/linux/generic/pending-6.6/489-mtd-spinand-winbond-add-support-for-W25N01KV.patch +++ b/lede/target/linux/generic/pending-6.6/489-mtd-spinand-winbond-add-support-for-W25N01KV.patch @@ -14,7 +14,7 @@ Signed-off-by: Robert Marko --- a/drivers/mtd/nand/spi/winbond.c +++ b/drivers/mtd/nand/spi/winbond.c -@@ -74,6 +74,18 @@ static int w25m02gv_select_target(struct +@@ -76,6 +76,18 @@ static int w25m02gv_select_target(struct return spi_mem_exec_op(spinand->spimem, &op); } @@ -33,7 +33,7 @@ Signed-off-by: Robert Marko static int w25n02kv_ooblayout_ecc(struct mtd_info *mtd, int section, struct mtd_oob_region *region) { -@@ -98,6 +110,11 @@ static int w25n02kv_ooblayout_free(struc +@@ -100,6 +112,11 @@ static int w25n02kv_ooblayout_free(struc return 0; } @@ -45,7 +45,7 @@ Signed-off-by: Robert Marko static const struct mtd_ooblayout_ops w25n02kv_ooblayout = { .ecc = w25n02kv_ooblayout_ecc, .free = w25n02kv_ooblayout_free, -@@ -160,6 +177,15 @@ static const struct spinand_info winbond +@@ -163,6 +180,15 @@ static const struct spinand_info winbond &update_cache_variants), 0, SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL)), diff --git a/mihomo/adapter/outbound/hysteria.go b/mihomo/adapter/outbound/hysteria.go index a7367b83bc..55c66c455b 100644 --- a/mihomo/adapter/outbound/hysteria.go +++ b/mihomo/adapter/outbound/hysteria.go @@ -131,11 +131,7 @@ func (c *HysteriaOption) Speed() (uint64, uint64, error) { } func NewHysteria(option HysteriaOption) (*Hysteria, error) { - clientTransport := &transport.ClientTransport{ - Dialer: &net.Dialer{ - Timeout: 8 * time.Second, - }, - } + clientTransport := &transport.ClientTransport{} addr := net.JoinHostPort(option.Server, strconv.Itoa(option.Port)) ports := option.Ports diff --git a/mihomo/component/http/http.go b/mihomo/component/http/http.go index 3fc06da3cb..63ea5be7bc 100644 --- a/mihomo/component/http/http.go +++ b/mihomo/component/http/http.go @@ -12,6 +12,7 @@ import ( "time" "github.com/metacubex/mihomo/component/ca" + "github.com/metacubex/mihomo/component/dialer" "github.com/metacubex/mihomo/listener/inner" ) @@ -71,8 +72,7 @@ func HttpRequestWithProxy(ctx context.Context, url, method string, header map[st if conn, err := inner.HandleTcp(address, specialProxy); err == nil { return conn, nil } else { - d := net.Dialer{} - return d.DialContext(ctx, network, address) + return dialer.DialContext(ctx, network, address) } }, TLSClientConfig: ca.GetGlobalTLSConfig(&tls.Config{}), diff --git a/mihomo/transport/hysteria/transport/client.go b/mihomo/transport/hysteria/transport/client.go index f5cc9f07ec..91876ea9f4 100644 --- a/mihomo/transport/hysteria/transport/client.go +++ b/mihomo/transport/hysteria/transport/client.go @@ -4,7 +4,6 @@ import ( "crypto/tls" "fmt" "net" - "strings" "time" "github.com/metacubex/quic-go" @@ -16,9 +15,7 @@ import ( "github.com/metacubex/mihomo/transport/hysteria/utils" ) -type ClientTransport struct { - Dialer *net.Dialer -} +type ClientTransport struct{} func (ct *ClientTransport) quicPacketConn(proto string, rAddr net.Addr, serverPorts string, obfs obfsPkg.Obfuscator, hopInterval time.Duration, dialer utils.PacketDialer) (net.PacketConn, error) { server := rAddr.String() @@ -86,23 +83,3 @@ func (ct *ClientTransport) QUICDial(proto string, server string, serverPorts str } return qs, nil } - -func (ct *ClientTransport) DialTCP(raddr *net.TCPAddr) (*net.TCPConn, error) { - conn, err := ct.Dialer.Dial("tcp", raddr.String()) - if err != nil { - return nil, err - } - return conn.(*net.TCPConn), nil -} - -func (ct *ClientTransport) ListenUDP() (*net.UDPConn, error) { - return net.ListenUDP("udp", nil) -} - -func isMultiPortAddr(addr string) bool { - _, portStr, err := net.SplitHostPort(addr) - if err == nil && (strings.Contains(portStr, ",") || strings.Contains(portStr, "-")) { - return true - } - return false -} diff --git a/nekobox-android/.github/workflows/release.yml b/nekobox-android/.github/workflows/release.yml index b6b354880a..8edda11ce7 100644 --- a/nekobox-android/.github/workflows/release.yml +++ b/nekobox-android/.github/workflows/release.yml @@ -5,9 +5,6 @@ on: tag: description: 'Release Tag' required: true - upload: - description: 'Upload: If want ignore' - required: false publish: description: 'Publish: If want ignore' required: false @@ -100,36 +97,6 @@ jobs: mkdir apks find artifacts -name "*.apk" -exec cp {} apks \; ./ghr -delete -t "${{ github.token }}" -n "${{ github.event.inputs.tag }}" "${{ github.event.inputs.tag }}" apks - upload: - name: Upload Release - if: github.event.inputs.upload != 'y' - runs-on: ubuntu-latest - needs: build - steps: - - name: Donwload Artifacts - uses: actions/download-artifact@v4 - with: - name: APKs - path: artifacts - - name: Release - run: | - mkdir apks - find artifacts -name "*.apk" -exec cp {} apks \; - - function upload() { - for apk in $@; do - echo ">> Uploading $apk" - curl https://api.telegram.org/bot${{ secrets.TELEGRAM_TOKEN }}/sendDocument \ - -X POST \ - -F chat_id="${{ secrets.TELEGRAM_CHANNEL }}" \ - -F document="@$apk" \ - --silent --show-error --fail >/dev/null & - done - for job in $(jobs -p); do - wait $job || exit 1 - done - } - upload apks/* play: name: Build Play Bundle if: github.event.inputs.play != 'y' diff --git a/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/database/DataStore.kt b/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/database/DataStore.kt index 20cf8117a9..e746cfbd1f 100644 --- a/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/database/DataStore.kt +++ b/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/database/DataStore.kt @@ -98,7 +98,7 @@ object DataStore : OnPreferenceDataStoreChangeListener { var showGroupInNotification by configurationStore.boolean("showGroupInNotification") var remoteDns by configurationStore.string(Key.REMOTE_DNS) { "https://dns.google/dns-query" } - var directDns by configurationStore.string(Key.DIRECT_DNS) { "local" } + var directDns by configurationStore.string(Key.DIRECT_DNS) { "https://120.53.53.53/dns-query" } var enableDnsRouting by configurationStore.boolean(Key.ENABLE_DNS_ROUTING) { true } var enableFakeDns by configurationStore.boolean(Key.ENABLE_FAKEDNS) diff --git a/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/fmt/ConfigBuilder.kt b/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/fmt/ConfigBuilder.kt index d7b3d973b2..8137c6d391 100644 --- a/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/fmt/ConfigBuilder.kt +++ b/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/fmt/ConfigBuilder.kt @@ -48,7 +48,6 @@ const val TAG_DNS_IN = "dns-in" const val TAG_DNS_OUT = "dns-out" const val LOCALHOST = "127.0.0.1" -const val LOCAL_DNS_SERVER = "local" class ConfigBuildResult( var config: String, @@ -697,7 +696,7 @@ fun buildConfig( }) } dns.servers.add(DNSServerOptions().apply { - address = LOCAL_DNS_SERVER + address = "local" tag = "dns-local" detour = TAG_DIRECT }) @@ -714,14 +713,8 @@ fun buildConfig( } if (forTest) { - // Always use system DNS for urlTest - dns.servers = listOf( - DNSServerOptions().apply { - address = LOCAL_DNS_SERVER - tag = "dns-local" - detour = TAG_DIRECT - } - ) + // Always use direct DNS for urlTest + dns.servers.removeAt(0) dns.rules = listOf() } else { // built-in DNS rules @@ -732,7 +725,7 @@ fun buildConfig( route.rules.add(0, Rule_DefaultOptions().apply { port = listOf(53) outbound = TAG_DNS_OUT - }) // TODO new mode use system dns? + }) if (DataStore.bypassLanInCore) { route.rules.add(Rule_DefaultOptions().apply { outbound = TAG_BYPASS diff --git a/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/fmt/v2ray/StandardV2RayBean.java b/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/fmt/v2ray/StandardV2RayBean.java index 932c38568a..bdd82c7fcf 100644 --- a/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/fmt/v2ray/StandardV2RayBean.java +++ b/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/fmt/v2ray/StandardV2RayBean.java @@ -14,7 +14,7 @@ public abstract class StandardV2RayBean extends AbstractBean { //////// End of VMess & VLESS //////// - // "V2Ray Transport" tcp/http/ws/quic/grpc/httpUpgrade + // "V2Ray Transport" tcp/http/ws/quic/grpc/httpupgrade public String type; public String host; diff --git a/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/fmt/v2ray/V2RayFmt.kt b/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/fmt/v2ray/V2RayFmt.kt index f253698a53..1007258a10 100644 --- a/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/fmt/v2ray/V2RayFmt.kt +++ b/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/fmt/v2ray/V2RayFmt.kt @@ -593,12 +593,6 @@ fun buildSingBoxOutboundStreamSettings(bean: StandardV2RayBean): V2RayTransportO } } -// if (needKeepAliveInterval) { -// sockopt = StreamSettingsObject.SockoptObject().apply { -// tcpKeepAliveInterval = keepAliveInterval -// } -// } - return null } diff --git a/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/group/RawUpdater.kt b/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/group/RawUpdater.kt index 2178ac3e0f..c1a034a238 100644 --- a/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/group/RawUpdater.kt +++ b/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/group/RawUpdater.kt @@ -286,6 +286,7 @@ object RawUpdater : GroupUpdater() { } "vmess", "vless" -> { + var isHttpUpgrade = false val isVLESS = proxy["type"].toString() == "vless" val bean = VMessBean().apply { if (isVLESS) { @@ -366,6 +367,10 @@ object RawUpdater : GroupUpdater() { "early-data-header-name" -> { bean.earlyDataHeaderName = wsOpt.value.toString() } + + "v2ray-http-upgrade" -> { + isHttpUpgrade = true + } } } @@ -411,10 +416,14 @@ object RawUpdater : GroupUpdater() { } } } + if (isHttpUpgrade) { + bean.type = "httpupgrade" + } proxies.add(bean) } "trojan" -> { + var isHttpUpgrade = false val bean = TrojanBean() bean.security = "tls" for (opt in proxy) { @@ -451,6 +460,10 @@ object RawUpdater : GroupUpdater() { "path" -> { bean.path = wsOpt.value.toString() } + + "v2ray-http-upgrade" -> { + isHttpUpgrade = true + } } } @@ -462,6 +475,9 @@ object RawUpdater : GroupUpdater() { } } } + if (isHttpUpgrade) { + bean.type = "httpupgrade" + } proxies.add(bean) } diff --git a/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/ui/LogcatFragment.kt b/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/ui/LogcatFragment.kt index d2fd8a9d44..c3626720a7 100644 --- a/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/ui/LogcatFragment.kt +++ b/nekobox-android/app/src/main/java/io/nekohasekai/sagernet/ui/LogcatFragment.kt @@ -43,13 +43,13 @@ class LogcatFragment : ToolbarFragment(R.layout.layout_logcat), private fun getColorForLine(line: String): ForegroundColorSpan { var color = ForegroundColorSpan(Color.GRAY) when { - line.contains(" INFO[") || line.contains(" [Info]") -> { + line.contains("INFO[") || line.contains(" [Info]") -> { color = ForegroundColorSpan((0xFF86C166).toInt()) } - line.contains(" ERROR[") || line.contains(" [Error]") -> { + line.contains("ERROR[") || line.contains(" [Error]") -> { color = ForegroundColorSpan(Color.RED) } - line.contains(" WARN[") || line.contains(" [Warning]") -> { + line.contains("WARN[") || line.contains(" [Warning]") -> { color = ForegroundColorSpan(Color.RED) } } diff --git a/nekobox-android/app/src/main/java/moe/matsuri/nb4a/SingBoxOptionsUtil.kt b/nekobox-android/app/src/main/java/moe/matsuri/nb4a/SingBoxOptionsUtil.kt index 7bfd41e83b..97fb814ad0 100644 --- a/nekobox-android/app/src/main/java/moe/matsuri/nb4a/SingBoxOptionsUtil.kt +++ b/nekobox-android/app/src/main/java/moe/matsuri/nb4a/SingBoxOptionsUtil.kt @@ -8,21 +8,21 @@ import moe.matsuri.nb4a.SingBoxOptions.RuleSet object SingBoxOptionsUtil { fun domainStrategy(tag: String): String { - fun auto2AsIs(key: String): String { - return (DataStore.configurationStore.getString(key) ?: "").replace("auto", "") + fun auto2(key: String, newS: String): String { + return (DataStore.configurationStore.getString(key) ?: "").replace("auto", newS) } return when (tag) { "dns-remote" -> { - auto2AsIs("domain_strategy_for_remote") + auto2("domain_strategy_for_remote", "") } "dns-direct" -> { - auto2AsIs("domain_strategy_for_direct") + auto2("domain_strategy_for_direct", "") } // server else -> { - auto2AsIs("domain_strategy_for_server") + auto2("domain_strategy_for_server", "prefer_ipv4") } } } diff --git a/nekobox-android/app/src/main/res/values/arrays.xml b/nekobox-android/app/src/main/res/values/arrays.xml index 36ccd88a1f..a5da08b33c 100644 --- a/nekobox-android/app/src/main/res/values/arrays.xml +++ b/nekobox-android/app/src/main/res/values/arrays.xml @@ -263,7 +263,7 @@ http quic grpc - + httpupgrade diff --git a/nekobox-android/app/src/main/res/xml/global_preferences.xml b/nekobox-android/app/src/main/res/xml/global_preferences.xml index 7ed6e7e298..d1f443ed28 100644 --- a/nekobox-android/app/src/main/res/xml/global_preferences.xml +++ b/nekobox-android/app/src/main/res/xml/global_preferences.xml @@ -177,7 +177,7 @@ app:title="@string/domain_strategy_for_remote" app:useSimpleSummaryProvider="true" /> ../../libneko replace github.com/sagernet/sing-box => ../../sing-box -// replace github.com/sagernet/sing-quic => ../../sing-quic +replace github.com/sagernet/sing-quic => ../../sing-quic // replace github.com/sagernet/sing => ../../sing diff --git a/nekobox-android/libcore/go.sum b/nekobox-android/libcore/go.sum index 4d1e41565d..f123c9ae87 100644 --- a/nekobox-android/libcore/go.sum +++ b/nekobox-android/libcore/go.sum @@ -65,6 +65,8 @@ github.com/libdns/libdns v0.2.2 h1:O6ws7bAfRPaBsgAYt8MDe2HcNBGC29hkZ9MX2eUSX3s= github.com/libdns/libdns v0.2.2/go.mod h1:4Bj9+5CQiNMVGf87wjX4CY3HQJypUHRuLvlsfsZqLWQ= github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8= github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= +github.com/metacubex/tfo-go v0.0.0-20240821025650-e9be0afd5e7d h1:j9LtzkYstLFoNvXW824QQeN7Y26uPL5249kzWKbzO9U= +github.com/metacubex/tfo-go v0.0.0-20240821025650-e9be0afd5e7d/go.mod h1:c7bVFM9f5+VzeZ/6Kg77T/jrg1Xp8QpqlSHvG/aXVts= github.com/mholt/acmez v1.2.0 h1:1hhLxSgY5FvH5HCnGUuwbKY2VQVo8IU7rxXKSnZ7F30= github.com/mholt/acmez v1.2.0/go.mod h1:VT9YwH1xgNX1kmYY89gY8xPJC84BFAisjo8Egigt4kE= github.com/miekg/dns v1.1.59 h1:C9EXc/UToRwKLhK5wKU/I4QVsBUc8kE6MkHBkeypWZs= @@ -93,33 +95,29 @@ github.com/sagernet/gvisor v0.0.0-20240428053021-e691de28565f h1:NkhuupzH5ch7b/Y github.com/sagernet/gvisor v0.0.0-20240428053021-e691de28565f/go.mod h1:KXmw+ouSJNOsuRpg4wgwwCQuunrGz4yoAqQjsLjc6N0= github.com/sagernet/netlink v0.0.0-20240523065131-45e60152f9ba h1:EY5AS7CCtfmARNv2zXUOrsEMPFDGYxaw65JzA2p51Vk= github.com/sagernet/netlink v0.0.0-20240523065131-45e60152f9ba/go.mod h1:xLnfdiJbSp8rNqYEdIW/6eDO4mVoogml14Bh2hSiFpM= -github.com/sagernet/quic-go v0.45.1-beta.2 h1:zkEeCbhdFFkrxKcuIRBtXNKci/1t2J/39QSG/sPvlmc= -github.com/sagernet/quic-go v0.45.1-beta.2/go.mod h1:+N3FqM9DAzOWfe64uxXuBejVJwX7DeW7BslzLO6N/xI= +github.com/sagernet/quic-go v0.47.0-beta.2 h1:1tCGWFOSaXIeuQaHrwOMJIYvlupjTcaVInGQw5ArULU= +github.com/sagernet/quic-go v0.47.0-beta.2/go.mod h1:bLVKvElSEMNv7pu7SZHscW02TYigzQ5lQu3Nh4wNh8Q= github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691 h1:5Th31OC6yj8byLGkEnIYp6grlXfo1QYUfiYFGjewIdc= github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691/go.mod h1:B8lp4WkQ1PwNnrVMM6KyuFR20pU8jYBD+A4EhJovEXU= github.com/sagernet/sing v0.2.18/go.mod h1:OL6k2F0vHmEzXz2KW19qQzu172FDgSbUSODylighuVo= -github.com/sagernet/sing v0.4.1 h1:zVlpE+7k7AFoC2pv6ReqLf0PIHjihL/jsBl5k05PQFk= -github.com/sagernet/sing v0.4.1/go.mod h1:ieZHA/+Y9YZfXs2I3WtuwgyCZ6GPsIR7HdKb1SdEnls= -github.com/sagernet/sing-dns v0.2.1-0.20240624030536-ca4a5f7afb65 h1:lcCe7E1csuyUA3RCvpFcIYOy6FIifDthKaCrUjLG4xA= -github.com/sagernet/sing-dns v0.2.1-0.20240624030536-ca4a5f7afb65/go.mod h1:dArgyPZmK8+zDBVRMjV3r12zHgnTara0ahrWwSe/eQE= +github.com/sagernet/sing v0.4.3 h1:Ty/NAiNnVd6844k7ujlL5lkzydhcTH5Psc432jXA4Y8= +github.com/sagernet/sing v0.4.3/go.mod h1:ieZHA/+Y9YZfXs2I3WtuwgyCZ6GPsIR7HdKb1SdEnls= +github.com/sagernet/sing-dns v0.2.3 h1:YzeBUn2tR38F7HtvGEQ0kLRLmZWMEgi/+7wqa4Twb1k= +github.com/sagernet/sing-dns v0.2.3/go.mod h1:BJpJv6XLnrUbSyIntOT6DG9FW0f4fETmPAHvNjOprLg= github.com/sagernet/sing-mux v0.2.0 h1:4C+vd8HztJCWNYfufvgL49xaOoOHXty2+EAjnzN3IYo= github.com/sagernet/sing-mux v0.2.0/go.mod h1:khzr9AOPocLa+g53dBplwNDz4gdsyx/YM3swtAhlkHQ= -github.com/sagernet/sing-quic v0.2.0-beta.12 h1:BhvA5mmrDFEyDUQB5eeu+9UhF+ieyuNJ5Rsb0dAG3QY= -github.com/sagernet/sing-quic v0.2.0-beta.12/go.mod h1:YVpLfVi8BvYM7NMrjmnvcRm3E8iMETf1gFQmTQDN9jI= -github.com/sagernet/sing-shadowsocks v0.2.6 h1:xr7ylAS/q1cQYS8oxKKajhuQcchd5VJJ4K4UZrrpp0s= -github.com/sagernet/sing-shadowsocks v0.2.6/go.mod h1:j2YZBIpWIuElPFL/5sJAj470bcn/3QQ5lxZUNKLDNAM= +github.com/sagernet/sing-shadowsocks v0.2.7 h1:zaopR1tbHEw5Nk6FAkM05wCslV6ahVegEZaKMv9ipx8= +github.com/sagernet/sing-shadowsocks v0.2.7/go.mod h1:0rIKJZBR65Qi0zwdKezt4s57y/Tl1ofkaq6NlkzVuyE= github.com/sagernet/sing-shadowsocks2 v0.2.0 h1:wpZNs6wKnR7mh1wV9OHwOyUr21VkS3wKFHi+8XwgADg= github.com/sagernet/sing-shadowsocks2 v0.2.0/go.mod h1:RnXS0lExcDAovvDeniJ4IKa2IuChrdipolPYWBv9hWQ= github.com/sagernet/sing-shadowtls v0.1.4 h1:aTgBSJEgnumzFenPvc+kbD9/W0PywzWevnVpEx6Tw3k= github.com/sagernet/sing-shadowtls v0.1.4/go.mod h1:F8NBgsY5YN2beQavdgdm1DPlhaKQlaL6lpDdcBglGK4= -github.com/sagernet/sing-tun v0.3.2 h1:z0bLUT/YXH9RrJS9DsIpB0Bb9afl2hVJOmHd0zA3HJY= -github.com/sagernet/sing-tun v0.3.2/go.mod h1:DxLIyhjWU/HwGYoX0vNGg2c5QgTQIakphU1MuERR5tQ= -github.com/sagernet/sing-vmess v0.1.8 h1:XVWad1RpTy9b5tPxdm5MCU8cGfrTGdR8qCq6HV2aCNc= -github.com/sagernet/sing-vmess v0.1.8/go.mod h1:vhx32UNzTDUkNwOyIjcZQohre1CaytquC5mPplId8uA= +github.com/sagernet/sing-tun v0.3.3 h1:LZnQNmfGcNG2KPTPkLgc+Lo7k606QJVkPp2DnjriwUk= +github.com/sagernet/sing-tun v0.3.3/go.mod h1:DxLIyhjWU/HwGYoX0vNGg2c5QgTQIakphU1MuERR5tQ= +github.com/sagernet/sing-vmess v0.1.12 h1:2gFD8JJb+eTFMoa8FIVMnknEi+vCSfaiTXTfEYAYAPg= +github.com/sagernet/sing-vmess v0.1.12/go.mod h1:luTSsfyBGAc9VhtCqwjR+dt1QgqBhuYBCONB/POhF8I= github.com/sagernet/smux v0.0.0-20231208180855-7041f6ea79e7 h1:DImB4lELfQhplLTxeq2z31Fpv8CQqqrUwTbrIRumZqQ= github.com/sagernet/smux v0.0.0-20231208180855-7041f6ea79e7/go.mod h1:FP9X2xjT/Az1EsG/orYYoC+5MojWnuI7hrffz8fGwwo= -github.com/sagernet/tfo-go v0.0.0-20231209031829-7b5343ac1dc6 h1:z3SJQhVyU63FT26Wn/UByW6b7q8QKB0ZkPqsyqcz2PI= -github.com/sagernet/tfo-go v0.0.0-20231209031829-7b5343ac1dc6/go.mod h1:73xRZuxwkFk4aiLw28hG8W6o9cr2UPrGL9pdY2UTbvY= github.com/sagernet/utls v1.5.4 h1:KmsEGbB2dKUtCNC+44NwAdNAqnqQ6GA4pTO0Yik56co= github.com/sagernet/utls v1.5.4/go.mod h1:CTGxPWExIloRipK3XFpYv0OVyhO8kk3XCGW/ieyTh1s= github.com/sagernet/wireguard-go v0.0.0-20231215174105-89dec3b2f3e8 h1:R0OMYAScomNAVpTfbHFpxqJpvwuhxSRi+g6z7gZhABs= @@ -168,8 +166,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -179,14 +177,14 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -204,5 +202,5 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= -lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= +lukechampine.com/blake3 v1.3.0 h1:sJ3XhFINmHSrYCgl958hscfIa3bw8x4DqMP3u1YvoYE= +lukechampine.com/blake3 v1.3.0/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= diff --git a/nekobox-android/libcore/nb4a.go b/nekobox-android/libcore/nb4a.go index 1d994b7054..b34184bb8d 100644 --- a/nekobox-android/libcore/nb4a.go +++ b/nekobox-android/libcore/nb4a.go @@ -13,6 +13,7 @@ import ( "github.com/matsuridayo/libneko/neko_common" "github.com/matsuridayo/libneko/neko_log" boxmain "github.com/sagernet/sing-box/cmd/sing-box" + "github.com/sagernet/sing-box/nekoutils" ) //go:linkname resourcePaths github.com/sagernet/sing-box/constant.resourcePaths @@ -60,7 +61,7 @@ func InitCore(process, cachePath, internalAssets, externalAssets string, boxmain.SetDisableColor(true) // nekoutils - // nekoutils.Selector_OnProxySelected = intfNB4A.Selector_OnProxySelected + nekoutils.Selector_OnProxySelected = intfNB4A.Selector_OnProxySelected // Set up some component go func() { diff --git a/nekobox-android/libcore/platform_box.go b/nekobox-android/libcore/platform_box.go index 11ae9217ac..553bbaea18 100644 --- a/nekobox-android/libcore/platform_box.go +++ b/nekobox-android/libcore/platform_box.go @@ -11,9 +11,11 @@ import ( "strings" "syscall" + "github.com/matsuridayo/libneko/neko_log" "github.com/sagernet/sing-box/adapter" "github.com/sagernet/sing-box/common/process" "github.com/sagernet/sing-box/experimental/libbox/platform" + sblog "github.com/sagernet/sing-box/log" "github.com/sagernet/sing-box/option" tun "github.com/sagernet/sing-tun" "github.com/sagernet/sing/common/control" @@ -147,3 +149,19 @@ func (w *boxPlatformInterfaceWrapper) Write(p []byte) (n int, err error) { } return len(p), nil } + +// 日志 + +type boxPlatformLogWriterWrapper struct { +} + +var boxPlatformLogWriter sblog.PlatformWriter = &boxPlatformLogWriterWrapper{} + +func (w *boxPlatformLogWriterWrapper) DisableColors() bool { return true } + +func (w *boxPlatformLogWriterWrapper) WriteMessage(level uint8, message string) { + if !strings.HasSuffix(message, "\n") { + message += "\n" + } + neko_log.LogWriter.Write([]byte(message)) +} diff --git a/nekobox-android/nb4a.properties b/nekobox-android/nb4a.properties index b28476522c..44a3b8d889 100644 --- a/nekobox-android/nb4a.properties +++ b/nekobox-android/nb4a.properties @@ -1,3 +1,3 @@ PACKAGE_NAME=moe.nb4a -VERSION_NAME=1.3.1 -VERSION_CODE=35 +VERSION_NAME=1.3.2 +VERSION_CODE=36 diff --git a/nekoray/fmt/Bean2External.cpp b/nekoray/fmt/Bean2External.cpp index caca35d4ac..a77a102a5a 100644 --- a/nekoray/fmt/Bean2External.cpp +++ b/nekoray/fmt/Bean2External.cpp @@ -50,7 +50,7 @@ namespace NekoGui_fmt { return 1; }; - if (!forceExternal && (proxy_type == proxy_TUIC || hopPort.trimmed().isEmpty())) { + if (!forceExternal) { // sing-box support return 0; } else { diff --git a/nekoray/go/cmd/nekobox_core/go.mod b/nekoray/go/cmd/nekobox_core/go.mod index 7afab52083..6af5b6212a 100644 --- a/nekoray/go/cmd/nekobox_core/go.mod +++ b/nekoray/go/cmd/nekobox_core/go.mod @@ -40,6 +40,7 @@ require ( github.com/libdns/cloudflare v0.1.1 // indirect github.com/libdns/libdns v0.2.2 // indirect github.com/logrusorgru/aurora v2.0.3+incompatible // indirect + github.com/metacubex/tfo-go v0.0.0-20240821025650-e9be0afd5e7d // indirect github.com/mholt/acmez v1.2.0 // indirect github.com/miekg/dns v1.1.59 // indirect github.com/onsi/ginkgo/v2 v2.9.7 // indirect @@ -52,19 +53,18 @@ require ( github.com/sagernet/cloudflare-tls v0.0.0-20231208171750-a4483c1b7cd1 // indirect github.com/sagernet/gvisor v0.0.0-20240428053021-e691de28565f // indirect github.com/sagernet/netlink v0.0.0-20240523065131-45e60152f9ba // indirect - github.com/sagernet/quic-go v0.45.1-beta.2 // indirect + github.com/sagernet/quic-go v0.47.0-beta.2 // indirect github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691 // indirect - github.com/sagernet/sing v0.4.1 // indirect - github.com/sagernet/sing-dns v0.2.1-0.20240624030536-ca4a5f7afb65 // indirect + github.com/sagernet/sing v0.4.3 // indirect + github.com/sagernet/sing-dns v0.2.3 // indirect github.com/sagernet/sing-mux v0.2.0 // indirect - github.com/sagernet/sing-quic v0.2.0-beta.12 // indirect - github.com/sagernet/sing-shadowsocks v0.2.6 // indirect + github.com/sagernet/sing-quic v0.2.2 // indirect + github.com/sagernet/sing-shadowsocks v0.2.7 // indirect github.com/sagernet/sing-shadowsocks2 v0.2.0 // indirect github.com/sagernet/sing-shadowtls v0.1.4 // indirect - github.com/sagernet/sing-tun v0.3.2 // indirect - github.com/sagernet/sing-vmess v0.1.8 // indirect + github.com/sagernet/sing-tun v0.3.3 // indirect + github.com/sagernet/sing-vmess v0.1.12 // indirect github.com/sagernet/smux v0.0.0-20231208180855-7041f6ea79e7 // indirect - github.com/sagernet/tfo-go v0.0.0-20231209031829-7b5343ac1dc6 // indirect github.com/sagernet/utls v1.5.4 // indirect github.com/sagernet/wireguard-go v0.0.0-20231215174105-89dec3b2f3e8 // indirect github.com/sagernet/ws v0.0.0-20231204124109-acfe8907c854 // indirect @@ -80,16 +80,16 @@ require ( golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f // indirect golang.org/x/mod v0.18.0 // indirect golang.org/x/net v0.25.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/text v0.16.0 // indirect + golang.org/x/sync v0.8.0 // indirect + golang.org/x/sys v0.25.0 // indirect + golang.org/x/text v0.18.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect golang.zx2c4.com/wireguard/wgctrl v0.0.0-20230429144221-925a1e7659e6 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/grpc v1.63.2 // indirect google.golang.org/protobuf v1.33.0 // indirect - lukechampine.com/blake3 v1.2.1 // indirect + lukechampine.com/blake3 v1.3.0 // indirect ) replace grpc_server => ../../grpc_server @@ -98,7 +98,7 @@ replace github.com/matsuridayo/libneko => ../../../../libneko replace github.com/sagernet/sing-box => ../../../../sing-box -// replace github.com/sagernet/sing-quic => ../../../../sing-quic +replace github.com/sagernet/sing-quic => ../../../../sing-quic // replace github.com/sagernet/sing => ../../../../sing diff --git a/nekoray/go/cmd/nekobox_core/go.sum b/nekoray/go/cmd/nekobox_core/go.sum index 0c1f7692ec..4f99f256d7 100644 --- a/nekoray/go/cmd/nekobox_core/go.sum +++ b/nekoray/go/cmd/nekobox_core/go.sum @@ -94,6 +94,8 @@ github.com/libdns/libdns v0.2.2 h1:O6ws7bAfRPaBsgAYt8MDe2HcNBGC29hkZ9MX2eUSX3s= github.com/libdns/libdns v0.2.2/go.mod h1:4Bj9+5CQiNMVGf87wjX4CY3HQJypUHRuLvlsfsZqLWQ= github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8= github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= +github.com/metacubex/tfo-go v0.0.0-20240821025650-e9be0afd5e7d h1:j9LtzkYstLFoNvXW824QQeN7Y26uPL5249kzWKbzO9U= +github.com/metacubex/tfo-go v0.0.0-20240821025650-e9be0afd5e7d/go.mod h1:c7bVFM9f5+VzeZ/6Kg77T/jrg1Xp8QpqlSHvG/aXVts= github.com/mholt/acmez v1.2.0 h1:1hhLxSgY5FvH5HCnGUuwbKY2VQVo8IU7rxXKSnZ7F30= github.com/mholt/acmez v1.2.0/go.mod h1:VT9YwH1xgNX1kmYY89gY8xPJC84BFAisjo8Egigt4kE= github.com/miekg/dns v1.1.59 h1:C9EXc/UToRwKLhK5wKU/I4QVsBUc8kE6MkHBkeypWZs= @@ -125,33 +127,29 @@ github.com/sagernet/gvisor v0.0.0-20240428053021-e691de28565f h1:NkhuupzH5ch7b/Y github.com/sagernet/gvisor v0.0.0-20240428053021-e691de28565f/go.mod h1:KXmw+ouSJNOsuRpg4wgwwCQuunrGz4yoAqQjsLjc6N0= github.com/sagernet/netlink v0.0.0-20240523065131-45e60152f9ba h1:EY5AS7CCtfmARNv2zXUOrsEMPFDGYxaw65JzA2p51Vk= github.com/sagernet/netlink v0.0.0-20240523065131-45e60152f9ba/go.mod h1:xLnfdiJbSp8rNqYEdIW/6eDO4mVoogml14Bh2hSiFpM= -github.com/sagernet/quic-go v0.45.1-beta.2 h1:zkEeCbhdFFkrxKcuIRBtXNKci/1t2J/39QSG/sPvlmc= -github.com/sagernet/quic-go v0.45.1-beta.2/go.mod h1:+N3FqM9DAzOWfe64uxXuBejVJwX7DeW7BslzLO6N/xI= +github.com/sagernet/quic-go v0.47.0-beta.2 h1:1tCGWFOSaXIeuQaHrwOMJIYvlupjTcaVInGQw5ArULU= +github.com/sagernet/quic-go v0.47.0-beta.2/go.mod h1:bLVKvElSEMNv7pu7SZHscW02TYigzQ5lQu3Nh4wNh8Q= github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691 h1:5Th31OC6yj8byLGkEnIYp6grlXfo1QYUfiYFGjewIdc= github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691/go.mod h1:B8lp4WkQ1PwNnrVMM6KyuFR20pU8jYBD+A4EhJovEXU= github.com/sagernet/sing v0.2.18/go.mod h1:OL6k2F0vHmEzXz2KW19qQzu172FDgSbUSODylighuVo= -github.com/sagernet/sing v0.4.1 h1:zVlpE+7k7AFoC2pv6ReqLf0PIHjihL/jsBl5k05PQFk= -github.com/sagernet/sing v0.4.1/go.mod h1:ieZHA/+Y9YZfXs2I3WtuwgyCZ6GPsIR7HdKb1SdEnls= -github.com/sagernet/sing-dns v0.2.1-0.20240624030536-ca4a5f7afb65 h1:lcCe7E1csuyUA3RCvpFcIYOy6FIifDthKaCrUjLG4xA= -github.com/sagernet/sing-dns v0.2.1-0.20240624030536-ca4a5f7afb65/go.mod h1:dArgyPZmK8+zDBVRMjV3r12zHgnTara0ahrWwSe/eQE= +github.com/sagernet/sing v0.4.3 h1:Ty/NAiNnVd6844k7ujlL5lkzydhcTH5Psc432jXA4Y8= +github.com/sagernet/sing v0.4.3/go.mod h1:ieZHA/+Y9YZfXs2I3WtuwgyCZ6GPsIR7HdKb1SdEnls= +github.com/sagernet/sing-dns v0.2.3 h1:YzeBUn2tR38F7HtvGEQ0kLRLmZWMEgi/+7wqa4Twb1k= +github.com/sagernet/sing-dns v0.2.3/go.mod h1:BJpJv6XLnrUbSyIntOT6DG9FW0f4fETmPAHvNjOprLg= github.com/sagernet/sing-mux v0.2.0 h1:4C+vd8HztJCWNYfufvgL49xaOoOHXty2+EAjnzN3IYo= github.com/sagernet/sing-mux v0.2.0/go.mod h1:khzr9AOPocLa+g53dBplwNDz4gdsyx/YM3swtAhlkHQ= -github.com/sagernet/sing-quic v0.2.0-beta.12 h1:BhvA5mmrDFEyDUQB5eeu+9UhF+ieyuNJ5Rsb0dAG3QY= -github.com/sagernet/sing-quic v0.2.0-beta.12/go.mod h1:YVpLfVi8BvYM7NMrjmnvcRm3E8iMETf1gFQmTQDN9jI= -github.com/sagernet/sing-shadowsocks v0.2.6 h1:xr7ylAS/q1cQYS8oxKKajhuQcchd5VJJ4K4UZrrpp0s= -github.com/sagernet/sing-shadowsocks v0.2.6/go.mod h1:j2YZBIpWIuElPFL/5sJAj470bcn/3QQ5lxZUNKLDNAM= +github.com/sagernet/sing-shadowsocks v0.2.7 h1:zaopR1tbHEw5Nk6FAkM05wCslV6ahVegEZaKMv9ipx8= +github.com/sagernet/sing-shadowsocks v0.2.7/go.mod h1:0rIKJZBR65Qi0zwdKezt4s57y/Tl1ofkaq6NlkzVuyE= github.com/sagernet/sing-shadowsocks2 v0.2.0 h1:wpZNs6wKnR7mh1wV9OHwOyUr21VkS3wKFHi+8XwgADg= github.com/sagernet/sing-shadowsocks2 v0.2.0/go.mod h1:RnXS0lExcDAovvDeniJ4IKa2IuChrdipolPYWBv9hWQ= github.com/sagernet/sing-shadowtls v0.1.4 h1:aTgBSJEgnumzFenPvc+kbD9/W0PywzWevnVpEx6Tw3k= github.com/sagernet/sing-shadowtls v0.1.4/go.mod h1:F8NBgsY5YN2beQavdgdm1DPlhaKQlaL6lpDdcBglGK4= -github.com/sagernet/sing-tun v0.3.2 h1:z0bLUT/YXH9RrJS9DsIpB0Bb9afl2hVJOmHd0zA3HJY= -github.com/sagernet/sing-tun v0.3.2/go.mod h1:DxLIyhjWU/HwGYoX0vNGg2c5QgTQIakphU1MuERR5tQ= -github.com/sagernet/sing-vmess v0.1.8 h1:XVWad1RpTy9b5tPxdm5MCU8cGfrTGdR8qCq6HV2aCNc= -github.com/sagernet/sing-vmess v0.1.8/go.mod h1:vhx32UNzTDUkNwOyIjcZQohre1CaytquC5mPplId8uA= +github.com/sagernet/sing-tun v0.3.3 h1:LZnQNmfGcNG2KPTPkLgc+Lo7k606QJVkPp2DnjriwUk= +github.com/sagernet/sing-tun v0.3.3/go.mod h1:DxLIyhjWU/HwGYoX0vNGg2c5QgTQIakphU1MuERR5tQ= +github.com/sagernet/sing-vmess v0.1.12 h1:2gFD8JJb+eTFMoa8FIVMnknEi+vCSfaiTXTfEYAYAPg= +github.com/sagernet/sing-vmess v0.1.12/go.mod h1:luTSsfyBGAc9VhtCqwjR+dt1QgqBhuYBCONB/POhF8I= github.com/sagernet/smux v0.0.0-20231208180855-7041f6ea79e7 h1:DImB4lELfQhplLTxeq2z31Fpv8CQqqrUwTbrIRumZqQ= github.com/sagernet/smux v0.0.0-20231208180855-7041f6ea79e7/go.mod h1:FP9X2xjT/Az1EsG/orYYoC+5MojWnuI7hrffz8fGwwo= -github.com/sagernet/tfo-go v0.0.0-20231209031829-7b5343ac1dc6 h1:z3SJQhVyU63FT26Wn/UByW6b7q8QKB0ZkPqsyqcz2PI= -github.com/sagernet/tfo-go v0.0.0-20231209031829-7b5343ac1dc6/go.mod h1:73xRZuxwkFk4aiLw28hG8W6o9cr2UPrGL9pdY2UTbvY= github.com/sagernet/utls v1.5.4 h1:KmsEGbB2dKUtCNC+44NwAdNAqnqQ6GA4pTO0Yik56co= github.com/sagernet/utls v1.5.4/go.mod h1:CTGxPWExIloRipK3XFpYv0OVyhO8kk3XCGW/ieyTh1s= github.com/sagernet/wireguard-go v0.0.0-20231215174105-89dec3b2f3e8 h1:R0OMYAScomNAVpTfbHFpxqJpvwuhxSRi+g6z7gZhABs= @@ -229,8 +227,8 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -245,15 +243,15 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -296,5 +294,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= -lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= +lukechampine.com/blake3 v1.3.0 h1:sJ3XhFINmHSrYCgl958hscfIa3bw8x4DqMP3u1YvoYE= +lukechampine.com/blake3 v1.3.0/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= diff --git a/nekoray/libs/get_source.sh b/nekoray/libs/get_source.sh index 9564bd615f..b416bd7d02 100755 --- a/nekoray/libs/get_source.sh +++ b/nekoray/libs/get_source.sh @@ -18,6 +18,16 @@ popd #### +if [ ! -d "sing-quic" ]; then + git clone --no-checkout https://github.com/MatsuriDayo/sing-quic.git +fi +pushd sing-quic +git checkout "$COMMIT_SING_QUIC" + +popd + +#### + if [ ! -d "libneko" ]; then git clone --no-checkout https://github.com/MatsuriDayo/libneko.git fi diff --git a/nekoray/libs/get_source_env.sh b/nekoray/libs/get_source_env.sh index 3ccd4a1fa8..1f35b7a811 100644 --- a/nekoray/libs/get_source_env.sh +++ b/nekoray/libs/get_source_env.sh @@ -1,2 +1,3 @@ -export COMMIT_SING_BOX="cf36758f11b7c144e1211801753cc91f06ff2906" +export COMMIT_SING_BOX="06557f6cef23160668122a17a818b378b5a216b5" +export COMMIT_SING_QUIC="b49ce60d9b3622d5238fee96bfd3c5f6e3915b42" export COMMIT_LIBNEKO="1c47a3af71990a7b2192e03292b4d246c308ef0b" diff --git a/nekoray/nekoray_version.txt b/nekoray/nekoray_version.txt index eabe8a6cf3..f667d02832 100644 --- a/nekoray/nekoray_version.txt +++ b/nekoray/nekoray_version.txt @@ -1 +1 @@ -4.0-beta3-2024-07-13 +4.0-beta4-2024-10-09 diff --git a/nekoray/translations/fa_IR.ts b/nekoray/translations/fa_IR.ts index d6562f5751..9fc28a357c 100644 --- a/nekoray/translations/fa_IR.ts +++ b/nekoray/translations/fa_IR.ts @@ -1492,6 +1492,10 @@ End: %2 Stop Testing + + URL Test + + ProxyItem @@ -1632,6 +1636,10 @@ Direct: %2 Default پیش فرض + + The last speed test did not exit completely, please wait. If it persists, please restart the program. + + Qv2ray::ui::widgets::AutoCompleteTextEdit diff --git a/nekoray/translations/ru_RU.ts b/nekoray/translations/ru_RU.ts index 880f57a5d1..7abdd8638b 100644 --- a/nekoray/translations/ru_RU.ts +++ b/nekoray/translations/ru_RU.ts @@ -1498,6 +1498,10 @@ End: %2 Stop Testing + + URL Test + + ProxyItem @@ -1645,6 +1649,10 @@ Release note: Default По умолчанию + + The last speed test did not exit completely, please wait. If it persists, please restart the program. + + Qv2ray::ui::widgets::AutoCompleteTextEdit diff --git a/nekoray/translations/zh_CN.ts b/nekoray/translations/zh_CN.ts index 213c6df696..8a9f13ab74 100644 --- a/nekoray/translations/zh_CN.ts +++ b/nekoray/translations/zh_CN.ts @@ -1488,7 +1488,7 @@ Split by line. In and Out IP - 入口出口IP + 入口出口 IP Test Options @@ -1498,6 +1498,10 @@ Split by line. Stop Testing 停止测试 + + URL Test + URL 测试 + ProxyItem @@ -1645,6 +1649,10 @@ Release note: Default 默认 + + The last speed test did not exit completely, please wait. If it persists, please restart the program. + 上次速度测试未完全退出,请等待。如果问题仍然存在,请重新启动程序。 + Qv2ray::ui::widgets::AutoCompleteTextEdit diff --git a/nekoray/ui/mainwindow.cpp b/nekoray/ui/mainwindow.cpp index d7ed7c4754..920fe143d6 100644 --- a/nekoray/ui/mainwindow.cpp +++ b/nekoray/ui/mainwindow.cpp @@ -103,6 +103,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi connect(ui->toolButton_document, &QToolButton::clicked, this, [=] { QDesktopServices::openUrl(QUrl("https://matsuridayo.github.io/")); }); connect(ui->toolButton_ads, &QToolButton::clicked, this, [=] { QDesktopServices::openUrl(QUrl("https://matsuricom.pages.dev/")); }); connect(ui->toolButton_update, &QToolButton::clicked, this, [=] { runOnNewThread([=] { CheckUpdate(); }); }); + connect(ui->toolButton_url_test, &QToolButton::clicked, this, [=] { speedtest_current_group(1, true); }); // Setup log UI ui->splitter->restoreState(DecodeB64IfValid(NekoGui::dataStore->splitter_state)); @@ -333,10 +334,10 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi neko_set_spmode_vpn(false); }); connect(ui->menu_qr, &QAction::triggered, this, [=]() { display_qr_link(false); }); - connect(ui->menu_tcp_ping, &QAction::triggered, this, [=]() { speedtest_current_group(0); }); - connect(ui->menu_url_test, &QAction::triggered, this, [=]() { speedtest_current_group(1); }); - connect(ui->menu_full_test, &QAction::triggered, this, [=]() { speedtest_current_group(2); }); - connect(ui->menu_stop_testing, &QAction::triggered, this, [=]() { speedtest_current_group(114514); }); + connect(ui->menu_tcp_ping, &QAction::triggered, this, [=]() { speedtest_current_group(0, false); }); + connect(ui->menu_url_test, &QAction::triggered, this, [=]() { speedtest_current_group(1, false); }); + connect(ui->menu_full_test, &QAction::triggered, this, [=]() { speedtest_current_group(2, false); }); + connect(ui->menu_stop_testing, &QAction::triggered, this, [=]() { speedtest_current_group(114514, false); }); // auto set_selected_or_group = [=](int mode) { // 0=group 1=select 2=unknown(menu is hide) diff --git a/nekoray/ui/mainwindow.h b/nekoray/ui/mainwindow.h index 9f95c4df02..5ca492d51a 100644 --- a/nekoray/ui/mainwindow.h +++ b/nekoray/ui/mainwindow.h @@ -185,7 +185,7 @@ private: static void setup_grpc(); - void speedtest_current_group(int mode); + void speedtest_current_group(int mode, bool test_group); void speedtest_current(); diff --git a/nekoray/ui/mainwindow.ui b/nekoray/ui/mainwindow.ui index 86189658e9..585577a139 100644 --- a/nekoray/ui/mainwindow.ui +++ b/nekoray/ui/mainwindow.ui @@ -205,6 +205,19 @@ + + + + URL Test + + + QToolButton::InstantPopup + + + Qt::ToolButtonTextUnderIcon + + + @@ -665,7 +678,7 @@ Tcp Ping - Ctrl+Shift+T + Ctrl+Alt+T @@ -673,7 +686,7 @@ Url Test - Ctrl+Shift+U + Ctrl+Alt+U @@ -681,7 +694,7 @@ Clear Test Result - Ctrl+Shift+C + Ctrl+Alt+C @@ -726,7 +739,7 @@ Remove Duplicates - Ctrl+Shift+D + Ctrl+Alt+D @@ -774,7 +787,7 @@ Remove Unavailable - Ctrl+Shift+R + Ctrl+Alt+R @@ -782,7 +795,7 @@ Full Test - Ctrl+Shift+F + Ctrl+Alt+F @@ -803,7 +816,7 @@ Copy links of selected (Neko Links) - Ctrl+Alt+C + Ctrl+N @@ -859,7 +872,7 @@ Resolve domain - Ctrl+Shift+I + Ctrl+Alt+I @@ -902,6 +915,9 @@ Stop Testing + + Ctrl+Alt+S + diff --git a/nekoray/ui/mainwindow_grpc.cpp b/nekoray/ui/mainwindow_grpc.cpp index 923cc5a9ad..3e9f46999e 100644 --- a/nekoray/ui/mainwindow_grpc.cpp +++ b/nekoray/ui/mainwindow_grpc.cpp @@ -58,8 +58,14 @@ void MainWindow::setup_grpc() { inline bool speedtesting = false; inline QList speedtesting_threads = {}; -void MainWindow::speedtest_current_group(int mode) { +void MainWindow::speedtest_current_group(int mode, bool test_group) { + if (speedtesting) { + MessageBoxWarning(software_name, QObject::tr("The last speed test did not exit completely, please wait. If it persists, please restart the program.")); + return; + } + auto profiles = get_selected_or_group(); + if (test_group) profiles = NekoGui::profileManager->CurrentGroup()->ProfilesWithOrder(); if (profiles.isEmpty()) return; auto group = NekoGui::profileManager->CurrentGroup(); if (group->archive) return; @@ -75,11 +81,6 @@ void MainWindow::speedtest_current_group(int mode) { } #ifndef NKR_NO_GRPC - if (speedtesting) { - MessageBoxWarning(software_name, "The last speed test did not exit completely, please wait. If it persists, please restart the program."); - return; - } - QStringList full_test_flags; if (mode == libcore::FullTest) { auto w = new QDialog(this); diff --git a/openwrt-packages/luci-app-ddns-go/luasrc/controller/ddns-go.lua b/openwrt-packages/luci-app-ddns-go/luasrc/controller/ddns-go.lua index 152c1ca0dc..9dae766746 100644 --- a/openwrt-packages/luci-app-ddns-go/luasrc/controller/ddns-go.lua +++ b/openwrt-packages/luci-app-ddns-go/luasrc/controller/ddns-go.lua @@ -12,8 +12,11 @@ function index() e.dependent=false e.acl_depends={ "luci-app-ddns-go" } entry({"admin", "services", "ddns-go", "setting"}, cbi("ddns-go"), _("Base Setting"), 20).leaf=true - entry({"admin", "services", "ddns-go", "ddns-go"}, template("ddns-go"), _("DDNS-GO Control panel"), 30).leaf = true + entry({"admin", "services", "ddns-go", "ddns-go"}, template("ddns-go/ddns-go"), _("DDNS-GO Control panel"), 30).leaf = true entry({"admin", "services", "ddnsgo_status"}, call("act_status")) + entry({"admin", "services", "ddns-go", "log"}, template("ddns-go/ddns-go_log"), _("Log"), 40).leaf = true + entry({"admin", "services", "ddns-go", "fetch_log"}, call("fetch_log"), nil).leaf = true + entry({"admin", "services", "ddns-go", "clear_log"}, call("clear_log")).leaf = true end function act_status() @@ -23,3 +26,20 @@ function act_status() luci.http.prepare_content("application/json") luci.http.write_json(e) end +function fetch_log() + local fs = require "nixio.fs" + local log_file = "/var/log/ddns-go.log" + local log_content = fs.readfile(log_file) or "No Log." + luci.http.write(log_content) +end +function clear_log() + local fs = require "nixio.fs" + local log_file = "/var/log/ddns-go.log" + local f = io.open(log_file, "w") + if f then + f:close() + luci.http.status(204, "No Content") + else + luci.http.status(500, "Internal Server Error") + end +end diff --git a/openwrt-packages/luci-app-ddns-go/luasrc/model/cbi/ddns-go.lua b/openwrt-packages/luci-app-ddns-go/luasrc/model/cbi/ddns-go.lua index 8c8e29c149..37c417a7b9 100644 --- a/openwrt-packages/luci-app-ddns-go/luasrc/model/cbi/ddns-go.lua +++ b/openwrt-packages/luci-app-ddns-go/luasrc/model/cbi/ddns-go.lua @@ -6,7 +6,7 @@ m = Map("ddns-go") m.title = translate("DDNS-GO") m.description = translate("DDNS-GO automatically obtains your public IPv4 or IPv6 address and resolves it to the corresponding domain name service.")..translate("
For specific usage, see:")..translate("GitHub @sirpdboy/luci-app-ddns-go ") -m:section(SimpleSection).template = "ddns-go_status" +m:section(SimpleSection).template = "ddns-go/ddns-go_status" s = m:section(TypedSection, "basic", translate("Global Settings")) s.addremove = false diff --git a/openwrt-packages/luci-app-ddns-go/luasrc/view/ddns-go.htm b/openwrt-packages/luci-app-ddns-go/luasrc/view/ddns-go/ddns-go.htm similarity index 100% rename from openwrt-packages/luci-app-ddns-go/luasrc/view/ddns-go.htm rename to openwrt-packages/luci-app-ddns-go/luasrc/view/ddns-go/ddns-go.htm diff --git a/openwrt-packages/luci-app-ddns-go/luasrc/view/ddns-go/ddns-go_log.htm b/openwrt-packages/luci-app-ddns-go/luasrc/view/ddns-go/ddns-go_log.htm new file mode 100644 index 0000000000..62a27e211d --- /dev/null +++ b/openwrt-packages/luci-app-ddns-go/luasrc/view/ddns-go/ddns-go_log.htm @@ -0,0 +1,90 @@ +<%+header%> +
+ + +
+
+<%
+local fs = require "nixio.fs"
+local log_file_path = "/var/log/ddns-go.log"
+local raw_log_content = fs.readfile(log_file_path) or "No Log."
+local log_lines = {}
+for line in raw_log_content:gmatch("[^\r\n]+") do
+    table.insert(log_lines, line)
+end
+for i=1, math.floor(#log_lines / 2) do
+    log_lines[i], log_lines[#log_lines - i + 1] = log_lines[#log_lines - i + 1], log_lines[i]
+end
+local log_content = table.concat(log_lines, "\n")
+%>
+<%=log_content%>
+
+ <%+footer%> + + \ No newline at end of file diff --git a/openwrt-packages/luci-app-ddns-go/luasrc/view/ddns-go_status.htm b/openwrt-packages/luci-app-ddns-go/luasrc/view/ddns-go/ddns-go_status.htm similarity index 100% rename from openwrt-packages/luci-app-ddns-go/luasrc/view/ddns-go_status.htm rename to openwrt-packages/luci-app-ddns-go/luasrc/view/ddns-go/ddns-go_status.htm diff --git a/openwrt-packages/luci-app-ddns-go/po/zh-cn/ddns-go.po b/openwrt-packages/luci-app-ddns-go/po/zh-cn/ddns-go.po index b94df01253..74ac3fd3f8 100644 --- a/openwrt-packages/luci-app-ddns-go/po/zh-cn/ddns-go.po +++ b/openwrt-packages/luci-app-ddns-go/po/zh-cn/ddns-go.po @@ -16,6 +16,9 @@ msgstr "运行状态" msgid "DDNS-GO Control panel" msgstr "DDNS-GO操作台" +msgid "Log" +msgstr "日志" + msgid "The DDNS-GO service is running." msgstr "DDNS-GO服务已启动" diff --git a/openwrt-packages/luci-app-ddns-go/po/zh_Hans/ddns-go.po b/openwrt-packages/luci-app-ddns-go/po/zh_Hans/ddns-go.po index b94df01253..74ac3fd3f8 100644 --- a/openwrt-packages/luci-app-ddns-go/po/zh_Hans/ddns-go.po +++ b/openwrt-packages/luci-app-ddns-go/po/zh_Hans/ddns-go.po @@ -16,6 +16,9 @@ msgstr "运行状态" msgid "DDNS-GO Control panel" msgstr "DDNS-GO操作台" +msgid "Log" +msgstr "日志" + msgid "The DDNS-GO service is running." msgstr "DDNS-GO服务已启动" diff --git a/openwrt-passwall/luci-app-passwall/luasrc/passwall/util_xray.lua b/openwrt-passwall/luci-app-passwall/luasrc/passwall/util_xray.lua index ae54ba0b63..4a2ef63e06 100644 --- a/openwrt-passwall/luci-app-passwall/luasrc/passwall/util_xray.lua +++ b/openwrt-passwall/luci-app-passwall/luasrc/passwall/util_xray.lua @@ -885,7 +885,11 @@ function gen_config(var) local outbound_tag if outbound then set_outbound_detour(_node, outbound, outbounds, rule_name) - table.insert(outbounds, outbound) + if rule_name == "default" then + table.insert(outbounds, 1, outbound) + else + table.insert(outbounds, outbound) + end outbound_tag = outbound.tag end return outbound_tag, nil @@ -1022,6 +1026,7 @@ function gen_config(var) end end) + --[[ if default_outbound_tag or default_balancer_tag then table.insert(rules, { type = "field", @@ -1030,6 +1035,7 @@ function gen_config(var) network = "tcp,udp" }) end + ]]-- routing = { domainStrategy = node.domainStrategy or "AsIs", diff --git a/small/luci-app-passwall/luasrc/passwall/util_xray.lua b/small/luci-app-passwall/luasrc/passwall/util_xray.lua index fa11fe37f5..4a2ef63e06 100644 --- a/small/luci-app-passwall/luasrc/passwall/util_xray.lua +++ b/small/luci-app-passwall/luasrc/passwall/util_xray.lua @@ -885,7 +885,11 @@ function gen_config(var) local outbound_tag if outbound then set_outbound_detour(_node, outbound, outbounds, rule_name) - table.insert(outbounds, outbound) + if rule_name == "default" then + table.insert(outbounds, 1, outbound) + else + table.insert(outbounds, outbound) + end outbound_tag = outbound.tag end return outbound_tag, nil diff --git a/small/mihomo/Makefile b/small/mihomo/Makefile index f00854ccac..a3e45bc989 100644 --- a/small/mihomo/Makefile +++ b/small/mihomo/Makefile @@ -5,9 +5,9 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/MetaCubeX/mihomo.git -PKG_SOURCE_DATE:=2024-10-07 -PKG_SOURCE_VERSION:=9fd63fe93803c89243452f9b033625bd22f75282 -PKG_MIRROR_HASH:=a13d8359ed364cd00337c631d3f6a10910a251c2d63990d43c01476c4f938c8d +PKG_SOURCE_DATE:=2024-10-08 +PKG_SOURCE_VERSION:=08dcef80bf9a528d36cf8d516cc251f6449f9336 +PKG_MIRROR_HASH:=803fd00529f3bb01617cc6349343858f73b2c6b4d533e8d76434941af7908395 PKG_LICENSE:=MIT PKG_MAINTAINER:=Joseph Mory @@ -16,7 +16,7 @@ PKG_BUILD_DEPENDS:=golang/host PKG_BUILD_PARALLEL:=1 PKG_BUILD_FLAGS:=no-mips16 -PKG_BUILD_VERSION:=alpha-9fd63fe +PKG_BUILD_VERSION:=alpha-08dcef8 PKG_BUILD_TIME:=$(shell date -u -Iseconds) GO_PKG:=github.com/metacubex/mihomo diff --git a/small/v2ray-geodata/Makefile b/small/v2ray-geodata/Makefile index e9f583a922..1dffd24b4f 100644 --- a/small/v2ray-geodata/Makefile +++ b/small/v2ray-geodata/Makefile @@ -12,13 +12,13 @@ PKG_MAINTAINER:=Tianling Shen include $(INCLUDE_DIR)/package.mk -GEOIP_VER:=202410030052 +GEOIP_VER:=202410090012 GEOIP_FILE:=geoip.dat.$(GEOIP_VER) define Download/geoip URL:=https://github.com/v2fly/geoip/releases/download/$(GEOIP_VER)/ URL_FILE:=geoip.dat FILE:=$(GEOIP_FILE) - HASH:=061c2116e650932c8058b663c14cd03be2241c6048bba6a2765ee1ea38481bff + HASH:=384c0143e551dae3022b78d9e42e7d3c9c9df428710467598c258312333c88ff endef GEOSITE_VER:=20241007202930 diff --git a/v2rayn/v2rayN/v2rayUpgrade/v2rayUpgrade.csproj b/v2rayn/v2rayN/AmazTool/AmazTool.csproj similarity index 100% rename from v2rayn/v2rayN/v2rayUpgrade/v2rayUpgrade.csproj rename to v2rayn/v2rayN/AmazTool/AmazTool.csproj diff --git a/v2rayn/v2rayN/v2rayUpgrade/Program.cs b/v2rayn/v2rayN/AmazTool/Program.cs similarity index 88% rename from v2rayn/v2rayN/v2rayUpgrade/Program.cs rename to v2rayn/v2rayN/AmazTool/Program.cs index 8b9dfe4cbe..3f61464ba1 100644 --- a/v2rayn/v2rayN/v2rayUpgrade/Program.cs +++ b/v2rayn/v2rayN/AmazTool/Program.cs @@ -1,4 +1,4 @@ -namespace v2rayUpgrade +namespace AmazTool { internal static class Program { @@ -16,7 +16,7 @@ } var fileName = Uri.UnescapeDataString(string.Join(" ", args)); - Upgrade.UpgradeApp(fileName); + UpgradeApp.Upgrade(fileName); } } } \ No newline at end of file diff --git a/v2rayn/v2rayN/v2rayUpgrade/Upgrade.cs b/v2rayn/v2rayN/AmazTool/UpgradeApp.cs similarity index 95% rename from v2rayn/v2rayN/v2rayUpgrade/Upgrade.cs rename to v2rayn/v2rayN/AmazTool/UpgradeApp.cs index ef627f1044..c5189a3310 100644 --- a/v2rayn/v2rayN/v2rayUpgrade/Upgrade.cs +++ b/v2rayn/v2rayN/AmazTool/UpgradeApp.cs @@ -3,11 +3,11 @@ using System.IO.Compression; using System.Runtime.InteropServices; using System.Text; -namespace v2rayUpgrade +namespace AmazTool { - internal class Upgrade + internal class UpgradeApp { - public static void UpgradeApp(string fileName) + public static void Upgrade(string fileName) { Console.WriteLine(fileName); Console.WriteLine("In progress, please wait...(正在进行中,请等待)"); @@ -105,7 +105,7 @@ namespace v2rayUpgrade private static string GetExePath() { - return Environment.ProcessPath ?? string.Empty; + return Environment.ProcessPath ?? Process.GetCurrentProcess().MainModule?.FileName ?? string.Empty; } private static string StartupPath() diff --git a/v2rayn/v2rayN/ServiceLib/Common/Utils.cs b/v2rayn/v2rayN/ServiceLib/Common/Utils.cs index 3414a0e08b..d3dc3f6998 100644 --- a/v2rayn/v2rayN/ServiceLib/Common/Utils.cs +++ b/v2rayn/v2rayN/ServiceLib/Common/Utils.cs @@ -750,7 +750,7 @@ namespace ServiceLib.Common /// public static string GetExePath() { - return Environment.ProcessPath ?? string.Empty; + return Environment.ProcessPath ?? Process.GetCurrentProcess().MainModule?.FileName ?? string.Empty; } public static string StartupPath() diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/BackupAndRestoreViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/BackupAndRestoreViewModel.cs index defeb603bf..09569c40f9 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/BackupAndRestoreViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/BackupAndRestoreViewModel.cs @@ -137,7 +137,7 @@ namespace ServiceLib.ViewModels var result = await CreateZipFileFromDirectory(fileBackup); if (result) { - Locator.Current.GetService()?.V2rayUpgrade(fileName); + Locator.Current.GetService()?.UpgradeApp(fileName); } else { diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs index 4fc51b1ec1..f7800ad802 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/CheckUpdateViewModel.cs @@ -235,7 +235,7 @@ namespace ServiceLib.ViewModels { return; } - Locator.Current.GetService()?.V2rayUpgrade(fileName); + Locator.Current.GetService()?.UpgradeApp(fileName); } catch (Exception ex) { diff --git a/v2rayn/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs b/v2rayn/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs index 63d473411d..91e830ede3 100644 --- a/v2rayn/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs +++ b/v2rayn/v2rayN/ServiceLib/ViewModels/MainWindowViewModel.cs @@ -437,13 +437,13 @@ namespace ServiceLib.ViewModels } } - public async Task V2rayUpgrade(string fileName) + public async Task UpgradeApp(string fileName) { Process process = new() { StartInfo = new ProcessStartInfo { - FileName = "v2rayUpgrade", + FileName = "AmazTool", Arguments = fileName.AppendQuotes(), WorkingDirectory = Utils.StartupPath() } diff --git a/v2rayn/v2rayN/build.ps1 b/v2rayn/v2rayN/build.ps1 index b82d1d17e6..dd94598a60 100644 --- a/v2rayn/v2rayN/build.ps1 +++ b/v2rayn/v2rayN/build.ps1 @@ -11,15 +11,15 @@ dotnet publish ` .\v2rayN\v2rayN.csproj ` -c Release ` --self-contained false ` - -p:PublishReadyToRun=true ` + -p:PublishReadyToRun=false ` -p:PublishSingleFile=true ` -o $OutputPath dotnet publish ` - .\v2rayUpgrade\v2rayUpgrade.csproj ` + .\AmazTool\AmazTool.csproj ` -c Release ` --self-contained false ` - -p:PublishReadyToRun=true ` + -p:PublishReadyToRun=false ` -p:PublishSingleFile=true ` -o $OutputPath diff --git a/v2rayn/v2rayN/v2rayN.sln b/v2rayn/v2rayN/v2rayN.sln index 47689a4056..f898d47e5e 100644 --- a/v2rayn/v2rayN/v2rayN.sln +++ b/v2rayn/v2rayN/v2rayN.sln @@ -13,7 +13,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ServiceLib", "ServiceLib\Se EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "v2rayN.Desktop", "v2rayN.Desktop\v2rayN.Desktop.csproj", "{5D16541A-F971-4C17-9315-BB8955E3F984}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "v2rayUpgrade", "v2rayUpgrade\v2rayUpgrade.csproj", "{47D68B1C-601C-4C69-873B-FFF0DC13EC97}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AmazTool", "AmazTool\AmazTool.csproj", "{47D68B1C-601C-4C69-873B-FFF0DC13EC97}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/v2rayng/V2rayNG/app/build.gradle.kts b/v2rayng/V2rayNG/app/build.gradle.kts index 295a38c793..84fbd1a34e 100644 --- a/v2rayng/V2rayNG/app/build.gradle.kts +++ b/v2rayng/V2rayNG/app/build.gradle.kts @@ -11,8 +11,8 @@ android { applicationId = "com.v2ray.ang" minSdk = 21 targetSdk = 34 - versionCode = 600 - versionName = "1.9.6" + versionCode = 601 + versionName = "1.9.7" multiDexEnabled = true splits { abi { diff --git a/xray-core/go.mod b/xray-core/go.mod index 8f99995d5e..7f3cba9f4b 100644 --- a/xray-core/go.mod +++ b/xray-core/go.mod @@ -11,7 +11,7 @@ require ( github.com/gorilla/websocket v1.5.3 github.com/miekg/dns v1.1.62 github.com/pelletier/go-toml v1.9.5 - github.com/pires/go-proxyproto v0.7.0 + github.com/pires/go-proxyproto v0.8.0 github.com/quic-go/quic-go v0.46.0 github.com/refraction-networking/utls v1.6.7 github.com/sagernet/sing v0.4.3 @@ -22,13 +22,13 @@ require ( github.com/vishvananda/netlink v1.3.0 github.com/xtls/reality v0.0.0-20240712055506-48f0b2d5ed6d go4.org/netipx v0.0.0-20231129151722-fdeea329fbba - golang.org/x/crypto v0.27.0 - golang.org/x/net v0.29.0 + golang.org/x/crypto v0.28.0 + golang.org/x/net v0.30.0 golang.org/x/sync v0.8.0 - golang.org/x/sys v0.25.0 + golang.org/x/sys v0.26.0 golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 google.golang.org/grpc v1.67.1 - google.golang.org/protobuf v1.34.2 + google.golang.org/protobuf v1.35.1 gvisor.dev/gvisor v0.0.0-20231202080848-1f7806d17489 h12.io/socks v1.0.3 lukechampine.com/blake3 v1.3.0 @@ -51,7 +51,7 @@ require ( go.uber.org/mock v0.4.0 // indirect golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc // indirect golang.org/x/mod v0.18.0 // indirect - golang.org/x/text v0.18.0 // indirect + golang.org/x/text v0.19.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.22.0 // indirect golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect diff --git a/xray-core/go.sum b/xray-core/go.sum index 6803cbde68..8fa32abd62 100644 --- a/xray-core/go.sum +++ b/xray-core/go.sum @@ -42,8 +42,8 @@ github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3v github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= -github.com/pires/go-proxyproto v0.7.0 h1:IukmRewDQFWC7kfnb66CSomk2q/seBuilHBYFwyq0Hs= -github.com/pires/go-proxyproto v0.7.0/go.mod h1:Vz/1JPY/OACxWGQNIRY2BeyDmpoaWmEP40O9LbuiFR4= +github.com/pires/go-proxyproto v0.8.0 h1:5unRmEAPbHXHuLjDg01CxJWf91cw3lKHc/0xzKpXEe0= +github.com/pires/go-proxyproto v0.8.0/go.mod h1:iknsfgnH8EkjrMeMyvfKByp9TiBZCKZM0jx2xmKqnVY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= @@ -79,8 +79,8 @@ go4.org/netipx v0.0.0-20231129151722-fdeea329fbba h1:0b9z3AuHCjxk0x/opv64kcgZLBs go4.org/netipx v0.0.0-20231129151722-fdeea329fbba/go.mod h1:PLyyIXexvUFg3Owu6p/WfdlivPbZJsZdgWZlrGope/Y= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= -golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= +golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= +golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc h1:O9NuF4s+E/PvMIy+9IUZB9znFwUIXEWSstNjek6VpVg= golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= @@ -89,8 +89,8 @@ golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= -golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= @@ -103,14 +103,14 @@ golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= -golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= -golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -129,8 +129,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/yass/.github/workflows/releases-rpm.yml b/yass/.github/workflows/releases-rpm.yml index f0471e7693..797569c014 100644 --- a/yass/.github/workflows/releases-rpm.yml +++ b/yass/.github/workflows/releases-rpm.yml @@ -48,9 +48,13 @@ jobs: - 'fedora39' - 'alpine320' - 'i386-alpine320' + - 'armhf-alpine320' + - 'aarch64-alpine320' - 'opensuse15' runs-on: ubuntu-22.04 steps: + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 - uses: actions/checkout@v4 - name: Cache docker files (dummy) id: docker-cache @@ -190,6 +194,10 @@ jobs: arch: amd64 - container: 'i386-alpine320' arch: i386 + - container: 'aarch64-alpine320' + arch: aarch64 + - container: 'armhf-alpine320' + arch: armhf runs-on: ubuntu-20.04 needs: docker_publish steps: @@ -217,11 +225,30 @@ jobs: cache-dependency-path: | tools/go.sum third_party/boringssl/src/go.sum + - name: Cache qemu-user + id: qemu-user-cache + uses: actions/cache@v4 + with: + path: | + qemu-user*.deb + key: ${{ runner.os }}-qemu-9.1.0-ds-8 + - name: "Install dependency: qemu user cache" + if: ${{ steps.qemu-user-cache.outputs.cache-hit != 'true' }} + run: | + wget http://ftp.us.debian.org/debian/pool/main/q/qemu/qemu-user_9.1.0+ds-8_amd64.deb + - name: Populate depedencies + run: | + sudo apt-get update -qq + sudo apt-get install -y cmake ninja-build pkgconf gettext bubblewrap + # libc6-i386 interferes with x86 build + sudo apt remove libc6-i386 + + sudo dpkg -i qemu-user_*.deb - name: Populate sysroot from docker image run: | docker pull ghcr.io/chilledheart/${{ matrix.container }} mkdir -p "${{ env.SDK_ROOT }}" - docker export $(docker create ghcr.io/chilledheart/${{ matrix.container }}) | tar -C "${{ env.SDK_ROOT }}" -xf - + docker export $(docker create --platform ${{ matrix.arch }} ghcr.io/chilledheart/${{ matrix.container }}) | tar -C "${{ env.SDK_ROOT }}" -xf - - name: Build build tool run: | cd tools @@ -252,7 +279,8 @@ jobs: ./tools/build --variant cli --arch ${{ matrix.arch }} --system linux --subsystem musl --sysroot "${{ env.SDK_ROOT }}" -build-test --cmake-build-type MinSizeRel -use-static-build -nc ./tools/build --variant server --arch ${{ matrix.arch }} --system linux --subsystem musl --sysroot "${{ env.SDK_ROOT }}" -build-test --cmake-build-type MinSizeRel -use-static-build -nc ./tools/build --variant gui --arch ${{ matrix.arch }} --system linux --subsystem musl --sysroot "${{ env.SDK_ROOT }}" -build-test --cmake-build-type MinSizeRel -nc - - name: Run tests + - name: Run tests (i386 and amd64) + if: ${{ matrix.arch == 'i386' || matrix.arch == 'amd64' }} run: | bwrap --die-with-parent --bind "$SDK_ROOT" / \ --ro-bind /sys /sys \ @@ -261,6 +289,16 @@ jobs: --unshare-all --share-net \ --bind $PWD/build-linux-musl-${{ matrix.arch }} /tmp \ /tmp/yass_test + - name: Run tests (non x86, under qemu emulation) + if: ${{ matrix.arch != 'i386' && matrix.arch != 'amd64' }} + run: | + # copy required resolv.conf from host + cp -fv /etc/resolv.conf "$SDK_ROOT/etc/resolv.conf" + # TMPDIR is required by leveldb unittests + qemu-${{ matrix.arch }} -L $SDK_ROOT \ + -E TMPDIR=$PWD/build-linux-musl-${{ matrix.arch }} \ + $PWD/build-linux-musl-${{ matrix.arch }}/yass_test \ + --no_exec_proc_tests - name: Upload dist tarball (including debuginfo) if: ${{ github.event_name == 'release' }} env: diff --git a/yass/.gitignore b/yass/.gitignore index ad5cfbcb9b..bc10831bf3 100644 --- a/yass/.gitignore +++ b/yass/.gitignore @@ -83,6 +83,5 @@ local.properties *.ipa /rustc-*-src /third_party/rust-ohos -/i386-alpine320-sysroot -/amd64-alpine320-sysroot +/*-alpine320-sysroot *.flatpak diff --git a/yass/README.md b/yass/README.md index fd07e29f3a..59afdf3bde 100644 --- a/yass/README.md +++ b/yass/README.md @@ -13,7 +13,7 @@ yass is an efficient forward proxy client supporting http/socks4/socks4a/socks5/ Because we are reusing chromium's network stack directly, we are following [chromium's release schedule](https://chromiumdash.appspot.com/schedule) and delivering new versions based on its beta branch. -- [Latest M130's Release (1.14.x)](https://github.com/Chilledheart/yass/releases/tag/1.14.2) will become Stable Release since _Oct 15, 2024_ (Extended Support). +- [Latest M130's Release (1.14.x)](https://github.com/Chilledheart/yass/releases/tag/1.14.3) will become Stable Release since _Oct 15, 2024_ (Extended Support). - [Latest M129's Release (1.13.x)](https://github.com/Chilledheart/yass/releases/tag/1.13.3) has become Stable Release since _Sep 17, 2024_. - [Latest M128's Release (1.12.x)](https://github.com/Chilledheart/yass/releases/tag/1.12.5) has become Stable Release since _Aug 20, 2024_ (Extended Support). - [Latest M127's Release (1.11.x)](https://github.com/Chilledheart/yass/releases/tag/1.11.5) has become Stable Release since _Jul 23, 2024_ @@ -165,37 +165,37 @@ See [ChatGPT capable caddy Server](https://github.com/Chilledheart/yass/wiki/Usa [bugs]: https://github.com/Chilledheart/yass/issues/new?assignees=&labels=bug&projects=&template=bug_report.md&title= [frs]: https://github.com/Chilledheart/yass/issues/new?assignees=&labels=feature&projects=&template=feature_request.md&title= -[gtk3_rpm_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass-gtk3.el8.x86_64.1.14.2.rpm -[gtk3_deb_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass-gtk3-ubuntu-16.04-xenial_amd64.1.14.2.deb -[qt5_rpm_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass-qt5.el8.x86_64.1.14.2.rpm -[qt5_deb_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass-qt5-ubuntu-16.04-xenial_amd64.1.14.2.deb -[gtk4_rpm_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass-gtk4.lp155.x86_64.1.14.2.rpm -[gtk4_deb_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass-gtk4-ubuntu-22.04-jammy_amd64.1.14.2.deb -[qt6_rpm_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass-qt6.lp155.x86_64.1.14.2.rpm -[qt6_deb_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass-qt6-ubuntu-22.04-jammy_amd64.1.14.2.deb +[gtk3_rpm_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass-gtk3.el8.x86_64.1.14.3.rpm +[gtk3_deb_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass-gtk3-ubuntu-16.04-xenial_amd64.1.14.3.deb +[qt5_rpm_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass-qt5.el8.x86_64.1.14.3.rpm +[qt5_deb_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass-qt5-ubuntu-16.04-xenial_amd64.1.14.3.deb +[gtk4_rpm_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass-gtk4.lp155.x86_64.1.14.3.rpm +[gtk4_deb_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass-gtk4-ubuntu-22.04-jammy_amd64.1.14.3.deb +[qt6_rpm_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass-qt6.lp155.x86_64.1.14.3.rpm +[qt6_deb_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass-qt6-ubuntu-22.04-jammy_amd64.1.14.3.deb -[qt6_flatpak_x86_64_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass-x86_64-1.14.2.flatpak +[qt6_flatpak_x86_64_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass-x86_64-1.14.3.flatpak -[cli_tgz_amd64_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass_cli-linux-release-amd64-1.14.2.tgz -[cli_tgz_i386_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass_cli-linux-release-amd64-1.14.2.tgz -[cli_tgz_arm64_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass_cli-linux-release-arm64-1.14.2.tgz -[cli_tgz_loongarch64_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass_cli-linux-release-loongarch64-1.14.2.tgz -[cli_tgz_riscv64_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass_cli-linux-release-riscv64-1.14.2.tgz -[cli_tgz_riscv32_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass_cli-linux-release-riscv32-1.14.2.tgz +[cli_tgz_amd64_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass_cli-linux-release-amd64-1.14.3.tgz +[cli_tgz_i386_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass_cli-linux-release-amd64-1.14.3.tgz +[cli_tgz_arm64_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass_cli-linux-release-arm64-1.14.3.tgz +[cli_tgz_loongarch64_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass_cli-linux-release-loongarch64-1.14.3.tgz +[cli_tgz_riscv64_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass_cli-linux-release-riscv64-1.14.3.tgz +[cli_tgz_riscv32_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass_cli-linux-release-riscv32-1.14.3.tgz -[cli_openwrt_amd64_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass_cli-linux-openwrt-release-x86_64-1.14.2.tgz -[cli_openwrt_i486_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass_cli-linux-openwrt-release-i486-1.14.2.tgz -[cli_openwrt_aarch64_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass_cli-linux-openwrt-release-aarch64-1.14.2.tgz +[cli_openwrt_amd64_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass_cli-linux-openwrt-release-x86_64-1.14.3.tgz +[cli_openwrt_i486_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass_cli-linux-openwrt-release-i486-1.14.3.tgz +[cli_openwrt_aarch64_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass_cli-linux-openwrt-release-aarch64-1.14.3.tgz -[cli_musl_amd64_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass_cli-linux-musl-release-amd64-1.14.2.tgz -[cli_musl_i386_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass_cli-linux-musl-release-i386-1.14.2.tgz +[cli_musl_amd64_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass_cli-linux-musl-release-amd64-1.14.3.tgz +[cli_musl_i386_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass_cli-linux-musl-release-i386-1.14.3.tgz -[android_64_apk_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass-android-release-arm64-1.14.2.apk -[android_32_apk_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass-android-release-arm-1.14.2.apk +[android_64_apk_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass-android-release-arm64-1.14.3.apk +[android_32_apk_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass-android-release-arm-1.14.3.apk -[windows_64_installer_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass-mingw-win7-release-x86_64-1.14.2-system-installer.exe -[windows_32_installer_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass-mingw-winxp-release-i686-1.14.2-system-installer.exe +[windows_64_installer_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass-mingw-win7-release-x86_64-1.14.3-system-installer.exe +[windows_32_installer_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass-mingw-winxp-release-i686-1.14.3-system-installer.exe -[windows_arm64_installer_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass-mingw-release-aarch64-1.14.2-system-installer.exe -[macos_intel_dmg_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass-macos-release-x64-1.14.2.dmg -[macos_arm_dmg_url]: https://github.com/Chilledheart/yass/releases/download/1.14.2/yass-macos-release-arm64-1.14.2.dmg +[windows_arm64_installer_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass-mingw-release-aarch64-1.14.3-system-installer.exe +[macos_intel_dmg_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass-macos-release-x64-1.14.3.dmg +[macos_arm_dmg_url]: https://github.com/Chilledheart/yass/releases/download/1.14.3/yass-macos-release-arm64-1.14.3.dmg diff --git a/yass/docker/aarch64-alpine320.Dockerfile b/yass/docker/aarch64-alpine320.Dockerfile new file mode 100644 index 0000000000..1b76acf71d --- /dev/null +++ b/yass/docker/aarch64-alpine320.Dockerfile @@ -0,0 +1,2 @@ +FROM arm64v8/alpine:3.20 +RUN apk add --no-cache bash tar build-base linux-headers curl-dev gtk+3.0-dev diff --git a/yass/docker/armhf-alpine320.Dockerfile b/yass/docker/armhf-alpine320.Dockerfile new file mode 100644 index 0000000000..ebefe16213 --- /dev/null +++ b/yass/docker/armhf-alpine320.Dockerfile @@ -0,0 +1,2 @@ +FROM arm32v7/alpine:3.20 +RUN apk add --no-cache bash tar build-base linux-headers curl-dev gtk+3.0-dev diff --git a/yass/src/qt6/lang/yass_zh_CN.qm b/yass/src/qt6/lang/yass_zh_CN.qm index 2290b085c5..ced19e3c0d 100644 Binary files a/yass/src/qt6/lang/yass_zh_CN.qm and b/yass/src/qt6/lang/yass_zh_CN.qm differ diff --git a/yass/third_party/boringssl/src/BUILDING.md b/yass/third_party/boringssl/src/BUILDING.md index d78d28391c..8b6203b28d 100644 --- a/yass/third_party/boringssl/src/BUILDING.md +++ b/yass/third_party/boringssl/src/BUILDING.md @@ -26,7 +26,7 @@ most recent stable version of each tool. `CMAKE_ASM_NASM_COMPILER`. * Compilers for C11 and C++14, or later, are required. On Windows, MSVC from - Visual Studio 2019 or later with Windows 10 SDK 2104 or later are + Visual Studio 2022 or later with Windows 10 SDK 2104 or later are supported, but using the latest versions is recommended. Recent versions of GCC (6.1+) and Clang should work on non-Windows platforms, and maybe on Windows too. diff --git a/yass/third_party/boringssl/src/ssl/d1_both.cc b/yass/third_party/boringssl/src/ssl/d1_both.cc index ac47189dfb..016e3a2495 100644 --- a/yass/third_party/boringssl/src/ssl/d1_both.cc +++ b/yass/third_party/boringssl/src/ssl/d1_both.cc @@ -483,13 +483,8 @@ ssl_open_record_t dtls1_open_change_cipher_spec(SSL *ssl, size_t *out_consumed, // Sending handshake messages. -void DTLS_OUTGOING_MESSAGE::Clear() { data.Reset(); } - void dtls_clear_outgoing_messages(SSL *ssl) { - for (size_t i = 0; i < ssl->d1->outgoing_messages_len; i++) { - ssl->d1->outgoing_messages[i].Clear(); - } - ssl->d1->outgoing_messages_len = 0; + ssl->d1->outgoing_messages.clear(); ssl->d1->outgoing_written = 0; ssl->d1->outgoing_offset = 0; ssl->d1->outgoing_messages_complete = false; @@ -524,20 +519,6 @@ bool dtls1_finish_message(const SSL *ssl, CBB *cbb, Array *out_msg) { return true; } -// ssl_size_t_greater_than_32_bits returns whether |v| exceeds the bounds of a -// 32-bit value. The obvious thing doesn't work because, in some 32-bit build -// configurations, the compiler warns that the test is always false and breaks -// the build. -static bool ssl_size_t_greater_than_32_bits(size_t v) { -#if defined(OPENSSL_64_BIT) - return v > 0xffffffff; -#elif defined(OPENSSL_32_BIT) - return false; -#else -#error "Building for neither 32- nor 64-bits." -#endif -} - // add_outgoing adds a new handshake message or ChangeCipherSpec to the current // outgoing flight. It returns true on success and false on error. static bool add_outgoing(SSL *ssl, bool is_ccs, Array data) { @@ -548,16 +529,6 @@ static bool add_outgoing(SSL *ssl, bool is_ccs, Array data) { dtls_clear_outgoing_messages(ssl); } - static_assert(SSL_MAX_HANDSHAKE_FLIGHT < - (1 << 8 * sizeof(ssl->d1->outgoing_messages_len)), - "outgoing_messages_len is too small"); - if (ssl->d1->outgoing_messages_len >= SSL_MAX_HANDSHAKE_FLIGHT || - ssl_size_t_greater_than_32_bits(data.size())) { - assert(false); - OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR); - return false; - } - if (!is_ccs) { // TODO(svaldez): Move this up a layer to fix abstraction for SSLTranscript // on hs. @@ -569,13 +540,16 @@ static bool add_outgoing(SSL *ssl, bool is_ccs, Array data) { ssl->d1->handshake_write_seq++; } - DTLS_OUTGOING_MESSAGE *msg = - &ssl->d1->outgoing_messages[ssl->d1->outgoing_messages_len]; - msg->data = std::move(data); - msg->epoch = ssl->d1->w_epoch; - msg->is_ccs = is_ccs; + DTLS_OUTGOING_MESSAGE msg; + msg.data = std::move(data); + msg.epoch = ssl->d1->w_epoch; + msg.is_ccs = is_ccs; + if (!ssl->d1->outgoing_messages.TryPushBack(std::move(msg))) { + assert(false); + OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR); + return false; + } - ssl->d1->outgoing_messages_len++; return true; } @@ -626,7 +600,7 @@ enum seal_result_t { static enum seal_result_t seal_next_message(SSL *ssl, uint8_t *out, size_t *out_len, size_t max_out, const DTLS_OUTGOING_MESSAGE *msg) { - assert(ssl->d1->outgoing_written < ssl->d1->outgoing_messages_len); + assert(ssl->d1->outgoing_written < ssl->d1->outgoing_messages.size()); assert(msg == &ssl->d1->outgoing_messages[ssl->d1->outgoing_written]); size_t overhead = dtls_max_seal_overhead(ssl, msg->epoch); @@ -715,8 +689,8 @@ static bool seal_next_packet(SSL *ssl, uint8_t *out, size_t *out_len, size_t max_out) { bool made_progress = false; size_t total = 0; - assert(ssl->d1->outgoing_written < ssl->d1->outgoing_messages_len); - for (; ssl->d1->outgoing_written < ssl->d1->outgoing_messages_len; + assert(ssl->d1->outgoing_written < ssl->d1->outgoing_messages.size()); + for (; ssl->d1->outgoing_written < ssl->d1->outgoing_messages.size(); ssl->d1->outgoing_written++) { const DTLS_OUTGOING_MESSAGE *msg = &ssl->d1->outgoing_messages[ssl->d1->outgoing_written]; @@ -772,7 +746,7 @@ static int send_flight(SSL *ssl) { return -1; } - while (ssl->d1->outgoing_written < ssl->d1->outgoing_messages_len) { + while (ssl->d1->outgoing_written < ssl->d1->outgoing_messages.size()) { uint8_t old_written = ssl->d1->outgoing_written; uint32_t old_offset = ssl->d1->outgoing_offset; diff --git a/yass/third_party/boringssl/src/ssl/extensions.cc b/yass/third_party/boringssl/src/ssl/extensions.cc index 30591a6a07..0e001a6d1c 100644 --- a/yass/third_party/boringssl/src/ssl/extensions.cc +++ b/yass/third_party/boringssl/src/ssl/extensions.cc @@ -709,14 +709,14 @@ static bool ext_ri_add_clienthello(const SSL_HANDSHAKE *hs, CBB *out, } assert(ssl->s3->initial_handshake_complete == - (ssl->s3->previous_client_finished_len != 0)); + !ssl->s3->previous_client_finished.empty()); CBB contents, prev_finished; if (!CBB_add_u16(out, TLSEXT_TYPE_renegotiate) || !CBB_add_u16_length_prefixed(out, &contents) || !CBB_add_u8_length_prefixed(&contents, &prev_finished) || - !CBB_add_bytes(&prev_finished, ssl->s3->previous_client_finished, - ssl->s3->previous_client_finished_len) || + !CBB_add_bytes(&prev_finished, ssl->s3->previous_client_finished.data(), + ssl->s3->previous_client_finished.size()) || !CBB_flush(out)) { return false; } @@ -752,16 +752,11 @@ static bool ext_ri_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert, return true; } - const size_t expected_len = ssl->s3->previous_client_finished_len + - ssl->s3->previous_server_finished_len; - - // Check for logic errors - assert(!expected_len || ssl->s3->previous_client_finished_len); - assert(!expected_len || ssl->s3->previous_server_finished_len); + // Check for logic errors. + assert(ssl->s3->previous_client_finished.size() == + ssl->s3->previous_server_finished.size()); assert(ssl->s3->initial_handshake_complete == - (ssl->s3->previous_client_finished_len != 0)); - assert(ssl->s3->initial_handshake_complete == - (ssl->s3->previous_server_finished_len != 0)); + !ssl->s3->previous_client_finished.empty()); // Parse out the extension contents. CBS renegotiated_connection; @@ -773,15 +768,22 @@ static bool ext_ri_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert, } // Check that the extension matches. - if (CBS_len(&renegotiated_connection) != expected_len) { + CBS client_verify, server_verify; + if (!CBS_get_bytes(&renegotiated_connection, &client_verify, + ssl->s3->previous_client_finished.size()) || + !CBS_get_bytes(&renegotiated_connection, &server_verify, + ssl->s3->previous_server_finished.size()) || + CBS_len(&renegotiated_connection) != 0) { OPENSSL_PUT_ERROR(SSL, SSL_R_RENEGOTIATION_MISMATCH); *out_alert = SSL_AD_HANDSHAKE_FAILURE; return false; } - const uint8_t *d = CBS_data(&renegotiated_connection); - bool ok = CRYPTO_memcmp(d, ssl->s3->previous_client_finished, - ssl->s3->previous_client_finished_len) == 0; + bool ok = + CBS_mem_equal(&client_verify, ssl->s3->previous_client_finished.data(), + ssl->s3->previous_client_finished.size()) && + CBS_mem_equal(&server_verify, ssl->s3->previous_server_finished.data(), + ssl->s3->previous_server_finished.size()); #if defined(BORINGSSL_UNSAFE_FUZZER_MODE) ok = true; #endif @@ -790,20 +792,8 @@ static bool ext_ri_parse_serverhello(SSL_HANDSHAKE *hs, uint8_t *out_alert, *out_alert = SSL_AD_HANDSHAKE_FAILURE; return false; } - d += ssl->s3->previous_client_finished_len; - ok = CRYPTO_memcmp(d, ssl->s3->previous_server_finished, - ssl->s3->previous_server_finished_len) == 0; -#if defined(BORINGSSL_UNSAFE_FUZZER_MODE) - ok = true; -#endif - if (!ok) { - OPENSSL_PUT_ERROR(SSL, SSL_R_RENEGOTIATION_MISMATCH); - *out_alert = SSL_AD_HANDSHAKE_FAILURE; - return false; - } ssl->s3->send_connection_binding = true; - return true; } @@ -4079,9 +4069,8 @@ enum ssl_ticket_aead_result_t ssl_process_ticket( // Envoy's tests expect the session to have a session ID that matches the // placeholder used by the client. It's unclear whether this is a good idea, // but we maintain it for now. - SHA256(ticket.data(), ticket.size(), session->session_id); - // Other consumers may expect a non-empty session ID to indicate resumption. - session->session_id_length = SHA256_DIGEST_LENGTH; + session->session_id.ResizeMaybeUninit(SHA256_DIGEST_LENGTH); + SHA256(ticket.data(), ticket.size(), session->session_id.data()); *out_session = std::move(session); return ssl_ticket_aead_success; @@ -4292,12 +4281,12 @@ bool tls1_channel_id_hash(SSL_HANDSHAKE *hs, uint8_t *out, size_t *out_len) { if (ssl->session != NULL) { static const char kResumptionMagic[] = "Resumption"; SHA256_Update(&ctx, kResumptionMagic, sizeof(kResumptionMagic)); - if (ssl->session->original_handshake_hash_len == 0) { + if (ssl->session->original_handshake_hash.empty()) { OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR); return false; } - SHA256_Update(&ctx, ssl->session->original_handshake_hash, - ssl->session->original_handshake_hash_len); + SHA256_Update(&ctx, ssl->session->original_handshake_hash.data(), + ssl->session->original_handshake_hash.size()); } uint8_t hs_hash[EVP_MAX_MD_SIZE]; @@ -4320,20 +4309,14 @@ bool tls1_record_handshake_hashes_for_channel_id(SSL_HANDSHAKE *hs) { return false; } - static_assert( - sizeof(hs->new_session->original_handshake_hash) == EVP_MAX_MD_SIZE, - "original_handshake_hash is too small"); - size_t digest_len; - if (!hs->transcript.GetHash(hs->new_session->original_handshake_hash, + hs->new_session->original_handshake_hash.ResizeMaybeUninit( + hs->transcript.DigestLen()); + if (!hs->transcript.GetHash(hs->new_session->original_handshake_hash.data(), &digest_len)) { return false; } - - static_assert(EVP_MAX_MD_SIZE <= 0xff, - "EVP_MAX_MD_SIZE does not fit in uint8_t"); - hs->new_session->original_handshake_hash_len = (uint8_t)digest_len; - + assert(digest_len == hs->new_session->original_handshake_hash.size()); return true; } diff --git a/yass/third_party/boringssl/src/ssl/handoff.cc b/yass/third_party/boringssl/src/ssl/handoff.cc index ec950d0388..e4e5d281fd 100644 --- a/yass/third_party/boringssl/src/ssl/handoff.cc +++ b/yass/third_party/boringssl/src/ssl/handoff.cc @@ -433,8 +433,8 @@ bool SSL_serialize_handback(const SSL *ssl, CBB *out) { hs->server_handshake_secret().size()) || !CBB_add_asn1_octet_string(&seq, hs->secret().data(), hs->secret().size()) || - !CBB_add_asn1_octet_string(&seq, s3->exporter_secret, - s3->exporter_secret_len) || + !CBB_add_asn1_octet_string(&seq, s3->exporter_secret.data(), + s3->exporter_secret.size()) || !CBB_add_asn1_bool(&seq, s3->used_hello_retry_request) || !CBB_add_asn1_bool(&seq, hs->accept_psk_mode) || !CBB_add_asn1_int64(&seq, s3->ticket_age_skew) || @@ -704,11 +704,9 @@ bool SSL_apply_handback(SSL *ssl, Span handback) { !CopyExact(hs->client_handshake_secret(), &client_handshake_secret) || !CopyExact(hs->server_handshake_secret(), &server_handshake_secret) || !CopyExact(hs->secret(), &secret) || - !CopyExact({s3->exporter_secret, hs->transcript.DigestLen()}, - &exporter_secret)) { + !s3->exporter_secret.TryCopyFrom(exporter_secret)) { return false; } - s3->exporter_secret_len = CBS_len(&exporter_secret); if (s3->early_data_accepted && !CopyExact(hs->early_traffic_secret(), &early_traffic_secret)) { diff --git a/yass/third_party/boringssl/src/ssl/handshake.cc b/yass/third_party/boringssl/src/ssl/handshake.cc index a9ec634125..6fe37cc187 100644 --- a/yass/third_party/boringssl/src/ssl/handshake.cc +++ b/yass/third_party/boringssl/src/ssl/handshake.cc @@ -495,18 +495,18 @@ enum ssl_hs_wait_t ssl_get_finished(SSL_HANDSHAKE *hs) { } // Copy the Finished so we can use it for renegotiation checks. - if (finished_len > sizeof(ssl->s3->previous_client_finished) || - finished_len > sizeof(ssl->s3->previous_server_finished)) { + if (finished_len > ssl->s3->previous_client_finished.capacity() || + finished_len > ssl->s3->previous_server_finished.capacity()) { OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR); return ssl_hs_error; } if (ssl->server) { - OPENSSL_memcpy(ssl->s3->previous_client_finished, finished, finished_len); - ssl->s3->previous_client_finished_len = finished_len; + ssl->s3->previous_client_finished.CopyFrom( + MakeConstSpan(finished, finished_len)); } else { - OPENSSL_memcpy(ssl->s3->previous_server_finished, finished, finished_len); - ssl->s3->previous_server_finished_len = finished_len; + ssl->s3->previous_server_finished.CopyFrom( + MakeConstSpan(finished, finished_len)); } // The Finished message should be the end of a flight. @@ -524,38 +524,32 @@ bool ssl_send_finished(SSL_HANDSHAKE *hs) { SSL *const ssl = hs->ssl; const SSL_SESSION *session = ssl_handshake_session(hs); - uint8_t finished[EVP_MAX_MD_SIZE]; + uint8_t finished_buf[EVP_MAX_MD_SIZE]; size_t finished_len; - if (!hs->transcript.GetFinishedMAC(finished, &finished_len, session, + if (!hs->transcript.GetFinishedMAC(finished_buf, &finished_len, session, ssl->server)) { return false; } + auto finished = MakeConstSpan(finished_buf, finished_len); // Log the master secret, if logging is enabled. - if (!ssl_log_secret(ssl, "CLIENT_RANDOM", - MakeConstSpan(session->secret, session->secret_length))) { + if (!ssl_log_secret(ssl, "CLIENT_RANDOM", session->secret)) { return false; } // Copy the Finished so we can use it for renegotiation checks. - if (finished_len > sizeof(ssl->s3->previous_client_finished) || - finished_len > sizeof(ssl->s3->previous_server_finished)) { + bool ok = ssl->server + ? ssl->s3->previous_server_finished.TryCopyFrom(finished) + : ssl->s3->previous_client_finished.TryCopyFrom(finished); + if (!ok) { OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR); - return false; - } - - if (ssl->server) { - OPENSSL_memcpy(ssl->s3->previous_server_finished, finished, finished_len); - ssl->s3->previous_server_finished_len = finished_len; - } else { - OPENSSL_memcpy(ssl->s3->previous_client_finished, finished, finished_len); - ssl->s3->previous_client_finished_len = finished_len; + return ssl_hs_error; } ScopedCBB cbb; CBB body; if (!ssl->method->init_message(ssl, cbb.get(), &body, SSL3_MT_FINISHED) || - !CBB_add_bytes(&body, finished, finished_len) || + !CBB_add_bytes(&body, finished.data(), finished.size()) || !ssl_add_message_cbb(ssl, cbb.get())) { OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR); return false; diff --git a/yass/third_party/boringssl/src/ssl/handshake_client.cc b/yass/third_party/boringssl/src/ssl/handshake_client.cc index 2f74ff56da..3774787179 100644 --- a/yass/third_party/boringssl/src/ssl/handshake_client.cc +++ b/yass/third_party/boringssl/src/ssl/handshake_client.cc @@ -328,7 +328,7 @@ bool ssl_write_client_hello_without_extensions(const SSL_HANDSHAKE *hs, // Do not send a session ID on renegotiation. if (!ssl->s3->initial_handshake_complete && !empty_session_id && - !CBB_add_bytes(&child, hs->session_id, hs->session_id_len)) { + !CBB_add_bytes(&child, hs->session_id.data(), hs->session_id.size())) { return false; } @@ -526,7 +526,7 @@ static enum ssl_hs_wait_t do_start_connect(SSL_HANDSHAKE *hs) { } const bool has_id_session = ssl->session != nullptr && - ssl->session->session_id_length > 0 && + !ssl->session->session_id.empty() && ssl->session->ticket.empty(); const bool has_ticket_session = ssl->session != nullptr && !ssl->session->ticket.empty(); @@ -540,12 +540,10 @@ static enum ssl_hs_wait_t do_start_connect(SSL_HANDSHAKE *hs) { ssl->quic_method == nullptr && !SSL_is_dtls(hs->ssl); if (has_id_session) { - hs->session_id_len = ssl->session->session_id_length; - OPENSSL_memcpy(hs->session_id, ssl->session->session_id, - hs->session_id_len); + hs->session_id = ssl->session->session_id; } else if (ticket_session_requires_random_id || enable_compatibility_mode) { - hs->session_id_len = sizeof(hs->session_id); - if (!RAND_bytes(hs->session_id, hs->session_id_len)) { + hs->session_id.ResizeMaybeUninit(SSL_MAX_SSL_SESSION_ID_LENGTH); + if (!RAND_bytes(hs->session_id.data(), hs->session_id.size())) { return ssl_hs_error; } } @@ -830,9 +828,8 @@ static enum ssl_hs_wait_t do_read_server_hello(SSL_HANDSHAKE *hs) { hs->new_cipher = cipher; - if (hs->session_id_len != 0 && - CBS_mem_equal(&server_hello.session_id, hs->session_id, - hs->session_id_len)) { + if (!hs->session_id.empty() && + Span(server_hello.session_id) == hs->session_id) { // Echoing the ClientHello session ID in TLS 1.2, whether from the session // or a synthetic one, indicates resumption. If there was no session (or if // the session was only offered in ECH ClientHelloInner), this was the @@ -874,16 +871,9 @@ static enum ssl_hs_wait_t do_read_server_hello(SSL_HANDSHAKE *hs) { } // Save the session ID from the server. This may be empty if the session - // isn't resumable, or if we'll receive a session ticket later. - assert(CBS_len(&server_hello.session_id) <= SSL3_SESSION_ID_SIZE); - static_assert(SSL3_SESSION_ID_SIZE <= UINT8_MAX, - "max session ID is too large"); - hs->new_session->session_id_length = - static_cast(CBS_len(&server_hello.session_id)); - OPENSSL_memcpy(hs->new_session->session_id, - CBS_data(&server_hello.session_id), - CBS_len(&server_hello.session_id)); - + // isn't resumable, or if we'll receive a session ticket later. The + // ServerHello parser ensures |server_hello.session_id| is within bounds. + hs->new_session->session_id.CopyFrom(server_hello.session_id); hs->new_session->cipher = hs->new_cipher; } @@ -1619,13 +1609,13 @@ static enum ssl_hs_wait_t do_send_client_key_exchange(SSL_HANDSHAKE *hs) { return ssl_hs_error; } - hs->new_session->secret_length = - tls1_generate_master_secret(hs, hs->new_session->secret, pms); - if (hs->new_session->secret_length == 0) { + hs->new_session->secret.ResizeMaybeUninit(SSL3_MASTER_SECRET_SIZE); + if (!tls1_generate_master_secret(hs, MakeSpan(hs->new_session->secret), + pms)) { return ssl_hs_error; } - hs->new_session->extended_master_secret = hs->extended_master_secret; + hs->new_session->extended_master_secret = hs->extended_master_secret; hs->state = state_send_client_certificate_verify; return ssl_hs_ok; } @@ -1860,8 +1850,9 @@ static enum ssl_hs_wait_t do_read_session_ticket(SSL_HANDSHAKE *hs) { // Historically, OpenSSL filled in fake session IDs for ticket-based sessions. // TODO(davidben): Are external callers relying on this? Try removing this. - SHA256(CBS_data(&ticket), CBS_len(&ticket), hs->new_session->session_id); - hs->new_session->session_id_length = SHA256_DIGEST_LENGTH; + hs->new_session->session_id.ResizeMaybeUninit(SHA256_DIGEST_LENGTH); + SHA256(CBS_data(&ticket), CBS_len(&ticket), + hs->new_session->session_id.data()); ssl->method->next_message(ssl); hs->state = state_process_change_cipher_spec; diff --git a/yass/third_party/boringssl/src/ssl/handshake_server.cc b/yass/third_party/boringssl/src/ssl/handshake_server.cc index 7821ce0931..59531f7161 100644 --- a/yass/third_party/boringssl/src/ssl/handshake_server.cc +++ b/yass/third_party/boringssl/src/ssl/handshake_server.cc @@ -894,10 +894,10 @@ static enum ssl_hs_wait_t do_select_parameters(SSL_HANDSHAKE *hs) { hs->new_cipher = params.cipher; hs->signature_algorithm = params.signature_algorithm; - hs->session_id_len = client_hello.session_id_len; - // This is checked in |ssl_client_hello_init|. - assert(hs->session_id_len <= sizeof(hs->session_id)); - OPENSSL_memcpy(hs->session_id, client_hello.session_id, hs->session_id_len); + // |ssl_client_hello_init| checks that |client_hello.session_id| is not too + // large. + hs->session_id.CopyFrom( + MakeConstSpan(client_hello.session_id, client_hello.session_id_len)); // Determine whether we are doing session resumption. UniquePtr session; @@ -941,9 +941,9 @@ static enum ssl_hs_wait_t do_select_parameters(SSL_HANDSHAKE *hs) { // Assign a session ID if not using session tickets. if (!hs->ticket_expected && (ssl->ctx->session_cache_mode & SSL_SESS_CACHE_SERVER)) { - hs->new_session->session_id_length = SSL3_SSL_SESSION_ID_LENGTH; - RAND_bytes(hs->new_session->session_id, - hs->new_session->session_id_length); + hs->new_session->session_id.ResizeMaybeUninit(SSL3_SSL_SESSION_ID_LENGTH); + RAND_bytes(hs->new_session->session_id.data(), + hs->new_session->session_id.size()); } } @@ -1027,8 +1027,8 @@ static enum ssl_hs_wait_t do_send_server_hello(SSL_HANDSHAKE *hs) { // If this is a resumption and the original handshake didn't support // ChannelID then we didn't record the original handshake hashes in the // session and so cannot resume with ChannelIDs. - if (ssl->session != NULL && - ssl->session->original_handshake_hash_len == 0) { + if (ssl->session != nullptr && + ssl->session->original_handshake_hash.empty()) { hs->channel_id_negotiated = false; } @@ -1072,10 +1072,9 @@ static enum ssl_hs_wait_t do_send_server_hello(SSL_HANDSHAKE *hs) { Span session_id; if (ssl->session != nullptr) { // Echo the session ID from the ClientHello to indicate resumption. - session_id = MakeConstSpan(hs->session_id, hs->session_id_len); + session_id = hs->session_id; } else { - session_id = MakeConstSpan(hs->new_session->session_id, - hs->new_session->session_id_length); + session_id = hs->new_session->session_id; } ScopedCBB cbb; @@ -1602,13 +1601,18 @@ static enum ssl_hs_wait_t do_read_client_key_exchange(SSL_HANDSHAKE *hs) { } // Compute the master secret. - hs->new_session->secret_length = tls1_generate_master_secret( - hs, hs->new_session->secret, premaster_secret); - if (hs->new_session->secret_length == 0) { + hs->new_session->secret.ResizeMaybeUninit(SSL3_MASTER_SECRET_SIZE); + if (!tls1_generate_master_secret(hs, MakeSpan(hs->new_session->secret), + premaster_secret)) { return ssl_hs_error; } hs->new_session->extended_master_secret = hs->extended_master_secret; - CONSTTIME_DECLASSIFY(hs->new_session->secret, hs->new_session->secret_length); + // Declassify the secret to undo the RSA decryption validation above. We are + // not currently running most of the TLS library with constant-time + // validation. + // TODO(crbug.com/42290551): Remove this and cover the TLS library too. + CONSTTIME_DECLASSIFY(hs->new_session->secret.data(), + hs->new_session->secret.size()); hs->can_release_private_key = true; ssl->method->next_message(ssl); diff --git a/yass/third_party/boringssl/src/ssl/internal.h b/yass/third_party/boringssl/src/ssl/internal.h index 43ea1c2afe..5e5d3fd5f0 100644 --- a/yass/third_party/boringssl/src/ssl/internal.h +++ b/yass/third_party/boringssl/src/ssl/internal.h @@ -189,6 +189,53 @@ struct SSL_X509_METHOD; // C++ utilities. +// Fill-ins for various functions in C++17. +// TODO(crbug.com/42290600): Replace these with the standard ones when we +// require C++17. + +template +ForwardIt cxx17_uninitialized_default_construct_n(ForwardIt first, size_t n) { + using T = typename std::iterator_traits::value_type; + while (n > 0) { + new (std::addressof(*first)) T; + first++; + n--; + } + return first; +} + +template +ForwardIt cxx17_uninitialized_value_construct_n(ForwardIt first, size_t n) { + using T = typename std::iterator_traits::value_type; + while (n > 0) { + new (std::addressof(*first)) T(); + first++; + n--; + } + return first; +} + +template +InputIt cxx17_uninitialized_move(InputIt first, InputIt last, OutputIt out) { + using OutputT = typename std::iterator_traits::value_type; + for (; first != last; ++first) { + new (std::addressof(*out)) OutputT(std::move(*first)); + ++out; + } + return out; +} + +template +ForwardIt cxx17_destroy_n(ForwardIt first, size_t n) { + using T = typename std::iterator_traits::value_type; + while (n > 0) { + first->~T(); + first++; + n--; + } + return first; +} + // New behaves like |new| but uses |OPENSSL_malloc| for memory allocation. It // returns nullptr on allocation error. It only implements single-object // allocation and not new T[n]. @@ -253,8 +300,14 @@ class Array { size_t size() const { return size_; } bool empty() const { return size_ == 0; } - const T &operator[](size_t i) const { return data_[i]; } - T &operator[](size_t i) { return data_[i]; } + const T &operator[](size_t i) const { + BSSL_CHECK(i < size_); + return data_[i]; + } + T &operator[](size_t i) { + BSSL_CHECK(i < size_); + return data_[i]; + } T *begin() { return data_; } const T *begin() const { return data_; } @@ -266,9 +319,7 @@ class Array { // Reset releases the current contents of the array and takes ownership of the // raw pointer supplied by the caller. void Reset(T *new_data, size_t new_size) { - for (size_t i = 0; i < size_; i++) { - data_[i].~T(); - } + cxx17_destroy_n(data_, size_); OPENSSL_free(data_); data_ = new_data; size_ = new_size; @@ -289,6 +340,38 @@ class Array { // // Note that if |T| is a primitive type like |uint8_t|, it is uninitialized. bool Init(size_t new_size) { + if (!InitUninitialized(new_size)) { + return false; + } + cxx17_uninitialized_default_construct_n(data_, size_); + return true; + } + + // CopyFrom replaces the array with a newly-allocated copy of |in|. It returns + // true on success and false on error. + bool CopyFrom(Span in) { + if (!InitUninitialized(in.size())) { + return false; + } + std::uninitialized_copy(in.begin(), in.end(), data_); + return true; + } + + // Shrink shrinks the stored size of the array to |new_size|. It crashes if + // the new size is larger. Note this does not shrink the allocation itself. + void Shrink(size_t new_size) { + if (new_size > size_) { + abort(); + } + cxx17_destroy_n(data_ + new_size, size_ - new_size); + size_ = new_size; + } + + private: + // InitUninitialized replaces the array with a newly-allocated array of + // |new_size| elements, but whose constructor has not yet run. On success, the + // elements must be constructed before returning control to the caller. + bool InitUninitialized(size_t new_size) { Reset(); if (new_size == 0) { return true; @@ -303,76 +386,56 @@ class Array { return false; } size_ = new_size; - for (size_t i = 0; i < size_; i++) { - new (&data_[i]) T; - } return true; } - // CopyFrom replaces the array with a newly-allocated copy of |in|. It returns - // true on success and false on error. - bool CopyFrom(Span in) { - if (!Init(in.size())) { - return false; - } - std::copy(in.begin(), in.end(), data_); - return true; - } - - // Shrink shrinks the stored size of the array to |new_size|. It crashes if - // the new size is larger. Note this does not shrink the allocation itself. - void Shrink(size_t new_size) { - if (new_size > size_) { - abort(); - } - for (size_t i = new_size; i < size_; i++) { - data_[i].~T(); - } - size_ = new_size; - } - - private: T *data_ = nullptr; size_t size_ = 0; }; // Vector is a resizable array of elements of |T|. -// -// Note, for simplicity, this class currently differs from |std::vector| in that -// |T| must be efficiently default-constructible. Allocated elements beyond the -// end of the array are constructed and destructed. template class Vector { public: Vector() = default; Vector(const Vector &) = delete; Vector(Vector &&other) { *this = std::move(other); } - ~Vector() {} + ~Vector() { clear(); } Vector &operator=(const Vector &) = delete; Vector &operator=(Vector &&other) { - size_ = other.size_; - other.size_ = 0; - array_ = std::move(other.array_); + clear(); + std::swap(data_, other.data_); + std::swap(size_, other.size_); + std::swap(capacity_, other.capacity_); return *this; } - const T *data() const { return array_.data(); } - T *data() { return array_.data(); } + const T *data() const { return data_; } + T *data() { return data_; } size_t size() const { return size_; } bool empty() const { return size_ == 0; } - const T &operator[](size_t i) const { return array_[i]; } - T &operator[](size_t i) { return array_[i]; } + const T &operator[](size_t i) const { + BSSL_CHECK(i < size_); + return data_[i]; + } + T &operator[](size_t i) { + BSSL_CHECK(i < size_); + return data_[i]; + } - T *begin() { return array_.data(); } - const T *begin() const { return array_.data(); } - T *end() { return array_.data() + size_; } - const T *end() const { return array_.data() + size_; } + T *begin() { return data_; } + const T *begin() const { return data_; } + T *end() { return data_ + size_; } + const T *end() const { return data_ + size_; } void clear() { + cxx17_destroy_n(data_, size_); + OPENSSL_free(data_); + data_ = nullptr; size_ = 0; - array_.Reset(); + capacity_ = 0; } // Push adds |elem| at the end of the internal array, growing if necessary. It @@ -381,7 +444,7 @@ class Vector { if (!MaybeGrow()) { return false; } - array_[size_] = std::move(elem); + new (&data_[size_]) T(std::move(elem)); size_++; return true; } @@ -389,10 +452,14 @@ class Vector { // CopyFrom replaces the contents of the array with a copy of |in|. It returns // true on success and false on allocation error. bool CopyFrom(Span in) { - if (!array_.CopyFrom(in)) { + Array copy; + if (!copy.CopyFrom(in)) { return false; } - size_ = in.size(); + + clear(); + copy.Release(&data_, &size_); + capacity_ = size_; return true; } @@ -400,39 +467,177 @@ class Vector { // If there is no room for one more element, creates a new backing array with // double the size of the old one and copies elements over. bool MaybeGrow() { - if (array_.size() == 0) { - return array_.Init(kDefaultSize); - } // No need to grow if we have room for one more T. - if (size_ < array_.size()) { + if (size_ < capacity_) { return true; } - // Double the array's size if it's safe to do so. - if (array_.size() > std::numeric_limits::max() / 2) { + size_t new_capacity = kDefaultSize; + if (capacity_ > 0) { + // Double the array's size if it's safe to do so. + if (capacity_ > std::numeric_limits::max() / 2) { + OPENSSL_PUT_ERROR(SSL, ERR_R_OVERFLOW); + return false; + } + new_capacity = capacity_ * 2; + } + if (new_capacity > std::numeric_limits::max() / sizeof(T)) { OPENSSL_PUT_ERROR(SSL, ERR_R_OVERFLOW); return false; } - Array new_array; - if (!new_array.Init(array_.size() * 2)) { + T *new_data = + reinterpret_cast(OPENSSL_malloc(new_capacity * sizeof(T))); + if (new_data == nullptr) { return false; } - for (size_t i = 0; i < array_.size(); i++) { - new_array[i] = std::move(array_[i]); - } - array_ = std::move(new_array); - + size_t new_size = size_; + cxx17_uninitialized_move(begin(), end(), new_data); + clear(); + data_ = new_data; + size_ = new_size; + capacity_ = new_capacity; return true; } + // data_ is a pointer to |capacity_| objects of size |T|, the first |size_| of + // which are constructed. + T *data_ = nullptr; // |size_| is the number of elements stored in this Vector. size_t size_ = 0; - // |array_| is the backing array. Note that |array_.size()| is this - // Vector's current capacity and that |size_ <= array_.size()|. - Array array_; + // |capacity_| is the number of elements allocated in this Vector. + size_t capacity_ = 0; // |kDefaultSize| is the default initial size of the backing array. static constexpr size_t kDefaultSize = 16; }; +// A PackedSize is an integer that can store values from 0 to N, represented as +// a minimal-width integer. +template +using PackedSize = std::conditional_t< + N <= 0xff, uint8_t, + std::conditional_t>>; + +// An InplaceVector is like a Vector, but stores up to N elements inline in the +// object. It is inspired by std::inplace_vector in C++26. +template +class InplaceVector { + public: + InplaceVector() = default; + InplaceVector(const InplaceVector &other) { *this = other; } + InplaceVector(InplaceVector &&other) { *this = std::move(other); } + ~InplaceVector() { clear(); } + InplaceVector &operator=(const InplaceVector &other) { + if (this != &other) { + CopyFrom(other); + } + return *this; + } + InplaceVector &operator=(InplaceVector &&other) { + clear(); + cxx17_uninitialized_move(other.begin(), other.end(), data()); + size_ = other.size(); + return *this; + } + + const T *data() const { return reinterpret_cast(storage_); } + T *data() { return reinterpret_cast(storage_); } + size_t size() const { return size_; } + static constexpr size_t capacity() { return N; } + bool empty() const { return size_ == 0; } + + const T &operator[](size_t i) const { + BSSL_CHECK(i < size_); + return data()[i]; + } + T &operator[](size_t i) { + BSSL_CHECK(i < size_); + return data()[i]; + } + + T *begin() { return data(); } + const T *begin() const { return data(); } + T *end() { return data() + size_; } + const T *end() const { return data() + size_; } + + void clear() { + cxx17_destroy_n(data(), size_); + size_ = 0; + } + + // TryResize resizes the vector to |new_size| and returns true, or returns + // false if |new_size| is too large. Any newly-added elements are + // value-initialized. + bool TryResize(size_t new_size) { + if (new_size > capacity()) { + return false; + } + if (new_size < size_) { + cxx17_destroy_n(data() + new_size, size_ - new_size); + } else { + cxx17_uninitialized_value_construct_n(data() + size_, new_size - size_); + } + size_ = static_cast>(new_size); + return true; + } + + // TryResizeMaybeUninit behaves like |TryResize|, but newly-added elements are + // default-initialized, so POD types may contain uninitialized values that the + // caller is responsible for filling in. + bool TryResizeMaybeUninit(size_t new_size) { + if (new_size > capacity()) { + return false; + } + if (new_size < size_) { + cxx17_destroy_n(data() + new_size, size_ - new_size); + } else { + cxx17_uninitialized_default_construct_n(data() + size_, new_size - size_); + } + size_ = static_cast>(new_size); + return true; + } + + // TryCopyFrom sets the vector to a copy of |in| and returns true, or returns + // false if |in| is too large. + bool TryCopyFrom(Span in) { + if (in.size() > capacity()) { + return false; + } + clear(); + std::uninitialized_copy(in.begin(), in.end(), data()); + size_ = in.size(); + return true; + } + + // TryPushBack appends |val| to the vector and returns a pointer to the + // newly-inserted value, or nullptr if the vector is at capacity. + T *TryPushBack(T val) { + if (size() >= capacity()) { + return nullptr; + } + T *ret = &data()[size_]; + new (ret) T(std::move(val)); + size_++; + return ret; + } + + // The following methods behave like their |Try*| counterparts, but abort the + // program on failure. + void Resize(size_t size) { BSSL_CHECK(TryResize(size)); } + void ResizeMaybeUninit(size_t size) { + BSSL_CHECK(TryResizeMaybeUninit(size)); + } + void CopyFrom(Span in) { BSSL_CHECK(TryCopyFrom(in)); } + T &PushBack(T val) { + T *ret = TryPushBack(std::move(val)); + BSSL_CHECK(ret != nullptr); + return *ret; + } + + private: + alignas(T) char storage_[sizeof(T[N])]; + PackedSize size_ = 0; +}; + // CBBFinishArray behaves like |CBB_finish| but stores the result in an Array. OPENSSL_EXPORT bool CBBFinishArray(CBB *cbb, Array *out); @@ -937,8 +1142,8 @@ class SSLAEADContext { ScopedEVP_AEAD_CTX ctx_; // fixed_nonce_ contains any bytes of the nonce that are fixed for all // records. - uint8_t fixed_nonce_[12] = {0}; - uint8_t fixed_nonce_len_ = 0, variable_nonce_len_ = 0; + InplaceVector fixed_nonce_; + uint8_t variable_nonce_len_ = 0; UniquePtr rn_encrypter_; // variable_nonce_included_in_record_ is true if the variable nonce // for a record is included as a prefix before the ciphertext. @@ -1270,12 +1475,6 @@ bool dtls_has_unprocessed_handshake_data(const SSL *ssl); bool tls_flush_pending_hs_data(SSL *ssl); struct DTLS_OUTGOING_MESSAGE { - DTLS_OUTGOING_MESSAGE() {} - DTLS_OUTGOING_MESSAGE(const DTLS_OUTGOING_MESSAGE &) = delete; - DTLS_OUTGOING_MESSAGE &operator=(const DTLS_OUTGOING_MESSAGE &) = delete; - - void Clear(); - Array data; uint16_t epoch = 0; bool is_ccs = false; @@ -2227,8 +2426,7 @@ struct SSL_HANDSHAKE { uint8_t ech_config_id = 0; // session_id is the session ID in the ClientHello. - uint8_t session_id[SSL_MAX_SSL_SESSION_ID_LENGTH] = {0}; - uint8_t session_id_len = 0; + InplaceVector session_id; // grease_seed is the entropy for GREASE values. uint8_t grease_seed[ssl_grease_last_index + 1] = {0}; @@ -2574,8 +2772,7 @@ struct CERT { // sid_ctx partitions the session space within a shared session cache or // ticket key. Only sessions with a matching value will be accepted. - uint8_t sid_ctx_length = 0; - uint8_t sid_ctx[SSL_MAX_SID_CTX_LENGTH] = {0}; + InplaceVector sid_ctx; }; // |SSL_PROTOCOL_METHOD| abstracts between TLS and DTLS. @@ -2944,18 +3141,13 @@ struct SSL3_STATE { // one. UniquePtr hs; - uint8_t write_traffic_secret[SSL_MAX_MD_SIZE] = {0}; - uint8_t read_traffic_secret[SSL_MAX_MD_SIZE] = {0}; - uint8_t exporter_secret[SSL_MAX_MD_SIZE] = {0}; - uint8_t write_traffic_secret_len = 0; - uint8_t read_traffic_secret_len = 0; - uint8_t exporter_secret_len = 0; + InplaceVector write_traffic_secret; + InplaceVector read_traffic_secret; + InplaceVector exporter_secret; // Connection binding to prevent renegotiation attacks - uint8_t previous_client_finished[12] = {0}; - uint8_t previous_client_finished_len = 0; - uint8_t previous_server_finished_len = 0; - uint8_t previous_server_finished[12] = {0}; + InplaceVector previous_client_finished; + InplaceVector previous_server_finished; uint8_t send_alert[2] = {0}; @@ -3113,8 +3305,8 @@ struct DTLS1_STATE { // outgoing_messages is the queue of outgoing messages from the last handshake // flight. - DTLS_OUTGOING_MESSAGE outgoing_messages[SSL_MAX_HANDSHAKE_FLIGHT]; - uint8_t outgoing_messages_len = 0; + InplaceVector + outgoing_messages; // outgoing_written is the number of outgoing messages that have been // written. @@ -3493,8 +3685,11 @@ bool tls1_configure_aead(SSL *ssl, evp_aead_direction_t direction, bool tls1_change_cipher_state(SSL_HANDSHAKE *hs, evp_aead_direction_t direction); -int tls1_generate_master_secret(SSL_HANDSHAKE *hs, uint8_t *out, - Span premaster); + +// tls1_generate_master_secret computes the master secret from |premaster| and +// writes it to |out|. |out| must have size |SSL3_MASTER_SECRET_SIZE|. +bool tls1_generate_master_secret(SSL_HANDSHAKE *hs, Span out, + Span premaster); // tls1_get_grouplist returns the locally-configured group preference list. Span tls1_get_grouplist(const SSL_HANDSHAKE *ssl); @@ -4022,17 +4217,14 @@ struct ssl_session_st : public bssl::RefCounted { // session. In TLS 1.3 and up, it is the resumption PSK for sessions handed to // the caller, but it stores the resumption secret when stored on |SSL| // objects. - uint8_t secret_length = 0; - uint8_t secret[SSL_MAX_MASTER_KEY_LENGTH] = {0}; + bssl::InplaceVector secret; + + bssl::InplaceVector session_id; - // session_id - valid? - uint8_t session_id_length = 0; - uint8_t session_id[SSL_MAX_SSL_SESSION_ID_LENGTH] = {0}; // this is used to determine whether the session is being reused in // the appropriate context. It is up to the application to set this, // via SSL_new - uint8_t sid_ctx_length = 0; - uint8_t sid_ctx[SSL_MAX_SID_CTX_LENGTH] = {0}; + bssl::InplaceVector sid_ctx; bssl::UniquePtr psk_identity; @@ -4095,8 +4287,7 @@ struct ssl_session_st : public bssl::RefCounted { // original_handshake_hash contains the handshake hash (either SHA-1+MD5 or // SHA-2, depending on TLS version) for the original, full handshake that // created a session. This is used by Channel IDs during resumption. - uint8_t original_handshake_hash[EVP_MAX_MD_SIZE] = {0}; - uint8_t original_handshake_hash_len = 0; + bssl::InplaceVector original_handshake_hash; uint32_t ticket_lifetime_hint = 0; // Session lifetime hint in seconds diff --git a/yass/third_party/boringssl/src/ssl/span_test.cc b/yass/third_party/boringssl/src/ssl/span_test.cc index 481b0fc64e..84cb5a3ed1 100644 --- a/yass/third_party/boringssl/src/ssl/span_test.cc +++ b/yass/third_party/boringssl/src/ssl/span_test.cc @@ -98,5 +98,22 @@ TEST(SpanTest, ConstExpr) { static_assert(span2[0] == 1, "wrong value"); } +TEST(SpanDeathTest, BoundsChecks) { + // Make an array that's larger than we need, so that a failure to bounds check + // won't crash. + const int v[] = {1, 2, 3, 4}; + Span span(v, 3); + // Out of bounds access. + EXPECT_DEATH_IF_SUPPORTED(span[3], ""); + EXPECT_DEATH_IF_SUPPORTED(span.subspan(4), ""); + EXPECT_DEATH_IF_SUPPORTED(span.first(4), ""); + EXPECT_DEATH_IF_SUPPORTED(span.last(4), ""); + // Accessing an empty span. + Span empty(v, 0); + EXPECT_DEATH_IF_SUPPORTED(empty[0], ""); + EXPECT_DEATH_IF_SUPPORTED(empty.front(), ""); + EXPECT_DEATH_IF_SUPPORTED(empty.back(), ""); +} + } // namespace BSSL_NAMESPACE_END diff --git a/yass/third_party/boringssl/src/ssl/ssl_aead_ctx.cc b/yass/third_party/boringssl/src/ssl/ssl_aead_ctx.cc index 4f25d43369..8e7a387b83 100644 --- a/yass/third_party/boringssl/src/ssl/ssl_aead_ctx.cc +++ b/yass/third_party/boringssl/src/ssl/ssl_aead_ctx.cc @@ -80,9 +80,7 @@ UniquePtr SSLAEADContext::Create( aead_ctx->variable_nonce_len_ = (uint8_t)EVP_AEAD_nonce_length(aead); if (mac_key.empty()) { // This is an actual AEAD. - assert(fixed_iv.size() <= sizeof(aead_ctx->fixed_nonce_)); - OPENSSL_memcpy(aead_ctx->fixed_nonce_, fixed_iv.data(), fixed_iv.size()); - aead_ctx->fixed_nonce_len_ = fixed_iv.size(); + aead_ctx->fixed_nonce_.CopyFrom(fixed_iv); if (protocol_version >= TLS1_3_VERSION || cipher->algorithm_enc & SSL_CHACHA20POLY1305) { @@ -246,11 +244,11 @@ bool SSLAEADContext::Open(Span *out, uint8_t type, // Prepend the fixed nonce, or left-pad with zeros if XORing. if (xor_fixed_nonce_) { - nonce_len = fixed_nonce_len_ - variable_nonce_len_; + nonce_len = fixed_nonce_.size() - variable_nonce_len_; OPENSSL_memset(nonce, 0, nonce_len); } else { - OPENSSL_memcpy(nonce, fixed_nonce_, fixed_nonce_len_); - nonce_len += fixed_nonce_len_; + OPENSSL_memcpy(nonce, fixed_nonce_.data(), fixed_nonce_.size()); + nonce_len += fixed_nonce_.size(); } // Add the variable nonce. @@ -270,8 +268,8 @@ bool SSLAEADContext::Open(Span *out, uint8_t type, // XOR the fixed nonce, if necessary. if (xor_fixed_nonce_) { - assert(nonce_len == fixed_nonce_len_); - for (size_t i = 0; i < fixed_nonce_len_; i++) { + assert(nonce_len == fixed_nonce_.size()); + for (size_t i = 0; i < fixed_nonce_.size(); i++) { nonce[i] ^= fixed_nonce_[i]; } } @@ -323,11 +321,11 @@ bool SSLAEADContext::SealScatter(uint8_t *out_prefix, uint8_t *out, // Prepend the fixed nonce, or left-pad with zeros if XORing. if (xor_fixed_nonce_) { - nonce_len = fixed_nonce_len_ - variable_nonce_len_; + nonce_len = fixed_nonce_.size() - variable_nonce_len_; OPENSSL_memset(nonce, 0, nonce_len); } else { - OPENSSL_memcpy(nonce, fixed_nonce_, fixed_nonce_len_); - nonce_len += fixed_nonce_len_; + OPENSSL_memcpy(nonce, fixed_nonce_.data(), fixed_nonce_.size()); + nonce_len += fixed_nonce_.size(); } // Select the variable nonce. @@ -351,14 +349,14 @@ bool SSLAEADContext::SealScatter(uint8_t *out_prefix, uint8_t *out, OPENSSL_PUT_ERROR(SSL, SSL_R_OUTPUT_ALIASES_INPUT); return false; } - OPENSSL_memcpy(out_prefix, nonce + fixed_nonce_len_, + OPENSSL_memcpy(out_prefix, nonce + fixed_nonce_.size(), variable_nonce_len_); } // XOR the fixed nonce, if necessary. if (xor_fixed_nonce_) { - assert(nonce_len == fixed_nonce_len_); - for (size_t i = 0; i < fixed_nonce_len_; i++) { + assert(nonce_len == fixed_nonce_.size()); + for (size_t i = 0; i < fixed_nonce_.size(); i++) { nonce[i] ^= fixed_nonce_[i]; } } diff --git a/yass/third_party/boringssl/src/ssl/ssl_asn1.cc b/yass/third_party/boringssl/src/ssl/ssl_asn1.cc index 3311246c6f..3e1e9d66ae 100644 --- a/yass/third_party/boringssl/src/ssl/ssl_asn1.cc +++ b/yass/third_party/boringssl/src/ssl/ssl_asn1.cc @@ -216,9 +216,10 @@ static int SSL_SESSION_to_bytes_full(const SSL_SESSION *in, CBB *cbb, !CBB_add_asn1(&session, &child, CBS_ASN1_OCTETSTRING) || !CBB_add_u16(&child, (uint16_t)(in->cipher->id & 0xffff)) || // The session ID is irrelevant for a session ticket. - !CBB_add_asn1_octet_string(&session, in->session_id, - for_ticket ? 0 : in->session_id_length) || - !CBB_add_asn1_octet_string(&session, in->secret, in->secret_length) || + !CBB_add_asn1_octet_string(&session, in->session_id.data(), + for_ticket ? 0 : in->session_id.size()) || + !CBB_add_asn1_octet_string(&session, in->secret.data(), + in->secret.size()) || !CBB_add_asn1(&session, &child, kTimeTag) || !CBB_add_asn1_uint64(&child, in->time) || !CBB_add_asn1(&session, &child, kTimeoutTag) || @@ -240,7 +241,8 @@ static int SSL_SESSION_to_bytes_full(const SSL_SESSION *in, CBB *cbb, // Although it is OPTIONAL and usually empty, OpenSSL has // historically always encoded the sid_ctx. if (!CBB_add_asn1(&session, &child, kSessionIDContextTag) || - !CBB_add_asn1_octet_string(&child, in->sid_ctx, in->sid_ctx_length)) { + !CBB_add_asn1_octet_string(&child, in->sid_ctx.data(), + in->sid_ctx.size())) { return 0; } @@ -283,10 +285,10 @@ static int SSL_SESSION_to_bytes_full(const SSL_SESSION *in, CBB *cbb, } } - if (in->original_handshake_hash_len > 0) { + if (!in->original_handshake_hash.empty()) { if (!CBB_add_asn1(&session, &child, kOriginalHandshakeHashTag) || - !CBB_add_asn1_octet_string(&child, in->original_handshake_hash, - in->original_handshake_hash_len)) { + !CBB_add_asn1_octet_string(&child, in->original_handshake_hash.data(), + in->original_handshake_hash.size())) { return 0; } } @@ -473,23 +475,6 @@ static int SSL_SESSION_parse_crypto_buffer(CBS *cbs, return 1; } -// SSL_SESSION_parse_bounded_octet_string parses an optional ASN.1 OCTET STRING -// explicitly tagged with |tag| of size at most |max_out|. -static int SSL_SESSION_parse_bounded_octet_string(CBS *cbs, uint8_t *out, - uint8_t *out_len, - uint8_t max_out, - CBS_ASN1_TAG tag) { - CBS value; - if (!CBS_get_optional_asn1_octet_string(cbs, &value, NULL, tag) || - CBS_len(&value) > max_out) { - OPENSSL_PUT_ERROR(SSL, SSL_R_INVALID_SSL_SESSION); - return 0; - } - OPENSSL_memcpy(out, CBS_data(&value), CBS_len(&value)); - *out_len = static_cast(CBS_len(&value)); - return 1; -} - static int SSL_SESSION_parse_long(CBS *cbs, long *out, CBS_ASN1_TAG tag, long default_value) { uint64_t value; @@ -569,29 +554,16 @@ UniquePtr SSL_SESSION_parse(CBS *cbs, return nullptr; } - CBS session_id, secret; - if (!CBS_get_asn1(&session, &session_id, CBS_ASN1_OCTETSTRING) || - CBS_len(&session_id) > SSL3_MAX_SSL_SESSION_ID_LENGTH || - !CBS_get_asn1(&session, &secret, CBS_ASN1_OCTETSTRING) || - CBS_len(&secret) > SSL_MAX_MASTER_KEY_LENGTH) { - OPENSSL_PUT_ERROR(SSL, SSL_R_INVALID_SSL_SESSION); - return nullptr; - } - OPENSSL_memcpy(ret->session_id, CBS_data(&session_id), CBS_len(&session_id)); - static_assert(SSL3_MAX_SSL_SESSION_ID_LENGTH <= UINT8_MAX, - "max session ID is too large"); - ret->session_id_length = static_cast(CBS_len(&session_id)); - OPENSSL_memcpy(ret->secret, CBS_data(&secret), CBS_len(&secret)); - static_assert(SSL_MAX_MASTER_KEY_LENGTH <= UINT8_MAX, - "max secret is too large"); - ret->secret_length = static_cast(CBS_len(&secret)); - - CBS child; + CBS session_id, secret, child; uint64_t timeout; - if (!CBS_get_asn1(&session, &child, kTimeTag) || + if (!CBS_get_asn1(&session, &session_id, CBS_ASN1_OCTETSTRING) || + !ret->session_id.TryCopyFrom(session_id) || + !CBS_get_asn1(&session, &secret, CBS_ASN1_OCTETSTRING) || + !ret->secret.TryCopyFrom(secret) || + !CBS_get_asn1(&session, &child, kTimeTag) || !CBS_get_asn1_uint64(&child, &ret->time) || !CBS_get_asn1(&session, &child, kTimeoutTag) || - !CBS_get_asn1_uint64(&child, &timeout) || + !CBS_get_asn1_uint64(&child, &timeout) || // timeout > UINT32_MAX) { OPENSSL_PUT_ERROR(SSL, SSL_R_INVALID_SSL_SESSION); return nullptr; @@ -608,9 +580,10 @@ UniquePtr SSL_SESSION_parse(CBS *cbs, } // |peer| is processed with the certificate chain. - if (!SSL_SESSION_parse_bounded_octet_string( - &session, ret->sid_ctx, &ret->sid_ctx_length, sizeof(ret->sid_ctx), - kSessionIDContextTag) || + CBS sid_ctx; + if (!CBS_get_optional_asn1_octet_string( + &session, &sid_ctx, /*out_present=*/nullptr, kSessionIDContextTag) || + !ret->sid_ctx.TryCopyFrom(sid_ctx) || !SSL_SESSION_parse_long(&session, &ret->verify_result, kVerifyResultTag, X509_V_OK)) { return nullptr; @@ -648,10 +621,11 @@ UniquePtr SSL_SESSION_parse(CBS *cbs, ret->peer_sha256_valid = false; } - if (!SSL_SESSION_parse_bounded_octet_string( - &session, ret->original_handshake_hash, - &ret->original_handshake_hash_len, - sizeof(ret->original_handshake_hash), kOriginalHandshakeHashTag) || + CBS original_handshake_hash; + if (!CBS_get_optional_asn1_octet_string(&session, &original_handshake_hash, + /*out_present=*/nullptr, + kOriginalHandshakeHashTag) || + !ret->original_handshake_hash.TryCopyFrom(original_handshake_hash) || !SSL_SESSION_parse_crypto_buffer(&session, &ret->signed_cert_timestamp_list, kSignedCertTimestampListTag, pool) || diff --git a/yass/third_party/boringssl/src/ssl/ssl_cert.cc b/yass/third_party/boringssl/src/ssl/ssl_cert.cc index e30e27da35..bd0143e748 100644 --- a/yass/third_party/boringssl/src/ssl/ssl_cert.cc +++ b/yass/third_party/boringssl/src/ssl/ssl_cert.cc @@ -165,9 +165,7 @@ UniquePtr ssl_cert_dup(CERT *cert) { ret->x509_method->cert_dup(ret.get(), cert); - ret->sid_ctx_length = cert->sid_ctx_length; - OPENSSL_memcpy(ret->sid_ctx, cert->sid_ctx, sizeof(ret->sid_ctx)); - + ret->sid_ctx = cert->sid_ctx; return ret; } diff --git a/yass/third_party/boringssl/src/ssl/ssl_lib.cc b/yass/third_party/boringssl/src/ssl/ssl_lib.cc index 1458b456e5..c84c507104 100644 --- a/yass/third_party/boringssl/src/ssl/ssl_lib.cc +++ b/yass/third_party/boringssl/src/ssl/ssl_lib.cc @@ -489,11 +489,8 @@ bool SSL_get_traffic_secrets(const SSL *ssl, return false; } - *out_read_traffic_secret = Span( - ssl->s3->read_traffic_secret, ssl->s3->read_traffic_secret_len); - *out_write_traffic_secret = Span( - ssl->s3->write_traffic_secret, ssl->s3->write_traffic_secret_len); - + *out_read_traffic_secret = ssl->s3->read_traffic_secret; + *out_write_traffic_secret = ssl->s3->write_traffic_secret; return true; } @@ -519,16 +516,11 @@ int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings) { } static uint32_t ssl_session_hash(const SSL_SESSION *sess) { - return ssl_hash_session_id( - MakeConstSpan(sess->session_id, sess->session_id_length)); + return ssl_hash_session_id(sess->session_id); } static int ssl_session_cmp(const SSL_SESSION *a, const SSL_SESSION *b) { - if (a->session_id_length != b->session_id_length) { - return 1; - } - - return OPENSSL_memcmp(a->session_id, b->session_id, a->session_id_length); + return MakeConstSpan(a->session_id) == b->session_id ? 0 : 1; } ssl_ctx_st::ssl_ctx_st(const SSL_METHOD *ssl_method) @@ -1522,36 +1514,31 @@ int SSL_get_tls_unique(const SSL *ssl, uint8_t *out, size_t *out_len, // The tls-unique value is the first Finished message in the handshake, which // is the client's in a full handshake and the server's for a resumption. See // https://tools.ietf.org/html/rfc5929#section-3.1. - const uint8_t *finished = ssl->s3->previous_client_finished; - size_t finished_len = ssl->s3->previous_client_finished_len; + Span finished = ssl->s3->previous_client_finished; if (ssl->session != NULL) { // tls-unique is broken for resumed sessions unless EMS is used. if (!ssl->session->extended_master_secret) { return 0; } finished = ssl->s3->previous_server_finished; - finished_len = ssl->s3->previous_server_finished_len; } - *out_len = finished_len; - if (finished_len > max_out) { + *out_len = finished.size(); + if (finished.size() > max_out) { *out_len = max_out; } - OPENSSL_memcpy(out, finished, *out_len); + OPENSSL_memcpy(out, finished.data(), *out_len); return 1; } static int set_session_id_context(CERT *cert, const uint8_t *sid_ctx, - size_t sid_ctx_len) { - if (sid_ctx_len > sizeof(cert->sid_ctx)) { + size_t sid_ctx_len) { + if (!cert->sid_ctx.TryCopyFrom(MakeConstSpan(sid_ctx, sid_ctx_len))) { OPENSSL_PUT_ERROR(SSL, SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG); return 0; } - static_assert(sizeof(cert->sid_ctx) < 256, "sid_ctx too large"); - cert->sid_ctx_length = (uint8_t)sid_ctx_len; - OPENSSL_memcpy(cert->sid_ctx, sid_ctx, sid_ctx_len); return 1; } @@ -1574,8 +1561,8 @@ const uint8_t *SSL_get0_session_id_context(const SSL *ssl, size_t *out_len) { *out_len = 0; return NULL; } - *out_len = ssl->config->cert->sid_ctx_length; - return ssl->config->cert->sid_ctx; + *out_len = ssl->config->cert->sid_ctx.size(); + return ssl->config->cert->sid_ctx.data(); } int SSL_get_fd(const SSL *ssl) { return SSL_get_rfd(ssl); } @@ -1650,13 +1637,12 @@ int SSL_set_rfd(SSL *ssl, int fd) { } #endif // !OPENSSL_NO_SOCK -static size_t copy_finished(void *out, size_t out_len, const uint8_t *in, - size_t in_len) { - if (out_len > in_len) { - out_len = in_len; +static size_t copy_finished(void *out, size_t out_len, Span in) { + if (out_len > in.size()) { + out_len = in.size(); } - OPENSSL_memcpy(out, in, out_len); - return in_len; + OPENSSL_memcpy(out, in.data(), out_len); + return in.size(); } size_t SSL_get_finished(const SSL *ssl, void *buf, size_t count) { @@ -1666,12 +1652,10 @@ size_t SSL_get_finished(const SSL *ssl, void *buf, size_t count) { } if (ssl->server) { - return copy_finished(buf, count, ssl->s3->previous_server_finished, - ssl->s3->previous_server_finished_len); + return copy_finished(buf, count, ssl->s3->previous_server_finished); } - return copy_finished(buf, count, ssl->s3->previous_client_finished, - ssl->s3->previous_client_finished_len); + return copy_finished(buf, count, ssl->s3->previous_client_finished); } size_t SSL_get_peer_finished(const SSL *ssl, void *buf, size_t count) { @@ -1681,12 +1665,10 @@ size_t SSL_get_peer_finished(const SSL *ssl, void *buf, size_t count) { } if (ssl->server) { - return copy_finished(buf, count, ssl->s3->previous_client_finished, - ssl->s3->previous_client_finished_len); + return copy_finished(buf, count, ssl->s3->previous_client_finished); } - return copy_finished(buf, count, ssl->s3->previous_server_finished, - ssl->s3->previous_server_finished_len); + return copy_finished(buf, count, ssl->s3->previous_server_finished); } int SSL_get_verify_mode(const SSL *ssl) { diff --git a/yass/third_party/boringssl/src/ssl/ssl_session.cc b/yass/third_party/boringssl/src/ssl/ssl_session.cc index 92bd822155..f455b1b623 100644 --- a/yass/third_party/boringssl/src/ssl/ssl_session.cc +++ b/yass/third_party/boringssl/src/ssl/ssl_session.cc @@ -197,12 +197,10 @@ UniquePtr SSL_SESSION_dup(SSL_SESSION *session, int dup_flags) { new_session->is_server = session->is_server; new_session->ssl_version = session->ssl_version; new_session->is_quic = session->is_quic; - new_session->sid_ctx_length = session->sid_ctx_length; - OPENSSL_memcpy(new_session->sid_ctx, session->sid_ctx, session->sid_ctx_length); + new_session->sid_ctx = session->sid_ctx; // Copy the key material. - new_session->secret_length = session->secret_length; - OPENSSL_memcpy(new_session->secret, session->secret, session->secret_length); + new_session->secret = session->secret; new_session->cipher = session->cipher; // Copy authentication state. @@ -247,17 +245,9 @@ UniquePtr SSL_SESSION_dup(SSL_SESSION *session, int dup_flags) { // Copy non-authentication connection properties. if (dup_flags & SSL_SESSION_INCLUDE_NONAUTH) { - new_session->session_id_length = session->session_id_length; - OPENSSL_memcpy(new_session->session_id, session->session_id, - session->session_id_length); - + new_session->session_id = session->session_id; new_session->group_id = session->group_id; - - OPENSSL_memcpy(new_session->original_handshake_hash, - session->original_handshake_hash, - session->original_handshake_hash_len); - new_session->original_handshake_hash_len = - session->original_handshake_hash_len; + new_session->original_handshake_hash = session->original_handshake_hash; new_session->ticket_lifetime_hint = session->ticket_lifetime_hint; new_session->ticket_age_add = session->ticket_age_add; new_session->ticket_max_early_data = session->ticket_max_early_data; @@ -383,13 +373,10 @@ bool ssl_get_new_session(SSL_HANDSHAKE *hs) { session->auth_timeout = ssl->session_ctx->session_timeout; } - if (hs->config->cert->sid_ctx_length > sizeof(session->sid_ctx)) { + if (!session->sid_ctx.TryCopyFrom(hs->config->cert->sid_ctx)) { OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR); return false; } - OPENSSL_memcpy(session->sid_ctx, hs->config->cert->sid_ctx, - hs->config->cert->sid_ctx_length); - session->sid_ctx_length = hs->config->cert->sid_ctx_length; // The session is marked not resumable until it is completely filled in. session->not_resumable = true; @@ -580,13 +567,8 @@ bool ssl_encrypt_ticket(SSL_HANDSHAKE *hs, CBB *out, bool ssl_session_is_context_valid(const SSL_HANDSHAKE *hs, const SSL_SESSION *session) { - if (session == NULL) { - return false; - } - - return session->sid_ctx_length == hs->config->cert->sid_ctx_length && - OPENSSL_memcmp(session->sid_ctx, hs->config->cert->sid_ctx, - hs->config->cert->sid_ctx_length) == 0; + return session != nullptr && + MakeConstSpan(session->sid_ctx) == hs->config->cert->sid_ctx; } bool ssl_session_is_time_valid(const SSL *ssl, const SSL_SESSION *session) { @@ -655,9 +637,7 @@ static enum ssl_hs_wait_t ssl_lookup_session( auto cmp = [](const void *key, const SSL_SESSION *sess) -> int { Span key_id = *reinterpret_cast *>(key); - Span sess_id = - MakeConstSpan(sess->session_id, sess->session_id_length); - return key_id == sess_id ? 0 : 1; + return key_id == sess->session_id ? 0 : 1; }; MutexReadLock lock(&ssl->session_ctx->lock); // |lh_SSL_SESSION_retrieve_key| returns a non-owning pointer. @@ -752,7 +732,7 @@ enum ssl_hs_wait_t ssl_get_prev_session(SSL_HANDSHAKE *hs, } static bool remove_session(SSL_CTX *ctx, SSL_SESSION *session, bool lock) { - if (session == nullptr || session->session_id_length == 0) { + if (session == nullptr || session->session_id.empty()) { return false; } @@ -971,21 +951,18 @@ void SSL_SESSION_free(SSL_SESSION *session) { const uint8_t *SSL_SESSION_get_id(const SSL_SESSION *session, unsigned *out_len) { if (out_len != NULL) { - *out_len = session->session_id_length; + *out_len = session->session_id.size(); } - return session->session_id; + return session->session_id.data(); } int SSL_SESSION_set1_id(SSL_SESSION *session, const uint8_t *sid, size_t sid_len) { - if (sid_len > SSL_MAX_SSL_SESSION_ID_LENGTH) { + if (!session->session_id.TryCopyFrom(MakeConstSpan(sid, sid_len))) { OPENSSL_PUT_ERROR(SSL, SSL_R_SSL_SESSION_ID_TOO_LONG); return 0; } - // Use memmove in case someone passes in the output of |SSL_SESSION_get_id|. - OPENSSL_memmove(session->session_id, sid, sid_len); - session->session_id_length = sid_len; return 1; } @@ -1035,14 +1012,13 @@ void SSL_SESSION_get0_ocsp_response(const SSL_SESSION *session, size_t SSL_SESSION_get_master_key(const SSL_SESSION *session, uint8_t *out, size_t max_out) { - // TODO(davidben): Fix secret_length's type and remove these casts. if (max_out == 0) { - return (size_t)session->secret_length; + return session->secret.size(); } - if (max_out > (size_t)session->secret_length) { - max_out = (size_t)session->secret_length; + if (max_out > session->secret.size()) { + max_out = session->secret.size(); } - OPENSSL_memcpy(out, session->secret, max_out); + OPENSSL_memcpy(out, session->secret.data(), max_out); return max_out; } @@ -1068,22 +1044,18 @@ uint32_t SSL_SESSION_set_timeout(SSL_SESSION *session, uint32_t timeout) { const uint8_t *SSL_SESSION_get0_id_context(const SSL_SESSION *session, unsigned *out_len) { if (out_len != NULL) { - *out_len = session->sid_ctx_length; + *out_len = session->sid_ctx.size(); } - return session->sid_ctx; + return session->sid_ctx.data(); } int SSL_SESSION_set1_id_context(SSL_SESSION *session, const uint8_t *sid_ctx, size_t sid_ctx_len) { - if (sid_ctx_len > sizeof(session->sid_ctx)) { + if (!session->sid_ctx.TryCopyFrom(MakeConstSpan(sid_ctx, sid_ctx_len))) { OPENSSL_PUT_ERROR(SSL, SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG); return 0; } - static_assert(sizeof(session->sid_ctx) < 256, "sid_ctx_len does not fit"); - session->sid_ctx_length = (uint8_t)sid_ctx_len; - OPENSSL_memcpy(session->sid_ctx, sid_ctx, sid_ctx_len); - return 1; } @@ -1093,7 +1065,7 @@ int SSL_SESSION_should_be_single_use(const SSL_SESSION *session) { int SSL_SESSION_is_resumable(const SSL_SESSION *session) { return !session->not_resumable && - (session->session_id_length != 0 || !session->ticket.empty()); + (!session->session_id.empty() || !session->ticket.empty()); } int SSL_SESSION_has_ticket(const SSL_SESSION *session) { diff --git a/yass/third_party/boringssl/src/ssl/ssl_test.cc b/yass/third_party/boringssl/src/ssl/ssl_test.cc index b55288588c..4d74bfa95a 100644 --- a/yass/third_party/boringssl/src/ssl/ssl_test.cc +++ b/yass/third_party/boringssl/src/ssl/ssl_test.cc @@ -567,6 +567,13 @@ static bool CipherListsEqual(SSL_CTX *ctx, return true; } +TEST(ArrayDeathTest, BoundsChecks) { + Array array; + const int v[] = {1, 2, 3, 4}; + ASSERT_TRUE(array.CopyFrom(v)); + EXPECT_DEATH_IF_SUPPORTED(array[4], ""); +} + TEST(VectorTest, Resize) { Vector vec; ASSERT_TRUE(vec.empty()); @@ -587,6 +594,16 @@ TEST(VectorTest, Resize) { for (size_t i = 0; i < vec.size(); i++) { EXPECT_EQ(vec[i], i == 0 ? 42 : i); } + + // Clearing the vector should give an empty one. + vec.clear(); + ASSERT_TRUE(vec.empty()); + EXPECT_EQ(vec.size(), 0u); + + ASSERT_TRUE(vec.Push(42)); + ASSERT_TRUE(!vec.empty()); + EXPECT_EQ(vec.size(), 1u); + EXPECT_EQ(vec[0], 42u); } TEST(VectorTest, MoveConstructor) { @@ -635,6 +652,175 @@ TEST(VectorTest, VectorContainingVectors) { } } +TEST(VectorTest, NotDefaultConstructible) { + struct NotDefaultConstructible { + explicit NotDefaultConstructible(size_t n) { array.Init(n); } + Array array; + }; + + Vector vec; + vec.Push(NotDefaultConstructible(0)); + vec.Push(NotDefaultConstructible(1)); + vec.Push(NotDefaultConstructible(2)); + vec.Push(NotDefaultConstructible(3)); + EXPECT_EQ(vec.size(), 4u); + EXPECT_EQ(0u, vec[0].array.size()); + EXPECT_EQ(1u, vec[1].array.size()); + EXPECT_EQ(2u, vec[2].array.size()); + EXPECT_EQ(3u, vec[3].array.size()); +} + +TEST(VectorDeathTest, BoundsChecks) { + Vector vec; + ASSERT_TRUE(vec.Push(1)); + // Within bounds of the capacity, but not the vector. + EXPECT_DEATH_IF_SUPPORTED(vec[1], ""); + // Not within bounds of the capacity either. + EXPECT_DEATH_IF_SUPPORTED(vec[10000], ""); +} + +TEST(InplaceVector, Basic) { + InplaceVector vec; + EXPECT_TRUE(vec.empty()); + EXPECT_EQ(0u, vec.size()); + EXPECT_EQ(vec.begin(), vec.end()); + + int data3[] = {1, 2, 3}; + ASSERT_TRUE(vec.TryCopyFrom(data3)); + EXPECT_FALSE(vec.empty()); + EXPECT_EQ(3u, vec.size()); + auto iter = vec.begin(); + EXPECT_EQ(1, vec[0]); + EXPECT_EQ(1, *iter); + iter++; + EXPECT_EQ(2, vec[1]); + EXPECT_EQ(2, *iter); + iter++; + EXPECT_EQ(3, vec[2]); + EXPECT_EQ(3, *iter); + iter++; + EXPECT_EQ(iter, vec.end()); + EXPECT_EQ(MakeConstSpan(vec), MakeConstSpan(data3)); + + InplaceVector vec2 = vec; + EXPECT_EQ(MakeConstSpan(vec), MakeConstSpan(vec2)); + + InplaceVector vec3; + vec3 = vec; + EXPECT_EQ(MakeConstSpan(vec), MakeConstSpan(vec2)); + + int data4[] = {1, 2, 3, 4}; + ASSERT_TRUE(vec.TryCopyFrom(data4)); + EXPECT_EQ(MakeConstSpan(vec), MakeConstSpan(data4)); + + int data5[] = {1, 2, 3, 4, 5}; + EXPECT_FALSE(vec.TryCopyFrom(data5)); + EXPECT_FALSE(vec.TryResize(5)); + + // Shrink the vector. + ASSERT_TRUE(vec.TryResize(3)); + EXPECT_EQ(MakeConstSpan(vec), MakeConstSpan(data3)); + + // Enlarge it again. The new value should have been value-initialized. + ASSERT_TRUE(vec.TryResize(4)); + EXPECT_EQ(vec[3], 0); + + // Self-assignment should not break the vector. Indirect through a pointer to + // avoid tripping a compiler warning. + vec.CopyFrom(data4); + const auto *ptr = &vec; + vec = *ptr; + EXPECT_EQ(MakeConstSpan(vec), MakeConstSpan(data4)); +} + +TEST(InplaceVectorTest, ComplexType) { + InplaceVector, 4> vec_of_vecs; + const std::vector data[] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; + vec_of_vecs.CopyFrom(data); + EXPECT_EQ(MakeConstSpan(vec_of_vecs), MakeConstSpan(data)); + + vec_of_vecs.Resize(2); + EXPECT_EQ(MakeConstSpan(vec_of_vecs), MakeConstSpan(data, 2)); + + vec_of_vecs.Resize(4); + EXPECT_EQ(4u, vec_of_vecs.size()); + EXPECT_EQ(vec_of_vecs[0], data[0]); + EXPECT_EQ(vec_of_vecs[1], data[1]); + EXPECT_TRUE(vec_of_vecs[2].empty()); + EXPECT_TRUE(vec_of_vecs[3].empty()); + + // Copy-construction. + InplaceVector, 4> vec_of_vecs2 = vec_of_vecs; + EXPECT_EQ(4u, vec_of_vecs2.size()); + EXPECT_EQ(vec_of_vecs2[0], data[0]); + EXPECT_EQ(vec_of_vecs2[1], data[1]); + EXPECT_TRUE(vec_of_vecs2[2].empty()); + EXPECT_TRUE(vec_of_vecs2[3].empty()); + + // Copy-assignment. + InplaceVector, 4> vec_of_vecs3; + vec_of_vecs3 = vec_of_vecs; + EXPECT_EQ(4u, vec_of_vecs3.size()); + EXPECT_EQ(vec_of_vecs3[0], data[0]); + EXPECT_EQ(vec_of_vecs3[1], data[1]); + EXPECT_TRUE(vec_of_vecs3[2].empty()); + EXPECT_TRUE(vec_of_vecs3[3].empty()); + + // Move-construction. + InplaceVector, 4> vec_of_vecs4 = std::move(vec_of_vecs); + EXPECT_EQ(4u, vec_of_vecs4.size()); + EXPECT_EQ(vec_of_vecs4[0], data[0]); + EXPECT_EQ(vec_of_vecs4[1], data[1]); + EXPECT_TRUE(vec_of_vecs4[2].empty()); + EXPECT_TRUE(vec_of_vecs4[3].empty()); + + // The elements of the original vector should have been moved-from. + EXPECT_EQ(4u, vec_of_vecs.size()); + for (const auto &vec : vec_of_vecs) { + EXPECT_TRUE(vec.empty()); + } + + // Move-assignment. + InplaceVector, 4> vec_of_vecs5; + vec_of_vecs5 = std::move(vec_of_vecs4); + EXPECT_EQ(4u, vec_of_vecs5.size()); + EXPECT_EQ(vec_of_vecs5[0], data[0]); + EXPECT_EQ(vec_of_vecs5[1], data[1]); + EXPECT_TRUE(vec_of_vecs5[2].empty()); + EXPECT_TRUE(vec_of_vecs5[3].empty()); + + // The elements of the original vector should have been moved-from. + EXPECT_EQ(4u, vec_of_vecs4.size()); + for (const auto &vec : vec_of_vecs4) { + EXPECT_TRUE(vec.empty()); + } + + std::vector v = {42}; + vec_of_vecs5.Resize(3); + EXPECT_TRUE(vec_of_vecs5.TryPushBack(v)); + EXPECT_EQ(v, vec_of_vecs5[3]); + EXPECT_FALSE(vec_of_vecs5.TryPushBack(v)); +} + +TEST(InplaceVectorDeathTest, BoundsChecks) { + InplaceVector vec; + // The vector is currently empty. + EXPECT_DEATH_IF_SUPPORTED(vec[0], ""); + int data[] = {1, 2, 3}; + vec.CopyFrom(data); + // Some more out-of-bounds elements. + EXPECT_DEATH_IF_SUPPORTED(vec[3], ""); + EXPECT_DEATH_IF_SUPPORTED(vec[4], ""); + EXPECT_DEATH_IF_SUPPORTED(vec[1000], ""); + // The vector cannot be resized past the capacity. + EXPECT_DEATH_IF_SUPPORTED(vec.Resize(5), ""); + EXPECT_DEATH_IF_SUPPORTED(vec.ResizeMaybeUninit(5), ""); + int too_much_data[] = {1, 2, 3, 4, 5}; + EXPECT_DEATH_IF_SUPPORTED(vec.CopyFrom(too_much_data), ""); + vec.Resize(4); + EXPECT_DEATH_IF_SUPPORTED(vec.PushBack(42), ""); +} + TEST(ReconstructSeqnumTest, Increment) { // Test simple cases from the beginning of an epoch with both 8- and 16-bit // wire sequence numbers. diff --git a/yass/third_party/boringssl/src/ssl/ssl_transcript.cc b/yass/third_party/boringssl/src/ssl/ssl_transcript.cc index 58fd21e57c..239363d380 100644 --- a/yass/third_party/boringssl/src/ssl/ssl_transcript.cc +++ b/yass/third_party/boringssl/src/ssl/ssl_transcript.cc @@ -259,8 +259,7 @@ bool SSLTranscript::GetFinishedMAC(uint8_t *out, size_t *out_len, } static const size_t kFinishedLen = 12; - if (!tls1_prf(Digest(), MakeSpan(out, kFinishedLen), - MakeConstSpan(session->secret, session->secret_length), label, + if (!tls1_prf(Digest(), MakeSpan(out, kFinishedLen), session->secret, label, MakeConstSpan(digest, digest_len), {})) { return false; } diff --git a/yass/third_party/boringssl/src/ssl/t1_enc.cc b/yass/third_party/boringssl/src/ssl/t1_enc.cc index 1895bac59a..360c855139 100644 --- a/yass/third_party/boringssl/src/ssl/t1_enc.cc +++ b/yass/third_party/boringssl/src/ssl/t1_enc.cc @@ -191,14 +191,13 @@ static bool get_key_block_lengths(const SSL *ssl, size_t *out_mac_secret_len, static bool generate_key_block(const SSL *ssl, Span out, const SSL_SESSION *session) { - auto secret = MakeConstSpan(session->secret, session->secret_length); static const char kLabel[] = "key expansion"; auto label = MakeConstSpan(kLabel, sizeof(kLabel) - 1); const EVP_MD *digest = ssl_session_get_digest(session); // Note this function assumes that |session|'s key material corresponds to // |ssl->s3->client_random| and |ssl->s3->server_random|. - return tls1_prf(digest, out, secret, label, ssl->s3->server_random, + return tls1_prf(digest, out, session->secret, label, ssl->s3->server_random, ssl->s3->client_random); } @@ -266,33 +265,33 @@ bool tls1_change_cipher_state(SSL_HANDSHAKE *hs, ssl_handshake_session(hs), {}); } -int tls1_generate_master_secret(SSL_HANDSHAKE *hs, uint8_t *out, - Span premaster) { +bool tls1_generate_master_secret(SSL_HANDSHAKE *hs, Span out, + Span premaster) { static const char kMasterSecretLabel[] = "master secret"; static const char kExtendedMasterSecretLabel[] = "extended master secret"; + BSSL_CHECK(out.size() == SSL3_MASTER_SECRET_SIZE); const SSL *ssl = hs->ssl; - auto out_span = MakeSpan(out, SSL3_MASTER_SECRET_SIZE); if (hs->extended_master_secret) { auto label = MakeConstSpan(kExtendedMasterSecretLabel, sizeof(kExtendedMasterSecretLabel) - 1); uint8_t digests[EVP_MAX_MD_SIZE]; size_t digests_len; if (!hs->transcript.GetHash(digests, &digests_len) || - !tls1_prf(hs->transcript.Digest(), out_span, premaster, label, + !tls1_prf(hs->transcript.Digest(), out, premaster, label, MakeConstSpan(digests, digests_len), {})) { - return 0; + return false; } } else { auto label = MakeConstSpan(kMasterSecretLabel, sizeof(kMasterSecretLabel) - 1); - if (!tls1_prf(hs->transcript.Digest(), out_span, premaster, label, + if (!tls1_prf(hs->transcript.Digest(), out, premaster, label, ssl->s3->client_random, ssl->s3->server_random)) { - return 0; + return false; } } - return SSL3_MASTER_SECRET_SIZE; + return true; } BSSL_NAMESPACE_END @@ -334,7 +333,7 @@ int SSL_export_keying_material(SSL *ssl, uint8_t *out, size_t out_len, int use_context) { // In TLS 1.3, the exporter may be used whenever the secret has been derived. if (ssl->s3->version != 0 && ssl_protocol_version(ssl) >= TLS1_3_VERSION) { - if (ssl->s3->exporter_secret_len == 0) { + if (ssl->s3->exporter_secret.empty()) { OPENSSL_PUT_ERROR(SSL, SSL_R_HANDSHAKE_NOT_COMPLETE); return 0; } @@ -343,8 +342,7 @@ int SSL_export_keying_material(SSL *ssl, uint8_t *out, size_t out_len, context_len = 0; } return tls13_export_keying_material( - ssl, MakeSpan(out, out_len), - MakeConstSpan(ssl->s3->exporter_secret, ssl->s3->exporter_secret_len), + ssl, MakeSpan(out, out_len), ssl->s3->exporter_secret, MakeConstSpan(label, label_len), MakeConstSpan(context, context_len)); } @@ -379,7 +377,6 @@ int SSL_export_keying_material(SSL *ssl, uint8_t *out, size_t out_len, const SSL_SESSION *session = SSL_get_session(ssl); const EVP_MD *digest = ssl_session_get_digest(session); - return tls1_prf(digest, MakeSpan(out, out_len), - MakeConstSpan(session->secret, session->secret_length), + return tls1_prf(digest, MakeSpan(out, out_len), session->secret, MakeConstSpan(label, label_len), seed, {}); } diff --git a/yass/third_party/boringssl/src/ssl/tls13_client.cc b/yass/third_party/boringssl/src/ssl/tls13_client.cc index fd9ab0aa8a..76f970c179 100644 --- a/yass/third_party/boringssl/src/ssl/tls13_client.cc +++ b/yass/third_party/boringssl/src/ssl/tls13_client.cc @@ -109,24 +109,21 @@ static bool parse_server_hello_tls13(const SSL_HANDSHAKE *hs, if (!ssl_parse_server_hello(out, out_alert, msg)) { return false; } - uint16_t server_hello_version = TLS1_2_VERSION; - if (SSL_is_dtls(hs->ssl)) { - server_hello_version = DTLS1_2_VERSION; - } + uint16_t expected_version = + SSL_is_dtls(hs->ssl) ? DTLS1_2_VERSION : TLS1_2_VERSION; // DTLS 1.3 disables "compatibility mode" (RFC 8446, appendix D.4). When // disabled, servers MUST NOT echo the legacy_session_id (RFC 9147, section // 5). The client could have sent a session ID indicating its willingness to // resume a DTLS 1.2 session, so just checking that the session IDs match is // incorrect. - bool session_id_match = - (SSL_is_dtls(hs->ssl) && CBS_len(&out->session_id) == 0) || - (!SSL_is_dtls(hs->ssl) && - CBS_mem_equal(&out->session_id, hs->session_id, hs->session_id_len)); + Span expected_session_id = SSL_is_dtls(hs->ssl) + ? Span() + : MakeConstSpan(hs->session_id); - // The RFC8446 version of the structure fixes some legacy values. - // Additionally, the session ID must echo the original one. - if (out->legacy_version != server_hello_version || - out->compression_method != 0 || !session_id_match || + // RFC 8446 fixes some legacy values. Check them. + if (out->legacy_version != expected_version || // + out->compression_method != 0 || + Span(out->session_id) != expected_session_id || CBS_len(&out->extensions) == 0) { OPENSSL_PUT_ERROR(SSL, SSL_R_DECODE_ERROR); *out_alert = SSL_AD_DECODE_ERROR; @@ -497,11 +494,9 @@ static enum ssl_hs_wait_t do_read_server_hello(SSL_HANDSHAKE *hs) { // Set up the key schedule and incorporate the PSK into the running secret. size_t hash_len = EVP_MD_size( ssl_get_handshake_digest(ssl_protocol_version(ssl), hs->new_cipher)); - if (!tls13_init_key_schedule( - hs, ssl->s3->session_reused - ? MakeConstSpan(hs->new_session->secret, - hs->new_session->secret_length) - : MakeConstSpan(kZeroes, hash_len))) { + if (!tls13_init_key_schedule(hs, ssl->s3->session_reused + ? MakeConstSpan(hs->new_session->secret) + : MakeConstSpan(kZeroes, hash_len))) { return ssl_hs_error; } @@ -1166,8 +1161,8 @@ UniquePtr tls13_create_session_with_ticket(SSL *ssl, CBS *body) { // Historically, OpenSSL filled in fake session IDs for ticket-based sessions. // Envoy's tests depend on this, although perhaps they shouldn't. - SHA256(CBS_data(&ticket), CBS_len(&ticket), session->session_id); - session->session_id_length = SHA256_DIGEST_LENGTH; + session->session_id.ResizeMaybeUninit(SHA256_DIGEST_LENGTH); + SHA256(CBS_data(&ticket), CBS_len(&ticket), session->session_id.data()); session->ticket_age_add_valid = true; session->not_resumable = false; diff --git a/yass/third_party/boringssl/src/ssl/tls13_enc.cc b/yass/third_party/boringssl/src/ssl/tls13_enc.cc index fad411757e..f601b1a8c7 100644 --- a/yass/third_party/boringssl/src/ssl/tls13_enc.cc +++ b/yass/third_party/boringssl/src/ssl/tls13_enc.cc @@ -83,9 +83,7 @@ bool tls13_init_early_key_schedule(SSL_HANDSHAKE *hs, return init_key_schedule(hs, transcript, ssl_session_protocol_version(session), session->cipher) && - hkdf_extract_to_secret( - hs, *transcript, - MakeConstSpan(session->secret, session->secret_length)); + hkdf_extract_to_secret(hs, *transcript, session->secret); } static Span label_to_span(const char *label) { @@ -249,17 +247,13 @@ bool tls13_set_traffic_key(SSL *ssl, enum ssl_encryption_level_t level, secret_for_quic)) { return false; } - OPENSSL_memmove(ssl->s3->read_traffic_secret, traffic_secret.data(), - traffic_secret.size()); - ssl->s3->read_traffic_secret_len = traffic_secret.size(); + ssl->s3->read_traffic_secret.CopyFrom(traffic_secret); } else { if (!ssl->method->set_write_state(ssl, level, std::move(traffic_aead), secret_for_quic)) { return false; } - OPENSSL_memmove(ssl->s3->write_traffic_secret, traffic_secret.data(), - traffic_secret.size()); - ssl->s3->write_traffic_secret_len = traffic_secret.size(); + ssl->s3->write_traffic_secret.CopyFrom(traffic_secret); } return true; @@ -309,7 +303,6 @@ bool tls13_derive_handshake_secrets(SSL_HANDSHAKE *hs) { bool tls13_derive_application_secrets(SSL_HANDSHAKE *hs) { SSL *const ssl = hs->ssl; - ssl->s3->exporter_secret_len = hs->transcript.DigestLen(); if (!derive_secret(hs, hs->client_traffic_secret_0(), label_to_span(kTLS13LabelClientApplicationTraffic)) || !ssl_log_secret(ssl, "CLIENT_TRAFFIC_SECRET_0", @@ -317,13 +310,13 @@ bool tls13_derive_application_secrets(SSL_HANDSHAKE *hs) { !derive_secret(hs, hs->server_traffic_secret_0(), label_to_span(kTLS13LabelServerApplicationTraffic)) || !ssl_log_secret(ssl, "SERVER_TRAFFIC_SECRET_0", - hs->server_traffic_secret_0()) || - !derive_secret( - hs, MakeSpan(ssl->s3->exporter_secret, ssl->s3->exporter_secret_len), - label_to_span(kTLS13LabelExporter)) || - !ssl_log_secret(ssl, "EXPORTER_SECRET", - MakeConstSpan(ssl->s3->exporter_secret, - ssl->s3->exporter_secret_len))) { + hs->server_traffic_secret_0())) { + return false; + } + ssl->s3->exporter_secret.ResizeMaybeUninit(hs->transcript.DigestLen()); + if (!derive_secret(hs, MakeSpan(ssl->s3->exporter_secret), + label_to_span(kTLS13LabelExporter)) || + !ssl_log_secret(ssl, "EXPORTER_SECRET", ssl->s3->exporter_secret)) { return false; } @@ -333,14 +326,9 @@ bool tls13_derive_application_secrets(SSL_HANDSHAKE *hs) { static const char kTLS13LabelApplicationTraffic[] = "traffic upd"; bool tls13_rotate_traffic_key(SSL *ssl, enum evp_aead_direction_t direction) { - Span secret; - if (direction == evp_aead_open) { - secret = MakeSpan(ssl->s3->read_traffic_secret, - ssl->s3->read_traffic_secret_len); - } else { - secret = MakeSpan(ssl->s3->write_traffic_secret, - ssl->s3->write_traffic_secret_len); - } + Span secret = direction == evp_aead_open + ? MakeSpan(ssl->s3->read_traffic_secret) + : MakeSpan(ssl->s3->write_traffic_secret); const SSL_SESSION *session = SSL_get_session(ssl); const EVP_MD *digest = ssl_session_get_digest(session); @@ -354,14 +342,9 @@ bool tls13_rotate_traffic_key(SSL *ssl, enum evp_aead_direction_t direction) { static const char kTLS13LabelResumption[] = "res master"; bool tls13_derive_resumption_secret(SSL_HANDSHAKE *hs) { - if (hs->transcript.DigestLen() > SSL_MAX_MASTER_KEY_LENGTH) { - OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR); - return false; - } - hs->new_session->secret_length = hs->transcript.DigestLen(); - return derive_secret( - hs, MakeSpan(hs->new_session->secret, hs->new_session->secret_length), - label_to_span(kTLS13LabelResumption)); + hs->new_session->secret.ResizeMaybeUninit(hs->transcript.DigestLen()); + return derive_secret(hs, MakeSpan(hs->new_session->secret), + label_to_span(kTLS13LabelResumption)); } static const char kTLS13LabelFinished[] = "finished"; @@ -410,8 +393,8 @@ bool tls13_derive_session_psk(SSL_SESSION *session, Span nonce, const EVP_MD *digest = ssl_session_get_digest(session); // The session initially stores the resumption_master_secret, which we // override with the PSK. - auto session_secret = MakeSpan(session->secret, session->secret_length); - return hkdf_expand_label(session_secret, digest, session_secret, + assert(session->secret.size() == EVP_MD_size(digest)); + return hkdf_expand_label(MakeSpan(session->secret), digest, session->secret, label_to_span(kTLS13LabelResumptionPSK), nonce, is_dtls); } @@ -473,8 +456,9 @@ static bool tls13_psk_binder(uint8_t *out, size_t *out_len, auto binder_key = MakeSpan(binder_key_buf, EVP_MD_size(digest)); if (!EVP_Digest(nullptr, 0, binder_context, &binder_context_len, digest, nullptr) || - !HKDF_extract(early_secret, &early_secret_len, digest, session->secret, - session->secret_length, nullptr, 0) || + !HKDF_extract(early_secret, &early_secret_len, digest, + session->secret.data(), session->secret.size(), nullptr, + 0) || !hkdf_expand_label( binder_key, digest, MakeConstSpan(early_secret, early_secret_len), label_to_span(kTLS13LabelPSKBinder), diff --git a/yass/third_party/boringssl/src/ssl/tls13_server.cc b/yass/third_party/boringssl/src/ssl/tls13_server.cc index e163d70d6b..655141fbb4 100644 --- a/yass/third_party/boringssl/src/ssl/tls13_server.cc +++ b/yass/third_party/boringssl/src/ssl/tls13_server.cc @@ -249,9 +249,8 @@ static enum ssl_hs_wait_t do_select_parameters(SSL_HANDSHAKE *hs) { // 'legacy_session_id' value from the client" (RFC 9147, section 5) as it // would in a TLS 1.3 handshake. if (!SSL_is_dtls(ssl)) { - OPENSSL_memcpy(hs->session_id, client_hello.session_id, - client_hello.session_id_len); - hs->session_id_len = client_hello.session_id_len; + hs->session_id.CopyFrom( + MakeConstSpan(client_hello.session_id, client_hello.session_id_len)); } Array creds; @@ -561,11 +560,9 @@ static enum ssl_hs_wait_t do_select_session(SSL_HANDSHAKE *hs) { ssl_get_handshake_digest(ssl_protocol_version(ssl), hs->new_cipher)); // Set up the key schedule and incorporate the PSK into the running secret. - if (!tls13_init_key_schedule( - hs, ssl->s3->session_reused - ? MakeConstSpan(hs->new_session->secret, - hs->new_session->secret_length) - : MakeConstSpan(kZeroes, hash_len)) || + if (!tls13_init_key_schedule(hs, ssl->s3->session_reused + ? MakeConstSpan(hs->new_session->secret) + : MakeConstSpan(kZeroes, hash_len)) || !ssl_hash_message(hs, msg)) { return ssl_hs_error; } @@ -609,7 +606,8 @@ static enum ssl_hs_wait_t do_send_hello_retry_request(SSL_HANDSHAKE *hs) { !CBB_add_u16(&body, TLS1_2_VERSION) || !CBB_add_bytes(&body, kHelloRetryRequest, SSL3_RANDOM_SIZE) || !CBB_add_u8_length_prefixed(&body, &session_id) || - !CBB_add_bytes(&session_id, hs->session_id, hs->session_id_len) || + !CBB_add_bytes(&session_id, hs->session_id.data(), + hs->session_id.size()) || !CBB_add_u16(&body, SSL_CIPHER_get_protocol_id(hs->new_cipher)) || !CBB_add_u8(&body, 0 /* no compression */) || !CBB_add_u16_length_prefixed(&body, &extensions) || @@ -810,7 +808,8 @@ static enum ssl_hs_wait_t do_send_server_hello(SSL_HANDSHAKE *hs) { !CBB_add_bytes(&body, ssl->s3->server_random, sizeof(ssl->s3->server_random)) || !CBB_add_u8_length_prefixed(&body, &session_id) || - !CBB_add_bytes(&session_id, hs->session_id, hs->session_id_len) || + !CBB_add_bytes(&session_id, hs->session_id.data(), + hs->session_id.size()) || !CBB_add_u16(&body, SSL_CIPHER_get_protocol_id(hs->new_cipher)) || !CBB_add_u8(&body, 0) || !CBB_add_u16_length_prefixed(&body, &extensions) || diff --git a/yass/third_party/boringssl/src/util/bot/DEPS b/yass/third_party/boringssl/src/util/bot/DEPS index 441b8430fe..1c7fa7cf70 100644 --- a/yass/third_party/boringssl/src/util/bot/DEPS +++ b/yass/third_party/boringssl/src/util/bot/DEPS @@ -25,7 +25,7 @@ vars = { 'checkout_nasm': False, 'checkout_libcxx': False, 'checkout_riscv64': False, - 'vs_version': '2019', + 'vs_version': '2022', # Run the following command to see the latest builds in CIPD: # cipd describe PACKAGE_NAME -version latest diff --git a/yass/third_party/boringssl/src/util/bot/vs_toolchain.py b/yass/third_party/boringssl/src/util/bot/vs_toolchain.py index c6dc4a4a10..4fb70eac6e 100644 --- a/yass/third_party/boringssl/src/util/bot/vs_toolchain.py +++ b/yass/third_party/boringssl/src/util/bot/vs_toolchain.py @@ -63,15 +63,6 @@ def FindDepotTools(): def _GetDesiredVsToolchainHashes(version): """Load a list of SHA1s corresponding to the toolchains that we want installed to build with.""" - if version == '2017': - # VS 2017 Update 9 (15.9.12) with 10.0.18362 SDK, 10.0.17763 version of - # Debuggers, and 10.0.17134 version of d3dcompiler_47.dll, with ARM64 - # libraries. - return ['418b3076791776573a815eb298c8aa590307af63'] - if version == '2019': - # VS 2019 16.61 with 10.0.20348.0 SDK, 10.0.22621.755 version of Debuggers, - # with ARM64 libraries and UWP support. - return ['0b5ee4d2b1'] if version == '2022': # VS 2022 17.9.2 with 10.0.22621.2428 SDK with ARM64 libraries and UWP # support. diff --git a/yass/third_party/libc++/CMakeLists.txt b/yass/third_party/libc++/CMakeLists.txt index cfd6964e28..e5bcf160f4 100644 --- a/yass/third_party/libc++/CMakeLists.txt +++ b/yass/third_party/libc++/CMakeLists.txt @@ -59,7 +59,7 @@ foreach(CompilerFlag ${CompilerFlags}) string(REPLACE "-stdlib=libc++" "" ${CompilerFlag} "${${CompilerFlag}}") endforeach() -set(libcxx_CR "e8d7247aa3998ef167bb334f516bdb3467971c07") +set(libcxx_CR "f1144730714608f01d6904037977dce8c15a49b7") # Fixed libc++ configuration macros are in # buildtools/third_party/libc++/__config_site. This config only has defines # that vary depending on gn args, and non-define flags. diff --git a/yass/third_party/libc++/trunk/docs/UserDocumentation.rst b/yass/third_party/libc++/trunk/docs/UserDocumentation.rst index 6659fa54f4..f5e55994aa 100644 --- a/yass/third_party/libc++/trunk/docs/UserDocumentation.rst +++ b/yass/third_party/libc++/trunk/docs/UserDocumentation.rst @@ -317,6 +317,15 @@ Unpoisoning may not be an option, if (for example) you are not maintaining the a * You are using allocator, which does not call destructor during deallocation. * You are aware that memory allocated with an allocator may be accessed, even when unused by container. +Support for compiler extensions +------------------------------- + +Clang, GCC and other compilers all provide their own set of language extensions. These extensions +have often been developed without particular consideration for their interaction with the library, +and as such, libc++ does not go out of its way to support them. The library may support specific +compiler extensions which would then be documented explicitly, but the basic expectation should be +that no special support is provided for arbitrary compiler extensions. + Platform specific behavior ========================== diff --git a/yass/third_party/libc++/trunk/utils/ci/run-buildbot b/yass/third_party/libc++/trunk/utils/ci/run-buildbot index 229963b38f..e040f15acc 100755 --- a/yass/third_party/libc++/trunk/utils/ci/run-buildbot +++ b/yass/third_party/libc++/trunk/utils/ci/run-buildbot @@ -371,14 +371,8 @@ bootstrapping-build) -DLLVM_LIT_ARGS="-sv --xunit-xml-output test-results.xml --timeout=1500 --time-tests" echo "+++ Running the LLDB libc++ data formatter tests" - ${NINJA} -vC "${BUILD_DIR}" check-lldb-api-functionalities-data-formatter-data-formatter-stl-libcxx \ - check-lldb-api-functionalities-data-formatter-data-formatter-stl-generic \ - check-lldb-api-functionalities-data-formatter-data-formatter-stl-libcxx-simulators \ - check-lldb-api-commands-expression-import-std-module \ - check-lldb-api-lang-cpp-std-function-step-into-callable \ - check-lldb-api-lang-cpp-std-function-recognizer \ - check-lldb-api-lang-cpp-std-invoke-recognizer - + ${NINJA} -vC "${BUILD_DIR}" lldb-api-test-deps + ${BUILD_DIR}/bin/llvm-lit -sv --param dotest-args='--category libc++' "${MONOREPO_ROOT}/lldb/test/API" echo "--- Running the libc++ and libc++abi tests" ${NINJA} -vC "${BUILD_DIR}" check-runtimes