Commit 7ff8adafe9e4
tarball994 files changed+454591-0
@@ -0,0 +1,16 @@
1
+[alias]2
+xtask = "run --package xtask --"3
+uniffi-bindgen = "run --package uniffi-bindgen --"4
+5
+[doc.extern-map.registries]6
+crates-io = "https://docs.rs/"7
+8
+[unstable]9
+rustdoc-map = true10
+11
+[target.aarch64-linux-android]12
+# These rust flags improve the performance on Android on arm6413
+rustflags = ["-C", "target-feature=+neon,+aes,+sha2,+sha3,+pmuv3"]14
+15
+[env]16
+IPHONEOS_DEPLOYMENT_TARGET = "16.0"@@ -0,0 +1,13 @@
1
+[profile.default]2
+retries = { backoff = "exponential", count = 3, delay = "1s", jitter = true }3
+# kill the slow tests if they still aren't up after 180s4
+slow-timeout = { period = "60s", terminate-after = 3 }5
+6
+[profile.ci]7
+retries = { backoff = "exponential", count = 4, delay = "1s", jitter = true }8
+# kill the slow tests if they still aren't up after 180s9
+slow-timeout = { period = "60s", terminate-after = 3 }10
+11
+[profile.ci.junit]12
+path = "junit.xml"13
+store-success-output = true@@ -0,0 +1,53 @@
1
+# https://embarkstudios.github.io/cargo-deny/checks/cfg.html2
+[graph]3
+all-features = true4
+exclude = [5
+ # dev only dependency6
+ "criterion"7
+]8
+9
+[advisories]10
+version = 211
+ignore = [12
+ { id = "RUSTSEC-2024-0388", reason = "Unmaintained derivative crate, not a direct dependency" },13
+]14
+15
+[licenses]16
+version = 217
+allow = [18
+ "Apache-2.0",19
+ "Apache-2.0 WITH LLVM-exception",20
+ "CDLA-Permissive-2.0",21
+ "BSD-2-Clause",22
+ "BSD-3-Clause",23
+ "BSL-1.0",24
+ "ISC",25
+ "MIT",26
+ "MPL-2.0",27
+ "Unicode-3.0",28
+ "Zlib",29
+]30
+31
+[bans]32
+# We should disallow this, but it's currently a PITA.33
+multiple-versions = "allow"34
+wildcards = "allow"35
+36
+[sources]37
+unknown-registry = "deny"38
+unknown-git = "deny"39
+40
+allow-git = [41
+ # A patch override for the bindings fixing a bug for Android before upstream42
+ # releases a new version.43
+ "https://github.com/tokio-rs/tracing.git",44
+ # Well, it's Ruma.45
+ "https://github.com/ruma/ruma",46
+ # A patch override for the bindings: https://github.com/rodrimati1992/const_panic/pull/1047
+ "https://github.com/jplatte/const_panic",48
+ # A patch override for the bindings: https://github.com/smol-rs/async-compat/pull/2249
+ "https://github.com/element-hq/async-compat",50
+ # We can release vodozemac whenever we need but let's not block development51
+ # on releases.52
+ "https://github.com/matrix-org/vodozemac",53
+]@@ -0,0 +1,6 @@
1
+root = true2
+3
+# Unix-style newlines with a newline ending every file4
+[*]5
+end_of_line = lf6
+insert_final_newline = true@@ -0,0 +1,3 @@
1
+* @matrix-org/rust2
+/crates/matrix-sdk-crypto @matrix-org/rust @matrix-org/rust-crypto-reviewers3
+/crates/matrix-sdk-indexeddb/src/crypto_store @matrix-org/rust @matrix-org/rust-crypto-reviewers@@ -0,0 +1,9 @@
1
+version: 22
+updates:3
+ - package-ecosystem: "github-actions"4
+ directory: "/"5
+ schedule:6
+ # Check for updates to GitHub Actions every week7
+ interval: "weekly"8
+ cooldown:9
+ default-days: 7@@ -0,0 +1,11 @@
1
+<!-- description of the changes in this PR -->2
+3
+- [ ] I've documented the public API changes in the appropriate changelog files4
+ (see [Writing changelog entries][pull-request-template-changelog]).5
+- [ ] This PR was made with the help of AI.6
+7
+<!-- Sign-off, if not part of the commits -->8
+<!-- See CONTRIBUTING.md if you don't know what this is -->9
+Signed-off-by:10
+11
+[pull-request-template-changelog]: https://github.com/matrix-org/matrix-rust-sdk/blob/main/CONTRIBUTING.md#writing-changelog-entries@@ -0,0 +1,103 @@
1
+name: Benchmarks2
+3
+on:4
+ push:5
+ branches:6
+ - "main"7
+ pull_request:8
+ workflow_dispatch:9
+10
+jobs:11
+ benchmarks:12
+ name: Run Benchmarks13
+ runs-on: ubuntu-latest14
+ permissions:15
+ contents: read16
+ id-token: write17
+ strategy:18
+ matrix:19
+ benchmark:20
+ - crypto_bench21
+ - event_cache22
+ - linked_chunk23
+ - store_bench24
+ - timeline25
+ - room_list26
+27
+ steps:28
+ # This CI workflow can run into space issue, so we're cleaning up some29
+ # space here.30
+ - name: Create some more space31
+ run: |32
+ echo "Disk space before cleanup"33
+ df -h34
+35
+ cd /opt36
+ find . -maxdepth 1 -mindepth 1 '!' -path ./containerd '!' -path ./actionarchivecache '!' -path ./runner '!' -path ./runner-cache -exec rm -rf '{}' ';'37
+ rm -rf /opt/hostedtoolcache38
+39
+ # Get rid of binaries and libs we're not interested in.40
+ sudo rm -rf \41
+ /usr/local/julia* \42
+ /usr/local/aws*43
+44
+ sudo rm -rf \45
+ /usr/local/bin/minikube \46
+ /usr/local/bin/node \47
+ /usr/local/bin/stack \48
+ /usr/local/bin/bicep \49
+ /usr/local/bin/pulumi* \50
+ /usr/local/bin/helm \51
+ /usr/local/bin/azcopy \52
+ /usr/local/bin/packer \53
+ /usr/local/bin/cmake-gui \54
+ /usr/local/bin/cpack55
+56
+ sudo rm -rf \57
+ /usr/local/share/powershell \58
+ /usr/local/share/chromium59
+60
+ sudo rm -rf /usr/local/lib/android61
+62
+ echo "::group::/usr/local/bin/*"63
+ du -hsc /usr/local/bin/* | sort -h64
+ echo "::endgroup::"65
+66
+ echo "::group::/usr/local/share/*"67
+ du -hsc /usr/local/share/* | sort -h68
+ echo "::endgroup::"69
+70
+ echo "::group::/usr/local/*"71
+ du -hsc /usr/local/* | sort -h72
+ echo "::endgroup::"73
+74
+ echo "::group::/usr/local/lib/*"75
+ du -hsc /usr/local/lib/* | sort -h76
+ echo "::endgroup::"77
+78
+ echo "::group::/opt/*"79
+ du -hsc /opt/* | sort -h80
+ echo "::endgroup::"81
+82
+ echo "Disk space after cleanup"83
+ df -h84
+85
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd86
+ with:87
+ persist-credentials: false88
+89
+ - name: Setup rust toolchain, cache and cargo-codspeed binary90
+ uses: moonrepo/setup-rust@abb2d32350334249b178c401e5ec5836e0cd88d391
+ with:92
+ channel: stable93
+ cache-target: release94
+ bins: cargo-codspeed95
+96
+ - name: Build the benchmark target(s)97
+ run: cargo codspeed build -p benchmarks --bench ${{ matrix.benchmark }} --features codspeed98
+99
+ - name: Run the benchmarks100
+ uses: CodSpeedHQ/action@3194d9a39c4d46684cb44bf7207fc56626aad8fd101
+ with:102
+ run: cargo codspeed run103
+ mode: simulation@@ -0,0 +1,243 @@
1
+name: Bindings tests2
+3
+on:4
+ workflow_dispatch:5
+ push:6
+ branches: ["main", "features/**", "release-**"]7
+ pull_request:8
+ branches: ["main", "features/**", "release-**"]9
+ types:10
+ - opened11
+ - reopened12
+ - synchronize13
+ - ready_for_review14
+15
+permissions: {}16
+17
+concurrency:18
+ group: ${{ github.workflow }}-${{ github.ref }}19
+ cancel-in-progress: true20
+21
+env:22
+ CARGO_TERM_COLOR: always23
+24
+jobs:25
+ xtask:26
+ uses: ./.github/workflows/xtask.yml27
+28
+ test-uniffi-codegen:29
+ name: Test UniFFI bindings generation30
+ needs: xtask31
+ if: github.event_name == 'push' || !github.event.pull_request.draft32
+ runs-on: ubuntu-latest33
+34
+ steps:35
+ - name: Checkout36
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v637
+ with:38
+ persist-credentials: false39
+40
+ - name: Install protoc41
+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v2.79.142
+ with:43
+ tool: protoc@3.20.344
+45
+ - name: Install Rust46
+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v147
+ with:48
+ toolchain: stable49
+50
+ # Cargo config can screw with caching and is only used for alias config51
+ # and extra lints, which we don't care about here52
+ - name: Delete cargo config53
+ run: rm .cargo/config.toml54
+55
+ - name: Load cache56
+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.157
+ with:58
+ save-if: ${{ github.ref == 'refs/heads/main' }}59
+60
+ - name: Get xtask61
+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.562
+ with:63
+ path: target/debug/xtask64
+ key: "${{ needs.xtask.outputs.cachekey-linux }}"65
+ fail-on-cache-miss: true66
+67
+ - name: Build library & generate bindings68
+ run: target/debug/xtask ci bindings69
+70
+ test-android:71
+ name: matrix-rust-components-kotlin72
+ needs: xtask73
+ runs-on: ubuntu-latest74
+ if: github.event_name == 'push' || !github.event.pull_request.draft75
+76
+ steps:77
+ - name: Checkout Rust SDK78
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v679
+ with:80
+ persist-credentials: false81
+82
+ - name: Checkout Kotlin Rust Components project83
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v684
+ with:85
+ repository: matrix-org/matrix-rust-components-kotlin86
+ path: rust-components-kotlin87
+ ref: main88
+ persist-credentials: false89
+90
+ - name: Use JDK 1791
+ uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v592
+ with:93
+ distribution: 'temurin' # See 'Supported distributions' for available options94
+ java-version: '17'95
+96
+ - name: Install android sdk97
+ uses: malinskiy/action-android/install-sdk@fa103ef30331e95f266418a6a97e98f61f626887 # release/0.1.798
+99
+ - name: Install android ndk100
+ uses: nttld/setup-ndk@ed92fe6cadad69be94a966a7ee3271275e62f779 # v1101
+ id: install-ndk102
+ with:103
+ ndk-version: r27104
+105
+ - name: Install Rust106
+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1107
+ with:108
+ toolchain: stable109
+110
+ # Cargo config can screw with caching and is only used for alias config111
+ # and extra lints, which we don't care about here112
+ - name: Delete cargo config113
+ run: rm .cargo/config.toml114
+115
+ - name: Load cache116
+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1117
+ with:118
+ save-if: ${{ github.ref == 'refs/heads/main' }}119
+120
+ - name: Get xtask121
+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5122
+ with:123
+ path: target/debug/xtask124
+ key: "${{ needs.xtask.outputs.cachekey-linux }}"125
+ fail-on-cache-miss: true126
+127
+ - name: Install Rust dependencies128
+ run: |129
+ rustup target add x86_64-linux-android130
+ cargo install cargo-ndk131
+132
+ - name: Build SDK bindings for Android133
+ # Building for x86_64-linux-android as it's the most prone to breaking and building for every arch is too much134
+ run: |135
+ echo "Building SDK for x86_64-linux-android and creating bindings"136
+ target/debug/xtask kotlin build-android-library --package full-sdk --only-target x86_64-linux-android --src-dir rust-components-kotlin/sdk/sdk-android/src/main137
+ echo "Copying the result binary to the Android project"138
+ cd rust-components-kotlin139
+ echo "Building the Kotlin bindings"140
+ ./gradlew :sdk:sdk-android:assembleDebug141
+142
+ test-apple:143
+ name: matrix-rust-components-swift144
+ needs: xtask145
+ runs-on: macos-15146
+ if: github.event_name == 'push' || !github.event.pull_request.draft147
+148
+ steps:149
+ - name: Checkout150
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6151
+ with:152
+ persist-credentials: false153
+154
+ # install protoc in case we end up rebuilding opentelemetry-proto155
+ - name: Install protoc156
+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v2.79.1157
+ with:158
+ tool: protoc@3.20.3159
+160
+ - name: Install Rust161
+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1162
+ with:163
+ toolchain: stable164
+165
+ - name: Install aarch64-apple-ios target166
+ run: rustup target install aarch64-apple-ios167
+168
+ # Cargo config can screw with caching and is only used for alias config169
+ # and extra lints, which we don't care about here170
+ - name: Delete cargo config171
+ run: rm .cargo/config.toml172
+173
+ - name: Load cache174
+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1175
+ with:176
+ save-if: ${{ github.ref == 'refs/heads/main' }}177
+178
+ - name: Get xtask179
+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5180
+ with:181
+ path: target/debug/xtask182
+ key: "${{ needs.xtask.outputs.cachekey-macos }}"183
+ fail-on-cache-miss: true184
+185
+ - name: Build library & bindings186
+ run: target/debug/xtask swift build-library187
+188
+ - name: Run XCTests189
+ working-directory: bindings/apple190
+ run: swift test191
+192
+ - name: Build Framework193
+ run: target/debug/xtask swift build-framework --target=aarch64-apple-ios --profile=dev --ios-deployment-target=18.0194
+195
+ complement-crypto:196
+ name: "Run Complement Crypto tests"197
+ uses: matrix-org/complement-crypto/.github/workflows/single_sdk_tests.yml@399a1deeab0d7e4fa9604cbe83b1df6058c40193 # main198
+ with:199
+ use_rust_sdk: "." # use local checkout200
+ use_complement_crypto: "MATCHING_BRANCH"201
+202
+ test-crypto-apple-framework-generation:203
+ name: Generate Crypto FFI Apple XCFramework204
+ runs-on: macos-15205
+ if: github.event_name == 'push' || !github.event.pull_request.draft206
+207
+ steps:208
+ - name: Checkout209
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6210
+ with:211
+ persist-credentials: false212
+213
+ # install protoc in case we end up rebuilding opentelemetry-proto214
+ - name: Install protoc215
+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v2.79.1216
+ with:217
+ tool: protoc@3.20.3218
+219
+ - name: Install Rust220
+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1221
+ with:222
+ toolchain: stable223
+224
+ - name: Add rust targets225
+ run: |226
+ rustup target add aarch64-apple-ios227
+228
+ # Cargo config can screw with caching and is only used for alias config229
+ # and extra lints, which we don't care about here230
+ - name: Delete cargo config231
+ run: rm .cargo/config.toml232
+233
+ - name: Load cache234
+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1235
+ with:236
+ save-if: ${{ github.ref == 'refs/heads/main' }}237
+238
+ - name: Run the Build Framework script239
+ run: ./bindings/apple/build_crypto_xcframework.sh -i240
+241
+ - name: Is XCFramework generated?242
+ if: ${{ hashFiles('generated/MatrixSDKCryptoFFI.zip') != '' }}243
+ run: echo "XCFramework exists"@@ -0,0 +1,433 @@
1
+name: Rust tests2
+3
+on:4
+ workflow_dispatch:5
+ push:6
+ branches: ["main", "features/**", "release-**"]7
+ pull_request:8
+ branches: ["main", "features/**", "release-**"]9
+10
+permissions: {}11
+12
+concurrency:13
+ group: ${{ github.workflow }}-${{ github.ref }}14
+ cancel-in-progress: true15
+16
+env:17
+ CARGO_TERM_COLOR: always18
+ # Insta.rs is run directly via cargo test. We don't want insta.rs to create new snapshots files.19
+ # Just want it to run the tests (option `no` instead of `auto`).20
+ INSTA_UPDATE: no21
+22
+jobs:23
+ xtask:24
+ uses: ./.github/workflows/xtask.yml25
+26
+ test-matrix-sdk-features:27
+ name: 🐧 [m], ${{ matrix.name }}28
+ needs: xtask29
+30
+ runs-on: ubuntu-latest31
+ strategy:32
+ fail-fast: true33
+ matrix:34
+ name:35
+ - no-encryption36
+ - no-sqlite37
+ - no-encryption-and-sqlite38
+ - sqlite-cryptostore39
+ - experimental-encrypted-state-events40
+ - markdown41
+ - socks42
+ - sso-login43
+ - search44
+45
+ steps:46
+ - name: Checkout47
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v648
+ with:49
+ persist-credentials: false50
+51
+ - name: Install Rust52
+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v153
+ with:54
+ toolchain: stable55
+56
+ - name: Install libsqlite57
+ run: |58
+ sudo apt-get update59
+ sudo apt-get install libsqlite3-dev60
+61
+ - name: Load cache62
+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.163
+ with:64
+ # use a separate cache for each job to work around65
+ # https://github.com/Swatinem/rust-cache/issues/12466
+ key: "${{ matrix.name }}"67
+68
+ # ... but only save the cache on the main branch69
+ # cf https://github.com/Swatinem/rust-cache/issues/9570
+ save-if: ${{ github.ref == 'refs/heads/main' }}71
+72
+ - name: Install nextest73
+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v 2.79.174
+ with:75
+ tool: nextest76
+77
+ - name: Get xtask78
+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.579
+ with:80
+ path: target/debug/xtask81
+ key: "${{ needs.xtask.outputs.cachekey-linux }}"82
+ fail-on-cache-miss: true83
+84
+ - name: Test85
+ run: |86
+ target/debug/xtask ci test-features ${{ matrix.name }}87
+88
+ test-matrix-sdk-examples:89
+ name: 🐧 [m]-examples90
+ needs: xtask91
+ runs-on: ubuntu-latest92
+93
+ steps:94
+ - name: Checkout the repo95
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v696
+ with:97
+ persist-credentials: false98
+99
+ - name: Install Rust100
+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1101
+ with:102
+ toolchain: stable103
+104
+ - name: Load cache105
+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1106
+ with:107
+ save-if: ${{ github.ref == 'refs/heads/main' }}108
+109
+ - name: Install nextest110
+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v 2.79.1111
+ with:112
+ tool: nextest113
+114
+ - name: Get xtask115
+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5116
+ with:117
+ path: target/debug/xtask118
+ key: "${{ needs.xtask.outputs.cachekey-linux }}"119
+ fail-on-cache-miss: true120
+121
+ - name: Test122
+ run: |123
+ target/debug/xtask ci examples124
+125
+ test-matrix-sdk-crypto:126
+ name: 🐧 [m]-crypto127
+ needs: xtask128
+ runs-on: ubuntu-latest129
+130
+ steps:131
+ - name: Checkout the repo132
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6133
+ with:134
+ persist-credentials: false135
+136
+ - name: Install libsqlite137
+ run: |138
+ sudo apt-get update139
+ sudo apt-get install libsqlite3-dev140
+141
+ - name: Install Rust142
+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1143
+ with:144
+ toolchain: stable145
+ components: clippy146
+147
+ - name: Load cache148
+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1149
+ with:150
+ save-if: ${{ github.ref == 'refs/heads/main' }}151
+152
+ - name: Install nextest153
+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v 2.79.1154
+ with:155
+ tool: nextest156
+157
+ - name: Get xtask158
+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5159
+ with:160
+ path: target/debug/xtask161
+ key: "${{ needs.xtask.outputs.cachekey-linux }}"162
+ fail-on-cache-miss: true163
+164
+ - name: Test165
+ run: |166
+ target/debug/xtask ci test-crypto167
+168
+ test-all-crates:169
+ name: ${{ matrix.name }}170
+171
+ runs-on: ${{ matrix.os }}172
+ strategy:173
+ fail-fast: true174
+ matrix:175
+ include:176
+ - name: 🐧 all crates, 🦀 stable177
+ rust: stable178
+ os: ubuntu-latest179
+180
+ - name: 🐧 all crates, 🦀 beta181
+ rust: beta182
+ os: ubuntu-latest183
+184
+ - name: 🍏 all crates, 🦀 stable185
+ rust: stable186
+ os: macos-latest187
+188
+ steps:189
+ - name: Checkout190
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6191
+ with:192
+ persist-credentials: false193
+194
+ - name: Install protoc195
+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v2.79.1196
+ with:197
+ tool: protoc@3.20.3198
+199
+ - name: Install libsqlite200
+ if: runner.os == 'Linux'201
+ run: |202
+ sudo apt-get update203
+ sudo apt-get install libsqlite3-dev204
+205
+ - name: Install Rust toolchain206
+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1207
+ with:208
+ toolchain: ${{ matrix.rust }}209
+210
+ - name: Load cache211
+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1212
+ with:213
+ save-if: ${{ github.ref == 'refs/heads/main' }}214
+215
+ - name: Install nextest216
+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v 2.79.1217
+ with:218
+ tool: nextest219
+220
+ - name: Test221
+ run: |222
+ cargo nextest run --workspace \223
+ --exclude matrix-sdk-integration-testing --features testing224
+225
+ - name: Test documentation226
+ run: |227
+ cargo test --doc --features docsrs228
+229
+ test-wasm:230
+ name: 🕸️ ${{ matrix.name }}231
+ needs: xtask232
+233
+ runs-on: ubuntu-latest234
+235
+ strategy:236
+ fail-fast: true237
+ matrix:238
+ include:239
+ - name: '[m]-qrcode'240
+ cmd: matrix-sdk-qrcode241
+242
+ - name: '[m]-base'243
+ cmd: matrix-sdk-base244
+245
+ - name: '[m]-common'246
+ cmd: matrix-sdk-common247
+248
+ - name: '[m], no-default'249
+ cmd: matrix-sdk-no-default250
+251
+ - name: '[m]-ui'252
+ cmd: matrix-sdk-ui253
+ check_only: true254
+255
+ - name: '[m]-indexeddb'256
+ cmd: indexeddb257
+258
+ - name: '[m], indexeddb stores'259
+ cmd: matrix-sdk-indexeddb-stores260
+261
+ - name: '[m], indexeddb stores, no crypto'262
+ cmd: matrix-sdk-indexeddb-stores-no-crypto263
+264
+ steps:265
+ - name: Checkout the repo266
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6267
+ with:268
+ persist-credentials: false269
+270
+ - name: Install Rust271
+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1272
+ with:273
+ toolchain: stable274
+ targets: wasm32-unknown-unknown275
+ components: clippy276
+277
+ - name: Install wasm-pack278
+ uses: qmaru/wasm-pack-action@785fe709cd17eb6a97607eda9b6f5dbebed2b89c # v0.5.3279
+ if: '!matrix.check_only'280
+ with:281
+ version: v0.13.1282
+283
+ - name: Load cache284
+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1285
+ with:286
+ # use a separate cache for each job to work around287
+ # https://github.com/Swatinem/rust-cache/issues/124288
+ key: "${{ matrix.cmd }}"289
+290
+ # ... but only save the cache on the main branch291
+ # cf https://github.com/Swatinem/rust-cache/issues/95292
+ save-if: ${{ github.ref == 'refs/heads/main' }}293
+294
+ - name: Install nextest295
+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v 2.79.1296
+ with:297
+ tool: nextest298
+299
+ - name: Get xtask300
+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5301
+ with:302
+ path: target/debug/xtask303
+ key: "${{ needs.xtask.outputs.cachekey-linux }}"304
+ fail-on-cache-miss: true305
+306
+ - name: Rust Check307
+ run: |308
+ target/debug/xtask ci wasm ${{ matrix.cmd }}309
+310
+ - name: Wasm-Pack test311
+ if: '!matrix.check_only'312
+ run: |313
+ target/debug/xtask ci wasm-pack ${{ matrix.cmd }}314
+315
+ typos:316
+ name: Spell Check with Typos317
+ runs-on: ubuntu-latest318
+319
+ steps:320
+ - name: Checkout Actions Repository321
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6322
+ with:323
+ persist-credentials: false324
+325
+ - name: Check the spelling of the files in our repo326
+ uses: crate-ci/typos@aca895bf05aec0cb7dffa6f94495e923224d9f17 # v1.46.2327
+328
+ lint:329
+ name: Lint330
+ needs: xtask331
+ runs-on: ubuntu-latest332
+333
+ steps:334
+ - name: Checkout the repo335
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6336
+ with:337
+ persist-credentials: false338
+339
+ - name: Install protoc340
+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v2.79.1341
+ with:342
+ tool: protoc@3.20.3343
+344
+ - name: Install Rust345
+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1346
+ with:347
+ toolchain: nightly-2026-02-26348
+ components: clippy, rustfmt349
+350
+ - name: Load cache351
+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1352
+ with:353
+ save-if: ${{ github.ref == 'refs/heads/main' }}354
+355
+ - name: Get xtask356
+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5357
+ with:358
+ path: target/debug/xtask359
+ key: "${{ needs.xtask.outputs.cachekey-linux }}"360
+ fail-on-cache-miss: true361
+362
+ - name: Check Formatting363
+ run: |364
+ target/debug/xtask ci style365
+366
+ - name: Clippy367
+ run: |368
+ target/debug/xtask ci clippy369
+370
+ integration-tests:371
+ name: 'Integration test (features: ${{ matrix.feature }})'372
+ runs-on: ubuntu-latest373
+374
+ # run several docker containers with the same networking stack so the hostname 'synapse'375
+ # maps to the synapse container, etc.376
+ services:377
+ # tests need a synapse: this is a service and not michaelkaye/setup-matrix-synapse@main as the378
+ # latter does not provide networking for services to communicate with it.379
+ synapse:380
+ image: ghcr.io/matrix-org/synapse-service:v1.117.0 # keep in sync with ./coverage.yml381
+ env:382
+ SYNAPSE_COMPLEMENT_DATABASE: sqlite383
+ SERVER_NAME: synapse384
+ ports:385
+ - 8008:8008386
+387
+ strategy:388
+ fail-fast: true389
+ matrix:390
+ feature:391
+ - "default"392
+ - "experimental-encrypted-state-events"393
+394
+ steps:395
+ - name: Checkout the repo396
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6397
+ with:398
+ persist-credentials: false399
+400
+ - name: Install libsqlite401
+ run: |402
+ sudo apt-get update403
+ sudo apt-get install libsqlite3-dev404
+405
+ - name: Install Rust406
+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1407
+ with:408
+ toolchain: stable409
+410
+ - name: Load cache411
+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1412
+ with:413
+ save-if: ${{ github.ref == 'refs/heads/main' }}414
+415
+ - name: Install nextest416
+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v 2.79.1417
+ with:418
+ tool: nextest419
+420
+ - name: Test421
+ env:422
+ RUST_LOG: "info,matrix_sdk=trace"423
+ HOMESERVER_URL: "http://localhost:8008"424
+ HOMESERVER_DOMAIN: "synapse"425
+ run: |426
+ cargo nextest run --profile ci -p matrix-sdk-integration-testing --features "${{ matrix.feature }}"427
+428
+ - name: Upload test results to Codecov429
+ if: ${{ !cancelled() }}430
+ uses: codecov/test-results-action@0fa95f0e1eeaafde2c782583b36b28ad0d8c77d3431
+ with:432
+ files: ./target/nextest/ci/junit.xml433
+ token: ${{ secrets.CODECOV_TOKEN }}@@ -0,0 +1,168 @@
1
+name: Code Coverage2
+3
+on:4
+ push:5
+ branches: ["main", "features/**"]6
+ pull_request:7
+ branches: ["main", "features/**"]8
+9
+permissions: {}10
+11
+concurrency:12
+ group: ${{ github.workflow }}-${{ github.ref }}13
+ cancel-in-progress: true14
+15
+env:16
+ CARGO_TERM_COLOR: always17
+ # without matrix_sdk=trace, expressions in `trace!` fields are not evaluated18
+ # when the `trace!` statement is hit, and thus not covered19
+ RUST_LOG: info,matrix_sdk=trace20
+21
+jobs:22
+ xtask:23
+ uses: ./.github/workflows/xtask.yml24
+25
+ code_coverage:26
+ name: Code Coverage27
+ needs: xtask28
+ runs-on: "ubuntu-latest"29
+ permissions:30
+ contents: read31
+ id-token: write32
+33
+ # run several docker containers with the same networking stack so the hostname 'synapse'34
+ # maps to the synapse container, etc.35
+ services:36
+ # tests need a synapse: this is a service and not michaelkaye/setup-matrix-synapse@main as the37
+ # latter does not provide networking for services to communicate with it.38
+ synapse:39
+ image: ghcr.io/matrix-org/synapse-service:v1.117.0 # keep in sync with ./ci.yml40
+ env:41
+ SYNAPSE_COMPLEMENT_DATABASE: sqlite42
+ SERVER_NAME: synapse43
+ ports:44
+ - 8008:800845
+46
+ steps:47
+ # This CI workflow can run into space issue, so we're cleaning up some48
+ # space here.49
+ - name: Create some more space50
+ run: |51
+ echo "Disk space before cleanup"52
+ df -h53
+54
+ cd /opt55
+ find . -maxdepth 1 -mindepth 1 '!' -path ./containerd '!' -path ./actionarchivecache '!' -path ./runner '!' -path ./runner-cache -exec rm -rf '{}' ';'56
+ rm -rf /opt/hostedtoolcache57
+58
+ # Get rid of binaries and libs we're not interested in.59
+ sudo rm -rf \60
+ /usr/local/julia* \61
+ /usr/local/aws*62
+63
+ sudo rm -rf \64
+ /usr/local/bin/minikube \65
+ /usr/local/bin/node \66
+ /usr/local/bin/stack \67
+ /usr/local/bin/bicep \68
+ /usr/local/bin/pulumi* \69
+ /usr/local/bin/helm \70
+ /usr/local/bin/azcopy \71
+ /usr/local/bin/packer \72
+ /usr/local/bin/cmake-gui \73
+ /usr/local/bin/cpack74
+75
+ sudo rm -rf \76
+ /usr/local/share/powershell \77
+ /usr/local/share/chromium78
+79
+ sudo rm -rf /usr/local/lib/android80
+81
+ echo "::group::/usr/local/bin/*"82
+ du -hsc /usr/local/bin/* | sort -h83
+ echo "::endgroup::"84
+85
+ echo "::group::/usr/local/share/*"86
+ du -hsc /usr/local/share/* | sort -h87
+ echo "::endgroup::"88
+89
+ echo "::group::/usr/local/*"90
+ du -hsc /usr/local/* | sort -h91
+ echo "::endgroup::"92
+93
+ echo "::group::/usr/local/lib/*"94
+ du -hsc /usr/local/lib/* | sort -h95
+ echo "::endgroup::"96
+97
+ echo "::group::/opt/*"98
+ du -hsc /opt/* | sort -h99
+ echo "::endgroup::"100
+101
+ echo "Disk space after cleanup"102
+ df -h103
+104
+ - name: Checkout repository105
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6106
+ with:107
+ ref: ${{ github.event.pull_request.head.sha }}108
+ persist-credentials: false109
+110
+ - name: Install libsqlite111
+ run: |112
+ sudo apt-get update113
+ sudo apt-get install libsqlite3-dev114
+ sudo apt-get clean115
+ sudo rm -rf /var/lib/apt/lists/*116
+117
+ - name: Install Rust118
+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1119
+ with:120
+ toolchain: stable121
+122
+ # Cargo config can screw with caching and is only used for alias config123
+ # and extra lints, which we don't care about here124
+ - name: Delete cargo config125
+ run: rm .cargo/config.toml126
+127
+ - name: Load cache128
+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1129
+ with:130
+ prefix-key: "coverage"131
+ save-if: ${{ github.ref == 'refs/heads/main' }}132
+133
+ - name: Install nextest and llvm-cov134
+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v 2.79.1135
+ with:136
+ tool: nextest,cargo-llvm-cov137
+138
+ - name: Get xtask139
+ uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5140
+ with:141
+ path: target/debug/xtask142
+ key: "${{ needs.xtask.outputs.cachekey-linux }}"143
+ fail-on-cache-miss: true144
+145
+ - name: Check total disk space before running146
+ run: |147
+ df -h148
+149
+ - name: Create the coverage report150
+ run: |151
+ target/debug/xtask ci coverage -o codecov 152
+ env:153
+ CARGO_PROFILE_COV_INHERITS: 'dev'154
+ CARGO_PROFILE_COV_DEBUG: 1155
+ HOMESERVER_URL: "http://localhost:8008"156
+ HOMESERVER_DOMAIN: "synapse"157
+158
+ - name: Upload coverage to Codecov159
+ uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2160
+ with:161
+ use_oidc: true162
+163
+ - name: Upload test results to Codecov164
+ if: ${{ !cancelled() }}165
+ uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2166
+ with:167
+ use_oidc: true168
+ report_type: "test_results"@@ -0,0 +1,19 @@
1
+name: Lint dependencies (for licences, allowed sources, banned dependencies, vulnerabilities)2
+on:3
+ pull_request:4
+ paths:5
+ - '**/Cargo.toml'6
+ workflow_dispatch:7
+ schedule:8
+ - cron: '0 0 * * *'9
+10
+permissions: {}11
+12
+jobs:13
+ cargo-deny:14
+ runs-on: ubuntu-latest15
+ steps:16
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v617
+ with:18
+ persist-credentials: false19
+ - uses: EmbarkStudios/cargo-deny-action@6c8f9facfa5047ec02d8485b6bf52b587b7777d1 # v2.0.18@@ -0,0 +1,39 @@
1
+# Check if the path of changed file is longer than 260 characters2
+# that windows filesystem allows3
+4
+name: Detect long path among changed files5
+6
+on:7
+ workflow_dispatch:8
+ pull_request: # focus on the changed files in current PR9
+ branches: ["main", "features/**", "release-**"]10
+11
+permissions: {}12
+13
+concurrency:14
+ group: ${{ github.workflow }}-${{ github.ref }}15
+ cancel-in-progress: true16
+17
+jobs:18
+ long-path:19
+ runs-on: ubuntu-latest20
+21
+ steps:22
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v623
+ with:24
+ persist-credentials: false25
+ - name: Check for changed files26
+ id: changed-files27
+ uses: tj-actions/changed-files@9426d40962ed5378910ee2e21d5f8c6fcbf2dd96 # v47.0.628
+ - name: Detect long path29
+ env:30
+ ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} # ignore the deleted files31
+ MAX_LENGTH: 120 # set max length to 120, considering the base path of app project that uses matrix-sdk32
+ run: |33
+ for file in ${ALL_CHANGED_FILES}; do34
+ if [ ${#file} -gt $MAX_LENGTH ]; then35
+ echo "File path is too long. Length: ${#file}, Path: $file"36
+ exit 137
+ fi38
+ done39
+ exit 0@@ -0,0 +1,16 @@
1
+name: Detects unused dependencies2
+on:3
+ pull_request: { branches: "*" }4
+5
+permissions: {}6
+7
+jobs:8
+ build:9
+ runs-on: ubuntu-latest10
+ steps:11
+ - name: Checkout12
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v613
+ with:14
+ persist-credentials: false15
+ - name: Machete16
+ uses: bnjbvr/cargo-machete@ac30a525c0a8d163a92d727b3ff079ee3f6ecb08@@ -0,0 +1,64 @@
1
+name: Documentation2
+3
+on:4
+ push:5
+ branches: [main]6
+ pull_request:7
+8
+concurrency:9
+ group: ${{ github.workflow }}-${{ github.ref }}10
+ cancel-in-progress: true11
+12
+permissions:13
+ contents: read14
+ pages: write15
+ id-token: write16
+17
+jobs:18
+ docs:19
+ name: All crates20
+ runs-on: ubuntu-latest21
+22
+ steps:23
+ - name: Checkout repository24
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v625
+ with:26
+ persist-credentials: false27
+28
+ - name: Install protoc29
+ uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # v2.79.130
+ with:31
+ tool: protoc@3.20.332
+33
+ - name: Install Rust34
+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v135
+ with:36
+ toolchain: nightly-2026-02-2637
+38
+ - name: Install Node.js39
+ uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v640
+ with:41
+ node-version: 2042
+43
+ - name: Load cache44
+ uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.145
+ with:46
+ save-if: ${{ github.ref == 'refs/heads/main' }}47
+48
+ # Keep in sync with xtask docs49
+ - name: Build documentation50
+ env:51
+ RUSTDOCFLAGS: "--enable-index-page -Zunstable-options --cfg docsrs -Dwarnings"52
+ run:53
+ cargo doc --no-deps --workspace --features docsrs --exclude=xtask54
+55
+ - name: Upload artifact56
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'57
+ uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.058
+ with:59
+ path: './target/doc/'60
+61
+ - name: Deploy to GitHub Pages62
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'63
+ id: deployment64
+ uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0@@ -0,0 +1,16 @@
1
+name: Git Checks2
+3
+on: [pull_request]4
+5
+permissions: {}6
+7
+jobs:8
+ block-fixup:9
+ runs-on: ubuntu-latest10
+11
+ steps:12
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v613
+ with:14
+ persist-credentials: false15
+ - name: Block Fixup Commit Merge16
+ uses: 13rac1/block-fixup-merge-action@bd5504fb9ca0253e109d98eb86b7debc01970cdc # v2.0.0@@ -0,0 +1,22 @@
1
+name: Rust version2
+3
+on:4
+ workflow_dispatch:5
+ push:6
+ branches: ["main", "features/**", "release-**"]7
+ pull_request:8
+ branches: ["main", "features/**", "release-**"]9
+10
+permissions: {}11
+12
+jobs:13
+ msrv:14
+ runs-on: ubuntu-latest15
+ steps:16
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v617
+ with:18
+ persist-credentials: false19
+ - uses: taiki-e/install-action@b550161ef8a7bc4f2a671c0b03a18ac9ccedea1e # cargo-hack20
+ with:21
+ tool: cargo-hack22
+ - run: cargo hack check --rust-version --workspace --all-targets@@ -0,0 +1,82 @@
1
+# A reusable github actions workflow that will build xtask, if it is not2
+# already cached.3
+#4
+# It will create a pair of GHA cache entries, if they do not already exist.5
+# The cache keys take the form `xtask-{os}-{hash}`, where "{os}" is "linux"6
+# or "macos", and "{hash}" is the hash of the xtask# directory.7
+#8
+# The cache keys are written to output variables named "cachekey-{os}".9
+#10
+11
+name: Build xtask if necessary12
+13
+on:14
+ workflow_call:15
+ outputs:16
+ cachekey-linux:17
+ description: "The cache key for the linux build artifact"18
+ value: "${{ jobs.xtask.outputs.cachekey-linux }}"19
+ cachekey-macos:20
+ description: "The cache key for the macos build artifact"21
+ value: "${{ jobs.xtask.outputs.cachekey-macos }}"22
+23
+permissions: {}24
+25
+env:26
+ CARGO_TERM_COLOR: always27
+28
+jobs:29
+ xtask:30
+ name: "xtask-${{ matrix.os-name }}"31
+32
+ strategy:33
+ fail-fast: true34
+ matrix:35
+ include:36
+ - os: ubuntu-latest37
+ os-name: 🐧38
+ cachekey-id: linux39
+40
+ - os: macos-1541
+ os-name: 🍏42
+ cachekey-id: macos43
+44
+ runs-on: "${{ matrix.os }}"45
+46
+ steps:47
+ - name: Checkout repo48
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v649
+ with:50
+ persist-credentials: false51
+52
+ - name: Calculate cache key53
+ id: cachekey54
+ # set a step output variable "cachekey-{os}" that can be referenced in55
+ # the job outputs below.56
+ run: |57
+ echo "cachekey-${{ matrix.cachekey-id }}=xtask-${{ matrix.cachekey-id }}-${{ hashFiles('Cargo.toml', 'xtask/**') }}" >> $GITHUB_OUTPUT58
+59
+ - name: Check xtask cache60
+ uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.561
+ id: xtask-cache62
+ with:63
+ path: target/debug/xtask64
+ # use the cache key calculated in the step above. Bit of an awkward65
+ # syntax66
+ key: |67
+ ${{ steps.cachekey.outputs[format('cachekey-{0}', matrix.cachekey-id)] }}68
+69
+ - name: Install Rust stable toolchain70
+ if: steps.xtask-cache.outputs.cache-hit != 'true'71
+ uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v172
+ with:73
+ toolchain: stable74
+75
+ - name: Build76
+ if: steps.xtask-cache.outputs.cache-hit != 'true'77
+ run: |78
+ cargo build -p xtask79
+80
+ outputs:81
+ "cachekey-linux": "${{ steps.cachekey.outputs.cachekey-linux }}"82
+ "cachekey-macos": "${{ steps.cachekey.outputs.cachekey-macos }}"@@ -0,0 +1,24 @@
1
+name: Lint GHA workflows with zizmor2
+3
+on:4
+ push:5
+ branches: ["main"]6
+ pull_request:7
+ branches: ["**"]8
+9
+permissions: {}10
+11
+jobs:12
+ zizmor:13
+ name: Run zizmor14
+ runs-on: ubuntu-latest15
+ permissions:16
+ security-events: write # Required for upload-sarif (used by zizmor-action) to upload SARIF files.17
+ steps:18
+ - name: Checkout repository19
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.220
+ with:21
+ persist-credentials: false22
+23
+ - name: Run zizmor24
+ uses: zizmorcore/zizmor-action@5f14fd08f7cf1cb1609c1e344975f152c7ee938d # v0.5.6@@ -0,0 +1,24 @@
1
+target2
+generated3
+master.zip4
+emsdk-*5
+.idea/6
+.env7
+.envrc8
+.build9
+.swiftpm10
+/Package.swift11
+# code coverage report12
+cobertura.xml13
+14
+## User settings15
+xcuserdata/16
+.vscode/17
+18
+## OS garbage19
+.DS_Store20
+21
+## Kotlin bindings generated files22
+bindings/kotlin/.gradle/23
+bindings/kotlin/buildSrc/build/24
+bindings/kotlin/buildSrc/.gradle/@@ -0,0 +1,91 @@
1
+[global]2
+# Use the GitHub Markdown flavour, https://github.com/rvben/rumdl/blob/main/docs/flavors/gfm.md.3
+flavor = "gfm"4
+disable = [5
+ # `commands-show-output`, https://github.com/rvben/rumdl/blob/main/docs/md014.md.6
+ # Not necessary to show the shell commands output every time.7
+ "MD014",8
+9
+ # `first-line-heading`, https://github.com/rvben/rumdl/blob/main/docs/md041.md.10
+ # Some documents are fragments, the first heading is defined somewhere else.11
+ "MD041",12
+]13
+14
+# `heading-style`, https://github.com/rvben/rumdl/blob/main/docs/md003.md.15
+[MD003]16
+style = "atx"17
+18
+# `ul-style`, https://github.com/rvben/rumdl/blob/main/docs/md004.md.19
+[MD004]20
+style = "dash"21
+22
+# `line-length`, https://github.com/rvben/rumdl/blob/main/docs/md013.md.23
+[MD013]24
+line-length = 8025
+code-blocks = false26
+reflow = true27
+28
+# `no-trailing-punctuation`, https://github.com/rvben/rumdl/blob/main/docs/md026.md.29
+[MD026]30
+punctuation = ".,;:"31
+32
+# `ol-prefix`, https://github.com/rvben/rumdl/blob/main/docs/md029.md.33
+[MD029]34
+style = "ordered"35
+36
+# `no-inline-html`, https://github.com/rvben/rumdl/blob/main/docs/md033.md.37
+[MD033]38
+allowed-elements = [39
+ "i",40
+ "q",41
+ "cite",42
+ "a",43
+ "time",44
+ "sub",45
+ "sup",46
+ "figure", "figcaption",47
+ "table",48
+ "summary", "details",49
+ "math", "mo", "mn", "mi", "semantics", "annotation",50
+]51
+disallowed-elements = ["gfm"]52
+fix = true53
+fix-mode = "relaxed"54
+55
+# `code-block-style`, https://github.com/rvben/rumdl/blob/main/docs/md046.md.56
+[MD046]57
+style = "fenced"58
+59
+# `code-fence-style`, https://github.com/rvben/rumdl/blob/main/docs/md048.md.60
+[MD048]61
+style = "backtick"62
+63
+# `emphasis-style`, https://github.com/rvben/rumdl/blob/main/docs/md049.md.64
+[MD049]65
+style = "underscore"66
+67
+# `strong-style`, https://github.com/rvben/rumdl/blob/main/docs/md050.md.68
+[MD050]69
+style = "asterisk"70
+71
+# `link-image-style`, https://github.com/rvben/rumdl/blob/main/docs/md054.md.72
+[MD054]73
+autolink = false74
+collapsed = false75
+preferred-style = "full"76
+77
+# `table-format`, https://github.com/rvben/rumdl/blob/main/docs/md060.md.78
+[MD060]79
+enabled = true80
+81
+# `heading-capitalization`, https://github.com/rvben/rumdl/blob/main/docs/md063.md.82
+[MD063]83
+enabled = true84
+style = "sentence-case"85
+max-level = 386
+ignore-words = ["Matrix", "Rust", "Swift", "Android", "Java"]87
+88
+# `list-item-spacing`, https://github.com/rvben/rumdl/blob/main/docs/md076.md.89
+[MD076]90
+style = "tight"91
+allow-loose-continuation = true@@ -0,0 +1,10 @@
1
+max_width = 1002
+comment_width = 803
+wrap_comments = true4
+imports_granularity = "Crate"5
+use_small_heuristics = "Max"6
+group_imports = "StdExternalCrate"7
+format_code_in_doc_comments = true8
+doc_comment_code_block_width = 809
+# Workaround for https://github.com/rust-lang/rust.vim/issues/46410
+edition = "2024"@@ -0,0 +1,44 @@
1
+[default]2
+extend-ignore-re = [3
+ # base 58 strings with spaces every four chars.4
+ # this would also match regular sentence parts with eight or more words of5
+ # exactly four characters in row, but that doesn't really happen.6
+ "[1-9A-Za-z]{4}( [1-9A-Za-z]{4}){7,}",7
+ # some heuristics for base64 strings with no false matches found at the8
+ # time of writing.9
+ "[A-Za-z0-9+=]{72,}",10
+ "([A-Za-z0-9+=]|\\\\\\s\\*){72,}",11
+ "[0-9+][A-Za-z0-9+]{30,}[a-z0-9+]",12
+ "\\$[A-Z0-9+][A-Za-z0-9+]{6,}[a-z0-9+]",13
+ "\\b[a-z0-9+/=][A-Za-z0-9+/=]{7,}[a-z0-9+/=][A-Z]\\b",14
+]15
+16
+[default.extend-identifiers]17
+WeeChat = "WeeChat"18
+19
+[default.extend-words]20
+# all of these are valid words, but should never appear in this repo21
+bellow = "below"22
+stat = "state"23
+sing = "sign"24
+singed = "signed"25
+singing = "signing"26
+# crate name27
+ratatui = "ratatui"28
+# path name29
+consts = "consts"30
+# base64 false positives31
+Nd = "Nd"32
+Abl = "Abl"33
+Som = "Som"34
+Ba = "Ba"35
+Yur = "Yur" # as found in crates/matrix-sdk-indexeddb/src/crypto_store/migrations/mod.rs36
+TYE = "TYE" # as found in testing/matrix-sdk-test/src/test_json/keys_query_sets.rs37
+38
+[files]39
+extend-exclude = [40
+ # Our json files contain a bunch of base64 encoded ed25519 keys.41
+ "*.json",42
+ # Fuzzy match patterns that can be understood as typos confusingly.43
+ "crates/matrix-sdk-ui/tests/integration/room_list_service.rs",44
+]@@ -0,0 +1,3 @@
1
+rules:2
+ unpinned-uses:3
+ severity: high@@ -0,0 +1,128 @@
1
+# Architecture2
+3
+The SDK is split into multiple layers:4
+5
+```text6
+ WASM (external crate matrix-rust-sdk-crypto-wasm)7
+ /8
+ / uniffi9
+ / /10
+ / bindings (matrix-sdk-ffi)11
+ crypto |12
+bindings |13
+ | |14
+ | UI (matrix-sdk-ui)15
+ | \16
+ | \17
+ | main (matrix-sdk)18
+ | / /19
+crypto /20
+ \ /21
+ store (matrix-sdk-base, + all the store impls)22
+ |23
+ common (matrix-sdk-common)24
+```25
+26
+Where the store implementations are `matrix-sdk-sqlite` and27
+`matrix-sdk-indexeddb` as well as `MemoryStore` which is defined in28
+`matrix-sdk-base`.29
+30
+## `crates/matrix-sdk`31
+32
+This is the main crate, and one that is expected to be used by most consumers.33
+Notable data types include:34
+35
+- the `Client`, which can run room-independent requests: logging in/out,36
+ creating rooms, running sync, etc.37
+- the `Room`, which represents a room and its state (notably via the observable38
+ `RoomInfo`), and allows running queries that are room-specific, notably39
+ sending events.40
+41
+## `crates/matrix-sdk-base`42
+43
+A _sans I/O_ crate to represent the base data types persisted in the SDK. No44
+network or storage I/O happens in this crate, although it defines traits45
+(`StateStore` and `EventCacheStore`) representing storage backends, as well as46
+dummy in-memory implementations of these traits.47
+48
+## `crates/matrix-sdk-common`49
+50
+Common helpers used by most of the other crates; almost a leaf in the dependency51
+tree of our own crates (the only crate it's using is test helpers).52
+53
+## `crates/matrix-sdk-crypto`54
+55
+A _sans I/O_ implementation of a state machine that handles end-to-end56
+encryption for Matrix clients. It defines a `CryptoStore` trait representing57
+storage backends that will perform the actual storage I/O later, as well as a58
+dummy in-memory implementation of this trait.59
+60
+## `crates/matrix-sdk-indexeddb`61
+62
+Implementations of `EventCacheStore`, `StateStore` and `CryptoStore` for a63
+indexeddb backend (for use in Web browsers, via WebAssembly).64
+65
+## `crates/matrix-sdk-qrcode`66
+67
+Implementation of QR codes for interactive verifications, used in the crypto68
+crate.69
+70
+## `crates/matrix-sdk-sqlite`71
+72
+Implementations of `EventCacheStore`, `StateStore` and `CryptoStore` for a73
+SQLite backend.74
+75
+## `crates/matrix-sdk-store-encryption`76
+77
+Low-level primitives for encrypting/decrypting/hashing values. Store78
+implementations that implement encryption at rest can use those primitives.79
+80
+## `crates/matrix-sdk-ui`81
+82
+Very high-level primitives implementing the best practices and cutting-edge83
+Matrix tech:84
+85
+- `EncryptionSyncService`: a specialized service running simplified sliding sync86
+ (MSC4186) for everything related to crypto and E2EE for the current `Client`.87
+- `RoomListService`: a specialized service running simplified sliding sync88
+ (MSC4186) for retrieving the list of current rooms, and exposing its entries.89
+- `SyncService`: a wrapper for the two previous services, coordinating their90
+ running and shutting down.91
+- `Timeline`: a high-level view for a `Room`'s timeline of events, grouping92
+ related events (aggregations) into single timeline items.93
+94
+## `bindings/matrix-sdk-crypto-ffi/`95
+96
+FFI bindings for the crypto crate, used in a Web browser context via97
+WebAssembly. These use `wasm-bindgen` to generate the bindings. These bindings98
+are used in Element Web and the legacy Element apps, as of 2024-11-07.99
+100
+## `bindings/matrix-sdk-ffi/`101
+102
+FFI bindings for important concepts in `matrix-sdk-ui` and `matrix-sdk`,103
+generated with [UniFFI](https://github.com/mozilla/uniffi-rs) and to be used104
+from other languages like Swift/Go/Kotlin. These bindings are used in the105
+ElementX apps, as of 2024-11-07.106
+107
+## `bindings/matrix-sdk-ffi-macros/`108
+109
+Macros used in `bindings/matrix-sdk-ffi`.110
+111
+## `testing/matrix-sdk-test/`112
+113
+Common test helpers, used by all the other crates.114
+115
+## `testing/matrix-sdk-test-macros/`116
+117
+Implementation of the `#[async_test]` test macro.118
+119
+## `testing/matrix-sdk-integration-testing/`120
+121
+Fully-fledged integration tests that require spawning a Synapse instance to run.122
+A docker-compose setup is provided to ease running the tests, and it is123
+compatible for running with Podman too.124
+125
+## Inspiration126
+127
+This document has been inspired by the reading of this128
+[blog post](https://matklad.github.io/2021/02/06/ARCHITECTURE.md.html).@@ -0,0 +1,412 @@
1
+# Contributing to `matrix-rust-sdk`2
+3
+## Chat rooms4
+5
+In addition to our [main Matrix room], we have a development room at6
+[#matrix-rust-sdk-dev:flipdot.org]. Please use it to discuss potential changes,7
+the overall direction of development and related topics.8
+9
+[main Matrix room]: https://matrix.to/#/#matrix-rust-sdk:matrix.org10
+[#matrix-rust-sdk-dev:flipdot.org]: https://matrix.to/#/#matrix-rust-sdk-dev:flipdot.org11
+12
+## Testing13
+14
+You can run most of the tests that also happen in CI also using15
+`cargo xtask ci`. This needs a few dependencies to be installed, as it also runs16
+automatic WASM tests:17
+18
+```bash19
+rustup component add clippy20
+cargo install cargo-nextest typos-cli wasm-pack21
+```22
+23
+If you want to execute only one part of CI, there are a few sub-commands (see24
+`cargo xtask ci --help`).25
+26
+Some tests are not automatically run in `cargo xtask ci`, for example the27
+integration tests that need a running synapse instance. These tests reside in28
+`./testing/matrix-sdk-integration-testing`. See its29
+[README](./testing/matrix-sdk-integration-testing/README.md) to easily set up a30
+synapse for testing purposes.31
+32
+### Snapshot testing33
+34
+You can add/review snapshot tests using [insta.rs](https://insta.rs)35
+36
+Every new struct/enum that derives `Serialize` `Deserialise` should have a37
+snapshot test for it. Any code change that breaks serialisation will then break38
+a test, the author will then have to decide how to handle migration and test it39
+if needed.40
+41
+And for an improved review experience it's recommended (but not necessary) to42
+install the `cargo-insta` tool:43
+44
+Unix:45
+46
+```shell47
+curl -LsSf https://insta.rs/install.sh | sh48
+```49
+50
+Windows:51
+52
+```shell53
+powershell -c "irm https://insta.rs/install.ps1 | iex"54
+```55
+56
+Usual flow is to first run the test, then review them.57
+58
+```shell59
+cargo insta test60
+cargo insta review61
+```62
+63
+### Intermittent failure policy64
+65
+While we strive to add test coverage for as many features as we can, it66
+sometimes happens that the tests will be intermittently failing in CI (such67
+tests are sometimes called "flaky"). This can be caused by race conditions68
+of all sorts, either in the test code itself, but sometimes in the underlying69
+feature being tested too, and as such, it requires some investigation, usually70
+from the original author of the test.71
+72
+Whenever such an intermittent failure happens, we try to open an issue to track73
+the failures, adding the74
+[`intermittent-failure`](https://github.com/matrix-org/matrix-rust-sdk/issues?q=is%3Aissue%20state%3Aopen%20label%3Aintermittent-failure)75
+label to it, and commenting with links to CI runs where the failure happened.76
+77
+If a test has been intermittently failing for **two weeks** or more, and no one78
+is actively working on fixing it, then we might decide to mark the test as79
+`ignored` until it is fixed, to not cause unrelated failures in other80
+contributors' pull requests and pushes.81
+82
+## Pull requests83
+84
+Ideally, a PR should have a _proper title_, with _atomic logical commits_, and85
+each commit should have a _good commit message_.86
+87
+A _proper PR title_ would be a one-liner summary of the changes in the PR,88
+following the same guidelines of a good commit message, including the89
+area/feature prefix. Something like `FFI: Allow logs files to be pruned.` would90
+be a good PR title.91
+92
+(An additional bad example of a bad PR title would be `mynickname/branch name`,93
+that is, just the branch name.)94
+95
+## Writing changelog entries96
+97
+We use towncrier to generate changelogs from individual fragment files. Each98
+change must be documented as a changelog fragment in the appropriate crate:99
+100
+```text101
+/crates/<crate-name>/changelog.d/102
+```103
+104
+Each changelog fragment must include **both the pull request number and the105
+fragment type** in its filename:106
+107
+```text108
+<PR number>.<fragment type>.md109
+```110
+111
+For example:112
+113
+```text114
+4357.added.md115
+4357.fixed.md116
+4357.changed.md117
+```118
+119
+The pull request link is automatically added during changelog generation, so it120
+must not be included manually.121
+122
+We use standard towncrier fragment types to categorize changes. Common types123
+include:124
+125
+- `added` – new features or functionality126
+- `changed` – changes in existing behavior127
+- `fixed` – bug fixes128
+- `removed` – removed features or APIs129
+- `security` – security-related fixes130
+- `internal` – changes that do not affect users (refactoring, CI, tooling)131
+132
+Choose the type that best matches the nature of the change.133
+134
+A well-written changelog entry should be understandable even to those who may135
+not be deeply familiar with the project. Provide enough context to ensure136
+clarity and ease of understanding.137
+138
+A couple of examples of bad changelog entry would look like:139
+140
+```markdown141
+- Fixed a panic.142
+```143
+144
+```markdown145
+Added the Bar function to Foo.146
+```147
+148
+A good example of a changelog entry could look like the following:149
+150
+```markdown151
+Use the inviter's server name and the server name from the room alias as152
+fallback values for the via parameter when requesting the room summary from the153
+homeserver. This ensures requests succeed even when the room being previewed is154
+hosted on a federated server.155
+```156
+157
+For security-related changelog entries, please include the following additional158
+details alongside the pull request number:159
+160
+- Impact: Clearly describe the issue's potential impact on users or systems.161
+- CVE Number: If available, include the CVE (Common Vulnerabilities and162
+ Exposures) identifier.163
+- GitHub Advisory Link: Provide a link to the corresponding GitHub security164
+ advisory for further context.165
+166
+```markdown167
+Use a constant-time Base64 encoder for secret key material to mitigate168
+side-channel attacks leaking secret key material169
+[CVE-2024-40640](https://www.cve.org/CVERecord?id=CVE-2024-40640),170
+[GHSA-j8cm-g7r6-hfpq](https://github.com/matrix-org/vodozemac/security/advisories/GHSA-j8cm-g7r6-hfpq)).171
+```172
+173
+## Commit message format174
+175
+Commit messages should be formatted as Conventional Commits. In addition, some176
+git trailers are supported and have special meaning (see below).177
+178
+### Conventional commits179
+180
+Conventional Commits are structured as follows:181
+182
+```text183
+<type>(<scope>): <short summary>184
+```185
+186
+The type of changes which will be included in changelogs is one of the187
+following:188
+189
+- `feat`: A new feature190
+- `fix`: A bugfix191
+- `doc`: Documentation changes192
+- `refactor`: Code refactoring193
+- `perf`: Performance improvements194
+- `ci`: Changes to CI configuration files and scripts195
+196
+The scope is optional and can specify the area of the codebase affected (e.g.,197
+olm, cipher).198
+199
+### Security fixes200
+201
+Commits addressing security vulnerabilities must include specific trailers for202
+vulnerability metadata, which should also be reflected in the corresponding203
+changelog entry.204
+205
+The metadata must be included in the following git-trailers:206
+207
+- `Security-Impact`: The magnitude of harm that can be expected, i.e.208
+ low/moderate/high/critical.209
+- `CVE`: The CVE that was assigned to this issue.210
+- `GitHub-Advisory`: The GitHub advisory identifier.211
+212
+Please include all the fields that are available.213
+214
+Example:215
+216
+```text217
+fix(crypto): Use a constant-time Base64 encoder for secret key material218
+219
+This patch fixes a security issue around a side-channel vulnerability[1]220
+when decoding secret key material using Base64.221
+222
+In some circumstances an attacker can obtain information about secret223
+secret key material via a controlled-channel and side-channel attack.224
+225
+This patch avoids the side-channel by switching to the base64ct crate226
+for the encoding, and more importantly, the decoding of secret key227
+material.228
+229
+Security-Impact: Low230
+CVE: CVE-2024-40640231
+GitHub-Advisory: GHSA-j8cm-g7r6-hfpq232
+```233
+234
+## Review process235
+236
+To streamline the review process and make it easier for maintainers to review237
+your contributions, follow these basic rules:238
+239
+1. Do not force push after a review has started. This helps maintainers track240
+ incremental changes without confusion and makes it easier to follow the241
+ evolution of the code.242
+243
+2. Do not mix moves and refactoring with functional changes. Keep these in244
+ separate commits for clarity. This ensures that the purpose of each commit is245
+ clear and easy to review.246
+247
+3. Each commit must compile. If commits don’t compile, git bisect becomes248
+ unusable, which hampers the debugging process and makes it harder to identify249
+ the source of issues.250
+251
+4. Commits should only introduce test failures if they are proving that a bug252
+ exists. New features should never introduce test failures. Test failures253
+ should only be used to demonstrate existing bugs, not as part of adding new254
+ functionality.255
+256
+5. Keep PRs on topic and small. Large PRs are harder to review and more prone to257
+ delays. Create small, focused commits that address a single topic. Use a258
+ combination of [git add] -p or [git checkout] -p to split changes into259
+ logical units. This makes your work easier to review and reduces the chance260
+ of introducing unrelated changes.261
+262
+[git add]: https://git-scm.com/docs/git-add#Documentation/git-add.txt---patch263
+[git checkout]: https://git-scm.com/docs/git-checkout#Documentation/git-checkout.txt---patch264
+265
+### Addressing review comments using fixup commits266
+267
+So you posted a PR and the maintainers aren't quite happy with it. Here are some268
+guidelines to make the maintainers life easier and increase the chances that269
+your PR will be reviewed swiftly.270
+271
+1. Use [fixup] commits. When addressing reviewer feedback, you can create fixup272
+ commits. These commits mark your changes as corrections of specific previous273
+ commits in the PR.274
+275
+Example:276
+277
+```shell278
+git commit --fixup=<commit-hash>279
+```280
+281
+This command creates a new commit that refers to an existing one, making it282
+easier to rebase and squash later while showing reviewers the history of fixes.283
+For extra points, link to the fixup commit in the thread where the change was284
+requested.285
+286
+2. After all requested changes were addressed, feel free to re-request a review.287
+ People might not notice that all changes were addressed.288
+289
+3. Once the PR has been approved, rebase your PR to squash all the fixup290
+ commits, the [autosquash] option can help with this.291
+292
+```shell293
+git rebase main --interactive --autosquash294
+```295
+296
+[fixup]: https://git-scm.com/docs/git-commit#Documentation/git-commit.txt---fixupamendrewordltcommitgt297
+[autosquash]: https://git-scm.com/docs/git-rebase#Documentation/git-rebase.txt---autosquash298
+299
+## Sign off300
+301
+In order to have a concrete record that your contribution is intentional302
+and you agree to license it under the same terms as the project's303
+license, we've adopted the same lightweight approach that the [Linux304
+Kernel](https://www.kernel.org/doc/Documentation/SubmittingPatches),305
+[Docker](https://github.com/docker/docker/blob/master/CONTRIBUTING.md),306
+and many other projects use: the DCO ([Developer Certificate of307
+Origin](http://developercertificate.org/)). This is a simple declaration that308
+you wrote the contribution or otherwise have the right to contribute it to309
+Matrix:310
+311
+```text312
+Developer Certificate of Origin313
+Version 1.1314
+315
+Copyright (C) 2004, 2006 The Linux Foundation and its contributors.316
+660 York Street, Suite 102,317
+San Francisco, CA 94110 USA318
+319
+Everyone is permitted to copy and distribute verbatim copies of this320
+license document, but changing it is not allowed.321
+322
+Developer's Certificate of Origin 1.1323
+324
+By making a contribution to this project, I certify that:325
+326
+(a) The contribution was created in whole or in part by me and I327
+ have the right to submit it under the open source license328
+ indicated in the file; or329
+330
+(b) The contribution is based upon previous work that, to the best331
+ of my knowledge, is covered under an appropriate open source332
+ license and I have the right under that license to submit that333
+ work with modifications, whether created in whole or in part334
+ by me, under the same open source license (unless I am335
+ permitted to submit under a different license), as indicated336
+ in the file; or337
+338
+(c) The contribution was provided directly to me by some other339
+ person who certified (a), (b) or (c) and I have not modified340
+ it.341
+342
+(d) I understand and agree that this project and the contribution343
+ are public and that a record of the contribution (including all344
+ personal information I submit with it, including my sign-off) is345
+ maintained indefinitely and may be redistributed consistent with346
+ this project or the open source license(s) involved.347
+```348
+349
+If you agree to this for your contribution, then all that's needed is to350
+include the line in your commit or pull request comment:351
+352
+```text353
+Signed-off-by: Your Name <your@email.example.org>354
+```355
+356
+Git allows you to add this signoff automatically when using the `-s` flag to357
+`git commit`, which uses the name and email set in your `user.name` and358
+`user.email` git configs.359
+360
+If you forgot to sign off your commits before making your pull request and are361
+on Git 2.17+ you can mass signoff using rebase:362
+363
+```text364
+git rebase --signoff origin/main365
+```366
+367
+## AI policy368
+369
+This policy is a copy of the [Forgejo's AI agreement][Forgejo].370
+371
+### Terminology372
+373
+This does not necessarily reflect the official or commonly used terminology.374
+375
+Software and services that heavily rely on large language model technology to376
+generate their outcomes are referred to as _Artificial Intelligence_ (AI).377
+Examples of products that fit this definition: GitHub Copilot, ChatGPT, Claude378
+Sonnet, DeepSeek, Llama and Gemini.379
+380
+There is a distinction between _general_ and _narrow_ AI, all the aforementioned381
+examples fall under general AI as they were not trained to execute a specific382
+well-defined task. Narrow AI is trained to be used for specific well-defined383
+tasks where the problem space is known in advance.384
+385
+_Vibe coding_ is the practice where AI creates a code change (feature, bugfix,386
+tests, refactor) with a human that describes what needs to be implemented.387
+388
+_AI agents_ are AIs that are configured to perform interactions or make changes389
+with little to no human supervision.390
+391
+### Agreement392
+393
+1. If content was made with the help of AI, you **must** convey that this is394
+ the case. This includes content that you authored but was motivated by a395
+ suggestion of AI.396
+2. If at any point you used AI's work in your contribution you should make397
+ an effort to **verify** that you can submit this under the license of the398
+ repository.399
+3. The **accountability** of using AI in a contribution lies with the person400
+ that makes that contribution.401
+4. All communication, that includes: commit messages, pull request messages,402
+ documentation, code comments and issues (and comments on issues/pull403
+ requests), that is intended to be read by people to understand your thoughts404
+ and work **must not** have been generated with AI. We exclude machine405
+ translation and tooling that helps with grammar and spelling check.406
+5. Using general AI for review is **forbidden**. If the change contains changes407
+ to the user experience it has to be approved by a human reviewer.408
+6. It is **not allowed** to use AI in an autonomous-looking way to contribute to409
+ the Matrix Rust SDK. This also applies when someone engages in _vibe coding_410
+ or uses so-called _agent mode_.411
+412
+[Forgejo]: https://codeberg.org/forgejo/governance/src/branch/main/AIAgreement.md@@ -0,0 +1,8266 @@
1
+# This file is automatically @generated by Cargo.2
+# It is not intended for manual editing.3
+version = 44
+5
+[[package]]6
+name = "accessory"7
+version = "2.1.0"8
+source = "registry+https://github.com/rust-lang/crates.io-index"9
+checksum = "28e416a3ab45838bac2ab2d81b1088d738d7b2d2c5272a54d39366565a29bd80"10
+dependencies = [11
+ "macroific",12
+ "proc-macro2",13
+ "quote",14
+ "syn 2.0.101",15
+]16
+17
+[[package]]18
+name = "addr2line"19
+version = "0.25.1"20
+source = "registry+https://github.com/rust-lang/crates.io-index"21
+checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b"22
+dependencies = [23
+ "gimli",24
+]25
+26
+[[package]]27
+name = "adler2"28
+version = "2.0.1"29
+source = "registry+https://github.com/rust-lang/crates.io-index"30
+checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"31
+32
+[[package]]33
+name = "aead"34
+version = "0.5.2"35
+source = "registry+https://github.com/rust-lang/crates.io-index"36
+checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0"37
+dependencies = [38
+ "crypto-common",39
+ "generic-array",40
+]41
+42
+[[package]]43
+name = "aes"44
+version = "0.8.4"45
+source = "registry+https://github.com/rust-lang/crates.io-index"46
+checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"47
+dependencies = [48
+ "cfg-if",49
+ "cipher",50
+ "cpufeatures 0.2.12",51
+]52
+53
+[[package]]54
+name = "aho-corasick"55
+version = "1.1.3"56
+source = "registry+https://github.com/rust-lang/crates.io-index"57
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"58
+dependencies = [59
+ "memchr",60
+]61
+62
+[[package]]63
+name = "allocator-api2"64
+version = "0.2.18"65
+source = "registry+https://github.com/rust-lang/crates.io-index"66
+checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"67
+68
+[[package]]69
+name = "android_system_properties"70
+version = "0.1.5"71
+source = "registry+https://github.com/rust-lang/crates.io-index"72
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"73
+dependencies = [74
+ "libc",75
+]76
+77
+[[package]]78
+name = "anes"79
+version = "0.1.6"80
+source = "registry+https://github.com/rust-lang/crates.io-index"81
+checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"82
+83
+[[package]]84
+name = "anstyle"85
+version = "1.0.11"86
+source = "registry+https://github.com/rust-lang/crates.io-index"87
+checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd"88
+89
+[[package]]90
+name = "anyhow"91
+version = "1.0.100"92
+source = "registry+https://github.com/rust-lang/crates.io-index"93
+checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"94
+95
+[[package]]96
+name = "anymap2"97
+version = "0.13.0"98
+source = "registry+https://github.com/rust-lang/crates.io-index"99
+checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c"100
+101
+[[package]]102
+name = "approx"103
+version = "0.5.1"104
+source = "registry+https://github.com/rust-lang/crates.io-index"105
+checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6"106
+dependencies = [107
+ "num-traits",108
+]109
+110
+[[package]]111
+name = "aquamarine"112
+version = "0.6.0"113
+source = "registry+https://github.com/rust-lang/crates.io-index"114
+checksum = "0f50776554130342de4836ba542aa85a4ddb361690d7e8df13774d7284c3d5c2"115
+dependencies = [116
+ "include_dir",117
+ "itertools 0.10.5",118
+ "proc-macro-error2",119
+ "proc-macro2",120
+ "quote",121
+ "syn 2.0.101",122
+]123
+124
+[[package]]125
+name = "arc-swap"126
+version = "1.7.1"127
+source = "registry+https://github.com/rust-lang/crates.io-index"128
+checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"129
+130
+[[package]]131
+name = "archery"132
+version = "1.2.1"133
+source = "registry+https://github.com/rust-lang/crates.io-index"134
+checksum = "eae2ed21cd55021f05707a807a5fc85695dafb98832921f6cfa06db67ca5b869"135
+136
+[[package]]137
+name = "arrayref"138
+version = "0.3.8"139
+source = "registry+https://github.com/rust-lang/crates.io-index"140
+checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a"141
+142
+[[package]]143
+name = "arrayvec"144
+version = "0.7.6"145
+source = "registry+https://github.com/rust-lang/crates.io-index"146
+checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"147
+dependencies = [148
+ "serde",149
+]150
+151
+[[package]]152
+name = "as_variant"153
+version = "1.3.0"154
+source = "registry+https://github.com/rust-lang/crates.io-index"155
+checksum = "9dbc3a507a82b17ba0d98f6ce8fd6954ea0c8152e98009d36a40d8dcc8ce078a"156
+157
+[[package]]158
+name = "askama"159
+version = "0.14.0"160
+source = "registry+https://github.com/rust-lang/crates.io-index"161
+checksum = "f75363874b771be265f4ffe307ca705ef6f3baa19011c149da8674a87f1b75c4"162
+dependencies = [163
+ "askama_derive",164
+ "itoa",165
+ "percent-encoding",166
+ "serde",167
+ "serde_json",168
+]169
+170
+[[package]]171
+name = "askama_derive"172
+version = "0.14.0"173
+source = "registry+https://github.com/rust-lang/crates.io-index"174
+checksum = "129397200fe83088e8a68407a8e2b1f826cf0086b21ccdb866a722c8bcd3a94f"175
+dependencies = [176
+ "askama_parser",177
+ "basic-toml",178
+ "memchr",179
+ "proc-macro2",180
+ "quote",181
+ "rustc-hash",182
+ "serde",183
+ "serde_derive",184
+ "syn 2.0.101",185
+]186
+187
+[[package]]188
+name = "askama_parser"189
+version = "0.14.0"190
+source = "registry+https://github.com/rust-lang/crates.io-index"191
+checksum = "d6ab5630b3d5eaf232620167977f95eb51f3432fc76852328774afbd242d4358"192
+dependencies = [193
+ "memchr",194
+ "serde",195
+ "serde_derive",196
+ "winnow 0.7.13",197
+]198
+199
+[[package]]200
+name = "assert-json-diff"201
+version = "2.0.2"202
+source = "registry+https://github.com/rust-lang/crates.io-index"203
+checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12"204
+dependencies = [205
+ "serde",206
+ "serde_json",207
+]208
+209
+[[package]]210
+name = "assert_matches"211
+version = "1.5.0"212
+source = "registry+https://github.com/rust-lang/crates.io-index"213
+checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9"214
+215
+[[package]]216
+name = "assert_matches2"217
+version = "0.1.2"218
+source = "registry+https://github.com/rust-lang/crates.io-index"219
+checksum = "15832d94c458da98cac0ffa6eca52cc19c2a3c6c951058500a5ae8f01f0fdf56"220
+221
+[[package]]222
+name = "assign"223
+version = "1.1.1"224
+source = "registry+https://github.com/rust-lang/crates.io-index"225
+checksum = "5f093eed78becd229346bf859eec0aa4dd7ddde0757287b2b4107a1f09c80002"226
+227
+[[package]]228
+name = "async-channel"229
+version = "2.5.0"230
+source = "registry+https://github.com/rust-lang/crates.io-index"231
+checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2"232
+dependencies = [233
+ "concurrent-queue",234
+ "event-listener-strategy",235
+ "futures-core",236
+ "pin-project-lite",237
+]238
+239
+[[package]]240
+name = "async-compat"241
+version = "0.2.5"242
+source = "git+https://github.com/element-hq/async-compat?rev=5a27c8b290f1f1dcfc0c4ec22c464e38528aa591#5a27c8b290f1f1dcfc0c4ec22c464e38528aa591"243
+dependencies = [244
+ "futures-core",245
+ "futures-io",246
+ "once_cell",247
+ "pin-project-lite",248
+ "tokio",249
+]250
+251
+[[package]]252
+name = "async-compression"253
+version = "0.4.12"254
+source = "registry+https://github.com/rust-lang/crates.io-index"255
+checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa"256
+dependencies = [257
+ "flate2",258
+ "futures-core",259
+ "memchr",260
+ "pin-project-lite",261
+ "tokio",262
+]263
+264
+[[package]]265
+name = "async-once-cell"266
+version = "0.5.4"267
+source = "registry+https://github.com/rust-lang/crates.io-index"268
+checksum = "4288f83726785267c6f2ef073a3d83dc3f9b81464e9f99898240cced85fce35a"269
+270
+[[package]]271
+name = "async-rx"272
+version = "0.2.0"273
+source = "registry+https://github.com/rust-lang/crates.io-index"274
+checksum = "9053bf9b3852b83be29d9a29dd7dcf68273f81b10d55ae8beceedb4d23f41448"275
+dependencies = [276
+ "futures-core",277
+ "pin-project-lite",278
+]279
+280
+[[package]]281
+name = "async-stream"282
+version = "0.3.6"283
+source = "registry+https://github.com/rust-lang/crates.io-index"284
+checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476"285
+dependencies = [286
+ "async-stream-impl",287
+ "futures-core",288
+ "pin-project-lite",289
+]290
+291
+[[package]]292
+name = "async-stream-impl"293
+version = "0.3.6"294
+source = "registry+https://github.com/rust-lang/crates.io-index"295
+checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d"296
+dependencies = [297
+ "proc-macro2",298
+ "quote",299
+ "syn 2.0.101",300
+]301
+302
+[[package]]303
+name = "async-trait"304
+version = "0.1.89"305
+source = "registry+https://github.com/rust-lang/crates.io-index"306
+checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"307
+dependencies = [308
+ "proc-macro2",309
+ "quote",310
+ "syn 2.0.101",311
+]312
+313
+[[package]]314
+name = "async_cell"315
+version = "0.2.3"316
+source = "registry+https://github.com/rust-lang/crates.io-index"317
+checksum = "447ab28afbb345f5408b120702a44e5529ebf90b1796ec76e9528df8e288e6c2"318
+dependencies = [319
+ "loom",320
+]321
+322
+[[package]]323
+name = "atomic"324
+version = "0.6.1"325
+source = "registry+https://github.com/rust-lang/crates.io-index"326
+checksum = "a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340"327
+dependencies = [328
+ "bytemuck",329
+]330
+331
+[[package]]332
+name = "atomic-waker"333
+version = "1.1.2"334
+source = "registry+https://github.com/rust-lang/crates.io-index"335
+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"336
+337
+[[package]]338
+name = "autocfg"339
+version = "1.3.0"340
+source = "registry+https://github.com/rust-lang/crates.io-index"341
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"342
+343
+[[package]]344
+name = "aws-lc-rs"345
+version = "1.16.2"346
+source = "registry+https://github.com/rust-lang/crates.io-index"347
+checksum = "a054912289d18629dc78375ba2c3726a3afe3ff71b4edba9dedfca0e3446d1fc"348
+dependencies = [349
+ "aws-lc-sys",350
+ "zeroize",351
+]352
+353
+[[package]]354
+name = "aws-lc-sys"355
+version = "0.39.0"356
+source = "registry+https://github.com/rust-lang/crates.io-index"357
+checksum = "1fa7e52a4c5c547c741610a2c6f123f3881e409b714cd27e6798ef020c514f0a"358
+dependencies = [359
+ "cc",360
+ "cmake",361
+ "dunce",362
+ "fs_extra",363
+]364
+365
+[[package]]366
+name = "axum"367
+version = "0.8.4"368
+source = "registry+https://github.com/rust-lang/crates.io-index"369
+checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5"370
+dependencies = [371
+ "axum-core",372
+ "bytes",373
+ "form_urlencoded",374
+ "futures-util",375
+ "http",376
+ "http-body",377
+ "http-body-util",378
+ "hyper",379
+ "hyper-util",380
+ "itoa",381
+ "matchit",382
+ "memchr",383
+ "mime",384
+ "percent-encoding",385
+ "pin-project-lite",386
+ "rustversion",387
+ "serde",388
+ "serde_json",389
+ "serde_path_to_error",390
+ "serde_urlencoded",391
+ "sync_wrapper",392
+ "tokio",393
+ "tower",394
+ "tower-layer",395
+ "tower-service",396
+ "tracing",397
+]398
+399
+[[package]]400
+name = "axum-core"401
+version = "0.5.2"402
+source = "registry+https://github.com/rust-lang/crates.io-index"403
+checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6"404
+dependencies = [405
+ "bytes",406
+ "futures-core",407
+ "http",408
+ "http-body",409
+ "http-body-util",410
+ "mime",411
+ "pin-project-lite",412
+ "rustversion",413
+ "sync_wrapper",414
+ "tower-layer",415
+ "tower-service",416
+ "tracing",417
+]418
+419
+[[package]]420
+name = "backon"421
+version = "1.6.0"422
+source = "registry+https://github.com/rust-lang/crates.io-index"423
+checksum = "cffb0e931875b666fc4fcb20fee52e9bbd1ef836fd9e9e04ec21555f9f85f7ef"424
+dependencies = [425
+ "fastrand",426
+ "gloo-timers",427
+ "tokio",428
+]429
+430
+[[package]]431
+name = "backtrace"432
+version = "0.3.76"433
+source = "registry+https://github.com/rust-lang/crates.io-index"434
+checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6"435
+dependencies = [436
+ "addr2line",437
+ "cfg-if",438
+ "libc",439
+ "miniz_oxide",440
+ "object",441
+ "rustc-demangle",442
+ "windows-link 0.2.1",443
+]444
+445
+[[package]]446
+name = "base64"447
+version = "0.22.1"448
+source = "registry+https://github.com/rust-lang/crates.io-index"449
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"450
+451
+[[package]]452
+name = "base64ct"453
+version = "1.8.3"454
+source = "registry+https://github.com/rust-lang/crates.io-index"455
+checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06"456
+457
+[[package]]458
+name = "basic-toml"459
+version = "0.1.9"460
+source = "registry+https://github.com/rust-lang/crates.io-index"461
+checksum = "823388e228f614e9558c6804262db37960ec8821856535f5c3f59913140558f8"462
+dependencies = [463
+ "serde",464
+]465
+466
+[[package]]467
+name = "benchmarks"468
+version = "1.0.0"469
+dependencies = [470
+ "assert_matches",471
+ "codspeed-criterion-compat",472
+ "futures-util",473
+ "matrix-sdk",474
+ "matrix-sdk-base",475
+ "matrix-sdk-crypto",476
+ "matrix-sdk-sqlite",477
+ "matrix-sdk-test",478
+ "matrix-sdk-ui",479
+ "rand 0.10.1",480
+ "ruma",481
+ "serde",482
+ "serde_json",483
+ "tempfile",484
+ "tokio",485
+ "wiremock",486
+]487
+488
+[[package]]489
+name = "bit-set"490
+version = "0.5.3"491
+source = "registry+https://github.com/rust-lang/crates.io-index"492
+checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1"493
+dependencies = [494
+ "bit-vec",495
+]496
+497
+[[package]]498
+name = "bit-vec"499
+version = "0.6.3"500
+source = "registry+https://github.com/rust-lang/crates.io-index"501
+checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"502
+503
+[[package]]504
+name = "bitflags"505
+version = "1.3.2"506
+source = "registry+https://github.com/rust-lang/crates.io-index"507
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"508
+509
+[[package]]510
+name = "bitflags"511
+version = "2.10.0"512
+source = "registry+https://github.com/rust-lang/crates.io-index"513
+checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"514
+dependencies = [515
+ "serde_core",516
+]517
+518
+[[package]]519
+name = "bitmaps"520
+version = "3.2.1"521
+source = "registry+https://github.com/rust-lang/crates.io-index"522
+checksum = "a1d084b0137aaa901caf9f1e8b21daa6aa24d41cd806e111335541eff9683bd6"523
+524
+[[package]]525
+name = "bitpacking"526
+version = "0.9.3"527
+source = "registry+https://github.com/rust-lang/crates.io-index"528
+checksum = "96a7139abd3d9cebf8cd6f920a389cf3dc9576172e32f4563f188cae3c3eb019"529
+dependencies = [530
+ "crunchy",531
+]532
+533
+[[package]]534
+name = "blake3"535
+version = "1.8.2"536
+source = "registry+https://github.com/rust-lang/crates.io-index"537
+checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0"538
+dependencies = [539
+ "arrayref",540
+ "arrayvec",541
+ "cc",542
+ "cfg-if",543
+ "constant_time_eq",544
+]545
+546
+[[package]]547
+name = "block-buffer"548
+version = "0.10.4"549
+source = "registry+https://github.com/rust-lang/crates.io-index"550
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"551
+dependencies = [552
+ "generic-array",553
+]554
+555
+[[package]]556
+name = "block-padding"557
+version = "0.3.3"558
+source = "registry+https://github.com/rust-lang/crates.io-index"559
+checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93"560
+dependencies = [561
+ "generic-array",562
+]563
+564
+[[package]]565
+name = "bon"566
+version = "3.6.5"567
+source = "registry+https://github.com/rust-lang/crates.io-index"568
+checksum = "33d9ef19ae5263a138da9a86871eca537478ab0332a7770bac7e3f08b801f89f"569
+dependencies = [570
+ "bon-macros",571
+ "rustversion",572
+]573
+574
+[[package]]575
+name = "bon-macros"576
+version = "3.6.5"577
+source = "registry+https://github.com/rust-lang/crates.io-index"578
+checksum = "577ae008f2ca11ca7641bd44601002ee5ab49ef0af64846ce1ab6057218a5cc1"579
+dependencies = [580
+ "darling 0.21.1",581
+ "ident_case",582
+ "prettyplease",583
+ "proc-macro2",584
+ "quote",585
+ "rustversion",586
+ "syn 2.0.101",587
+]588
+589
+[[package]]590
+name = "bs58"591
+version = "0.5.1"592
+source = "registry+https://github.com/rust-lang/crates.io-index"593
+checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4"594
+dependencies = [595
+ "tinyvec",596
+]597
+598
+[[package]]599
+name = "bumpalo"600
+version = "3.16.0"601
+source = "registry+https://github.com/rust-lang/crates.io-index"602
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"603
+604
+[[package]]605
+name = "bytemuck"606
+version = "1.16.3"607
+source = "registry+https://github.com/rust-lang/crates.io-index"608
+checksum = "102087e286b4677862ea56cf8fc58bb2cdfa8725c40ffb80fe3a008eb7f2fc83"609
+610
+[[package]]611
+name = "byteorder"612
+version = "1.5.0"613
+source = "registry+https://github.com/rust-lang/crates.io-index"614
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"615
+616
+[[package]]617
+name = "byteorder-lite"618
+version = "0.1.0"619
+source = "registry+https://github.com/rust-lang/crates.io-index"620
+checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495"621
+622
+[[package]]623
+name = "bytes"624
+version = "1.11.1"625
+source = "registry+https://github.com/rust-lang/crates.io-index"626
+checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"627
+628
+[[package]]629
+name = "bytesize"630
+version = "2.3.0"631
+source = "registry+https://github.com/rust-lang/crates.io-index"632
+checksum = "00f4369ba008f82b968b1acbe31715ec37bd45236fa0726605a36cc3060ea256"633
+634
+[[package]]635
+name = "camino"636
+version = "1.2.2"637
+source = "registry+https://github.com/rust-lang/crates.io-index"638
+checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48"639
+dependencies = [640
+ "serde_core",641
+]642
+643
+[[package]]644
+name = "cargo-platform"645
+version = "0.1.9"646
+source = "registry+https://github.com/rust-lang/crates.io-index"647
+checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea"648
+dependencies = [649
+ "serde",650
+]651
+652
+[[package]]653
+name = "cargo_metadata"654
+version = "0.19.2"655
+source = "registry+https://github.com/rust-lang/crates.io-index"656
+checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba"657
+dependencies = [658
+ "camino",659
+ "cargo-platform",660
+ "semver",661
+ "serde",662
+ "serde_json",663
+ "thiserror 2.0.18",664
+]665
+666
+[[package]]667
+name = "cast"668
+version = "0.3.0"669
+source = "registry+https://github.com/rust-lang/crates.io-index"670
+checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"671
+672
+[[package]]673
+name = "castaway"674
+version = "0.2.3"675
+source = "registry+https://github.com/rust-lang/crates.io-index"676
+checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5"677
+dependencies = [678
+ "rustversion",679
+]680
+681
+[[package]]682
+name = "cbc"683
+version = "0.1.2"684
+source = "registry+https://github.com/rust-lang/crates.io-index"685
+checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6"686
+dependencies = [687
+ "cipher",688
+]689
+690
+[[package]]691
+name = "cc"692
+version = "1.2.52"693
+source = "registry+https://github.com/rust-lang/crates.io-index"694
+checksum = "cd4932aefd12402b36c60956a4fe0035421f544799057659ff86f923657aada3"695
+dependencies = [696
+ "find-msvc-tools",697
+ "jobserver",698
+ "libc",699
+ "shlex",700
+]701
+702
+[[package]]703
+name = "census"704
+version = "0.4.2"705
+source = "registry+https://github.com/rust-lang/crates.io-index"706
+checksum = "4f4c707c6a209cbe82d10abd08e1ea8995e9ea937d2550646e02798948992be0"707
+708
+[[package]]709
+name = "cesu8"710
+version = "1.1.0"711
+source = "registry+https://github.com/rust-lang/crates.io-index"712
+checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"713
+714
+[[package]]715
+name = "cfg-if"716
+version = "1.0.4"717
+source = "registry+https://github.com/rust-lang/crates.io-index"718
+checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"719
+720
+[[package]]721
+name = "cfg_aliases"722
+version = "0.2.1"723
+source = "registry+https://github.com/rust-lang/crates.io-index"724
+checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"725
+726
+[[package]]727
+name = "chacha20"728
+version = "0.9.1"729
+source = "registry+https://github.com/rust-lang/crates.io-index"730
+checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818"731
+dependencies = [732
+ "cfg-if",733
+ "cipher",734
+ "cpufeatures 0.2.12",735
+]736
+737
+[[package]]738
+name = "chacha20"739
+version = "0.10.0"740
+source = "registry+https://github.com/rust-lang/crates.io-index"741
+checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601"742
+dependencies = [743
+ "cfg-if",744
+ "cpufeatures 0.3.0",745
+ "rand_core 0.10.0",746
+]747
+748
+[[package]]749
+name = "chacha20poly1305"750
+version = "0.10.1"751
+source = "registry+https://github.com/rust-lang/crates.io-index"752
+checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35"753
+dependencies = [754
+ "aead",755
+ "chacha20 0.9.1",756
+ "cipher",757
+ "poly1305",758
+ "zeroize",759
+]760
+761
+[[package]]762
+name = "chrono"763
+version = "0.4.42"764
+source = "registry+https://github.com/rust-lang/crates.io-index"765
+checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"766
+dependencies = [767
+ "iana-time-zone",768
+ "js-sys",769
+ "num-traits",770
+ "serde",771
+ "wasm-bindgen",772
+ "windows-link 0.2.1",773
+]774
+775
+[[package]]776
+name = "ciborium"777
+version = "0.2.2"778
+source = "registry+https://github.com/rust-lang/crates.io-index"779
+checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"780
+dependencies = [781
+ "ciborium-io",782
+ "ciborium-ll",783
+ "serde",784
+]785
+786
+[[package]]787
+name = "ciborium-io"788
+version = "0.2.2"789
+source = "registry+https://github.com/rust-lang/crates.io-index"790
+checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"791
+792
+[[package]]793
+name = "ciborium-ll"794
+version = "0.2.2"795
+source = "registry+https://github.com/rust-lang/crates.io-index"796
+checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"797
+dependencies = [798
+ "ciborium-io",799
+ "half",800
+]801
+802
+[[package]]803
+name = "cipher"804
+version = "0.4.4"805
+source = "registry+https://github.com/rust-lang/crates.io-index"806
+checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"807
+dependencies = [808
+ "crypto-common",809
+ "inout",810
+ "zeroize",811
+]812
+813
+[[package]]814
+name = "clap"815
+version = "4.5.53"816
+source = "registry+https://github.com/rust-lang/crates.io-index"817
+checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8"818
+dependencies = [819
+ "clap_builder",820
+ "clap_derive",821
+]822
+823
+[[package]]824
+name = "clap_builder"825
+version = "4.5.53"826
+source = "registry+https://github.com/rust-lang/crates.io-index"827
+checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00"828
+dependencies = [829
+ "anstyle",830
+ "clap_lex",831
+ "strsim",832
+]833
+834
+[[package]]835
+name = "clap_derive"836
+version = "4.5.49"837
+source = "registry+https://github.com/rust-lang/crates.io-index"838
+checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671"839
+dependencies = [840
+ "heck",841
+ "proc-macro2",842
+ "quote",843
+ "syn 2.0.101",844
+]845
+846
+[[package]]847
+name = "clap_lex"848
+version = "0.7.5"849
+source = "registry+https://github.com/rust-lang/crates.io-index"850
+checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675"851
+852
+[[package]]853
+name = "cmake"854
+version = "0.1.57"855
+source = "registry+https://github.com/rust-lang/crates.io-index"856
+checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d"857
+dependencies = [858
+ "cc",859
+]860
+861
+[[package]]862
+name = "codspeed"863
+version = "4.2.1"864
+source = "registry+https://github.com/rust-lang/crates.io-index"865
+checksum = "5f0d98d97fd75ca4489a1a0997820a6521531085e7c8a98941bd0e1264d567dd"866
+dependencies = [867
+ "anyhow",868
+ "cc",869
+ "colored",870
+ "getrandom 0.2.15",871
+ "glob",872
+ "libc",873
+ "nix 0.30.1",874
+ "serde",875
+ "serde_json",876
+ "statrs",877
+]878
+879
+[[package]]880
+name = "codspeed-criterion-compat"881
+version = "4.2.1"882
+source = "registry+https://github.com/rust-lang/crates.io-index"883
+checksum = "d16fe2db207123f7b3a3b5cfff0c22f99469f7534145f3573f57f4c8a5653c2c"884
+dependencies = [885
+ "clap",886
+ "codspeed",887
+ "codspeed-criterion-compat-walltime",888
+ "colored",889
+ "futures",890
+ "regex",891
+ "tokio",892
+]893
+894
+[[package]]895
+name = "codspeed-criterion-compat-walltime"896
+version = "4.2.1"897
+source = "registry+https://github.com/rust-lang/crates.io-index"898
+checksum = "b035c7f9846b143aeabb3833f5b584023eb97b43ecbff3d997db74c4372df2bd"899
+dependencies = [900
+ "anes",901
+ "cast",902
+ "ciborium",903
+ "clap",904
+ "codspeed",905
+ "criterion-plot",906
+ "futures",907
+ "is-terminal",908
+ "itertools 0.10.5",909
+ "num-traits",910
+ "once_cell",911
+ "oorandom",912
+ "plotters",913
+ "rayon",914
+ "regex",915
+ "serde",916
+ "serde_derive",917
+ "serde_json",918
+ "tinytemplate",919
+ "tokio",920
+ "walkdir",921
+]922
+923
+[[package]]924
+name = "color-eyre"925
+version = "0.6.5"926
+source = "registry+https://github.com/rust-lang/crates.io-index"927
+checksum = "e5920befb47832a6d61ee3a3a846565cfa39b331331e68a3b1d1116630f2f26d"928
+dependencies = [929
+ "backtrace",930
+ "color-spantrace",931
+ "eyre",932
+ "indenter",933
+ "once_cell",934
+ "owo-colors",935
+ "tracing-error",936
+]937
+938
+[[package]]939
+name = "color-spantrace"940
+version = "0.3.0"941
+source = "registry+https://github.com/rust-lang/crates.io-index"942
+checksum = "b8b88ea9df13354b55bc7234ebcce36e6ef896aca2e42a15de9e10edce01b427"943
+dependencies = [944
+ "once_cell",945
+ "owo-colors",946
+ "tracing-core",947
+ "tracing-error",948
+]949
+950
+[[package]]951
+name = "colored"952
+version = "2.2.0"953
+source = "registry+https://github.com/rust-lang/crates.io-index"954
+checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c"955
+dependencies = [956
+ "lazy_static",957
+ "windows-sys 0.59.0",958
+]959
+960
+[[package]]961
+name = "combine"962
+version = "4.6.7"963
+source = "registry+https://github.com/rust-lang/crates.io-index"964
+checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd"965
+dependencies = [966
+ "bytes",967
+ "memchr",968
+]969
+970
+[[package]]971
+name = "compact_str"972
+version = "0.9.0"973
+source = "registry+https://github.com/rust-lang/crates.io-index"974
+checksum = "3fdb1325a1cece981e8a296ab8f0f9b63ae357bd0784a9faaf548cc7b480707a"975
+dependencies = [976
+ "castaway",977
+ "cfg-if",978
+ "itoa",979
+ "rustversion",980
+ "ryu",981
+ "static_assertions",982
+]983
+984
+[[package]]985
+name = "concurrent-queue"986
+version = "2.5.0"987
+source = "registry+https://github.com/rust-lang/crates.io-index"988
+checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"989
+dependencies = [990
+ "crossbeam-utils",991
+]992
+993
+[[package]]994
+name = "console"995
+version = "0.15.8"996
+source = "registry+https://github.com/rust-lang/crates.io-index"997
+checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb"998
+dependencies = [999
+ "encode_unicode",1000
+ "lazy_static",1001
+ "libc",1002
+ "windows-sys 0.52.0",1003
+]1004
+1005
+[[package]]1006
+name = "console_error_panic_hook"1007
+version = "0.1.7"1008
+source = "registry+https://github.com/rust-lang/crates.io-index"1009
+checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"1010
+dependencies = [1011
+ "cfg-if",1012
+ "wasm-bindgen",1013
+]1014
+1015
+[[package]]1016
+name = "const-oid"1017
+version = "0.9.6"1018
+source = "registry+https://github.com/rust-lang/crates.io-index"1019
+checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"1020
+1021
+[[package]]1022
+name = "const_panic"1023
+version = "0.2.15"1024
+source = "git+https://github.com/jplatte/const_panic?rev=e0b317a9a7bde2d48a7d15b6a60d70e4a41d3b5f#e0b317a9a7bde2d48a7d15b6a60d70e4a41d3b5f"1025
+dependencies = [1026
+ "typewit",1027
+]1028
+1029
+[[package]]1030
+name = "constant_time_eq"1031
+version = "0.3.1"1032
+source = "registry+https://github.com/rust-lang/crates.io-index"1033
+checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6"1034
+1035
+[[package]]1036
+name = "convert_case"1037
+version = "0.7.1"1038
+source = "registry+https://github.com/rust-lang/crates.io-index"1039
+checksum = "bb402b8d4c85569410425650ce3eddc7d698ed96d39a73f941b08fb63082f1e7"1040
+dependencies = [1041
+ "unicode-segmentation",1042
+]1043
+1044
+[[package]]1045
+name = "core-foundation"1046
+version = "0.10.1"1047
+source = "registry+https://github.com/rust-lang/crates.io-index"1048
+checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"1049
+dependencies = [1050
+ "core-foundation-sys",1051
+ "libc",1052
+]1053
+1054
+[[package]]1055
+name = "core-foundation-sys"1056
+version = "0.8.6"1057
+source = "registry+https://github.com/rust-lang/crates.io-index"1058
+checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"1059
+1060
+[[package]]1061
+name = "cpufeatures"1062
+version = "0.2.12"1063
+source = "registry+https://github.com/rust-lang/crates.io-index"1064
+checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"1065
+dependencies = [1066
+ "libc",1067
+]1068
+1069
+[[package]]1070
+name = "cpufeatures"1071
+version = "0.3.0"1072
+source = "registry+https://github.com/rust-lang/crates.io-index"1073
+checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201"1074
+dependencies = [1075
+ "libc",1076
+]1077
+1078
+[[package]]1079
+name = "crc32fast"1080
+version = "1.4.2"1081
+source = "registry+https://github.com/rust-lang/crates.io-index"1082
+checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"1083
+dependencies = [1084
+ "cfg-if",1085
+]1086
+1087
+[[package]]1088
+name = "criterion-plot"1089
+version = "0.5.0"1090
+source = "registry+https://github.com/rust-lang/crates.io-index"1091
+checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"1092
+dependencies = [1093
+ "cast",1094
+ "itertools 0.10.5",1095
+]1096
+1097
+[[package]]1098
+name = "crossbeam-channel"1099
+version = "0.5.15"1100
+source = "registry+https://github.com/rust-lang/crates.io-index"1101
+checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2"1102
+dependencies = [1103
+ "crossbeam-utils",1104
+]1105
+1106
+[[package]]1107
+name = "crossbeam-deque"1108
+version = "0.8.5"1109
+source = "registry+https://github.com/rust-lang/crates.io-index"1110
+checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"1111
+dependencies = [1112
+ "crossbeam-epoch",1113
+ "crossbeam-utils",1114
+]1115
+1116
+[[package]]1117
+name = "crossbeam-epoch"1118
+version = "0.9.18"1119
+source = "registry+https://github.com/rust-lang/crates.io-index"1120
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"1121
+dependencies = [1122
+ "crossbeam-utils",1123
+]1124
+1125
+[[package]]1126
+name = "crossbeam-utils"1127
+version = "0.8.20"1128
+source = "registry+https://github.com/rust-lang/crates.io-index"1129
+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"1130
+1131
+[[package]]1132
+name = "crossterm"1133
+version = "0.29.0"1134
+source = "registry+https://github.com/rust-lang/crates.io-index"1135
+checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b"1136
+dependencies = [1137
+ "bitflags 2.10.0",1138
+ "crossterm_winapi",1139
+ "derive_more 2.0.1",1140
+ "document-features",1141
+ "mio",1142
+ "parking_lot",1143
+ "rustix",1144
+ "signal-hook",1145
+ "signal-hook-mio",1146
+ "winapi",1147
+]1148
+1149
+[[package]]1150
+name = "crossterm_winapi"1151
+version = "0.9.1"1152
+source = "registry+https://github.com/rust-lang/crates.io-index"1153
+checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"1154
+dependencies = [1155
+ "winapi",1156
+]1157
+1158
+[[package]]1159
+name = "crunchy"1160
+version = "0.2.2"1161
+source = "registry+https://github.com/rust-lang/crates.io-index"1162
+checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"1163
+1164
+[[package]]1165
+name = "crypto-common"1166
+version = "0.1.6"1167
+source = "registry+https://github.com/rust-lang/crates.io-index"1168
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"1169
+dependencies = [1170
+ "generic-array",1171
+ "rand_core 0.6.4",1172
+ "typenum",1173
+]1174
+1175
+[[package]]1176
+name = "csscolorparser"1177
+version = "0.6.2"1178
+source = "registry+https://github.com/rust-lang/crates.io-index"1179
+checksum = "eb2a7d3066da2de787b7f032c736763eb7ae5d355f81a68bab2675a96008b0bf"1180
+dependencies = [1181
+ "lab",1182
+ "phf 0.11.3",1183
+]1184
+1185
+[[package]]1186
+name = "ctor"1187
+version = "0.2.9"1188
+source = "registry+https://github.com/rust-lang/crates.io-index"1189
+checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501"1190
+dependencies = [1191
+ "quote",1192
+ "syn 2.0.101",1193
+]1194
+1195
+[[package]]1196
+name = "ctr"1197
+version = "0.9.2"1198
+source = "registry+https://github.com/rust-lang/crates.io-index"1199
+checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835"1200
+dependencies = [1201
+ "cipher",1202
+]1203
+1204
+[[package]]1205
+name = "curve25519-dalek"1206
+version = "4.1.3"1207
+source = "registry+https://github.com/rust-lang/crates.io-index"1208
+checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be"1209
+dependencies = [1210
+ "cfg-if",1211
+ "cpufeatures 0.2.12",1212
+ "curve25519-dalek-derive",1213
+ "digest",1214
+ "fiat-crypto",1215
+ "rustc_version",1216
+ "serde",1217
+ "subtle",1218
+ "zeroize",1219
+]1220
+1221
+[[package]]1222
+name = "curve25519-dalek-derive"1223
+version = "0.1.1"1224
+source = "registry+https://github.com/rust-lang/crates.io-index"1225
+checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"1226
+dependencies = [1227
+ "proc-macro2",1228
+ "quote",1229
+ "syn 2.0.101",1230
+]1231
+1232
+[[package]]1233
+name = "darling"1234
+version = "0.20.10"1235
+source = "registry+https://github.com/rust-lang/crates.io-index"1236
+checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"1237
+dependencies = [1238
+ "darling_core 0.20.10",1239
+ "darling_macro 0.20.10",1240
+]1241
+1242
+[[package]]1243
+name = "darling"1244
+version = "0.21.1"1245
+source = "registry+https://github.com/rust-lang/crates.io-index"1246
+checksum = "d6b136475da5ef7b6ac596c0e956e37bad51b85b987ff3d5e230e964936736b2"1247
+dependencies = [1248
+ "darling_core 0.21.1",1249
+ "darling_macro 0.21.1",1250
+]1251
+1252
+[[package]]1253
+name = "darling_core"1254
+version = "0.20.10"1255
+source = "registry+https://github.com/rust-lang/crates.io-index"1256
+checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5"1257
+dependencies = [1258
+ "fnv",1259
+ "ident_case",1260
+ "proc-macro2",1261
+ "quote",1262
+ "strsim",1263
+ "syn 2.0.101",1264
+]1265
+1266
+[[package]]1267
+name = "darling_core"1268
+version = "0.21.1"1269
+source = "registry+https://github.com/rust-lang/crates.io-index"1270
+checksum = "b44ad32f92b75fb438b04b68547e521a548be8acc339a6dacc4a7121488f53e6"1271
+dependencies = [1272
+ "fnv",1273
+ "ident_case",1274
+ "proc-macro2",1275
+ "quote",1276
+ "strsim",1277
+ "syn 2.0.101",1278
+]1279
+1280
+[[package]]1281
+name = "darling_macro"1282
+version = "0.20.10"1283
+source = "registry+https://github.com/rust-lang/crates.io-index"1284
+checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"1285
+dependencies = [1286
+ "darling_core 0.20.10",1287
+ "quote",1288
+ "syn 2.0.101",1289
+]1290
+1291
+[[package]]1292
+name = "darling_macro"1293
+version = "0.21.1"1294
+source = "registry+https://github.com/rust-lang/crates.io-index"1295
+checksum = "2b5be8a7a562d315a5b92a630c30cec6bcf663e6673f00fbb69cca66a6f521b9"1296
+dependencies = [1297
+ "darling_core 0.21.1",1298
+ "quote",1299
+ "syn 2.0.101",1300
+]1301
+1302
+[[package]]1303
+name = "datasketches"1304
+version = "0.2.0"1305
+source = "registry+https://github.com/rust-lang/crates.io-index"1306
+checksum = "c286de4e81ea2590afc24d754e0f83810c566f50a1388fa75ebd57928c0d9745"1307
+1308
+[[package]]1309
+name = "date_header"1310
+version = "1.0.5"1311
+source = "registry+https://github.com/rust-lang/crates.io-index"1312
+checksum = "0c03c416ed1a30fbb027ef484ba6ab6f80e1eada675e1a2b92fd673c045a1f1d"1313
+1314
+[[package]]1315
+name = "deadpool"1316
+version = "0.12.3"1317
+source = "registry+https://github.com/rust-lang/crates.io-index"1318
+checksum = "0be2b1d1d6ec8d846f05e137292d0b89133caf95ef33695424c09568bdd39b1b"1319
+dependencies = [1320
+ "deadpool-runtime 0.1.4",1321
+ "lazy_static",1322
+ "num_cpus",1323
+ "tokio",1324
+]1325
+1326
+[[package]]1327
+name = "deadpool"1328
+version = "0.13.0"1329
+source = "registry+https://github.com/rust-lang/crates.io-index"1330
+checksum = "883466cb8db62725aee5f4a6011e8a5d42912b42632df32aad57fc91127c6e04"1331
+dependencies = [1332
+ "deadpool-runtime 0.3.1",1333
+ "num_cpus",1334
+ "tokio",1335
+]1336
+1337
+[[package]]1338
+name = "deadpool-runtime"1339
+version = "0.1.4"1340
+source = "registry+https://github.com/rust-lang/crates.io-index"1341
+checksum = "092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b"1342
+1343
+[[package]]1344
+name = "deadpool-runtime"1345
+version = "0.3.1"1346
+source = "registry+https://github.com/rust-lang/crates.io-index"1347
+checksum = "2657f61fb1dd8bf37a8d51093cc7cee4e77125b22f7753f49b289f831bec2bae"1348
+dependencies = [1349
+ "tokio",1350
+]1351
+1352
+[[package]]1353
+name = "deadpool-sync"1354
+version = "0.2.0"1355
+source = "registry+https://github.com/rust-lang/crates.io-index"1356
+checksum = "e385cc95d3d582c328b36d1ff90feac061102b001894b555e6b465a2e0eaabbf"1357
+dependencies = [1358
+ "deadpool-runtime 0.3.1",1359
+]1360
+1361
+[[package]]1362
+name = "debugid"1363
+version = "0.8.0"1364
+source = "registry+https://github.com/rust-lang/crates.io-index"1365
+checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d"1366
+dependencies = [1367
+ "serde",1368
+ "uuid",1369
+]1370
+1371
+[[package]]1372
+name = "decancer"1373
+version = "3.3.3"1374
+source = "registry+https://github.com/rust-lang/crates.io-index"1375
+checksum = "a9244323129647178bf41ac861a2cdb9d9c81b9b09d3d0d1de9cd302b33b8a1d"1376
+1377
+[[package]]1378
+name = "delegate-display"1379
+version = "3.0.0"1380
+source = "registry+https://github.com/rust-lang/crates.io-index"1381
+checksum = "9926686c832494164c33a36bf65118f4bd6e704000b58c94681bf62e9ad67a74"1382
+dependencies = [1383
+ "impartial-ord",1384
+ "itoa",1385
+ "macroific",1386
+ "proc-macro2",1387
+ "quote",1388
+ "syn 2.0.101",1389
+]1390
+1391
+[[package]]1392
+name = "deltae"1393
+version = "0.3.2"1394
+source = "registry+https://github.com/rust-lang/crates.io-index"1395
+checksum = "5729f5117e208430e437df2f4843f5e5952997175992d1414f94c57d61e270b4"1396
+1397
+[[package]]1398
+name = "der"1399
+version = "0.7.9"1400
+source = "registry+https://github.com/rust-lang/crates.io-index"1401
+checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0"1402
+dependencies = [1403
+ "const-oid",1404
+ "zeroize",1405
+]1406
+1407
+[[package]]1408
+name = "deranged"1409
+version = "0.5.3"1410
+source = "registry+https://github.com/rust-lang/crates.io-index"1411
+checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc"1412
+dependencies = [1413
+ "powerfmt",1414
+ "serde",1415
+]1416
+1417
+[[package]]1418
+name = "derivative"1419
+version = "2.2.0"1420
+source = "registry+https://github.com/rust-lang/crates.io-index"1421
+checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"1422
+dependencies = [1423
+ "proc-macro2",1424
+ "quote",1425
+ "syn 1.0.109",1426
+]1427
+1428
+[[package]]1429
+name = "derive_builder"1430
+version = "0.20.2"1431
+source = "registry+https://github.com/rust-lang/crates.io-index"1432
+checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947"1433
+dependencies = [1434
+ "derive_builder_macro",1435
+]1436
+1437
+[[package]]1438
+name = "derive_builder_core"1439
+version = "0.20.2"1440
+source = "registry+https://github.com/rust-lang/crates.io-index"1441
+checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8"1442
+dependencies = [1443
+ "darling 0.20.10",1444
+ "proc-macro2",1445
+ "quote",1446
+ "syn 2.0.101",1447
+]1448
+1449
+[[package]]1450
+name = "derive_builder_macro"1451
+version = "0.20.2"1452
+source = "registry+https://github.com/rust-lang/crates.io-index"1453
+checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c"1454
+dependencies = [1455
+ "derive_builder_core",1456
+ "syn 2.0.101",1457
+]1458
+1459
+[[package]]1460
+name = "derive_more"1461
+version = "1.0.0"1462
+source = "registry+https://github.com/rust-lang/crates.io-index"1463
+checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05"1464
+dependencies = [1465
+ "derive_more-impl 1.0.0",1466
+]1467
+1468
+[[package]]1469
+name = "derive_more"1470
+version = "2.0.1"1471
+source = "registry+https://github.com/rust-lang/crates.io-index"1472
+checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678"1473
+dependencies = [1474
+ "derive_more-impl 2.0.1",1475
+]1476
+1477
+[[package]]1478
+name = "derive_more-impl"1479
+version = "1.0.0"1480
+source = "registry+https://github.com/rust-lang/crates.io-index"1481
+checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22"1482
+dependencies = [1483
+ "proc-macro2",1484
+ "quote",1485
+ "syn 2.0.101",1486
+]1487
+1488
+[[package]]1489
+name = "derive_more-impl"1490
+version = "2.0.1"1491
+source = "registry+https://github.com/rust-lang/crates.io-index"1492
+checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3"1493
+dependencies = [1494
+ "convert_case",1495
+ "proc-macro2",1496
+ "quote",1497
+ "syn 2.0.101",1498
+ "unicode-xid",1499
+]1500
+1501
+[[package]]1502
+name = "difflib"1503
+version = "0.4.0"1504
+source = "registry+https://github.com/rust-lang/crates.io-index"1505
+checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"1506
+1507
+[[package]]1508
+name = "digest"1509
+version = "0.10.7"1510
+source = "registry+https://github.com/rust-lang/crates.io-index"1511
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"1512
+dependencies = [1513
+ "block-buffer",1514
+ "crypto-common",1515
+ "subtle",1516
+]1517
+1518
+[[package]]1519
+name = "dirs"1520
+version = "6.0.0"1521
+source = "registry+https://github.com/rust-lang/crates.io-index"1522
+checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"1523
+dependencies = [1524
+ "dirs-sys",1525
+]1526
+1527
+[[package]]1528
+name = "dirs-sys"1529
+version = "0.5.0"1530
+source = "registry+https://github.com/rust-lang/crates.io-index"1531
+checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"1532
+dependencies = [1533
+ "libc",1534
+ "option-ext",1535
+ "redox_users",1536
+ "windows-sys 0.61.2",1537
+]1538
+1539
+[[package]]1540
+name = "displaydoc"1541
+version = "0.2.5"1542
+source = "registry+https://github.com/rust-lang/crates.io-index"1543
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"1544
+dependencies = [1545
+ "proc-macro2",1546
+ "quote",1547
+ "syn 2.0.101",1548
+]1549
+1550
+[[package]]1551
+name = "document-features"1552
+version = "0.2.12"1553
+source = "registry+https://github.com/rust-lang/crates.io-index"1554
+checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"1555
+dependencies = [1556
+ "litrs",1557
+]1558
+1559
+[[package]]1560
+name = "downcast-rs"1561
+version = "2.0.1"1562
+source = "registry+https://github.com/rust-lang/crates.io-index"1563
+checksum = "ea8a8b81cacc08888170eef4d13b775126db426d0b348bee9d18c2c1eaf123cf"1564
+1565
+[[package]]1566
+name = "dunce"1567
+version = "1.0.5"1568
+source = "registry+https://github.com/rust-lang/crates.io-index"1569
+checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"1570
+1571
+[[package]]1572
+name = "ed25519"1573
+version = "2.2.3"1574
+source = "registry+https://github.com/rust-lang/crates.io-index"1575
+checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53"1576
+dependencies = [1577
+ "pkcs8",1578
+ "serde",1579
+ "signature",1580
+]1581
+1582
+[[package]]1583
+name = "ed25519-dalek"1584
+version = "2.1.1"1585
+source = "registry+https://github.com/rust-lang/crates.io-index"1586
+checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871"1587
+dependencies = [1588
+ "curve25519-dalek",1589
+ "ed25519",1590
+ "rand_core 0.6.4",1591
+ "serde",1592
+ "sha2",1593
+ "subtle",1594
+ "zeroize",1595
+]1596
+1597
+[[package]]1598
+name = "either"1599
+version = "1.13.0"1600
+source = "registry+https://github.com/rust-lang/crates.io-index"1601
+checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"1602
+1603
+[[package]]1604
+name = "emojis"1605
+version = "0.8.0"1606
+source = "registry+https://github.com/rust-lang/crates.io-index"1607
+checksum = "50c1c1870b766fc398e5f0526498d09c94b6de15be5fd769a28bbc804fb1b05d"1608
+dependencies = [1609
+ "phf 0.13.1",1610
+]1611
+1612
+[[package]]1613
+name = "encode_unicode"1614
+version = "0.3.6"1615
+source = "registry+https://github.com/rust-lang/crates.io-index"1616
+checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"1617
+1618
+[[package]]1619
+name = "equivalent"1620
+version = "1.0.1"1621
+source = "registry+https://github.com/rust-lang/crates.io-index"1622
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"1623
+1624
+[[package]]1625
+name = "erased-serde"1626
+version = "0.4.10"1627
+source = "registry+https://github.com/rust-lang/crates.io-index"1628
+checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec"1629
+dependencies = [1630
+ "serde",1631
+ "serde_core",1632
+ "typeid",1633
+]1634
+1635
+[[package]]1636
+name = "errno"1637
+version = "0.3.13"1638
+source = "registry+https://github.com/rust-lang/crates.io-index"1639
+checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad"1640
+dependencies = [1641
+ "libc",1642
+ "windows-sys 0.60.2",1643
+]1644
+1645
+[[package]]1646
+name = "euclid"1647
+version = "0.22.14"1648
+source = "registry+https://github.com/rust-lang/crates.io-index"1649
+checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06"1650
+dependencies = [1651
+ "num-traits",1652
+]1653
+1654
+[[package]]1655
+name = "event-listener"1656
+version = "5.4.1"1657
+source = "registry+https://github.com/rust-lang/crates.io-index"1658
+checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"1659
+dependencies = [1660
+ "concurrent-queue",1661
+ "parking",1662
+ "pin-project-lite",1663
+]1664
+1665
+[[package]]1666
+name = "event-listener-strategy"1667
+version = "0.5.4"1668
+source = "registry+https://github.com/rust-lang/crates.io-index"1669
+checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93"1670
+dependencies = [1671
+ "event-listener",1672
+ "pin-project-lite",1673
+]1674
+1675
+[[package]]1676
+name = "example-autojoin"1677
+version = "0.1.0"1678
+dependencies = [1679
+ "anyhow",1680
+ "matrix-sdk",1681
+ "tokio",1682
+ "tracing-subscriber",1683
+]1684
+1685
+[[package]]1686
+name = "example-backups"1687
+version = "0.1.0"1688
+dependencies = [1689
+ "anyhow",1690
+ "clap",1691
+ "futures-util",1692
+ "matrix-sdk",1693
+ "tokio",1694
+ "tracing-subscriber",1695
+ "url",1696
+]1697
+1698
+[[package]]1699
+name = "example-command-bot"1700
+version = "0.1.0"1701
+dependencies = [1702
+ "anyhow",1703
+ "matrix-sdk",1704
+ "tokio",1705
+ "tracing-subscriber",1706
+]1707
+1708
+[[package]]1709
+name = "example-cross-signing-bootstrap"1710
+version = "0.1.0"1711
+dependencies = [1712
+ "anyhow",1713
+ "matrix-sdk",1714
+ "tokio",1715
+ "tracing-subscriber",1716
+ "url",1717
+]1718
+1719
+[[package]]1720
+name = "example-custom-events"1721
+version = "0.1.0"1722
+dependencies = [1723
+ "anyhow",1724
+ "matrix-sdk",1725
+ "serde",1726
+ "tokio",1727
+ "tracing-subscriber",1728
+]1729
+1730
+[[package]]1731
+name = "example-emoji-verification"1732
+version = "0.1.0"1733
+dependencies = [1734
+ "anyhow",1735
+ "clap",1736
+ "futures-util",1737
+ "matrix-sdk",1738
+ "tokio",1739
+ "tracing-subscriber",1740
+ "url",1741
+]1742
+1743
+[[package]]1744
+name = "example-get-profiles"1745
+version = "0.1.0"1746
+dependencies = [1747
+ "anyhow",1748
+ "matrix-sdk",1749
+ "tokio",1750
+ "tracing-subscriber",1751
+ "url",1752
+]1753
+1754
+[[package]]1755
+name = "example-getting-started"1756
+version = "0.1.0"1757
+dependencies = [1758
+ "anyhow",1759
+ "matrix-sdk",1760
+ "tokio",1761
+ "tracing-subscriber",1762
+]1763
+1764
+[[package]]1765
+name = "example-image-bot"1766
+version = "0.1.0"1767
+dependencies = [1768
+ "anyhow",1769
+ "matrix-sdk",1770
+ "mime",1771
+ "tokio",1772
+ "tracing-subscriber",1773
+ "url",1774
+]1775
+1776
+[[package]]1777
+name = "example-login"1778
+version = "0.1.0"1779
+dependencies = [1780
+ "anyhow",1781
+ "matrix-sdk",1782
+ "tokio",1783
+ "tracing-subscriber",1784
+ "url",1785
+]1786
+1787
+[[package]]1788
+name = "example-oauth-cli"1789
+version = "0.1.0"1790
+dependencies = [1791
+ "anyhow",1792
+ "dirs",1793
+ "futures-util",1794
+ "matrix-sdk",1795
+ "matrix-sdk-ui",1796
+ "rand 0.10.1",1797
+ "serde",1798
+ "serde_json",1799
+ "tokio",1800
+ "tracing-subscriber",1801
+ "url",1802
+]1803
+1804
+[[package]]1805
+name = "example-persist-session"1806
+version = "0.1.0"1807
+dependencies = [1808
+ "anyhow",1809
+ "dirs",1810
+ "matrix-sdk",1811
+ "rand 0.10.1",1812
+ "serde",1813
+ "serde_json",1814
+ "tokio",1815
+ "tracing-subscriber",1816
+]1817
+1818
+[[package]]1819
+name = "example-qr-login"1820
+version = "0.1.0"1821
+dependencies = [1822
+ "anyhow",1823
+ "clap",1824
+ "futures-util",1825
+ "matrix-sdk",1826
+ "tokio",1827
+ "tracing-subscriber",1828
+ "url",1829
+]1830
+1831
+[[package]]1832
+name = "example-secret-storage"1833
+version = "0.1.0"1834
+dependencies = [1835
+ "anyhow",1836
+ "clap",1837
+ "matrix-sdk",1838
+ "tokio",1839
+ "tracing-subscriber",1840
+ "url",1841
+]1842
+1843
+[[package]]1844
+name = "example-timeline"1845
+version = "0.1.0"1846
+dependencies = [1847
+ "anyhow",1848
+ "clap",1849
+ "futures-util",1850
+ "matrix-sdk",1851
+ "matrix-sdk-ui",1852
+ "tokio",1853
+ "tracing-subscriber",1854
+ "url",1855
+]1856
+1857
+[[package]]1858
+name = "extension-trait"1859
+version = "1.0.2"1860
+source = "registry+https://github.com/rust-lang/crates.io-index"1861
+checksum = "dd65f1b59dd22d680c7a626cc4a000c1e03d241c51c3e034d2bc9f1e90734f9b"1862
+dependencies = [1863
+ "proc-macro2",1864
+ "quote",1865
+ "syn 2.0.101",1866
+]1867
+1868
+[[package]]1869
+name = "eyeball"1870
+version = "0.8.8"1871
+source = "registry+https://github.com/rust-lang/crates.io-index"1872
+checksum = "d93bd0ebf93d61d6332d3c09a96e97975968a44e19a64c947bde06e6baff383f"1873
+dependencies = [1874
+ "futures-core",1875
+ "readlock",1876
+ "readlock-tokio",1877
+ "tokio",1878
+ "tokio-util",1879
+ "tracing",1880
+]1881
+1882
+[[package]]1883
+name = "eyeball-im"1884
+version = "0.8.0"1885
+source = "registry+https://github.com/rust-lang/crates.io-index"1886
+checksum = "4790c03df183c2b46665c1a58118c04fd3e3976ec2fe16a0aa00e00c9eea7754"1887
+dependencies = [1888
+ "futures-core",1889
+ "imbl",1890
+ "tokio",1891
+ "tracing",1892
+]1893
+1894
+[[package]]1895
+name = "eyeball-im-util"1896
+version = "0.10.0"1897
+source = "registry+https://github.com/rust-lang/crates.io-index"1898
+checksum = "809fa2e8e59c25a41f5b2440aa937f1e84df6ae48b707e65f69ce259b1c44bda"1899
+dependencies = [1900
+ "arrayvec",1901
+ "eyeball-im",1902
+ "futures-core",1903
+ "imbl",1904
+ "pin-project-lite",1905
+ "smallvec",1906
+]1907
+1908
+[[package]]1909
+name = "eyre"1910
+version = "0.6.12"1911
+source = "registry+https://github.com/rust-lang/crates.io-index"1912
+checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec"1913
+dependencies = [1914
+ "indenter",1915
+ "once_cell",1916
+]1917
+1918
+[[package]]1919
+name = "fallible-iterator"1920
+version = "0.3.0"1921
+source = "registry+https://github.com/rust-lang/crates.io-index"1922
+checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649"1923
+1924
+[[package]]1925
+name = "fallible-streaming-iterator"1926
+version = "0.1.9"1927
+source = "registry+https://github.com/rust-lang/crates.io-index"1928
+checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"1929
+1930
+[[package]]1931
+name = "fancy-regex"1932
+version = "0.11.0"1933
+source = "registry+https://github.com/rust-lang/crates.io-index"1934
+checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2"1935
+dependencies = [1936
+ "bit-set",1937
+ "regex",1938
+]1939
+1940
+[[package]]1941
+name = "fancy_constructor"1942
+version = "2.1.0"1943
+source = "registry+https://github.com/rust-lang/crates.io-index"1944
+checksum = "28a27643a5d05f3a22f5afd6e0d0e6e354f92d37907006f97b84b9cb79082198"1945
+dependencies = [1946
+ "macroific",1947
+ "proc-macro2",1948
+ "quote",1949
+ "syn 2.0.101",1950
+]1951
+1952
+[[package]]1953
+name = "fastdivide"1954
+version = "0.4.2"1955
+source = "registry+https://github.com/rust-lang/crates.io-index"1956
+checksum = "9afc2bd4d5a73106dd53d10d73d3401c2f32730ba2c0b93ddb888a8983680471"1957
+1958
+[[package]]1959
+name = "fastrand"1960
+version = "2.2.0"1961
+source = "registry+https://github.com/rust-lang/crates.io-index"1962
+checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4"1963
+1964
+[[package]]1965
+name = "fiat-crypto"1966
+version = "0.2.9"1967
+source = "registry+https://github.com/rust-lang/crates.io-index"1968
+checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d"1969
+1970
+[[package]]1971
+name = "filedescriptor"1972
+version = "0.8.3"1973
+source = "registry+https://github.com/rust-lang/crates.io-index"1974
+checksum = "e40758ed24c9b2eeb76c35fb0aebc66c626084edd827e07e1552279814c6682d"1975
+dependencies = [1976
+ "libc",1977
+ "thiserror 1.0.63",1978
+ "winapi",1979
+]1980
+1981
+[[package]]1982
+name = "find-msvc-tools"1983
+version = "0.1.7"1984
+source = "registry+https://github.com/rust-lang/crates.io-index"1985
+checksum = "f449e6c6c08c865631d4890cfacf252b3d396c9bcc83adb6623cdb02a8336c41"1986
+1987
+[[package]]1988
+name = "findshlibs"1989
+version = "0.10.2"1990
+source = "registry+https://github.com/rust-lang/crates.io-index"1991
+checksum = "40b9e59cd0f7e0806cca4be089683ecb6434e602038df21fe6bf6711b2f07f64"1992
+dependencies = [1993
+ "cc",1994
+ "lazy_static",1995
+ "libc",1996
+ "winapi",1997
+]1998
+1999
+[[package]]2000
+name = "finl_unicode"2001
+version = "1.4.0"2002
+source = "registry+https://github.com/rust-lang/crates.io-index"2003
+checksum = "9844ddc3a6e533d62bba727eb6c28b5d360921d5175e9ff0f1e621a5c590a4d5"2004
+2005
+[[package]]2006
+name = "fixedbitset"2007
+version = "0.4.2"2008
+source = "registry+https://github.com/rust-lang/crates.io-index"2009
+checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"2010
+2011
+[[package]]2012
+name = "flate2"2013
+version = "1.1.5"2014
+source = "registry+https://github.com/rust-lang/crates.io-index"2015
+checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb"2016
+dependencies = [2017
+ "crc32fast",2018
+ "miniz_oxide",2019
+]2020
+2021
+[[package]]2022
+name = "fnv"2023
+version = "1.0.7"2024
+source = "registry+https://github.com/rust-lang/crates.io-index"2025
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"2026
+2027
+[[package]]2028
+name = "foldhash"2029
+version = "0.1.5"2030
+source = "registry+https://github.com/rust-lang/crates.io-index"2031
+checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"2032
+2033
+[[package]]2034
+name = "foldhash"2035
+version = "0.2.0"2036
+source = "registry+https://github.com/rust-lang/crates.io-index"2037
+checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"2038
+2039
+[[package]]2040
+name = "form_urlencoded"2041
+version = "1.2.2"2042
+source = "registry+https://github.com/rust-lang/crates.io-index"2043
+checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"2044
+dependencies = [2045
+ "percent-encoding",2046
+]2047
+2048
+[[package]]2049
+name = "fs-err"2050
+version = "2.11.0"2051
+source = "registry+https://github.com/rust-lang/crates.io-index"2052
+checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41"2053
+dependencies = [2054
+ "autocfg",2055
+]2056
+2057
+[[package]]2058
+name = "fs4"2059
+version = "0.13.1"2060
+source = "registry+https://github.com/rust-lang/crates.io-index"2061
+checksum = "8640e34b88f7652208ce9e88b1a37a2ae95227d84abec377ccd3c5cfeb141ed4"2062
+dependencies = [2063
+ "rustix",2064
+ "windows-sys 0.59.0",2065
+]2066
+2067
+[[package]]2068
+name = "fs_extra"2069
+version = "1.3.0"2070
+source = "registry+https://github.com/rust-lang/crates.io-index"2071
+checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"2072
+2073
+[[package]]2074
+name = "futures"2075
+version = "0.3.31"2076
+source = "registry+https://github.com/rust-lang/crates.io-index"2077
+checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"2078
+dependencies = [2079
+ "futures-channel",2080
+ "futures-core",2081
+ "futures-executor",2082
+ "futures-io",2083
+ "futures-sink",2084
+ "futures-task",2085
+ "futures-util",2086
+]2087
+2088
+[[package]]2089
+name = "futures-channel"2090
+version = "0.3.31"2091
+source = "registry+https://github.com/rust-lang/crates.io-index"2092
+checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"2093
+dependencies = [2094
+ "futures-core",2095
+ "futures-sink",2096
+]2097
+2098
+[[package]]2099
+name = "futures-core"2100
+version = "0.3.31"2101
+source = "registry+https://github.com/rust-lang/crates.io-index"2102
+checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"2103
+2104
+[[package]]2105
+name = "futures-executor"2106
+version = "0.3.31"2107
+source = "registry+https://github.com/rust-lang/crates.io-index"2108
+checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"2109
+dependencies = [2110
+ "futures-core",2111
+ "futures-task",2112
+ "futures-util",2113
+]2114
+2115
+[[package]]2116
+name = "futures-io"2117
+version = "0.3.31"2118
+source = "registry+https://github.com/rust-lang/crates.io-index"2119
+checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"2120
+2121
+[[package]]2122
+name = "futures-macro"2123
+version = "0.3.31"2124
+source = "registry+https://github.com/rust-lang/crates.io-index"2125
+checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"2126
+dependencies = [2127
+ "proc-macro2",2128
+ "quote",2129
+ "syn 2.0.101",2130
+]2131
+2132
+[[package]]2133
+name = "futures-sink"2134
+version = "0.3.31"2135
+source = "registry+https://github.com/rust-lang/crates.io-index"2136
+checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"2137
+2138
+[[package]]2139
+name = "futures-task"2140
+version = "0.3.31"2141
+source = "registry+https://github.com/rust-lang/crates.io-index"2142
+checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"2143
+2144
+[[package]]2145
+name = "futures-util"2146
+version = "0.3.31"2147
+source = "registry+https://github.com/rust-lang/crates.io-index"2148
+checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"2149
+dependencies = [2150
+ "futures-channel",2151
+ "futures-core",2152
+ "futures-io",2153
+ "futures-macro",2154
+ "futures-sink",2155
+ "futures-task",2156
+ "memchr",2157
+ "pin-project-lite",2158
+ "pin-utils",2159
+ "slab",2160
+]2161
+2162
+[[package]]2163
+name = "fuzzy-matcher"2164
+version = "0.3.7"2165
+source = "registry+https://github.com/rust-lang/crates.io-index"2166
+checksum = "54614a3312934d066701a80f20f15fa3b56d67ac7722b39eea5b4c9dd1d66c94"2167
+dependencies = [2168
+ "thread_local",2169
+]2170
+2171
+[[package]]2172
+name = "generator"2173
+version = "0.8.7"2174
+source = "registry+https://github.com/rust-lang/crates.io-index"2175
+checksum = "605183a538e3e2a9c1038635cc5c2d194e2ee8fd0d1b66b8349fad7dbacce5a2"2176
+dependencies = [2177
+ "cc",2178
+ "cfg-if",2179
+ "libc",2180
+ "log",2181
+ "rustversion",2182
+ "windows",2183
+]2184
+2185
+[[package]]2186
+name = "generic-array"2187
+version = "0.14.7"2188
+source = "registry+https://github.com/rust-lang/crates.io-index"2189
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"2190
+dependencies = [2191
+ "typenum",2192
+ "version_check",2193
+]2194
+2195
+[[package]]2196
+name = "getrandom"2197
+version = "0.2.15"2198
+source = "registry+https://github.com/rust-lang/crates.io-index"2199
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"2200
+dependencies = [2201
+ "cfg-if",2202
+ "js-sys",2203
+ "libc",2204
+ "wasi",2205
+ "wasm-bindgen",2206
+]2207
+2208
+[[package]]2209
+name = "getrandom"2210
+version = "0.3.4"2211
+source = "registry+https://github.com/rust-lang/crates.io-index"2212
+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"2213
+dependencies = [2214
+ "cfg-if",2215
+ "js-sys",2216
+ "libc",2217
+ "r-efi 5.3.0",2218
+ "wasip2",2219
+ "wasm-bindgen",2220
+]2221
+2222
+[[package]]2223
+name = "getrandom"2224
+version = "0.4.2"2225
+source = "registry+https://github.com/rust-lang/crates.io-index"2226
+checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555"2227
+dependencies = [2228
+ "cfg-if",2229
+ "js-sys",2230
+ "libc",2231
+ "r-efi 6.0.0",2232
+ "rand_core 0.10.0",2233
+ "wasip2",2234
+ "wasip3",2235
+ "wasm-bindgen",2236
+]2237
+2238
+[[package]]2239
+name = "gimli"2240
+version = "0.32.3"2241
+source = "registry+https://github.com/rust-lang/crates.io-index"2242
+checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7"2243
+2244
+[[package]]2245
+name = "glob"2246
+version = "0.3.3"2247
+source = "registry+https://github.com/rust-lang/crates.io-index"2248
+checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"2249
+2250
+[[package]]2251
+name = "gloo-timers"2252
+version = "0.3.0"2253
+source = "registry+https://github.com/rust-lang/crates.io-index"2254
+checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994"2255
+dependencies = [2256
+ "futures-channel",2257
+ "futures-core",2258
+ "js-sys",2259
+ "wasm-bindgen",2260
+]2261
+2262
+[[package]]2263
+name = "gloo-utils"2264
+version = "0.2.0"2265
+source = "registry+https://github.com/rust-lang/crates.io-index"2266
+checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa"2267
+dependencies = [2268
+ "js-sys",2269
+ "serde",2270
+ "serde_json",2271
+ "wasm-bindgen",2272
+ "web-sys",2273
+]2274
+2275
+[[package]]2276
+name = "goblin"2277
+version = "0.8.2"2278
+source = "registry+https://github.com/rust-lang/crates.io-index"2279
+checksum = "1b363a30c165f666402fe6a3024d3bec7ebc898f96a4a23bd1c99f8dbf3f4f47"2280
+dependencies = [2281
+ "log",2282
+ "plain",2283
+ "scroll",2284
+]2285
+2286
+[[package]]2287
+name = "goblin"2288
+version = "0.9.3"2289
+source = "registry+https://github.com/rust-lang/crates.io-index"2290
+checksum = "daa0a64d21a7eb230583b4c5f4e23b7e4e57974f96620f42a7e75e08ae66d745"2291
+dependencies = [2292
+ "log",2293
+ "plain",2294
+ "scroll",2295
+]2296
+2297
+[[package]]2298
+name = "growable-bloom-filter"2299
+version = "2.1.1"2300
+source = "registry+https://github.com/rust-lang/crates.io-index"2301
+checksum = "d174ccb4ba660d431329e7f0797870d0a4281e36353ec4b4a3c5eab6c2cfb6f1"2302
+dependencies = [2303
+ "serde",2304
+ "serde_bytes",2305
+ "serde_derive",2306
+ "xxhash-rust",2307
+]2308
+2309
+[[package]]2310
+name = "h2"2311
+version = "0.4.5"2312
+source = "registry+https://github.com/rust-lang/crates.io-index"2313
+checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab"2314
+dependencies = [2315
+ "atomic-waker",2316
+ "bytes",2317
+ "fnv",2318
+ "futures-core",2319
+ "futures-sink",2320
+ "http",2321
+ "indexmap",2322
+ "slab",2323
+ "tokio",2324
+ "tokio-util",2325
+ "tracing",2326
+]2327
+2328
+[[package]]2329
+name = "half"2330
+version = "2.4.1"2331
+source = "registry+https://github.com/rust-lang/crates.io-index"2332
+checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"2333
+dependencies = [2334
+ "cfg-if",2335
+ "crunchy",2336
+]2337
+2338
+[[package]]2339
+name = "hashbrown"2340
+version = "0.15.2"2341
+source = "registry+https://github.com/rust-lang/crates.io-index"2342
+checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"2343
+dependencies = [2344
+ "foldhash 0.1.5",2345
+]2346
+2347
+[[package]]2348
+name = "hashbrown"2349
+version = "0.16.1"2350
+source = "registry+https://github.com/rust-lang/crates.io-index"2351
+checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"2352
+dependencies = [2353
+ "allocator-api2",2354
+ "equivalent",2355
+ "foldhash 0.2.0",2356
+]2357
+2358
+[[package]]2359
+name = "hashlink"2360
+version = "0.10.0"2361
+source = "registry+https://github.com/rust-lang/crates.io-index"2362
+checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1"2363
+dependencies = [2364
+ "hashbrown 0.15.2",2365
+]2366
+2367
+[[package]]2368
+name = "headers"2369
+version = "0.4.1"2370
+source = "registry+https://github.com/rust-lang/crates.io-index"2371
+checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb"2372
+dependencies = [2373
+ "base64",2374
+ "bytes",2375
+ "headers-core",2376
+ "http",2377
+ "httpdate",2378
+ "mime",2379
+ "sha1",2380
+]2381
+2382
+[[package]]2383
+name = "headers-core"2384
+version = "0.3.0"2385
+source = "registry+https://github.com/rust-lang/crates.io-index"2386
+checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4"2387
+dependencies = [2388
+ "http",2389
+]2390
+2391
+[[package]]2392
+name = "heck"2393
+version = "0.5.0"2394
+source = "registry+https://github.com/rust-lang/crates.io-index"2395
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"2396
+2397
+[[package]]2398
+name = "hermit-abi"2399
+version = "0.3.9"2400
+source = "registry+https://github.com/rust-lang/crates.io-index"2401
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"2402
+2403
+[[package]]2404
+name = "hermit-abi"2405
+version = "0.5.2"2406
+source = "registry+https://github.com/rust-lang/crates.io-index"2407
+checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"2408
+2409
+[[package]]2410
+name = "hex"2411
+version = "0.4.3"2412
+source = "registry+https://github.com/rust-lang/crates.io-index"2413
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"2414
+2415
+[[package]]2416
+name = "hkdf"2417
+version = "0.12.4"2418
+source = "registry+https://github.com/rust-lang/crates.io-index"2419
+checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7"2420
+dependencies = [2421
+ "hmac",2422
+]2423
+2424
+[[package]]2425
+name = "hmac"2426
+version = "0.12.1"2427
+source = "registry+https://github.com/rust-lang/crates.io-index"2428
+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"2429
+dependencies = [2430
+ "digest",2431
+]2432
+2433
+[[package]]2434
+name = "hostname"2435
+version = "0.4.1"2436
+source = "registry+https://github.com/rust-lang/crates.io-index"2437
+checksum = "a56f203cd1c76362b69e3863fd987520ac36cf70a8c92627449b2f64a8cf7d65"2438
+dependencies = [2439
+ "cfg-if",2440
+ "libc",2441
+ "windows-link 0.1.1",2442
+]2443
+2444
+[[package]]2445
+name = "html5ever"2446
+version = "0.39.0"2447
+source = "registry+https://github.com/rust-lang/crates.io-index"2448
+checksum = "46a1761807faccc9a19e86944bbf40610014066306f96edcdedc2fb714bcb7b8"2449
+dependencies = [2450
+ "log",2451
+ "markup5ever",2452
+]2453
+2454
+[[package]]2455
+name = "htmlescape"2456
+version = "0.3.1"2457
+source = "registry+https://github.com/rust-lang/crates.io-index"2458
+checksum = "e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163"2459
+2460
+[[package]]2461
+name = "http"2462
+version = "1.3.1"2463
+source = "registry+https://github.com/rust-lang/crates.io-index"2464
+checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565"2465
+dependencies = [2466
+ "bytes",2467
+ "fnv",2468
+ "itoa",2469
+]2470
+2471
+[[package]]2472
+name = "http-auth"2473
+version = "0.1.10"2474
+source = "registry+https://github.com/rust-lang/crates.io-index"2475
+checksum = "150fa4a9462ef926824cf4519c84ed652ca8f4fbae34cb8af045b5cbcaf98822"2476
+dependencies = [2477
+ "memchr",2478
+]2479
+2480
+[[package]]2481
+name = "http-body"2482
+version = "1.0.1"2483
+source = "registry+https://github.com/rust-lang/crates.io-index"2484
+checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"2485
+dependencies = [2486
+ "bytes",2487
+ "http",2488
+]2489
+2490
+[[package]]2491
+name = "http-body-util"2492
+version = "0.1.2"2493
+source = "registry+https://github.com/rust-lang/crates.io-index"2494
+checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f"2495
+dependencies = [2496
+ "bytes",2497
+ "futures-util",2498
+ "http",2499
+ "http-body",2500
+ "pin-project-lite",2501
+]2502
+2503
+[[package]]2504
+name = "httparse"2505
+version = "1.9.4"2506
+source = "registry+https://github.com/rust-lang/crates.io-index"2507
+checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9"2508
+2509
+[[package]]2510
+name = "httpdate"2511
+version = "1.0.3"2512
+source = "registry+https://github.com/rust-lang/crates.io-index"2513
+checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"2514
+2515
+[[package]]2516
+name = "hyper"2517
+version = "1.7.0"2518
+source = "registry+https://github.com/rust-lang/crates.io-index"2519
+checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e"2520
+dependencies = [2521
+ "atomic-waker",2522
+ "bytes",2523
+ "futures-channel",2524
+ "futures-core",2525
+ "h2",2526
+ "http",2527
+ "http-body",2528
+ "httparse",2529
+ "httpdate",2530
+ "itoa",2531
+ "pin-project-lite",2532
+ "pin-utils",2533
+ "smallvec",2534
+ "tokio",2535
+ "want",2536
+]2537
+2538
+[[package]]2539
+name = "hyper-rustls"2540
+version = "0.27.2"2541
+source = "registry+https://github.com/rust-lang/crates.io-index"2542
+checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155"2543
+dependencies = [2544
+ "futures-util",2545
+ "http",2546
+ "hyper",2547
+ "hyper-util",2548
+ "rustls",2549
+ "rustls-pki-types",2550
+ "tokio",2551
+ "tokio-rustls",2552
+ "tower-service",2553
+]2554
+2555
+[[package]]2556
+name = "hyper-util"2557
+version = "0.1.16"2558
+source = "registry+https://github.com/rust-lang/crates.io-index"2559
+checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e"2560
+dependencies = [2561
+ "base64",2562
+ "bytes",2563
+ "futures-channel",2564
+ "futures-core",2565
+ "futures-util",2566
+ "http",2567
+ "http-body",2568
+ "hyper",2569
+ "ipnet",2570
+ "libc",2571
+ "percent-encoding",2572
+ "pin-project-lite",2573
+ "socket2 0.6.0",2574
+ "tokio",2575
+ "tower-service",2576
+ "tracing",2577
+]2578
+2579
+[[package]]2580
+name = "iana-time-zone"2581
+version = "0.1.60"2582
+source = "registry+https://github.com/rust-lang/crates.io-index"2583
+checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"2584
+dependencies = [2585
+ "android_system_properties",2586
+ "core-foundation-sys",2587
+ "iana-time-zone-haiku",2588
+ "js-sys",2589
+ "wasm-bindgen",2590
+ "windows-core 0.52.0",2591
+]2592
+2593
+[[package]]2594
+name = "iana-time-zone-haiku"2595
+version = "0.1.2"2596
+source = "registry+https://github.com/rust-lang/crates.io-index"2597
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"2598
+dependencies = [2599
+ "cc",2600
+]2601
+2602
+[[package]]2603
+name = "icu_collections"2604
+version = "1.5.0"2605
+source = "registry+https://github.com/rust-lang/crates.io-index"2606
+checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"2607
+dependencies = [2608
+ "displaydoc",2609
+ "yoke",2610
+ "zerofrom",2611
+ "zerovec",2612
+]2613
+2614
+[[package]]2615
+name = "icu_locid"2616
+version = "1.5.0"2617
+source = "registry+https://github.com/rust-lang/crates.io-index"2618
+checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"2619
+dependencies = [2620
+ "displaydoc",2621
+ "litemap",2622
+ "tinystr",2623
+ "writeable",2624
+ "zerovec",2625
+]2626
+2627
+[[package]]2628
+name = "icu_locid_transform"2629
+version = "1.5.0"2630
+source = "registry+https://github.com/rust-lang/crates.io-index"2631
+checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e"2632
+dependencies = [2633
+ "displaydoc",2634
+ "icu_locid",2635
+ "icu_locid_transform_data",2636
+ "icu_provider",2637
+ "tinystr",2638
+ "zerovec",2639
+]2640
+2641
+[[package]]2642
+name = "icu_locid_transform_data"2643
+version = "1.5.0"2644
+source = "registry+https://github.com/rust-lang/crates.io-index"2645
+checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e"2646
+2647
+[[package]]2648
+name = "icu_normalizer"2649
+version = "1.5.0"2650
+source = "registry+https://github.com/rust-lang/crates.io-index"2651
+checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"2652
+dependencies = [2653
+ "displaydoc",2654
+ "icu_collections",2655
+ "icu_normalizer_data",2656
+ "icu_properties",2657
+ "icu_provider",2658
+ "smallvec",2659
+ "utf16_iter",2660
+ "utf8_iter",2661
+ "write16",2662
+ "zerovec",2663
+]2664
+2665
+[[package]]2666
+name = "icu_normalizer_data"2667
+version = "1.5.0"2668
+source = "registry+https://github.com/rust-lang/crates.io-index"2669
+checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516"2670
+2671
+[[package]]2672
+name = "icu_properties"2673
+version = "1.5.1"2674
+source = "registry+https://github.com/rust-lang/crates.io-index"2675
+checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5"2676
+dependencies = [2677
+ "displaydoc",2678
+ "icu_collections",2679
+ "icu_locid_transform",2680
+ "icu_properties_data",2681
+ "icu_provider",2682
+ "tinystr",2683
+ "zerovec",2684
+]2685
+2686
+[[package]]2687
+name = "icu_properties_data"2688
+version = "1.5.0"2689
+source = "registry+https://github.com/rust-lang/crates.io-index"2690
+checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569"2691
+2692
+[[package]]2693
+name = "icu_provider"2694
+version = "1.5.0"2695
+source = "registry+https://github.com/rust-lang/crates.io-index"2696
+checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9"2697
+dependencies = [2698
+ "displaydoc",2699
+ "icu_locid",2700
+ "icu_provider_macros",2701
+ "stable_deref_trait",2702
+ "tinystr",2703
+ "writeable",2704
+ "yoke",2705
+ "zerofrom",2706
+ "zerovec",2707
+]2708
+2709
+[[package]]2710
+name = "icu_provider_macros"2711
+version = "1.5.0"2712
+source = "registry+https://github.com/rust-lang/crates.io-index"2713
+checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"2714
+dependencies = [2715
+ "proc-macro2",2716
+ "quote",2717
+ "syn 2.0.101",2718
+]2719
+2720
+[[package]]2721
+name = "id-arena"2722
+version = "2.3.0"2723
+source = "registry+https://github.com/rust-lang/crates.io-index"2724
+checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"2725
+2726
+[[package]]2727
+name = "ident_case"2728
+version = "1.0.1"2729
+source = "registry+https://github.com/rust-lang/crates.io-index"2730
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"2731
+2732
+[[package]]2733
+name = "idna"2734
+version = "1.1.0"2735
+source = "registry+https://github.com/rust-lang/crates.io-index"2736
+checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"2737
+dependencies = [2738
+ "idna_adapter",2739
+ "smallvec",2740
+ "utf8_iter",2741
+]2742
+2743
+[[package]]2744
+name = "idna_adapter"2745
+version = "1.2.0"2746
+source = "registry+https://github.com/rust-lang/crates.io-index"2747
+checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71"2748
+dependencies = [2749
+ "icu_normalizer",2750
+ "icu_properties",2751
+]2752
+2753
+[[package]]2754
+name = "image"2755
+version = "0.25.9"2756
+source = "registry+https://github.com/rust-lang/crates.io-index"2757
+checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a"2758
+dependencies = [2759
+ "bytemuck",2760
+ "byteorder-lite",2761
+ "moxcms",2762
+ "num-traits",2763
+]2764
+2765
+[[package]]2766
+name = "imbl"2767
+version = "6.1.0"2768
+source = "registry+https://github.com/rust-lang/crates.io-index"2769
+checksum = "0fade8ae6828627ad1fa094a891eccfb25150b383047190a3648d66d06186501"2770
+dependencies = [2771
+ "archery",2772
+ "bitmaps",2773
+ "imbl-sized-chunks",2774
+ "rand_core 0.9.3",2775
+ "rand_xoshiro",2776
+ "serde",2777
+ "version_check",2778
+]2779
+2780
+[[package]]2781
+name = "imbl-sized-chunks"2782
+version = "0.1.3"2783
+source = "registry+https://github.com/rust-lang/crates.io-index"2784
+checksum = "8f4241005618a62f8d57b2febd02510fb96e0137304728543dfc5fd6f052c22d"2785
+dependencies = [2786
+ "bitmaps",2787
+]2788
+2789
+[[package]]2790
+name = "impartial-ord"2791
+version = "1.0.6"2792
+source = "registry+https://github.com/rust-lang/crates.io-index"2793
+checksum = "0ab604ee7085efba6efc65e4ebca0e9533e3aff6cb501d7d77b211e3a781c6d5"2794
+dependencies = [2795
+ "proc-macro2",2796
+ "quote",2797
+ "syn 2.0.101",2798
+]2799
+2800
+[[package]]2801
+name = "include_dir"2802
+version = "0.7.4"2803
+source = "registry+https://github.com/rust-lang/crates.io-index"2804
+checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd"2805
+dependencies = [2806
+ "include_dir_macros",2807
+]2808
+2809
+[[package]]2810
+name = "include_dir_macros"2811
+version = "0.7.4"2812
+source = "registry+https://github.com/rust-lang/crates.io-index"2813
+checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75"2814
+dependencies = [2815
+ "proc-macro2",2816
+ "quote",2817
+]2818
+2819
+[[package]]2820
+name = "indenter"2821
+version = "0.3.3"2822
+source = "registry+https://github.com/rust-lang/crates.io-index"2823
+checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683"2824
+2825
+[[package]]2826
+name = "indexmap"2827
+version = "2.12.1"2828
+source = "registry+https://github.com/rust-lang/crates.io-index"2829
+checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2"2830
+dependencies = [2831
+ "equivalent",2832
+ "hashbrown 0.16.1",2833
+ "serde",2834
+ "serde_core",2835
+]2836
+2837
+[[package]]2838
+name = "indoc"2839
+version = "2.0.7"2840
+source = "registry+https://github.com/rust-lang/crates.io-index"2841
+checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"2842
+dependencies = [2843
+ "rustversion",2844
+]2845
+2846
+[[package]]2847
+name = "inout"2848
+version = "0.1.3"2849
+source = "registry+https://github.com/rust-lang/crates.io-index"2850
+checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"2851
+dependencies = [2852
+ "block-padding",2853
+ "generic-array",2854
+]2855
+2856
+[[package]]2857
+name = "insta"2858
+version = "1.44.1"2859
+source = "registry+https://github.com/rust-lang/crates.io-index"2860
+checksum = "e8732d3774162a0851e3f2b150eb98f31a9885dd75985099421d393385a01dfd"2861
+dependencies = [2862
+ "console",2863
+ "once_cell",2864
+ "pest",2865
+ "pest_derive",2866
+ "serde",2867
+ "similar",2868
+]2869
+2870
+[[package]]2871
+name = "instability"2872
+version = "0.3.7"2873
+source = "registry+https://github.com/rust-lang/crates.io-index"2874
+checksum = "0bf9fed6d91cfb734e7476a06bde8300a1b94e217e1b523b6f0cd1a01998c71d"2875
+dependencies = [2876
+ "darling 0.20.10",2877
+ "indoc",2878
+ "proc-macro2",2879
+ "quote",2880
+ "syn 2.0.101",2881
+]2882
+2883
+[[package]]2884
+name = "inventory"2885
+version = "0.3.24"2886
+source = "registry+https://github.com/rust-lang/crates.io-index"2887
+checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b"2888
+dependencies = [2889
+ "rustversion",2890
+]2891
+2892
+[[package]]2893
+name = "ipnet"2894
+version = "2.9.0"2895
+source = "registry+https://github.com/rust-lang/crates.io-index"2896
+checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"2897
+2898
+[[package]]2899
+name = "iri-string"2900
+version = "0.7.8"2901
+source = "registry+https://github.com/rust-lang/crates.io-index"2902
+checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2"2903
+dependencies = [2904
+ "memchr",2905
+ "serde",2906
+]2907
+2908
+[[package]]2909
+name = "is-terminal"2910
+version = "0.4.16"2911
+source = "registry+https://github.com/rust-lang/crates.io-index"2912
+checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9"2913
+dependencies = [2914
+ "hermit-abi 0.5.2",2915
+ "libc",2916
+ "windows-sys 0.59.0",2917
+]2918
+2919
+[[package]]2920
+name = "itertools"2921
+version = "0.10.5"2922
+source = "registry+https://github.com/rust-lang/crates.io-index"2923
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"2924
+dependencies = [2925
+ "either",2926
+]2927
+2928
+[[package]]2929
+name = "itertools"2930
+version = "0.14.0"2931
+source = "registry+https://github.com/rust-lang/crates.io-index"2932
+checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"2933
+dependencies = [2934
+ "either",2935
+]2936
+2937
+[[package]]2938
+name = "itoa"2939
+version = "1.0.11"2940
+source = "registry+https://github.com/rust-lang/crates.io-index"2941
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"2942
+2943
+[[package]]2944
+name = "jni"2945
+version = "0.21.1"2946
+source = "registry+https://github.com/rust-lang/crates.io-index"2947
+checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97"2948
+dependencies = [2949
+ "cesu8",2950
+ "cfg-if",2951
+ "combine",2952
+ "jni-sys",2953
+ "log",2954
+ "thiserror 1.0.63",2955
+ "walkdir",2956
+ "windows-sys 0.45.0",2957
+]2958
+2959
+[[package]]2960
+name = "jni-sys"2961
+version = "0.3.0"2962
+source = "registry+https://github.com/rust-lang/crates.io-index"2963
+checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"2964
+2965
+[[package]]2966
+name = "jobserver"2967
+version = "0.1.32"2968
+source = "registry+https://github.com/rust-lang/crates.io-index"2969
+checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"2970
+dependencies = [2971
+ "libc",2972
+]2973
+2974
+[[package]]2975
+name = "js-sys"2976
+version = "0.3.91"2977
+source = "registry+https://github.com/rust-lang/crates.io-index"2978
+checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c"2979
+dependencies = [2980
+ "once_cell",2981
+ "wasm-bindgen",2982
+]2983
+2984
+[[package]]2985
+name = "js_int"2986
+version = "0.2.2"2987
+source = "registry+https://github.com/rust-lang/crates.io-index"2988
+checksum = "d937f95470b270ce8b8950207715d71aa8e153c0d44c6684d59397ed4949160a"2989
+dependencies = [2990
+ "serde",2991
+]2992
+2993
+[[package]]2994
+name = "js_option"2995
+version = "0.2.0"2996
+source = "registry+https://github.com/rust-lang/crates.io-index"2997
+checksum = "c7dd3e281add16813cf673bf74a32249b0aa0d1c8117519a17b3ada5e8552b3c"2998
+dependencies = [2999
+ "serde_core",3000
+]3001
+3002
+[[package]]3003
+name = "json-structural-diff"3004
+version = "0.2.0"3005
+source = "registry+https://github.com/rust-lang/crates.io-index"3006
+checksum = "e878e36a8a44c158505c2c818abdc1350413ad83dcb774a0459f6a7ef2b65cbf"3007
+dependencies = [3008
+ "difflib",3009
+ "regex",3010
+ "serde_json",3011
+]3012
+3013
+[[package]]3014
+name = "jvm-getter"3015
+version = "0.1.0"3016
+source = "registry+https://github.com/rust-lang/crates.io-index"3017
+checksum = "6a9353d43a802ba22de0de749f4aa51f3414a6a9b5037559eaac65584db65218"3018
+dependencies = [3019
+ "goblin 0.9.3",3020
+ "jni-sys",3021
+ "libc",3022
+ "windows-sys 0.60.2",3023
+]3024
+3025
+[[package]]3026
+name = "kasuari"3027
+version = "0.4.12"3028
+source = "registry+https://github.com/rust-lang/crates.io-index"3029
+checksum = "bde5057d6143cc94e861d90f591b9303d6716c6b9602309150bd068853c10899"3030
+dependencies = [3031
+ "hashbrown 0.16.1",3032
+ "portable-atomic",3033
+ "thiserror 2.0.18",3034
+]3035
+3036
+[[package]]3037
+name = "konst"3038
+version = "0.4.3"3039
+source = "registry+https://github.com/rust-lang/crates.io-index"3040
+checksum = "f660d5f887e3562f9ab6f4a14988795b694099d66b4f5dedc02d197ba9becb1d"3041
+dependencies = [3042
+ "const_panic",3043
+ "typewit",3044
+]3045
+3046
+[[package]]3047
+name = "lab"3048
+version = "0.11.0"3049
+source = "registry+https://github.com/rust-lang/crates.io-index"3050
+checksum = "bf36173d4167ed999940f804952e6b08197cae5ad5d572eb4db150ce8ad5d58f"3051
+3052
+[[package]]3053
+name = "language-tags"3054
+version = "0.3.2"3055
+source = "registry+https://github.com/rust-lang/crates.io-index"3056
+checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388"3057
+dependencies = [3058
+ "serde",3059
+]3060
+3061
+[[package]]3062
+name = "lazy_static"3063
+version = "1.5.0"3064
+source = "registry+https://github.com/rust-lang/crates.io-index"3065
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"3066
+3067
+[[package]]3068
+name = "leb128fmt"3069
+version = "0.1.0"3070
+source = "registry+https://github.com/rust-lang/crates.io-index"3071
+checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"3072
+3073
+[[package]]3074
+name = "levenshtein_automata"3075
+version = "0.2.1"3076
+source = "registry+https://github.com/rust-lang/crates.io-index"3077
+checksum = "0c2cdeb66e45e9f36bfad5bbdb4d2384e70936afbee843c6f6543f0c551ebb25"3078
+3079
+[[package]]3080
+name = "libc"3081
+version = "0.2.175"3082
+source = "registry+https://github.com/rust-lang/crates.io-index"3083
+checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543"3084
+3085
+[[package]]3086
+name = "libm"3087
+version = "0.2.15"3088
+source = "registry+https://github.com/rust-lang/crates.io-index"3089
+checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de"3090
+3091
+[[package]]3092
+name = "libredox"3093
+version = "0.1.3"3094
+source = "registry+https://github.com/rust-lang/crates.io-index"3095
+checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"3096
+dependencies = [3097
+ "bitflags 2.10.0",3098
+ "libc",3099
+]3100
+3101
+[[package]]3102
+name = "libsqlite3-sys"3103
+version = "0.35.0"3104
+source = "registry+https://github.com/rust-lang/crates.io-index"3105
+checksum = "133c182a6a2c87864fe97778797e46c7e999672690dc9fa3ee8e241aa4a9c13f"3106
+dependencies = [3107
+ "cc",3108
+ "pkg-config",3109
+ "vcpkg",3110
+]3111
+3112
+[[package]]3113
+name = "line-clipping"3114
+version = "0.3.5"3115
+source = "registry+https://github.com/rust-lang/crates.io-index"3116
+checksum = "5f4de44e98ddbf09375cbf4d17714d18f39195f4f4894e8524501726fd9a8a4a"3117
+dependencies = [3118
+ "bitflags 2.10.0",3119
+]3120
+3121
+[[package]]3122
+name = "linux-raw-sys"3123
+version = "0.9.4"3124
+source = "registry+https://github.com/rust-lang/crates.io-index"3125
+checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"3126
+3127
+[[package]]3128
+name = "litemap"3129
+version = "0.7.4"3130
+source = "registry+https://github.com/rust-lang/crates.io-index"3131
+checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104"3132
+3133
+[[package]]3134
+name = "litrs"3135
+version = "1.0.0"3136
+source = "registry+https://github.com/rust-lang/crates.io-index"3137
+checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092"3138
+3139
+[[package]]3140
+name = "lock_api"3141
+version = "0.4.12"3142
+source = "registry+https://github.com/rust-lang/crates.io-index"3143
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"3144
+dependencies = [3145
+ "autocfg",3146
+ "scopeguard",3147
+]3148
+3149
+[[package]]3150
+name = "log"3151
+version = "0.4.27"3152
+source = "registry+https://github.com/rust-lang/crates.io-index"3153
+checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"3154
+3155
+[[package]]3156
+name = "log-panics"3157
+version = "2.1.0"3158
+source = "registry+https://github.com/rust-lang/crates.io-index"3159
+checksum = "68f9dd8546191c1850ecf67d22f5ff00a935b890d0e84713159a55495cc2ac5f"3160
+dependencies = [3161
+ "backtrace",3162
+ "log",3163
+]3164
+3165
+[[package]]3166
+name = "loom"3167
+version = "0.7.2"3168
+source = "registry+https://github.com/rust-lang/crates.io-index"3169
+checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca"3170
+dependencies = [3171
+ "cfg-if",3172
+ "generator",3173
+ "scoped-tls",3174
+ "tracing",3175
+ "tracing-subscriber",3176
+]3177
+3178
+[[package]]3179
+name = "lru"3180
+version = "0.16.4"3181
+source = "registry+https://github.com/rust-lang/crates.io-index"3182
+checksum = "7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39"3183
+dependencies = [3184
+ "hashbrown 0.16.1",3185
+]3186
+3187
+[[package]]3188
+name = "lru-slab"3189
+version = "0.1.2"3190
+source = "registry+https://github.com/rust-lang/crates.io-index"3191
+checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"3192
+3193
+[[package]]3194
+name = "lz4_flex"3195
+version = "0.13.1"3196
+source = "registry+https://github.com/rust-lang/crates.io-index"3197
+checksum = "7ef0d4ed8669f8f8826eb00dc878084aa8f253506c4fd5e8f58f5bce72ddb97e"3198
+3199
+[[package]]3200
+name = "mac_address"3201
+version = "1.1.8"3202
+source = "registry+https://github.com/rust-lang/crates.io-index"3203
+checksum = "c0aeb26bf5e836cc1c341c8106051b573f1766dfa05aa87f0b98be5e51b02303"3204
+dependencies = [3205
+ "nix 0.29.0",3206
+ "winapi",3207
+]3208
+3209
+[[package]]3210
+name = "macroific"3211
+version = "2.0.0"3212
+source = "registry+https://github.com/rust-lang/crates.io-index"3213
+checksum = "89f276537b4b8f981bf1c13d79470980f71134b7bdcc5e6e911e910e556b0285"3214
+dependencies = [3215
+ "macroific_attr_parse",3216
+ "macroific_core",3217
+ "macroific_macro",3218
+]3219
+3220
+[[package]]3221
+name = "macroific_attr_parse"3222
+version = "2.0.0"3223
+source = "registry+https://github.com/rust-lang/crates.io-index"3224
+checksum = "ad4023761b45fcd36abed8fb7ae6a80456b0a38102d55e89a57d9a594a236be9"3225
+dependencies = [3226
+ "proc-macro2",3227
+ "quote",3228
+ "sealed",3229
+ "syn 2.0.101",3230
+]3231
+3232
+[[package]]3233
+name = "macroific_core"3234
+version = "2.0.0"3235
+source = "registry+https://github.com/rust-lang/crates.io-index"3236
+checksum = "d0a7594d3c14916fa55bef7e9d18c5daa9ed410dd37504251e4b75bbdeec33e3"3237
+dependencies = [3238
+ "proc-macro2",3239
+ "quote",3240
+ "sealed",3241
+ "syn 2.0.101",3242
+]3243
+3244
+[[package]]3245
+name = "macroific_macro"3246
+version = "2.0.0"3247
+source = "registry+https://github.com/rust-lang/crates.io-index"3248
+checksum = "4da6f2ed796261b0a74e2b52b42c693bb6dee1effba3a482c49592659f824b3b"3249
+dependencies = [3250
+ "macroific_attr_parse",3251
+ "macroific_core",3252
+ "proc-macro2",3253
+ "quote",3254
+ "syn 2.0.101",3255
+]3256
+3257
+[[package]]3258
+name = "maplit"3259
+version = "1.0.2"3260
+source = "registry+https://github.com/rust-lang/crates.io-index"3261
+checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"3262
+3263
+[[package]]3264
+name = "markup5ever"3265
+version = "0.39.0"3266
+source = "registry+https://github.com/rust-lang/crates.io-index"3267
+checksum = "7122d987ec5f704ee56f6e5b41a7d93722e9aae27ae07cafa4036c4d3f9757de"3268
+dependencies = [3269
+ "log",3270
+ "tendril",3271
+ "web_atoms",3272
+]3273
+3274
+[[package]]3275
+name = "matchers"3276
+version = "0.2.0"3277
+source = "registry+https://github.com/rust-lang/crates.io-index"3278
+checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9"3279
+dependencies = [3280
+ "regex-automata",3281
+]3282
+3283
+[[package]]3284
+name = "matchit"3285
+version = "0.8.4"3286
+source = "registry+https://github.com/rust-lang/crates.io-index"3287
+checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3"3288
+3289
+[[package]]3290
+name = "matrix-pickle"3291
+version = "0.2.1"3292
+source = "registry+https://github.com/rust-lang/crates.io-index"3293
+checksum = "4e2551de3bba2cc65b52dc6b268df6114011fe118ac24870fbcf1b35537bd721"3294
+dependencies = [3295
+ "matrix-pickle-derive",3296
+ "thiserror 1.0.63",3297
+]3298
+3299
+[[package]]3300
+name = "matrix-pickle-derive"3301
+version = "0.2.1"3302
+source = "registry+https://github.com/rust-lang/crates.io-index"3303
+checksum = "f75de44c3120d78e978adbcf6d453b20ba011f3c46363e52d1dbbc72f545e9fb"3304
+dependencies = [3305
+ "proc-macro-crate",3306
+ "proc-macro-error2",3307
+ "proc-macro2",3308
+ "quote",3309
+ "syn 2.0.101",3310
+]3311
+3312
+[[package]]3313
+name = "matrix-sdk"3314
+version = "0.18.0"3315
+dependencies = [3316
+ "anyhow",3317
+ "anymap2",3318
+ "aquamarine",3319
+ "as_variant",3320
+ "assert-json-diff",3321
+ "assert_matches",3322
+ "assert_matches2",3323
+ "async-channel",3324
+ "async-once-cell",3325
+ "async-stream",3326
+ "async-trait",3327
+ "axum",3328
+ "backon",3329
+ "bytes",3330
+ "bytesize",3331
+ "cfg-if",3332
+ "ctor",3333
+ "dirs",3334
+ "event-listener",3335
+ "eyeball",3336
+ "eyeball-im",3337
+ "eyre",3338
+ "futures-core",3339
+ "futures-executor",3340
+ "futures-util",3341
+ "gloo-timers",3342
+ "http",3343
+ "imbl",3344
+ "indexmap",3345
+ "insta",3346
+ "itertools 0.14.0",3347
+ "js_int",3348
+ "language-tags",3349
+ "matrix-sdk-base",3350
+ "matrix-sdk-common",3351
+ "matrix-sdk-ffi-macros",3352
+ "matrix-sdk-indexeddb",3353
+ "matrix-sdk-search",3354
+ "matrix-sdk-sqlite",3355
+ "matrix-sdk-test",3356
+ "matrix-sdk-test-utils",3357
+ "mime",3358
+ "mime2ext",3359
+ "oauth2",3360
+ "oauth2-reqwest",3361
+ "percent-encoding",3362
+ "pin-project-lite",3363
+ "proptest",3364
+ "rand 0.10.1",3365
+ "reqwest",3366
+ "ruma",3367
+ "rustls",3368
+ "rustls-native-certs",3369
+ "rustls-pki-types",3370
+ "serde",3371
+ "serde_html_form",3372
+ "serde_json",3373
+ "serde_urlencoded",3374
+ "sha2",3375
+ "similar-asserts",3376
+ "stream_assert",3377
+ "tempfile",3378
+ "thiserror 2.0.18",3379
+ "tokio",3380
+ "tokio-stream",3381
+ "tokio-test",3382
+ "tokio-util",3383
+ "tower",3384
+ "tracing",3385
+ "tracing-subscriber",3386
+ "uniffi",3387
+ "url",3388
+ "urlencoding",3389
+ "uuid",3390
+ "vodozemac",3391
+ "wasm-bindgen-test",3392
+ "webpki-roots",3393
+ "wiremock",3394
+ "zeroize",3395
+]3396
+3397
+[[package]]3398
+name = "matrix-sdk-base"3399
+version = "0.18.0"3400
+dependencies = [3401
+ "anyhow",3402
+ "as_variant",3403
+ "assert_matches",3404
+ "assert_matches2",3405
+ "assign",3406
+ "async-trait",3407
+ "bitflags 2.10.0",3408
+ "decancer",3409
+ "eyeball",3410
+ "eyeball-im",3411
+ "futures-executor",3412
+ "futures-util",3413
+ "getrandom 0.3.4",3414
+ "gloo-timers",3415
+ "growable-bloom-filter",3416
+ "http",3417
+ "matrix-sdk-common",3418
+ "matrix-sdk-crypto",3419
+ "matrix-sdk-store-encryption",3420
+ "matrix-sdk-test",3421
+ "matrix-sdk-test-utils",3422
+ "proptest",3423
+ "regex",3424
+ "ruma",3425
+ "serde",3426
+ "serde_json",3427
+ "similar-asserts",3428
+ "stream_assert",3429
+ "thiserror 2.0.18",3430
+ "tokio",3431
+ "tracing",3432
+ "unicode-normalization",3433
+ "uniffi",3434
+ "wasm-bindgen-test",3435
+]3436
+3437
+[[package]]3438
+name = "matrix-sdk-common"3439
+version = "0.18.0"3440
+dependencies = [3441
+ "assert_matches",3442
+ "assert_matches2",3443
+ "eyeball-im",3444
+ "futures-core",3445
+ "futures-executor",3446
+ "futures-util",3447
+ "getrandom 0.3.4",3448
+ "getrandom 0.4.2",3449
+ "gloo-timers",3450
+ "imbl",3451
+ "insta",3452
+ "js-sys",3453
+ "matrix-sdk-test-macros",3454
+ "matrix-sdk-test-utils",3455
+ "proptest",3456
+ "ruma",3457
+ "serde",3458
+ "serde_json",3459
+ "thiserror 2.0.18",3460
+ "tokio",3461
+ "tracing",3462
+ "tracing-subscriber",3463
+ "uniffi",3464
+ "wasm-bindgen",3465
+ "wasm-bindgen-futures",3466
+ "wasm-bindgen-test",3467
+ "web-sys",3468
+]3469
+3470
+[[package]]3471
+name = "matrix-sdk-crypto"3472
+version = "0.18.0"3473
+dependencies = [3474
+ "aes",3475
+ "anyhow",3476
+ "aquamarine",3477
+ "as_variant",3478
+ "assert_matches",3479
+ "assert_matches2",3480
+ "async-trait",3481
+ "bs58",3482
+ "byteorder",3483
+ "cfg-if",3484
+ "ctr",3485
+ "eyeball",3486
+ "futures-core",3487
+ "futures-executor",3488
+ "futures-util",3489
+ "hkdf",3490
+ "hmac",3491
+ "http",3492
+ "insta",3493
+ "itertools 0.14.0",3494
+ "js_option",3495
+ "matrix-sdk-common",3496
+ "matrix-sdk-qrcode",3497
+ "matrix-sdk-test",3498
+ "matrix-sdk-test-utils",3499
+ "pbkdf2",3500
+ "proptest",3501
+ "rand 0.10.1",3502
+ "rmp-serde",3503
+ "ruma",3504
+ "serde",3505
+ "serde_json",3506
+ "sha2",3507
+ "similar-asserts",3508
+ "stream_assert",3509
+ "subtle",3510
+ "thiserror 2.0.18",3511
+ "time",3512
+ "tokio",3513
+ "tokio-stream",3514
+ "tracing",3515
+ "ulid",3516
+ "uniffi",3517
+ "url",3518
+ "vodozemac",3519
+ "zeroize",3520
+]3521
+3522
+[[package]]3523
+name = "matrix-sdk-crypto-ffi"3524
+version = "0.1.0"3525
+dependencies = [3526
+ "anyhow",3527
+ "assert_matches2",3528
+ "futures-util",3529
+ "hmac",3530
+ "http",3531
+ "js_int",3532
+ "matrix-sdk-common",3533
+ "matrix-sdk-crypto",3534
+ "matrix-sdk-ffi-macros",3535
+ "matrix-sdk-sqlite",3536
+ "pbkdf2",3537
+ "rand 0.10.1",3538
+ "ruma",3539
+ "serde",3540
+ "serde_json",3541
+ "sha2",3542
+ "tempfile",3543
+ "thiserror 2.0.18",3544
+ "tokio",3545
+ "tracing-subscriber",3546
+ "uniffi",3547
+ "vergen-gitcl",3548
+ "vodozemac",3549
+ "zeroize",3550
+]3551
+3552
+[[package]]3553
+name = "matrix-sdk-ffi"3554
+version = "0.18.0"3555
+dependencies = [3556
+ "anyhow",3557
+ "async-compat",3558
+ "chrono",3559
+ "console_error_panic_hook",3560
+ "extension-trait",3561
+ "eyeball-im",3562
+ "futures-executor",3563
+ "futures-util",3564
+ "jni",3565
+ "jvm-getter",3566
+ "language-tags",3567
+ "log-panics",3568
+ "matrix-sdk",3569
+ "matrix-sdk-base",3570
+ "matrix-sdk-common",3571
+ "matrix-sdk-ffi-macros",3572
+ "matrix-sdk-ui",3573
+ "mime",3574
+ "oauth2",3575
+ "once_cell",3576
+ "paranoid-android",3577
+ "ruma",3578
+ "rustls-platform-verifier",3579
+ "sentry",3580
+ "sentry-tracing",3581
+ "serde",3582
+ "serde_json",3583
+ "similar-asserts",3584
+ "tempfile",3585
+ "thiserror 2.0.18",3586
+ "tokio",3587
+ "tracing",3588
+ "tracing-appender",3589
+ "tracing-core",3590
+ "tracing-subscriber",3591
+ "uniffi",3592
+ "url",3593
+ "uuid",3594
+ "vergen-gitcl",3595
+ "zeroize",3596
+]3597
+3598
+[[package]]3599
+name = "matrix-sdk-ffi-macros"3600
+version = "0.7.0"3601
+dependencies = [3602
+ "proc-macro2",3603
+ "quote",3604
+ "syn 2.0.101",3605
+]3606
+3607
+[[package]]3608
+name = "matrix-sdk-indexeddb"3609
+version = "0.18.0"3610
+dependencies = [3611
+ "assert_matches",3612
+ "assert_matches2",3613
+ "async-trait",3614
+ "base64",3615
+ "futures-util",3616
+ "getrandom 0.4.2",3617
+ "gloo-timers",3618
+ "gloo-utils",3619
+ "growable-bloom-filter",3620
+ "hkdf",3621
+ "js-sys",3622
+ "matrix-sdk-base",3623
+ "matrix-sdk-common",3624
+ "matrix-sdk-crypto",3625
+ "matrix-sdk-store-encryption",3626
+ "matrix-sdk-test",3627
+ "matrix_indexed_db_futures",3628
+ "rand 0.10.1",3629
+ "rmp-serde",3630
+ "ruma",3631
+ "serde",3632
+ "serde-wasm-bindgen",3633
+ "serde_json",3634
+ "sha2",3635
+ "thiserror 2.0.18",3636
+ "tokio",3637
+ "tracing",3638
+ "tracing-subscriber",3639
+ "uuid",3640
+ "wasm-bindgen",3641
+ "wasm-bindgen-test",3642
+ "web-sys",3643
+ "zeroize",3644
+]3645
+3646
+[[package]]3647
+name = "matrix-sdk-integration-testing"3648
+version = "0.1.0"3649
+dependencies = [3650
+ "anyhow",3651
+ "assert_matches",3652
+ "assert_matches2",3653
+ "assign",3654
+ "eyeball",3655
+ "eyeball-im",3656
+ "futures",3657
+ "futures-core",3658
+ "futures-util",3659
+ "http",3660
+ "json-structural-diff",3661
+ "matrix-sdk",3662
+ "matrix-sdk-base",3663
+ "matrix-sdk-common",3664
+ "matrix-sdk-test",3665
+ "matrix-sdk-test-utils",3666
+ "matrix-sdk-ui",3667
+ "rand 0.10.1",3668
+ "reqwest",3669
+ "serde_json",3670
+ "similar-asserts",3671
+ "stream_assert",3672
+ "tempfile",3673
+ "tokio",3674
+ "tracing",3675
+ "wiremock",3676
+]3677
+3678
+[[package]]3679
+name = "matrix-sdk-qrcode"3680
+version = "0.18.0"3681
+dependencies = [3682
+ "byteorder",3683
+ "image",3684
+ "qrcode",3685
+ "ruma",3686
+ "thiserror 2.0.18",3687
+ "vodozemac",3688
+]3689
+3690
+[[package]]3691
+name = "matrix-sdk-search"3692
+version = "0.18.0"3693
+dependencies = [3694
+ "aes",3695
+ "byteorder",3696
+ "ctr",3697
+ "hkdf",3698
+ "hmac",3699
+ "matrix-sdk-test",3700
+ "pbkdf2",3701
+ "rand 0.10.1",3702
+ "ruma",3703
+ "sha2",3704
+ "tantivy",3705
+ "tempfile",3706
+ "thiserror 2.0.18",3707
+ "tracing",3708
+ "zeroize",3709
+]3710
+3711
+[[package]]3712
+name = "matrix-sdk-sqlite"3713
+version = "0.18.0"3714
+dependencies = [3715
+ "as_variant",3716
+ "assert_matches",3717
+ "async-trait",3718
+ "deadpool 0.13.0",3719
+ "deadpool-sync",3720
+ "glob",3721
+ "itertools 0.14.0",3722
+ "matrix-sdk-base",3723
+ "matrix-sdk-common",3724
+ "matrix-sdk-crypto",3725
+ "matrix-sdk-store-encryption",3726
+ "matrix-sdk-test",3727
+ "matrix-sdk-test-utils",3728
+ "num_cpus",3729
+ "rmp-serde",3730
+ "ruma",3731
+ "rusqlite",3732
+ "serde",3733
+ "serde_json",3734
+ "serde_path_to_error",3735
+ "similar-asserts",3736
+ "tempfile",3737
+ "thiserror 2.0.18",3738
+ "tokio",3739
+ "tracing",3740
+ "vodozemac",3741
+ "zeroize",3742
+]3743
+3744
+[[package]]3745
+name = "matrix-sdk-store-encryption"3746
+version = "0.18.0"3747
+dependencies = [3748
+ "anyhow",3749
+ "base64",3750
+ "blake3",3751
+ "chacha20poly1305",3752
+ "getrandom 0.2.15",3753
+ "getrandom 0.4.2",3754
+ "hmac",3755
+ "pbkdf2",3756
+ "rand 0.10.1",3757
+ "rmp-serde",3758
+ "serde",3759
+ "serde_json",3760
+ "sha2",3761
+ "thiserror 2.0.18",3762
+ "zeroize",3763
+]3764
+3765
+[[package]]3766
+name = "matrix-sdk-test"3767
+version = "0.18.0"3768
+dependencies = [3769
+ "as_variant",3770
+ "ctor",3771
+ "getrandom 0.4.2",3772
+ "http",3773
+ "insta",3774
+ "matrix-sdk-common",3775
+ "matrix-sdk-test-macros",3776
+ "ruma",3777
+ "serde",3778
+ "serde_json",3779
+ "sha2",3780
+ "tokio",3781
+ "tracing-subscriber",3782
+ "vodozemac",3783
+ "wasm-bindgen-test",3784
+ "wiremock",3785
+]3786
+3787
+[[package]]3788
+name = "matrix-sdk-test-macros"3789
+version = "0.18.0"3790
+dependencies = [3791
+ "quote",3792
+ "syn 2.0.101",3793
+]3794
+3795
+[[package]]3796
+name = "matrix-sdk-test-utils"3797
+version = "0.18.0"3798
+dependencies = [3799
+ "ctor",3800
+ "tracing-subscriber",3801
+]3802
+3803
+[[package]]3804
+name = "matrix-sdk-ui"3805
+version = "0.18.0"3806
+dependencies = [3807
+ "anyhow",3808
+ "as_variant",3809
+ "assert-json-diff",3810
+ "assert_matches",3811
+ "assert_matches2",3812
+ "async-rx",3813
+ "async-stream",3814
+ "async_cell",3815
+ "bitflags 2.10.0",3816
+ "chrono",3817
+ "emojis",3818
+ "eyeball",3819
+ "eyeball-im",3820
+ "eyeball-im-util",3821
+ "futures-core",3822
+ "futures-util",3823
+ "fuzzy-matcher",3824
+ "growable-bloom-filter",3825
+ "imbl",3826
+ "indexmap",3827
+ "itertools 0.14.0",3828
+ "matrix-sdk",3829
+ "matrix-sdk-base",3830
+ "matrix-sdk-common",3831
+ "matrix-sdk-test",3832
+ "matrix-sdk-test-utils",3833
+ "mime",3834
+ "pin-project-lite",3835
+ "proptest",3836
+ "ruma",3837
+ "serde",3838
+ "serde_json",3839
+ "stream_assert",3840
+ "tempfile",3841
+ "thiserror 2.0.18",3842
+ "tokio",3843
+ "tokio-stream",3844
+ "tracing",3845
+ "unicode-normalization",3846
+ "unicode-segmentation",3847
+ "uniffi",3848
+ "url",3849
+ "wiremock",3850
+]3851
+3852
+[[package]]3853
+name = "matrix_indexed_db_futures"3854
+version = "0.7.0"3855
+source = "registry+https://github.com/rust-lang/crates.io-index"3856
+checksum = "245ff6a224b4df7b0c90dda2dd5a6eb46112708d49e8bdd8b007fccb09fea8e4"3857
+dependencies = [3858
+ "accessory",3859
+ "cfg-if",3860
+ "delegate-display",3861
+ "derive_more 2.0.1",3862
+ "fancy_constructor",3863
+ "futures-core",3864
+ "js-sys",3865
+ "matrix_indexed_db_futures_macros_internal",3866
+ "sealed",3867
+ "serde",3868
+ "serde-wasm-bindgen",3869
+ "smallvec",3870
+ "thiserror 2.0.18",3871
+ "tokio",3872
+ "wasm-bindgen",3873
+ "wasm-bindgen-futures",3874
+ "wasm_evt_listener",3875
+ "web-sys",3876
+ "web-time",3877
+]3878
+3879
+[[package]]3880
+name = "matrix_indexed_db_futures_macros_internal"3881
+version = "1.0.0"3882
+source = "registry+https://github.com/rust-lang/crates.io-index"3883
+checksum = "b428aee5c0fe9e5babd29e99d289b7f64718c444989aac0442d1fd6d3e3f66d1"3884
+dependencies = [3885
+ "macroific",3886
+ "proc-macro2",3887
+ "quote",3888
+ "syn 2.0.101",3889
+]3890
+3891
+[[package]]3892
+name = "measure_time"3893
+version = "0.9.0"3894
+source = "registry+https://github.com/rust-lang/crates.io-index"3895
+checksum = "51c55d61e72fc3ab704396c5fa16f4c184db37978ae4e94ca8959693a235fc0e"3896
+dependencies = [3897
+ "log",3898
+]3899
+3900
+[[package]]3901
+name = "memchr"3902
+version = "2.7.4"3903
+source = "registry+https://github.com/rust-lang/crates.io-index"3904
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"3905
+3906
+[[package]]3907
+name = "memmap2"3908
+version = "0.9.7"3909
+source = "registry+https://github.com/rust-lang/crates.io-index"3910
+checksum = "483758ad303d734cec05e5c12b41d7e93e6a6390c5e9dae6bdeb7c1259012d28"3911
+dependencies = [3912
+ "libc",3913
+]3914
+3915
+[[package]]3916
+name = "memmem"3917
+version = "0.1.1"3918
+source = "registry+https://github.com/rust-lang/crates.io-index"3919
+checksum = "a64a92489e2744ce060c349162be1c5f33c6969234104dbd99ddb5feb08b8c15"3920
+3921
+[[package]]3922
+name = "memoffset"3923
+version = "0.9.1"3924
+source = "registry+https://github.com/rust-lang/crates.io-index"3925
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"3926
+dependencies = [3927
+ "autocfg",3928
+]3929
+3930
+[[package]]3931
+name = "mime"3932
+version = "0.3.17"3933
+source = "registry+https://github.com/rust-lang/crates.io-index"3934
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"3935
+3936
+[[package]]3937
+name = "mime2ext"3938
+version = "0.1.54"3939
+source = "registry+https://github.com/rust-lang/crates.io-index"3940
+checksum = "cbf6f36070878c42c5233846cd3de24cf9016828fd47bc22957a687298bb21fc"3941
+3942
+[[package]]3943
+name = "minicov"3944
+version = "0.3.8"3945
+source = "registry+https://github.com/rust-lang/crates.io-index"3946
+checksum = "4869b6a491569605d66d3952bcdf03df789e5b536e5f0cf7758a7f08a55ae24d"3947
+dependencies = [3948
+ "cc",3949
+ "walkdir",3950
+]3951
+3952
+[[package]]3953
+name = "minimal-lexical"3954
+version = "0.2.1"3955
+source = "registry+https://github.com/rust-lang/crates.io-index"3956
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"3957
+3958
+[[package]]3959
+name = "miniz_oxide"3960
+version = "0.8.9"3961
+source = "registry+https://github.com/rust-lang/crates.io-index"3962
+checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"3963
+dependencies = [3964
+ "adler2",3965
+ "simd-adler32",3966
+]3967
+3968
+[[package]]3969
+name = "mio"3970
+version = "1.0.2"3971
+source = "registry+https://github.com/rust-lang/crates.io-index"3972
+checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec"3973
+dependencies = [3974
+ "hermit-abi 0.3.9",3975
+ "libc",3976
+ "log",3977
+ "wasi",3978
+ "windows-sys 0.52.0",3979
+]3980
+3981
+[[package]]3982
+name = "moxcms"3983
+version = "0.7.5"3984
+source = "registry+https://github.com/rust-lang/crates.io-index"3985
+checksum = "ddd32fa8935aeadb8a8a6b6b351e40225570a37c43de67690383d87ef170cd08"3986
+dependencies = [3987
+ "num-traits",3988
+ "pxfm",3989
+]3990
+3991
+[[package]]3992
+name = "multiverse"3993
+version = "0.1.0"3994
+dependencies = [3995
+ "clap",3996
+ "color-eyre",3997
+ "crossterm",3998
+ "futures-util",3999
+ "imbl",4000
+ "indexmap",4001
+ "itertools 0.14.0",4002
+ "matrix-sdk",4003
+ "matrix-sdk-base",4004
+ "matrix-sdk-common",4005
+ "matrix-sdk-ui",4006
+ "ratatui",4007
+ "ratatui-textarea",4008
+ "rpassword",4009
+ "serde_json",4010
+ "strum",4011
+ "textwrap",4012
+ "throbber-widgets-tui",4013
+ "tokio",4014
+ "tracing",4015
+ "tracing-appender",4016
+ "tracing-subscriber",4017
+ "tui-widget-list",4018
+]4019
+4020
+[[package]]4021
+name = "murmurhash32"4022
+version = "0.3.1"4023
+source = "registry+https://github.com/rust-lang/crates.io-index"4024
+checksum = "2195bf6aa996a481483b29d62a7663eed3fe39600c460e323f8ff41e90bdd89b"4025
+4026
+[[package]]4027
+name = "ndk-sys"4028
+version = "0.5.0+25.2.9519653"4029
+source = "registry+https://github.com/rust-lang/crates.io-index"4030
+checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691"4031
+dependencies = [4032
+ "jni-sys",4033
+]4034
+4035
+[[package]]4036
+name = "new_debug_unreachable"4037
+version = "1.0.6"4038
+source = "registry+https://github.com/rust-lang/crates.io-index"4039
+checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"4040
+4041
+[[package]]4042
+name = "nix"4043
+version = "0.29.0"4044
+source = "registry+https://github.com/rust-lang/crates.io-index"4045
+checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"4046
+dependencies = [4047
+ "bitflags 2.10.0",4048
+ "cfg-if",4049
+ "cfg_aliases",4050
+ "libc",4051
+ "memoffset",4052
+]4053
+4054
+[[package]]4055
+name = "nix"4056
+version = "0.30.1"4057
+source = "registry+https://github.com/rust-lang/crates.io-index"4058
+checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"4059
+dependencies = [4060
+ "bitflags 2.10.0",4061
+ "cfg-if",4062
+ "cfg_aliases",4063
+ "libc",4064
+]4065
+4066
+[[package]]4067
+name = "nom"4068
+version = "7.1.3"4069
+source = "registry+https://github.com/rust-lang/crates.io-index"4070
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"4071
+dependencies = [4072
+ "memchr",4073
+ "minimal-lexical",4074
+]4075
+4076
+[[package]]4077
+name = "nu-ansi-term"4078
+version = "0.50.1"4079
+source = "registry+https://github.com/rust-lang/crates.io-index"4080
+checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399"4081
+dependencies = [4082
+ "windows-sys 0.52.0",4083
+]4084
+4085
+[[package]]4086
+name = "num-conv"4087
+version = "0.2.0"4088
+source = "registry+https://github.com/rust-lang/crates.io-index"4089
+checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050"4090
+4091
+[[package]]4092
+name = "num-derive"4093
+version = "0.4.2"4094
+source = "registry+https://github.com/rust-lang/crates.io-index"4095
+checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"4096
+dependencies = [4097
+ "proc-macro2",4098
+ "quote",4099
+ "syn 2.0.101",4100
+]4101
+4102
+[[package]]4103
+name = "num-traits"4104
+version = "0.2.19"4105
+source = "registry+https://github.com/rust-lang/crates.io-index"4106
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"4107
+dependencies = [4108
+ "autocfg",4109
+ "libm",4110
+]4111
+4112
+[[package]]4113
+name = "num_cpus"4114
+version = "1.17.0"4115
+source = "registry+https://github.com/rust-lang/crates.io-index"4116
+checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b"4117
+dependencies = [4118
+ "hermit-abi 0.5.2",4119
+ "libc",4120
+]4121
+4122
+[[package]]4123
+name = "num_threads"4124
+version = "0.1.7"4125
+source = "registry+https://github.com/rust-lang/crates.io-index"4126
+checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"4127
+dependencies = [4128
+ "libc",4129
+]4130
+4131
+[[package]]4132
+name = "oauth2"4133
+version = "5.0.0"4134
+source = "registry+https://github.com/rust-lang/crates.io-index"4135
+checksum = "51e219e79014df21a225b1860a479e2dcd7cbd9130f4defd4bd0e191ea31d67d"4136
+dependencies = [4137
+ "base64",4138
+ "chrono",4139
+ "getrandom 0.2.15",4140
+ "http",4141
+ "rand 0.8.6",4142
+ "serde",4143
+ "serde_json",4144
+ "serde_path_to_error",4145
+ "sha2",4146
+ "thiserror 1.0.63",4147
+ "url",4148
+]4149
+4150
+[[package]]4151
+name = "oauth2-reqwest"4152
+version = "0.1.0-alpha.3"4153
+source = "registry+https://github.com/rust-lang/crates.io-index"4154
+checksum = "234fb5c965bbce983ee5de636a7a51d6a3223da8067ea02f9ab2d2d78ac08be2"4155
+dependencies = [4156
+ "oauth2",4157
+ "reqwest",4158
+]4159
+4160
+[[package]]4161
+name = "object"4162
+version = "0.37.3"4163
+source = "registry+https://github.com/rust-lang/crates.io-index"4164
+checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe"4165
+dependencies = [4166
+ "memchr",4167
+]4168
+4169
+[[package]]4170
+name = "once_cell"4171
+version = "1.21.4"4172
+source = "registry+https://github.com/rust-lang/crates.io-index"4173
+checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"4174
+4175
+[[package]]4176
+name = "oneshot"4177
+version = "0.1.13"4178
+source = "registry+https://github.com/rust-lang/crates.io-index"4179
+checksum = "269bca4c2591a28585d6bf10d9ed0332b7d76900a1b02bec41bdc3a2cdcda107"4180
+4181
+[[package]]4182
+name = "oorandom"4183
+version = "11.1.5"4184
+source = "registry+https://github.com/rust-lang/crates.io-index"4185
+checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"4186
+4187
+[[package]]4188
+name = "opaque-debug"4189
+version = "0.3.1"4190
+source = "registry+https://github.com/rust-lang/crates.io-index"4191
+checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"4192
+4193
+[[package]]4194
+name = "openssl-probe"4195
+version = "0.2.0"4196
+source = "registry+https://github.com/rust-lang/crates.io-index"4197
+checksum = "9f50d9b3dabb09ecd771ad0aa242ca6894994c130308ca3d7684634df8037391"4198
+4199
+[[package]]4200
+name = "option-ext"4201
+version = "0.2.0"4202
+source = "registry+https://github.com/rust-lang/crates.io-index"4203
+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"4204
+4205
+[[package]]4206
+name = "ordered-float"4207
+version = "4.6.0"4208
+source = "registry+https://github.com/rust-lang/crates.io-index"4209
+checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951"4210
+dependencies = [4211
+ "num-traits",4212
+]4213
+4214
+[[package]]4215
+name = "ordered-float"4216
+version = "5.3.0"4217
+source = "registry+https://github.com/rust-lang/crates.io-index"4218
+checksum = "b7d950ca161dc355eaf28f82b11345ed76c6e1f6eb1f4f4479e0323b9e2fbd0e"4219
+dependencies = [4220
+ "num-traits",4221
+]4222
+4223
+[[package]]4224
+name = "os_info"4225
+version = "3.11.0"4226
+source = "registry+https://github.com/rust-lang/crates.io-index"4227
+checksum = "41fc863e2ca13dc2d5c34fb22ea4a588248ac14db929616ba65c45f21744b1e9"4228
+dependencies = [4229
+ "log",4230
+ "serde",4231
+ "windows-sys 0.52.0",4232
+]4233
+4234
+[[package]]4235
+name = "ownedbytes"4236
+version = "0.9.0"4237
+source = "registry+https://github.com/rust-lang/crates.io-index"4238
+checksum = "2fbd56f7631767e61784dc43f8580f403f4475bd4aaa4da003e6295e1bab4a7e"4239
+dependencies = [4240
+ "stable_deref_trait",4241
+]4242
+4243
+[[package]]4244
+name = "owo-colors"4245
+version = "4.2.2"4246
+source = "registry+https://github.com/rust-lang/crates.io-index"4247
+checksum = "48dd4f4a2c8405440fd0462561f0e5806bd0f77e86f51c761481bdd4018b545e"4248
+4249
+[[package]]4250
+name = "paranoid-android"4251
+version = "0.2.2"4252
+source = "registry+https://github.com/rust-lang/crates.io-index"4253
+checksum = "101795d63d371b43e38d6e7254677657be82f17022f7f7893c268f33ac0caadc"4254
+dependencies = [4255
+ "lazy_static",4256
+ "ndk-sys",4257
+ "sharded-slab",4258
+ "smallvec",4259
+ "tracing-core",4260
+ "tracing-subscriber",4261
+]4262
+4263
+[[package]]4264
+name = "parking"4265
+version = "2.2.0"4266
+source = "registry+https://github.com/rust-lang/crates.io-index"4267
+checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae"4268
+4269
+[[package]]4270
+name = "parking_lot"4271
+version = "0.12.3"4272
+source = "registry+https://github.com/rust-lang/crates.io-index"4273
+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"4274
+dependencies = [4275
+ "lock_api",4276
+ "parking_lot_core",4277
+]4278
+4279
+[[package]]4280
+name = "parking_lot_core"4281
+version = "0.9.10"4282
+source = "registry+https://github.com/rust-lang/crates.io-index"4283
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"4284
+dependencies = [4285
+ "cfg-if",4286
+ "libc",4287
+ "redox_syscall",4288
+ "smallvec",4289
+ "windows-targets 0.52.6",4290
+]4291
+4292
+[[package]]4293
+name = "pbkdf2"4294
+version = "0.12.2"4295
+source = "registry+https://github.com/rust-lang/crates.io-index"4296
+checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2"4297
+dependencies = [4298
+ "digest",4299
+]4300
+4301
+[[package]]4302
+name = "percent-encoding"4303
+version = "2.3.2"4304
+source = "registry+https://github.com/rust-lang/crates.io-index"4305
+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"4306
+4307
+[[package]]4308
+name = "pest"4309
+version = "2.8.0"4310
+source = "registry+https://github.com/rust-lang/crates.io-index"4311
+checksum = "198db74531d58c70a361c42201efde7e2591e976d518caf7662a47dc5720e7b6"4312
+dependencies = [4313
+ "memchr",4314
+ "thiserror 2.0.18",4315
+ "ucd-trie",4316
+]4317
+4318
+[[package]]4319
+name = "pest_derive"4320
+version = "2.8.0"4321
+source = "registry+https://github.com/rust-lang/crates.io-index"4322
+checksum = "d725d9cfd79e87dccc9341a2ef39d1b6f6353d68c4b33c177febbe1a402c97c5"4323
+dependencies = [4324
+ "pest",4325
+ "pest_generator",4326
+]4327
+4328
+[[package]]4329
+name = "pest_generator"4330
+version = "2.8.0"4331
+source = "registry+https://github.com/rust-lang/crates.io-index"4332
+checksum = "db7d01726be8ab66ab32f9df467ae8b1148906685bbe75c82d1e65d7f5b3f841"4333
+dependencies = [4334
+ "pest",4335
+ "pest_meta",4336
+ "proc-macro2",4337
+ "quote",4338
+ "syn 2.0.101",4339
+]4340
+4341
+[[package]]4342
+name = "pest_meta"4343
+version = "2.8.0"4344
+source = "registry+https://github.com/rust-lang/crates.io-index"4345
+checksum = "7f9f832470494906d1fca5329f8ab5791cc60beb230c74815dff541cbd2b5ca0"4346
+dependencies = [4347
+ "once_cell",4348
+ "pest",4349
+ "sha2",4350
+]4351
+4352
+[[package]]4353
+name = "phf"4354
+version = "0.11.3"4355
+source = "registry+https://github.com/rust-lang/crates.io-index"4356
+checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"4357
+dependencies = [4358
+ "phf_macros",4359
+ "phf_shared 0.11.3",4360
+]4361
+4362
+[[package]]4363
+name = "phf"4364
+version = "0.13.1"4365
+source = "registry+https://github.com/rust-lang/crates.io-index"4366
+checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf"4367
+dependencies = [4368
+ "phf_shared 0.13.1",4369
+ "serde",4370
+]4371
+4372
+[[package]]4373
+name = "phf_codegen"4374
+version = "0.11.3"4375
+source = "registry+https://github.com/rust-lang/crates.io-index"4376
+checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a"4377
+dependencies = [4378
+ "phf_generator 0.11.3",4379
+ "phf_shared 0.11.3",4380
+]4381
+4382
+[[package]]4383
+name = "phf_codegen"4384
+version = "0.13.1"4385
+source = "registry+https://github.com/rust-lang/crates.io-index"4386
+checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1"4387
+dependencies = [4388
+ "phf_generator 0.13.1",4389
+ "phf_shared 0.13.1",4390
+]4391
+4392
+[[package]]4393
+name = "phf_generator"4394
+version = "0.11.3"4395
+source = "registry+https://github.com/rust-lang/crates.io-index"4396
+checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"4397
+dependencies = [4398
+ "phf_shared 0.11.3",4399
+ "rand 0.8.6",4400
+]4401
+4402
+[[package]]4403
+name = "phf_generator"4404
+version = "0.13.1"4405
+source = "registry+https://github.com/rust-lang/crates.io-index"4406
+checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737"4407
+dependencies = [4408
+ "fastrand",4409
+ "phf_shared 0.13.1",4410
+]4411
+4412
+[[package]]4413
+name = "phf_macros"4414
+version = "0.11.3"4415
+source = "registry+https://github.com/rust-lang/crates.io-index"4416
+checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216"4417
+dependencies = [4418
+ "phf_generator 0.11.3",4419
+ "phf_shared 0.11.3",4420
+ "proc-macro2",4421
+ "quote",4422
+ "syn 2.0.101",4423
+]4424
+4425
+[[package]]4426
+name = "phf_shared"4427
+version = "0.11.3"4428
+source = "registry+https://github.com/rust-lang/crates.io-index"4429
+checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5"4430
+dependencies = [4431
+ "siphasher",4432
+]4433
+4434
+[[package]]4435
+name = "phf_shared"4436
+version = "0.13.1"4437
+source = "registry+https://github.com/rust-lang/crates.io-index"4438
+checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266"4439
+dependencies = [4440
+ "siphasher",4441
+]4442
+4443
+[[package]]4444
+name = "pin-project-lite"4445
+version = "0.2.16"4446
+source = "registry+https://github.com/rust-lang/crates.io-index"4447
+checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"4448
+4449
+[[package]]4450
+name = "pin-utils"4451
+version = "0.1.0"4452
+source = "registry+https://github.com/rust-lang/crates.io-index"4453
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"4454
+4455
+[[package]]4456
+name = "pkcs8"4457
+version = "0.10.2"4458
+source = "registry+https://github.com/rust-lang/crates.io-index"4459
+checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"4460
+dependencies = [4461
+ "der",4462
+ "spki",4463
+]4464
+4465
+[[package]]4466
+name = "pkg-config"4467
+version = "0.3.30"4468
+source = "registry+https://github.com/rust-lang/crates.io-index"4469
+checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"4470
+4471
+[[package]]4472
+name = "plain"4473
+version = "0.2.3"4474
+source = "registry+https://github.com/rust-lang/crates.io-index"4475
+checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"4476
+4477
+[[package]]4478
+name = "plotters"4479
+version = "0.3.6"4480
+source = "registry+https://github.com/rust-lang/crates.io-index"4481
+checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3"4482
+dependencies = [4483
+ "num-traits",4484
+ "plotters-backend",4485
+ "plotters-svg",4486
+ "wasm-bindgen",4487
+ "web-sys",4488
+]4489
+4490
+[[package]]4491
+name = "plotters-backend"4492
+version = "0.3.6"4493
+source = "registry+https://github.com/rust-lang/crates.io-index"4494
+checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7"4495
+4496
+[[package]]4497
+name = "plotters-svg"4498
+version = "0.3.6"4499
+source = "registry+https://github.com/rust-lang/crates.io-index"4500
+checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705"4501
+dependencies = [4502
+ "plotters-backend",4503
+]4504
+4505
+[[package]]4506
+name = "poly1305"4507
+version = "0.8.0"4508
+source = "registry+https://github.com/rust-lang/crates.io-index"4509
+checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf"4510
+dependencies = [4511
+ "cpufeatures 0.2.12",4512
+ "opaque-debug",4513
+ "universal-hash",4514
+]4515
+4516
+[[package]]4517
+name = "portable-atomic"4518
+version = "1.13.1"4519
+source = "registry+https://github.com/rust-lang/crates.io-index"4520
+checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"4521
+4522
+[[package]]4523
+name = "powerfmt"4524
+version = "0.2.0"4525
+source = "registry+https://github.com/rust-lang/crates.io-index"4526
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"4527
+4528
+[[package]]4529
+name = "ppv-lite86"4530
+version = "0.2.17"4531
+source = "registry+https://github.com/rust-lang/crates.io-index"4532
+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"4533
+4534
+[[package]]4535
+name = "precomputed-hash"4536
+version = "0.1.1"4537
+source = "registry+https://github.com/rust-lang/crates.io-index"4538
+checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"4539
+4540
+[[package]]4541
+name = "prettyplease"4542
+version = "0.2.34"4543
+source = "registry+https://github.com/rust-lang/crates.io-index"4544
+checksum = "6837b9e10d61f45f987d50808f83d1ee3d206c66acf650c3e4ae2e1f6ddedf55"4545
+dependencies = [4546
+ "proc-macro2",4547
+ "syn 2.0.101",4548
+]4549
+4550
+[[package]]4551
+name = "proc-macro-crate"4552
+version = "3.2.0"4553
+source = "registry+https://github.com/rust-lang/crates.io-index"4554
+checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b"4555
+dependencies = [4556
+ "toml_edit",4557
+]4558
+4559
+[[package]]4560
+name = "proc-macro-error-attr2"4561
+version = "2.0.0"4562
+source = "registry+https://github.com/rust-lang/crates.io-index"4563
+checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5"4564
+dependencies = [4565
+ "proc-macro2",4566
+ "quote",4567
+]4568
+4569
+[[package]]4570
+name = "proc-macro-error2"4571
+version = "2.0.1"4572
+source = "registry+https://github.com/rust-lang/crates.io-index"4573
+checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802"4574
+dependencies = [4575
+ "proc-macro-error-attr2",4576
+ "proc-macro2",4577
+ "quote",4578
+]4579
+4580
+[[package]]4581
+name = "proc-macro2"4582
+version = "1.0.106"4583
+source = "registry+https://github.com/rust-lang/crates.io-index"4584
+checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"4585
+dependencies = [4586
+ "unicode-ident",4587
+]4588
+4589
+[[package]]4590
+name = "proptest"4591
+version = "1.9.0"4592
+source = "registry+https://github.com/rust-lang/crates.io-index"4593
+checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40"4594
+dependencies = [4595
+ "bitflags 2.10.0",4596
+ "num-traits",4597
+ "rand 0.9.4",4598
+ "rand_chacha 0.9.0",4599
+ "rand_xorshift",4600
+ "regex-syntax",4601
+ "unarray",4602
+]4603
+4604
+[[package]]4605
+name = "prost"4606
+version = "0.14.3"4607
+source = "registry+https://github.com/rust-lang/crates.io-index"4608
+checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568"4609
+dependencies = [4610
+ "bytes",4611
+ "prost-derive",4612
+]4613
+4614
+[[package]]4615
+name = "prost-derive"4616
+version = "0.14.3"4617
+source = "registry+https://github.com/rust-lang/crates.io-index"4618
+checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b"4619
+dependencies = [4620
+ "anyhow",4621
+ "itertools 0.14.0",4622
+ "proc-macro2",4623
+ "quote",4624
+ "syn 2.0.101",4625
+]4626
+4627
+[[package]]4628
+name = "pulldown-cmark"4629
+version = "0.13.0"4630
+source = "registry+https://github.com/rust-lang/crates.io-index"4631
+checksum = "1e8bbe1a966bd2f362681a44f6edce3c2310ac21e4d5067a6e7ec396297a6ea0"4632
+dependencies = [4633
+ "bitflags 2.10.0",4634
+ "memchr",4635
+ "pulldown-cmark-escape",4636
+ "unicase",4637
+]4638
+4639
+[[package]]4640
+name = "pulldown-cmark-escape"4641
+version = "0.11.0"4642
+source = "registry+https://github.com/rust-lang/crates.io-index"4643
+checksum = "007d8adb5ddab6f8e3f491ac63566a7d5002cc7ed73901f72057943fa71ae1ae"4644
+4645
+[[package]]4646
+name = "pxfm"4647
+version = "0.1.20"4648
+source = "registry+https://github.com/rust-lang/crates.io-index"4649
+checksum = "6e790881194f6f6e86945f0a42a6981977323669aeb6c40e9c7ec253133b96f8"4650
+dependencies = [4651
+ "num-traits",4652
+]4653
+4654
+[[package]]4655
+name = "qrcode"4656
+version = "0.14.1"4657
+source = "registry+https://github.com/rust-lang/crates.io-index"4658
+checksum = "d68782463e408eb1e668cf6152704bd856c78c5b6417adaee3203d8f4c1fc9ec"4659
+dependencies = [4660
+ "image",4661
+]4662
+4663
+[[package]]4664
+name = "quinn"4665
+version = "0.11.9"4666
+source = "registry+https://github.com/rust-lang/crates.io-index"4667
+checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"4668
+dependencies = [4669
+ "bytes",4670
+ "cfg_aliases",4671
+ "pin-project-lite",4672
+ "quinn-proto",4673
+ "quinn-udp",4674
+ "rustc-hash",4675
+ "rustls",4676
+ "socket2 0.6.0",4677
+ "thiserror 2.0.18",4678
+ "tokio",4679
+ "tracing",4680
+ "web-time",4681
+]4682
+4683
+[[package]]4684
+name = "quinn-proto"4685
+version = "0.11.14"4686
+source = "registry+https://github.com/rust-lang/crates.io-index"4687
+checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098"4688
+dependencies = [4689
+ "aws-lc-rs",4690
+ "bytes",4691
+ "getrandom 0.3.4",4692
+ "lru-slab",4693
+ "rand 0.9.4",4694
+ "ring",4695
+ "rustc-hash",4696
+ "rustls",4697
+ "rustls-pki-types",4698
+ "slab",4699
+ "thiserror 2.0.18",4700
+ "tinyvec",4701
+ "tracing",4702
+ "web-time",4703
+]4704
+4705
+[[package]]4706
+name = "quinn-udp"4707
+version = "0.5.3"4708
+source = "registry+https://github.com/rust-lang/crates.io-index"4709
+checksum = "25a78e6f726d84fcf960409f509ae354a32648f090c8d32a2ea8b1a1bc3bab14"4710
+dependencies = [4711
+ "libc",4712
+ "once_cell",4713
+ "socket2 0.5.7",4714
+ "tracing",4715
+ "windows-sys 0.52.0",4716
+]4717
+4718
+[[package]]4719
+name = "quote"4720
+version = "1.0.37"4721
+source = "registry+https://github.com/rust-lang/crates.io-index"4722
+checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"4723
+dependencies = [4724
+ "proc-macro2",4725
+]4726
+4727
+[[package]]4728
+name = "r-efi"4729
+version = "5.3.0"4730
+source = "registry+https://github.com/rust-lang/crates.io-index"4731
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"4732
+4733
+[[package]]4734
+name = "r-efi"4735
+version = "6.0.0"4736
+source = "registry+https://github.com/rust-lang/crates.io-index"4737
+checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"4738
+4739
+[[package]]4740
+name = "rand"4741
+version = "0.8.6"4742
+source = "registry+https://github.com/rust-lang/crates.io-index"4743
+checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a"4744
+dependencies = [4745
+ "libc",4746
+ "rand_chacha 0.3.1",4747
+ "rand_core 0.6.4",4748
+]4749
+4750
+[[package]]4751
+name = "rand"4752
+version = "0.9.4"4753
+source = "registry+https://github.com/rust-lang/crates.io-index"4754
+checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea"4755
+dependencies = [4756
+ "rand_chacha 0.9.0",4757
+ "rand_core 0.9.3",4758
+]4759
+4760
+[[package]]4761
+name = "rand"4762
+version = "0.10.1"4763
+source = "registry+https://github.com/rust-lang/crates.io-index"4764
+checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207"4765
+dependencies = [4766
+ "chacha20 0.10.0",4767
+ "getrandom 0.4.2",4768
+ "rand_core 0.10.0",4769
+]4770
+4771
+[[package]]4772
+name = "rand_chacha"4773
+version = "0.3.1"4774
+source = "registry+https://github.com/rust-lang/crates.io-index"4775
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"4776
+dependencies = [4777
+ "ppv-lite86",4778
+ "rand_core 0.6.4",4779
+]4780
+4781
+[[package]]4782
+name = "rand_chacha"4783
+version = "0.9.0"4784
+source = "registry+https://github.com/rust-lang/crates.io-index"4785
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"4786
+dependencies = [4787
+ "ppv-lite86",4788
+ "rand_core 0.9.3",4789
+]4790
+4791
+[[package]]4792
+name = "rand_core"4793
+version = "0.6.4"4794
+source = "registry+https://github.com/rust-lang/crates.io-index"4795
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"4796
+dependencies = [4797
+ "getrandom 0.2.15",4798
+]4799
+4800
+[[package]]4801
+name = "rand_core"4802
+version = "0.9.3"4803
+source = "registry+https://github.com/rust-lang/crates.io-index"4804
+checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"4805
+dependencies = [4806
+ "getrandom 0.3.4",4807
+]4808
+4809
+[[package]]4810
+name = "rand_core"4811
+version = "0.10.0"4812
+source = "registry+https://github.com/rust-lang/crates.io-index"4813
+checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba"4814
+4815
+[[package]]4816
+name = "rand_xorshift"4817
+version = "0.4.0"4818
+source = "registry+https://github.com/rust-lang/crates.io-index"4819
+checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a"4820
+dependencies = [4821
+ "rand_core 0.9.3",4822
+]4823
+4824
+[[package]]4825
+name = "rand_xoshiro"4826
+version = "0.7.0"4827
+source = "registry+https://github.com/rust-lang/crates.io-index"4828
+checksum = "f703f4665700daf5512dcca5f43afa6af89f09db47fb56be587f80636bda2d41"4829
+dependencies = [4830
+ "rand_core 0.9.3",4831
+]4832
+4833
+[[package]]4834
+name = "ratatui"4835
+version = "0.30.0"4836
+source = "registry+https://github.com/rust-lang/crates.io-index"4837
+checksum = "d1ce67fb8ba4446454d1c8dbaeda0557ff5e94d39d5e5ed7f10a65eb4c8266bc"4838
+dependencies = [4839
+ "instability",4840
+ "ratatui-core",4841
+ "ratatui-crossterm",4842
+ "ratatui-macros",4843
+ "ratatui-termwiz",4844
+ "ratatui-widgets",4845
+]4846
+4847
+[[package]]4848
+name = "ratatui-core"4849
+version = "0.1.0"4850
+source = "registry+https://github.com/rust-lang/crates.io-index"4851
+checksum = "5ef8dea09a92caaf73bff7adb70b76162e5937524058a7e5bff37869cbbec293"4852
+dependencies = [4853
+ "bitflags 2.10.0",4854
+ "compact_str",4855
+ "hashbrown 0.16.1",4856
+ "indoc",4857
+ "itertools 0.14.0",4858
+ "kasuari",4859
+ "lru",4860
+ "strum",4861
+ "thiserror 2.0.18",4862
+ "unicode-segmentation",4863
+ "unicode-truncate",4864
+ "unicode-width",4865
+]4866
+4867
+[[package]]4868
+name = "ratatui-crossterm"4869
+version = "0.1.0"4870
+source = "registry+https://github.com/rust-lang/crates.io-index"4871
+checksum = "577c9b9f652b4c121fb25c6a391dd06406d3b092ba68827e6d2f09550edc54b3"4872
+dependencies = [4873
+ "cfg-if",4874
+ "crossterm",4875
+ "instability",4876
+ "ratatui-core",4877
+]4878
+4879
+[[package]]4880
+name = "ratatui-macros"4881
+version = "0.7.0"4882
+source = "registry+https://github.com/rust-lang/crates.io-index"4883
+checksum = "a7f1342a13e83e4bb9d0b793d0ea762be633f9582048c892ae9041ef39c936f4"4884
+dependencies = [4885
+ "ratatui-core",4886
+ "ratatui-widgets",4887
+]4888
+4889
+[[package]]4890
+name = "ratatui-termwiz"4891
+version = "0.1.0"4892
+source = "registry+https://github.com/rust-lang/crates.io-index"4893
+checksum = "0f76fe0bd0ed4295f0321b1676732e2454024c15a35d01904ddb315afd3d545c"4894
+dependencies = [4895
+ "ratatui-core",4896
+ "termwiz",4897
+]4898
+4899
+[[package]]4900
+name = "ratatui-textarea"4901
+version = "0.9.1"4902
+source = "registry+https://github.com/rust-lang/crates.io-index"4903
+checksum = "2950274c0e155944158cf766848dd87bd6db6dad27da1c23ee4a7c8de71dbf1f"4904
+dependencies = [4905
+ "ratatui-core",4906
+ "ratatui-crossterm",4907
+ "ratatui-widgets",4908
+ "unicode-segmentation",4909
+ "unicode-width",4910
+]4911
+4912
+[[package]]4913
+name = "ratatui-widgets"4914
+version = "0.3.0"4915
+source = "registry+https://github.com/rust-lang/crates.io-index"4916
+checksum = "d7dbfa023cd4e604c2553483820c5fe8aa9d71a42eea5aa77c6e7f35756612db"4917
+dependencies = [4918
+ "bitflags 2.10.0",4919
+ "hashbrown 0.16.1",4920
+ "indoc",4921
+ "instability",4922
+ "itertools 0.14.0",4923
+ "line-clipping",4924
+ "ratatui-core",4925
+ "strum",4926
+ "time",4927
+ "unicode-segmentation",4928
+ "unicode-width",4929
+]4930
+4931
+[[package]]4932
+name = "rayon"4933
+version = "1.10.0"4934
+source = "registry+https://github.com/rust-lang/crates.io-index"4935
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"4936
+dependencies = [4937
+ "either",4938
+ "rayon-core",4939
+]4940
+4941
+[[package]]4942
+name = "rayon-core"4943
+version = "1.12.1"4944
+source = "registry+https://github.com/rust-lang/crates.io-index"4945
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"4946
+dependencies = [4947
+ "crossbeam-deque",4948
+ "crossbeam-utils",4949
+]4950
+4951
+[[package]]4952
+name = "readlock"4953
+version = "0.1.8"4954
+source = "registry+https://github.com/rust-lang/crates.io-index"4955
+checksum = "072cfe5b1d2dcd38d20e18f85e9c9978b6cc08f0b373e9f1fff1541335622974"4956
+4957
+[[package]]4958
+name = "readlock-tokio"4959
+version = "0.1.3"4960
+source = "registry+https://github.com/rust-lang/crates.io-index"4961
+checksum = "867fac64d07214a87e5cf4e88b4ce855844a1cea243534392377d1ac2c911653"4962
+dependencies = [4963
+ "tokio",4964
+]4965
+4966
+[[package]]4967
+name = "redox_syscall"4968
+version = "0.5.3"4969
+source = "registry+https://github.com/rust-lang/crates.io-index"4970
+checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4"4971
+dependencies = [4972
+ "bitflags 2.10.0",4973
+]4974
+4975
+[[package]]4976
+name = "redox_users"4977
+version = "0.5.0"4978
+source = "registry+https://github.com/rust-lang/crates.io-index"4979
+checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b"4980
+dependencies = [4981
+ "getrandom 0.2.15",4982
+ "libredox",4983
+ "thiserror 2.0.18",4984
+]4985
+4986
+[[package]]4987
+name = "regex"4988
+version = "1.12.2"4989
+source = "registry+https://github.com/rust-lang/crates.io-index"4990
+checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"4991
+dependencies = [4992
+ "aho-corasick",4993
+ "memchr",4994
+ "regex-automata",4995
+ "regex-syntax",4996
+]4997
+4998
+[[package]]4999
+name = "regex-automata"5000
+version = "0.4.13"5001
+source = "registry+https://github.com/rust-lang/crates.io-index"5002
+checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"5003
+dependencies = [5004
+ "aho-corasick",5005
+ "memchr",5006
+ "regex-syntax",5007
+]5008
+5009
+[[package]]5010
+name = "regex-syntax"5011
+version = "0.8.5"5012
+source = "registry+https://github.com/rust-lang/crates.io-index"5013
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"5014
+5015
+[[package]]5016
+name = "reqwest"5017
+version = "0.13.2"5018
+source = "registry+https://github.com/rust-lang/crates.io-index"5019
+checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801"5020
+dependencies = [5021
+ "base64",5022
+ "bytes",5023
+ "futures-channel",5024
+ "futures-core",5025
+ "futures-util",5026
+ "h2",5027
+ "http",5028
+ "http-body",5029
+ "http-body-util",5030
+ "hyper",5031
+ "hyper-rustls",5032
+ "hyper-util",5033
+ "js-sys",5034
+ "log",5035
+ "percent-encoding",5036
+ "pin-project-lite",5037
+ "quinn",5038
+ "rustls",5039
+ "rustls-pki-types",5040
+ "rustls-platform-verifier",5041
+ "serde",5042
+ "serde_json",5043
+ "sync_wrapper",5044
+ "tokio",5045
+ "tokio-rustls",5046
+ "tokio-util",5047
+ "tower",5048
+ "tower-http",5049
+ "tower-service",5050
+ "url",5051
+ "wasm-bindgen",5052
+ "wasm-bindgen-futures",5053
+ "wasm-streams",5054
+ "web-sys",5055
+]5056
+5057
+[[package]]5058
+name = "ring"5059
+version = "0.17.14"5060
+source = "registry+https://github.com/rust-lang/crates.io-index"5061
+checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"5062
+dependencies = [5063
+ "cc",5064
+ "cfg-if",5065
+ "getrandom 0.2.15",5066
+ "libc",5067
+ "untrusted",5068
+ "windows-sys 0.52.0",5069
+]5070
+5071
+[[package]]5072
+name = "rmp"5073
+version = "0.8.15"5074
+source = "registry+https://github.com/rust-lang/crates.io-index"5075
+checksum = "4ba8be72d372b2c9b35542551678538b562e7cf86c3315773cae48dfbfe7790c"5076
+dependencies = [5077
+ "num-traits",5078
+]5079
+5080
+[[package]]5081
+name = "rmp-serde"5082
+version = "1.3.0"5083
+source = "registry+https://github.com/rust-lang/crates.io-index"5084
+checksum = "52e599a477cf9840e92f2cde9a7189e67b42c57532749bf90aea6ec10facd4db"5085
+dependencies = [5086
+ "byteorder",5087
+ "rmp",5088
+ "serde",5089
+]5090
+5091
+[[package]]5092
+name = "rpassword"5093
+version = "7.5.3"5094
+source = "registry+https://github.com/rust-lang/crates.io-index"5095
+checksum = "835a57a69104632d64deb0df2e09a69945cd7a6eab4070fc9b1d7e50cf6c3edc"5096
+dependencies = [5097
+ "libc",5098
+ "rtoolbox",5099
+ "windows-sys 0.61.2",5100
+]5101
+5102
+[[package]]5103
+name = "rtoolbox"5104
+version = "0.0.2"5105
+source = "registry+https://github.com/rust-lang/crates.io-index"5106
+checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e"5107
+dependencies = [5108
+ "libc",5109
+ "windows-sys 0.48.0",5110
+]5111
+5112
+[[package]]5113
+name = "ruma"5114
+version = "0.16.0"5115
+source = "registry+https://github.com/rust-lang/crates.io-index"5116
+checksum = "ee4fe5bfacdb0e95e733da3b6c37d98edf46447a4a8e8dea824e0da266d8ad59"5117
+dependencies = [5118
+ "assign",5119
+ "js_int",5120
+ "js_option",5121
+ "language-tags",5122
+ "ruma-client-api",5123
+ "ruma-common",5124
+ "ruma-events",5125
+ "ruma-federation-api",5126
+ "ruma-html",5127
+ "ruma-signatures",5128
+ "web-time",5129
+]5130
+5131
+[[package]]5132
+name = "ruma-client-api"5133
+version = "0.24.0"5134
+source = "registry+https://github.com/rust-lang/crates.io-index"5135
+checksum = "bf7ca43a888ca569168d7e3901f4dd14a777b860bb19f4c08e35414162eb261c"5136
+dependencies = [5137
+ "as_variant",5138
+ "assign",5139
+ "bytes",5140
+ "http",5141
+ "js_int",5142
+ "js_option",5143
+ "maplit",5144
+ "ruma-common",5145
+ "ruma-events",5146
+ "serde",5147
+ "serde_html_form",5148
+ "serde_json",5149
+ "thiserror 2.0.18",5150
+ "url",5151
+ "web-time",5152
+]5153
+5154
+[[package]]5155
+name = "ruma-common"5156
+version = "0.19.0"5157
+source = "registry+https://github.com/rust-lang/crates.io-index"5158
+checksum = "2c3b4f00112791b490acce57df1ce3eb3f88899b045bebcff8a29f75369640cc"5159
+dependencies = [5160
+ "as_variant",5161
+ "base64",5162
+ "bytes",5163
+ "date_header",5164
+ "form_urlencoded",5165
+ "getrandom 0.4.2",5166
+ "http",5167
+ "indexmap",5168
+ "js_int",5169
+ "konst",5170
+ "percent-encoding",5171
+ "rand 0.10.1",5172
+ "regex",5173
+ "ruma-identifiers-validation",5174
+ "ruma-macros",5175
+ "serde",5176
+ "serde_html_form",5177
+ "serde_json",5178
+ "thiserror 2.0.18",5179
+ "time",5180
+ "tracing",5181
+ "url",5182
+ "uuid",5183
+ "web-time",5184
+ "wildmatch",5185
+ "zeroize",5186
+]5187
+5188
+[[package]]5189
+name = "ruma-events"5190
+version = "0.34.0"5191
+source = "registry+https://github.com/rust-lang/crates.io-index"5192
+checksum = "85d2f90830fc131691349b96a69ff53444eb6c3e8dc7869c77961b43cfaf3344"5193
+dependencies = [5194
+ "as_variant",5195
+ "indexmap",5196
+ "js_int",5197
+ "js_option",5198
+ "language-tags",5199
+ "pulldown-cmark",5200
+ "ruma-common",5201
+ "ruma-html",5202
+ "ruma-macros",5203
+ "serde",5204
+ "serde_json",5205
+ "thiserror 2.0.18",5206
+ "tracing",5207
+ "web-time",5208
+ "wildmatch",5209
+ "zeroize",5210
+]5211
+5212
+[[package]]5213
+name = "ruma-federation-api"5214
+version = "0.15.0"5215
+source = "registry+https://github.com/rust-lang/crates.io-index"5216
+checksum = "d4c9638f18d8da3183ebdf034a552ba6d7e86d217e6e680eebaa97c4e8d13d1a"5217
+dependencies = [5218
+ "headers",5219
+ "http",5220
+ "http-auth",5221
+ "httparse",5222
+ "js_int",5223
+ "memchr",5224
+ "mime",5225
+ "ruma-common",5226
+ "ruma-events",5227
+ "ruma-signatures",5228
+ "serde",5229
+ "serde_json",5230
+ "thiserror 2.0.18",5231
+ "tracing",5232
+]5233
+5234
+[[package]]5235
+name = "ruma-html"5236
+version = "0.8.0"5237
+source = "registry+https://github.com/rust-lang/crates.io-index"5238
+checksum = "48d33a944650f4bbd2188dd204d39dd87a9a1498f14b3a13252910c90ed7cd43"5239
+dependencies = [5240
+ "as_variant",5241
+ "html5ever",5242
+ "tracing",5243
+ "wildmatch",5244
+]5245
+5246
+[[package]]5247
+name = "ruma-identifiers-validation"5248
+version = "0.12.1"5249
+source = "registry+https://github.com/rust-lang/crates.io-index"5250
+checksum = "9d6cff00317675f487c4e7ccfb18875a14c5a14867b51d13f2a826053f03c432"5251
+dependencies = [5252
+ "js_int",5253
+ "thiserror 2.0.18",5254
+]5255
+5256
+[[package]]5257
+name = "ruma-macros"5258
+version = "0.19.0"5259
+source = "registry+https://github.com/rust-lang/crates.io-index"5260
+checksum = "c8cfb39eaa9b9fd389126ff941e060b496add5cbbfef559d80c46e571dda459c"5261
+dependencies = [5262
+ "as_variant",5263
+ "cfg-if",5264
+ "proc-macro-crate",5265
+ "proc-macro2",5266
+ "quote",5267
+ "ruma-identifiers-validation",5268
+ "serde",5269
+ "syn 2.0.101",5270
+ "toml 1.1.2+spec-1.1.0",5271
+]5272
+5273
+[[package]]5274
+name = "ruma-signatures"5275
+version = "0.21.0"5276
+source = "registry+https://github.com/rust-lang/crates.io-index"5277
+checksum = "3d374cdc542bcb881da80fcb3e58403e5fd17cfe5e0ab03939fdf12f99ef9ba2"5278
+dependencies = [5279
+ "base64",5280
+ "ed25519-dalek",5281
+ "pkcs8",5282
+ "rand 0.10.1",5283
+ "ruma-common",5284
+ "serde_json",5285
+ "sha2",5286
+ "thiserror 2.0.18",5287
+]5288
+5289
+[[package]]5290
+name = "rusqlite"5291
+version = "0.37.0"5292
+source = "registry+https://github.com/rust-lang/crates.io-index"5293
+checksum = "165ca6e57b20e1351573e3729b958bc62f0e48025386970b6e4d29e7a7e71f3f"5294
+dependencies = [5295
+ "bitflags 2.10.0",5296
+ "fallible-iterator",5297
+ "fallible-streaming-iterator",5298
+ "hashlink",5299
+ "libsqlite3-sys",5300
+ "smallvec",5301
+]5302
+5303
+[[package]]5304
+name = "rust-stemmers"5305
+version = "1.2.0"5306
+source = "registry+https://github.com/rust-lang/crates.io-index"5307
+checksum = "e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54"5308
+dependencies = [5309
+ "serde",5310
+ "serde_derive",5311
+]5312
+5313
+[[package]]5314
+name = "rustc-demangle"5315
+version = "0.1.24"5316
+source = "registry+https://github.com/rust-lang/crates.io-index"5317
+checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"5318
+5319
+[[package]]5320
+name = "rustc-hash"5321
+version = "2.0.0"5322
+source = "registry+https://github.com/rust-lang/crates.io-index"5323
+checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"5324
+5325
+[[package]]5326
+name = "rustc_version"5327
+version = "0.4.0"5328
+source = "registry+https://github.com/rust-lang/crates.io-index"5329
+checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"5330
+dependencies = [5331
+ "semver",5332
+]5333
+5334
+[[package]]5335
+name = "rustix"5336
+version = "1.0.8"5337
+source = "registry+https://github.com/rust-lang/crates.io-index"5338
+checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"5339
+dependencies = [5340
+ "bitflags 2.10.0",5341
+ "errno",5342
+ "libc",5343
+ "linux-raw-sys",5344
+ "windows-sys 0.60.2",5345
+]5346
+5347
+[[package]]5348
+name = "rustls"5349
+version = "0.23.38"5350
+source = "registry+https://github.com/rust-lang/crates.io-index"5351
+checksum = "69f9466fb2c14ea04357e91413efb882e2a6d4a406e625449bc0a5d360d53a21"5352
+dependencies = [5353
+ "aws-lc-rs",5354
+ "log",5355
+ "once_cell",5356
+ "rustls-pki-types",5357
+ "rustls-webpki",5358
+ "subtle",5359
+ "zeroize",5360
+]5361
+5362
+[[package]]5363
+name = "rustls-native-certs"5364
+version = "0.8.3"5365
+source = "registry+https://github.com/rust-lang/crates.io-index"5366
+checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63"5367
+dependencies = [5368
+ "openssl-probe",5369
+ "rustls-pki-types",5370
+ "schannel",5371
+ "security-framework",5372
+]5373
+5374
+[[package]]5375
+name = "rustls-pki-types"5376
+version = "1.14.0"5377
+source = "registry+https://github.com/rust-lang/crates.io-index"5378
+checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd"5379
+dependencies = [5380
+ "web-time",5381
+ "zeroize",5382
+]5383
+5384
+[[package]]5385
+name = "rustls-platform-verifier"5386
+version = "0.6.2"5387
+source = "registry+https://github.com/rust-lang/crates.io-index"5388
+checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784"5389
+dependencies = [5390
+ "core-foundation",5391
+ "core-foundation-sys",5392
+ "jni",5393
+ "log",5394
+ "once_cell",5395
+ "rustls",5396
+ "rustls-native-certs",5397
+ "rustls-platform-verifier-android",5398
+ "rustls-webpki",5399
+ "security-framework",5400
+ "security-framework-sys",5401
+ "webpki-root-certs",5402
+ "windows-sys 0.61.2",5403
+]5404
+5405
+[[package]]5406
+name = "rustls-platform-verifier-android"5407
+version = "0.1.1"5408
+source = "registry+https://github.com/rust-lang/crates.io-index"5409
+checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f"5410
+5411
+[[package]]5412
+name = "rustls-webpki"5413
+version = "0.103.13"5414
+source = "registry+https://github.com/rust-lang/crates.io-index"5415
+checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e"5416
+dependencies = [5417
+ "aws-lc-rs",5418
+ "ring",5419
+ "rustls-pki-types",5420
+ "untrusted",5421
+]5422
+5423
+[[package]]5424
+name = "rustversion"5425
+version = "1.0.22"5426
+source = "registry+https://github.com/rust-lang/crates.io-index"5427
+checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"5428
+5429
+[[package]]5430
+name = "ryu"5431
+version = "1.0.18"5432
+source = "registry+https://github.com/rust-lang/crates.io-index"5433
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"5434
+5435
+[[package]]5436
+name = "same-file"5437
+version = "1.0.6"5438
+source = "registry+https://github.com/rust-lang/crates.io-index"5439
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"5440
+dependencies = [5441
+ "winapi-util",5442
+]5443
+5444
+[[package]]5445
+name = "schannel"5446
+version = "0.1.29"5447
+source = "registry+https://github.com/rust-lang/crates.io-index"5448
+checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939"5449
+dependencies = [5450
+ "windows-sys 0.61.2",5451
+]5452
+5453
+[[package]]5454
+name = "scoped-tls"5455
+version = "1.0.1"5456
+source = "registry+https://github.com/rust-lang/crates.io-index"5457
+checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"5458
+5459
+[[package]]5460
+name = "scopeguard"5461
+version = "1.2.0"5462
+source = "registry+https://github.com/rust-lang/crates.io-index"5463
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"5464
+5465
+[[package]]5466
+name = "scroll"5467
+version = "0.12.0"5468
+source = "registry+https://github.com/rust-lang/crates.io-index"5469
+checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6"5470
+dependencies = [5471
+ "scroll_derive",5472
+]5473
+5474
+[[package]]5475
+name = "scroll_derive"5476
+version = "0.12.0"5477
+source = "registry+https://github.com/rust-lang/crates.io-index"5478
+checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932"5479
+dependencies = [5480
+ "proc-macro2",5481
+ "quote",5482
+ "syn 2.0.101",5483
+]5484
+5485
+[[package]]5486
+name = "sealed"5487
+version = "0.6.0"5488
+source = "registry+https://github.com/rust-lang/crates.io-index"5489
+checksum = "22f968c5ea23d555e670b449c1c5e7b2fc399fdaec1d304a17cd48e288abc107"5490
+dependencies = [5491
+ "proc-macro2",5492
+ "quote",5493
+ "syn 2.0.101",5494
+]5495
+5496
+[[package]]5497
+name = "security-framework"5498
+version = "3.5.1"5499
+source = "registry+https://github.com/rust-lang/crates.io-index"5500
+checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef"5501
+dependencies = [5502
+ "bitflags 2.10.0",5503
+ "core-foundation",5504
+ "core-foundation-sys",5505
+ "libc",5506
+ "security-framework-sys",5507
+]5508
+5509
+[[package]]5510
+name = "security-framework-sys"5511
+version = "2.15.0"5512
+source = "registry+https://github.com/rust-lang/crates.io-index"5513
+checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"5514
+dependencies = [5515
+ "core-foundation-sys",5516
+ "libc",5517
+]5518
+5519
+[[package]]5520
+name = "semver"5521
+version = "1.0.27"5522
+source = "registry+https://github.com/rust-lang/crates.io-index"5523
+checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"5524
+dependencies = [5525
+ "serde",5526
+ "serde_core",5527
+]5528
+5529
+[[package]]5530
+name = "sentry"5531
+version = "0.47.0"5532
+source = "registry+https://github.com/rust-lang/crates.io-index"5533
+checksum = "eb25f439f97d26fea01d717fa626167ceffcd981addaa670001e70505b72acbb"5534
+dependencies = [5535
+ "cfg_aliases",5536
+ "httpdate",5537
+ "reqwest",5538
+ "sentry-backtrace",5539
+ "sentry-contexts",5540
+ "sentry-core",5541
+ "sentry-debug-images",5542
+ "sentry-panic",5543
+ "sentry-tracing",5544
+ "tokio",5545
+]5546
+5547
+[[package]]5548
+name = "sentry-backtrace"5549
+version = "0.47.0"5550
+source = "registry+https://github.com/rust-lang/crates.io-index"5551
+checksum = "46a8c2c1bd5c1f735e84f28b48e7d72efcaafc362b7541bc8253e60e8fcdffc6"5552
+dependencies = [5553
+ "backtrace",5554
+ "regex",5555
+ "sentry-core",5556
+]5557
+5558
+[[package]]5559
+name = "sentry-contexts"5560
+version = "0.47.0"5561
+source = "registry+https://github.com/rust-lang/crates.io-index"5562
+checksum = "9b88a90baa654d7f0e1f4b667f6b434293d9f72c71bef16b197c76af5b7d5803"5563
+dependencies = [5564
+ "hostname",5565
+ "libc",5566
+ "os_info",5567
+ "rustc_version",5568
+ "sentry-core",5569
+ "uname",5570
+]5571
+5572
+[[package]]5573
+name = "sentry-core"5574
+version = "0.47.0"5575
+source = "registry+https://github.com/rust-lang/crates.io-index"5576
+checksum = "0ac170a5bba8bec6e3339c90432569d89641fa7a3d3e4f44987d24f0762e6adf"5577
+dependencies = [5578
+ "rand 0.9.4",5579
+ "sentry-types",5580
+ "serde",5581
+ "serde_json",5582
+ "url",5583
+]5584
+5585
+[[package]]5586
+name = "sentry-debug-images"5587
+version = "0.47.0"5588
+source = "registry+https://github.com/rust-lang/crates.io-index"5589
+checksum = "dd9646a972b57896d4a92ed200cf76139f8e30b3cfd03b6662ae59926d26633c"5590
+dependencies = [5591
+ "findshlibs",5592
+ "sentry-core",5593
+]5594
+5595
+[[package]]5596
+name = "sentry-panic"5597
+version = "0.47.0"5598
+source = "registry+https://github.com/rust-lang/crates.io-index"5599
+checksum = "6127d3d304ba5ce0409401e85aae538e303a569f8dbb031bf64f9ba0f7174346"5600
+dependencies = [5601
+ "sentry-backtrace",5602
+ "sentry-core",5603
+]5604
+5605
+[[package]]5606
+name = "sentry-tracing"5607
+version = "0.47.0"5608
+source = "registry+https://github.com/rust-lang/crates.io-index"5609
+checksum = "27701acc51e68db5281802b709010395bfcbcb128b1d0a4e5873680d3b47ff0c"5610
+dependencies = [5611
+ "bitflags 2.10.0",5612
+ "sentry-backtrace",5613
+ "sentry-core",5614
+ "tracing-core",5615
+ "tracing-subscriber",5616
+]5617
+5618
+[[package]]5619
+name = "sentry-types"5620
+version = "0.47.0"5621
+source = "registry+https://github.com/rust-lang/crates.io-index"5622
+checksum = "56780cb5597d676bf22e6c11d1f062eb4def46390ea3bfb047bcbcf7dfd19bdb"5623
+dependencies = [5624
+ "debugid",5625
+ "hex",5626
+ "rand 0.9.4",5627
+ "serde",5628
+ "serde_json",5629
+ "thiserror 2.0.18",5630
+ "time",5631
+ "url",5632
+ "uuid",5633
+]5634
+5635
+[[package]]5636
+name = "serde"5637
+version = "1.0.228"5638
+source = "registry+https://github.com/rust-lang/crates.io-index"5639
+checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"5640
+dependencies = [5641
+ "serde_core",5642
+ "serde_derive",5643
+]5644
+5645
+[[package]]5646
+name = "serde-wasm-bindgen"5647
+version = "0.6.5"5648
+source = "registry+https://github.com/rust-lang/crates.io-index"5649
+checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b"5650
+dependencies = [5651
+ "js-sys",5652
+ "serde",5653
+ "wasm-bindgen",5654
+]5655
+5656
+[[package]]5657
+name = "serde_bytes"5658
+version = "0.11.19"5659
+source = "registry+https://github.com/rust-lang/crates.io-index"5660
+checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8"5661
+dependencies = [5662
+ "serde",5663
+ "serde_core",5664
+]5665
+5666
+[[package]]5667
+name = "serde_core"5668
+version = "1.0.228"5669
+source = "registry+https://github.com/rust-lang/crates.io-index"5670
+checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"5671
+dependencies = [5672
+ "serde_derive",5673
+]5674
+5675
+[[package]]5676
+name = "serde_derive"5677
+version = "1.0.228"5678
+source = "registry+https://github.com/rust-lang/crates.io-index"5679
+checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"5680
+dependencies = [5681
+ "proc-macro2",5682
+ "quote",5683
+ "syn 2.0.101",5684
+]5685
+5686
+[[package]]5687
+name = "serde_html_form"5688
+version = "0.4.0"5689
+source = "registry+https://github.com/rust-lang/crates.io-index"5690
+checksum = "0946d52b4b7e28823148aebbeceb901012c595ad737920d504fa8634bb099e6f"5691
+dependencies = [5692
+ "form_urlencoded",5693
+ "indexmap",5694
+ "itoa",5695
+ "ryu",5696
+ "serde_core",5697
+]5698
+5699
+[[package]]5700
+name = "serde_json"5701
+version = "1.0.145"5702
+source = "registry+https://github.com/rust-lang/crates.io-index"5703
+checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"5704
+dependencies = [5705
+ "itoa",5706
+ "memchr",5707
+ "ryu",5708
+ "serde",5709
+ "serde_core",5710
+]5711
+5712
+[[package]]5713
+name = "serde_path_to_error"5714
+version = "0.1.20"5715
+source = "registry+https://github.com/rust-lang/crates.io-index"5716
+checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457"5717
+dependencies = [5718
+ "itoa",5719
+ "serde",5720
+ "serde_core",5721
+]5722
+5723
+[[package]]5724
+name = "serde_spanned"5725
+version = "1.1.1"5726
+source = "registry+https://github.com/rust-lang/crates.io-index"5727
+checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26"5728
+dependencies = [5729
+ "serde_core",5730
+]5731
+5732
+[[package]]5733
+name = "serde_urlencoded"5734
+version = "0.7.1"5735
+source = "registry+https://github.com/rust-lang/crates.io-index"5736
+checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"5737
+dependencies = [5738
+ "form_urlencoded",5739
+ "itoa",5740
+ "ryu",5741
+ "serde",5742
+]5743
+5744
+[[package]]5745
+name = "sha1"5746
+version = "0.10.6"5747
+source = "registry+https://github.com/rust-lang/crates.io-index"5748
+checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"5749
+dependencies = [5750
+ "cfg-if",5751
+ "cpufeatures 0.2.12",5752
+ "digest",5753
+]5754
+5755
+[[package]]5756
+name = "sha2"5757
+version = "0.10.9"5758
+source = "registry+https://github.com/rust-lang/crates.io-index"5759
+checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"5760
+dependencies = [5761
+ "cfg-if",5762
+ "cpufeatures 0.2.12",5763
+ "digest",5764
+]5765
+5766
+[[package]]5767
+name = "sharded-slab"5768
+version = "0.1.7"5769
+source = "registry+https://github.com/rust-lang/crates.io-index"5770
+checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"5771
+dependencies = [5772
+ "lazy_static",5773
+]5774
+5775
+[[package]]5776
+name = "shlex"5777
+version = "1.3.0"5778
+source = "registry+https://github.com/rust-lang/crates.io-index"5779
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"5780
+5781
+[[package]]5782
+name = "signal-hook"5783
+version = "0.3.17"5784
+source = "registry+https://github.com/rust-lang/crates.io-index"5785
+checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801"5786
+dependencies = [5787
+ "libc",5788
+ "signal-hook-registry",5789
+]5790
+5791
+[[package]]5792
+name = "signal-hook-mio"5793
+version = "0.2.4"5794
+source = "registry+https://github.com/rust-lang/crates.io-index"5795
+checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd"5796
+dependencies = [5797
+ "libc",5798
+ "mio",5799
+ "signal-hook",5800
+]5801
+5802
+[[package]]5803
+name = "signal-hook-registry"5804
+version = "1.4.2"5805
+source = "registry+https://github.com/rust-lang/crates.io-index"5806
+checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"5807
+dependencies = [5808
+ "libc",5809
+]5810
+5811
+[[package]]5812
+name = "signature"5813
+version = "2.2.0"5814
+source = "registry+https://github.com/rust-lang/crates.io-index"5815
+checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"5816
+dependencies = [5817
+ "rand_core 0.6.4",5818
+]5819
+5820
+[[package]]5821
+name = "simd-adler32"5822
+version = "0.3.7"5823
+source = "registry+https://github.com/rust-lang/crates.io-index"5824
+checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"5825
+5826
+[[package]]5827
+name = "similar"5828
+version = "2.6.0"5829
+source = "registry+https://github.com/rust-lang/crates.io-index"5830
+checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e"5831
+5832
+[[package]]5833
+name = "similar-asserts"5834
+version = "1.7.0"5835
+source = "registry+https://github.com/rust-lang/crates.io-index"5836
+checksum = "b5b441962c817e33508847a22bd82f03a30cff43642dc2fae8b050566121eb9a"5837
+dependencies = [5838
+ "console",5839
+ "similar",5840
+]5841
+5842
+[[package]]5843
+name = "siphasher"5844
+version = "1.0.1"5845
+source = "registry+https://github.com/rust-lang/crates.io-index"5846
+checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"5847
+5848
+[[package]]5849
+name = "sketches-ddsketch"5850
+version = "0.4.0"5851
+source = "registry+https://github.com/rust-lang/crates.io-index"5852
+checksum = "05e40b6cf54d988dc1a2223531b969c9a9e30906ad90ef64890c27b4bfbb46ea"5853
+dependencies = [5854
+ "serde",5855
+]5856
+5857
+[[package]]5858
+name = "slab"5859
+version = "0.4.9"5860
+source = "registry+https://github.com/rust-lang/crates.io-index"5861
+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"5862
+dependencies = [5863
+ "autocfg",5864
+]5865
+5866
+[[package]]5867
+name = "smallvec"5868
+version = "1.13.2"5869
+source = "registry+https://github.com/rust-lang/crates.io-index"5870
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"5871
+dependencies = [5872
+ "serde",5873
+]5874
+5875
+[[package]]5876
+name = "smawk"5877
+version = "0.3.2"5878
+source = "registry+https://github.com/rust-lang/crates.io-index"5879
+checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c"5880
+5881
+[[package]]5882
+name = "socket2"5883
+version = "0.5.7"5884
+source = "registry+https://github.com/rust-lang/crates.io-index"5885
+checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c"5886
+dependencies = [5887
+ "libc",5888
+ "windows-sys 0.52.0",5889
+]5890
+5891
+[[package]]5892
+name = "socket2"5893
+version = "0.6.0"5894
+source = "registry+https://github.com/rust-lang/crates.io-index"5895
+checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807"5896
+dependencies = [5897
+ "libc",5898
+ "windows-sys 0.59.0",5899
+]5900
+5901
+[[package]]5902
+name = "spki"5903
+version = "0.7.3"5904
+source = "registry+https://github.com/rust-lang/crates.io-index"5905
+checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"5906
+dependencies = [5907
+ "base64ct",5908
+ "der",5909
+]5910
+5911
+[[package]]5912
+name = "stable_deref_trait"5913
+version = "1.2.0"5914
+source = "registry+https://github.com/rust-lang/crates.io-index"5915
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"5916
+5917
+[[package]]5918
+name = "static_assertions"5919
+version = "1.1.0"5920
+source = "registry+https://github.com/rust-lang/crates.io-index"5921
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"5922
+5923
+[[package]]5924
+name = "statrs"5925
+version = "0.18.0"5926
+source = "registry+https://github.com/rust-lang/crates.io-index"5927
+checksum = "2a3fe7c28c6512e766b0874335db33c94ad7b8f9054228ae1c2abd47ce7d335e"5928
+dependencies = [5929
+ "approx",5930
+ "num-traits",5931
+]5932
+5933
+[[package]]5934
+name = "stream_assert"5935
+version = "0.1.1"5936
+source = "registry+https://github.com/rust-lang/crates.io-index"5937
+checksum = "7fab678a73c9013f0427c63cfb42d98bd459a465194e7e583df486f679684b96"5938
+dependencies = [5939
+ "futures-util",5940
+]5941
+5942
+[[package]]5943
+name = "string_cache"5944
+version = "0.9.0"5945
+source = "registry+https://github.com/rust-lang/crates.io-index"5946
+checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901"5947
+dependencies = [5948
+ "new_debug_unreachable",5949
+ "parking_lot",5950
+ "phf_shared 0.13.1",5951
+ "precomputed-hash",5952
+]5953
+5954
+[[package]]5955
+name = "string_cache_codegen"5956
+version = "0.6.1"5957
+source = "registry+https://github.com/rust-lang/crates.io-index"5958
+checksum = "585635e46db231059f76c5849798146164652513eb9e8ab2685939dd90f29b69"5959
+dependencies = [5960
+ "phf_generator 0.13.1",5961
+ "phf_shared 0.13.1",5962
+ "proc-macro2",5963
+ "quote",5964
+]5965
+5966
+[[package]]5967
+name = "strsim"5968
+version = "0.11.1"5969
+source = "registry+https://github.com/rust-lang/crates.io-index"5970
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"5971
+5972
+[[package]]5973
+name = "strum"5974
+version = "0.27.2"5975
+source = "registry+https://github.com/rust-lang/crates.io-index"5976
+checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf"5977
+dependencies = [5978
+ "strum_macros",5979
+]5980
+5981
+[[package]]5982
+name = "strum_macros"5983
+version = "0.27.1"5984
+source = "registry+https://github.com/rust-lang/crates.io-index"5985
+checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8"5986
+dependencies = [5987
+ "heck",5988
+ "proc-macro2",5989
+ "quote",5990
+ "rustversion",5991
+ "syn 2.0.101",5992
+]5993
+5994
+[[package]]5995
+name = "subtle"5996
+version = "2.6.1"5997
+source = "registry+https://github.com/rust-lang/crates.io-index"5998
+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"5999
+6000
+[[package]]6001
+name = "syn"6002
+version = "1.0.109"6003
+source = "registry+https://github.com/rust-lang/crates.io-index"6004
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"6005
+dependencies = [6006
+ "proc-macro2",6007
+ "quote",6008
+ "unicode-ident",6009
+]6010
+6011
+[[package]]6012
+name = "syn"6013
+version = "2.0.101"6014
+source = "registry+https://github.com/rust-lang/crates.io-index"6015
+checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf"6016
+dependencies = [6017
+ "proc-macro2",6018
+ "quote",6019
+ "unicode-ident",6020
+]6021
+6022
+[[package]]6023
+name = "sync_wrapper"6024
+version = "1.0.1"6025
+source = "registry+https://github.com/rust-lang/crates.io-index"6026
+checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394"6027
+dependencies = [6028
+ "futures-core",6029
+]6030
+6031
+[[package]]6032
+name = "synstructure"6033
+version = "0.13.1"6034
+source = "registry+https://github.com/rust-lang/crates.io-index"6035
+checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"6036
+dependencies = [6037
+ "proc-macro2",6038
+ "quote",6039
+ "syn 2.0.101",6040
+]6041
+6042
+[[package]]6043
+name = "tantivy"6044
+version = "0.26.1"6045
+source = "registry+https://github.com/rust-lang/crates.io-index"6046
+checksum = "edde6a10743fff00a4e1a8c9ef020bf5f3cbad301b7d2d39f2b07f123c4eac07"6047
+dependencies = [6048
+ "aho-corasick",6049
+ "arc-swap",6050
+ "base64",6051
+ "bitpacking",6052
+ "bon",6053
+ "byteorder",6054
+ "census",6055
+ "crc32fast",6056
+ "crossbeam-channel",6057
+ "datasketches",6058
+ "downcast-rs",6059
+ "fastdivide",6060
+ "fnv",6061
+ "fs4",6062
+ "htmlescape",6063
+ "itertools 0.14.0",6064
+ "levenshtein_automata",6065
+ "log",6066
+ "lru",6067
+ "lz4_flex",6068
+ "measure_time",6069
+ "memmap2",6070
+ "once_cell",6071
+ "oneshot",6072
+ "rayon",6073
+ "regex",6074
+ "rust-stemmers",6075
+ "rustc-hash",6076
+ "serde",6077
+ "serde_json",6078
+ "sketches-ddsketch",6079
+ "smallvec",6080
+ "tantivy-bitpacker",6081
+ "tantivy-columnar",6082
+ "tantivy-common",6083
+ "tantivy-fst",6084
+ "tantivy-query-grammar",6085
+ "tantivy-stacker",6086
+ "tantivy-tokenizer-api",6087
+ "tempfile",6088
+ "thiserror 2.0.18",6089
+ "time",6090
+ "typetag",6091
+ "uuid",6092
+ "winapi",6093
+]6094
+6095
+[[package]]6096
+name = "tantivy-bitpacker"6097
+version = "0.10.0"6098
+source = "registry+https://github.com/rust-lang/crates.io-index"6099
+checksum = "4fed3d674429bcd2de5d0a6d1aa5495fed8afd9c5ecce993019caf7615f53fa4"6100
+dependencies = [6101
+ "bitpacking",6102
+]6103
+6104
+[[package]]6105
+name = "tantivy-columnar"6106
+version = "0.7.0"6107
+source = "registry+https://github.com/rust-lang/crates.io-index"6108
+checksum = "c57166f5bcfd478f370ab8445afb4678dce44801fa5ce5c451aaf8595583c5dc"6109
+dependencies = [6110
+ "downcast-rs",6111
+ "fastdivide",6112
+ "itertools 0.14.0",6113
+ "serde",6114
+ "tantivy-bitpacker",6115
+ "tantivy-common",6116
+ "tantivy-sstable",6117
+ "tantivy-stacker",6118
+]6119
+6120
+[[package]]6121
+name = "tantivy-common"6122
+version = "0.11.0"6123
+source = "registry+https://github.com/rust-lang/crates.io-index"6124
+checksum = "bbf10915aa75da3c3b0d58b58853d2e889efbaf32d4982a4c3715dde6bba23e5"6125
+dependencies = [6126
+ "async-trait",6127
+ "byteorder",6128
+ "ownedbytes",6129
+ "serde",6130
+ "time",6131
+]6132
+6133
+[[package]]6134
+name = "tantivy-fst"6135
+version = "0.5.0"6136
+source = "registry+https://github.com/rust-lang/crates.io-index"6137
+checksum = "d60769b80ad7953d8a7b2c70cdfe722bbcdcac6bccc8ac934c40c034d866fc18"6138
+dependencies = [6139
+ "byteorder",6140
+ "regex-syntax",6141
+ "utf8-ranges",6142
+]6143
+6144
+[[package]]6145
+name = "tantivy-query-grammar"6146
+version = "0.26.0"6147
+source = "registry+https://github.com/rust-lang/crates.io-index"6148
+checksum = "dfadb8526b6da90704feb293b0701a6aae62ea14983143344be2dc5ce30f1d82"6149
+dependencies = [6150
+ "fnv",6151
+ "nom",6152
+ "ordered-float 5.3.0",6153
+ "serde",6154
+ "serde_json",6155
+]6156
+6157
+[[package]]6158
+name = "tantivy-sstable"6159
+version = "0.7.0"6160
+source = "registry+https://github.com/rust-lang/crates.io-index"6161
+checksum = "8a2cfc3ac5164cbadc28965ffb145a8f47582a60ae5897859ad8d4316596c606"6162
+dependencies = [6163
+ "futures-util",6164
+ "itertools 0.14.0",6165
+ "tantivy-bitpacker",6166
+ "tantivy-common",6167
+ "tantivy-fst",6168
+ "zstd",6169
+]6170
+6171
+[[package]]6172
+name = "tantivy-stacker"6173
+version = "0.7.0"6174
+source = "registry+https://github.com/rust-lang/crates.io-index"6175
+checksum = "6cbb051742da9d53ca9e8fff43a9b10e319338b24e2c0e15d0372df19ffeb951"6176
+dependencies = [6177
+ "murmurhash32",6178
+ "tantivy-common",6179
+]6180
+6181
+[[package]]6182
+name = "tantivy-tokenizer-api"6183
+version = "0.7.0"6184
+source = "registry+https://github.com/rust-lang/crates.io-index"6185
+checksum = "eac258c2c6390673f2685813afeeafcb8c4e0ee7de8dd3fc46838dcc37263f98"6186
+dependencies = [6187
+ "serde",6188
+]6189
+6190
+[[package]]6191
+name = "tempfile"6192
+version = "3.23.0"6193
+source = "registry+https://github.com/rust-lang/crates.io-index"6194
+checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"6195
+dependencies = [6196
+ "fastrand",6197
+ "getrandom 0.3.4",6198
+ "once_cell",6199
+ "rustix",6200
+ "windows-sys 0.61.2",6201
+]6202
+6203
+[[package]]6204
+name = "tendril"6205
+version = "0.5.0"6206
+source = "registry+https://github.com/rust-lang/crates.io-index"6207
+checksum = "c4790fc369d5a530f4b544b094e31388b9b3a37c0f4652ade4505945f5660d24"6208
+dependencies = [6209
+ "new_debug_unreachable",6210
+ "utf-8",6211
+]6212
+6213
+[[package]]6214
+name = "terminfo"6215
+version = "0.9.0"6216
+source = "registry+https://github.com/rust-lang/crates.io-index"6217
+checksum = "d4ea810f0692f9f51b382fff5893887bb4580f5fa246fde546e0b13e7fcee662"6218
+dependencies = [6219
+ "fnv",6220
+ "nom",6221
+ "phf 0.11.3",6222
+ "phf_codegen 0.11.3",6223
+]6224
+6225
+[[package]]6226
+name = "termios"6227
+version = "0.3.3"6228
+source = "registry+https://github.com/rust-lang/crates.io-index"6229
+checksum = "411c5bf740737c7918b8b1fe232dca4dc9f8e754b8ad5e20966814001ed0ac6b"6230
+dependencies = [6231
+ "libc",6232
+]6233
+6234
+[[package]]6235
+name = "termwiz"6236
+version = "0.23.3"6237
+source = "registry+https://github.com/rust-lang/crates.io-index"6238
+checksum = "4676b37242ccbd1aabf56edb093a4827dc49086c0ffd764a5705899e0f35f8f7"6239
+dependencies = [6240
+ "anyhow",6241
+ "base64",6242
+ "bitflags 2.10.0",6243
+ "fancy-regex",6244
+ "filedescriptor",6245
+ "finl_unicode",6246
+ "fixedbitset",6247
+ "hex",6248
+ "lazy_static",6249
+ "libc",6250
+ "log",6251
+ "memmem",6252
+ "nix 0.29.0",6253
+ "num-derive",6254
+ "num-traits",6255
+ "ordered-float 4.6.0",6256
+ "pest",6257
+ "pest_derive",6258
+ "phf 0.11.3",6259
+ "sha2",6260
+ "signal-hook",6261
+ "siphasher",6262
+ "terminfo",6263
+ "termios",6264
+ "thiserror 1.0.63",6265
+ "ucd-trie",6266
+ "unicode-segmentation",6267
+ "vtparse",6268
+ "wezterm-bidi",6269
+ "wezterm-blob-leases",6270
+ "wezterm-color-types",6271
+ "wezterm-dynamic",6272
+ "wezterm-input-types",6273
+ "winapi",6274
+]6275
+6276
+[[package]]6277
+name = "textwrap"6278
+version = "0.16.2"6279
+source = "registry+https://github.com/rust-lang/crates.io-index"6280
+checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057"6281
+dependencies = [6282
+ "smawk",6283
+ "unicode-linebreak",6284
+ "unicode-width",6285
+]6286
+6287
+[[package]]6288
+name = "thiserror"6289
+version = "1.0.63"6290
+source = "registry+https://github.com/rust-lang/crates.io-index"6291
+checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"6292
+dependencies = [6293
+ "thiserror-impl 1.0.63",6294
+]6295
+6296
+[[package]]6297
+name = "thiserror"6298
+version = "2.0.18"6299
+source = "registry+https://github.com/rust-lang/crates.io-index"6300
+checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"6301
+dependencies = [6302
+ "thiserror-impl 2.0.18",6303
+]6304
+6305
+[[package]]6306
+name = "thiserror-impl"6307
+version = "1.0.63"6308
+source = "registry+https://github.com/rust-lang/crates.io-index"6309
+checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"6310
+dependencies = [6311
+ "proc-macro2",6312
+ "quote",6313
+ "syn 2.0.101",6314
+]6315
+6316
+[[package]]6317
+name = "thiserror-impl"6318
+version = "2.0.18"6319
+source = "registry+https://github.com/rust-lang/crates.io-index"6320
+checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"6321
+dependencies = [6322
+ "proc-macro2",6323
+ "quote",6324
+ "syn 2.0.101",6325
+]6326
+6327
+[[package]]6328
+name = "thread_local"6329
+version = "1.1.8"6330
+source = "registry+https://github.com/rust-lang/crates.io-index"6331
+checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"6332
+dependencies = [6333
+ "cfg-if",6334
+ "once_cell",6335
+]6336
+6337
+[[package]]6338
+name = "throbber-widgets-tui"6339
+version = "0.11.0"6340
+source = "registry+https://github.com/rust-lang/crates.io-index"6341
+checksum = "f1e6941f74491a80911cb8821cb1f55f7e13bca867b28a2b14e5a1daaf691eb3"6342
+dependencies = [6343
+ "ratatui",6344
+]6345
+6346
+[[package]]6347
+name = "time"6348
+version = "0.3.47"6349
+source = "registry+https://github.com/rust-lang/crates.io-index"6350
+checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c"6351
+dependencies = [6352
+ "deranged",6353
+ "itoa",6354
+ "libc",6355
+ "num-conv",6356
+ "num_threads",6357
+ "powerfmt",6358
+ "serde_core",6359
+ "time-core",6360
+ "time-macros",6361
+]6362
+6363
+[[package]]6364
+name = "time-core"6365
+version = "0.1.8"6366
+source = "registry+https://github.com/rust-lang/crates.io-index"6367
+checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca"6368
+6369
+[[package]]6370
+name = "time-macros"6371
+version = "0.2.27"6372
+source = "registry+https://github.com/rust-lang/crates.io-index"6373
+checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215"6374
+dependencies = [6375
+ "num-conv",6376
+ "time-core",6377
+]6378
+6379
+[[package]]6380
+name = "tinystr"6381
+version = "0.7.6"6382
+source = "registry+https://github.com/rust-lang/crates.io-index"6383
+checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f"6384
+dependencies = [6385
+ "displaydoc",6386
+ "zerovec",6387
+]6388
+6389
+[[package]]6390
+name = "tinytemplate"6391
+version = "1.2.1"6392
+source = "registry+https://github.com/rust-lang/crates.io-index"6393
+checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"6394
+dependencies = [6395
+ "serde",6396
+ "serde_json",6397
+]6398
+6399
+[[package]]6400
+name = "tinyvec"6401
+version = "1.8.0"6402
+source = "registry+https://github.com/rust-lang/crates.io-index"6403
+checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938"6404
+dependencies = [6405
+ "tinyvec_macros",6406
+]6407
+6408
+[[package]]6409
+name = "tinyvec_macros"6410
+version = "0.1.1"6411
+source = "registry+https://github.com/rust-lang/crates.io-index"6412
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"6413
+6414
+[[package]]6415
+name = "tokio"6416
+version = "1.48.0"6417
+source = "registry+https://github.com/rust-lang/crates.io-index"6418
+checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408"6419
+dependencies = [6420
+ "bytes",6421
+ "libc",6422
+ "mio",6423
+ "pin-project-lite",6424
+ "socket2 0.6.0",6425
+ "tokio-macros",6426
+ "windows-sys 0.61.2",6427
+]6428
+6429
+[[package]]6430
+name = "tokio-macros"6431
+version = "2.6.0"6432
+source = "registry+https://github.com/rust-lang/crates.io-index"6433
+checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"6434
+dependencies = [6435
+ "proc-macro2",6436
+ "quote",6437
+ "syn 2.0.101",6438
+]6439
+6440
+[[package]]6441
+name = "tokio-rustls"6442
+version = "0.26.0"6443
+source = "registry+https://github.com/rust-lang/crates.io-index"6444
+checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"6445
+dependencies = [6446
+ "rustls",6447
+ "rustls-pki-types",6448
+ "tokio",6449
+]6450
+6451
+[[package]]6452
+name = "tokio-stream"6453
+version = "0.1.17"6454
+source = "registry+https://github.com/rust-lang/crates.io-index"6455
+checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047"6456
+dependencies = [6457
+ "futures-core",6458
+ "pin-project-lite",6459
+ "tokio",6460
+ "tokio-util",6461
+]6462
+6463
+[[package]]6464
+name = "tokio-test"6465
+version = "0.4.4"6466
+source = "registry+https://github.com/rust-lang/crates.io-index"6467
+checksum = "2468baabc3311435b55dd935f702f42cd1b8abb7e754fb7dfb16bd36aa88f9f7"6468
+dependencies = [6469
+ "async-stream",6470
+ "bytes",6471
+ "futures-core",6472
+ "tokio",6473
+ "tokio-stream",6474
+]6475
+6476
+[[package]]6477
+name = "tokio-util"6478
+version = "0.7.17"6479
+source = "registry+https://github.com/rust-lang/crates.io-index"6480
+checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594"6481
+dependencies = [6482
+ "bytes",6483
+ "futures-core",6484
+ "futures-sink",6485
+ "pin-project-lite",6486
+ "tokio",6487
+]6488
+6489
+[[package]]6490
+name = "toml"6491
+version = "0.9.7"6492
+source = "registry+https://github.com/rust-lang/crates.io-index"6493
+checksum = "00e5e5d9bf2475ac9d4f0d9edab68cc573dc2fd644b0dba36b0c30a92dd9eaa0"6494
+dependencies = [6495
+ "indexmap",6496
+ "serde_core",6497
+ "serde_spanned",6498
+ "toml_datetime 0.7.2",6499
+ "toml_parser",6500
+ "toml_writer",6501
+ "winnow 0.7.13",6502
+]6503
+6504
+[[package]]6505
+name = "toml"6506
+version = "1.1.2+spec-1.1.0"6507
+source = "registry+https://github.com/rust-lang/crates.io-index"6508
+checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee"6509
+dependencies = [6510
+ "serde_core",6511
+ "serde_spanned",6512
+ "toml_datetime 1.1.1+spec-1.1.0",6513
+ "toml_parser",6514
+ "winnow 1.0.1",6515
+]6516
+6517
+[[package]]6518
+name = "toml_datetime"6519
+version = "0.6.8"6520
+source = "registry+https://github.com/rust-lang/crates.io-index"6521
+checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"6522
+6523
+[[package]]6524
+name = "toml_datetime"6525
+version = "0.7.2"6526
+source = "registry+https://github.com/rust-lang/crates.io-index"6527
+checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1"6528
+dependencies = [6529
+ "serde_core",6530
+]6531
+6532
+[[package]]6533
+name = "toml_datetime"6534
+version = "1.1.1+spec-1.1.0"6535
+source = "registry+https://github.com/rust-lang/crates.io-index"6536
+checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7"6537
+dependencies = [6538
+ "serde_core",6539
+]6540
+6541
+[[package]]6542
+name = "toml_edit"6543
+version = "0.22.22"6544
+source = "registry+https://github.com/rust-lang/crates.io-index"6545
+checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5"6546
+dependencies = [6547
+ "indexmap",6548
+ "toml_datetime 0.6.8",6549
+ "winnow 0.6.20",6550
+]6551
+6552
+[[package]]6553
+name = "toml_parser"6554
+version = "1.1.2+spec-1.1.0"6555
+source = "registry+https://github.com/rust-lang/crates.io-index"6556
+checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526"6557
+dependencies = [6558
+ "winnow 1.0.1",6559
+]6560
+6561
+[[package]]6562
+name = "toml_writer"6563
+version = "1.0.4"6564
+source = "registry+https://github.com/rust-lang/crates.io-index"6565
+checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2"6566
+6567
+[[package]]6568
+name = "tower"6569
+version = "0.5.2"6570
+source = "registry+https://github.com/rust-lang/crates.io-index"6571
+checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"6572
+dependencies = [6573
+ "futures-core",6574
+ "futures-util",6575
+ "pin-project-lite",6576
+ "sync_wrapper",6577
+ "tokio",6578
+ "tower-layer",6579
+ "tower-service",6580
+ "tracing",6581
+]6582
+6583
+[[package]]6584
+name = "tower-http"6585
+version = "0.6.8"6586
+source = "registry+https://github.com/rust-lang/crates.io-index"6587
+checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8"6588
+dependencies = [6589
+ "async-compression",6590
+ "bitflags 2.10.0",6591
+ "bytes",6592
+ "futures-core",6593
+ "futures-util",6594
+ "http",6595
+ "http-body",6596
+ "http-body-util",6597
+ "iri-string",6598
+ "pin-project-lite",6599
+ "tokio",6600
+ "tokio-util",6601
+ "tower",6602
+ "tower-layer",6603
+ "tower-service",6604
+]6605
+6606
+[[package]]6607
+name = "tower-layer"6608
+version = "0.3.3"6609
+source = "registry+https://github.com/rust-lang/crates.io-index"6610
+checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"6611
+6612
+[[package]]6613
+name = "tower-service"6614
+version = "0.3.3"6615
+source = "registry+https://github.com/rust-lang/crates.io-index"6616
+checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"6617
+6618
+[[package]]6619
+name = "tracing"6620
+version = "0.1.41"6621
+source = "git+https://github.com/tokio-rs/tracing.git?rev=20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05#20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05"6622
+dependencies = [6623
+ "log",6624
+ "pin-project-lite",6625
+ "tracing-attributes",6626
+ "tracing-core",6627
+]6628
+6629
+[[package]]6630
+name = "tracing-appender"6631
+version = "0.2.3"6632
+source = "git+https://github.com/tokio-rs/tracing.git?rev=20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05#20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05"6633
+dependencies = [6634
+ "crossbeam-channel",6635
+ "thiserror 2.0.18",6636
+ "time",6637
+ "tracing-subscriber",6638
+]6639
+6640
+[[package]]6641
+name = "tracing-attributes"6642
+version = "0.1.30"6643
+source = "git+https://github.com/tokio-rs/tracing.git?rev=20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05#20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05"6644
+dependencies = [6645
+ "proc-macro2",6646
+ "quote",6647
+ "syn 2.0.101",6648
+]6649
+6650
+[[package]]6651
+name = "tracing-core"6652
+version = "0.1.34"6653
+source = "git+https://github.com/tokio-rs/tracing.git?rev=20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05#20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05"6654
+dependencies = [6655
+ "once_cell",6656
+ "valuable",6657
+]6658
+6659
+[[package]]6660
+name = "tracing-error"6661
+version = "0.2.0"6662
+source = "registry+https://github.com/rust-lang/crates.io-index"6663
+checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e"6664
+dependencies = [6665
+ "tracing",6666
+ "tracing-subscriber",6667
+]6668
+6669
+[[package]]6670
+name = "tracing-log"6671
+version = "0.2.0"6672
+source = "git+https://github.com/tokio-rs/tracing.git?rev=20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05#20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05"6673
+dependencies = [6674
+ "log",6675
+ "once_cell",6676
+ "tracing-core",6677
+]6678
+6679
+[[package]]6680
+name = "tracing-subscriber"6681
+version = "0.3.20"6682
+source = "git+https://github.com/tokio-rs/tracing.git?rev=20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05#20f5b3d8ba057ca9c4ae00ad30dda3dce8a71c05"6683
+dependencies = [6684
+ "matchers",6685
+ "nu-ansi-term",6686
+ "once_cell",6687
+ "regex-automata",6688
+ "sharded-slab",6689
+ "smallvec",6690
+ "thread_local",6691
+ "tracing",6692
+ "tracing-core",6693
+ "tracing-log",6694
+]6695
+6696
+[[package]]6697
+name = "try-lock"6698
+version = "0.2.5"6699
+source = "registry+https://github.com/rust-lang/crates.io-index"6700
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"6701
+6702
+[[package]]6703
+name = "tui-widget-list"6704
+version = "0.15.2"6705
+source = "registry+https://github.com/rust-lang/crates.io-index"6706
+checksum = "8fbf7f6c7d04beb3602630d83db44e81d7a1de1fea11ca3435d82e094c5c0192"6707
+dependencies = [6708
+ "ratatui-core",6709
+ "ratatui-widgets",6710
+]6711
+6712
+[[package]]6713
+name = "typeid"6714
+version = "1.0.3"6715
+source = "registry+https://github.com/rust-lang/crates.io-index"6716
+checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c"6717
+6718
+[[package]]6719
+name = "typenum"6720
+version = "1.17.0"6721
+source = "registry+https://github.com/rust-lang/crates.io-index"6722
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"6723
+6724
+[[package]]6725
+name = "typetag"6726
+version = "0.2.22"6727
+source = "registry+https://github.com/rust-lang/crates.io-index"6728
+checksum = "c5a897b12c6c1151ad0b138b8db50252dc301f93bc3b027db05eec82aeed298c"6729
+dependencies = [6730
+ "erased-serde",6731
+ "inventory",6732
+ "once_cell",6733
+ "serde",6734
+ "typetag-impl",6735
+]6736
+6737
+[[package]]6738
+name = "typetag-impl"6739
+version = "0.2.22"6740
+source = "registry+https://github.com/rust-lang/crates.io-index"6741
+checksum = "cf808357c6ed7e13ba0f3277ec8d8f21b2d501274895104263985330c726c1c5"6742
+dependencies = [6743
+ "proc-macro2",6744
+ "quote",6745
+ "syn 2.0.101",6746
+]6747
+6748
+[[package]]6749
+name = "typewit"6750
+version = "1.14.2"6751
+source = "registry+https://github.com/rust-lang/crates.io-index"6752
+checksum = "f8c1ae7cc0fdb8b842d65d127cb981574b0d2b249b74d1c7a2986863dc134f71"6753
+6754
+[[package]]6755
+name = "ucd-trie"6756
+version = "0.1.7"6757
+source = "registry+https://github.com/rust-lang/crates.io-index"6758
+checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"6759
+6760
+[[package]]6761
+name = "ulid"6762
+version = "1.1.4"6763
+source = "registry+https://github.com/rust-lang/crates.io-index"6764
+checksum = "f294bff79170ed1c5633812aff1e565c35d993a36e757f9bc0accf5eec4e6045"6765
+dependencies = [6766
+ "rand 0.8.6",6767
+ "web-time",6768
+]6769
+6770
+[[package]]6771
+name = "uname"6772
+version = "0.1.1"6773
+source = "registry+https://github.com/rust-lang/crates.io-index"6774
+checksum = "b72f89f0ca32e4db1c04e2a72f5345d59796d4866a1ee0609084569f73683dc8"6775
+dependencies = [6776
+ "libc",6777
+]6778
+6779
+[[package]]6780
+name = "unarray"6781
+version = "0.1.4"6782
+source = "registry+https://github.com/rust-lang/crates.io-index"6783
+checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94"6784
+6785
+[[package]]6786
+name = "unicase"6787
+version = "2.7.0"6788
+source = "registry+https://github.com/rust-lang/crates.io-index"6789
+checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"6790
+dependencies = [6791
+ "version_check",6792
+]6793
+6794
+[[package]]6795
+name = "unicode-ident"6796
+version = "1.0.22"6797
+source = "registry+https://github.com/rust-lang/crates.io-index"6798
+checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"6799
+6800
+[[package]]6801
+name = "unicode-linebreak"6802
+version = "0.1.5"6803
+source = "registry+https://github.com/rust-lang/crates.io-index"6804
+checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"6805
+6806
+[[package]]6807
+name = "unicode-normalization"6808
+version = "0.1.25"6809
+source = "registry+https://github.com/rust-lang/crates.io-index"6810
+checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8"6811
+dependencies = [6812
+ "tinyvec",6813
+]6814
+6815
+[[package]]6816
+name = "unicode-segmentation"6817
+version = "1.12.0"6818
+source = "registry+https://github.com/rust-lang/crates.io-index"6819
+checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"6820
+6821
+[[package]]6822
+name = "unicode-truncate"6823
+version = "2.0.1"6824
+source = "registry+https://github.com/rust-lang/crates.io-index"6825
+checksum = "16b380a1238663e5f8a691f9039c73e1cdae598a30e9855f541d29b08b53e9a5"6826
+dependencies = [6827
+ "itertools 0.14.0",6828
+ "unicode-segmentation",6829
+ "unicode-width",6830
+]6831
+6832
+[[package]]6833
+name = "unicode-width"6834
+version = "0.2.0"6835
+source = "registry+https://github.com/rust-lang/crates.io-index"6836
+checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd"6837
+6838
+[[package]]6839
+name = "unicode-xid"6840
+version = "0.2.6"6841
+source = "registry+https://github.com/rust-lang/crates.io-index"6842
+checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"6843
+6844
+[[package]]6845
+name = "uniffi"6846
+version = "0.31.0"6847
+source = "registry+https://github.com/rust-lang/crates.io-index"6848
+checksum = "b8c6dec3fc6645f71a16a3fa9ff57991028153bd194ca97f4b55e610c73ce66a"6849
+dependencies = [6850
+ "anyhow",6851
+ "camino",6852
+ "cargo_metadata",6853
+ "clap",6854
+ "uniffi_bindgen",6855
+ "uniffi_build",6856
+ "uniffi_core",6857
+ "uniffi_macros",6858
+ "uniffi_pipeline",6859
+]6860
+6861
+[[package]]6862
+name = "uniffi-bindgen"6863
+version = "0.1.0"6864
+dependencies = [6865
+ "uniffi",6866
+]6867
+6868
+[[package]]6869
+name = "uniffi_bindgen"6870
+version = "0.31.0"6871
+source = "registry+https://github.com/rust-lang/crates.io-index"6872
+checksum = "4ed0150801958d4825da56a41c71f000a457ac3a4613fa9647df78ac4b6b6881"6873
+dependencies = [6874
+ "anyhow",6875
+ "askama",6876
+ "camino",6877
+ "cargo_metadata",6878
+ "fs-err",6879
+ "glob",6880
+ "goblin 0.8.2",6881
+ "heck",6882
+ "indexmap",6883
+ "once_cell",6884
+ "serde",6885
+ "tempfile",6886
+ "textwrap",6887
+ "toml 0.9.7",6888
+ "uniffi_internal_macros",6889
+ "uniffi_meta",6890
+ "uniffi_pipeline",6891
+ "uniffi_udl",6892
+]6893
+6894
+[[package]]6895
+name = "uniffi_build"6896
+version = "0.31.0"6897
+source = "registry+https://github.com/rust-lang/crates.io-index"6898
+checksum = "b78fd9271a4c2e85bd2c266c5a9ede1fac676eb39fd77f636c27eaf67426fd5f"6899
+dependencies = [6900
+ "anyhow",6901
+ "camino",6902
+ "uniffi_bindgen",6903
+]6904
+6905
+[[package]]6906
+name = "uniffi_core"6907
+version = "0.31.0"6908
+source = "registry+https://github.com/rust-lang/crates.io-index"6909
+checksum = "b0ef62e69762fbb9386dcb6c87cd3dd05d525fa8a3a579a290892e60ddbda47e"6910
+dependencies = [6911
+ "anyhow",6912
+ "async-compat",6913
+ "bytes",6914
+ "once_cell",6915
+ "static_assertions",6916
+]6917
+6918
+[[package]]6919
+name = "uniffi_internal_macros"6920
+version = "0.31.0"6921
+source = "registry+https://github.com/rust-lang/crates.io-index"6922
+checksum = "98f51ebca0d9a4b2aa6c644d5ede45c56f73906b96403c08a1985e75ccb64a01"6923
+dependencies = [6924
+ "anyhow",6925
+ "indexmap",6926
+ "proc-macro2",6927
+ "quote",6928
+ "syn 2.0.101",6929
+]6930
+6931
+[[package]]6932
+name = "uniffi_macros"6933
+version = "0.31.0"6934
+source = "registry+https://github.com/rust-lang/crates.io-index"6935
+checksum = "db9d12529f1223d014fd501e5f29ca0884d15d6ed5ddddd9f506e55350327dc3"6936
+dependencies = [6937
+ "camino",6938
+ "fs-err",6939
+ "once_cell",6940
+ "proc-macro2",6941
+ "quote",6942
+ "serde",6943
+ "syn 2.0.101",6944
+ "toml 0.9.7",6945
+ "uniffi_meta",6946
+]6947
+6948
+[[package]]6949
+name = "uniffi_meta"6950
+version = "0.31.0"6951
+source = "registry+https://github.com/rust-lang/crates.io-index"6952
+checksum = "9df6d413db2827c68588f8149d30d49b71d540d46539e435b23a7f7dbd4d4f86"6953
+dependencies = [6954
+ "anyhow",6955
+ "siphasher",6956
+ "uniffi_internal_macros",6957
+ "uniffi_pipeline",6958
+]6959
+6960
+[[package]]6961
+name = "uniffi_pipeline"6962
+version = "0.31.0"6963
+source = "registry+https://github.com/rust-lang/crates.io-index"6964
+checksum = "a806dddc8208f22efd7e95a5cdf88ed43d0f3271e8f63b47e757a8bbdb43b63a"6965
+dependencies = [6966
+ "anyhow",6967
+ "heck",6968
+ "indexmap",6969
+ "tempfile",6970
+ "uniffi_internal_macros",6971
+]6972
+6973
+[[package]]6974
+name = "uniffi_udl"6975
+version = "0.31.0"6976
+source = "registry+https://github.com/rust-lang/crates.io-index"6977
+checksum = "0d1a7339539bf6f6fa3e9b534dece13f778bda2d54b1a6d4e40b4d6090ac26e7"6978
+dependencies = [6979
+ "anyhow",6980
+ "textwrap",6981
+ "uniffi_meta",6982
+ "weedle2",6983
+]6984
+6985
+[[package]]6986
+name = "universal-hash"6987
+version = "0.5.1"6988
+source = "registry+https://github.com/rust-lang/crates.io-index"6989
+checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea"6990
+dependencies = [6991
+ "crypto-common",6992
+ "subtle",6993
+]6994
+6995
+[[package]]6996
+name = "untrusted"6997
+version = "0.9.0"6998
+source = "registry+https://github.com/rust-lang/crates.io-index"6999
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"7000
+7001
+[[package]]7002
+name = "url"7003
+version = "2.5.7"7004
+source = "registry+https://github.com/rust-lang/crates.io-index"7005
+checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"7006
+dependencies = [7007
+ "form_urlencoded",7008
+ "idna",7009
+ "percent-encoding",7010
+ "serde",7011
+]7012
+7013
+[[package]]7014
+name = "urlencoding"7015
+version = "2.1.3"7016
+source = "registry+https://github.com/rust-lang/crates.io-index"7017
+checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"7018
+7019
+[[package]]7020
+name = "utf-8"7021
+version = "0.7.6"7022
+source = "registry+https://github.com/rust-lang/crates.io-index"7023
+checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"7024
+7025
+[[package]]7026
+name = "utf16_iter"7027
+version = "1.0.5"7028
+source = "registry+https://github.com/rust-lang/crates.io-index"7029
+checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246"7030
+7031
+[[package]]7032
+name = "utf8-ranges"7033
+version = "1.0.5"7034
+source = "registry+https://github.com/rust-lang/crates.io-index"7035
+checksum = "7fcfc827f90e53a02eaef5e535ee14266c1d569214c6aa70133a624d8a3164ba"7036
+7037
+[[package]]7038
+name = "utf8_iter"7039
+version = "1.0.4"7040
+source = "registry+https://github.com/rust-lang/crates.io-index"7041
+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"7042
+7043
+[[package]]7044
+name = "utf8parse"7045
+version = "0.2.2"7046
+source = "registry+https://github.com/rust-lang/crates.io-index"7047
+checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"7048
+7049
+[[package]]7050
+name = "uuid"7051
+version = "1.18.1"7052
+source = "registry+https://github.com/rust-lang/crates.io-index"7053
+checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2"7054
+dependencies = [7055
+ "atomic",7056
+ "getrandom 0.3.4",7057
+ "js-sys",7058
+ "serde",7059
+ "wasm-bindgen",7060
+]7061
+7062
+[[package]]7063
+name = "valuable"7064
+version = "0.1.0"7065
+source = "registry+https://github.com/rust-lang/crates.io-index"7066
+checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"7067
+7068
+[[package]]7069
+name = "vcpkg"7070
+version = "0.2.15"7071
+source = "registry+https://github.com/rust-lang/crates.io-index"7072
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"7073
+7074
+[[package]]7075
+name = "vergen"7076
+version = "9.0.6"7077
+source = "registry+https://github.com/rust-lang/crates.io-index"7078
+checksum = "6b2bf58be11fc9414104c6d3a2e464163db5ef74b12296bda593cac37b6e4777"7079
+dependencies = [7080
+ "anyhow",7081
+ "derive_builder",7082
+ "rustversion",7083
+ "time",7084
+ "vergen-lib",7085
+]7086
+7087
+[[package]]7088
+name = "vergen-gitcl"7089
+version = "1.0.8"7090
+source = "registry+https://github.com/rust-lang/crates.io-index"7091
+checksum = "b9dfc1de6eb2e08a4ddf152f1b179529638bedc0ea95e6d667c014506377aefe"7092
+dependencies = [7093
+ "anyhow",7094
+ "derive_builder",7095
+ "rustversion",7096
+ "time",7097
+ "vergen",7098
+ "vergen-lib",7099
+]7100
+7101
+[[package]]7102
+name = "vergen-lib"7103
+version = "0.1.6"7104
+source = "registry+https://github.com/rust-lang/crates.io-index"7105
+checksum = "9b07e6010c0f3e59fcb164e0163834597da68d1f864e2b8ca49f74de01e9c166"7106
+dependencies = [7107
+ "anyhow",7108
+ "derive_builder",7109
+ "rustversion",7110
+]7111
+7112
+[[package]]7113
+name = "version_check"7114
+version = "0.9.4"7115
+source = "registry+https://github.com/rust-lang/crates.io-index"7116
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"7117
+7118
+[[package]]7119
+name = "vodozemac"7120
+version = "0.10.0"7121
+source = "registry+https://github.com/rust-lang/crates.io-index"7122
+checksum = "b98bf83c0992966775b8012f194b07b44928996163e5a05b741b43891571ae5b"7123
+dependencies = [7124
+ "aes",7125
+ "arrayvec",7126
+ "base64",7127
+ "base64ct",7128
+ "cbc",7129
+ "chacha20poly1305",7130
+ "curve25519-dalek",7131
+ "ed25519-dalek",7132
+ "getrandom 0.2.15",7133
+ "hkdf",7134
+ "hmac",7135
+ "matrix-pickle",7136
+ "prost",7137
+ "rand 0.8.6",7138
+ "serde",7139
+ "serde_bytes",7140
+ "serde_json",7141
+ "sha2",7142
+ "subtle",7143
+ "thiserror 2.0.18",7144
+ "x25519-dalek",7145
+ "zeroize",7146
+]7147
+7148
+[[package]]7149
+name = "vtparse"7150
+version = "0.6.2"7151
+source = "registry+https://github.com/rust-lang/crates.io-index"7152
+checksum = "6d9b2acfb050df409c972a37d3b8e08cdea3bddb0c09db9d53137e504cfabed0"7153
+dependencies = [7154
+ "utf8parse",7155
+]7156
+7157
+[[package]]7158
+name = "walkdir"7159
+version = "2.5.0"7160
+source = "registry+https://github.com/rust-lang/crates.io-index"7161
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"7162
+dependencies = [7163
+ "same-file",7164
+ "winapi-util",7165
+]7166
+7167
+[[package]]7168
+name = "want"7169
+version = "0.3.1"7170
+source = "registry+https://github.com/rust-lang/crates.io-index"7171
+checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"7172
+dependencies = [7173
+ "try-lock",7174
+]7175
+7176
+[[package]]7177
+name = "wasi"7178
+version = "0.11.0+wasi-snapshot-preview1"7179
+source = "registry+https://github.com/rust-lang/crates.io-index"7180
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"7181
+7182
+[[package]]7183
+name = "wasip2"7184
+version = "1.0.2+wasi-0.2.9"7185
+source = "registry+https://github.com/rust-lang/crates.io-index"7186
+checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"7187
+dependencies = [7188
+ "wit-bindgen",7189
+]7190
+7191
+[[package]]7192
+name = "wasip3"7193
+version = "0.4.0+wasi-0.3.0-rc-2026-01-06"7194
+source = "registry+https://github.com/rust-lang/crates.io-index"7195
+checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5"7196
+dependencies = [7197
+ "wit-bindgen",7198
+]7199
+7200
+[[package]]7201
+name = "wasm-bindgen"7202
+version = "0.2.114"7203
+source = "registry+https://github.com/rust-lang/crates.io-index"7204
+checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e"7205
+dependencies = [7206
+ "cfg-if",7207
+ "once_cell",7208
+ "rustversion",7209
+ "wasm-bindgen-macro",7210
+ "wasm-bindgen-shared",7211
+]7212
+7213
+[[package]]7214
+name = "wasm-bindgen-futures"7215
+version = "0.4.64"7216
+source = "registry+https://github.com/rust-lang/crates.io-index"7217
+checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8"7218
+dependencies = [7219
+ "cfg-if",7220
+ "futures-util",7221
+ "js-sys",7222
+ "once_cell",7223
+ "wasm-bindgen",7224
+ "web-sys",7225
+]7226
+7227
+[[package]]7228
+name = "wasm-bindgen-macro"7229
+version = "0.2.114"7230
+source = "registry+https://github.com/rust-lang/crates.io-index"7231
+checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6"7232
+dependencies = [7233
+ "quote",7234
+ "wasm-bindgen-macro-support",7235
+]7236
+7237
+[[package]]7238
+name = "wasm-bindgen-macro-support"7239
+version = "0.2.114"7240
+source = "registry+https://github.com/rust-lang/crates.io-index"7241
+checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3"7242
+dependencies = [7243
+ "bumpalo",7244
+ "proc-macro2",7245
+ "quote",7246
+ "syn 2.0.101",7247
+ "wasm-bindgen-shared",7248
+]7249
+7250
+[[package]]7251
+name = "wasm-bindgen-shared"7252
+version = "0.2.114"7253
+source = "registry+https://github.com/rust-lang/crates.io-index"7254
+checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16"7255
+dependencies = [7256
+ "unicode-ident",7257
+]7258
+7259
+[[package]]7260
+name = "wasm-bindgen-test"7261
+version = "0.3.64"7262
+source = "registry+https://github.com/rust-lang/crates.io-index"7263
+checksum = "6311c867385cc7d5602463b31825d454d0837a3aba7cdb5e56d5201792a3f7fe"7264
+dependencies = [7265
+ "async-trait",7266
+ "cast",7267
+ "js-sys",7268
+ "libm",7269
+ "minicov",7270
+ "nu-ansi-term",7271
+ "num-traits",7272
+ "oorandom",7273
+ "serde",7274
+ "serde_json",7275
+ "wasm-bindgen",7276
+ "wasm-bindgen-futures",7277
+ "wasm-bindgen-test-macro",7278
+ "wasm-bindgen-test-shared",7279
+]7280
+7281
+[[package]]7282
+name = "wasm-bindgen-test-macro"7283
+version = "0.3.64"7284
+source = "registry+https://github.com/rust-lang/crates.io-index"7285
+checksum = "67008cdde4769831958536b0f11b3bdd0380bde882be17fff9c2f34bb4549abd"7286
+dependencies = [7287
+ "proc-macro2",7288
+ "quote",7289
+ "syn 2.0.101",7290
+]7291
+7292
+[[package]]7293
+name = "wasm-bindgen-test-shared"7294
+version = "0.2.114"7295
+source = "registry+https://github.com/rust-lang/crates.io-index"7296
+checksum = "cfe29135b180b72b04c74aa97b2b4a2ef275161eff9a6c7955ea9eaedc7e1d4e"7297
+7298
+[[package]]7299
+name = "wasm-encoder"7300
+version = "0.244.0"7301
+source = "registry+https://github.com/rust-lang/crates.io-index"7302
+checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319"7303
+dependencies = [7304
+ "leb128fmt",7305
+ "wasmparser",7306
+]7307
+7308
+[[package]]7309
+name = "wasm-metadata"7310
+version = "0.244.0"7311
+source = "registry+https://github.com/rust-lang/crates.io-index"7312
+checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909"7313
+dependencies = [7314
+ "anyhow",7315
+ "indexmap",7316
+ "wasm-encoder",7317
+ "wasmparser",7318
+]7319
+7320
+[[package]]7321
+name = "wasm-streams"7322
+version = "0.5.0"7323
+source = "registry+https://github.com/rust-lang/crates.io-index"7324
+checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb"7325
+dependencies = [7326
+ "futures-util",7327
+ "js-sys",7328
+ "wasm-bindgen",7329
+ "wasm-bindgen-futures",7330
+ "web-sys",7331
+]7332
+7333
+[[package]]7334
+name = "wasm_evt_listener"7335
+version = "0.1.0"7336
+source = "registry+https://github.com/rust-lang/crates.io-index"7337
+checksum = "dc92d6378b411ed94839112a36d9dbc77143451d85b05dfb0cce93a78dab1963"7338
+dependencies = [7339
+ "accessory",7340
+ "derivative",7341
+ "derive_more 1.0.0",7342
+ "fancy_constructor",7343
+ "futures-core",7344
+ "js-sys",7345
+ "smallvec",7346
+ "tokio",7347
+ "wasm-bindgen",7348
+ "web-sys",7349
+]7350
+7351
+[[package]]7352
+name = "wasmparser"7353
+version = "0.244.0"7354
+source = "registry+https://github.com/rust-lang/crates.io-index"7355
+checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"7356
+dependencies = [7357
+ "bitflags 2.10.0",7358
+ "hashbrown 0.15.2",7359
+ "indexmap",7360
+ "semver",7361
+]7362
+7363
+[[package]]7364
+name = "web-sys"7365
+version = "0.3.91"7366
+source = "registry+https://github.com/rust-lang/crates.io-index"7367
+checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9"7368
+dependencies = [7369
+ "js-sys",7370
+ "wasm-bindgen",7371
+]7372
+7373
+[[package]]7374
+name = "web-time"7375
+version = "1.1.0"7376
+source = "registry+https://github.com/rust-lang/crates.io-index"7377
+checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"7378
+dependencies = [7379
+ "js-sys",7380
+ "serde",7381
+ "wasm-bindgen",7382
+]7383
+7384
+[[package]]7385
+name = "web_atoms"7386
+version = "0.2.3"7387
+source = "registry+https://github.com/rust-lang/crates.io-index"7388
+checksum = "57a9779e9f04d2ac1ce317aee707aa2f6b773afba7b931222bff6983843b1576"7389
+dependencies = [7390
+ "phf 0.13.1",7391
+ "phf_codegen 0.13.1",7392
+ "string_cache",7393
+ "string_cache_codegen",7394
+]7395
+7396
+[[package]]7397
+name = "webpki-root-certs"7398
+version = "1.0.2"7399
+source = "registry+https://github.com/rust-lang/crates.io-index"7400
+checksum = "4e4ffd8df1c57e87c325000a3d6ef93db75279dc3a231125aac571650f22b12a"7401
+dependencies = [7402
+ "rustls-pki-types",7403
+]7404
+7405
+[[package]]7406
+name = "webpki-roots"7407
+version = "1.0.6"7408
+source = "registry+https://github.com/rust-lang/crates.io-index"7409
+checksum = "22cfaf3c063993ff62e73cb4311efde4db1efb31ab78a3e5c457939ad5cc0bed"7410
+dependencies = [7411
+ "rustls-pki-types",7412
+]7413
+7414
+[[package]]7415
+name = "weedle2"7416
+version = "5.0.0"7417
+source = "registry+https://github.com/rust-lang/crates.io-index"7418
+checksum = "998d2c24ec099a87daf9467808859f9d82b61f1d9c9701251aea037f514eae0e"7419
+dependencies = [7420
+ "nom",7421
+]7422
+7423
+[[package]]7424
+name = "wezterm-bidi"7425
+version = "0.2.3"7426
+source = "registry+https://github.com/rust-lang/crates.io-index"7427
+checksum = "0c0a6e355560527dd2d1cf7890652f4f09bb3433b6aadade4c9b5ed76de5f3ec"7428
+dependencies = [7429
+ "log",7430
+ "wezterm-dynamic",7431
+]7432
+7433
+[[package]]7434
+name = "wezterm-blob-leases"7435
+version = "0.1.1"7436
+source = "registry+https://github.com/rust-lang/crates.io-index"7437
+checksum = "692daff6d93d94e29e4114544ef6d5c942a7ed998b37abdc19b17136ea428eb7"7438
+dependencies = [7439
+ "getrandom 0.3.4",7440
+ "mac_address",7441
+ "sha2",7442
+ "thiserror 1.0.63",7443
+ "uuid",7444
+]7445
+7446
+[[package]]7447
+name = "wezterm-color-types"7448
+version = "0.3.0"7449
+source = "registry+https://github.com/rust-lang/crates.io-index"7450
+checksum = "7de81ef35c9010270d63772bebef2f2d6d1f2d20a983d27505ac850b8c4b4296"7451
+dependencies = [7452
+ "csscolorparser",7453
+ "deltae",7454
+ "lazy_static",7455
+ "wezterm-dynamic",7456
+]7457
+7458
+[[package]]7459
+name = "wezterm-dynamic"7460
+version = "0.2.1"7461
+source = "registry+https://github.com/rust-lang/crates.io-index"7462
+checksum = "5f2ab60e120fd6eaa68d9567f3226e876684639d22a4219b313ff69ec0ccd5ac"7463
+dependencies = [7464
+ "log",7465
+ "ordered-float 4.6.0",7466
+ "strsim",7467
+ "thiserror 1.0.63",7468
+ "wezterm-dynamic-derive",7469
+]7470
+7471
+[[package]]7472
+name = "wezterm-dynamic-derive"7473
+version = "0.1.1"7474
+source = "registry+https://github.com/rust-lang/crates.io-index"7475
+checksum = "46c0cf2d539c645b448eaffec9ec494b8b19bd5077d9e58cb1ae7efece8d575b"7476
+dependencies = [7477
+ "proc-macro2",7478
+ "quote",7479
+ "syn 1.0.109",7480
+]7481
+7482
+[[package]]7483
+name = "wezterm-input-types"7484
+version = "0.1.0"7485
+source = "registry+https://github.com/rust-lang/crates.io-index"7486
+checksum = "7012add459f951456ec9d6c7e6fc340b1ce15d6fc9629f8c42853412c029e57e"7487
+dependencies = [7488
+ "bitflags 1.3.2",7489
+ "euclid",7490
+ "lazy_static",7491
+ "serde",7492
+ "wezterm-dynamic",7493
+]7494
+7495
+[[package]]7496
+name = "wildmatch"7497
+version = "2.6.1"7498
+source = "registry+https://github.com/rust-lang/crates.io-index"7499
+checksum = "29333c3ea1ba8b17211763463ff24ee84e41c78224c16b001cd907e663a38c68"7500
+7501
+[[package]]7502
+name = "winapi"7503
+version = "0.3.9"7504
+source = "registry+https://github.com/rust-lang/crates.io-index"7505
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"7506
+dependencies = [7507
+ "winapi-i686-pc-windows-gnu",7508
+ "winapi-x86_64-pc-windows-gnu",7509
+]7510
+7511
+[[package]]7512
+name = "winapi-i686-pc-windows-gnu"7513
+version = "0.4.0"7514
+source = "registry+https://github.com/rust-lang/crates.io-index"7515
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"7516
+7517
+[[package]]7518
+name = "winapi-util"7519
+version = "0.1.8"7520
+source = "registry+https://github.com/rust-lang/crates.io-index"7521
+checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b"7522
+dependencies = [7523
+ "windows-sys 0.52.0",7524
+]7525
+7526
+[[package]]7527
+name = "winapi-x86_64-pc-windows-gnu"7528
+version = "0.4.0"7529
+source = "registry+https://github.com/rust-lang/crates.io-index"7530
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"7531
+7532
+[[package]]7533
+name = "windows"7534
+version = "0.61.1"7535
+source = "registry+https://github.com/rust-lang/crates.io-index"7536
+checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419"7537
+dependencies = [7538
+ "windows-collections",7539
+ "windows-core 0.61.2",7540
+ "windows-future",7541
+ "windows-link 0.1.1",7542
+ "windows-numerics",7543
+]7544
+7545
+[[package]]7546
+name = "windows-collections"7547
+version = "0.2.0"7548
+source = "registry+https://github.com/rust-lang/crates.io-index"7549
+checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8"7550
+dependencies = [7551
+ "windows-core 0.61.2",7552
+]7553
+7554
+[[package]]7555
+name = "windows-core"7556
+version = "0.52.0"7557
+source = "registry+https://github.com/rust-lang/crates.io-index"7558
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"7559
+dependencies = [7560
+ "windows-targets 0.52.6",7561
+]7562
+7563
+[[package]]7564
+name = "windows-core"7565
+version = "0.61.2"7566
+source = "registry+https://github.com/rust-lang/crates.io-index"7567
+checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"7568
+dependencies = [7569
+ "windows-implement",7570
+ "windows-interface",7571
+ "windows-link 0.1.1",7572
+ "windows-result",7573
+ "windows-strings",7574
+]7575
+7576
+[[package]]7577
+name = "windows-future"7578
+version = "0.2.1"7579
+source = "registry+https://github.com/rust-lang/crates.io-index"7580
+checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"7581
+dependencies = [7582
+ "windows-core 0.61.2",7583
+ "windows-link 0.1.1",7584
+ "windows-threading",7585
+]7586
+7587
+[[package]]7588
+name = "windows-implement"7589
+version = "0.60.0"7590
+source = "registry+https://github.com/rust-lang/crates.io-index"7591
+checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"7592
+dependencies = [7593
+ "proc-macro2",7594
+ "quote",7595
+ "syn 2.0.101",7596
+]7597
+7598
+[[package]]7599
+name = "windows-interface"7600
+version = "0.59.1"7601
+source = "registry+https://github.com/rust-lang/crates.io-index"7602
+checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"7603
+dependencies = [7604
+ "proc-macro2",7605
+ "quote",7606
+ "syn 2.0.101",7607
+]7608
+7609
+[[package]]7610
+name = "windows-link"7611
+version = "0.1.1"7612
+source = "registry+https://github.com/rust-lang/crates.io-index"7613
+checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"7614
+7615
+[[package]]7616
+name = "windows-link"7617
+version = "0.2.1"7618
+source = "registry+https://github.com/rust-lang/crates.io-index"7619
+checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"7620
+7621
+[[package]]7622
+name = "windows-numerics"7623
+version = "0.2.0"7624
+source = "registry+https://github.com/rust-lang/crates.io-index"7625
+checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"7626
+dependencies = [7627
+ "windows-core 0.61.2",7628
+ "windows-link 0.1.1",7629
+]7630
+7631
+[[package]]7632
+name = "windows-result"7633
+version = "0.3.4"7634
+source = "registry+https://github.com/rust-lang/crates.io-index"7635
+checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"7636
+dependencies = [7637
+ "windows-link 0.1.1",7638
+]7639
+7640
+[[package]]7641
+name = "windows-strings"7642
+version = "0.4.2"7643
+source = "registry+https://github.com/rust-lang/crates.io-index"7644
+checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"7645
+dependencies = [7646
+ "windows-link 0.1.1",7647
+]7648
+7649
+[[package]]7650
+name = "windows-sys"7651
+version = "0.45.0"7652
+source = "registry+https://github.com/rust-lang/crates.io-index"7653
+checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"7654
+dependencies = [7655
+ "windows-targets 0.42.2",7656
+]7657
+7658
+[[package]]7659
+name = "windows-sys"7660
+version = "0.48.0"7661
+source = "registry+https://github.com/rust-lang/crates.io-index"7662
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"7663
+dependencies = [7664
+ "windows-targets 0.48.5",7665
+]7666
+7667
+[[package]]7668
+name = "windows-sys"7669
+version = "0.52.0"7670
+source = "registry+https://github.com/rust-lang/crates.io-index"7671
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"7672
+dependencies = [7673
+ "windows-targets 0.52.6",7674
+]7675
+7676
+[[package]]7677
+name = "windows-sys"7678
+version = "0.59.0"7679
+source = "registry+https://github.com/rust-lang/crates.io-index"7680
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"7681
+dependencies = [7682
+ "windows-targets 0.52.6",7683
+]7684
+7685
+[[package]]7686
+name = "windows-sys"7687
+version = "0.60.2"7688
+source = "registry+https://github.com/rust-lang/crates.io-index"7689
+checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"7690
+dependencies = [7691
+ "windows-targets 0.53.5",7692
+]7693
+7694
+[[package]]7695
+name = "windows-sys"7696
+version = "0.61.2"7697
+source = "registry+https://github.com/rust-lang/crates.io-index"7698
+checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"7699
+dependencies = [7700
+ "windows-link 0.2.1",7701
+]7702
+7703
+[[package]]7704
+name = "windows-targets"7705
+version = "0.42.2"7706
+source = "registry+https://github.com/rust-lang/crates.io-index"7707
+checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"7708
+dependencies = [7709
+ "windows_aarch64_gnullvm 0.42.2",7710
+ "windows_aarch64_msvc 0.42.2",7711
+ "windows_i686_gnu 0.42.2",7712
+ "windows_i686_msvc 0.42.2",7713
+ "windows_x86_64_gnu 0.42.2",7714
+ "windows_x86_64_gnullvm 0.42.2",7715
+ "windows_x86_64_msvc 0.42.2",7716
+]7717
+7718
+[[package]]7719
+name = "windows-targets"7720
+version = "0.48.5"7721
+source = "registry+https://github.com/rust-lang/crates.io-index"7722
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"7723
+dependencies = [7724
+ "windows_aarch64_gnullvm 0.48.5",7725
+ "windows_aarch64_msvc 0.48.5",7726
+ "windows_i686_gnu 0.48.5",7727
+ "windows_i686_msvc 0.48.5",7728
+ "windows_x86_64_gnu 0.48.5",7729
+ "windows_x86_64_gnullvm 0.48.5",7730
+ "windows_x86_64_msvc 0.48.5",7731
+]7732
+7733
+[[package]]7734
+name = "windows-targets"7735
+version = "0.52.6"7736
+source = "registry+https://github.com/rust-lang/crates.io-index"7737
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"7738
+dependencies = [7739
+ "windows_aarch64_gnullvm 0.52.6",7740
+ "windows_aarch64_msvc 0.52.6",7741
+ "windows_i686_gnu 0.52.6",7742
+ "windows_i686_gnullvm 0.52.6",7743
+ "windows_i686_msvc 0.52.6",7744
+ "windows_x86_64_gnu 0.52.6",7745
+ "windows_x86_64_gnullvm 0.52.6",7746
+ "windows_x86_64_msvc 0.52.6",7747
+]7748
+7749
+[[package]]7750
+name = "windows-targets"7751
+version = "0.53.5"7752
+source = "registry+https://github.com/rust-lang/crates.io-index"7753
+checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"7754
+dependencies = [7755
+ "windows-link 0.2.1",7756
+ "windows_aarch64_gnullvm 0.53.1",7757
+ "windows_aarch64_msvc 0.53.1",7758
+ "windows_i686_gnu 0.53.1",7759
+ "windows_i686_gnullvm 0.53.1",7760
+ "windows_i686_msvc 0.53.1",7761
+ "windows_x86_64_gnu 0.53.1",7762
+ "windows_x86_64_gnullvm 0.53.1",7763
+ "windows_x86_64_msvc 0.53.1",7764
+]7765
+7766
+[[package]]7767
+name = "windows-threading"7768
+version = "0.1.0"7769
+source = "registry+https://github.com/rust-lang/crates.io-index"7770
+checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"7771
+dependencies = [7772
+ "windows-link 0.1.1",7773
+]7774
+7775
+[[package]]7776
+name = "windows_aarch64_gnullvm"7777
+version = "0.42.2"7778
+source = "registry+https://github.com/rust-lang/crates.io-index"7779
+checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"7780
+7781
+[[package]]7782
+name = "windows_aarch64_gnullvm"7783
+version = "0.48.5"7784
+source = "registry+https://github.com/rust-lang/crates.io-index"7785
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"7786
+7787
+[[package]]7788
+name = "windows_aarch64_gnullvm"7789
+version = "0.52.6"7790
+source = "registry+https://github.com/show full diff (262144 bytes truncated)