[INFO] cloning repository https://github.com/er-su/learn-to-fly [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/er-su/learn-to-fly" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fer-su%2Flearn-to-fly", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fer-su%2Flearn-to-fly'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 606b199507860aa96a9f8ab91deb62ff444b4dd0 [INFO] checking er-su/learn-to-fly against try#29194e8f603400afdb2f86c9418e9fccb1628ea0 for pr-135331-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fer-su%2Flearn-to-fly" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'... [INFO] [stderr] done. [INFO] [stderr] error: unable to write file www/package-lock.json [INFO] [stderr] error: unable to write file www/package.json [INFO] [stderr] error: unable to write file www/webpack.config.js [INFO] [stderr] fatal: unable to checkout working tree [INFO] [stderr] warning: Clone succeeded, but checkout failed. [INFO] [stderr] You can inspect what was checked out with 'git status' [INFO] [stderr] and retry with 'git restore --source=HEAD :/' [INFO] [stderr] [INFO] checking er-su/learn-to-fly against try#29194e8f603400afdb2f86c9418e9fccb1628ea0 for pr-135331-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fer-su%2Flearn-to-fly" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-3-tc2/source/rust-toolchain [INFO] started tweaking git repo https://github.com/er-su/learn-to-fly [INFO] finished tweaking git repo https://github.com/er-su/learn-to-fly [INFO] tweaked toml for git repo https://github.com/er-su/learn-to-fly written to /workspace/builds/worker-3-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/er-su/learn-to-fly on toolchain 29194e8f603400afdb2f86c9418e9fccb1628ea0 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+29194e8f603400afdb2f86c9418e9fccb1628ea0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/er-su/learn-to-fly 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" "+29194e8f603400afdb2f86c9418e9fccb1628ea0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+29194e8f603400afdb2f86c9418e9fccb1628ea0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 8edcaee6275017d56ee5ad589e7cc738c564c9d09e53f54353cbddbb6b29c3c0 [INFO] running `Command { std: "docker" "start" "-a" "8edcaee6275017d56ee5ad589e7cc738c564c9d09e53f54353cbddbb6b29c3c0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "8edcaee6275017d56ee5ad589e7cc738c564c9d09e53f54353cbddbb6b29c3c0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8edcaee6275017d56ee5ad589e7cc738c564c9d09e53f54353cbddbb6b29c3c0", kill_on_drop: false }` [INFO] [stdout] 8edcaee6275017d56ee5ad589e7cc738c564c9d09e53f54353cbddbb6b29c3c0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+29194e8f603400afdb2f86c9418e9fccb1628ea0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 2673c56ad10b4bcdf01fb735ef15b130d4c8c115c78c35911d80dcd6af0aef5d [INFO] running `Command { std: "docker" "start" "-a" "2673c56ad10b4bcdf01fb735ef15b130d4c8c115c78c35911d80dcd6af0aef5d", kill_on_drop: false }` [INFO] [stderr] Compiling autocfg v1.4.0 [INFO] [stderr] Compiling libc v0.2.171 [INFO] [stderr] Compiling zerocopy v0.8.24 [INFO] [stderr] Checking cfg-if v1.0.0 [INFO] [stderr] Compiling proc-macro2 v1.0.94 [INFO] [stderr] Compiling unicode-ident v1.0.18 [INFO] [stderr] Compiling paste v1.0.15 [INFO] [stderr] Compiling typenum v1.18.0 [INFO] [stderr] Checking rawpointer v0.2.1 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling wasm-bindgen-shared v0.2.100 [INFO] [stderr] Compiling bumpalo v3.17.0 [INFO] [stderr] Compiling log v0.4.26 [INFO] [stderr] Compiling rayon-core v1.12.1 [INFO] [stderr] Compiling rustversion v1.0.20 [INFO] [stderr] Compiling wasm-bindgen v0.2.100 [INFO] [stderr] Checking once_cell v1.21.1 [INFO] [stderr] Checking either v1.15.0 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling num-rational v0.3.2 [INFO] [stderr] Compiling matrixmultiply v0.3.9 [INFO] [stderr] Checking crossbeam-epoch v0.9.18 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Checking crossbeam-deque v0.8.6 [INFO] [stderr] Compiling syn v2.0.100 [INFO] [stderr] Checking getrandom v0.2.15 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Checking approx v0.4.0 [INFO] [stderr] Checking approx v0.5.1 [INFO] [stderr] Checking num-complex v0.3.1 [INFO] [stderr] Checking rayon v1.10.0 [INFO] [stderr] Checking simba v0.4.0 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking lib-config v0.1.0 (/opt/rustwide/workdir/libs/config) [INFO] [stderr] Checking lib-neural-network v0.1.0 (/opt/rustwide/workdir/libs/neural-network) [INFO] [stdout] warning: unused import: `collections::btree_map::Range` [INFO] [stdout] --> libs/config/src/lib.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{collections::btree_map::Range, f32::consts::*, ops::RangeInclusive}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `collections::btree_map::Range` [INFO] [stdout] --> libs/config/src/lib.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{collections::btree_map::Range, f32::consts::*, ops::RangeInclusive}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking lib-genetic-algorithm v0.1.0 (/opt/rustwide/workdir/libs/genetic-algorithm) [INFO] [stderr] Compiling wasm-bindgen-backend v0.2.100 [INFO] [stderr] Compiling test-case-core v3.3.1 [INFO] [stderr] Compiling test-case-macros v3.3.1 [INFO] [stderr] Checking test-case v3.3.1 [INFO] [stderr] Compiling wasm-bindgen-macro-support v0.2.100 [INFO] [stderr] Checking nalgebra v0.26.2 [INFO] [stderr] Compiling wasm-bindgen-macro v0.2.100 [INFO] [stderr] Checking lib-simulation v0.1.0 (/opt/rustwide/workdir/libs/simulation) [INFO] [stdout] warning: unused variable: `rng` [INFO] [stdout] --> libs/simulation/src/lib.rs:99:44 [INFO] [stdout] | [INFO] [stdout] 99 | pub fn optimize_from_config(&mut self, rng: &mut dyn RngCore, config: Config) -> Vec { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_rng` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `config` [INFO] [stdout] --> libs/simulation/src/lib.rs:99:67 [INFO] [stdout] | [INFO] [stdout] 99 | pub fn optimize_from_config(&mut self, rng: &mut dyn RngCore, config: Config) -> Vec { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking lib-optimization v0.1.0 (/opt/rustwide/workdir/libs/optimization) [INFO] [stderr] Checking lib-simulation-wasm v0.1.0 (/opt/rustwide/workdir/libs/simulation-wasm) [INFO] [stdout] warning: unused import: `Rng` [INFO] [stdout] --> libs/optimization/src/agent.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | use rand::{Rng, RngCore}; [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Statistics` [INFO] [stdout] --> libs/optimization/src/lib.rs:3:34 [INFO] [stdout] | [INFO] [stdout] 3 | use lib_simulation::{Simulation, Statistics}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `core::num` [INFO] [stdout] --> libs/optimization/src/lib.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use core::num; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `num_agents` [INFO] [stdout] --> libs/optimization/src/lib.rs:87:68 [INFO] [stdout] | [INFO] [stdout] 87 | fn perturb(rng: &mut dyn RngCore, population: &mut Vec, num_agents: usize, config_range: &ConfigRange) { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_agents` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `population`, `config_range`, `num_agents`, `time`, and `rng` are never read [INFO] [stdout] --> libs/optimization/src/lib.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct Optimizer { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 11 | population: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 12 | config_range: ConfigRange, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 13 | num_agents: usize, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 14 | time: usize, [INFO] [stdout] | ^^^^ [INFO] [stdout] 15 | rng: ThreadRng, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `step`, `pbt`, `truncation_selection`, and `perturb` are never used [INFO] [stdout] --> libs/optimization/src/lib.rs:48:8 [INFO] [stdout] | [INFO] [stdout] 18 | impl Optimizer { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 48 | fn step(&mut self, num_gens: u32, ) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | fn pbt(rng: &mut dyn RngCore, population: &mut Vec, num_agents: usize, config_range: &ConfigRange) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | fn truncation_selection(rng: &mut dyn RngCore, population: &mut Vec, num_agents: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | fn perturb(rng: &mut dyn RngCore, population: &mut Vec, num_agents: usize, config_range: &ConfigRange) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `simulation`, `config`, and `last_stats` are never read [INFO] [stdout] --> libs/optimization/src/agent.rs:6:9 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct Agent { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 6 | pub simulation: Simulation, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 7 | pub config: Config, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 8 | pub last_stats: Statistics, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_weighted_score` is never used [INFO] [stdout] --> libs/optimization/src/agent.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 11 | impl Agent { [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 24 | pub fn get_weighted_score(&self) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Rng` [INFO] [stdout] --> libs/optimization/src/agent.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | use rand::{Rng, RngCore}; [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Statistics` [INFO] [stdout] --> libs/optimization/src/lib.rs:3:34 [INFO] [stdout] | [INFO] [stdout] 3 | use lib_simulation::{Simulation, Statistics}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `core::num` [INFO] [stdout] --> libs/optimization/src/lib.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use core::num; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `num_agents` [INFO] [stdout] --> libs/optimization/src/lib.rs:87:68 [INFO] [stdout] | [INFO] [stdout] 87 | fn perturb(rng: &mut dyn RngCore, population: &mut Vec, num_agents: usize, config_range: &ConfigRange) { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_agents` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `population`, `config_range`, `num_agents`, `time`, and `rng` are never read [INFO] [stdout] --> libs/optimization/src/lib.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct Optimizer { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 11 | population: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 12 | config_range: ConfigRange, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 13 | num_agents: usize, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 14 | time: usize, [INFO] [stdout] | ^^^^ [INFO] [stdout] 15 | rng: ThreadRng, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `step`, `pbt`, `truncation_selection`, and `perturb` are never used [INFO] [stdout] --> libs/optimization/src/lib.rs:48:8 [INFO] [stdout] | [INFO] [stdout] 18 | impl Optimizer { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 48 | fn step(&mut self, num_gens: u32, ) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | fn pbt(rng: &mut dyn RngCore, population: &mut Vec, num_agents: usize, config_range: &ConfigRange) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | fn truncation_selection(rng: &mut dyn RngCore, population: &mut Vec, num_agents: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | fn perturb(rng: &mut dyn RngCore, population: &mut Vec, num_agents: usize, config_range: &ConfigRange) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `simulation`, `config`, and `last_stats` are never read [INFO] [stdout] --> libs/optimization/src/agent.rs:6:9 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct Agent { [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 6 | pub simulation: Simulation, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 7 | pub config: Config, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 8 | pub last_stats: Statistics, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_weighted_score` is never used [INFO] [stdout] --> libs/optimization/src/agent.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 11 | impl Agent { [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 24 | pub fn get_weighted_score(&self) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rng` [INFO] [stdout] --> libs/simulation/src/lib.rs:99:44 [INFO] [stdout] | [INFO] [stdout] 99 | pub fn optimize_from_config(&mut self, rng: &mut dyn RngCore, config: Config) -> Vec { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_rng` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `config` [INFO] [stdout] --> libs/simulation/src/lib.rs:99:67 [INFO] [stdout] | [INFO] [stdout] 99 | pub fn optimize_from_config(&mut self, rng: &mut dyn RngCore, config: Config) -> Vec { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 18.28s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nalgebra v0.26.2 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1` [INFO] running `Command { std: "docker" "inspect" "2673c56ad10b4bcdf01fb735ef15b130d4c8c115c78c35911d80dcd6af0aef5d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2673c56ad10b4bcdf01fb735ef15b130d4c8c115c78c35911d80dcd6af0aef5d", kill_on_drop: false }` [INFO] [stdout] 2673c56ad10b4bcdf01fb735ef15b130d4c8c115c78c35911d80dcd6af0aef5d