[INFO] fetching crate serde_tagged 0.2.0... [INFO] checking serde_tagged-0.2.0 against master#a609fb45efad59dfd459c76e50899be9f0583b5a for pr-80579 [INFO] extracting crate serde_tagged 0.2.0 into /workspace/builds/worker-7/source [INFO] validating manifest of crates.io crate serde_tagged 0.2.0 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 crates.io crate serde_tagged 0.2.0 [INFO] finished tweaking crates.io crate serde_tagged 0.2.0 [INFO] tweaked toml for crates.io crate serde_tagged 0.2.0 written to /workspace/builds/worker-7/source/Cargo.toml [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+a609fb45efad59dfd459c76e50899be9f0583b5a" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+a609fb45efad59dfd459c76e50899be9f0583b5a" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7/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] 4094f7f3345d4f808457c9b5e3fa7576bb77c2fa5522df84dbf02e1745490727 [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" "4094f7f3345d4f808457c9b5e3fa7576bb77c2fa5522df84dbf02e1745490727", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "4094f7f3345d4f808457c9b5e3fa7576bb77c2fa5522df84dbf02e1745490727", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4094f7f3345d4f808457c9b5e3fa7576bb77c2fa5522df84dbf02e1745490727", kill_on_drop: false }` [INFO] [stdout] 4094f7f3345d4f808457c9b5e3fa7576bb77c2fa5522df84dbf02e1745490727 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7/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] [stdout] d0ca6c50837098f853ecfe0894e455d151a54b556355fdeb3e943db050ebbfa7 [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" "d0ca6c50837098f853ecfe0894e455d151a54b556355fdeb3e943db050ebbfa7", kill_on_drop: false }` [INFO] [stderr] Compiling autocfg v1.0.1 [INFO] [stderr] Compiling ryu v1.0.5 [INFO] [stderr] Compiling serde_json v1.0.61 [INFO] [stderr] Checking itoa v0.4.7 [INFO] [stderr] Checking downcast-rs v1.2.0 [INFO] [stderr] Checking lazy_static v1.4.0 [INFO] [stderr] Checking erased-serde v0.3.13 [INFO] [stderr] Checking serde_bytes v0.10.5 [INFO] [stderr] Compiling num-traits v0.2.14 [INFO] [stderr] Checking serde_tagged v0.2.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unnecessary trailing semicolon [INFO] [stdout] --> src/de/internal.rs:161:53 [INFO] [stdout] | [INFO] [stdout] 161 | use serde::de::value::SeqAccessDeserializer;; [INFO] [stdout] | ^ help: remove this semicolon [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(redundant_semicolons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/de/seed.rs:385:31 [INFO] [stdout] | [INFO] [stdout] 385 | : for<'de> FnMut(&mut erased_serde::Deserializer<'de>) -> Result [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn erased_serde::Deserializer<'de>` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/de/seed.rs:390:32 [INFO] [stdout] | [INFO] [stdout] 390 | F: for<'de> FnMut(&mut erased_serde::Deserializer<'de>) -> Result, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn erased_serde::Deserializer<'de>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/de/seed.rs:399:36 [INFO] [stdout] | [INFO] [stdout] 399 | pub struct BoxFnMutSeed(Box> + Sync>); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMutSeed> + Sync` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/de/seed.rs:439:28 [INFO] [stdout] | [INFO] [stdout] 439 | : for<'de> Fn(&mut erased_serde::Deserializer<'de>) -> Result [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn erased_serde::Deserializer<'de>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/de/seed.rs:444:29 [INFO] [stdout] | [INFO] [stdout] 444 | F: for<'de> Fn(&mut erased_serde::Deserializer<'de>) -> Result, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn erased_serde::Deserializer<'de>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/de/seed.rs:453:33 [INFO] [stdout] | [INFO] [stdout] 453 | pub struct BoxFnSeed(Box> + Sync>); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnSeed> + Sync` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking ordered-float v1.1.1 [INFO] [stdout] warning: 7 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking serde-value v0.5.3 [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/deserialize.rs:146:36 [INFO] [stdout] | [INFO] [stdout] 146 | type RegSeedFn = BoxFnSeed>; [INFO] [stdout] | ^^^^^^ help: use `dyn`: `dyn TypeId` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/deserialize.rs:155:18 [INFO] [stdout] | [INFO] [stdout] 155 | de: &mut erased_serde::Deserializer<'de>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn erased_serde::Deserializer<'de>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/deserialize.rs:156:21 [INFO] [stdout] | [INFO] [stdout] 156 | ) -> Result, erased_serde::Error> { [INFO] [stdout] | ^^^^^^ help: use `dyn`: `dyn TypeId` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/deserialize.rs:161:18 [INFO] [stdout] | [INFO] [stdout] 161 | de: &mut erased_serde::Deserializer<'de>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn erased_serde::Deserializer<'de>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/deserialize.rs:162:21 [INFO] [stdout] | [INFO] [stdout] 162 | ) -> Result, erased_serde::Error> { [INFO] [stdout] | ^^^^^^ help: use `dyn`: `dyn TypeId` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/deserialize.rs:183:22 [INFO] [stdout] | [INFO] [stdout] 183 | type Value = Box; [INFO] [stdout] | ^^^^^^ help: use `dyn`: `dyn TypeId` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/deserialize.rs:210:22 [INFO] [stdout] | [INFO] [stdout] 210 | type Value = Box; [INFO] [stdout] | ^^^^^^ help: use `dyn`: `dyn TypeId` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/trait_objects.rs:125:31 [INFO] [stdout] | [INFO] [stdout] 125 | impl<'a> serde::Serialize for Stored + 'a { [INFO] [stdout] | ^^^^^^^^^^^ help: use `dyn`: `dyn Stored + 'a` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/trait_objects.rs:140:43 [INFO] [stdout] | [INFO] [stdout] 140 | impl<'de> serde::Deserialize<'de> for Box { [INFO] [stdout] | ^^^^^^ help: use `dyn`: `dyn Stored` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/trait_objects.rs:166:62 [INFO] [stdout] | [INFO] [stdout] 166 | pub type TypeRegistry = BTreeMap<&'static str, BoxFnSeed>>; [INFO] [stdout] | ^^^^^^ help: use `dyn`: `dyn Stored` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/trait_objects.rs:191:28 [INFO] [stdout] | [INFO] [stdout] 191 | pub fn a<'de>(de: &mut Deserializer<'de>) -> Result, Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Deserializer<'de>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/trait_objects.rs:191:61 [INFO] [stdout] | [INFO] [stdout] 191 | pub fn a<'de>(de: &mut Deserializer<'de>) -> Result, Error> { [INFO] [stdout] | ^^^^^^ help: use `dyn`: `dyn Stored` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/trait_objects.rs:196:28 [INFO] [stdout] | [INFO] [stdout] 196 | pub fn b<'de>(de: &mut Deserializer<'de>) -> Result, Error> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Deserializer<'de>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/trait_objects.rs:196:61 [INFO] [stdout] | [INFO] [stdout] 196 | pub fn b<'de>(de: &mut Deserializer<'de>) -> Result, Error> { [INFO] [stdout] | ^^^^^^ help: use `dyn`: `dyn Stored` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/trait_objects.rs:212:20 [INFO] [stdout] | [INFO] [stdout] 212 | let ser_a: Box = a.clone(); [INFO] [stdout] | ^^^^^^ help: use `dyn`: `dyn Stored` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/trait_objects.rs:213:20 [INFO] [stdout] | [INFO] [stdout] 213 | let ser_b: Box = b.clone(); [INFO] [stdout] | ^^^^^^ help: use `dyn`: `dyn Stored` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/trait_objects.rs:214:20 [INFO] [stdout] | [INFO] [stdout] 214 | let ser_c: Box = c.clone(); [INFO] [stdout] | ^^^^^^ help: use `dyn`: `dyn Stored` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/trait_objects.rs:254:19 [INFO] [stdout] | [INFO] [stdout] 254 | let de_a: Box = serde_json::from_str(&ser_a).unwrap(); [INFO] [stdout] | ^^^^^^ help: use `dyn`: `dyn Stored` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/trait_objects.rs:255:19 [INFO] [stdout] | [INFO] [stdout] 255 | let de_b: Box = serde_json::from_str(&ser_b).unwrap(); [INFO] [stdout] | ^^^^^^ help: use `dyn`: `dyn Stored` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> examples/trait_objects.rs:256:19 [INFO] [stdout] | [INFO] [stdout] 256 | let de_c: Box = serde_json::from_str(&ser_c).unwrap(); [INFO] [stdout] | ^^^^^^ help: use `dyn`: `dyn Stored` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 7 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary trailing semicolon [INFO] [stdout] --> src/de/internal.rs:161:53 [INFO] [stdout] | [INFO] [stdout] 161 | use serde::de::value::SeqAccessDeserializer;; [INFO] [stdout] | ^ help: remove this semicolon [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(redundant_semicolons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/de/seed.rs:385:31 [INFO] [stdout] | [INFO] [stdout] 385 | : for<'de> FnMut(&mut erased_serde::Deserializer<'de>) -> Result [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn erased_serde::Deserializer<'de>` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/de/seed.rs:390:32 [INFO] [stdout] | [INFO] [stdout] 390 | F: for<'de> FnMut(&mut erased_serde::Deserializer<'de>) -> Result, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn erased_serde::Deserializer<'de>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/de/seed.rs:399:36 [INFO] [stdout] | [INFO] [stdout] 399 | pub struct BoxFnMutSeed(Box> + Sync>); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnMutSeed> + Sync` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/de/seed.rs:439:28 [INFO] [stdout] | [INFO] [stdout] 439 | : for<'de> Fn(&mut erased_serde::Deserializer<'de>) -> Result [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn erased_serde::Deserializer<'de>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/de/seed.rs:444:29 [INFO] [stdout] | [INFO] [stdout] 444 | F: for<'de> Fn(&mut erased_serde::Deserializer<'de>) -> Result, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn erased_serde::Deserializer<'de>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/de/seed.rs:453:33 [INFO] [stdout] | [INFO] [stdout] 453 | pub struct BoxFnSeed(Box> + Sync>); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn FnSeed> + Sync` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0034]: multiple applicable items in scope [INFO] [stdout] --> examples/trait_objects.rs:136:65 [INFO] [stdout] | [INFO] [stdout] 136 | serde_tagged::ser::external::serialize(serializer, self.type_id(), &SerializeErased(self)) [INFO] [stdout] | ^^^^^^^ multiple `type_id` found [INFO] [stdout] | [INFO] [stdout] note: candidate #1 is defined in the trait `TypeId` [INFO] [stdout] --> examples/trait_objects.rs:65:5 [INFO] [stdout] | [INFO] [stdout] 65 | fn type_id(&self) -> &'static str; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] note: candidate #2 is defined in the trait `Any` [INFO] [stdout] help: disambiguate the associated function for candidate #1 [INFO] [stdout] | [INFO] [stdout] 136 | serde_tagged::ser::external::serialize(serializer, TypeId::type_id(&self), &SerializeErased(self)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] help: disambiguate the associated function for candidate #2 [INFO] [stdout] | [INFO] [stdout] 136 | serde_tagged::ser::external::serialize(serializer, Any::type_id(&self), &SerializeErased(self)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to previous error; 13 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0034`. [INFO] [stdout] [INFO] [stderr] error: could not compile `serde_tagged` [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] warning: 7 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: build failed [INFO] running `Command { std: "docker" "inspect" "d0ca6c50837098f853ecfe0894e455d151a54b556355fdeb3e943db050ebbfa7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d0ca6c50837098f853ecfe0894e455d151a54b556355fdeb3e943db050ebbfa7", kill_on_drop: false }` [INFO] [stdout] d0ca6c50837098f853ecfe0894e455d151a54b556355fdeb3e943db050ebbfa7