diff --git a/README.md b/README.md
index 9d221af..cf56a37 100644
--- a/README.md
+++ b/README.md
@@ -19,9 +19,12 @@ The project is organized as a pnpm monorepo with the following structure:
│ ├── core/ # Core logic and state management
│ └── renderer/ # Canvas rendering engine
└── apps/
- └── web/ # SvelteKit web application
+ ├── web/ # SvelteKit web application
+ └── desktop/ # Tauri desktop wrapper
```
+**Desktop App:** The desktop app shares the same codebase as the web app. The web app detects if it's running inside Tauri and uses file-based persistence instead of IndexedDB.
+
## Packages
@@ -84,6 +87,7 @@ SvelteKit-based web application providing the user interface.
### Tech Stack
- **Testing:** Vitest with Playwright (browser tests) and Node (unit tests)
+- **Persistence:** IndexedDB (Dexie) for web, filesystem for desktop
### Development
@@ -95,15 +99,61 @@ pnpm test # Run tests
+
+apps/desktop
+
+Tauri desktop wrapper that loads the web app with native file system access.
+
+### Features
+
+- Native file dialogs (Open/Save)
+- File-based document persistence (`.inkfinite.json`)
+- Recent files tracking
+- Same UI as web app with platform-specific persistence
+
+### Tech Stack
+
+- **Framework:** Tauri v2
+- **Frontend:** Shared with web app (SvelteKit)
+- **Backend:** Rust with Tauri plugins (dialog, fs, store)
+
+### Development
+
+```bash
+cd apps/desktop
+
+# Development mode (with hot reload)
+pnpm tauri dev
+
+# Build production app
+pnpm tauri build
+```
+
+**Note:** The web app automatically detects when running in Tauri and switches from IndexedDB to file-based persistence.
+
+
+
## Development
### Prerequisites
+**Standard Setup:**
+
- Node.js 18+
- pnpm 8+
+**Nix/NixOS Setup:**
+
+- Nix with flakes enabled
+- For desktop app: Rust via [rustup](https://rustup.rs) (not Nix)
+
### Setup
+
+
+Standard
+
+
```bash
# Install dependencies
pnpm install
@@ -119,9 +169,43 @@ cd apps/web
pnpm dev
```
+
+
+
+
+Nix Shell
+
+
+```bash
+# Enter Nix development shell (provides Node.js & pnpm)
+nix-shell
+
+# Install dependencies
+pnpm install
+
+# For desktop app development, ensure Rust is installed via rustup:
+# curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh --no-modify-path -y
+
+# Run web app
+cd apps/web
+pnpm dev
+
+# Run desktop app (Tauri)
+cd apps/desktop
+pnpm tauri dev
+```
+
+- Node.js and pnpm are provided by Nix for consistency
+- Rust must be installed via rustup to avoid macOS framework linking issues
+- The shell automatically configures paths and SDK for Tauri development
+
+
+
+### Project
+
-Project Structure
+Structure
```sh
diff --git a/apps/desktop/.gitignore b/apps/desktop/.gitignore
new file mode 100644
index 0000000..6635cf5
--- /dev/null
+++ b/apps/desktop/.gitignore
@@ -0,0 +1,10 @@
+.DS_Store
+node_modules
+/build
+/.svelte-kit
+/package
+.env
+.env.*
+!.env.example
+vite.config.js.timestamp-*
+vite.config.ts.timestamp-*
diff --git a/apps/desktop/.gitkeep b/apps/desktop/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/apps/desktop/.vscode/extensions.json b/apps/desktop/.vscode/extensions.json
new file mode 100644
index 0000000..61343e9
--- /dev/null
+++ b/apps/desktop/.vscode/extensions.json
@@ -0,0 +1,7 @@
+{
+ "recommendations": [
+ "svelte.svelte-vscode",
+ "tauri-apps.tauri-vscode",
+ "rust-lang.rust-analyzer"
+ ]
+}
diff --git a/apps/desktop/.vscode/settings.json b/apps/desktop/.vscode/settings.json
new file mode 100644
index 0000000..2f86c50
--- /dev/null
+++ b/apps/desktop/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "svelte.enable-ts-plugin": true
+}
diff --git a/apps/desktop/README.md b/apps/desktop/README.md
new file mode 100644
index 0000000..858d179
--- /dev/null
+++ b/apps/desktop/README.md
@@ -0,0 +1,7 @@
+# Tauri + SvelteKit + TypeScript
+
+This template should help get you started developing with Tauri, SvelteKit and TypeScript in Vite.
+
+## Recommended IDE Setup
+
+[VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode) + [Tauri](https://marketplace.visualstudio.com/items?itemName=tauri-apps.tauri-vscode) + [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer).
diff --git a/apps/desktop/package.json b/apps/desktop/package.json
new file mode 100644
index 0000000..a59fa10
--- /dev/null
+++ b/apps/desktop/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "desktop",
+ "version": "0.1.0",
+ "description": "Inkfinite desktop app (Tauri wrapper for web app)",
+ "type": "module",
+ "scripts": { "tauri": "tauri" },
+ "license": "MIT",
+ "devDependencies": { "@tauri-apps/cli": "^2" }
+}
diff --git a/apps/desktop/src-tauri/.gitignore b/apps/desktop/src-tauri/.gitignore
new file mode 100644
index 0000000..b21bd68
--- /dev/null
+++ b/apps/desktop/src-tauri/.gitignore
@@ -0,0 +1,7 @@
+# Generated by Cargo
+# will have compiled files and executables
+/target/
+
+# Generated by Tauri
+# will have schema files for capabilities auto-completion
+/gen/schemas
diff --git a/apps/desktop/src-tauri/Cargo.lock b/apps/desktop/src-tauri/Cargo.lock
new file mode 100644
index 0000000..ad59ff3
--- /dev/null
+++ b/apps/desktop/src-tauri/Cargo.lock
@@ -0,0 +1,5414 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 4
+
+[[package]]
+name = "adler2"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "alloc-no-stdlib"
+version = "2.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
+
+[[package]]
+name = "alloc-stdlib"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
+dependencies = [
+ "alloc-no-stdlib",
+]
+
+[[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.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
+
+[[package]]
+name = "ashpd"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6cbdf310d77fd3aaee6ea2093db7011dc2d35d2eb3481e5607f1f8d942ed99df"
+dependencies = [
+ "enumflags2",
+ "futures-channel",
+ "futures-util",
+ "rand 0.9.2",
+ "raw-window-handle",
+ "serde",
+ "serde_repr",
+ "tokio",
+ "url",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-protocols",
+ "zbus",
+]
+
+[[package]]
+name = "async-broadcast"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532"
+dependencies = [
+ "event-listener",
+ "event-listener-strategy",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-channel"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2"
+dependencies = [
+ "concurrent-queue",
+ "event-listener-strategy",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-executor"
+version = "1.13.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8"
+dependencies = [
+ "async-task",
+ "concurrent-queue",
+ "fastrand",
+ "futures-lite",
+ "pin-project-lite",
+ "slab",
+]
+
+[[package]]
+name = "async-io"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc"
+dependencies = [
+ "autocfg",
+ "cfg-if",
+ "concurrent-queue",
+ "futures-io",
+ "futures-lite",
+ "parking",
+ "polling",
+ "rustix",
+ "slab",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "async-lock"
+version = "3.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311"
+dependencies = [
+ "event-listener",
+ "event-listener-strategy",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-process"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75"
+dependencies = [
+ "async-channel",
+ "async-io",
+ "async-lock",
+ "async-signal",
+ "async-task",
+ "blocking",
+ "cfg-if",
+ "event-listener",
+ "futures-lite",
+ "rustix",
+]
+
+[[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 2.0.111",
+]
+
+[[package]]
+name = "async-signal"
+version = "0.2.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c"
+dependencies = [
+ "async-io",
+ "async-lock",
+ "atomic-waker",
+ "cfg-if",
+ "futures-core",
+ "futures-io",
+ "rustix",
+ "signal-hook-registry",
+ "slab",
+ "windows-sys 0.61.2",
+]
+
+[[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.89"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "atk"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b"
+dependencies = [
+ "atk-sys",
+ "glib",
+ "libc",
+]
+
+[[package]]
+name = "atk-sys"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "atomic-waker"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
+
+[[package]]
+name = "autocfg"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
+
+[[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 = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
+dependencies = [
+ "serde_core",
+]
+
+[[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.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5"
+dependencies = [
+ "objc2",
+]
+
+[[package]]
+name = "blocking"
+version = "1.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21"
+dependencies = [
+ "async-channel",
+ "async-task",
+ "futures-io",
+ "futures-lite",
+ "piper",
+]
+
+[[package]]
+name = "brotli"
+version = "8.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+ "brotli-decompressor",
+]
+
+[[package]]
+name = "brotli-decompressor"
+version = "5.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.19.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510"
+
+[[package]]
+name = "bytemuck"
+version = "1.24.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4"
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "bytes"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cairo-rs"
+version = "0.18.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2"
+dependencies = [
+ "bitflags 2.10.0",
+ "cairo-sys-rs",
+ "glib",
+ "libc",
+ "once_cell",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "cairo-sys-rs"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "camino"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48"
+dependencies = [
+ "serde_core",
+]
+
+[[package]]
+name = "cargo-platform"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cargo_metadata"
+version = "0.19.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba"
+dependencies = [
+ "camino",
+ "cargo-platform",
+ "semver",
+ "serde",
+ "serde_json",
+ "thiserror 2.0.17",
+]
+
+[[package]]
+name = "cargo_toml"
+version = "0.22.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77"
+dependencies = [
+ "serde",
+ "toml 0.9.10+spec-1.1.0",
+]
+
+[[package]]
+name = "cc"
+version = "1.2.50"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f50d563227a1c37cc0a263f64eca3334388c01c5e4c4861a9def205c614383c"
+dependencies = [
+ "find-msvc-tools",
+ "shlex",
+]
+
+[[package]]
+name = "cesu8"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
+
+[[package]]
+name = "cfb"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f"
+dependencies = [
+ "byteorder",
+ "fnv",
+ "uuid",
+]
+
+[[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.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
+
+[[package]]
+name = "cfg_aliases"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
+
+[[package]]
+name = "chrono"
+version = "0.4.42"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"
+dependencies = [
+ "iana-time-zone",
+ "num-traits",
+ "serde",
+ "windows-link 0.2.1",
+]
+
+[[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 = "convert_case"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
+
+[[package]]
+name = "cookie"
+version = "0.18.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747"
+dependencies = [
+ "time",
+ "version_check",
+]
+
+[[package]]
+name = "core-foundation"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
+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.24.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1"
+dependencies = [
+ "bitflags 2.10.0",
+ "core-foundation",
+ "core-graphics-types",
+ "foreign-types",
+ "libc",
+]
+
+[[package]]
+name = "core-graphics-types"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
+dependencies = [
+ "bitflags 2.10.0",
+ "core-foundation",
+ "libc",
+]
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crc32fast"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2"
+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 = "crypto-common"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
+name = "cssparser"
+version = "0.29.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f93d03419cb5950ccfd3daf3ff1c7a36ace64609a1a8746d493df1ca0afde0fa"
+dependencies = [
+ "cssparser-macros",
+ "dtoa-short",
+ "itoa",
+ "matches",
+ "phf 0.10.1",
+ "proc-macro2",
+ "quote",
+ "smallvec",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "cssparser-macros"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
+dependencies = [
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "ctor"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501"
+dependencies = [
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "darling"
+version = "0.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0"
+dependencies = [
+ "darling_core",
+ "darling_macro",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81"
+dependencies = [
+ "darling_core",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "deranged"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587"
+dependencies = [
+ "powerfmt",
+ "serde_core",
+]
+
+[[package]]
+name = "derive_more"
+version = "0.99.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f"
+dependencies = [
+ "convert_case",
+ "proc-macro2",
+ "quote",
+ "rustc_version",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "desktop"
+version = "0.1.0"
+dependencies = [
+ "serde",
+ "serde_json",
+ "tauri",
+ "tauri-build",
+ "tauri-plugin-dialog",
+ "tauri-plugin-fs",
+ "tauri-plugin-opener",
+ "tauri-plugin-store",
+]
+
+[[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 = "dirs"
+version = "6.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
+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.61.2",
+]
+
+[[package]]
+name = "dispatch"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
+
+[[package]]
+name = "dispatch2"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec"
+dependencies = [
+ "bitflags 2.10.0",
+ "block2",
+ "libc",
+ "objc2",
+]
+
+[[package]]
+name = "displaydoc"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "dlib"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412"
+dependencies = [
+ "libloading 0.8.9",
+]
+
+[[package]]
+name = "dlopen2"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4"
+dependencies = [
+ "dlopen2_derive",
+ "libc",
+ "once_cell",
+ "winapi",
+]
+
+[[package]]
+name = "dlopen2_derive"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[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.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "dtoa"
+version = "1.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04"
+
+[[package]]
+name = "dtoa-short"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87"
+dependencies = [
+ "dtoa",
+]
+
+[[package]]
+name = "dunce"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
+
+[[package]]
+name = "dyn-clone"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555"
+
+[[package]]
+name = "embed-resource"
+version = "3.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55a075fc573c64510038d7ee9abc7990635863992f83ebc52c8b433b8411a02e"
+dependencies = [
+ "cc",
+ "memchr",
+ "rustc_version",
+ "toml 0.9.10+spec-1.1.0",
+ "vswhom",
+ "winreg",
+]
+
+[[package]]
+name = "embed_plist"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7"
+
+[[package]]
+name = "endi"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099"
+
+[[package]]
+name = "enumflags2"
+version = "0.7.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef"
+dependencies = [
+ "enumflags2_derive",
+ "serde",
+]
+
+[[package]]
+name = "enumflags2_derive"
+version = "0.7.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
+
+[[package]]
+name = "erased-serde"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3"
+dependencies = [
+ "serde",
+ "serde_core",
+ "typeid",
+]
+
+[[package]]
+name = "errno"
+version = "0.3.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
+dependencies = [
+ "libc",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "event-listener"
+version = "5.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93"
+dependencies = [
+ "event-listener",
+ "pin-project-lite",
+]
+
+[[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 = "field-offset"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f"
+dependencies = [
+ "memoffset",
+ "rustc_version",
+]
+
+[[package]]
+name = "find-msvc-tools"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844"
+
+[[package]]
+name = "flate2"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[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 2.0.111",
+]
+
+[[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.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "futf"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843"
+dependencies = [
+ "mac",
+ "new_debug_unreachable",
+]
+
+[[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-executor"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[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.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad"
+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 2.0.111",
+]
+
+[[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 = "fxhash"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
+dependencies = [
+ "byteorder",
+]
+
+[[package]]
+name = "gdk"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691"
+dependencies = [
+ "cairo-rs",
+ "gdk-pixbuf",
+ "gdk-sys",
+ "gio",
+ "glib",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gdk-pixbuf"
+version = "0.18.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec"
+dependencies = [
+ "gdk-pixbuf-sys",
+ "gio",
+ "glib",
+ "libc",
+ "once_cell",
+]
+
+[[package]]
+name = "gdk-pixbuf-sys"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7"
+dependencies = [
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "gdk-sys"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "pango-sys",
+ "pkg-config",
+ "system-deps",
+]
+
+[[package]]
+name = "gdkwayland-sys"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69"
+dependencies = [
+ "gdk-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "pkg-config",
+ "system-deps",
+]
+
+[[package]]
+name = "gdkx11"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe"
+dependencies = [
+ "gdk",
+ "gdkx11-sys",
+ "gio",
+ "glib",
+ "libc",
+ "x11",
+]
+
+[[package]]
+name = "gdkx11-sys"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d"
+dependencies = [
+ "gdk-sys",
+ "glib-sys",
+ "libc",
+ "system-deps",
+ "x11",
+]
+
+[[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 = "getrandom"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi 0.9.0+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi 0.11.1+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "r-efi",
+ "wasip2",
+]
+
+[[package]]
+name = "gio"
+version = "0.18.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-util",
+ "gio-sys",
+ "glib",
+ "libc",
+ "once_cell",
+ "pin-project-lite",
+ "smallvec",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "gio-sys"
+version = "0.18.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+ "winapi",
+]
+
+[[package]]
+name = "glib"
+version = "0.18.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5"
+dependencies = [
+ "bitflags 2.10.0",
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-task",
+ "futures-util",
+ "gio-sys",
+ "glib-macros",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "memchr",
+ "once_cell",
+ "smallvec",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "glib-macros"
+version = "0.18.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc"
+dependencies = [
+ "heck 0.4.1",
+ "proc-macro-crate 2.0.2",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "glib-sys"
+version = "0.18.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898"
+dependencies = [
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "glob"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
+
+[[package]]
+name = "gobject-sys"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "gtk"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a"
+dependencies = [
+ "atk",
+ "cairo-rs",
+ "field-offset",
+ "futures-channel",
+ "gdk",
+ "gdk-pixbuf",
+ "gio",
+ "glib",
+ "gtk-sys",
+ "gtk3-macros",
+ "libc",
+ "pango",
+ "pkg-config",
+]
+
+[[package]]
+name = "gtk-sys"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414"
+dependencies = [
+ "atk-sys",
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gdk-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "pango-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "gtk3-macros"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d"
+dependencies = [
+ "proc-macro-crate 1.3.1",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+
+[[package]]
+name = "hashbrown"
+version = "0.16.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
+
+[[package]]
+name = "heck"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+
+[[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.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
+
+[[package]]
+name = "hex"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+
+[[package]]
+name = "html5ever"
+version = "0.29.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b7410cae13cbc75623c98ac4cbfd1f0bedddf3227afc24f370cf0f50a44a11c"
+dependencies = [
+ "log",
+ "mac",
+ "markup5ever",
+ "match_token",
+]
+
+[[package]]
+name = "http"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a"
+dependencies = [
+ "bytes",
+ "itoa",
+]
+
+[[package]]
+name = "http-body"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
+dependencies = [
+ "bytes",
+ "http",
+]
+
+[[package]]
+name = "http-body-util"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "http",
+ "http-body",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "httparse"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
+
+[[package]]
+name = "hyper"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11"
+dependencies = [
+ "atomic-waker",
+ "bytes",
+ "futures-channel",
+ "futures-core",
+ "http",
+ "http-body",
+ "httparse",
+ "itoa",
+ "pin-project-lite",
+ "pin-utils",
+ "smallvec",
+ "tokio",
+ "want",
+]
+
+[[package]]
+name = "hyper-util"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f"
+dependencies = [
+ "base64 0.22.1",
+ "bytes",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "http",
+ "http-body",
+ "hyper",
+ "ipnet",
+ "libc",
+ "percent-encoding",
+ "pin-project-lite",
+ "socket2",
+ "tokio",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.64"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "log",
+ "wasm-bindgen",
+ "windows-core 0.62.2",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "ico"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc50b891e4acf8fe0e71ef88ec43ad82ee07b3810ad09de10f1d01f072ed4b98"
+dependencies = [
+ "byteorder",
+ "png",
+]
+
+[[package]]
+name = "icu_collections"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
+dependencies = [
+ "displaydoc",
+ "potential_utf",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locale_core"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
+dependencies = [
+ "displaydoc",
+ "litemap",
+ "tinystr",
+ "writeable",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
+dependencies = [
+ "icu_collections",
+ "icu_normalizer_data",
+ "icu_properties",
+ "icu_provider",
+ "smallvec",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer_data"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
+
+[[package]]
+name = "icu_properties"
+version = "2.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec"
+dependencies = [
+ "icu_collections",
+ "icu_locale_core",
+ "icu_properties_data",
+ "icu_provider",
+ "zerotrie",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_properties_data"
+version = "2.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af"
+
+[[package]]
+name = "icu_provider"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
+dependencies = [
+ "displaydoc",
+ "icu_locale_core",
+ "writeable",
+ "yoke",
+ "zerofrom",
+ "zerotrie",
+ "zerovec",
+]
+
+[[package]]
+name = "ident_case"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+
+[[package]]
+name = "idna"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
+dependencies = [
+ "idna_adapter",
+ "smallvec",
+ "utf8_iter",
+]
+
+[[package]]
+name = "idna_adapter"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
+dependencies = [
+ "icu_normalizer",
+ "icu_properties",
+]
+
+[[package]]
+name = "indexmap"
+version = "1.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
+dependencies = [
+ "autocfg",
+ "hashbrown 0.12.3",
+ "serde",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.16.1",
+ "serde",
+ "serde_core",
+]
+
+[[package]]
+name = "infer"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7"
+dependencies = [
+ "cfb",
+]
+
+[[package]]
+name = "ipnet"
+version = "2.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
+
+[[package]]
+name = "iri-string"
+version = "0.7.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397"
+dependencies = [
+ "memchr",
+ "serde",
+]
+
+[[package]]
+name = "is-docker"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "is-wsl"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5"
+dependencies = [
+ "is-docker",
+ "once_cell",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ee5b5339afb4c41626dde77b7a611bd4f2c202b897852b4bcf5d03eddc61010"
+
+[[package]]
+name = "javascriptcore-rs"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc"
+dependencies = [
+ "bitflags 1.3.2",
+ "glib",
+ "javascriptcore-rs-sys",
+]
+
+[[package]]
+name = "javascriptcore-rs-sys"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[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 = "js-sys"
+version = "0.3.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8"
+dependencies = [
+ "once_cell",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "json-patch"
+version = "3.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08"
+dependencies = [
+ "jsonptr",
+ "serde",
+ "serde_json",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "jsonptr"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "keyboard-types"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a"
+dependencies = [
+ "bitflags 2.10.0",
+ "serde",
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "kuchikiki"
+version = "0.8.8-speedreader"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02cb977175687f33fa4afa0c95c112b987ea1443e5a51c8f8ff27dc618270cc2"
+dependencies = [
+ "cssparser",
+ "html5ever",
+ "indexmap 2.12.1",
+ "selectors",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
+
+[[package]]
+name = "libappindicator"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a"
+dependencies = [
+ "glib",
+ "gtk",
+ "gtk-sys",
+ "libappindicator-sys",
+ "log",
+]
+
+[[package]]
+name = "libappindicator-sys"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf"
+dependencies = [
+ "gtk-sys",
+ "libloading 0.7.4",
+ "once_cell",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.178"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091"
+
+[[package]]
+name = "libloading"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
+dependencies = [
+ "cfg-if",
+ "winapi",
+]
+
+[[package]]
+name = "libloading"
+version = "0.8.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55"
+dependencies = [
+ "cfg-if",
+ "windows-link 0.2.1",
+]
+
+[[package]]
+name = "libredox"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df15f6eac291ed1cf25865b1ee60399f57e7c227e7f51bdbd4c5270396a9ed50"
+dependencies = [
+ "bitflags 2.10.0",
+ "libc",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
+
+[[package]]
+name = "litemap"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
+
+[[package]]
+name = "lock_api"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
+dependencies = [
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
+
+[[package]]
+name = "mac"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
+
+[[package]]
+name = "markup5ever"
+version = "0.14.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7a7213d12e1864c0f002f52c2923d4556935a43dec5e71355c2760e0f6e7a18"
+dependencies = [
+ "log",
+ "phf 0.11.3",
+ "phf_codegen 0.11.3",
+ "string_cache",
+ "string_cache_codegen",
+ "tendril",
+]
+
+[[package]]
+name = "match_token"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "matches"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
+
+[[package]]
+name = "memchr"
+version = "2.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
+
+[[package]]
+name = "memoffset"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "mime"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+
+[[package]]
+name = "miniz_oxide"
+version = "0.8.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
+dependencies = [
+ "adler2",
+ "simd-adler32",
+]
+
+[[package]]
+name = "mio"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc"
+dependencies = [
+ "libc",
+ "wasi 0.11.1+wasi-snapshot-preview1",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "muda"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01c1738382f66ed56b3b9c8119e794a2e23148ac8ea214eda86622d4cb9d415a"
+dependencies = [
+ "crossbeam-channel",
+ "dpi",
+ "gtk",
+ "keyboard-types",
+ "objc2",
+ "objc2-app-kit",
+ "objc2-core-foundation",
+ "objc2-foundation",
+ "once_cell",
+ "png",
+ "serde",
+ "thiserror 2.0.17",
+ "windows-sys 0.60.2",
+]
+
+[[package]]
+name = "ndk"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4"
+dependencies = [
+ "bitflags 2.10.0",
+ "jni-sys",
+ "log",
+ "ndk-sys",
+ "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.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.30.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
+dependencies = [
+ "bitflags 2.10.0",
+ "cfg-if",
+ "cfg_aliases",
+ "libc",
+ "memoffset",
+]
+
+[[package]]
+name = "nodrop"
+version = "0.1.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
+
+[[package]]
+name = "num-conv"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
+
+[[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.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c"
+dependencies = [
+ "num_enum_derive",
+ "rustversion",
+]
+
+[[package]]
+name = "num_enum_derive"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7"
+dependencies = [
+ "proc-macro-crate 3.4.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "objc2"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05"
+dependencies = [
+ "objc2-encode",
+ "objc2-exception-helper",
+]
+
+[[package]]
+name = "objc2-app-kit"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c"
+dependencies = [
+ "bitflags 2.10.0",
+ "block2",
+ "libc",
+ "objc2",
+ "objc2-cloud-kit",
+ "objc2-core-data",
+ "objc2-core-foundation",
+ "objc2-core-graphics",
+ "objc2-core-image",
+ "objc2-core-text",
+ "objc2-core-video",
+ "objc2-foundation",
+ "objc2-quartz-core",
+]
+
+[[package]]
+name = "objc2-cloud-kit"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c"
+dependencies = [
+ "bitflags 2.10.0",
+ "objc2",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "objc2-core-data"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa"
+dependencies = [
+ "bitflags 2.10.0",
+ "objc2",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "objc2-core-foundation"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
+dependencies = [
+ "bitflags 2.10.0",
+ "dispatch2",
+ "objc2",
+]
+
+[[package]]
+name = "objc2-core-graphics"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807"
+dependencies = [
+ "bitflags 2.10.0",
+ "dispatch2",
+ "objc2",
+ "objc2-core-foundation",
+ "objc2-io-surface",
+]
+
+[[package]]
+name = "objc2-core-image"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006"
+dependencies = [
+ "objc2",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "objc2-core-text"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d"
+dependencies = [
+ "bitflags 2.10.0",
+ "objc2",
+ "objc2-core-foundation",
+ "objc2-core-graphics",
+]
+
+[[package]]
+name = "objc2-core-video"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6"
+dependencies = [
+ "bitflags 2.10.0",
+ "objc2",
+ "objc2-core-foundation",
+ "objc2-core-graphics",
+ "objc2-io-surface",
+]
+
+[[package]]
+name = "objc2-encode"
+version = "4.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33"
+
+[[package]]
+name = "objc2-exception-helper"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "objc2-foundation"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272"
+dependencies = [
+ "bitflags 2.10.0",
+ "block2",
+ "libc",
+ "objc2",
+ "objc2-core-foundation",
+]
+
+[[package]]
+name = "objc2-io-surface"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d"
+dependencies = [
+ "bitflags 2.10.0",
+ "objc2",
+ "objc2-core-foundation",
+]
+
+[[package]]
+name = "objc2-javascript-core"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a1e6550c4caed348956ce3370c9ffeca70bb1dbed4fa96112e7c6170e074586"
+dependencies = [
+ "objc2",
+ "objc2-core-foundation",
+]
+
+[[package]]
+name = "objc2-quartz-core"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f"
+dependencies = [
+ "bitflags 2.10.0",
+ "objc2",
+ "objc2-core-foundation",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "objc2-security"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "709fe137109bd1e8b5a99390f77a7d8b2961dafc1a1c5db8f2e60329ad6d895a"
+dependencies = [
+ "bitflags 2.10.0",
+ "objc2",
+ "objc2-core-foundation",
+]
+
+[[package]]
+name = "objc2-ui-kit"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22"
+dependencies = [
+ "bitflags 2.10.0",
+ "objc2",
+ "objc2-core-foundation",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "objc2-web-kit"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f"
+dependencies = [
+ "bitflags 2.10.0",
+ "block2",
+ "objc2",
+ "objc2-app-kit",
+ "objc2-core-foundation",
+ "objc2-foundation",
+ "objc2-javascript-core",
+ "objc2-security",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+
+[[package]]
+name = "open"
+version = "5.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43bb73a7fa3799b198970490a51174027ba0d4ec504b03cd08caf513d40024bc"
+dependencies = [
+ "dunce",
+ "is-wsl",
+ "libc",
+ "pathdiff",
+]
+
+[[package]]
+name = "option-ext"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
+
+[[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 = "pango"
+version = "0.18.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4"
+dependencies = [
+ "gio",
+ "glib",
+ "libc",
+ "once_cell",
+ "pango-sys",
+]
+
+[[package]]
+name = "pango-sys"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[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.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-link 0.2.1",
+]
+
+[[package]]
+name = "pathdiff"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3"
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
+
+[[package]]
+name = "phf"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12"
+dependencies = [
+ "phf_shared 0.8.0",
+]
+
+[[package]]
+name = "phf"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259"
+dependencies = [
+ "phf_macros 0.10.0",
+ "phf_shared 0.10.0",
+ "proc-macro-hack",
+]
+
+[[package]]
+name = "phf"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
+dependencies = [
+ "phf_macros 0.11.3",
+ "phf_shared 0.11.3",
+]
+
+[[package]]
+name = "phf_codegen"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815"
+dependencies = [
+ "phf_generator 0.8.0",
+ "phf_shared 0.8.0",
+]
+
+[[package]]
+name = "phf_codegen"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a"
+dependencies = [
+ "phf_generator 0.11.3",
+ "phf_shared 0.11.3",
+]
+
+[[package]]
+name = "phf_generator"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526"
+dependencies = [
+ "phf_shared 0.8.0",
+ "rand 0.7.3",
+]
+
+[[package]]
+name = "phf_generator"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6"
+dependencies = [
+ "phf_shared 0.10.0",
+ "rand 0.8.5",
+]
+
+[[package]]
+name = "phf_generator"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
+dependencies = [
+ "phf_shared 0.11.3",
+ "rand 0.8.5",
+]
+
+[[package]]
+name = "phf_macros"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0"
+dependencies = [
+ "phf_generator 0.10.0",
+ "phf_shared 0.10.0",
+ "proc-macro-hack",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "phf_macros"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216"
+dependencies = [
+ "phf_generator 0.11.3",
+ "phf_shared 0.11.3",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7"
+dependencies = [
+ "siphasher 0.3.11",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
+dependencies = [
+ "siphasher 0.3.11",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5"
+dependencies = [
+ "siphasher 1.0.1",
+]
+
+[[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.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
+
+[[package]]
+name = "plist"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07"
+dependencies = [
+ "base64 0.22.1",
+ "indexmap 2.12.1",
+ "quick-xml 0.38.4",
+ "serde",
+ "time",
+]
+
+[[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",
+]
+
+[[package]]
+name = "polling"
+version = "3.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218"
+dependencies = [
+ "cfg-if",
+ "concurrent-queue",
+ "hermit-abi",
+ "pin-project-lite",
+ "rustix",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "potential_utf"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
+dependencies = [
+ "zerovec",
+]
+
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
+dependencies = [
+ "zerocopy",
+]
+
+[[package]]
+name = "precomputed-hash"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
+
+[[package]]
+name = "proc-macro-crate"
+version = "1.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
+dependencies = [
+ "once_cell",
+ "toml_edit 0.19.15",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24"
+dependencies = [
+ "toml_datetime 0.6.3",
+ "toml_edit 0.20.2",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "3.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983"
+dependencies = [
+ "toml_edit 0.23.10+spec-1.0.0",
+]
+
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-hack"
+version = "0.5.20+deprecated"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.103"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quick-xml"
+version = "0.37.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "quick-xml"
+version = "0.38.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.42"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "r-efi"
+version = "5.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
+
+[[package]]
+name = "rand"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
+dependencies = [
+ "getrandom 0.1.16",
+ "libc",
+ "rand_chacha 0.2.2",
+ "rand_core 0.5.1",
+ "rand_hc",
+ "rand_pcg",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha 0.3.1",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
+dependencies = [
+ "rand_chacha 0.9.0",
+ "rand_core 0.9.3",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.5.1",
+]
+
+[[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 0.6.4",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.9.3",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
+dependencies = [
+ "getrandom 0.1.16",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom 0.2.16",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
+dependencies = [
+ "getrandom 0.3.4",
+]
+
+[[package]]
+name = "rand_hc"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
+dependencies = [
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "rand_pcg"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429"
+dependencies = [
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "raw-window-handle"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539"
+
+[[package]]
+name = "redox_syscall"
+version = "0.5.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
+dependencies = [
+ "bitflags 2.10.0",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
+dependencies = [
+ "getrandom 0.2.16",
+ "libredox",
+ "thiserror 2.0.17",
+]
+
+[[package]]
+name = "ref-cast"
+version = "1.0.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
+dependencies = [
+ "ref-cast-impl",
+]
+
+[[package]]
+name = "ref-cast-impl"
+version = "1.0.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "regex"
+version = "1.12.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
+
+[[package]]
+name = "reqwest"
+version = "0.12.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147"
+dependencies = [
+ "base64 0.22.1",
+ "bytes",
+ "futures-core",
+ "futures-util",
+ "http",
+ "http-body",
+ "http-body-util",
+ "hyper",
+ "hyper-util",
+ "js-sys",
+ "log",
+ "percent-encoding",
+ "pin-project-lite",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "sync_wrapper",
+ "tokio",
+ "tokio-util",
+ "tower",
+ "tower-http",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "wasm-streams",
+ "web-sys",
+]
+
+[[package]]
+name = "rfd"
+version = "0.15.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef2bee61e6cffa4635c72d7d81a84294e28f0930db0ddcb0f66d10244674ebed"
+dependencies = [
+ "ashpd",
+ "block2",
+ "dispatch2",
+ "glib-sys",
+ "gobject-sys",
+ "gtk-sys",
+ "js-sys",
+ "log",
+ "objc2",
+ "objc2-app-kit",
+ "objc2-core-foundation",
+ "objc2-foundation",
+ "raw-window-handle",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "rustc_version"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "rustix"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
+dependencies = [
+ "bitflags 2.10.0",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
+
+[[package]]
+name = "ryu"
+version = "1.0.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62049b2877bf12821e8f9ad256ee38fdc31db7387ec2d3b3f403024de2034aea"
+
+[[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 = "schemars"
+version = "0.8.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615"
+dependencies = [
+ "dyn-clone",
+ "indexmap 1.9.3",
+ "schemars_derive",
+ "serde",
+ "serde_json",
+ "url",
+ "uuid",
+]
+
+[[package]]
+name = "schemars"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f"
+dependencies = [
+ "dyn-clone",
+ "ref-cast",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "schemars"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289"
+dependencies = [
+ "dyn-clone",
+ "ref-cast",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "schemars_derive"
+version = "0.8.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "serde_derive_internals",
+ "syn 2.0.111",
+]
+
+[[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 = "selectors"
+version = "0.24.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c37578180969d00692904465fb7f6b3d50b9a2b952b87c23d0e2e5cb5013416"
+dependencies = [
+ "bitflags 1.3.2",
+ "cssparser",
+ "derive_more",
+ "fxhash",
+ "log",
+ "phf 0.8.0",
+ "phf_codegen 0.8.0",
+ "precomputed-hash",
+ "servo_arc",
+ "smallvec",
+]
+
+[[package]]
+name = "semver"
+version = "1.0.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
+dependencies = [
+ "serde",
+ "serde_core",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.228"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
+dependencies = [
+ "serde_core",
+ "serde_derive",
+]
+
+[[package]]
+name = "serde-untagged"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058"
+dependencies = [
+ "erased-serde",
+ "serde",
+ "serde_core",
+ "typeid",
+]
+
+[[package]]
+name = "serde_core"
+version = "1.0.228"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.228"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "serde_derive_internals"
+version = "0.29.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.146"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "217ca874ae0207aac254aa02c957ded05585a90892cc8d87f9e5fa49669dadd8"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+ "serde_core",
+]
+
+[[package]]
+name = "serde_repr"
+version = "0.1.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776"
+dependencies = [
+ "serde_core",
+]
+
+[[package]]
+name = "serde_urlencoded"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
+dependencies = [
+ "form_urlencoded",
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_with"
+version = "3.16.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7"
+dependencies = [
+ "base64 0.22.1",
+ "chrono",
+ "hex",
+ "indexmap 1.9.3",
+ "indexmap 2.12.1",
+ "schemars 0.9.0",
+ "schemars 1.1.0",
+ "serde_core",
+ "serde_json",
+ "serde_with_macros",
+ "time",
+]
+
+[[package]]
+name = "serde_with_macros"
+version = "3.16.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c"
+dependencies = [
+ "darling",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "serialize-to-javascript"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5"
+dependencies = [
+ "serde",
+ "serde_json",
+ "serialize-to-javascript-impl",
+]
+
+[[package]]
+name = "serialize-to-javascript-impl"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "servo_arc"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d52aa42f8fdf0fed91e5ce7f23d8138441002fa31dca008acf47e6fd4721f741"
+dependencies = [
+ "nodrop",
+ "stable_deref_trait",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
+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.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "simd-adler32"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2"
+
+[[package]]
+name = "siphasher"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
+
+[[package]]
+name = "siphasher"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
+
+[[package]]
+name = "slab"
+version = "0.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
+
+[[package]]
+name = "smallvec"
+version = "1.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
+
+[[package]]
+name = "socket2"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881"
+dependencies = [
+ "libc",
+ "windows-sys 0.60.2",
+]
+
+[[package]]
+name = "softbuffer"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aac18da81ebbf05109ab275b157c22a653bb3c12cf884450179942f81bcbf6c3"
+dependencies = [
+ "bytemuck",
+ "js-sys",
+ "ndk",
+ "objc2",
+ "objc2-core-foundation",
+ "objc2-core-graphics",
+ "objc2-foundation",
+ "objc2-quartz-core",
+ "raw-window-handle",
+ "redox_syscall",
+ "tracing",
+ "wasm-bindgen",
+ "web-sys",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "soup3"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f"
+dependencies = [
+ "futures-channel",
+ "gio",
+ "glib",
+ "libc",
+ "soup3-sys",
+]
+
+[[package]]
+name = "soup3-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27"
+dependencies = [
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "string_cache"
+version = "0.8.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f"
+dependencies = [
+ "new_debug_unreachable",
+ "parking_lot",
+ "phf_shared 0.11.3",
+ "precomputed-hash",
+ "serde",
+]
+
+[[package]]
+name = "string_cache_codegen"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0"
+dependencies = [
+ "phf_generator 0.11.3",
+ "phf_shared 0.11.3",
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "strsim"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+
+[[package]]
+name = "swift-rs"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7"
+dependencies = [
+ "base64 0.21.7",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.111"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "sync_wrapper"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
+dependencies = [
+ "futures-core",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "system-deps"
+version = "6.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349"
+dependencies = [
+ "cfg-expr",
+ "heck 0.5.0",
+ "pkg-config",
+ "toml 0.8.2",
+ "version-compare",
+]
+
+[[package]]
+name = "tao"
+version = "0.34.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3a753bdc39c07b192151523a3f77cd0394aa75413802c883a0f6f6a0e5ee2e7"
+dependencies = [
+ "bitflags 2.10.0",
+ "block2",
+ "core-foundation",
+ "core-graphics",
+ "crossbeam-channel",
+ "dispatch",
+ "dlopen2",
+ "dpi",
+ "gdkwayland-sys",
+ "gdkx11-sys",
+ "gtk",
+ "jni",
+ "lazy_static",
+ "libc",
+ "log",
+ "ndk",
+ "ndk-context",
+ "ndk-sys",
+ "objc2",
+ "objc2-app-kit",
+ "objc2-foundation",
+ "once_cell",
+ "parking_lot",
+ "raw-window-handle",
+ "scopeguard",
+ "tao-macros",
+ "unicode-segmentation",
+ "url",
+ "windows",
+ "windows-core 0.61.2",
+ "windows-version",
+ "x11-dl",
+]
+
+[[package]]
+name = "tao-macros"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "target-lexicon"
+version = "0.12.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
+
+[[package]]
+name = "tauri"
+version = "2.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a3868da5508446a7cd08956d523ac3edf0a8bc20bf7e4038f9a95c2800d2033"
+dependencies = [
+ "anyhow",
+ "bytes",
+ "cookie",
+ "dirs",
+ "dunce",
+ "embed_plist",
+ "getrandom 0.3.4",
+ "glob",
+ "gtk",
+ "heck 0.5.0",
+ "http",
+ "jni",
+ "libc",
+ "log",
+ "mime",
+ "muda",
+ "objc2",
+ "objc2-app-kit",
+ "objc2-foundation",
+ "objc2-ui-kit",
+ "objc2-web-kit",
+ "percent-encoding",
+ "plist",
+ "raw-window-handle",
+ "reqwest",
+ "serde",
+ "serde_json",
+ "serde_repr",
+ "serialize-to-javascript",
+ "swift-rs",
+ "tauri-build",
+ "tauri-macros",
+ "tauri-runtime",
+ "tauri-runtime-wry",
+ "tauri-utils",
+ "thiserror 2.0.17",
+ "tokio",
+ "tray-icon",
+ "url",
+ "webkit2gtk",
+ "webview2-com",
+ "window-vibrancy",
+ "windows",
+]
+
+[[package]]
+name = "tauri-build"
+version = "2.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17fcb8819fd16463512a12f531d44826ce566f486d7ccd211c9c8cebdaec4e08"
+dependencies = [
+ "anyhow",
+ "cargo_toml",
+ "dirs",
+ "glob",
+ "heck 0.5.0",
+ "json-patch",
+ "schemars 0.8.22",
+ "semver",
+ "serde",
+ "serde_json",
+ "tauri-utils",
+ "tauri-winres",
+ "toml 0.9.10+spec-1.1.0",
+ "walkdir",
+]
+
+[[package]]
+name = "tauri-codegen"
+version = "2.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fa9844cefcf99554a16e0a278156ae73b0d8680bbc0e2ad1e4287aadd8489cf"
+dependencies = [
+ "base64 0.22.1",
+ "brotli",
+ "ico",
+ "json-patch",
+ "plist",
+ "png",
+ "proc-macro2",
+ "quote",
+ "semver",
+ "serde",
+ "serde_json",
+ "sha2",
+ "syn 2.0.111",
+ "tauri-utils",
+ "thiserror 2.0.17",
+ "time",
+ "url",
+ "uuid",
+ "walkdir",
+]
+
+[[package]]
+name = "tauri-macros"
+version = "2.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3764a12f886d8245e66b7ee9b43ccc47883399be2019a61d80cf0f4117446fde"
+dependencies = [
+ "heck 0.5.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+ "tauri-codegen",
+ "tauri-utils",
+]
+
+[[package]]
+name = "tauri-plugin"
+version = "2.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e1d0a4860b7ff570c891e1d2a586bf1ede205ff858fbc305e0b5ae5d14c1377"
+dependencies = [
+ "anyhow",
+ "glob",
+ "plist",
+ "schemars 0.8.22",
+ "serde",
+ "serde_json",
+ "tauri-utils",
+ "toml 0.9.10+spec-1.1.0",
+ "walkdir",
+]
+
+[[package]]
+name = "tauri-plugin-dialog"
+version = "2.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "313f8138692ddc4a2127c4c9607d616a46f5c042e77b3722450866da0aad2f19"
+dependencies = [
+ "log",
+ "raw-window-handle",
+ "rfd",
+ "serde",
+ "serde_json",
+ "tauri",
+ "tauri-plugin",
+ "tauri-plugin-fs",
+ "thiserror 2.0.17",
+ "url",
+]
+
+[[package]]
+name = "tauri-plugin-fs"
+version = "2.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47df422695255ecbe7bac7012440eddaeefd026656171eac9559f5243d3230d9"
+dependencies = [
+ "anyhow",
+ "dunce",
+ "glob",
+ "percent-encoding",
+ "schemars 0.8.22",
+ "serde",
+ "serde_json",
+ "serde_repr",
+ "tauri",
+ "tauri-plugin",
+ "tauri-utils",
+ "thiserror 2.0.17",
+ "toml 0.9.10+spec-1.1.0",
+ "url",
+]
+
+[[package]]
+name = "tauri-plugin-opener"
+version = "2.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c26b72571d25dee25667940027114e60f569fc3974f8cefbe50c2cbc5fd65e3b"
+dependencies = [
+ "dunce",
+ "glob",
+ "objc2-app-kit",
+ "objc2-foundation",
+ "open",
+ "schemars 0.8.22",
+ "serde",
+ "serde_json",
+ "tauri",
+ "tauri-plugin",
+ "thiserror 2.0.17",
+ "url",
+ "windows",
+ "zbus",
+]
+
+[[package]]
+name = "tauri-plugin-store"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59a77036340a97eb5bbe1b3209c31e5f27f75e6f92a52fd9dd4b211ef08bf310"
+dependencies = [
+ "dunce",
+ "serde",
+ "serde_json",
+ "tauri",
+ "tauri-plugin",
+ "thiserror 2.0.17",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "tauri-runtime"
+version = "2.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87f766fe9f3d1efc4b59b17e7a891ad5ed195fa8d23582abb02e6c9a01137892"
+dependencies = [
+ "cookie",
+ "dpi",
+ "gtk",
+ "http",
+ "jni",
+ "objc2",
+ "objc2-ui-kit",
+ "objc2-web-kit",
+ "raw-window-handle",
+ "serde",
+ "serde_json",
+ "tauri-utils",
+ "thiserror 2.0.17",
+ "url",
+ "webkit2gtk",
+ "webview2-com",
+ "windows",
+]
+
+[[package]]
+name = "tauri-runtime-wry"
+version = "2.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "187a3f26f681bdf028f796ccf57cf478c1ee422c50128e5a0a6ebeb3f5910065"
+dependencies = [
+ "gtk",
+ "http",
+ "jni",
+ "log",
+ "objc2",
+ "objc2-app-kit",
+ "objc2-foundation",
+ "once_cell",
+ "percent-encoding",
+ "raw-window-handle",
+ "softbuffer",
+ "tao",
+ "tauri-runtime",
+ "tauri-utils",
+ "url",
+ "webkit2gtk",
+ "webview2-com",
+ "windows",
+ "wry",
+]
+
+[[package]]
+name = "tauri-utils"
+version = "2.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76a423c51176eb3616ee9b516a9fa67fed5f0e78baaba680e44eb5dd2cc37490"
+dependencies = [
+ "anyhow",
+ "brotli",
+ "cargo_metadata",
+ "ctor",
+ "dunce",
+ "glob",
+ "html5ever",
+ "http",
+ "infer",
+ "json-patch",
+ "kuchikiki",
+ "log",
+ "memchr",
+ "phf 0.11.3",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "schemars 0.8.22",
+ "semver",
+ "serde",
+ "serde-untagged",
+ "serde_json",
+ "serde_with",
+ "swift-rs",
+ "thiserror 2.0.17",
+ "toml 0.9.10+spec-1.1.0",
+ "url",
+ "urlpattern",
+ "uuid",
+ "walkdir",
+]
+
+[[package]]
+name = "tauri-winres"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1087b111fe2b005e42dbdc1990fc18593234238d47453b0c99b7de1c9ab2c1e0"
+dependencies = [
+ "dunce",
+ "embed-resource",
+ "toml 0.9.10+spec-1.1.0",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.23.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
+dependencies = [
+ "fastrand",
+ "getrandom 0.3.4",
+ "once_cell",
+ "rustix",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "tendril"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0"
+dependencies = [
+ "futf",
+ "mac",
+ "utf-8",
+]
+
+[[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.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
+dependencies = [
+ "thiserror-impl 2.0.17",
+]
+
+[[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 2.0.111",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "2.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "time"
+version = "0.3.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d"
+dependencies = [
+ "deranged",
+ "itoa",
+ "num-conv",
+ "powerfmt",
+ "serde",
+ "time-core",
+ "time-macros",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b"
+
+[[package]]
+name = "time-macros"
+version = "0.2.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3"
+dependencies = [
+ "num-conv",
+ "time-core",
+]
+
+[[package]]
+name = "tinystr"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
+dependencies = [
+ "displaydoc",
+ "zerovec",
+]
+
+[[package]]
+name = "tokio"
+version = "1.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408"
+dependencies = [
+ "bytes",
+ "libc",
+ "mio",
+ "pin-project-lite",
+ "signal-hook-registry",
+ "socket2",
+ "tokio-macros",
+ "tracing",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "tokio-macros"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "tokio-util"
+version = "0.7.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "futures-sink",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "toml"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d"
+dependencies = [
+ "serde",
+ "serde_spanned 0.6.9",
+ "toml_datetime 0.6.3",
+ "toml_edit 0.20.2",
+]
+
+[[package]]
+name = "toml"
+version = "0.9.10+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0825052159284a1a8b4d6c0c86cbc801f2da5afd2b225fa548c72f2e74002f48"
+dependencies = [
+ "indexmap 2.12.1",
+ "serde_core",
+ "serde_spanned 1.0.4",
+ "toml_datetime 0.7.5+spec-1.1.0",
+ "toml_parser",
+ "toml_writer",
+ "winnow 0.7.14",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.7.5+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347"
+dependencies = [
+ "serde_core",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.19.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+dependencies = [
+ "indexmap 2.12.1",
+ "toml_datetime 0.6.3",
+ "winnow 0.5.40",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.20.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
+dependencies = [
+ "indexmap 2.12.1",
+ "serde",
+ "serde_spanned 0.6.9",
+ "toml_datetime 0.6.3",
+ "winnow 0.5.40",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.23.10+spec-1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269"
+dependencies = [
+ "indexmap 2.12.1",
+ "toml_datetime 0.7.5+spec-1.1.0",
+ "toml_parser",
+ "winnow 0.7.14",
+]
+
+[[package]]
+name = "toml_parser"
+version = "1.0.6+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44"
+dependencies = [
+ "winnow 0.7.14",
+]
+
+[[package]]
+name = "toml_writer"
+version = "1.0.6+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607"
+
+[[package]]
+name = "tower"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project-lite",
+ "sync_wrapper",
+ "tokio",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "tower-http"
+version = "0.6.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8"
+dependencies = [
+ "bitflags 2.10.0",
+ "bytes",
+ "futures-util",
+ "http",
+ "http-body",
+ "iri-string",
+ "pin-project-lite",
+ "tower",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "tower-layer"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
+
+[[package]]
+name = "tower-service"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
+
+[[package]]
+name = "tracing"
+version = "0.1.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
+dependencies = [
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "tray-icon"
+version = "0.21.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3d5572781bee8e3f994d7467084e1b1fd7a93ce66bd480f8156ba89dee55a2b"
+dependencies = [
+ "crossbeam-channel",
+ "dirs",
+ "libappindicator",
+ "muda",
+ "objc2",
+ "objc2-app-kit",
+ "objc2-core-foundation",
+ "objc2-core-graphics",
+ "objc2-foundation",
+ "once_cell",
+ "png",
+ "serde",
+ "thiserror 2.0.17",
+ "windows-sys 0.60.2",
+]
+
+[[package]]
+name = "try-lock"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
+
+[[package]]
+name = "typeid"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c"
+
+[[package]]
+name = "typenum"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
+
+[[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 = "unic-char-property"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221"
+dependencies = [
+ "unic-char-range",
+]
+
+[[package]]
+name = "unic-char-range"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc"
+
+[[package]]
+name = "unic-common"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc"
+
+[[package]]
+name = "unic-ucd-ident"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987"
+dependencies = [
+ "unic-char-property",
+ "unic-char-range",
+ "unic-ucd-version",
+]
+
+[[package]]
+name = "unic-ucd-version"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4"
+dependencies = [
+ "unic-common",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
+
+[[package]]
+name = "url"
+version = "2.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+ "serde",
+]
+
+[[package]]
+name = "urlpattern"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d"
+dependencies = [
+ "regex",
+ "serde",
+ "unic-ucd-ident",
+ "url",
+]
+
+[[package]]
+name = "utf-8"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
+
+[[package]]
+name = "utf8_iter"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
+
+[[package]]
+name = "uuid"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a"
+dependencies = [
+ "getrandom 0.3.4",
+ "js-sys",
+ "serde_core",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "version-compare"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e"
+
+[[package]]
+name = "version_check"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+
+[[package]]
+name = "vswhom"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b"
+dependencies = [
+ "libc",
+ "vswhom-sys",
+]
+
+[[package]]
+name = "vswhom-sys"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150"
+dependencies = [
+ "cc",
+ "libc",
+]
+
+[[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 = "want"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
+dependencies = [
+ "try-lock",
+]
+
+[[package]]
+name = "wasi"
+version = "0.9.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
+
+[[package]]
+name = "wasi"
+version = "0.11.1+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
+
+[[package]]
+name = "wasip2"
+version = "1.0.1+wasi-0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
+dependencies = [
+ "wit-bindgen",
+]
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.106"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "rustversion",
+ "wasm-bindgen-macro",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "once_cell",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.106"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.106"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40"
+dependencies = [
+ "bumpalo",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.106"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "wasm-streams"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65"
+dependencies = [
+ "futures-util",
+ "js-sys",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
+[[package]]
+name = "wayland-backend"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35"
+dependencies = [
+ "cc",
+ "downcast-rs",
+ "rustix",
+ "scoped-tls",
+ "smallvec",
+ "wayland-sys",
+]
+
+[[package]]
+name = "wayland-client"
+version = "0.31.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d"
+dependencies = [
+ "bitflags 2.10.0",
+ "rustix",
+ "wayland-backend",
+ "wayland-scanner",
+]
+
+[[package]]
+name = "wayland-protocols"
+version = "0.32.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901"
+dependencies = [
+ "bitflags 2.10.0",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-scanner",
+]
+
+[[package]]
+name = "wayland-scanner"
+version = "0.31.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "54cb1e9dc49da91950bdfd8b848c49330536d9d1fb03d4bfec8cae50caa50ae3"
+dependencies = [
+ "proc-macro2",
+ "quick-xml 0.37.5",
+ "quote",
+]
+
+[[package]]
+name = "wayland-sys"
+version = "0.31.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34949b42822155826b41db8e5d0c1be3a2bd296c747577a43a3e6daefc296142"
+dependencies = [
+ "dlib",
+ "log",
+ "pkg-config",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "webkit2gtk"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76b1bc1e54c581da1e9f179d0b38512ba358fb1af2d634a1affe42e37172361a"
+dependencies = [
+ "bitflags 1.3.2",
+ "cairo-rs",
+ "gdk",
+ "gdk-sys",
+ "gio",
+ "gio-sys",
+ "glib",
+ "glib-sys",
+ "gobject-sys",
+ "gtk",
+ "gtk-sys",
+ "javascriptcore-rs",
+ "libc",
+ "once_cell",
+ "soup3",
+ "webkit2gtk-sys",
+]
+
+[[package]]
+name = "webkit2gtk-sys"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c"
+dependencies = [
+ "bitflags 1.3.2",
+ "cairo-sys-rs",
+ "gdk-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "gtk-sys",
+ "javascriptcore-rs-sys",
+ "libc",
+ "pkg-config",
+ "soup3-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "webview2-com"
+version = "0.38.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4ba622a989277ef3886dd5afb3e280e3dd6d974b766118950a08f8f678ad6a4"
+dependencies = [
+ "webview2-com-macros",
+ "webview2-com-sys",
+ "windows",
+ "windows-core 0.61.2",
+ "windows-implement",
+ "windows-interface",
+]
+
+[[package]]
+name = "webview2-com-macros"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "webview2-com-sys"
+version = "0.38.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36695906a1b53a3bf5c4289621efedac12b73eeb0b89e7e1a89b517302d5d75c"
+dependencies = [
+ "thiserror 2.0.17",
+ "windows",
+ "windows-core 0.61.2",
+]
+
+[[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.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
+dependencies = [
+ "windows-sys 0.61.2",
+]
+
+[[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 = "window-vibrancy"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c"
+dependencies = [
+ "objc2",
+ "objc2-app-kit",
+ "objc2-core-foundation",
+ "objc2-foundation",
+ "raw-window-handle",
+ "windows-sys 0.59.0",
+ "windows-version",
+]
+
+[[package]]
+name = "windows"
+version = "0.61.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893"
+dependencies = [
+ "windows-collections",
+ "windows-core 0.61.2",
+ "windows-future",
+ "windows-link 0.1.3",
+ "windows-numerics",
+]
+
+[[package]]
+name = "windows-collections"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8"
+dependencies = [
+ "windows-core 0.61.2",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.61.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
+dependencies = [
+ "windows-implement",
+ "windows-interface",
+ "windows-link 0.1.3",
+ "windows-result 0.3.4",
+ "windows-strings 0.4.2",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.62.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
+dependencies = [
+ "windows-implement",
+ "windows-interface",
+ "windows-link 0.2.1",
+ "windows-result 0.4.1",
+ "windows-strings 0.5.1",
+]
+
+[[package]]
+name = "windows-future"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
+dependencies = [
+ "windows-core 0.61.2",
+ "windows-link 0.1.3",
+ "windows-threading",
+]
+
+[[package]]
+name = "windows-implement"
+version = "0.60.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "windows-interface"
+version = "0.59.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "windows-link"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
+
+[[package]]
+name = "windows-link"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
+
+[[package]]
+name = "windows-numerics"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
+dependencies = [
+ "windows-core 0.61.2",
+ "windows-link 0.1.3",
+]
+
+[[package]]
+name = "windows-result"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
+dependencies = [
+ "windows-link 0.1.3",
+]
+
+[[package]]
+name = "windows-result"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
+dependencies = [
+ "windows-link 0.2.1",
+]
+
+[[package]]
+name = "windows-strings"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
+dependencies = [
+ "windows-link 0.1.3",
+]
+
+[[package]]
+name = "windows-strings"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
+dependencies = [
+ "windows-link 0.2.1",
+]
+
+[[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.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.60.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
+dependencies = [
+ "windows-targets 0.53.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.61.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
+dependencies = [
+ "windows-link 0.2.1",
+]
+
+[[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.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 0.52.6",
+ "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-targets"
+version = "0.53.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
+dependencies = [
+ "windows-link 0.2.1",
+ "windows_aarch64_gnullvm 0.53.1",
+ "windows_aarch64_msvc 0.53.1",
+ "windows_i686_gnu 0.53.1",
+ "windows_i686_gnullvm 0.53.1",
+ "windows_i686_msvc 0.53.1",
+ "windows_x86_64_gnu 0.53.1",
+ "windows_x86_64_gnullvm 0.53.1",
+ "windows_x86_64_msvc 0.53.1",
+]
+
+[[package]]
+name = "windows-threading"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
+dependencies = [
+ "windows-link 0.1.3",
+]
+
+[[package]]
+name = "windows-version"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631"
+dependencies = [
+ "windows-link 0.2.1",
+]
+
+[[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.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
+
+[[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.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
+
+[[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.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
+
+[[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_gnullvm"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
+
+[[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.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
+
+[[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.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
+
+[[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.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
+
+[[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.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
+
+[[package]]
+name = "winnow"
+version = "0.5.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winnow"
+version = "0.7.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winreg"
+version = "0.55.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "wit-bindgen"
+version = "0.46.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
+
+[[package]]
+name = "writeable"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
+
+[[package]]
+name = "wry"
+version = "0.53.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "728b7d4c8ec8d81cab295e0b5b8a4c263c0d41a785fb8f8c4df284e5411140a2"
+dependencies = [
+ "base64 0.22.1",
+ "block2",
+ "cookie",
+ "crossbeam-channel",
+ "dirs",
+ "dpi",
+ "dunce",
+ "gdkx11",
+ "gtk",
+ "html5ever",
+ "http",
+ "javascriptcore-rs",
+ "jni",
+ "kuchikiki",
+ "libc",
+ "ndk",
+ "objc2",
+ "objc2-app-kit",
+ "objc2-core-foundation",
+ "objc2-foundation",
+ "objc2-ui-kit",
+ "objc2-web-kit",
+ "once_cell",
+ "percent-encoding",
+ "raw-window-handle",
+ "sha2",
+ "soup3",
+ "tao-macros",
+ "thiserror 2.0.17",
+ "url",
+ "webkit2gtk",
+ "webkit2gtk-sys",
+ "webview2-com",
+ "windows",
+ "windows-core 0.61.2",
+ "windows-version",
+ "x11-dl",
+]
+
+[[package]]
+name = "x11"
+version = "2.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e"
+dependencies = [
+ "libc",
+ "pkg-config",
+]
+
+[[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 = "yoke"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
+dependencies = [
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+ "synstructure",
+]
+
+[[package]]
+name = "zbus"
+version = "5.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b622b18155f7a93d1cd2dc8c01d2d6a44e08fb9ebb7b3f9e6ed101488bad6c91"
+dependencies = [
+ "async-broadcast",
+ "async-executor",
+ "async-io",
+ "async-lock",
+ "async-process",
+ "async-recursion",
+ "async-task",
+ "async-trait",
+ "blocking",
+ "enumflags2",
+ "event-listener",
+ "futures-core",
+ "futures-lite",
+ "hex",
+ "nix",
+ "ordered-stream",
+ "serde",
+ "serde_repr",
+ "tokio",
+ "tracing",
+ "uds_windows",
+ "uuid",
+ "windows-sys 0.61.2",
+ "winnow 0.7.14",
+ "zbus_macros",
+ "zbus_names",
+ "zvariant",
+]
+
+[[package]]
+name = "zbus_macros"
+version = "5.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cdb94821ca8a87ca9c298b5d1cbd80e2a8b67115d99f6e4551ac49e42b6a314"
+dependencies = [
+ "proc-macro-crate 3.4.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+ "zbus_names",
+ "zvariant",
+ "zvariant_utils",
+]
+
+[[package]]
+name = "zbus_names"
+version = "4.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97"
+dependencies = [
+ "serde",
+ "static_assertions",
+ "winnow 0.7.14",
+ "zvariant",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.8.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.8.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+ "synstructure",
+]
+
+[[package]]
+name = "zerotrie"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
+dependencies = [
+ "displaydoc",
+ "yoke",
+ "zerofrom",
+]
+
+[[package]]
+name = "zerovec"
+version = "0.11.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
+dependencies = [
+ "yoke",
+ "zerofrom",
+ "zerovec-derive",
+]
+
+[[package]]
+name = "zerovec-derive"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+]
+
+[[package]]
+name = "zvariant"
+version = "5.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2be61892e4f2b1772727be11630a62664a1826b62efa43a6fe7449521cb8744c"
+dependencies = [
+ "endi",
+ "enumflags2",
+ "serde",
+ "url",
+ "winnow 0.7.14",
+ "zvariant_derive",
+ "zvariant_utils",
+]
+
+[[package]]
+name = "zvariant_derive"
+version = "5.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da58575a1b2b20766513b1ec59d8e2e68db2745379f961f86650655e862d2006"
+dependencies = [
+ "proc-macro-crate 3.4.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.111",
+ "zvariant_utils",
+]
+
+[[package]]
+name = "zvariant_utils"
+version = "3.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6949d142f89f6916deca2232cf26a8afacf2b9fdc35ce766105e104478be599"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "serde",
+ "syn 2.0.111",
+ "winnow 0.7.14",
+]
diff --git a/apps/desktop/src-tauri/Cargo.toml b/apps/desktop/src-tauri/Cargo.toml
new file mode 100644
index 0000000..80fe028
--- /dev/null
+++ b/apps/desktop/src-tauri/Cargo.toml
@@ -0,0 +1,28 @@
+[package]
+name = "desktop"
+version = "0.1.0"
+description = "A Tauri App"
+authors = ["you"]
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[lib]
+# The `_lib` suffix may seem redundant but it is necessary
+# to make the lib name unique and wouldn't conflict with the bin name.
+# This seems to be only an issue on Windows, see https://github.com/rust-lang/cargo/issues/8519
+name = "desktop_lib"
+crate-type = ["staticlib", "cdylib", "rlib"]
+
+[build-dependencies]
+tauri-build = { version = "2", features = [] }
+
+[dependencies]
+tauri = { version = "2", features = [] }
+tauri-plugin-opener = "2"
+tauri-plugin-dialog = "2"
+tauri-plugin-fs = "2"
+tauri-plugin-store = "2"
+serde = { version = "1", features = ["derive"] }
+serde_json = "1"
+
diff --git a/apps/desktop/src-tauri/build.rs b/apps/desktop/src-tauri/build.rs
new file mode 100644
index 0000000..d860e1e
--- /dev/null
+++ b/apps/desktop/src-tauri/build.rs
@@ -0,0 +1,3 @@
+fn main() {
+ tauri_build::build()
+}
diff --git a/apps/desktop/src-tauri/capabilities/default.json b/apps/desktop/src-tauri/capabilities/default.json
new file mode 100644
index 0000000..ea5dcc2
--- /dev/null
+++ b/apps/desktop/src-tauri/capabilities/default.json
@@ -0,0 +1,7 @@
+{
+ "$schema": "../gen/schemas/desktop-schema.json",
+ "identifier": "default",
+ "description": "Capability for the main window",
+ "windows": ["main"],
+ "permissions": ["core:default", "opener:default", "dialog:default", "fs:default", "store:default"]
+}
diff --git a/apps/desktop/src-tauri/icons/128x128.png b/apps/desktop/src-tauri/icons/128x128.png
new file mode 100644
index 0000000000000000000000000000000000000000..6be5e50e9b9ae84d9e2ee433f32ef446495eaf3b
GIT binary patch
literal 3512
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
literal 0
HcmV?d00001
diff --git a/apps/desktop/src-tauri/icons/32x32.png b/apps/desktop/src-tauri/icons/32x32.png
new file mode 100644
index 0000000000000000000000000000000000000000..a437dd51741e9e56e14b5d6024493cb2abfd5259
GIT binary patch
literal 974
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
literal 0
HcmV?d00001
diff --git a/apps/desktop/src-tauri/icons/Square150x150Logo.png b/apps/desktop/src-tauri/icons/Square150x150Logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..624c7bfba0498dcebbc8a020fe06f08cfff2384a
GIT binary patch
literal 3966
zcmeAS@N?(olHy`uVBq!ia0y~yV3-EN9Bd2>3^t5~j~EyjI14-?iy0WWg+Z8+Vb&Z8
z1_lPk;vjb?hIQv;UNSH+u%tWsIx;Y9?C1WI$jZRLFYM{!7*fIbc5ZBuh`Z2n<7&6G
z$lX6MuIK^0QqNy!L|SfpCNs<0VcBzXl7&!<+)@7anlvf3u5ty!`IgEer1n
zN9<;lZdkV4Z1XPmmI)V1N>j^2{r@U4IC?l;`eSXZy`M`#fP;mp(E$s^=&iuwwXm#u
z`pbShmk;U(G?s0D`Cf~S^<(w>o(UrPDhoET82y;~Z_m1Z=xAM^~Ud<>oeief*IvKFq3tjIAh~KY
zd#*xov|jZ3odVN-J-lW0wC7#3U)r_~n{P>tvW>}G;v#elYQ-Ne$z+pr?S!+KZ4ouh(vo4>!0v=6v0Z(R{8zR9w_?FPGKM2xoY?xSIx-WmbRg{Mmu
zO_bPwx0-9(g_rzy>y#(`%(r=#)w{tXWcHWewHw&Ev!snG6l&*)Yw7lK7n)A$%4prt
z_2ju?gfs6efh*PjSLZe=<~`oNKgW@|LVwMka<1Q(|lR!e7jnJq+XrbNOWxO>YFF3o~FE;QN(Nj8yf7
zHqQtZeQO_B?m|yTQn4R{s-M
z^~-Foj5S>M^j}}{uHPf(QrZ+EIc-saEDPsu=_rQCwXw>pueL_KN_c#KiKK(Xz1GvGb2)giHRall?#1Ze~js1|FK?Wg4;1WA4iHDluEP
z8;b4T*&2THJC{+P@GqC{d4?wzB-=eROQVjn^r8Fu*2fPb`Qb*Q@7ik`t@SwG3`WM
z``@{>4?}mkckTS$ciNg=bm3N(1+B*pm3Ok-YCWq{!oyUdxJG}z>@jcqx9_!%w0D)S
zI)5VN;m`F6ys6c@td{LK@$UJVVoPIwv?&^Ool-Z%KtsT}B
zR1__9{AhyomU(~u7T6eaJjnTQF06~?=(|PyY7359MJ!>C`K|Gyknhy3l{(G;rbCg#&El)$
z(mkS?SSZ!FPic0yEfep&?meD5>6}s;K4Fcgx!CwIh#WP^zKoqjO;|
zjWx1Ia~dXmupNrs`A~GxtD7-$CbBTUN2SUn>liG7F067w-G34
zpQ<+dyi$bDx!{Y2_vWqOa`gT8q2}X*U!V5gUss=a_UMzaqq{hM91Gn&?ShJKlTq#a
zUKNkX5Y1&F7q*J9FT6D`rmFCK*s{MqMimbI57iq>RB0OxuY)CJ0#>o8q-a`?Ms8Kx2bRHPTgrZg*949=Usq8;9BR<8(y_vl5+pg
z)-F=tcKQF(d-|b;a|QZiG$&-Ro2}+sqG03`xO&5<9a^ho!UMGuH}h$iKKp<6b&JvA
zqcUE+N6jS57exomQ(n37YE*0JP1d3YImi0{$ELc8S7)3)nk^HlvH5`Wwx2#v+HM@_
zyCiI$YVUUD*7a+j<4Uw=tUsd`sJM4V>8^c|6~%%KuTCb_RZHFJFa4AB^HF2*zP8fM
z#~gRQwca|Ht6NMWIb=$%%$+}nGy@Hfp3IB*lhsyU9(Be~ZQ75u$CF-aO1+CPXh~kR
z?C$*4AvYXn|7M`{RKomATz-~5dGsLQsWS0*$?*)+~L`f88g
z?}P@Yt-@=r-VE6{Ylm9)(GE`Spn}sXk}^xzA1w}>vmw>IcgEKMMp=VJr@wp??C()@
zu|BR
cl)>RU(Gx!>Ay0>E$aQDl=q+K^XKR@YqrV;
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
or_}23-v0Z)JIRzopr08keR+W-In
literal 0
HcmV?d00001
diff --git a/apps/desktop/src-tauri/icons/Square30x30Logo.png b/apps/desktop/src-tauri/icons/Square30x30Logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..621970023096ed9f494ba18ace15421a45cd65fa
GIT binary patch
literal 903
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