Our Personal Data Server from scratch!
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat(tranquil-store): flaky-device scenario, jemalloc heap-prof

Lewis: May this revision serve well! <lu5a@proton.me>

+5651 -26
+1 -1
.gitignore
··· 1 - /target 1 + target/ 2 2 .env 3 3 .direnv 4 4 result
+3 -2
crates/tranquil-store/Cargo.toml
··· 38 38 clap = { workspace = true, optional = true } 39 39 toml = { version = "0.8", optional = true } 40 40 tracing-subscriber = { workspace = true, features = ["env-filter"], optional = true } 41 + libc = "0.2" 41 42 42 43 [features] 43 44 test-harness = ["dep:tempfile"] 44 45 gauntlet-cli = ["test-harness", "dep:clap", "dep:toml", "dep:tracing-subscriber"] 46 + gauntlet-jemalloc-prof = [] 45 47 46 48 [[bin]] 47 49 name = "tranquil-gauntlet" ··· 60 62 sqlx = { workspace = true } 61 63 k256 = { workspace = true } 62 64 rand = { workspace = true } 63 - tikv-jemallocator = "0.6" 65 + tikv-jemallocator = { version = "0.6", features = ["profiling", "unprefixed_malloc_on_supported_platforms"] } 64 66 tracing-subscriber = { workspace = true, features = ["env-filter"] } 65 - libc = "0.2" 66 67 67 68 [[bench]] 68 69 name = "blockstore"
+4911
crates/tranquil-store/fuzz/Cargo.lock
··· 1 + # This file is automatically @generated by Cargo. 2 + # It is not intended for manual editing. 3 + version = 4 4 + 5 + [[package]] 6 + name = "abnf" 7 + version = "0.13.0" 8 + source = "registry+https://github.com/rust-lang/crates.io-index" 9 + checksum = "087113bd50d9adce24850eed5d0476c7d199d532fce8fab5173650331e09033a" 10 + dependencies = [ 11 + "abnf-core", 12 + "nom", 13 + ] 14 + 15 + [[package]] 16 + name = "abnf-core" 17 + version = "0.5.0" 18 + source = "registry+https://github.com/rust-lang/crates.io-index" 19 + checksum = "c44e09c43ae1c368fb91a03a566472d0087c26cf7e1b9e8e289c14ede681dd7d" 20 + dependencies = [ 21 + "nom", 22 + ] 23 + 24 + [[package]] 25 + name = "adler2" 26 + version = "2.0.1" 27 + source = "registry+https://github.com/rust-lang/crates.io-index" 28 + checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" 29 + 30 + [[package]] 31 + name = "aho-corasick" 32 + version = "1.1.4" 33 + source = "registry+https://github.com/rust-lang/crates.io-index" 34 + checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" 35 + dependencies = [ 36 + "memchr", 37 + ] 38 + 39 + [[package]] 40 + name = "aliasable" 41 + version = "0.1.3" 42 + source = "registry+https://github.com/rust-lang/crates.io-index" 43 + checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" 44 + 45 + [[package]] 46 + name = "allocator-api2" 47 + version = "0.2.21" 48 + source = "registry+https://github.com/rust-lang/crates.io-index" 49 + checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" 50 + 51 + [[package]] 52 + name = "android_system_properties" 53 + version = "0.1.5" 54 + source = "registry+https://github.com/rust-lang/crates.io-index" 55 + checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 56 + dependencies = [ 57 + "libc", 58 + ] 59 + 60 + [[package]] 61 + name = "anyhow" 62 + version = "1.0.102" 63 + source = "registry+https://github.com/rust-lang/crates.io-index" 64 + checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" 65 + 66 + [[package]] 67 + name = "arbitrary" 68 + version = "1.4.2" 69 + source = "registry+https://github.com/rust-lang/crates.io-index" 70 + checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" 71 + dependencies = [ 72 + "derive_arbitrary", 73 + ] 74 + 75 + [[package]] 76 + name = "async-compression" 77 + version = "0.4.41" 78 + source = "registry+https://github.com/rust-lang/crates.io-index" 79 + checksum = "d0f9ee0f6e02ffd7ad5816e9464499fba7b3effd01123b515c41d1697c43dad1" 80 + dependencies = [ 81 + "compression-codecs", 82 + "compression-core", 83 + "pin-project-lite", 84 + "tokio", 85 + ] 86 + 87 + [[package]] 88 + name = "async-trait" 89 + version = "0.1.89" 90 + source = "registry+https://github.com/rust-lang/crates.io-index" 91 + checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" 92 + dependencies = [ 93 + "proc-macro2", 94 + "quote", 95 + "syn 2.0.117", 96 + ] 97 + 98 + [[package]] 99 + name = "atoi" 100 + version = "2.0.0" 101 + source = "registry+https://github.com/rust-lang/crates.io-index" 102 + checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" 103 + dependencies = [ 104 + "num-traits", 105 + ] 106 + 107 + [[package]] 108 + name = "atomic-polyfill" 109 + version = "1.0.3" 110 + source = "registry+https://github.com/rust-lang/crates.io-index" 111 + checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" 112 + dependencies = [ 113 + "critical-section", 114 + ] 115 + 116 + [[package]] 117 + name = "atomic-waker" 118 + version = "1.1.2" 119 + source = "registry+https://github.com/rust-lang/crates.io-index" 120 + checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 121 + 122 + [[package]] 123 + name = "autocfg" 124 + version = "1.5.0" 125 + source = "registry+https://github.com/rust-lang/crates.io-index" 126 + checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" 127 + 128 + [[package]] 129 + name = "axum" 130 + version = "0.8.9" 131 + source = "registry+https://github.com/rust-lang/crates.io-index" 132 + checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90" 133 + dependencies = [ 134 + "axum-core", 135 + "axum-macros", 136 + "base64", 137 + "bytes", 138 + "form_urlencoded", 139 + "futures-util", 140 + "http", 141 + "http-body", 142 + "http-body-util", 143 + "hyper", 144 + "hyper-util", 145 + "itoa", 146 + "matchit", 147 + "memchr", 148 + "mime", 149 + "percent-encoding", 150 + "pin-project-lite", 151 + "serde_core", 152 + "serde_json", 153 + "serde_path_to_error", 154 + "serde_urlencoded", 155 + "sha1", 156 + "sync_wrapper", 157 + "tokio", 158 + "tokio-tungstenite", 159 + "tower", 160 + "tower-layer", 161 + "tower-service", 162 + "tracing", 163 + ] 164 + 165 + [[package]] 166 + name = "axum-core" 167 + version = "0.5.6" 168 + source = "registry+https://github.com/rust-lang/crates.io-index" 169 + checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" 170 + dependencies = [ 171 + "bytes", 172 + "futures-core", 173 + "http", 174 + "http-body", 175 + "http-body-util", 176 + "mime", 177 + "pin-project-lite", 178 + "sync_wrapper", 179 + "tower-layer", 180 + "tower-service", 181 + "tracing", 182 + ] 183 + 184 + [[package]] 185 + name = "axum-macros" 186 + version = "0.5.1" 187 + source = "registry+https://github.com/rust-lang/crates.io-index" 188 + checksum = "7aa268c23bfbbd2c4363b9cd302a4f504fb2a9dfe7e3451d66f35dd392e20aca" 189 + dependencies = [ 190 + "proc-macro2", 191 + "quote", 192 + "syn 2.0.117", 193 + ] 194 + 195 + [[package]] 196 + name = "base-x" 197 + version = "0.2.11" 198 + source = "registry+https://github.com/rust-lang/crates.io-index" 199 + checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" 200 + 201 + [[package]] 202 + name = "base16ct" 203 + version = "0.2.0" 204 + source = "registry+https://github.com/rust-lang/crates.io-index" 205 + checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" 206 + 207 + [[package]] 208 + name = "base256emoji" 209 + version = "1.0.2" 210 + source = "registry+https://github.com/rust-lang/crates.io-index" 211 + checksum = "b5e9430d9a245a77c92176e649af6e275f20839a48389859d1661e9a128d077c" 212 + dependencies = [ 213 + "const-str", 214 + "match-lookup", 215 + ] 216 + 217 + [[package]] 218 + name = "base64" 219 + version = "0.22.1" 220 + source = "registry+https://github.com/rust-lang/crates.io-index" 221 + checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 222 + 223 + [[package]] 224 + name = "base64ct" 225 + version = "1.8.3" 226 + source = "registry+https://github.com/rust-lang/crates.io-index" 227 + checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" 228 + 229 + [[package]] 230 + name = "bitflags" 231 + version = "2.11.1" 232 + source = "registry+https://github.com/rust-lang/crates.io-index" 233 + checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" 234 + dependencies = [ 235 + "serde_core", 236 + ] 237 + 238 + [[package]] 239 + name = "block-buffer" 240 + version = "0.10.4" 241 + source = "registry+https://github.com/rust-lang/crates.io-index" 242 + checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 243 + dependencies = [ 244 + "generic-array", 245 + ] 246 + 247 + [[package]] 248 + name = "bon" 249 + version = "3.9.1" 250 + source = "registry+https://github.com/rust-lang/crates.io-index" 251 + checksum = "f47dbe92550676ee653353c310dfb9cf6ba17ee70396e1f7cf0a2020ad49b2fe" 252 + dependencies = [ 253 + "bon-macros", 254 + "rustversion", 255 + ] 256 + 257 + [[package]] 258 + name = "bon-macros" 259 + version = "3.9.1" 260 + source = "registry+https://github.com/rust-lang/crates.io-index" 261 + checksum = "519bd3116aeeb42d5372c29d982d16d0170d3d4a5ed85fc7dd91642ffff3c67c" 262 + dependencies = [ 263 + "darling", 264 + "ident_case", 265 + "prettyplease", 266 + "proc-macro2", 267 + "quote", 268 + "rustversion", 269 + "syn 2.0.117", 270 + ] 271 + 272 + [[package]] 273 + name = "borsh" 274 + version = "1.6.1" 275 + source = "registry+https://github.com/rust-lang/crates.io-index" 276 + checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" 277 + dependencies = [ 278 + "bytes", 279 + "cfg_aliases", 280 + ] 281 + 282 + [[package]] 283 + name = "btree-range-map" 284 + version = "0.7.2" 285 + source = "registry+https://github.com/rust-lang/crates.io-index" 286 + checksum = "1be5c9672446d3800bcbcaabaeba121fe22f1fb25700c4562b22faf76d377c33" 287 + dependencies = [ 288 + "btree-slab", 289 + "cc-traits", 290 + "range-traits", 291 + "serde", 292 + "slab", 293 + ] 294 + 295 + [[package]] 296 + name = "btree-slab" 297 + version = "0.6.1" 298 + source = "registry+https://github.com/rust-lang/crates.io-index" 299 + checksum = "7a2b56d3029f075c4fa892428a098425b86cef5c89ae54073137ece416aef13c" 300 + dependencies = [ 301 + "cc-traits", 302 + "slab", 303 + "smallvec", 304 + ] 305 + 306 + [[package]] 307 + name = "bumpalo" 308 + version = "3.20.2" 309 + source = "registry+https://github.com/rust-lang/crates.io-index" 310 + checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" 311 + 312 + [[package]] 313 + name = "byteorder" 314 + version = "1.5.0" 315 + source = "registry+https://github.com/rust-lang/crates.io-index" 316 + checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 317 + 318 + [[package]] 319 + name = "byteorder-lite" 320 + version = "0.1.0" 321 + source = "registry+https://github.com/rust-lang/crates.io-index" 322 + checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" 323 + 324 + [[package]] 325 + name = "bytes" 326 + version = "1.11.1" 327 + source = "registry+https://github.com/rust-lang/crates.io-index" 328 + checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" 329 + 330 + [[package]] 331 + name = "byteview" 332 + version = "0.10.1" 333 + source = "registry+https://github.com/rust-lang/crates.io-index" 334 + checksum = "1c53ba0f290bfc610084c05582d9c5d421662128fc69f4bf236707af6fd321b9" 335 + 336 + [[package]] 337 + name = "cbor4ii" 338 + version = "0.2.14" 339 + source = "registry+https://github.com/rust-lang/crates.io-index" 340 + checksum = "b544cf8c89359205f4f990d0e6f3828db42df85b5dac95d09157a250eb0749c4" 341 + dependencies = [ 342 + "serde", 343 + ] 344 + 345 + [[package]] 346 + name = "cc" 347 + version = "1.2.60" 348 + source = "registry+https://github.com/rust-lang/crates.io-index" 349 + checksum = "43c5703da9466b66a946814e1adf53ea2c90f10063b86290cc9eb67ce3478a20" 350 + dependencies = [ 351 + "find-msvc-tools", 352 + "jobserver", 353 + "libc", 354 + "shlex", 355 + ] 356 + 357 + [[package]] 358 + name = "cc-traits" 359 + version = "2.0.0" 360 + source = "registry+https://github.com/rust-lang/crates.io-index" 361 + checksum = "060303ef31ef4a522737e1b1ab68c67916f2a787bb2f4f54f383279adba962b5" 362 + dependencies = [ 363 + "slab", 364 + ] 365 + 366 + [[package]] 367 + name = "cfg-if" 368 + version = "1.0.4" 369 + source = "registry+https://github.com/rust-lang/crates.io-index" 370 + checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" 371 + 372 + [[package]] 373 + name = "cfg_aliases" 374 + version = "0.2.1" 375 + source = "registry+https://github.com/rust-lang/crates.io-index" 376 + checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 377 + 378 + [[package]] 379 + name = "chacha20" 380 + version = "0.10.0" 381 + source = "registry+https://github.com/rust-lang/crates.io-index" 382 + checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" 383 + dependencies = [ 384 + "cfg-if", 385 + "cpufeatures 0.3.0", 386 + "rand_core 0.10.1", 387 + ] 388 + 389 + [[package]] 390 + name = "chrono" 391 + version = "0.4.44" 392 + source = "registry+https://github.com/rust-lang/crates.io-index" 393 + checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" 394 + dependencies = [ 395 + "iana-time-zone", 396 + "js-sys", 397 + "num-traits", 398 + "serde", 399 + "wasm-bindgen", 400 + "windows-link", 401 + ] 402 + 403 + [[package]] 404 + name = "ciborium" 405 + version = "0.2.2" 406 + source = "registry+https://github.com/rust-lang/crates.io-index" 407 + checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" 408 + dependencies = [ 409 + "ciborium-io", 410 + "ciborium-ll", 411 + "serde", 412 + ] 413 + 414 + [[package]] 415 + name = "ciborium-io" 416 + version = "0.2.2" 417 + source = "registry+https://github.com/rust-lang/crates.io-index" 418 + checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" 419 + 420 + [[package]] 421 + name = "ciborium-ll" 422 + version = "0.2.2" 423 + source = "registry+https://github.com/rust-lang/crates.io-index" 424 + checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" 425 + dependencies = [ 426 + "ciborium-io", 427 + "half", 428 + ] 429 + 430 + [[package]] 431 + name = "cid" 432 + version = "0.11.2" 433 + source = "registry+https://github.com/rust-lang/crates.io-index" 434 + checksum = "cbb4913a732503de004e94ce7a4e7119ffc55d1727cc9979ac3b52f511e6578c" 435 + dependencies = [ 436 + "multibase", 437 + "multihash", 438 + "no_std_io2", 439 + "serde", 440 + "serde_bytes", 441 + "unsigned-varint 0.8.0", 442 + ] 443 + 444 + [[package]] 445 + name = "cobs" 446 + version = "0.3.0" 447 + source = "registry+https://github.com/rust-lang/crates.io-index" 448 + checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" 449 + dependencies = [ 450 + "thiserror 2.0.18", 451 + ] 452 + 453 + [[package]] 454 + name = "compare" 455 + version = "0.0.6" 456 + source = "registry+https://github.com/rust-lang/crates.io-index" 457 + checksum = "ea0095f6103c2a8b44acd6fd15960c801dafebf02e21940360833e0673f48ba7" 458 + 459 + [[package]] 460 + name = "compression-codecs" 461 + version = "0.4.37" 462 + source = "registry+https://github.com/rust-lang/crates.io-index" 463 + checksum = "eb7b51a7d9c967fc26773061ba86150f19c50c0d65c887cb1fbe295fd16619b7" 464 + dependencies = [ 465 + "compression-core", 466 + "flate2", 467 + "memchr", 468 + ] 469 + 470 + [[package]] 471 + name = "compression-core" 472 + version = "0.4.31" 473 + source = "registry+https://github.com/rust-lang/crates.io-index" 474 + checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" 475 + 476 + [[package]] 477 + name = "concurrent-queue" 478 + version = "2.5.0" 479 + source = "registry+https://github.com/rust-lang/crates.io-index" 480 + checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" 481 + dependencies = [ 482 + "crossbeam-utils", 483 + ] 484 + 485 + [[package]] 486 + name = "const-oid" 487 + version = "0.9.6" 488 + source = "registry+https://github.com/rust-lang/crates.io-index" 489 + checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" 490 + 491 + [[package]] 492 + name = "const-str" 493 + version = "0.4.3" 494 + source = "registry+https://github.com/rust-lang/crates.io-index" 495 + checksum = "2f421161cb492475f1661ddc9815a745a1c894592070661180fdec3d4872e9c3" 496 + 497 + [[package]] 498 + name = "cordyceps" 499 + version = "0.3.4" 500 + source = "registry+https://github.com/rust-lang/crates.io-index" 501 + checksum = "688d7fbb8092b8de775ef2536f36c8c31f2bc4006ece2e8d8ad2d17d00ce0a2a" 502 + dependencies = [ 503 + "loom", 504 + "tracing", 505 + ] 506 + 507 + [[package]] 508 + name = "core-foundation" 509 + version = "0.9.4" 510 + source = "registry+https://github.com/rust-lang/crates.io-index" 511 + checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 512 + dependencies = [ 513 + "core-foundation-sys", 514 + "libc", 515 + ] 516 + 517 + [[package]] 518 + name = "core-foundation-sys" 519 + version = "0.8.7" 520 + source = "registry+https://github.com/rust-lang/crates.io-index" 521 + checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 522 + 523 + [[package]] 524 + name = "cpufeatures" 525 + version = "0.2.17" 526 + source = "registry+https://github.com/rust-lang/crates.io-index" 527 + checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" 528 + dependencies = [ 529 + "libc", 530 + ] 531 + 532 + [[package]] 533 + name = "cpufeatures" 534 + version = "0.3.0" 535 + source = "registry+https://github.com/rust-lang/crates.io-index" 536 + checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" 537 + dependencies = [ 538 + "libc", 539 + ] 540 + 541 + [[package]] 542 + name = "crc" 543 + version = "3.4.0" 544 + source = "registry+https://github.com/rust-lang/crates.io-index" 545 + checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" 546 + dependencies = [ 547 + "crc-catalog", 548 + ] 549 + 550 + [[package]] 551 + name = "crc-catalog" 552 + version = "2.4.0" 553 + source = "registry+https://github.com/rust-lang/crates.io-index" 554 + checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" 555 + 556 + [[package]] 557 + name = "crc32fast" 558 + version = "1.5.0" 559 + source = "registry+https://github.com/rust-lang/crates.io-index" 560 + checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" 561 + dependencies = [ 562 + "cfg-if", 563 + ] 564 + 565 + [[package]] 566 + name = "critical-section" 567 + version = "1.2.0" 568 + source = "registry+https://github.com/rust-lang/crates.io-index" 569 + checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" 570 + 571 + [[package]] 572 + name = "crossbeam-deque" 573 + version = "0.8.6" 574 + source = "registry+https://github.com/rust-lang/crates.io-index" 575 + checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" 576 + dependencies = [ 577 + "crossbeam-epoch", 578 + "crossbeam-utils", 579 + ] 580 + 581 + [[package]] 582 + name = "crossbeam-epoch" 583 + version = "0.9.18" 584 + source = "registry+https://github.com/rust-lang/crates.io-index" 585 + checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 586 + dependencies = [ 587 + "crossbeam-utils", 588 + ] 589 + 590 + [[package]] 591 + name = "crossbeam-queue" 592 + version = "0.3.12" 593 + source = "registry+https://github.com/rust-lang/crates.io-index" 594 + checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" 595 + dependencies = [ 596 + "crossbeam-utils", 597 + ] 598 + 599 + [[package]] 600 + name = "crossbeam-skiplist" 601 + version = "0.1.3" 602 + source = "registry+https://github.com/rust-lang/crates.io-index" 603 + checksum = "df29de440c58ca2cc6e587ec3d22347551a32435fbde9d2bff64e78a9ffa151b" 604 + dependencies = [ 605 + "crossbeam-epoch", 606 + "crossbeam-utils", 607 + ] 608 + 609 + [[package]] 610 + name = "crossbeam-utils" 611 + version = "0.8.21" 612 + source = "registry+https://github.com/rust-lang/crates.io-index" 613 + checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 614 + 615 + [[package]] 616 + name = "crunchy" 617 + version = "0.2.4" 618 + source = "registry+https://github.com/rust-lang/crates.io-index" 619 + checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" 620 + 621 + [[package]] 622 + name = "crypto-bigint" 623 + version = "0.5.5" 624 + source = "registry+https://github.com/rust-lang/crates.io-index" 625 + checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" 626 + dependencies = [ 627 + "generic-array", 628 + "rand_core 0.6.4", 629 + "subtle", 630 + "zeroize", 631 + ] 632 + 633 + [[package]] 634 + name = "crypto-common" 635 + version = "0.1.6" 636 + source = "registry+https://github.com/rust-lang/crates.io-index" 637 + checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 638 + dependencies = [ 639 + "generic-array", 640 + "typenum", 641 + ] 642 + 643 + [[package]] 644 + name = "curve25519-dalek" 645 + version = "4.1.3" 646 + source = "registry+https://github.com/rust-lang/crates.io-index" 647 + checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" 648 + dependencies = [ 649 + "cfg-if", 650 + "cpufeatures 0.2.17", 651 + "curve25519-dalek-derive", 652 + "digest", 653 + "fiat-crypto", 654 + "rustc_version", 655 + "subtle", 656 + "zeroize", 657 + ] 658 + 659 + [[package]] 660 + name = "curve25519-dalek-derive" 661 + version = "0.1.1" 662 + source = "registry+https://github.com/rust-lang/crates.io-index" 663 + checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" 664 + dependencies = [ 665 + "proc-macro2", 666 + "quote", 667 + "syn 2.0.117", 668 + ] 669 + 670 + [[package]] 671 + name = "darling" 672 + version = "0.23.0" 673 + source = "registry+https://github.com/rust-lang/crates.io-index" 674 + checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" 675 + dependencies = [ 676 + "darling_core", 677 + "darling_macro", 678 + ] 679 + 680 + [[package]] 681 + name = "darling_core" 682 + version = "0.23.0" 683 + source = "registry+https://github.com/rust-lang/crates.io-index" 684 + checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" 685 + dependencies = [ 686 + "ident_case", 687 + "proc-macro2", 688 + "quote", 689 + "strsim", 690 + "syn 2.0.117", 691 + ] 692 + 693 + [[package]] 694 + name = "darling_macro" 695 + version = "0.23.0" 696 + source = "registry+https://github.com/rust-lang/crates.io-index" 697 + checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" 698 + dependencies = [ 699 + "darling_core", 700 + "quote", 701 + "syn 2.0.117", 702 + ] 703 + 704 + [[package]] 705 + name = "dashmap" 706 + version = "6.1.0" 707 + source = "registry+https://github.com/rust-lang/crates.io-index" 708 + checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" 709 + dependencies = [ 710 + "cfg-if", 711 + "crossbeam-utils", 712 + "hashbrown 0.14.5", 713 + "lock_api", 714 + "once_cell", 715 + "parking_lot_core", 716 + ] 717 + 718 + [[package]] 719 + name = "data-encoding" 720 + version = "2.10.0" 721 + source = "registry+https://github.com/rust-lang/crates.io-index" 722 + checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" 723 + 724 + [[package]] 725 + name = "data-encoding-macro" 726 + version = "0.1.19" 727 + source = "registry+https://github.com/rust-lang/crates.io-index" 728 + checksum = "8142a83c17aa9461d637e649271eae18bf2edd00e91f2e105df36c3c16355bdb" 729 + dependencies = [ 730 + "data-encoding", 731 + "data-encoding-macro-internal", 732 + ] 733 + 734 + [[package]] 735 + name = "data-encoding-macro-internal" 736 + version = "0.1.17" 737 + source = "registry+https://github.com/rust-lang/crates.io-index" 738 + checksum = "7ab67060fc6b8ef687992d439ca0fa36e7ed17e9a0b16b25b601e8757df720de" 739 + dependencies = [ 740 + "data-encoding", 741 + "syn 2.0.117", 742 + ] 743 + 744 + [[package]] 745 + name = "der" 746 + version = "0.7.10" 747 + source = "registry+https://github.com/rust-lang/crates.io-index" 748 + checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" 749 + dependencies = [ 750 + "const-oid", 751 + "pem-rfc7468", 752 + "zeroize", 753 + ] 754 + 755 + [[package]] 756 + name = "deranged" 757 + version = "0.5.8" 758 + source = "registry+https://github.com/rust-lang/crates.io-index" 759 + checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" 760 + dependencies = [ 761 + "powerfmt", 762 + "serde_core", 763 + ] 764 + 765 + [[package]] 766 + name = "derive_arbitrary" 767 + version = "1.4.2" 768 + source = "registry+https://github.com/rust-lang/crates.io-index" 769 + checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" 770 + dependencies = [ 771 + "proc-macro2", 772 + "quote", 773 + "syn 2.0.117", 774 + ] 775 + 776 + [[package]] 777 + name = "derive_more" 778 + version = "1.0.0" 779 + source = "registry+https://github.com/rust-lang/crates.io-index" 780 + checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" 781 + dependencies = [ 782 + "derive_more-impl", 783 + ] 784 + 785 + [[package]] 786 + name = "derive_more-impl" 787 + version = "1.0.0" 788 + source = "registry+https://github.com/rust-lang/crates.io-index" 789 + checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" 790 + dependencies = [ 791 + "proc-macro2", 792 + "quote", 793 + "syn 2.0.117", 794 + "unicode-xid", 795 + ] 796 + 797 + [[package]] 798 + name = "diatomic-waker" 799 + version = "0.2.3" 800 + source = "registry+https://github.com/rust-lang/crates.io-index" 801 + checksum = "ab03c107fafeb3ee9f5925686dbb7a73bc76e3932abb0d2b365cb64b169cf04c" 802 + 803 + [[package]] 804 + name = "digest" 805 + version = "0.10.7" 806 + source = "registry+https://github.com/rust-lang/crates.io-index" 807 + checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 808 + dependencies = [ 809 + "block-buffer", 810 + "const-oid", 811 + "crypto-common", 812 + "subtle", 813 + ] 814 + 815 + [[package]] 816 + name = "displaydoc" 817 + version = "0.2.5" 818 + source = "registry+https://github.com/rust-lang/crates.io-index" 819 + checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 820 + dependencies = [ 821 + "proc-macro2", 822 + "quote", 823 + "syn 2.0.117", 824 + ] 825 + 826 + [[package]] 827 + name = "dotenvy" 828 + version = "0.15.7" 829 + source = "registry+https://github.com/rust-lang/crates.io-index" 830 + checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" 831 + 832 + [[package]] 833 + name = "dyn-clone" 834 + version = "1.0.20" 835 + source = "registry+https://github.com/rust-lang/crates.io-index" 836 + checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" 837 + 838 + [[package]] 839 + name = "ecdsa" 840 + version = "0.16.9" 841 + source = "registry+https://github.com/rust-lang/crates.io-index" 842 + checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" 843 + dependencies = [ 844 + "der", 845 + "digest", 846 + "elliptic-curve", 847 + "rfc6979", 848 + "signature", 849 + "spki", 850 + ] 851 + 852 + [[package]] 853 + name = "ed25519" 854 + version = "2.2.3" 855 + source = "registry+https://github.com/rust-lang/crates.io-index" 856 + checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" 857 + dependencies = [ 858 + "pkcs8", 859 + "signature", 860 + ] 861 + 862 + [[package]] 863 + name = "ed25519-dalek" 864 + version = "2.2.0" 865 + source = "registry+https://github.com/rust-lang/crates.io-index" 866 + checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" 867 + dependencies = [ 868 + "curve25519-dalek", 869 + "ed25519", 870 + "rand_core 0.6.4", 871 + "serde", 872 + "sha2", 873 + "subtle", 874 + "zeroize", 875 + ] 876 + 877 + [[package]] 878 + name = "either" 879 + version = "1.15.0" 880 + source = "registry+https://github.com/rust-lang/crates.io-index" 881 + checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" 882 + dependencies = [ 883 + "serde", 884 + ] 885 + 886 + [[package]] 887 + name = "elliptic-curve" 888 + version = "0.13.8" 889 + source = "registry+https://github.com/rust-lang/crates.io-index" 890 + checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" 891 + dependencies = [ 892 + "base16ct", 893 + "crypto-bigint", 894 + "digest", 895 + "ff", 896 + "generic-array", 897 + "group", 898 + "hkdf", 899 + "pem-rfc7468", 900 + "pkcs8", 901 + "rand_core 0.6.4", 902 + "sec1", 903 + "subtle", 904 + "zeroize", 905 + ] 906 + 907 + [[package]] 908 + name = "embedded-io" 909 + version = "0.4.0" 910 + source = "registry+https://github.com/rust-lang/crates.io-index" 911 + checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" 912 + 913 + [[package]] 914 + name = "embedded-io" 915 + version = "0.6.1" 916 + source = "registry+https://github.com/rust-lang/crates.io-index" 917 + checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" 918 + 919 + [[package]] 920 + name = "encoding_rs" 921 + version = "0.8.35" 922 + source = "registry+https://github.com/rust-lang/crates.io-index" 923 + checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" 924 + dependencies = [ 925 + "cfg-if", 926 + ] 927 + 928 + [[package]] 929 + name = "enum_dispatch" 930 + version = "0.3.13" 931 + source = "registry+https://github.com/rust-lang/crates.io-index" 932 + checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" 933 + dependencies = [ 934 + "once_cell", 935 + "proc-macro2", 936 + "quote", 937 + "syn 2.0.117", 938 + ] 939 + 940 + [[package]] 941 + name = "equivalent" 942 + version = "1.0.2" 943 + source = "registry+https://github.com/rust-lang/crates.io-index" 944 + checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 945 + 946 + [[package]] 947 + name = "errno" 948 + version = "0.3.14" 949 + source = "registry+https://github.com/rust-lang/crates.io-index" 950 + checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" 951 + dependencies = [ 952 + "libc", 953 + "windows-sys 0.61.2", 954 + ] 955 + 956 + [[package]] 957 + name = "etcetera" 958 + version = "0.8.0" 959 + source = "registry+https://github.com/rust-lang/crates.io-index" 960 + checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" 961 + dependencies = [ 962 + "cfg-if", 963 + "home", 964 + "windows-sys 0.48.0", 965 + ] 966 + 967 + [[package]] 968 + name = "event-listener" 969 + version = "5.4.1" 970 + source = "registry+https://github.com/rust-lang/crates.io-index" 971 + checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" 972 + dependencies = [ 973 + "concurrent-queue", 974 + "parking", 975 + "pin-project-lite", 976 + ] 977 + 978 + [[package]] 979 + name = "fastrand" 980 + version = "2.4.1" 981 + source = "registry+https://github.com/rust-lang/crates.io-index" 982 + checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" 983 + 984 + [[package]] 985 + name = "ff" 986 + version = "0.13.1" 987 + source = "registry+https://github.com/rust-lang/crates.io-index" 988 + checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" 989 + dependencies = [ 990 + "rand_core 0.6.4", 991 + "subtle", 992 + ] 993 + 994 + [[package]] 995 + name = "fiat-crypto" 996 + version = "0.2.9" 997 + source = "registry+https://github.com/rust-lang/crates.io-index" 998 + checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" 999 + 1000 + [[package]] 1001 + name = "find-msvc-tools" 1002 + version = "0.1.9" 1003 + source = "registry+https://github.com/rust-lang/crates.io-index" 1004 + checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" 1005 + 1006 + [[package]] 1007 + name = "fjall" 1008 + version = "3.1.4" 1009 + source = "registry+https://github.com/rust-lang/crates.io-index" 1010 + checksum = "b62b25b4d815ae178d7d9e4aa32ee59f072efd5431c736abede1e6ee13c8c453" 1011 + dependencies = [ 1012 + "byteorder-lite", 1013 + "byteview", 1014 + "dashmap", 1015 + "flume 0.12.0", 1016 + "log", 1017 + "lsm-tree", 1018 + "lz4_flex", 1019 + "tempfile", 1020 + "xxhash-rust", 1021 + ] 1022 + 1023 + [[package]] 1024 + name = "flate2" 1025 + version = "1.1.9" 1026 + source = "registry+https://github.com/rust-lang/crates.io-index" 1027 + checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" 1028 + dependencies = [ 1029 + "crc32fast", 1030 + "miniz_oxide", 1031 + ] 1032 + 1033 + [[package]] 1034 + name = "flume" 1035 + version = "0.11.1" 1036 + source = "registry+https://github.com/rust-lang/crates.io-index" 1037 + checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" 1038 + dependencies = [ 1039 + "futures-core", 1040 + "futures-sink", 1041 + "nanorand", 1042 + "spin 0.9.8", 1043 + ] 1044 + 1045 + [[package]] 1046 + name = "flume" 1047 + version = "0.12.0" 1048 + source = "registry+https://github.com/rust-lang/crates.io-index" 1049 + checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" 1050 + dependencies = [ 1051 + "spin 0.9.8", 1052 + ] 1053 + 1054 + [[package]] 1055 + name = "fnv" 1056 + version = "1.0.7" 1057 + source = "registry+https://github.com/rust-lang/crates.io-index" 1058 + checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 1059 + 1060 + [[package]] 1061 + name = "foldhash" 1062 + version = "0.1.5" 1063 + source = "registry+https://github.com/rust-lang/crates.io-index" 1064 + checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" 1065 + 1066 + [[package]] 1067 + name = "form_urlencoded" 1068 + version = "1.2.2" 1069 + source = "registry+https://github.com/rust-lang/crates.io-index" 1070 + checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" 1071 + dependencies = [ 1072 + "percent-encoding", 1073 + ] 1074 + 1075 + [[package]] 1076 + name = "futures" 1077 + version = "0.3.32" 1078 + source = "registry+https://github.com/rust-lang/crates.io-index" 1079 + checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" 1080 + dependencies = [ 1081 + "futures-channel", 1082 + "futures-core", 1083 + "futures-executor", 1084 + "futures-io", 1085 + "futures-sink", 1086 + "futures-task", 1087 + "futures-util", 1088 + ] 1089 + 1090 + [[package]] 1091 + name = "futures-buffered" 1092 + version = "0.2.13" 1093 + source = "registry+https://github.com/rust-lang/crates.io-index" 1094 + checksum = "4421cb78ee172b6b06080093479d3c50f058e7c81b7d577bbb8d118d551d4cd5" 1095 + dependencies = [ 1096 + "cordyceps", 1097 + "diatomic-waker", 1098 + "futures-core", 1099 + "pin-project-lite", 1100 + "spin 0.10.0", 1101 + ] 1102 + 1103 + [[package]] 1104 + name = "futures-channel" 1105 + version = "0.3.32" 1106 + source = "registry+https://github.com/rust-lang/crates.io-index" 1107 + checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" 1108 + dependencies = [ 1109 + "futures-core", 1110 + "futures-sink", 1111 + ] 1112 + 1113 + [[package]] 1114 + name = "futures-core" 1115 + version = "0.3.32" 1116 + source = "registry+https://github.com/rust-lang/crates.io-index" 1117 + checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" 1118 + 1119 + [[package]] 1120 + name = "futures-executor" 1121 + version = "0.3.32" 1122 + source = "registry+https://github.com/rust-lang/crates.io-index" 1123 + checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" 1124 + dependencies = [ 1125 + "futures-core", 1126 + "futures-task", 1127 + "futures-util", 1128 + ] 1129 + 1130 + [[package]] 1131 + name = "futures-intrusive" 1132 + version = "0.5.0" 1133 + source = "registry+https://github.com/rust-lang/crates.io-index" 1134 + checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" 1135 + dependencies = [ 1136 + "futures-core", 1137 + "lock_api", 1138 + "parking_lot", 1139 + ] 1140 + 1141 + [[package]] 1142 + name = "futures-io" 1143 + version = "0.3.32" 1144 + source = "registry+https://github.com/rust-lang/crates.io-index" 1145 + checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" 1146 + 1147 + [[package]] 1148 + name = "futures-lite" 1149 + version = "2.6.1" 1150 + source = "registry+https://github.com/rust-lang/crates.io-index" 1151 + checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" 1152 + dependencies = [ 1153 + "fastrand", 1154 + "futures-core", 1155 + "futures-io", 1156 + "parking", 1157 + "pin-project-lite", 1158 + ] 1159 + 1160 + [[package]] 1161 + name = "futures-macro" 1162 + version = "0.3.32" 1163 + source = "registry+https://github.com/rust-lang/crates.io-index" 1164 + checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" 1165 + dependencies = [ 1166 + "proc-macro2", 1167 + "quote", 1168 + "syn 2.0.117", 1169 + ] 1170 + 1171 + [[package]] 1172 + name = "futures-sink" 1173 + version = "0.3.32" 1174 + source = "registry+https://github.com/rust-lang/crates.io-index" 1175 + checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" 1176 + 1177 + [[package]] 1178 + name = "futures-task" 1179 + version = "0.3.32" 1180 + source = "registry+https://github.com/rust-lang/crates.io-index" 1181 + checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" 1182 + 1183 + [[package]] 1184 + name = "futures-util" 1185 + version = "0.3.32" 1186 + source = "registry+https://github.com/rust-lang/crates.io-index" 1187 + checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" 1188 + dependencies = [ 1189 + "futures-channel", 1190 + "futures-core", 1191 + "futures-io", 1192 + "futures-macro", 1193 + "futures-sink", 1194 + "futures-task", 1195 + "memchr", 1196 + "pin-project-lite", 1197 + "slab", 1198 + ] 1199 + 1200 + [[package]] 1201 + name = "generator" 1202 + version = "0.8.8" 1203 + source = "registry+https://github.com/rust-lang/crates.io-index" 1204 + checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" 1205 + dependencies = [ 1206 + "cc", 1207 + "cfg-if", 1208 + "libc", 1209 + "log", 1210 + "rustversion", 1211 + "windows-link", 1212 + "windows-result", 1213 + ] 1214 + 1215 + [[package]] 1216 + name = "generic-array" 1217 + version = "0.14.9" 1218 + source = "registry+https://github.com/rust-lang/crates.io-index" 1219 + checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" 1220 + dependencies = [ 1221 + "typenum", 1222 + "version_check", 1223 + "zeroize", 1224 + ] 1225 + 1226 + [[package]] 1227 + name = "getrandom" 1228 + version = "0.2.17" 1229 + source = "registry+https://github.com/rust-lang/crates.io-index" 1230 + checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" 1231 + dependencies = [ 1232 + "cfg-if", 1233 + "js-sys", 1234 + "libc", 1235 + "wasi", 1236 + "wasm-bindgen", 1237 + ] 1238 + 1239 + [[package]] 1240 + name = "getrandom" 1241 + version = "0.3.4" 1242 + source = "registry+https://github.com/rust-lang/crates.io-index" 1243 + checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" 1244 + dependencies = [ 1245 + "cfg-if", 1246 + "js-sys", 1247 + "libc", 1248 + "r-efi 5.3.0", 1249 + "wasip2", 1250 + "wasm-bindgen", 1251 + ] 1252 + 1253 + [[package]] 1254 + name = "getrandom" 1255 + version = "0.4.2" 1256 + source = "registry+https://github.com/rust-lang/crates.io-index" 1257 + checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" 1258 + dependencies = [ 1259 + "cfg-if", 1260 + "libc", 1261 + "r-efi 6.0.0", 1262 + "rand_core 0.10.1", 1263 + "wasip2", 1264 + "wasip3", 1265 + ] 1266 + 1267 + [[package]] 1268 + name = "group" 1269 + version = "0.13.0" 1270 + source = "registry+https://github.com/rust-lang/crates.io-index" 1271 + checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" 1272 + dependencies = [ 1273 + "ff", 1274 + "rand_core 0.6.4", 1275 + "subtle", 1276 + ] 1277 + 1278 + [[package]] 1279 + name = "h2" 1280 + version = "0.4.13" 1281 + source = "registry+https://github.com/rust-lang/crates.io-index" 1282 + checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" 1283 + dependencies = [ 1284 + "atomic-waker", 1285 + "bytes", 1286 + "fnv", 1287 + "futures-core", 1288 + "futures-sink", 1289 + "http", 1290 + "indexmap 2.14.0", 1291 + "slab", 1292 + "tokio", 1293 + "tokio-util", 1294 + "tracing", 1295 + ] 1296 + 1297 + [[package]] 1298 + name = "half" 1299 + version = "2.7.1" 1300 + source = "registry+https://github.com/rust-lang/crates.io-index" 1301 + checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" 1302 + dependencies = [ 1303 + "cfg-if", 1304 + "crunchy", 1305 + "zerocopy", 1306 + ] 1307 + 1308 + [[package]] 1309 + name = "hash32" 1310 + version = "0.2.1" 1311 + source = "registry+https://github.com/rust-lang/crates.io-index" 1312 + checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" 1313 + dependencies = [ 1314 + "byteorder", 1315 + ] 1316 + 1317 + [[package]] 1318 + name = "hashbrown" 1319 + version = "0.12.3" 1320 + source = "registry+https://github.com/rust-lang/crates.io-index" 1321 + checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 1322 + 1323 + [[package]] 1324 + name = "hashbrown" 1325 + version = "0.14.5" 1326 + source = "registry+https://github.com/rust-lang/crates.io-index" 1327 + checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 1328 + 1329 + [[package]] 1330 + name = "hashbrown" 1331 + version = "0.15.5" 1332 + source = "registry+https://github.com/rust-lang/crates.io-index" 1333 + checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" 1334 + dependencies = [ 1335 + "allocator-api2", 1336 + "equivalent", 1337 + "foldhash", 1338 + ] 1339 + 1340 + [[package]] 1341 + name = "hashbrown" 1342 + version = "0.16.1" 1343 + source = "registry+https://github.com/rust-lang/crates.io-index" 1344 + checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" 1345 + 1346 + [[package]] 1347 + name = "hashbrown" 1348 + version = "0.17.0" 1349 + source = "registry+https://github.com/rust-lang/crates.io-index" 1350 + checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" 1351 + 1352 + [[package]] 1353 + name = "hashlink" 1354 + version = "0.10.0" 1355 + source = "registry+https://github.com/rust-lang/crates.io-index" 1356 + checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" 1357 + dependencies = [ 1358 + "hashbrown 0.15.5", 1359 + ] 1360 + 1361 + [[package]] 1362 + name = "heapless" 1363 + version = "0.7.17" 1364 + source = "registry+https://github.com/rust-lang/crates.io-index" 1365 + checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" 1366 + dependencies = [ 1367 + "atomic-polyfill", 1368 + "hash32", 1369 + "rustc_version", 1370 + "serde", 1371 + "spin 0.9.8", 1372 + "stable_deref_trait", 1373 + ] 1374 + 1375 + [[package]] 1376 + name = "heck" 1377 + version = "0.4.1" 1378 + source = "registry+https://github.com/rust-lang/crates.io-index" 1379 + checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 1380 + 1381 + [[package]] 1382 + name = "heck" 1383 + version = "0.5.0" 1384 + source = "registry+https://github.com/rust-lang/crates.io-index" 1385 + checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 1386 + 1387 + [[package]] 1388 + name = "hex" 1389 + version = "0.4.3" 1390 + source = "registry+https://github.com/rust-lang/crates.io-index" 1391 + checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1392 + 1393 + [[package]] 1394 + name = "hex_fmt" 1395 + version = "0.3.0" 1396 + source = "registry+https://github.com/rust-lang/crates.io-index" 1397 + checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f" 1398 + 1399 + [[package]] 1400 + name = "hkdf" 1401 + version = "0.12.4" 1402 + source = "registry+https://github.com/rust-lang/crates.io-index" 1403 + checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" 1404 + dependencies = [ 1405 + "hmac", 1406 + ] 1407 + 1408 + [[package]] 1409 + name = "hmac" 1410 + version = "0.12.1" 1411 + source = "registry+https://github.com/rust-lang/crates.io-index" 1412 + checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 1413 + dependencies = [ 1414 + "digest", 1415 + ] 1416 + 1417 + [[package]] 1418 + name = "home" 1419 + version = "0.5.12" 1420 + source = "registry+https://github.com/rust-lang/crates.io-index" 1421 + checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" 1422 + dependencies = [ 1423 + "windows-sys 0.61.2", 1424 + ] 1425 + 1426 + [[package]] 1427 + name = "http" 1428 + version = "1.4.0" 1429 + source = "registry+https://github.com/rust-lang/crates.io-index" 1430 + checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" 1431 + dependencies = [ 1432 + "bytes", 1433 + "itoa", 1434 + ] 1435 + 1436 + [[package]] 1437 + name = "http-body" 1438 + version = "1.0.1" 1439 + source = "registry+https://github.com/rust-lang/crates.io-index" 1440 + checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" 1441 + dependencies = [ 1442 + "bytes", 1443 + "http", 1444 + ] 1445 + 1446 + [[package]] 1447 + name = "http-body-util" 1448 + version = "0.1.3" 1449 + source = "registry+https://github.com/rust-lang/crates.io-index" 1450 + checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" 1451 + dependencies = [ 1452 + "bytes", 1453 + "futures-core", 1454 + "http", 1455 + "http-body", 1456 + "pin-project-lite", 1457 + ] 1458 + 1459 + [[package]] 1460 + name = "httparse" 1461 + version = "1.10.1" 1462 + source = "registry+https://github.com/rust-lang/crates.io-index" 1463 + checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" 1464 + 1465 + [[package]] 1466 + name = "httpdate" 1467 + version = "1.0.3" 1468 + source = "registry+https://github.com/rust-lang/crates.io-index" 1469 + checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" 1470 + 1471 + [[package]] 1472 + name = "hyper" 1473 + version = "1.9.0" 1474 + source = "registry+https://github.com/rust-lang/crates.io-index" 1475 + checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" 1476 + dependencies = [ 1477 + "atomic-waker", 1478 + "bytes", 1479 + "futures-channel", 1480 + "futures-core", 1481 + "h2", 1482 + "http", 1483 + "http-body", 1484 + "httparse", 1485 + "httpdate", 1486 + "itoa", 1487 + "pin-project-lite", 1488 + "smallvec", 1489 + "tokio", 1490 + "want", 1491 + ] 1492 + 1493 + [[package]] 1494 + name = "hyper-rustls" 1495 + version = "0.27.9" 1496 + source = "registry+https://github.com/rust-lang/crates.io-index" 1497 + checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" 1498 + dependencies = [ 1499 + "http", 1500 + "hyper", 1501 + "hyper-util", 1502 + "rustls", 1503 + "tokio", 1504 + "tokio-rustls", 1505 + "tower-service", 1506 + "webpki-roots 1.0.7", 1507 + ] 1508 + 1509 + [[package]] 1510 + name = "hyper-util" 1511 + version = "0.1.20" 1512 + source = "registry+https://github.com/rust-lang/crates.io-index" 1513 + checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" 1514 + dependencies = [ 1515 + "base64", 1516 + "bytes", 1517 + "futures-channel", 1518 + "futures-util", 1519 + "http", 1520 + "http-body", 1521 + "hyper", 1522 + "ipnet", 1523 + "libc", 1524 + "percent-encoding", 1525 + "pin-project-lite", 1526 + "socket2", 1527 + "system-configuration", 1528 + "tokio", 1529 + "tower-service", 1530 + "tracing", 1531 + "windows-registry", 1532 + ] 1533 + 1534 + [[package]] 1535 + name = "iana-time-zone" 1536 + version = "0.1.65" 1537 + source = "registry+https://github.com/rust-lang/crates.io-index" 1538 + checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" 1539 + dependencies = [ 1540 + "android_system_properties", 1541 + "core-foundation-sys", 1542 + "iana-time-zone-haiku", 1543 + "js-sys", 1544 + "log", 1545 + "wasm-bindgen", 1546 + "windows-core", 1547 + ] 1548 + 1549 + [[package]] 1550 + name = "iana-time-zone-haiku" 1551 + version = "0.1.2" 1552 + source = "registry+https://github.com/rust-lang/crates.io-index" 1553 + checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 1554 + dependencies = [ 1555 + "cc", 1556 + ] 1557 + 1558 + [[package]] 1559 + name = "icu_collections" 1560 + version = "2.2.0" 1561 + source = "registry+https://github.com/rust-lang/crates.io-index" 1562 + checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" 1563 + dependencies = [ 1564 + "displaydoc", 1565 + "potential_utf", 1566 + "utf8_iter", 1567 + "yoke", 1568 + "zerofrom", 1569 + "zerovec", 1570 + ] 1571 + 1572 + [[package]] 1573 + name = "icu_locale_core" 1574 + version = "2.2.0" 1575 + source = "registry+https://github.com/rust-lang/crates.io-index" 1576 + checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" 1577 + dependencies = [ 1578 + "displaydoc", 1579 + "litemap", 1580 + "tinystr", 1581 + "writeable", 1582 + "zerovec", 1583 + ] 1584 + 1585 + [[package]] 1586 + name = "icu_normalizer" 1587 + version = "2.2.0" 1588 + source = "registry+https://github.com/rust-lang/crates.io-index" 1589 + checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" 1590 + dependencies = [ 1591 + "icu_collections", 1592 + "icu_normalizer_data", 1593 + "icu_properties", 1594 + "icu_provider", 1595 + "smallvec", 1596 + "zerovec", 1597 + ] 1598 + 1599 + [[package]] 1600 + name = "icu_normalizer_data" 1601 + version = "2.2.0" 1602 + source = "registry+https://github.com/rust-lang/crates.io-index" 1603 + checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" 1604 + 1605 + [[package]] 1606 + name = "icu_properties" 1607 + version = "2.2.0" 1608 + source = "registry+https://github.com/rust-lang/crates.io-index" 1609 + checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" 1610 + dependencies = [ 1611 + "icu_collections", 1612 + "icu_locale_core", 1613 + "icu_properties_data", 1614 + "icu_provider", 1615 + "zerotrie", 1616 + "zerovec", 1617 + ] 1618 + 1619 + [[package]] 1620 + name = "icu_properties_data" 1621 + version = "2.2.0" 1622 + source = "registry+https://github.com/rust-lang/crates.io-index" 1623 + checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" 1624 + 1625 + [[package]] 1626 + name = "icu_provider" 1627 + version = "2.2.0" 1628 + source = "registry+https://github.com/rust-lang/crates.io-index" 1629 + checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" 1630 + dependencies = [ 1631 + "displaydoc", 1632 + "icu_locale_core", 1633 + "writeable", 1634 + "yoke", 1635 + "zerofrom", 1636 + "zerotrie", 1637 + "zerovec", 1638 + ] 1639 + 1640 + [[package]] 1641 + name = "id-arena" 1642 + version = "2.3.0" 1643 + source = "registry+https://github.com/rust-lang/crates.io-index" 1644 + checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" 1645 + 1646 + [[package]] 1647 + name = "ident_case" 1648 + version = "1.0.1" 1649 + source = "registry+https://github.com/rust-lang/crates.io-index" 1650 + checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 1651 + 1652 + [[package]] 1653 + name = "idna" 1654 + version = "1.1.0" 1655 + source = "registry+https://github.com/rust-lang/crates.io-index" 1656 + checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" 1657 + dependencies = [ 1658 + "idna_adapter", 1659 + "smallvec", 1660 + "utf8_iter", 1661 + ] 1662 + 1663 + [[package]] 1664 + name = "idna_adapter" 1665 + version = "1.2.1" 1666 + source = "registry+https://github.com/rust-lang/crates.io-index" 1667 + checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" 1668 + dependencies = [ 1669 + "icu_normalizer", 1670 + "icu_properties", 1671 + ] 1672 + 1673 + [[package]] 1674 + name = "indexmap" 1675 + version = "1.9.3" 1676 + source = "registry+https://github.com/rust-lang/crates.io-index" 1677 + checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" 1678 + dependencies = [ 1679 + "autocfg", 1680 + "hashbrown 0.12.3", 1681 + "serde", 1682 + ] 1683 + 1684 + [[package]] 1685 + name = "indexmap" 1686 + version = "2.14.0" 1687 + source = "registry+https://github.com/rust-lang/crates.io-index" 1688 + checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" 1689 + dependencies = [ 1690 + "equivalent", 1691 + "hashbrown 0.17.0", 1692 + "serde", 1693 + "serde_core", 1694 + ] 1695 + 1696 + [[package]] 1697 + name = "indoc" 1698 + version = "2.0.7" 1699 + source = "registry+https://github.com/rust-lang/crates.io-index" 1700 + checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706" 1701 + dependencies = [ 1702 + "rustversion", 1703 + ] 1704 + 1705 + [[package]] 1706 + name = "interval-heap" 1707 + version = "0.0.5" 1708 + source = "registry+https://github.com/rust-lang/crates.io-index" 1709 + checksum = "11274e5e8e89b8607cfedc2910b6626e998779b48a019151c7604d0adcb86ac6" 1710 + dependencies = [ 1711 + "compare", 1712 + ] 1713 + 1714 + [[package]] 1715 + name = "inventory" 1716 + version = "0.3.24" 1717 + source = "registry+https://github.com/rust-lang/crates.io-index" 1718 + checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b" 1719 + dependencies = [ 1720 + "rustversion", 1721 + ] 1722 + 1723 + [[package]] 1724 + name = "ipld-core" 1725 + version = "0.4.3" 1726 + source = "registry+https://github.com/rust-lang/crates.io-index" 1727 + checksum = "090f624976d72f0b0bb71b86d58dc16c15e069193067cb3a3a09d655246cbbda" 1728 + dependencies = [ 1729 + "cid", 1730 + "serde", 1731 + "serde_bytes", 1732 + ] 1733 + 1734 + [[package]] 1735 + name = "ipnet" 1736 + version = "2.12.0" 1737 + source = "registry+https://github.com/rust-lang/crates.io-index" 1738 + checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" 1739 + 1740 + [[package]] 1741 + name = "iri-string" 1742 + version = "0.7.12" 1743 + source = "registry+https://github.com/rust-lang/crates.io-index" 1744 + checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20" 1745 + dependencies = [ 1746 + "memchr", 1747 + "serde", 1748 + ] 1749 + 1750 + [[package]] 1751 + name = "iroh-car" 1752 + version = "0.5.1" 1753 + source = "registry+https://github.com/rust-lang/crates.io-index" 1754 + checksum = "cb7f8cd4cb9aa083fba8b52e921764252d0b4dcb1cd6d120b809dbfe1106e81a" 1755 + dependencies = [ 1756 + "anyhow", 1757 + "cid", 1758 + "futures", 1759 + "serde", 1760 + "serde_ipld_dagcbor", 1761 + "thiserror 1.0.69", 1762 + "tokio", 1763 + "unsigned-varint 0.7.2", 1764 + ] 1765 + 1766 + [[package]] 1767 + name = "itoa" 1768 + version = "1.0.18" 1769 + source = "registry+https://github.com/rust-lang/crates.io-index" 1770 + checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" 1771 + 1772 + [[package]] 1773 + name = "jacquard-common" 1774 + version = "0.9.5" 1775 + source = "registry+https://github.com/rust-lang/crates.io-index" 1776 + checksum = "1751921e0bdae5e0077afade6161545e9ef7698306c868f800916e99ecbcaae9" 1777 + dependencies = [ 1778 + "base64", 1779 + "bon", 1780 + "bytes", 1781 + "chrono", 1782 + "cid", 1783 + "ed25519-dalek", 1784 + "getrandom 0.2.17", 1785 + "getrandom 0.3.4", 1786 + "http", 1787 + "ipld-core", 1788 + "k256", 1789 + "langtag", 1790 + "miette", 1791 + "multibase", 1792 + "multihash", 1793 + "ouroboros", 1794 + "p256", 1795 + "postcard", 1796 + "rand 0.9.4", 1797 + "regex", 1798 + "regex-lite", 1799 + "reqwest", 1800 + "serde", 1801 + "serde_bytes", 1802 + "serde_html_form", 1803 + "serde_ipld_dagcbor", 1804 + "serde_json", 1805 + "signature", 1806 + "smol_str", 1807 + "thiserror 2.0.18", 1808 + "tokio", 1809 + "tokio-util", 1810 + "trait-variant", 1811 + "url", 1812 + ] 1813 + 1814 + [[package]] 1815 + name = "jacquard-derive" 1816 + version = "0.9.5" 1817 + source = "registry+https://github.com/rust-lang/crates.io-index" 1818 + checksum = "9c8d73dfee07943fdab93569ed1c28b06c6921ed891c08b415c4a323ff67e593" 1819 + dependencies = [ 1820 + "heck 0.5.0", 1821 + "jacquard-lexicon", 1822 + "proc-macro2", 1823 + "quote", 1824 + "syn 2.0.117", 1825 + ] 1826 + 1827 + [[package]] 1828 + name = "jacquard-lexicon" 1829 + version = "0.9.5" 1830 + source = "registry+https://github.com/rust-lang/crates.io-index" 1831 + checksum = "8411aff546569b0a1e0ef669bed2380cec1c00d48f02f3fcd57a71545321b3d8" 1832 + dependencies = [ 1833 + "cid", 1834 + "dashmap", 1835 + "heck 0.5.0", 1836 + "inventory", 1837 + "jacquard-common", 1838 + "miette", 1839 + "multihash", 1840 + "prettyplease", 1841 + "proc-macro2", 1842 + "quote", 1843 + "serde", 1844 + "serde_ipld_dagcbor", 1845 + "serde_json", 1846 + "serde_repr", 1847 + "serde_with", 1848 + "sha2", 1849 + "syn 2.0.117", 1850 + "thiserror 2.0.18", 1851 + "unicode-segmentation", 1852 + ] 1853 + 1854 + [[package]] 1855 + name = "jacquard-repo" 1856 + version = "0.9.6" 1857 + source = "registry+https://github.com/rust-lang/crates.io-index" 1858 + checksum = "c59705c56678f4d57229ab7790313b9f7d8f244a658d01ad1f4344e7d2efe2a3" 1859 + dependencies = [ 1860 + "bytes", 1861 + "cid", 1862 + "ed25519-dalek", 1863 + "iroh-car", 1864 + "jacquard-common", 1865 + "jacquard-derive", 1866 + "k256", 1867 + "miette", 1868 + "multihash", 1869 + "n0-future", 1870 + "p256", 1871 + "serde", 1872 + "serde_bytes", 1873 + "serde_ipld_dagcbor", 1874 + "sha2", 1875 + "smol_str", 1876 + "thiserror 2.0.18", 1877 + "tokio", 1878 + "trait-variant", 1879 + ] 1880 + 1881 + [[package]] 1882 + name = "jobserver" 1883 + version = "0.1.34" 1884 + source = "registry+https://github.com/rust-lang/crates.io-index" 1885 + checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" 1886 + dependencies = [ 1887 + "getrandom 0.3.4", 1888 + "libc", 1889 + ] 1890 + 1891 + [[package]] 1892 + name = "js-sys" 1893 + version = "0.3.95" 1894 + source = "registry+https://github.com/rust-lang/crates.io-index" 1895 + checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca" 1896 + dependencies = [ 1897 + "cfg-if", 1898 + "futures-util", 1899 + "once_cell", 1900 + "wasm-bindgen", 1901 + ] 1902 + 1903 + [[package]] 1904 + name = "k256" 1905 + version = "0.13.4" 1906 + source = "registry+https://github.com/rust-lang/crates.io-index" 1907 + checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" 1908 + dependencies = [ 1909 + "cfg-if", 1910 + "ecdsa", 1911 + "elliptic-curve", 1912 + "once_cell", 1913 + "sha2", 1914 + "signature", 1915 + ] 1916 + 1917 + [[package]] 1918 + name = "langtag" 1919 + version = "0.4.0" 1920 + source = "registry+https://github.com/rust-lang/crates.io-index" 1921 + checksum = "9ecb4c689a30e48ebeaa14237f34037e300dd072e6ad21a9ec72e810ff3c6600" 1922 + dependencies = [ 1923 + "serde", 1924 + "static-regular-grammar", 1925 + "thiserror 1.0.69", 1926 + ] 1927 + 1928 + [[package]] 1929 + name = "lazy_static" 1930 + version = "1.5.0" 1931 + source = "registry+https://github.com/rust-lang/crates.io-index" 1932 + checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 1933 + dependencies = [ 1934 + "spin 0.9.8", 1935 + ] 1936 + 1937 + [[package]] 1938 + name = "leb128fmt" 1939 + version = "0.1.0" 1940 + source = "registry+https://github.com/rust-lang/crates.io-index" 1941 + checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" 1942 + 1943 + [[package]] 1944 + name = "libc" 1945 + version = "0.2.186" 1946 + source = "registry+https://github.com/rust-lang/crates.io-index" 1947 + checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" 1948 + 1949 + [[package]] 1950 + name = "libfuzzer-sys" 1951 + version = "0.4.12" 1952 + source = "registry+https://github.com/rust-lang/crates.io-index" 1953 + checksum = "f12a681b7dd8ce12bff52488013ba614b869148d54dd79836ab85aafdd53f08d" 1954 + dependencies = [ 1955 + "arbitrary", 1956 + "cc", 1957 + ] 1958 + 1959 + [[package]] 1960 + name = "libm" 1961 + version = "0.2.16" 1962 + source = "registry+https://github.com/rust-lang/crates.io-index" 1963 + checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" 1964 + 1965 + [[package]] 1966 + name = "libredox" 1967 + version = "0.1.16" 1968 + source = "registry+https://github.com/rust-lang/crates.io-index" 1969 + checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" 1970 + dependencies = [ 1971 + "bitflags", 1972 + "libc", 1973 + "plain", 1974 + "redox_syscall 0.7.4", 1975 + ] 1976 + 1977 + [[package]] 1978 + name = "libsqlite3-sys" 1979 + version = "0.30.1" 1980 + source = "registry+https://github.com/rust-lang/crates.io-index" 1981 + checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" 1982 + dependencies = [ 1983 + "pkg-config", 1984 + "vcpkg", 1985 + ] 1986 + 1987 + [[package]] 1988 + name = "linux-raw-sys" 1989 + version = "0.12.1" 1990 + source = "registry+https://github.com/rust-lang/crates.io-index" 1991 + checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" 1992 + 1993 + [[package]] 1994 + name = "litemap" 1995 + version = "0.8.2" 1996 + source = "registry+https://github.com/rust-lang/crates.io-index" 1997 + checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" 1998 + 1999 + [[package]] 2000 + name = "lock_api" 2001 + version = "0.4.14" 2002 + source = "registry+https://github.com/rust-lang/crates.io-index" 2003 + checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" 2004 + dependencies = [ 2005 + "scopeguard", 2006 + ] 2007 + 2008 + [[package]] 2009 + name = "log" 2010 + version = "0.4.29" 2011 + source = "registry+https://github.com/rust-lang/crates.io-index" 2012 + checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" 2013 + 2014 + [[package]] 2015 + name = "loom" 2016 + version = "0.7.2" 2017 + source = "registry+https://github.com/rust-lang/crates.io-index" 2018 + checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" 2019 + dependencies = [ 2020 + "cfg-if", 2021 + "generator", 2022 + "scoped-tls", 2023 + "tracing", 2024 + "tracing-subscriber", 2025 + ] 2026 + 2027 + [[package]] 2028 + name = "lru-slab" 2029 + version = "0.1.2" 2030 + source = "registry+https://github.com/rust-lang/crates.io-index" 2031 + checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" 2032 + 2033 + [[package]] 2034 + name = "lsm-tree" 2035 + version = "3.1.4" 2036 + source = "registry+https://github.com/rust-lang/crates.io-index" 2037 + checksum = "e447ac67ff6aef4ec07fc19e507b219336cbba90a697c0dbeb1bf51b91536b67" 2038 + dependencies = [ 2039 + "byteorder-lite", 2040 + "byteview", 2041 + "crossbeam-skiplist", 2042 + "enum_dispatch", 2043 + "interval-heap", 2044 + "log", 2045 + "lz4_flex", 2046 + "quick_cache", 2047 + "rustc-hash", 2048 + "self_cell", 2049 + "sfa", 2050 + "tempfile", 2051 + "varint-rs", 2052 + "xxhash-rust", 2053 + ] 2054 + 2055 + [[package]] 2056 + name = "lz4_flex" 2057 + version = "0.13.0" 2058 + source = "registry+https://github.com/rust-lang/crates.io-index" 2059 + checksum = "db9a0d582c2874f68138a16ce1867e0ffde6c0bb0a0df85e1f36d04146db488a" 2060 + dependencies = [ 2061 + "twox-hash", 2062 + ] 2063 + 2064 + [[package]] 2065 + name = "match-lookup" 2066 + version = "0.1.2" 2067 + source = "registry+https://github.com/rust-lang/crates.io-index" 2068 + checksum = "757aee279b8bdbb9f9e676796fd459e4207a1f986e87886700abf589f5abf771" 2069 + dependencies = [ 2070 + "proc-macro2", 2071 + "quote", 2072 + "syn 2.0.117", 2073 + ] 2074 + 2075 + [[package]] 2076 + name = "matchers" 2077 + version = "0.2.0" 2078 + source = "registry+https://github.com/rust-lang/crates.io-index" 2079 + checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" 2080 + dependencies = [ 2081 + "regex-automata", 2082 + ] 2083 + 2084 + [[package]] 2085 + name = "matchit" 2086 + version = "0.8.4" 2087 + source = "registry+https://github.com/rust-lang/crates.io-index" 2088 + checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" 2089 + 2090 + [[package]] 2091 + name = "md-5" 2092 + version = "0.10.6" 2093 + source = "registry+https://github.com/rust-lang/crates.io-index" 2094 + checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" 2095 + dependencies = [ 2096 + "cfg-if", 2097 + "digest", 2098 + ] 2099 + 2100 + [[package]] 2101 + name = "memchr" 2102 + version = "2.8.0" 2103 + source = "registry+https://github.com/rust-lang/crates.io-index" 2104 + checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" 2105 + 2106 + [[package]] 2107 + name = "memmap2" 2108 + version = "0.9.10" 2109 + source = "registry+https://github.com/rust-lang/crates.io-index" 2110 + checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" 2111 + dependencies = [ 2112 + "libc", 2113 + ] 2114 + 2115 + [[package]] 2116 + name = "miette" 2117 + version = "7.6.0" 2118 + source = "registry+https://github.com/rust-lang/crates.io-index" 2119 + checksum = "5f98efec8807c63c752b5bd61f862c165c115b0a35685bdcfd9238c7aeb592b7" 2120 + dependencies = [ 2121 + "cfg-if", 2122 + "miette-derive", 2123 + "unicode-width", 2124 + ] 2125 + 2126 + [[package]] 2127 + name = "miette-derive" 2128 + version = "7.6.0" 2129 + source = "registry+https://github.com/rust-lang/crates.io-index" 2130 + checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b" 2131 + dependencies = [ 2132 + "proc-macro2", 2133 + "quote", 2134 + "syn 2.0.117", 2135 + ] 2136 + 2137 + [[package]] 2138 + name = "mime" 2139 + version = "0.3.17" 2140 + source = "registry+https://github.com/rust-lang/crates.io-index" 2141 + checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 2142 + 2143 + [[package]] 2144 + name = "minimal-lexical" 2145 + version = "0.2.1" 2146 + source = "registry+https://github.com/rust-lang/crates.io-index" 2147 + checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 2148 + 2149 + [[package]] 2150 + name = "miniz_oxide" 2151 + version = "0.8.9" 2152 + source = "registry+https://github.com/rust-lang/crates.io-index" 2153 + checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" 2154 + dependencies = [ 2155 + "adler2", 2156 + "simd-adler32", 2157 + ] 2158 + 2159 + [[package]] 2160 + name = "mio" 2161 + version = "1.2.0" 2162 + source = "registry+https://github.com/rust-lang/crates.io-index" 2163 + checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" 2164 + dependencies = [ 2165 + "libc", 2166 + "wasi", 2167 + "windows-sys 0.61.2", 2168 + ] 2169 + 2170 + [[package]] 2171 + name = "multibase" 2172 + version = "0.9.2" 2173 + source = "registry+https://github.com/rust-lang/crates.io-index" 2174 + checksum = "8694bb4835f452b0e3bb06dbebb1d6fc5385b6ca1caf2e55fd165c042390ec77" 2175 + dependencies = [ 2176 + "base-x", 2177 + "base256emoji", 2178 + "data-encoding", 2179 + "data-encoding-macro", 2180 + ] 2181 + 2182 + [[package]] 2183 + name = "multihash" 2184 + version = "0.19.4" 2185 + source = "registry+https://github.com/rust-lang/crates.io-index" 2186 + checksum = "89ace881e3f514092ce9efbcb8f413d0ad9763860b828981c2de51ddc666936c" 2187 + dependencies = [ 2188 + "no_std_io2", 2189 + "serde", 2190 + "unsigned-varint 0.8.0", 2191 + ] 2192 + 2193 + [[package]] 2194 + name = "n0-future" 2195 + version = "0.1.3" 2196 + source = "registry+https://github.com/rust-lang/crates.io-index" 2197 + checksum = "7bb0e5d99e681ab3c938842b96fcb41bf8a7bb4bfdb11ccbd653a7e83e06c794" 2198 + dependencies = [ 2199 + "cfg_aliases", 2200 + "derive_more", 2201 + "futures-buffered", 2202 + "futures-lite", 2203 + "futures-util", 2204 + "js-sys", 2205 + "pin-project", 2206 + "send_wrapper", 2207 + "tokio", 2208 + "tokio-util", 2209 + "wasm-bindgen", 2210 + "wasm-bindgen-futures", 2211 + "web-time", 2212 + ] 2213 + 2214 + [[package]] 2215 + name = "nanorand" 2216 + version = "0.7.0" 2217 + source = "registry+https://github.com/rust-lang/crates.io-index" 2218 + checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" 2219 + dependencies = [ 2220 + "getrandom 0.2.17", 2221 + ] 2222 + 2223 + [[package]] 2224 + name = "no_std_io2" 2225 + version = "0.8.1" 2226 + source = "registry+https://github.com/rust-lang/crates.io-index" 2227 + checksum = "8a3564ce7035b1e4778d8cb6cacebb5d766b5e8fe5a75b9e441e33fb61a872c6" 2228 + dependencies = [ 2229 + "memchr", 2230 + ] 2231 + 2232 + [[package]] 2233 + name = "nom" 2234 + version = "7.1.3" 2235 + source = "registry+https://github.com/rust-lang/crates.io-index" 2236 + checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 2237 + dependencies = [ 2238 + "memchr", 2239 + "minimal-lexical", 2240 + ] 2241 + 2242 + [[package]] 2243 + name = "nu-ansi-term" 2244 + version = "0.50.3" 2245 + source = "registry+https://github.com/rust-lang/crates.io-index" 2246 + checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" 2247 + dependencies = [ 2248 + "windows-sys 0.61.2", 2249 + ] 2250 + 2251 + [[package]] 2252 + name = "num-bigint-dig" 2253 + version = "0.8.6" 2254 + source = "registry+https://github.com/rust-lang/crates.io-index" 2255 + checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" 2256 + dependencies = [ 2257 + "lazy_static", 2258 + "libm", 2259 + "num-integer", 2260 + "num-iter", 2261 + "num-traits", 2262 + "rand 0.8.6", 2263 + "smallvec", 2264 + "zeroize", 2265 + ] 2266 + 2267 + [[package]] 2268 + name = "num-conv" 2269 + version = "0.2.1" 2270 + source = "registry+https://github.com/rust-lang/crates.io-index" 2271 + checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" 2272 + 2273 + [[package]] 2274 + name = "num-integer" 2275 + version = "0.1.46" 2276 + source = "registry+https://github.com/rust-lang/crates.io-index" 2277 + checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 2278 + dependencies = [ 2279 + "num-traits", 2280 + ] 2281 + 2282 + [[package]] 2283 + name = "num-iter" 2284 + version = "0.1.45" 2285 + source = "registry+https://github.com/rust-lang/crates.io-index" 2286 + checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" 2287 + dependencies = [ 2288 + "autocfg", 2289 + "num-integer", 2290 + "num-traits", 2291 + ] 2292 + 2293 + [[package]] 2294 + name = "num-traits" 2295 + version = "0.2.19" 2296 + source = "registry+https://github.com/rust-lang/crates.io-index" 2297 + checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 2298 + dependencies = [ 2299 + "autocfg", 2300 + "libm", 2301 + ] 2302 + 2303 + [[package]] 2304 + name = "once_cell" 2305 + version = "1.21.4" 2306 + source = "registry+https://github.com/rust-lang/crates.io-index" 2307 + checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" 2308 + 2309 + [[package]] 2310 + name = "ouroboros" 2311 + version = "0.18.5" 2312 + source = "registry+https://github.com/rust-lang/crates.io-index" 2313 + checksum = "1e0f050db9c44b97a94723127e6be766ac5c340c48f2c4bb3ffa11713744be59" 2314 + dependencies = [ 2315 + "aliasable", 2316 + "ouroboros_macro", 2317 + "static_assertions", 2318 + ] 2319 + 2320 + [[package]] 2321 + name = "ouroboros_macro" 2322 + version = "0.18.5" 2323 + source = "registry+https://github.com/rust-lang/crates.io-index" 2324 + checksum = "3c7028bdd3d43083f6d8d4d5187680d0d3560d54df4cc9d752005268b41e64d0" 2325 + dependencies = [ 2326 + "heck 0.4.1", 2327 + "proc-macro2", 2328 + "proc-macro2-diagnostics", 2329 + "quote", 2330 + "syn 2.0.117", 2331 + ] 2332 + 2333 + [[package]] 2334 + name = "p256" 2335 + version = "0.13.2" 2336 + source = "registry+https://github.com/rust-lang/crates.io-index" 2337 + checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" 2338 + dependencies = [ 2339 + "ecdsa", 2340 + "elliptic-curve", 2341 + "primeorder", 2342 + "sha2", 2343 + ] 2344 + 2345 + [[package]] 2346 + name = "p384" 2347 + version = "0.13.1" 2348 + source = "registry+https://github.com/rust-lang/crates.io-index" 2349 + checksum = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6" 2350 + dependencies = [ 2351 + "ecdsa", 2352 + "elliptic-curve", 2353 + "primeorder", 2354 + "sha2", 2355 + ] 2356 + 2357 + [[package]] 2358 + name = "parking" 2359 + version = "2.2.1" 2360 + source = "registry+https://github.com/rust-lang/crates.io-index" 2361 + checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" 2362 + 2363 + [[package]] 2364 + name = "parking_lot" 2365 + version = "0.12.5" 2366 + source = "registry+https://github.com/rust-lang/crates.io-index" 2367 + checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" 2368 + dependencies = [ 2369 + "lock_api", 2370 + "parking_lot_core", 2371 + ] 2372 + 2373 + [[package]] 2374 + name = "parking_lot_core" 2375 + version = "0.9.12" 2376 + source = "registry+https://github.com/rust-lang/crates.io-index" 2377 + checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" 2378 + dependencies = [ 2379 + "cfg-if", 2380 + "libc", 2381 + "redox_syscall 0.5.18", 2382 + "smallvec", 2383 + "windows-link", 2384 + ] 2385 + 2386 + [[package]] 2387 + name = "pem-rfc7468" 2388 + version = "0.7.0" 2389 + source = "registry+https://github.com/rust-lang/crates.io-index" 2390 + checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" 2391 + dependencies = [ 2392 + "base64ct", 2393 + ] 2394 + 2395 + [[package]] 2396 + name = "percent-encoding" 2397 + version = "2.3.2" 2398 + source = "registry+https://github.com/rust-lang/crates.io-index" 2399 + checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" 2400 + 2401 + [[package]] 2402 + name = "pin-project" 2403 + version = "1.1.11" 2404 + source = "registry+https://github.com/rust-lang/crates.io-index" 2405 + checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517" 2406 + dependencies = [ 2407 + "pin-project-internal", 2408 + ] 2409 + 2410 + [[package]] 2411 + name = "pin-project-internal" 2412 + version = "1.1.11" 2413 + source = "registry+https://github.com/rust-lang/crates.io-index" 2414 + checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" 2415 + dependencies = [ 2416 + "proc-macro2", 2417 + "quote", 2418 + "syn 2.0.117", 2419 + ] 2420 + 2421 + [[package]] 2422 + name = "pin-project-lite" 2423 + version = "0.2.17" 2424 + source = "registry+https://github.com/rust-lang/crates.io-index" 2425 + checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" 2426 + 2427 + [[package]] 2428 + name = "pkcs1" 2429 + version = "0.7.5" 2430 + source = "registry+https://github.com/rust-lang/crates.io-index" 2431 + checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" 2432 + dependencies = [ 2433 + "der", 2434 + "pkcs8", 2435 + "spki", 2436 + ] 2437 + 2438 + [[package]] 2439 + name = "pkcs8" 2440 + version = "0.10.2" 2441 + source = "registry+https://github.com/rust-lang/crates.io-index" 2442 + checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" 2443 + dependencies = [ 2444 + "der", 2445 + "spki", 2446 + ] 2447 + 2448 + [[package]] 2449 + name = "pkg-config" 2450 + version = "0.3.33" 2451 + source = "registry+https://github.com/rust-lang/crates.io-index" 2452 + checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" 2453 + 2454 + [[package]] 2455 + name = "plain" 2456 + version = "0.2.3" 2457 + source = "registry+https://github.com/rust-lang/crates.io-index" 2458 + checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" 2459 + 2460 + [[package]] 2461 + name = "postcard" 2462 + version = "1.1.3" 2463 + source = "registry+https://github.com/rust-lang/crates.io-index" 2464 + checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" 2465 + dependencies = [ 2466 + "cobs", 2467 + "embedded-io 0.4.0", 2468 + "embedded-io 0.6.1", 2469 + "heapless", 2470 + "serde", 2471 + ] 2472 + 2473 + [[package]] 2474 + name = "potential_utf" 2475 + version = "0.1.5" 2476 + source = "registry+https://github.com/rust-lang/crates.io-index" 2477 + checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" 2478 + dependencies = [ 2479 + "zerovec", 2480 + ] 2481 + 2482 + [[package]] 2483 + name = "powerfmt" 2484 + version = "0.2.0" 2485 + source = "registry+https://github.com/rust-lang/crates.io-index" 2486 + checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 2487 + 2488 + [[package]] 2489 + name = "ppv-lite86" 2490 + version = "0.2.21" 2491 + source = "registry+https://github.com/rust-lang/crates.io-index" 2492 + checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 2493 + dependencies = [ 2494 + "zerocopy", 2495 + ] 2496 + 2497 + [[package]] 2498 + name = "prettyplease" 2499 + version = "0.2.37" 2500 + source = "registry+https://github.com/rust-lang/crates.io-index" 2501 + checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" 2502 + dependencies = [ 2503 + "proc-macro2", 2504 + "syn 2.0.117", 2505 + ] 2506 + 2507 + [[package]] 2508 + name = "primeorder" 2509 + version = "0.13.6" 2510 + source = "registry+https://github.com/rust-lang/crates.io-index" 2511 + checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" 2512 + dependencies = [ 2513 + "elliptic-curve", 2514 + ] 2515 + 2516 + [[package]] 2517 + name = "proc-macro-error" 2518 + version = "1.0.4" 2519 + source = "registry+https://github.com/rust-lang/crates.io-index" 2520 + checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 2521 + dependencies = [ 2522 + "proc-macro-error-attr", 2523 + "proc-macro2", 2524 + "quote", 2525 + "syn 1.0.109", 2526 + "version_check", 2527 + ] 2528 + 2529 + [[package]] 2530 + name = "proc-macro-error-attr" 2531 + version = "1.0.4" 2532 + source = "registry+https://github.com/rust-lang/crates.io-index" 2533 + checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 2534 + dependencies = [ 2535 + "proc-macro2", 2536 + "quote", 2537 + "version_check", 2538 + ] 2539 + 2540 + [[package]] 2541 + name = "proc-macro2" 2542 + version = "1.0.106" 2543 + source = "registry+https://github.com/rust-lang/crates.io-index" 2544 + checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" 2545 + dependencies = [ 2546 + "unicode-ident", 2547 + ] 2548 + 2549 + [[package]] 2550 + name = "proc-macro2-diagnostics" 2551 + version = "0.10.1" 2552 + source = "registry+https://github.com/rust-lang/crates.io-index" 2553 + checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" 2554 + dependencies = [ 2555 + "proc-macro2", 2556 + "quote", 2557 + "syn 2.0.117", 2558 + "version_check", 2559 + "yansi", 2560 + ] 2561 + 2562 + [[package]] 2563 + name = "quick_cache" 2564 + version = "0.6.21" 2565 + source = "registry+https://github.com/rust-lang/crates.io-index" 2566 + checksum = "5a70b1b8b47e31d0498ecbc3c5470bb931399a8bfed1fd79d1717a61ce7f96e3" 2567 + dependencies = [ 2568 + "equivalent", 2569 + "hashbrown 0.16.1", 2570 + ] 2571 + 2572 + [[package]] 2573 + name = "quinn" 2574 + version = "0.11.9" 2575 + source = "registry+https://github.com/rust-lang/crates.io-index" 2576 + checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" 2577 + dependencies = [ 2578 + "bytes", 2579 + "cfg_aliases", 2580 + "pin-project-lite", 2581 + "quinn-proto", 2582 + "quinn-udp", 2583 + "rustc-hash", 2584 + "rustls", 2585 + "socket2", 2586 + "thiserror 2.0.18", 2587 + "tokio", 2588 + "tracing", 2589 + "web-time", 2590 + ] 2591 + 2592 + [[package]] 2593 + name = "quinn-proto" 2594 + version = "0.11.14" 2595 + source = "registry+https://github.com/rust-lang/crates.io-index" 2596 + checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" 2597 + dependencies = [ 2598 + "bytes", 2599 + "getrandom 0.3.4", 2600 + "lru-slab", 2601 + "rand 0.9.4", 2602 + "ring", 2603 + "rustc-hash", 2604 + "rustls", 2605 + "rustls-pki-types", 2606 + "slab", 2607 + "thiserror 2.0.18", 2608 + "tinyvec", 2609 + "tracing", 2610 + "web-time", 2611 + ] 2612 + 2613 + [[package]] 2614 + name = "quinn-udp" 2615 + version = "0.5.14" 2616 + source = "registry+https://github.com/rust-lang/crates.io-index" 2617 + checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" 2618 + dependencies = [ 2619 + "cfg_aliases", 2620 + "libc", 2621 + "once_cell", 2622 + "socket2", 2623 + "tracing", 2624 + "windows-sys 0.60.2", 2625 + ] 2626 + 2627 + [[package]] 2628 + name = "quote" 2629 + version = "1.0.45" 2630 + source = "registry+https://github.com/rust-lang/crates.io-index" 2631 + checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" 2632 + dependencies = [ 2633 + "proc-macro2", 2634 + ] 2635 + 2636 + [[package]] 2637 + name = "r-efi" 2638 + version = "5.3.0" 2639 + source = "registry+https://github.com/rust-lang/crates.io-index" 2640 + checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" 2641 + 2642 + [[package]] 2643 + name = "r-efi" 2644 + version = "6.0.0" 2645 + source = "registry+https://github.com/rust-lang/crates.io-index" 2646 + checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" 2647 + 2648 + [[package]] 2649 + name = "rand" 2650 + version = "0.8.6" 2651 + source = "registry+https://github.com/rust-lang/crates.io-index" 2652 + checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" 2653 + dependencies = [ 2654 + "libc", 2655 + "rand_chacha 0.3.1", 2656 + "rand_core 0.6.4", 2657 + ] 2658 + 2659 + [[package]] 2660 + name = "rand" 2661 + version = "0.9.4" 2662 + source = "registry+https://github.com/rust-lang/crates.io-index" 2663 + checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" 2664 + dependencies = [ 2665 + "rand_chacha 0.9.0", 2666 + "rand_core 0.9.5", 2667 + ] 2668 + 2669 + [[package]] 2670 + name = "rand" 2671 + version = "0.10.1" 2672 + source = "registry+https://github.com/rust-lang/crates.io-index" 2673 + checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" 2674 + dependencies = [ 2675 + "chacha20", 2676 + "getrandom 0.4.2", 2677 + "rand_core 0.10.1", 2678 + ] 2679 + 2680 + [[package]] 2681 + name = "rand_chacha" 2682 + version = "0.3.1" 2683 + source = "registry+https://github.com/rust-lang/crates.io-index" 2684 + checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 2685 + dependencies = [ 2686 + "ppv-lite86", 2687 + "rand_core 0.6.4", 2688 + ] 2689 + 2690 + [[package]] 2691 + name = "rand_chacha" 2692 + version = "0.9.0" 2693 + source = "registry+https://github.com/rust-lang/crates.io-index" 2694 + checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" 2695 + dependencies = [ 2696 + "ppv-lite86", 2697 + "rand_core 0.9.5", 2698 + ] 2699 + 2700 + [[package]] 2701 + name = "rand_core" 2702 + version = "0.6.4" 2703 + source = "registry+https://github.com/rust-lang/crates.io-index" 2704 + checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 2705 + dependencies = [ 2706 + "getrandom 0.2.17", 2707 + ] 2708 + 2709 + [[package]] 2710 + name = "rand_core" 2711 + version = "0.9.5" 2712 + source = "registry+https://github.com/rust-lang/crates.io-index" 2713 + checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" 2714 + dependencies = [ 2715 + "getrandom 0.3.4", 2716 + ] 2717 + 2718 + [[package]] 2719 + name = "rand_core" 2720 + version = "0.10.1" 2721 + source = "registry+https://github.com/rust-lang/crates.io-index" 2722 + checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" 2723 + 2724 + [[package]] 2725 + name = "range-traits" 2726 + version = "0.3.2" 2727 + source = "registry+https://github.com/rust-lang/crates.io-index" 2728 + checksum = "d20581732dd76fa913c7dff1a2412b714afe3573e94d41c34719de73337cc8ab" 2729 + 2730 + [[package]] 2731 + name = "rayon" 2732 + version = "1.12.0" 2733 + source = "registry+https://github.com/rust-lang/crates.io-index" 2734 + checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" 2735 + dependencies = [ 2736 + "either", 2737 + "rayon-core", 2738 + ] 2739 + 2740 + [[package]] 2741 + name = "rayon-core" 2742 + version = "1.13.0" 2743 + source = "registry+https://github.com/rust-lang/crates.io-index" 2744 + checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" 2745 + dependencies = [ 2746 + "crossbeam-deque", 2747 + "crossbeam-utils", 2748 + ] 2749 + 2750 + [[package]] 2751 + name = "redox_syscall" 2752 + version = "0.5.18" 2753 + source = "registry+https://github.com/rust-lang/crates.io-index" 2754 + checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" 2755 + dependencies = [ 2756 + "bitflags", 2757 + ] 2758 + 2759 + [[package]] 2760 + name = "redox_syscall" 2761 + version = "0.7.4" 2762 + source = "registry+https://github.com/rust-lang/crates.io-index" 2763 + checksum = "f450ad9c3b1da563fb6948a8e0fb0fb9269711c9c73d9ea1de5058c79c8d643a" 2764 + dependencies = [ 2765 + "bitflags", 2766 + ] 2767 + 2768 + [[package]] 2769 + name = "ref-cast" 2770 + version = "1.0.25" 2771 + source = "registry+https://github.com/rust-lang/crates.io-index" 2772 + checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" 2773 + dependencies = [ 2774 + "ref-cast-impl", 2775 + ] 2776 + 2777 + [[package]] 2778 + name = "ref-cast-impl" 2779 + version = "1.0.25" 2780 + source = "registry+https://github.com/rust-lang/crates.io-index" 2781 + checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" 2782 + dependencies = [ 2783 + "proc-macro2", 2784 + "quote", 2785 + "syn 2.0.117", 2786 + ] 2787 + 2788 + [[package]] 2789 + name = "regex" 2790 + version = "1.12.3" 2791 + source = "registry+https://github.com/rust-lang/crates.io-index" 2792 + checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" 2793 + dependencies = [ 2794 + "aho-corasick", 2795 + "memchr", 2796 + "regex-automata", 2797 + "regex-syntax", 2798 + ] 2799 + 2800 + [[package]] 2801 + name = "regex-automata" 2802 + version = "0.4.14" 2803 + source = "registry+https://github.com/rust-lang/crates.io-index" 2804 + checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" 2805 + dependencies = [ 2806 + "aho-corasick", 2807 + "memchr", 2808 + "regex-syntax", 2809 + ] 2810 + 2811 + [[package]] 2812 + name = "regex-lite" 2813 + version = "0.1.9" 2814 + source = "registry+https://github.com/rust-lang/crates.io-index" 2815 + checksum = "cab834c73d247e67f4fae452806d17d3c7501756d98c8808d7c9c7aa7d18f973" 2816 + 2817 + [[package]] 2818 + name = "regex-syntax" 2819 + version = "0.8.10" 2820 + source = "registry+https://github.com/rust-lang/crates.io-index" 2821 + checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" 2822 + 2823 + [[package]] 2824 + name = "reqwest" 2825 + version = "0.12.28" 2826 + source = "registry+https://github.com/rust-lang/crates.io-index" 2827 + checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" 2828 + dependencies = [ 2829 + "base64", 2830 + "bytes", 2831 + "encoding_rs", 2832 + "futures-core", 2833 + "h2", 2834 + "http", 2835 + "http-body", 2836 + "http-body-util", 2837 + "hyper", 2838 + "hyper-rustls", 2839 + "hyper-util", 2840 + "js-sys", 2841 + "log", 2842 + "mime", 2843 + "percent-encoding", 2844 + "pin-project-lite", 2845 + "quinn", 2846 + "rustls", 2847 + "rustls-pki-types", 2848 + "serde", 2849 + "serde_json", 2850 + "serde_urlencoded", 2851 + "sync_wrapper", 2852 + "tokio", 2853 + "tokio-rustls", 2854 + "tower", 2855 + "tower-http", 2856 + "tower-service", 2857 + "url", 2858 + "wasm-bindgen", 2859 + "wasm-bindgen-futures", 2860 + "web-sys", 2861 + "webpki-roots 1.0.7", 2862 + ] 2863 + 2864 + [[package]] 2865 + name = "rfc6979" 2866 + version = "0.4.0" 2867 + source = "registry+https://github.com/rust-lang/crates.io-index" 2868 + checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" 2869 + dependencies = [ 2870 + "hmac", 2871 + "subtle", 2872 + ] 2873 + 2874 + [[package]] 2875 + name = "ring" 2876 + version = "0.17.14" 2877 + source = "registry+https://github.com/rust-lang/crates.io-index" 2878 + checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" 2879 + dependencies = [ 2880 + "cc", 2881 + "cfg-if", 2882 + "getrandom 0.2.17", 2883 + "libc", 2884 + "untrusted", 2885 + "windows-sys 0.52.0", 2886 + ] 2887 + 2888 + [[package]] 2889 + name = "rsa" 2890 + version = "0.9.10" 2891 + source = "registry+https://github.com/rust-lang/crates.io-index" 2892 + checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" 2893 + dependencies = [ 2894 + "const-oid", 2895 + "digest", 2896 + "num-bigint-dig", 2897 + "num-integer", 2898 + "num-traits", 2899 + "pkcs1", 2900 + "pkcs8", 2901 + "rand_core 0.6.4", 2902 + "signature", 2903 + "spki", 2904 + "subtle", 2905 + "zeroize", 2906 + ] 2907 + 2908 + [[package]] 2909 + name = "rustc-hash" 2910 + version = "2.1.2" 2911 + source = "registry+https://github.com/rust-lang/crates.io-index" 2912 + checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" 2913 + 2914 + [[package]] 2915 + name = "rustc_version" 2916 + version = "0.4.1" 2917 + source = "registry+https://github.com/rust-lang/crates.io-index" 2918 + checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" 2919 + dependencies = [ 2920 + "semver", 2921 + ] 2922 + 2923 + [[package]] 2924 + name = "rustix" 2925 + version = "1.1.4" 2926 + source = "registry+https://github.com/rust-lang/crates.io-index" 2927 + checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" 2928 + dependencies = [ 2929 + "bitflags", 2930 + "errno", 2931 + "libc", 2932 + "linux-raw-sys", 2933 + "windows-sys 0.61.2", 2934 + ] 2935 + 2936 + [[package]] 2937 + name = "rustls" 2938 + version = "0.23.39" 2939 + source = "registry+https://github.com/rust-lang/crates.io-index" 2940 + checksum = "7c2c118cb077cca2822033836dfb1b975355dfb784b5e8da48f7b6c5db74e60e" 2941 + dependencies = [ 2942 + "once_cell", 2943 + "ring", 2944 + "rustls-pki-types", 2945 + "rustls-webpki", 2946 + "subtle", 2947 + "zeroize", 2948 + ] 2949 + 2950 + [[package]] 2951 + name = "rustls-pki-types" 2952 + version = "1.14.0" 2953 + source = "registry+https://github.com/rust-lang/crates.io-index" 2954 + checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" 2955 + dependencies = [ 2956 + "web-time", 2957 + "zeroize", 2958 + ] 2959 + 2960 + [[package]] 2961 + name = "rustls-webpki" 2962 + version = "0.103.13" 2963 + source = "registry+https://github.com/rust-lang/crates.io-index" 2964 + checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" 2965 + dependencies = [ 2966 + "ring", 2967 + "rustls-pki-types", 2968 + "untrusted", 2969 + ] 2970 + 2971 + [[package]] 2972 + name = "rustversion" 2973 + version = "1.0.22" 2974 + source = "registry+https://github.com/rust-lang/crates.io-index" 2975 + checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" 2976 + 2977 + [[package]] 2978 + name = "ryu" 2979 + version = "1.0.23" 2980 + source = "registry+https://github.com/rust-lang/crates.io-index" 2981 + checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" 2982 + 2983 + [[package]] 2984 + name = "schemars" 2985 + version = "0.9.0" 2986 + source = "registry+https://github.com/rust-lang/crates.io-index" 2987 + checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" 2988 + dependencies = [ 2989 + "dyn-clone", 2990 + "ref-cast", 2991 + "serde", 2992 + "serde_json", 2993 + ] 2994 + 2995 + [[package]] 2996 + name = "schemars" 2997 + version = "1.2.1" 2998 + source = "registry+https://github.com/rust-lang/crates.io-index" 2999 + checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" 3000 + dependencies = [ 3001 + "dyn-clone", 3002 + "ref-cast", 3003 + "serde", 3004 + "serde_json", 3005 + ] 3006 + 3007 + [[package]] 3008 + name = "scoped-tls" 3009 + version = "1.0.1" 3010 + source = "registry+https://github.com/rust-lang/crates.io-index" 3011 + checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 3012 + 3013 + [[package]] 3014 + name = "scopeguard" 3015 + version = "1.2.0" 3016 + source = "registry+https://github.com/rust-lang/crates.io-index" 3017 + checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 3018 + 3019 + [[package]] 3020 + name = "sec1" 3021 + version = "0.7.3" 3022 + source = "registry+https://github.com/rust-lang/crates.io-index" 3023 + checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" 3024 + dependencies = [ 3025 + "base16ct", 3026 + "der", 3027 + "generic-array", 3028 + "pkcs8", 3029 + "subtle", 3030 + "zeroize", 3031 + ] 3032 + 3033 + [[package]] 3034 + name = "self_cell" 3035 + version = "1.2.2" 3036 + source = "registry+https://github.com/rust-lang/crates.io-index" 3037 + checksum = "b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89" 3038 + 3039 + [[package]] 3040 + name = "semver" 3041 + version = "1.0.28" 3042 + source = "registry+https://github.com/rust-lang/crates.io-index" 3043 + checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" 3044 + 3045 + [[package]] 3046 + name = "send_wrapper" 3047 + version = "0.6.0" 3048 + source = "registry+https://github.com/rust-lang/crates.io-index" 3049 + checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" 3050 + 3051 + [[package]] 3052 + name = "serde" 3053 + version = "1.0.228" 3054 + source = "registry+https://github.com/rust-lang/crates.io-index" 3055 + checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" 3056 + dependencies = [ 3057 + "serde_core", 3058 + "serde_derive", 3059 + ] 3060 + 3061 + [[package]] 3062 + name = "serde_bytes" 3063 + version = "0.11.19" 3064 + source = "registry+https://github.com/rust-lang/crates.io-index" 3065 + checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" 3066 + dependencies = [ 3067 + "serde", 3068 + "serde_core", 3069 + ] 3070 + 3071 + [[package]] 3072 + name = "serde_core" 3073 + version = "1.0.228" 3074 + source = "registry+https://github.com/rust-lang/crates.io-index" 3075 + checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" 3076 + dependencies = [ 3077 + "serde_derive", 3078 + ] 3079 + 3080 + [[package]] 3081 + name = "serde_derive" 3082 + version = "1.0.228" 3083 + source = "registry+https://github.com/rust-lang/crates.io-index" 3084 + checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" 3085 + dependencies = [ 3086 + "proc-macro2", 3087 + "quote", 3088 + "syn 2.0.117", 3089 + ] 3090 + 3091 + [[package]] 3092 + name = "serde_html_form" 3093 + version = "0.2.8" 3094 + source = "registry+https://github.com/rust-lang/crates.io-index" 3095 + checksum = "b2f2d7ff8a2140333718bb329f5c40fc5f0865b84c426183ce14c97d2ab8154f" 3096 + dependencies = [ 3097 + "form_urlencoded", 3098 + "indexmap 2.14.0", 3099 + "itoa", 3100 + "ryu", 3101 + "serde_core", 3102 + ] 3103 + 3104 + [[package]] 3105 + name = "serde_ipld_dagcbor" 3106 + version = "0.6.4" 3107 + source = "registry+https://github.com/rust-lang/crates.io-index" 3108 + checksum = "46182f4f08349a02b45c998ba3215d3f9de826246ba02bb9dddfe9a2a2100778" 3109 + dependencies = [ 3110 + "cbor4ii", 3111 + "ipld-core", 3112 + "scopeguard", 3113 + "serde", 3114 + ] 3115 + 3116 + [[package]] 3117 + name = "serde_json" 3118 + version = "1.0.149" 3119 + source = "registry+https://github.com/rust-lang/crates.io-index" 3120 + checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" 3121 + dependencies = [ 3122 + "itoa", 3123 + "memchr", 3124 + "serde", 3125 + "serde_core", 3126 + "zmij", 3127 + ] 3128 + 3129 + [[package]] 3130 + name = "serde_path_to_error" 3131 + version = "0.1.20" 3132 + source = "registry+https://github.com/rust-lang/crates.io-index" 3133 + checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" 3134 + dependencies = [ 3135 + "itoa", 3136 + "serde", 3137 + "serde_core", 3138 + ] 3139 + 3140 + [[package]] 3141 + name = "serde_repr" 3142 + version = "0.1.20" 3143 + source = "registry+https://github.com/rust-lang/crates.io-index" 3144 + checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" 3145 + dependencies = [ 3146 + "proc-macro2", 3147 + "quote", 3148 + "syn 2.0.117", 3149 + ] 3150 + 3151 + [[package]] 3152 + name = "serde_urlencoded" 3153 + version = "0.7.1" 3154 + source = "registry+https://github.com/rust-lang/crates.io-index" 3155 + checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 3156 + dependencies = [ 3157 + "form_urlencoded", 3158 + "itoa", 3159 + "ryu", 3160 + "serde", 3161 + ] 3162 + 3163 + [[package]] 3164 + name = "serde_with" 3165 + version = "3.18.0" 3166 + source = "registry+https://github.com/rust-lang/crates.io-index" 3167 + checksum = "dd5414fad8e6907dbdd5bc441a50ae8d6e26151a03b1de04d89a5576de61d01f" 3168 + dependencies = [ 3169 + "base64", 3170 + "chrono", 3171 + "hex", 3172 + "indexmap 1.9.3", 3173 + "indexmap 2.14.0", 3174 + "schemars 0.9.0", 3175 + "schemars 1.2.1", 3176 + "serde_core", 3177 + "serde_json", 3178 + "serde_with_macros", 3179 + "time", 3180 + ] 3181 + 3182 + [[package]] 3183 + name = "serde_with_macros" 3184 + version = "3.18.0" 3185 + source = "registry+https://github.com/rust-lang/crates.io-index" 3186 + checksum = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65" 3187 + dependencies = [ 3188 + "darling", 3189 + "proc-macro2", 3190 + "quote", 3191 + "syn 2.0.117", 3192 + ] 3193 + 3194 + [[package]] 3195 + name = "sfa" 3196 + version = "1.0.0" 3197 + source = "registry+https://github.com/rust-lang/crates.io-index" 3198 + checksum = "a1296838937cab56cd6c4eeeb8718ec777383700c33f060e2869867bd01d1175" 3199 + dependencies = [ 3200 + "byteorder-lite", 3201 + "log", 3202 + "xxhash-rust", 3203 + ] 3204 + 3205 + [[package]] 3206 + name = "sha1" 3207 + version = "0.10.6" 3208 + source = "registry+https://github.com/rust-lang/crates.io-index" 3209 + checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 3210 + dependencies = [ 3211 + "cfg-if", 3212 + "cpufeatures 0.2.17", 3213 + "digest", 3214 + ] 3215 + 3216 + [[package]] 3217 + name = "sha1_smol" 3218 + version = "1.0.1" 3219 + source = "registry+https://github.com/rust-lang/crates.io-index" 3220 + checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" 3221 + 3222 + [[package]] 3223 + name = "sha2" 3224 + version = "0.10.9" 3225 + source = "registry+https://github.com/rust-lang/crates.io-index" 3226 + checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" 3227 + dependencies = [ 3228 + "cfg-if", 3229 + "cpufeatures 0.2.17", 3230 + "digest", 3231 + ] 3232 + 3233 + [[package]] 3234 + name = "sharded-slab" 3235 + version = "0.1.7" 3236 + source = "registry+https://github.com/rust-lang/crates.io-index" 3237 + checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 3238 + dependencies = [ 3239 + "lazy_static", 3240 + ] 3241 + 3242 + [[package]] 3243 + name = "shlex" 3244 + version = "1.3.0" 3245 + source = "registry+https://github.com/rust-lang/crates.io-index" 3246 + checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 3247 + 3248 + [[package]] 3249 + name = "signal-hook-registry" 3250 + version = "1.4.8" 3251 + source = "registry+https://github.com/rust-lang/crates.io-index" 3252 + checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" 3253 + dependencies = [ 3254 + "errno", 3255 + "libc", 3256 + ] 3257 + 3258 + [[package]] 3259 + name = "signature" 3260 + version = "2.2.0" 3261 + source = "registry+https://github.com/rust-lang/crates.io-index" 3262 + checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" 3263 + dependencies = [ 3264 + "digest", 3265 + "rand_core 0.6.4", 3266 + ] 3267 + 3268 + [[package]] 3269 + name = "simd-adler32" 3270 + version = "0.3.9" 3271 + source = "registry+https://github.com/rust-lang/crates.io-index" 3272 + checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" 3273 + 3274 + [[package]] 3275 + name = "siphasher" 3276 + version = "1.0.2" 3277 + source = "registry+https://github.com/rust-lang/crates.io-index" 3278 + checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" 3279 + 3280 + [[package]] 3281 + name = "slab" 3282 + version = "0.4.12" 3283 + source = "registry+https://github.com/rust-lang/crates.io-index" 3284 + checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" 3285 + 3286 + [[package]] 3287 + name = "smallvec" 3288 + version = "1.15.1" 3289 + source = "registry+https://github.com/rust-lang/crates.io-index" 3290 + checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 3291 + dependencies = [ 3292 + "serde", 3293 + ] 3294 + 3295 + [[package]] 3296 + name = "smol_str" 3297 + version = "0.3.6" 3298 + source = "registry+https://github.com/rust-lang/crates.io-index" 3299 + checksum = "4aaa7368fcf4852a4c2dd92df0cace6a71f2091ca0a23391ce7f3a31833f1523" 3300 + dependencies = [ 3301 + "borsh", 3302 + "serde_core", 3303 + ] 3304 + 3305 + [[package]] 3306 + name = "socket2" 3307 + version = "0.6.3" 3308 + source = "registry+https://github.com/rust-lang/crates.io-index" 3309 + checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" 3310 + dependencies = [ 3311 + "libc", 3312 + "windows-sys 0.61.2", 3313 + ] 3314 + 3315 + [[package]] 3316 + name = "spin" 3317 + version = "0.9.8" 3318 + source = "registry+https://github.com/rust-lang/crates.io-index" 3319 + checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 3320 + dependencies = [ 3321 + "lock_api", 3322 + ] 3323 + 3324 + [[package]] 3325 + name = "spin" 3326 + version = "0.10.0" 3327 + source = "registry+https://github.com/rust-lang/crates.io-index" 3328 + checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" 3329 + 3330 + [[package]] 3331 + name = "spki" 3332 + version = "0.7.3" 3333 + source = "registry+https://github.com/rust-lang/crates.io-index" 3334 + checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" 3335 + dependencies = [ 3336 + "base64ct", 3337 + "der", 3338 + ] 3339 + 3340 + [[package]] 3341 + name = "sqlx" 3342 + version = "0.8.6" 3343 + source = "registry+https://github.com/rust-lang/crates.io-index" 3344 + checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc" 3345 + dependencies = [ 3346 + "sqlx-core", 3347 + "sqlx-macros", 3348 + "sqlx-mysql", 3349 + "sqlx-postgres", 3350 + "sqlx-sqlite", 3351 + ] 3352 + 3353 + [[package]] 3354 + name = "sqlx-core" 3355 + version = "0.8.6" 3356 + source = "registry+https://github.com/rust-lang/crates.io-index" 3357 + checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" 3358 + dependencies = [ 3359 + "base64", 3360 + "bytes", 3361 + "chrono", 3362 + "crc", 3363 + "crossbeam-queue", 3364 + "either", 3365 + "event-listener", 3366 + "futures-core", 3367 + "futures-intrusive", 3368 + "futures-io", 3369 + "futures-util", 3370 + "hashbrown 0.15.5", 3371 + "hashlink", 3372 + "indexmap 2.14.0", 3373 + "log", 3374 + "memchr", 3375 + "once_cell", 3376 + "percent-encoding", 3377 + "rustls", 3378 + "serde", 3379 + "serde_json", 3380 + "sha2", 3381 + "smallvec", 3382 + "thiserror 2.0.18", 3383 + "tokio", 3384 + "tokio-stream", 3385 + "tracing", 3386 + "url", 3387 + "uuid", 3388 + "webpki-roots 0.26.11", 3389 + ] 3390 + 3391 + [[package]] 3392 + name = "sqlx-macros" 3393 + version = "0.8.6" 3394 + source = "registry+https://github.com/rust-lang/crates.io-index" 3395 + checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d" 3396 + dependencies = [ 3397 + "proc-macro2", 3398 + "quote", 3399 + "sqlx-core", 3400 + "sqlx-macros-core", 3401 + "syn 2.0.117", 3402 + ] 3403 + 3404 + [[package]] 3405 + name = "sqlx-macros-core" 3406 + version = "0.8.6" 3407 + source = "registry+https://github.com/rust-lang/crates.io-index" 3408 + checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b" 3409 + dependencies = [ 3410 + "dotenvy", 3411 + "either", 3412 + "heck 0.5.0", 3413 + "hex", 3414 + "once_cell", 3415 + "proc-macro2", 3416 + "quote", 3417 + "serde", 3418 + "serde_json", 3419 + "sha2", 3420 + "sqlx-core", 3421 + "sqlx-mysql", 3422 + "sqlx-postgres", 3423 + "sqlx-sqlite", 3424 + "syn 2.0.117", 3425 + "tokio", 3426 + "url", 3427 + ] 3428 + 3429 + [[package]] 3430 + name = "sqlx-mysql" 3431 + version = "0.8.6" 3432 + source = "registry+https://github.com/rust-lang/crates.io-index" 3433 + checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" 3434 + dependencies = [ 3435 + "atoi", 3436 + "base64", 3437 + "bitflags", 3438 + "byteorder", 3439 + "bytes", 3440 + "chrono", 3441 + "crc", 3442 + "digest", 3443 + "dotenvy", 3444 + "either", 3445 + "futures-channel", 3446 + "futures-core", 3447 + "futures-io", 3448 + "futures-util", 3449 + "generic-array", 3450 + "hex", 3451 + "hkdf", 3452 + "hmac", 3453 + "itoa", 3454 + "log", 3455 + "md-5", 3456 + "memchr", 3457 + "once_cell", 3458 + "percent-encoding", 3459 + "rand 0.8.6", 3460 + "rsa", 3461 + "serde", 3462 + "sha1", 3463 + "sha2", 3464 + "smallvec", 3465 + "sqlx-core", 3466 + "stringprep", 3467 + "thiserror 2.0.18", 3468 + "tracing", 3469 + "uuid", 3470 + "whoami", 3471 + ] 3472 + 3473 + [[package]] 3474 + name = "sqlx-postgres" 3475 + version = "0.8.6" 3476 + source = "registry+https://github.com/rust-lang/crates.io-index" 3477 + checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" 3478 + dependencies = [ 3479 + "atoi", 3480 + "base64", 3481 + "bitflags", 3482 + "byteorder", 3483 + "chrono", 3484 + "crc", 3485 + "dotenvy", 3486 + "etcetera", 3487 + "futures-channel", 3488 + "futures-core", 3489 + "futures-util", 3490 + "hex", 3491 + "hkdf", 3492 + "hmac", 3493 + "home", 3494 + "itoa", 3495 + "log", 3496 + "md-5", 3497 + "memchr", 3498 + "once_cell", 3499 + "rand 0.8.6", 3500 + "serde", 3501 + "serde_json", 3502 + "sha2", 3503 + "smallvec", 3504 + "sqlx-core", 3505 + "stringprep", 3506 + "thiserror 2.0.18", 3507 + "tracing", 3508 + "uuid", 3509 + "whoami", 3510 + ] 3511 + 3512 + [[package]] 3513 + name = "sqlx-sqlite" 3514 + version = "0.8.6" 3515 + source = "registry+https://github.com/rust-lang/crates.io-index" 3516 + checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea" 3517 + dependencies = [ 3518 + "atoi", 3519 + "chrono", 3520 + "flume 0.11.1", 3521 + "futures-channel", 3522 + "futures-core", 3523 + "futures-executor", 3524 + "futures-intrusive", 3525 + "futures-util", 3526 + "libsqlite3-sys", 3527 + "log", 3528 + "percent-encoding", 3529 + "serde", 3530 + "serde_urlencoded", 3531 + "sqlx-core", 3532 + "thiserror 2.0.18", 3533 + "tracing", 3534 + "url", 3535 + "uuid", 3536 + ] 3537 + 3538 + [[package]] 3539 + name = "stable_deref_trait" 3540 + version = "1.2.1" 3541 + source = "registry+https://github.com/rust-lang/crates.io-index" 3542 + checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" 3543 + 3544 + [[package]] 3545 + name = "static-regular-grammar" 3546 + version = "2.0.2" 3547 + source = "registry+https://github.com/rust-lang/crates.io-index" 3548 + checksum = "4f4a6c40247579acfbb138c3cd7de3dab113ab4ac6227f1b7de7d626ee667957" 3549 + dependencies = [ 3550 + "abnf", 3551 + "btree-range-map", 3552 + "ciborium", 3553 + "hex_fmt", 3554 + "indoc", 3555 + "proc-macro-error", 3556 + "proc-macro2", 3557 + "quote", 3558 + "serde", 3559 + "sha2", 3560 + "syn 2.0.117", 3561 + "thiserror 1.0.69", 3562 + ] 3563 + 3564 + [[package]] 3565 + name = "static_assertions" 3566 + version = "1.1.0" 3567 + source = "registry+https://github.com/rust-lang/crates.io-index" 3568 + checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 3569 + 3570 + [[package]] 3571 + name = "stringprep" 3572 + version = "0.1.5" 3573 + source = "registry+https://github.com/rust-lang/crates.io-index" 3574 + checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" 3575 + dependencies = [ 3576 + "unicode-bidi", 3577 + "unicode-normalization", 3578 + "unicode-properties", 3579 + ] 3580 + 3581 + [[package]] 3582 + name = "strsim" 3583 + version = "0.11.1" 3584 + source = "registry+https://github.com/rust-lang/crates.io-index" 3585 + checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 3586 + 3587 + [[package]] 3588 + name = "subtle" 3589 + version = "2.6.1" 3590 + source = "registry+https://github.com/rust-lang/crates.io-index" 3591 + checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 3592 + 3593 + [[package]] 3594 + name = "syn" 3595 + version = "1.0.109" 3596 + source = "registry+https://github.com/rust-lang/crates.io-index" 3597 + checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 3598 + dependencies = [ 3599 + "proc-macro2", 3600 + "unicode-ident", 3601 + ] 3602 + 3603 + [[package]] 3604 + name = "syn" 3605 + version = "2.0.117" 3606 + source = "registry+https://github.com/rust-lang/crates.io-index" 3607 + checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" 3608 + dependencies = [ 3609 + "proc-macro2", 3610 + "quote", 3611 + "unicode-ident", 3612 + ] 3613 + 3614 + [[package]] 3615 + name = "sync_wrapper" 3616 + version = "1.0.2" 3617 + source = "registry+https://github.com/rust-lang/crates.io-index" 3618 + checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" 3619 + dependencies = [ 3620 + "futures-core", 3621 + ] 3622 + 3623 + [[package]] 3624 + name = "synstructure" 3625 + version = "0.13.2" 3626 + source = "registry+https://github.com/rust-lang/crates.io-index" 3627 + checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" 3628 + dependencies = [ 3629 + "proc-macro2", 3630 + "quote", 3631 + "syn 2.0.117", 3632 + ] 3633 + 3634 + [[package]] 3635 + name = "system-configuration" 3636 + version = "0.7.0" 3637 + source = "registry+https://github.com/rust-lang/crates.io-index" 3638 + checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" 3639 + dependencies = [ 3640 + "bitflags", 3641 + "core-foundation", 3642 + "system-configuration-sys", 3643 + ] 3644 + 3645 + [[package]] 3646 + name = "system-configuration-sys" 3647 + version = "0.6.0" 3648 + source = "registry+https://github.com/rust-lang/crates.io-index" 3649 + checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" 3650 + dependencies = [ 3651 + "core-foundation-sys", 3652 + "libc", 3653 + ] 3654 + 3655 + [[package]] 3656 + name = "tempfile" 3657 + version = "3.27.0" 3658 + source = "registry+https://github.com/rust-lang/crates.io-index" 3659 + checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" 3660 + dependencies = [ 3661 + "fastrand", 3662 + "getrandom 0.4.2", 3663 + "once_cell", 3664 + "rustix", 3665 + "windows-sys 0.61.2", 3666 + ] 3667 + 3668 + [[package]] 3669 + name = "thiserror" 3670 + version = "1.0.69" 3671 + source = "registry+https://github.com/rust-lang/crates.io-index" 3672 + checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 3673 + dependencies = [ 3674 + "thiserror-impl 1.0.69", 3675 + ] 3676 + 3677 + [[package]] 3678 + name = "thiserror" 3679 + version = "2.0.18" 3680 + source = "registry+https://github.com/rust-lang/crates.io-index" 3681 + checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" 3682 + dependencies = [ 3683 + "thiserror-impl 2.0.18", 3684 + ] 3685 + 3686 + [[package]] 3687 + name = "thiserror-impl" 3688 + version = "1.0.69" 3689 + source = "registry+https://github.com/rust-lang/crates.io-index" 3690 + checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 3691 + dependencies = [ 3692 + "proc-macro2", 3693 + "quote", 3694 + "syn 2.0.117", 3695 + ] 3696 + 3697 + [[package]] 3698 + name = "thiserror-impl" 3699 + version = "2.0.18" 3700 + source = "registry+https://github.com/rust-lang/crates.io-index" 3701 + checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" 3702 + dependencies = [ 3703 + "proc-macro2", 3704 + "quote", 3705 + "syn 2.0.117", 3706 + ] 3707 + 3708 + [[package]] 3709 + name = "thread_local" 3710 + version = "1.1.9" 3711 + source = "registry+https://github.com/rust-lang/crates.io-index" 3712 + checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" 3713 + dependencies = [ 3714 + "cfg-if", 3715 + ] 3716 + 3717 + [[package]] 3718 + name = "time" 3719 + version = "0.3.47" 3720 + source = "registry+https://github.com/rust-lang/crates.io-index" 3721 + checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" 3722 + dependencies = [ 3723 + "deranged", 3724 + "itoa", 3725 + "num-conv", 3726 + "powerfmt", 3727 + "serde_core", 3728 + "time-core", 3729 + "time-macros", 3730 + ] 3731 + 3732 + [[package]] 3733 + name = "time-core" 3734 + version = "0.1.8" 3735 + source = "registry+https://github.com/rust-lang/crates.io-index" 3736 + checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" 3737 + 3738 + [[package]] 3739 + name = "time-macros" 3740 + version = "0.2.27" 3741 + source = "registry+https://github.com/rust-lang/crates.io-index" 3742 + checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" 3743 + dependencies = [ 3744 + "num-conv", 3745 + "time-core", 3746 + ] 3747 + 3748 + [[package]] 3749 + name = "tinystr" 3750 + version = "0.8.3" 3751 + source = "registry+https://github.com/rust-lang/crates.io-index" 3752 + checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" 3753 + dependencies = [ 3754 + "displaydoc", 3755 + "zerovec", 3756 + ] 3757 + 3758 + [[package]] 3759 + name = "tinyvec" 3760 + version = "1.11.0" 3761 + source = "registry+https://github.com/rust-lang/crates.io-index" 3762 + checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" 3763 + dependencies = [ 3764 + "tinyvec_macros", 3765 + ] 3766 + 3767 + [[package]] 3768 + name = "tinyvec_macros" 3769 + version = "0.1.1" 3770 + source = "registry+https://github.com/rust-lang/crates.io-index" 3771 + checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 3772 + 3773 + [[package]] 3774 + name = "tokio" 3775 + version = "1.52.1" 3776 + source = "registry+https://github.com/rust-lang/crates.io-index" 3777 + checksum = "b67dee974fe86fd92cc45b7a95fdd2f99a36a6d7b0d431a231178d3d670bbcc6" 3778 + dependencies = [ 3779 + "bytes", 3780 + "libc", 3781 + "mio", 3782 + "pin-project-lite", 3783 + "signal-hook-registry", 3784 + "socket2", 3785 + "tokio-macros", 3786 + "windows-sys 0.61.2", 3787 + ] 3788 + 3789 + [[package]] 3790 + name = "tokio-macros" 3791 + version = "2.7.0" 3792 + source = "registry+https://github.com/rust-lang/crates.io-index" 3793 + checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" 3794 + dependencies = [ 3795 + "proc-macro2", 3796 + "quote", 3797 + "syn 2.0.117", 3798 + ] 3799 + 3800 + [[package]] 3801 + name = "tokio-rustls" 3802 + version = "0.26.4" 3803 + source = "registry+https://github.com/rust-lang/crates.io-index" 3804 + checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" 3805 + dependencies = [ 3806 + "rustls", 3807 + "tokio", 3808 + ] 3809 + 3810 + [[package]] 3811 + name = "tokio-stream" 3812 + version = "0.1.18" 3813 + source = "registry+https://github.com/rust-lang/crates.io-index" 3814 + checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" 3815 + dependencies = [ 3816 + "futures-core", 3817 + "pin-project-lite", 3818 + "tokio", 3819 + ] 3820 + 3821 + [[package]] 3822 + name = "tokio-tungstenite" 3823 + version = "0.29.0" 3824 + source = "registry+https://github.com/rust-lang/crates.io-index" 3825 + checksum = "8f72a05e828585856dacd553fba484c242c46e391fb0e58917c942ee9202915c" 3826 + dependencies = [ 3827 + "futures-util", 3828 + "log", 3829 + "tokio", 3830 + "tungstenite", 3831 + ] 3832 + 3833 + [[package]] 3834 + name = "tokio-util" 3835 + version = "0.7.18" 3836 + source = "registry+https://github.com/rust-lang/crates.io-index" 3837 + checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" 3838 + dependencies = [ 3839 + "bytes", 3840 + "futures-core", 3841 + "futures-sink", 3842 + "futures-util", 3843 + "pin-project-lite", 3844 + "tokio", 3845 + ] 3846 + 3847 + [[package]] 3848 + name = "tower" 3849 + version = "0.5.3" 3850 + source = "registry+https://github.com/rust-lang/crates.io-index" 3851 + checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" 3852 + dependencies = [ 3853 + "futures-core", 3854 + "futures-util", 3855 + "pin-project-lite", 3856 + "sync_wrapper", 3857 + "tokio", 3858 + "tower-layer", 3859 + "tower-service", 3860 + "tracing", 3861 + ] 3862 + 3863 + [[package]] 3864 + name = "tower-http" 3865 + version = "0.6.8" 3866 + source = "registry+https://github.com/rust-lang/crates.io-index" 3867 + checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" 3868 + dependencies = [ 3869 + "async-compression", 3870 + "bitflags", 3871 + "bytes", 3872 + "futures-core", 3873 + "futures-util", 3874 + "http", 3875 + "http-body", 3876 + "http-body-util", 3877 + "iri-string", 3878 + "pin-project-lite", 3879 + "tokio", 3880 + "tokio-util", 3881 + "tower", 3882 + "tower-layer", 3883 + "tower-service", 3884 + ] 3885 + 3886 + [[package]] 3887 + name = "tower-layer" 3888 + version = "0.3.3" 3889 + source = "registry+https://github.com/rust-lang/crates.io-index" 3890 + checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" 3891 + 3892 + [[package]] 3893 + name = "tower-service" 3894 + version = "0.3.3" 3895 + source = "registry+https://github.com/rust-lang/crates.io-index" 3896 + checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" 3897 + 3898 + [[package]] 3899 + name = "tracing" 3900 + version = "0.1.44" 3901 + source = "registry+https://github.com/rust-lang/crates.io-index" 3902 + checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" 3903 + dependencies = [ 3904 + "log", 3905 + "pin-project-lite", 3906 + "tracing-attributes", 3907 + "tracing-core", 3908 + ] 3909 + 3910 + [[package]] 3911 + name = "tracing-attributes" 3912 + version = "0.1.31" 3913 + source = "registry+https://github.com/rust-lang/crates.io-index" 3914 + checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" 3915 + dependencies = [ 3916 + "proc-macro2", 3917 + "quote", 3918 + "syn 2.0.117", 3919 + ] 3920 + 3921 + [[package]] 3922 + name = "tracing-core" 3923 + version = "0.1.36" 3924 + source = "registry+https://github.com/rust-lang/crates.io-index" 3925 + checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" 3926 + dependencies = [ 3927 + "once_cell", 3928 + "valuable", 3929 + ] 3930 + 3931 + [[package]] 3932 + name = "tracing-log" 3933 + version = "0.2.0" 3934 + source = "registry+https://github.com/rust-lang/crates.io-index" 3935 + checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" 3936 + dependencies = [ 3937 + "log", 3938 + "once_cell", 3939 + "tracing-core", 3940 + ] 3941 + 3942 + [[package]] 3943 + name = "tracing-subscriber" 3944 + version = "0.3.23" 3945 + source = "registry+https://github.com/rust-lang/crates.io-index" 3946 + checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" 3947 + dependencies = [ 3948 + "matchers", 3949 + "nu-ansi-term", 3950 + "once_cell", 3951 + "regex-automata", 3952 + "sharded-slab", 3953 + "smallvec", 3954 + "thread_local", 3955 + "tracing", 3956 + "tracing-core", 3957 + "tracing-log", 3958 + ] 3959 + 3960 + [[package]] 3961 + name = "trait-variant" 3962 + version = "0.1.2" 3963 + source = "registry+https://github.com/rust-lang/crates.io-index" 3964 + checksum = "70977707304198400eb4835a78f6a9f928bf41bba420deb8fdb175cd965d77a7" 3965 + dependencies = [ 3966 + "proc-macro2", 3967 + "quote", 3968 + "syn 2.0.117", 3969 + ] 3970 + 3971 + [[package]] 3972 + name = "tranquil-db-traits" 3973 + version = "0.5.5" 3974 + dependencies = [ 3975 + "async-trait", 3976 + "base64", 3977 + "chrono", 3978 + "serde", 3979 + "serde_json", 3980 + "sqlx", 3981 + "thiserror 2.0.18", 3982 + "tranquil-oauth", 3983 + "tranquil-types", 3984 + "uuid", 3985 + ] 3986 + 3987 + [[package]] 3988 + name = "tranquil-oauth" 3989 + version = "0.5.5" 3990 + dependencies = [ 3991 + "anyhow", 3992 + "axum", 3993 + "base64", 3994 + "chrono", 3995 + "ed25519-dalek", 3996 + "p256", 3997 + "p384", 3998 + "rand 0.8.6", 3999 + "reqwest", 4000 + "serde", 4001 + "serde_json", 4002 + "sha2", 4003 + "sqlx", 4004 + "tokio", 4005 + "tracing", 4006 + "tranquil-types", 4007 + "uuid", 4008 + ] 4009 + 4010 + [[package]] 4011 + name = "tranquil-store" 4012 + version = "0.5.5" 4013 + dependencies = [ 4014 + "async-trait", 4015 + "bytes", 4016 + "chrono", 4017 + "cid", 4018 + "dashmap", 4019 + "fjall", 4020 + "flume 0.11.1", 4021 + "jacquard-repo", 4022 + "libc", 4023 + "lsm-tree", 4024 + "memmap2", 4025 + "multihash", 4026 + "parking_lot", 4027 + "postcard", 4028 + "rayon", 4029 + "serde", 4030 + "serde_ipld_dagcbor", 4031 + "serde_json", 4032 + "sha2", 4033 + "siphasher", 4034 + "smallvec", 4035 + "tempfile", 4036 + "thiserror 2.0.18", 4037 + "tokio", 4038 + "tracing", 4039 + "tranquil-db-traits", 4040 + "tranquil-oauth", 4041 + "tranquil-types", 4042 + "uuid", 4043 + "xxhash-rust", 4044 + ] 4045 + 4046 + [[package]] 4047 + name = "tranquil-store-fuzz" 4048 + version = "0.0.0" 4049 + dependencies = [ 4050 + "arbitrary", 4051 + "libfuzzer-sys", 4052 + "tempfile", 4053 + "tokio", 4054 + "tranquil-store", 4055 + ] 4056 + 4057 + [[package]] 4058 + name = "tranquil-types" 4059 + version = "0.5.5" 4060 + dependencies = [ 4061 + "chrono", 4062 + "cid", 4063 + "jacquard-common", 4064 + "serde", 4065 + "serde_json", 4066 + "sqlx", 4067 + "thiserror 2.0.18", 4068 + ] 4069 + 4070 + [[package]] 4071 + name = "try-lock" 4072 + version = "0.2.5" 4073 + source = "registry+https://github.com/rust-lang/crates.io-index" 4074 + checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 4075 + 4076 + [[package]] 4077 + name = "tungstenite" 4078 + version = "0.29.0" 4079 + source = "registry+https://github.com/rust-lang/crates.io-index" 4080 + checksum = "6c01152af293afb9c7c2a57e4b559c5620b421f6d133261c60dd2d0cdb38e6b8" 4081 + dependencies = [ 4082 + "bytes", 4083 + "data-encoding", 4084 + "http", 4085 + "httparse", 4086 + "log", 4087 + "rand 0.9.4", 4088 + "sha1", 4089 + "thiserror 2.0.18", 4090 + ] 4091 + 4092 + [[package]] 4093 + name = "twox-hash" 4094 + version = "2.1.2" 4095 + source = "registry+https://github.com/rust-lang/crates.io-index" 4096 + checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" 4097 + 4098 + [[package]] 4099 + name = "typenum" 4100 + version = "1.20.0" 4101 + source = "registry+https://github.com/rust-lang/crates.io-index" 4102 + checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" 4103 + 4104 + [[package]] 4105 + name = "unicode-bidi" 4106 + version = "0.3.18" 4107 + source = "registry+https://github.com/rust-lang/crates.io-index" 4108 + checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" 4109 + 4110 + [[package]] 4111 + name = "unicode-ident" 4112 + version = "1.0.24" 4113 + source = "registry+https://github.com/rust-lang/crates.io-index" 4114 + checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" 4115 + 4116 + [[package]] 4117 + name = "unicode-normalization" 4118 + version = "0.1.25" 4119 + source = "registry+https://github.com/rust-lang/crates.io-index" 4120 + checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" 4121 + dependencies = [ 4122 + "tinyvec", 4123 + ] 4124 + 4125 + [[package]] 4126 + name = "unicode-properties" 4127 + version = "0.1.4" 4128 + source = "registry+https://github.com/rust-lang/crates.io-index" 4129 + checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" 4130 + 4131 + [[package]] 4132 + name = "unicode-segmentation" 4133 + version = "1.13.2" 4134 + source = "registry+https://github.com/rust-lang/crates.io-index" 4135 + checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" 4136 + 4137 + [[package]] 4138 + name = "unicode-width" 4139 + version = "0.1.14" 4140 + source = "registry+https://github.com/rust-lang/crates.io-index" 4141 + checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" 4142 + 4143 + [[package]] 4144 + name = "unicode-xid" 4145 + version = "0.2.6" 4146 + source = "registry+https://github.com/rust-lang/crates.io-index" 4147 + checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" 4148 + 4149 + [[package]] 4150 + name = "unsigned-varint" 4151 + version = "0.7.2" 4152 + source = "registry+https://github.com/rust-lang/crates.io-index" 4153 + checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" 4154 + 4155 + [[package]] 4156 + name = "unsigned-varint" 4157 + version = "0.8.0" 4158 + source = "registry+https://github.com/rust-lang/crates.io-index" 4159 + checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" 4160 + 4161 + [[package]] 4162 + name = "untrusted" 4163 + version = "0.9.0" 4164 + source = "registry+https://github.com/rust-lang/crates.io-index" 4165 + checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 4166 + 4167 + [[package]] 4168 + name = "url" 4169 + version = "2.5.8" 4170 + source = "registry+https://github.com/rust-lang/crates.io-index" 4171 + checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" 4172 + dependencies = [ 4173 + "form_urlencoded", 4174 + "idna", 4175 + "percent-encoding", 4176 + "serde", 4177 + "serde_derive", 4178 + ] 4179 + 4180 + [[package]] 4181 + name = "utf8_iter" 4182 + version = "1.0.4" 4183 + source = "registry+https://github.com/rust-lang/crates.io-index" 4184 + checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 4185 + 4186 + [[package]] 4187 + name = "uuid" 4188 + version = "1.23.1" 4189 + source = "registry+https://github.com/rust-lang/crates.io-index" 4190 + checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" 4191 + dependencies = [ 4192 + "getrandom 0.4.2", 4193 + "js-sys", 4194 + "rand 0.10.1", 4195 + "serde_core", 4196 + "sha1_smol", 4197 + "wasm-bindgen", 4198 + ] 4199 + 4200 + [[package]] 4201 + name = "valuable" 4202 + version = "0.1.1" 4203 + source = "registry+https://github.com/rust-lang/crates.io-index" 4204 + checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" 4205 + 4206 + [[package]] 4207 + name = "varint-rs" 4208 + version = "2.2.0" 4209 + source = "registry+https://github.com/rust-lang/crates.io-index" 4210 + checksum = "8f54a172d0620933a27a4360d3db3e2ae0dd6cceae9730751a036bbf182c4b23" 4211 + 4212 + [[package]] 4213 + name = "vcpkg" 4214 + version = "0.2.15" 4215 + source = "registry+https://github.com/rust-lang/crates.io-index" 4216 + checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 4217 + 4218 + [[package]] 4219 + name = "version_check" 4220 + version = "0.9.5" 4221 + source = "registry+https://github.com/rust-lang/crates.io-index" 4222 + checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 4223 + 4224 + [[package]] 4225 + name = "want" 4226 + version = "0.3.1" 4227 + source = "registry+https://github.com/rust-lang/crates.io-index" 4228 + checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 4229 + dependencies = [ 4230 + "try-lock", 4231 + ] 4232 + 4233 + [[package]] 4234 + name = "wasi" 4235 + version = "0.11.1+wasi-snapshot-preview1" 4236 + source = "registry+https://github.com/rust-lang/crates.io-index" 4237 + checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 4238 + 4239 + [[package]] 4240 + name = "wasip2" 4241 + version = "1.0.3+wasi-0.2.9" 4242 + source = "registry+https://github.com/rust-lang/crates.io-index" 4243 + checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" 4244 + dependencies = [ 4245 + "wit-bindgen 0.57.1", 4246 + ] 4247 + 4248 + [[package]] 4249 + name = "wasip3" 4250 + version = "0.4.0+wasi-0.3.0-rc-2026-01-06" 4251 + source = "registry+https://github.com/rust-lang/crates.io-index" 4252 + checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" 4253 + dependencies = [ 4254 + "wit-bindgen 0.51.0", 4255 + ] 4256 + 4257 + [[package]] 4258 + name = "wasite" 4259 + version = "0.1.0" 4260 + source = "registry+https://github.com/rust-lang/crates.io-index" 4261 + checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" 4262 + 4263 + [[package]] 4264 + name = "wasm-bindgen" 4265 + version = "0.2.118" 4266 + source = "registry+https://github.com/rust-lang/crates.io-index" 4267 + checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89" 4268 + dependencies = [ 4269 + "cfg-if", 4270 + "once_cell", 4271 + "rustversion", 4272 + "wasm-bindgen-macro", 4273 + "wasm-bindgen-shared", 4274 + ] 4275 + 4276 + [[package]] 4277 + name = "wasm-bindgen-futures" 4278 + version = "0.4.68" 4279 + source = "registry+https://github.com/rust-lang/crates.io-index" 4280 + checksum = "f371d383f2fb139252e0bfac3b81b265689bf45b6874af544ffa4c975ac1ebf8" 4281 + dependencies = [ 4282 + "js-sys", 4283 + "wasm-bindgen", 4284 + ] 4285 + 4286 + [[package]] 4287 + name = "wasm-bindgen-macro" 4288 + version = "0.2.118" 4289 + source = "registry+https://github.com/rust-lang/crates.io-index" 4290 + checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed" 4291 + dependencies = [ 4292 + "quote", 4293 + "wasm-bindgen-macro-support", 4294 + ] 4295 + 4296 + [[package]] 4297 + name = "wasm-bindgen-macro-support" 4298 + version = "0.2.118" 4299 + source = "registry+https://github.com/rust-lang/crates.io-index" 4300 + checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904" 4301 + dependencies = [ 4302 + "bumpalo", 4303 + "proc-macro2", 4304 + "quote", 4305 + "syn 2.0.117", 4306 + "wasm-bindgen-shared", 4307 + ] 4308 + 4309 + [[package]] 4310 + name = "wasm-bindgen-shared" 4311 + version = "0.2.118" 4312 + source = "registry+https://github.com/rust-lang/crates.io-index" 4313 + checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129" 4314 + dependencies = [ 4315 + "unicode-ident", 4316 + ] 4317 + 4318 + [[package]] 4319 + name = "wasm-encoder" 4320 + version = "0.244.0" 4321 + source = "registry+https://github.com/rust-lang/crates.io-index" 4322 + checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" 4323 + dependencies = [ 4324 + "leb128fmt", 4325 + "wasmparser", 4326 + ] 4327 + 4328 + [[package]] 4329 + name = "wasm-metadata" 4330 + version = "0.244.0" 4331 + source = "registry+https://github.com/rust-lang/crates.io-index" 4332 + checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" 4333 + dependencies = [ 4334 + "anyhow", 4335 + "indexmap 2.14.0", 4336 + "wasm-encoder", 4337 + "wasmparser", 4338 + ] 4339 + 4340 + [[package]] 4341 + name = "wasmparser" 4342 + version = "0.244.0" 4343 + source = "registry+https://github.com/rust-lang/crates.io-index" 4344 + checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" 4345 + dependencies = [ 4346 + "bitflags", 4347 + "hashbrown 0.15.5", 4348 + "indexmap 2.14.0", 4349 + "semver", 4350 + ] 4351 + 4352 + [[package]] 4353 + name = "web-sys" 4354 + version = "0.3.95" 4355 + source = "registry+https://github.com/rust-lang/crates.io-index" 4356 + checksum = "4f2dfbb17949fa2088e5d39408c48368947b86f7834484e87b73de55bc14d97d" 4357 + dependencies = [ 4358 + "js-sys", 4359 + "wasm-bindgen", 4360 + ] 4361 + 4362 + [[package]] 4363 + name = "web-time" 4364 + version = "1.1.0" 4365 + source = "registry+https://github.com/rust-lang/crates.io-index" 4366 + checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" 4367 + dependencies = [ 4368 + "js-sys", 4369 + "wasm-bindgen", 4370 + ] 4371 + 4372 + [[package]] 4373 + name = "webpki-roots" 4374 + version = "0.26.11" 4375 + source = "registry+https://github.com/rust-lang/crates.io-index" 4376 + checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" 4377 + dependencies = [ 4378 + "webpki-roots 1.0.7", 4379 + ] 4380 + 4381 + [[package]] 4382 + name = "webpki-roots" 4383 + version = "1.0.7" 4384 + source = "registry+https://github.com/rust-lang/crates.io-index" 4385 + checksum = "52f5ee44c96cf55f1b349600768e3ece3a8f26010c05265ab73f945bb1a2eb9d" 4386 + dependencies = [ 4387 + "rustls-pki-types", 4388 + ] 4389 + 4390 + [[package]] 4391 + name = "whoami" 4392 + version = "1.6.1" 4393 + source = "registry+https://github.com/rust-lang/crates.io-index" 4394 + checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" 4395 + dependencies = [ 4396 + "libredox", 4397 + "wasite", 4398 + ] 4399 + 4400 + [[package]] 4401 + name = "windows-core" 4402 + version = "0.62.2" 4403 + source = "registry+https://github.com/rust-lang/crates.io-index" 4404 + checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" 4405 + dependencies = [ 4406 + "windows-implement", 4407 + "windows-interface", 4408 + "windows-link", 4409 + "windows-result", 4410 + "windows-strings", 4411 + ] 4412 + 4413 + [[package]] 4414 + name = "windows-implement" 4415 + version = "0.60.2" 4416 + source = "registry+https://github.com/rust-lang/crates.io-index" 4417 + checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" 4418 + dependencies = [ 4419 + "proc-macro2", 4420 + "quote", 4421 + "syn 2.0.117", 4422 + ] 4423 + 4424 + [[package]] 4425 + name = "windows-interface" 4426 + version = "0.59.3" 4427 + source = "registry+https://github.com/rust-lang/crates.io-index" 4428 + checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" 4429 + dependencies = [ 4430 + "proc-macro2", 4431 + "quote", 4432 + "syn 2.0.117", 4433 + ] 4434 + 4435 + [[package]] 4436 + name = "windows-link" 4437 + version = "0.2.1" 4438 + source = "registry+https://github.com/rust-lang/crates.io-index" 4439 + checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" 4440 + 4441 + [[package]] 4442 + name = "windows-registry" 4443 + version = "0.6.1" 4444 + source = "registry+https://github.com/rust-lang/crates.io-index" 4445 + checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" 4446 + dependencies = [ 4447 + "windows-link", 4448 + "windows-result", 4449 + "windows-strings", 4450 + ] 4451 + 4452 + [[package]] 4453 + name = "windows-result" 4454 + version = "0.4.1" 4455 + source = "registry+https://github.com/rust-lang/crates.io-index" 4456 + checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" 4457 + dependencies = [ 4458 + "windows-link", 4459 + ] 4460 + 4461 + [[package]] 4462 + name = "windows-strings" 4463 + version = "0.5.1" 4464 + source = "registry+https://github.com/rust-lang/crates.io-index" 4465 + checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" 4466 + dependencies = [ 4467 + "windows-link", 4468 + ] 4469 + 4470 + [[package]] 4471 + name = "windows-sys" 4472 + version = "0.48.0" 4473 + source = "registry+https://github.com/rust-lang/crates.io-index" 4474 + checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 4475 + dependencies = [ 4476 + "windows-targets 0.48.5", 4477 + ] 4478 + 4479 + [[package]] 4480 + name = "windows-sys" 4481 + version = "0.52.0" 4482 + source = "registry+https://github.com/rust-lang/crates.io-index" 4483 + checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 4484 + dependencies = [ 4485 + "windows-targets 0.52.6", 4486 + ] 4487 + 4488 + [[package]] 4489 + name = "windows-sys" 4490 + version = "0.60.2" 4491 + source = "registry+https://github.com/rust-lang/crates.io-index" 4492 + checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" 4493 + dependencies = [ 4494 + "windows-targets 0.53.5", 4495 + ] 4496 + 4497 + [[package]] 4498 + name = "windows-sys" 4499 + version = "0.61.2" 4500 + source = "registry+https://github.com/rust-lang/crates.io-index" 4501 + checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" 4502 + dependencies = [ 4503 + "windows-link", 4504 + ] 4505 + 4506 + [[package]] 4507 + name = "windows-targets" 4508 + version = "0.48.5" 4509 + source = "registry+https://github.com/rust-lang/crates.io-index" 4510 + checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 4511 + dependencies = [ 4512 + "windows_aarch64_gnullvm 0.48.5", 4513 + "windows_aarch64_msvc 0.48.5", 4514 + "windows_i686_gnu 0.48.5", 4515 + "windows_i686_msvc 0.48.5", 4516 + "windows_x86_64_gnu 0.48.5", 4517 + "windows_x86_64_gnullvm 0.48.5", 4518 + "windows_x86_64_msvc 0.48.5", 4519 + ] 4520 + 4521 + [[package]] 4522 + name = "windows-targets" 4523 + version = "0.52.6" 4524 + source = "registry+https://github.com/rust-lang/crates.io-index" 4525 + checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 4526 + dependencies = [ 4527 + "windows_aarch64_gnullvm 0.52.6", 4528 + "windows_aarch64_msvc 0.52.6", 4529 + "windows_i686_gnu 0.52.6", 4530 + "windows_i686_gnullvm 0.52.6", 4531 + "windows_i686_msvc 0.52.6", 4532 + "windows_x86_64_gnu 0.52.6", 4533 + "windows_x86_64_gnullvm 0.52.6", 4534 + "windows_x86_64_msvc 0.52.6", 4535 + ] 4536 + 4537 + [[package]] 4538 + name = "windows-targets" 4539 + version = "0.53.5" 4540 + source = "registry+https://github.com/rust-lang/crates.io-index" 4541 + checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" 4542 + dependencies = [ 4543 + "windows-link", 4544 + "windows_aarch64_gnullvm 0.53.1", 4545 + "windows_aarch64_msvc 0.53.1", 4546 + "windows_i686_gnu 0.53.1", 4547 + "windows_i686_gnullvm 0.53.1", 4548 + "windows_i686_msvc 0.53.1", 4549 + "windows_x86_64_gnu 0.53.1", 4550 + "windows_x86_64_gnullvm 0.53.1", 4551 + "windows_x86_64_msvc 0.53.1", 4552 + ] 4553 + 4554 + [[package]] 4555 + name = "windows_aarch64_gnullvm" 4556 + version = "0.48.5" 4557 + source = "registry+https://github.com/rust-lang/crates.io-index" 4558 + checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 4559 + 4560 + [[package]] 4561 + name = "windows_aarch64_gnullvm" 4562 + version = "0.52.6" 4563 + source = "registry+https://github.com/rust-lang/crates.io-index" 4564 + checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 4565 + 4566 + [[package]] 4567 + name = "windows_aarch64_gnullvm" 4568 + version = "0.53.1" 4569 + source = "registry+https://github.com/rust-lang/crates.io-index" 4570 + checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" 4571 + 4572 + [[package]] 4573 + name = "windows_aarch64_msvc" 4574 + version = "0.48.5" 4575 + source = "registry+https://github.com/rust-lang/crates.io-index" 4576 + checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 4577 + 4578 + [[package]] 4579 + name = "windows_aarch64_msvc" 4580 + version = "0.52.6" 4581 + source = "registry+https://github.com/rust-lang/crates.io-index" 4582 + checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 4583 + 4584 + [[package]] 4585 + name = "windows_aarch64_msvc" 4586 + version = "0.53.1" 4587 + source = "registry+https://github.com/rust-lang/crates.io-index" 4588 + checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" 4589 + 4590 + [[package]] 4591 + name = "windows_i686_gnu" 4592 + version = "0.48.5" 4593 + source = "registry+https://github.com/rust-lang/crates.io-index" 4594 + checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 4595 + 4596 + [[package]] 4597 + name = "windows_i686_gnu" 4598 + version = "0.52.6" 4599 + source = "registry+https://github.com/rust-lang/crates.io-index" 4600 + checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 4601 + 4602 + [[package]] 4603 + name = "windows_i686_gnu" 4604 + version = "0.53.1" 4605 + source = "registry+https://github.com/rust-lang/crates.io-index" 4606 + checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" 4607 + 4608 + [[package]] 4609 + name = "windows_i686_gnullvm" 4610 + version = "0.52.6" 4611 + source = "registry+https://github.com/rust-lang/crates.io-index" 4612 + checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 4613 + 4614 + [[package]] 4615 + name = "windows_i686_gnullvm" 4616 + version = "0.53.1" 4617 + source = "registry+https://github.com/rust-lang/crates.io-index" 4618 + checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" 4619 + 4620 + [[package]] 4621 + name = "windows_i686_msvc" 4622 + version = "0.48.5" 4623 + source = "registry+https://github.com/rust-lang/crates.io-index" 4624 + checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 4625 + 4626 + [[package]] 4627 + name = "windows_i686_msvc" 4628 + version = "0.52.6" 4629 + source = "registry+https://github.com/rust-lang/crates.io-index" 4630 + checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 4631 + 4632 + [[package]] 4633 + name = "windows_i686_msvc" 4634 + version = "0.53.1" 4635 + source = "registry+https://github.com/rust-lang/crates.io-index" 4636 + checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" 4637 + 4638 + [[package]] 4639 + name = "windows_x86_64_gnu" 4640 + version = "0.48.5" 4641 + source = "registry+https://github.com/rust-lang/crates.io-index" 4642 + checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 4643 + 4644 + [[package]] 4645 + name = "windows_x86_64_gnu" 4646 + version = "0.52.6" 4647 + source = "registry+https://github.com/rust-lang/crates.io-index" 4648 + checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 4649 + 4650 + [[package]] 4651 + name = "windows_x86_64_gnu" 4652 + version = "0.53.1" 4653 + source = "registry+https://github.com/rust-lang/crates.io-index" 4654 + checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" 4655 + 4656 + [[package]] 4657 + name = "windows_x86_64_gnullvm" 4658 + version = "0.48.5" 4659 + source = "registry+https://github.com/rust-lang/crates.io-index" 4660 + checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 4661 + 4662 + [[package]] 4663 + name = "windows_x86_64_gnullvm" 4664 + version = "0.52.6" 4665 + source = "registry+https://github.com/rust-lang/crates.io-index" 4666 + checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 4667 + 4668 + [[package]] 4669 + name = "windows_x86_64_gnullvm" 4670 + version = "0.53.1" 4671 + source = "registry+https://github.com/rust-lang/crates.io-index" 4672 + checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" 4673 + 4674 + [[package]] 4675 + name = "windows_x86_64_msvc" 4676 + version = "0.48.5" 4677 + source = "registry+https://github.com/rust-lang/crates.io-index" 4678 + checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 4679 + 4680 + [[package]] 4681 + name = "windows_x86_64_msvc" 4682 + version = "0.52.6" 4683 + source = "registry+https://github.com/rust-lang/crates.io-index" 4684 + checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 4685 + 4686 + [[package]] 4687 + name = "windows_x86_64_msvc" 4688 + version = "0.53.1" 4689 + source = "registry+https://github.com/rust-lang/crates.io-index" 4690 + checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" 4691 + 4692 + [[package]] 4693 + name = "wit-bindgen" 4694 + version = "0.51.0" 4695 + source = "registry+https://github.com/rust-lang/crates.io-index" 4696 + checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" 4697 + dependencies = [ 4698 + "wit-bindgen-rust-macro", 4699 + ] 4700 + 4701 + [[package]] 4702 + name = "wit-bindgen" 4703 + version = "0.57.1" 4704 + source = "registry+https://github.com/rust-lang/crates.io-index" 4705 + checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" 4706 + 4707 + [[package]] 4708 + name = "wit-bindgen-core" 4709 + version = "0.51.0" 4710 + source = "registry+https://github.com/rust-lang/crates.io-index" 4711 + checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" 4712 + dependencies = [ 4713 + "anyhow", 4714 + "heck 0.5.0", 4715 + "wit-parser", 4716 + ] 4717 + 4718 + [[package]] 4719 + name = "wit-bindgen-rust" 4720 + version = "0.51.0" 4721 + source = "registry+https://github.com/rust-lang/crates.io-index" 4722 + checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" 4723 + dependencies = [ 4724 + "anyhow", 4725 + "heck 0.5.0", 4726 + "indexmap 2.14.0", 4727 + "prettyplease", 4728 + "syn 2.0.117", 4729 + "wasm-metadata", 4730 + "wit-bindgen-core", 4731 + "wit-component", 4732 + ] 4733 + 4734 + [[package]] 4735 + name = "wit-bindgen-rust-macro" 4736 + version = "0.51.0" 4737 + source = "registry+https://github.com/rust-lang/crates.io-index" 4738 + checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" 4739 + dependencies = [ 4740 + "anyhow", 4741 + "prettyplease", 4742 + "proc-macro2", 4743 + "quote", 4744 + "syn 2.0.117", 4745 + "wit-bindgen-core", 4746 + "wit-bindgen-rust", 4747 + ] 4748 + 4749 + [[package]] 4750 + name = "wit-component" 4751 + version = "0.244.0" 4752 + source = "registry+https://github.com/rust-lang/crates.io-index" 4753 + checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" 4754 + dependencies = [ 4755 + "anyhow", 4756 + "bitflags", 4757 + "indexmap 2.14.0", 4758 + "log", 4759 + "serde", 4760 + "serde_derive", 4761 + "serde_json", 4762 + "wasm-encoder", 4763 + "wasm-metadata", 4764 + "wasmparser", 4765 + "wit-parser", 4766 + ] 4767 + 4768 + [[package]] 4769 + name = "wit-parser" 4770 + version = "0.244.0" 4771 + source = "registry+https://github.com/rust-lang/crates.io-index" 4772 + checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" 4773 + dependencies = [ 4774 + "anyhow", 4775 + "id-arena", 4776 + "indexmap 2.14.0", 4777 + "log", 4778 + "semver", 4779 + "serde", 4780 + "serde_derive", 4781 + "serde_json", 4782 + "unicode-xid", 4783 + "wasmparser", 4784 + ] 4785 + 4786 + [[package]] 4787 + name = "writeable" 4788 + version = "0.6.3" 4789 + source = "registry+https://github.com/rust-lang/crates.io-index" 4790 + checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" 4791 + 4792 + [[package]] 4793 + name = "xxhash-rust" 4794 + version = "0.8.15" 4795 + source = "registry+https://github.com/rust-lang/crates.io-index" 4796 + checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" 4797 + 4798 + [[package]] 4799 + name = "yansi" 4800 + version = "1.0.1" 4801 + source = "registry+https://github.com/rust-lang/crates.io-index" 4802 + checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" 4803 + 4804 + [[package]] 4805 + name = "yoke" 4806 + version = "0.8.2" 4807 + source = "registry+https://github.com/rust-lang/crates.io-index" 4808 + checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" 4809 + dependencies = [ 4810 + "stable_deref_trait", 4811 + "yoke-derive", 4812 + "zerofrom", 4813 + ] 4814 + 4815 + [[package]] 4816 + name = "yoke-derive" 4817 + version = "0.8.2" 4818 + source = "registry+https://github.com/rust-lang/crates.io-index" 4819 + checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" 4820 + dependencies = [ 4821 + "proc-macro2", 4822 + "quote", 4823 + "syn 2.0.117", 4824 + "synstructure", 4825 + ] 4826 + 4827 + [[package]] 4828 + name = "zerocopy" 4829 + version = "0.8.48" 4830 + source = "registry+https://github.com/rust-lang/crates.io-index" 4831 + checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" 4832 + dependencies = [ 4833 + "zerocopy-derive", 4834 + ] 4835 + 4836 + [[package]] 4837 + name = "zerocopy-derive" 4838 + version = "0.8.48" 4839 + source = "registry+https://github.com/rust-lang/crates.io-index" 4840 + checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" 4841 + dependencies = [ 4842 + "proc-macro2", 4843 + "quote", 4844 + "syn 2.0.117", 4845 + ] 4846 + 4847 + [[package]] 4848 + name = "zerofrom" 4849 + version = "0.1.7" 4850 + source = "registry+https://github.com/rust-lang/crates.io-index" 4851 + checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" 4852 + dependencies = [ 4853 + "zerofrom-derive", 4854 + ] 4855 + 4856 + [[package]] 4857 + name = "zerofrom-derive" 4858 + version = "0.1.7" 4859 + source = "registry+https://github.com/rust-lang/crates.io-index" 4860 + checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" 4861 + dependencies = [ 4862 + "proc-macro2", 4863 + "quote", 4864 + "syn 2.0.117", 4865 + "synstructure", 4866 + ] 4867 + 4868 + [[package]] 4869 + name = "zeroize" 4870 + version = "1.8.2" 4871 + source = "registry+https://github.com/rust-lang/crates.io-index" 4872 + checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" 4873 + 4874 + [[package]] 4875 + name = "zerotrie" 4876 + version = "0.2.4" 4877 + source = "registry+https://github.com/rust-lang/crates.io-index" 4878 + checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" 4879 + dependencies = [ 4880 + "displaydoc", 4881 + "yoke", 4882 + "zerofrom", 4883 + ] 4884 + 4885 + [[package]] 4886 + name = "zerovec" 4887 + version = "0.11.6" 4888 + source = "registry+https://github.com/rust-lang/crates.io-index" 4889 + checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" 4890 + dependencies = [ 4891 + "yoke", 4892 + "zerofrom", 4893 + "zerovec-derive", 4894 + ] 4895 + 4896 + [[package]] 4897 + name = "zerovec-derive" 4898 + version = "0.11.3" 4899 + source = "registry+https://github.com/rust-lang/crates.io-index" 4900 + checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" 4901 + dependencies = [ 4902 + "proc-macro2", 4903 + "quote", 4904 + "syn 2.0.117", 4905 + ] 4906 + 4907 + [[package]] 4908 + name = "zmij" 4909 + version = "1.0.21" 4910 + source = "registry+https://github.com/rust-lang/crates.io-index" 4911 + checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
+448
crates/tranquil-store/src/gauntlet/flaky.rs
··· 1 + use std::env; 2 + use std::num::NonZeroU32; 3 + use std::path::{Path, PathBuf}; 4 + use std::process::{Command, Output}; 5 + use std::sync::atomic::{AtomicU64, Ordering}; 6 + 7 + use tempfile::TempDir; 8 + 9 + #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 10 + pub struct UpIntervalSecs(pub NonZeroU32); 11 + 12 + #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 13 + pub struct DownIntervalSecs(pub NonZeroU32); 14 + 15 + #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 16 + pub struct BackingMegabytes(pub u32); 17 + 18 + const fn nz(n: u32) -> NonZeroU32 { 19 + match NonZeroU32::new(n) { 20 + Some(v) => v, 21 + None => panic!("zero interval not permitted"), 22 + } 23 + } 24 + 25 + #[derive(Debug, Clone, Copy)] 26 + pub struct FlakyConfig { 27 + pub up_interval: UpIntervalSecs, 28 + pub down_interval: DownIntervalSecs, 29 + pub backing_mb: BackingMegabytes, 30 + } 31 + 32 + impl FlakyConfig { 33 + pub const fn default_stress() -> Self { 34 + Self { 35 + up_interval: UpIntervalSecs(nz(8)), 36 + down_interval: DownIntervalSecs(nz(2)), 37 + backing_mb: BackingMegabytes(256), 38 + } 39 + } 40 + } 41 + 42 + #[derive(Debug, thiserror::Error)] 43 + pub enum FlakyError { 44 + #[error("not running as root, EUID != 0")] 45 + NotRoot, 46 + #[error("tool missing: {0}")] 47 + ToolMissing(&'static str), 48 + #[error("kernel target dm-flakey unavailable: {0}")] 49 + DmFlakeyMissing(String), 50 + #[error("{tool} failed: status={status}, stderr={stderr}")] 51 + CommandFailed { 52 + tool: &'static str, 53 + status: String, 54 + stderr: String, 55 + }, 56 + #[error("io: {0}")] 57 + Io(#[from] std::io::Error), 58 + } 59 + 60 + impl FlakyError { 61 + pub const fn is_env_absent(&self) -> bool { 62 + matches!( 63 + self, 64 + Self::NotRoot | Self::ToolMissing(_) | Self::DmFlakeyMissing(_) 65 + ) 66 + } 67 + } 68 + 69 + static MOUNT_COUNTER: AtomicU64 = AtomicU64::new(0); 70 + 71 + pub struct FlakyMount { 72 + mount_point: TempDir, 73 + mapper_name: String, 74 + mapper_path: PathBuf, 75 + loop_device: PathBuf, 76 + backing_file: PathBuf, 77 + _backing_tempdir: TempDir, 78 + } 79 + 80 + impl FlakyMount { 81 + pub fn try_new(cfg: &FlakyConfig) -> Result<Self, FlakyError> { 82 + ensure_root()?; 83 + ["losetup", "dmsetup", "mkfs.ext4", "mount", "umount"] 84 + .iter() 85 + .copied() 86 + .try_for_each(ensure_tool)?; 87 + probe_dm_flakey()?; 88 + let _ = reap_stale_mounts(); 89 + 90 + let backing_dir = TempDir::new()?; 91 + let backing_file = backing_dir.path().join("backing.img"); 92 + allocate_backing(&backing_file, cfg.backing_mb)?; 93 + 94 + let loop_device = attach_loop(&backing_file)?; 95 + let sectors = sector_count(&loop_device)?; 96 + 97 + if let Err(e) = mkfs_ext4(&loop_device) { 98 + let _ = detach_loop(&loop_device); 99 + return Err(e); 100 + } 101 + 102 + let mapper_name = format!( 103 + "tranquil-flaky-{}-{}", 104 + std::process::id(), 105 + MOUNT_COUNTER.fetch_add(1, Ordering::Relaxed), 106 + ); 107 + match dm_create( 108 + &mapper_name, 109 + &loop_device, 110 + sectors, 111 + cfg.up_interval, 112 + cfg.down_interval, 113 + ) { 114 + Ok(()) => {} 115 + Err(e) => { 116 + let _ = detach_loop(&loop_device); 117 + return Err(e); 118 + } 119 + } 120 + let mapper_path = PathBuf::from(format!("/dev/mapper/{mapper_name}")); 121 + 122 + let mount_point = TempDir::new()?; 123 + if let Err(e) = mount_ext4(&mapper_path, mount_point.path()) { 124 + let _ = dm_remove(&mapper_name); 125 + let _ = detach_loop(&loop_device); 126 + return Err(e); 127 + } 128 + 129 + Ok(Self { 130 + mount_point, 131 + mapper_name, 132 + mapper_path, 133 + loop_device, 134 + backing_file, 135 + _backing_tempdir: backing_dir, 136 + }) 137 + } 138 + 139 + pub fn path(&self) -> &Path { 140 + self.mount_point.path() 141 + } 142 + 143 + pub fn mapper_name(&self) -> &str { 144 + &self.mapper_name 145 + } 146 + 147 + pub fn mapper_path(&self) -> &Path { 148 + &self.mapper_path 149 + } 150 + 151 + pub fn loop_device(&self) -> &Path { 152 + &self.loop_device 153 + } 154 + 155 + pub fn backing_file(&self) -> &Path { 156 + &self.backing_file 157 + } 158 + } 159 + 160 + impl Drop for FlakyMount { 161 + fn drop(&mut self) { 162 + if let Err(e) = umount(self.mount_point.path()) { 163 + tracing::warn!( 164 + mount = %self.mount_point.path().display(), 165 + error = %e, 166 + "flaky umount failed, trying lazy unmount", 167 + ); 168 + if let Err(e2) = umount_lazy(self.mount_point.path()) { 169 + tracing::warn!( 170 + mount = %self.mount_point.path().display(), 171 + error = %e2, 172 + "flaky lazy unmount also failed, device may leak", 173 + ); 174 + } 175 + } 176 + if let Err(e) = dm_remove(&self.mapper_name) { 177 + tracing::warn!( 178 + name = %self.mapper_name, 179 + error = %e, 180 + "flaky dm remove failed, mapper device may leak", 181 + ); 182 + } 183 + if let Err(e) = detach_loop(&self.loop_device) { 184 + tracing::warn!( 185 + device = %self.loop_device.display(), 186 + error = %e, 187 + "flaky loop detach failed, loop device may leak", 188 + ); 189 + } 190 + } 191 + } 192 + 193 + #[cfg(unix)] 194 + fn ensure_root() -> Result<(), FlakyError> { 195 + if unsafe { libc::geteuid() } == 0 { 196 + Ok(()) 197 + } else { 198 + Err(FlakyError::NotRoot) 199 + } 200 + } 201 + 202 + #[cfg(not(unix))] 203 + fn ensure_root() -> Result<(), FlakyError> { 204 + Err(FlakyError::NotRoot) 205 + } 206 + 207 + fn ensure_tool(tool: &'static str) -> Result<(), FlakyError> { 208 + match find_in_path(tool) { 209 + Some(_) => Ok(()), 210 + None => Err(FlakyError::ToolMissing(tool)), 211 + } 212 + } 213 + 214 + fn find_in_path(tool: &str) -> Option<PathBuf> { 215 + let path = env::var_os("PATH")?; 216 + env::split_paths(&path).find_map(|dir| { 217 + let candidate = dir.join(tool); 218 + is_executable_file(&candidate).then_some(candidate) 219 + }) 220 + } 221 + 222 + #[cfg(unix)] 223 + fn is_executable_file(p: &Path) -> bool { 224 + use std::os::unix::fs::PermissionsExt; 225 + std::fs::metadata(p) 226 + .map(|m| m.is_file() && (m.permissions().mode() & 0o111) != 0) 227 + .unwrap_or(false) 228 + } 229 + 230 + #[cfg(not(unix))] 231 + fn is_executable_file(p: &Path) -> bool { 232 + p.is_file() 233 + } 234 + 235 + fn probe_dm_flakey() -> Result<(), FlakyError> { 236 + let out = Command::new("dmsetup").arg("targets").output()?; 237 + if !out.status.success() { 238 + return Err(FlakyError::DmFlakeyMissing(stringify_output(&out))); 239 + } 240 + let stdout = String::from_utf8_lossy(&out.stdout); 241 + if !stdout.lines().any(|l| l.starts_with("flakey")) { 242 + return Err(FlakyError::DmFlakeyMissing(stdout.into_owned())); 243 + } 244 + Ok(()) 245 + } 246 + 247 + fn reap_stale_mounts() -> Result<(), FlakyError> { 248 + let out = Command::new("dmsetup") 249 + .arg("ls") 250 + .arg("--target") 251 + .arg("flakey") 252 + .output()?; 253 + if !out.status.success() { 254 + return Ok(()); 255 + } 256 + String::from_utf8_lossy(&out.stdout) 257 + .lines() 258 + .filter_map(parse_flaky_entry) 259 + .filter(|(_, pid)| !pid_alive(*pid)) 260 + .for_each(|(name, _)| { 261 + let loop_device = mapper_backing_loop(&name); 262 + if let Err(e) = dm_remove(&name) { 263 + tracing::warn!(name, error = %e, "reap: dm_remove stale mapper failed"); 264 + return; 265 + } 266 + if let Some(loop_dev) = loop_device 267 + && let Err(e) = detach_loop(&loop_dev) 268 + { 269 + tracing::warn!( 270 + device = %loop_dev.display(), 271 + error = %e, 272 + "reap: detach_loop stale device failed", 273 + ); 274 + } 275 + }); 276 + Ok(()) 277 + } 278 + 279 + fn parse_flaky_entry(line: &str) -> Option<(String, u32)> { 280 + let name = line.split_whitespace().next()?; 281 + let suffix = name.strip_prefix("tranquil-flaky-")?; 282 + let pid_str = suffix.split('-').next()?; 283 + let pid = pid_str.parse::<u32>().ok()?; 284 + Some((name.to_string(), pid)) 285 + } 286 + 287 + fn pid_alive(pid: u32) -> bool { 288 + Path::new(&format!("/proc/{pid}")).exists() 289 + } 290 + 291 + fn mapper_backing_loop(name: &str) -> Option<PathBuf> { 292 + let out = Command::new("dmsetup") 293 + .arg("deps") 294 + .arg("-o") 295 + .arg("devname") 296 + .arg(name) 297 + .output() 298 + .ok()?; 299 + if !out.status.success() { 300 + return None; 301 + } 302 + let text = String::from_utf8_lossy(&out.stdout); 303 + let inner = text.split('(').nth(1)?; 304 + let dev = inner.split(')').next()?.trim(); 305 + if dev.is_empty() { 306 + None 307 + } else { 308 + Some(PathBuf::from(format!("/dev/{dev}"))) 309 + } 310 + } 311 + 312 + fn allocate_backing(path: &Path, size: BackingMegabytes) -> Result<(), FlakyError> { 313 + let out = Command::new("truncate") 314 + .arg("-s") 315 + .arg(format!("{}M", size.0)) 316 + .arg(path) 317 + .output()?; 318 + check_status("truncate", &out) 319 + } 320 + 321 + fn attach_loop(backing: &Path) -> Result<PathBuf, FlakyError> { 322 + let out = Command::new("losetup") 323 + .arg("--find") 324 + .arg("--show") 325 + .arg(backing) 326 + .output()?; 327 + check_status("losetup", &out)?; 328 + let raw = String::from_utf8_lossy(&out.stdout).trim().to_string(); 329 + if raw.is_empty() { 330 + return Err(FlakyError::CommandFailed { 331 + tool: "losetup", 332 + status: "exit 0".to_string(), 333 + stderr: "no device path on stdout".to_string(), 334 + }); 335 + } 336 + Ok(PathBuf::from(raw)) 337 + } 338 + 339 + fn detach_loop(device: &Path) -> Result<(), FlakyError> { 340 + let out = Command::new("losetup").arg("-d").arg(device).output()?; 341 + check_status("losetup -d", &out) 342 + } 343 + 344 + fn sector_count(device: &Path) -> Result<u64, FlakyError> { 345 + let out = Command::new("blockdev") 346 + .arg("--getsz") 347 + .arg(device) 348 + .output()?; 349 + check_status("blockdev", &out)?; 350 + let raw = String::from_utf8_lossy(&out.stdout).trim().to_string(); 351 + raw.parse::<u64>().map_err(|_| FlakyError::CommandFailed { 352 + tool: "blockdev", 353 + status: "exit 0".to_string(), 354 + stderr: format!("could not parse sector count: {raw:?}"), 355 + }) 356 + } 357 + 358 + fn dm_create( 359 + name: &str, 360 + loop_device: &Path, 361 + sectors: u64, 362 + up: UpIntervalSecs, 363 + down: DownIntervalSecs, 364 + ) -> Result<(), FlakyError> { 365 + let table = format!( 366 + "0 {sectors} flakey {} 0 {} {}", 367 + loop_device.display(), 368 + up.0.get(), 369 + down.0.get(), 370 + ); 371 + let mut child = Command::new("dmsetup") 372 + .arg("create") 373 + .arg(name) 374 + .stdin(std::process::Stdio::piped()) 375 + .stdout(std::process::Stdio::piped()) 376 + .stderr(std::process::Stdio::piped()) 377 + .spawn()?; 378 + if let Some(stdin) = child.stdin.as_mut() { 379 + use std::io::Write; 380 + stdin.write_all(table.as_bytes())?; 381 + } 382 + let out = child.wait_with_output()?; 383 + check_status("dmsetup create", &out) 384 + } 385 + 386 + fn dm_remove(name: &str) -> Result<(), FlakyError> { 387 + let out = Command::new("dmsetup") 388 + .arg("remove") 389 + .arg("--retry") 390 + .arg(name) 391 + .output()?; 392 + check_status("dmsetup remove", &out) 393 + } 394 + 395 + fn mkfs_ext4(device: &Path) -> Result<(), FlakyError> { 396 + let out = Command::new("mkfs.ext4") 397 + .arg("-q") 398 + .arg("-F") 399 + .arg(device) 400 + .output()?; 401 + check_status("mkfs.ext4", &out) 402 + } 403 + 404 + fn mount_ext4(device: &Path, target: &Path) -> Result<(), FlakyError> { 405 + let out = Command::new("mount") 406 + .arg("-t") 407 + .arg("ext4") 408 + .arg(device) 409 + .arg(target) 410 + .output()?; 411 + check_status("mount", &out) 412 + } 413 + 414 + fn umount(target: &Path) -> Result<(), FlakyError> { 415 + let out = Command::new("umount").arg(target).output()?; 416 + check_status("umount", &out) 417 + } 418 + 419 + fn umount_lazy(target: &Path) -> Result<(), FlakyError> { 420 + let out = Command::new("umount").arg("-l").arg(target).output()?; 421 + check_status("umount -l", &out) 422 + } 423 + 424 + fn check_status(tool: &'static str, out: &Output) -> Result<(), FlakyError> { 425 + if out.status.success() { 426 + Ok(()) 427 + } else { 428 + Err(FlakyError::CommandFailed { 429 + tool, 430 + status: format!("{}", out.status), 431 + stderr: String::from_utf8_lossy(&out.stderr).into_owned(), 432 + }) 433 + } 434 + } 435 + 436 + fn stringify_output(out: &Output) -> String { 437 + let mut s = String::new(); 438 + if !out.stdout.is_empty() { 439 + s.push_str(&String::from_utf8_lossy(&out.stdout)); 440 + } 441 + if !out.stderr.is_empty() { 442 + if !s.is_empty() { 443 + s.push('\n'); 444 + } 445 + s.push_str(&String::from_utf8_lossy(&out.stderr)); 446 + } 447 + s 448 + }
+1 -1
crates/tranquil-store/src/gauntlet/invariants.rs
··· 351 351 .into_iter() 352 352 .map(|(c, r)| (c, r.raw())) 353 353 .collect(); 354 - v.sort_unstable_by(|a, b| a.0.cmp(&b.0)); 354 + v.sort_unstable_by_key(|a| a.0); 355 355 v 356 356 } 357 357
+4
crates/tranquil-store/src/gauntlet/mod.rs
··· 1 1 pub mod farm; 2 + pub mod flaky; 2 3 pub mod invariants; 3 4 pub mod leak; 4 5 pub mod metrics; ··· 12 13 pub mod soak; 13 14 pub mod workload; 14 15 16 + pub use flaky::{ 17 + BackingMegabytes, DownIntervalSecs, FlakyConfig, FlakyError, FlakyMount, UpIntervalSecs, 18 + }; 15 19 pub use invariants::{ 16 20 EventLogSnapshot, Invariant, InvariantSet, InvariantViolation, SnapshotEvent, invariants_for, 17 21 };
+127 -19
crates/tranquil-store/src/gauntlet/runner.rs
··· 7 7 use cid::Cid; 8 8 use jacquard_repo::mst::Mst; 9 9 10 + use super::flaky::{FlakyConfig, FlakyMount}; 10 11 use super::invariants::{ 11 12 EventLogSnapshot, InvariantCtx, InvariantSet, InvariantViolation, SnapshotEvent, invariants_for, 12 13 }; ··· 27 28 #[derive(Debug, Clone, Copy)] 28 29 pub enum IoBackend { 29 30 Real, 31 + RealWithFlaky { flaky: FlakyConfig }, 30 32 Simulated { fault: FaultConfig }, 31 33 } 32 34 ··· 218 220 op_errors_counter.clone(), 219 221 restarts_counter.clone(), 220 222 )), 223 + IoBackend::RealWithFlaky { flaky } => Box::pin(run_inner_real_with_flaky( 224 + self.config, 225 + flaky, 226 + ops, 227 + ops_counter.clone(), 228 + op_errors_counter.clone(), 229 + restarts_counter.clone(), 230 + )), 221 231 IoBackend::Simulated { fault } => Box::pin(run_inner_simulated( 222 232 self.config, 223 233 fault, ··· 261 271 restarts_counter: Arc<AtomicUsize>, 262 272 ) -> GauntletReport { 263 273 let dir = tempfile::TempDir::new().expect("tempdir"); 264 - let cfg = blockstore_config(dir.path(), &config.store); 274 + let root = dir.path().to_path_buf(); 275 + let report = run_inner_real_on_root( 276 + config, 277 + root, 278 + ops, 279 + ops_counter, 280 + op_errors_counter, 281 + restarts_counter, 282 + false, 283 + Duration::ZERO, 284 + ) 285 + .await; 286 + drop(dir); 287 + report 288 + } 289 + 290 + async fn run_inner_real_with_flaky( 291 + config: GauntletConfig, 292 + flaky_cfg: FlakyConfig, 293 + ops: OpStream, 294 + ops_counter: Arc<AtomicUsize>, 295 + op_errors_counter: Arc<AtomicUsize>, 296 + restarts_counter: Arc<AtomicUsize>, 297 + ) -> GauntletReport { 298 + let mount = match FlakyMount::try_new(&flaky_cfg) { 299 + Ok(m) => m, 300 + Err(e) => { 301 + let invariant = if e.is_env_absent() { 302 + "FlakyEnvironment" 303 + } else { 304 + "FlakyOperational" 305 + }; 306 + return GauntletReport { 307 + seed: config.seed, 308 + ops_executed: OpsExecuted(0), 309 + op_errors: OpErrorCount(0), 310 + restarts: RestartCount(0), 311 + violations: vec![InvariantViolation { 312 + invariant, 313 + detail: format!("flaky mount: {e}"), 314 + }], 315 + ops: OpStream::empty(), 316 + }; 317 + } 318 + }; 319 + let root = mount.path().join("store"); 320 + if let Err(e) = std::fs::create_dir_all(&root) { 321 + return GauntletReport { 322 + seed: config.seed, 323 + ops_executed: OpsExecuted(0), 324 + op_errors: OpErrorCount(0), 325 + restarts: RestartCount(0), 326 + violations: vec![InvariantViolation { 327 + invariant: "FlakyOperational", 328 + detail: format!("create_dir_all {}: {e}", root.display()), 329 + }], 330 + ops: OpStream::empty(), 331 + }; 332 + } 333 + let down_ms = u64::from(flaky_cfg.down_interval.0.get()) 334 + .saturating_mul(1_000) 335 + .saturating_add(500); 336 + let report = run_inner_real_on_root( 337 + config, 338 + root, 339 + ops, 340 + ops_counter, 341 + op_errors_counter, 342 + restarts_counter, 343 + true, 344 + Duration::from_millis(down_ms), 345 + ) 346 + .await; 347 + drop(mount); 348 + report 349 + } 350 + 351 + #[allow(clippy::too_many_arguments)] 352 + async fn run_inner_real_on_root( 353 + config: GauntletConfig, 354 + root: PathBuf, 355 + ops: OpStream, 356 + ops_counter: Arc<AtomicUsize>, 357 + op_errors_counter: Arc<AtomicUsize>, 358 + restarts_counter: Arc<AtomicUsize>, 359 + tolerate_op_errors: bool, 360 + reopen_backoff: Duration, 361 + ) -> GauntletReport { 362 + let cfg = blockstore_config(&root, &config.store); 265 363 let eventlog_cfg = config.eventlog; 266 - let segments_dir = segments_subdir(dir.path()); 364 + let segments_dir = segments_subdir(&root); 267 365 let open = { 268 366 let segments_dir = segments_dir.clone(); 269 367 move || -> Result<Harness<RealIO>, String> { ··· 289 387 restarts_counter, 290 388 open, 291 389 || {}, 292 - false, 390 + tolerate_op_errors, 391 + reopen_backoff, 293 392 ) 294 393 .await 295 394 } else { ··· 301 400 restarts_counter, 302 401 open, 303 402 || {}, 304 - false, 403 + tolerate_op_errors, 404 + reopen_backoff, 305 405 ) 306 406 .await 307 407 } ··· 356 456 open, 357 457 crash, 358 458 tolerate_errors, 459 + Duration::ZERO, 359 460 ) 360 461 .await 361 462 } else { ··· 368 469 open, 369 470 crash, 370 471 tolerate_errors, 472 + Duration::ZERO, 371 473 ) 372 474 .await 373 475 } ··· 406 508 mut open: Open, 407 509 mut crash: Crash, 408 510 tolerate_op_errors: bool, 511 + reopen_backoff: Duration, 409 512 ) -> GauntletReport 410 513 where 411 514 S: StorageIO + Send + Sync + 'static, ··· 474 577 oracle.record_crash(); 475 578 } 476 579 shutdown_harness(&mut harness); 477 - match reopen_with_recovery(&mut open, &mut crash, tolerate_op_errors) { 580 + match reopen_with_recovery(&mut open, &mut crash, tolerate_op_errors, reopen_backoff).await { 478 581 Ok(reopened) => { 479 582 harness = Some(reopened); 480 583 let n = restarts_counter.fetch_add(1, Ordering::Relaxed) + 1; ··· 510 613 crash(); 511 614 oracle.record_crash(); 512 615 shutdown_harness(&mut harness); 513 - match reopen_with_recovery(&mut open, &mut crash, tolerate_op_errors) { 616 + match reopen_with_recovery(&mut open, &mut crash, tolerate_op_errors, reopen_backoff).await { 514 617 Ok(reopened) => harness = Some(reopened), 515 618 Err(detail) => { 516 619 violations.push(InvariantViolation { ··· 551 654 { 552 655 let pre_snapshot = snapshot_block_index(&live.store); 553 656 shutdown_harness(&mut harness); 554 - match reopen_with_recovery(&mut open, &mut crash, tolerate_op_errors) { 657 + match reopen_with_recovery(&mut open, &mut crash, tolerate_op_errors, reopen_backoff).await { 555 658 Ok(reopened) => { 556 659 let post_snapshot = snapshot_block_index(&reopened.store); 557 660 if let Some(detail) = diff_snapshots(&pre_snapshot, &post_snapshot) { ··· 636 739 637 740 const MAX_REOPEN_ATTEMPTS: usize = 5; 638 741 639 - fn reopen_with_recovery<S, Open, Crash>( 742 + async fn reopen_with_recovery<S, Open, Crash>( 640 743 open: &mut Open, 641 744 crash: &mut Crash, 642 745 tolerate: bool, 746 + backoff: Duration, 643 747 ) -> Result<Harness<S>, String> 644 748 where 645 749 S: StorageIO + Send + Sync + 'static, ··· 647 751 Crash: FnMut(), 648 752 { 649 753 let mut errors: Vec<String> = Vec::new(); 650 - (0..MAX_REOPEN_ATTEMPTS) 651 - .find_map(|attempt| match open() { 652 - Ok(h) => Some(Ok(h)), 754 + for attempt in 0..MAX_REOPEN_ATTEMPTS { 755 + if attempt > 0 && !backoff.is_zero() { 756 + tokio::time::sleep(backoff).await; 757 + } 758 + match open() { 759 + Ok(h) => return Ok(h), 653 760 Err(e) => { 654 761 errors.push(format!("attempt {attempt}: {e}")); 655 762 if !tolerate { 656 - return Some(Err(errors.join(" | "))); 763 + return Err(errors.join(" | ")); 657 764 } 658 765 crash(); 659 - None 660 766 } 661 - }) 662 - .unwrap_or_else(|| Err(errors.join(" | "))) 767 + } 768 + } 769 + Err(errors.join(" | ")) 663 770 } 664 771 665 772 const QUICK_SAMPLE_SIZE: usize = 32; ··· 777 884 .into_iter() 778 885 .map(|(c, r)| (c, r.raw())) 779 886 .collect(); 780 - v.sort_unstable_by(|a, b| a.0.cmp(&b.0)); 887 + v.sort_unstable_by_key(|a| a.0); 781 888 v 782 889 } 783 890 ··· 1450 1557 mut open: Open, 1451 1558 mut crash: Crash, 1452 1559 tolerate_op_errors: bool, 1560 + reopen_backoff: Duration, 1453 1561 ) -> GauntletReport 1454 1562 where 1455 1563 S: StorageIO + Send + Sync + 'static, ··· 1568 1676 oracle.record_crash(); 1569 1677 } 1570 1678 shutdown_harness(&mut harness); 1571 - match reopen_with_recovery(&mut open, &mut crash, tolerate_op_errors) { 1679 + match reopen_with_recovery(&mut open, &mut crash, tolerate_op_errors, reopen_backoff).await { 1572 1680 Ok(reopened) => { 1573 1681 harness = Some(reopened); 1574 1682 let n = restarts_counter.fetch_add(1, Ordering::Relaxed) + 1; ··· 1605 1713 crash(); 1606 1714 oracle.record_crash(); 1607 1715 shutdown_harness(&mut harness); 1608 - match reopen_with_recovery(&mut open, &mut crash, tolerate_op_errors) { 1716 + match reopen_with_recovery(&mut open, &mut crash, tolerate_op_errors, reopen_backoff).await { 1609 1717 Ok(reopened) => harness = Some(reopened), 1610 1718 Err(detail) => { 1611 1719 violations.push(InvariantViolation { ··· 1647 1755 { 1648 1756 let pre_snapshot = snapshot_block_index(&live.store); 1649 1757 shutdown_harness(&mut harness); 1650 - match reopen_with_recovery(&mut open, &mut crash, tolerate_op_errors) { 1758 + match reopen_with_recovery(&mut open, &mut crash, tolerate_op_errors, reopen_backoff).await { 1651 1759 Ok(reopened) => { 1652 1760 let post_snapshot = snapshot_block_index(&reopened.store); 1653 1761 if let Some(detail) = diff_snapshots(&pre_snapshot, &post_snapshot) {
+40
crates/tranquil-store/src/gauntlet/scenarios.rs
··· 1 + use super::flaky::FlakyConfig; 1 2 use super::invariants::InvariantSet; 2 3 use super::op::{CollectionName, Seed}; 3 4 use super::runner::{ ··· 29 30 FirehoseFanout, 30 31 ContendedReaders, 31 32 ContendedWriters, 33 + FlakyDevice, 32 34 } 33 35 34 36 impl Scenario { ··· 50 52 Self::FirehoseFanout => "FirehoseFanout", 51 53 Self::ContendedReaders => "ContendedReaders", 52 54 Self::ContendedWriters => "ContendedWriters", 55 + Self::FlakyDevice => "FlakyDevice", 53 56 } 54 57 } 55 58 ··· 71 74 Self::FirehoseFanout => "firehose-fanout", 72 75 Self::ContendedReaders => "contended-readers", 73 76 Self::ContendedWriters => "contended-writers", 77 + Self::FlakyDevice => "flaky-device", 74 78 } 75 79 } 76 80 ··· 102 106 Self::ContendedWriters => { 103 107 "Add/delete heavy, 32 writer tasks, simulated moderate faults." 104 108 } 109 + Self::FlakyDevice => { 110 + "Real IO on ext4 atop dm-flakey. Requires root with dm-flakey available, skips otherwise." 111 + } 105 112 } 106 113 } 107 114 ··· 130 137 Self::FirehoseFanout, 131 138 Self::ContendedReaders, 132 139 Self::ContendedWriters, 140 + Self::FlakyDevice, 133 141 ]; 134 142 } 135 143 ··· 202 210 Scenario::FirehoseFanout => firehose_fanout(seed), 203 211 Scenario::ContendedReaders => contended_readers(seed), 204 212 Scenario::ContendedWriters => contended_writers(seed), 213 + Scenario::FlakyDevice => flaky_device(seed), 205 214 } 206 215 } 207 216 ··· 679 688 store: sim_store(), 680 689 eventlog: None, 681 690 writer_concurrency: WriterConcurrency(64), 691 + } 692 + } 693 + 694 + fn flaky_device(seed: Seed) -> GauntletConfig { 695 + GauntletConfig { 696 + seed, 697 + io: IoBackend::RealWithFlaky { 698 + flaky: FlakyConfig::default_stress(), 699 + }, 700 + workload: block_workload( 701 + block_weights(80, 5, 10, 5), 702 + SizeDistribution::Fixed(ValueBytes(128)), 703 + KeySpaceSize(500), 704 + ), 705 + op_count: OpCount(20_000), 706 + invariants: InvariantSet::REFCOUNT_CONSERVATION 707 + | InvariantSet::REACHABILITY 708 + | InvariantSet::ACKED_WRITE_PERSISTENCE 709 + | InvariantSet::READ_AFTER_WRITE 710 + | InvariantSet::RESTART_IDEMPOTENT 711 + | InvariantSet::NO_ORPHAN_FILES 712 + | InvariantSet::MANIFEST_EQUALS_REALITY 713 + | InvariantSet::BYTE_BUDGET 714 + | InvariantSet::CHECKSUM_COVERAGE, 715 + limits: RunLimits { 716 + max_wall_ms: Some(WallMs(30 * 60_000)), 717 + }, 718 + restart_policy: RestartPolicy::EveryNOps(OpInterval(1_000)), 719 + store: tiny_store(), 720 + eventlog: None, 721 + writer_concurrency: WriterConcurrency(1), 682 722 } 683 723 } 684 724
+70
crates/tranquil-store/tests/gauntlet_flaky.rs
··· 1 + use std::num::NonZeroU32; 2 + 3 + use tranquil_store::gauntlet::{ 4 + BackingMegabytes, DownIntervalSecs, FlakyConfig, FlakyMount, Gauntlet, Scenario, Seed, 5 + UpIntervalSecs, config_for, 6 + }; 7 + 8 + #[tokio::test] 9 + #[ignore = "requires root + dm-flakey; run under a privileged container"] 10 + async fn flaky_device_scenario_sanity() { 11 + let cfg = config_for(Scenario::FlakyDevice, Seed(1)); 12 + let op_count = cfg.op_count.0; 13 + let report = Gauntlet::new(cfg).expect("build gauntlet").run().await; 14 + let env_skip = report 15 + .violations 16 + .iter() 17 + .any(|v| v.invariant == "FlakyEnvironment"); 18 + if env_skip { 19 + eprintln!( 20 + "flaky environment unavailable: {}", 21 + report 22 + .violations 23 + .iter() 24 + .map(|v| format!("{}: {}", v.invariant, v.detail)) 25 + .collect::<Vec<_>>() 26 + .join(", ") 27 + ); 28 + return; 29 + } 30 + let failures: Vec<String> = report 31 + .violations 32 + .iter() 33 + .map(|v| format!("{}: {}", v.invariant, v.detail)) 34 + .collect(); 35 + assert!(failures.is_empty(), "violations: {failures:?}"); 36 + let floor = op_count / 2; 37 + assert!( 38 + report.ops_executed.0 >= floor, 39 + "flaky ops_executed {} below floor {} of {op_count}: {} op_errors, {} restarts", 40 + report.ops_executed.0, 41 + floor, 42 + report.op_errors.0, 43 + report.restarts.0, 44 + ); 45 + } 46 + 47 + #[test] 48 + #[ignore = "requires root + dm-flakey; exercises mount/teardown without running Gauntlet"] 49 + fn flaky_mount_setup_teardown() { 50 + let cfg = FlakyConfig { 51 + up_interval: UpIntervalSecs(NonZeroU32::new(5).unwrap()), 52 + down_interval: DownIntervalSecs(NonZeroU32::new(1).unwrap()), 53 + backing_mb: BackingMegabytes(64), 54 + }; 55 + let mount = match FlakyMount::try_new(&cfg) { 56 + Ok(m) => m, 57 + Err(e) if e.is_env_absent() => { 58 + eprintln!("flaky environment unavailable: {e}"); 59 + return; 60 + } 61 + Err(e) => panic!("flaky mount setup failed: {e}"), 62 + }; 63 + assert!(mount.path().exists(), "mount path should exist"); 64 + assert!(mount.mapper_path().exists(), "mapper device should exist"); 65 + let marker = mount.path().join("marker"); 66 + std::fs::write(&marker, b"ok").expect("write through flaky mount"); 67 + let back = std::fs::read(&marker).expect("read back"); 68 + assert_eq!(back, b"ok"); 69 + drop(mount); 70 + }
+4
crates/tranquil-store/tests/gauntlet_soak.rs
··· 5 5 LeakGateConfig, Scenario, Seed, SoakConfig, SoakReport, config_for, run_soak, 6 6 }; 7 7 8 + #[cfg(feature = "gauntlet-jemalloc-prof")] 9 + #[global_allocator] 10 + static GLOBAL: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc; 11 + 8 12 fn soak_hours() -> Option<f64> { 9 13 std::env::var("GAUNTLET_SOAK_HOURS") 10 14 .ok()
+2 -2
crates/tranquil-store/tests/mst_refcount_integrity.rs
··· 41 41 ) -> Vec<Cid> { 42 42 let diff = old_mst.diff(new_mst).await.unwrap(); 43 43 std::iter::once(old_commit_cid) 44 - .chain(diff.removed_mst_blocks.into_iter()) 45 - .chain(diff.removed_cids.into_iter()) 44 + .chain(diff.removed_mst_blocks) 45 + .chain(diff.removed_cids) 46 46 .collect() 47 47 } 48 48
+1 -1
crates/tranquil-sync/src/repo.rs
··· 238 238 239 239 chunk 240 240 .iter() 241 - .zip(blocks.into_iter()) 241 + .zip(blocks) 242 242 .filter_map(|(cid, block_opt)| block_opt.map(|block| (*cid, block))) 243 243 .for_each(|(cid, block)| car_bytes.extend_from_slice(&encode_car_block(&cid, &block))); 244 244 }
+39
justfile
··· 49 49 gauntlet-soak HOURS="24" OUTPUT="": 50 50 SQLX_OFFLINE=true GAUNTLET_SOAK_HOURS={{HOURS}} GAUNTLET_SOAK_OUTPUT={{OUTPUT}} cargo nextest run -p tranquil-store --features tranquil-store/test-harness --profile gauntlet-soak --test gauntlet_soak --run-ignored all -- soak_long_leak_gate 51 51 52 + gauntlet-soak-heapprof HOURS="24" OUTPUT="" PREFIX="jeprof.gauntlet": 53 + SQLX_OFFLINE=true \ 54 + GAUNTLET_SOAK_HOURS={{HOURS}} \ 55 + GAUNTLET_SOAK_OUTPUT={{OUTPUT}} \ 56 + MALLOC_CONF="prof:true,prof_active:true,prof_final:true,lg_prof_sample:19,prof_prefix:{{PREFIX}}" \ 57 + cargo nextest run -p tranquil-store \ 58 + --features tranquil-store/test-harness,tranquil-store/gauntlet-jemalloc-prof \ 59 + --profile gauntlet-soak --test gauntlet_soak --run-ignored all -- soak_long_leak_gate 60 + 61 + gauntlet-flaky SEED="1": 62 + SQLX_OFFLINE=true cargo nextest run -p tranquil-store --features tranquil-store/test-harness --test gauntlet_flaky --run-ignored all 63 + 64 + fuzz-target TARGET SECONDS="60" SANITIZER="address": 65 + cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer {{SANITIZER}} {{TARGET}} -- -max_total_time={{SECONDS}} 66 + 67 + fuzz-pr SECONDS="60": 68 + cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address decode_block_record -- -max_total_time={{SECONDS}} 69 + cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address decode_hint_record -- -max_total_time={{SECONDS}} 70 + cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address segment_scan -- -max_total_time={{SECONDS}} 71 + cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address metastore_key_codec -- -max_total_time={{SECONDS}} 72 + cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address gauntlet_micro -- -max_total_time={{SECONDS}} 73 + 74 + fuzz-nightly SECONDS="21600": 75 + cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address decode_block_record -- -max_total_time={{SECONDS}} 76 + cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address decode_hint_record -- -max_total_time={{SECONDS}} 77 + cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address segment_scan -- -max_total_time={{SECONDS}} 78 + cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address metastore_key_codec -- -max_total_time={{SECONDS}} 79 + cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer address gauntlet_micro -- -max_total_time={{SECONDS}} 80 + 81 + fuzz-ubsan TARGET SECONDS="60": 82 + cd crates/tranquil-store/fuzz && cargo +nightly fuzz run --sanitizer undefined {{TARGET}} -- -max_total_time={{SECONDS}} 83 + 84 + test-store-asan: 85 + SQLX_OFFLINE=true \ 86 + ASAN_OPTIONS="halt_on_error=1:abort_on_error=1:detect_leaks=1" \ 87 + RUSTFLAGS="-Zsanitizer=address" \ 88 + RUSTDOCFLAGS="-Zsanitizer=address" \ 89 + cargo +nightly nextest run -p tranquil-store --features tranquil-store/test-harness --target x86_64-unknown-linux-gnu 90 + 52 91 test-unit: 53 92 SQLX_OFFLINE=true cargo test --test dpop_unit --test validation_edge_cases --test scope_edge_cases 54 93