From cbda62e75055b4533d60196dac91944669155ed5 Mon Sep 17 00:00:00 2001 From: Evie Viau Date: Mon, 13 Jan 2025 05:47:19 -0800 Subject: [PATCH] Initial commit --- .gitignore | 1 + .idea/.gitignore | 8 + .idea/luncher.iml | 11 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + Cargo.lock | 5128 ++++++++++++++++++++++++++++++++++ Cargo.toml | 32 + LICENSE | 176 ++ README.md | 1 + assets/Cooking_icon.png | Bin 0 -> 4660 bytes assets/Steam_client_logo.png | Bin 0 -> 178977 bytes src/backend/config.rs | 76 + src/backend/hash.rs | 0 src/backend/http.rs | 85 + src/backend/messages.rs | 0 src/backend/mod.rs | 5 + src/backend/secrets.rs | 48 + src/main.rs | 161 ++ src/ui/game_open.rs | 10 + src/ui/landing.rs | 199 ++ src/ui/launcher.rs | 85 + src/ui/login.rs | 114 + src/ui/mod.rs | 18 + src/ui/settings.rs | 55 + 24 files changed, 6227 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/luncher.iml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 LICENSE create mode 100644 README.md create mode 100644 assets/Cooking_icon.png create mode 100644 assets/Steam_client_logo.png create mode 100644 src/backend/config.rs create mode 100644 src/backend/hash.rs create mode 100644 src/backend/http.rs create mode 100644 src/backend/messages.rs create mode 100644 src/backend/mod.rs create mode 100644 src/backend/secrets.rs create mode 100644 src/main.rs create mode 100644 src/ui/game_open.rs create mode 100644 src/ui/landing.rs create mode 100644 src/ui/launcher.rs create mode 100644 src/ui/login.rs create mode 100644 src/ui/mod.rs create mode 100644 src/ui/settings.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/luncher.iml b/.idea/luncher.iml new file mode 100644 index 0000000..cf84ae4 --- /dev/null +++ b/.idea/luncher.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..c2fc62c --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..fbd6090 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,5128 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ab_glyph" +version = "0.2.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3672c180e71eeaaac3a541fbbc5f5ad4def8b747c595ad30d674e43049f7b0" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" + +[[package]] +name = "accesskit" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3d3b8f9bae46a948369bc4a03e815d4ed6d616bd00de4051133a5019dc31c5a" +dependencies = [ + "enumn", + "serde", +] + +[[package]] +name = "accesskit_atspi_common" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c5dd55e6e94949498698daf4d48fb5659e824d7abec0d394089656ceaf99d4f" +dependencies = [ + "accesskit", + "accesskit_consumer", + "atspi-common", + "serde", + "thiserror 1.0.69", + "zvariant 4.2.0", +] + +[[package]] +name = "accesskit_consumer" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f47983a1084940ba9a39c077a8c63e55c619388be5476ac04c804cfbd1e63459" +dependencies = [ + "accesskit", + "hashbrown", + "immutable-chunkmap", +] + +[[package]] +name = "accesskit_macos" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7329821f3bd1101e03a7d2e03bd339e3ac0dc64c70b4c9f9ae1949e3ba8dece1" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown", + "objc2", + "objc2-app-kit", + "objc2-foundation", +] + +[[package]] +name = "accesskit_unix" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcee751cc20d88678c33edaf9c07e8b693cd02819fe89053776f5313492273f5" +dependencies = [ + "accesskit", + "accesskit_atspi_common", + "async-channel 2.3.1", + "async-executor", + "async-task", + "atspi", + "futures-lite", + "futures-util", + "serde", + "zbus 4.4.0", +] + +[[package]] +name = "accesskit_windows" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24fcd5d23d70670992b823e735e859374d694a3d12bfd8dd32bd3bd8bedb5d81" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown", + "paste", + "static_assertions", + "windows", + "windows-core", +] + +[[package]] +name = "accesskit_winit" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6a48dad5530b6deb9fc7a52cc6c3bf72cdd9eb8157ac9d32d69f2427a5e879" +dependencies = [ + "accesskit", + "accesskit_macos", + "accesskit_unix", + "accesskit_windows", + "raw-window-handle", + "winit", +] + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "serde", + "version_check", + "zerocopy", +] + +[[package]] +name = "aligned-vec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1" + +[[package]] +name = "android-activity" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" +dependencies = [ + "android-properties", + "bitflags 2.6.0", + "cc", + "cesu8", + "jni", + "jni-sys", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys 0.6.0+11769913", + "num_enum", + "thiserror 1.0.69", +] + +[[package]] +name = "android-properties" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" + +[[package]] +name = "arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" + +[[package]] +name = "arboard" +version = "3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df099ccb16cd014ff054ac1bf392c67feeef57164b05c42f037cd40f5d4357f4" +dependencies = [ + "clipboard-win", + "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "parking_lot", + "x11rb", +] + +[[package]] +name = "arg_enum_proc_macro" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" + +[[package]] +name = "ash" +version = "0.38.0+1.3.281" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" +dependencies = [ + "libloading", +] + +[[package]] +name = "ashpd" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9c39d707614dbcc6bed00015539f488d8e3fe3e66ed60961efc0c90f4b380b3" +dependencies = [ + "async-fs", + "async-net", + "enumflags2", + "futures-channel", + "futures-util", + "rand", + "raw-window-handle", + "serde", + "serde_repr", + "url", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "zbus 5.2.0", +] + +[[package]] +name = "async-broadcast" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener 5.4.0", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" +dependencies = [ + "async-lock", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.3.1", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "once_cell", +] + +[[package]] +name = "async-io" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +dependencies = [ + "async-lock", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener 5.4.0", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-net" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" +dependencies = [ + "async-io", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-process" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" +dependencies = [ + "async-channel 2.3.1", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener 5.4.0", + "futures-lite", + "rustix", + "tracing", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "async-signal" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix", + "signal-hook-registry", + "slab", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-std" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c634475f29802fde2b8f0b505b1bd00dfe4df7d4a000f0b36f7671197d5c3615" +dependencies = [ + "async-channel 1.9.0", + "async-global-executor", + "async-io", + "async-lock", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "atspi" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be534b16650e35237bb1ed189ba2aab86ce65e88cc84c66f4935ba38575cecbf" +dependencies = [ + "atspi-common", + "atspi-connection", + "atspi-proxies", +] + +[[package]] +name = "atspi-common" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1909ed2dc01d0a17505d89311d192518507e8a056a48148e3598fef5e7bb6ba7" +dependencies = [ + "enumflags2", + "serde", + "static_assertions", + "zbus 4.4.0", + "zbus-lockstep", + "zbus-lockstep-macros", + "zbus_names 3.0.0", + "zvariant 4.2.0", +] + +[[package]] +name = "atspi-connection" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "430c5960624a4baaa511c9c0fcc2218e3b58f5dbcc47e6190cafee344b873333" +dependencies = [ + "atspi-common", + "atspi-proxies", + "futures-lite", + "zbus 4.4.0", +] + +[[package]] +name = "atspi-proxies" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e6c5de3e524cf967569722446bcd458d5032348554d9a17d7d72b041ab7496" +dependencies = [ + "atspi-common", + "serde", + "zbus 4.4.0", + "zvariant 4.2.0", +] + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "av1-grain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6678909d8c5d46a42abcf571271e15fdbc0a225e3646cf23762cd415046c78bf" +dependencies = [ + "anyhow", + "arrayvec", + "log", + "nom", + "num-rational", + "v_frame", +] + +[[package]] +name = "avif-serialize" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e335041290c43101ca215eed6f43ec437eb5a42125573f600fc3fa42b9bddd62" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide 0.8.2", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +dependencies = [ + "serde", +] + +[[package]] +name = "bitstream-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2" + +[[package]] +name = "blake3" +version = "1.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8ee0c1824c4dea5b5f81736aff91bae041d2c07ee1192bec91054e10e3e601e" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2", +] + +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel 2.3.1", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "built" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c360505aed52b7ec96a3636c3f039d99103c37d1d9b4f7a8c743d3ea9ffcd03b" + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bytemuck" +version = "1.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "bytes" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" + +[[package]] +name = "calloop" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" +dependencies = [ + "bitflags 2.6.0", + "log", + "polling", + "rustix", + "slab", + "thiserror 1.0.69", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" +dependencies = [ + "calloop", + "rustix", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "cc" +version = "1.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a012a0df96dd6d06ba9a1b29d6402d1a5d77c6befd2566afdc26e10603dc93d7" +dependencies = [ + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cgl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" +dependencies = [ + "libc", +] + +[[package]] +name = "clipboard-win" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" +dependencies = [ + "error-code", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cursor-icon" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" + +[[package]] +name = "dark-light" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18e1a09f280e29a8b00bc7e81eca5ac87dca0575639c9422a5fa25a07bb884b8" +dependencies = [ + "ashpd", + "async-std", + "objc2", + "objc2-foundation", + "web-sys", + "winreg", +] + +[[package]] +name = "dbus" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bb21987b9fb1613058ba3843121dd18b163b254d8a6e797e144cbac14d96d1b" +dependencies = [ + "libc", + "libdbus-sys", + "winapi", +] + +[[package]] +name = "dbus-secret-service" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42a16374481d92aed73ae45b1f120207d8e71d24fb89f357fadbd8f946fd84b" +dependencies = [ + "dbus", + "futures-util", + "num", + "once_cell", + "rand", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "directories" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.59.0", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "dlib" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +dependencies = [ + "libloading", +] + +[[package]] +name = "document-features" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb6969eaabd2421f8a2775cfd2471a2b634372b4a25d41e3bd647b79912850a0" +dependencies = [ + "litrs", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dpi" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" + +[[package]] +name = "ecolor" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d72e9c39f6e11a2e922d04a34ec5e7ef522ea3f5a1acfca7a19d16ad5fe50f5" +dependencies = [ + "bytemuck", + "emath", + "serde", +] + +[[package]] +name = "eframe" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2f2d9e7ea2d11ec9e98a8683b6eb99f9d7d0448394ef6e0d6d91bd4eb817220" +dependencies = [ + "ahash", + "bytemuck", + "document-features", + "egui", + "egui-wgpu", + "egui-winit", + "egui_glow", + "glow 0.16.0", + "glutin", + "glutin-winit", + "home", + "image", + "js-sys", + "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "parking_lot", + "percent-encoding", + "profiling", + "raw-window-handle", + "ron", + "serde", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "web-time", + "winapi", + "windows-sys 0.59.0", + "winit", +] + +[[package]] +name = "egui" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "252d52224d35be1535d7fd1d6139ce071fb42c9097773e79f7665604f5596b5e" +dependencies = [ + "accesskit", + "ahash", + "emath", + "epaint", + "log", + "nohash-hasher", + "profiling", + "ron", + "serde", +] + +[[package]] +name = "egui-phosphor" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe75c81cd796bfb6718df8a5339c47695bfb33e400fae03a77200305519f2c2" +dependencies = [ + "egui", +] + +[[package]] +name = "egui-wgpu" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26c1e821d2d8921ef6ce98b258c7e24d9d6aab2ca1f9cdf374eca997e7f67f59" +dependencies = [ + "ahash", + "bytemuck", + "document-features", + "egui", + "epaint", + "log", + "profiling", + "thiserror 1.0.69", + "type-map", + "web-time", + "wgpu", + "winit", +] + +[[package]] +name = "egui-winit" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e84c2919cd9f3a38a91e8f84ac6a245c19251fd95226ed9fae61d5ea564fce3" +dependencies = [ + "accesskit_winit", + "ahash", + "arboard", + "egui", + "log", + "profiling", + "raw-window-handle", + "serde", + "smithay-clipboard", + "web-time", + "webbrowser", + "winit", +] + +[[package]] +name = "egui_extras" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7a8198c088b1007108cb2d403bc99a5e370999b200db4f14559610d7330126" +dependencies = [ + "ahash", + "egui", + "enum-map", + "image", + "log", + "mime_guess2", + "profiling", +] + +[[package]] +name = "egui_flex" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71f36fd95c0943cf6a6ac53769195352bcfb0249d7b1b37d2dbed3c033c60fd0" +dependencies = [ + "egui", + "log", +] + +[[package]] +name = "egui_glow" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eaf6264cc7608e3e69a7d57a6175f438275f1b3889c1a551b418277721c95e6" +dependencies = [ + "ahash", + "bytemuck", + "egui", + "glow 0.16.0", + "log", + "memoffset", + "profiling", + "wasm-bindgen", + "web-sys", + "winit", +] + +[[package]] +name = "ehttp" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59a81c221a1e4dad06cb9c9deb19aea1193a5eea084e8cd42d869068132bf876" +dependencies = [ + "document-features", + "futures-util", + "js-sys", + "ureq", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "emath" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4fe73c1207b864ee40aa0b0c038d6092af1030744678c60188a05c28553515d" +dependencies = [ + "bytemuck", + "serde", +] + +[[package]] +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + +[[package]] +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", + "serde", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "enumflags2" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "enumn" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "epaint" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5666f8d25236293c966fbb3635eac18b04ad1914e3bab55bc7d44b9980cafcac" +dependencies = [ + "ab_glyph", + "ahash", + "backtrace", + "bytemuck", + "ecolor", + "emath", + "epaint_default_fonts", + "log", + "nohash-hasher", + "parking_lot", + "profiling", + "serde", +] + +[[package]] +name = "epaint_default_fonts" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66f6ddac3e6ac6fd4c3d48bb8b1943472f8da0f43a4303bcd8a18aa594401c80" + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "error-code" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d9305ccc6942a704f4335694ecd3de2ea531b114ac2d51f5f843750787a92f" + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" +dependencies = [ + "event-listener 5.4.0", + "pin-project-lite", +] + +[[package]] +name = "exr" +version = "1.72.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4" +dependencies = [ + "bit_field", + "flume", + "half", + "lebe", + "miniz_oxide 0.7.4", + "rayon-core", + "smallvec", + "zune-inflate", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "flate2" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +dependencies = [ + "crc32fast", + "miniz_oxide 0.8.2", +] + +[[package]] +name = "flume" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +dependencies = [ + "spin", +] + +[[package]] +name = "foldhash" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "gethostname" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +dependencies = [ + "libc", + "windows-targets 0.48.5", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gif" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", +] + +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "glow" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d51fa363f025f5c111e03f13eda21162faeacb6911fe8caa0c0349f9cf0c4483" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glow" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glutin" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec69412a0bf07ea7607e638b415447857a808846c2b685a43c8aa18bc6d5e499" +dependencies = [ + "bitflags 2.6.0", + "cfg_aliases 0.2.1", + "cgl", + "core-foundation 0.9.4", + "dispatch", + "glutin_egl_sys", + "glutin_glx_sys", + "glutin_wgl_sys", + "libloading", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "once_cell", + "raw-window-handle", + "wayland-sys", + "windows-sys 0.52.0", + "x11-dl", +] + +[[package]] +name = "glutin-winit" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85edca7075f8fc728f28cb8fbb111a96c3b89e930574369e3e9c27eb75d3788f" +dependencies = [ + "cfg_aliases 0.2.1", + "glutin", + "raw-window-handle", + "winit", +] + +[[package]] +name = "glutin_egl_sys" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cae99fff4d2850dbe6fb8c1fa8e4fead5525bab715beaacfccf3fb994e01c827" +dependencies = [ + "gl_generator", + "windows-sys 0.52.0", +] + +[[package]] +name = "glutin_glx_sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c2b2d3918e76e18e08796b55eb64e8fe6ec67d5a6b2e2a7e2edce224ad24c63" +dependencies = [ + "gl_generator", + "x11-dl", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a4e1951bbd9434a81aa496fe59ccc2235af3820d27b85f9314e279609211e2c" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "gpu-alloc" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" +dependencies = [ + "bitflags 2.6.0", + "gpu-alloc-types", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "gpu-descriptor" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf29e94d6d243368b7a56caa16bc213e4f9f8ed38c4d9557069527b5d5281ca" +dependencies = [ + "bitflags 2.6.0", + "gpu-descriptor-types", + "hashbrown", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "half" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "foldhash", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "image" +version = "0.25.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd6f44aed642f18953a158afeb30206f4d50da59fbc66ecb53c66488de73563b" +dependencies = [ + "bytemuck", + "byteorder-lite", + "color_quant", + "exr", + "gif", + "image-webp", + "num-traits", + "png", + "qoi", + "ravif", + "rayon", + "rgb", + "tiff", + "zune-core", + "zune-jpeg", +] + +[[package]] +name = "image-webp" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b77d01e822461baa8409e156015a1d91735549f0f2c17691bd2d996bef238f7f" +dependencies = [ + "byteorder-lite", + "quick-error", +] + +[[package]] +name = "imgref" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408" + +[[package]] +name = "immutable-chunkmap" +version = "2.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f97096f508d54f8f8ab8957862eee2ccd628847b6217af1a335e1c44dee578" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "indexmap" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "interpolate_name" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +dependencies = [ + "libc", +] + +[[package]] +name = "jpeg-decoder" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" + +[[package]] +name = "js-sys" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "keyring" +version = "3.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f8fe839464d4e4b37d756d7e910063696af79a7e877282cb1825e4ec5f10833" +dependencies = [ + "byteorder", + "dbus-secret-service", + "log", + "security-framework 2.11.1", + "security-framework 3.2.0", + "windows-sys 0.59.0", +] + +[[package]] +name = "khronos-egl" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" +dependencies = [ + "libc", + "libloading", + "pkg-config", +] + +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "lebe" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" + +[[package]] +name = "libc" +version = "0.2.169" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" + +[[package]] +name = "libdbus-sys" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06085512b750d640299b79be4bad3d2fa90a9c00b1fd9e1b46364f66f0485c72" +dependencies = [ + "pkg-config", +] + +[[package]] +name = "libfuzzer-sys" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b9569d2f74e257076d8c6bfa73fb505b46b851e51ddaecc825944aa3bed17fa" +dependencies = [ + "arbitrary", + "cc", +] + +[[package]] +name = "libloading" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" +dependencies = [ + "cfg-if", + "windows-targets 0.52.6", +] + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", + "redox_syscall 0.5.8", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + +[[package]] +name = "litrs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +dependencies = [ + "value-bag", +] + +[[package]] +name = "loop9" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" +dependencies = [ + "imgref", +] + +[[package]] +name = "luncher" +version = "0.1.0" +dependencies = [ + "blake3", + "dark-light", + "directories", + "eframe", + "egui", + "egui-phosphor", + "egui_extras", + "egui_flex", + "ehttp", + "image", + "keyring", + "rfd", + "serde", + "serde_derive", + "serde_json", + "toml", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "maybe-rayon" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" +dependencies = [ + "cfg-if", + "rayon", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memmap2" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "metal" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" +dependencies = [ + "bitflags 2.6.0", + "block", + "core-graphics-types", + "foreign-types", + "log", + "objc", + "paste", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess2" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a3333bb1609500601edc766a39b4c1772874a4ce26022f4d866854dc020c41" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +dependencies = [ + "adler", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "naga" +version = "23.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "364f94bc34f61332abebe8cad6f6cd82a5b65cff22c828d05d0968911462ca4f" +dependencies = [ + "arrayvec", + "bit-set", + "bitflags 2.6.0", + "cfg_aliases 0.1.1", + "codespan-reporting", + "hexf-parse", + "indexmap", + "log", + "rustc-hash", + "spirv", + "termcolor", + "thiserror 1.0.69", + "unicode-xid", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.6.0", + "jni-sys", + "log", + "ndk-sys 0.6.0+11769913", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.5.0+25.2.9519653" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "cfg_aliases 0.2.1", + "libc", + "memoffset", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "noop_proc_macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" + +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.6.0", + "block2", + "libc", + "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-core-location" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +dependencies = [ + "block2", + "objc2", + "objc2-contacts", + "objc2-foundation", +] + +[[package]] +name = "objc2-encode" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.6.0", + "block2", + "dispatch", + "libc", + "objc2", +] + +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2", + "objc2", + "objc2-app-kit", + "objc2-foundation", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation", + "objc2-link-presentation", + "objc2-quartz-core", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "orbclient" +version = "0.3.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba0b26cec2e24f08ed8bb31519a9333140a6599b867dac464bb150bdb796fd43" +dependencies = [ + "libredox", +] + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "owned_ttf_parser" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec719bbf3b2a81c109a4e20b1f129b5566b7dce654bc3872f6a05abf82b2c4" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.8", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide 0.8.2", +] + +[[package]] +name = "polling" +version = "3.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "pollster" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro-crate" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" +dependencies = [ + "profiling-procmacros", +] + +[[package]] +name = "profiling-procmacros" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "qoi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[package]] +name = "quick-xml" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "quick-xml" +version = "0.36.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rav1e" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9" +dependencies = [ + "arbitrary", + "arg_enum_proc_macro", + "arrayvec", + "av1-grain", + "bitstream-io", + "built", + "cfg-if", + "interpolate_name", + "itertools", + "libc", + "libfuzzer-sys", + "log", + "maybe-rayon", + "new_debug_unreachable", + "noop_proc_macro", + "num-derive", + "num-traits", + "once_cell", + "paste", + "profiling", + "rand", + "rand_chacha", + "simd_helpers", + "system-deps", + "thiserror 1.0.69", + "v_frame", + "wasm-bindgen", +] + +[[package]] +name = "ravif" +version = "0.11.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2413fd96bd0ea5cdeeb37eaf446a22e6ed7b981d792828721e74ded1980a45c6" +dependencies = [ + "avif-serialize", + "imgref", + "loop9", + "quick-error", + "rav1e", + "rayon", + "rgb", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "redox_users" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" +dependencies = [ + "getrandom", + "libredox", + "thiserror 2.0.11", +] + +[[package]] +name = "renderdoc-sys" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" + +[[package]] +name = "rfd" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a24763657bff09769a8ccf12c8b8a50416fb035fe199263b4c5071e4e3f006f" +dependencies = [ + "ashpd", + "block2", + "core-foundation 0.10.0", + "core-foundation-sys", + "js-sys", + "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "pollster", + "raw-window-handle", + "urlencoding", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rgb" +version = "0.8.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "ron" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" +dependencies = [ + "base64 0.21.7", + "bitflags 2.6.0", + "serde", + "serde_derive", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustix" +version = "0.38.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a78891ee6bf2340288408954ac787aa063d8e8817e9f53abb37c695c6d834ef6" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.23.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" +dependencies = [ + "log", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sctk-adwaita" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" +dependencies = [ + "ab_glyph", + "log", + "memmap2", + "smithay-client-toolkit", + "tiny-skia", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.6.0", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" +dependencies = [ + "bitflags 2.6.0", + "core-foundation 0.10.0", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "serde" +version = "1.0.217" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.217" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.135" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b0d7ba2887406110130a978386c4e1befb98c674b4fba677954e4db976630d9" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "simd_helpers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" +dependencies = [ + "quote", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slotmap" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "smithay-client-toolkit" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" +dependencies = [ + "bitflags 2.6.0", + "calloop", + "calloop-wayland-source", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix", + "thiserror 1.0.69", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-clipboard" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc8216eec463674a0e90f29e0ae41a4db573ec5b56b1c6c1c71615d249b6d846" +dependencies = [ + "libc", + "smithay-client-toolkit", + "wayland-backend", +] + +[[package]] +name = "smol_str" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +dependencies = [ + "serde", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spirv" +version = "0.3.0+sdk-1.3.268.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46f71c0377baf4ef1cc3e3402ded576dccc315800fbc62dfc7fe04b009773b4a" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck", + "pkg-config", + "toml", + "version-compare", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tempfile" +version = "3.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" +dependencies = [ + "cfg-if", + "fastrand", + "getrandom", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +dependencies = [ + "thiserror-impl 2.0.11", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tiff" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +dependencies = [ + "flate2", + "jpeg-decoder", + "weezl", +] + +[[package]] +name = "tiny-skia" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "log", + "tiny-skia-path", +] + +[[package]] +name = "tiny-skia-path" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "toml" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", +] + +[[package]] +name = "ttf-parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" + +[[package]] +name = "type-map" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb68604048ff8fa93347f02441e4487594adc20bb8a084f9e564d2b827a0a9f" +dependencies = [ + "rustc-hash", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset", + "tempfile", + "winapi", +] + +[[package]] +name = "unicase" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + +[[package]] +name = "unicode-ident" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "ureq" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d" +dependencies = [ + "base64 0.22.1", + "flate2", + "log", + "once_cell", + "rustls", + "rustls-pki-types", + "url", + "webpki-roots", +] + +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "v_frame" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f32aaa24bacd11e488aa9ba66369c7cd514885742c9fe08cfe85884db3e92b" +dependencies = [ + "aligned-vec", + "num-traits", + "wasm-bindgen", +] + +[[package]] +name = "value-bag" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ef4c4aa54d5d05a279399bfa921ec387b7aba77caf7a682ae8d86785b8fdad2" + +[[package]] +name = "version-compare" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" + +[[package]] +name = "wasm-streams" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wayland-backend" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "056535ced7a150d45159d3a8dc30f91a2e2d588ca0b23f70e56033622b8016f6" +dependencies = [ + "cc", + "downcast-rs", + "rustix", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66249d3fc69f76fd74c82cc319300faa554e9d865dab1f7cd66cc20db10b280" +dependencies = [ + "bitflags 2.6.0", + "rustix", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-csd-frame" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" +dependencies = [ + "bitflags 2.6.0", + "cursor-icon", + "wayland-backend", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b08bc3aafdb0035e7fe0fdf17ba0c09c268732707dca4ae098f60cb28c9e4c" +dependencies = [ + "rustix", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd0ade57c4e6e9a8952741325c30bf82f4246885dca8bf561898b86d0c1f58e" +dependencies = [ + "bitflags 2.6.0", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b31cab548ee68c7eb155517f2212049dc151f7cd7910c2b66abfd31c3ee12bd" +dependencies = [ + "bitflags 2.6.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "782e12f6cd923c3c316130d56205ebab53f55d6666b7faddfad36cecaeeb4022" +dependencies = [ + "bitflags 2.6.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597f2001b2e5fc1121e3d5b9791d3e78f05ba6bfa4641053846248e3a13661c3" +dependencies = [ + "proc-macro2", + "quick-xml 0.36.2", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efa8ac0d8e8ed3e3b5c9fc92c7881406a268e11555abe36493efabe649a29e09" +dependencies = [ + "dlib", + "log", + "once_cell", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webbrowser" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea9fe1ebb156110ff855242c1101df158b822487e4957b0556d9ffce9db0f535" +dependencies = [ + "block2", + "core-foundation 0.10.0", + "home", + "jni", + "log", + "ndk-context", + "objc2", + "objc2-foundation", + "url", + "web-sys", +] + +[[package]] +name = "webpki-roots" +version = "0.26.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "weezl" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" + +[[package]] +name = "wgpu" +version = "23.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80f70000db37c469ea9d67defdc13024ddf9a5f1b89cb2941b812ad7cde1735a" +dependencies = [ + "arrayvec", + "cfg_aliases 0.1.1", + "document-features", + "js-sys", + "log", + "parking_lot", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "23.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d63c3c478de8e7e01786479919c8769f62a22eec16788d8c2ac77ce2c132778a" +dependencies = [ + "arrayvec", + "bit-vec", + "bitflags 2.6.0", + "cfg_aliases 0.1.1", + "document-features", + "indexmap", + "log", + "naga", + "once_cell", + "parking_lot", + "profiling", + "raw-window-handle", + "rustc-hash", + "smallvec", + "thiserror 1.0.69", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-hal" +version = "23.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89364b8a0b211adc7b16aeaf1bd5ad4a919c1154b44c9ce27838213ba05fd821" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bitflags 2.6.0", + "bytemuck", + "cfg_aliases 0.1.1", + "core-graphics-types", + "glow 0.14.2", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-descriptor", + "js-sys", + "khronos-egl", + "libc", + "libloading", + "log", + "metal", + "naga", + "ndk-sys 0.5.0+25.2.9519653", + "objc", + "once_cell", + "parking_lot", + "profiling", + "raw-window-handle", + "renderdoc-sys", + "rustc-hash", + "smallvec", + "thiserror 1.0.69", + "wasm-bindgen", + "web-sys", + "wgpu-types", + "windows", +] + +[[package]] +name = "wgpu-types" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "610f6ff27778148c31093f3b03abc4840f9636d58d597ca2f5977433acfe0068" +dependencies = [ + "bitflags 2.6.0", + "js-sys", + "web-sys", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winit" +version = "0.30.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5d74280aabb958072864bff6cfbcf9025cf8bfacdde5e32b5e12920ef703b0f" +dependencies = [ + "ahash", + "android-activity", + "atomic-waker", + "bitflags 2.6.0", + "block2", + "bytemuck", + "calloop", + "cfg_aliases 0.2.1", + "concurrent-queue", + "core-foundation 0.9.4", + "core-graphics", + "cursor-icon", + "dpi", + "js-sys", + "libc", + "memmap2", + "ndk", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "orbclient", + "percent-encoding", + "pin-project", + "raw-window-handle", + "redox_syscall 0.4.1", + "rustix", + "sctk-adwaita", + "smithay-client-toolkit", + "smol_str", + "tracing", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-plasma", + "web-sys", + "web-time", + "windows-sys 0.52.0", + "x11-dl", + "x11rb", + "xkbcommon-dl", +] + +[[package]] +name = "winnow" +version = "0.6.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39281189af81c07ec09db316b302a3e67bf9bd7cbf6c820b50e35fee9c2fa980" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "x11rb" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" +dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading", + "once_cell", + "rustix", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" + +[[package]] +name = "xcursor" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61" + +[[package]] +name = "xdg-home" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" +dependencies = [ + "bitflags 2.6.0", + "dlib", + "log", + "once_cell", + "xkeysym", +] + +[[package]] +name = "xkeysym" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" + +[[package]] +name = "xml-rs" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5b940ebc25896e71dd073bad2dbaa2abfe97b0a391415e22ad1326d9c54e3c4" + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zbus" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" +dependencies = [ + "async-broadcast", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener 5.4.0", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix", + "ordered-stream", + "rand", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tracing", + "uds_windows", + "windows-sys 0.52.0", + "xdg-home", + "zbus_macros 4.4.0", + "zbus_names 3.0.0", + "zvariant 4.2.0", +] + +[[package]] +name = "zbus" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb67eadba43784b6fb14857eba0d8fc518686d3ee537066eb6086dc318e2c8a1" +dependencies = [ + "async-broadcast", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener 5.4.0", + "futures-core", + "futures-util", + "hex", + "nix", + "ordered-stream", + "serde", + "serde_repr", + "static_assertions", + "tracing", + "uds_windows", + "windows-sys 0.59.0", + "winnow", + "xdg-home", + "zbus_macros 5.2.0", + "zbus_names 4.1.0", + "zvariant 5.1.0", +] + +[[package]] +name = "zbus-lockstep" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca2c5dceb099bddaade154055c926bb8ae507a18756ba1d8963fd7b51d8ed1d" +dependencies = [ + "zbus_xml", + "zvariant 4.2.0", +] + +[[package]] +name = "zbus-lockstep-macros" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709ab20fc57cb22af85be7b360239563209258430bccf38d8b979c5a2ae3ecce" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "zbus-lockstep", + "zbus_xml", + "zvariant 4.2.0", +] + +[[package]] +name = "zbus_macros" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "zvariant_utils 2.1.0", +] + +[[package]] +name = "zbus_macros" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d49ebc960ceb660f2abe40a5904da975de6986f2af0d7884b39eec6528c57" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "zbus_names 4.1.0", + "zvariant 5.1.0", + "zvariant_utils 3.0.2", +] + +[[package]] +name = "zbus_names" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" +dependencies = [ + "serde", + "static_assertions", + "zvariant 4.2.0", +] + +[[package]] +name = "zbus_names" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "856b7a38811f71846fd47856ceee8bccaec8399ff53fb370247e66081ace647b" +dependencies = [ + "serde", + "static_assertions", + "winnow", + "zvariant 5.1.0", +] + +[[package]] +name = "zbus_xml" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3f374552b954f6abb4bd6ce979e6c9b38fb9d0cd7cc68a7d796e70c9f3a233" +dependencies = [ + "quick-xml 0.30.0", + "serde", + "static_assertions", + "zbus_names 3.0.0", + "zvariant 4.2.0", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zune-core" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "zune-jpeg" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16099418600b4d8f028622f73ff6e3deaabdff330fb9a2a131dea781ee8b0768" +dependencies = [ + "zune-core", +] + +[[package]] +name = "zvariant" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" +dependencies = [ + "endi", + "enumflags2", + "serde", + "static_assertions", + "zvariant_derive 4.2.0", +] + +[[package]] +name = "zvariant" +version = "5.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1200ee6ac32f1e5a312e455a949a4794855515d34f9909f4a3e082d14e1a56f" +dependencies = [ + "endi", + "enumflags2", + "serde", + "static_assertions", + "url", + "winnow", + "zvariant_derive 5.1.0", + "zvariant_utils 3.0.2", +] + +[[package]] +name = "zvariant_derive" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "zvariant_utils 2.1.0", +] + +[[package]] +name = "zvariant_derive" +version = "5.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "687e3b97fae6c9104fbbd36c73d27d149abf04fb874e2efbd84838763daa8916" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "zvariant_utils 3.0.2", +] + +[[package]] +name = "zvariant_utils" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zvariant_utils" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20d1d011a38f12360e5fcccceeff5e2c42a8eb7f27f0dcba97a0862ede05c9c6" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "static_assertions", + "syn", + "winnow", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..a92b75a --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "luncher" +version = "0.1.0" +edition = "2021" + +[dependencies] +egui = { version = "0.30.0", features = ["deadlock_detection", "persistence"] } +eframe = { version = "0.30.0", features = ["persistence"] } +ehttp = { version = "0.5.0", features = ["streaming"] } + +egui_extras = { version = "0.30.0", features = ["image"] } +egui-phosphor = { version = "0.8.0", features = ["fill"] } +egui_flex = "0.2.0" + +dark-light = "2.0.0" +rfd = "0.15.2" + +toml = "0.8.12" +serde = "1.0.201" +serde_derive = "1.0.201" +serde_json = "1.0.135" + +keyring = { version = "3.6.1", features = ["apple-native", "windows-native", "sync-secret-service"] } + +directories = "6.0.0" + +blake3 = "1.5.5" + +image = { version = "0.25.5", features = ["png"] } + +[profile.release] +strip="symbols" \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..2bb9ad2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,176 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..7f444ad --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# osrs luncher \ No newline at end of file diff --git a/assets/Cooking_icon.png b/assets/Cooking_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1e0f7b26ecf4d439f9d01522e35aa57159aa2193 GIT binary patch literal 4660 zcmeHKeQ*=U6+amZ+p-;Oun9FyD~=>Jp{LWGPG1+xpE5`RVO18y%|M&e-JWz(By>s>T#6IE5@M${89Z_0DZ~REpl$(ElGwr1(tJYv58XR`*^|s< zJk$K==egOpyYKz>?Qh>cd7pBwTAr^eQ6UJDZ?{=pupL7X1(H1rYR}$1SO}X7pux`D z?GGT?umdd>nb1JCLlg;J8pu%0LL{#z;5QfQl8yA0D3o&h4Ad7U^j%OdP1s~Wols;T z^I+QvKN9LiuzekV!q)g&{ZN-ATmG{_O+rq#%k2)QTBp%!w3w@gSn3r-h@vI+w3eU= zQcX}aNzjxI`Y86N&OMm zSGlKKH-Ww5$Di2IkM34ib+nfZ9z3mc)u$D=y=wh zUtK+RLiPN-pSes5vCnjNAiH2#xvy#9tMcZ~k8%n&&hGyFjlN-oFSoz;=7~#%Lw)&c z*S@I-b58zKG5h7bzwcVN#I~ZeX!9-I#4Fz~cuU!K@$I)xoZT>iaK1HN3r9u@7GSO~ zd*1JTj2`_mRM+^6itQtjqd&TSVI9oGcEQ~sHaJ$&Y$%{%xR3{EVu7%9U`Sa-EX=Tt zKva8xR|s0ro4tLgTHq|`!+M9-5v~C~!PXW5^=+%%Y+EC1=Fp0ARauON00AH}>R7-Z zjM6a+D&x{nmxggvEt`mq7PJ9oQ%xuW)RcyTDODR2nn|==r7nwbJngbBOF+P$1@(zy zn8xvzmKIHmP7{iFal&ji<606YNeo(G(bk~I#IRs=u>=vvu!1NX5yGMn3aTYc#uI81 zEhq}-)yen*VTU6HAB-kgfPCOFCX5prEglHqlRcthZ8HQ(1oVv_QFm(?;4TmiHAPrZ z+YEx@;>i#koAM7gMf~!1I2H$f5P+spxGFJaN$K9DJR}OdLLe-AL9(Yatu>wcSDgYG6Yk?W#StE~8MoNpB zNs|YoOgf#11qMKw&6A+)!KlatSs+0{aE$xwL!Ng%EmM1WZV{~RS zBTNp8G7uP}GqM<|CwQJWc(kP1AVYC1 zy(|<7Fz`5q0OJLCIOvrpB*N(`r`>|WYL^~y`Wcaj4i>VkqJch5Qy& z0!qy|;C`oS9OlzXG@%SYqM~D;n)^D?xZjZVQ+QT!q2~oIot2`9H zQuSa%ych5K1^F(i)$*;N88#k$lxYU>(}Gy>Db~jXy#SVvM7}1+g>T3O9Z8rto`spD zGn!!r=uH>{%zDfN3_8G&X3_{KnS~U3G{lQ7OaxSUA%$_8rv6Z=OXVY5GS#ic2O!rH zbC{OE2r|K(o=Px>Cw7iY)g!s}GW=`gl*tB@$_@03kHInqt0JB%iwW{z;NPVr4&}RC zLam-zWLo^r&^1HXv>2F{@l1Bj&^0Xvre!>nUH><_ROyEm2*Q7dTHv$kWEGFYCs(m^ zrMp&sd?D9vUOawic3Wdk1Dyxo&F|TFErJsY(Y2}`sr={?FLgXCmRpf0mG?-m^PI5l zr%?pSg>U=Zc?x7-=K?sGCE6XeSsyF%<`)~*|9bc^^x0##R=H!t|Gxa-T^-syWo3W$ ze;)rJu%z;#qS0A@YK=vl7)*TCR=JzK@NCNxxEGh4|Rmy|1pWtophPRG%NnP$i`;%W^uxeQ@`DXG(^8t*xKB z*cEB`MOns)>hYe>(j)g3kNx9R@VY{okaY_m8NL)ee=K;=9L&6?A)=%B}Ga3{KKK~GwIc?)$iPHPRCr*SI9lPeshwM z?)*Ss&TDwv$Y4c!51$MT6r!Vl%jx`0%C9Hm_{KX|Ul;fMGCvvOMD^GY^TSJTZ*L4= QhR253Ygbvjs~>IuALd*;s{jB1 literal 0 HcmV?d00001 diff --git a/assets/Steam_client_logo.png b/assets/Steam_client_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..aa41143e6a6bcab1ff31d0ea1c8bd2e361e343d7 GIT binary patch literal 178977 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

q56zgNvNwHO_cs8F?wZj4{DO)AN9pfFh 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%0D;yvlPXLnM4h@~qg+S^ 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

  • `8R7Yz^!6=y<9OHVAMD>V`Tp~k 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 literal 0 HcmV?d00001 diff --git a/src/backend/config.rs b/src/backend/config.rs new file mode 100644 index 0000000..af2914c --- /dev/null +++ b/src/backend/config.rs @@ -0,0 +1,76 @@ +use std::fs; +use std::io::ErrorKind; +use std::path::PathBuf; +use std::sync::OnceLock; +use directories::ProjectDirs; +use serde_derive::{Deserialize, Serialize}; + +pub static CONFIG_DIR: OnceLock = OnceLock::new(); +pub static CONFIG_FILE: OnceLock = OnceLock::new(); + + +#[derive(Serialize, Deserialize)] +pub struct Paths { + pub runelite_path: String, + pub java_path: String, +} + +#[derive(Serialize, Deserialize)] +pub struct Versions { + pub runelite_version: String, + pub runelite_hash: String, +} + +#[derive(Serialize, Deserialize)] +pub struct Config { + pub paths: Paths, + pub versions: Versions, +} + +impl Config { + pub fn new() -> Config { + let mut runelite_path = CONFIG_DIR.get().unwrap().clone(); + runelite_path.push("runelite.jar"); + + let new_config = Config { + paths: Paths { runelite_path: runelite_path.into_os_string().into_string().unwrap(), java_path: "java".to_string() }, + versions: Versions { runelite_version: "".to_string(), runelite_hash: "".to_string() }, + }; + + new_config.save_config(); + + new_config + } + + pub fn get_config() -> Config { + let binding = ProjectDirs::from("sex", "gaycatgirl", "osrs-luncher").expect("Could not generate config path"); + let expected_config_dir = binding.config_dir(); + CONFIG_DIR.set(expected_config_dir.to_path_buf()).expect("Failed to set config dir"); + + let expected_config_file = expected_config_dir.join("config.toml"); + CONFIG_FILE.set(expected_config_file.to_path_buf()).expect("Failed to set config file"); + + // check to see if a config already exists at the expected path + match fs::read_to_string(&expected_config_file) { + Ok(config_contents) => { + toml::from_str::(&config_contents).unwrap_or_else(|_| Config::new()) + } + Err(error) => { + match error.kind() { + ErrorKind::NotFound => { + // config doesn't exist, create + Config::new() + } + _ => panic!("Could not read config file: {}", error), + } + } + } + } + + pub fn save_config(&self) { + let file_path = CONFIG_FILE.get().unwrap().clone(); + + fs::create_dir_all(file_path.parent().unwrap()).expect("Could not create config directory"); + fs::write(file_path, toml::to_string_pretty(self).expect("Failed to generate config string")).expect("Could not write config file"); + } +} \ No newline at end of file diff --git a/src/backend/hash.rs b/src/backend/hash.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/backend/http.rs b/src/backend/http.rs new file mode 100644 index 0000000..e089427 --- /dev/null +++ b/src/backend/http.rs @@ -0,0 +1,85 @@ +use std::sync::mpsc::channel; +use ehttp::Response; +use ehttp::streaming::Part; + + +pub struct HttpState { + pub channel: Option>, + pub request_in_progress: bool, + pub total_size: f32, + pub current_size: f32, + pub data: Vec, +} + +pub enum HttpChannelChunk { + Start(f32), + Data(Vec), + End, + Oneshot(Response) +} + + +impl HttpState { + pub fn new() -> HttpState { + HttpState { + channel: None, + request_in_progress: false, + total_size: 0.0, + current_size: 0.0, + data: vec![], + } + } + + pub fn do_request(&mut self, req: ehttp::Request) { + if !self.request_in_progress { + self.request_in_progress = true; + + let (sender, receiver) = channel(); + self.channel = Some(receiver); + + ehttp::streaming::fetch(req, move |res| { + let part = match res { + Ok(part) => part, + Err(err) => { + eprintln!("waaa waaa waaa {err}"); + return std::ops::ControlFlow::Break(()); + } + }; + + match part { + Part::Response(response) => { + if response.ok { + let total_size = response.headers.get("Content-Length").expect("Missing Content-Length").parse().expect("Content-Length wasn't a number"); + + sender.send(HttpChannelChunk::Start(total_size)).expect("Unable to send start chunk"); + + std::ops::ControlFlow::Continue(()) + } else { + std::ops::ControlFlow::Break(()) + } + } + Part::Chunk(chunk) => { + if chunk.is_empty() { + sender.send(HttpChannelChunk::End).expect("Unable to send end chunk"); + } else { + sender.send(HttpChannelChunk::Data(chunk)).expect("Unable to send data chunk"); + } + + std::ops::ControlFlow::Continue(()) + } + } + }); + } + } + + pub fn do_oneshot_request(&mut self, req: ehttp::Request) { + self.request_in_progress = true; + + let (sender, receiver) = channel(); + self.channel = Some(receiver); + + ehttp::fetch(req, move |res| { + sender.send(HttpChannelChunk::Oneshot(res.expect("Invalid response"))).expect("Failed to send oneshot response") + }) + } +} \ No newline at end of file diff --git a/src/backend/messages.rs b/src/backend/messages.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/backend/mod.rs b/src/backend/mod.rs new file mode 100644 index 0000000..c8edd95 --- /dev/null +++ b/src/backend/mod.rs @@ -0,0 +1,5 @@ +pub mod secrets; +pub mod messages; +pub mod http; +pub mod config; +mod hash; \ No newline at end of file diff --git a/src/backend/secrets.rs b/src/backend/secrets.rs new file mode 100644 index 0000000..f5a6269 --- /dev/null +++ b/src/backend/secrets.rs @@ -0,0 +1,48 @@ +use keyring::Entry; +use serde_derive::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize, Clone)] +pub struct Account { + pub session_id: String, + pub character_id: String, + pub character_name: String, +} + +impl Account { + pub fn get_secrets() -> Option { + let session_id = Entry::new("osrs-luncher", "session-id").expect("Unable to get session_id entry"); + + if session_id.get_password().is_err() { + return None; + } + + let character_id = Entry::new("osrs-luncher", "character-id").expect("Unable to get character_id entry"); + let character_name = Entry::new("osrs-luncher", "character-name").expect("Unable to get character_name entry"); + + Some(Account { + session_id: session_id.get_password().expect("Unable to get session_id entry content"), + character_id: character_id.get_password().expect("Unable to get character_id entry content"), + character_name: character_name.get_password().expect("Unable to get character_name entry content"), + }) + } + + pub fn insert_secrets(&self) -> bool { + let session_id = Entry::new("osrs-luncher", "session-id").expect("Unable to get session_id entry"); + let character_id = Entry::new("osrs-luncher", "character-id").expect("Unable to get character_id entry"); + let character_name = Entry::new("osrs-luncher", "character-name").expect("Unable to get character_name entry"); + + session_id.set_password(self.session_id.as_str()).expect("Unable to set session_id"); + character_id.set_password(self.character_id.as_str()).expect("Unable to set character_id"); + character_name.set_password(self.character_name.as_str()).expect("Unable to set character_name"); + + true + } + + pub fn delete_secrets(&self) -> bool { + let session_id = Entry::new("osrs-luncher", "session-id").expect("Unable to get session_id entry").delete_credential().is_ok(); + let character_id = Entry::new("osrs-luncher", "character-id").expect("Unable to get character_id entry").delete_credential().is_ok(); + let character_name = Entry::new("osrs-luncher", "character-name").expect("Unable to get character_name entry").delete_credential().is_ok(); + + session_id | character_id | character_name + } +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..d06a417 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,161 @@ +use std::process::Child; +use dark_light::Mode; +use egui::{IconData, Theme, ViewportBuilder}; +use egui_extras::install_image_loaders; +use egui_flex::{item, Flex, FlexAlign, FlexAlignContent}; +use image::GenericImageView; +use backend::config::{Config, Paths, Versions}; +use crate::backend::http::HttpState; +use crate::backend::secrets::Account; +use crate::ui::landing::Landing; +use crate::ui::{game_open, Pages}; +use crate::ui::launcher::Launcher; + +mod ui; +mod backend; + +fn main() -> Result<(), eframe::Error> { + let default_theme: Theme = match dark_light::detect() { + Ok(Mode::Dark) => Theme::Dark, + _ => Theme::Light + }; + + let icon = image::load_from_memory(include_bytes!("../assets/Cooking_icon.png")).expect("Failed to load Cooking_icon").to_rgba8(); + + let viewport = egui::ViewportBuilder::default() + .with_title("OSRS Luncher") + .with_app_id("sex.gaycatgirl.luncher") + .with_icon(IconData { + rgba: icon.clone().into_raw(), + width: icon.width(), + height: icon.height(), + }) + .with_fullscreen(true); + + let mut fonts = egui::FontDefinitions::default(); + egui_phosphor::add_to_fonts(&mut fonts, egui_phosphor::Variant::Regular); + egui_phosphor::add_to_fonts(&mut fonts, egui_phosphor::Variant::Fill); + + + let options = eframe::NativeOptions { + viewport, + ..Default::default() + }; + + eframe::run_native( + "osrs luncher", + options, + Box::new(|ctx| { + ctx.egui_ctx.set_fonts(fonts); + ctx.egui_ctx.set_theme(default_theme); + + install_image_loaders(&ctx.egui_ctx); + + Ok(Box::::default()) + }) + ) +} + + +struct State { + child: Option, + game_open: bool, + current_page: Pages, + next_page: Option, +} + +struct App { + config: Config, + account: Option, + state: State, + http_state: HttpState, + working: bool, +} + +impl Default for App { + fn default() -> Self { + App { + config: Config { paths: Paths { runelite_path: "".to_string(), java_path: "".to_string() }, versions: Versions { runelite_version: "".to_string(), runelite_hash: "".to_string() } }, + account: None, + state: State { child: None, game_open: false, current_page: Pages::Landing(None), next_page: None }, + http_state: HttpState::new(), + working: false, + } + } +} + +impl eframe::App for App { + fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { + // If we've requested a page change, change to it + if let Some(next_page) = self.state.next_page.take() { + self.state.current_page = next_page; + + self.state.next_page = None; + } + + // Look to see if the child process has exited yet and reset to the launcher if it has + if let Some(child) = self.state.child.as_mut() { + if let Ok(Some(_)) = child.try_wait() { + self.state.game_open = false; + self.state.child = None; + + self.state.current_page = Pages::Launcher(Launcher::init()); + } + }; + + // Make sure to show the game open page when its open + if self.state.game_open { + self.state.current_page = Pages::GameOpen; + } + + egui::TopBottomPanel::bottom("footer").show(ctx, |ui| { + Flex::new().w_full().show(ui, |flex| { + flex.add_ui(item(), |ui| { + ui.label(format!("osrs luncher v{}", env!("CARGO_PKG_VERSION"))); + ui.separator(); + ui.hyperlink_to("see the source", "https://github.com/"); + }); + + flex.grow(); + + flex.add_ui(item(), |ui| { + if self.working { + ui.spinner(); + ui.label("working..."); + + self.working = false; + }; + }) + }); + + }); + + egui::CentralPanel::default().show(ctx, move |ui| { + ui.heading("osrs luncher"); + + ui.separator(); + + match &mut self.state.current_page { + Pages::Landing(landing) => { + if let Some(landing) = landing.as_mut() { + landing.update(&mut self.state.next_page, &mut self.http_state, &mut self.account, &mut self.config, &mut self.working, ctx, ui) + } else { + *landing = Some(Landing::init()) + } + } + Pages::Login(login) => { + login.update(&mut self.state.next_page, &mut self.account, &mut self.working, ctx, ui) + } + Pages::Settings(settings) => { + settings.update(&mut self.state.next_page, &mut self.config, ctx, ui) + } + Pages::Launcher(launcher) => { + launcher.update(&mut self.state.next_page, &mut self.account, &mut self.config, &mut self.state.child, &mut self.state.game_open, ctx, ui); + } + Pages::GameOpen => { + game_open::update(&mut self.state.child, ctx, ui); + } + } + }); + } +} \ No newline at end of file diff --git a/src/ui/game_open.rs b/src/ui/game_open.rs new file mode 100644 index 0000000..b228f05 --- /dev/null +++ b/src/ui/game_open.rs @@ -0,0 +1,10 @@ +use std::process::Child; +use egui::{Context, Ui}; + +pub fn update(child: &mut Option, ctx: &Context, ui: &mut Ui) { + ui.heading("Close OSRS to continue!"); + + if ui.button("Close").clicked() { + child.as_mut().unwrap().kill().expect("Failed to kill"); + } +} \ No newline at end of file diff --git a/src/ui/landing.rs b/src/ui/landing.rs new file mode 100644 index 0000000..dc1259e --- /dev/null +++ b/src/ui/landing.rs @@ -0,0 +1,199 @@ +use std::fs; +use std::path::Path; +use egui::{Context, ProgressBar, Ui}; +use serde_json::{Map, Value}; +use crate::backend::config::{Config, CONFIG_DIR}; +use crate::backend::http::HttpChannelChunk; +use crate::backend::secrets::Account; +use crate::HttpState; +use crate::ui::launcher::Launcher; +use crate::ui::login::{Login, LoginType}; +use crate::ui::Pages; + +pub struct Landing { + stage: LandingStage, + server_version: Option, +} + +#[derive(Clone)] +pub enum LandingStage { + Config, + CheckUpdate, + Verify, + Download, + Account, +} + +impl Landing { + pub fn init() -> Self { + Landing { + stage: LandingStage::Config, + server_version: None, + } + } + + pub fn update(&mut self, + next_page: &mut Option, + http_state: &mut HttpState, + account: &mut Option, + config: &mut Config, + working: &mut bool, + ctx: &Context, + ui: &mut Ui + ) { + match self.stage { + LandingStage::Config => { + ui.label("loading config"); + *working = true; + + *config = Config::get_config(); + + self.stage = LandingStage::CheckUpdate; + } + LandingStage::CheckUpdate => { + ui.label("checking for updates"); + *working = true; + + // Only do these checks if we're managing the runelite jar + if Path::new(&config.paths.runelite_path).to_path_buf().parent().unwrap().eq(CONFIG_DIR.get().unwrap()) { + if http_state.request_in_progress { + if let Some(channel) = &http_state.channel { + if let Ok(res) = channel.try_recv() { + match res { + HttpChannelChunk::Oneshot(res) => { + let res_json: Map = serde_json::from_slice(&res.bytes).expect("Invalid json from server"); + + let server_version = res_json.get("tag_name").expect("Missing tag_name in server response").as_str().unwrap().to_string(); + + println!("Server version: {}", server_version); + + self.server_version = Some(server_version.clone()); + + if config.versions.runelite_version.ne(&server_version) { + self.stage = LandingStage::Download; + } else { + self.stage = LandingStage::Verify; + } + + // We're done, destroy channel and reset fields + http_state.channel = None; + http_state.data = vec![]; + http_state.total_size = 0.0; + http_state.current_size = 0.0; + http_state.request_in_progress = false; + } + _ => { + panic!("Invalid!") + } + } + } + } + } else { + http_state.do_oneshot_request(ehttp::Request::get("https://api.github.com/repos/runelite/launcher/releases/latest")); + } + } + } + LandingStage::Verify => { + ui.label("verifying runelite"); + *working = true; + + self.stage = LandingStage::Account; + + if !Path::new(&config.paths.runelite_path).exists() { + self.stage = LandingStage::Download; + + return; + } + + // Only do these checks if we're managing the runelite jar + if Path::new(&config.paths.runelite_path).to_path_buf().parent().unwrap().eq(CONFIG_DIR.get().unwrap()) { + if config.versions.runelite_version.is_empty() || config.versions.runelite_hash.is_empty() { + self.stage = LandingStage::Download; + } + + let jar = fs::read(&config.paths.runelite_path); + match jar { + Ok(jar) => { + if blake3::hash(&jar).to_hex().to_string() != config.versions.runelite_hash { + self.stage = LandingStage::Download; + } + } + _=> { + self.stage = LandingStage::Download; + } + } + } + } + LandingStage::Download => { + ui.label("downloading runelite"); + *working = true; + + let update_to = self.server_version.clone().expect("Asked to download without version!"); + + if http_state.request_in_progress { + let progress = http_state.current_size / http_state.total_size; + + ui.add(ProgressBar::new(progress)); + ui.label(format!("{:.1}%", (progress * 100.0).max(0.0))); + + if let Some(channel) = &http_state.channel { + while let Ok(res) = channel.try_recv(){ + match res { + HttpChannelChunk::Start(total) => { + http_state.total_size = total; + } + HttpChannelChunk::Data(data) => { + http_state.current_size += data.len() as f32; + http_state.data.extend(data); + } + HttpChannelChunk::End => { + // We're done, destroy channel, write buffer, and reset fields + http_state.channel = None; + + // this isn't the best behaviour (we're writing a good amount of data sync'ed) but its easy and fast so who cares + fs::write(&config.paths.runelite_path, &http_state.data).expect("Failed to write runelite jar"); + + // same bad behaviour as above + config.versions.runelite_hash = blake3::hash(&http_state.data).to_hex().to_string(); + config.versions.runelite_version = update_to; + config.save_config(); + + http_state.data = vec![]; + + http_state.total_size = 0.0; + http_state.current_size = 0.0; + + http_state.request_in_progress = false; + + // TODO: verify or smth + + self.stage = LandingStage::Account; + break; + } + _ => { + panic!("Unexpected http channel chunk"); + } + } + } + }; + } else { + http_state.do_request(ehttp::Request::get(format!("https://github.com/runelite/launcher/releases/download/{}/RuneLite.jar", update_to))); + } + } + LandingStage::Account => { + ui.label("loading account"); + *working = true; + + *account = Account::get_secrets(); + + if account.is_none() { + *next_page = Some(Pages::Login(Login::init(LoginType::NoAccount))); + } else { + // TODO: verification that confirms the creds are valid + *next_page = Some(Pages::Launcher(Launcher::init())); + } + } + } + } +} + diff --git a/src/ui/launcher.rs b/src/ui/launcher.rs new file mode 100644 index 0000000..6d77b01 --- /dev/null +++ b/src/ui/launcher.rs @@ -0,0 +1,85 @@ +use std::process::{Child, Command}; +use egui::{Color32, Context, RichText, Ui}; +use egui_flex::{item, Flex, FlexAlign, FlexDirection}; +use egui_phosphor::fill; +use crate::backend::config::Config; +use crate::backend::secrets::Account; +use crate::ui::login::{Login, LoginType}; +use crate::ui::Pages; +use crate::ui::settings::Settings; + +#[derive(Clone)] +pub struct Launcher { + +} + +impl Launcher { + pub fn init() -> Launcher { + Launcher {} + } + + pub fn update(&mut self, + next_page: &mut Option, + account: &mut Option, + config: &mut Config, + child: &mut Option, + game_open: &mut bool, + _ctx: &Context, + ui: &mut Ui + ) { + let checked_account = if let Some(account) = account { + account.clone() + } else { + *next_page = Some(Pages::Login(Login::init(LoginType::NoAccount))); + + return; + }; + + Flex::new().w_full().h_full().direction(FlexDirection::Vertical).show(ui, |flex| { + flex.add_flex(item(), Flex::horizontal().w_full(), |flex| { + flex.add_ui(item(), |ui| { + ui.heading(format!("Hello, {}!", checked_account.character_name)); + }); + + flex.grow(); + + flex.add_ui(item(), |ui| { + if ui.button(RichText::new(fill::GEAR).size(20.0)).clicked() { + *next_page = Some(Pages::Settings(Settings::init())); + } + + if ui.button(RichText::new(fill::SIGN_OUT).color(Color32::RED).size(20.0)).clicked() { + checked_account.delete_secrets(); + + *account = None; + } + }); + }); + + flex.grow(); + + flex.add_ui(item().align_self(FlexAlign::Center), |ui| { + ui.add(egui::Image::new(egui::include_image!("../../assets/Steam_client_logo.png")).max_height(250f32)); + }); + + flex.add_ui(item().align_self(FlexAlign::Center), |ui| { + if ui.button(RichText::new("Play").size(30.0)).clicked() { + *child = Some(Command::new(config.paths.java_path.clone()) + .arg("-jar") + .arg(config.paths.runelite_path.clone()) + .arg("--launch-mode") + .arg("REFLECT") + .env("JX_SESSION_ID", checked_account.session_id.clone()) + .env("JX_CHARACTER_ID", checked_account.character_id.clone()) + .env("JX_DISPLAY_NAME", checked_account.character_name.clone()) + .spawn() + .expect("Failed to start RuneLite!")); + + *game_open = true; + } + }); + + flex.grow(); + }); + } +} \ No newline at end of file diff --git a/src/ui/login.rs b/src/ui/login.rs new file mode 100644 index 0000000..da459df --- /dev/null +++ b/src/ui/login.rs @@ -0,0 +1,114 @@ +use std::cmp::PartialEq; +use egui::{Context, Ui}; +use crate::backend::secrets::Account; +use crate::ui::launcher::Launcher; +use crate::ui::Pages; + +#[derive(Clone)] +pub struct Login { + login_type: LoginType, + login_error_type: Option, + session_id: String, + character_name: String, + character_id: String, + save_credentials: bool, +} + +#[derive(Clone)] +pub enum LoginType { + NoAccount, + ExpiredCredentials, +} + +#[derive(Clone, PartialEq)] +pub enum LoginErrorType { + LoggingIn, + MissingFields, + FailedToSave +} + +impl Login { + pub fn init(login_type: LoginType) -> Login { + Login { login_type, login_error_type: None, session_id: "".to_string(), character_name: "".to_string(), character_id: "".to_string(), save_credentials: false } + } + + pub fn update(&mut self, + next_page: &mut Option, + account: &mut Option, + working: &mut bool, + _ctx: &Context, + ui: &mut Ui + ) { + ui.heading("Login"); + + match self.login_type { + LoginType::NoAccount => { + ui.label("No account"); + } + LoginType::ExpiredCredentials => { + ui.label("Expired credentials"); + } + } + + ui.horizontal(|ui| { + ui.label("Character Name: "); + + ui.add(egui::TextEdit::singleline(&mut self.character_name)); + }); + + ui.horizontal(|ui| { + ui.label("Character ID: "); + ui.add(egui::TextEdit::singleline(&mut self.character_id).password(true)); + }); + + ui.horizontal(|ui| { + ui.label("Session ID: "); + ui.add(egui::TextEdit::singleline(&mut self.session_id).password(true)); + }); + + ui.horizontal(|ui| { + if ui.button("Login").clicked() { + self.login_error_type = None; + + if self.character_name.is_empty() | self.character_id.is_empty() | self.session_id.is_empty() { + self.login_error_type = Some(LoginErrorType::MissingFields); + } else { + self.login_error_type = Some(LoginErrorType::LoggingIn); + + let new_account = Account { + session_id: self.session_id.clone(), + character_id: self.character_id.clone(), + character_name: self.character_name.clone(), + }; + + *account = Some(new_account.clone()); + + if self.save_credentials && !new_account.insert_secrets() { + self.login_error_type = Some(LoginErrorType::FailedToSave); + } + + if self.login_error_type.clone().is_some_and(|x| x.eq(&LoginErrorType::LoggingIn)) { + *next_page = Some(Pages::Launcher(Launcher::init())) + } + } + } + + if let Some(error_type) = self.login_error_type.clone() { + match error_type { + LoginErrorType::MissingFields => { + ui.label("Missing fields"); + } + LoginErrorType::LoggingIn => { + ui.label("Logging in..."); + *working = true; + } + LoginErrorType::FailedToSave => { + ui.label("Failed to save credentials."); + } + } + } + }); + + ui.checkbox(&mut self.save_credentials, "Save credentials?"); + } +} \ No newline at end of file diff --git a/src/ui/mod.rs b/src/ui/mod.rs new file mode 100644 index 0000000..77d0817 --- /dev/null +++ b/src/ui/mod.rs @@ -0,0 +1,18 @@ +use crate::ui::landing::Landing; +use crate::ui::launcher::Launcher; +use crate::ui::login::Login; +use crate::ui::settings::Settings; + +pub mod landing; +pub mod game_open; +pub mod login; +pub mod launcher; +pub mod settings; + +pub enum Pages { + Landing(Option), + Login(Login), + Settings(Settings), + Launcher(Launcher), + GameOpen, +} \ No newline at end of file diff --git a/src/ui/settings.rs b/src/ui/settings.rs new file mode 100644 index 0000000..b529280 --- /dev/null +++ b/src/ui/settings.rs @@ -0,0 +1,55 @@ +use egui::{Context, Ui}; +use egui_phosphor::fill; +use rfd::FileDialog; +use crate::backend::config::Config; +use crate::ui::launcher::Launcher; +use crate::ui::Pages; + +#[derive(Clone)] +pub struct Settings { +} + +impl Settings { + pub fn init() -> Settings { + Settings {} + } + + pub fn update(&mut self, + next_page: &mut Option, + config: &mut Config, + _ctx: &Context, + ui: &mut Ui + ) { + ui.heading("Settings"); + + if ui.button(format!("{} Open Data Folder", fill::FOLDER)).clicked() { + + } + + ui.horizontal(|ui| { + ui.label("RuneLite path: "); + ui.add(egui::TextEdit::singleline(&mut config.paths.runelite_path)); + + if ui.button(format!("{} Select", fill::FOLDER)).clicked() { + // TODO: switch this to use a channel and another thread + config.paths.runelite_path = FileDialog::new().pick_file().unwrap_or_default().into_os_string().into_string().unwrap_or_default(); + } + }); + + ui.horizontal(|ui| { + ui.label("Java path: "); + ui.add(egui::TextEdit::singleline(&mut config.paths.java_path)); + + if ui.button(format!("{} Select", fill::FOLDER)).clicked() { + // TODO: switch this to use a channel and another thread + config.paths.java_path = FileDialog::new().pick_file().unwrap_or_default().into_os_string().into_string().unwrap_or_default(); + } + }); + + if ui.button("Save and Go Back").clicked() { + config.save_config(); + + *next_page = Some(Pages::Launcher(Launcher::init())) + } + } +} \ No newline at end of file