[INFO] cloning repository https://github.com/SheldonNico/ctp-rs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/SheldonNico/ctp-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSheldonNico%2Fctp-rs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSheldonNico%2Fctp-rs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 6ce9c10338983463f425b6c3d53f402e8f019215 [INFO] checking SheldonNico/ctp-rs against master#a609fb45efad59dfd459c76e50899be9f0583b5a for pr-80579 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSheldonNico%2Fctp-rs" "/workspace/builds/worker-11/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-11/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/SheldonNico/ctp-rs on toolchain a609fb45efad59dfd459c76e50899be9f0583b5a [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+a609fb45efad59dfd459c76e50899be9f0583b5a" "read-manifest" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/SheldonNico/ctp-rs [INFO] finished tweaking git repo https://github.com/SheldonNico/ctp-rs [INFO] tweaked toml for git repo https://github.com/SheldonNico/ctp-rs written to /workspace/builds/worker-11/source/Cargo.toml [INFO] crate git repo https://github.com/SheldonNico/ctp-rs already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+a609fb45efad59dfd459c76e50899be9f0583b5a" "fetch" "--locked" "--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-11/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-11/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" "rustops/crates-build-env@sha256:b8eeb62f26c39b23691079a6cb6de528d8e88b4d71a8f6b1d30f8ba7d9c16de9" "/opt/rustwide/cargo-home/bin/cargo" "+a609fb45efad59dfd459c76e50899be9f0583b5a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] a68c04cef7c32b7e3c523808ce0fe41d42b382a2825460651032b6080348157f [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "a68c04cef7c32b7e3c523808ce0fe41d42b382a2825460651032b6080348157f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "a68c04cef7c32b7e3c523808ce0fe41d42b382a2825460651032b6080348157f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a68c04cef7c32b7e3c523808ce0fe41d42b382a2825460651032b6080348157f", kill_on_drop: false }` [INFO] [stdout] a68c04cef7c32b7e3c523808ce0fe41d42b382a2825460651032b6080348157f [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-11/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-11/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" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:b8eeb62f26c39b23691079a6cb6de528d8e88b4d71a8f6b1d30f8ba7d9c16de9" "/opt/rustwide/cargo-home/bin/cargo" "+a609fb45efad59dfd459c76e50899be9f0583b5a" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] 7b4645ac8d22e8634f9f827f74b4ede76d195d01204d3f50e99edb316f4e1b48 [INFO] running `Command { std: "docker" "start" "-a" "7b4645ac8d22e8634f9f827f74b4ede76d195d01204d3f50e99edb316f4e1b48", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.79 [INFO] [stderr] Checking lazy_static v1.4.0 [INFO] [stderr] Compiling log v0.4.11 [INFO] [stderr] Compiling const_fn v0.4.2 [INFO] [stderr] Compiling cfg-if v0.1.10 [INFO] [stderr] Compiling unicode-width v0.1.8 [INFO] [stderr] Compiling vec_map v0.8.2 [INFO] [stderr] Compiling ansi_term v0.11.0 [INFO] [stderr] Compiling peeking_take_while v0.1.2 [INFO] [stderr] Checking scopeguard v1.1.0 [INFO] [stderr] Checking quick-error v1.2.3 [INFO] [stderr] Checking regex-syntax v0.6.20 [INFO] [stderr] Checking termcolor v1.1.0 [INFO] [stderr] Checking dotenv v0.15.0 [INFO] [stderr] Compiling crossbeam-utils v0.8.0 [INFO] [stderr] Compiling nom v5.1.2 [INFO] [stderr] Compiling clang-sys v1.0.1 [INFO] [stderr] Compiling bitflags v1.2.1 [INFO] [stderr] Compiling memchr v2.3.3 [INFO] [stderr] Compiling libloading v0.6.4 [INFO] [stderr] Compiling textwrap v0.11.0 [INFO] [stderr] Checking aho-corasick v0.7.14 [INFO] [stderr] Compiling quote v1.0.7 [INFO] [stderr] Checking humantime v1.3.0 [INFO] [stderr] Checking thread_local v1.0.1 [INFO] [stderr] Compiling syn v1.0.44 [INFO] [stderr] Compiling bindgen v0.55.1 [INFO] [stderr] Compiling regex v1.4.1 [INFO] [stderr] Compiling atty v0.2.14 [INFO] [stderr] Compiling jobserver v0.1.21 [INFO] [stderr] Compiling which v3.1.1 [INFO] [stderr] Checking crossbeam-epoch v0.9.0 [INFO] [stderr] Checking crossbeam-queue v0.3.0 [INFO] [stderr] Checking crossbeam-channel v0.5.0 [INFO] [stderr] Compiling clap v2.33.3 [INFO] [stderr] Compiling cc v1.0.61 [INFO] [stderr] Checking crossbeam-deque v0.8.0 [INFO] [stderr] Checking crossbeam v0.8.0 [INFO] [stderr] Compiling env_logger v0.7.1 [INFO] [stderr] Compiling cexpr v0.4.0 [INFO] [stderr] Compiling serde_derive v1.0.117 [INFO] [stderr] Checking serde v1.0.117 [INFO] [stderr] Compiling ctp_rs v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::io::Read` [INFO] [stdout] --> build.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::Read; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Instant` [INFO] [stdout] --> examples/mdapi.rs:3:27 [INFO] [stdout] | [INFO] [stdout] 3 | use std::time::{Duration, Instant}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Write` [INFO] [stdout] --> examples/mdapi.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::{Write, Read}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `HashMap`, `HashSet` [INFO] [stdout] --> examples/mdapi.rs:7:24 [INFO] [stdout] | [INFO] [stdout] 7 | use std::collections::{HashMap, HashSet}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::Path` [INFO] [stdout] --> examples/mdapi.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::path::Path; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc`, `Condvar`, `Mutex` [INFO] [stdout] --> examples/mdapi.rs:9:17 [INFO] [stdout] | [INFO] [stdout] 9 | use std::sync::{Arc, Mutex, Condvar}; [INFO] [stdout] | ^^^ ^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Duration`, `Instant` [INFO] [stdout] --> examples/tdapi.rs:3:17 [INFO] [stdout] | [INFO] [stdout] 3 | use std::time::{Duration, Instant}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Write` [INFO] [stdout] --> examples/tdapi.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::{Write, Read}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `HashMap`, `HashSet` [INFO] [stdout] --> examples/tdapi.rs:7:24 [INFO] [stdout] | [INFO] [stdout] 7 | use std::collections::{HashMap, HashSet}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::Path` [INFO] [stdout] --> examples/tdapi.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::path::Path; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc`, `Condvar`, `Mutex` [INFO] [stdout] --> examples/tdapi.rs:9:17 [INFO] [stdout] | [INFO] [stdout] 9 | use std::sync::{Arc, Mutex, Condvar}; [INFO] [stdout] | ^^^ ^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `select` [INFO] [stdout] --> examples/tdapi.rs:12:52 [INFO] [stdout] | [INFO] [stdout] 12 | use crossbeam::{channel::{self, Sender, Receiver}, select}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Read` [INFO] [stdout] --> examples/mdapi.rs:4:22 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::{Write, Read}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pRspUserLogin` [INFO] [stdout] --> examples/mdapi.rs:54:37 [INFO] [stdout] | [INFO] [stdout] 54 | fn on_rsp_user_login(&mut self, pRspUserLogin: *mut CThostFtdcRspUserLoginField, pRspInfo: *mut CThostFtdcRspInfoField, nRequestID: :... [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pRspUserLogin` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pRspInfo` [INFO] [stdout] --> examples/mdapi.rs:54:86 [INFO] [stdout] | [INFO] [stdout] 54 | ...hostFtdcRspUserLoginField, pRspInfo: *mut CThostFtdcRspInfoField, nRequestID: ::std::os::raw::c_int, bIsLast: bool) { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pRspInfo` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `nRequestID` [INFO] [stdout] --> examples/mdapi.rs:54:125 [INFO] [stdout] | [INFO] [stdout] 54 | ... CThostFtdcRspInfoField, nRequestID: ::std::os::raw::c_int, bIsLast: bool) { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nRequestID` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bIsLast` [INFO] [stdout] --> examples/mdapi.rs:54:160 [INFO] [stdout] | [INFO] [stdout] 54 | ...tID: ::std::os::raw::c_int, bIsLast: bool) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bIsLast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `nReason` [INFO] [stdout] --> examples/mdapi.rs:59:41 [INFO] [stdout] | [INFO] [stdout] 59 | fn on_front_disconnected(&mut self, nReason: ::std::os::raw::c_int) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nReason` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `nTimeLapse` [INFO] [stdout] --> examples/mdapi.rs:63:41 [INFO] [stdout] | [INFO] [stdout] 63 | fn on_heart_beat_warning(&mut self, nTimeLapse: ::std::os::raw::c_int) { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nTimeLapse` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pRspInfo` [INFO] [stdout] --> examples/mdapi.rs:67:32 [INFO] [stdout] | [INFO] [stdout] 67 | fn on_rsp_error(&mut self, pRspInfo: *mut CThostFtdcRspInfoField, nRequestID: ::std::os::raw::c_int, bIsLast: bool) { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pRspInfo` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `nRequestID` [INFO] [stdout] --> examples/mdapi.rs:67:71 [INFO] [stdout] | [INFO] [stdout] 67 | fn on_rsp_error(&mut self, pRspInfo: *mut CThostFtdcRspInfoField, nRequestID: ::std::os::raw::c_int, bIsLast: bool) { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nRequestID` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bIsLast` [INFO] [stdout] --> examples/mdapi.rs:67:106 [INFO] [stdout] | [INFO] [stdout] 67 | fn on_rsp_error(&mut self, pRspInfo: *mut CThostFtdcRspInfoField, nRequestID: ::std::os::raw::c_int, bIsLast: bool) { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bIsLast` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Read` [INFO] [stdout] --> examples/tdapi.rs:4:22 [INFO] [stdout] | [INFO] [stdout] 4 | use std::io::{Write, Read}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `pRspUserLogin` should have a snake case name [INFO] [stdout] --> examples/mdapi.rs:54:37 [INFO] [stdout] | [INFO] [stdout] 54 | fn on_rsp_user_login(&mut self, pRspUserLogin: *mut CThostFtdcRspUserLoginField, pRspInfo: *mut CThostFtdcRspInfoField, nRequestID: :... [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `p_rsp_user_login` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `pRspInfo` should have a snake case name [INFO] [stdout] --> examples/mdapi.rs:54:86 [INFO] [stdout] | [INFO] [stdout] 54 | ...*mut CThostFtdcRspUserLoginField, pRspInfo: *mut CThostFtdcRspInfoField, nRequestID: ::std::os::raw::c_int, bIsLast: bool) { [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `p_rsp_info` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `nRequestID` should have a snake case name [INFO] [stdout] --> examples/mdapi.rs:54:125 [INFO] [stdout] | [INFO] [stdout] 54 | ...o: *mut CThostFtdcRspInfoField, nRequestID: ::std::os::raw::c_int, bIsLast: bool) { [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `n_request_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `bIsLast` should have a snake case name [INFO] [stdout] --> examples/mdapi.rs:54:160 [INFO] [stdout] | [INFO] [stdout] 54 | ...nRequestID: ::std::os::raw::c_int, bIsLast: bool) { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `b_is_last` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `nReason` should have a snake case name [INFO] [stdout] --> examples/mdapi.rs:59:41 [INFO] [stdout] | [INFO] [stdout] 59 | fn on_front_disconnected(&mut self, nReason: ::std::os::raw::c_int) { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `n_reason` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `nTimeLapse` should have a snake case name [INFO] [stdout] --> examples/mdapi.rs:63:41 [INFO] [stdout] | [INFO] [stdout] 63 | fn on_heart_beat_warning(&mut self, nTimeLapse: ::std::os::raw::c_int) { [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `n_time_lapse` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `pRspInfo` should have a snake case name [INFO] [stdout] --> examples/mdapi.rs:67:32 [INFO] [stdout] | [INFO] [stdout] 67 | fn on_rsp_error(&mut self, pRspInfo: *mut CThostFtdcRspInfoField, nRequestID: ::std::os::raw::c_int, bIsLast: bool) { [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `p_rsp_info` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `nRequestID` should have a snake case name [INFO] [stdout] --> examples/mdapi.rs:67:71 [INFO] [stdout] | [INFO] [stdout] 67 | fn on_rsp_error(&mut self, pRspInfo: *mut CThostFtdcRspInfoField, nRequestID: ::std::os::raw::c_int, bIsLast: bool) { [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to snake case: `n_request_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `bIsLast` should have a snake case name [INFO] [stdout] --> examples/mdapi.rs:67:106 [INFO] [stdout] | [INFO] [stdout] 67 | fn on_rsp_error(&mut self, pRspInfo: *mut CThostFtdcRspInfoField, nRequestID: ::std::os::raw::c_int, bIsLast: bool) { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to snake case: `b_is_last` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `pDepthMarketData` should have a snake case name [INFO] [stdout] --> examples/mdapi.rs:71:44 [INFO] [stdout] | [INFO] [stdout] 71 | fn on_rtn_depth_market_data(&mut self, pDepthMarketData: *mut CThostFtdcDepthMarketDataField) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `p_depth_market_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `pDepthMarketData` should have a snake case name [INFO] [stdout] --> examples/mdapi.rs:75:17 [INFO] [stdout] | [INFO] [stdout] 75 | let pDepthMarketData = unsafe { &mut *pDepthMarketData }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `p_depth_market_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 26 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 7 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2m 16s [INFO] running `Command { std: "docker" "inspect" "7b4645ac8d22e8634f9f827f74b4ede76d195d01204d3f50e99edb316f4e1b48", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7b4645ac8d22e8634f9f827f74b4ede76d195d01204d3f50e99edb316f4e1b48", kill_on_drop: false }` [INFO] [stdout] 7b4645ac8d22e8634f9f827f74b4ede76d195d01204d3f50e99edb316f4e1b48