[INFO] fetching crate sudoku-variants 0.2.1... [INFO] testing sudoku-variants-0.2.1 against 1.59.0 for beta-1.60-1 [INFO] extracting crate sudoku-variants 0.2.1 into /workspace/builds/worker-88/source [INFO] validating manifest of crates.io crate sudoku-variants 0.2.1 on toolchain 1.59.0 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.59.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking crates.io crate sudoku-variants 0.2.1 [INFO] finished tweaking crates.io crate sudoku-variants 0.2.1 [INFO] tweaked toml for crates.io crate sudoku-variants 0.2.1 written to /workspace/builds/worker-88/source/Cargo.toml [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.59.0" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update", kill_on_drop: false }` [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.59.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-88/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-88/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:0cd99ca24d8e8c98e67c542213511d985b8778b5bdcbb160e038429496686047" "/opt/rustwide/cargo-home/bin/cargo" "+1.59.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 277a34656bececea7cbe629e3431c4d0217643abac37757a01e576b71187f3a7 [INFO] running `Command { std: "docker" "start" "-a" "277a34656bececea7cbe629e3431c4d0217643abac37757a01e576b71187f3a7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "277a34656bececea7cbe629e3431c4d0217643abac37757a01e576b71187f3a7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "277a34656bececea7cbe629e3431c4d0217643abac37757a01e576b71187f3a7", kill_on_drop: false }` [INFO] [stdout] 277a34656bececea7cbe629e3431c4d0217643abac37757a01e576b71187f3a7 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-88/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-88/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=warn" "-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:0cd99ca24d8e8c98e67c542213511d985b8778b5bdcbb160e038429496686047" "/opt/rustwide/cargo-home/bin/cargo" "+1.59.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 8e6a7710605be64a0dcd7f02f3005439e7bf35c85896d3711078d8e193906a7b [INFO] running `Command { std: "docker" "start" "-a" "8e6a7710605be64a0dcd7f02f3005439e7bf35c85896d3711078d8e193906a7b", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.119 [INFO] [stderr] Compiling cfg-if v1.0.0 [INFO] [stderr] Compiling ppv-lite86 v0.2.16 [INFO] [stderr] Compiling getrandom v0.2.5 [INFO] [stderr] Compiling rand_core v0.6.3 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling sudoku-variants v0.2.1 (/opt/rustwide/workdir) [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 4.91s [INFO] running `Command { std: "docker" "inspect" "8e6a7710605be64a0dcd7f02f3005439e7bf35c85896d3711078d8e193906a7b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8e6a7710605be64a0dcd7f02f3005439e7bf35c85896d3711078d8e193906a7b", kill_on_drop: false }` [INFO] [stdout] 8e6a7710605be64a0dcd7f02f3005439e7bf35c85896d3711078d8e193906a7b [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-88/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-88/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=warn" "-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:0cd99ca24d8e8c98e67c542213511d985b8778b5bdcbb160e038429496686047" "/opt/rustwide/cargo-home/bin/cargo" "+1.59.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 80687cf4c62baf965d5853f703e08526cfb095ff66dca727d52a5c3f4183d7f6 [INFO] running `Command { std: "docker" "start" "-a" "80687cf4c62baf965d5853f703e08526cfb095ff66dca727d52a5c3f4183d7f6", kill_on_drop: false }` [INFO] [stderr] Compiling autocfg v1.1.0 [INFO] [stderr] Compiling cfg-if v1.0.0 [INFO] [stderr] Compiling lazy_static v1.4.0 [INFO] [stderr] Compiling serde v1.0.136 [INFO] [stderr] Compiling crossbeam-utils v0.8.7 [INFO] [stderr] Compiling semver v1.0.6 [INFO] [stderr] Compiling proc-macro2 v1.0.36 [INFO] [stderr] Compiling crossbeam-epoch v0.9.7 [INFO] [stderr] Compiling memchr v2.4.1 [INFO] [stderr] Compiling unicode-xid v0.2.2 [INFO] [stderr] Compiling rayon-core v1.9.1 [INFO] [stderr] Compiling scopeguard v1.1.0 [INFO] [stderr] Compiling syn v1.0.86 [INFO] [stderr] Compiling either v1.6.1 [INFO] [stderr] Compiling serde_json v1.0.79 [INFO] [stderr] Compiling ryu v1.0.9 [INFO] [stderr] Compiling ppv-lite86 v0.2.16 [INFO] [stderr] Compiling plotters-backend v0.3.2 [INFO] [stderr] Compiling itoa v1.0.1 [INFO] [stderr] Compiling serde_derive v1.0.136 [INFO] [stderr] Compiling regex-automata v0.1.10 [INFO] [stderr] Compiling unicode-width v0.1.9 [INFO] [stderr] Compiling regex-syntax v0.6.25 [INFO] [stderr] Compiling bitflags v1.3.2 [INFO] [stderr] Compiling same-file v1.0.6 [INFO] [stderr] Compiling itoa v0.4.8 [INFO] [stderr] Compiling half v1.8.2 [INFO] [stderr] Compiling oorandom v11.1.3 [INFO] [stderr] Compiling libc v0.2.119 [INFO] [stderr] Compiling itertools v0.10.3 [INFO] [stderr] Compiling textwrap v0.11.0 [INFO] [stderr] Compiling walkdir v2.3.2 [INFO] [stderr] Compiling plotters-svg v0.3.1 [INFO] [stderr] Compiling clap v2.34.0 [INFO] [stderr] Compiling memoffset v0.6.5 [INFO] [stderr] Compiling num-traits v0.2.14 [INFO] [stderr] Compiling rayon v1.5.1 [INFO] [stderr] Compiling crossbeam-channel v0.5.2 [INFO] [stderr] Compiling rustc_version v0.4.0 [INFO] [stderr] Compiling csv-core v0.1.10 [INFO] [stderr] Compiling getrandom v0.2.5 [INFO] [stderr] Compiling num_cpus v1.13.1 [INFO] [stderr] Compiling atty v0.2.14 [INFO] [stderr] Compiling quote v1.0.15 [INFO] [stderr] Compiling rand_core v0.6.3 [INFO] [stderr] Compiling cast v0.2.7 [INFO] [stderr] Compiling regex v1.5.4 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling crossbeam-deque v0.8.1 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling criterion-plot v0.4.4 [INFO] [stderr] Compiling plotters v0.3.1 [INFO] [stderr] Compiling sudoku-variants v0.2.1 (/opt/rustwide/workdir) [INFO] [stderr] Compiling bstr v0.2.17 [INFO] [stderr] Compiling serde_cbor v0.11.2 [INFO] [stderr] Compiling toml v0.5.8 [INFO] [stderr] Compiling csv v1.1.6 [INFO] [stderr] Compiling tinytemplate v1.2.1 [INFO] [stderr] Compiling criterion v0.3.5 [INFO] [stderr] Finished test [optimized + debuginfo] target(s) in 1m 27s [INFO] running `Command { std: "docker" "inspect" "80687cf4c62baf965d5853f703e08526cfb095ff66dca727d52a5c3f4183d7f6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "80687cf4c62baf965d5853f703e08526cfb095ff66dca727d52a5c3f4183d7f6", kill_on_drop: false }` [INFO] [stdout] 80687cf4c62baf965d5853f703e08526cfb095ff66dca727d52a5c3f4183d7f6 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-88/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-88/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=warn" "-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:0cd99ca24d8e8c98e67c542213511d985b8778b5bdcbb160e038429496686047" "/opt/rustwide/cargo-home/bin/cargo" "+1.59.0" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 6bfe5641fcec82a7a4dfe027595194f0adac37cd19c408ecad4b471733fc6a9a [INFO] running `Command { std: "docker" "start" "-a" "6bfe5641fcec82a7a4dfe027595194f0adac37cd19c408ecad4b471733fc6a9a", kill_on_drop: false }` [INFO] [stderr] Finished test [optimized + debuginfo] target(s) in 0.15s [INFO] [stdout] [INFO] [stderr] Running unittests (/opt/rustwide/target/debug/deps/sudoku_variants-b422a6d37f35c232) [INFO] [stdout] running 91 tests [INFO] [stdout] test constraint::tests::adjacent_consecutive_satisfied ... ok [INFO] [stdout] test constraint::tests::adjacent_consecutive_violated ... ok [INFO] [stdout] test constraint::tests::block_satisfied ... ok [INFO] [stdout] test constraint::tests::block_violated ... ok [INFO] [stdout] test constraint::tests::column_satisfied ... ok [INFO] [stdout] test constraint::tests::column_violated ... ok [INFO] [stdout] test constraint::tests::composite_satisfied ... ok [INFO] [stdout] test constraint::tests::composite_violated ... ok [INFO] [stdout] test constraint::tests::diagonally_adjacent_satisfied ... ok [INFO] [stdout] test constraint::tests::diagonally_adjacent_violated ... ok [INFO] [stdout] test constraint::tests::diagonals_satisfied ... ok [INFO] [stdout] test constraint::tests::diagonals_violated ... ok [INFO] [stdout] test constraint::tests::dynamic_satisfied ... ok [INFO] [stdout] test constraint::tests::dynamic_violated ... ok [INFO] [stdout] test constraint::tests::kings_move_satisfied ... ok [INFO] [stdout] test constraint::tests::kings_move_violated ... ok [INFO] [stdout] test constraint::tests::knights_move_satisfied ... ok [INFO] [stdout] test constraint::tests::knights_move_violated ... ok [INFO] [stdout] test constraint::tests::row_violated ... ok [INFO] [stdout] test constraint::tests::row_satisfied ... ok [INFO] [stdout] test generator::tests::generated_sudoku_full ... ok [INFO] [stdout] test fix_tests::only_cell_strategic_backtracking ... ok [INFO] [stdout] test generator::tests::reduced_sudoku_solveable_by_solver ... ok [INFO] [stdout] test generator::tests::generated_sudoku_valid ... ok [INFO] [stdout] test solver::strategy::impls::tests::bounded_cells_backtracking_detects_impossible_option ... ok [INFO] [stdout] test solver::strategy::impls::tests::bounded_cells_backtracking_respects_application_limit ... ok [INFO] [stdout] test solver::strategy::impls::tests::bounded_options_backtracking_deduces_impossible_option ... ok [INFO] [stdout] test solver::strategy::impls::tests::naked_single_strategy_finds_digit ... ok [INFO] [stdout] test generator::tests::shuffling_uniformly_distributed ... ok [INFO] [stdout] test solver::strategy::impls::tests::bounded_options_backtracking_respects_application_limit ... ok [INFO] [stdout] test solver::strategy::impls::tests::tuple_strategy_helps_naked_single_strategy ... ok [INFO] [stdout] test solver::strategy::impls::tests::bounded_options_backtracking_respects_option_limit ... ok [INFO] [stdout] test solver::strategy::impls::tests::only_cell_strategy_finds_digits ... ok [INFO] [stdout] test solver::strategy::impls::tests::tuple_strategy_does_not_consider_too_large_tuples ... ok [INFO] [stdout] test solver::strategy::solvers::tests::naked_single_strategy_detects_impossibility ... ok [INFO] [stdout] test solver::strategy::impls::tests::bounded_cells_backtracking_respects_cell_limit ... ok [INFO] [stdout] test solver::strategy::solvers::tests::naked_single_strategy_solves_uniquely ... ok [INFO] [stdout] test solver::strategy::solvers::tests::naked_single_strategy_unable_to_solve ... ok [INFO] [stdout] test solver::strategy::solvers::tests::complex_strategic_backtracking_is_sound_default ... ok [INFO] [stdout] test solver::strategy::solvers::tests::only_cell_strategy_solves_uniquely ... ok [INFO] [stdout] test solver::strategy::solvers::tests::complex_strategic_backtracking_is_sound_kings_move ... ok [INFO] [stdout] test solver::strategy::solvers::tests::complex_strategy_solves_difficult_sudoku ... ok [INFO] [stdout] test solver::strategy::solvers::tests::complex_strategic_backtracking_is_sound_knights_move ... ok [INFO] [stdout] test solver::strategy::tests::sudoku_info_intersect ... ok [INFO] [stdout] test solver::strategy::tests::sudoku_info_equality ... ok [INFO] [stdout] test solver::strategy::tests::sudoku_info_operation_err ... ok [INFO] [stdout] test solver::strategy::solvers::tests::strategic_backtracking_more_powerful ... ok [INFO] [stdout] test solver::strategy::tests::sudoku_info_union ... ok [INFO] [stdout] test solver::strategy::solvers::tests::complex_strategic_backtracking_is_sound_adjacent_consecutive ... ok [INFO] [stdout] test tests::count_clues_and_empty_and_full ... ok [INFO] [stdout] test tests::empty_is_subset ... ok [INFO] [stdout] test tests::equal_grids_subsets ... ok [INFO] [stdout] test tests::parse_invalid_dimensions ... ok [INFO] [stdout] test tests::parse_invalid_number ... ok [INFO] [stdout] test tests::parse_malformed_dimensions ... ok [INFO] [stdout] test tests::parse_number_format_error ... ok [INFO] [stdout] test solver::tests::backtracking_solves_adjacent_consecutive_sudoku ... ok [INFO] [stdout] test tests::parse_ok ... ok [INFO] [stdout] test tests::parse_wrong_number_of_cells ... ok [INFO] [stdout] test tests::parse_wrong_number_of_parts ... ok [INFO] [stdout] test tests::size ... ok [INFO] [stdout] test tests::solution_correct ... ok [INFO] [stdout] test tests::solution_not_full ... ok [INFO] [stdout] test tests::solution_not_superset ... ok [INFO] [stdout] test tests::solution_violates_constraint ... ok [INFO] [stdout] test tests::to_parseable_string ... ok [INFO] [stdout] test tests::true_subset ... ok [INFO] [stdout] test tests::unrelated_grids_not_subsets ... ok [INFO] [stdout] test util::tests::difference ... ok [INFO] [stdout] test util::tests::double_insert ... ok [INFO] [stdout] test util::tests::double_remove ... ok [INFO] [stdout] test util::tests::intersection ... ok [INFO] [stdout] test util::tests::iteration ... ok [INFO] [stdout] test util::tests::manipulation ... ok [INFO] [stdout] test util::tests::new_set_is_empty ... ok [INFO] [stdout] test util::tests::range_set_is_full ... ok [INFO] [stdout] test util::tests::set_creation_error ... ok [INFO] [stdout] test util::tests::set_insertion_error ... ok [INFO] [stdout] test util::tests::set_macro_contains_specified_elements ... ok [INFO] [stdout] test util::tests::set_operation_error ... ok [INFO] [stdout] test util::tests::set_macro_has_specified_range ... ok [INFO] [stdout] test util::tests::singleton_set_contains_only_given_element ... ok [INFO] [stdout] test util::tests::symmetric_difference ... ok [INFO] [stdout] test util::tests::union ... ok [INFO] [stdout] test solver::tests::backtracking_solves_knights_move_sudoku ... ok [INFO] [stdout] test solver::strategy::solvers::tests::complex_strategic_backtracking_is_sound_diagonals ... ok [INFO] [stdout] test solver::tests::backtracking_solves_kings_move_sudoku ... ok [INFO] [stdout] test solver::tests::backtracking_solves_classic_sudoku ... ok [INFO] [stdout] test generator::tests::reduced_sudoku_uniquely_solveable ... ok [INFO] [stdout] test generator::tests::reduced_sudoku_valid_and_not_full ... ok [INFO] [stdout] test solver::tests::backtracking_solves_diagonals_sudoku ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 91 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.07s [INFO] [stdout] [INFO] [stderr] Doc-tests sudoku-variants [INFO] [stderr] warning: lint `broken_intra_doc_links` has been renamed to `rustdoc::broken_intra_doc_links` [INFO] [stderr] --> /opt/rustwide/workdir/src/lib.rs:12:9 [INFO] [stderr] | [INFO] [stderr] 12 | #![warn(broken_intra_doc_links)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `rustdoc::broken_intra_doc_links` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(renamed_and_removed_lints)]` on by default [INFO] [stderr] [INFO] [stderr] warning: lint `missing_crate_level_docs` has been renamed to `rustdoc::missing_crate_level_docs` [INFO] [stderr] --> /opt/rustwide/workdir/src/lib.rs:14:9 [INFO] [stderr] | [INFO] [stderr] 14 | #![warn(missing_crate_level_docs)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `rustdoc::missing_crate_level_docs` [INFO] [stderr] [INFO] [stderr] warning: lint `invalid_codeblock_attributes` has been renamed to `rustdoc::invalid_codeblock_attributes` [INFO] [stderr] --> /opt/rustwide/workdir/src/lib.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | #![warn(invalid_codeblock_attributes)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `rustdoc::invalid_codeblock_attributes` [INFO] [stderr] [INFO] [stderr] warning: 3 warnings emitted [INFO] [stderr] [INFO] [stdout] [INFO] [stdout] running 12 tests [INFO] [stdout] test src/constraint.rs - constraint (line 67) ... ok [INFO] [stdout] test src/constraint.rs - constraint::CompositeConstraint (line 777) ... ok [INFO] [stdout] test src/solver/strategy/mod.rs - solver::strategy (line 68) ... ok [INFO] [stdout] test src/lib.rs - SudokuGrid::to_parseable_string (line 500) ... ok [INFO] [stdout] test src/constraint.rs - constraint (line 36) ... ok [INFO] [stdout] test src/util.rs - util::set (line 539) ... ok [INFO] [stdout] test src/lib.rs - (line 74) ... ok [INFO] [stdout] test src/lib.rs - (line 59) ... ok [INFO] [stdout] test src/lib.rs - (line 123) ... ok [INFO] [stdout] test src/lib.rs - (line 40) ... ok [INFO] [stdout] test src/solver/strategy/mod.rs - solver::strategy (line 26) ... ok [INFO] [stdout] test src/lib.rs - (line 180) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.03s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "6bfe5641fcec82a7a4dfe027595194f0adac37cd19c408ecad4b471733fc6a9a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6bfe5641fcec82a7a4dfe027595194f0adac37cd19c408ecad4b471733fc6a9a", kill_on_drop: false }` [INFO] [stdout] 6bfe5641fcec82a7a4dfe027595194f0adac37cd19c408ecad4b471733fc6a9a