[INFO] crate linkbot 0.0.2 is already in cache [INFO] extracting crate linkbot 0.0.2 into work/ex/beta-1.38-1/sources/1.37.0/reg/linkbot/0.0.2 [INFO] extracting crate linkbot 0.0.2 into work/ex/beta-1.38-1/sources/beta-2019-08-13/reg/linkbot/0.0.2 [INFO] validating manifest of linkbot-0.0.2 on toolchain 1.37.0 [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+1.37.0" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of linkbot-0.0.2 on toolchain beta-2019-08-13 [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+beta-2019-08-13" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing linkbot-0.0.2 [INFO] finished frobbing linkbot-0.0.2 [INFO] frobbed toml for linkbot-0.0.2 written to work/ex/beta-1.38-1/sources/1.37.0/reg/linkbot/0.0.2/Cargo.toml [INFO] started frobbing linkbot-0.0.2 [INFO] finished frobbing linkbot-0.0.2 [INFO] frobbed toml for linkbot-0.0.2 written to work/ex/beta-1.38-1/sources/beta-2019-08-13/reg/linkbot/0.0.2/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+1.37.0" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+beta-2019-08-13" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+1.37.0" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+beta-2019-08-13" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] testing linkbot-0.0.2 against 1.37.0 for beta-1.38-1 [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/beta-1.38-1/worker-3/1.37.0:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/beta-1.38-1/sources/1.37.0/reg/linkbot/0.0.2:/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=warn" "-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" "+1.37.0" "build" "--frozen"` [INFO] [stdout] 4ef30cbf413b7251d268daf154ed3c6f47e14d1841e8d9dae296a49e9949d45e [INFO] running `"docker" "start" "-a" "4ef30cbf413b7251d268daf154ed3c6f47e14d1841e8d9dae296a49e9949d45e"` [INFO] [stderr] Compiling linkbot v0.0.2 (/opt/crater/workdir) [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:65:27 [INFO] [stderr] | [INFO] [stderr] 65 | pub type ButtonCallback = FnMut(Button, ButtonState, u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut(Button, ButtonState, u32)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(bare_trait_objects)] on by default [INFO] [stderr] [INFO] [stderr] warning: `extern` block uses type `std::sync::Mutex` which is not FFI-safe: this struct has unspecified layout [INFO] [stderr] --> src/lib.rs:326:41 [INFO] [stderr] | [INFO] [stderr] 326 | cb: extern fn(i32, i32, i32, *mut Inner), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(improper_ctypes)] on by default [INFO] [stderr] = help: consider adding a `#[repr(C)]` or `#[repr(transparent)]` attribute to this struct [INFO] [stderr] [INFO] [stderr] warning: `extern` block uses type `std::sync::Mutex` which is not FFI-safe: this struct has unspecified layout [INFO] [stderr] --> src/lib.rs:327:47 [INFO] [stderr] | [INFO] [stderr] 327 | userdata: *mut Inner) -> i32; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider adding a `#[repr(C)]` or `#[repr(transparent)]` attribute to this struct [INFO] [stderr] [INFO] [stderr] warning: `extern` block uses type `std::sync::Mutex` which is not FFI-safe: this struct has unspecified layout [INFO] [stderr] --> src/lib.rs:329:42 [INFO] [stderr] | [INFO] [stderr] 329 | cb: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider adding a `#[repr(C)]` or `#[repr(transparent)]` attribute to this struct [INFO] [stderr] [INFO] [stderr] warning: `extern` block uses type `std::sync::Mutex` which is not FFI-safe: this struct has unspecified layout [INFO] [stderr] --> src/lib.rs:330:48 [INFO] [stderr] | [INFO] [stderr] 330 | userdata: *mut Inner) -> i32; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider adding a `#[repr(C)]` or `#[repr(transparent)]` attribute to this struct [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.43s [INFO] running `"docker" "inspect" "4ef30cbf413b7251d268daf154ed3c6f47e14d1841e8d9dae296a49e9949d45e"` [INFO] running `"docker" "rm" "-f" "4ef30cbf413b7251d268daf154ed3c6f47e14d1841e8d9dae296a49e9949d45e"` [INFO] [stdout] 4ef30cbf413b7251d268daf154ed3c6f47e14d1841e8d9dae296a49e9949d45e [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/beta-1.38-1/worker-3/1.37.0:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/beta-1.38-1/sources/1.37.0/reg/linkbot/0.0.2:/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=warn" "-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" "+1.37.0" "test" "--frozen" "--no-run"` [INFO] [stdout] 5b7868ede574c90d0246de58a28f6de12eaf1bfc2e95e3885410df84cd499437 [INFO] running `"docker" "start" "-a" "5b7868ede574c90d0246de58a28f6de12eaf1bfc2e95e3885410df84cd499437"` [INFO] [stderr] Compiling linkbot v0.0.2 (/opt/crater/workdir) [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:65:27 [INFO] [stderr] | [INFO] [stderr] 65 | pub type ButtonCallback = FnMut(Button, ButtonState, u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMut(Button, ButtonState, u32)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(bare_trait_objects)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `button` [INFO] [stderr] --> src/lib.rs:342:32 [INFO] [stderr] | [INFO] [stderr] 342 | l.set_button_handler( |button, state, timestamp| { [INFO] [stderr] | ^^^^^^ help: consider prefixing with an underscore: `_button` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `state` [INFO] [stderr] --> src/lib.rs:342:40 [INFO] [stderr] | [INFO] [stderr] 342 | l.set_button_handler( |button, state, timestamp| { [INFO] [stderr] | ^^^^^ help: consider prefixing with an underscore: `_state` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `timestamp` [INFO] [stderr] --> src/lib.rs:342:47 [INFO] [stderr] | [INFO] [stderr] 342 | l.set_button_handler( |button, state, timestamp| { [INFO] [stderr] | ^^^^^^^^^ help: consider prefixing with an underscore: `_timestamp` [INFO] [stderr] [INFO] [stderr] warning: `extern` block uses type `std::sync::Mutex` which is not FFI-safe: this struct has unspecified layout [INFO] [stderr] --> src/lib.rs:326:41 [INFO] [stderr] | [INFO] [stderr] 326 | cb: extern fn(i32, i32, i32, *mut Inner), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(improper_ctypes)] on by default [INFO] [stderr] = help: consider adding a `#[repr(C)]` or `#[repr(transparent)]` attribute to this struct [INFO] [stderr] [INFO] [stderr] warning: `extern` block uses type `std::sync::Mutex` which is not FFI-safe: this struct has unspecified layout [INFO] [stderr] --> src/lib.rs:327:47 [INFO] [stderr] | [INFO] [stderr] 327 | userdata: *mut Inner) -> i32; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider adding a `#[repr(C)]` or `#[repr(transparent)]` attribute to this struct [INFO] [stderr] [INFO] [stderr] warning: `extern` block uses type `std::sync::Mutex` which is not FFI-safe: this struct has unspecified layout [INFO] [stderr] --> src/lib.rs:329:42 [INFO] [stderr] | [INFO] [stderr] 329 | cb: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider adding a `#[repr(C)]` or `#[repr(transparent)]` attribute to this struct [INFO] [stderr] [INFO] [stderr] warning: `extern` block uses type `std::sync::Mutex` which is not FFI-safe: this struct has unspecified layout [INFO] [stderr] --> src/lib.rs:330:48 [INFO] [stderr] | [INFO] [stderr] 330 | userdata: *mut Inner) -> i32; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider adding a `#[repr(C)]` or `#[repr(transparent)]` attribute to this struct [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:342:9 [INFO] [stderr] | [INFO] [stderr] 342 | / l.set_button_handler( |button, state, timestamp| { [INFO] [stderr] 343 | | println!("Button press!"); [INFO] [stderr] 344 | | }); [INFO] [stderr] | |___________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:347:9 [INFO] [stderr] | [INFO] [stderr] 347 | l.move_motors(7, 90.0, 90.0, 90.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:348:9 [INFO] [stderr] | [INFO] [stderr] 348 | l.move_wait(7); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:349:9 [INFO] [stderr] | [INFO] [stderr] 349 | l.move_motors(7, -90.0, -90.0, -90.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:350:9 [INFO] [stderr] | [INFO] [stderr] 350 | l.move_wait(7); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:351:9 [INFO] [stderr] | [INFO] [stderr] 351 | l.unset_button_handler(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:352:9 [INFO] [stderr] | [INFO] [stderr] 352 | l.set_buzzer_frequency(440.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:354:9 [INFO] [stderr] | [INFO] [stderr] 354 | l.set_buzzer_frequency(0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] error: linking with `cc` failed: exit code: 1 [INFO] [stderr] | [INFO] [stderr] = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/opt/crater/target/debug/deps/linkbot-b4add954e1fb1db9.linkbot.3egyol6b-cgu.0.rcgu.o" "/opt/crater/target/debug/deps/linkbot-b4add954e1fb1db9.linkbot.3egyol6b-cgu.1.rcgu.o" "/opt/crater/target/debug/deps/linkbot-b4add954e1fb1db9.linkbot.3egyol6b-cgu.10.rcgu.o" "/opt/crater/target/debug/deps/linkbot-b4add954e1fb1db9.linkbot.3egyol6b-cgu.11.rcgu.o" "/opt/crater/target/debug/deps/linkbot-b4add954e1fb1db9.linkbot.3egyol6b-cgu.12.rcgu.o" "/opt/crater/target/debug/deps/linkbot-b4add954e1fb1db9.linkbot.3egyol6b-cgu.13.rcgu.o" "/opt/crater/target/debug/deps/linkbot-b4add954e1fb1db9.linkbot.3egyol6b-cgu.14.rcgu.o" "/opt/crater/target/debug/deps/linkbot-b4add954e1fb1db9.linkbot.3egyol6b-cgu.15.rcgu.o" "/opt/crater/target/debug/deps/linkbot-b4add954e1fb1db9.linkbot.3egyol6b-cgu.2.rcgu.o" "/opt/crater/target/debug/deps/linkbot-b4add954e1fb1db9.linkbot.3egyol6b-cgu.3.rcgu.o" "/opt/crater/target/debug/deps/linkbot-b4add954e1fb1db9.linkbot.3egyol6b-cgu.4.rcgu.o" "/opt/crater/target/debug/deps/linkbot-b4add954e1fb1db9.linkbot.3egyol6b-cgu.5.rcgu.o" "/opt/crater/target/debug/deps/linkbot-b4add954e1fb1db9.linkbot.3egyol6b-cgu.6.rcgu.o" "/opt/crater/target/debug/deps/linkbot-b4add954e1fb1db9.linkbot.3egyol6b-cgu.7.rcgu.o" "/opt/crater/target/debug/deps/linkbot-b4add954e1fb1db9.linkbot.3egyol6b-cgu.8.rcgu.o" "/opt/crater/target/debug/deps/linkbot-b4add954e1fb1db9.linkbot.3egyol6b-cgu.9.rcgu.o" "-o" "/opt/crater/target/debug/deps/linkbot-b4add954e1fb1db9" "/opt/crater/target/debug/deps/linkbot-b4add954e1fb1db9.1c50erbtqx8fgqsq.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs" "-L" "/opt/crater/target/debug/deps" "-L" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-llinkbot" "-Wl,-Bstatic" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libtest-0127509d2e54a846.rlib" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libterm-2651f8b4eed9e86e.rlib" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgetopts-c729851ce6e3efb2.rlib" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunicode_width-e8235f0d435d4737.rlib" "/opt/crater/target/debug/deps/liblibc-d019039477cac03b.rlib" "-Wl,--start-group" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-4a76ff35a356aedf.rlib" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-e11c7b3b3225afe2.rlib" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace-13217ede3d276f16.rlib" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace_sys-621a9ee22da6caa1.rlib" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-546c844e8071bbeb.rlib" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-be9569e4d599746f.rlib" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-47d8845cef2a3bc5.rlib" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-017511bce73a530c.rlib" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-be7979c57a08057b.rlib" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-d6459c4f0817c67c.rlib" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-580035dd98451925.rlib" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-aee5c24fff305dea.rlib" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-8a55a4098920125a.rlib" "-Wl,--end-group" "/opt/crater/rustup-home/toolchains/1.37.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-9fc4b5be2ba5cc19.rlib" "-Wl,-Bdynamic" "-lutil" "-lutil" "-ldl" "-lrt" "-lpthread" "-lgcc_s" "-lc" "-lm" "-lrt" "-lpthread" "-lutil" "-lutil" [INFO] [stderr] = note: /usr/bin/ld: cannot find -llinkbot [INFO] [stderr] collect2: error: ld returned 1 exit status [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `linkbot`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "5b7868ede574c90d0246de58a28f6de12eaf1bfc2e95e3885410df84cd499437"` [INFO] running `"docker" "rm" "-f" "5b7868ede574c90d0246de58a28f6de12eaf1bfc2e95e3885410df84cd499437"` [INFO] [stdout] 5b7868ede574c90d0246de58a28f6de12eaf1bfc2e95e3885410df84cd499437