[INFO] cloning repository https://github.com/qq238373-cpu/ghostpp
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/qq238373-cpu/ghostpp" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fqq238373-cpu%2Fghostpp", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fqq238373-cpu%2Fghostpp'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 76828eda0a550def1f8b4d4de8a8d9c74ef55777
[INFO] testing qq238373-cpu/ghostpp against beta-2026-03-05 for beta-1.95-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fqq238373-cpu%2Fghostpp" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/qq238373-cpu/ghostpp
[INFO] finished tweaking git repo https://github.com/qq238373-cpu/ghostpp
[INFO] tweaked toml for git repo https://github.com/qq238373-cpu/ghostpp written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/qq238373-cpu/ghostpp on toolchain beta-2026-03-05
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-03-05" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/qq238373-cpu/ghostpp 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" "+beta-2026-03-05" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-03-05" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] fc029ee6bada6a1062b3e85a07798417888fcff872f07bff37028f3625d915c8
[INFO] running `Command { std: "docker" "start" "-a" "fc029ee6bada6a1062b3e85a07798417888fcff872f07bff37028f3625d915c8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "fc029ee6bada6a1062b3e85a07798417888fcff872f07bff37028f3625d915c8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fc029ee6bada6a1062b3e85a07798417888fcff872f07bff37028f3625d915c8", kill_on_drop: false }`
[INFO] [stdout] fc029ee6bada6a1062b3e85a07798417888fcff872f07bff37028f3625d915c8
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-03-05" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1c0dca5172b1f666e4ede7bd3a032e7312f2c20e80423bc6cd34e544fbe6d1c8
[INFO] running `Command { std: "docker" "start" "-a" "1c0dca5172b1f666e4ede7bd3a032e7312f2c20e80423bc6cd34e544fbe6d1c8", kill_on_drop: false }`
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling itoa v1.0.17
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling num-conv v0.2.0
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling pin-project-lite v0.2.16
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling time-macros v0.2.27
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling deranged v0.5.6
[INFO] [stderr]    Compiling num_threads v0.1.7
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling compact_str v0.9.0
[INFO] [stderr]    Compiling regex-syntax v0.8.9
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling line-clipping v0.3.5
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling lru v0.16.3
[INFO] [stderr]    Compiling futures-core v0.3.31
[INFO] [stderr]    Compiling futures-sink v0.3.31
[INFO] [stderr]    Compiling toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]    Compiling libsqlite3-sys v0.36.0
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling futures-io v0.3.31
[INFO] [stderr]    Compiling futures-task v0.3.31
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling pin-utils v0.1.0
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling rand_core v0.10.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling nibble_vec v0.1.0
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling toml_parser v1.0.7+spec-1.1.0
[INFO] [stderr]    Compiling cpufeatures v0.3.0
[INFO] [stderr]    Compiling tinyvec v1.10.0
[INFO] [stderr]    Compiling endian-type v0.1.2
[INFO] [stderr]    Compiling radix_trie v0.2.1
[INFO] [stderr]    Compiling chacha20 v0.10.0
[INFO] [stderr]    Compiling toml_edit v0.23.10+spec-1.0.0
[INFO] [stderr]    Compiling bzip2-rs v0.1.2
[INFO] [stderr]    Compiling chrono v0.4.43
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling anyhow v1.0.101
[INFO] [stderr]    Compiling fd-lock v4.0.4
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling hashlink v0.11.0
[INFO] [stderr]    Compiling getopts v0.2.24
[INFO] [stderr]    Compiling proc-macro-crate v3.4.0
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling implode v0.1.1
[INFO] [stderr]    Compiling home v0.5.12
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling utf8parse v0.2.2
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling adler32 v1.2.0
[INFO] [stderr]    Compiling rand v0.10.0
[INFO] [stderr]    Compiling mpq v0.8.1
[INFO] [stderr]    Compiling libloading v0.9.0
[INFO] [stderr]    Compiling rusqlite v0.38.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling num_enum_derive v0.7.5
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling kasuari v0.4.11
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling num_enum v0.7.5
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling rustyline v17.0.2
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling instability v0.3.11
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling env_filter v0.1.4
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling ratatui-core v0.1.0
[INFO] [stderr]    Compiling ratatui-widgets v0.3.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling ratatui-macros v0.7.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling tui-logger v0.18.1
[INFO] [stderr]    Compiling ghost-rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/bncsutilinterface.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info, error};
[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: `IncomingGameHost`
[INFO] [stdout]  --> src/bnet_update.rs:1:64
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::bnetprotocol::{BnetProtocol, IncomingChatEventEnum, IncomingGameHost, Protocol};
[INFO] [stdout]   |                                                                ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `make_shared`
[INFO] [stdout]  --> src/bnet_update.rs:3:58
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::socket::{GhostTcpClient, get_ticks, get_time, make_shared};
[INFO] [stdout]   |                                                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashMap`
[INFO] [stdout]  --> src/gamebase.rs:9:24
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::collections::{HashMap, HashSet, VecDeque};
[INFO] [stdout]   |                        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/gamebase.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsyncReadExt` and `AsyncWriteExt`
[INFO] [stdout]   --> src/gamebase.rs:11:17
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::io::{AsyncReadExt, AsyncWriteExt};
[INFO] [stdout]    |                 ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TcpListener` and `TcpStream`
[INFO] [stdout]   --> src/gamebase.rs:12:18
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tokio::net::{TcpListener, TcpStream};
[INFO] [stdout]    |                  ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]   --> src/gamebase.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use tokio::sync::RwLock;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `self`
[INFO] [stdout]   --> src/gamebase.rs:14:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | use tokio::time::{self, Duration};
[INFO] [stdout]    |                   ^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ghost::*`
[INFO] [stdout]  --> src/ghost_update.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::ghost::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_ticks`
[INFO] [stdout]  --> src/ghost_update.rs:3:21
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::socket::{get_ticks, get_time};
[INFO] [stdout]   |                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/ghost_update.rs:7:28
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{error, info, warn};
[INFO] [stdout]   |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/ghostdb.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/ghostdb.rs:3:21
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tracing::{info, error};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/map.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                 ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::game`
[INFO] [stdout]  --> src/map.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::game;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ghost::*`
[INFO] [stdout]  --> src/map.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::ghost::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::crc32::*`
[INFO] [stdout]   --> src/map.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::crc32::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::sha1::*`
[INFO] [stdout]   --> src/map.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::sha1::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config`
[INFO] [stdout]   --> src/map.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::config;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::gameslot::*`
[INFO] [stdout]   --> src/map.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::gameslot::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ghost`
[INFO] [stdout]   --> src/map.rs:14:26
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::{SharedGhost, Ghost};
[INFO] [stdout]    |                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `File`
[INFO] [stdout]   --> src/map.rs:17:20
[INFO] [stdout]    |
[INFO] [stdout] 17 | use mpq::{Archive, File};
[INFO] [stdout]    |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/map.rs:18:21
[INFO] [stdout]    |
[INFO] [stdout] 18 | use tracing::{info, error};
[INFO] [stdout]    |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/socket.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, error};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/map.rs:330:21
[INFO] [stdout]     |
[INFO] [stdout] 330 |                 let mut commonj = read_file_full("maps/common.j").unwrap();
[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/map.rs:335:25
[INFO] [stdout]     |
[INFO] [stdout] 335 |                     let mut blizzardj = read_file_full("maps/blizzard.j").unwrap();
[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/map.rs:346:39
[INFO] [stdout]     |
[INFO] [stdout] 346 | ...                   if let Ok(mut cmnj) = map.open_file("Scripts\\common.j") {
[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/map.rs:347:37
[INFO] [stdout]     |
[INFO] [stdout] 347 | ...                   let mut file_length = cmnj.size();
[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/map.rs:378:39
[INFO] [stdout]     |
[INFO] [stdout] 378 | ...                   if let Ok(mut blrj) = map.open_file("Scripts\\blizzard.j") {
[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/map.rs:379:37
[INFO] [stdout]     |
[INFO] [stdout] 379 | ...                   let mut file_length = blrj.size();
[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/map.rs:433:43
[INFO] [stdout]     |
[INFO] [stdout] 433 | ...                   if let Ok(mut file) = map.open_file(i) {
[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/map.rs:434:37
[INFO] [stdout]     |
[INFO] [stdout] 434 | ...                   let mut length = file.size();
[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/map.rs:482:13
[INFO] [stdout]     |
[INFO] [stdout] 482 |         let mut map_filter_type: u8 = MAPFILTER_TYPE_SCENARIO;
[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/map.rs:487:23
[INFO] [stdout]     |
[INFO] [stdout] 487 |             if let Ok(mut w3i_file) = map.open_file("war3map.w3i") {
[INFO] [stdout]     |                       ----^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `logon_type`
[INFO] [stdout]    --> src/bnet_update.rs:250:29
[INFO] [stdout]     |
[INFO] [stdout] 250 |                         let logon_type = p.get_logon_type();
[INFO] [stdout]     |                             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_logon_type`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mpq_file_time`
[INFO] [stdout]    --> src/bnet_update.rs:252:29
[INFO] [stdout]     |
[INFO] [stdout] 252 |                         let mpq_file_time = p.get_mpq_file_time();
[INFO] [stdout]     |                             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mpq_file_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `length_bytes` is never read
[INFO] [stdout]    --> src/bnetprotocol.rs:890:36
[INFO] [stdout]     |
[INFO] [stdout] 890 |             let mut length_bytes = ByteArray::new();
[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: unused variable: `save_game`
[INFO] [stdout]    --> src/game.rs:224:9
[INFO] [stdout]     |
[INFO] [stdout] 224 |         save_game: Option<SaveGame>,
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_save_game`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `interval`
[INFO] [stdout]    --> src/game.rs:586:27
[INFO] [stdout]     |
[INFO] [stdout] 586 |                 if let Ok(interval) = parts[0].parse::<u32>() {
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interval`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reserved`
[INFO] [stdout]    --> src/gamebase.rs:377:34
[INFO] [stdout]     |
[INFO] [stdout] 377 |     pub fn get_empty_slot(&self, reserved: bool) -> Option<usize> {
[INFO] [stdout]     |                                  ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reserved`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `unlock`
[INFO] [stdout]    --> src/gamebase.rs:438:45
[INFO] [stdout]     |
[INFO] [stdout] 438 |     pub fn open_slot(&mut self, sid: usize, unlock: bool) {
[INFO] [stdout]     |                                             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_unlock`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_size`
[INFO] [stdout]    --> src/gamebase.rs:909:21
[INFO] [stdout]     |
[INFO] [stdout] 909 |                 let map_size = self.map.map_size.clone();
[INFO] [stdout]     |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_map_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_type`
[INFO] [stdout]    --> src/ghost_update.rs:142:13
[INFO] [stdout]     |
[INFO] [stdout] 142 |             game_type,
[INFO] [stdout]     |             ^^^^^^^^^ help: try ignoring the field: `game_type: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `creator`
[INFO] [stdout]    --> src/ghost_update.rs:145:13
[INFO] [stdout]     |
[INFO] [stdout] 145 |             creator,
[INFO] [stdout]     |             ^^^^^^^ help: try ignoring the field: `creator: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `creator_server`
[INFO] [stdout]    --> src/ghost_update.rs:146:13
[INFO] [stdout]     |
[INFO] [stdout] 146 |             creator_server,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ help: try ignoring the field: `creator_server: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stay_time`
[INFO] [stdout]    --> src/ghostdb.rs:343:9
[INFO] [stdout]     |
[INFO] [stdout] 343 |         stay_time: u32,
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stay_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `game_flags` is never read
[INFO] [stdout]    --> src/map.rs:184:35
[INFO] [stdout]     |
[INFO] [stdout] 184 |         let mut game_flags: u32 = 0;
[INFO] [stdout]     |                                   ^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]    --> src/map.rs:357:45
[INFO] [stdout]     |
[INFO] [stdout] 357 | ...                   let val = val ^ self.xor_rotate_left(&buf[..bytes_read]);
[INFO] [stdout]     |                           ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]    --> src/map.rs:389:45
[INFO] [stdout]     |
[INFO] [stdout] 389 | ...                   let val = val ^ self.xor_rotate_left(&buf[..bytes_read]);
[INFO] [stdout]     |                           ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_filter_type`
[INFO] [stdout]    --> src/map.rs:482:13
[INFO] [stdout]     |
[INFO] [stdout] 482 |         let mut map_filter_type: u8 = MAPFILTER_TYPE_SCENARIO;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_map_filter_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/map.rs:526:33
[INFO] [stdout]     |
[INFO] [stdout] 526 | ...                   for i in 0..raw_map_num_players {
[INFO] [stdout]     |                           ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `map_mpq_ready` is never read
[INFO] [stdout]    --> src/map.rs:299:37
[INFO] [stdout]     |
[INFO] [stdout] 299 |             let mut map_mpq_ready = false;
[INFO] [stdout]     |                                     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `KR_OLD_GAME_VERSION`, `KR_INVALID_VERSION`, `KR_ROC_KEY_IN_USE`, and `KR_TFT_KEY_IN_USE` are never constructed
[INFO] [stdout]   --> src/bnetprotocol.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub enum KeyResult {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 43 |     KR_GOOD = 0,
[INFO] [stdout] 44 |     KR_OLD_GAME_VERSION = 256,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 45 |     KR_INVALID_VERSION = 257,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 46 |     KR_ROC_KEY_IN_USE = 513,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 47 |     KR_TFT_KEY_IN_USE = 529,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CsvParser` is never constructed
[INFO] [stdout]  --> src/csvparser.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct CsvParser {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/csvparser.rs:9:12
[INFO] [stdout]     |
[INFO] [stdout]   7 | impl CsvParser {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]   8 |     /// Создать пустой парсер.
[INFO] [stdout]   9 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  17 |     pub fn from_str(s: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  25 |     pub fn set_data(&mut self, s: &str) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  31 |     fn skip_spaces(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub fn read_int(&mut self) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub fn read_float(&mut self) -> Option<f64> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn read_string(&mut self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn is_eof(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbBan` is never constructed
[INFO] [stdout]  --> src/game.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct DbBan {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/game.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl DbBan {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 21 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbGame` is never constructed
[INFO] [stdout]   --> src/game.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct DbGame {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/game.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | impl DbGame {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 59 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbGamePlayer` is never constructed
[INFO] [stdout]   --> src/game.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct DbGamePlayer {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/game.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl DbGamePlayer {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 101 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbGamePlayerSummary` is never constructed
[INFO] [stdout]    --> src/game.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub struct DbGamePlayerSummary {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbDotaPlayerSummary` is never constructed
[INFO] [stdout]    --> src/game.rs:142:12
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub struct DbDotaPlayerSummary {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/game.rs:158:12
[INFO] [stdout]     |
[INFO] [stdout] 157 | impl DbDotaPlayerSummary {
[INFO] [stdout]     | ------------------------ methods in this implementation
[INFO] [stdout] 158 |     pub fn avg(&self, field: u32) -> f64 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn avg_kills(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn avg_deaths(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn avg_creep_kills(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn avg_creep_denies(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn avg_assists(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn avg_neutral_kills(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn avg_tower_kills(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub fn avg_rax_kills(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn avg_courier_kills(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Game` is never constructed
[INFO] [stdout]    --> src/game.rs:196:12
[INFO] [stdout]     |
[INFO] [stdout] 196 | pub struct Game {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `StatsType` is never used
[INFO] [stdout]    --> src/game.rs:215:10
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub enum StatsType {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/game.rs:222:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | impl Game {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] 222 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 299 |     pub fn event_game_started(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn event_player_deleted(&mut self, player_idx: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     pub fn handle_bot_command(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 421 |     fn cmd_ping(&self) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 432 |     fn cmd_abort(&mut self) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 441 |     fn cmd_close(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     fn cmd_closeall(&mut self) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 456 |     fn cmd_open(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 466 |     fn cmd_openall(&mut self) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |     fn cmd_hold(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 480 |     fn cmd_kick(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 495 |     fn cmd_mute(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 505 |     fn cmd_unmute(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 515 |     fn cmd_start(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 523 |     fn cmd_swap(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 540 |     fn cmd_shuffle(&mut self) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 564 |     fn cmd_lock(&mut self, has_perm: bool) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 573 |     fn cmd_unlock(&mut self) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 578 |     fn cmd_announce(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 595 |     fn cmd_autosave(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 609 |     fn cmd_autostart(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 621 |     fn cmd_drop(&mut self) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 630 |     fn cmd_from(&self) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 640 |     fn cmd_latency(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 653 |     fn cmd_synclimit(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 666 |     fn cmd_comp(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BotCommandResult` is never used
[INFO] [stdout]    --> src/game.rs:682:10
[INFO] [stdout]     |
[INFO] [stdout] 682 | pub enum BotCommandResult {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `message` and `broadcast` are never used
[INFO] [stdout]    --> src/game.rs:696:12
[INFO] [stdout]     |
[INFO] [stdout] 695 | impl BotCommandResult {
[INFO] [stdout]     | --------------------- associated functions in this implementation
[INFO] [stdout] 696 |     pub fn message(msg: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 699 |     pub fn broadcast(msg: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_PRIVATE` is never used
[INFO] [stdout]   --> src/gamebase.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const GAME_PRIVATE: u8 = 0;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_PUBLIC` is never used
[INFO] [stdout]   --> src/gamebase.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const GAME_PUBLIC: u8 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_DISCONNECT` is never used
[INFO] [stdout]   --> src/gamebase.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const PLAYER_LEAVE_DISCONNECT: u32 = 13;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_LOST` is never used
[INFO] [stdout]   --> src/gamebase.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const PLAYER_LEAVE_LOST: u32 = 7;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_LOSTBUILDINGS` is never used
[INFO] [stdout]   --> src/gamebase.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const PLAYER_LEAVE_LOSTBUILDINGS: u32 = 8;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_WON` is never used
[INFO] [stdout]   --> src/gamebase.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const PLAYER_LEAVE_WON: u32 = 9;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_DRAW` is never used
[INFO] [stdout]   --> src/gamebase.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const PLAYER_LEAVE_DRAW: u32 = 10;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_OBSERVER` is never used
[INFO] [stdout]   --> src/gamebase.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub const PLAYER_LEAVE_OBSERVER: u32 = 11;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_LOBBY` is never used
[INFO] [stdout]   --> src/gamebase.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const PLAYER_LEAVE_LOBBY: u32 = 21;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_GPROXY` is never used
[INFO] [stdout]   --> src/gamebase.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const PLAYER_LEAVE_GPROXY: u32 = 100;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_GAMETYPE_UNKNOWN0` is never used
[INFO] [stdout]   --> src/gamebase.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const MAP_GAMETYPE_UNKNOWN0: u32 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_GAMETYPE_SAVEDGAME` is never used
[INFO] [stdout]   --> src/gamebase.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const MAP_GAMETYPE_SAVEDGAME: u32 = 512;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_OPT_FIXEDPLAYERSETTING` is never used
[INFO] [stdout]   --> src/gamebase.rs:31:11
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub const MAP_OPT_FIXEDPLAYERSETTING: u32 = 4;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BaseGame` is never constructed
[INFO] [stdout]   --> src/gamebase.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct BaseGame {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/gamebase.rs:154:12
[INFO] [stdout]      |
[INFO] [stdout]  152 | impl BaseGame {
[INFO] [stdout]      | ------------- associated items in this implementation
[INFO] [stdout]  153 |     /// Create a new BaseGame from config / ghost state
[INFO] [stdout]  154 |     pub fn new(
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  318 |     pub fn get_slots_occupied(&self) -> u32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  325 |     pub fn get_slots_open(&self) -> u32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  332 |     pub fn get_num_human_players(&self) -> u32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  336 |     pub fn get_num_players(&self) -> u32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  344 |     pub fn get_host_pid(&self) -> u8 {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  353 |     pub fn get_pids(&self) -> Vec<u8> {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  361 |     pub fn get_new_pid(&self) -> u8 {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  377 |     pub fn get_empty_slot(&self, reserved: bool) -> Option<usize> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  386 |     pub fn get_sid_from_pid(&self, pid: u8) -> Option<usize> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  392 |     pub fn get_player_from_pid(&self, pid: u8) -> Option<&GamePlayer> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  398 |     pub fn get_player_from_pid_mut(&mut self, pid: u8) -> Option<&mut GamePlayer> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  404 |     pub fn get_player_from_name(&self, name: &str, sensitive: bool) -> Option<&GamePlayer> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  415 |     pub fn get_player_index_from_name(&self, name: &str, sensitive: bool) -> Option<usize> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  426 |     pub fn get_player_from_sid(&self, sid: usize) -> Option<&GamePlayer> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  434 |     pub fn is_owner(&self, name: &str) -> bool {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  438 |     pub fn open_slot(&mut self, sid: usize, unlock: bool) {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  448 |     pub fn close_slot(&mut self, sid: usize) {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  458 |     pub fn swap_slots(&mut self, sid1: usize, sid2: usize) {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  483 |     pub fn create_virtual_host(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  501 |     pub fn delete_virtual_host(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  514 |     pub fn send_to(&self, player: &mut GamePlayer, data: &[u8]) {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  518 |     pub fn send_all(&mut self, data: &[u8]) {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  526 |     pub fn send_chat(&mut self, from_pid: u8, to_pid: u8, message: &str) {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  562 |     pub fn send_all_chat_from(&mut self, from_pid: u8, message: &str) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  594 |     pub fn send_all_chat(&mut self, message: &str) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  599 |     pub fn send_all_slot_info(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  613 |     pub fn get_description(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  635 |     pub fn send_all_actions(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  711 |     pub fn start_countdown_auto(&mut self, require_spoof: bool) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  745 |     pub fn event_game_started(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  770 |     pub fn check_lag(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  814 |     pub fn check_lag_stop(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  850 |     pub fn stop_laggers(&mut self, reason: &str) {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  864 |     pub fn update(&mut self) -> bool {
[INFO] [stdout]      |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1098 |     pub fn close_all_slots(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1106 |     pub fn open_all_slots(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1114 |     pub fn start_count_down(&mut self, force: bool) -> Option<u8> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1122 |     pub fn set_announce(&mut self, announce: bool) {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1127 |     pub fn computer_slot(&mut self, sid: u8, skill: u8) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1134 |     pub fn add_to_reserved(&mut self, name: &str) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1138 |     pub fn set_hcl(&mut self, _hcl: &str) {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_time` is never used
[INFO] [stdout]  --> src/gameplayer.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn get_time() -> u32 {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_ticks` is never used
[INFO] [stdout]   --> src/gameplayer.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn get_ticks() -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommandPacket` is never constructed
[INFO] [stdout]   --> src/gameplayer.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct CommandPacket {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/gameplayer.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl CommandPacket {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 27 |     pub fn new(packet_type: u8, id: u8, data: ByteArray) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PotentialPlayer` is never constructed
[INFO] [stdout]   --> src/gameplayer.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct PotentialPlayer {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `external_ip_string`, `receive_data`, `extract_packets`, `send`, and `take_send_buffer` are never used
[INFO] [stdout]    --> src/gameplayer.rs:56:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | impl PotentialPlayer {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  56 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub fn external_ip_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn receive_data(&mut self, data: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn extract_packets(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn send(&mut self, data: &[u8]) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn take_send_buffer(&mut self) -> ByteArray {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GamePlayer` is never constructed
[INFO] [stdout]    --> src/gameplayer.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub struct GamePlayer {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_potential`, `get_ping`, `get_name_terminated`, `send`, `add_ping`, and `gproxy_ack` are never used
[INFO] [stdout]    --> src/gameplayer.rs:204:12
[INFO] [stdout]     |
[INFO] [stdout] 202 | impl GamePlayer {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 203 |     /// Создать нового игрока из PotentialPlayer.
[INFO] [stdout] 204 |     pub fn from_potential(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 267 |     pub fn get_ping(&self, lc_ping: bool) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub fn get_name_terminated(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     pub fn send(&mut self, data: &[u8], game_loaded: bool) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 298 |     pub fn add_ping(&mut self, ping: u32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 306 |     pub fn gproxy_ack(&mut self, last_packet: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_HEADER_CONSTANT` is never used
[INFO] [stdout]  --> src/gameprotocol.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const W3GS_HEADER_CONSTANT: u8 = 0xF7;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_PING_FROM_HOST` is never used
[INFO] [stdout]  --> src/gameprotocol.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const W3GS_PING_FROM_HOST: u8 = 0x01;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_SLOT_INFO_JOIN` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const W3GS_SLOT_INFO_JOIN: u8 = 0x04;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_REJECT_JOIN` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const W3GS_REJECT_JOIN: u8 = 0x05;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_PLAYER_INFO` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const W3GS_PLAYER_INFO: u8 = 0x06;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_PLAYER_LEAVE_OTHERS` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const W3GS_PLAYER_LEAVE_OTHERS: u8 = 0x07;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_GAME_LOADED_OTHERS` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const W3GS_GAME_LOADED_OTHERS: u8 = 0x08;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_SLOT_INFO` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const W3GS_SLOT_INFO: u8 = 0x09;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_COUNTDOWN_START` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const W3GS_COUNTDOWN_START: u8 = 0x0A;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_COUNTDOWN_END` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const W3GS_COUNTDOWN_END: u8 = 0x0B;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_INCOMING_ACTION` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const W3GS_INCOMING_ACTION: u8 = 0x0C;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_CHAT_FROM_HOST` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const W3GS_CHAT_FROM_HOST: u8 = 0x0F;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_START_LAG` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const W3GS_START_LAG: u8 = 0x10;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_STOP_LAG` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const W3GS_STOP_LAG: u8 = 0x11;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_GAME_OVER` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const W3GS_GAME_OVER: u8 = 0x14;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_PLAYER_KICKED` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const W3GS_PLAYER_KICKED: u8 = 0x1C;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_LEAVE_ACK` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const W3GS_LEAVE_ACK: u8 = 0x1B;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_REQ_JOIN` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub const W3GS_REQ_JOIN: u8 = 0x1E;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_LEAVE_GAME` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const W3GS_LEAVE_GAME: u8 = 0x21;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_GAME_LOADED_SELF` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const W3GS_GAME_LOADED_SELF: u8 = 0x23;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_OUTGOING_ACTION` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:28:11
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub const W3GS_OUTGOING_ACTION: u8 = 0x26;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_OUTGOING_KEEPALIVE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const W3GS_OUTGOING_KEEPALIVE: u8 = 0x27;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_CHAT_TO_HOST` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const W3GS_CHAT_TO_HOST: u8 = 0x28;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_DROP_REQ` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:31:11
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub const W3GS_DROP_REQ: u8 = 0x29;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_SEARCH_GAME` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:32:11
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub const W3GS_SEARCH_GAME: u8 = 0x2F;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_GAME_INFO` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub const W3GS_GAME_INFO: u8 = 0x30;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_CREATE_GAME` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:34:11
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub const W3GS_CREATE_GAME: u8 = 0x31;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_REFRESH_GAME` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:35:11
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub const W3GS_REFRESH_GAME: u8 = 0x32;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_DECREATE_GAME` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const W3GS_DECREATE_GAME: u8 = 0x33;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_MAP_CHECK` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:37:11
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub const W3GS_MAP_CHECK: u8 = 0x3D;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_START_DOWNLOAD` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:38:11
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub const W3GS_START_DOWNLOAD: u8 = 0x3F;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_MAP_SIZE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:39:11
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub const W3GS_MAP_SIZE: u8 = 0x42;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_MAP_PART` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:40:11
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub const W3GS_MAP_PART: u8 = 0x43;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_MAP_PART_OK` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:41:11
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub const W3GS_MAP_PART_OK: u8 = 0x44;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_MAP_PART_ERROR` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:42:11
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub const W3GS_MAP_PART_ERROR: u8 = 0x45;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_PONG_TO_HOST` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:43:11
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub const W3GS_PONG_TO_HOST: u8 = 0x46;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_INCOMING_ACTION2` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:44:11
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub const W3GS_INCOMING_ACTION2: u8 = 0x48;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_DISCONNECT` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:47:11
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub const PLAYER_LEAVE_DISCONNECT: u32 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_LOST` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:48:11
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub const PLAYER_LEAVE_LOST: u32 = 7;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_LOSTBUILDINGS` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:49:11
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub const PLAYER_LEAVE_LOSTBUILDINGS: u32 = 8;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_WON` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:50:11
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub const PLAYER_LEAVE_WON: u32 = 9;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_DRAW` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:51:11
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub const PLAYER_LEAVE_DRAW: u32 = 10;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_OBSERVER` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:52:11
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub const PLAYER_LEAVE_OBSERVER: u32 = 11;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_LOBBY` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:53:11
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub const PLAYER_LEAVE_LOBBY: u32 = 13;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_GPROXY` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:54:11
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub const PLAYER_LEAVE_GPROXY: u32 = 100;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REJECTJOIN_FULL` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:57:11
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub const REJECTJOIN_FULL: u32 = 0x09;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REJECTJOIN_STARTED` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:58:11
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub const REJECTJOIN_STARTED: u32 = 0x10;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REJECTJOIN_WRONGPASSWORD` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub const REJECTJOIN_WRONGPASSWORD: u32 = 0x27;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_STATUS_OPEN` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:62:11
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub const SLOT_STATUS_OPEN: u8 = 0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_STATUS_CLOSED` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:63:11
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub const SLOT_STATUS_CLOSED: u8 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_STATUS_OCCUPIED` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:64:11
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub const SLOT_STATUS_OCCUPIED: u8 = 2;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_RACE_HUMAN` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:67:11
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub const SLOT_RACE_HUMAN: u8 = 0x01;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_RACE_ORC` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:68:11
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub const SLOT_RACE_ORC: u8 = 0x02;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_RACE_NIGHTELF` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:69:11
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub const SLOT_RACE_NIGHTELF: u8 = 0x04;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_RACE_UNDEAD` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:70:11
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub const SLOT_RACE_UNDEAD: u8 = 0x08;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_RACE_RANDOM` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:71:11
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub const SLOT_RACE_RANDOM: u8 = 0x20;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_RACE_SELECTABLE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:72:11
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub const SLOT_RACE_SELECTABLE: u8 = 0x40;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_COMP_EASY` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:75:11
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub const SLOT_COMP_EASY: u8 = 0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_COMP_NORMAL` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:76:11
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub const SLOT_COMP_NORMAL: u8 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_COMP_INSANE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:77:11
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub const SLOT_COMP_INSANE: u8 = 2;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_OPT_MELEE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:80:11
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub const MAP_OPT_MELEE: u32 = 1 << 2;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_OPT_FIXED_PLAYER_SETTINGS` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:81:11
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub const MAP_OPT_FIXED_PLAYER_SETTINGS: u32 = 1 << 3;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_OPT_CUSTOM_FORCES` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:82:11
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub const MAP_OPT_CUSTOM_FORCES: u32 = 1 << 5;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_OPT_CUSTOM_TECHTREE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:83:11
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub const MAP_OPT_CUSTOM_TECHTREE: u32 = 1 << 6;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_OPT_CUSTOM_ABILITIES` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:84:11
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub const MAP_OPT_CUSTOM_ABILITIES: u32 = 1 << 7;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_OPT_CUSTOM_UPGRADES` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:85:11
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub const MAP_OPT_CUSTOM_UPGRADES: u32 = 1 << 8;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_OPT_WATERWAVE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:86:11
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub const MAP_OPT_WATERWAVE: u32 = 1 << 12;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_FLAG_TEAMSTOGETHER` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:89:11
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub const MAP_FLAG_TEAMSTOGETHER: u32 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_FLAG_FIXEDTEAMS` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:90:11
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub const MAP_FLAG_FIXEDTEAMS: u32 = 2;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_FLAG_UNITSHARE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:91:11
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub const MAP_FLAG_UNITSHARE: u32 = 4;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_FLAG_RANDOMHERO` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:92:11
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub const MAP_FLAG_RANDOMHERO: u32 = 8;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_FLAG_RANDOMRACES` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:93:11
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub const MAP_FLAG_RANDOMRACES: u32 = 16;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_NONE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:96:11
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub const GAME_NONE: u8 = 0;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_PUBLIC` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:97:11
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub const GAME_PUBLIC: u8 = 16;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_PRIVATE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:98:11
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub const GAME_PRIVATE: u8 = 17;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_CLOSE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:99:11
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub const GAME_CLOSE: u8 = 18;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_GAMETYPE_UNKNOWN0` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:102:11
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub const MAP_GAMETYPE_UNKNOWN0: u32 = 0;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_GAMETYPE_CUSTOM` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:103:11
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub const MAP_GAMETYPE_CUSTOM: u32 = 1;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_GAMETYPE_SAVEDGAME` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:104:11
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub const MAP_GAMETYPE_SAVEDGAME: u32 = 0x0200;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_GAMETYPE_PRIVATEGAME` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:105:11
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub const MAP_GAMETYPE_PRIVATEGAME: u32 = 0x0800;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_GAMETYPE_BLIZZARD` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:106:11
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub const MAP_GAMETYPE_BLIZZARD: u32 = 0x2000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_GAMETYPE_MAKERBLIZ` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:107:11
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub const MAP_GAMETYPE_MAKERBLIZ: u32 = 0x2000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_GAMETYPE_MAKERUSER` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:108:11
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub const MAP_GAMETYPE_MAKERUSER: u32 = 0x4000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHAT_MESSAGE` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:111:11
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub const CHAT_MESSAGE: u8 = 16;
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHAT_TEAM_CHANGE` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:112:11
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub const CHAT_TEAM_CHANGE: u8 = 17;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHAT_COLOUR_CHANGE` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:113:11
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub const CHAT_COLOUR_CHANGE: u8 = 18;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHAT_RACE_CHANGE` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:114:11
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub const CHAT_RACE_CHANGE: u8 = 19;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHAT_HANDICAP_CHANGE` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:115:11
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub const CHAT_HANDICAP_CHANGE: u8 = 20;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHAT_MESSAGE_EXTRA` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:116:11
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub const CHAT_MESSAGE_EXTRA: u8 = 32;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHATFLAG_TO_ALL` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:119:11
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub const CHATFLAG_TO_ALL: u8 = CHAT_MESSAGE;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOTSTATUS_OPEN` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:120:11
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub const SLOTSTATUS_OPEN: u8 = SLOT_STATUS_OPEN;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOTSTATUS_CLOSED` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:121:11
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub const SLOTSTATUS_CLOSED: u8 = SLOT_STATUS_CLOSED;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOTSTATUS_OCCUPIED` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:122:11
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub const SLOTSTATUS_OCCUPIED: u8 = SLOT_STATUS_OCCUPIED;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IncomingAction` is never constructed
[INFO] [stdout]    --> src/gameprotocol.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub struct IncomingAction {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_playerinfo` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:134:8
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub fn send_playerinfo(pid: u8, name: &str, external_ip: &[u8], internal_ip: &[u8]) -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_playerleave_others` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:138:8
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn send_playerleave_others(pid: u8, left_code: u32) -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_chat_from_host` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:142:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub fn send_chat_from_host(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_slotinfo` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:152:8
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub fn send_slotinfo(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_incoming_action` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:161:8
[INFO] [stdout]     |
[INFO] [stdout] 161 | pub fn send_incoming_action(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_countdown_end` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:177:8
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub fn send_countdown_end() -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_start_lag` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:181:8
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub fn send_start_lag(laggers: &[(u8, u32)]) -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_stop_lag` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:192:8
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub fn send_stop_lag(pid: u8, lag_time: u32) -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_ping_from_host` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:200:8
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub fn send_ping_from_host() -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode_slot_info` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:204:8
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub fn encode_slot_info(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_header` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:220:4
[INFO] [stdout]     |
[INFO] [stdout] 220 | fn make_header(id: u8) -> ByteArray {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assign_length` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:224:4
[INFO] [stdout]     |
[INFO] [stdout] 224 | fn assign_length(packet: &mut ByteArray) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_header` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:233:8
[INFO] [stdout]     |
[INFO] [stdout] 233 | pub fn validate_header(data: &[u8]) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_w3gs_packets` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:239:8
[INFO] [stdout]     |
[INFO] [stdout] 239 | pub fn extract_w3gs_packets(buf: &mut ByteArray) -> Vec<ByteArray> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_ping` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:264:8
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub fn send_w3gs_ping(tick_value: u32) -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_slot_info_join` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:271:8
[INFO] [stdout]     |
[INFO] [stdout] 271 | pub fn send_w3gs_slot_info_join(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_reject_join` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:295:8
[INFO] [stdout]     |
[INFO] [stdout] 295 | pub fn send_w3gs_reject_join(reason: u32) -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_player_info` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:302:8
[INFO] [stdout]     |
[INFO] [stdout] 302 | pub fn send_w3gs_player_info(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_player_leave` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:334:8
[INFO] [stdout]     |
[INFO] [stdout] 334 | pub fn send_w3gs_player_leave(pid: u8, left_code: u32) -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_slot_info` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:342:8
[INFO] [stdout]     |
[INFO] [stdout] 342 | pub fn send_w3gs_slot_info(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_countdown_start` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:356:8
[INFO] [stdout]     |
[INFO] [stdout] 356 | pub fn send_w3gs_countdown_start() -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_countdown_end` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:362:8
[INFO] [stdout]     |
[INFO] [stdout] 362 | pub fn send_w3gs_countdown_end() -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_game_loaded` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:369:8
[INFO] [stdout]     |
[INFO] [stdout] 369 | pub fn send_w3gs_game_loaded(pid: u8) -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_map_check` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:377:8
[INFO] [stdout]     |
[INFO] [stdout] 377 | pub fn send_w3gs_map_check(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_chat` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:395:8
[INFO] [stdout]     |
[INFO] [stdout] 395 | pub fn send_w3gs_chat(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_start_download` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:414:8
[INFO] [stdout]     |
[INFO] [stdout] 414 | pub fn send_w3gs_start_download(from_pid: u8) -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IncomingJoinPlayer` is never constructed
[INFO] [stdout]    --> src/gameprotocol.rs:423:12
[INFO] [stdout]     |
[INFO] [stdout] 423 | pub struct IncomingJoinPlayer {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `receive_w3gs_req_join` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:430:8
[INFO] [stdout]     |
[INFO] [stdout] 430 | pub fn receive_w3gs_req_join(data: &[u8]) -> Option<IncomingJoinPlayer> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `receive_w3gs_leave_game` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:459:8
[INFO] [stdout]     |
[INFO] [stdout] 459 | pub fn receive_w3gs_leave_game(data: &[u8]) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `receive_w3gs_pong` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:468:8
[INFO] [stdout]     |
[INFO] [stdout] 468 | pub fn receive_w3gs_pong(data: &[u8]) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `receive_w3gs_action` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:477:8
[INFO] [stdout]     |
[INFO] [stdout] 477 | pub fn receive_w3gs_action(data: &[u8]) -> Option<(ByteArray, ByteArray)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `receive_w3gs_keepalive` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:487:8
[INFO] [stdout]     |
[INFO] [stdout] 487 | pub fn receive_w3gs_keepalive(data: &[u8]) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ChatToHost` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:496:10
[INFO] [stdout]     |
[INFO] [stdout] 496 | pub enum ChatToHost {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `receive_w3gs_chat_to_host` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:530:8
[INFO] [stdout]     |
[INFO] [stdout] 530 | pub fn receive_w3gs_chat_to_host(data: &[u8]) -> Option<ChatToHost> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IncomingMapSize` is never constructed
[INFO] [stdout]    --> src/gameprotocol.rs:615:12
[INFO] [stdout]     |
[INFO] [stdout] 615 | pub struct IncomingMapSize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `receive_w3gs_map_size` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:620:8
[INFO] [stdout]     |
[INFO] [stdout] 620 | pub fn receive_w3gs_map_size(data: &[u8]) -> Option<IncomingMapSize> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode_slot_info` is never used
[INFO] [stdout]    --> src/gameslot.rs:246:8
[INFO] [stdout]     |
[INFO] [stdout] 246 | pub fn encode_slot_info(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_slot_info` is never used
[INFO] [stdout]    --> src/gameslot.rs:275:8
[INFO] [stdout]     |
[INFO] [stdout] 275 | pub fn decode_slot_info(data: &[u8]) -> Option<(Vec<GameSlot>, u32, u8, u8)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_PRIVATE` is never used
[INFO] [stdout]   --> src/ghost.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const GAME_PRIVATE: u8 = 17;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_PUBLIC` is never used
[INFO] [stdout]   --> src/ghost.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const GAME_PUBLIC: u8 = 16;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbGame` is never constructed
[INFO] [stdout]   --> src/ghostdb.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct DbGame {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbGamePlayer` is never constructed
[INFO] [stdout]   --> src/ghostdb.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct DbGamePlayer {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScoreCheck` is never constructed
[INFO] [stdout]   --> src/ghostdb.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct ScoreCheck {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GPS_HEADER_CONSTANT` is never used
[INFO] [stdout]  --> src/gpsprotocol.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const GPS_HEADER_CONSTANT: u8 = 0xF8;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GPS_INIT` is never used
[INFO] [stdout]  --> src/gpsprotocol.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const GPS_INIT:      u8 = 1;
[INFO] [stdout]   |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GPS_RECONNECT` is never used
[INFO] [stdout]  --> src/gpsprotocol.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const GPS_RECONNECT: u8 = 2;
[INFO] [stdout]   |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GPS_ACK` is never used
[INFO] [stdout]   --> src/gpsprotocol.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const GPS_ACK:       u8 = 3;
[INFO] [stdout]    |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GPS_REJECT` is never used
[INFO] [stdout]   --> src/gpsprotocol.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const GPS_REJECT:    u8 = 4;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REJECT_GPS_INVALID` is never used
[INFO] [stdout]   --> src/gpsprotocol.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const REJECT_GPS_INVALID:  u32 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REJECT_GPS_NOTFOUND` is never used
[INFO] [stdout]   --> src/gpsprotocol.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const REJECT_GPS_NOTFOUND: u32 = 2;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_header` is never used
[INFO] [stdout]   --> src/gpsprotocol.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn make_header(id: u8) -> ByteArray {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assign_length` is never used
[INFO] [stdout]   --> src/gpsprotocol.rs:23:4
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn assign_length(packet: &mut ByteArray) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_length` is never used
[INFO] [stdout]   --> src/gpsprotocol.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn validate_length(data: &[u8]) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_gpsc_init` is never used
[INFO] [stdout]   --> src/gpsprotocol.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn send_gpsc_init(version: u32) -> ByteArray {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_gpsc_reconnect` is never used
[INFO] [stdout]   --> src/gpsprotocol.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn send_gpsc_reconnect(pid: u8, reconnect_key: u32, last_packet: u32) -> ByteArray {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_gpsc_ack` is never used
[INFO] [stdout]   --> src/gpsprotocol.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn send_gpsc_ack(last_packet: u32) -> ByteArray {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_gpss_init` is never used
[INFO] [stdout]   --> src/gpsprotocol.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub fn send_gpss_init(reconnect_port: u16, pid: u8, reconnect_key: u32, num_empty_actions: u8) -> ByteArray {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_gpss_reconnect` is never used
[INFO] [stdout]   --> src/gpsprotocol.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn send_gpss_reconnect(last_packet: u32) -> ByteArray {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_gpss_ack` is never used
[INFO] [stdout]   --> src/gpsprotocol.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn send_gpss_ack(last_packet: u32) -> ByteArray {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_gpss_reject` is never used
[INFO] [stdout]   --> src/gpsprotocol.rs:96:8
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub fn send_gpss_reject(reason: u32) -> ByteArray {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `receive_gpsc_init` is never used
[INFO] [stdout]    --> src/gpsprotocol.rs:106:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn receive_gpsc_init(data: &[u8]) -> Option<u32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GpsReconnectRequest` is never constructed
[INFO] [stdout]    --> src/gpsprotocol.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub struct GpsReconnectRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `receive_gpsc_reconnect` is never used
[INFO] [stdout]    --> src/gpsprotocol.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub fn receive_gpsc_reconnect(data: &[u8]) -> Option<GpsReconnectRequest> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `receive_gpsc_ack` is never used
[INFO] [stdout]    --> src/gpsprotocol.rs:132:8
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub fn receive_gpsc_ack(data: &[u8]) -> Option<u32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_CREATE_GAME` is never used
[INFO] [stdout]   --> src/language.rs:29:15
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub const UNABLE_TO_CREATE_GAME:            &str = "lang_0001"; // $SERVER$ $GAMENAME$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER_IS_ALREADY_AN_ADMIN` is never used
[INFO] [stdout]   --> src/language.rs:30:15
[INFO] [stdout]    |
[INFO] [stdout] 30 |     pub const USER_IS_ALREADY_AN_ADMIN:         &str = "lang_0002"; // $SERVER$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ADDED_USER_TO_ADMIN_DB` is never used
[INFO] [stdout]   --> src/language.rs:31:15
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub const ADDED_USER_TO_ADMIN_DB:           &str = "lang_0003"; // $SERVER$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERROR_ADDING_USER_TO_ADMIN_DB` is never used
[INFO] [stdout]   --> src/language.rs:32:15
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub const ERROR_ADDING_USER_TO_ADMIN_DB:    &str = "lang_0004"; // $SERVER$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `YOU_DONT_HAVE_ACCESS` is never used
[INFO] [stdout]   --> src/language.rs:33:15
[INFO] [stdout]    |
[INFO] [stdout] 33 |     pub const YOU_DONT_HAVE_ACCESS:             &str = "lang_0005";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER_IS_ALREADY_BANNED` is never used
[INFO] [stdout]   --> src/language.rs:34:15
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub const USER_IS_ALREADY_BANNED:           &str = "lang_0006"; // $SERVER$ $VICTIM$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BANNED_USER` is never used
[INFO] [stdout]   --> src/language.rs:35:15
[INFO] [stdout]    |
[INFO] [stdout] 35 |     pub const BANNED_USER:                      &str = "lang_0007"; // $SERVER$ $VICTIM$
[INFO] [stdout]    |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERROR_BANNING_USER` is never used
[INFO] [stdout]   --> src/language.rs:36:15
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub const ERROR_BANNING_USER:               &str = "lang_0008"; // $SERVER$ $VICTIM$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER_IS_AN_ADMIN` is never used
[INFO] [stdout]   --> src/language.rs:37:15
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub const USER_IS_AN_ADMIN:                 &str = "lang_0009"; // $SERVER$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER_IS_NOT_AN_ADMIN` is never used
[INFO] [stdout]   --> src/language.rs:38:15
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub const USER_IS_NOT_AN_ADMIN:             &str = "lang_0010"; // $SERVER$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER_WAS_BANNED_ON_BY_BECAUSE` is never used
[INFO] [stdout]   --> src/language.rs:39:15
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub const USER_WAS_BANNED_ON_BY_BECAUSE:    &str = "lang_0011"; // $SERVER$ $VICTIM$ $DATE$ $ADMIN$ $REASON$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER_IS_NOT_BANNED` is never used
[INFO] [stdout]   --> src/language.rs:40:15
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub const USER_IS_NOT_BANNED:               &str = "lang_0012"; // $SERVER$ $VICTIM$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THERE_ARE_NO_ADMINS` is never used
[INFO] [stdout]   --> src/language.rs:41:15
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub const THERE_ARE_NO_ADMINS:              &str = "lang_0013"; // $SERVER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THERE_IS_ADMIN` is never used
[INFO] [stdout]   --> src/language.rs:42:15
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub const THERE_IS_ADMIN:                   &str = "lang_0014"; // $SERVER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THERE_ARE_ADMINS` is never used
[INFO] [stdout]   --> src/language.rs:43:15
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub const THERE_ARE_ADMINS:                 &str = "lang_0015"; // $SERVER$ $COUNT$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THERE_ARE_NO_BANNED_USERS` is never used
[INFO] [stdout]   --> src/language.rs:44:15
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub const THERE_ARE_NO_BANNED_USERS:        &str = "lang_0016"; // $SERVER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THERE_IS_BANNED_USER` is never used
[INFO] [stdout]   --> src/language.rs:45:15
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub const THERE_IS_BANNED_USER:             &str = "lang_0017"; // $SERVER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THERE_ARE_BANNED_USERS` is never used
[INFO] [stdout]   --> src/language.rs:46:15
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub const THERE_ARE_BANNED_USERS:           &str = "lang_0018"; // $SERVER$ $COUNT$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `YOU_CANT_DELETE_ROOT_ADMIN` is never used
[INFO] [stdout]   --> src/language.rs:47:15
[INFO] [stdout]    |
[INFO] [stdout] 47 |     pub const YOU_CANT_DELETE_ROOT_ADMIN:        &str = "lang_0019";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DELETED_USER_FROM_ADMIN_DB` is never used
[INFO] [stdout]   --> src/language.rs:48:15
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub const DELETED_USER_FROM_ADMIN_DB:       &str = "lang_0020"; // $SERVER$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERROR_DELETING_USER_FROM_ADMIN_DB` is never used
[INFO] [stdout]   --> src/language.rs:49:15
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub const ERROR_DELETING_USER_FROM_ADMIN_DB:&str = "lang_0021"; // $SERVER$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNBANNED_USER` is never used
[INFO] [stdout]   --> src/language.rs:50:15
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub const UNBANNED_USER:                    &str = "lang_0022"; // $VICTIM$
[INFO] [stdout]    |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERROR_UNBANNING_USER` is never used
[INFO] [stdout]   --> src/language.rs:51:15
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub const ERROR_UNBANNING_USER:             &str = "lang_0023"; // $VICTIM$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_NUMBER_IS` is never used
[INFO] [stdout]   --> src/language.rs:52:15
[INFO] [stdout]    |
[INFO] [stdout] 52 |     pub const GAME_NUMBER_IS:                   &str = "lang_0024"; // $NUMBER$ $DESCRIPTION$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_NUMBER_DOESNT_EXIST` is never used
[INFO] [stdout]   --> src/language.rs:53:15
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub const GAME_NUMBER_DOESNT_EXIST:         &str = "lang_0025"; // $NUMBER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_IS_IN_THE_LOBBY` is never used
[INFO] [stdout]   --> src/language.rs:54:15
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub const GAME_IS_IN_THE_LOBBY:             &str = "lang_0026"; // $DESCRIPTION$ $CURRENT$ $MAX$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THERE_IS_NO_GAME_IN_LOBBY` is never used
[INFO] [stdout]   --> src/language.rs:55:15
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub const THERE_IS_NO_GAME_IN_LOBBY:        &str = "lang_0027"; // $CURRENT$ $MAX$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_LOAD_CONFIG_OUTSIDE` is never used
[INFO] [stdout]   --> src/language.rs:56:15
[INFO] [stdout]    |
[INFO] [stdout] 56 |     pub const UNABLE_TO_LOAD_CONFIG_OUTSIDE:    &str = "lang_0028";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOADING_CONFIG_FILE` is never used
[INFO] [stdout]   --> src/language.rs:57:15
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub const LOADING_CONFIG_FILE:              &str = "lang_0029"; // $FILE$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_LOAD_CONFIG_NOT_EXIST` is never used
[INFO] [stdout]   --> src/language.rs:58:15
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub const UNABLE_TO_LOAD_CONFIG_NOT_EXIST:  &str = "lang_0030"; // $FILE$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CREATING_PRIVATE_GAME` is never used
[INFO] [stdout]   --> src/language.rs:59:15
[INFO] [stdout]    |
[INFO] [stdout] 59 |     pub const CREATING_PRIVATE_GAME:            &str = "lang_0031"; // $GAMENAME$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CREATING_PUBLIC_GAME` is never used
[INFO] [stdout]   --> src/language.rs:60:15
[INFO] [stdout]    |
[INFO] [stdout] 60 |     pub const CREATING_PUBLIC_GAME:             &str = "lang_0032"; // $GAMENAME$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_UNHOST_COUNTDOWN` is never used
[INFO] [stdout]   --> src/language.rs:61:15
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub const UNABLE_TO_UNHOST_COUNTDOWN:       &str = "lang_0033"; // $DESCRIPTION$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNHOSTING_GAME` is never used
[INFO] [stdout]   --> src/language.rs:62:15
[INFO] [stdout]    |
[INFO] [stdout] 62 |     pub const UNHOSTING_GAME:                   &str = "lang_0034"; // $DESCRIPTION$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_UNHOST_NO_GAME` is never used
[INFO] [stdout]   --> src/language.rs:63:15
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub const UNABLE_TO_UNHOST_NO_GAME:         &str = "lang_0035";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERSION_ADMIN` is never used
[INFO] [stdout]   --> src/language.rs:64:15
[INFO] [stdout]    |
[INFO] [stdout] 64 |     pub const VERSION_ADMIN:                    &str = "lang_0036"; // $VERSION$
[INFO] [stdout]    |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERSION_NOT_ADMIN` is never used
[INFO] [stdout]   --> src/language.rs:65:15
[INFO] [stdout]    |
[INFO] [stdout] 65 |     pub const VERSION_NOT_ADMIN:                &str = "lang_0037"; // $VERSION$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_CREATE_ANOTHER_IN_LOBBY` is never used
[INFO] [stdout]   --> src/language.rs:66:15
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub const UNABLE_TO_CREATE_ANOTHER_IN_LOBBY:&str = "lang_0038"; // $GAMENAME$ $DESCRIPTION$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_CREATE_MAX_GAMES` is never used
[INFO] [stdout]   --> src/language.rs:67:15
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub const UNABLE_TO_CREATE_MAX_GAMES:       &str = "lang_0039"; // $GAMENAME$ $MAX$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_IS_OVER` is never used
[INFO] [stdout]   --> src/language.rs:68:15
[INFO] [stdout]    |
[INFO] [stdout] 68 |     pub const GAME_IS_OVER:                     &str = "lang_0040"; // $DESCRIPTION$
[INFO] [stdout]    |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPOOF_CHECK_BY_REPLYING` is never used
[INFO] [stdout]   --> src/language.rs:69:15
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub const SPOOF_CHECK_BY_REPLYING:          &str = "lang_0041";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_REFRESHED` is never used
[INFO] [stdout]   --> src/language.rs:70:15
[INFO] [stdout]    |
[INFO] [stdout] 70 |     pub const GAME_REFRESHED:                   &str = "lang_0042";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPOOF_POSSIBLE_IS_AWAY` is never used
[INFO] [stdout]   --> src/language.rs:71:15
[INFO] [stdout]    |
[INFO] [stdout] 71 |     pub const SPOOF_POSSIBLE_IS_AWAY:           &str = "lang_0043"; // $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPOOF_POSSIBLE_IS_UNAVAILABLE` is never used
[INFO] [stdout]   --> src/language.rs:72:15
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub const SPOOF_POSSIBLE_IS_UNAVAILABLE:    &str = "lang_0044"; // $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPOOF_POSSIBLE_IS_REFUSING` is never used
[INFO] [stdout]   --> src/language.rs:73:15
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub const SPOOF_POSSIBLE_IS_REFUSING:       &str = "lang_0045"; // $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPOOF_DETECTED_NOT_IN_GAME` is never used
[INFO] [stdout]   --> src/language.rs:74:15
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub const SPOOF_DETECTED_NOT_IN_GAME:       &str = "lang_0046"; // $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPOOF_DETECTED_IN_PRIVATE` is never used
[INFO] [stdout]   --> src/language.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub const SPOOF_DETECTED_IN_PRIVATE:        &str = "lang_0047"; // $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPOOF_DETECTED_IN_ANOTHER_GAME` is never used
[INFO] [stdout]   --> src/language.rs:76:15
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub const SPOOF_DETECTED_IN_ANOTHER_GAME:   &str = "lang_0048"; // $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HAS_PLAYED_GAMES_WITH_BOT` is never used
[INFO] [stdout]   --> src/language.rs:77:15
[INFO] [stdout]    |
[INFO] [stdout] 77 |     pub const HAS_PLAYED_GAMES_WITH_BOT:        &str = "lang_0049"; // $USER$ $FIRSTGAME$ $LASTGAME$ $TOTALGAMES$ $AVGLOADINGTIME$ $...
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HASNT_PLAYED_GAMES_WITH_BOT` is never used
[INFO] [stdout]   --> src/language.rs:78:15
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub const HASNT_PLAYED_GAMES_WITH_BOT:      &str = "lang_0050"; // $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AUTO_START_ENABLED` is never used
[INFO] [stdout]   --> src/language.rs:79:15
[INFO] [stdout]    |
[INFO] [stdout] 79 |     pub const AUTO_START_ENABLED:               &str = "lang_0051"; // $PLAYERS$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AUTO_START_DISABLED` is never used
[INFO] [stdout]   --> src/language.rs:80:15
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub const AUTO_START_DISABLED:              &str = "lang_0052";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_START_NOT_ENOUGH` is never used
[INFO] [stdout]   --> src/language.rs:81:15
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub const UNABLE_TO_START_NOT_ENOUGH:       &str = "lang_0053"; // $PLAYERS$ $REQUIREDPLAYERS$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_START_DOWNLOAD_IN_PROG` is never used
[INFO] [stdout]   --> src/language.rs:82:15
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub const UNABLE_TO_START_DOWNLOAD_IN_PROG: &str = "lang_0054";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COUNTDOWN_ABORTED` is never used
[INFO] [stdout]   --> src/language.rs:83:15
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub const COUNTDOWN_ABORTED:                &str = "lang_0055";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_WAS_KICKED_BY` is never used
[INFO] [stdout]   --> src/language.rs:84:15
[INFO] [stdout]    |
[INFO] [stdout] 84 |     pub const PLAYER_WAS_KICKED_BY:             &str = "lang_0056"; // $VICTIM$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_KICK_NO_MATCH` is never used
[INFO] [stdout]   --> src/language.rs:85:15
[INFO] [stdout]    |
[INFO] [stdout] 85 |     pub const UNABLE_TO_KICK_NO_MATCH:          &str = "lang_0057"; // $VICTIM$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_KICK_MORE_THAN_ONE` is never used
[INFO] [stdout]   --> src/language.rs:86:15
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub const UNABLE_TO_KICK_MORE_THAN_ONE:     &str = "lang_0058"; // $VICTIM$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SETTING_LATENCY_TO` is never used
[INFO] [stdout]   --> src/language.rs:87:15
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub const SETTING_LATENCY_TO:               &str = "lang_0059"; // $LATENCY$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SETTING_LATENCY_TO_MIN` is never used
[INFO] [stdout]   --> src/language.rs:88:15
[INFO] [stdout]    |
[INFO] [stdout] 88 |     pub const SETTING_LATENCY_TO_MIN:           &str = "lang_0060"; // $LATENCY$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SETTING_LATENCY_TO_MAX` is never used
[INFO] [stdout]   --> src/language.rs:89:15
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub const SETTING_LATENCY_TO_MAX:           &str = "lang_0061"; // $LATENCY$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LATENCY_IS` is never used
[INFO] [stdout]   --> src/language.rs:90:15
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub const LATENCY_IS:                       &str = "lang_0062"; // $LATENCY$
[INFO] [stdout]    |               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SYNC_LIMIT_IS` is never used
[INFO] [stdout]   --> src/language.rs:91:15
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub const SYNC_LIMIT_IS:                    &str = "lang_0063"; // $SYNCLIMIT$
[INFO] [stdout]    |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SETTING_SYNC_LIMIT_TO` is never used
[INFO] [stdout]   --> src/language.rs:92:15
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub const SETTING_SYNC_LIMIT_TO:            &str = "lang_0064"; // $SYNCLIMIT$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SETTING_SYNC_LIMIT_TO_MIN` is never used
[INFO] [stdout]   --> src/language.rs:93:15
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub const SETTING_SYNC_LIMIT_TO_MIN:        &str = "lang_0065"; // $SYNCLIMIT$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SETTING_SYNC_LIMIT_TO_MAX` is never used
[INFO] [stdout]   --> src/language.rs:94:15
[INFO] [stdout]    |
[INFO] [stdout] 94 |     pub const SETTING_SYNC_LIMIT_TO_MAX:        &str = "lang_0066"; // $SYNCLIMIT$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_START_COUNTDOWN` is never used
[INFO] [stdout]   --> src/language.rs:95:15
[INFO] [stdout]    |
[INFO] [stdout] 95 |     pub const UNABLE_TO_START_COUNTDOWN:        &str = "lang_0067";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COUNTDOWN_STARTED` is never used
[INFO] [stdout]   --> src/language.rs:96:15
[INFO] [stdout]    |
[INFO] [stdout] 96 |     pub const COUNTDOWN_STARTED:                &str = "lang_0068"; // $SECONDS$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_LOCKED` is never used
[INFO] [stdout]   --> src/language.rs:97:15
[INFO] [stdout]    |
[INFO] [stdout] 97 |     pub const GAME_LOCKED:                      &str = "lang_0069";
[INFO] [stdout]    |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_UNLOCKED` is never used
[INFO] [stdout]   --> src/language.rs:98:15
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub const GAME_UNLOCKED:                    &str = "lang_0070";
[INFO] [stdout]    |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WAS_KICKED_FOR_LAGGING` is never used
[INFO] [stdout]   --> src/language.rs:99:15
[INFO] [stdout]    |
[INFO] [stdout] 99 |     pub const WAS_KICKED_FOR_LAGGING:           &str = "lang_0071"; // $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_BAN_NO_MATCH` is never used
[INFO] [stdout]    --> src/language.rs:100:15
[INFO] [stdout]     |
[INFO] [stdout] 100 |     pub const UNABLE_TO_BAN_NO_MATCH:           &str = "lang_0072"; // $VICTIM$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_BAN_MORE_THAN_ONE` is never used
[INFO] [stdout]    --> src/language.rs:101:15
[INFO] [stdout]     |
[INFO] [stdout] 101 |     pub const UNABLE_TO_BAN_MORE_THAN_ONE:      &str = "lang_0073"; // $VICTIM$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_WAS_BANNED_BY` is never used
[INFO] [stdout]    --> src/language.rs:102:15
[INFO] [stdout]     |
[INFO] [stdout] 102 |     pub const PLAYER_WAS_BANNED_BY:             &str = "lang_0074"; // $SERVER$ $VICTIM$ $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HAS_PLAYED_DOTA_GAMES_WITH_BOT` is never used
[INFO] [stdout]    --> src/language.rs:103:15
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub const HAS_PLAYED_DOTA_GAMES_WITH_BOT:   &str = "lang_0075"; // $USER$ ... (20 placeholders)
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HASNT_PLAYED_DOTA_GAMES_WITH_BOT` is never used
[INFO] [stdout]    --> src/language.rs:104:15
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub const HASNT_PLAYED_DOTA_GAMES_WITH_BOT: &str = "lang_0076"; // $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AUTO_KICK_PING` is never used
[INFO] [stdout]    --> src/language.rs:105:15
[INFO] [stdout]     |
[INFO] [stdout] 105 |     pub const AUTO_KICK_PING:                   &str = "lang_0077"; // $VICTIM$ $PING$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPOOFCHECKED_AS` is never used
[INFO] [stdout]    --> src/language.rs:106:15
[INFO] [stdout]     |
[INFO] [stdout] 106 |     pub const SPOOFCHECKED_AS:                  &str = "lang_0078"; // $USER$ $REALM$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_HAS_LEFT_VOLUNTARILY` is never used
[INFO] [stdout]    --> src/language.rs:107:15
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub const PLAYER_HAS_LEFT_VOLUNTARILY:      &str = "lang_0079"; // $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_HAS_LOST_CONNECTION` is never used
[INFO] [stdout]    --> src/language.rs:108:15
[INFO] [stdout]     |
[INFO] [stdout] 108 |     pub const PLAYER_HAS_LOST_CONNECTION:       &str = "lang_0080"; // $USER$ $REASON$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_HAS_TIMED_OUT` is never used
[INFO] [stdout]    --> src/language.rs:109:15
[INFO] [stdout]     |
[INFO] [stdout] 109 |     pub const PLAYER_HAS_TIMED_OUT:             &str = "lang_0081"; // $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_DISCONNECTED` is never used
[INFO] [stdout]    --> src/language.rs:110:15
[INFO] [stdout]     |
[INFO] [stdout] 110 |     pub const PLAYER_DISCONNECTED:              &str = "lang_0082"; // $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DESYNC_DETECTED` is never used
[INFO] [stdout]    --> src/language.rs:111:15
[INFO] [stdout]     |
[INFO] [stdout] 111 |     pub const DESYNC_DETECTED:                  &str = "lang_0083";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_LOADED` is never used
[INFO] [stdout]    --> src/language.rs:112:15
[INFO] [stdout]     |
[INFO] [stdout] 112 |     pub const GAME_LOADED:                      &str = "lang_0084";
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_FINISHED_LOADING` is never used
[INFO] [stdout]    --> src/language.rs:113:15
[INFO] [stdout]     |
[INFO] [stdout] 113 |     pub const PLAYER_FINISHED_LOADING:          &str = "lang_0085"; // $USER$ $LOADINGTIME$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_DOWNLOADED_MAP` is never used
[INFO] [stdout]    --> src/language.rs:114:15
[INFO] [stdout]     |
[INFO] [stdout] 114 |     pub const PLAYER_DOWNLOADED_MAP:            &str = "lang_0086"; // $USER$ $SECONDS$ $RATE$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_DOWNLOAD` is never used
[INFO] [stdout]    --> src/language.rs:115:15
[INFO] [stdout]     |
[INFO] [stdout] 115 |     pub const UNABLE_TO_DOWNLOAD:               &str = "lang_0087"; // $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ANNOUNCE_MESSAGE_ENABLED` is never used
[INFO] [stdout]    --> src/language.rs:116:15
[INFO] [stdout]     |
[INFO] [stdout] 116 |     pub const ANNOUNCE_MESSAGE_ENABLED:         &str = "lang_0088";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ANNOUNCE_MESSAGE_DISABLED` is never used
[INFO] [stdout]    --> src/language.rs:117:15
[INFO] [stdout]     |
[INFO] [stdout] 117 |     pub const ANNOUNCE_MESSAGE_DISABLED:        &str = "lang_0089";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AUTO_SAVE_ENABLED` is never used
[INFO] [stdout]    --> src/language.rs:118:15
[INFO] [stdout]     |
[INFO] [stdout] 118 |     pub const AUTO_SAVE_ENABLED:                &str = "lang_0090";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AUTO_SAVE_DISABLED` is never used
[INFO] [stdout]    --> src/language.rs:119:15
[INFO] [stdout]     |
[INFO] [stdout] 119 |     pub const AUTO_SAVE_DISABLED:               &str = "lang_0091";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SHUFFLING_PLAYERS` is never used
[INFO] [stdout]    --> src/language.rs:120:15
[INFO] [stdout]     |
[INFO] [stdout] 120 |     pub const SHUFFLING_PLAYERS:                &str = "lang_0092";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_DOWNLOAD_NO_MATCH` is never used
[INFO] [stdout]    --> src/language.rs:121:15
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub const UNABLE_TO_DOWNLOAD_NO_MATCH:      &str = "lang_0093"; // $VICTIM$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_DOWNLOAD_MORE_THAN_ONE` is never used
[INFO] [stdout]    --> src/language.rs:122:15
[INFO] [stdout]     |
[INFO] [stdout] 122 |     pub const UNABLE_TO_DOWNLOAD_MORE_THAN_ONE: &str = "lang_0094"; // $VICTIM$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THE_GAME_IS_ABOUT_TO_START` is never used
[INFO] [stdout]    --> src/language.rs:123:15
[INFO] [stdout]     |
[INFO] [stdout] 123 |     pub const THE_GAME_IS_ABOUT_TO_START:       &str = "lang_0095";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHECKED_PLAYER` is never used
[INFO] [stdout]    --> src/language.rs:124:15
[INFO] [stdout]     |
[INFO] [stdout] 124 |     pub const CHECKED_PLAYER:                   &str = "lang_0096"; // $USER$ $PING$ $FROM$ $ADMIN$ $OWNER$ $SPOOFED$ $REALM$ $RESE...
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_CHECK_NO_MATCH` is never used
[INFO] [stdout]    --> src/language.rs:125:15
[INFO] [stdout]     |
[INFO] [stdout] 125 |     pub const UNABLE_TO_CHECK_NO_MATCH:         &str = "lang_0097"; // $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_CHECK_MORE_THAN_ONE` is never used
[INFO] [stdout]    --> src/language.rs:126:15
[INFO] [stdout]     |
[INFO] [stdout] 126 |     pub const UNABLE_TO_CHECK_MORE_THAN_ONE:    &str = "lang_0098"; // $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MUTED_PLAYER` is never used
[INFO] [stdout]    --> src/language.rs:127:15
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub const MUTED_PLAYER:                     &str = "lang_0099"; // $VICTIM$ $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNMUTED_PLAYER` is never used
[INFO] [stdout]    --> src/language.rs:128:15
[INFO] [stdout]     |
[INFO] [stdout] 128 |     pub const UNMUTED_PLAYER:                   &str = "lang_0100"; // $VICTIM$ $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rotr32` is never used
[INFO] [stdout]   --> src/map.rs:26:4
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn rotr32(x: u32, n: u32) -> u32 {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPOPT_HIDEMINIMAP` is never used
[INFO] [stdout]   --> src/map.rs:66:11
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub const MAPOPT_HIDEMINIMAP: u32 = 1 << 0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPOPT_MODIFYALLYPRIORITIES` is never used
[INFO] [stdout]   --> src/map.rs:67:11
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub const MAPOPT_MODIFYALLYPRIORITIES: u32 = 1 << 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPOPT_REVEALTERRAIN` is never used
[INFO] [stdout]   --> src/map.rs:69:11
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub const MAPOPT_REVEALTERRAIN: u32 = 1 << 4;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPOPT_CUSTOMTECHTREE` is never used
[INFO] [stdout]   --> src/map.rs:72:11
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub const MAPOPT_CUSTOMTECHTREE: u32 = 1 << 7;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPOPT_CUSTOMABILITIES` is never used
[INFO] [stdout]   --> src/map.rs:73:11
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub const MAPOPT_CUSTOMABILITIES: u32 = 1 << 8;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPOPT_CUSTOMUPGRADES` is never used
[INFO] [stdout]   --> src/map.rs:74:11
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub const MAPOPT_CUSTOMUPGRADES: u32 = 1 << 9;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPOPT_WATERWAVESONCLIFFSHORES` is never used
[INFO] [stdout]   --> src/map.rs:75:11
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub const MAPOPT_WATERWAVESONCLIFFSHORES: u32 = 1 << 11;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPOPT_WATERWAVESONSLOPESHORES` is never used
[INFO] [stdout]   --> src/map.rs:76:11
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub const MAPOPT_WATERWAVESONSLOPESHORES: u32 = 1 << 12;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPGAMETYPE_UNKNOWN0` is never used
[INFO] [stdout]   --> src/map.rs:92:11
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub const MAPGAMETYPE_UNKNOWN0: u32 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPGAMETYPE_SAVEDGAME` is never used
[INFO] [stdout]   --> src/map.rs:93:11
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub const MAPGAMETYPE_SAVEDGAME: u32 = 1 << 9;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPGAMETYPE_PRIVATEGAME` is never used
[INFO] [stdout]   --> src/map.rs:94:11
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub const MAPGAMETYPE_PRIVATEGAME: u32 = 1 << 11;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_null_terminated_string` is never used
[INFO] [stdout]    --> src/map.rs:106:4
[INFO] [stdout]     |
[INFO] [stdout] 106 | fn read_null_terminated_string(cursor: &mut Cursor<&Vec<u8>>) -> std::io::Result<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REPLAY_ACTION_CHAT_TO_HOST` is never used
[INFO] [stdout]  --> src/packed.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const REPLAY_ACTION_CHAT_TO_HOST:  u8 = 0x20;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REPLAY_ACTION_DESYNC` is never used
[INFO] [stdout]  --> src/packed.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const REPLAY_ACTION_DESYNC:        u8 = 0x22;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REPLAY_ACTION_LEAVE_GAME` is never used
[INFO] [stdout]  --> src/packed.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const REPLAY_ACTION_LEAVE_GAME:    u8 = 0x17;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REPLAY_ACTION_TIMESLOT` is never used
[INFO] [stdout]   --> src/packed.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const REPLAY_ACTION_TIMESLOT:      u8 = 0x1F;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REPLAY_ACTION_TIMESLOT2` is never used
[INFO] [stdout]   --> src/packed.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const REPLAY_ACTION_TIMESLOT2:     u8 = 0x1E;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REPLAY_ACTION_CHECKSUM` is never used
[INFO] [stdout]   --> src/packed.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const REPLAY_ACTION_CHECKSUM:      u8 = 0x22;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REPLAY_ACTION_SAVE_GAME` is never used
[INFO] [stdout]   --> src/packed.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const REPLAY_ACTION_SAVE_GAME:     u8 = 0x06;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REPLAY_WAR3_VERSION` is never used
[INFO] [stdout]   --> src/packed.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const REPLAY_WAR3_VERSION: u32 = 26;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayPlayer` is never constructed
[INFO] [stdout]   --> src/packed.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct ReplayPlayer {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayChatMessage` is never constructed
[INFO] [stdout]   --> src/packed.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct ReplayChatMessage {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayChecksum` is never constructed
[INFO] [stdout]   --> src/packed.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct ReplayChecksum {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Replay` is never constructed
[INFO] [stdout]   --> src/packed.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct Replay {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/packed.rs:79:12
[INFO] [stdout]     |
[INFO] [stdout]  77 | impl Replay {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout]  78 |     /// Создать пустой replay.
[INFO] [stdout]  79 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn add_player(&mut self, pid: u8, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn set_slots(&mut self, slots: Vec<GameSlot>) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn set_random_seed(&mut self, seed: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn set_select_mode(&mut self, mode: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn set_start_spot_count(&mut self, count: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn set_host_pid(&mut self, pid: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn set_host_name(&mut self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn set_map_game_type(&mut self, gt: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn add_timeslot(&mut self, send_interval: u16, actions_data: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub fn add_chat_message(&mut self, pid: u8, flag: u8, extra_flags: u32, message: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn add_checksum(&mut self, checksum: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn duration_seconds(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub fn build_header(&self) -> ByteArray {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn get_player_names(&self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_replay_header` is never used
[INFO] [stdout]    --> src/packed.rs:233:8
[INFO] [stdout]     |
[INFO] [stdout] 233 | pub fn load_replay_header(data: &[u8]) -> Option<Replay> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayBlock` is never constructed
[INFO] [stdout]  --> src/replay.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct ReplayBlock {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Replay` is never constructed
[INFO] [stdout]   --> src/replay.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Replay {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/replay.rs:45:12
[INFO] [stdout]     |
[INFO] [stdout]  44 | impl Replay {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout]  45 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub fn add_leave_game(&mut self, reason: u32, pid: u8, result: u32, time_ms: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn add_time_slot(&mut self, time_increment: u16, actions: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn add_chat_message(&mut self, pid: u8, flags: u8, message: &str, time_ms: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn num_blocks(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn duration_secs(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn set_slots(&mut self, slots: &[GameSlot]) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn set_random_seed(&mut self, seed: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn add_time_slot_actions(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn encode(&self) -> ByteArray {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SaveGame` is never constructed
[INFO] [stdout]  --> src/savegame.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct SaveGame {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `file_name_no_path`, `load`, and `parse` are never used
[INFO] [stdout]   --> src/savegame.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl SaveGame {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 17 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn file_name_no_path(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn load(file_path: &str) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     fn parse(&mut self, data: &[u8]) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sha1` is never used
[INFO] [stdout]    --> src/sha1.rs:154:8
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub fn sha1(data: &[u8]) -> [u8; 20] {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sha1_hex` is never used
[INFO] [stdout]    --> src/sha1.rs:162:8
[INFO] [stdout]     |
[INFO] [stdout] 162 | pub fn sha1_hex(data: &[u8]) -> String {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `connect_simple` is never used
[INFO] [stdout]    --> src/socket.rs:273:18
[INFO] [stdout]     |
[INFO] [stdout] 256 | impl GhostTcpClient {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 273 |     pub async fn connect_simple(address: &str, port: u16) -> io::Result<GhostTcpSocket> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedTcpSocket` is never used
[INFO] [stdout]    --> src/socket.rs:392:10
[INFO] [stdout]     |
[INFO] [stdout] 392 | pub type SharedTcpSocket = Arc<Mutex<GhostTcpSocket>>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_shared` is never used
[INFO] [stdout]    --> src/socket.rs:394:8
[INFO] [stdout]     |
[INFO] [stdout] 394 | pub fn make_shared(socket: GhostTcpSocket) -> SharedTcpSocket {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_HEADER_CONSTANT` is never used
[INFO] [stdout]    --> src/socket.rs:429:11
[INFO] [stdout]     |
[INFO] [stdout] 429 | pub const W3GS_HEADER_CONSTANT: u8 = 0xFF;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GPS_HEADER_CONSTANT` is never used
[INFO] [stdout]    --> src/socket.rs:430:11
[INFO] [stdout]     |
[INFO] [stdout] 430 | pub const GPS_HEADER_CONSTANT: u8 = 0xF8;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_byte_array_u8` is never used
[INFO] [stdout]  --> src/util.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn create_byte_array_u8(c: u8) -> ByteArray {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `append_byte_array_str` is never used
[INFO] [stdout]   --> src/util.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn append_byte_array_str(b: &mut ByteArray, s: &str, terminator: bool) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_c_string_as_str` is never used
[INFO] [stdout]    --> src/util.rs:152:8
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub fn extract_c_string_as_str(b: &[u8], start: usize) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `byte_array_to_hex_string` is never used
[INFO] [stdout]    --> src/util.rs:176:8
[INFO] [stdout]     |
[INFO] [stdout] 176 | pub fn byte_array_to_hex_string(b: &[u8]) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_hex_string` is never used
[INFO] [stdout]    --> src/util.rs:183:8
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub fn to_hex_string(i: u32) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ms_to_string` is never used
[INFO] [stdout]    --> src/util.rs:187:8
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub fn ms_to_string(ms: u32) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_stat_string` is never used
[INFO] [stdout]    --> src/util.rs:215:8
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub fn decode_stat_string(data: &[u8]) -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `replace_all` is never used
[INFO] [stdout]    --> src/util.rs:235:8
[INFO] [stdout]     |
[INFO] [stdout] 235 | pub fn replace_all(text: &mut String, key: &str, value: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tokenize` is never used
[INFO] [stdout]    --> src/util.rs:244:8
[INFO] [stdout]     |
[INFO] [stdout] 244 | pub fn tokenize(s: &str, delim: char) -> Vec<String> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_lan_ip` is never used
[INFO] [stdout]    --> src/util.rs:251:8
[INFO] [stdout]     |
[INFO] [stdout] 251 | pub fn is_lan_ip(ip: &[u8]) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_safe_name` is never used
[INFO] [stdout]    --> src/util.rs:278:8
[INFO] [stdout]     |
[INFO] [stdout] 278 | pub fn file_safe_name(name: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `factorial` is never used
[INFO] [stdout]    --> src/util.rs:287:8
[INFO] [stdout]     |
[INFO] [stdout] 287 | pub fn factorial(x: u32) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `HELP_SID_AUTH_CHECK` should have a snake case name
[INFO] [stdout]   --> src/bncsutilinterface.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn HELP_SID_AUTH_CHECK(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `help_sid_auth_check`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `HELP_SID_AUTH_ACCOUNTLOGON` should have a snake case name
[INFO] [stdout]    --> src/bncsutilinterface.rs:179:12
[INFO] [stdout]     |
[INFO] [stdout] 179 |     pub fn HELP_SID_AUTH_ACCOUNTLOGON(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `help_sid_auth_accountlogon`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `HELP_SID_AUTH_ACCOUNTLOGONPROOF` should have a snake case name
[INFO] [stdout]    --> src/bncsutilinterface.rs:185:12
[INFO] [stdout]     |
[INFO] [stdout] 185 |     pub fn HELP_SID_AUTH_ACCOUNTLOGONPROOF(&mut self, salt: ByteArray, server_key: ByteArray) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `help_sid_auth_accountlogonproof`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `HELP_PvPGNPasswordHash` should have a snake case name
[INFO] [stdout]    --> src/bncsutilinterface.rs:191:12
[INFO] [stdout]     |
[INFO] [stdout] 191 |     pub fn HELP_PvPGNPasswordHash(&mut self, user_password: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `help_pv_pgnpassword_hash`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `SEND_SID_CHECKAD` should have a snake case name
[INFO] [stdout]    --> src/bnetprotocol.rs:475:12
[INFO] [stdout]     |
[INFO] [stdout] 475 |     pub fn SEND_SID_CHECKAD(&self) -> ByteArray {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `send_sid_checkad`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [optimized + debuginfo] target(s) in 2m 23s
[INFO] running `Command { std: "docker" "inspect" "1c0dca5172b1f666e4ede7bd3a032e7312f2c20e80423bc6cd34e544fbe6d1c8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1c0dca5172b1f666e4ede7bd3a032e7312f2c20e80423bc6cd34e544fbe6d1c8", kill_on_drop: false }`
[INFO] [stdout] 1c0dca5172b1f666e4ede7bd3a032e7312f2c20e80423bc6cd34e544fbe6d1c8
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-03-05" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 0721b3ea0156d6f65ff2d1077506c448def8f1ede9221b37ce84056149830b40
[INFO] running `Command { std: "docker" "start" "-a" "0721b3ea0156d6f65ff2d1077506c448def8f1ede9221b37ce84056149830b40", kill_on_drop: false }`
[INFO] [stderr]    Compiling ghost-rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/bncsutilinterface.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info, error};
[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: `IncomingGameHost`
[INFO] [stdout]  --> src/bnet_update.rs:1:64
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::bnetprotocol::{BnetProtocol, IncomingChatEventEnum, IncomingGameHost, Protocol};
[INFO] [stdout]   |                                                                ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `make_shared`
[INFO] [stdout]  --> src/bnet_update.rs:3:58
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::socket::{GhostTcpClient, get_ticks, get_time, make_shared};
[INFO] [stdout]   |                                                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::gameslot::*`
[INFO] [stdout]    --> src/game.rs:707:9
[INFO] [stdout]     |
[INFO] [stdout] 707 |     use crate::gameslot::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashMap`
[INFO] [stdout]  --> src/gamebase.rs:9:24
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::collections::{HashMap, HashSet, VecDeque};
[INFO] [stdout]   |                        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/gamebase.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsyncReadExt` and `AsyncWriteExt`
[INFO] [stdout]   --> src/gamebase.rs:11:17
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::io::{AsyncReadExt, AsyncWriteExt};
[INFO] [stdout]    |                 ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TcpListener` and `TcpStream`
[INFO] [stdout]   --> src/gamebase.rs:12:18
[INFO] [stdout]    |
[INFO] [stdout] 12 | use tokio::net::{TcpListener, TcpStream};
[INFO] [stdout]    |                  ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]   --> src/gamebase.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use tokio::sync::RwLock;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `self`
[INFO] [stdout]   --> src/gamebase.rs:14:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | use tokio::time::{self, Duration};
[INFO] [stdout]    |                   ^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ghost::*`
[INFO] [stdout]  --> src/ghost_update.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::ghost::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_ticks`
[INFO] [stdout]  --> src/ghost_update.rs:3:21
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::socket::{get_ticks, get_time};
[INFO] [stdout]   |                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/ghost_update.rs:7:28
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{error, info, warn};
[INFO] [stdout]   |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/ghostdb.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/ghostdb.rs:3:21
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tracing::{info, error};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/map.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                 ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::game`
[INFO] [stdout]  --> src/map.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::game;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ghost::*`
[INFO] [stdout]  --> src/map.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::ghost::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::crc32::*`
[INFO] [stdout]   --> src/map.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::crc32::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::sha1::*`
[INFO] [stdout]   --> src/map.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::sha1::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config`
[INFO] [stdout]   --> src/map.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::config;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::gameslot::*`
[INFO] [stdout]   --> src/map.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::gameslot::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ghost`
[INFO] [stdout]   --> src/map.rs:14:26
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::{SharedGhost, Ghost};
[INFO] [stdout]    |                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `File`
[INFO] [stdout]   --> src/map.rs:17:20
[INFO] [stdout]    |
[INFO] [stdout] 17 | use mpq::{Archive, File};
[INFO] [stdout]    |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/map.rs:18:21
[INFO] [stdout]    |
[INFO] [stdout] 18 | use tracing::{info, error};
[INFO] [stdout]    |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/socket.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, error};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/map.rs:330:21
[INFO] [stdout]     |
[INFO] [stdout] 330 |                 let mut commonj = read_file_full("maps/common.j").unwrap();
[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/map.rs:335:25
[INFO] [stdout]     |
[INFO] [stdout] 335 |                     let mut blizzardj = read_file_full("maps/blizzard.j").unwrap();
[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/map.rs:346:39
[INFO] [stdout]     |
[INFO] [stdout] 346 | ...                   if let Ok(mut cmnj) = map.open_file("Scripts\\common.j") {
[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/map.rs:347:37
[INFO] [stdout]     |
[INFO] [stdout] 347 | ...                   let mut file_length = cmnj.size();
[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/map.rs:378:39
[INFO] [stdout]     |
[INFO] [stdout] 378 | ...                   if let Ok(mut blrj) = map.open_file("Scripts\\blizzard.j") {
[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/map.rs:379:37
[INFO] [stdout]     |
[INFO] [stdout] 379 | ...                   let mut file_length = blrj.size();
[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/map.rs:433:43
[INFO] [stdout]     |
[INFO] [stdout] 433 | ...                   if let Ok(mut file) = map.open_file(i) {
[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/map.rs:434:37
[INFO] [stdout]     |
[INFO] [stdout] 434 | ...                   let mut length = file.size();
[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/map.rs:482:13
[INFO] [stdout]     |
[INFO] [stdout] 482 |         let mut map_filter_type: u8 = MAPFILTER_TYPE_SCENARIO;
[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/map.rs:487:23
[INFO] [stdout]     |
[INFO] [stdout] 487 |             if let Ok(mut w3i_file) = map.open_file("war3map.w3i") {
[INFO] [stdout]     |                       ----^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `logon_type`
[INFO] [stdout]    --> src/bnet_update.rs:250:29
[INFO] [stdout]     |
[INFO] [stdout] 250 |                         let logon_type = p.get_logon_type();
[INFO] [stdout]     |                             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_logon_type`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mpq_file_time`
[INFO] [stdout]    --> src/bnet_update.rs:252:29
[INFO] [stdout]     |
[INFO] [stdout] 252 |                         let mpq_file_time = p.get_mpq_file_time();
[INFO] [stdout]     |                             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mpq_file_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `length_bytes` is never read
[INFO] [stdout]    --> src/bnetprotocol.rs:890:36
[INFO] [stdout]     |
[INFO] [stdout] 890 |             let mut length_bytes = ByteArray::new();
[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: unused variable: `save_game`
[INFO] [stdout]    --> src/game.rs:224:9
[INFO] [stdout]     |
[INFO] [stdout] 224 |         save_game: Option<SaveGame>,
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_save_game`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `interval`
[INFO] [stdout]    --> src/game.rs:586:27
[INFO] [stdout]     |
[INFO] [stdout] 586 |                 if let Ok(interval) = parts[0].parse::<u32>() {
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interval`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `reserved`
[INFO] [stdout]    --> src/gamebase.rs:377:34
[INFO] [stdout]     |
[INFO] [stdout] 377 |     pub fn get_empty_slot(&self, reserved: bool) -> Option<usize> {
[INFO] [stdout]     |                                  ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reserved`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `unlock`
[INFO] [stdout]    --> src/gamebase.rs:438:45
[INFO] [stdout]     |
[INFO] [stdout] 438 |     pub fn open_slot(&mut self, sid: usize, unlock: bool) {
[INFO] [stdout]     |                                             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_unlock`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_size`
[INFO] [stdout]    --> src/gamebase.rs:909:21
[INFO] [stdout]     |
[INFO] [stdout] 909 |                 let map_size = self.map.map_size.clone();
[INFO] [stdout]     |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_map_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_type`
[INFO] [stdout]    --> src/ghost_update.rs:142:13
[INFO] [stdout]     |
[INFO] [stdout] 142 |             game_type,
[INFO] [stdout]     |             ^^^^^^^^^ help: try ignoring the field: `game_type: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `creator`
[INFO] [stdout]    --> src/ghost_update.rs:145:13
[INFO] [stdout]     |
[INFO] [stdout] 145 |             creator,
[INFO] [stdout]     |             ^^^^^^^ help: try ignoring the field: `creator: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `creator_server`
[INFO] [stdout]    --> src/ghost_update.rs:146:13
[INFO] [stdout]     |
[INFO] [stdout] 146 |             creator_server,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ help: try ignoring the field: `creator_server: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stay_time`
[INFO] [stdout]    --> src/ghostdb.rs:343:9
[INFO] [stdout]     |
[INFO] [stdout] 343 |         stay_time: u32,
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stay_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `game_flags` is never read
[INFO] [stdout]    --> src/map.rs:184:35
[INFO] [stdout]     |
[INFO] [stdout] 184 |         let mut game_flags: u32 = 0;
[INFO] [stdout]     |                                   ^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]    --> src/map.rs:357:45
[INFO] [stdout]     |
[INFO] [stdout] 357 | ...                   let val = val ^ self.xor_rotate_left(&buf[..bytes_read]);
[INFO] [stdout]     |                           ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]    --> src/map.rs:389:45
[INFO] [stdout]     |
[INFO] [stdout] 389 | ...                   let val = val ^ self.xor_rotate_left(&buf[..bytes_read]);
[INFO] [stdout]     |                           ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_filter_type`
[INFO] [stdout]    --> src/map.rs:482:13
[INFO] [stdout]     |
[INFO] [stdout] 482 |         let mut map_filter_type: u8 = MAPFILTER_TYPE_SCENARIO;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_map_filter_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/map.rs:526:33
[INFO] [stdout]     |
[INFO] [stdout] 526 | ...                   for i in 0..raw_map_num_players {
[INFO] [stdout]     |                           ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `map_mpq_ready` is never read
[INFO] [stdout]    --> src/map.rs:299:37
[INFO] [stdout]     |
[INFO] [stdout] 299 |             let mut map_mpq_ready = false;
[INFO] [stdout]     |                                     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `KR_OLD_GAME_VERSION`, `KR_INVALID_VERSION`, `KR_ROC_KEY_IN_USE`, and `KR_TFT_KEY_IN_USE` are never constructed
[INFO] [stdout]   --> src/bnetprotocol.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub enum KeyResult {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 43 |     KR_GOOD = 0,
[INFO] [stdout] 44 |     KR_OLD_GAME_VERSION = 256,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 45 |     KR_INVALID_VERSION = 257,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 46 |     KR_ROC_KEY_IN_USE = 513,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 47 |     KR_TFT_KEY_IN_USE = 529,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `ip`, `date`, `game_name`, `admin`, and `reason` are never read
[INFO] [stdout]   --> src/game.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct DbBan {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] 10 |     pub id: u32,
[INFO] [stdout]    |         ^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub ip: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 14 |     pub date: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 15 |     pub game_name: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 16 |     pub admin: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 17 |     pub reason: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DbBan` 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: struct `DbGame` is never constructed
[INFO] [stdout]   --> src/game.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct DbGame {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/game.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | impl DbGame {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 59 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/game.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct DbGamePlayer {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 86 |     pub id: u32,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 87 |     pub game_id: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 88 |     pub name: String,
[INFO] [stdout] 89 |     pub ip: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 90 |     pub spoofed: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 91 |     pub spoofed_realm: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 92 |     pub reserved: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 93 |     pub loading_time: u32, // мс
[INFO] [stdout] 94 |     pub left: u32,         // game ticks в секундах
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 95 |     pub left_reason: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 96 |     pub team: u8,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 97 |     pub colour: u8,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DbGamePlayer` 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: struct `DbGamePlayerSummary` is never constructed
[INFO] [stdout]    --> src/game.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub struct DbGamePlayerSummary {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/game.rs:144:9
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub struct DbDotaPlayerSummary {
[INFO] [stdout]     |            ------------------- fields in this struct
[INFO] [stdout] 143 |     pub total_games: u32,
[INFO] [stdout] 144 |     pub total_wins: u32,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 145 |     pub total_losses: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub total_creep_kills: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 149 |     pub total_creep_denies: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 150 |     pub total_assists: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 151 |     pub total_neutral_kills: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 152 |     pub total_tower_kills: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 153 |     pub total_rax_kills: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 154 |     pub total_courier_kills: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DbDotaPlayerSummary` 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: multiple methods are never used
[INFO] [stdout]    --> src/game.rs:170:12
[INFO] [stdout]     |
[INFO] [stdout] 157 | impl DbDotaPlayerSummary {
[INFO] [stdout]     | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn avg_creep_kills(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn avg_creep_denies(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn avg_assists(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn avg_neutral_kills(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn avg_tower_kills(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub fn avg_rax_kills(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn avg_courier_kills(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Game` is never constructed
[INFO] [stdout]    --> src/game.rs:196:12
[INFO] [stdout]     |
[INFO] [stdout] 196 | pub struct Game {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `StatsType` is never used
[INFO] [stdout]    --> src/game.rs:215:10
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub enum StatsType {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/game.rs:222:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | impl Game {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] 222 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 299 |     pub fn event_game_started(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn event_player_deleted(&mut self, player_idx: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     pub fn handle_bot_command(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 421 |     fn cmd_ping(&self) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 432 |     fn cmd_abort(&mut self) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 441 |     fn cmd_close(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     fn cmd_closeall(&mut self) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 456 |     fn cmd_open(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 466 |     fn cmd_openall(&mut self) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |     fn cmd_hold(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 480 |     fn cmd_kick(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 495 |     fn cmd_mute(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 505 |     fn cmd_unmute(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 515 |     fn cmd_start(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 523 |     fn cmd_swap(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 540 |     fn cmd_shuffle(&mut self) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 564 |     fn cmd_lock(&mut self, has_perm: bool) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 573 |     fn cmd_unlock(&mut self) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 578 |     fn cmd_announce(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 595 |     fn cmd_autosave(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 609 |     fn cmd_autostart(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 621 |     fn cmd_drop(&mut self) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 630 |     fn cmd_from(&self) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 640 |     fn cmd_latency(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 653 |     fn cmd_synclimit(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 666 |     fn cmd_comp(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BotCommandResult` is never used
[INFO] [stdout]    --> src/game.rs:682:10
[INFO] [stdout]     |
[INFO] [stdout] 682 | pub enum BotCommandResult {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `message` and `broadcast` are never used
[INFO] [stdout]    --> src/game.rs:696:12
[INFO] [stdout]     |
[INFO] [stdout] 695 | impl BotCommandResult {
[INFO] [stdout]     | --------------------- associated functions in this implementation
[INFO] [stdout] 696 |     pub fn message(msg: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 699 |     pub fn broadcast(msg: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_PRIVATE` is never used
[INFO] [stdout]   --> src/gamebase.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const GAME_PRIVATE: u8 = 0;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_PUBLIC` is never used
[INFO] [stdout]   --> src/gamebase.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const GAME_PUBLIC: u8 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_DISCONNECT` is never used
[INFO] [stdout]   --> src/gamebase.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const PLAYER_LEAVE_DISCONNECT: u32 = 13;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_LOST` is never used
[INFO] [stdout]   --> src/gamebase.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const PLAYER_LEAVE_LOST: u32 = 7;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_LOSTBUILDINGS` is never used
[INFO] [stdout]   --> src/gamebase.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const PLAYER_LEAVE_LOSTBUILDINGS: u32 = 8;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_WON` is never used
[INFO] [stdout]   --> src/gamebase.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const PLAYER_LEAVE_WON: u32 = 9;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_DRAW` is never used
[INFO] [stdout]   --> src/gamebase.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const PLAYER_LEAVE_DRAW: u32 = 10;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_OBSERVER` is never used
[INFO] [stdout]   --> src/gamebase.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub const PLAYER_LEAVE_OBSERVER: u32 = 11;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_LOBBY` is never used
[INFO] [stdout]   --> src/gamebase.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const PLAYER_LEAVE_LOBBY: u32 = 21;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_GPROXY` is never used
[INFO] [stdout]   --> src/gamebase.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const PLAYER_LEAVE_GPROXY: u32 = 100;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_GAMETYPE_UNKNOWN0` is never used
[INFO] [stdout]   --> src/gamebase.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const MAP_GAMETYPE_UNKNOWN0: u32 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_GAMETYPE_SAVEDGAME` is never used
[INFO] [stdout]   --> src/gamebase.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const MAP_GAMETYPE_SAVEDGAME: u32 = 512;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_OPT_FIXEDPLAYERSETTING` is never used
[INFO] [stdout]   --> src/gamebase.rs:31:11
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub const MAP_OPT_FIXEDPLAYERSETTING: u32 = 4;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BaseGame` is never constructed
[INFO] [stdout]   --> src/gamebase.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct BaseGame {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/gamebase.rs:154:12
[INFO] [stdout]      |
[INFO] [stdout]  152 | impl BaseGame {
[INFO] [stdout]      | ------------- associated items in this implementation
[INFO] [stdout]  153 |     /// Create a new BaseGame from config / ghost state
[INFO] [stdout]  154 |     pub fn new(
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  318 |     pub fn get_slots_occupied(&self) -> u32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  325 |     pub fn get_slots_open(&self) -> u32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  332 |     pub fn get_num_human_players(&self) -> u32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  336 |     pub fn get_num_players(&self) -> u32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  344 |     pub fn get_host_pid(&self) -> u8 {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  353 |     pub fn get_pids(&self) -> Vec<u8> {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  361 |     pub fn get_new_pid(&self) -> u8 {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  377 |     pub fn get_empty_slot(&self, reserved: bool) -> Option<usize> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  386 |     pub fn get_sid_from_pid(&self, pid: u8) -> Option<usize> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  392 |     pub fn get_player_from_pid(&self, pid: u8) -> Option<&GamePlayer> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  398 |     pub fn get_player_from_pid_mut(&mut self, pid: u8) -> Option<&mut GamePlayer> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  404 |     pub fn get_player_from_name(&self, name: &str, sensitive: bool) -> Option<&GamePlayer> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  415 |     pub fn get_player_index_from_name(&self, name: &str, sensitive: bool) -> Option<usize> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  426 |     pub fn get_player_from_sid(&self, sid: usize) -> Option<&GamePlayer> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  434 |     pub fn is_owner(&self, name: &str) -> bool {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  438 |     pub fn open_slot(&mut self, sid: usize, unlock: bool) {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  448 |     pub fn close_slot(&mut self, sid: usize) {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  458 |     pub fn swap_slots(&mut self, sid1: usize, sid2: usize) {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  483 |     pub fn create_virtual_host(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  501 |     pub fn delete_virtual_host(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  514 |     pub fn send_to(&self, player: &mut GamePlayer, data: &[u8]) {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  518 |     pub fn send_all(&mut self, data: &[u8]) {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  526 |     pub fn send_chat(&mut self, from_pid: u8, to_pid: u8, message: &str) {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  562 |     pub fn send_all_chat_from(&mut self, from_pid: u8, message: &str) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  594 |     pub fn send_all_chat(&mut self, message: &str) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  599 |     pub fn send_all_slot_info(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  613 |     pub fn get_description(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  635 |     pub fn send_all_actions(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  711 |     pub fn start_countdown_auto(&mut self, require_spoof: bool) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  745 |     pub fn event_game_started(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  770 |     pub fn check_lag(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  814 |     pub fn check_lag_stop(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  850 |     pub fn stop_laggers(&mut self, reason: &str) {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  864 |     pub fn update(&mut self) -> bool {
[INFO] [stdout]      |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1098 |     pub fn close_all_slots(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1106 |     pub fn open_all_slots(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1114 |     pub fn start_count_down(&mut self, force: bool) -> Option<u8> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1122 |     pub fn set_announce(&mut self, announce: bool) {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1127 |     pub fn computer_slot(&mut self, sid: u8, skill: u8) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1134 |     pub fn add_to_reserved(&mut self, name: &str) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1138 |     pub fn set_hcl(&mut self, _hcl: &str) {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `packet_type` and `data` are never read
[INFO] [stdout]   --> src/gameplayer.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct CommandPacket {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 21 |     pub packet_type: u8, // W3GS_HEADER_CONSTANT или GPS_HEADER_CONSTANT
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 22 |     pub id: u8,
[INFO] [stdout] 23 |     pub data: ByteArray,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CommandPacket` 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 `delete_me` is never read
[INFO] [stdout]   --> src/gameplayer.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct PotentialPlayer {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] 38 |     pub delete_me: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PotentialPlayer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/gameplayer.rs:131:9
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub struct GamePlayer {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub pid: u8,
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 132 |     pub name: String,
[INFO] [stdout] 133 |     pub internal_ip: [u8; 4],
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 134 |     pub joined_realm: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub total_packets_received: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub checksums: VecDeque<u32>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub left_code: u32,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 148 |     pub left_reason: String,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 149 |     pub spoofed_realm: String,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 150 |     pub login_attempts: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 151 |     pub sync_counter: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub join_time: u32,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 155 |     pub last_map_part_sent: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 156 |     pub last_map_part_acked: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 157 |     pub started_downloading_ticks: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 158 |     pub finished_downloading_time: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 159 |     pub finished_loading_ticks: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 160 |     pub started_lagging_ticks: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 161 |     pub stats_sent_time: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 162 |     pub stats_dota_sent_time: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 163 |     pub last_gproxy_wait_notice_sent_time: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub load_in_game_data: VecDeque<ByteArray>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub score: f64,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub logged_in: bool,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 173 |     pub spoofed: bool,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 174 |     pub reserved: bool,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 175 |     pub whois_should_be_sent: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 176 |     pub whois_sent: bool,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 177 |     pub download_allowed: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 178 |     pub download_started: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 179 |     pub download_finished: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 180 |     pub finished_loading: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 181 |     pub lagging: bool,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 182 |     pub drop_vote: bool,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 183 |     pub kick_vote: bool,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 184 |     pub start_vote: bool,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 185 |     pub muted: bool,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 186 |     pub left_message_sent: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub gproxy_disconnect_notice_sent: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 191 |     pub gproxy_buffer: VecDeque<ByteArray>,
[INFO] [stdout] 192 |     pub gproxy_reconnect_key: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 193 |     pub last_gproxy_ack_time: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub delete_me: bool,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub send_queue: VecDeque<ByteArray>,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `GamePlayer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_SLOT_INFO_JOIN` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const W3GS_SLOT_INFO_JOIN: u8 = 0x04;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_PLAYER_INFO` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const W3GS_PLAYER_INFO: u8 = 0x06;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_PLAYER_LEAVE_OTHERS` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const W3GS_PLAYER_LEAVE_OTHERS: u8 = 0x07;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_GAME_LOADED_OTHERS` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const W3GS_GAME_LOADED_OTHERS: u8 = 0x08;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_SLOT_INFO` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const W3GS_SLOT_INFO: u8 = 0x09;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_INCOMING_ACTION` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const W3GS_INCOMING_ACTION: u8 = 0x0C;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_CHAT_FROM_HOST` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const W3GS_CHAT_FROM_HOST: u8 = 0x0F;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_START_LAG` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const W3GS_START_LAG: u8 = 0x10;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_STOP_LAG` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const W3GS_STOP_LAG: u8 = 0x11;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_GAME_OVER` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const W3GS_GAME_OVER: u8 = 0x14;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_PLAYER_KICKED` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const W3GS_PLAYER_KICKED: u8 = 0x1C;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_LEAVE_ACK` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const W3GS_LEAVE_ACK: u8 = 0x1B;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_REQ_JOIN` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub const W3GS_REQ_JOIN: u8 = 0x1E;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_LEAVE_GAME` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const W3GS_LEAVE_GAME: u8 = 0x21;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_GAME_LOADED_SELF` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const W3GS_GAME_LOADED_SELF: u8 = 0x23;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_OUTGOING_ACTION` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:28:11
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub const W3GS_OUTGOING_ACTION: u8 = 0x26;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_OUTGOING_KEEPALIVE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const W3GS_OUTGOING_KEEPALIVE: u8 = 0x27;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_CHAT_TO_HOST` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const W3GS_CHAT_TO_HOST: u8 = 0x28;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_DROP_REQ` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:31:11
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub const W3GS_DROP_REQ: u8 = 0x29;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_SEARCH_GAME` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:32:11
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub const W3GS_SEARCH_GAME: u8 = 0x2F;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_GAME_INFO` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub const W3GS_GAME_INFO: u8 = 0x30;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_CREATE_GAME` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:34:11
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub const W3GS_CREATE_GAME: u8 = 0x31;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_REFRESH_GAME` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:35:11
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub const W3GS_REFRESH_GAME: u8 = 0x32;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_DECREATE_GAME` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const W3GS_DECREATE_GAME: u8 = 0x33;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_MAP_CHECK` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:37:11
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub const W3GS_MAP_CHECK: u8 = 0x3D;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_START_DOWNLOAD` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:38:11
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub const W3GS_START_DOWNLOAD: u8 = 0x3F;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_MAP_SIZE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:39:11
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub const W3GS_MAP_SIZE: u8 = 0x42;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_MAP_PART` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:40:11
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub const W3GS_MAP_PART: u8 = 0x43;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_MAP_PART_OK` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:41:11
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub const W3GS_MAP_PART_OK: u8 = 0x44;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_MAP_PART_ERROR` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:42:11
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub const W3GS_MAP_PART_ERROR: u8 = 0x45;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_PONG_TO_HOST` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:43:11
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub const W3GS_PONG_TO_HOST: u8 = 0x46;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_INCOMING_ACTION2` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:44:11
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub const W3GS_INCOMING_ACTION2: u8 = 0x48;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_DISCONNECT` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:47:11
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub const PLAYER_LEAVE_DISCONNECT: u32 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_LOST` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:48:11
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub const PLAYER_LEAVE_LOST: u32 = 7;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_LOSTBUILDINGS` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:49:11
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub const PLAYER_LEAVE_LOSTBUILDINGS: u32 = 8;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_WON` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:50:11
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub const PLAYER_LEAVE_WON: u32 = 9;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_DRAW` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:51:11
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub const PLAYER_LEAVE_DRAW: u32 = 10;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_OBSERVER` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:52:11
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub const PLAYER_LEAVE_OBSERVER: u32 = 11;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_LOBBY` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:53:11
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub const PLAYER_LEAVE_LOBBY: u32 = 13;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_LEAVE_GPROXY` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:54:11
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub const PLAYER_LEAVE_GPROXY: u32 = 100;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REJECTJOIN_STARTED` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:58:11
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub const REJECTJOIN_STARTED: u32 = 0x10;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REJECTJOIN_WRONGPASSWORD` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub const REJECTJOIN_WRONGPASSWORD: u32 = 0x27;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_STATUS_CLOSED` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:63:11
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub const SLOT_STATUS_CLOSED: u8 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_STATUS_OCCUPIED` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:64:11
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub const SLOT_STATUS_OCCUPIED: u8 = 2;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_RACE_HUMAN` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:67:11
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub const SLOT_RACE_HUMAN: u8 = 0x01;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_RACE_ORC` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:68:11
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub const SLOT_RACE_ORC: u8 = 0x02;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_RACE_NIGHTELF` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:69:11
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub const SLOT_RACE_NIGHTELF: u8 = 0x04;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_RACE_UNDEAD` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:70:11
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub const SLOT_RACE_UNDEAD: u8 = 0x08;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_RACE_RANDOM` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:71:11
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub const SLOT_RACE_RANDOM: u8 = 0x20;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_RACE_SELECTABLE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:72:11
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub const SLOT_RACE_SELECTABLE: u8 = 0x40;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_COMP_EASY` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:75:11
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub const SLOT_COMP_EASY: u8 = 0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_COMP_NORMAL` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:76:11
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub const SLOT_COMP_NORMAL: u8 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOT_COMP_INSANE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:77:11
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub const SLOT_COMP_INSANE: u8 = 2;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_OPT_MELEE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:80:11
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub const MAP_OPT_MELEE: u32 = 1 << 2;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_OPT_FIXED_PLAYER_SETTINGS` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:81:11
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub const MAP_OPT_FIXED_PLAYER_SETTINGS: u32 = 1 << 3;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_OPT_CUSTOM_FORCES` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:82:11
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub const MAP_OPT_CUSTOM_FORCES: u32 = 1 << 5;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_OPT_CUSTOM_TECHTREE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:83:11
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub const MAP_OPT_CUSTOM_TECHTREE: u32 = 1 << 6;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_OPT_CUSTOM_ABILITIES` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:84:11
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub const MAP_OPT_CUSTOM_ABILITIES: u32 = 1 << 7;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_OPT_CUSTOM_UPGRADES` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:85:11
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub const MAP_OPT_CUSTOM_UPGRADES: u32 = 1 << 8;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_OPT_WATERWAVE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:86:11
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub const MAP_OPT_WATERWAVE: u32 = 1 << 12;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_FLAG_TEAMSTOGETHER` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:89:11
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub const MAP_FLAG_TEAMSTOGETHER: u32 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_FLAG_FIXEDTEAMS` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:90:11
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub const MAP_FLAG_FIXEDTEAMS: u32 = 2;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_FLAG_UNITSHARE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:91:11
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub const MAP_FLAG_UNITSHARE: u32 = 4;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_FLAG_RANDOMHERO` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:92:11
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub const MAP_FLAG_RANDOMHERO: u32 = 8;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_FLAG_RANDOMRACES` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:93:11
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub const MAP_FLAG_RANDOMRACES: u32 = 16;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_NONE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:96:11
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub const GAME_NONE: u8 = 0;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_PUBLIC` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:97:11
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub const GAME_PUBLIC: u8 = 16;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_PRIVATE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:98:11
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub const GAME_PRIVATE: u8 = 17;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_CLOSE` is never used
[INFO] [stdout]   --> src/gameprotocol.rs:99:11
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub const GAME_CLOSE: u8 = 18;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_GAMETYPE_UNKNOWN0` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:102:11
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub const MAP_GAMETYPE_UNKNOWN0: u32 = 0;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_GAMETYPE_CUSTOM` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:103:11
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub const MAP_GAMETYPE_CUSTOM: u32 = 1;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_GAMETYPE_SAVEDGAME` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:104:11
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub const MAP_GAMETYPE_SAVEDGAME: u32 = 0x0200;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_GAMETYPE_PRIVATEGAME` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:105:11
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub const MAP_GAMETYPE_PRIVATEGAME: u32 = 0x0800;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_GAMETYPE_BLIZZARD` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:106:11
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub const MAP_GAMETYPE_BLIZZARD: u32 = 0x2000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_GAMETYPE_MAKERBLIZ` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:107:11
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub const MAP_GAMETYPE_MAKERBLIZ: u32 = 0x2000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAP_GAMETYPE_MAKERUSER` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:108:11
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub const MAP_GAMETYPE_MAKERUSER: u32 = 0x4000;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHAT_MESSAGE` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:111:11
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub const CHAT_MESSAGE: u8 = 16;
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHAT_TEAM_CHANGE` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:112:11
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub const CHAT_TEAM_CHANGE: u8 = 17;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHAT_COLOUR_CHANGE` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:113:11
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub const CHAT_COLOUR_CHANGE: u8 = 18;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHAT_RACE_CHANGE` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:114:11
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub const CHAT_RACE_CHANGE: u8 = 19;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHAT_HANDICAP_CHANGE` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:115:11
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub const CHAT_HANDICAP_CHANGE: u8 = 20;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHAT_MESSAGE_EXTRA` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:116:11
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub const CHAT_MESSAGE_EXTRA: u8 = 32;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHATFLAG_TO_ALL` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:119:11
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub const CHATFLAG_TO_ALL: u8 = CHAT_MESSAGE;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOTSTATUS_OPEN` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:120:11
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub const SLOTSTATUS_OPEN: u8 = SLOT_STATUS_OPEN;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOTSTATUS_CLOSED` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:121:11
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub const SLOTSTATUS_CLOSED: u8 = SLOT_STATUS_CLOSED;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SLOTSTATUS_OCCUPIED` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:122:11
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub const SLOTSTATUS_OCCUPIED: u8 = SLOT_STATUS_OCCUPIED;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IncomingAction` is never constructed
[INFO] [stdout]    --> src/gameprotocol.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub struct IncomingAction {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_playerinfo` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:134:8
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub fn send_playerinfo(pid: u8, name: &str, external_ip: &[u8], internal_ip: &[u8]) -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_playerleave_others` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:138:8
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn send_playerleave_others(pid: u8, left_code: u32) -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_chat_from_host` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:142:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub fn send_chat_from_host(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_slotinfo` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:152:8
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub fn send_slotinfo(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_incoming_action` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:161:8
[INFO] [stdout]     |
[INFO] [stdout] 161 | pub fn send_incoming_action(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_countdown_end` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:177:8
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub fn send_countdown_end() -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_start_lag` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:181:8
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub fn send_start_lag(laggers: &[(u8, u32)]) -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_stop_lag` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:192:8
[INFO] [stdout]     |
[INFO] [stdout] 192 | pub fn send_stop_lag(pid: u8, lag_time: u32) -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_ping_from_host` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:200:8
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub fn send_ping_from_host() -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_header` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:233:8
[INFO] [stdout]     |
[INFO] [stdout] 233 | pub fn validate_header(data: &[u8]) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_slot_info_join` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:271:8
[INFO] [stdout]     |
[INFO] [stdout] 271 | pub fn send_w3gs_slot_info_join(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_player_info` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:302:8
[INFO] [stdout]     |
[INFO] [stdout] 302 | pub fn send_w3gs_player_info(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_player_leave` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:334:8
[INFO] [stdout]     |
[INFO] [stdout] 334 | pub fn send_w3gs_player_leave(pid: u8, left_code: u32) -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_slot_info` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:342:8
[INFO] [stdout]     |
[INFO] [stdout] 342 | pub fn send_w3gs_slot_info(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_game_loaded` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:369:8
[INFO] [stdout]     |
[INFO] [stdout] 369 | pub fn send_w3gs_game_loaded(pid: u8) -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_map_check` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:377:8
[INFO] [stdout]     |
[INFO] [stdout] 377 | pub fn send_w3gs_map_check(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_chat` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:395:8
[INFO] [stdout]     |
[INFO] [stdout] 395 | pub fn send_w3gs_chat(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_w3gs_start_download` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:414:8
[INFO] [stdout]     |
[INFO] [stdout] 414 | pub fn send_w3gs_start_download(from_pid: u8) -> ByteArray {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IncomingJoinPlayer` is never constructed
[INFO] [stdout]    --> src/gameprotocol.rs:423:12
[INFO] [stdout]     |
[INFO] [stdout] 423 | pub struct IncomingJoinPlayer {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `receive_w3gs_req_join` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:430:8
[INFO] [stdout]     |
[INFO] [stdout] 430 | pub fn receive_w3gs_req_join(data: &[u8]) -> Option<IncomingJoinPlayer> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `receive_w3gs_leave_game` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:459:8
[INFO] [stdout]     |
[INFO] [stdout] 459 | pub fn receive_w3gs_leave_game(data: &[u8]) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `receive_w3gs_pong` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:468:8
[INFO] [stdout]     |
[INFO] [stdout] 468 | pub fn receive_w3gs_pong(data: &[u8]) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `receive_w3gs_action` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:477:8
[INFO] [stdout]     |
[INFO] [stdout] 477 | pub fn receive_w3gs_action(data: &[u8]) -> Option<(ByteArray, ByteArray)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `receive_w3gs_keepalive` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:487:8
[INFO] [stdout]     |
[INFO] [stdout] 487 | pub fn receive_w3gs_keepalive(data: &[u8]) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ChatToHost` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:496:10
[INFO] [stdout]     |
[INFO] [stdout] 496 | pub enum ChatToHost {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `receive_w3gs_chat_to_host` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:530:8
[INFO] [stdout]     |
[INFO] [stdout] 530 | pub fn receive_w3gs_chat_to_host(data: &[u8]) -> Option<ChatToHost> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IncomingMapSize` is never constructed
[INFO] [stdout]    --> src/gameprotocol.rs:615:12
[INFO] [stdout]     |
[INFO] [stdout] 615 | pub struct IncomingMapSize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `receive_w3gs_map_size` is never used
[INFO] [stdout]    --> src/gameprotocol.rs:620:8
[INFO] [stdout]     |
[INFO] [stdout] 620 | pub fn receive_w3gs_map_size(data: &[u8]) -> Option<IncomingMapSize> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_PRIVATE` is never used
[INFO] [stdout]   --> src/ghost.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const GAME_PRIVATE: u8 = 17;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_PUBLIC` is never used
[INFO] [stdout]   --> src/ghost.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const GAME_PUBLIC: u8 = 16;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbGame` is never constructed
[INFO] [stdout]   --> src/ghostdb.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct DbGame {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DbGamePlayer` is never constructed
[INFO] [stdout]   --> src/ghostdb.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct DbGamePlayer {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScoreCheck` is never constructed
[INFO] [stdout]   --> src/ghostdb.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct ScoreCheck {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REJECT_GPS_INVALID` is never used
[INFO] [stdout]   --> src/gpsprotocol.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const REJECT_GPS_INVALID:  u32 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_length` is never used
[INFO] [stdout]   --> src/gpsprotocol.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn validate_length(data: &[u8]) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_gpss_reconnect` is never used
[INFO] [stdout]   --> src/gpsprotocol.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn send_gpss_reconnect(last_packet: u32) -> ByteArray {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_gpss_ack` is never used
[INFO] [stdout]   --> src/gpsprotocol.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn send_gpss_ack(last_packet: u32) -> ByteArray {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER_IS_ALREADY_AN_ADMIN` is never used
[INFO] [stdout]   --> src/language.rs:30:15
[INFO] [stdout]    |
[INFO] [stdout] 30 |     pub const USER_IS_ALREADY_AN_ADMIN:         &str = "lang_0002"; // $SERVER$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ADDED_USER_TO_ADMIN_DB` is never used
[INFO] [stdout]   --> src/language.rs:31:15
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub const ADDED_USER_TO_ADMIN_DB:           &str = "lang_0003"; // $SERVER$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERROR_ADDING_USER_TO_ADMIN_DB` is never used
[INFO] [stdout]   --> src/language.rs:32:15
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub const ERROR_ADDING_USER_TO_ADMIN_DB:    &str = "lang_0004"; // $SERVER$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER_IS_ALREADY_BANNED` is never used
[INFO] [stdout]   --> src/language.rs:34:15
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub const USER_IS_ALREADY_BANNED:           &str = "lang_0006"; // $SERVER$ $VICTIM$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BANNED_USER` is never used
[INFO] [stdout]   --> src/language.rs:35:15
[INFO] [stdout]    |
[INFO] [stdout] 35 |     pub const BANNED_USER:                      &str = "lang_0007"; // $SERVER$ $VICTIM$
[INFO] [stdout]    |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERROR_BANNING_USER` is never used
[INFO] [stdout]   --> src/language.rs:36:15
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub const ERROR_BANNING_USER:               &str = "lang_0008"; // $SERVER$ $VICTIM$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER_IS_AN_ADMIN` is never used
[INFO] [stdout]   --> src/language.rs:37:15
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub const USER_IS_AN_ADMIN:                 &str = "lang_0009"; // $SERVER$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER_IS_NOT_AN_ADMIN` is never used
[INFO] [stdout]   --> src/language.rs:38:15
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub const USER_IS_NOT_AN_ADMIN:             &str = "lang_0010"; // $SERVER$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER_IS_NOT_BANNED` is never used
[INFO] [stdout]   --> src/language.rs:40:15
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub const USER_IS_NOT_BANNED:               &str = "lang_0012"; // $SERVER$ $VICTIM$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THERE_ARE_NO_ADMINS` is never used
[INFO] [stdout]   --> src/language.rs:41:15
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub const THERE_ARE_NO_ADMINS:              &str = "lang_0013"; // $SERVER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THERE_IS_ADMIN` is never used
[INFO] [stdout]   --> src/language.rs:42:15
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub const THERE_IS_ADMIN:                   &str = "lang_0014"; // $SERVER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THERE_ARE_ADMINS` is never used
[INFO] [stdout]   --> src/language.rs:43:15
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub const THERE_ARE_ADMINS:                 &str = "lang_0015"; // $SERVER$ $COUNT$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THERE_ARE_NO_BANNED_USERS` is never used
[INFO] [stdout]   --> src/language.rs:44:15
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub const THERE_ARE_NO_BANNED_USERS:        &str = "lang_0016"; // $SERVER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THERE_IS_BANNED_USER` is never used
[INFO] [stdout]   --> src/language.rs:45:15
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub const THERE_IS_BANNED_USER:             &str = "lang_0017"; // $SERVER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THERE_ARE_BANNED_USERS` is never used
[INFO] [stdout]   --> src/language.rs:46:15
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub const THERE_ARE_BANNED_USERS:           &str = "lang_0018"; // $SERVER$ $COUNT$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `YOU_CANT_DELETE_ROOT_ADMIN` is never used
[INFO] [stdout]   --> src/language.rs:47:15
[INFO] [stdout]    |
[INFO] [stdout] 47 |     pub const YOU_CANT_DELETE_ROOT_ADMIN:        &str = "lang_0019";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DELETED_USER_FROM_ADMIN_DB` is never used
[INFO] [stdout]   --> src/language.rs:48:15
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub const DELETED_USER_FROM_ADMIN_DB:       &str = "lang_0020"; // $SERVER$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERROR_DELETING_USER_FROM_ADMIN_DB` is never used
[INFO] [stdout]   --> src/language.rs:49:15
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub const ERROR_DELETING_USER_FROM_ADMIN_DB:&str = "lang_0021"; // $SERVER$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNBANNED_USER` is never used
[INFO] [stdout]   --> src/language.rs:50:15
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub const UNBANNED_USER:                    &str = "lang_0022"; // $VICTIM$
[INFO] [stdout]    |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERROR_UNBANNING_USER` is never used
[INFO] [stdout]   --> src/language.rs:51:15
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub const ERROR_UNBANNING_USER:             &str = "lang_0023"; // $VICTIM$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_NUMBER_IS` is never used
[INFO] [stdout]   --> src/language.rs:52:15
[INFO] [stdout]    |
[INFO] [stdout] 52 |     pub const GAME_NUMBER_IS:                   &str = "lang_0024"; // $NUMBER$ $DESCRIPTION$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_NUMBER_DOESNT_EXIST` is never used
[INFO] [stdout]   --> src/language.rs:53:15
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub const GAME_NUMBER_DOESNT_EXIST:         &str = "lang_0025"; // $NUMBER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_IS_IN_THE_LOBBY` is never used
[INFO] [stdout]   --> src/language.rs:54:15
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub const GAME_IS_IN_THE_LOBBY:             &str = "lang_0026"; // $DESCRIPTION$ $CURRENT$ $MAX$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THERE_IS_NO_GAME_IN_LOBBY` is never used
[INFO] [stdout]   --> src/language.rs:55:15
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub const THERE_IS_NO_GAME_IN_LOBBY:        &str = "lang_0027"; // $CURRENT$ $MAX$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_LOAD_CONFIG_OUTSIDE` is never used
[INFO] [stdout]   --> src/language.rs:56:15
[INFO] [stdout]    |
[INFO] [stdout] 56 |     pub const UNABLE_TO_LOAD_CONFIG_OUTSIDE:    &str = "lang_0028";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOADING_CONFIG_FILE` is never used
[INFO] [stdout]   --> src/language.rs:57:15
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub const LOADING_CONFIG_FILE:              &str = "lang_0029"; // $FILE$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_LOAD_CONFIG_NOT_EXIST` is never used
[INFO] [stdout]   --> src/language.rs:58:15
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub const UNABLE_TO_LOAD_CONFIG_NOT_EXIST:  &str = "lang_0030"; // $FILE$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CREATING_PRIVATE_GAME` is never used
[INFO] [stdout]   --> src/language.rs:59:15
[INFO] [stdout]    |
[INFO] [stdout] 59 |     pub const CREATING_PRIVATE_GAME:            &str = "lang_0031"; // $GAMENAME$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CREATING_PUBLIC_GAME` is never used
[INFO] [stdout]   --> src/language.rs:60:15
[INFO] [stdout]    |
[INFO] [stdout] 60 |     pub const CREATING_PUBLIC_GAME:             &str = "lang_0032"; // $GAMENAME$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_UNHOST_COUNTDOWN` is never used
[INFO] [stdout]   --> src/language.rs:61:15
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub const UNABLE_TO_UNHOST_COUNTDOWN:       &str = "lang_0033"; // $DESCRIPTION$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNHOSTING_GAME` is never used
[INFO] [stdout]   --> src/language.rs:62:15
[INFO] [stdout]    |
[INFO] [stdout] 62 |     pub const UNHOSTING_GAME:                   &str = "lang_0034"; // $DESCRIPTION$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_UNHOST_NO_GAME` is never used
[INFO] [stdout]   --> src/language.rs:63:15
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub const UNABLE_TO_UNHOST_NO_GAME:         &str = "lang_0035";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERSION_ADMIN` is never used
[INFO] [stdout]   --> src/language.rs:64:15
[INFO] [stdout]    |
[INFO] [stdout] 64 |     pub const VERSION_ADMIN:                    &str = "lang_0036"; // $VERSION$
[INFO] [stdout]    |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERSION_NOT_ADMIN` is never used
[INFO] [stdout]   --> src/language.rs:65:15
[INFO] [stdout]    |
[INFO] [stdout] 65 |     pub const VERSION_NOT_ADMIN:                &str = "lang_0037"; // $VERSION$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_CREATE_ANOTHER_IN_LOBBY` is never used
[INFO] [stdout]   --> src/language.rs:66:15
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub const UNABLE_TO_CREATE_ANOTHER_IN_LOBBY:&str = "lang_0038"; // $GAMENAME$ $DESCRIPTION$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_CREATE_MAX_GAMES` is never used
[INFO] [stdout]   --> src/language.rs:67:15
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub const UNABLE_TO_CREATE_MAX_GAMES:       &str = "lang_0039"; // $GAMENAME$ $MAX$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_IS_OVER` is never used
[INFO] [stdout]   --> src/language.rs:68:15
[INFO] [stdout]    |
[INFO] [stdout] 68 |     pub const GAME_IS_OVER:                     &str = "lang_0040"; // $DESCRIPTION$
[INFO] [stdout]    |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPOOF_CHECK_BY_REPLYING` is never used
[INFO] [stdout]   --> src/language.rs:69:15
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub const SPOOF_CHECK_BY_REPLYING:          &str = "lang_0041";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_REFRESHED` is never used
[INFO] [stdout]   --> src/language.rs:70:15
[INFO] [stdout]    |
[INFO] [stdout] 70 |     pub const GAME_REFRESHED:                   &str = "lang_0042";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPOOF_POSSIBLE_IS_AWAY` is never used
[INFO] [stdout]   --> src/language.rs:71:15
[INFO] [stdout]    |
[INFO] [stdout] 71 |     pub const SPOOF_POSSIBLE_IS_AWAY:           &str = "lang_0043"; // $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPOOF_POSSIBLE_IS_UNAVAILABLE` is never used
[INFO] [stdout]   --> src/language.rs:72:15
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub const SPOOF_POSSIBLE_IS_UNAVAILABLE:    &str = "lang_0044"; // $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPOOF_POSSIBLE_IS_REFUSING` is never used
[INFO] [stdout]   --> src/language.rs:73:15
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub const SPOOF_POSSIBLE_IS_REFUSING:       &str = "lang_0045"; // $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPOOF_DETECTED_NOT_IN_GAME` is never used
[INFO] [stdout]   --> src/language.rs:74:15
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub const SPOOF_DETECTED_NOT_IN_GAME:       &str = "lang_0046"; // $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPOOF_DETECTED_IN_PRIVATE` is never used
[INFO] [stdout]   --> src/language.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub const SPOOF_DETECTED_IN_PRIVATE:        &str = "lang_0047"; // $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPOOF_DETECTED_IN_ANOTHER_GAME` is never used
[INFO] [stdout]   --> src/language.rs:76:15
[INFO] [stdout]    |
[INFO] [stdout] 76 |     pub const SPOOF_DETECTED_IN_ANOTHER_GAME:   &str = "lang_0048"; // $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HAS_PLAYED_GAMES_WITH_BOT` is never used
[INFO] [stdout]   --> src/language.rs:77:15
[INFO] [stdout]    |
[INFO] [stdout] 77 |     pub const HAS_PLAYED_GAMES_WITH_BOT:        &str = "lang_0049"; // $USER$ $FIRSTGAME$ $LASTGAME$ $TOTALGAMES$ $AVGLOADINGTIME$ $...
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HASNT_PLAYED_GAMES_WITH_BOT` is never used
[INFO] [stdout]   --> src/language.rs:78:15
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub const HASNT_PLAYED_GAMES_WITH_BOT:      &str = "lang_0050"; // $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AUTO_START_ENABLED` is never used
[INFO] [stdout]   --> src/language.rs:79:15
[INFO] [stdout]    |
[INFO] [stdout] 79 |     pub const AUTO_START_ENABLED:               &str = "lang_0051"; // $PLAYERS$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AUTO_START_DISABLED` is never used
[INFO] [stdout]   --> src/language.rs:80:15
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub const AUTO_START_DISABLED:              &str = "lang_0052";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_START_NOT_ENOUGH` is never used
[INFO] [stdout]   --> src/language.rs:81:15
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub const UNABLE_TO_START_NOT_ENOUGH:       &str = "lang_0053"; // $PLAYERS$ $REQUIREDPLAYERS$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_START_DOWNLOAD_IN_PROG` is never used
[INFO] [stdout]   --> src/language.rs:82:15
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub const UNABLE_TO_START_DOWNLOAD_IN_PROG: &str = "lang_0054";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COUNTDOWN_ABORTED` is never used
[INFO] [stdout]   --> src/language.rs:83:15
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub const COUNTDOWN_ABORTED:                &str = "lang_0055";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_WAS_KICKED_BY` is never used
[INFO] [stdout]   --> src/language.rs:84:15
[INFO] [stdout]    |
[INFO] [stdout] 84 |     pub const PLAYER_WAS_KICKED_BY:             &str = "lang_0056"; // $VICTIM$ $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_KICK_NO_MATCH` is never used
[INFO] [stdout]   --> src/language.rs:85:15
[INFO] [stdout]    |
[INFO] [stdout] 85 |     pub const UNABLE_TO_KICK_NO_MATCH:          &str = "lang_0057"; // $VICTIM$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_KICK_MORE_THAN_ONE` is never used
[INFO] [stdout]   --> src/language.rs:86:15
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub const UNABLE_TO_KICK_MORE_THAN_ONE:     &str = "lang_0058"; // $VICTIM$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SETTING_LATENCY_TO` is never used
[INFO] [stdout]   --> src/language.rs:87:15
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub const SETTING_LATENCY_TO:               &str = "lang_0059"; // $LATENCY$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SETTING_LATENCY_TO_MIN` is never used
[INFO] [stdout]   --> src/language.rs:88:15
[INFO] [stdout]    |
[INFO] [stdout] 88 |     pub const SETTING_LATENCY_TO_MIN:           &str = "lang_0060"; // $LATENCY$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SETTING_LATENCY_TO_MAX` is never used
[INFO] [stdout]   --> src/language.rs:89:15
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub const SETTING_LATENCY_TO_MAX:           &str = "lang_0061"; // $LATENCY$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LATENCY_IS` is never used
[INFO] [stdout]   --> src/language.rs:90:15
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub const LATENCY_IS:                       &str = "lang_0062"; // $LATENCY$
[INFO] [stdout]    |               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SYNC_LIMIT_IS` is never used
[INFO] [stdout]   --> src/language.rs:91:15
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub const SYNC_LIMIT_IS:                    &str = "lang_0063"; // $SYNCLIMIT$
[INFO] [stdout]    |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SETTING_SYNC_LIMIT_TO` is never used
[INFO] [stdout]   --> src/language.rs:92:15
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub const SETTING_SYNC_LIMIT_TO:            &str = "lang_0064"; // $SYNCLIMIT$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SETTING_SYNC_LIMIT_TO_MIN` is never used
[INFO] [stdout]   --> src/language.rs:93:15
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub const SETTING_SYNC_LIMIT_TO_MIN:        &str = "lang_0065"; // $SYNCLIMIT$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SETTING_SYNC_LIMIT_TO_MAX` is never used
[INFO] [stdout]   --> src/language.rs:94:15
[INFO] [stdout]    |
[INFO] [stdout] 94 |     pub const SETTING_SYNC_LIMIT_TO_MAX:        &str = "lang_0066"; // $SYNCLIMIT$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_START_COUNTDOWN` is never used
[INFO] [stdout]   --> src/language.rs:95:15
[INFO] [stdout]    |
[INFO] [stdout] 95 |     pub const UNABLE_TO_START_COUNTDOWN:        &str = "lang_0067";
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COUNTDOWN_STARTED` is never used
[INFO] [stdout]   --> src/language.rs:96:15
[INFO] [stdout]    |
[INFO] [stdout] 96 |     pub const COUNTDOWN_STARTED:                &str = "lang_0068"; // $SECONDS$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_LOCKED` is never used
[INFO] [stdout]   --> src/language.rs:97:15
[INFO] [stdout]    |
[INFO] [stdout] 97 |     pub const GAME_LOCKED:                      &str = "lang_0069";
[INFO] [stdout]    |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_UNLOCKED` is never used
[INFO] [stdout]   --> src/language.rs:98:15
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub const GAME_UNLOCKED:                    &str = "lang_0070";
[INFO] [stdout]    |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WAS_KICKED_FOR_LAGGING` is never used
[INFO] [stdout]   --> src/language.rs:99:15
[INFO] [stdout]    |
[INFO] [stdout] 99 |     pub const WAS_KICKED_FOR_LAGGING:           &str = "lang_0071"; // $USER$
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_BAN_NO_MATCH` is never used
[INFO] [stdout]    --> src/language.rs:100:15
[INFO] [stdout]     |
[INFO] [stdout] 100 |     pub const UNABLE_TO_BAN_NO_MATCH:           &str = "lang_0072"; // $VICTIM$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_BAN_MORE_THAN_ONE` is never used
[INFO] [stdout]    --> src/language.rs:101:15
[INFO] [stdout]     |
[INFO] [stdout] 101 |     pub const UNABLE_TO_BAN_MORE_THAN_ONE:      &str = "lang_0073"; // $VICTIM$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_WAS_BANNED_BY` is never used
[INFO] [stdout]    --> src/language.rs:102:15
[INFO] [stdout]     |
[INFO] [stdout] 102 |     pub const PLAYER_WAS_BANNED_BY:             &str = "lang_0074"; // $SERVER$ $VICTIM$ $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HAS_PLAYED_DOTA_GAMES_WITH_BOT` is never used
[INFO] [stdout]    --> src/language.rs:103:15
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub const HAS_PLAYED_DOTA_GAMES_WITH_BOT:   &str = "lang_0075"; // $USER$ ... (20 placeholders)
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HASNT_PLAYED_DOTA_GAMES_WITH_BOT` is never used
[INFO] [stdout]    --> src/language.rs:104:15
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub const HASNT_PLAYED_DOTA_GAMES_WITH_BOT: &str = "lang_0076"; // $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AUTO_KICK_PING` is never used
[INFO] [stdout]    --> src/language.rs:105:15
[INFO] [stdout]     |
[INFO] [stdout] 105 |     pub const AUTO_KICK_PING:                   &str = "lang_0077"; // $VICTIM$ $PING$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPOOFCHECKED_AS` is never used
[INFO] [stdout]    --> src/language.rs:106:15
[INFO] [stdout]     |
[INFO] [stdout] 106 |     pub const SPOOFCHECKED_AS:                  &str = "lang_0078"; // $USER$ $REALM$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_HAS_LEFT_VOLUNTARILY` is never used
[INFO] [stdout]    --> src/language.rs:107:15
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub const PLAYER_HAS_LEFT_VOLUNTARILY:      &str = "lang_0079"; // $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_HAS_LOST_CONNECTION` is never used
[INFO] [stdout]    --> src/language.rs:108:15
[INFO] [stdout]     |
[INFO] [stdout] 108 |     pub const PLAYER_HAS_LOST_CONNECTION:       &str = "lang_0080"; // $USER$ $REASON$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_HAS_TIMED_OUT` is never used
[INFO] [stdout]    --> src/language.rs:109:15
[INFO] [stdout]     |
[INFO] [stdout] 109 |     pub const PLAYER_HAS_TIMED_OUT:             &str = "lang_0081"; // $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_DISCONNECTED` is never used
[INFO] [stdout]    --> src/language.rs:110:15
[INFO] [stdout]     |
[INFO] [stdout] 110 |     pub const PLAYER_DISCONNECTED:              &str = "lang_0082"; // $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DESYNC_DETECTED` is never used
[INFO] [stdout]    --> src/language.rs:111:15
[INFO] [stdout]     |
[INFO] [stdout] 111 |     pub const DESYNC_DETECTED:                  &str = "lang_0083";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_LOADED` is never used
[INFO] [stdout]    --> src/language.rs:112:15
[INFO] [stdout]     |
[INFO] [stdout] 112 |     pub const GAME_LOADED:                      &str = "lang_0084";
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_FINISHED_LOADING` is never used
[INFO] [stdout]    --> src/language.rs:113:15
[INFO] [stdout]     |
[INFO] [stdout] 113 |     pub const PLAYER_FINISHED_LOADING:          &str = "lang_0085"; // $USER$ $LOADINGTIME$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLAYER_DOWNLOADED_MAP` is never used
[INFO] [stdout]    --> src/language.rs:114:15
[INFO] [stdout]     |
[INFO] [stdout] 114 |     pub const PLAYER_DOWNLOADED_MAP:            &str = "lang_0086"; // $USER$ $SECONDS$ $RATE$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_DOWNLOAD` is never used
[INFO] [stdout]    --> src/language.rs:115:15
[INFO] [stdout]     |
[INFO] [stdout] 115 |     pub const UNABLE_TO_DOWNLOAD:               &str = "lang_0087"; // $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ANNOUNCE_MESSAGE_ENABLED` is never used
[INFO] [stdout]    --> src/language.rs:116:15
[INFO] [stdout]     |
[INFO] [stdout] 116 |     pub const ANNOUNCE_MESSAGE_ENABLED:         &str = "lang_0088";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ANNOUNCE_MESSAGE_DISABLED` is never used
[INFO] [stdout]    --> src/language.rs:117:15
[INFO] [stdout]     |
[INFO] [stdout] 117 |     pub const ANNOUNCE_MESSAGE_DISABLED:        &str = "lang_0089";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AUTO_SAVE_ENABLED` is never used
[INFO] [stdout]    --> src/language.rs:118:15
[INFO] [stdout]     |
[INFO] [stdout] 118 |     pub const AUTO_SAVE_ENABLED:                &str = "lang_0090";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AUTO_SAVE_DISABLED` is never used
[INFO] [stdout]    --> src/language.rs:119:15
[INFO] [stdout]     |
[INFO] [stdout] 119 |     pub const AUTO_SAVE_DISABLED:               &str = "lang_0091";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SHUFFLING_PLAYERS` is never used
[INFO] [stdout]    --> src/language.rs:120:15
[INFO] [stdout]     |
[INFO] [stdout] 120 |     pub const SHUFFLING_PLAYERS:                &str = "lang_0092";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_DOWNLOAD_NO_MATCH` is never used
[INFO] [stdout]    --> src/language.rs:121:15
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub const UNABLE_TO_DOWNLOAD_NO_MATCH:      &str = "lang_0093"; // $VICTIM$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_DOWNLOAD_MORE_THAN_ONE` is never used
[INFO] [stdout]    --> src/language.rs:122:15
[INFO] [stdout]     |
[INFO] [stdout] 122 |     pub const UNABLE_TO_DOWNLOAD_MORE_THAN_ONE: &str = "lang_0094"; // $VICTIM$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THE_GAME_IS_ABOUT_TO_START` is never used
[INFO] [stdout]    --> src/language.rs:123:15
[INFO] [stdout]     |
[INFO] [stdout] 123 |     pub const THE_GAME_IS_ABOUT_TO_START:       &str = "lang_0095";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHECKED_PLAYER` is never used
[INFO] [stdout]    --> src/language.rs:124:15
[INFO] [stdout]     |
[INFO] [stdout] 124 |     pub const CHECKED_PLAYER:                   &str = "lang_0096"; // $USER$ $PING$ $FROM$ $ADMIN$ $OWNER$ $SPOOFED$ $REALM$ $RESE...
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_CHECK_NO_MATCH` is never used
[INFO] [stdout]    --> src/language.rs:125:15
[INFO] [stdout]     |
[INFO] [stdout] 125 |     pub const UNABLE_TO_CHECK_NO_MATCH:         &str = "lang_0097"; // $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNABLE_TO_CHECK_MORE_THAN_ONE` is never used
[INFO] [stdout]    --> src/language.rs:126:15
[INFO] [stdout]     |
[INFO] [stdout] 126 |     pub const UNABLE_TO_CHECK_MORE_THAN_ONE:    &str = "lang_0098"; // $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MUTED_PLAYER` is never used
[INFO] [stdout]    --> src/language.rs:127:15
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub const MUTED_PLAYER:                     &str = "lang_0099"; // $VICTIM$ $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNMUTED_PLAYER` is never used
[INFO] [stdout]    --> src/language.rs:128:15
[INFO] [stdout]     |
[INFO] [stdout] 128 |     pub const UNMUTED_PLAYER:                   &str = "lang_0100"; // $VICTIM$ $USER$
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rotr32` is never used
[INFO] [stdout]   --> src/map.rs:26:4
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn rotr32(x: u32, n: u32) -> u32 {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPOPT_HIDEMINIMAP` is never used
[INFO] [stdout]   --> src/map.rs:66:11
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub const MAPOPT_HIDEMINIMAP: u32 = 1 << 0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPOPT_MODIFYALLYPRIORITIES` is never used
[INFO] [stdout]   --> src/map.rs:67:11
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub const MAPOPT_MODIFYALLYPRIORITIES: u32 = 1 << 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPOPT_REVEALTERRAIN` is never used
[INFO] [stdout]   --> src/map.rs:69:11
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub const MAPOPT_REVEALTERRAIN: u32 = 1 << 4;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPOPT_CUSTOMTECHTREE` is never used
[INFO] [stdout]   --> src/map.rs:72:11
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub const MAPOPT_CUSTOMTECHTREE: u32 = 1 << 7;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPOPT_CUSTOMABILITIES` is never used
[INFO] [stdout]   --> src/map.rs:73:11
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub const MAPOPT_CUSTOMABILITIES: u32 = 1 << 8;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPOPT_CUSTOMUPGRADES` is never used
[INFO] [stdout]   --> src/map.rs:74:11
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub const MAPOPT_CUSTOMUPGRADES: u32 = 1 << 9;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPOPT_WATERWAVESONCLIFFSHORES` is never used
[INFO] [stdout]   --> src/map.rs:75:11
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub const MAPOPT_WATERWAVESONCLIFFSHORES: u32 = 1 << 11;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPOPT_WATERWAVESONSLOPESHORES` is never used
[INFO] [stdout]   --> src/map.rs:76:11
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub const MAPOPT_WATERWAVESONSLOPESHORES: u32 = 1 << 12;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPGAMETYPE_UNKNOWN0` is never used
[INFO] [stdout]   --> src/map.rs:92:11
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub const MAPGAMETYPE_UNKNOWN0: u32 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPGAMETYPE_SAVEDGAME` is never used
[INFO] [stdout]   --> src/map.rs:93:11
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub const MAPGAMETYPE_SAVEDGAME: u32 = 1 << 9;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAPGAMETYPE_PRIVATEGAME` is never used
[INFO] [stdout]   --> src/map.rs:94:11
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub const MAPGAMETYPE_PRIVATEGAME: u32 = 1 << 11;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_null_terminated_string` is never used
[INFO] [stdout]    --> src/map.rs:106:4
[INFO] [stdout]     |
[INFO] [stdout] 106 | fn read_null_terminated_string(cursor: &mut Cursor<&Vec<u8>>) -> std::io::Result<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REPLAY_ACTION_CHAT_TO_HOST` is never used
[INFO] [stdout]  --> src/packed.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const REPLAY_ACTION_CHAT_TO_HOST:  u8 = 0x20;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REPLAY_ACTION_DESYNC` is never used
[INFO] [stdout]  --> src/packed.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const REPLAY_ACTION_DESYNC:        u8 = 0x22;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REPLAY_ACTION_LEAVE_GAME` is never used
[INFO] [stdout]  --> src/packed.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const REPLAY_ACTION_LEAVE_GAME:    u8 = 0x17;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REPLAY_ACTION_TIMESLOT2` is never used
[INFO] [stdout]   --> src/packed.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const REPLAY_ACTION_TIMESLOT2:     u8 = 0x1E;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REPLAY_ACTION_CHECKSUM` is never used
[INFO] [stdout]   --> src/packed.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const REPLAY_ACTION_CHECKSUM:      u8 = 0x22;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REPLAY_ACTION_SAVE_GAME` is never used
[INFO] [stdout]   --> src/packed.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const REPLAY_ACTION_SAVE_GAME:     u8 = 0x06;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pid`, `flag`, and `extra_flags` are never read
[INFO] [stdout]   --> src/packed.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct ReplayChatMessage {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 30 |     pub pid: u8,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 31 |     pub flag: u8,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 32 |     pub extra_flags: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ReplayChatMessage` 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 `game_name`, `stat_string`, `duration_ms`, `random_seed`, `select_mode`, and `start_spot_count` are never read
[INFO] [stdout]   --> src/packed.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct Replay {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub game_name: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 53 |     pub stat_string: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub duration_ms: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub random_seed: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 61 |     pub select_mode: u8,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 62 |     pub start_spot_count: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Replay` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_random_seed`, `set_select_mode`, and `set_start_spot_count` are never used
[INFO] [stdout]    --> src/packed.rs:115:12
[INFO] [stdout]     |
[INFO] [stdout]  77 | impl Replay {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn set_random_seed(&mut self, seed: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn set_select_mode(&mut self, mode: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn set_start_spot_count(&mut self, count: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/replay.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Replay {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] 16 |     // ── Header fields ──
[INFO] [stdout] 17 |     pub host_pid: u8,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 18 |     pub host_name: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 19 |     pub game_name: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 20 |     pub stat_string: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 21 |     pub war3_version: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 22 |     pub build_number: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 23 |     pub flags: u16,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub slots: Vec<GameSlot>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 28 |     pub random_seed: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 29 |     pub select_mode: u8,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 30 |     pub start_spot_count: u8,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub player_names: Vec<(u8, String)>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub map_path: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 40 |     pub map_crc: ByteArray,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 41 |     pub map_sha1: ByteArray,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Replay` 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: methods `set_slots`, `set_random_seed`, and `add_time_slot_actions` are never used
[INFO] [stdout]    --> src/replay.rs:121:12
[INFO] [stdout]     |
[INFO] [stdout]  44 | impl Replay {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn set_slots(&mut self, slots: &[GameSlot]) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn set_random_seed(&mut self, seed: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn add_time_slot_actions(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/savegame.rs:6:9
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub struct SaveGame {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout]  5 |     pub valid: bool,
[INFO] [stdout]  6 |     pub file_path: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]  7 |     pub file_name: String,
[INFO] [stdout]  8 |     pub map_path: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]  9 |     pub game_name: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 10 |     pub num_slots: u8,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 11 |     pub slots: Vec<Vec<u8>>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 12 |     pub random_seed: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 13 |     pub magic_number: ByteArray,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SaveGame` 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: associated function `load` is never used
[INFO] [stdout]   --> src/savegame.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl SaveGame {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn load(file_path: &str) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `connect_simple` is never used
[INFO] [stdout]    --> src/socket.rs:273:18
[INFO] [stdout]     |
[INFO] [stdout] 256 | impl GhostTcpClient {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 273 |     pub async fn connect_simple(address: &str, port: u16) -> io::Result<GhostTcpSocket> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedTcpSocket` is never used
[INFO] [stdout]    --> src/socket.rs:392:10
[INFO] [stdout]     |
[INFO] [stdout] 392 | pub type SharedTcpSocket = Arc<Mutex<GhostTcpSocket>>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_shared` is never used
[INFO] [stdout]    --> src/socket.rs:394:8
[INFO] [stdout]     |
[INFO] [stdout] 394 | pub fn make_shared(socket: GhostTcpSocket) -> SharedTcpSocket {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W3GS_HEADER_CONSTANT` is never used
[INFO] [stdout]    --> src/socket.rs:429:11
[INFO] [stdout]     |
[INFO] [stdout] 429 | pub const W3GS_HEADER_CONSTANT: u8 = 0xFF;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GPS_HEADER_CONSTANT` is never used
[INFO] [stdout]    --> src/socket.rs:430:11
[INFO] [stdout]     |
[INFO] [stdout] 430 | pub const GPS_HEADER_CONSTANT: u8 = 0xF8;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_byte_array_u8` is never used
[INFO] [stdout]  --> src/util.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn create_byte_array_u8(c: u8) -> ByteArray {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `append_byte_array_str` is never used
[INFO] [stdout]   --> src/util.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn append_byte_array_str(b: &mut ByteArray, s: &str, terminator: bool) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `HELP_SID_AUTH_CHECK` should have a snake case name
[INFO] [stdout]   --> src/bncsutilinterface.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn HELP_SID_AUTH_CHECK(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `help_sid_auth_check`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `HELP_SID_AUTH_ACCOUNTLOGON` should have a snake case name
[INFO] [stdout]    --> src/bncsutilinterface.rs:179:12
[INFO] [stdout]     |
[INFO] [stdout] 179 |     pub fn HELP_SID_AUTH_ACCOUNTLOGON(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `help_sid_auth_accountlogon`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `HELP_SID_AUTH_ACCOUNTLOGONPROOF` should have a snake case name
[INFO] [stdout]    --> src/bncsutilinterface.rs:185:12
[INFO] [stdout]     |
[INFO] [stdout] 185 |     pub fn HELP_SID_AUTH_ACCOUNTLOGONPROOF(&mut self, salt: ByteArray, server_key: ByteArray) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `help_sid_auth_accountlogonproof`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `HELP_PvPGNPasswordHash` should have a snake case name
[INFO] [stdout]    --> src/bncsutilinterface.rs:191:12
[INFO] [stdout]     |
[INFO] [stdout] 191 |     pub fn HELP_PvPGNPasswordHash(&mut self, user_password: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `help_pv_pgnpassword_hash`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `futures::Future` that must be used
[INFO] [stdout]    --> src/bnet.rs:557:9
[INFO] [stdout]     |
[INFO] [stdout] 557 |         b.queue_chat_command("test");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `futures::Future` that must be used
[INFO] [stdout]    --> src/bnet.rs:565:9
[INFO] [stdout]     |
[INFO] [stdout] 565 |         b.queue_chat_command("hello");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `SEND_SID_CHECKAD` should have a snake case name
[INFO] [stdout]    --> src/bnetprotocol.rs:475:12
[INFO] [stdout]     |
[INFO] [stdout] 475 |     pub fn SEND_SID_CHECKAD(&self) -> ByteArray {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `send_sid_checkad`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [optimized + debuginfo] target(s) in 10.29s
[INFO] running `Command { std: "docker" "inspect" "0721b3ea0156d6f65ff2d1077506c448def8f1ede9221b37ce84056149830b40", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0721b3ea0156d6f65ff2d1077506c448def8f1ede9221b37ce84056149830b40", kill_on_drop: false }`
[INFO] [stdout] 0721b3ea0156d6f65ff2d1077506c448def8f1ede9221b37ce84056149830b40
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-03-05" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] a0faddbe262fd972af2f562bc23e30bca5b5aca03dcc71eaa4274b52ff11b14f
[INFO] running `Command { std: "docker" "start" "-a" "a0faddbe262fd972af2f562bc23e30bca5b5aca03dcc71eaa4274b52ff11b14f", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `error`
[INFO] [stderr]  --> src/bncsutilinterface.rs:4:21
[INFO] [stderr]   |
[INFO] [stderr] 4 | use tracing::{info, error};
[INFO] [stderr]   |                     ^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `IncomingGameHost`
[INFO] [stderr]  --> src/bnet_update.rs:1:64
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::bnetprotocol::{BnetProtocol, IncomingChatEventEnum, IncomingGameHost, Protocol};
[INFO] [stderr]   |                                                                ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `make_shared`
[INFO] [stderr]  --> src/bnet_update.rs:3:58
[INFO] [stderr]   |
[INFO] [stderr] 3 | use crate::socket::{GhostTcpClient, get_ticks, get_time, make_shared};
[INFO] [stderr]   |                                                          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::gameslot::*`
[INFO] [stderr]    --> src/game.rs:707:9
[INFO] [stderr]     |
[INFO] [stderr] 707 |     use crate::gameslot::*;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `HashMap`
[INFO] [stderr]  --> src/gamebase.rs:9:24
[INFO] [stderr]   |
[INFO] [stderr] 9 | use std::collections::{HashMap, HashSet, VecDeque};
[INFO] [stderr]   |                        ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::Arc`
[INFO] [stderr]   --> src/gamebase.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | use std::sync::Arc;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `AsyncReadExt` and `AsyncWriteExt`
[INFO] [stderr]   --> src/gamebase.rs:11:17
[INFO] [stderr]    |
[INFO] [stderr] 11 | use tokio::io::{AsyncReadExt, AsyncWriteExt};
[INFO] [stderr]    |                 ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `TcpListener` and `TcpStream`
[INFO] [stderr]   --> src/gamebase.rs:12:18
[INFO] [stderr]    |
[INFO] [stderr] 12 | use tokio::net::{TcpListener, TcpStream};
[INFO] [stderr]    |                  ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio::sync::RwLock`
[INFO] [stderr]   --> src/gamebase.rs:13:5
[INFO] [stderr]    |
[INFO] [stderr] 13 | use tokio::sync::RwLock;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Duration` and `self`
[INFO] [stderr]   --> src/gamebase.rs:14:19
[INFO] [stderr]    |
[INFO] [stderr] 14 | use tokio::time::{self, Duration};
[INFO] [stderr]    |                   ^^^^  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::ghost::*`
[INFO] [stderr]  --> src/ghost_update.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use crate::ghost::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `get_ticks`
[INFO] [stderr]  --> src/ghost_update.rs:3:21
[INFO] [stderr]   |
[INFO] [stderr] 3 | use crate::socket::{get_ticks, get_time};
[INFO] [stderr]   |                     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `warn`
[INFO] [stderr]  --> src/ghost_update.rs:7:28
[INFO] [stderr]   |
[INFO] [stderr] 7 | use tracing::{error, info, warn};
[INFO] [stderr]   |                            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::path::Path`
[INFO] [stderr]  --> src/ghostdb.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::path::Path;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `error`
[INFO] [stderr]  --> src/ghostdb.rs:3:21
[INFO] [stderr]   |
[INFO] [stderr] 3 | use tracing::{info, error};
[INFO] [stderr]   |                     ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Arc` and `Mutex`
[INFO] [stderr]  --> src/map.rs:4:17
[INFO] [stderr]   |
[INFO] [stderr] 4 | use std::sync::{Arc, Mutex};
[INFO] [stderr]   |                 ^^^  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::game`
[INFO] [stderr]  --> src/map.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use crate::game;
[INFO] [stderr]   |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::ghost::*`
[INFO] [stderr]  --> src/map.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 | use crate::ghost::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::crc32::*`
[INFO] [stderr]   --> src/map.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | use crate::crc32::*;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::sha1::*`
[INFO] [stderr]   --> src/map.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 11 | use crate::sha1::*;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::config`
[INFO] [stderr]   --> src/map.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 | use crate::config;
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::gameslot::*`
[INFO] [stderr]   --> src/map.rs:13:5
[INFO] [stderr]    |
[INFO] [stderr] 13 | use crate::gameslot::*;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Ghost`
[INFO] [stderr]   --> src/map.rs:14:26
[INFO] [stderr]    |
[INFO] [stderr] 14 | use crate::{SharedGhost, Ghost};
[INFO] [stderr]    |                          ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `File`
[INFO] [stderr]   --> src/map.rs:17:20
[INFO] [stderr]    |
[INFO] [stderr] 17 | use mpq::{Archive, File};
[INFO] [stderr]    |                    ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `error`
[INFO] [stderr]   --> src/map.rs:18:21
[INFO] [stderr]    |
[INFO] [stderr] 18 | use tracing::{info, error};
[INFO] [stderr]    |                     ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `error`
[INFO] [stderr]  --> src/socket.rs:7:21
[INFO] [stderr]   |
[INFO] [stderr] 7 | use tracing::{info, error};
[INFO] [stderr]   |                     ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/map.rs:330:21
[INFO] [stderr]     |
[INFO] [stderr] 330 |                 let mut commonj = read_file_full("maps/common.j").unwrap();
[INFO] [stderr]     |                     ----^^^^^^^
[INFO] [stderr]     |                     |
[INFO] [stderr]     |                     help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/map.rs:335:25
[INFO] [stderr]     |
[INFO] [stderr] 335 |                     let mut blizzardj = read_file_full("maps/blizzard.j").unwrap();
[INFO] [stderr]     |                         ----^^^^^^^^^
[INFO] [stderr]     |                         |
[INFO] [stderr]     |                         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/map.rs:346:39
[INFO] [stderr]     |
[INFO] [stderr] 346 | ...                   if let Ok(mut cmnj) = map.open_file("Scripts\\common.j") {
[INFO] [stderr]     |                                 ----^^^^
[INFO] [stderr]     |                                 |
[INFO] [stderr]     |                                 help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/map.rs:347:37
[INFO] [stderr]     |
[INFO] [stderr] 347 | ...                   let mut file_length = cmnj.size();
[INFO] [stderr]     |                           ----^^^^^^^^^^^
[INFO] [stderr]     |                           |
[INFO] [stderr]     |                           help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/map.rs:378:39
[INFO] [stderr]     |
[INFO] [stderr] 378 | ...                   if let Ok(mut blrj) = map.open_file("Scripts\\blizzard.j") {
[INFO] [stderr]     |                                 ----^^^^
[INFO] [stderr]     |                                 |
[INFO] [stderr]     |                                 help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/map.rs:379:37
[INFO] [stderr]     |
[INFO] [stderr] 379 | ...                   let mut file_length = blrj.size();
[INFO] [stderr]     |                           ----^^^^^^^^^^^
[INFO] [stderr]     |                           |
[INFO] [stderr]     |                           help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/map.rs:433:43
[INFO] [stderr]     |
[INFO] [stderr] 433 | ...                   if let Ok(mut file) = map.open_file(i) {
[INFO] [stderr]     |                                 ----^^^^
[INFO] [stderr]     |                                 |
[INFO] [stderr]     |                                 help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/map.rs:434:37
[INFO] [stderr]     |
[INFO] [stderr] 434 | ...                   let mut length = file.size();
[INFO] [stderr]     |                           ----^^^^^^
[INFO] [stderr]     |                           |
[INFO] [stderr]     |                           help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/map.rs:482:13
[INFO] [stderr]     |
[INFO] [stderr] 482 |         let mut map_filter_type: u8 = MAPFILTER_TYPE_SCENARIO;
[INFO] [stderr]     |             ----^^^^^^^^^^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/map.rs:487:23
[INFO] [stderr]     |
[INFO] [stderr] 487 |             if let Ok(mut w3i_file) = map.open_file("war3map.w3i") {
[INFO] [stderr]     |                       ----^^^^^^^^
[INFO] [stderr]     |                       |
[INFO] [stderr]     |                       help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `logon_type`
[INFO] [stderr]    --> src/bnet_update.rs:250:29
[INFO] [stderr]     |
[INFO] [stderr] 250 |                         let logon_type = p.get_logon_type();
[INFO] [stderr]     |                             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_logon_type`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `mpq_file_time`
[INFO] [stderr]    --> src/bnet_update.rs:252:29
[INFO] [stderr]     |
[INFO] [stderr] 252 |                         let mpq_file_time = p.get_mpq_file_time();
[INFO] [stderr]     |                             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mpq_file_time`
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `length_bytes` is never read
[INFO] [stderr]    --> src/bnetprotocol.rs:890:36
[INFO] [stderr]     |
[INFO] [stderr] 890 |             let mut length_bytes = ByteArray::new();
[INFO] [stderr]     |                                    ^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `save_game`
[INFO] [stderr]    --> src/game.rs:224:9
[INFO] [stderr]     |
[INFO] [stderr] 224 |         save_game: Option<SaveGame>,
[INFO] [stderr]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_save_game`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `interval`
[INFO] [stderr]    --> src/game.rs:586:27
[INFO] [stderr]     |
[INFO] [stderr] 586 |                 if let Ok(interval) = parts[0].parse::<u32>() {
[INFO] [stderr]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interval`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `reserved`
[INFO] [stderr]    --> src/gamebase.rs:377:34
[INFO] [stderr]     |
[INFO] [stderr] 377 |     pub fn get_empty_slot(&self, reserved: bool) -> Option<usize> {
[INFO] [stderr]     |                                  ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_reserved`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `unlock`
[INFO] [stderr]    --> src/gamebase.rs:438:45
[INFO] [stderr]     |
[INFO] [stderr] 438 |     pub fn open_slot(&mut self, sid: usize, unlock: bool) {
[INFO] [stderr]     |                                             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_unlock`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `map_size`
[INFO] [stderr]    --> src/gamebase.rs:909:21
[INFO] [stderr]     |
[INFO] [stderr] 909 |                 let map_size = self.map.map_size.clone();
[INFO] [stderr]     |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_map_size`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `game_type`
[INFO] [stderr]    --> src/ghost_update.rs:142:13
[INFO] [stderr]     |
[INFO] [stderr] 142 |             game_type,
[INFO] [stderr]     |             ^^^^^^^^^ help: try ignoring the field: `game_type: _`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `creator`
[INFO] [stderr]    --> src/ghost_update.rs:145:13
[INFO] [stderr]     |
[INFO] [stderr] 145 |             creator,
[INFO] [stderr]     |             ^^^^^^^ help: try ignoring the field: `creator: _`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `creator_server`
[INFO] [stderr]    --> src/ghost_update.rs:146:13
[INFO] [stderr]     |
[INFO] [stderr] 146 |             creator_server,
[INFO] [stderr]     |             ^^^^^^^^^^^^^^ help: try ignoring the field: `creator_server: _`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `stay_time`
[INFO] [stderr]    --> src/ghostdb.rs:343:9
[INFO] [stderr]     |
[INFO] [stderr] 343 |         stay_time: u32,
[INFO] [stderr]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stay_time`
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `game_flags` is never read
[INFO] [stderr]    --> src/map.rs:184:35
[INFO] [stderr]     |
[INFO] [stderr] 184 |         let mut game_flags: u32 = 0;
[INFO] [stderr]     |                                   ^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `val`
[INFO] [stderr]    --> src/map.rs:357:45
[INFO] [stderr]     |
[INFO] [stderr] 357 | ...                   let val = val ^ self.xor_rotate_left(&buf[..bytes_read]);
[INFO] [stderr]     |                           ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `val`
[INFO] [stderr]    --> src/map.rs:389:45
[INFO] [stderr]     |
[INFO] [stderr] 389 | ...                   let val = val ^ self.xor_rotate_left(&buf[..bytes_read]);
[INFO] [stderr]     |                           ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `map_filter_type`
[INFO] [stderr]    --> src/map.rs:482:13
[INFO] [stderr]     |
[INFO] [stderr] 482 |         let mut map_filter_type: u8 = MAPFILTER_TYPE_SCENARIO;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_map_filter_type`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]    --> src/map.rs:526:33
[INFO] [stderr]     |
[INFO] [stderr] 526 | ...                   for i in 0..raw_map_num_players {
[INFO] [stderr]     |                           ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `map_mpq_ready` is never read
[INFO] [stderr]    --> src/map.rs:299:37
[INFO] [stderr]     |
[INFO] [stderr] 299 |             let mut map_mpq_ready = false;
[INFO] [stderr]     |                                     ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: variants `KR_OLD_GAME_VERSION`, `KR_INVALID_VERSION`, `KR_ROC_KEY_IN_USE`, and `KR_TFT_KEY_IN_USE` are never constructed
[INFO] [stderr]   --> src/bnetprotocol.rs:44:5
[INFO] [stderr]    |
[INFO] [stderr] 42 | pub enum KeyResult {
[INFO] [stderr]    |          --------- variants in this enum
[INFO] [stderr] 43 |     KR_GOOD = 0,
[INFO] [stderr] 44 |     KR_OLD_GAME_VERSION = 256,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 45 |     KR_INVALID_VERSION = 257,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 46 |     KR_ROC_KEY_IN_USE = 513,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 47 |     KR_TFT_KEY_IN_USE = 529,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `id`, `ip`, `date`, `game_name`, `admin`, and `reason` are never read
[INFO] [stderr]   --> src/game.rs:10:9
[INFO] [stderr]    |
[INFO] [stderr]  9 | pub struct DbBan {
[INFO] [stderr]    |            ----- fields in this struct
[INFO] [stderr] 10 |     pub id: u32,
[INFO] [stderr]    |         ^^
[INFO] [stderr] ...
[INFO] [stderr] 13 |     pub ip: String,
[INFO] [stderr]    |         ^^
[INFO] [stderr] 14 |     pub date: String,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr] 15 |     pub game_name: String,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 16 |     pub admin: String,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr] 17 |     pub reason: String,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DbBan` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DbGame` is never constructed
[INFO] [stderr]   --> src/game.rs:45:12
[INFO] [stderr]    |
[INFO] [stderr] 45 | pub struct DbGame {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/game.rs:59:12
[INFO] [stderr]    |
[INFO] [stderr] 58 | impl DbGame {
[INFO] [stderr]    | ----------- associated function in this implementation
[INFO] [stderr] 59 |     pub fn new(
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]   --> src/game.rs:86:9
[INFO] [stderr]    |
[INFO] [stderr] 85 | pub struct DbGamePlayer {
[INFO] [stderr]    |            ------------ fields in this struct
[INFO] [stderr] 86 |     pub id: u32,
[INFO] [stderr]    |         ^^
[INFO] [stderr] 87 |     pub game_id: u32,
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr] 88 |     pub name: String,
[INFO] [stderr] 89 |     pub ip: String,
[INFO] [stderr]    |         ^^
[INFO] [stderr] 90 |     pub spoofed: bool,
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr] 91 |     pub spoofed_realm: String,
[INFO] [stderr]    |         ^^^^^^^^^^^^^
[INFO] [stderr] 92 |     pub reserved: bool,
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr] 93 |     pub loading_time: u32, // мс
[INFO] [stderr] 94 |     pub left: u32,         // game ticks в секундах
[INFO] [stderr]    |         ^^^^
[INFO] [stderr] 95 |     pub left_reason: String,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 96 |     pub team: u8,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr] 97 |     pub colour: u8,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DbGamePlayer` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DbGamePlayerSummary` is never constructed
[INFO] [stderr]    --> src/game.rs:132:12
[INFO] [stderr]     |
[INFO] [stderr] 132 | pub struct DbGamePlayerSummary {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]    --> src/game.rs:144:9
[INFO] [stderr]     |
[INFO] [stderr] 142 | pub struct DbDotaPlayerSummary {
[INFO] [stderr]     |            ------------------- fields in this struct
[INFO] [stderr] 143 |     pub total_games: u32,
[INFO] [stderr] 144 |     pub total_wins: u32,
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr] 145 |     pub total_losses: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 148 |     pub total_creep_kills: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 149 |     pub total_creep_denies: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 150 |     pub total_assists: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^
[INFO] [stderr] 151 |     pub total_neutral_kills: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 152 |     pub total_tower_kills: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 153 |     pub total_rax_kills: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^
[INFO] [stderr] 154 |     pub total_courier_kills: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `DbDotaPlayerSummary` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/game.rs:170:12
[INFO] [stderr]     |
[INFO] [stderr] 157 | impl DbDotaPlayerSummary {
[INFO] [stderr]     | ------------------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 170 |     pub fn avg_creep_kills(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 173 |     pub fn avg_creep_denies(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 176 |     pub fn avg_assists(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 179 |     pub fn avg_neutral_kills(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 182 |     pub fn avg_tower_kills(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 185 |     pub fn avg_rax_kills(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 188 |     pub fn avg_courier_kills(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Game` is never constructed
[INFO] [stderr]    --> src/game.rs:196:12
[INFO] [stderr]     |
[INFO] [stderr] 196 | pub struct Game {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `StatsType` is never used
[INFO] [stderr]    --> src/game.rs:215:10
[INFO] [stderr]     |
[INFO] [stderr] 215 | pub enum StatsType {
[INFO] [stderr]     |          ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/game.rs:222:12
[INFO] [stderr]     |
[INFO] [stderr] 221 | impl Game {
[INFO] [stderr]     | --------- associated items in this implementation
[INFO] [stderr] 222 |     pub fn new(
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 299 |     pub fn event_game_started(&mut self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 315 |     pub fn event_player_deleted(&mut self, player_idx: usize) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 361 |     pub fn handle_bot_command(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 421 |     fn cmd_ping(&self) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 432 |     fn cmd_abort(&mut self) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 441 |     fn cmd_close(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 451 |     fn cmd_closeall(&mut self) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 456 |     fn cmd_open(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 466 |     fn cmd_openall(&mut self) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 471 |     fn cmd_hold(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 480 |     fn cmd_kick(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 495 |     fn cmd_mute(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 505 |     fn cmd_unmute(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 515 |     fn cmd_start(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 523 |     fn cmd_swap(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 540 |     fn cmd_shuffle(&mut self) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 564 |     fn cmd_lock(&mut self, has_perm: bool) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 573 |     fn cmd_unlock(&mut self) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 578 |     fn cmd_announce(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 595 |     fn cmd_autosave(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 609 |     fn cmd_autostart(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 621 |     fn cmd_drop(&mut self) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 630 |     fn cmd_from(&self) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 640 |     fn cmd_latency(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 653 |     fn cmd_synclimit(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 666 |     fn cmd_comp(&mut self, payload: &str) -> BotCommandResult {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `BotCommandResult` is never used
[INFO] [stderr]    --> src/game.rs:682:10
[INFO] [stderr]     |
[INFO] [stderr] 682 | pub enum BotCommandResult {
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `message` and `broadcast` are never used
[INFO] [stderr]    --> src/game.rs:696:12
[INFO] [stderr]     |
[INFO] [stderr] 695 | impl BotCommandResult {
[INFO] [stderr]     | --------------------- associated functions in this implementation
[INFO] [stderr] 696 |     pub fn message(msg: &str) -> Self {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 699 |     pub fn broadcast(msg: &str) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GAME_PRIVATE` is never used
[INFO] [stderr]   --> src/gamebase.rs:17:11
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub const GAME_PRIVATE: u8 = 0;
[INFO] [stderr]    |           ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GAME_PUBLIC` is never used
[INFO] [stderr]   --> src/gamebase.rs:18:11
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub const GAME_PUBLIC: u8 = 1;
[INFO] [stderr]    |           ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_LEAVE_DISCONNECT` is never used
[INFO] [stderr]   --> src/gamebase.rs:20:11
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub const PLAYER_LEAVE_DISCONNECT: u32 = 13;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_LEAVE_LOST` is never used
[INFO] [stderr]   --> src/gamebase.rs:21:11
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub const PLAYER_LEAVE_LOST: u32 = 7;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_LEAVE_LOSTBUILDINGS` is never used
[INFO] [stderr]   --> src/gamebase.rs:22:11
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub const PLAYER_LEAVE_LOSTBUILDINGS: u32 = 8;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_LEAVE_WON` is never used
[INFO] [stderr]   --> src/gamebase.rs:23:11
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub const PLAYER_LEAVE_WON: u32 = 9;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_LEAVE_DRAW` is never used
[INFO] [stderr]   --> src/gamebase.rs:24:11
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub const PLAYER_LEAVE_DRAW: u32 = 10;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_LEAVE_OBSERVER` is never used
[INFO] [stderr]   --> src/gamebase.rs:25:11
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub const PLAYER_LEAVE_OBSERVER: u32 = 11;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_LEAVE_LOBBY` is never used
[INFO] [stderr]   --> src/gamebase.rs:26:11
[INFO] [stderr]    |
[INFO] [stderr] 26 | pub const PLAYER_LEAVE_LOBBY: u32 = 21;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_LEAVE_GPROXY` is never used
[INFO] [stderr]   --> src/gamebase.rs:27:11
[INFO] [stderr]    |
[INFO] [stderr] 27 | pub const PLAYER_LEAVE_GPROXY: u32 = 100;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_GAMETYPE_UNKNOWN0` is never used
[INFO] [stderr]   --> src/gamebase.rs:29:11
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub const MAP_GAMETYPE_UNKNOWN0: u32 = 1;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_GAMETYPE_SAVEDGAME` is never used
[INFO] [stderr]   --> src/gamebase.rs:30:11
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub const MAP_GAMETYPE_SAVEDGAME: u32 = 512;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_OPT_FIXEDPLAYERSETTING` is never used
[INFO] [stderr]   --> src/gamebase.rs:31:11
[INFO] [stderr]    |
[INFO] [stderr] 31 | pub const MAP_OPT_FIXEDPLAYERSETTING: u32 = 4;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `BaseGame` is never constructed
[INFO] [stderr]   --> src/gamebase.rs:34:12
[INFO] [stderr]    |
[INFO] [stderr] 34 | pub struct BaseGame {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]     --> src/gamebase.rs:154:12
[INFO] [stderr]      |
[INFO] [stderr]  152 | impl BaseGame {
[INFO] [stderr]      | ------------- associated items in this implementation
[INFO] [stderr]  153 |     /// Create a new BaseGame from config / ghost state
[INFO] [stderr]  154 |     pub fn new(
[INFO] [stderr]      |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  318 |     pub fn get_slots_occupied(&self) -> u32 {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  325 |     pub fn get_slots_open(&self) -> u32 {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  332 |     pub fn get_num_human_players(&self) -> u32 {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  336 |     pub fn get_num_players(&self) -> u32 {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  344 |     pub fn get_host_pid(&self) -> u8 {
[INFO] [stderr]      |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  353 |     pub fn get_pids(&self) -> Vec<u8> {
[INFO] [stderr]      |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  361 |     pub fn get_new_pid(&self) -> u8 {
[INFO] [stderr]      |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  377 |     pub fn get_empty_slot(&self, reserved: bool) -> Option<usize> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  386 |     pub fn get_sid_from_pid(&self, pid: u8) -> Option<usize> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  392 |     pub fn get_player_from_pid(&self, pid: u8) -> Option<&GamePlayer> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  398 |     pub fn get_player_from_pid_mut(&mut self, pid: u8) -> Option<&mut GamePlayer> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  404 |     pub fn get_player_from_name(&self, name: &str, sensitive: bool) -> Option<&GamePlayer> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  415 |     pub fn get_player_index_from_name(&self, name: &str, sensitive: bool) -> Option<usize> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  426 |     pub fn get_player_from_sid(&self, sid: usize) -> Option<&GamePlayer> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  434 |     pub fn is_owner(&self, name: &str) -> bool {
[INFO] [stderr]      |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  438 |     pub fn open_slot(&mut self, sid: usize, unlock: bool) {
[INFO] [stderr]      |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  448 |     pub fn close_slot(&mut self, sid: usize) {
[INFO] [stderr]      |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  458 |     pub fn swap_slots(&mut self, sid1: usize, sid2: usize) {
[INFO] [stderr]      |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  483 |     pub fn create_virtual_host(&mut self) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  501 |     pub fn delete_virtual_host(&mut self) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  514 |     pub fn send_to(&self, player: &mut GamePlayer, data: &[u8]) {
[INFO] [stderr]      |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  518 |     pub fn send_all(&mut self, data: &[u8]) {
[INFO] [stderr]      |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  526 |     pub fn send_chat(&mut self, from_pid: u8, to_pid: u8, message: &str) {
[INFO] [stderr]      |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  562 |     pub fn send_all_chat_from(&mut self, from_pid: u8, message: &str) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  594 |     pub fn send_all_chat(&mut self, message: &str) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  599 |     pub fn send_all_slot_info(&mut self) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  613 |     pub fn get_description(&self) -> String {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  635 |     pub fn send_all_actions(&mut self) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  711 |     pub fn start_countdown_auto(&mut self, require_spoof: bool) -> bool {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  745 |     pub fn event_game_started(&mut self) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  770 |     pub fn check_lag(&mut self) {
[INFO] [stderr]      |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  814 |     pub fn check_lag_stop(&mut self) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  850 |     pub fn stop_laggers(&mut self, reason: &str) {
[INFO] [stderr]      |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  864 |     pub fn update(&mut self) -> bool {
[INFO] [stderr]      |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1098 |     pub fn close_all_slots(&mut self) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1106 |     pub fn open_all_slots(&mut self) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1114 |     pub fn start_count_down(&mut self, force: bool) -> Option<u8> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1122 |     pub fn set_announce(&mut self, announce: bool) {
[INFO] [stderr]      |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1127 |     pub fn computer_slot(&mut self, sid: u8, skill: u8) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1134 |     pub fn add_to_reserved(&mut self, name: &str) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1138 |     pub fn set_hcl(&mut self, _hcl: &str) {
[INFO] [stderr]      |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `packet_type` and `data` are never read
[INFO] [stderr]   --> src/gameplayer.rs:21:9
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub struct CommandPacket {
[INFO] [stderr]    |            ------------- fields in this struct
[INFO] [stderr] 21 |     pub packet_type: u8, // W3GS_HEADER_CONSTANT или GPS_HEADER_CONSTANT
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 22 |     pub id: u8,
[INFO] [stderr] 23 |     pub data: ByteArray,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `CommandPacket` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `delete_me` is never read
[INFO] [stderr]   --> src/gameplayer.rs:38:9
[INFO] [stderr]    |
[INFO] [stderr] 37 | pub struct PotentialPlayer {
[INFO] [stderr]    |            --------------- field in this struct
[INFO] [stderr] 38 |     pub delete_me: bool,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `PotentialPlayer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]    --> src/gameplayer.rs:131:9
[INFO] [stderr]     |
[INFO] [stderr] 126 | pub struct GamePlayer {
[INFO] [stderr]     |            ---------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 131 |     pub pid: u8,
[INFO] [stderr]     |         ^^^
[INFO] [stderr] 132 |     pub name: String,
[INFO] [stderr] 133 |     pub internal_ip: [u8; 4],
[INFO] [stderr]     |         ^^^^^^^^^^^
[INFO] [stderr] 134 |     pub joined_realm: String,
[INFO] [stderr]     |         ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 138 |     pub total_packets_received: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 144 |     pub checksums: VecDeque<u32>,
[INFO] [stderr]     |         ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 147 |     pub left_code: u32,
[INFO] [stderr]     |         ^^^^^^^^^
[INFO] [stderr] 148 |     pub left_reason: String,
[INFO] [stderr]     |         ^^^^^^^^^^^
[INFO] [stderr] 149 |     pub spoofed_realm: String,
[INFO] [stderr]     |         ^^^^^^^^^^^^^
[INFO] [stderr] 150 |     pub login_attempts: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^
[INFO] [stderr] 151 |     pub sync_counter: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 154 |     pub join_time: u32,
[INFO] [stderr]     |         ^^^^^^^^^
[INFO] [stderr] 155 |     pub last_map_part_sent: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 156 |     pub last_map_part_acked: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 157 |     pub started_downloading_ticks: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 158 |     pub finished_downloading_time: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 159 |     pub finished_loading_ticks: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 160 |     pub started_lagging_ticks: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 161 |     pub stats_sent_time: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^
[INFO] [stderr] 162 |     pub stats_dota_sent_time: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 163 |     pub last_gproxy_wait_notice_sent_time: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 166 |     pub load_in_game_data: VecDeque<ByteArray>,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 169 |     pub score: f64,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 172 |     pub logged_in: bool,
[INFO] [stderr]     |         ^^^^^^^^^
[INFO] [stderr] 173 |     pub spoofed: bool,
[INFO] [stderr]     |         ^^^^^^^
[INFO] [stderr] 174 |     pub reserved: bool,
[INFO] [stderr]     |         ^^^^^^^^
[INFO] [stderr] 175 |     pub whois_should_be_sent: bool,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 176 |     pub whois_sent: bool,
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr] 177 |     pub download_allowed: bool,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^
[INFO] [stderr] 178 |     pub download_started: bool,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^
[INFO] [stderr] 179 |     pub download_finished: bool,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 180 |     pub finished_loading: bool,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^
[INFO] [stderr] 181 |     pub lagging: bool,
[INFO] [stderr]     |         ^^^^^^^
[INFO] [stderr] 182 |     pub drop_vote: bool,
[INFO] [stderr]     |         ^^^^^^^^^
[INFO] [stderr] 183 |     pub kick_vote: bool,
[INFO] [stderr]     |         ^^^^^^^^^
[INFO] [stderr] 184 |     pub start_vote: bool,
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr] 185 |     pub muted: bool,
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr] 186 |     pub left_message_sent: bool,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 190 |     pub gproxy_disconnect_notice_sent: bool,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 191 |     pub gproxy_buffer: VecDeque<ByteArray>,
[INFO] [stderr] 192 |     pub gproxy_reconnect_key: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 193 |     pub last_gproxy_ack_time: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 196 |     pub delete_me: bool,
[INFO] [stderr]     |         ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 199 |     pub send_queue: VecDeque<ByteArray>,
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `GamePlayer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_SLOT_INFO_JOIN` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:10:11
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub const W3GS_SLOT_INFO_JOIN: u8 = 0x04;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_PLAYER_INFO` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:12:11
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub const W3GS_PLAYER_INFO: u8 = 0x06;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_PLAYER_LEAVE_OTHERS` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:13:11
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub const W3GS_PLAYER_LEAVE_OTHERS: u8 = 0x07;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_GAME_LOADED_OTHERS` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:14:11
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub const W3GS_GAME_LOADED_OTHERS: u8 = 0x08;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_SLOT_INFO` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:15:11
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub const W3GS_SLOT_INFO: u8 = 0x09;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_INCOMING_ACTION` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:18:11
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub const W3GS_INCOMING_ACTION: u8 = 0x0C;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_CHAT_FROM_HOST` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:19:11
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub const W3GS_CHAT_FROM_HOST: u8 = 0x0F;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_START_LAG` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:20:11
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub const W3GS_START_LAG: u8 = 0x10;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_STOP_LAG` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:21:11
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub const W3GS_STOP_LAG: u8 = 0x11;
[INFO] [stderr]    |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_GAME_OVER` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:22:11
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub const W3GS_GAME_OVER: u8 = 0x14;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_PLAYER_KICKED` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:23:11
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub const W3GS_PLAYER_KICKED: u8 = 0x1C;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_LEAVE_ACK` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:24:11
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub const W3GS_LEAVE_ACK: u8 = 0x1B;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_REQ_JOIN` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:25:11
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub const W3GS_REQ_JOIN: u8 = 0x1E;
[INFO] [stderr]    |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_LEAVE_GAME` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:26:11
[INFO] [stderr]    |
[INFO] [stderr] 26 | pub const W3GS_LEAVE_GAME: u8 = 0x21;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_GAME_LOADED_SELF` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:27:11
[INFO] [stderr]    |
[INFO] [stderr] 27 | pub const W3GS_GAME_LOADED_SELF: u8 = 0x23;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_OUTGOING_ACTION` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:28:11
[INFO] [stderr]    |
[INFO] [stderr] 28 | pub const W3GS_OUTGOING_ACTION: u8 = 0x26;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_OUTGOING_KEEPALIVE` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:29:11
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub const W3GS_OUTGOING_KEEPALIVE: u8 = 0x27;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_CHAT_TO_HOST` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:30:11
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub const W3GS_CHAT_TO_HOST: u8 = 0x28;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_DROP_REQ` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:31:11
[INFO] [stderr]    |
[INFO] [stderr] 31 | pub const W3GS_DROP_REQ: u8 = 0x29;
[INFO] [stderr]    |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_SEARCH_GAME` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:32:11
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub const W3GS_SEARCH_GAME: u8 = 0x2F;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_GAME_INFO` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:33:11
[INFO] [stderr]    |
[INFO] [stderr] 33 | pub const W3GS_GAME_INFO: u8 = 0x30;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_CREATE_GAME` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:34:11
[INFO] [stderr]    |
[INFO] [stderr] 34 | pub const W3GS_CREATE_GAME: u8 = 0x31;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_REFRESH_GAME` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:35:11
[INFO] [stderr]    |
[INFO] [stderr] 35 | pub const W3GS_REFRESH_GAME: u8 = 0x32;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_DECREATE_GAME` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:36:11
[INFO] [stderr]    |
[INFO] [stderr] 36 | pub const W3GS_DECREATE_GAME: u8 = 0x33;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_MAP_CHECK` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:37:11
[INFO] [stderr]    |
[INFO] [stderr] 37 | pub const W3GS_MAP_CHECK: u8 = 0x3D;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_START_DOWNLOAD` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:38:11
[INFO] [stderr]    |
[INFO] [stderr] 38 | pub const W3GS_START_DOWNLOAD: u8 = 0x3F;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_MAP_SIZE` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:39:11
[INFO] [stderr]    |
[INFO] [stderr] 39 | pub const W3GS_MAP_SIZE: u8 = 0x42;
[INFO] [stderr]    |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_MAP_PART` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:40:11
[INFO] [stderr]    |
[INFO] [stderr] 40 | pub const W3GS_MAP_PART: u8 = 0x43;
[INFO] [stderr]    |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_MAP_PART_OK` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:41:11
[INFO] [stderr]    |
[INFO] [stderr] 41 | pub const W3GS_MAP_PART_OK: u8 = 0x44;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_MAP_PART_ERROR` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:42:11
[INFO] [stderr]    |
[INFO] [stderr] 42 | pub const W3GS_MAP_PART_ERROR: u8 = 0x45;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_PONG_TO_HOST` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:43:11
[INFO] [stderr]    |
[INFO] [stderr] 43 | pub const W3GS_PONG_TO_HOST: u8 = 0x46;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_INCOMING_ACTION2` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:44:11
[INFO] [stderr]    |
[INFO] [stderr] 44 | pub const W3GS_INCOMING_ACTION2: u8 = 0x48;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_LEAVE_DISCONNECT` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:47:11
[INFO] [stderr]    |
[INFO] [stderr] 47 | pub const PLAYER_LEAVE_DISCONNECT: u32 = 1;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_LEAVE_LOST` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:48:11
[INFO] [stderr]    |
[INFO] [stderr] 48 | pub const PLAYER_LEAVE_LOST: u32 = 7;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_LEAVE_LOSTBUILDINGS` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:49:11
[INFO] [stderr]    |
[INFO] [stderr] 49 | pub const PLAYER_LEAVE_LOSTBUILDINGS: u32 = 8;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_LEAVE_WON` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:50:11
[INFO] [stderr]    |
[INFO] [stderr] 50 | pub const PLAYER_LEAVE_WON: u32 = 9;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_LEAVE_DRAW` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:51:11
[INFO] [stderr]    |
[INFO] [stderr] 51 | pub const PLAYER_LEAVE_DRAW: u32 = 10;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_LEAVE_OBSERVER` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:52:11
[INFO] [stderr]    |
[INFO] [stderr] 52 | pub const PLAYER_LEAVE_OBSERVER: u32 = 11;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_LEAVE_LOBBY` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:53:11
[INFO] [stderr]    |
[INFO] [stderr] 53 | pub const PLAYER_LEAVE_LOBBY: u32 = 13;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_LEAVE_GPROXY` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:54:11
[INFO] [stderr]    |
[INFO] [stderr] 54 | pub const PLAYER_LEAVE_GPROXY: u32 = 100;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `REJECTJOIN_STARTED` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:58:11
[INFO] [stderr]    |
[INFO] [stderr] 58 | pub const REJECTJOIN_STARTED: u32 = 0x10;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `REJECTJOIN_WRONGPASSWORD` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:59:11
[INFO] [stderr]    |
[INFO] [stderr] 59 | pub const REJECTJOIN_WRONGPASSWORD: u32 = 0x27;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SLOT_STATUS_CLOSED` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:63:11
[INFO] [stderr]    |
[INFO] [stderr] 63 | pub const SLOT_STATUS_CLOSED: u8 = 1;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SLOT_STATUS_OCCUPIED` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:64:11
[INFO] [stderr]    |
[INFO] [stderr] 64 | pub const SLOT_STATUS_OCCUPIED: u8 = 2;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SLOT_RACE_HUMAN` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:67:11
[INFO] [stderr]    |
[INFO] [stderr] 67 | pub const SLOT_RACE_HUMAN: u8 = 0x01;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SLOT_RACE_ORC` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:68:11
[INFO] [stderr]    |
[INFO] [stderr] 68 | pub const SLOT_RACE_ORC: u8 = 0x02;
[INFO] [stderr]    |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SLOT_RACE_NIGHTELF` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:69:11
[INFO] [stderr]    |
[INFO] [stderr] 69 | pub const SLOT_RACE_NIGHTELF: u8 = 0x04;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SLOT_RACE_UNDEAD` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:70:11
[INFO] [stderr]    |
[INFO] [stderr] 70 | pub const SLOT_RACE_UNDEAD: u8 = 0x08;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SLOT_RACE_RANDOM` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:71:11
[INFO] [stderr]    |
[INFO] [stderr] 71 | pub const SLOT_RACE_RANDOM: u8 = 0x20;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SLOT_RACE_SELECTABLE` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:72:11
[INFO] [stderr]    |
[INFO] [stderr] 72 | pub const SLOT_RACE_SELECTABLE: u8 = 0x40;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SLOT_COMP_EASY` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:75:11
[INFO] [stderr]    |
[INFO] [stderr] 75 | pub const SLOT_COMP_EASY: u8 = 0;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SLOT_COMP_NORMAL` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:76:11
[INFO] [stderr]    |
[INFO] [stderr] 76 | pub const SLOT_COMP_NORMAL: u8 = 1;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SLOT_COMP_INSANE` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:77:11
[INFO] [stderr]    |
[INFO] [stderr] 77 | pub const SLOT_COMP_INSANE: u8 = 2;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_OPT_MELEE` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:80:11
[INFO] [stderr]    |
[INFO] [stderr] 80 | pub const MAP_OPT_MELEE: u32 = 1 << 2;
[INFO] [stderr]    |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_OPT_FIXED_PLAYER_SETTINGS` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:81:11
[INFO] [stderr]    |
[INFO] [stderr] 81 | pub const MAP_OPT_FIXED_PLAYER_SETTINGS: u32 = 1 << 3;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_OPT_CUSTOM_FORCES` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:82:11
[INFO] [stderr]    |
[INFO] [stderr] 82 | pub const MAP_OPT_CUSTOM_FORCES: u32 = 1 << 5;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_OPT_CUSTOM_TECHTREE` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:83:11
[INFO] [stderr]    |
[INFO] [stderr] 83 | pub const MAP_OPT_CUSTOM_TECHTREE: u32 = 1 << 6;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_OPT_CUSTOM_ABILITIES` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:84:11
[INFO] [stderr]    |
[INFO] [stderr] 84 | pub const MAP_OPT_CUSTOM_ABILITIES: u32 = 1 << 7;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_OPT_CUSTOM_UPGRADES` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:85:11
[INFO] [stderr]    |
[INFO] [stderr] 85 | pub const MAP_OPT_CUSTOM_UPGRADES: u32 = 1 << 8;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_OPT_WATERWAVE` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:86:11
[INFO] [stderr]    |
[INFO] [stderr] 86 | pub const MAP_OPT_WATERWAVE: u32 = 1 << 12;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_FLAG_TEAMSTOGETHER` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:89:11
[INFO] [stderr]    |
[INFO] [stderr] 89 | pub const MAP_FLAG_TEAMSTOGETHER: u32 = 1;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_FLAG_FIXEDTEAMS` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:90:11
[INFO] [stderr]    |
[INFO] [stderr] 90 | pub const MAP_FLAG_FIXEDTEAMS: u32 = 2;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_FLAG_UNITSHARE` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:91:11
[INFO] [stderr]    |
[INFO] [stderr] 91 | pub const MAP_FLAG_UNITSHARE: u32 = 4;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_FLAG_RANDOMHERO` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:92:11
[INFO] [stderr]    |
[INFO] [stderr] 92 | pub const MAP_FLAG_RANDOMHERO: u32 = 8;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_FLAG_RANDOMRACES` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:93:11
[INFO] [stderr]    |
[INFO] [stderr] 93 | pub const MAP_FLAG_RANDOMRACES: u32 = 16;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GAME_NONE` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:96:11
[INFO] [stderr]    |
[INFO] [stderr] 96 | pub const GAME_NONE: u8 = 0;
[INFO] [stderr]    |           ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GAME_PUBLIC` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:97:11
[INFO] [stderr]    |
[INFO] [stderr] 97 | pub const GAME_PUBLIC: u8 = 16;
[INFO] [stderr]    |           ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GAME_PRIVATE` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:98:11
[INFO] [stderr]    |
[INFO] [stderr] 98 | pub const GAME_PRIVATE: u8 = 17;
[INFO] [stderr]    |           ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GAME_CLOSE` is never used
[INFO] [stderr]   --> src/gameprotocol.rs:99:11
[INFO] [stderr]    |
[INFO] [stderr] 99 | pub const GAME_CLOSE: u8 = 18;
[INFO] [stderr]    |           ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_GAMETYPE_UNKNOWN0` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:102:11
[INFO] [stderr]     |
[INFO] [stderr] 102 | pub const MAP_GAMETYPE_UNKNOWN0: u32 = 0;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_GAMETYPE_CUSTOM` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:103:11
[INFO] [stderr]     |
[INFO] [stderr] 103 | pub const MAP_GAMETYPE_CUSTOM: u32 = 1;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_GAMETYPE_SAVEDGAME` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:104:11
[INFO] [stderr]     |
[INFO] [stderr] 104 | pub const MAP_GAMETYPE_SAVEDGAME: u32 = 0x0200;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_GAMETYPE_PRIVATEGAME` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:105:11
[INFO] [stderr]     |
[INFO] [stderr] 105 | pub const MAP_GAMETYPE_PRIVATEGAME: u32 = 0x0800;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_GAMETYPE_BLIZZARD` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:106:11
[INFO] [stderr]     |
[INFO] [stderr] 106 | pub const MAP_GAMETYPE_BLIZZARD: u32 = 0x2000;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_GAMETYPE_MAKERBLIZ` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:107:11
[INFO] [stderr]     |
[INFO] [stderr] 107 | pub const MAP_GAMETYPE_MAKERBLIZ: u32 = 0x2000;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAP_GAMETYPE_MAKERUSER` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:108:11
[INFO] [stderr]     |
[INFO] [stderr] 108 | pub const MAP_GAMETYPE_MAKERUSER: u32 = 0x4000;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CHAT_MESSAGE` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:111:11
[INFO] [stderr]     |
[INFO] [stderr] 111 | pub const CHAT_MESSAGE: u8 = 16;
[INFO] [stderr]     |           ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CHAT_TEAM_CHANGE` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:112:11
[INFO] [stderr]     |
[INFO] [stderr] 112 | pub const CHAT_TEAM_CHANGE: u8 = 17;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CHAT_COLOUR_CHANGE` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:113:11
[INFO] [stderr]     |
[INFO] [stderr] 113 | pub const CHAT_COLOUR_CHANGE: u8 = 18;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CHAT_RACE_CHANGE` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:114:11
[INFO] [stderr]     |
[INFO] [stderr] 114 | pub const CHAT_RACE_CHANGE: u8 = 19;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CHAT_HANDICAP_CHANGE` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:115:11
[INFO] [stderr]     |
[INFO] [stderr] 115 | pub const CHAT_HANDICAP_CHANGE: u8 = 20;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CHAT_MESSAGE_EXTRA` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:116:11
[INFO] [stderr]     |
[INFO] [stderr] 116 | pub const CHAT_MESSAGE_EXTRA: u8 = 32;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CHATFLAG_TO_ALL` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:119:11
[INFO] [stderr]     |
[INFO] [stderr] 119 | pub const CHATFLAG_TO_ALL: u8 = CHAT_MESSAGE;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SLOTSTATUS_OPEN` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:120:11
[INFO] [stderr]     |
[INFO] [stderr] 120 | pub const SLOTSTATUS_OPEN: u8 = SLOT_STATUS_OPEN;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SLOTSTATUS_CLOSED` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:121:11
[INFO] [stderr]     |
[INFO] [stderr] 121 | pub const SLOTSTATUS_CLOSED: u8 = SLOT_STATUS_CLOSED;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SLOTSTATUS_OCCUPIED` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:122:11
[INFO] [stderr]     |
[INFO] [stderr] 122 | pub const SLOTSTATUS_OCCUPIED: u8 = SLOT_STATUS_OCCUPIED;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `IncomingAction` is never constructed
[INFO] [stderr]    --> src/gameprotocol.rs:126:12
[INFO] [stderr]     |
[INFO] [stderr] 126 | pub struct IncomingAction {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_playerinfo` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:134:8
[INFO] [stderr]     |
[INFO] [stderr] 134 | pub fn send_playerinfo(pid: u8, name: &str, external_ip: &[u8], internal_ip: &[u8]) -> ByteArray {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_playerleave_others` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:138:8
[INFO] [stderr]     |
[INFO] [stderr] 138 | pub fn send_playerleave_others(pid: u8, left_code: u32) -> ByteArray {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_chat_from_host` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:142:8
[INFO] [stderr]     |
[INFO] [stderr] 142 | pub fn send_chat_from_host(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_slotinfo` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:152:8
[INFO] [stderr]     |
[INFO] [stderr] 152 | pub fn send_slotinfo(
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_incoming_action` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:161:8
[INFO] [stderr]     |
[INFO] [stderr] 161 | pub fn send_incoming_action(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_countdown_end` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:177:8
[INFO] [stderr]     |
[INFO] [stderr] 177 | pub fn send_countdown_end() -> ByteArray {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_start_lag` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:181:8
[INFO] [stderr]     |
[INFO] [stderr] 181 | pub fn send_start_lag(laggers: &[(u8, u32)]) -> ByteArray {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_stop_lag` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:192:8
[INFO] [stderr]     |
[INFO] [stderr] 192 | pub fn send_stop_lag(pid: u8, lag_time: u32) -> ByteArray {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_ping_from_host` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:200:8
[INFO] [stderr]     |
[INFO] [stderr] 200 | pub fn send_ping_from_host() -> ByteArray {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `validate_header` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:233:8
[INFO] [stderr]     |
[INFO] [stderr] 233 | pub fn validate_header(data: &[u8]) -> bool {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_w3gs_slot_info_join` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:271:8
[INFO] [stderr]     |
[INFO] [stderr] 271 | pub fn send_w3gs_slot_info_join(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_w3gs_player_info` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:302:8
[INFO] [stderr]     |
[INFO] [stderr] 302 | pub fn send_w3gs_player_info(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_w3gs_player_leave` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:334:8
[INFO] [stderr]     |
[INFO] [stderr] 334 | pub fn send_w3gs_player_leave(pid: u8, left_code: u32) -> ByteArray {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_w3gs_slot_info` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:342:8
[INFO] [stderr]     |
[INFO] [stderr] 342 | pub fn send_w3gs_slot_info(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_w3gs_game_loaded` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:369:8
[INFO] [stderr]     |
[INFO] [stderr] 369 | pub fn send_w3gs_game_loaded(pid: u8) -> ByteArray {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_w3gs_map_check` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:377:8
[INFO] [stderr]     |
[INFO] [stderr] 377 | pub fn send_w3gs_map_check(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_w3gs_chat` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:395:8
[INFO] [stderr]     |
[INFO] [stderr] 395 | pub fn send_w3gs_chat(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_w3gs_start_download` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:414:8
[INFO] [stderr]     |
[INFO] [stderr] 414 | pub fn send_w3gs_start_download(from_pid: u8) -> ByteArray {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `IncomingJoinPlayer` is never constructed
[INFO] [stderr]    --> src/gameprotocol.rs:423:12
[INFO] [stderr]     |
[INFO] [stderr] 423 | pub struct IncomingJoinPlayer {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `receive_w3gs_req_join` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:430:8
[INFO] [stderr]     |
[INFO] [stderr] 430 | pub fn receive_w3gs_req_join(data: &[u8]) -> Option<IncomingJoinPlayer> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `receive_w3gs_leave_game` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:459:8
[INFO] [stderr]     |
[INFO] [stderr] 459 | pub fn receive_w3gs_leave_game(data: &[u8]) -> u32 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `receive_w3gs_pong` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:468:8
[INFO] [stderr]     |
[INFO] [stderr] 468 | pub fn receive_w3gs_pong(data: &[u8]) -> u32 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `receive_w3gs_action` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:477:8
[INFO] [stderr]     |
[INFO] [stderr] 477 | pub fn receive_w3gs_action(data: &[u8]) -> Option<(ByteArray, ByteArray)> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `receive_w3gs_keepalive` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:487:8
[INFO] [stderr]     |
[INFO] [stderr] 487 | pub fn receive_w3gs_keepalive(data: &[u8]) -> u32 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `ChatToHost` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:496:10
[INFO] [stderr]     |
[INFO] [stderr] 496 | pub enum ChatToHost {
[INFO] [stderr]     |          ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `receive_w3gs_chat_to_host` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:530:8
[INFO] [stderr]     |
[INFO] [stderr] 530 | pub fn receive_w3gs_chat_to_host(data: &[u8]) -> Option<ChatToHost> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `IncomingMapSize` is never constructed
[INFO] [stderr]    --> src/gameprotocol.rs:615:12
[INFO] [stderr]     |
[INFO] [stderr] 615 | pub struct IncomingMapSize {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `receive_w3gs_map_size` is never used
[INFO] [stderr]    --> src/gameprotocol.rs:620:8
[INFO] [stderr]     |
[INFO] [stderr] 620 | pub fn receive_w3gs_map_size(data: &[u8]) -> Option<IncomingMapSize> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GAME_PRIVATE` is never used
[INFO] [stderr]   --> src/ghost.rs:16:11
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub const GAME_PRIVATE: u8 = 17;
[INFO] [stderr]    |           ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GAME_PUBLIC` is never used
[INFO] [stderr]   --> src/ghost.rs:17:11
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub const GAME_PUBLIC: u8 = 16;
[INFO] [stderr]    |           ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DbGame` is never constructed
[INFO] [stderr]   --> src/ghostdb.rs:20:12
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub struct DbGame {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DbGamePlayer` is never constructed
[INFO] [stderr]   --> src/ghostdb.rs:32:12
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub struct DbGamePlayer {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ScoreCheck` is never constructed
[INFO] [stderr]   --> src/ghostdb.rs:49:12
[INFO] [stderr]    |
[INFO] [stderr] 49 | pub struct ScoreCheck {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `REJECT_GPS_INVALID` is never used
[INFO] [stderr]   --> src/gpsprotocol.rs:14:11
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub const REJECT_GPS_INVALID:  u32 = 1;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `validate_length` is never used
[INFO] [stderr]   --> src/gpsprotocol.rs:32:8
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub fn validate_length(data: &[u8]) -> bool {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_gpss_reconnect` is never used
[INFO] [stderr]   --> src/gpsprotocol.rs:80:8
[INFO] [stderr]    |
[INFO] [stderr] 80 | pub fn send_gpss_reconnect(last_packet: u32) -> ByteArray {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_gpss_ack` is never used
[INFO] [stderr]   --> src/gpsprotocol.rs:88:8
[INFO] [stderr]    |
[INFO] [stderr] 88 | pub fn send_gpss_ack(last_packet: u32) -> ByteArray {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `USER_IS_ALREADY_AN_ADMIN` is never used
[INFO] [stderr]   --> src/language.rs:30:15
[INFO] [stderr]    |
[INFO] [stderr] 30 |     pub const USER_IS_ALREADY_AN_ADMIN:         &str = "lang_0002"; // $SERVER$ $USER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `ADDED_USER_TO_ADMIN_DB` is never used
[INFO] [stderr]   --> src/language.rs:31:15
[INFO] [stderr]    |
[INFO] [stderr] 31 |     pub const ADDED_USER_TO_ADMIN_DB:           &str = "lang_0003"; // $SERVER$ $USER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `ERROR_ADDING_USER_TO_ADMIN_DB` is never used
[INFO] [stderr]   --> src/language.rs:32:15
[INFO] [stderr]    |
[INFO] [stderr] 32 |     pub const ERROR_ADDING_USER_TO_ADMIN_DB:    &str = "lang_0004"; // $SERVER$ $USER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `USER_IS_ALREADY_BANNED` is never used
[INFO] [stderr]   --> src/language.rs:34:15
[INFO] [stderr]    |
[INFO] [stderr] 34 |     pub const USER_IS_ALREADY_BANNED:           &str = "lang_0006"; // $SERVER$ $VICTIM$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `BANNED_USER` is never used
[INFO] [stderr]   --> src/language.rs:35:15
[INFO] [stderr]    |
[INFO] [stderr] 35 |     pub const BANNED_USER:                      &str = "lang_0007"; // $SERVER$ $VICTIM$
[INFO] [stderr]    |               ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `ERROR_BANNING_USER` is never used
[INFO] [stderr]   --> src/language.rs:36:15
[INFO] [stderr]    |
[INFO] [stderr] 36 |     pub const ERROR_BANNING_USER:               &str = "lang_0008"; // $SERVER$ $VICTIM$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `USER_IS_AN_ADMIN` is never used
[INFO] [stderr]   --> src/language.rs:37:15
[INFO] [stderr]    |
[INFO] [stderr] 37 |     pub const USER_IS_AN_ADMIN:                 &str = "lang_0009"; // $SERVER$ $USER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `USER_IS_NOT_AN_ADMIN` is never used
[INFO] [stderr]   --> src/language.rs:38:15
[INFO] [stderr]    |
[INFO] [stderr] 38 |     pub const USER_IS_NOT_AN_ADMIN:             &str = "lang_0010"; // $SERVER$ $USER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `USER_IS_NOT_BANNED` is never used
[INFO] [stderr]   --> src/language.rs:40:15
[INFO] [stderr]    |
[INFO] [stderr] 40 |     pub const USER_IS_NOT_BANNED:               &str = "lang_0012"; // $SERVER$ $VICTIM$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `THERE_ARE_NO_ADMINS` is never used
[INFO] [stderr]   --> src/language.rs:41:15
[INFO] [stderr]    |
[INFO] [stderr] 41 |     pub const THERE_ARE_NO_ADMINS:              &str = "lang_0013"; // $SERVER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `THERE_IS_ADMIN` is never used
[INFO] [stderr]   --> src/language.rs:42:15
[INFO] [stderr]    |
[INFO] [stderr] 42 |     pub const THERE_IS_ADMIN:                   &str = "lang_0014"; // $SERVER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `THERE_ARE_ADMINS` is never used
[INFO] [stderr]   --> src/language.rs:43:15
[INFO] [stderr]    |
[INFO] [stderr] 43 |     pub const THERE_ARE_ADMINS:                 &str = "lang_0015"; // $SERVER$ $COUNT$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `THERE_ARE_NO_BANNED_USERS` is never used
[INFO] [stderr]   --> src/language.rs:44:15
[INFO] [stderr]    |
[INFO] [stderr] 44 |     pub const THERE_ARE_NO_BANNED_USERS:        &str = "lang_0016"; // $SERVER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `THERE_IS_BANNED_USER` is never used
[INFO] [stderr]   --> src/language.rs:45:15
[INFO] [stderr]    |
[INFO] [stderr] 45 |     pub const THERE_IS_BANNED_USER:             &str = "lang_0017"; // $SERVER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `THERE_ARE_BANNED_USERS` is never used
[INFO] [stderr]   --> src/language.rs:46:15
[INFO] [stderr]    |
[INFO] [stderr] 46 |     pub const THERE_ARE_BANNED_USERS:           &str = "lang_0018"; // $SERVER$ $COUNT$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `YOU_CANT_DELETE_ROOT_ADMIN` is never used
[INFO] [stderr]   --> src/language.rs:47:15
[INFO] [stderr]    |
[INFO] [stderr] 47 |     pub const YOU_CANT_DELETE_ROOT_ADMIN:        &str = "lang_0019";
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `DELETED_USER_FROM_ADMIN_DB` is never used
[INFO] [stderr]   --> src/language.rs:48:15
[INFO] [stderr]    |
[INFO] [stderr] 48 |     pub const DELETED_USER_FROM_ADMIN_DB:       &str = "lang_0020"; // $SERVER$ $USER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `ERROR_DELETING_USER_FROM_ADMIN_DB` is never used
[INFO] [stderr]   --> src/language.rs:49:15
[INFO] [stderr]    |
[INFO] [stderr] 49 |     pub const ERROR_DELETING_USER_FROM_ADMIN_DB:&str = "lang_0021"; // $SERVER$ $USER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNBANNED_USER` is never used
[INFO] [stderr]   --> src/language.rs:50:15
[INFO] [stderr]    |
[INFO] [stderr] 50 |     pub const UNBANNED_USER:                    &str = "lang_0022"; // $VICTIM$
[INFO] [stderr]    |               ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `ERROR_UNBANNING_USER` is never used
[INFO] [stderr]   --> src/language.rs:51:15
[INFO] [stderr]    |
[INFO] [stderr] 51 |     pub const ERROR_UNBANNING_USER:             &str = "lang_0023"; // $VICTIM$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GAME_NUMBER_IS` is never used
[INFO] [stderr]   --> src/language.rs:52:15
[INFO] [stderr]    |
[INFO] [stderr] 52 |     pub const GAME_NUMBER_IS:                   &str = "lang_0024"; // $NUMBER$ $DESCRIPTION$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GAME_NUMBER_DOESNT_EXIST` is never used
[INFO] [stderr]   --> src/language.rs:53:15
[INFO] [stderr]    |
[INFO] [stderr] 53 |     pub const GAME_NUMBER_DOESNT_EXIST:         &str = "lang_0025"; // $NUMBER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GAME_IS_IN_THE_LOBBY` is never used
[INFO] [stderr]   --> src/language.rs:54:15
[INFO] [stderr]    |
[INFO] [stderr] 54 |     pub const GAME_IS_IN_THE_LOBBY:             &str = "lang_0026"; // $DESCRIPTION$ $CURRENT$ $MAX$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `THERE_IS_NO_GAME_IN_LOBBY` is never used
[INFO] [stderr]   --> src/language.rs:55:15
[INFO] [stderr]    |
[INFO] [stderr] 55 |     pub const THERE_IS_NO_GAME_IN_LOBBY:        &str = "lang_0027"; // $CURRENT$ $MAX$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNABLE_TO_LOAD_CONFIG_OUTSIDE` is never used
[INFO] [stderr]   --> src/language.rs:56:15
[INFO] [stderr]    |
[INFO] [stderr] 56 |     pub const UNABLE_TO_LOAD_CONFIG_OUTSIDE:    &str = "lang_0028";
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `LOADING_CONFIG_FILE` is never used
[INFO] [stderr]   --> src/language.rs:57:15
[INFO] [stderr]    |
[INFO] [stderr] 57 |     pub const LOADING_CONFIG_FILE:              &str = "lang_0029"; // $FILE$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNABLE_TO_LOAD_CONFIG_NOT_EXIST` is never used
[INFO] [stderr]   --> src/language.rs:58:15
[INFO] [stderr]    |
[INFO] [stderr] 58 |     pub const UNABLE_TO_LOAD_CONFIG_NOT_EXIST:  &str = "lang_0030"; // $FILE$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CREATING_PRIVATE_GAME` is never used
[INFO] [stderr]   --> src/language.rs:59:15
[INFO] [stderr]    |
[INFO] [stderr] 59 |     pub const CREATING_PRIVATE_GAME:            &str = "lang_0031"; // $GAMENAME$ $USER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CREATING_PUBLIC_GAME` is never used
[INFO] [stderr]   --> src/language.rs:60:15
[INFO] [stderr]    |
[INFO] [stderr] 60 |     pub const CREATING_PUBLIC_GAME:             &str = "lang_0032"; // $GAMENAME$ $USER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNABLE_TO_UNHOST_COUNTDOWN` is never used
[INFO] [stderr]   --> src/language.rs:61:15
[INFO] [stderr]    |
[INFO] [stderr] 61 |     pub const UNABLE_TO_UNHOST_COUNTDOWN:       &str = "lang_0033"; // $DESCRIPTION$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNHOSTING_GAME` is never used
[INFO] [stderr]   --> src/language.rs:62:15
[INFO] [stderr]    |
[INFO] [stderr] 62 |     pub const UNHOSTING_GAME:                   &str = "lang_0034"; // $DESCRIPTION$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNABLE_TO_UNHOST_NO_GAME` is never used
[INFO] [stderr]   --> src/language.rs:63:15
[INFO] [stderr]    |
[INFO] [stderr] 63 |     pub const UNABLE_TO_UNHOST_NO_GAME:         &str = "lang_0035";
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `VERSION_ADMIN` is never used
[INFO] [stderr]   --> src/language.rs:64:15
[INFO] [stderr]    |
[INFO] [stderr] 64 |     pub const VERSION_ADMIN:                    &str = "lang_0036"; // $VERSION$
[INFO] [stderr]    |               ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `VERSION_NOT_ADMIN` is never used
[INFO] [stderr]   --> src/language.rs:65:15
[INFO] [stderr]    |
[INFO] [stderr] 65 |     pub const VERSION_NOT_ADMIN:                &str = "lang_0037"; // $VERSION$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNABLE_TO_CREATE_ANOTHER_IN_LOBBY` is never used
[INFO] [stderr]   --> src/language.rs:66:15
[INFO] [stderr]    |
[INFO] [stderr] 66 |     pub const UNABLE_TO_CREATE_ANOTHER_IN_LOBBY:&str = "lang_0038"; // $GAMENAME$ $DESCRIPTION$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNABLE_TO_CREATE_MAX_GAMES` is never used
[INFO] [stderr]   --> src/language.rs:67:15
[INFO] [stderr]    |
[INFO] [stderr] 67 |     pub const UNABLE_TO_CREATE_MAX_GAMES:       &str = "lang_0039"; // $GAMENAME$ $MAX$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GAME_IS_OVER` is never used
[INFO] [stderr]   --> src/language.rs:68:15
[INFO] [stderr]    |
[INFO] [stderr] 68 |     pub const GAME_IS_OVER:                     &str = "lang_0040"; // $DESCRIPTION$
[INFO] [stderr]    |               ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SPOOF_CHECK_BY_REPLYING` is never used
[INFO] [stderr]   --> src/language.rs:69:15
[INFO] [stderr]    |
[INFO] [stderr] 69 |     pub const SPOOF_CHECK_BY_REPLYING:          &str = "lang_0041";
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GAME_REFRESHED` is never used
[INFO] [stderr]   --> src/language.rs:70:15
[INFO] [stderr]    |
[INFO] [stderr] 70 |     pub const GAME_REFRESHED:                   &str = "lang_0042";
[INFO] [stderr]    |               ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SPOOF_POSSIBLE_IS_AWAY` is never used
[INFO] [stderr]   --> src/language.rs:71:15
[INFO] [stderr]    |
[INFO] [stderr] 71 |     pub const SPOOF_POSSIBLE_IS_AWAY:           &str = "lang_0043"; // $USER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SPOOF_POSSIBLE_IS_UNAVAILABLE` is never used
[INFO] [stderr]   --> src/language.rs:72:15
[INFO] [stderr]    |
[INFO] [stderr] 72 |     pub const SPOOF_POSSIBLE_IS_UNAVAILABLE:    &str = "lang_0044"; // $USER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SPOOF_POSSIBLE_IS_REFUSING` is never used
[INFO] [stderr]   --> src/language.rs:73:15
[INFO] [stderr]    |
[INFO] [stderr] 73 |     pub const SPOOF_POSSIBLE_IS_REFUSING:       &str = "lang_0045"; // $USER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SPOOF_DETECTED_NOT_IN_GAME` is never used
[INFO] [stderr]   --> src/language.rs:74:15
[INFO] [stderr]    |
[INFO] [stderr] 74 |     pub const SPOOF_DETECTED_NOT_IN_GAME:       &str = "lang_0046"; // $USER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SPOOF_DETECTED_IN_PRIVATE` is never used
[INFO] [stderr]   --> src/language.rs:75:15
[INFO] [stderr]    |
[INFO] [stderr] 75 |     pub const SPOOF_DETECTED_IN_PRIVATE:        &str = "lang_0047"; // $USER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SPOOF_DETECTED_IN_ANOTHER_GAME` is never used
[INFO] [stderr]   --> src/language.rs:76:15
[INFO] [stderr]    |
[INFO] [stderr] 76 |     pub const SPOOF_DETECTED_IN_ANOTHER_GAME:   &str = "lang_0048"; // $USER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `HAS_PLAYED_GAMES_WITH_BOT` is never used
[INFO] [stderr]   --> src/language.rs:77:15
[INFO] [stderr]    |
[INFO] [stderr] 77 |     pub const HAS_PLAYED_GAMES_WITH_BOT:        &str = "lang_0049"; // $USER$ $FIRSTGAME$ $LASTGAME$ $TOTALGAMES$ $AVGLOADINGTIME$ $...
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `HASNT_PLAYED_GAMES_WITH_BOT` is never used
[INFO] [stderr]   --> src/language.rs:78:15
[INFO] [stderr]    |
[INFO] [stderr] 78 |     pub const HASNT_PLAYED_GAMES_WITH_BOT:      &str = "lang_0050"; // $USER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `AUTO_START_ENABLED` is never used
[INFO] [stderr]   --> src/language.rs:79:15
[INFO] [stderr]    |
[INFO] [stderr] 79 |     pub const AUTO_START_ENABLED:               &str = "lang_0051"; // $PLAYERS$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `AUTO_START_DISABLED` is never used
[INFO] [stderr]   --> src/language.rs:80:15
[INFO] [stderr]    |
[INFO] [stderr] 80 |     pub const AUTO_START_DISABLED:              &str = "lang_0052";
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNABLE_TO_START_NOT_ENOUGH` is never used
[INFO] [stderr]   --> src/language.rs:81:15
[INFO] [stderr]    |
[INFO] [stderr] 81 |     pub const UNABLE_TO_START_NOT_ENOUGH:       &str = "lang_0053"; // $PLAYERS$ $REQUIREDPLAYERS$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNABLE_TO_START_DOWNLOAD_IN_PROG` is never used
[INFO] [stderr]   --> src/language.rs:82:15
[INFO] [stderr]    |
[INFO] [stderr] 82 |     pub const UNABLE_TO_START_DOWNLOAD_IN_PROG: &str = "lang_0054";
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `COUNTDOWN_ABORTED` is never used
[INFO] [stderr]   --> src/language.rs:83:15
[INFO] [stderr]    |
[INFO] [stderr] 83 |     pub const COUNTDOWN_ABORTED:                &str = "lang_0055";
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_WAS_KICKED_BY` is never used
[INFO] [stderr]   --> src/language.rs:84:15
[INFO] [stderr]    |
[INFO] [stderr] 84 |     pub const PLAYER_WAS_KICKED_BY:             &str = "lang_0056"; // $VICTIM$ $USER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNABLE_TO_KICK_NO_MATCH` is never used
[INFO] [stderr]   --> src/language.rs:85:15
[INFO] [stderr]    |
[INFO] [stderr] 85 |     pub const UNABLE_TO_KICK_NO_MATCH:          &str = "lang_0057"; // $VICTIM$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNABLE_TO_KICK_MORE_THAN_ONE` is never used
[INFO] [stderr]   --> src/language.rs:86:15
[INFO] [stderr]    |
[INFO] [stderr] 86 |     pub const UNABLE_TO_KICK_MORE_THAN_ONE:     &str = "lang_0058"; // $VICTIM$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SETTING_LATENCY_TO` is never used
[INFO] [stderr]   --> src/language.rs:87:15
[INFO] [stderr]    |
[INFO] [stderr] 87 |     pub const SETTING_LATENCY_TO:               &str = "lang_0059"; // $LATENCY$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SETTING_LATENCY_TO_MIN` is never used
[INFO] [stderr]   --> src/language.rs:88:15
[INFO] [stderr]    |
[INFO] [stderr] 88 |     pub const SETTING_LATENCY_TO_MIN:           &str = "lang_0060"; // $LATENCY$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SETTING_LATENCY_TO_MAX` is never used
[INFO] [stderr]   --> src/language.rs:89:15
[INFO] [stderr]    |
[INFO] [stderr] 89 |     pub const SETTING_LATENCY_TO_MAX:           &str = "lang_0061"; // $LATENCY$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `LATENCY_IS` is never used
[INFO] [stderr]   --> src/language.rs:90:15
[INFO] [stderr]    |
[INFO] [stderr] 90 |     pub const LATENCY_IS:                       &str = "lang_0062"; // $LATENCY$
[INFO] [stderr]    |               ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SYNC_LIMIT_IS` is never used
[INFO] [stderr]   --> src/language.rs:91:15
[INFO] [stderr]    |
[INFO] [stderr] 91 |     pub const SYNC_LIMIT_IS:                    &str = "lang_0063"; // $SYNCLIMIT$
[INFO] [stderr]    |               ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SETTING_SYNC_LIMIT_TO` is never used
[INFO] [stderr]   --> src/language.rs:92:15
[INFO] [stderr]    |
[INFO] [stderr] 92 |     pub const SETTING_SYNC_LIMIT_TO:            &str = "lang_0064"; // $SYNCLIMIT$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SETTING_SYNC_LIMIT_TO_MIN` is never used
[INFO] [stderr]   --> src/language.rs:93:15
[INFO] [stderr]    |
[INFO] [stderr] 93 |     pub const SETTING_SYNC_LIMIT_TO_MIN:        &str = "lang_0065"; // $SYNCLIMIT$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SETTING_SYNC_LIMIT_TO_MAX` is never used
[INFO] [stderr]   --> src/language.rs:94:15
[INFO] [stderr]    |
[INFO] [stderr] 94 |     pub const SETTING_SYNC_LIMIT_TO_MAX:        &str = "lang_0066"; // $SYNCLIMIT$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNABLE_TO_START_COUNTDOWN` is never used
[INFO] [stderr]   --> src/language.rs:95:15
[INFO] [stderr]    |
[INFO] [stderr] 95 |     pub const UNABLE_TO_START_COUNTDOWN:        &str = "lang_0067";
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `COUNTDOWN_STARTED` is never used
[INFO] [stderr]   --> src/language.rs:96:15
[INFO] [stderr]    |
[INFO] [stderr] 96 |     pub const COUNTDOWN_STARTED:                &str = "lang_0068"; // $SECONDS$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GAME_LOCKED` is never used
[INFO] [stderr]   --> src/language.rs:97:15
[INFO] [stderr]    |
[INFO] [stderr] 97 |     pub const GAME_LOCKED:                      &str = "lang_0069";
[INFO] [stderr]    |               ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GAME_UNLOCKED` is never used
[INFO] [stderr]   --> src/language.rs:98:15
[INFO] [stderr]    |
[INFO] [stderr] 98 |     pub const GAME_UNLOCKED:                    &str = "lang_0070";
[INFO] [stderr]    |               ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `WAS_KICKED_FOR_LAGGING` is never used
[INFO] [stderr]   --> src/language.rs:99:15
[INFO] [stderr]    |
[INFO] [stderr] 99 |     pub const WAS_KICKED_FOR_LAGGING:           &str = "lang_0071"; // $USER$
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNABLE_TO_BAN_NO_MATCH` is never used
[INFO] [stderr]    --> src/language.rs:100:15
[INFO] [stderr]     |
[INFO] [stderr] 100 |     pub const UNABLE_TO_BAN_NO_MATCH:           &str = "lang_0072"; // $VICTIM$
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNABLE_TO_BAN_MORE_THAN_ONE` is never used
[INFO] [stderr]    --> src/language.rs:101:15
[INFO] [stderr]     |
[INFO] [stderr] 101 |     pub const UNABLE_TO_BAN_MORE_THAN_ONE:      &str = "lang_0073"; // $VICTIM$
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_WAS_BANNED_BY` is never used
[INFO] [stderr]    --> src/language.rs:102:15
[INFO] [stderr]     |
[INFO] [stderr] 102 |     pub const PLAYER_WAS_BANNED_BY:             &str = "lang_0074"; // $SERVER$ $VICTIM$ $USER$
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `HAS_PLAYED_DOTA_GAMES_WITH_BOT` is never used
[INFO] [stderr]    --> src/language.rs:103:15
[INFO] [stderr]     |
[INFO] [stderr] 103 |     pub const HAS_PLAYED_DOTA_GAMES_WITH_BOT:   &str = "lang_0075"; // $USER$ ... (20 placeholders)
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `HASNT_PLAYED_DOTA_GAMES_WITH_BOT` is never used
[INFO] [stderr]    --> src/language.rs:104:15
[INFO] [stderr]     |
[INFO] [stderr] 104 |     pub const HASNT_PLAYED_DOTA_GAMES_WITH_BOT: &str = "lang_0076"; // $USER$
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `AUTO_KICK_PING` is never used
[INFO] [stderr]    --> src/language.rs:105:15
[INFO] [stderr]     |
[INFO] [stderr] 105 |     pub const AUTO_KICK_PING:                   &str = "lang_0077"; // $VICTIM$ $PING$
[INFO] [stderr]     |               ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SPOOFCHECKED_AS` is never used
[INFO] [stderr]    --> src/language.rs:106:15
[INFO] [stderr]     |
[INFO] [stderr] 106 |     pub const SPOOFCHECKED_AS:                  &str = "lang_0078"; // $USER$ $REALM$
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_HAS_LEFT_VOLUNTARILY` is never used
[INFO] [stderr]    --> src/language.rs:107:15
[INFO] [stderr]     |
[INFO] [stderr] 107 |     pub const PLAYER_HAS_LEFT_VOLUNTARILY:      &str = "lang_0079"; // $USER$
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_HAS_LOST_CONNECTION` is never used
[INFO] [stderr]    --> src/language.rs:108:15
[INFO] [stderr]     |
[INFO] [stderr] 108 |     pub const PLAYER_HAS_LOST_CONNECTION:       &str = "lang_0080"; // $USER$ $REASON$
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_HAS_TIMED_OUT` is never used
[INFO] [stderr]    --> src/language.rs:109:15
[INFO] [stderr]     |
[INFO] [stderr] 109 |     pub const PLAYER_HAS_TIMED_OUT:             &str = "lang_0081"; // $USER$
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_DISCONNECTED` is never used
[INFO] [stderr]    --> src/language.rs:110:15
[INFO] [stderr]     |
[INFO] [stderr] 110 |     pub const PLAYER_DISCONNECTED:              &str = "lang_0082"; // $USER$
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `DESYNC_DETECTED` is never used
[INFO] [stderr]    --> src/language.rs:111:15
[INFO] [stderr]     |
[INFO] [stderr] 111 |     pub const DESYNC_DETECTED:                  &str = "lang_0083";
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GAME_LOADED` is never used
[INFO] [stderr]    --> src/language.rs:112:15
[INFO] [stderr]     |
[INFO] [stderr] 112 |     pub const GAME_LOADED:                      &str = "lang_0084";
[INFO] [stderr]     |               ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_FINISHED_LOADING` is never used
[INFO] [stderr]    --> src/language.rs:113:15
[INFO] [stderr]     |
[INFO] [stderr] 113 |     pub const PLAYER_FINISHED_LOADING:          &str = "lang_0085"; // $USER$ $LOADINGTIME$
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PLAYER_DOWNLOADED_MAP` is never used
[INFO] [stderr]    --> src/language.rs:114:15
[INFO] [stderr]     |
[INFO] [stderr] 114 |     pub const PLAYER_DOWNLOADED_MAP:            &str = "lang_0086"; // $USER$ $SECONDS$ $RATE$
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNABLE_TO_DOWNLOAD` is never used
[INFO] [stderr]    --> src/language.rs:115:15
[INFO] [stderr]     |
[INFO] [stderr] 115 |     pub const UNABLE_TO_DOWNLOAD:               &str = "lang_0087"; // $USER$
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `ANNOUNCE_MESSAGE_ENABLED` is never used
[INFO] [stderr]    --> src/language.rs:116:15
[INFO] [stderr]     |
[INFO] [stderr] 116 |     pub const ANNOUNCE_MESSAGE_ENABLED:         &str = "lang_0088";
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `ANNOUNCE_MESSAGE_DISABLED` is never used
[INFO] [stderr]    --> src/language.rs:117:15
[INFO] [stderr]     |
[INFO] [stderr] 117 |     pub const ANNOUNCE_MESSAGE_DISABLED:        &str = "lang_0089";
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `AUTO_SAVE_ENABLED` is never used
[INFO] [stderr]    --> src/language.rs:118:15
[INFO] [stderr]     |
[INFO] [stderr] 118 |     pub const AUTO_SAVE_ENABLED:                &str = "lang_0090";
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `AUTO_SAVE_DISABLED` is never used
[INFO] [stderr]    --> src/language.rs:119:15
[INFO] [stderr]     |
[INFO] [stderr] 119 |     pub const AUTO_SAVE_DISABLED:               &str = "lang_0091";
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SHUFFLING_PLAYERS` is never used
[INFO] [stderr]    --> src/language.rs:120:15
[INFO] [stderr]     |
[INFO] [stderr] 120 |     pub const SHUFFLING_PLAYERS:                &str = "lang_0092";
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNABLE_TO_DOWNLOAD_NO_MATCH` is never used
[INFO] [stderr]    --> src/language.rs:121:15
[INFO] [stderr]     |
[INFO] [stderr] 121 |     pub const UNABLE_TO_DOWNLOAD_NO_MATCH:      &str = "lang_0093"; // $VICTIM$
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNABLE_TO_DOWNLOAD_MORE_THAN_ONE` is never used
[INFO] [stderr]    --> src/language.rs:122:15
[INFO] [stderr]     |
[INFO] [stderr] 122 |     pub const UNABLE_TO_DOWNLOAD_MORE_THAN_ONE: &str = "lang_0094"; // $VICTIM$
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `THE_GAME_IS_ABOUT_TO_START` is never used
[INFO] [stderr]    --> src/language.rs:123:15
[INFO] [stderr]     |
[INFO] [stderr] 123 |     pub const THE_GAME_IS_ABOUT_TO_START:       &str = "lang_0095";
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CHECKED_PLAYER` is never used
[INFO] [stderr]    --> src/language.rs:124:15
[INFO] [stderr]     |
[INFO] [stderr] 124 |     pub const CHECKED_PLAYER:                   &str = "lang_0096"; // $USER$ $PING$ $FROM$ $ADMIN$ $OWNER$ $SPOOFED$ $REALM$ $RESE...
[INFO] [stderr]     |               ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNABLE_TO_CHECK_NO_MATCH` is never used
[INFO] [stderr]    --> src/language.rs:125:15
[INFO] [stderr]     |
[INFO] [stderr] 125 |     pub const UNABLE_TO_CHECK_NO_MATCH:         &str = "lang_0097"; // $USER$
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNABLE_TO_CHECK_MORE_THAN_ONE` is never used
[INFO] [stderr]    --> src/language.rs:126:15
[INFO] [stderr]     |
[INFO] [stderr] 126 |     pub const UNABLE_TO_CHECK_MORE_THAN_ONE:    &str = "lang_0098"; // $USER$
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MUTED_PLAYER` is never used
[INFO] [stderr]    --> src/language.rs:127:15
[INFO] [stderr]     |
[INFO] [stderr] 127 |     pub const MUTED_PLAYER:                     &str = "lang_0099"; // $VICTIM$ $USER$
[INFO] [stderr]     |               ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UNMUTED_PLAYER` is never used
[INFO] [stderr]    --> src/language.rs:128:15
[INFO] [stderr]     |
[INFO] [stderr] 128 |     pub const UNMUTED_PLAYER:                   &str = "lang_0100"; // $VICTIM$ $USER$
[INFO] [stderr]     |               ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `rotr32` is never used
[INFO] [stderr]   --> src/map.rs:26:4
[INFO] [stderr]    |
[INFO] [stderr] 26 | fn rotr32(x: u32, n: u32) -> u32 {
[INFO] [stderr]    |    ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAPOPT_HIDEMINIMAP` is never used
[INFO] [stderr]   --> src/map.rs:66:11
[INFO] [stderr]    |
[INFO] [stderr] 66 | pub const MAPOPT_HIDEMINIMAP: u32 = 1 << 0;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAPOPT_MODIFYALLYPRIORITIES` is never used
[INFO] [stderr]   --> src/map.rs:67:11
[INFO] [stderr]    |
[INFO] [stderr] 67 | pub const MAPOPT_MODIFYALLYPRIORITIES: u32 = 1 << 1;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAPOPT_REVEALTERRAIN` is never used
[INFO] [stderr]   --> src/map.rs:69:11
[INFO] [stderr]    |
[INFO] [stderr] 69 | pub const MAPOPT_REVEALTERRAIN: u32 = 1 << 4;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAPOPT_CUSTOMTECHTREE` is never used
[INFO] [stderr]   --> src/map.rs:72:11
[INFO] [stderr]    |
[INFO] [stderr] 72 | pub const MAPOPT_CUSTOMTECHTREE: u32 = 1 << 7;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAPOPT_CUSTOMABILITIES` is never used
[INFO] [stderr]   --> src/map.rs:73:11
[INFO] [stderr]    |
[INFO] [stderr] 73 | pub const MAPOPT_CUSTOMABILITIES: u32 = 1 << 8;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAPOPT_CUSTOMUPGRADES` is never used
[INFO] [stderr]   --> src/map.rs:74:11
[INFO] [stderr]    |
[INFO] [stderr] 74 | pub const MAPOPT_CUSTOMUPGRADES: u32 = 1 << 9;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAPOPT_WATERWAVESONCLIFFSHORES` is never used
[INFO] [stderr]   --> src/map.rs:75:11
[INFO] [stderr]    |
[INFO] [stderr] 75 | pub const MAPOPT_WATERWAVESONCLIFFSHORES: u32 = 1 << 11;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAPOPT_WATERWAVESONSLOPESHORES` is never used
[INFO] [stderr]   --> src/map.rs:76:11
[INFO] [stderr]    |
[INFO] [stderr] 76 | pub const MAPOPT_WATERWAVESONSLOPESHORES: u32 = 1 << 12;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAPGAMETYPE_UNKNOWN0` is never used
[INFO] [stderr]   --> src/map.rs:92:11
[INFO] [stderr]    |
[INFO] [stderr] 92 | pub const MAPGAMETYPE_UNKNOWN0: u32 = 1;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAPGAMETYPE_SAVEDGAME` is never used
[INFO] [stderr]   --> src/map.rs:93:11
[INFO] [stderr]    |
[INFO] [stderr] 93 | pub const MAPGAMETYPE_SAVEDGAME: u32 = 1 << 9;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAPGAMETYPE_PRIVATEGAME` is never used
[INFO] [stderr]   --> src/map.rs:94:11
[INFO] [stderr]    |
[INFO] [stderr] 94 | pub const MAPGAMETYPE_PRIVATEGAME: u32 = 1 << 11;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_null_terminated_string` is never used
[INFO] [stderr]    --> src/map.rs:106:4
[INFO] [stderr]     |
[INFO] [stderr] 106 | fn read_null_terminated_string(cursor: &mut Cursor<&Vec<u8>>) -> std::io::Result<String> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `REPLAY_ACTION_CHAT_TO_HOST` is never used
[INFO] [stderr]  --> src/packed.rs:7:11
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub const REPLAY_ACTION_CHAT_TO_HOST:  u8 = 0x20;
[INFO] [stderr]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `REPLAY_ACTION_DESYNC` is never used
[INFO] [stderr]  --> src/packed.rs:8:11
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub const REPLAY_ACTION_DESYNC:        u8 = 0x22;
[INFO] [stderr]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `REPLAY_ACTION_LEAVE_GAME` is never used
[INFO] [stderr]  --> src/packed.rs:9:11
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub const REPLAY_ACTION_LEAVE_GAME:    u8 = 0x17;
[INFO] [stderr]   |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `REPLAY_ACTION_TIMESLOT2` is never used
[INFO] [stderr]   --> src/packed.rs:11:11
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub const REPLAY_ACTION_TIMESLOT2:     u8 = 0x1E;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `REPLAY_ACTION_CHECKSUM` is never used
[INFO] [stderr]   --> src/packed.rs:12:11
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub const REPLAY_ACTION_CHECKSUM:      u8 = 0x22;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `REPLAY_ACTION_SAVE_GAME` is never used
[INFO] [stderr]   --> src/packed.rs:13:11
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub const REPLAY_ACTION_SAVE_GAME:     u8 = 0x06;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `pid`, `flag`, and `extra_flags` are never read
[INFO] [stderr]   --> src/packed.rs:30:9
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub struct ReplayChatMessage {
[INFO] [stderr]    |            ----------------- fields in this struct
[INFO] [stderr] 30 |     pub pid: u8,
[INFO] [stderr]    |         ^^^
[INFO] [stderr] 31 |     pub flag: u8,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr] 32 |     pub extra_flags: u32,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ReplayChatMessage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `game_name`, `stat_string`, `duration_ms`, `random_seed`, `select_mode`, and `start_spot_count` are never read
[INFO] [stderr]   --> src/packed.rs:52:9
[INFO] [stderr]    |
[INFO] [stderr] 48 | pub struct Replay {
[INFO] [stderr]    |            ------ fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 52 |     pub game_name: String,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 53 |     pub stat_string: String,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 56 |     pub duration_ms: u32,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 60 |     pub random_seed: u32,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 61 |     pub select_mode: u8,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 62 |     pub start_spot_count: u32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Replay` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: methods `set_random_seed`, `set_select_mode`, and `set_start_spot_count` are never used
[INFO] [stderr]    --> src/packed.rs:115:12
[INFO] [stderr]     |
[INFO] [stderr]  77 | impl Replay {
[INFO] [stderr]     | ----------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 115 |     pub fn set_random_seed(&mut self, seed: u32) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 120 |     pub fn set_select_mode(&mut self, mode: u8) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 125 |     pub fn set_start_spot_count(&mut self, count: u32) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]   --> src/replay.rs:17:9
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub struct Replay {
[INFO] [stderr]    |            ------ fields in this struct
[INFO] [stderr] 16 |     // ── Header fields ──
[INFO] [stderr] 17 |     pub host_pid: u8,
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr] 18 |     pub host_name: String,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 19 |     pub game_name: String,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 20 |     pub stat_string: String,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 21 |     pub war3_version: u32,
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 22 |     pub build_number: u32,
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 23 |     pub flags: u16,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 27 |     pub slots: Vec<GameSlot>,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr] 28 |     pub random_seed: u32,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 29 |     pub select_mode: u8,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 30 |     pub start_spot_count: u8,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 33 |     pub player_names: Vec<(u8, String)>,
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 39 |     pub map_path: String,
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr] 40 |     pub map_crc: ByteArray,
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr] 41 |     pub map_sha1: ByteArray,
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Replay` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: methods `set_slots`, `set_random_seed`, and `add_time_slot_actions` are never used
[INFO] [stderr]    --> src/replay.rs:121:12
[INFO] [stderr]     |
[INFO] [stderr]  44 | impl Replay {
[INFO] [stderr]     | ----------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 121 |     pub fn set_slots(&mut self, slots: &[GameSlot]) {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 127 |     pub fn set_random_seed(&mut self, seed: u32) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 132 |     pub fn add_time_slot_actions(
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]   --> src/savegame.rs:6:9
[INFO] [stderr]    |
[INFO] [stderr]  4 | pub struct SaveGame {
[INFO] [stderr]    |            -------- fields in this struct
[INFO] [stderr]  5 |     pub valid: bool,
[INFO] [stderr]  6 |     pub file_path: String,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr]  7 |     pub file_name: String,
[INFO] [stderr]  8 |     pub map_path: String,
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr]  9 |     pub game_name: String,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 10 |     pub num_slots: u8,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 11 |     pub slots: Vec<Vec<u8>>,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr] 12 |     pub random_seed: u32,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 13 |     pub magic_number: ByteArray,
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `SaveGame` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `load` is never used
[INFO] [stderr]   --> src/savegame.rs:41:12
[INFO] [stderr]    |
[INFO] [stderr] 16 | impl SaveGame {
[INFO] [stderr]    | ------------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 41 |     pub fn load(file_path: &str) -> Self {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `connect_simple` is never used
[INFO] [stderr]    --> src/socket.rs:273:18
[INFO] [stderr]     |
[INFO] [stderr] 256 | impl GhostTcpClient {
[INFO] [stderr]     | ------------------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 273 |     pub async fn connect_simple(address: &str, port: u16) -> io::Result<GhostTcpSocket> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: type alias `SharedTcpSocket` is never used
[INFO] [stderr]    --> src/socket.rs:392:10
[INFO] [stderr]     |
[INFO] [stderr] 392 | pub type SharedTcpSocket = Arc<Mutex<GhostTcpSocket>>;
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `make_shared` is never used
[INFO] [stderr]    --> src/socket.rs:394:8
[INFO] [stderr]     |
[INFO] [stderr] 394 | pub fn make_shared(socket: GhostTcpSocket) -> SharedTcpSocket {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `W3GS_HEADER_CONSTANT` is never used
[INFO] [stderr]    --> src/socket.rs:429:11
[INFO] [stderr]     |
[INFO] [stderr] 429 | pub const W3GS_HEADER_CONSTANT: u8 = 0xFF;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GPS_HEADER_CONSTANT` is never used
[INFO] [stderr]    --> src/socket.rs:430:11
[INFO] [stderr]     |
[INFO] [stderr] 430 | pub const GPS_HEADER_CONSTANT: u8 = 0xF8;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_byte_array_u8` is never used
[INFO] [stderr]  --> src/util.rs:8:8
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub fn create_byte_array_u8(c: u8) -> ByteArray {
[INFO] [stderr]   |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `append_byte_array_str` is never used
[INFO] [stderr]   --> src/util.rs:67:8
[INFO] [stderr]    |
[INFO] [stderr] 67 | pub fn append_byte_array_str(b: &mut ByteArray, s: &str, terminator: bool) {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `HELP_SID_AUTH_CHECK` should have a snake case name
[INFO] [stderr]   --> src/bncsutilinterface.rs:74:12
[INFO] [stderr]    |
[INFO] [stderr] 74 |     pub fn HELP_SID_AUTH_CHECK(
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `help_sid_auth_check`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `HELP_SID_AUTH_ACCOUNTLOGON` should have a snake case name
[INFO] [stderr]    --> src/bncsutilinterface.rs:179:12
[INFO] [stderr]     |
[INFO] [stderr] 179 |     pub fn HELP_SID_AUTH_ACCOUNTLOGON(&mut self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `help_sid_auth_accountlogon`
[INFO] [stderr] 
[INFO] [stderr] warning: method `HELP_SID_AUTH_ACCOUNTLOGONPROOF` should have a snake case name
[INFO] [stderr]    --> src/bncsutilinterface.rs:185:12
[INFO] [stderr]     |
[INFO] [stderr] 185 |     pub fn HELP_SID_AUTH_ACCOUNTLOGONPROOF(&mut self, salt: ByteArray, server_key: ByteArray) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `help_sid_auth_accountlogonproof`
[INFO] [stderr] 
[INFO] [stderr] warning: method `HELP_PvPGNPasswordHash` should have a snake case name
[INFO] [stderr]    --> src/bncsutilinterface.rs:191:12
[INFO] [stderr]     |
[INFO] [stderr] 191 |     pub fn HELP_PvPGNPasswordHash(&mut self, user_password: &str) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `help_pv_pgnpassword_hash`
[INFO] [stderr] 
[INFO] [stderr] warning: unused implementer of `futures::Future` that must be used
[INFO] [stderr]    --> src/bnet.rs:557:9
[INFO] [stderr]     |
[INFO] [stderr] 557 |         b.queue_chat_command("test");
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stderr]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused implementer of `futures::Future` that must be used
[INFO] [stderr]    --> src/bnet.rs:565:9
[INFO] [stderr]     |
[INFO] [stderr] 565 |         b.queue_chat_command("hello");
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stderr] 
[INFO] [stderr] warning: method `SEND_SID_CHECKAD` should have a snake case name
[INFO] [stderr]    --> src/bnetprotocol.rs:475:12
[INFO] [stderr]     |
[INFO] [stderr] 475 |     pub fn SEND_SID_CHECKAD(&self) -> ByteArray {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `send_sid_checkad`
[INFO] [stderr] 
[INFO] [stderr] warning: `ghost-rs` (bin "ghost-rs" test) generated 346 warnings (run `cargo fix --bin "ghost-rs" -p ghost-rs --tests` to apply 51 suggestions)
[INFO] [stderr]     Finished `test` profile [optimized + debuginfo] target(s) in 0.34s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/ghost_rs-4cc92a428436e89b)
[INFO] [stdout] 
[INFO] [stdout] running 135 tests
[INFO] [stdout] test bnet::tests::test_protocol_packets ... ok
[INFO] [stdout] test commandpacket::tests::test_clone ... ok
[INFO] [stdout] test commandpacket::tests::test_empty_data ... ok
[INFO] [stdout] test commandpacket::tests::test_new ... ok
[INFO] [stdout] test config::tests::test_set_override ... ok
[INFO] [stdout] test crc32::tests::test_different_data_different_crc ... ok
[INFO] [stdout] test bnet::tests::test_ban_management ... ok
[INFO] [stdout] test crc32::tests::test_empty_data ... ok
[INFO] [stdout] test bnet::tests::test_disconnect ... ok
[INFO] [stdout] test bnet::tests::test_new ... ok
[INFO] [stdout] test bnet::tests::test_root_admin ... ok
[INFO] [stdout] test crc32::tests::test_known_crc32 ... ok
[INFO] [stdout] test bnet::tests::test_queue_chat_not_logged_in ... ok
[INFO] [stdout] test config::tests::test_parse_basic ... ok
[INFO] [stdout] test bnet::tests::test_unqueue_packets ... ok
[INFO] [stdout] test crc32::tests::test_new ... ok
[INFO] [stdout] test crc32::tests::test_partial_crc_matches_full ... ok
[INFO] [stdout] test crc32::tests::test_reflect ... ok
[INFO] [stdout] test crc32::tests::test_single_byte ... ok
[INFO] [stdout] test csvparser::tests::test_mixed_types ... ok
[INFO] [stdout] test csvparser::tests::test_read_floats ... ok
[INFO] [stdout] test csvparser::tests::test_read_ints ... ok
[INFO] [stdout] test csvparser::tests::test_set_data ... ok
[INFO] [stdout] test game::tests::test_db_ban ... ok
[INFO] [stdout] test game::tests::test_db_game_player ... ok
[INFO] [stdout] test game::tests::test_dota_summary_avg ... ok
[INFO] [stdout] test gameplayer::tests::test_external_ip_string ... ok
[INFO] [stdout] test gameplayer::tests::test_game_player_name_terminated ... ok
[INFO] [stdout] test csvparser::tests::test_read_strings ... ok
[INFO] [stdout] test gameplayer::tests::test_game_player_ping ... ok
[INFO] [stdout] test gameplayer::tests::test_multi_packet_extract ... ok
[INFO] [stdout] test gameplayer::tests::test_potential_player_bad_header ... ok
[INFO] [stdout] test gameplayer::tests::test_potential_player_extract_packets ... ok
[INFO] [stdout] test csvparser::tests::test_read_quoted_string ... ok
[INFO] [stdout] test gameplayer::tests::test_send_buffer ... ok
[INFO] [stdout] test gameprotocol::tests::test_countdown_packets ... ok
[INFO] [stdout] test csvparser::tests::test_spaces ... ok
[INFO] [stdout] test gameplayer::tests::test_gproxy_ack ... ok
[INFO] [stdout] test gameprotocol::tests::test_extract_packets ... ok
[INFO] [stdout] test gameprotocol::tests::test_ping_packet ... ok
[INFO] [stdout] test bnet::tests::test_admin_management ... ok
[INFO] [stdout] test gameprotocol::tests::test_reject_packet ... ok
[INFO] [stdout] test gameprotocol::tests::test_slot_info_encode ... ok
[INFO] [stdout] test gameslot::tests::test_closed_slot_properties ... ok
[INFO] [stdout] test gameslot::tests::test_computer_slot ... ok
[INFO] [stdout] test gameslot::tests::test_all_races ... ok
[INFO] [stdout] test gameslot::tests::test_decode_slot_info_empty ... ok
[INFO] [stdout] test gameslot::tests::test_all_colours ... ok
[INFO] [stdout] test gameslot::tests::test_decode_slot_info_truncated ... ok
[INFO] [stdout] test gameslot::tests::test_encode_decode_slot_info ... ok
[INFO] [stdout] test gameslot::tests::test_new_slot ... ok
[INFO] [stdout] test gameslot::tests::test_observer_slot ... ok
[INFO] [stdout] test gameslot::tests::test_to_bytes_roundtrip ... ok
[INFO] [stdout] test ghost::tests::test_from_config_defaults ... ok
[INFO] [stdout] test gpsprotocol::tests::test_ack_roundtrip ... ok
[INFO] [stdout] test gpsprotocol::tests::test_client_init ... ok
[INFO] [stdout] test gpsprotocol::tests::test_client_reconnect ... ok
[INFO] [stdout] test ghost::tests::test_reload_configs ... ok
[INFO] [stdout] test ghost::tests::test_create_game_checks ... ok
[INFO] [stdout] test csvparser::tests::test_empty ... ok
[INFO] [stdout] test gpsprotocol::tests::test_server_init ... ok
[INFO] [stdout] test ghost::tests::test_events_dont_panic ... ok
[INFO] [stdout] test gameslot::tests::test_default_open ... ok
[INFO] [stdout] test gpsprotocol::tests::test_init_roundtrip ... ok
[INFO] [stdout] test gameslot::tests::test_from_bytes_7 ... ok
[INFO] [stdout] test gameslot::tests::test_from_bytes_9 ... ok
[INFO] [stdout] test ghost::tests::test_create_game_disabled ... ok
[INFO] [stdout] test gpsprotocol::tests::test_header_constant ... ok
[INFO] [stdout] test gpsprotocol::tests::test_reconnect_roundtrip ... ok
[INFO] [stdout] test gpsprotocol::tests::test_server_reject ... ok
[INFO] [stdout] test ghost::tests::test_from_config_custom ... ok
[INFO] [stdout] test language::tests::test_missing_key_returns_key ... ok
[INFO] [stdout] test packed::tests::test_add_chat_message ... ok
[INFO] [stdout] test language::tests::test_get_many_vars ... ok
[INFO] [stdout] test language::tests::test_get_simple ... ok
[INFO] [stdout] test language::tests::test_get_with_vars ... ok
[INFO] [stdout] test packed::tests::test_add_checksum ... ok
[INFO] [stdout] test packed::tests::test_add_player ... ok
[INFO] [stdout] test packed::tests::test_get_player_names ... ok
[INFO] [stdout] test packed::tests::test_set_slots ... ok
[INFO] [stdout] test replay::tests::test_add_chat_message ... ok
[INFO] [stdout] test packed::tests::test_add_timeslot ... ok
[INFO] [stdout] test packed::tests::test_duration_seconds ... ok
[INFO] [stdout] test packed::tests::test_build_header ... ok
[INFO] [stdout] test replay::tests::test_add_leave_game ... ok
[INFO] [stdout] test packed::tests::test_replay_host_info ... ok
[INFO] [stdout] test replay::tests::test_add_time_slot ... ok
[INFO] [stdout] test replay::tests::test_add_time_slot_duration ... ok
[INFO] [stdout] test savegame::tests::test_parse_valid_header ... ok
[INFO] [stdout] test replay::tests::test_encode_starts_with_magic ... ok
[INFO] [stdout] test sha1::tests::test_abc ... ok
[INFO] [stdout] test replay::tests::test_encode_with_blocks ... ok
[INFO] [stdout] test replay::tests::test_new ... ok
[INFO] [stdout] test savegame::tests::test_file_name_no_path ... ok
[INFO] [stdout] test savegame::tests::test_new_is_invalid ... ok
[INFO] [stdout] test socket::tests::test_empty_socket ... ok
[INFO] [stdout] test sha1::tests::test_empty ... ok
[INFO] [stdout] test sha1::tests::test_get_hash_bytes ... ok
[INFO] [stdout] test sha1::tests::test_incremental ... ok
[INFO] [stdout] test sha1::tests::test_long_vector ... ok
[INFO] [stdout] test socket::tests::test_extract_empty ... ok
[INFO] [stdout] test socket::tests::test_extract_bad_header ... ok
[INFO] [stdout] test sha1::tests::test_reset ... ok
[INFO] [stdout] test socket::tests::test_get_ip_bytes ... ok
[INFO] [stdout] test socket::tests::test_get_time ... ok
[INFO] [stdout] test socket::tests::test_now_ms ... ok
[INFO] [stdout] test socket::tests::test_put_get_bytes ... ok
[INFO] [stdout] test packed::tests::test_load_replay_header_invalid ... ok
[INFO] [stdout] test socket::tests::test_reset ... ok
[INFO] [stdout] test savegame::tests::test_parse_invalid_data ... ok
[INFO] [stdout] test packed::tests::test_new_replay ... ok
[INFO] [stdout] test util::tests::test_hex_string ... ok
[INFO] [stdout] test util::tests::test_extract_c_string ... ok
[INFO] [stdout] test util::tests::test_is_lan_ip ... ok
[INFO] [stdout] test util::tests::test_ms_to_string ... ok
[INFO] [stdout] test socket::tests::test_socket_error_display ... ok
[INFO] [stdout] test ghostdb::tests::test_admin_crud ... ok
[INFO] [stdout] test ghostdb::tests::test_ban_crud ... ok
[INFO] [stdout] test util::tests::test_replace_all ... ok
[INFO] [stdout] test util::tests::test_tokenize ... ok
[INFO] [stdout] test util::tests::test_u16_roundtrip ... ok
[INFO] [stdout] test util::tests::test_u32_reverse ... ok
[INFO] [stdout] test util::tests::test_factorial ... ok
[INFO] [stdout] test util::tests::test_u32_roundtrip ... ok
[INFO] [stdout] test util::tests::test_file_safe_name ... ok
[INFO] [stdout] test util::tests::test_stat_string_roundtrip ... ok
[INFO] [stdout] test gameprotocol::tests::test_game_slot_roundtrip ... ok
[INFO] [stdout] test gameplayer::tests::test_potential_player_partial_packet ... ok
[INFO] [stdout] test ghostdb::tests::test_db_open_and_schema ... ok
[INFO] [stdout] test bnet::tests::test_queue_chat_logged_in ... FAILED
[INFO] [stdout] test socket::tests::test_extract_packet_plus_remainder ... FAILED
[INFO] [stdout] test socket::tests::test_extract_bad_length ... FAILED
[INFO] [stdout] test socket::tests::test_extract_incomplete_packet ... FAILED
[INFO] [stdout] test socket::tests::test_extract_one_packet ... FAILED
[INFO] [stdout] test socket::tests::test_extract_two_packets ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- bnet::tests::test_queue_chat_logged_in stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'bnet::tests::test_queue_chat_logged_in' (29) panicked at src/bnet.rs:566:9:
[INFO] [stdout] assertion `left == right` failed
[INFO] [stdout]   left: 0
[INFO] [stdout]  right: 1
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x567594e1095a - std[b80a194dd3c418bb]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x567594e1095a - std[b80a194dd3c418bb]::backtrace_rs::backtrace::trace_unsynchronized::<std[b80a194dd3c418bb]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x567594e1095a - std[b80a194dd3c418bb]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x567594e1095a - <<std[b80a194dd3c418bb]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[10b6fa85044e1869]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x567594e2660a - <core[10b6fa85044e1869]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x567594e2660a - core[10b6fa85044e1869]::fmt::write
[INFO] [stdout]    6:     0x567594e15242 - std[b80a194dd3c418bb]::io::default_write_fmt::<alloc[dd269455e567d8e9]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x567594e15242 - <alloc[dd269455e567d8e9]::vec::Vec<u8> as std[b80a194dd3c418bb]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x567594dee31f - <std[b80a194dd3c418bb]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x567594dee31f - std[b80a194dd3c418bb]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x567594e08459 - std[b80a194dd3c418bb]::panicking::default_hook
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x567594d8813c - <alloc[dd269455e567d8e9]::boxed::Box<dyn for<'a, 'b> core[10b6fa85044e1869]::ops::function::Fn<(&'a std[b80a194dd3c418bb]::panic::PanicHookInfo<'b>,), Output = ()> + core[10b6fa85044e1869]::marker::Sync + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::Fn<(&std[b80a194dd3c418bb]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   12:     0x567594d8813c - test[826cbc6ef54ab466]::test_main_with_exit_callback::<test[826cbc6ef54ab466]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x567594e08612 - <alloc[dd269455e567d8e9]::boxed::Box<dyn for<'a, 'b> core[10b6fa85044e1869]::ops::function::Fn<(&'a std[b80a194dd3c418bb]::panic::PanicHookInfo<'b>,), Output = ()> + core[10b6fa85044e1869]::marker::Sync + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::Fn<(&std[b80a194dd3c418bb]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   14:     0x567594e08612 - std[b80a194dd3c418bb]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x567594dee3d8 - std[b80a194dd3c418bb]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x567594de5b49 - std[b80a194dd3c418bb]::sys::backtrace::__rust_end_short_backtrace::<std[b80a194dd3c418bb]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x567594def0ed - __rustc[9698a3e60dd14283]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x567594e26edc - core[10b6fa85044e1869]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x567594e26d63 - core[10b6fa85044e1869]::panicking::assert_failed_inner
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panicking.rs:439:17
[INFO] [stdout]   20:     0x567594e22638 - core[10b6fa85044e1869]::panicking::assert_failed::<usize, usize>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x567594d776c1 - ghost_rs::bnet::tests::test_queue_chat_logged_in::h89b90cf850583f24
[INFO] [stdout]                                at /opt/rustwide/workdir/src/bnet.rs:566:9
[INFO] [stdout]   22:     0x567594d52049 - ghost_rs::bnet::tests::test_queue_chat_logged_in::{{closure}}::hb241d889c82fd974
[INFO] [stdout]                                at /opt/rustwide/workdir/src/bnet.rs:562:35
[INFO] [stdout]   23:     0x567594d52049 - core::ops::function::FnOnce::call_once::h206f3cc3157b150d
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x567594d7c21b - <fn() -> core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x567594d7c21b - test[826cbc6ef54ab466]::__rust_begin_short_backtrace::<core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>, fn() -> core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:663:18
[INFO] [stdout]   26:     0x567594d88c0b - test[826cbc6ef54ab466]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:686:74
[INFO] [stdout]   27:     0x567594d88c0b - <core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   28:     0x567594d88c0b - std[b80a194dd3c418bb]::panicking::catch_unwind::do_call::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>, core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x567594d88c0b - std[b80a194dd3c418bb]::panicking::catch_unwind::<core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>, core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x567594d88c0b - std[b80a194dd3c418bb]::panic::catch_unwind::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>, core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x567594d88c0b - test[826cbc6ef54ab466]::run_test_in_process
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:686:27
[INFO] [stdout]   32:     0x567594d88c0b - test[826cbc6ef54ab466]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:607:43
[INFO] [stdout]   33:     0x567594d84324 - test[826cbc6ef54ab466]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:637:41
[INFO] [stdout]   34:     0x567594d84324 - std[b80a194dd3c418bb]::sys::backtrace::__rust_begin_short_backtrace::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x567594d8b812 - std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   36:     0x567594d8b812 - <core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   37:     0x567594d8b812 - std[b80a194dd3c418bb]::panicking::catch_unwind::do_call::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x567594d8b812 - std[b80a194dd3c418bb]::panicking::catch_unwind::<(), core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x567594d8b812 - std[b80a194dd3c418bb]::panic::catch_unwind::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x567594d8b812 - std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   41:     0x567594d8b812 - <std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1} as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x567594e0fbef - <alloc[dd269455e567d8e9]::boxed::Box<dyn core[10b6fa85044e1869]::ops::function::FnOnce<(), Output = ()> + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2240:9
[INFO] [stdout]   43:     0x567594e0fbef - <std[b80a194dd3c418bb]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   44:     0x772d4b034aa4 - <unknown>
[INFO] [stdout]   45:     0x772d4b0c1a64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- socket::tests::test_extract_packet_plus_remainder stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'socket::tests::test_extract_packet_plus_remainder' (139) panicked at src/socket.rs:607:9:
[INFO] [stdout] assertion failed: err.is_none()
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x567594e1095a - std[b80a194dd3c418bb]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x567594e1095a - std[b80a194dd3c418bb]::backtrace_rs::backtrace::trace_unsynchronized::<std[b80a194dd3c418bb]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x567594e1095a - std[b80a194dd3c418bb]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x567594e1095a - <<std[b80a194dd3c418bb]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[10b6fa85044e1869]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x567594e2660a - <core[10b6fa85044e1869]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x567594e2660a - core[10b6fa85044e1869]::fmt::write
[INFO] [stdout]    6:     0x567594e15242 - std[b80a194dd3c418bb]::io::default_write_fmt::<alloc[dd269455e567d8e9]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x567594e15242 - <alloc[dd269455e567d8e9]::vec::Vec<u8> as std[b80a194dd3c418bb]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x567594dee31f - <std[b80a194dd3c418bb]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x567594dee31f - std[b80a194dd3c418bb]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x567594e08459 - std[b80a194dd3c418bb]::panicking::default_hook
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x567594d8813c - <alloc[dd269455e567d8e9]::boxed::Box<dyn for<'a, 'b> core[10b6fa85044e1869]::ops::function::Fn<(&'a std[b80a194dd3c418bb]::panic::PanicHookInfo<'b>,), Output = ()> + core[10b6fa85044e1869]::marker::Sync + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::Fn<(&std[b80a194dd3c418bb]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   12:     0x567594d8813c - test[826cbc6ef54ab466]::test_main_with_exit_callback::<test[826cbc6ef54ab466]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x567594e08612 - <alloc[dd269455e567d8e9]::boxed::Box<dyn for<'a, 'b> core[10b6fa85044e1869]::ops::function::Fn<(&'a std[b80a194dd3c418bb]::panic::PanicHookInfo<'b>,), Output = ()> + core[10b6fa85044e1869]::marker::Sync + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::Fn<(&std[b80a194dd3c418bb]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   14:     0x567594e08612 - std[b80a194dd3c418bb]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x567594dee40a - std[b80a194dd3c418bb]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x567594de5b49 - std[b80a194dd3c418bb]::sys::backtrace::__rust_end_short_backtrace::<std[b80a194dd3c418bb]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x567594def0ed - __rustc[9698a3e60dd14283]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x567594e26edc - core[10b6fa85044e1869]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x567594e26ea2 - core[10b6fa85044e1869]::panicking::panic
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x567594d5445b - ghost_rs::socket::tests::test_extract_packet_plus_remainder::hc7534a021173386f
[INFO] [stdout]                                at /opt/rustwide/workdir/src/socket.rs:607:9
[INFO] [stdout]   21:     0x567594d5445b - ghost_rs::socket::tests::test_extract_packet_plus_remainder::{{closure}}::hf1d68cfa6cc0694b
[INFO] [stdout]                                at /opt/rustwide/workdir/src/socket.rs:604:44
[INFO] [stdout]   22:     0x567594d5445b - core::ops::function::FnOnce::call_once::ha66ad1971aded3a2
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x567594d7c21b - <fn() -> core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x567594d7c21b - test[826cbc6ef54ab466]::__rust_begin_short_backtrace::<core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>, fn() -> core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:663:18
[INFO] [stdout]   25:     0x567594d88c0b - test[826cbc6ef54ab466]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:686:74
[INFO] [stdout]   26:     0x567594d88c0b - <core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   27:     0x567594d88c0b - std[b80a194dd3c418bb]::panicking::catch_unwind::do_call::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>, core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:581:40
[INFO] [stdout]   28:     0x567594d88c0b - std[b80a194dd3c418bb]::panicking::catch_unwind::<core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>, core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:544:19
[INFO] [stdout]   29:     0x567594d88c0b - std[b80a194dd3c418bb]::panic::catch_unwind::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>, core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panic.rs:359:14
[INFO] [stdout]   30:     0x567594d88c0b - test[826cbc6ef54ab466]::run_test_in_process
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:686:27
[INFO] [stdout]   31:     0x567594d88c0b - test[826cbc6ef54ab466]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:607:43
[INFO] [stdout]   32:     0x567594d84324 - test[826cbc6ef54ab466]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:637:41
[INFO] [stdout]   33:     0x567594d84324 - std[b80a194dd3c418bb]::sys::backtrace::__rust_begin_short_backtrace::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   34:     0x567594d8b812 - std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   35:     0x567594d8b812 - <core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   36:     0x567594d8b812 - std[b80a194dd3c418bb]::panicking::catch_unwind::do_call::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:581:40
[INFO] [stdout]   37:     0x567594d8b812 - std[b80a194dd3c418bb]::panicking::catch_unwind::<(), core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:544:19
[INFO] [stdout]   38:     0x567594d8b812 - std[b80a194dd3c418bb]::panic::catch_unwind::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panic.rs:359:14
[INFO] [stdout]   39:     0x567594d8b812 - std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   40:     0x567594d8b812 - <std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1} as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x567594e0fbef - <alloc[dd269455e567d8e9]::boxed::Box<dyn core[10b6fa85044e1869]::ops::function::FnOnce<(), Output = ()> + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2240:9
[INFO] [stdout]   42:     0x567594e0fbef - <std[b80a194dd3c418bb]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   43:     0x772d4b034aa4 - <unknown>
[INFO] [stdout]   44:     0x772d4b0c1a64 - clone
[INFO] [stdout]   45:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- socket::tests::test_extract_bad_length stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'socket::tests::test_extract_bad_length' (135) panicked at src/socket.rs:600:9:
[INFO] [stdout] assertion failed: err.unwrap().contains("length")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x567594e1095a - std[b80a194dd3c418bb]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x567594e1095a - std[b80a194dd3c418bb]::backtrace_rs::backtrace::trace_unsynchronized::<std[b80a194dd3c418bb]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x567594e1095a - std[b80a194dd3c418bb]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x567594e1095a - <<std[b80a194dd3c418bb]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[10b6fa85044e1869]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x567594e2660a - <core[10b6fa85044e1869]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x567594e2660a - core[10b6fa85044e1869]::fmt::write
[INFO] [stdout]    6:     0x567594e15242 - std[b80a194dd3c418bb]::io::default_write_fmt::<alloc[dd269455e567d8e9]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x567594e15242 - <alloc[dd269455e567d8e9]::vec::Vec<u8> as std[b80a194dd3c418bb]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x567594dee31f - <std[b80a194dd3c418bb]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x567594dee31f - std[b80a194dd3c418bb]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x567594e08459 - std[b80a194dd3c418bb]::panicking::default_hook
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x567594d8813c - <alloc[dd269455e567d8e9]::boxed::Box<dyn for<'a, 'b> core[10b6fa85044e1869]::ops::function::Fn<(&'a std[b80a194dd3c418bb]::panic::PanicHookInfo<'b>,), Output = ()> + core[10b6fa85044e1869]::marker::Sync + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::Fn<(&std[b80a194dd3c418bb]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   12:     0x567594d8813c - test[826cbc6ef54ab466]::test_main_with_exit_callback::<test[826cbc6ef54ab466]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x567594e08612 - <alloc[dd269455e567d8e9]::boxed::Box<dyn for<'a, 'b> core[10b6fa85044e1869]::ops::function::Fn<(&'a std[b80a194dd3c418bb]::panic::PanicHookInfo<'b>,), Output = ()> + core[10b6fa85044e1869]::marker::Sync + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::Fn<(&std[b80a194dd3c418bb]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   14:     0x567594e08612 - std[b80a194dd3c418bb]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x567594dee40a - std[b80a194dd3c418bb]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x567594de5b49 - std[b80a194dd3c418bb]::sys::backtrace::__rust_end_short_backtrace::<std[b80a194dd3c418bb]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x567594def0ed - __rustc[9698a3e60dd14283]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x567594e26edc - core[10b6fa85044e1869]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x567594e26ea2 - core[10b6fa85044e1869]::panicking::panic
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x567594d52c4d - ghost_rs::socket::tests::test_extract_bad_length::ha94421bfd39d22c3
[INFO] [stdout]                                at /opt/rustwide/workdir/src/socket.rs:600:9
[INFO] [stdout]   21:     0x567594d52c4d - ghost_rs::socket::tests::test_extract_bad_length::{{closure}}::h38f48bf5bad1030c
[INFO] [stdout]                                at /opt/rustwide/workdir/src/socket.rs:595:33
[INFO] [stdout]   22:     0x567594d52c4d - core::ops::function::FnOnce::call_once::h3e992098d0d28d24
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x567594d7c21b - <fn() -> core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x567594d7c21b - test[826cbc6ef54ab466]::__rust_begin_short_backtrace::<core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>, fn() -> core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:663:18
[INFO] [stdout]   25:     0x567594d88c0b - test[826cbc6ef54ab466]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:686:74
[INFO] [stdout]   26:     0x567594d88c0b - <core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   27:     0x567594d88c0b - std[b80a194dd3c418bb]::panicking::catch_unwind::do_call::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>, core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:581:40
[INFO] [stdout]   28:     0x567594d88c0b - std[b80a194dd3c418bb]::panicking::catch_unwind::<core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>, core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:544:19
[INFO] [stdout]   29:     0x567594d88c0b - std[b80a194dd3c418bb]::panic::catch_unwind::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>, core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panic.rs:359:14
[INFO] [stdout]   30:     0x567594d88c0b - test[826cbc6ef54ab466]::run_test_in_process
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:686:27
[INFO] [stdout]   31:     0x567594d88c0b - test[826cbc6ef54ab466]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:607:43
[INFO] [stdout]   32:     0x567594d84324 - test[826cbc6ef54ab466]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:637:41
[INFO] [stdout]   33:     0x567594d84324 - std[b80a194dd3c418bb]::sys::backtrace::__rust_begin_short_backtrace::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   34:     0x567594d8b812 - std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   35:     0x567594d8b812 - <core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   36:     0x567594d8b812 - std[b80a194dd3c418bb]::panicking::catch_unwind::do_call::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:581:40
[INFO] [stdout]   37:     0x567594d8b812 - std[b80a194dd3c418bb]::panicking::catch_unwind::<(), core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:544:19
[INFO] [stdout]   38:     0x567594d8b812 - std[b80a194dd3c418bb]::panic::catch_unwind::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panic.rs:359:14
[INFO] [stdout]   39:     0x567594d8b812 - std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   40:     0x567594d8b812 - <std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1} as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x567594e0fbef - <alloc[dd269455e567d8e9]::boxed::Box<dyn core[10b6fa85044e1869]::ops::function::FnOnce<(), Output = ()> + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2240:9
[INFO] [stdout]   42:     0x567594e0fbef - <std[b80a194dd3c418bb]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   43:     0x772d4b034aa4 - <unknown>
[INFO] [stdout]   44:     0x772d4b0c1a64 - clone
[INFO] [stdout]   45:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- socket::tests::test_extract_incomplete_packet stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'socket::tests::test_extract_incomplete_packet' (137) panicked at src/socket.rs:580:9:
[INFO] [stdout] assertion failed: err.is_none()
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x567594e1095a - std[b80a194dd3c418bb]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x567594e1095a - std[b80a194dd3c418bb]::backtrace_rs::backtrace::trace_unsynchronized::<std[b80a194dd3c418bb]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x567594e1095a - std[b80a194dd3c418bb]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x567594e1095a - <<std[b80a194dd3c418bb]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[10b6fa85044e1869]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x567594e2660a - <core[10b6fa85044e1869]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x567594e2660a - core[10b6fa85044e1869]::fmt::write
[INFO] [stdout]    6:     0x567594e15242 - std[b80a194dd3c418bb]::io::default_write_fmt::<alloc[dd269455e567d8e9]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x567594e15242 - <alloc[dd269455e567d8e9]::vec::Vec<u8> as std[b80a194dd3c418bb]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x567594dee31f - <std[b80a194dd3c418bb]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x567594dee31f - std[b80a194dd3c418bb]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x567594e08459 - std[b80a194dd3c418bb]::panicking::default_hook
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x567594d8813c - <alloc[dd269455e567d8e9]::boxed::Box<dyn for<'a, 'b> core[10b6fa85044e1869]::ops::function::Fn<(&'a std[b80a194dd3c418bb]::panic::PanicHookInfo<'b>,), Output = ()> + core[10b6fa85044e1869]::marker::Sync + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::Fn<(&std[b80a194dd3c418bb]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   12:     0x567594d8813c - test[826cbc6ef54ab466]::test_main_with_exit_callback::<test[826cbc6ef54ab466]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x567594e08612 - <alloc[dd269455e567d8e9]::boxed::Box<dyn for<'a, 'b> core[10b6fa85044e1869]::ops::function::Fn<(&'a std[b80a194dd3c418bb]::panic::PanicHookInfo<'b>,), Output = ()> + core[10b6fa85044e1869]::marker::Sync + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::Fn<(&std[b80a194dd3c418bb]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   14:     0x567594e08612 - std[b80a194dd3c418bb]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x567594dee40a - std[b80a194dd3c418bb]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x567594de5b49 - std[b80a194dd3c418bb]::sys::backtrace::__rust_end_short_backtrace::<std[b80a194dd3c418bb]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x567594def0ed - __rustc[9698a3e60dd14283]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x567594e26edc - core[10b6fa85044e1869]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x567594e26ea2 - core[10b6fa85044e1869]::panicking::panic
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x567594d53d78 - ghost_rs::socket::tests::test_extract_incomplete_packet::h16d47c5841e390a9
[INFO] [stdout]   21:     0x567594d53d78 - ghost_rs::socket::tests::test_extract_incomplete_packet::{{closure}}::hf24ac0c5ee2e9572
[INFO] [stdout]                                at /opt/rustwide/workdir/src/socket.rs:577:40
[INFO] [stdout]   22:     0x567594d53d78 - core::ops::function::FnOnce::call_once::h7709336b9143d89c
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x567594d7c21b - <fn() -> core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x567594d7c21b - test[826cbc6ef54ab466]::__rust_begin_short_backtrace::<core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>, fn() -> core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:663:18
[INFO] [stdout]   25:     0x567594d88c0b - test[826cbc6ef54ab466]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:686:74
[INFO] [stdout]   26:     0x567594d88c0b - <core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   27:     0x567594d88c0b - std[b80a194dd3c418bb]::panicking::catch_unwind::do_call::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>, core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:581:40
[INFO] [stdout]   28:     0x567594d88c0b - std[b80a194dd3c418bb]::panicking::catch_unwind::<core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>, core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:544:19
[INFO] [stdout]   29:     0x567594d88c0b - std[b80a194dd3c418bb]::panic::catch_unwind::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>, core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panic.rs:359:14
[INFO] [stdout]   30:     0x567594d88c0b - test[826cbc6ef54ab466]::run_test_in_process
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:686:27
[INFO] [stdout]   31:     0x567594d88c0b - test[826cbc6ef54ab466]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:607:43
[INFO] [stdout]   32:     0x567594d84324 - test[826cbc6ef54ab466]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:637:41
[INFO] [stdout]   33:     0x567594d84324 - std[b80a194dd3c418bb]::sys::backtrace::__rust_begin_short_backtrace::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   34:     0x567594d8b812 - std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   35:     0x567594d8b812 - <core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   36:     0x567594d8b812 - std[b80a194dd3c418bb]::panicking::catch_unwind::do_call::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:581:40
[INFO] [stdout]   37:     0x567594d8b812 - std[b80a194dd3c418bb]::panicking::catch_unwind::<(), core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:544:19
[INFO] [stdout]   38:     0x567594d8b812 - std[b80a194dd3c418bb]::panic::catch_unwind::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panic.rs:359:14
[INFO] [stdout]   39:     0x567594d8b812 - std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   40:     0x567594d8b812 - <std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1} as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x567594e0fbef - <alloc[dd269455e567d8e9]::boxed::Box<dyn core[10b6fa85044e1869]::ops::function::FnOnce<(), Output = ()> + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2240:9
[INFO] [stdout]   42:     0x567594e0fbef - <std[b80a194dd3c418bb]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   43:     0x772d4b034aa4 - <unknown>
[INFO] [stdout]   44:     0x772d4b0c1a64 - clone
[INFO] [stdout]   45:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- socket::tests::test_extract_one_packet stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'socket::tests::test_extract_one_packet' (138) panicked at src/socket.rs:556:9:
[INFO] [stdout] assertion failed: err.is_none()
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x567594e1095a - std[b80a194dd3c418bb]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x567594e1095a - std[b80a194dd3c418bb]::backtrace_rs::backtrace::trace_unsynchronized::<std[b80a194dd3c418bb]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x567594e1095a - std[b80a194dd3c418bb]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x567594e1095a - <<std[b80a194dd3c418bb]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[10b6fa85044e1869]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x567594e2660a - <core[10b6fa85044e1869]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x567594e2660a - core[10b6fa85044e1869]::fmt::write
[INFO] [stdout]    6:     0x567594e15242 - std[b80a194dd3c418bb]::io::default_write_fmt::<alloc[dd269455e567d8e9]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x567594e15242 - <alloc[dd269455e567d8e9]::vec::Vec<u8> as std[b80a194dd3c418bb]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x567594dee31f - <std[b80a194dd3c418bb]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x567594dee31f - std[b80a194dd3c418bb]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x567594e08459 - std[b80a194dd3c418bb]::panicking::default_hook
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x567594d8813c - <alloc[dd269455e567d8e9]::boxed::Box<dyn for<'a, 'b> core[10b6fa85044e1869]::ops::function::Fn<(&'a std[b80a194dd3c418bb]::panic::PanicHookInfo<'b>,), Output = ()> + core[10b6fa85044e1869]::marker::Sync + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::Fn<(&std[b80a194dd3c418bb]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   12:     0x567594d8813c - test[826cbc6ef54ab466]::test_main_with_exit_callback::<test[826cbc6ef54ab466]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x567594e08612 - <alloc[dd269455e567d8e9]::boxed::Box<dyn for<'a, 'b> core[10b6fa85044e1869]::ops::function::Fn<(&'a std[b80a194dd3c418bb]::panic::PanicHookInfo<'b>,), Output = ()> + core[10b6fa85044e1869]::marker::Sync + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::Fn<(&std[b80a194dd3c418bb]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   14:     0x567594e08612 - std[b80a194dd3c418bb]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x567594dee40a - std[b80a194dd3c418bb]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x567594de5b49 - std[b80a194dd3c418bb]::sys::backtrace::__rust_end_short_backtrace::<std[b80a194dd3c418bb]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x567594def0ed - __rustc[9698a3e60dd14283]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x567594e26edc - core[10b6fa85044e1869]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x567594e26ea2 - core[10b6fa85044e1869]::panicking::panic
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x567594d52954 - ghost_rs::socket::tests::test_extract_one_packet::hd54f06380e0136a4
[INFO] [stdout]   21:     0x567594d52954 - ghost_rs::socket::tests::test_extract_one_packet::{{closure}}::h84aeb58c5195e8bb
[INFO] [stdout]                                at /opt/rustwide/workdir/src/socket.rs:553:33
[INFO] [stdout]   22:     0x567594d52954 - core::ops::function::FnOnce::call_once::h3882d685fa98084e
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x567594d7c21b - <fn() -> core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x567594d7c21b - test[826cbc6ef54ab466]::__rust_begin_short_backtrace::<core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>, fn() -> core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:663:18
[INFO] [stdout]   25:     0x567594d88c0b - test[826cbc6ef54ab466]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:686:74
[INFO] [stdout]   26:     0x567594d88c0b - <core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   27:     0x567594d88c0b - std[b80a194dd3c418bb]::panicking::catch_unwind::do_call::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>, core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:581:40
[INFO] [stdout]   28:     0x567594d88c0b - std[b80a194dd3c418bb]::panicking::catch_unwind::<core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>, core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:544:19
[INFO] [stdout]   29:     0x567594d88c0b - std[b80a194dd3c418bb]::panic::catch_unwind::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>, core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panic.rs:359:14
[INFO] [stdout]   30:     0x567594d88c0b - test[826cbc6ef54ab466]::run_test_in_process
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:686:27
[INFO] [stdout]   31:     0x567594d88c0b - test[826cbc6ef54ab466]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:607:43
[INFO] [stdout]   32:     0x567594d84324 - test[826cbc6ef54ab466]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:637:41
[INFO] [stdout]   33:     0x567594d84324 - std[b80a194dd3c418bb]::sys::backtrace::__rust_begin_short_backtrace::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   34:     0x567594d8b812 - std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   35:     0x567594d8b812 - <core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   36:     0x567594d8b812 - std[b80a194dd3c418bb]::panicking::catch_unwind::do_call::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:581:40
[INFO] [stdout]   37:     0x567594d8b812 - std[b80a194dd3c418bb]::panicking::catch_unwind::<(), core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:544:19
[INFO] [stdout]   38:     0x567594d8b812 - std[b80a194dd3c418bb]::panic::catch_unwind::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panic.rs:359:14
[INFO] [stdout]   39:     0x567594d8b812 - std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   40:     0x567594d8b812 - <std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1} as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x567594e0fbef - <alloc[dd269455e567d8e9]::boxed::Box<dyn core[10b6fa85044e1869]::ops::function::FnOnce<(), Output = ()> + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2240:9
[INFO] [stdout]   42:     0x567594e0fbef - <std[b80a194dd3c418bb]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   43:     0x772d4b034aa4 - <unknown>
[INFO] [stdout]   44:     0x772d4b0c1a64 - clone
[INFO] [stdout]   45:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- socket::tests::test_extract_two_packets stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'socket::tests::test_extract_two_packets' (140) panicked at src/socket.rs:569:9:
[INFO] [stdout] assertion failed: err.is_none()
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x567594e1095a - std[b80a194dd3c418bb]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x567594e1095a - std[b80a194dd3c418bb]::backtrace_rs::backtrace::trace_unsynchronized::<std[b80a194dd3c418bb]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x567594e1095a - std[b80a194dd3c418bb]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x567594e1095a - <<std[b80a194dd3c418bb]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[10b6fa85044e1869]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x567594e2660a - <core[10b6fa85044e1869]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x567594e2660a - core[10b6fa85044e1869]::fmt::write
[INFO] [stdout]    6:     0x567594e15242 - std[b80a194dd3c418bb]::io::default_write_fmt::<alloc[dd269455e567d8e9]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x567594e15242 - <alloc[dd269455e567d8e9]::vec::Vec<u8> as std[b80a194dd3c418bb]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x567594dee31f - <std[b80a194dd3c418bb]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x567594dee31f - std[b80a194dd3c418bb]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x567594e08459 - std[b80a194dd3c418bb]::panicking::default_hook
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x567594d8813c - <alloc[dd269455e567d8e9]::boxed::Box<dyn for<'a, 'b> core[10b6fa85044e1869]::ops::function::Fn<(&'a std[b80a194dd3c418bb]::panic::PanicHookInfo<'b>,), Output = ()> + core[10b6fa85044e1869]::marker::Sync + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::Fn<(&std[b80a194dd3c418bb]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   12:     0x567594d8813c - test[826cbc6ef54ab466]::test_main_with_exit_callback::<test[826cbc6ef54ab466]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x567594e08612 - <alloc[dd269455e567d8e9]::boxed::Box<dyn for<'a, 'b> core[10b6fa85044e1869]::ops::function::Fn<(&'a std[b80a194dd3c418bb]::panic::PanicHookInfo<'b>,), Output = ()> + core[10b6fa85044e1869]::marker::Sync + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::Fn<(&std[b80a194dd3c418bb]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   14:     0x567594e08612 - std[b80a194dd3c418bb]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x567594dee40a - std[b80a194dd3c418bb]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x567594de5b49 - std[b80a194dd3c418bb]::sys::backtrace::__rust_end_short_backtrace::<std[b80a194dd3c418bb]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x567594def0ed - __rustc[9698a3e60dd14283]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x567594e26edc - core[10b6fa85044e1869]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x567594e26ea2 - core[10b6fa85044e1869]::panicking::panic
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x567594d51f06 - ghost_rs::socket::tests::test_extract_two_packets::h0f078a3e12c3acd7
[INFO] [stdout]   21:     0x567594d51f06 - ghost_rs::socket::tests::test_extract_two_packets::{{closure}}::h541a386c34cb8eb2
[INFO] [stdout]                                at /opt/rustwide/workdir/src/socket.rs:565:34
[INFO] [stdout]   22:     0x567594d51f06 - core::ops::function::FnOnce::call_once::h1a4b09019790055c
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x567594d7c21b - <fn() -> core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x567594d7c21b - test[826cbc6ef54ab466]::__rust_begin_short_backtrace::<core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>, fn() -> core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:663:18
[INFO] [stdout]   25:     0x567594d88c0b - test[826cbc6ef54ab466]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:686:74
[INFO] [stdout]   26:     0x567594d88c0b - <core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   27:     0x567594d88c0b - std[b80a194dd3c418bb]::panicking::catch_unwind::do_call::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>, core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:581:40
[INFO] [stdout]   28:     0x567594d88c0b - std[b80a194dd3c418bb]::panicking::catch_unwind::<core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>, core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:544:19
[INFO] [stdout]   29:     0x567594d88c0b - std[b80a194dd3c418bb]::panic::catch_unwind::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<test[826cbc6ef54ab466]::run_test_in_process::{closure#0}>, core[10b6fa85044e1869]::result::Result<(), alloc[dd269455e567d8e9]::string::String>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panic.rs:359:14
[INFO] [stdout]   30:     0x567594d88c0b - test[826cbc6ef54ab466]::run_test_in_process
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:686:27
[INFO] [stdout]   31:     0x567594d88c0b - test[826cbc6ef54ab466]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:607:43
[INFO] [stdout]   32:     0x567594d84324 - test[826cbc6ef54ab466]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/test/src/lib.rs:637:41
[INFO] [stdout]   33:     0x567594d84324 - std[b80a194dd3c418bb]::sys::backtrace::__rust_begin_short_backtrace::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   34:     0x567594d8b812 - std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   35:     0x567594d8b812 - <core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   36:     0x567594d8b812 - std[b80a194dd3c418bb]::panicking::catch_unwind::do_call::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:581:40
[INFO] [stdout]   37:     0x567594d8b812 - std[b80a194dd3c418bb]::panicking::catch_unwind::<(), core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panicking.rs:544:19
[INFO] [stdout]   38:     0x567594d8b812 - std[b80a194dd3c418bb]::panic::catch_unwind::<core[10b6fa85044e1869]::panic::unwind_safe::AssertUnwindSafe<std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/panic.rs:359:14
[INFO] [stdout]   39:     0x567594d8b812 - std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked::<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   40:     0x567594d8b812 - <std[b80a194dd3c418bb]::thread::lifecycle::spawn_unchecked<test[826cbc6ef54ab466]::run_test::{closure#1}, ()>::{closure#1} as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x567594e0fbef - <alloc[dd269455e567d8e9]::boxed::Box<dyn core[10b6fa85044e1869]::ops::function::FnOnce<(), Output = ()> + core[10b6fa85044e1869]::marker::Send> as core[10b6fa85044e1869]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/alloc/src/boxed.rs:2240:9
[INFO] [stdout]   42:     0x567594e0fbef - <std[b80a194dd3c418bb]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/ad726b5063362ec9897ef3d67452fc5606ee70fa/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   43:     0x772d4b034aa4 - <unknown>
[INFO] [stdout]   44:     0x772d4b0c1a64 - clone
[INFO] [stdout]   45:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     bnet::tests::test_queue_chat_logged_in
[INFO] [stdout]     socket::tests::test_extract_bad_length
[INFO] [stdout]     socket::tests::test_extract_incomplete_packet
[INFO] [stdout]     socket::tests::test_extract_one_packet
[INFO] [stdout]     socket::tests::test_extract_packet_plus_remainder
[INFO] [stdout]     socket::tests::test_extract_two_packets
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 129 passed; 6 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin ghost-rs`
[INFO] running `Command { std: "docker" "inspect" "a0faddbe262fd972af2f562bc23e30bca5b5aca03dcc71eaa4274b52ff11b14f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a0faddbe262fd972af2f562bc23e30bca5b5aca03dcc71eaa4274b52ff11b14f", kill_on_drop: false }`
[INFO] [stdout] a0faddbe262fd972af2f562bc23e30bca5b5aca03dcc71eaa4274b52ff11b14f
