[INFO] fetching crate raylib_interactive 0.1.6... [INFO] testing raylib_interactive-0.1.6 against master#cdb45c87e2cd43495379f7e867e3cc15dcee9f93 for pr-145838-1 [INFO] extracting crate raylib_interactive 0.1.6 into /workspace/builds/worker-4-tc1/source [INFO] started tweaking crates.io crate raylib_interactive 0.1.6 [INFO] removed 0 missing examples [INFO] finished tweaking crates.io crate raylib_interactive 0.1.6 [INFO] tweaked toml for crates.io crate raylib_interactive 0.1.6 written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate raylib_interactive 0.1.6 on toolchain cdb45c87e2cd43495379f7e867e3cc15dcee9f93 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate raylib_interactive 0.1.6 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" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded raylib v5.5.1 [INFO] [stderr] Downloaded raylib-sys v5.5.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] f4750571040cf270fba46395fa2de9cef8c544492ab3623ddc28d63ee321d16a [INFO] running `Command { std: "docker" "start" "-a" "f4750571040cf270fba46395fa2de9cef8c544492ab3623ddc28d63ee321d16a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f4750571040cf270fba46395fa2de9cef8c544492ab3623ddc28d63ee321d16a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f4750571040cf270fba46395fa2de9cef8c544492ab3623ddc28d63ee321d16a", kill_on_drop: false }` [INFO] [stdout] f4750571040cf270fba46395fa2de9cef8c544492ab3623ddc28d63ee321d16a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 4b1f225885fb63f21d9aa892a7bde933c97db2e0e3d1fc507947b9fd174548db [INFO] running `Command { std: "docker" "start" "-a" "4b1f225885fb63f21d9aa892a7bde933c97db2e0e3d1fc507947b9fd174548db", kill_on_drop: false }` [INFO] [stderr] Compiling glob v0.3.2 [INFO] [stderr] Compiling prettyplease v0.2.35 [INFO] [stderr] Compiling libc v0.2.174 [INFO] [stderr] Compiling minimal-lexical v0.2.1 [INFO] [stderr] Compiling regex-syntax v0.8.5 [INFO] [stderr] Compiling libloading v0.8.8 [INFO] [stderr] Compiling simd-adler32 v0.3.7 [INFO] [stderr] Compiling bindgen v0.70.1 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling rustc-hash v1.1.0 [INFO] [stderr] Compiling bitflags v2.9.1 [INFO] [stderr] Compiling cmake v0.1.54 [INFO] [stderr] Compiling syn v2.0.104 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling linux-raw-sys v0.4.15 [INFO] [stderr] Compiling itertools v0.13.0 [INFO] [stderr] Compiling x11rb-protocol v0.13.1 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling fdeflate v0.3.7 [INFO] [stderr] Compiling parking_lot_core v0.9.11 [INFO] [stderr] Compiling bytemuck v1.23.1 [INFO] [stderr] Compiling byteorder-lite v0.1.0 [INFO] [stderr] Compiling nom v7.1.3 [INFO] [stderr] Compiling seq-macro v0.3.6 [INFO] [stderr] Compiling clang-sys v1.8.1 [INFO] [stderr] Compiling parking_lot v0.12.4 [INFO] [stderr] Compiling flate2 v1.1.2 [INFO] [stderr] Compiling png v0.17.16 [INFO] [stderr] Compiling regex-automata v0.4.9 [INFO] [stderr] Compiling image v0.25.6 [INFO] [stderr] Compiling cexpr v0.6.0 [INFO] [stderr] Compiling regex v1.11.1 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling x11rb v0.13.1 [INFO] [stderr] Compiling arboard v3.6.0 [INFO] [stderr] Compiling raylib-sys v5.5.1 [INFO] [stderr] Compiling raylib v5.5.1 [INFO] [stderr] Compiling raylib_interactive v0.1.6 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `raylib::prelude::*` [INFO] [stdout] --> src/lib.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use raylib::prelude::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `was_active` [INFO] [stdout] --> src/textfield.rs:96:17 [INFO] [stdout] | [INFO] [stdout] 96 | let was_active = self.is_active; [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_was_active` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `acc_width` [INFO] [stdout] --> src/textfield.rs:122:25 [INFO] [stdout] | [INFO] [stdout] 122 | let mut acc_width = 0.0; [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_acc_width` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `clear_selection` [INFO] [stdout] --> src/textfield.rs:270:21 [INFO] [stdout] | [INFO] [stdout] 270 | let mut clear_selection = || { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_clear_selection` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pos` [INFO] [stdout] --> src/textfield.rs:338:42 [INFO] [stdout] | [INFO] [stdout] 338 | ... for (i, (pos, ch)) in chars.iter().enumerate().rev() { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_pos` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pos` [INFO] [stdout] --> src/textfield.rs:367:42 [INFO] [stdout] | [INFO] [stdout] 367 | ... for (i, (pos, ch)) in chars.iter().enumerate() { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_pos` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/textfield.rs:122:21 [INFO] [stdout] | [INFO] [stdout] 122 | let mut acc_width = 0.0; [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/textfield.rs:270:17 [INFO] [stdout] | [INFO] [stdout] 270 | let mut clear_selection = || { [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/textfield.rs:335:37 [INFO] [stdout] | [INFO] [stdout] 335 | ... let mut idx = self.cursor_position; [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `width` [INFO] [stdout] --> src/textfield.rs:522:17 [INFO] [stdout] | [INFO] [stdout] 522 | let mut width = 0.0; [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_width` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/textfield.rs:522:13 [INFO] [stdout] | [INFO] [stdout] 522 | let mut width = 0.0; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `found_cursor` is assigned to, but never used [INFO] [stdout] --> src/textfield.rs:543:17 [INFO] [stdout] | [INFO] [stdout] 543 | let mut found_cursor = false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_found_cursor` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `cursor_x` is assigned to, but never used [INFO] [stdout] --> src/textfield.rs:544:17 [INFO] [stdout] | [INFO] [stdout] 544 | let mut cursor_x = 0.0; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_cursor_x` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `found_cursor` is never read [INFO] [stdout] --> src/textfield.rs:554:17 [INFO] [stdout] | [INFO] [stdout] 554 | found_cursor = true; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `cursor_x` is never read [INFO] [stdout] --> src/textfield.rs:555:17 [INFO] [stdout] | [INFO] [stdout] 555 | cursor_x = w; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `temp_end` [INFO] [stdout] --> src/textfield.rs:573:21 [INFO] [stdout] | [INFO] [stdout] 573 | let mut temp_end = temp_start; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_end` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/textfield.rs:541:13 [INFO] [stdout] | [INFO] [stdout] 541 | let mut start = self.scroll_offset; [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/textfield.rs:573:17 [INFO] [stdout] | [INFO] [stdout] 573 | let mut temp_end = temp_start; [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ch` [INFO] [stdout] --> src/textfield.rs:614:25 [INFO] [stdout] | [INFO] [stdout] 614 | for (i, ch) in text_slice.char_indices() { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_ch` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `text_x` [INFO] [stdout] --> src/button.rs:140:13 [INFO] [stdout] | [INFO] [stdout] 140 | let text_x = self.bounds.x + (self.bounds.width - text_width as f32) / 2.0; [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_text_x` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 52.69s [INFO] running `Command { std: "docker" "inspect" "4b1f225885fb63f21d9aa892a7bde933c97db2e0e3d1fc507947b9fd174548db", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4b1f225885fb63f21d9aa892a7bde933c97db2e0e3d1fc507947b9fd174548db", kill_on_drop: false }` [INFO] [stdout] 4b1f225885fb63f21d9aa892a7bde933c97db2e0e3d1fc507947b9fd174548db [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] d2a71aa89cfbd17b6176cbfd828908b8390df5b3e8b743fe1ac5d975489cf1cf [INFO] running `Command { std: "docker" "start" "-a" "d2a71aa89cfbd17b6176cbfd828908b8390df5b3e8b743fe1ac5d975489cf1cf", kill_on_drop: false }` [INFO] [stdout] warning: unused import: `raylib::prelude::*` [INFO] [stdout] --> src/lib.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use raylib::prelude::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `was_active` [INFO] [stdout] --> src/textfield.rs:96:17 [INFO] [stdout] | [INFO] [stdout] 96 | let was_active = self.is_active; [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_was_active` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `acc_width` [INFO] [stdout] --> src/textfield.rs:122:25 [INFO] [stdout] | [INFO] [stdout] 122 | let mut acc_width = 0.0; [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_acc_width` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `clear_selection` [INFO] [stdout] --> src/textfield.rs:270:21 [INFO] [stdout] | [INFO] [stdout] 270 | let mut clear_selection = || { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_clear_selection` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pos` [INFO] [stdout] --> src/textfield.rs:338:42 [INFO] [stdout] | [INFO] [stdout] 338 | ... for (i, (pos, ch)) in chars.iter().enumerate().rev() { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_pos` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pos` [INFO] [stdout] --> src/textfield.rs:367:42 [INFO] [stdout] | [INFO] [stdout] 367 | ... for (i, (pos, ch)) in chars.iter().enumerate() { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_pos` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/textfield.rs:122:21 [INFO] [stdout] | [INFO] [stdout] 122 | let mut acc_width = 0.0; [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/textfield.rs:270:17 [INFO] [stdout] | [INFO] [stdout] 270 | let mut clear_selection = || { [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/textfield.rs:335:37 [INFO] [stdout] | [INFO] [stdout] 335 | ... let mut idx = self.cursor_position; [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `width` [INFO] [stdout] --> src/textfield.rs:522:17 [INFO] [stdout] | [INFO] [stdout] 522 | let mut width = 0.0; [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_width` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/textfield.rs:522:13 [INFO] [stdout] | [INFO] [stdout] 522 | let mut width = 0.0; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `found_cursor` is assigned to, but never used [INFO] [stdout] --> src/textfield.rs:543:17 [INFO] [stdout] | [INFO] [stdout] 543 | let mut found_cursor = false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_found_cursor` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `cursor_x` is assigned to, but never used [INFO] [stdout] --> src/textfield.rs:544:17 [INFO] [stdout] | [INFO] [stdout] 544 | let mut cursor_x = 0.0; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_cursor_x` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling raylib_interactive v0.1.6 (/opt/rustwide/workdir) [INFO] [stdout] warning: value assigned to `found_cursor` is never read [INFO] [stdout] --> src/textfield.rs:554:17 [INFO] [stdout] | [INFO] [stdout] 554 | found_cursor = true; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `cursor_x` is never read [INFO] [stdout] --> src/textfield.rs:555:17 [INFO] [stdout] | [INFO] [stdout] 555 | cursor_x = w; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `temp_end` [INFO] [stdout] --> src/textfield.rs:573:21 [INFO] [stdout] | [INFO] [stdout] 573 | let mut temp_end = temp_start; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_end` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/textfield.rs:541:13 [INFO] [stdout] | [INFO] [stdout] 541 | let mut start = self.scroll_offset; [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/textfield.rs:573:17 [INFO] [stdout] | [INFO] [stdout] 573 | let mut temp_end = temp_start; [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ch` [INFO] [stdout] --> src/textfield.rs:614:25 [INFO] [stdout] | [INFO] [stdout] 614 | for (i, ch) in text_slice.char_indices() { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_ch` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `text_x` [INFO] [stdout] --> src/button.rs:140:13 [INFO] [stdout] | [INFO] [stdout] 140 | let text_x = self.bounds.x + (self.bounds.width - text_width as f32) / 2.0; [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_text_x` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `raylib::prelude::*` [INFO] [stdout] --> src/lib.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use raylib::prelude::*; [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: `Style` [INFO] [stdout] --> examples/dropdown_test.rs:2:44 [INFO] [stdout] | [INFO] [stdout] 2 | use raylib_interactive::{Button, Dropdown, Style, presets, update_all, draw_all}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `was_active` [INFO] [stdout] --> src/textfield.rs:96:17 [INFO] [stdout] | [INFO] [stdout] 96 | let was_active = self.is_active; [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_was_active` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `acc_width` [INFO] [stdout] --> src/textfield.rs:122:25 [INFO] [stdout] | [INFO] [stdout] 122 | let mut acc_width = 0.0; [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_acc_width` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `clear_selection` [INFO] [stdout] --> src/textfield.rs:270:21 [INFO] [stdout] | [INFO] [stdout] 270 | let mut clear_selection = || { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_clear_selection` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pos` [INFO] [stdout] --> src/textfield.rs:338:42 [INFO] [stdout] | [INFO] [stdout] 338 | ... for (i, (pos, ch)) in chars.iter().enumerate().rev() { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_pos` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pos` [INFO] [stdout] --> src/textfield.rs:367:42 [INFO] [stdout] | [INFO] [stdout] 367 | ... for (i, (pos, ch)) in chars.iter().enumerate() { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_pos` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/textfield.rs:122:21 [INFO] [stdout] | [INFO] [stdout] 122 | let mut acc_width = 0.0; [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/textfield.rs:270:17 [INFO] [stdout] | [INFO] [stdout] 270 | let mut clear_selection = || { [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/textfield.rs:335:37 [INFO] [stdout] | [INFO] [stdout] 335 | ... let mut idx = self.cursor_position; [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `width` [INFO] [stdout] --> src/textfield.rs:522:17 [INFO] [stdout] | [INFO] [stdout] 522 | let mut width = 0.0; [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_width` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/textfield.rs:522:13 [INFO] [stdout] | [INFO] [stdout] 522 | let mut width = 0.0; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `found_cursor` is assigned to, but never used [INFO] [stdout] --> src/textfield.rs:543:17 [INFO] [stdout] | [INFO] [stdout] 543 | let mut found_cursor = false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_found_cursor` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `cursor_x` is assigned to, but never used [INFO] [stdout] --> src/textfield.rs:544:17 [INFO] [stdout] | [INFO] [stdout] 544 | let mut cursor_x = 0.0; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_cursor_x` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `found_cursor` is never read [INFO] [stdout] --> src/textfield.rs:554:17 [INFO] [stdout] | [INFO] [stdout] 554 | found_cursor = true; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `cursor_x` is never read [INFO] [stdout] --> src/textfield.rs:555:17 [INFO] [stdout] | [INFO] [stdout] 555 | cursor_x = w; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `temp_end` [INFO] [stdout] --> src/textfield.rs:573:21 [INFO] [stdout] | [INFO] [stdout] 573 | let mut temp_end = temp_start; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_end` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/textfield.rs:541:13 [INFO] [stdout] | [INFO] [stdout] 541 | let mut start = self.scroll_offset; [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/textfield.rs:573:17 [INFO] [stdout] | [INFO] [stdout] 573 | let mut temp_end = temp_start; [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ch` [INFO] [stdout] --> src/textfield.rs:614:25 [INFO] [stdout] | [INFO] [stdout] 614 | for (i, ch) in text_slice.char_indices() { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_ch` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `text_x` [INFO] [stdout] --> src/button.rs:140:13 [INFO] [stdout] | [INFO] [stdout] 140 | let text_x = self.bounds.x + (self.bounds.width - text_width as f32) / 2.0; [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_text_x` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Style` [INFO] [stdout] --> examples/test_runner.rs:2:65 [INFO] [stdout] | [INFO] [stdout] 2 | use raylib_interactive::{Button, TextField, Checkbox, Dropdown, Style, presets, TestResults, run_all_tests, update_all, draw_all}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1.36s [INFO] running `Command { std: "docker" "inspect" "d2a71aa89cfbd17b6176cbfd828908b8390df5b3e8b743fe1ac5d975489cf1cf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d2a71aa89cfbd17b6176cbfd828908b8390df5b3e8b743fe1ac5d975489cf1cf", kill_on_drop: false }` [INFO] [stdout] d2a71aa89cfbd17b6176cbfd828908b8390df5b3e8b743fe1ac5d975489cf1cf [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 38617c827e3e8363049794891391e6479060dbcd27ca0d494a3b7f47e103fbd5 [INFO] running `Command { std: "docker" "start" "-a" "38617c827e3e8363049794891391e6479060dbcd27ca0d494a3b7f47e103fbd5", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `raylib::prelude::*` [INFO] [stderr] --> src/lib.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use raylib::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `was_active` [INFO] [stderr] --> src/textfield.rs:96:17 [INFO] [stderr] | [INFO] [stderr] 96 | let was_active = self.is_active; [INFO] [stderr] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_was_active` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `acc_width` [INFO] [stderr] --> src/textfield.rs:122:25 [INFO] [stderr] | [INFO] [stderr] 122 | let mut acc_width = 0.0; [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_acc_width` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `clear_selection` [INFO] [stderr] --> src/textfield.rs:270:21 [INFO] [stderr] | [INFO] [stderr] 270 | let mut clear_selection = || { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_clear_selection` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pos` [INFO] [stderr] --> src/textfield.rs:338:42 [INFO] [stderr] | [INFO] [stderr] 338 | ... for (i, (pos, ch)) in chars.iter().enumerate().rev() { [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_pos` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pos` [INFO] [stderr] --> src/textfield.rs:367:42 [INFO] [stderr] | [INFO] [stderr] 367 | ... for (i, (pos, ch)) in chars.iter().enumerate() { [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_pos` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/textfield.rs:122:21 [INFO] [stderr] | [INFO] [stderr] 122 | let mut acc_width = 0.0; [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/textfield.rs:270:17 [INFO] [stderr] | [INFO] [stderr] 270 | let mut clear_selection = || { [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/textfield.rs:335:37 [INFO] [stderr] | [INFO] [stderr] 335 | ... let mut idx = self.cursor_position; [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `width` [INFO] [stderr] --> src/textfield.rs:522:17 [INFO] [stderr] | [INFO] [stderr] 522 | let mut width = 0.0; [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_width` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/textfield.rs:522:13 [INFO] [stderr] | [INFO] [stderr] 522 | let mut width = 0.0; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable `found_cursor` is assigned to, but never used [INFO] [stderr] --> src/textfield.rs:543:17 [INFO] [stderr] | [INFO] [stderr] 543 | let mut found_cursor = false; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_found_cursor` instead [INFO] [stderr] [INFO] [stderr] warning: variable `cursor_x` is assigned to, but never used [INFO] [stderr] --> src/textfield.rs:544:17 [INFO] [stderr] | [INFO] [stderr] 544 | let mut cursor_x = 0.0; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_cursor_x` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `found_cursor` is never read [INFO] [stderr] --> src/textfield.rs:554:17 [INFO] [stderr] | [INFO] [stderr] 554 | found_cursor = true; [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: value assigned to `cursor_x` is never read [INFO] [stderr] --> src/textfield.rs:555:17 [INFO] [stderr] | [INFO] [stderr] 555 | cursor_x = w; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: unused variable: `temp_end` [INFO] [stderr] --> src/textfield.rs:573:21 [INFO] [stderr] | [INFO] [stderr] 573 | let mut temp_end = temp_start; [INFO] [stderr] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_temp_end` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/textfield.rs:541:13 [INFO] [stderr] | [INFO] [stderr] 541 | let mut start = self.scroll_offset; [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/textfield.rs:573:17 [INFO] [stderr] | [INFO] [stderr] 573 | let mut temp_end = temp_start; [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ch` [INFO] [stderr] --> src/textfield.rs:614:25 [INFO] [stderr] | [INFO] [stderr] 614 | for (i, ch) in text_slice.char_indices() { [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_ch` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `text_x` [INFO] [stderr] --> src/button.rs:140:13 [INFO] [stderr] | [INFO] [stderr] 140 | let text_x = self.bounds.x + (self.bounds.width - text_width as f32) / 2.0; [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_text_x` [INFO] [stderr] [INFO] [stderr] warning: `raylib_interactive` (lib) generated 20 warnings (run `cargo fix --lib -p raylib_interactive` to apply 7 suggestions) [INFO] [stderr] warning: `raylib_interactive` (lib test) generated 20 warnings (20 duplicates) [INFO] [stderr] warning: unused import: `Style` [INFO] [stderr] --> examples/dropdown_test.rs:2:44 [INFO] [stderr] | [INFO] [stderr] 2 | use raylib_interactive::{Button, Dropdown, Style, presets, update_all, draw_all}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Style` [INFO] [stderr] --> examples/test_runner.rs:2:65 [INFO] [stderr] | [INFO] [stderr] 2 | use raylib_interactive::{Button, TextField, Checkbox, Dropdown, Style, presets, TestResults, run_all_tests, update_all, draw_all}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: `raylib_interactive` (example "dropdown_test") generated 1 warning (run `cargo fix --example "dropdown_test"` to apply 1 suggestion) [INFO] [stderr] warning: `raylib_interactive` (example "test_runner") generated 1 warning (run `cargo fix --example "test_runner"` to apply 1 suggestion) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.12s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/raylib_interactive-f99aa62c314b6b19) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Doc-tests raylib_interactive [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "38617c827e3e8363049794891391e6479060dbcd27ca0d494a3b7f47e103fbd5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "38617c827e3e8363049794891391e6479060dbcd27ca0d494a3b7f47e103fbd5", kill_on_drop: false }` [INFO] [stdout] 38617c827e3e8363049794891391e6479060dbcd27ca0d494a3b7f47e103fbd5