From d164820ea971faf8524fefd362e51148ea76ebcd Mon Sep 17 00:00:00 2001 From: i2p Date: Thu, 27 Aug 2026 11:03:10 -0600 Subject: [PATCH] initial commit --- .DS_Store | Bin 0 -> 8196 bytes Cargo.lock | 3284 +++++++++++++ Cargo.toml | 45 + bin/stager.exe | Bin 0 -> 20480 bytes bin/zerin.exe | Bin 0 -> 2386432 bytes bin/zerin_crypter | Bin 0 -> 18680 bytes crypter_stubs/api_resolve.c | 245 + crypter_stubs/api_resolve.h | 185 + crypter_stubs/decrypt_layer.c | 166 + crypter_stubs/decrypt_layer.h | 13 + crypter_stubs/evasion.h | 53 + crypter_stubs/evasion_amsi.c | 37 + crypter_stubs/evasion_anti_debug.c | 86 + crypter_stubs/evasion_anti_sandbox.c | 103 + crypter_stubs/evasion_etw.c | 33 + crypter_stubs/evasion_sleep.c | 25 + crypter_stubs/evasion_unhook.c | 80 + crypter_stubs/reflective_stub.c | 299 ++ crypter_stubs/runpe_stub.c | 150 + crypter_stubs/shellcode_stub.c | 58 + crypter_stubs/stub_main.c | 80 + crypter_stubs/zerin_crypter | Bin 0 -> 18680 bytes dist/assets/index-B2hrJO5G.js | 440 ++ dist/assets/index-B6xpyg2I.css | 1 + dist/assets/index-B9OiHrjj.js | 448 ++ dist/assets/index-BKpgognX.css | 1 + dist/assets/index-BRc-cqBN.js | 508 ++ dist/assets/index-BgEhResd.js | 451 ++ dist/assets/index-BpSkMVEN.css | 1 + dist/assets/index-C1IhTd_8.css | 1 + dist/assets/index-CIWNzjym.css | 1 + dist/assets/index-CU36QM0Y.js | 430 ++ dist/assets/index-CbtHPv7j.css | 1 + dist/assets/index-Dvjgs59i.js | 422 ++ dist/assets/index-GSEJCIsq.js | 440 ++ dist/assets/index-MJ7nF-V0.js | 422 ++ dist/assets/index-RE_RleHj.js | 508 ++ dist/assets/index-fDcwXJQ4.js | 508 ++ dist/assets/index-iSOoMWmU.css | 1 + dist/assets/vnc-decode.worker-EPE-JCx4.js | 1 + dist/index.html | 25 + dist/zerin-logo.png | Bin 0 -> 2298593 bytes include/cmd_hashes_gen.h | 95 + include/commands.h | 155 + include/config.h | 84 + include/crypto.h | 129 + include/dxgi_capture.h | 46 + include/elevator_blob.h | 1062 +++++ include/evasion.h | 24 + include/indirect_syscalls.h | 97 + include/obf_strings.def | 155 + include/obf_strings_gen.h | 132 + include/platform.h | 74 + include/poly_config.h | 8 + include/poly_hash.h | 57 + include/protocol.h | 145 + include/rootkit.h | 40 + include/sleep_obf.h | 14 + include/stb_image_write.h | 1724 +++++++ include/strings.h | 10 + include/syscalls.h | 24 + include/transport.h | 41 + include/turbojpeg.h | 2809 +++++++++++ include/zerin.h | 79 + lib/.DS_Store | Bin 0 -> 6148 bytes lib/libjpeg-turbo/.gitattributes | 5 + lib/libjpeg-turbo/BUILDING.md | 703 +++ lib/libjpeg-turbo/CMakeLists.txt | 1946 ++++++++ lib/libjpeg-turbo/ChangeLog.md | 2506 ++++++++++ lib/libjpeg-turbo/LICENSE.md | 135 + lib/libjpeg-turbo/README.ijg | 260 ++ lib/libjpeg-turbo/README.md | 375 ++ lib/libjpeg-turbo/build_cross/cdjpeg.o | Bin 0 -> 2292 bytes lib/libjpeg-turbo/build_cross/cjpeg.o | Bin 0 -> 14523 bytes lib/libjpeg-turbo/build_cross/djpeg.o | Bin 0 -> 16008 bytes lib/libjpeg-turbo/build_cross/example.o | Bin 0 -> 6041 bytes lib/libjpeg-turbo/build_cross/jaricom.o | Bin 0 -> 1004 bytes lib/libjpeg-turbo/build_cross/jcapimin.o | Bin 0 -> 2935 bytes lib/libjpeg-turbo/build_cross/jcapistd.o | Bin 0 -> 1752 bytes lib/libjpeg-turbo/build_cross/jcarith.o | Bin 0 -> 8180 bytes lib/libjpeg-turbo/build_cross/jccoefct.o | Bin 0 -> 3914 bytes lib/libjpeg-turbo/fuzz/CMakeLists.txt | 71 + lib/libjpeg-turbo/fuzz/build.sh | 44 + lib/libjpeg-turbo/fuzz/cjpeg.cc | 73 + lib/libjpeg-turbo/fuzz/compress.cc | 162 + lib/libjpeg-turbo/fuzz/compress12.cc | 161 + lib/libjpeg-turbo/fuzz/compress12_lossless.cc | 157 + lib/libjpeg-turbo/fuzz/compress16_lossless.cc | 157 + lib/libjpeg-turbo/fuzz/compress_lossless.cc | 156 + lib/libjpeg-turbo/fuzz/compress_yuv.cc | 161 + lib/libjpeg-turbo/fuzz/decompress.cc | 146 + lib/libjpeg-turbo/fuzz/decompress_libjpeg.cc | 291 ++ lib/libjpeg-turbo/fuzz/decompress_yuv.cc | 120 + lib/libjpeg-turbo/fuzz/jpeg.dict | 400 ++ lib/libjpeg-turbo/fuzz/transform.cc | 186 + lib/libjpeg-turbo/jconfig.h | 60 + lib/libjpeg-turbo/jconfigint.h | 76 + lib/libjpeg-turbo/jversion.h | 56 + lib/libjpeg-turbo/simd/CMakeLists.txt | 574 +++ lib/libjpeg-turbo/simd/jsimd.h | 1256 +++++ lib/libjpeg-turbo/simd/simdcoverage.c | 121 + .../simd/x86_64/jccolext-sse2.asm | 541 +++ .../simd/x86_64/jccolor-avx2.asm | 117 + .../simd/x86_64/jccolor-sse2.asm | 116 + lib/libjpeg-turbo/simd/x86_64/jcgray-avx2.asm | 109 + .../simd/x86_64/jcgryext-sse2.asm | 411 ++ .../simd/x86_64/jcphuff-sse2.asm | 626 +++ .../simd/x86_64/jdcolor-avx2.asm | 114 + .../simd/x86_64/jdcolor-sse2.asm | 113 + .../simd/x86_64/jdmerge-avx2.asm | 132 + .../simd/x86_64/jdmrgext-avx2.asm | 658 +++ .../simd/x86_64/jdmrgext-sse2.asm | 587 +++ .../simd/x86_64/jdsample-sse2.asm | 663 +++ .../simd/x86_64/jfdctflt-sse.asm | 360 ++ .../simd/x86_64/jfdctint-sse2.asm | 623 +++ .../simd/x86_64/jidctfst-sse2.asm | 508 ++ .../simd/x86_64/jidctint-avx2.asm | 426 ++ .../simd/x86_64/jidctint-sse2.asm | 876 ++++ .../simd/x86_64/jidctred-sse2.asm | 577 +++ .../simd/x86_64/jquantf-sse2.asm | 149 + .../simd/x86_64/jquanti-sse2.asm | 187 + lib/libjpeg-turbo/simd/x86_64/jsimd.c | 1108 +++++ lib/libjpeg-turbo/test/croptest.in | 95 + lib/libjpeg-turbo/test/tjbenchtest.in | 453 ++ lib/libjpeg-turbo/test/tjcomptest.in | 195 + lib/libjpeg-turbo/test/tjdecomptest.in | 224 + lib/libjpeg-turbo/test/tjtrantest.in | 172 + lib/libturbojpeg.a | Bin 0 -> 1096066 bytes lib/minhook/include/MinHook.h | 185 + lib/minhook/src/buffer.c | 312 ++ lib/minhook/src/buffer.h | 42 + lib/minhook/src/hde/hde32.c | 324 ++ lib/minhook/src/hde/hde32.h | 105 + lib/minhook/src/hde/hde64.c | 335 ++ lib/minhook/src/hde/hde64.h | 112 + lib/minhook/src/hde/pstdint.h | 39 + lib/minhook/src/hde/table32.h | 73 + lib/minhook/src/hde/table64.h | 74 + lib/minhook/src/hook.c | 939 ++++ lib/minhook/src/trampoline.c | 320 ++ lib/minhook/src/trampoline.h | 105 + payloads/agent_template.exe | Bin 0 -> 2368512 bytes payloads/stager_template.exe | Bin 0 -> 20480 bytes payloads/zerin.exe | Bin 0 -> 2364928 bytes payloads/zerin_template.exe | Bin 0 -> 2386944 bytes src/.DS_Store | Bin 0 -> 8196 bytes src/agents/mod.rs | 493 ++ src/api/admin.rs | 434 ++ src/api/auth.rs | 252 + src/api/crypter.rs | 200 + src/api/mod.rs | 8 + src/api/payments.rs | 367 ++ src/api/routes.rs | 1884 ++++++++ src/api/socks5.rs | 615 +++ src/api/vnc.rs | 1211 +++++ src/api/ws.rs | 217 + src/builder.rs | 1502 ++++++ src/commands/chat.c | 164 + src/commands/clipper.c | 426 ++ src/commands/creds.c | 227 + src/commands/creds_apps.c | 1122 +++++ src/commands/creds_chromium.c | 1046 +++++ src/commands/creds_firefox.c | 438 ++ src/commands/creds_json.h | 204 + src/commands/creds_vpn.c | 149 + src/commands/creds_wallets.c | 224 + src/commands/creds_wifi.c | 200 + src/commands/creds_windows.c | 94 + src/commands/ddos.c | 350 ++ src/commands/dxgi_capture.c | 822 ++++ src/commands/environment.c | 169 + src/commands/file_ops.c | 712 +++ src/commands/handler.c | 110 + src/commands/installed_apps.c | 165 + src/commands/microphone.c | 360 ++ src/commands/miner.c | 425 ++ src/commands/network.c | 216 + src/commands/persist.c | 269 ++ src/commands/persist_advanced.c | 974 ++++ src/commands/persist_install.c | 537 +++ src/commands/power.c | 106 + src/commands/powershell.c | 163 + src/commands/recon.c | 316 ++ src/commands/registry.c | 199 + src/commands/screenshot.c | 122 + src/commands/shell.c | 160 + src/commands/socks5.c | 740 +++ src/commands/specs.c | 259 + src/commands/troll.c | 658 +++ src/commands/uac.c | 125 + src/commands/vnc.c | 4160 +++++++++++++++++ src/commands/webcam.c | 710 +++ src/commands/windows.c | 108 + src/comms/http.c | 262 ++ src/comms/protocol.c | 487 ++ src/comms/transport.c | 10 + src/config.rs | 278 ++ src/core/base64.c | 35 + src/core/beacon.c | 345 ++ src/core/config.c | 192 + src/core/debug.c | 421 ++ src/core/main.c | 379 ++ src/crypter.rs | 513 ++ src/crypto/aead.c | 132 + src/crypto/aead.rs | 78 + src/crypto/chacha20.c | 90 + src/crypto/exchange.rs | 74 + src/crypto/hkdf.c | 78 + src/crypto/kdf.rs | 40 + src/crypto/keys.c | 66 + src/crypto/keys.rs | 69 + src/crypto/mod.rs | 9 + src/crypto/poly1305.c | 185 + src/crypto/random.c | 24 + src/crypto/sha256.c | 173 + src/crypto/x25519.c | 325 ++ src/db/mod.rs | 4 + src/db/queries.rs | 1295 +++++ src/db/schema.rs | 232 + src/evasion/anti_vm.c | 688 +++ src/evasion/etw.c | 34 + src/evasion/evasion.c | 57 + src/evasion/import_dilute.c | 42 + src/evasion/indirect_syscalls.c | 309 ++ src/evasion/obf_strings_gen.c | 1018 ++++ src/evasion/poly_junk.c | 396 ++ src/evasion/sleep_obf.c | 228 + src/evasion/strings.c | 70 + src/evasion/syscalls.c | 115 + src/events/mod.rs | 129 + src/license.rs | 161 + src/listeners/https.rs | 652 +++ src/listeners/mod.rs | 9 + src/main.rs | 490 ++ src/payments.rs | 263 ++ src/polymorph.rs | 1412 ++++++ src/protocol.rs | 199 + src/rootkit/amsi.c | 59 + src/rootkit/commands.c | 72 + src/rootkit/inject.c | 1059 +++++ src/rootkit/rk_dll_bytes.h | 2676 +++++++++++ src/rootkit/rootkit.c | 113 + src/rootkit/unhook.c | 206 + src/rootkit_dll/config.h | 72 + src/rootkit_dll/dllmain.c | 166 + src/rootkit_dll/hooks.c | 1414 ++++++ src/rootkit_dll/hooks.h | 509 ++ src/rootkit_dll/peb.c | 111 + src/rootkit_dll/reflective.c | 305 ++ src/socks5.rs | 208 + src/stager/pe_loader.c | 140 + src/stager/pe_loader.h | 10 + src/stager/stager.c | 111 + src/state.rs | 43 + src/tasks/mod.rs | 82 + src/vnc/mod.rs | 211 + src/wire.rs | 401 ++ target/.DS_Store | Bin 0 -> 6148 bytes target/.future-incompat-report.json | 1 + target/.rustc_info.json | 1 + target/CACHEDIR.TAG | 3 + target/debug/.cargo-lock | 0 target/flycheck1/stderr | 38 + target/flycheck1/stdout | 0 target/release/.cargo-lock | 0 target/release/zerin-server | Bin 0 -> 15652376 bytes target/release/zerin-server.d | 1 + tools/build_stager.py | 144 + tools/donor_cert.bin | Bin 0 -> 16952 bytes tools/generate_cmd_hashes.py | 196 + tools/generate_poly_stub.py | 2029 ++++++++ tools/generate_polymorphic.py | 756 +++ tools/generate_strings.py | 454 ++ tools/pe_obfuscate.py | 627 +++ tools/rk_dll_encrypt.c | 218 + tools/test_hashes.c | 127 + tools/test_stub_run.c | 51 + tools/zerin_crypter.c | 592 +++ tools/zerin_stub.ico | Bin 0 -> 4286 bytes tools/zerin_stub.manifest | 15 + tools/zerin_stub.rc | 36 + tools/zerin_stub_template.c | 1188 +++++ 282 files changed, 90944 insertions(+) create mode 100644 .DS_Store create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100755 bin/stager.exe create mode 100755 bin/zerin.exe create mode 100755 bin/zerin_crypter create mode 100755 crypter_stubs/api_resolve.c create mode 100755 crypter_stubs/api_resolve.h create mode 100755 crypter_stubs/decrypt_layer.c create mode 100755 crypter_stubs/decrypt_layer.h create mode 100755 crypter_stubs/evasion.h create mode 100755 crypter_stubs/evasion_amsi.c create mode 100755 crypter_stubs/evasion_anti_debug.c create mode 100755 crypter_stubs/evasion_anti_sandbox.c create mode 100755 crypter_stubs/evasion_etw.c create mode 100755 crypter_stubs/evasion_sleep.c create mode 100755 crypter_stubs/evasion_unhook.c create mode 100755 crypter_stubs/reflective_stub.c create mode 100755 crypter_stubs/runpe_stub.c create mode 100755 crypter_stubs/shellcode_stub.c create mode 100755 crypter_stubs/stub_main.c create mode 100755 crypter_stubs/zerin_crypter create mode 100755 dist/assets/index-B2hrJO5G.js create mode 100755 dist/assets/index-B6xpyg2I.css create mode 100755 dist/assets/index-B9OiHrjj.js create mode 100755 dist/assets/index-BKpgognX.css create mode 100755 dist/assets/index-BRc-cqBN.js create mode 100755 dist/assets/index-BgEhResd.js create mode 100755 dist/assets/index-BpSkMVEN.css create mode 100755 dist/assets/index-C1IhTd_8.css create mode 100755 dist/assets/index-CIWNzjym.css create mode 100755 dist/assets/index-CU36QM0Y.js create mode 100755 dist/assets/index-CbtHPv7j.css create mode 100755 dist/assets/index-Dvjgs59i.js create mode 100755 dist/assets/index-GSEJCIsq.js create mode 100755 dist/assets/index-MJ7nF-V0.js create mode 100755 dist/assets/index-RE_RleHj.js create mode 100755 dist/assets/index-fDcwXJQ4.js create mode 100755 dist/assets/index-iSOoMWmU.css create mode 100755 dist/assets/vnc-decode.worker-EPE-JCx4.js create mode 100755 dist/index.html create mode 100755 dist/zerin-logo.png create mode 100755 include/cmd_hashes_gen.h create mode 100755 include/commands.h create mode 100755 include/config.h create mode 100755 include/crypto.h create mode 100755 include/dxgi_capture.h create mode 100755 include/elevator_blob.h create mode 100755 include/evasion.h create mode 100755 include/indirect_syscalls.h create mode 100755 include/obf_strings.def create mode 100755 include/obf_strings_gen.h create mode 100755 include/platform.h create mode 100755 include/poly_config.h create mode 100755 include/poly_hash.h create mode 100755 include/protocol.h create mode 100755 include/rootkit.h create mode 100755 include/sleep_obf.h create mode 100755 include/stb_image_write.h create mode 100755 include/strings.h create mode 100755 include/syscalls.h create mode 100755 include/transport.h create mode 100755 include/turbojpeg.h create mode 100755 include/zerin.h create mode 100644 lib/.DS_Store create mode 100755 lib/libjpeg-turbo/.gitattributes create mode 100755 lib/libjpeg-turbo/BUILDING.md create mode 100755 lib/libjpeg-turbo/CMakeLists.txt create mode 100755 lib/libjpeg-turbo/ChangeLog.md create mode 100755 lib/libjpeg-turbo/LICENSE.md create mode 100755 lib/libjpeg-turbo/README.ijg create mode 100755 lib/libjpeg-turbo/README.md create mode 100755 lib/libjpeg-turbo/build_cross/cdjpeg.o create mode 100755 lib/libjpeg-turbo/build_cross/cjpeg.o create mode 100755 lib/libjpeg-turbo/build_cross/djpeg.o create mode 100755 lib/libjpeg-turbo/build_cross/example.o create mode 100755 lib/libjpeg-turbo/build_cross/jaricom.o create mode 100755 lib/libjpeg-turbo/build_cross/jcapimin.o create mode 100755 lib/libjpeg-turbo/build_cross/jcapistd.o create mode 100755 lib/libjpeg-turbo/build_cross/jcarith.o create mode 100755 lib/libjpeg-turbo/build_cross/jccoefct.o create mode 100755 lib/libjpeg-turbo/fuzz/CMakeLists.txt create mode 100755 lib/libjpeg-turbo/fuzz/build.sh create mode 100755 lib/libjpeg-turbo/fuzz/cjpeg.cc create mode 100755 lib/libjpeg-turbo/fuzz/compress.cc create mode 100755 lib/libjpeg-turbo/fuzz/compress12.cc create mode 100755 lib/libjpeg-turbo/fuzz/compress12_lossless.cc create mode 100755 lib/libjpeg-turbo/fuzz/compress16_lossless.cc create mode 100755 lib/libjpeg-turbo/fuzz/compress_lossless.cc create mode 100755 lib/libjpeg-turbo/fuzz/compress_yuv.cc create mode 100755 lib/libjpeg-turbo/fuzz/decompress.cc create mode 100755 lib/libjpeg-turbo/fuzz/decompress_libjpeg.cc create mode 100755 lib/libjpeg-turbo/fuzz/decompress_yuv.cc create mode 100755 lib/libjpeg-turbo/fuzz/jpeg.dict create mode 100755 lib/libjpeg-turbo/fuzz/transform.cc create mode 100755 lib/libjpeg-turbo/jconfig.h create mode 100755 lib/libjpeg-turbo/jconfigint.h create mode 100755 lib/libjpeg-turbo/jversion.h create mode 100755 lib/libjpeg-turbo/simd/CMakeLists.txt create mode 100755 lib/libjpeg-turbo/simd/jsimd.h create mode 100755 lib/libjpeg-turbo/simd/simdcoverage.c create mode 100755 lib/libjpeg-turbo/simd/x86_64/jccolext-sse2.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jccolor-avx2.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jccolor-sse2.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jcgray-avx2.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jcgryext-sse2.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jcphuff-sse2.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jdcolor-avx2.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jdcolor-sse2.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jdmerge-avx2.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jdmrgext-avx2.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jdmrgext-sse2.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jdsample-sse2.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jfdctflt-sse.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jfdctint-sse2.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jidctfst-sse2.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jidctint-avx2.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jidctint-sse2.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jidctred-sse2.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jquantf-sse2.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jquanti-sse2.asm create mode 100755 lib/libjpeg-turbo/simd/x86_64/jsimd.c create mode 100755 lib/libjpeg-turbo/test/croptest.in create mode 100755 lib/libjpeg-turbo/test/tjbenchtest.in create mode 100755 lib/libjpeg-turbo/test/tjcomptest.in create mode 100755 lib/libjpeg-turbo/test/tjdecomptest.in create mode 100755 lib/libjpeg-turbo/test/tjtrantest.in create mode 100755 lib/libturbojpeg.a create mode 100755 lib/minhook/include/MinHook.h create mode 100755 lib/minhook/src/buffer.c create mode 100755 lib/minhook/src/buffer.h create mode 100755 lib/minhook/src/hde/hde32.c create mode 100755 lib/minhook/src/hde/hde32.h create mode 100755 lib/minhook/src/hde/hde64.c create mode 100755 lib/minhook/src/hde/hde64.h create mode 100755 lib/minhook/src/hde/pstdint.h create mode 100755 lib/minhook/src/hde/table32.h create mode 100755 lib/minhook/src/hde/table64.h create mode 100755 lib/minhook/src/hook.c create mode 100755 lib/minhook/src/trampoline.c create mode 100755 lib/minhook/src/trampoline.h create mode 100755 payloads/agent_template.exe create mode 100755 payloads/stager_template.exe create mode 100755 payloads/zerin.exe create mode 100755 payloads/zerin_template.exe create mode 100644 src/.DS_Store create mode 100755 src/agents/mod.rs create mode 100755 src/api/admin.rs create mode 100755 src/api/auth.rs create mode 100755 src/api/crypter.rs create mode 100755 src/api/mod.rs create mode 100755 src/api/payments.rs create mode 100755 src/api/routes.rs create mode 100755 src/api/socks5.rs create mode 100755 src/api/vnc.rs create mode 100755 src/api/ws.rs create mode 100755 src/builder.rs create mode 100755 src/commands/chat.c create mode 100755 src/commands/clipper.c create mode 100755 src/commands/creds.c create mode 100755 src/commands/creds_apps.c create mode 100755 src/commands/creds_chromium.c create mode 100755 src/commands/creds_firefox.c create mode 100755 src/commands/creds_json.h create mode 100755 src/commands/creds_vpn.c create mode 100755 src/commands/creds_wallets.c create mode 100755 src/commands/creds_wifi.c create mode 100755 src/commands/creds_windows.c create mode 100755 src/commands/ddos.c create mode 100755 src/commands/dxgi_capture.c create mode 100755 src/commands/environment.c create mode 100755 src/commands/file_ops.c create mode 100755 src/commands/handler.c create mode 100755 src/commands/installed_apps.c create mode 100755 src/commands/microphone.c create mode 100755 src/commands/miner.c create mode 100755 src/commands/network.c create mode 100755 src/commands/persist.c create mode 100755 src/commands/persist_advanced.c create mode 100755 src/commands/persist_install.c create mode 100755 src/commands/power.c create mode 100755 src/commands/powershell.c create mode 100755 src/commands/recon.c create mode 100755 src/commands/registry.c create mode 100755 src/commands/screenshot.c create mode 100755 src/commands/shell.c create mode 100755 src/commands/socks5.c create mode 100755 src/commands/specs.c create mode 100755 src/commands/troll.c create mode 100755 src/commands/uac.c create mode 100755 src/commands/vnc.c create mode 100755 src/commands/webcam.c create mode 100755 src/commands/windows.c create mode 100755 src/comms/http.c create mode 100755 src/comms/protocol.c create mode 100755 src/comms/transport.c create mode 100755 src/config.rs create mode 100755 src/core/base64.c create mode 100755 src/core/beacon.c create mode 100755 src/core/config.c create mode 100755 src/core/debug.c create mode 100755 src/core/main.c create mode 100755 src/crypter.rs create mode 100755 src/crypto/aead.c create mode 100755 src/crypto/aead.rs create mode 100755 src/crypto/chacha20.c create mode 100755 src/crypto/exchange.rs create mode 100755 src/crypto/hkdf.c create mode 100755 src/crypto/kdf.rs create mode 100755 src/crypto/keys.c create mode 100755 src/crypto/keys.rs create mode 100755 src/crypto/mod.rs create mode 100755 src/crypto/poly1305.c create mode 100755 src/crypto/random.c create mode 100755 src/crypto/sha256.c create mode 100755 src/crypto/x25519.c create mode 100755 src/db/mod.rs create mode 100755 src/db/queries.rs create mode 100755 src/db/schema.rs create mode 100755 src/evasion/anti_vm.c create mode 100755 src/evasion/etw.c create mode 100755 src/evasion/evasion.c create mode 100755 src/evasion/import_dilute.c create mode 100755 src/evasion/indirect_syscalls.c create mode 100755 src/evasion/obf_strings_gen.c create mode 100755 src/evasion/poly_junk.c create mode 100755 src/evasion/sleep_obf.c create mode 100755 src/evasion/strings.c create mode 100755 src/evasion/syscalls.c create mode 100755 src/events/mod.rs create mode 100755 src/license.rs create mode 100755 src/listeners/https.rs create mode 100755 src/listeners/mod.rs create mode 100755 src/main.rs create mode 100755 src/payments.rs create mode 100755 src/polymorph.rs create mode 100755 src/protocol.rs create mode 100755 src/rootkit/amsi.c create mode 100755 src/rootkit/commands.c create mode 100755 src/rootkit/inject.c create mode 100755 src/rootkit/rk_dll_bytes.h create mode 100755 src/rootkit/rootkit.c create mode 100755 src/rootkit/unhook.c create mode 100755 src/rootkit_dll/config.h create mode 100755 src/rootkit_dll/dllmain.c create mode 100755 src/rootkit_dll/hooks.c create mode 100755 src/rootkit_dll/hooks.h create mode 100755 src/rootkit_dll/peb.c create mode 100755 src/rootkit_dll/reflective.c create mode 100755 src/socks5.rs create mode 100755 src/stager/pe_loader.c create mode 100755 src/stager/pe_loader.h create mode 100755 src/stager/stager.c create mode 100755 src/state.rs create mode 100755 src/tasks/mod.rs create mode 100755 src/vnc/mod.rs create mode 100755 src/wire.rs create mode 100644 target/.DS_Store create mode 100755 target/.future-incompat-report.json create mode 100755 target/.rustc_info.json create mode 100755 target/CACHEDIR.TAG create mode 100644 target/debug/.cargo-lock create mode 100644 target/flycheck1/stderr create mode 100644 target/flycheck1/stdout create mode 100755 target/release/.cargo-lock create mode 100755 target/release/zerin-server create mode 100755 target/release/zerin-server.d create mode 100755 tools/build_stager.py create mode 100755 tools/donor_cert.bin create mode 100755 tools/generate_cmd_hashes.py create mode 100755 tools/generate_poly_stub.py create mode 100755 tools/generate_polymorphic.py create mode 100755 tools/generate_strings.py create mode 100755 tools/pe_obfuscate.py create mode 100755 tools/rk_dll_encrypt.c create mode 100755 tools/test_hashes.c create mode 100755 tools/test_stub_run.c create mode 100755 tools/zerin_crypter.c create mode 100755 tools/zerin_stub.ico create mode 100755 tools/zerin_stub.manifest create mode 100755 tools/zerin_stub.rc create mode 100755 tools/zerin_stub_template.c diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f618d12ae98ea1b2d74ddf42a02965f3245662c3 GIT binary patch literal 8196 zcmeHMJ#Q015S@)3#}YzHM~X;3B#@w>NJ)1@$1jLdlh_x9NN3JUNI`d^rGiNL4|H@C zNgqmn0zV*9x+qN~-psBqH}_#F4FWM6-M-V#%+B-k?AhZGk=r~@H;C4VXo!n(^#P`q z!FIkHV=1gW0XoFf#?~aC&Sdpz!`l{20aL&fFa=BjQ{Zn<0H4`Bh8>^#-fFWcU<&+~ z3h?tG!o?T|EIi7i1Cz7>z&@5`;C_{FfKk9WVBrxK4Ch0EKGcO4!})NmN5L-+Sa|f| zk_obUV%QR1tah8v5Ww8+&Os-F}MKRO-2hS~#SM(qVn@S#%Ifjl=V=a~*CrWK_3~NWu5%ZoM?d83sy*~;Z}(9=uB0B9!6V0CR(mJ<$thS=teQiqt@2PB%%3n7 z50$_FD|~$*`~2sMuwe?^UxA(vS>yiyb@%W8_utqeOaW8ipHaZ|ldWVEbVG05AkMvZ uglh*E5B4iON(d%t$AQw01IvFH;y!{a$HV~(k66L59|A-Mn@oW}s=#j>?jJq? literal 0 HcmV?d00001 diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..3842afc --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,3284 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.4", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" + +[[package]] +name = "argon2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3610892ee6e0cbce8ae2700349fcf8f98adb0dbfbee85aec3c9179d29cc072" +dependencies = [ + "base64ct", + "blake2", + "cpufeatures", + "password-hash 0.5.0", +] + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "atoi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +dependencies = [ + "num-traits", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "axum" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +dependencies = [ + "async-trait", + "axum-core", + "base64 0.22.1", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sha1", + "sync_wrapper", + "tokio", + "tokio-tungstenite 0.24.0", + "tower 0.5.3", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" + +[[package]] +name = "bitflags" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" +dependencies = [ + "serde_core", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bumpalo" +version = "3.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.13+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "cc" +version = "1.2.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43c5703da9466b66a946814e1adf53ea2c90f10063b86290cc9eb67ce3478a20" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "chacha20" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "chacha20poly1305" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +dependencies = [ + "aead", + "chacha20", + "cipher", + "poly1305", + "zeroize", +] + +[[package]] +name = "chrono" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", + "zeroize", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "rand_core", + "typenum", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "fiat-crypto", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "data-encoding" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +dependencies = [ + "serde", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "etcetera" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" +dependencies = [ + "cfg-if", + "home", + "windows-sys 0.48.0", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "fastrand" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "flate2" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "flume" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095" +dependencies = [ + "futures-core", + "futures-sink", + "spin", +] + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-executor" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-intrusive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" +dependencies = [ + "futures-core", + "lock_api", + "parking_lot", +] + +[[package]] +name = "futures-io" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + +[[package]] +name = "futures-sink" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi 5.3.0", + "wasip2", +] + +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", + "wasip2", + "wasip3", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" + +[[package]] +name = "hashlink" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" +dependencies = [ + "hashbrown 0.14.5", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "home" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "http" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "http-range-header" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "bytes", + "http", + "http-body", + "hyper", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" +dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" + +[[package]] +name = "icu_properties" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" + +[[package]] +name = "icu_provider" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +dependencies = [ + "equivalent", + "hashbrown 0.17.0", + "serde", + "serde_core", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] + +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + +[[package]] +name = "libc" +version = "0.2.185" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ff2c0fe9bc6cb6b14a0592c2ff4fa9ceb83eea9db979b0487cd054946a2b8f" + +[[package]] +name = "libm" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + +[[package]] +name = "libredox" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" +dependencies = [ + "bitflags", + "libc", + "plain", + "redox_syscall 0.7.4", +] + +[[package]] +name = "libsqlite3-sys" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + +[[package]] +name = "litemap" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "matchers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest", +] + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "num-bigint-dig" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" +dependencies = [ + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand", + "smallvec", + "zeroize", +] + +[[package]] +name = "num-conv" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.18", + "smallvec", + "windows-link", +] + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core", + "subtle", +] + +[[package]] +name = "password-hash" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" +dependencies = [ + "base64ct", + "rand_core", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest", + "hmac", + "password-hash 0.4.2", + "sha2", +] + +[[package]] +name = "pem" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" +dependencies = [ + "base64 0.22.1", + "serde_core", +] + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der", + "pkcs8", + "spki", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + +[[package]] +name = "poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +dependencies = [ + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "potential_utf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.117", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", +] + +[[package]] +name = "rcgen" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48406db8ac1f3cbc7dcdb56ec355343817958a356ff430259bb07baf7607e1e1" +dependencies = [ + "pem", + "ring", + "time", + "yasna", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_syscall" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f450ad9c3b1da563fb6948a8e0fb0fb9269711c9c73d9ea1de5058c79c8d643a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rsa" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" +dependencies = [ + "const-oid", + "digest", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core", + "signature", + "spki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +dependencies = [ + "log", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" +dependencies = [ + "itoa", + "serde", + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core", +] + +[[package]] +name = "simd-adler32" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "sqlformat" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bba3a93db0cc4f7bdece8bb09e77e2e785c20bfebf79eb8340ed80708048790" +dependencies = [ + "nom", + "unicode_categories", +] + +[[package]] +name = "sqlx" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9a2ccff1a000a5a59cd33da541d9f2fdcd9e6e8229cc200565942bff36d0aaa" +dependencies = [ + "sqlx-core", + "sqlx-macros", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", +] + +[[package]] +name = "sqlx-core" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24ba59a9342a3d9bab6c56c118be528b27c9b60e490080e9711a04dccac83ef6" +dependencies = [ + "ahash", + "atoi", + "byteorder", + "bytes", + "chrono", + "crc", + "crossbeam-queue", + "either", + "event-listener", + "futures-channel", + "futures-core", + "futures-intrusive", + "futures-io", + "futures-util", + "hashlink", + "hex", + "indexmap", + "log", + "memchr", + "once_cell", + "paste", + "percent-encoding", + "serde", + "serde_json", + "sha2", + "smallvec", + "sqlformat", + "thiserror", + "tokio", + "tokio-stream", + "tracing", + "url", +] + +[[package]] +name = "sqlx-macros" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea40e2345eb2faa9e1e5e326db8c34711317d2b5e08d0d5741619048a803127" +dependencies = [ + "proc-macro2", + "quote", + "sqlx-core", + "sqlx-macros-core", + "syn 1.0.109", +] + +[[package]] +name = "sqlx-macros-core" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5833ef53aaa16d860e92123292f1f6a3d53c34ba8b1969f152ef1a7bb803f3c8" +dependencies = [ + "dotenvy", + "either", + "heck 0.4.1", + "hex", + "once_cell", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2", + "sqlx-core", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", + "syn 1.0.109", + "tempfile", + "tokio", + "url", +] + +[[package]] +name = "sqlx-mysql" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ed31390216d20e538e447a7a9b959e06ed9fc51c37b514b46eb758016ecd418" +dependencies = [ + "atoi", + "base64 0.21.7", + "bitflags", + "byteorder", + "bytes", + "chrono", + "crc", + "digest", + "dotenvy", + "either", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "generic-array", + "hex", + "hkdf", + "hmac", + "itoa", + "log", + "md-5", + "memchr", + "once_cell", + "percent-encoding", + "rand", + "rsa", + "serde", + "sha1", + "sha2", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-postgres" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c824eb80b894f926f89a0b9da0c7f435d27cdd35b8c655b114e58223918577e" +dependencies = [ + "atoi", + "base64 0.21.7", + "bitflags", + "byteorder", + "chrono", + "crc", + "dotenvy", + "etcetera", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "hex", + "hkdf", + "hmac", + "home", + "itoa", + "log", + "md-5", + "memchr", + "once_cell", + "rand", + "serde", + "serde_json", + "sha2", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "tracing", + "whoami", +] + +[[package]] +name = "sqlx-sqlite" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b244ef0a8414da0bed4bb1910426e890b19e5e9bccc27ada6b797d05c55ae0aa" +dependencies = [ + "atoi", + "chrono", + "flume", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "libsqlite3-sys", + "log", + "percent-encoding", + "serde", + "sqlx-core", + "tracing", + "url", + "urlencoding", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "stringprep" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" +dependencies = [ + "unicode-bidi", + "unicode-normalization", + "unicode-properties", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom 0.4.2", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "time" +version = "0.3.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde_core", + "time-core", +] + +[[package]] +name = "time-core" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" + +[[package]] +name = "tinystr" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a91135f59b1cbf38c91e73cf3386fca9bb77915c45ce2771460c9d92f0f3d776" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "tokio-rustls" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" +dependencies = [ + "rustls", + "rustls-pki-types", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite 0.21.0", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite 0.24.0", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" +dependencies = [ + "bitflags", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "http-range-header", + "httpdate", + "mime", + "mime_guess", + "percent-encoding", + "pin-project-lite", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex-automata", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "tungstenite" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand", + "sha1", + "thiserror", + "url", + "utf-8", +] + +[[package]] +name = "tungstenite" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand", + "sha1", + "thiserror", + "utf-8", +] + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + +[[package]] +name = "unicode-bidi" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-normalization" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-properties" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" + +[[package]] +name = "unicode-segmentation" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "unicode_categories" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9" +dependencies = [ + "getrandom 0.4.2", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.2+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.117", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags", + "hashbrown 0.15.5", + "indexmap", + "semver", +] + +[[package]] +name = "webpki" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "whoami" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" +dependencies = [ + "libredox", + "wasite", +] + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck 0.5.0", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck 0.5.0", + "indexmap", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] + +[[package]] +name = "writeable" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" + +[[package]] +name = "x25519-dalek" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +dependencies = [ + "curve25519-dalek", + "rand_core", + "serde", + "zeroize", +] + +[[package]] +name = "yasna" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" +dependencies = [ + "time", +] + +[[package]] +name = "yoke" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zerin" +version = "1.0.0" +dependencies = [ + "anyhow", + "argon2", + "axum", + "base64 0.21.7", + "bytes", + "chacha20poly1305", + "chrono", + "dashmap", + "flate2", + "hex", + "hkdf", + "hmac", + "hyper", + "hyper-util", + "rand", + "rcgen", + "rustls", + "serde", + "serde_json", + "sha2", + "sqlx", + "tempfile", + "thiserror", + "tokio", + "tokio-rustls", + "tokio-tungstenite 0.21.0", + "tower 0.4.13", + "tower-http", + "tracing", + "tracing-subscriber", + "uuid", + "walkdir", + "webpki", + "x25519-dalek", + "zip", +] + +[[package]] +name = "zerocopy" +version = "0.8.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zerofrom" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zerotrie" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes", + "byteorder", + "bzip2", + "constant_time_eq", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac", + "pbkdf2", + "sha1", + "time", + "zstd", +] + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..eb19c35 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,45 @@ +[package] +name = "zerin" +version = "1.0.0" +edition = "2021" + +[[bin]] +name = "zerin" +path = "src/main.rs" + +[dependencies] +axum = { version = "0.7", features = ["ws"] } +tokio = { version = "1", features = ["full"] } +tokio-rustls = "0.25" +tokio-tungstenite = "0.21" +sqlx = { version = "0.7", features = ["runtime-tokio", "postgres", "chrono"] } +serde = { version = "1", features = ["derive"] } +serde_json = "1" +tracing = "0.1" +tracing-subscriber = { version = "0.3", features = ["env-filter"] } +tower = "0.4" +tower-http = { version = "0.5", features = ["cors", "fs"] } +hyper = "1" +hyper-util = { version = "0.1", features = ["tokio"] } +rustls = "0.22" +rcgen = "0.12" +webpki = "0.22" +rand = "0.8" +sha2 = "0.10" +hkdf = "0.12" +hmac = "0.12" +x25519-dalek = "2" +chacha20poly1305 = "0.10" +base64 = "0.21" +chrono = { version = "0.4", features = ["serde"] } +dashmap = "5" +bytes = "1" +anyhow = "1" +thiserror = "1" +hex = "0.4" +flate2 = "1" +zip = "0.6" +walkdir = "2" +tempfile = "3" +uuid = { version = "1", features = ["v4"] } +argon2 = "0.5" diff --git a/bin/stager.exe b/bin/stager.exe new file mode 100755 index 0000000000000000000000000000000000000000..fe673af0d1aaf98335509eb18213a99d42c91df2 GIT binary patch literal 20480 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