[INFO] cloning repository rcoh/angle-grinder [INFO] running `"git" "clone" "--bare" "git://github.com/rcoh/angle-grinder.git" "work/cache/sources/gh/rcoh/angle-grinder"` [INFO] [stderr] Cloning into bare repository 'work/cache/sources/gh/rcoh/angle-grinder'... [INFO] running `"git" "clone" "work/cache/sources/gh/rcoh/angle-grinder" "work/ex/pr-62008/sources/master#848e0a23f34aaab3e4a974b031c86ef2a4e4fcc1/gh/rcoh/angle-grinder"` [INFO] [stderr] Cloning into 'work/ex/pr-62008/sources/master#848e0a23f34aaab3e4a974b031c86ef2a4e4fcc1/gh/rcoh/angle-grinder'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/rcoh/angle-grinder" "work/ex/pr-62008/sources/try#8f81d0bf6baf07b92f1246696722485c4ca0b049/gh/rcoh/angle-grinder"` [INFO] [stderr] Cloning into 'work/ex/pr-62008/sources/try#8f81d0bf6baf07b92f1246696722485c4ca0b049/gh/rcoh/angle-grinder'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 764599d7932ec195be6ad1247923aa52ec99eb05 [INFO] sha for GitHub repo rcoh/angle-grinder: 764599d7932ec195be6ad1247923aa52ec99eb05 [INFO] validating manifest of rcoh/angle-grinder on toolchain master#848e0a23f34aaab3e4a974b031c86ef2a4e4fcc1 [INFO] running `"/mnt/big/ec2-user/crater/work/local/cargo-home/bin/cargo" "+848e0a23f34aaab3e4a974b031c86ef2a4e4fcc1-alt" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of rcoh/angle-grinder on toolchain try#8f81d0bf6baf07b92f1246696722485c4ca0b049 [INFO] running `"/mnt/big/ec2-user/crater/work/local/cargo-home/bin/cargo" "+8f81d0bf6baf07b92f1246696722485c4ca0b049-alt" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing rcoh/angle-grinder [INFO] finished frobbing rcoh/angle-grinder [INFO] frobbed toml for rcoh/angle-grinder written to work/ex/pr-62008/sources/master#848e0a23f34aaab3e4a974b031c86ef2a4e4fcc1/gh/rcoh/angle-grinder/Cargo.toml [INFO] started frobbing rcoh/angle-grinder [INFO] finished frobbing rcoh/angle-grinder [INFO] frobbed toml for rcoh/angle-grinder written to work/ex/pr-62008/sources/try#8f81d0bf6baf07b92f1246696722485c4ca0b049/gh/rcoh/angle-grinder/Cargo.toml [INFO] crate rcoh/angle-grinder already has a lockfile, it will not be regenerated [INFO] running `"/mnt/big/ec2-user/crater/work/local/cargo-home/bin/cargo" "+848e0a23f34aaab3e4a974b031c86ef2a4e4fcc1-alt" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating git repository `https://github.com/brandur/logfmt` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded self_update v0.5.0 [INFO] [stderr] Downloaded quantiles v0.7.1 [INFO] [stderr] Downloaded im v13.0.0 [INFO] running `"/mnt/big/ec2-user/crater/work/local/cargo-home/bin/cargo" "+8f81d0bf6baf07b92f1246696722485c4ca0b049-alt" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] checking rcoh/angle-grinder against try#8f81d0bf6baf07b92f1246696722485c4ca0b049 for pr-62008 [INFO] running `"docker" "create" "-v" "/mnt/big/ec2-user/crater/work/local/target-dirs/pr-62008/worker-4/try#8f81d0bf6baf07b92f1246696722485c4ca0b049:/opt/crater/target:rw,Z" "-v" "/mnt/big/ec2-user/crater/work/ex/pr-62008/sources/try#8f81d0bf6baf07b92f1246696722485c4ca0b049/gh/rcoh/angle-grinder:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/ec2-user/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/ec2-user/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+8f81d0bf6baf07b92f1246696722485c4ca0b049-alt" "check" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 1525a7551d2a86ed5ecfcf03260c35b6dadb4f56f68d89401a860e390869d637 [INFO] running `"docker" "start" "-a" "1525a7551d2a86ed5ecfcf03260c35b6dadb4f56f68d89401a860e390869d637"` [INFO] [stderr] Checking logfmt v0.0.2 (https://github.com/brandur/logfmt?tag=v0.0.2#ee7b87de) [INFO] [stderr] Checking quantiles v0.7.1 [INFO] [stderr] Checking annotate-snippets v0.5.0 [INFO] [stderr] Checking itertools v0.8.0 [INFO] [stderr] Checking pulldown-cmark v0.2.0 [INFO] [stderr] Compiling im v13.0.0 [INFO] [stderr] Checking terminal_size v0.1.8 [INFO] [stderr] Checking sized-chunks v0.3.0 [INFO] [stderr] Checking pbr v1.0.1 [INFO] [stderr] Checking uuid v0.6.5 [INFO] [stderr] Checking tempdir v0.3.7 [INFO] [stderr] Checking nom v4.2.3 [INFO] [stderr] Compiling num-derive v0.2.3 [INFO] [stderr] Checking hyper-old-types v0.11.0 [INFO] [stderr] Checking rayon v1.0.3 [INFO] [stderr] Checking os_type v2.2.0 [INFO] [stderr] Checking structopt v0.2.14 [INFO] [stderr] Checking exitfailure v0.5.1 [INFO] [stderr] Checking human-panic v1.0.1 [INFO] [stderr] Checking assert_cli v0.6.3 [INFO] [stderr] Checking crossbeam-channel v0.3.4 [INFO] [stderr] Checking clap-verbosity-flag v0.2.0 [INFO] [stderr] Checking reqwest v0.9.5 [INFO] [stderr] Checking ignore v0.4.5 [INFO] [stderr] Checking nom_locate v0.3.1 [INFO] [stderr] Checking globwalk v0.3.1 [INFO] [stderr] Checking quicli v0.4.0 [INFO] [stderr] Checking self_update v0.5.0 [INFO] [stderr] Checking ag v0.10.0 (/opt/crater/workdir) [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::whitespace::alt_sep macros>:20:46 [INFO] [stderr] | [INFO] [stderr] 15 | $ ( $ args : tt ) * ) => { $ gen : expr } | $ ( $ rest : tt ) + ) => ( [INFO] [stderr] | - expected repetition [INFO] [stderr] ... [INFO] [stderr] 20 | { alt_sep ! ( __impl $ i , $ separator , $ ( $ rest ) * ) } , Err ( e ) => Err [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] | [INFO] [stderr] = note: #[deny(meta_variable_misuse)] on by default [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::whitespace::alt_complete_sep macros>:18:25 [INFO] [stderr] | [INFO] [stderr] 12 | => { $ gen : expr } | $ ( $ rest : tt ) + ) => ( [INFO] [stderr] | - expected repetition [INFO] [stderr] ... [INFO] [stderr] 18 | $ i , $ separator , $ ( $ rest ) * ) , } } ) ; ( [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::sequence::delimited macros>:6:50 [INFO] [stderr] | [INFO] [stderr] 2 | $ i : expr , $ submac : ident ! ( $ ( $ args : tt ) * ) , $ ( $ rest : tt ) + [INFO] [stderr] | - expected repetition [INFO] [stderr] ... [INFO] [stderr] 6 | $ i , ( ) , $ submac ! ( $ ( $ args ) * ) , $ ( $ rest ) * ) { [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::sequence::delimited macros>:9:42 [INFO] [stderr] | [INFO] [stderr] 8 | } } } ) ; ( $ i : expr , $ f : expr , $ ( $ rest : tt ) + ) => ( [INFO] [stderr] | - expected repetition [INFO] [stderr] 9 | delimited ! ( $ i , call ! ( $ f ) , $ ( $ rest ) * ) ; ) ; [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::whitespace::delimited_sep macros>:6:66 [INFO] [stderr] | [INFO] [stderr] 3 | , $ ( $ rest : tt ) + ) => ( [INFO] [stderr] | - expected repetition [INFO] [stderr] ... [INFO] [stderr] 6 | $ i , $ separator , ( ) , $ submac1 ! ( $ ( $ args1 ) * ) , $ ( $ rest ) * ) [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::whitespace::delimited_sep macros>:11:60 [INFO] [stderr] | [INFO] [stderr] 10 | $ i : expr , $ separator : path , $ f : expr , $ ( $ rest : tt ) + ) => ( [INFO] [stderr] | - expected repetition [INFO] [stderr] 11 | delimited_sep ! ( $ i , $ separator , call ! ( $ f ) , $ ( $ rest ) * ) ; ) ; [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::bytes::escaped macros>:53:69 [INFO] [stderr] | [INFO] [stderr] 50 | expr , $ ( $ rest : tt ) + ) => ( [INFO] [stderr] | - expected repetition [INFO] [stderr] ... [INFO] [stderr] 53 | __impl_1 $ i , $ submac ! ( $ ( $ args ) * ) , $ control_char , $ ( $ rest ) * [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::bytes::escaped macros>:56:66 [INFO] [stderr] | [INFO] [stderr] 55 | $ i : expr , $ f : expr , $ control_char : expr , $ ( $ rest : tt ) + ) => ( [INFO] [stderr] | - expected repetition [INFO] [stderr] 56 | escaped ! ( __impl_1 $ i , call ! ( $ f ) , $ control_char , $ ( $ rest ) * ) [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::branch::alt_complete macros>:25:38 [INFO] [stderr] | [INFO] [stderr] 18 | $ ( $ rest : tt ) + ) => ( [INFO] [stderr] | - expected repetition [INFO] [stderr] ... [INFO] [stderr] 25 | let out = alt_complete ! ( $ i , $ ( $ rest ) * ) ; if let ( [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::sequence::separated_pair macros>:6:50 [INFO] [stderr] | [INFO] [stderr] 2 | $ i : expr , $ submac : ident ! ( $ ( $ args : tt ) * ) , $ ( $ rest : tt ) + [INFO] [stderr] | - expected repetition [INFO] [stderr] ... [INFO] [stderr] 6 | $ i , ( ) , $ submac ! ( $ ( $ args ) * ) , $ ( $ rest ) * ) { [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::sequence::separated_pair macros>:10:47 [INFO] [stderr] | [INFO] [stderr] 9 | $ i : expr , $ f : expr , $ ( $ rest : tt ) + ) => ( [INFO] [stderr] | - expected repetition [INFO] [stderr] 10 | separated_pair ! ( $ i , call ! ( $ f ) , $ ( $ rest ) * ) ; ) ; [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/errors.rs:15:19 [INFO] [stderr] | [INFO] [stderr] 15 | reporter: Box, [INFO] [stderr] | ^^^^^^^^^^^^^ help: use `dyn`: `dyn ErrorReporter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(bare_trait_objects)] on by default [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/errors.rs:50:45 [INFO] [stderr] | [INFO] [stderr] 50 | pub fn new(query: String, reporter: Box) -> QueryContainer { [INFO] [stderr] | ^^^^^^^^^^^^^ help: use `dyn`: `dyn ErrorReporter` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:72:38 [INFO] [stderr] | [INFO] [stderr] 72 | fn drain(self: Box) -> Box> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Iterator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:80:28 [INFO] [stderr] | [INFO] [stderr] 80 | fn build(&self) -> Box; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn UnaryPreAggOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:89:28 [INFO] [stderr] | [INFO] [stderr] 89 | fn build(&self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn UnaryPreAggOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:97:21 [INFO] [stderr] | [INFO] [stderr] 97 | op_builder: Box, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: use `dyn`: `dyn OperatorBuilder` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:102:32 [INFO] [stderr] | [INFO] [stderr] 102 | pub fn new(op_builder: Box) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: use `dyn`: `dyn OperatorBuilder` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:185:32 [INFO] [stderr] | [INFO] [stderr] 185 | fn empty_box(&self) -> Box; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:375:32 [INFO] [stderr] | [INFO] [stderr] 375 | fn empty_box(&self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:405:32 [INFO] [stderr] | [INFO] [stderr] 405 | fn empty_box(&self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:435:32 [INFO] [stderr] | [INFO] [stderr] 435 | fn empty_box(&self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:468:32 [INFO] [stderr] | [INFO] [stderr] 468 | fn empty_box(&self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:507:32 [INFO] [stderr] | [INFO] [stderr] 507 | fn empty_box(&self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:522:19 [INFO] [stderr] | [INFO] [stderr] 522 | ordering: Box Ordering + Send + Sync>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Fn(&Data, &Data) -> Ordering + Send + Sync` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:594:31 [INFO] [stderr] | [INFO] [stderr] 594 | agg_col: Vec<(String, Box)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:596:58 [INFO] [stderr] | [INFO] [stderr] 596 | state: HashMap, HashMap>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:603:39 [INFO] [stderr] | [INFO] [stderr] 603 | aggregators: Vec<(String, Box)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:777:28 [INFO] [stderr] | [INFO] [stderr] 777 | fn build(&self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn UnaryPreAggOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:963:28 [INFO] [stderr] | [INFO] [stderr] 963 | fn build(&self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn UnaryPreAggOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:1007:38 [INFO] [stderr] | [INFO] [stderr] 1007 | fn drain(self: Box) -> Box> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Iterator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/typecheck.rs:79:21 [INFO] [stderr] | [INFO] [stderr] 79 | ) -> Result, TypeError> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::OperatorBuilder + Send + Sync` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/typecheck.rs:194:21 [INFO] [stderr] | [INFO] [stderr] 194 | ) -> Result, ()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:46:33 [INFO] [stderr] | [INFO] [stderr] 46 | pre_aggregates: Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::UnaryPreAggOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:47:30 [INFO] [stderr] | [INFO] [stderr] 47 | aggregators: Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::AggregateOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:52:50 [INFO] [stderr] | [INFO] [stderr] 52 | fn convert_sort(op: SortOperator) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::AggregateOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:63:25 [INFO] [stderr] | [INFO] [stderr] 63 | ) -> Result, ()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::AggregateOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:118:38 [INFO] [stderr] | [INFO] [stderr] 118 | let mut pre_agg: Vec> = Vec::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::UnaryPreAggOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:119:39 [INFO] [stderr] | [INFO] [stderr] 119 | let mut post_agg: Vec> = Vec::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::AggregateOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:194:27 [INFO] [stderr] | [INFO] [stderr] 194 | mut head: Box, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::AggregateOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:195:31 [INFO] [stderr] | [INFO] [stderr] 195 | mut rest: Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::AggregateOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:273:33 [INFO] [stderr] | [INFO] [stderr] 273 | pre_aggs: &mut [Box], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::UnaryPreAggOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:291:24 [INFO] [stderr] | [INFO] [stderr] 291 | head: &Box, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::AggregateOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:292:29 [INFO] [stderr] | [INFO] [stderr] 292 | rest: &mut [Box], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::AggregateOperator` [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::whitespace::alt_sep macros>:20:46 [INFO] [stderr] | [INFO] [stderr] 15 | $ ( $ args : tt ) * ) => { $ gen : expr } | $ ( $ rest : tt ) + ) => ( [INFO] [stderr] | - expected repetition [INFO] [stderr] ... [INFO] [stderr] 20 | { alt_sep ! ( __impl $ i , $ separator , $ ( $ rest ) * ) } , Err ( e ) => Err [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] | [INFO] [stderr] = note: #[deny(meta_variable_misuse)] on by default [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::whitespace::alt_complete_sep macros>:18:25 [INFO] [stderr] | [INFO] [stderr] 12 | => { $ gen : expr } | $ ( $ rest : tt ) + ) => ( [INFO] [stderr] | - expected repetition [INFO] [stderr] ... [INFO] [stderr] 18 | $ i , $ separator , $ ( $ rest ) * ) , } } ) ; ( [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::sequence::delimited macros>:6:50 [INFO] [stderr] | [INFO] [stderr] 2 | $ i : expr , $ submac : ident ! ( $ ( $ args : tt ) * ) , $ ( $ rest : tt ) + [INFO] [stderr] | - expected repetition [INFO] [stderr] ... [INFO] [stderr] 6 | $ i , ( ) , $ submac ! ( $ ( $ args ) * ) , $ ( $ rest ) * ) { [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::sequence::delimited macros>:9:42 [INFO] [stderr] | [INFO] [stderr] 8 | } } } ) ; ( $ i : expr , $ f : expr , $ ( $ rest : tt ) + ) => ( [INFO] [stderr] | - expected repetition [INFO] [stderr] 9 | delimited ! ( $ i , call ! ( $ f ) , $ ( $ rest ) * ) ; ) ; [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::whitespace::delimited_sep macros>:6:66 [INFO] [stderr] | [INFO] [stderr] 3 | , $ ( $ rest : tt ) + ) => ( [INFO] [stderr] | - expected repetition [INFO] [stderr] ... [INFO] [stderr] 6 | $ i , $ separator , ( ) , $ submac1 ! ( $ ( $ args1 ) * ) , $ ( $ rest ) * ) [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::whitespace::delimited_sep macros>:11:60 [INFO] [stderr] | [INFO] [stderr] 10 | $ i : expr , $ separator : path , $ f : expr , $ ( $ rest : tt ) + ) => ( [INFO] [stderr] | - expected repetition [INFO] [stderr] 11 | delimited_sep ! ( $ i , $ separator , call ! ( $ f ) , $ ( $ rest ) * ) ; ) ; [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::bytes::escaped macros>:53:69 [INFO] [stderr] | [INFO] [stderr] 50 | expr , $ ( $ rest : tt ) + ) => ( [INFO] [stderr] | - expected repetition [INFO] [stderr] ... [INFO] [stderr] 53 | __impl_1 $ i , $ submac ! ( $ ( $ args ) * ) , $ control_char , $ ( $ rest ) * [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::bytes::escaped macros>:56:66 [INFO] [stderr] | [INFO] [stderr] 55 | $ i : expr , $ f : expr , $ control_char : expr , $ ( $ rest : tt ) + ) => ( [INFO] [stderr] | - expected repetition [INFO] [stderr] 56 | escaped ! ( __impl_1 $ i , call ! ( $ f ) , $ control_char , $ ( $ rest ) * ) [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::branch::alt_complete macros>:25:38 [INFO] [stderr] | [INFO] [stderr] 18 | $ ( $ rest : tt ) + ) => ( [INFO] [stderr] | - expected repetition [INFO] [stderr] ... [INFO] [stderr] 25 | let out = alt_complete ! ( $ i , $ ( $ rest ) * ) ; if let ( [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::sequence::separated_pair macros>:6:50 [INFO] [stderr] | [INFO] [stderr] 2 | $ i : expr , $ submac : ident ! ( $ ( $ args : tt ) * ) , $ ( $ rest : tt ) + [INFO] [stderr] | - expected repetition [INFO] [stderr] ... [INFO] [stderr] 6 | $ i , ( ) , $ submac ! ( $ ( $ args ) * ) , $ ( $ rest ) * ) { [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] error: meta-variable repeats with different Kleene operator [INFO] [stderr] --> <::nom::sequence::separated_pair macros>:10:47 [INFO] [stderr] | [INFO] [stderr] 9 | $ i : expr , $ f : expr , $ ( $ rest : tt ) + ) => ( [INFO] [stderr] | - expected repetition [INFO] [stderr] 10 | separated_pair ! ( $ i , call ! ( $ f ) , $ ( $ rest ) * ) ; ) ; [INFO] [stderr] | ^^^^^^ - conflicting repetition [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/errors.rs:15:19 [INFO] [stderr] | [INFO] [stderr] 15 | reporter: Box, [INFO] [stderr] | ^^^^^^^^^^^^^ help: use `dyn`: `dyn ErrorReporter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(bare_trait_objects)] on by default [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/errors.rs:50:45 [INFO] [stderr] | [INFO] [stderr] 50 | pub fn new(query: String, reporter: Box) -> QueryContainer { [INFO] [stderr] | ^^^^^^^^^^^^^ help: use `dyn`: `dyn ErrorReporter` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:72:38 [INFO] [stderr] | [INFO] [stderr] 72 | fn drain(self: Box) -> Box> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Iterator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:80:28 [INFO] [stderr] | [INFO] [stderr] 80 | fn build(&self) -> Box; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn UnaryPreAggOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:89:28 [INFO] [stderr] | [INFO] [stderr] 89 | fn build(&self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn UnaryPreAggOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:97:21 [INFO] [stderr] | [INFO] [stderr] 97 | op_builder: Box, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: use `dyn`: `dyn OperatorBuilder` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:102:32 [INFO] [stderr] | [INFO] [stderr] 102 | pub fn new(op_builder: Box) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: use `dyn`: `dyn OperatorBuilder` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:185:32 [INFO] [stderr] | [INFO] [stderr] 185 | fn empty_box(&self) -> Box; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:375:32 [INFO] [stderr] | [INFO] [stderr] 375 | fn empty_box(&self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:405:32 [INFO] [stderr] | [INFO] [stderr] 405 | fn empty_box(&self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:435:32 [INFO] [stderr] | [INFO] [stderr] 435 | fn empty_box(&self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:468:32 [INFO] [stderr] | [INFO] [stderr] 468 | fn empty_box(&self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:507:32 [INFO] [stderr] | [INFO] [stderr] 507 | fn empty_box(&self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:522:19 [INFO] [stderr] | [INFO] [stderr] 522 | ordering: Box Ordering + Send + Sync>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Fn(&Data, &Data) -> Ordering + Send + Sync` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:594:31 [INFO] [stderr] | [INFO] [stderr] 594 | agg_col: Vec<(String, Box)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:596:58 [INFO] [stderr] | [INFO] [stderr] 596 | state: HashMap, HashMap>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:603:39 [INFO] [stderr] | [INFO] [stderr] 603 | aggregators: Vec<(String, Box)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:777:28 [INFO] [stderr] | [INFO] [stderr] 777 | fn build(&self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn UnaryPreAggOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:963:28 [INFO] [stderr] | [INFO] [stderr] 963 | fn build(&self) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn UnaryPreAggOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:1007:38 [INFO] [stderr] | [INFO] [stderr] 1007 | fn drain(self: Box) -> Box> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn Iterator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:1264:35 [INFO] [stderr] | [INFO] [stderr] 1264 | let ops: Vec<(String, Box)> = [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:1287:35 [INFO] [stderr] | [INFO] [stderr] 1287 | let ops: Vec<(String, Box)> = vec![ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:1356:35 [INFO] [stderr] | [INFO] [stderr] 1356 | let ops: Vec<(String, Box)> = [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/operator.rs:1440:30 [INFO] [stderr] | [INFO] [stderr] 1440 | let mut adapted: Box = Box::new(adapted); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn AggregateOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/typecheck.rs:79:21 [INFO] [stderr] | [INFO] [stderr] 79 | ) -> Result, TypeError> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::OperatorBuilder + Send + Sync` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/typecheck.rs:194:21 [INFO] [stderr] | [INFO] [stderr] 194 | ) -> Result, ()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::AggregateFunction` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:46:33 [INFO] [stderr] | [INFO] [stderr] 46 | pre_aggregates: Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::UnaryPreAggOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:47:30 [INFO] [stderr] | [INFO] [stderr] 47 | aggregators: Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::AggregateOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:52:50 [INFO] [stderr] | [INFO] [stderr] 52 | fn convert_sort(op: SortOperator) -> Box { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::AggregateOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:63:25 [INFO] [stderr] | [INFO] [stderr] 63 | ) -> Result, ()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::AggregateOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:118:38 [INFO] [stderr] | [INFO] [stderr] 118 | let mut pre_agg: Vec> = Vec::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::UnaryPreAggOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:119:39 [INFO] [stderr] | [INFO] [stderr] 119 | let mut post_agg: Vec> = Vec::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::AggregateOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:194:27 [INFO] [stderr] | [INFO] [stderr] 194 | mut head: Box, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::AggregateOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:195:31 [INFO] [stderr] | [INFO] [stderr] 195 | mut rest: Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::AggregateOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:273:33 [INFO] [stderr] | [INFO] [stderr] 273 | pre_aggs: &mut [Box], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::UnaryPreAggOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:291:24 [INFO] [stderr] | [INFO] [stderr] 291 | head: &Box, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::AggregateOperator` [INFO] [stderr] [INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stderr] --> src/lib.rs:292:29 [INFO] [stderr] | [INFO] [stderr] 292 | rest: &mut [Box], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `dyn`: `dyn operator::AggregateOperator` [INFO] [stderr] [INFO] [stderr] error: aborting due to 11 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `ag`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: aborting due to 11 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `ag`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "1525a7551d2a86ed5ecfcf03260c35b6dadb4f56f68d89401a860e390869d637"` [INFO] running `"docker" "rm" "-f" "1525a7551d2a86ed5ecfcf03260c35b6dadb4f56f68d89401a860e390869d637"` [INFO] [stdout] 1525a7551d2a86ed5ecfcf03260c35b6dadb4f56f68d89401a860e390869d637