[INFO] cloning repository https://github.com/auyjos/Proyecto2_Diorama [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/auyjos/Proyecto2_Diorama" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fauyjos%2FProyecto2_Diorama", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fauyjos%2FProyecto2_Diorama'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 467b18a0eb8be975a8c5919677798221c222978b [INFO] checking auyjos/Proyecto2_Diorama/467b18a0eb8be975a8c5919677798221c222978b against master#f2c70877a7dbc51cd98e2d5d25209b24d4a586d5 for pr-150097 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fauyjos%2FProyecto2_Diorama" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/auyjos/Proyecto2_Diorama [INFO] finished tweaking git repo https://github.com/auyjos/Proyecto2_Diorama [INFO] tweaked toml for git repo https://github.com/auyjos/Proyecto2_Diorama written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/auyjos/Proyecto2_Diorama on toolchain f2c70877a7dbc51cd98e2d5d25209b24d4a586d5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f2c70877a7dbc51cd98e2d5d25209b24d4a586d5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/auyjos/Proyecto2_Diorama 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" "+f2c70877a7dbc51cd98e2d5d25209b24d4a586d5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+f2c70877a7dbc51cd98e2d5d25209b24d4a586d5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 1b4a2daa5578d6e4f47503846fab6abae373dac0ed7184b54675109ae0c05ddb [INFO] running `Command { std: "docker" "start" "-a" "1b4a2daa5578d6e4f47503846fab6abae373dac0ed7184b54675109ae0c05ddb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "1b4a2daa5578d6e4f47503846fab6abae373dac0ed7184b54675109ae0c05ddb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1b4a2daa5578d6e4f47503846fab6abae373dac0ed7184b54675109ae0c05ddb", kill_on_drop: false }` [INFO] [stdout] 1b4a2daa5578d6e4f47503846fab6abae373dac0ed7184b54675109ae0c05ddb [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+f2c70877a7dbc51cd98e2d5d25209b24d4a586d5" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 6a34b5284cf821b3c4a9408db58f9cfbe004ef03cce9b7bab01363f2b602cb79 [INFO] running `Command { std: "docker" "start" "-a" "6a34b5284cf821b3c4a9408db58f9cfbe004ef03cce9b7bab01363f2b602cb79", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.95 [INFO] [stderr] Compiling unicode-ident v1.0.18 [INFO] [stderr] Compiling glob v0.3.2 [INFO] [stderr] Compiling prettyplease v0.2.35 [INFO] [stderr] Compiling libc v0.2.174 [INFO] [stderr] Compiling regex-syntax v0.8.5 [INFO] [stderr] Compiling shlex v1.3.0 [INFO] [stderr] Compiling minimal-lexical v0.2.1 [INFO] [stderr] Compiling memchr v2.7.5 [INFO] [stderr] Compiling cfg-if v1.0.1 [INFO] [stderr] Compiling libloading v0.8.8 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling bindgen v0.70.1 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling cc v1.2.29 [INFO] [stderr] Compiling itertools v0.13.0 [INFO] [stderr] Compiling rustc-hash v1.1.0 [INFO] [stderr] Compiling clang-sys v1.8.1 [INFO] [stderr] Compiling log v0.4.27 [INFO] [stderr] Compiling bitflags v2.9.1 [INFO] [stderr] Compiling nom v7.1.3 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Compiling rayon-core v1.13.0 [INFO] [stderr] Compiling syn v2.0.104 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling cmake v0.1.54 [INFO] [stderr] Checking crossbeam-epoch v0.9.18 [INFO] [stderr] Compiling regex-automata v0.4.9 [INFO] [stderr] Compiling paste v1.0.15 [INFO] [stderr] Checking crossbeam-deque v0.8.6 [INFO] [stderr] Compiling seq-macro v0.3.6 [INFO] [stderr] Checking rayon v1.11.0 [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 raylib-sys v5.5.1 [INFO] [stderr] Checking raylib v5.5.1 [INFO] [stderr] Checking textured-cubes-raytracer v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:405:32 [INFO] [stdout] | [INFO] [stdout] 405 | let gradient = ((x + y) as f32 / (width + height) as f32); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 405 - let gradient = ((x + y) as f32 / (width + height) as f32); [INFO] [stdout] 405 + let gradient = (x + y) as f32 / (width + height) as f32 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:479:29 [INFO] [stdout] | [INFO] [stdout] 479 | let vein1 = ((u * 8.0 + v * 2.0).sin() * 0.5 + 0.5); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 479 - let vein1 = ((u * 8.0 + v * 2.0).sin() * 0.5 + 0.5); [INFO] [stdout] 479 + let vein1 = (u * 8.0 + v * 2.0).sin() * 0.5 + 0.5 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:480:29 [INFO] [stdout] | [INFO] [stdout] 480 | let vein2 = ((u * 3.0 - v * 6.0).sin() * 0.3 + 0.7); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 480 - let vein2 = ((u * 3.0 - v * 6.0).sin() * 0.3 + 0.7); [INFO] [stdout] 480 + let vein2 = (u * 3.0 - v * 6.0).sin() * 0.3 + 0.7 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:481:29 [INFO] [stdout] | [INFO] [stdout] 481 | let vein3 = ((u * 12.0 + v * 4.0).cos() * 0.2 + 0.8); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 481 - let vein3 = ((u * 12.0 + v * 4.0).cos() * 0.2 + 0.8); [INFO] [stdout] 481 + let vein3 = (u * 12.0 + v * 4.0).cos() * 0.2 + 0.8 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:548:37 [INFO] [stdout] | [INFO] [stdout] 548 | let moss_pattern1 = ((u * 15.0).sin() * (v * 12.0).cos() * 0.5 + 0.5); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 548 - let moss_pattern1 = ((u * 15.0).sin() * (v * 12.0).cos() * 0.5 + 0.5); [INFO] [stdout] 548 + let moss_pattern1 = (u * 15.0).sin() * (v * 12.0).cos() * 0.5 + 0.5 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:549:37 [INFO] [stdout] | [INFO] [stdout] 549 | let moss_pattern2 = ((u * 8.0 + v * 6.0).sin() * 0.3 + 0.7); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 549 - let moss_pattern2 = ((u * 8.0 + v * 6.0).sin() * 0.3 + 0.7); [INFO] [stdout] 549 + let moss_pattern2 = (u * 8.0 + v * 6.0).sin() * 0.3 + 0.7 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:550:37 [INFO] [stdout] | [INFO] [stdout] 550 | let moss_pattern3 = ((u * 25.0).cos() * (v * 20.0).sin() * 0.2 + 0.8); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 550 - let moss_pattern3 = ((u * 25.0).cos() * (v * 20.0).sin() * 0.2 + 0.8); [INFO] [stdout] 550 + let moss_pattern3 = (u * 25.0).cos() * (v * 20.0).sin() * 0.2 + 0.8 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:556:36 [INFO] [stdout] | [INFO] [stdout] 556 | let detail_noise = ((u * 50.0 + v * 45.0).sin() * (u * 35.0 - v * 40.0).cos() * 0.1 + 0.9); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 556 - let detail_noise = ((u * 50.0 + v * 45.0).sin() * (u * 35.0 - v * 40.0).cos() * 0.1 + 0.9); [INFO] [stdout] 556 + let detail_noise = (u * 50.0 + v * 45.0).sin() * (u * 35.0 - v * 40.0).cos() * 0.1 + 0.9 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:592:30 [INFO] [stdout] | [INFO] [stdout] 592 | let noise1 = ((u * 20.0).sin() * (v * 18.0).cos() * 0.15 + 0.85); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 592 - let noise1 = ((u * 20.0).sin() * (v * 18.0).cos() * 0.15 + 0.85); [INFO] [stdout] 592 + let noise1 = (u * 20.0).sin() * (v * 18.0).cos() * 0.15 + 0.85 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:593:30 [INFO] [stdout] | [INFO] [stdout] 593 | let noise2 = ((u * 35.0 + v * 25.0).sin() * 0.1 + 0.9); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 593 - let noise2 = ((u * 35.0 + v * 25.0).sin() * 0.1 + 0.9); [INFO] [stdout] 593 + let noise2 = (u * 35.0 + v * 25.0).sin() * 0.1 + 0.9 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:405:32 [INFO] [stdout] | [INFO] [stdout] 405 | let gradient = ((x + y) as f32 / (width + height) as f32); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 405 - let gradient = ((x + y) as f32 / (width + height) as f32); [INFO] [stdout] 405 + let gradient = (x + y) as f32 / (width + height) as f32 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:479:29 [INFO] [stdout] | [INFO] [stdout] 479 | let vein1 = ((u * 8.0 + v * 2.0).sin() * 0.5 + 0.5); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 479 - let vein1 = ((u * 8.0 + v * 2.0).sin() * 0.5 + 0.5); [INFO] [stdout] 479 + let vein1 = (u * 8.0 + v * 2.0).sin() * 0.5 + 0.5 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:480:29 [INFO] [stdout] | [INFO] [stdout] 480 | let vein2 = ((u * 3.0 - v * 6.0).sin() * 0.3 + 0.7); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 480 - let vein2 = ((u * 3.0 - v * 6.0).sin() * 0.3 + 0.7); [INFO] [stdout] 480 + let vein2 = (u * 3.0 - v * 6.0).sin() * 0.3 + 0.7 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:481:29 [INFO] [stdout] | [INFO] [stdout] 481 | let vein3 = ((u * 12.0 + v * 4.0).cos() * 0.2 + 0.8); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 481 - let vein3 = ((u * 12.0 + v * 4.0).cos() * 0.2 + 0.8); [INFO] [stdout] 481 + let vein3 = (u * 12.0 + v * 4.0).cos() * 0.2 + 0.8 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:548:37 [INFO] [stdout] | [INFO] [stdout] 548 | let moss_pattern1 = ((u * 15.0).sin() * (v * 12.0).cos() * 0.5 + 0.5); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 548 - let moss_pattern1 = ((u * 15.0).sin() * (v * 12.0).cos() * 0.5 + 0.5); [INFO] [stdout] 548 + let moss_pattern1 = (u * 15.0).sin() * (v * 12.0).cos() * 0.5 + 0.5 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:549:37 [INFO] [stdout] | [INFO] [stdout] 549 | let moss_pattern2 = ((u * 8.0 + v * 6.0).sin() * 0.3 + 0.7); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 549 - let moss_pattern2 = ((u * 8.0 + v * 6.0).sin() * 0.3 + 0.7); [INFO] [stdout] 549 + let moss_pattern2 = (u * 8.0 + v * 6.0).sin() * 0.3 + 0.7 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:550:37 [INFO] [stdout] | [INFO] [stdout] 550 | let moss_pattern3 = ((u * 25.0).cos() * (v * 20.0).sin() * 0.2 + 0.8); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 550 - let moss_pattern3 = ((u * 25.0).cos() * (v * 20.0).sin() * 0.2 + 0.8); [INFO] [stdout] 550 + let moss_pattern3 = (u * 25.0).cos() * (v * 20.0).sin() * 0.2 + 0.8 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:556:36 [INFO] [stdout] | [INFO] [stdout] 556 | let detail_noise = ((u * 50.0 + v * 45.0).sin() * (u * 35.0 - v * 40.0).cos() * 0.1 + 0.9); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 556 - let detail_noise = ((u * 50.0 + v * 45.0).sin() * (u * 35.0 - v * 40.0).cos() * 0.1 + 0.9); [INFO] [stdout] 556 + let detail_noise = (u * 50.0 + v * 45.0).sin() * (u * 35.0 - v * 40.0).cos() * 0.1 + 0.9 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:592:30 [INFO] [stdout] | [INFO] [stdout] 592 | let noise1 = ((u * 20.0).sin() * (v * 18.0).cos() * 0.15 + 0.85); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 592 - let noise1 = ((u * 20.0).sin() * (v * 18.0).cos() * 0.15 + 0.85); [INFO] [stdout] 592 + let noise1 = (u * 20.0).sin() * (v * 18.0).cos() * 0.15 + 0.85 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/texture.rs:593:30 [INFO] [stdout] | [INFO] [stdout] 593 | let noise2 = ((u * 35.0 + v * 25.0).sin() * 0.1 + 0.9); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 593 - let noise2 = ((u * 35.0 + v * 25.0).sin() * 0.1 + 0.9); [INFO] [stdout] 593 + let noise2 = (u * 35.0 + v * 25.0).sin() * 0.1 + 0.9 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `t1` is never read [INFO] [stdout] --> src/renderer.rs:55:19 [INFO] [stdout] | [INFO] [stdout] 55 | if tz1 > t1 { t1 = tz1; } [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: field `current_color` is never read [INFO] [stdout] --> src/framebuffer.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct Framebuffer { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 9 | current_color: Color, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_pixel`, `set_current_color`, and `render_to_file` are never used [INFO] [stdout] --> src/framebuffer.rs:30:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl Framebuffer { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn set_pixel(&mut self, x: u32, y: u32) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn set_current_color(&mut self, color: Color) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 56 | pub fn render_to_file(&self, file_path: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SHADOW_BIAS` is never used [INFO] [stdout] --> src/sphere.rs:10:7 [INFO] [stdout] | [INFO] [stdout] 10 | const SHADOW_BIAS: f32 = 1e-4; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_RECURSION_DEPTH` is never used [INFO] [stdout] --> src/sphere.rs:11:7 [INFO] [stdout] | [INFO] [stdout] 11 | const MAX_RECURSION_DEPTH: i32 = 3; // Reducido de 5 a 3 para mejor rendimiento [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `reflect` is never used [INFO] [stdout] --> src/sphere.rs:55:4 [INFO] [stdout] | [INFO] [stdout] 55 | fn reflect(incident: &Vector3, normal: &Vector3) -> Vector3 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `refract` is never used [INFO] [stdout] --> src/sphere.rs:60:4 [INFO] [stdout] | [INFO] [stdout] 60 | fn refract(incident: &Vector3, normal: &Vector3, eta: f32) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `fresnel` is never used [INFO] [stdout] --> src/sphere.rs:74:4 [INFO] [stdout] | [INFO] [stdout] 74 | fn fresnel(incident: &Vector3, normal: &Vector3, ior: f32) -> f32 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cast_shadow` is never used [INFO] [stdout] --> src/sphere.rs:94:4 [INFO] [stdout] | [INFO] [stdout] 94 | fn cast_shadow( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cast_ray` is never used [INFO] [stdout] --> src/sphere.rs:124:8 [INFO] [stdout] | [INFO] [stdout] 124 | pub fn cast_ray( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render` is never used [INFO] [stdout] --> src/sphere.rs:222:8 [INFO] [stdout] | [INFO] [stdout] 222 | pub fn render(framebuffer: &mut Framebuffer, objects: &[Sphere], camera: &CustomCamera, lights: &[Light]) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new_flat` is never used [INFO] [stdout] --> src/cube.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl Cube { [INFO] [stdout] | --------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn new_flat(center: Vector3, width: f32, height: f32, depth: f32, material: Material) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated functions are never used [INFO] [stdout] --> src/texture.rs:54:12 [INFO] [stdout] | [INFO] [stdout] 10 | impl Texture { [INFO] [stdout] | ------------ associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn brick(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn wood(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | pub fn marble(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 165 | pub fn metal(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 193 | pub fn ancient_stone(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 232 | pub fn rusted_metal(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 269 | pub fn blood_water(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 298 | pub fn dark_crystal(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 329 | pub fn charred_wood(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 466 | pub fn marble_stone(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Sphere` is never constructed [INFO] [stdout] --> src/renderer.rs:149:5 [INFO] [stdout] | [INFO] [stdout] 148 | pub enum Object { [INFO] [stdout] | ------ variant in this enum [INFO] [stdout] 149 | Sphere(Sphere), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Object` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_material` is never used [INFO] [stdout] --> src/renderer.rs:163:12 [INFO] [stdout] | [INFO] [stdout] 162 | impl Object { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] 163 | pub fn get_material(&self) -> Material { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/color.rs:17:15 [INFO] [stdout] | [INFO] [stdout] 10 | impl Color { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 17 | pub const BLACK: Color = Color { r: 0, g: 0, b: 0 }; [INFO] [stdout] | ^^^^^ [INFO] [stdout] 18 | pub const WHITE: Color = Color { r: 255, g: 255, b: 255 }; [INFO] [stdout] | ^^^^^ [INFO] [stdout] 19 | pub const RED: Color = Color { r: 255, g: 0, b: 0 }; [INFO] [stdout] | ^^^ [INFO] [stdout] 20 | pub const GREEN: Color = Color { r: 0, g: 255, b: 0 }; [INFO] [stdout] | ^^^^^ [INFO] [stdout] 21 | pub const BLUE: Color = Color { r: 0, g: 0, b: 255 }; [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 24 | pub fn from_hex(hex: u32) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | pub fn to_hex(&self) -> u32 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn to_raylib(&self) -> raylib::color::Color { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated functions are never used [INFO] [stdout] --> src/material.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl Material { [INFO] [stdout] | ------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn ivory() -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | pub fn mirror() -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn glass() -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | pub fn water() -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub fn concrete() -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub fn polished_metal() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | pub fn rusted_metal() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | pub fn dark_water() -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 162 | pub fn red_crystal() -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | pub fn ancient_stone() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 171 | pub fn blood_water() -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 175 | pub fn dark_crystal() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 179 | pub fn charred_wood() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `t1` is never read [INFO] [stdout] --> src/renderer.rs:55:19 [INFO] [stdout] | [INFO] [stdout] 55 | if tz1 > t1 { t1 = tz1; } [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: field `current_color` is never read [INFO] [stdout] --> src/framebuffer.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct Framebuffer { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 9 | current_color: Color, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_pixel`, `set_current_color`, and `render_to_file` are never used [INFO] [stdout] --> src/framebuffer.rs:30:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl Framebuffer { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn set_pixel(&mut self, x: u32, y: u32) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn set_current_color(&mut self, color: Color) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 56 | pub fn render_to_file(&self, file_path: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SHADOW_BIAS` is never used [INFO] [stdout] --> src/sphere.rs:10:7 [INFO] [stdout] | [INFO] [stdout] 10 | const SHADOW_BIAS: f32 = 1e-4; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_RECURSION_DEPTH` is never used [INFO] [stdout] --> src/sphere.rs:11:7 [INFO] [stdout] | [INFO] [stdout] 11 | const MAX_RECURSION_DEPTH: i32 = 3; // Reducido de 5 a 3 para mejor rendimiento [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `reflect` is never used [INFO] [stdout] --> src/sphere.rs:55:4 [INFO] [stdout] | [INFO] [stdout] 55 | fn reflect(incident: &Vector3, normal: &Vector3) -> Vector3 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `refract` is never used [INFO] [stdout] --> src/sphere.rs:60:4 [INFO] [stdout] | [INFO] [stdout] 60 | fn refract(incident: &Vector3, normal: &Vector3, eta: f32) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `fresnel` is never used [INFO] [stdout] --> src/sphere.rs:74:4 [INFO] [stdout] | [INFO] [stdout] 74 | fn fresnel(incident: &Vector3, normal: &Vector3, ior: f32) -> f32 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cast_shadow` is never used [INFO] [stdout] --> src/sphere.rs:94:4 [INFO] [stdout] | [INFO] [stdout] 94 | fn cast_shadow( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cast_ray` is never used [INFO] [stdout] --> src/sphere.rs:124:8 [INFO] [stdout] | [INFO] [stdout] 124 | pub fn cast_ray( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `render` is never used [INFO] [stdout] --> src/sphere.rs:222:8 [INFO] [stdout] | [INFO] [stdout] 222 | pub fn render(framebuffer: &mut Framebuffer, objects: &[Sphere], camera: &CustomCamera, lights: &[Light]) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new_flat` is never used [INFO] [stdout] --> src/cube.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl Cube { [INFO] [stdout] | --------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn new_flat(center: Vector3, width: f32, height: f32, depth: f32, material: Material) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated functions are never used [INFO] [stdout] --> src/texture.rs:54:12 [INFO] [stdout] | [INFO] [stdout] 10 | impl Texture { [INFO] [stdout] | ------------ associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn brick(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn wood(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | pub fn marble(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 165 | pub fn metal(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 193 | pub fn ancient_stone(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 232 | pub fn rusted_metal(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 269 | pub fn blood_water(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 298 | pub fn dark_crystal(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 329 | pub fn charred_wood(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 466 | pub fn marble_stone(width: u32, height: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Sphere` is never constructed [INFO] [stdout] --> src/renderer.rs:149:5 [INFO] [stdout] | [INFO] [stdout] 148 | pub enum Object { [INFO] [stdout] | ------ variant in this enum [INFO] [stdout] 149 | Sphere(Sphere), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Object` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_material` is never used [INFO] [stdout] --> src/renderer.rs:163:12 [INFO] [stdout] | [INFO] [stdout] 162 | impl Object { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] 163 | pub fn get_material(&self) -> Material { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/color.rs:17:15 [INFO] [stdout] | [INFO] [stdout] 10 | impl Color { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 17 | pub const BLACK: Color = Color { r: 0, g: 0, b: 0 }; [INFO] [stdout] | ^^^^^ [INFO] [stdout] 18 | pub const WHITE: Color = Color { r: 255, g: 255, b: 255 }; [INFO] [stdout] | ^^^^^ [INFO] [stdout] 19 | pub const RED: Color = Color { r: 255, g: 0, b: 0 }; [INFO] [stdout] | ^^^ [INFO] [stdout] 20 | pub const GREEN: Color = Color { r: 0, g: 255, b: 0 }; [INFO] [stdout] | ^^^^^ [INFO] [stdout] 21 | pub const BLUE: Color = Color { r: 0, g: 0, b: 255 }; [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 24 | pub fn from_hex(hex: u32) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | pub fn to_hex(&self) -> u32 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn to_raylib(&self) -> raylib::color::Color { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated functions are never used [INFO] [stdout] --> src/material.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl Material { [INFO] [stdout] | ------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn ivory() -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | pub fn mirror() -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn glass() -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | pub fn water() -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub fn concrete() -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub fn polished_metal() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | pub fn rusted_metal() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | pub fn dark_water() -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 162 | pub fn red_crystal() -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | pub fn ancient_stone() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 171 | pub fn blood_water() -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 175 | pub fn dark_crystal() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 179 | pub fn charred_wood() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [optimized] target(s) in 1m 05s [INFO] running `Command { std: "docker" "inspect" "6a34b5284cf821b3c4a9408db58f9cfbe004ef03cce9b7bab01363f2b602cb79", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6a34b5284cf821b3c4a9408db58f9cfbe004ef03cce9b7bab01363f2b602cb79", kill_on_drop: false }` [INFO] [stdout] 6a34b5284cf821b3c4a9408db58f9cfbe004ef03cce9b7bab01363f2b602cb79