[INFO] crate tvm 0.1.0 is already in cache [INFO] extracting crate tvm 0.1.0 into work/ex/pr-60162/sources/master#a850a426491e14186af2250549bf41256b5938d2/reg/tvm/0.1.0 [INFO] extracting crate tvm 0.1.0 into work/ex/pr-60162/sources/try#06a150c7d11500b41499224f165e9de1de096768/reg/tvm/0.1.0 [INFO] validating manifest of tvm-0.1.0 on toolchain master#a850a426491e14186af2250549bf41256b5938d2 [INFO] running `"/mnt/crater-raid/crater/work/local/cargo-home/bin/cargo" "+a850a426491e14186af2250549bf41256b5938d2-alt" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of tvm-0.1.0 on toolchain try#06a150c7d11500b41499224f165e9de1de096768 [INFO] running `"/mnt/crater-raid/crater/work/local/cargo-home/bin/cargo" "+06a150c7d11500b41499224f165e9de1de096768-alt" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing tvm-0.1.0 [INFO] finished frobbing tvm-0.1.0 [INFO] frobbed toml for tvm-0.1.0 written to work/ex/pr-60162/sources/master#a850a426491e14186af2250549bf41256b5938d2/reg/tvm/0.1.0/Cargo.toml [INFO] started frobbing tvm-0.1.0 [INFO] finished frobbing tvm-0.1.0 [INFO] frobbed toml for tvm-0.1.0 written to work/ex/pr-60162/sources/try#06a150c7d11500b41499224f165e9de1de096768/reg/tvm/0.1.0/Cargo.toml [INFO] running `"/mnt/crater-raid/crater/work/local/cargo-home/bin/cargo" "+a850a426491e14186af2250549bf41256b5938d2-alt" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/crater-raid/crater/work/local/cargo-home/bin/cargo" "+06a150c7d11500b41499224f165e9de1de096768-alt" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/crater-raid/crater/work/local/cargo-home/bin/cargo" "+a850a426491e14186af2250549bf41256b5938d2-alt" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/crater-raid/crater/work/local/cargo-home/bin/cargo" "+06a150c7d11500b41499224f165e9de1de096768-alt" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] checking tvm-0.1.0 against master#a850a426491e14186af2250549bf41256b5938d2 for pr-60162 [INFO] running `"docker" "create" "-v" "/mnt/crater-raid/crater/work/local/target-dirs/pr-60162/worker-1/master#a850a426491e14186af2250549bf41256b5938d2:/opt/crater/target:rw,Z" "-v" "/mnt/crater-raid/crater/work/ex/pr-60162/sources/master#a850a426491e14186af2250549bf41256b5938d2/reg/tvm/0.1.0:/opt/crater/workdir:ro,Z" "-v" "/mnt/crater-raid/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/crater-raid/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" "+a850a426491e14186af2250549bf41256b5938d2-alt" "check" "--frozen" "--all" "--all-targets"` [INFO] [stdout] b1bf71ea01a92118688e783fdcfe85fb488bd6001164c5f1e9c70741a85ea668 [INFO] running `"docker" "start" "-a" "b1bf71ea01a92118688e783fdcfe85fb488bd6001164c5f1e9c70741a85ea668"` [INFO] [stderr] Checking bounded-spsc-queue v0.4.0 [INFO] [stderr] Compiling nom v4.2.3 [INFO] [stderr] Checking ndarray v0.11.2 [INFO] [stderr] Checking tvm v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unused doc comment [INFO] [stderr] --> src/runtime/graph.rs:338:1 [INFO] [stderr] | [INFO] [stderr] 338 | /// Converts a string to TVM DLDataTypeCode. @see `String2TVMType` in packed_func.h [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 339 | / named!( [INFO] [stderr] 340 | | tvm_str_to_type, [INFO] [stderr] 341 | | do_parse!( [INFO] [stderr] 342 | | type_name: alpha1 >> [INFO] [stderr] ... | [INFO] [stderr] 358 | | ) [INFO] [stderr] 359 | | ); [INFO] [stderr] | |__- rustdoc does not generate documentation for macro expansions [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_doc_comments)] on by default [INFO] [stderr] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stderr] [INFO] [stderr] warning: unused doc comment [INFO] [stderr] --> src/runtime/graph.rs:361:1 [INFO] [stderr] | [INFO] [stderr] 361 | /// Converts a bytes to String. [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 362 | / named!( [INFO] [stderr] 363 | | name, [INFO] [stderr] 364 | | map_res!(length_bytes!(le_u64), |b: &[u8]| String::from_utf8( [INFO] [stderr] 365 | | b.to_vec() [INFO] [stderr] 366 | | )) [INFO] [stderr] 367 | | ); [INFO] [stderr] | |__- rustdoc does not generate documentation for macro expansions [INFO] [stderr] | [INFO] [stderr] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stderr] [INFO] [stderr] warning: unused doc comment [INFO] [stderr] --> src/runtime/graph.rs:369:1 [INFO] [stderr] | [INFO] [stderr] 369 | /// Parses a TVMContext [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 370 | / named!( [INFO] [stderr] 371 | | tvm_ctx<&[u8], TVMContext>, [INFO] [stderr] 372 | | do_parse!( [INFO] [stderr] 373 | | device_type: le_u32 >> [INFO] [stderr] ... | [INFO] [stderr] 376 | | ) [INFO] [stderr] 377 | | ); [INFO] [stderr] | |__- rustdoc does not generate documentation for macro expansions [INFO] [stderr] | [INFO] [stderr] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stderr] [INFO] [stderr] warning: unused doc comment [INFO] [stderr] --> src/runtime/graph.rs:379:1 [INFO] [stderr] | [INFO] [stderr] 379 | /// Parses a DataType [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 380 | / named!( [INFO] [stderr] 381 | | data_type<&[u8], DataType>, [INFO] [stderr] 382 | | do_parse!( [INFO] [stderr] 383 | | code: le_u8 >> [INFO] [stderr] ... | [INFO] [stderr] 387 | | ) [INFO] [stderr] 388 | | ); [INFO] [stderr] | |__- rustdoc does not generate documentation for macro expansions [INFO] [stderr] | [INFO] [stderr] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stderr] [INFO] [stderr] warning: unused doc comment [INFO] [stderr] --> src/runtime/graph.rs:390:1 [INFO] [stderr] | [INFO] [stderr] 390 | /// Parses a Tensor from a TVM array file. [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 391 | / named!( [INFO] [stderr] 392 | | tensor, [INFO] [stderr] 393 | | do_parse!( [INFO] [stderr] 394 | | take!(8) [INFO] [stderr] ... | [INFO] [stderr] 411 | | ) [INFO] [stderr] 412 | | ); [INFO] [stderr] | |__- rustdoc does not generate documentation for macro expansions [INFO] [stderr] | [INFO] [stderr] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stderr] [INFO] [stderr] warning: unused doc comment [INFO] [stderr] --> src/runtime/graph.rs:414:1 [INFO] [stderr] | [INFO] [stderr] 414 | /// Parses a graph params dict from a params binary file. [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 415 | / named!( [INFO] [stderr] 416 | | parse_param_dict>, [INFO] [stderr] 417 | | do_parse!( [INFO] [stderr] 418 | | take!(8) [INFO] [stderr] ... | [INFO] [stderr] 423 | | ) [INFO] [stderr] 424 | | ); [INFO] [stderr] | |__- rustdoc does not generate documentation for macro expansions [INFO] [stderr] | [INFO] [stderr] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stderr] [INFO] [stderr] warning: unused doc comment [INFO] [stderr] --> src/runtime/graph.rs:338:1 [INFO] [stderr] | [INFO] [stderr] 338 | /// Converts a string to TVM DLDataTypeCode. @see `String2TVMType` in packed_func.h [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 339 | / named!( [INFO] [stderr] 340 | | tvm_str_to_type, [INFO] [stderr] 341 | | do_parse!( [INFO] [stderr] 342 | | type_name: alpha1 >> [INFO] [stderr] ... | [INFO] [stderr] 358 | | ) [INFO] [stderr] 359 | | ); [INFO] [stderr] | |__- rustdoc does not generate documentation for macro expansions [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_doc_comments)] on by default [INFO] [stderr] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stderr] [INFO] [stderr] warning: unused doc comment [INFO] [stderr] --> src/runtime/graph.rs:361:1 [INFO] [stderr] | [INFO] [stderr] 361 | /// Converts a bytes to String. [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 362 | / named!( [INFO] [stderr] 363 | | name, [INFO] [stderr] 364 | | map_res!(length_bytes!(le_u64), |b: &[u8]| String::from_utf8( [INFO] [stderr] 365 | | b.to_vec() [INFO] [stderr] 366 | | )) [INFO] [stderr] 367 | | ); [INFO] [stderr] | |__- rustdoc does not generate documentation for macro expansions [INFO] [stderr] | [INFO] [stderr] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stderr] [INFO] [stderr] warning: unused doc comment [INFO] [stderr] --> src/runtime/graph.rs:369:1 [INFO] [stderr] | [INFO] [stderr] 369 | /// Parses a TVMContext [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 370 | / named!( [INFO] [stderr] 371 | | tvm_ctx<&[u8], TVMContext>, [INFO] [stderr] 372 | | do_parse!( [INFO] [stderr] 373 | | device_type: le_u32 >> [INFO] [stderr] ... | [INFO] [stderr] 376 | | ) [INFO] [stderr] 377 | | ); [INFO] [stderr] | |__- rustdoc does not generate documentation for macro expansions [INFO] [stderr] | [INFO] [stderr] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stderr] [INFO] [stderr] warning: unused doc comment [INFO] [stderr] --> src/runtime/graph.rs:379:1 [INFO] [stderr] | [INFO] [stderr] 379 | /// Parses a DataType [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 380 | / named!( [INFO] [stderr] 381 | | data_type<&[u8], DataType>, [INFO] [stderr] 382 | | do_parse!( [INFO] [stderr] 383 | | code: le_u8 >> [INFO] [stderr] ... | [INFO] [stderr] 387 | | ) [INFO] [stderr] 388 | | ); [INFO] [stderr] | |__- rustdoc does not generate documentation for macro expansions [INFO] [stderr] | [INFO] [stderr] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stderr] [INFO] [stderr] warning: unused doc comment [INFO] [stderr] --> src/runtime/graph.rs:390:1 [INFO] [stderr] | [INFO] [stderr] 390 | /// Parses a Tensor from a TVM array file. [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 391 | / named!( [INFO] [stderr] 392 | | tensor, [INFO] [stderr] 393 | | do_parse!( [INFO] [stderr] 394 | | take!(8) [INFO] [stderr] ... | [INFO] [stderr] 411 | | ) [INFO] [stderr] 412 | | ); [INFO] [stderr] | |__- rustdoc does not generate documentation for macro expansions [INFO] [stderr] | [INFO] [stderr] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stderr] [INFO] [stderr] warning: unused doc comment [INFO] [stderr] --> src/runtime/graph.rs:414:1 [INFO] [stderr] | [INFO] [stderr] 414 | /// Parses a graph params dict from a params binary file. [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 415 | / named!( [INFO] [stderr] 416 | | parse_param_dict>, [INFO] [stderr] 417 | | do_parse!( [INFO] [stderr] 418 | | take!(8) [INFO] [stderr] ... | [INFO] [stderr] 423 | | ) [INFO] [stderr] 424 | | ); [INFO] [stderr] | |__- rustdoc does not generate documentation for macro expansions [INFO] [stderr] | [INFO] [stderr] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::atomic::ATOMIC_USIZE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/runtime/threading.rs:4:37 [INFO] [stderr] | [INFO] [stderr] 4 | atomic::{AtomicUsize, Ordering, ATOMIC_USIZE_INIT}, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::atomic::ATOMIC_USIZE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/runtime/threading.rs:252:27 [INFO] [stderr] | [INFO] [stderr] 252 | pending: Arc::new(ATOMIC_USIZE_INIT), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace the use of the deprecated item: `AtomicUsize::new(0)` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::atomic::ATOMIC_USIZE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/runtime/threading.rs:4:37 [INFO] [stderr] | [INFO] [stderr] 4 | atomic::{AtomicUsize, Ordering, ATOMIC_USIZE_INIT}, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::atomic::ATOMIC_USIZE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/runtime/threading.rs:252:27 [INFO] [stderr] | [INFO] [stderr] 252 | pending: Arc::new(ATOMIC_USIZE_INIT), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace the use of the deprecated item: `AtomicUsize::new(0)` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::atomic::ATOMIC_USIZE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/runtime/threading.rs:323:19 [INFO] [stderr] | [INFO] [stderr] 323 | let counter = ATOMIC_USIZE_INIT; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace the use of the deprecated item: `AtomicUsize::new(0)` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::sync::atomic::ATOMIC_USIZE_INIT': the `new` function is now preferred [INFO] [stderr] --> src/runtime/threading.rs:324:24 [INFO] [stderr] | [INFO] [stderr] 324 | let task_ids_sum = ATOMIC_USIZE_INIT; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace the use of the deprecated item: `AtomicUsize::new(0)` [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::cause': replaced by Error::source, which can support downcasting [INFO] [stderr] --> src/errors.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | / error_chain! { [INFO] [stderr] 11 | | errors { [INFO] [stderr] 12 | | TryFromTVMRetValueError(expected: String, actual: i64) { [INFO] [stderr] 13 | | description("mismatched types while downcasting TVMRetValue") [INFO] [stderr] ... | [INFO] [stderr] 32 | | } [INFO] [stderr] 33 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::error::Error::cause': replaced by Error::source, which can support downcasting [INFO] [stderr] --> src/errors.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | / error_chain! { [INFO] [stderr] 11 | | errors { [INFO] [stderr] 12 | | TryFromTVMRetValueError(expected: String, actual: i64) { [INFO] [stderr] 13 | | description("mismatched types while downcasting TVMRetValue") [INFO] [stderr] ... | [INFO] [stderr] 32 | | } [INFO] [stderr] 33 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: the feature `extern_prelude` has been stable since 1.30.0 and no longer requires an attribute to enable [INFO] [stderr] --> src/lib.rs:5:3 [INFO] [stderr] | [INFO] [stderr] 5 | extern_prelude, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(stable_features)] on by default [INFO] [stderr] [INFO] [stderr] warning: the feature `try_from` has been stable since 1.34.0 and no longer requires an attribute to enable [INFO] [stderr] --> src/lib.rs:7:3 [INFO] [stderr] | [INFO] [stderr] 7 | try_from, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the feature `alloc` has been stable since 1.36.0 and no longer requires an attribute to enable [INFO] [stderr] --> src/lib.rs:2:3 [INFO] [stderr] | [INFO] [stderr] 2 | alloc, [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the feature `extern_prelude` has been stable since 1.30.0 and no longer requires an attribute to enable [INFO] [stderr] --> src/lib.rs:5:3 [INFO] [stderr] | [INFO] [stderr] 5 | extern_prelude, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(stable_features)] on by default [INFO] [stderr] [INFO] [stderr] warning: the feature `try_from` has been stable since 1.34.0 and no longer requires an attribute to enable [INFO] [stderr] --> src/lib.rs:7:3 [INFO] [stderr] | [INFO] [stderr] 7 | try_from, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the feature `alloc` has been stable since 1.36.0 and no longer requires an attribute to enable [INFO] [stderr] --> src/lib.rs:2:3 [INFO] [stderr] | [INFO] [stderr] 2 | alloc, [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `collections::HashMap` [INFO] [stderr] --> tests/test_graph_serde.rs:8:11 [INFO] [stderr] | [INFO] [stderr] 8 | use std::{collections::HashMap, convert::TryFrom, fs, io::Read}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `params` [INFO] [stderr] --> tests/test_graph_serde.rs:19:7 [INFO] [stderr] | [INFO] [stderr] 19 | let params = tvm::runtime::load_param_dict(¶ms_bytes); [INFO] [stderr] | ^^^^^^ help: consider prefixing with an underscore: `_params` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: the feature `fs_read_write` has been stable since 1.26.0 and no longer requires an attribute to enable [INFO] [stderr] --> tests/test_graph_serde.rs:1:12 [INFO] [stderr] | [INFO] [stderr] 1 | #![feature(fs_read_write, try_from)] [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(stable_features)] on by default [INFO] [stderr] [INFO] [stderr] warning: the feature `try_from` has been stable since 1.34.0 and no longer requires an attribute to enable [INFO] [stderr] --> tests/test_graph_serde.rs:1:27 [INFO] [stderr] | [INFO] [stderr] 1 | #![feature(fs_read_write, try_from)] [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 12.85s [INFO] running `"docker" "inspect" "b1bf71ea01a92118688e783fdcfe85fb488bd6001164c5f1e9c70741a85ea668"` [INFO] running `"docker" "rm" "-f" "b1bf71ea01a92118688e783fdcfe85fb488bd6001164c5f1e9c70741a85ea668"` [INFO] [stdout] b1bf71ea01a92118688e783fdcfe85fb488bd6001164c5f1e9c70741a85ea668