[INFO] updating cached repository tlrobrn/one_d [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/tlrobrn/one_d [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/tlrobrn/one_d" "work/ex/clippy-test-run/sources/stable/gh/tlrobrn/one_d"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/tlrobrn/one_d'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/tlrobrn/one_d" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/tlrobrn/one_d"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/tlrobrn/one_d'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 87b8d21bd676042fa69258019a4ab2018f54a6f4 [INFO] sha for GitHub repo tlrobrn/one_d: 87b8d21bd676042fa69258019a4ab2018f54a6f4 [INFO] validating manifest of tlrobrn/one_d on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of tlrobrn/one_d on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing tlrobrn/one_d [INFO] finished frobbing tlrobrn/one_d [INFO] frobbed toml for tlrobrn/one_d written to work/ex/clippy-test-run/sources/stable/gh/tlrobrn/one_d/Cargo.toml [INFO] started frobbing tlrobrn/one_d [INFO] finished frobbing tlrobrn/one_d [INFO] frobbed toml for tlrobrn/one_d written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/tlrobrn/one_d/Cargo.toml [INFO] crate tlrobrn/one_d has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting tlrobrn/one_d against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/tlrobrn/one_d:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 00156b748981f9b164e27e7853799725cfc31bc67df40017f2a8596ef7e60659 [INFO] running `"docker" "start" "-a" "00156b748981f9b164e27e7853799725cfc31bc67df40017f2a8596ef7e60659"` [INFO] [stderr] warning: An explicit [[bin]] section is specified in Cargo.toml which currently [INFO] [stderr] disables Cargo from automatically inferring other binary targets. [INFO] [stderr] This inference behavior will change in the Rust 2018 edition and the following [INFO] [stderr] files will be included as a binary target: [INFO] [stderr] [INFO] [stderr] * /opt/crater/workdir/src/main.rs [INFO] [stderr] [INFO] [stderr] This is likely to break cargo build or cargo test as these files may not be [INFO] [stderr] ready to be compiled as a binary target today. You can future-proof yourself [INFO] [stderr] and disable this warning by adding `autobins = false` to your [package] [INFO] [stderr] section. You may also move the files to a location where Cargo would not [INFO] [stderr] automatically infer them to be a target, such as in subfolders. [INFO] [stderr] [INFO] [stderr] For more information on this warning you can consult [INFO] [stderr] https://github.com/rust-lang/cargo/issues/5330 [INFO] [stderr] warning: path `/opt/crater/workdir/src/main.rs` was erroneously implicitly accepted for binary `oned`, [INFO] [stderr] please set bin.path in Cargo.toml [INFO] [stderr] Compiling siphasher v0.2.0 [INFO] [stderr] Compiling libc v0.2.20 [INFO] [stderr] Compiling serde v0.8.22 [INFO] [stderr] Checking piston-shaders_graphics2d v0.1.0 [INFO] [stderr] Checking num_cpus v1.2.1 [INFO] [stderr] Checking memchr v1.0.1 [INFO] [stderr] Checking thread-id v3.0.0 [INFO] [stderr] Checking shared_library v0.1.5 [INFO] [stderr] Checking time v0.1.36 [INFO] [stderr] Checking enum_primitive v0.1.1 [INFO] [stderr] Checking deflate v0.7.2 [INFO] [stderr] Checking deque v0.3.1 [INFO] [stderr] Checking num-bigint v0.1.35 [INFO] [stderr] Checking aho-corasick v0.6.1 [INFO] [stderr] Checking thread_local v0.3.2 [INFO] [stderr] Compiling glutin v0.7.2 [INFO] [stderr] Checking osmesa-sys v0.1.2 [INFO] [stderr] Checking x11-dl v2.12.0 [INFO] [stderr] Compiling phf_shared v0.7.21 [INFO] [stderr] Compiling rand v0.3.15 [INFO] [stderr] Checking rayon v0.6.0 [INFO] [stderr] Checking fs2 v0.2.5 [INFO] [stderr] Checking tempfile v2.1.5 [INFO] [stderr] Checking regex v0.2.1 [INFO] [stderr] Checking pistoncore-event_loop v0.27.0 [INFO] [stderr] Compiling phf v0.7.21 [INFO] [stderr] Checking png v0.6.2 [INFO] [stderr] Checking num-rational v0.1.35 [INFO] [stderr] Checking memmap v0.4.0 [INFO] [stderr] Checking piston v0.27.0 [INFO] [stderr] Checking jpeg-decoder v0.1.11 [INFO] [stderr] Compiling phf_generator v0.7.21 [INFO] [stderr] Compiling phf_codegen v0.7.21 [INFO] [stderr] Compiling target_build_utils v0.1.2 [INFO] [stderr] Checking image v0.12.1 [INFO] [stderr] Compiling serde_json v0.8.6 [INFO] [stderr] Checking docopt v0.7.0 [INFO] [stderr] Checking piston2d-opengl_graphics v0.37.0 [INFO] [stderr] Compiling libloading v0.3.1 [INFO] [stderr] Checking dlib v0.3.1 [INFO] [stderr] Checking wayland-sys v0.7.6 [INFO] [stderr] Checking wayland-client v0.7.6 [INFO] [stderr] Checking wayland-kbd v0.6.2 [INFO] [stderr] Checking wayland-window v0.4.3 [INFO] [stderr] Checking winit v0.5.8 [INFO] [stderr] Checking pistoncore-glutin_window v0.33.0 [INFO] [stderr] Checking one_d v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/maze.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | maze: maze, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `maze` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/maze.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | step: step, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `step` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/maze.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | maze: maze, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `maze` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] | [INFO] [stderr] --> src/maze.rs:37:13 [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] 37 | maze: maze, [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/maze.rs:51:13 [INFO] [stderr] | [INFO] [stderr] 51 | step: step, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `step` [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `maze` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/maze.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | maze: maze, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `maze` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/maze.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | step: step, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `step` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/maze.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | maze: maze, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `maze` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/maze.rs:51:13 [INFO] [stderr] | [INFO] [stderr] 51 | step: step, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `step` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/maze.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | maze: maze, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `maze` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/maze.rs:191:28 [INFO] [stderr] | [INFO] [stderr] 191 | fn try_wall(&mut self, mut dsets: &mut DisjointSets, index: usize, is_east: bool) { [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/maze.rs:191:28 [INFO] [stderr] | [INFO] [stderr] 191 | fn try_wall(&mut self, mut dsets: &mut DisjointSets, index: usize, is_east: bool) { [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/maze.rs:272:18 [INFO] [stderr] | [INFO] [stderr] 272 | for _ in 0..(self.width + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use: `0..=self.width` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/maze.rs:290:18 [INFO] [stderr] | [INFO] [stderr] 290 | for _ in 0..(self.width + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use: `0..=self.width` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/maze.rs:272:18 [INFO] [stderr] | [INFO] [stderr] 272 | for _ in 0..(self.width + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use: `0..=self.width` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/maze.rs:290:18 [INFO] [stderr] | [INFO] [stderr] 290 | for _ in 0..(self.width + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use: `0..=self.width` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:143:15 [INFO] [stderr] | [INFO] [stderr] 143 | const USAGE: &'static str = " [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:172:32 [INFO] [stderr] | [INFO] [stderr] 172 | Args { arg_size: size, arg_width: _, arg_height: _ } if size != 0 => (size, size), [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:172:46 [INFO] [stderr] | [INFO] [stderr] 172 | Args { arg_size: size, arg_width: _, arg_height: _ } if size != 0 => (size, size), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Args { arg_size: size, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:173:16 [INFO] [stderr] | [INFO] [stderr] 173 | Args { arg_size: _, arg_width: w, arg_height: h } => (w, h), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Args { arg_width: w, arg_height: h, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:50:21 [INFO] [stderr] | [INFO] [stderr] 50 | let width = args.width as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(args.width)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:65:31 [INFO] [stderr] | [INFO] [stderr] 65 | let (spaces, p) = match view { [INFO] [stderr] | _______________________________^ [INFO] [stderr] 66 | | &MazeView::Row => (maze.row(y), x as f64), [INFO] [stderr] 67 | | &MazeView::Column => (maze.column(x), y as f64), [INFO] [stderr] 68 | | }; [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 65 | let (spaces, p) = match *view { [INFO] [stderr] 66 | MazeView::Row => (maze.row(y), x as f64), [INFO] [stderr] 67 | MazeView::Column => (maze.column(x), y as f64), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:143:15 [INFO] [stderr] | [INFO] [stderr] 143 | const USAGE: &'static str = " [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:172:32 [INFO] [stderr] | [INFO] [stderr] 172 | Args { arg_size: size, arg_width: _, arg_height: _ } if size != 0 => (size, size), [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:172:46 [INFO] [stderr] | [INFO] [stderr] 172 | Args { arg_size: size, arg_width: _, arg_height: _ } if size != 0 => (size, size), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Args { arg_size: size, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:173:16 [INFO] [stderr] | [INFO] [stderr] 173 | Args { arg_size: _, arg_width: w, arg_height: h } => (w, h), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Args { arg_width: w, arg_height: h, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:50:21 [INFO] [stderr] | [INFO] [stderr] 50 | let width = args.width as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(args.width)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:65:31 [INFO] [stderr] | [INFO] [stderr] 65 | let (spaces, p) = match view { [INFO] [stderr] | _______________________________^ [INFO] [stderr] 66 | | &MazeView::Row => (maze.row(y), x as f64), [INFO] [stderr] 67 | | &MazeView::Column => (maze.column(x), y as f64), [INFO] [stderr] 68 | | }; [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 65 | let (spaces, p) = match *view { [INFO] [stderr] 66 | MazeView::Row => (maze.row(y), x as f64), [INFO] [stderr] 67 | MazeView::Column => (maze.column(x), y as f64), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 54.03s [INFO] running `"docker" "inspect" "00156b748981f9b164e27e7853799725cfc31bc67df40017f2a8596ef7e60659"` [INFO] running `"docker" "rm" "-f" "00156b748981f9b164e27e7853799725cfc31bc67df40017f2a8596ef7e60659"` [INFO] [stdout] 00156b748981f9b164e27e7853799725cfc31bc67df40017f2a8596ef7e60659