[INFO] fetching crate nooshdaroo 0.2.2...
[INFO] checking nooshdaroo-0.2.2 against eca445e5ae4a6679cc27d3a09106ce245e13a5a6 for pr-162478
[INFO] extracting crate nooshdaroo 0.2.2 into /workspace/builds/worker-7-tc1/source
[INFO] started tweaking crates.io crate nooshdaroo 0.2.2
[INFO] finished tweaking crates.io crate nooshdaroo 0.2.2
[INFO] tweaked toml for crates.io crate nooshdaroo 0.2.2 written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate nooshdaroo 0.2.2 on toolchain eca445e5ae4a6679cc27d3a09106ce245e13a5a6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate nooshdaroo 0.2.2 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: explicit `package.readme` can be inferred
[INFO] [stderr]    --> Cargo.toml:141:1
[INFO] [stderr]     |
[INFO] [stderr] 141 | readme = "README.md"
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::manual_readme` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.readme`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:137:12
[INFO] [stderr]     |
[INFO] [stderr] 137 | homepage = "https://github.com/0xinf0/nooshdaroo"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 142 | repository = "https://github.com/0xinf0/nooshdaroo"
[INFO] [stderr]     |              --------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `nooshdaroo` (manifest) generated 2 warnings
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rtp v0.11.0
[INFO] [stderr]   Downloaded webrtc-util v0.9.0
[INFO] [stderr]   Downloaded webrtc-srtp v0.13.0
[INFO] [stderr]   Downloaded webrtc-mdns v0.7.0
[INFO] [stderr]   Downloaded webrtc-data v0.9.0
[INFO] [stderr]   Downloaded sdp v0.6.2
[INFO] [stderr]   Downloaded rtcp v0.11.0
[INFO] [stderr]   Downloaded stun v0.6.0
[INFO] [stderr]   Downloaded kcp v0.6.0
[INFO] [stderr]   Downloaded webrtc-media v0.8.0
[INFO] [stderr]   Downloaded turn v0.8.0
[INFO] [stderr]   Downloaded interceptor v0.12.0
[INFO] [stderr]   Downloaded webrtc v0.11.0
[INFO] [stderr]   Downloaded webrtc-ice v0.11.0
[INFO] [stderr]   Downloaded webrtc-sctp v0.10.0
[INFO] [stderr]   Downloaded webrtc-dtls v0.10.0
[INFO] [stderr]   Downloaded ccm v0.5.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] b3359e717e75cd686df4d402fccd428406962bfe8ba5b6d498cb7c7689ed40d2
[INFO] running `Command { std: "docker" "start" "b3359e717e75cd686df4d402fccd428406962bfe8ba5b6d498cb7c7689ed40d2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b3359e717e75cd686df4d402fccd428406962bfe8ba5b6d498cb7c7689ed40d2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "b3359e717e75cd686df4d402fccd428406962bfe8ba5b6d498cb7c7689ed40d2" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b3359e717e75cd686df4d402fccd428406962bfe8ba5b6d498cb7c7689ed40d2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "b3359e717e75cd686df4d402fccd428406962bfe8ba5b6d498cb7c7689ed40d2" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: explicit `package.readme` can be inferred
[INFO] [stderr]    --> Cargo.toml:141:1
[INFO] [stderr]     |
[INFO] [stderr] 141 | readme = "README.md"
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::manual_readme` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.readme`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]    --> Cargo.toml:137:12
[INFO] [stderr]     |
[INFO] [stderr] 137 | homepage = "https://github.com/0xinf0/nooshdaroo"
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 142 | repository = "https://github.com/0xinf0/nooshdaroo"
[INFO] [stderr]     |              --------------------------------------
[INFO] [stderr]     |
[INFO] [stderr]     = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `nooshdaroo` (manifest) generated 2 warnings
[INFO] [stderr]    Compiling libc v0.2.177
[INFO] [stderr]    Compiling quote v1.0.42
[INFO] [stderr]    Compiling find-msvc-tools v0.1.5
[INFO] [stderr]    Compiling portable-atomic v1.11.1
[INFO] [stderr]     Checking num-traits v0.2.19
[INFO] [stderr]     Checking base64ct v1.8.0
[INFO] [stderr]    Compiling icu_properties_data v2.1.1
[INFO] [stderr]    Compiling time-core v0.1.6
[INFO] [stderr]    Compiling time-macros v0.2.24
[INFO] [stderr]    Compiling syn v2.0.110
[INFO] [stderr]    Compiling cc v1.2.46
[INFO] [stderr]     Checking pem-rfc7468 v0.7.0
[INFO] [stderr]     Checking rusticata-macros v4.1.0
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]    Compiling oid-registry v0.7.1
[INFO] [stderr]     Checking serde_json v1.0.145
[INFO] [stderr]     Checking tracing-core v0.1.34
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]    Compiling substring v1.4.5
[INFO] [stderr]     Checking time v0.3.44
[INFO] [stderr]     Checking waitgroup v0.1.2
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]    Compiling quinn-udp v0.5.14
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]     Checking clap_lex v0.7.6
[INFO] [stderr]    Compiling iana-time-zone v0.1.64
[INFO] [stderr]     Checking clap_builder v4.5.51
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking socket2 v0.6.1
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking mio v1.1.0
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking nix v0.26.4
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking ff v0.13.1
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking group v0.13.0
[INFO] [stderr]     Checking yasna v0.5.2
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking uuid v1.18.1
[INFO] [stderr]     Checking indexmap v2.12.0
[INFO] [stderr]    Compiling quinn v0.11.9
[INFO] [stderr]    Compiling snow v0.9.6
[INFO] [stderr]     Checking lru-slab v0.1.2
[INFO] [stderr]    Compiling nooshdaroo v0.2.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking env_filter v0.1.4
[INFO] [stderr]     Checking jiff v0.2.16
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]     Checking is-terminal v0.4.17
[INFO] [stderr]    Compiling synstructure v0.12.6
[INFO] [stderr]    Compiling rustls v0.23.35
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling asn1-rs-impl v0.1.0
[INFO] [stderr]    Compiling asn1-rs-derive v0.4.0
[INFO] [stderr]    Compiling zeroize_derive v1.4.2
[INFO] [stderr]    Compiling zerocopy-derive v0.8.27
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]     Checking generic-array v0.14.7
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]     Checking tokio v1.48.0
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking zerocopy v0.8.27
[INFO] [stderr]     Checking block-padding v0.3.3
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking universal-hash v0.5.1
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking der v0.7.10
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking rustls-pki-types v1.13.0
[INFO] [stderr]     Checking aead v0.5.2
[INFO] [stderr]     Checking ctr v0.9.2
[INFO] [stderr]     Checking polyval v0.6.2
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking hkdf v0.12.4
[INFO] [stderr]     Checking crypto-bigint v0.5.5
[INFO] [stderr]    Compiling asn1-rs-impl v0.2.0
[INFO] [stderr]    Compiling asn1-rs-derive v0.5.1
[INFO] [stderr]     Checking ghash v0.5.1
[INFO] [stderr]     Checking rustls-webpki v0.103.8
[INFO] [stderr]     Checking asn1-rs v0.6.2
[INFO] [stderr]     Checking spki v0.7.3
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking pkcs8 v0.10.2
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking sec1 v0.7.3
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking aes-gcm v0.10.3
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking elliptic-curve v0.13.8
[INFO] [stderr]     Checking icu_properties v2.1.1
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking rfc6979 v0.4.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking signature v2.2.0
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]     Checking ecdsa v0.16.9
[INFO] [stderr]     Checking primeorder v0.13.6
[INFO] [stderr]     Checking der-parser v9.0.0
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking md-5 v0.10.6
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking x509-parser v0.16.0
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking rustls-native-certs v0.8.2
[INFO] [stderr]     Checking asn1-rs v0.5.2
[INFO] [stderr]     Checking webrtc-util v0.9.0
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking tokio-util v0.7.17
[INFO] [stderr]     Checking x25519-dalek v2.0.1
[INFO] [stderr]     Checking rcgen v0.13.2
[INFO] [stderr]     Checking thiserror v2.0.17
[INFO] [stderr]     Checking fastbloom v0.14.0
[INFO] [stderr]     Checking p384 v0.13.1
[INFO] [stderr]     Checking p256 v0.13.2
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking ccm v0.5.0
[INFO] [stderr]     Checking rustls-platform-verifier v0.6.2
[INFO] [stderr]     Checking cbc v0.1.2
[INFO] [stderr]     Checking chacha20 v0.9.1
[INFO] [stderr]     Checking poly1305 v0.8.0
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking der-parser v8.2.0
[INFO] [stderr]     Checking quinn-proto v0.11.13
[INFO] [stderr]     Checking sdp v0.6.2
[INFO] [stderr]     Checking chacha20poly1305 v0.10.1
[INFO] [stderr]     Checking smol_str v0.2.2
[INFO] [stderr]     Checking blake2 v0.10.6
[INFO] [stderr]     Checking kcp v0.6.0
[INFO] [stderr]     Checking rtp v0.11.0
[INFO] [stderr]     Checking rtcp v0.11.0
[INFO] [stderr]     Checking stun v0.6.0
[INFO] [stderr]     Checking webrtc-sctp v0.10.0
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking webrtc-mdns v0.7.0
[INFO] [stderr]     Checking turn v0.8.0
[INFO] [stderr]     Checking webrtc-media v0.8.0
[INFO] [stderr]     Checking webrtc-dtls v0.10.0
[INFO] [stderr]     Checking webrtc-srtp v0.13.0
[INFO] [stderr]     Checking clap v4.5.51
[INFO] [stderr]     Checking interceptor v0.12.0
[INFO] [stderr]     Checking humantime-serde v1.1.1
[INFO] [stderr]     Checking rand_distr v0.4.3
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking env_logger v0.11.8
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]     Checking webrtc-data v0.9.0
[INFO] [stderr]     Checking tokio-stream v0.1.17
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]     Checking webrtc-ice v0.11.0
[INFO] [stderr]     Checking tokio-test v0.4.4
[INFO] [stderr]     Checking criterion v0.5.1
[INFO] [stderr]     Checking webrtc v0.11.0
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]    --> src/library.rs:390:13
[INFO] [stdout]     |
[INFO] [stdout] 390 |         use std::fs;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Transport`
[INFO] [stdout]   --> src/netflow_evasion.rs:10:49
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::protocol::{ProtocolId, ProtocolMeta, Transport};
[INFO] [stdout]    |                                                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/netflow_evasion.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ring::digest`
[INFO] [stdout]  --> src/nquic/crypto/keys.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use ring::digest;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/nquic/crypto/quinn_crypto.rs:15:18
[INFO] [stdout]    |
[INFO] [stdout] 15 | use ring::aead::{self, LessSafeKey, Nonce, UnboundKey, Aad, CHACHA20_POLY1305, quic};
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `UdpSocket`
[INFO] [stdout]  --> src/proxy.rs:8:42
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tokio::net::{TcpListener, TcpStream, UdpSocket};
[INFO] [stdout]   |                                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `connect_target` and `copy_bidirectional`
[INFO] [stdout]    --> src/proxy.rs:269:43
[INFO] [stdout]     |
[INFO] [stdout] 269 |     use crate::socks5::{socks5_handshake, connect_target, send_reply, copy_bidirectional, Command, ReplyCode, PrefixedStream};
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr` and `Ipv6Addr`
[INFO] [stdout]  --> src/socks5.rs:7:36
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::net::{SocketAddr, IpAddr, Ipv4Addr, Ipv6Addr};
[INFO] [stdout]   |                                    ^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::io::AsyncWriteExt`
[INFO] [stdout]  --> src/socat.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::io::AsyncWriteExt;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `stdio`
[INFO] [stdout]    --> src/socat.rs:104:11
[INFO] [stdout]     |
[INFO] [stdout] 104 |     #[cfg(feature = "stdio")]
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `stdio` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `stdio`
[INFO] [stdout]    --> src/socat.rs:114:15
[INFO] [stdout]     |
[INFO] [stdout] 114 |     #[cfg(not(feature = "stdio"))]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `stdio` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `fs`
[INFO] [stdout]    --> src/socat.rs:120:11
[INFO] [stdout]     |
[INFO] [stdout] 120 |     #[cfg(feature = "fs")]
[INFO] [stdout]     |           ^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `fs` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `fs`
[INFO] [stdout]    --> src/socat.rs:145:15
[INFO] [stdout]     |
[INFO] [stdout] 145 |     #[cfg(not(feature = "fs"))]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `fs` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]    --> src/library.rs:390:13
[INFO] [stdout]     |
[INFO] [stdout] 390 |         use std::fs;
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]    --> src/multiport_server.rs:297:9
[INFO] [stdout]     |
[INFO] [stdout] 297 |     use std::path::PathBuf;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Transport`
[INFO] [stdout]   --> src/netflow_evasion.rs:10:49
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::protocol::{ProtocolId, ProtocolMeta, Transport};
[INFO] [stdout]    |                                                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/netflow_evasion.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ring::digest`
[INFO] [stdout]  --> src/nquic/crypto/keys.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use ring::digest;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/nquic/crypto/quinn_crypto.rs:15:18
[INFO] [stdout]    |
[INFO] [stdout] 15 | use ring::aead::{self, LessSafeKey, Nonce, UnboundKey, Aad, CHACHA20_POLY1305, quic};
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `sleep`
[INFO] [stdout]   --> src/nquic/tests.rs:12:23
[INFO] [stdout]    |
[INFO] [stdout] 12 |     use tokio::time::{sleep, Duration};
[INFO] [stdout]    |                       ^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `UdpSocket`
[INFO] [stdout]  --> src/proxy.rs:8:42
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tokio::net::{TcpListener, TcpStream, UdpSocket};
[INFO] [stdout]   |                                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `connect_target` and `copy_bidirectional`
[INFO] [stdout]    --> src/proxy.rs:269:43
[INFO] [stdout]     |
[INFO] [stdout] 269 |     use crate::socks5::{socks5_handshake, connect_target, send_reply, copy_bidirectional, Command, ReplyCode, PrefixedStream};
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TimeBasedStrategy`
[INFO] [stdout]    --> src/shapeshift.rs:160:42
[INFO] [stdout]     |
[INFO] [stdout] 160 |     use crate::strategy::{FixedStrategy, TimeBasedStrategy};
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ipv6Addr`
[INFO] [stdout]  --> src/socks5.rs:7:46
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::net::{SocketAddr, IpAddr, Ipv4Addr, Ipv6Addr};
[INFO] [stdout]   |                                              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::io::AsyncWriteExt`
[INFO] [stdout]  --> src/socat.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::io::AsyncWriteExt;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `stdio`
[INFO] [stdout]    --> src/socat.rs:104:11
[INFO] [stdout]     |
[INFO] [stdout] 104 |     #[cfg(feature = "stdio")]
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `stdio` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `stdio`
[INFO] [stdout]    --> src/socat.rs:114:15
[INFO] [stdout]     |
[INFO] [stdout] 114 |     #[cfg(not(feature = "stdio"))]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `stdio` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `fs`
[INFO] [stdout]    --> src/socat.rs:120:11
[INFO] [stdout]     |
[INFO] [stdout] 120 |     #[cfg(feature = "fs")]
[INFO] [stdout]     |           ^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `fs` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `fs`
[INFO] [stdout]    --> src/socat.rs:145:15
[INFO] [stdout]     |
[INFO] [stdout] 145 |     #[cfg(not(feature = "fs"))]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]     |
[INFO] [stdout]     = note: no expected values for `feature`
[INFO] [stdout]     = help: consider adding `fs` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/dns_udp_tunnel.rs:253:18
[INFO] [stdout]     |
[INFO] [stdout] 253 |         let (tx, mut rx) = mpsc::unbounded_channel();
[INFO] [stdout]     |                  ----^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/dns_udp_tunnel.rs:313:9
[INFO] [stdout]     |
[INFO] [stdout] 313 |         mut payload: Vec<u8>,
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/dns_udp_tunnel.rs:253:18
[INFO] [stdout]     |
[INFO] [stdout] 253 |         let (tx, mut rx) = mpsc::unbounded_channel();
[INFO] [stdout]     |                  ----^^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/dns_udp_tunnel.rs:313:9
[INFO] [stdout]     |
[INFO] [stdout] 313 |         mut payload: Vec<u8>,
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/noise_transport.rs:254:13
[INFO] [stdout]     |
[INFO] [stdout] 254 |         let mut noise = builder.build_initiator()?;
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/noise_transport.rs:304:13
[INFO] [stdout]     |
[INFO] [stdout] 304 |         let mut noise = builder.build_responder()?;
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/noise_transport.rs:254:13
[INFO] [stdout]     |
[INFO] [stdout] 254 |         let mut noise = builder.build_initiator()?;
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/noise_transport.rs:304:13
[INFO] [stdout]     |
[INFO] [stdout] 304 |         let mut noise = builder.build_responder()?;
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/proxy.rs:1162:16
[INFO] [stdout]      |
[INFO] [stdout] 1162 |             Ok(mut stream) => {
[INFO] [stdout]      |                ----^^^^^^
[INFO] [stdout]      |                |
[INFO] [stdout]      |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/proxy.rs:1162:16
[INFO] [stdout]      |
[INFO] [stdout] 1162 |             Ok(mut stream) => {
[INFO] [stdout]      |                ----^^^^^^
[INFO] [stdout]      |                |
[INFO] [stdout]      |                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/transports/quic.rs:42:13
[INFO] [stdout]    |
[INFO] [stdout] 42 |         let mut client_config = quinn::ClientConfig::new(Arc::new(
[INFO] [stdout]    |             ----^^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/transports/quic.rs:42:13
[INFO] [stdout]    |
[INFO] [stdout] 42 |         let mut client_config = quinn::ClientConfig::new(Arc::new(
[INFO] [stdout]    |             ----^^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::io::AsyncWriteExt`
[INFO] [stdout]    --> src/proxy.rs:676:9
[INFO] [stdout]     |
[INFO] [stdout] 676 |     use tokio::io::AsyncWriteExt;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `question_section_len` is assigned to, but never used
[INFO] [stdout]    --> src/dns_tunnel.rs:189:9
[INFO] [stdout]     |
[INFO] [stdout] 189 |     let question_section_len;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_question_section_len` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `question_section_len` is never read
[INFO] [stdout]    --> src/dns_tunnel.rs:220:9
[INFO] [stdout]     |
[INFO] [stdout] 220 |         question_section_len = packet.len() - start_len;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `question_section_len` is never read
[INFO] [stdout]    --> src/dns_tunnel.rs:206:13
[INFO] [stdout]     |
[INFO] [stdout] 206 |             question_section_len = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `question_section_len` is never read
[INFO] [stdout]    --> src/dns_tunnel.rs:204:13
[INFO] [stdout]     |
[INFO] [stdout] 204 |             question_section_len = question_end - question_start;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx`
[INFO] [stdout]    --> src/dns_udp_tunnel.rs:253:18
[INFO] [stdout]     |
[INFO] [stdout] 253 |         let (tx, mut rx) = mpsc::unbounded_channel();
[INFO] [stdout]     |                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `password`
[INFO] [stdout]   --> src/mobile.rs:77:9
[INFO] [stdout]    |
[INFO] [stdout] 77 |     let password = if !config.password.is_null() {
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_password`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::io::AsyncWriteExt`
[INFO] [stdout]    --> src/proxy.rs:676:9
[INFO] [stdout]     |
[INFO] [stdout] 676 |     use tokio::io::AsyncWriteExt;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:363:9
[INFO] [stdout]     |
[INFO] [stdout] 363 |         label: &[u8],
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:364:9
[INFO] [stdout]     |
[INFO] [stdout] 364 |         context: &[u8],
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/app_profiles.rs:762:13
[INFO] [stdout]     |
[INFO] [stdout] 762 |         let mut emulator = ApplicationEmulator::new(profile);
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]     --> src/proxy.rs:1015:5
[INFO] [stdout]      |
[INFO] [stdout] 1015 |     config: Arc<NooshdarooConfig>,
[INFO] [stdout]      |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `element_type`
[INFO] [stdout]    --> src/psf/parser.rs:243:21
[INFO] [stdout]     |
[INFO] [stdout] 243 |                 let element_type = self.parse_field_type()?;
[INFO] [stdout]     |                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_element_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> src/psf/types.rs:239:14
[INFO] [stdout]     |
[INFO] [stdout] 239 |         for (idx, field) in self.format.fields.iter().enumerate() {
[INFO] [stdout]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]    --> src/psf/types.rs:401:26
[INFO] [stdout]     |
[INFO] [stdout] 401 |     fn skip_field(&self, data: &[u8], offset: &mut usize, field_type: &FieldType) -> Result<(), Error> {
[INFO] [stdout]     |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ref_field`
[INFO] [stdout]    --> src/psf/types.rs:411:41
[INFO] [stdout]     |
[INFO] [stdout] 411 |             FieldType::ByteArrayDynamic(ref_field) => {
[INFO] [stdout]     |                                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ref_field`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `question_section_len` is assigned to, but never used
[INFO] [stdout]    --> src/dns_tunnel.rs:189:9
[INFO] [stdout]     |
[INFO] [stdout] 189 |     let question_section_len;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_question_section_len` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `question_section_len` is never read
[INFO] [stdout]    --> src/dns_tunnel.rs:220:9
[INFO] [stdout]     |
[INFO] [stdout] 220 |         question_section_len = packet.len() - start_len;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `question_section_len` is never read
[INFO] [stdout]    --> src/dns_tunnel.rs:206:13
[INFO] [stdout]     |
[INFO] [stdout] 206 |             question_section_len = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `question_section_len` is never read
[INFO] [stdout]    --> src/dns_tunnel.rs:204:13
[INFO] [stdout]     |
[INFO] [stdout] 204 |             question_section_len = question_end - question_start;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx`
[INFO] [stdout]    --> src/dns_udp_tunnel.rs:253:18
[INFO] [stdout]     |
[INFO] [stdout] 253 |         let (tx, mut rx) = mpsc::unbounded_channel();
[INFO] [stdout]     |                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `header`
[INFO] [stdout]    --> src/dns_udp_tunnel.rs:690:17
[INFO] [stdout]     |
[INFO] [stdout] 690 |             let header = DnsTunnelHeader::decode(&frag).unwrap();
[INFO] [stdout]     |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_header`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `client_socket`
[INFO] [stdout]    --> src/udp_proxy.rs:506:30
[INFO] [stdout]     |
[INFO] [stdout] 506 |     async fn forward_reverse(client_socket: Arc<UdpSocket>, remote_socket: Arc<UdpSocket>) {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_client_socket`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `payload`
[INFO] [stdout]    --> src/udp_proxy.rs:512:25
[INFO] [stdout]     |
[INFO] [stdout] 512 |                     let payload = &buf[..len];
[INFO] [stdout]     |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_payload`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `password`
[INFO] [stdout]   --> src/mobile.rs:77:9
[INFO] [stdout]    |
[INFO] [stdout] 77 |     let password = if !config.password.is_null() {
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_password`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `NoisePacketKey` is more private than the item `NoiseKeyPair::local`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:238:5
[INFO] [stdout]     |
[INFO] [stdout] 238 |     pub local: NoisePacketKey,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^ field `NoiseKeyPair::local` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `NoisePacketKey` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | struct NoisePacketKey {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `NoisePacketKey` is more private than the item `NoiseKeyPair::remote`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:239:5
[INFO] [stdout]     |
[INFO] [stdout] 239 |     pub remote: NoisePacketKey,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^ field `NoiseKeyPair::remote` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `NoisePacketKey` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | struct NoisePacketKey {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `NoiseHeaderKey` is more private than the item `NoiseKeyPair::local_header`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:240:5
[INFO] [stdout]     |
[INFO] [stdout] 240 |     pub local_header: NoiseHeaderKey,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `NoiseKeyPair::local_header` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `NoiseHeaderKey` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:128:1
[INFO] [stdout]     |
[INFO] [stdout] 128 | struct NoiseHeaderKey {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `NoiseHeaderKey` is more private than the item `NoiseKeyPair::remote_header`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:241:5
[INFO] [stdout]     |
[INFO] [stdout] 241 |     pub remote_header: NoiseHeaderKey,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `NoiseKeyPair::remote_header` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `NoiseHeaderKey` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:128:1
[INFO] [stdout]     |
[INFO] [stdout] 128 | struct NoiseHeaderKey {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `server_addr` is never read
[INFO] [stdout]   --> src/dns_transport.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct DnsTransportClient {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] 39 |     socket: Arc<UdpSocket>,
[INFO] [stdout] 40 |     server_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `transaction_id` is never read
[INFO] [stdout]    --> src/dns_transport.rs:136:5
[INFO] [stdout]     |
[INFO] [stdout] 134 | struct Session {
[INFO] [stdout]     |        ------- field in this struct
[INFO] [stdout] 135 |     last_seen: std::time::Instant,
[INFO] [stdout] 136 |     transaction_id: u16,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_QNAME_LEN` is never used
[INFO] [stdout]   --> src/dns_tunnel.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const MAX_QNAME_LEN: usize = 253;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PIPELINE_DEPTH` is never used
[INFO] [stdout]   --> src/dns_udp_tunnel.rs:38:7
[INFO] [stdout]    |
[INFO] [stdout] 38 | const PIPELINE_DEPTH: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `received_at` is never read
[INFO] [stdout]   --> src/dns_udp_tunnel.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 48 | struct Fragment {
[INFO] [stdout]    |        -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 52 |     received_at: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Fragment` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `client_addr`, `server_addr`, `session_id`, and `tx` are never read
[INFO] [stdout]   --> src/dns_udp_tunnel.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | struct TunnelSession {
[INFO] [stdout]    |        ------------- fields in this struct
[INFO] [stdout] 58 |     /// Client UDP address
[INFO] [stdout] 59 |     client_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 60 |     /// Server UDP address (for client-side tracking)
[INFO] [stdout] 61 |     server_addr: Option<SocketAddr>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 62 |     /// Session ID
[INFO] [stdout] 63 |     session_id: SessionId,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     tx: mpsc::UnboundedSender<Vec<u8>>,
[INFO] [stdout]    |     ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TunnelSession` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `last_update` is never read
[INFO] [stdout]   --> src/reliable_transport.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct ReliableTransport<T> {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 48 |     last_update: Arc<Mutex<Instant>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `GLOBAL_CLIENT` is never used
[INFO] [stdout]   --> src/mobile.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static GLOBAL_CLIENT: Mutex<Option<Arc<NooshdarooClient>>> = Mutex::new(None);
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `GLOBAL_SERVER` is never used
[INFO] [stdout]   --> src/mobile.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | static GLOBAL_SERVER: Mutex<Option<Arc<NooshdarooServer>>> = Mutex::new(None);
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `server_name` is never read
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:301:5
[INFO] [stdout]     |
[INFO] [stdout] 296 | pub struct NoiseQuinnSession {
[INFO] [stdout]     |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 301 |     server_name: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `is_server` is never read
[INFO] [stdout]   --> src/nquic/dns/transport.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct DnsTransport {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 28 |     is_server: bool,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Dns` is never constructed
[INFO] [stdout]   --> src/proxy.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | enum ServerStream {
[INFO] [stdout]    |      ------------ variant in this enum
[INFO] [stdout] 25 |     Tcp(TcpStream),
[INFO] [stdout] 26 |     Dns(DnsStream),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pending_response` is never read
[INFO] [stdout]    --> src/proxy.rs:935:5
[INFO] [stdout]     |
[INFO] [stdout] 931 | struct DnsSession {
[INFO] [stdout]     |        ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 935 |     pending_response: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `expect_number` is never used
[INFO] [stdout]    --> src/psf/parser.rs:801:8
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl Parser {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 801 |     fn expect_number(&mut self) -> Result<u64, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `length_field_index` and `mac_field_index` are never read
[INFO] [stdout]    --> src/psf/types.rs:157:5
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub struct ProtocolFrame {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 157 |     length_field_index: Option<usize>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 158 |     mac_field_index: Option<usize>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ProtocolFrame` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/shapeshift.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct ShapeShiftController {
[INFO] [stdout]    |            -------------------- field in this struct
[INFO] [stdout] 13 |     config: ShapeShiftConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `protocol_name` is never read
[INFO] [stdout]    --> src/traffic.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub struct TimingEmulator {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] 114 |     protocol_name: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `endpoint` and `recv_buf` are never read
[INFO] [stdout]   --> src/transports/quic.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct QuicTransport {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     endpoint: Arc<quinn::Endpoint>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     recv_buf: Arc<Mutex<Option<Vec<u8>>>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `client_addr` and `remote_addr` are never read
[INFO] [stdout]    --> src/udp_proxy.rs:168:5
[INFO] [stdout]     |
[INFO] [stdout] 166 | struct UdpSession {
[INFO] [stdout]     |        ---------- fields in this struct
[INFO] [stdout] 167 |     /// Client address that initiated this session
[INFO] [stdout] 168 |     client_addr: SocketAddr,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 169 |     /// Remote target address
[INFO] [stdout] 170 |     remote_addr: SocketAddr,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `UdpSession` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `shaper` and `psf_interpreter` are never read
[INFO] [stdout]   --> src/protocol_wrapper.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct ProtocolWrapper {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 54 |     shaper: Option<TrafficShaper>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 55 |     psf_interpreter: Option<PsfInterpreter>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `server_done`
[INFO] [stdout]    --> src/nquic/crypto/noise_session.rs:346:13
[INFO] [stdout]     |
[INFO] [stdout] 346 |         let server_done = server_session.read_handshake(&client_msg).unwrap();
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_server_done`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::SocketAddr`
[INFO] [stdout]  --> src/bin/dns_socks_server.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::net::SocketAddr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `label`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:363:9
[INFO] [stdout]     |
[INFO] [stdout] 363 |         label: &[u8],
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_label`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:364:9
[INFO] [stdout]     |
[INFO] [stdout] 364 |         context: &[u8],
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]   --> src/main.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tokio::sync::RwLock;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DnsUdpTunnelClientPipelined`
[INFO] [stdout]   --> src/main.rs:17:45
[INFO] [stdout]    |
[INFO] [stdout] 17 |     DnsUdpTunnelServer, DnsUdpTunnelClient, DnsUdpTunnelClientPipelined,
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsyncReadExt` and `AsyncWriteExt`
[INFO] [stdout]    --> src/main.rs:445:21
[INFO] [stdout]     |
[INFO] [stdout] 445 |     use tokio::io::{AsyncReadExt, AsyncWriteExt};
[INFO] [stdout]     |                     ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]    --> src/main.rs:446:9
[INFO] [stdout]     |
[INFO] [stdout] 446 |     use rand::Rng;
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::SocketAddr`
[INFO] [stdout]  --> src/bin/dns_socks_server.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::net::SocketAddr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]   --> src/main.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tokio::sync::RwLock;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DnsUdpTunnelClientPipelined`
[INFO] [stdout]   --> src/main.rs:17:45
[INFO] [stdout]    |
[INFO] [stdout] 17 |     DnsUdpTunnelServer, DnsUdpTunnelClient, DnsUdpTunnelClientPipelined,
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsyncReadExt` and `AsyncWriteExt`
[INFO] [stdout]    --> src/main.rs:445:21
[INFO] [stdout]     |
[INFO] [stdout] 445 |     use tokio::io::{AsyncReadExt, AsyncWriteExt};
[INFO] [stdout]     |                     ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]    --> src/main.rs:446:9
[INFO] [stdout]     |
[INFO] [stdout] 446 |     use rand::Rng;
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `test_data2`
[INFO] [stdout]    --> src/nquic/tests.rs:167:13
[INFO] [stdout]     |
[INFO] [stdout] 167 |         let test_data2 = b"Data after migration";
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_test_data2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `test_packet1`
[INFO] [stdout]    --> src/nquic/tests.rs:298:13
[INFO] [stdout]     |
[INFO] [stdout] 298 |         let test_packet1 = b"test packet 1";
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_test_packet1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `test_packet2`
[INFO] [stdout]    --> src/nquic/tests.rs:306:13
[INFO] [stdout]     |
[INFO] [stdout] 306 |         let test_packet2 = b"test packet 2";
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_test_packet2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]     --> src/proxy.rs:1015:5
[INFO] [stdout]      |
[INFO] [stdout] 1015 |     config: Arc<NooshdarooConfig>,
[INFO] [stdout]      |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `element_type`
[INFO] [stdout]    --> src/psf/parser.rs:243:21
[INFO] [stdout]     |
[INFO] [stdout] 243 |                 let element_type = self.parse_field_type()?;
[INFO] [stdout]     |                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_element_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idx`
[INFO] [stdout]    --> src/psf/types.rs:239:14
[INFO] [stdout]     |
[INFO] [stdout] 239 |         for (idx, field) in self.format.fields.iter().enumerate() {
[INFO] [stdout]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]    --> src/psf/types.rs:401:26
[INFO] [stdout]     |
[INFO] [stdout] 401 |     fn skip_field(&self, data: &[u8], offset: &mut usize, field_type: &FieldType) -> Result<(), Error> {
[INFO] [stdout]     |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ref_field`
[INFO] [stdout]    --> src/psf/types.rs:411:41
[INFO] [stdout]     |
[INFO] [stdout] 411 |             FieldType::ByteArrayDynamic(ref_field) => {
[INFO] [stdout]     |                                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ref_field`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bind`
[INFO] [stdout]    --> src/main.rs:439:5
[INFO] [stdout]     |
[INFO] [stdout] 439 |     bind: &str,
[INFO] [stdout]     |     ^^^^ help: if this is intentional, prefix it with an underscore: `_bind`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `target_port`
[INFO] [stdout]    --> src/main.rs:792:43
[INFO] [stdout]     |
[INFO] [stdout] 792 |                         let (target_addr, target_port) = match addr_type {
[INFO] [stdout]     |                                           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `server`
[INFO] [stdout]    --> src/main.rs:952:9
[INFO] [stdout]     |
[INFO] [stdout] 952 |     let server = NooshdarooServer::new(config.clone())?;
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_server`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUILD_DATE` is never used
[INFO] [stdout]   --> src/main.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const BUILD_DATE: &str = env!("BUILD_DATE");
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GIT_HASH` is never used
[INFO] [stdout]   --> src/main.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const GIT_HASH: &str = env!("GIT_HASH");
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `client_socket`
[INFO] [stdout]    --> src/udp_proxy.rs:506:30
[INFO] [stdout]     |
[INFO] [stdout] 506 |     async fn forward_reverse(client_socket: Arc<UdpSocket>, remote_socket: Arc<UdpSocket>) {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_client_socket`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `payload`
[INFO] [stdout]    --> src/udp_proxy.rs:512:25
[INFO] [stdout]     |
[INFO] [stdout] 512 |                     let payload = &buf[..len];
[INFO] [stdout]     |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_payload`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bind`
[INFO] [stdout]    --> src/main.rs:439:5
[INFO] [stdout]     |
[INFO] [stdout] 439 |     bind: &str,
[INFO] [stdout]     |     ^^^^ help: if this is intentional, prefix it with an underscore: `_bind`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `target_port`
[INFO] [stdout]    --> src/main.rs:792:43
[INFO] [stdout]     |
[INFO] [stdout] 792 |                         let (target_addr, target_port) = match addr_type {
[INFO] [stdout]     |                                           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `server`
[INFO] [stdout]    --> src/main.rs:952:9
[INFO] [stdout]     |
[INFO] [stdout] 952 |     let server = NooshdarooServer::new(config.clone())?;
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_server`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `NoisePacketKey` is more private than the item `NoiseKeyPair::local`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:238:5
[INFO] [stdout]     |
[INFO] [stdout] 238 |     pub local: NoisePacketKey,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^ field `NoiseKeyPair::local` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `NoisePacketKey` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | struct NoisePacketKey {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `NoisePacketKey` is more private than the item `NoiseKeyPair::remote`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:239:5
[INFO] [stdout]     |
[INFO] [stdout] 239 |     pub remote: NoisePacketKey,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^ field `NoiseKeyPair::remote` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `NoisePacketKey` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:19:1
[INFO] [stdout]     |
[INFO] [stdout]  19 | struct NoisePacketKey {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `NoiseHeaderKey` is more private than the item `NoiseKeyPair::local_header`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:240:5
[INFO] [stdout]     |
[INFO] [stdout] 240 |     pub local_header: NoiseHeaderKey,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `NoiseKeyPair::local_header` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `NoiseHeaderKey` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:128:1
[INFO] [stdout]     |
[INFO] [stdout] 128 | struct NoiseHeaderKey {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `NoiseHeaderKey` is more private than the item `NoiseKeyPair::remote_header`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:241:5
[INFO] [stdout]     |
[INFO] [stdout] 241 |     pub remote_header: NoiseHeaderKey,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `NoiseKeyPair::remote_header` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `NoiseHeaderKey` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:128:1
[INFO] [stdout]     |
[INFO] [stdout] 128 | struct NoiseHeaderKey {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `server_addr` is never read
[INFO] [stdout]   --> src/dns_transport.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct DnsTransportClient {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] 39 |     socket: Arc<UdpSocket>,
[INFO] [stdout] 40 |     server_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `transaction_id` is never read
[INFO] [stdout]    --> src/dns_transport.rs:136:5
[INFO] [stdout]     |
[INFO] [stdout] 134 | struct Session {
[INFO] [stdout]     |        ------- field in this struct
[INFO] [stdout] 135 |     last_seen: std::time::Instant,
[INFO] [stdout] 136 |     transaction_id: u16,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_QNAME_LEN` is never used
[INFO] [stdout]   --> src/dns_tunnel.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const MAX_QNAME_LEN: usize = 253;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PIPELINE_DEPTH` is never used
[INFO] [stdout]   --> src/dns_udp_tunnel.rs:38:7
[INFO] [stdout]    |
[INFO] [stdout] 38 | const PIPELINE_DEPTH: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `received_at` is never read
[INFO] [stdout]   --> src/dns_udp_tunnel.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 48 | struct Fragment {
[INFO] [stdout]    |        -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 52 |     received_at: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Fragment` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `client_addr`, `server_addr`, `session_id`, and `tx` are never read
[INFO] [stdout]   --> src/dns_udp_tunnel.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | struct TunnelSession {
[INFO] [stdout]    |        ------------- fields in this struct
[INFO] [stdout] 58 |     /// Client UDP address
[INFO] [stdout] 59 |     client_addr: SocketAddr,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 60 |     /// Server UDP address (for client-side tracking)
[INFO] [stdout] 61 |     server_addr: Option<SocketAddr>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 62 |     /// Session ID
[INFO] [stdout] 63 |     session_id: SessionId,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     tx: mpsc::UnboundedSender<Vec<u8>>,
[INFO] [stdout]    |     ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TunnelSession` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `last_update` is never read
[INFO] [stdout]   --> src/reliable_transport.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct ReliableTransport<T> {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 48 |     last_update: Arc<Mutex<Instant>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `GLOBAL_CLIENT` is never used
[INFO] [stdout]   --> src/mobile.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static GLOBAL_CLIENT: Mutex<Option<Arc<NooshdarooClient>>> = Mutex::new(None);
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `GLOBAL_SERVER` is never used
[INFO] [stdout]   --> src/mobile.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | static GLOBAL_SERVER: Mutex<Option<Arc<NooshdarooServer>>> = Mutex::new(None);
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `server_name` is never read
[INFO] [stdout]    --> src/nquic/crypto/quinn_crypto.rs:301:5
[INFO] [stdout]     |
[INFO] [stdout] 296 | pub struct NoiseQuinnSession {
[INFO] [stdout]     |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 301 |     server_name: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Dns` is never constructed
[INFO] [stdout]   --> src/proxy.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | enum ServerStream {
[INFO] [stdout]    |      ------------ variant in this enum
[INFO] [stdout] 25 |     Tcp(TcpStream),
[INFO] [stdout] 26 |     Dns(DnsStream),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pending_response` is never read
[INFO] [stdout]    --> src/proxy.rs:935:5
[INFO] [stdout]     |
[INFO] [stdout] 931 | struct DnsSession {
[INFO] [stdout]     |        ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 935 |     pending_response: Vec<u8>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `expect_number` is never used
[INFO] [stdout]    --> src/psf/parser.rs:801:8
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl Parser {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 801 |     fn expect_number(&mut self) -> Result<u64, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `length_field_index` and `mac_field_index` are never read
[INFO] [stdout]    --> src/psf/types.rs:157:5
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub struct ProtocolFrame {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 157 |     length_field_index: Option<usize>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 158 |     mac_field_index: Option<usize>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ProtocolFrame` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/shapeshift.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct ShapeShiftController {
[INFO] [stdout]    |            -------------------- field in this struct
[INFO] [stdout] 13 |     config: ShapeShiftConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `endpoint` and `recv_buf` are never read
[INFO] [stdout]   --> src/transports/quic.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct QuicTransport {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     endpoint: Arc<quinn::Endpoint>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     recv_buf: Arc<Mutex<Option<Vec<u8>>>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `client_addr` and `remote_addr` are never read
[INFO] [stdout]    --> src/udp_proxy.rs:168:5
[INFO] [stdout]     |
[INFO] [stdout] 166 | struct UdpSession {
[INFO] [stdout]     |        ---------- fields in this struct
[INFO] [stdout] 167 |     /// Client address that initiated this session
[INFO] [stdout] 168 |     client_addr: SocketAddr,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 169 |     /// Remote target address
[INFO] [stdout] 170 |     remote_addr: SocketAddr,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `UdpSession` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `shaper` and `psf_interpreter` are never read
[INFO] [stdout]   --> src/protocol_wrapper.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct ProtocolWrapper {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 54 |     shaper: Option<TrafficShaper>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 55 |     psf_interpreter: Option<PsfInterpreter>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUILD_DATE` is never used
[INFO] [stdout]   --> src/main.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const BUILD_DATE: &str = env!("BUILD_DATE");
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GIT_HASH` is never used
[INFO] [stdout]   --> src/main.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const GIT_HASH: &str = env!("GIT_HASH");
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 28s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: quinn v0.11.9, quinn-udp v0.5.14
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 8`
[INFO] running `Command { std: "docker" "inspect" "b3359e717e75cd686df4d402fccd428406962bfe8ba5b6d498cb7c7689ed40d2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b3359e717e75cd686df4d402fccd428406962bfe8ba5b6d498cb7c7689ed40d2", kill_on_drop: false }`
[INFO] [stdout] b3359e717e75cd686df4d402fccd428406962bfe8ba5b6d498cb7c7689ed40d2
