[INFO] cloning repository https://github.com/andy128k/PassStorage [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/andy128k/PassStorage" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fandy128k%2FPassStorage", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fandy128k%2FPassStorage'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 2b743e9b010eb0215d0a62a6cbb0fe5b5833b374 [INFO] checking andy128k/PassStorage against try#ddfd70ee3c3748e597b32f416b0d15a4f6e37685 for pr-87050 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fandy128k%2FPassStorage" "/workspace/builds/worker-1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/andy128k/PassStorage on toolchain ddfd70ee3c3748e597b32f416b0d15a4f6e37685 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+ddfd70ee3c3748e597b32f416b0d15a4f6e37685" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/andy128k/PassStorage [INFO] finished tweaking git repo https://github.com/andy128k/PassStorage [INFO] tweaked toml for git repo https://github.com/andy128k/PassStorage written to /workspace/builds/worker-1/source/Cargo.toml [INFO] crate git repo https://github.com/andy128k/PassStorage already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+ddfd70ee3c3748e597b32f416b0d15a4f6e37685" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded pango-sys v0.14.0 [INFO] [stderr] Downloaded gtk-sys v0.14.0 [INFO] [stderr] Downloaded gtk3-macros v0.14.0 [INFO] [stderr] Downloaded deflate v0.9.1 [INFO] [stderr] Downloaded embed-resource v1.6.3 [INFO] [stderr] Downloaded winreg v0.9.0 [INFO] [stderr] Downloaded atk-sys v0.14.0 [INFO] [stderr] Downloaded gdk-pixbuf-sys v0.14.0 [INFO] [stderr] Downloaded gdk-sys v0.14.0 [INFO] [stderr] Downloaded pango v0.14.0 [INFO] [stderr] Downloaded cairo-rs v0.14.0 [INFO] [stderr] Downloaded gtk v0.14.0 [INFO] [stderr] Downloaded atk v0.14.0 [INFO] [stderr] Downloaded field-offset v0.3.4 [INFO] [stderr] Downloaded gdk v0.14.0 [INFO] [stderr] Downloaded gdk-pixbuf v0.14.0 [INFO] [stderr] Downloaded cairo-sys-rs v0.14.0 [INFO] [stderr] Downloaded guard v0.5.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/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:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+ddfd70ee3c3748e597b32f416b0d15a4f6e37685" "metadata" "--no-deps" "--format-version=1", 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] b90d2e08b3f1aa051565d92b85ef3f7b4db0309c719595d785c6c95ea47c6edc [INFO] running `Command { std: "docker" "start" "-a" "b90d2e08b3f1aa051565d92b85ef3f7b4db0309c719595d785c6c95ea47c6edc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "b90d2e08b3f1aa051565d92b85ef3f7b4db0309c719595d785c6c95ea47c6edc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b90d2e08b3f1aa051565d92b85ef3f7b4db0309c719595d785c6c95ea47c6edc", kill_on_drop: false }` [INFO] [stdout] b90d2e08b3f1aa051565d92b85ef3f7b4db0309c719595d785c6c95ea47c6edc [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/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" "ghcr.io/rust-lang/crates-build-env/linux@sha256:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+ddfd70ee3c3748e597b32f416b0d15a4f6e37685" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 4a28d3e938a8d0ae8cf63b6bff243a4cf7af9dac7a4759c0f013a1a96e333b06 [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" "4a28d3e938a8d0ae8cf63b6bff243a4cf7af9dac7a4759c0f013a1a96e333b06", kill_on_drop: false }` [INFO] [stderr] Compiling unicode-xid v0.2.2 [INFO] [stderr] Compiling syn v1.0.73 [INFO] [stderr] Compiling serde_derive v1.0.126 [INFO] [stderr] Compiling serde v1.0.126 [INFO] [stderr] Compiling unicode-segmentation v1.7.1 [INFO] [stderr] Compiling either v1.6.1 [INFO] [stderr] Compiling pkg-config v0.3.19 [INFO] [stderr] Compiling smallvec v1.6.1 [INFO] [stderr] Compiling strum v0.20.0 [INFO] [stderr] Compiling version-compare v0.0.11 [INFO] [stderr] Compiling libc v0.2.97 [INFO] [stderr] Compiling version_check v0.9.3 [INFO] [stderr] Compiling autocfg v1.0.1 [INFO] [stderr] Compiling proc-macro-hack v0.5.19 [INFO] [stderr] Compiling memchr v2.4.0 [INFO] [stderr] Compiling proc-macro-nested v0.1.7 [INFO] [stderr] Compiling futures-task v0.3.15 [INFO] [stderr] Compiling futures-channel v0.3.15 [INFO] [stderr] Checking pin-utils v0.1.0 [INFO] [stderr] Checking futures-io v0.3.15 [INFO] [stderr] Checking slab v0.4.3 [INFO] [stderr] Compiling bitflags v1.2.1 [INFO] [stderr] Checking once_cell v1.8.0 [INFO] [stderr] Compiling ucd-trie v0.1.3 [INFO] [stderr] Compiling typenum v1.13.0 [INFO] [stderr] Compiling gio v0.14.0 [INFO] [stderr] Checking cfg-if v1.0.0 [INFO] [stderr] Checking ppv-lite86 v0.2.10 [INFO] [stderr] Checking opaque-debug v0.3.0 [INFO] [stderr] Compiling password-storage v0.19.0 (/opt/rustwide/workdir) [INFO] [stderr] Checking block-padding v0.2.1 [INFO] [stderr] Checking lazy_static v1.4.0 [INFO] [stderr] Checking guard v0.5.1 [INFO] [stderr] Compiling itertools v0.10.1 [INFO] [stderr] Compiling cfg-expr v0.7.4 [INFO] [stderr] Checking deflate v0.9.1 [INFO] [stderr] Compiling heck v0.3.3 [INFO] [stderr] Compiling proc-macro2 v1.0.27 [INFO] [stderr] Compiling anyhow v1.0.41 [INFO] [stderr] Compiling pest v2.1.3 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Compiling generic-array v0.14.4 [INFO] [stderr] Compiling futures-macro v0.3.15 [INFO] [stderr] Compiling futures-util v0.3.15 [INFO] [stderr] Compiling memoffset v0.6.4 [INFO] [stderr] Compiling gtk v0.14.0 [INFO] [stderr] Compiling quote v1.0.9 [INFO] [stderr] Checking quick-xml v0.22.0 [INFO] [stderr] Checking getrandom v0.2.3 [INFO] [stderr] Checking rand_core v0.6.3 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Compiling semver-parser v0.10.2 [INFO] [stderr] Checking rand v0.8.4 [INFO] [stderr] Checking cipher v0.3.0 [INFO] [stderr] Compiling semver v0.11.0 [INFO] [stderr] Checking block-modes v0.8.1 [INFO] [stderr] Checking aes v0.7.4 [INFO] [stderr] Compiling rustc_version v0.3.3 [INFO] [stderr] Compiling field-offset v0.3.4 [INFO] [stderr] Compiling thiserror-impl v1.0.25 [INFO] [stderr] Compiling strum_macros v0.20.1 [INFO] [stderr] Compiling thiserror v1.0.25 [INFO] [stderr] Checking futures-executor v0.3.15 [INFO] [stderr] Checking futures v0.3.15 [INFO] [stderr] Checking toml v0.5.8 [INFO] [stderr] Compiling system-deps v3.1.1 [INFO] [stderr] Compiling proc-macro-crate v1.0.0 [INFO] [stderr] Compiling glib-macros v0.14.0 [INFO] [stderr] Compiling gtk3-macros v0.14.0 [INFO] [stderr] Compiling glib-sys v0.14.0 [INFO] [stderr] Compiling gobject-sys v0.14.0 [INFO] [stderr] Compiling gio-sys v0.14.0 [INFO] [stderr] Compiling cairo-sys-rs v0.14.0 [INFO] [stderr] Compiling gdk-pixbuf-sys v0.14.0 [INFO] [stderr] Compiling pango-sys v0.14.0 [INFO] [stderr] Compiling atk-sys v0.14.0 [INFO] [stderr] Compiling gdk-sys v0.14.0 [INFO] [stderr] Compiling gtk-sys v0.14.0 [INFO] [stderr] Checking glib v0.14.0 [INFO] [stderr] Checking cairo-rs v0.14.0 [INFO] [stderr] Checking pango v0.14.0 [INFO] [stderr] Checking atk v0.14.0 [INFO] [stderr] Checking gdk-pixbuf v0.14.0 [INFO] [stderr] Checking gdk v0.14.0 [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/application.rs:22:1 [INFO] [stdout] | [INFO] [stdout] 22 | #[glib::object_subclass] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the attribute macro `glib::object_subclass` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/application.rs:22:1 [INFO] [stdout] | [INFO] [stdout] 22 | #[glib::object_subclass] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the attribute macro `glib::object_subclass` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/application.rs:40:30 [INFO] [stdout] | [INFO] [stdout] 40 | app.connect_activate(clone!(@weak app => move |_app| { [INFO] [stdout] | ______________________________^ [INFO] [stdout] 41 | | app.activate_main_window(); [INFO] [stdout] 42 | | })); [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/application.rs:40:30 [INFO] [stdout] | [INFO] [stdout] 40 | app.connect_activate(clone!(@weak app => move |_app| { [INFO] [stdout] | ______________________________^ [INFO] [stdout] 41 | | app.activate_main_window(); [INFO] [stdout] 42 | | })); [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/application.rs:43:30 [INFO] [stdout] | [INFO] [stdout] 43 | app.connect_shutdown(clone!(@weak app => move |_app| { [INFO] [stdout] | ______________________________^ [INFO] [stdout] 44 | | let private = PSApplicationInner::from_instance(&app); [INFO] [stdout] 45 | | [INFO] [stdout] 46 | | private.config.borrow().save().unwrap(); [INFO] [stdout] 47 | | private.cache.save().unwrap(); [INFO] [stdout] 48 | | })); [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/application.rs:43:30 [INFO] [stdout] | [INFO] [stdout] 43 | app.connect_shutdown(clone!(@weak app => move |_app| { [INFO] [stdout] | ______________________________^ [INFO] [stdout] 44 | | let private = PSApplicationInner::from_instance(&app); [INFO] [stdout] 45 | | [INFO] [stdout] 46 | | private.config.borrow().save().unwrap(); [INFO] [stdout] 47 | | private.cache.save().unwrap(); [INFO] [stdout] 48 | | })); [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/application.rs:49:26 [INFO] [stdout] | [INFO] [stdout] 49 | app.connect_open(clone!(@weak app => move |_app, files, _hint| { [INFO] [stdout] | __________________________^ [INFO] [stdout] 50 | | if let Some(path) = files[0].path() { [INFO] [stdout] 51 | | glib::MainContext::default().spawn_local(async move { [INFO] [stdout] 52 | | let win = app.activate_main_window(); [INFO] [stdout] ... | [INFO] [stdout] 55 | | } [INFO] [stdout] 56 | | })); [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/application.rs:49:26 [INFO] [stdout] | [INFO] [stdout] 49 | app.connect_open(clone!(@weak app => move |_app, files, _hint| { [INFO] [stdout] | __________________________^ [INFO] [stdout] 50 | | if let Some(path) = files[0].path() { [INFO] [stdout] 51 | | glib::MainContext::default().spawn_local(async move { [INFO] [stdout] 52 | | let win = app.activate_main_window(); [INFO] [stdout] ... | [INFO] [stdout] 55 | | } [INFO] [stdout] 56 | | })); [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/application.rs:60:37 [INFO] [stdout] | [INFO] [stdout] 60 | action.connect_activate(clone!(@weak app => move |_, _| app.action_quit())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/application.rs:60:37 [INFO] [stdout] | [INFO] [stdout] 60 | action.connect_activate(clone!(@weak app => move |_, _| app.action_quit())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/application.rs:65:37 [INFO] [stdout] | [INFO] [stdout] 65 | action.connect_activate(clone!(@weak app => move |_, _| app.action_about())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/application.rs:65:37 [INFO] [stdout] | [INFO] [stdout] 65 | action.connect_activate(clone!(@weak app => move |_, _| app.action_about())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/application.rs:70:37 [INFO] [stdout] | [INFO] [stdout] 70 | action.connect_activate(clone!(@weak app => move |_, _| { [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 71 | | glib::MainContext::default().spawn_local(async move { app.action_preferences().await; }); [INFO] [stdout] 72 | | })); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/application.rs:70:37 [INFO] [stdout] | [INFO] [stdout] 70 | action.connect_activate(clone!(@weak app => move |_, _| { [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 71 | | glib::MainContext::default().spawn_local(async move { app.action_preferences().await; }); [INFO] [stdout] 72 | | })); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/application.rs:77:37 [INFO] [stdout] | [INFO] [stdout] 77 | action.connect_activate(clone!(@weak app => move |_, _| { [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 78 | | glib::MainContext::default().spawn_local(async move { app.action_new().await; }); [INFO] [stdout] 79 | | })); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/application.rs:84:37 [INFO] [stdout] | [INFO] [stdout] 84 | action.connect_activate(clone!(@weak app => move |_, _| { [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 85 | | glib::MainContext::default().spawn_local(async move { app.action_open().await; }); [INFO] [stdout] 86 | | })); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/application.rs:77:37 [INFO] [stdout] | [INFO] [stdout] 77 | action.connect_activate(clone!(@weak app => move |_, _| { [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 78 | | glib::MainContext::default().spawn_local(async move { app.action_new().await; }); [INFO] [stdout] 79 | | })); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/application.rs:84:37 [INFO] [stdout] | [INFO] [stdout] 84 | action.connect_activate(clone!(@weak app => move |_, _| { [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 85 | | glib::MainContext::default().spawn_local(async move { app.action_open().await; }); [INFO] [stdout] 86 | | })); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/main_window.rs:78:1 [INFO] [stdout] | [INFO] [stdout] 78 | #[glib::object_subclass] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the attribute macro `glib::object_subclass` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/main_window.rs:162:13 [INFO] [stdout] | [INFO] [stdout] 162 | / clone!(@weak win => @default-return Inhibit(false), move |_win, _event| { [INFO] [stdout] 163 | | glib::MainContext::default().spawn_local(async move { [INFO] [stdout] 164 | | win.on_close().await; [INFO] [stdout] 165 | | }); [INFO] [stdout] 166 | | gtk::Inhibit(true) [INFO] [stdout] 167 | | }), [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/main_window.rs:282:31 [INFO] [stdout] | [INFO] [stdout] 282 | .connect_activate(clone!(@weak win => move |filename| { [INFO] [stdout] | _______________________________^ [INFO] [stdout] 283 | | let filename = filename.to_owned(); [INFO] [stdout] 284 | | glib::MainContext::default().spawn_local(async move { [INFO] [stdout] 285 | | win.do_open_file(&filename).await; [INFO] [stdout] 286 | | }); [INFO] [stdout] 287 | | })); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/main_window.rs:78:1 [INFO] [stdout] | [INFO] [stdout] 78 | #[glib::object_subclass] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the attribute macro `glib::object_subclass` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/main_window.rs:162:13 [INFO] [stdout] | [INFO] [stdout] 162 | / clone!(@weak win => @default-return Inhibit(false), move |_win, _event| { [INFO] [stdout] 163 | | glib::MainContext::default().spawn_local(async move { [INFO] [stdout] 164 | | win.on_close().await; [INFO] [stdout] 165 | | }); [INFO] [stdout] 166 | | gtk::Inhibit(true) [INFO] [stdout] 167 | | }), [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/main_window.rs:291:30 [INFO] [stdout] | [INFO] [stdout] 291 | .connect_changed(clone!(@weak win => move |search_entry| { [INFO] [stdout] | ______________________________^ [INFO] [stdout] 292 | | if let Some(search_text) = search_entry.text().non_empty() { [INFO] [stdout] 293 | | let look_at_secrets = win.private().config.get().unwrap().borrow().search_in_secrets; [INFO] [stdout] 294 | | win.set_status("View is filtered."); [INFO] [stdout] ... | [INFO] [stdout] 311 | | win.listview_cursor_changed(None); [INFO] [stdout] 312 | | })); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/main_window.rs:316:37 [INFO] [stdout] | [INFO] [stdout] 316 | .connect_cursor_changed(clone!(@weak win => move |selection| { [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 317 | | let mut record = None; [INFO] [stdout] 318 | | if let Some((iter, _path)) = selection { [INFO] [stdout] 319 | | record = win.private().data.borrow().get(&iter); [INFO] [stdout] 320 | | } [INFO] [stdout] 321 | | win.listview_cursor_changed(record); [INFO] [stdout] 322 | | })); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/main_window.rs:282:31 [INFO] [stdout] | [INFO] [stdout] 282 | .connect_activate(clone!(@weak win => move |filename| { [INFO] [stdout] | _______________________________^ [INFO] [stdout] 283 | | let filename = filename.to_owned(); [INFO] [stdout] 284 | | glib::MainContext::default().spawn_local(async move { [INFO] [stdout] 285 | | win.do_open_file(&filename).await; [INFO] [stdout] 286 | | }); [INFO] [stdout] 287 | | })); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/main_window.rs:326:27 [INFO] [stdout] | [INFO] [stdout] 326 | .connect_drop(clone!(@weak win => @default-return false, move |iter| { [INFO] [stdout] | ___________________________^ [INFO] [stdout] 327 | | let record_opt = win.private().data.borrow().get(&iter); [INFO] [stdout] 328 | | if let Some(record) = record_opt { [INFO] [stdout] 329 | | record.record_type.is_group [INFO] [stdout] ... | [INFO] [stdout] 332 | | } [INFO] [stdout] 333 | | })); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/main_window.rs:291:30 [INFO] [stdout] | [INFO] [stdout] 291 | .connect_changed(clone!(@weak win => move |search_entry| { [INFO] [stdout] | ______________________________^ [INFO] [stdout] 292 | | if let Some(search_text) = search_entry.text().non_empty() { [INFO] [stdout] 293 | | let look_at_secrets = win.private().config.get().unwrap().borrow().search_in_secrets; [INFO] [stdout] 294 | | win.set_status("View is filtered."); [INFO] [stdout] ... | [INFO] [stdout] 311 | | win.listview_cursor_changed(None); [INFO] [stdout] 312 | | })); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/main_window.rs:337:36 [INFO] [stdout] | [INFO] [stdout] 337 | .connect_row_activated(clone!(@weak win => move |selection| { [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 338 | | glib::MainContext::default().spawn_local(async move { [INFO] [stdout] 339 | | win.on_row_activated(selection).await; [INFO] [stdout] 340 | | }); [INFO] [stdout] 341 | | })); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/main_window.rs:316:37 [INFO] [stdout] | [INFO] [stdout] 316 | .connect_cursor_changed(clone!(@weak win => move |selection| { [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 317 | | let mut record = None; [INFO] [stdout] 318 | | if let Some((iter, _path)) = selection { [INFO] [stdout] 319 | | record = win.private().data.borrow().get(&iter); [INFO] [stdout] 320 | | } [INFO] [stdout] 321 | | win.listview_cursor_changed(record); [INFO] [stdout] 322 | | })); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/main_window.rs:326:27 [INFO] [stdout] | [INFO] [stdout] 326 | .connect_drop(clone!(@weak win => @default-return false, move |iter| { [INFO] [stdout] | ___________________________^ [INFO] [stdout] 327 | | let record_opt = win.private().data.borrow().get(&iter); [INFO] [stdout] 328 | | if let Some(record) = record_opt { [INFO] [stdout] 329 | | record.record_type.is_group [INFO] [stdout] ... | [INFO] [stdout] 332 | | } [INFO] [stdout] 333 | | })); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/main_window.rs:337:36 [INFO] [stdout] | [INFO] [stdout] 337 | .connect_row_activated(clone!(@weak win => move |selection| { [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 338 | | glib::MainContext::default().spawn_local(async move { [INFO] [stdout] 339 | | win.on_row_activated(selection).await; [INFO] [stdout] 340 | | }); [INFO] [stdout] 341 | | })); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/model/record.rs:48:39 [INFO] [stdout] | [INFO] [stdout] 48 | #[derive(Debug, Clone, PartialEq, Eq, glib::GBoxed)] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the derive macro `glib::GBoxed` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/model/record.rs:48:39 [INFO] [stdout] | [INFO] [stdout] 48 | #[derive(Debug, Clone, PartialEq, Eq, glib::GBoxed)] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the derive macro `glib::GBoxed` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/ui/dashboard.rs:97:39 [INFO] [stdout] | [INFO] [stdout] 97 | remove_button.connect_clicked(clone!(@weak row => move |_| { [INFO] [stdout] | _______________________________________^ [INFO] [stdout] 98 | | if let Some(filename) = get_filename(&row) { [INFO] [stdout] 99 | | on_remove(&row, filename); [INFO] [stdout] 100 | | } [INFO] [stdout] 101 | | })); [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/ui/dashboard.rs:145:17 [INFO] [stdout] | [INFO] [stdout] 145 | / clone!(@weak self.listbox as listbox, @strong cache => move |row, filename| { [INFO] [stdout] 146 | | cache.remove_file(filename); [INFO] [stdout] 147 | | listbox.remove(row); [INFO] [stdout] 148 | | }), [INFO] [stdout] | |__________________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/ui/dialogs/read_file.rs:57:27 [INFO] [stdout] | [INFO] [stdout] 57 | entry.connect_changed(clone!(@weak dlg => move |e| { [INFO] [stdout] | ___________________________^ [INFO] [stdout] 58 | | dlg.set_response_sensitive( [INFO] [stdout] 59 | | gtk::ResponseType::Accept, [INFO] [stdout] 60 | | e.chars(0, -1).map_or(0, |t| t.len()) > 0, [INFO] [stdout] 61 | | ); [INFO] [stdout] 62 | | })); [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/ui/dashboard.rs:97:39 [INFO] [stdout] | [INFO] [stdout] 97 | remove_button.connect_clicked(clone!(@weak row => move |_| { [INFO] [stdout] | _______________________________________^ [INFO] [stdout] 98 | | if let Some(filename) = get_filename(&row) { [INFO] [stdout] 99 | | on_remove(&row, filename); [INFO] [stdout] 100 | | } [INFO] [stdout] 101 | | })); [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/ui/edit_object.rs:39:37 [INFO] [stdout] | [INFO] [stdout] 39 | widget.connect_changed(Box::new(clone!(@weak dlg => move |value| { [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 40 | | dlg.set_response_sensitive(gtk::ResponseType::Ok, value.is_some()); [INFO] [stdout] 41 | | }))); [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/ui/dashboard.rs:145:17 [INFO] [stdout] | [INFO] [stdout] 145 | / clone!(@weak self.listbox as listbox, @strong cache => move |row, filename| { [INFO] [stdout] 146 | | cache.remove_file(filename); [INFO] [stdout] 147 | | listbox.remove(row); [INFO] [stdout] 148 | | }), [INFO] [stdout] | |__________________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/ui/tree_view.rs:69:40 [INFO] [stdout] | [INFO] [stdout] 69 | check_renderer.connect_toggled(clone!(@weak view => move |_renderer, path| { [INFO] [stdout] | ________________________________________^ [INFO] [stdout] 70 | | selection_toggled(&view, &path) [INFO] [stdout] 71 | | })); [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/ui/dialogs/read_file.rs:57:27 [INFO] [stdout] | [INFO] [stdout] 57 | entry.connect_changed(clone!(@weak dlg => move |e| { [INFO] [stdout] | ___________________________^ [INFO] [stdout] 58 | | dlg.set_response_sensitive( [INFO] [stdout] 59 | | gtk::ResponseType::Accept, [INFO] [stdout] 60 | | e.chars(0, -1).map_or(0, |t| t.len()) > 0, [INFO] [stdout] 61 | | ); [INFO] [stdout] 62 | | })); [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/ui/tree_view.rs:148:13 [INFO] [stdout] | [INFO] [stdout] 148 | / clone!(@weak popup => @default-return Inhibit(false), move |view, event| { [INFO] [stdout] 149 | | let button = event.button(); [INFO] [stdout] 150 | | if button == GDK_BUTTON_SECONDARY { [INFO] [stdout] 151 | | view.grab_focus(); [INFO] [stdout] ... | [INFO] [stdout] 163 | | } [INFO] [stdout] 164 | | }), [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/ui/edit_object.rs:39:37 [INFO] [stdout] | [INFO] [stdout] 39 | widget.connect_changed(Box::new(clone!(@weak dlg => move |value| { [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 40 | | dlg.set_response_sensitive(gtk::ResponseType::Ok, value.is_some()); [INFO] [stdout] 41 | | }))); [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/ui/tree_view.rs:168:33 [INFO] [stdout] | [INFO] [stdout] 168 | .connect_popup_menu(clone!(@weak popup => @default-return false, move |view| { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 169 | | view.grab_focus(); [INFO] [stdout] 170 | | popup.popup_at_widget(view, gdk::Gravity::Center, gdk::Gravity::Center, None); [INFO] [stdout] 171 | | true [INFO] [stdout] 172 | | })); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/ui/tree_view.rs:69:40 [INFO] [stdout] | [INFO] [stdout] 69 | check_renderer.connect_toggled(clone!(@weak view => move |_renderer, path| { [INFO] [stdout] | ________________________________________^ [INFO] [stdout] 70 | | selection_toggled(&view, &path) [INFO] [stdout] 71 | | })); [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/ui/tree_view.rs:148:13 [INFO] [stdout] | [INFO] [stdout] 148 | / clone!(@weak popup => @default-return Inhibit(false), move |view, event| { [INFO] [stdout] 149 | | let button = event.button(); [INFO] [stdout] 150 | | if button == GDK_BUTTON_SECONDARY { [INFO] [stdout] 151 | | view.grab_focus(); [INFO] [stdout] ... | [INFO] [stdout] 163 | | } [INFO] [stdout] 164 | | }), [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: Can't find glib crate. Please ensure you have a glib in scope [INFO] [stdout] --> src/ui/tree_view.rs:168:33 [INFO] [stdout] | [INFO] [stdout] 168 | .connect_popup_menu(clone!(@weak popup => @default-return false, move |view| { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 169 | | view.grab_focus(); [INFO] [stdout] 170 | | popup.popup_at_widget(view, gdk::Gravity::Center, gdk::Gravity::Center, None); [INFO] [stdout] 171 | | true [INFO] [stdout] 172 | | })); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `clone` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 24 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 24 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2m 46s [INFO] running `Command { std: "docker" "inspect" "4a28d3e938a8d0ae8cf63b6bff243a4cf7af9dac7a4759c0f013a1a96e333b06", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4a28d3e938a8d0ae8cf63b6bff243a4cf7af9dac7a4759c0f013a1a96e333b06", kill_on_drop: false }` [INFO] [stdout] 4a28d3e938a8d0ae8cf63b6bff243a4cf7af9dac7a4759c0f013a1a96e333b06