[INFO] cloning repository https://github.com/Kingtous/RustPlayer [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Kingtous/RustPlayer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKingtous%2FRustPlayer", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKingtous%2FRustPlayer'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 29a16f01912bc3e92008c7ae2f9569c8d7250bd3 [INFO] checking Kingtous/RustPlayer/29a16f01912bc3e92008c7ae2f9569c8d7250bd3 against master#e3e432d4d65a55e6db167598e96db2bcb163e316 for pr-140313 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKingtous%2FRustPlayer" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/Kingtous/RustPlayer on toolchain e3e432d4d65a55e6db167598e96db2bcb163e316 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e3e432d4d65a55e6db167598e96db2bcb163e316" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/Kingtous/RustPlayer [INFO] finished tweaking git repo https://github.com/Kingtous/RustPlayer [INFO] tweaked toml for git repo https://github.com/Kingtous/RustPlayer written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/Kingtous/RustPlayer 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" "+e3e432d4d65a55e6db167598e96db2bcb163e316" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Updating git repository `https://github.com/KetaDotCC/rust-ffmpeg-sys.git` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded open v2.1.3 [INFO] [stderr] Downloaded m3u8-rs v3.0.0 [INFO] [stderr] Downloaded mp3-duration v0.1.10 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/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:b0b074c097205a61b89e8ad263052f976b2b332c4dc5f02aef1fe52501660d6e" "/opt/rustwide/cargo-home/bin/cargo" "+e3e432d4d65a55e6db167598e96db2bcb163e316" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 2da949dbf06ec53d4c9d0f86e56961287db96402764762a897a8f5161d15b0c9 [INFO] running `Command { std: "docker" "start" "-a" "2da949dbf06ec53d4c9d0f86e56961287db96402764762a897a8f5161d15b0c9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "2da949dbf06ec53d4c9d0f86e56961287db96402764762a897a8f5161d15b0c9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2da949dbf06ec53d4c9d0f86e56961287db96402764762a897a8f5161d15b0c9", kill_on_drop: false }` [INFO] [stdout] 2da949dbf06ec53d4c9d0f86e56961287db96402764762a897a8f5161d15b0c9 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/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:b0b074c097205a61b89e8ad263052f976b2b332c4dc5f02aef1fe52501660d6e" "/opt/rustwide/cargo-home/bin/cargo" "+e3e432d4d65a55e6db167598e96db2bcb163e316" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 840ae2068f1e0973baa58e8a2605c81135d1e78a946dfce0de84087dbb2c4e6f [INFO] running `Command { std: "docker" "start" "-a" "840ae2068f1e0973baa58e8a2605c81135d1e78a946dfce0de84087dbb2c4e6f", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.150 [INFO] [stderr] Compiling proc-macro2 v1.0.69 [INFO] [stderr] Compiling pkg-config v0.3.27 [INFO] [stderr] Checking smallvec v1.11.1 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Checking once_cell v1.18.0 [INFO] [stderr] Compiling futures-core v0.3.29 [INFO] [stderr] Compiling glob v0.3.1 [INFO] [stderr] Checking memchr v2.6.4 [INFO] [stderr] Checking itoa v1.0.9 [INFO] [stderr] Compiling minimal-lexical v0.2.1 [INFO] [stderr] Compiling futures-task v0.3.29 [INFO] [stderr] Compiling regex-syntax v0.8.2 [INFO] [stderr] Compiling libloading v0.7.4 [INFO] [stderr] Checking tracing-core v0.1.32 [INFO] [stderr] Checking encoding_rs v0.8.33 [INFO] [stderr] Checking bytemuck v1.14.0 [INFO] [stderr] Compiling bindgen v0.64.0 [INFO] [stderr] Compiling openssl v0.10.59 [INFO] [stderr] Compiling futures-util v0.3.29 [INFO] [stderr] Compiling clang-sys v1.6.1 [INFO] [stderr] Checking http v0.2.9 [INFO] [stderr] Checking symphonia-core v0.5.3 [INFO] [stderr] Checking futures-sink v0.3.29 [INFO] [stderr] Compiling shlex v1.2.0 [INFO] [stderr] Compiling futures-channel v0.3.29 [INFO] [stderr] Checking tracing v0.1.40 [INFO] [stderr] Checking bitflags v2.4.1 [INFO] [stderr] Compiling nom v7.1.3 [INFO] [stderr] Compiling signal-hook v0.3.17 [INFO] [stderr] Compiling peeking_take_while v0.1.2 [INFO] [stderr] Compiling lazycell v1.3.0 [INFO] [stderr] Compiling alsa-sys v0.3.1 [INFO] [stderr] Compiling bitflags v1.3.2 [INFO] [stderr] Compiling native-tls v0.2.11 [INFO] [stderr] Compiling rustc-hash v1.1.0 [INFO] [stderr] Compiling lazy_static v1.4.0 [INFO] [stderr] Compiling serde v1.0.192 [INFO] [stderr] Checking percent-encoding v2.3.0 [INFO] [stderr] Compiling cpal v0.15.2 [INFO] [stderr] Compiling thiserror v1.0.50 [INFO] [stderr] Checking try-lock v0.2.4 [INFO] [stderr] Compiling quote v1.0.33 [INFO] [stderr] Checking want v0.3.1 [INFO] [stderr] Checking form_urlencoded v1.2.0 [INFO] [stderr] Checking ogg v0.8.0 [INFO] [stderr] Checking unicode-normalization v0.1.22 [INFO] [stderr] Compiling cc v1.0.83 [INFO] [stderr] Compiling num_cpus v1.16.0 [INFO] [stderr] Checking http-body v0.4.5 [INFO] [stderr] Compiling unicode-xid v0.2.4 [INFO] [stderr] Checking gimli v0.28.0 [INFO] [stderr] Checking ryu v1.0.15 [INFO] [stderr] Checking dasp_sample v0.11.0 [INFO] [stderr] Compiling syn v2.0.39 [INFO] [stderr] Compiling serde_json v1.0.108 [INFO] [stderr] Compiling failure_derive v0.1.8 [INFO] [stderr] Checking unicode-bidi v0.3.13 [INFO] [stderr] Checking miniz_oxide v0.7.1 [INFO] [stderr] Checking lewton v0.10.2 [INFO] [stderr] Checking aho-corasick v1.1.2 [INFO] [stderr] Checking object v0.32.1 [INFO] [stderr] Checking symphonia-metadata v0.5.3 [INFO] [stderr] Checking claxon v0.4.3 [INFO] [stderr] Checking idna v0.4.0 [INFO] [stderr] Checking symphonia-bundle-mp3 v0.5.3 [INFO] [stderr] Checking parking_lot_core v0.9.9 [INFO] [stderr] Checking signal-hook-registry v1.4.1 [INFO] [stderr] Checking mio v0.8.9 [INFO] [stderr] Checking parking_lot v0.12.1 [INFO] [stderr] Checking socket2 v0.5.5 [INFO] [stderr] Checking nix v0.24.3 [INFO] [stderr] Compiling openssl-sys v0.9.95 [INFO] [stderr] Compiling backtrace v0.3.69 [INFO] [stderr] Compiling cexpr v0.6.0 [INFO] [stderr] Checking getrandom v0.2.11 [INFO] [stderr] Checking socket2 v0.4.10 [INFO] [stderr] Checking symphonia v0.5.3 [INFO] [stderr] Checking hound v3.5.1 [INFO] [stderr] Compiling regex-automata v0.4.3 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking alsa v0.7.1 [INFO] [stderr] Checking signal-hook-mio v0.2.3 [INFO] [stderr] Checking rustc-demangle v0.1.23 [INFO] [stderr] Checking crossterm v0.25.0 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking url v2.4.1 [INFO] [stderr] Checking dirs-sys v0.3.7 [INFO] [stderr] Checking pathdiff v0.2.1 [INFO] [stderr] Checking cassowary v0.3.0 [INFO] [stderr] Checking ipnet v2.9.0 [INFO] [stderr] Checking addr2line v0.21.0 [INFO] [stderr] Compiling rustplayer v1.1.2 (/opt/rustwide/workdir) [INFO] [stderr] Checking base64 v0.21.5 [INFO] [stderr] Checking tui v0.19.0 [INFO] [stderr] Checking open v2.1.3 [INFO] [stderr] Checking dirs v4.0.0 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking m3u8-rs v3.0.0 [INFO] [stderr] Checking rodio v0.17.3 [INFO] [stderr] Compiling tokio-macros v2.1.0 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling thiserror-impl v1.0.50 [INFO] [stderr] Compiling regex v1.10.2 [INFO] [stderr] Checking tokio v1.33.0 [INFO] [stderr] Checking mp3-duration v0.1.10 [INFO] [stderr] Compiling synstructure v0.12.6 [INFO] [stderr] Checking failure v0.1.8 [INFO] [stderr] Checking tokio-util v0.7.10 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking h2 v0.3.21 [INFO] [stderr] Compiling ffmpeg-sys-next v6.0.1 (https://github.com/KetaDotCC/rust-ffmpeg-sys.git?branch=master#08917993) [INFO] [stderr] Checking hyper v0.14.27 [INFO] [stderr] Checking hyper-tls v0.5.0 [INFO] [stderr] Checking reqwest v0.11.22 [INFO] [stderr] Checking ffmpeg-decoder v0.1.3 (/opt/rustwide/workdir/thirdparty/ffmpeg-decoder-rs) [INFO] [stdout] warning: field `music_controller` is never read [INFO] [stdout] --> src/app.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 71 | pub struct App { [INFO] [stdout] | --- field in this struct [INFO] [stdout] ... [INFO] [stdout] 78 | pub music_controller: MusicController, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `current_pos` is never read [INFO] [stdout] --> src/media/player.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 51 | pub struct PlayListItem { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 54 | pub current_pos: Duration, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_progress` and `current_lyric` are never used [INFO] [stdout] --> src/media/player.rs:88:8 [INFO] [stdout] | [INFO] [stdout] 65 | pub trait Player { [INFO] [stdout] | ------ methods in this trait [INFO] [stdout] ... [INFO] [stdout] 88 | fn get_progress(&self) -> (f32, f32); [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | fn current_lyric(&self) -> &str; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `state` is never read [INFO] [stdout] --> src/ui/music_board.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct MusicController { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 33 | pub state: ListState, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/ui/fs.rs:45:10 [INFO] [stdout] | [INFO] [stdout] 45 | #[derive(Fail, Debug)] [INFO] [stdout] | ^--- [INFO] [stdout] | | [INFO] [stdout] | `Fail` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_DERIVE_failure_Fail_FOR_FsError` [INFO] [stdout] 46 | #[fail(display = "FsError: {}", msg)] [INFO] [stdout] 47 | pub struct FsError { [INFO] [stdout] | ------- `FsError` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stdout] = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/ui/fs.rs:45:10 [INFO] [stdout] | [INFO] [stdout] 45 | #[derive(Fail, Debug)] [INFO] [stdout] | ^--- [INFO] [stdout] | | [INFO] [stdout] | `Display` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_DERIVE_failure_core_fmt_Display_FOR_FsError` [INFO] [stdout] 46 | #[fail(display = "FsError: {}", msg)] [INFO] [stdout] 47 | pub struct FsError { [INFO] [stdout] | ------- `FsError` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `music_controller` is never read [INFO] [stdout] --> src/app.rs:78:9 [INFO] [stdout] | [INFO] [stdout] 71 | pub struct App { [INFO] [stdout] | --- field in this struct [INFO] [stdout] ... [INFO] [stdout] 78 | pub music_controller: MusicController, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `current_pos` is never read [INFO] [stdout] --> src/media/player.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 51 | pub struct PlayListItem { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 54 | pub current_pos: Duration, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_progress` and `current_lyric` are never used [INFO] [stdout] --> src/media/player.rs:88:8 [INFO] [stdout] | [INFO] [stdout] 65 | pub trait Player { [INFO] [stdout] | ------ methods in this trait [INFO] [stdout] ... [INFO] [stdout] 88 | fn get_progress(&self) -> (f32, f32); [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | fn current_lyric(&self) -> &str; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `state` is never read [INFO] [stdout] --> src/ui/music_board.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct MusicController { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 33 | pub state: ListState, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/ui/fs.rs:45:10 [INFO] [stdout] | [INFO] [stdout] 45 | #[derive(Fail, Debug)] [INFO] [stdout] | ^--- [INFO] [stdout] | | [INFO] [stdout] | `Fail` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_DERIVE_failure_Fail_FOR_FsError` [INFO] [stdout] 46 | #[fail(display = "FsError: {}", msg)] [INFO] [stdout] 47 | pub struct FsError { [INFO] [stdout] | ------- `FsError` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: `#[warn(non_local_definitions)]` on by default [INFO] [stdout] = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-local `impl` definition, `impl` blocks should be written at the same level as their item [INFO] [stdout] --> src/ui/fs.rs:45:10 [INFO] [stdout] | [INFO] [stdout] 45 | #[derive(Fail, Debug)] [INFO] [stdout] | ^--- [INFO] [stdout] | | [INFO] [stdout] | `Display` is not local [INFO] [stdout] | move the `impl` block outside of this constant `_DERIVE_failure_core_fmt_Display_FOR_FsError` [INFO] [stdout] 46 | #[fail(display = "FsError: {}", msg)] [INFO] [stdout] 47 | pub struct FsError { [INFO] [stdout] | ------- `FsError` is not local [INFO] [stdout] | [INFO] [stdout] = note: the derive macro `Fail` defines the non-local `impl`, and may need to be changed [INFO] [stdout] = note: the derive macro `Fail` may come from an old version of the `failure_derive` crate, try updating your dependency with `cargo update -p failure_derive` [INFO] [stdout] = note: an `impl` is never scoped, even when it is nested inside an item, as it may impact type checking outside of that item, which can be the case if neither the trait or the self type are at the same nesting level as the `impl` [INFO] [stdout] = note: items in an anonymous const item (`const _: () = { ... }`) are treated as in the same scope as the anonymous const's declaration for the purpose of this lint [INFO] [stdout] = note: this warning originates in the derive macro `Fail` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 21.29s [INFO] running `Command { std: "docker" "inspect" "840ae2068f1e0973baa58e8a2605c81135d1e78a946dfce0de84087dbb2c4e6f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "840ae2068f1e0973baa58e8a2605c81135d1e78a946dfce0de84087dbb2c4e6f", kill_on_drop: false }` [INFO] [stdout] 840ae2068f1e0973baa58e8a2605c81135d1e78a946dfce0de84087dbb2c4e6f