[INFO] fetching crate hotmeal 1.1.0... [INFO] testing hotmeal-1.1.0 against try#dec9417b8611e34e787a3e4c37686b5131f9e5c5 for pr-154210-1 [INFO] extracting crate hotmeal 1.1.0 into /workspace/builds/worker-1-tc2/source [INFO] started tweaking crates.io crate hotmeal 1.1.0 [INFO] removed 0 missing examples [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate hotmeal 1.1.0 [INFO] tweaked toml for crates.io crate hotmeal 1.1.0 written to /workspace/builds/worker-1-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate hotmeal 1.1.0 on toolchain dec9417b8611e34e787a3e4c37686b5131f9e5c5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate hotmeal 1.1.0 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] e9f74abb5b776c4a73174c1a6d3b995db098893b884d6e0bb9f9689dacc95fa6 [INFO] running `Command { std: "docker" "start" "-a" "e9f74abb5b776c4a73174c1a6d3b995db098893b884d6e0bb9f9689dacc95fa6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "e9f74abb5b776c4a73174c1a6d3b995db098893b884d6e0bb9f9689dacc95fa6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e9f74abb5b776c4a73174c1a6d3b995db098893b884d6e0bb9f9689dacc95fa6", kill_on_drop: false }` [INFO] [stdout] e9f74abb5b776c4a73174c1a6d3b995db098893b884d6e0bb9f9689dacc95fa6 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 75cc2818abc9021527a72b577fbb471b8f28a176ed5960f1d55deaaa0fdf442e [INFO] running `Command { std: "docker" "start" "-a" "75cc2818abc9021527a72b577fbb471b8f28a176ed5960f1d55deaaa0fdf442e", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling siphasher v1.0.1 [INFO] [stderr] Compiling new_debug_unreachable v1.0.6 [INFO] [stderr] Compiling fastrand v2.3.0 [INFO] [stderr] Compiling rustc-hash v2.1.1 [INFO] [stderr] Compiling mutants v0.0.3 [INFO] [stderr] Compiling rustversion v1.0.22 [INFO] [stderr] Compiling facet-core v0.44.1 [INFO] [stderr] Compiling precomputed-hash v0.1.1 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling ryu v1.0.22 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling facet v0.44.1 [INFO] [stderr] Compiling impls v1.0.3 [INFO] [stderr] Compiling tendril v0.5.0 [INFO] [stderr] Compiling const-fnv1a-hash v1.1.0 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling rapidhash v1.4.0 [INFO] [stderr] Compiling phf_shared v0.13.1 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling itertools v0.14.0 [INFO] [stderr] Compiling phf_generator v0.13.1 [INFO] [stderr] Compiling phf v0.13.1 [INFO] [stderr] Compiling string_cache v0.9.0 [INFO] [stderr] Compiling phf_codegen v0.13.1 [INFO] [stderr] Compiling castaway v0.2.4 [INFO] [stderr] Compiling quote v1.0.44 [INFO] [stderr] Compiling unsynn v0.3.0 [INFO] [stderr] Compiling compact_str v0.9.0 [INFO] [stderr] Compiling indexmap v2.13.0 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Compiling string_cache_codegen v0.6.1 [INFO] [stderr] Compiling web_atoms v0.2.3 [INFO] [stderr] Compiling facet-macro-types v0.44.1 [INFO] [stderr] Compiling facet-macro-parse v0.44.1 [INFO] [stderr] Compiling facet-macros-impl v0.44.1 [INFO] [stderr] Compiling markup5ever v0.38.0 [INFO] [stderr] Compiling html5ever v0.38.0 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling strum_macros v0.27.2 [INFO] [stderr] Compiling facet-macros v0.44.1 [INFO] [stderr] Compiling strum v0.27.2 [INFO] [stderr] Compiling facet-error v0.44.1 [INFO] [stderr] Compiling indextree-macros v0.1.3 [INFO] [stderr] Compiling indextree v4.7.4 [INFO] [stderr] Compiling cinereus v1.1.0 [INFO] [stderr] Compiling hotmeal v1.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 7.83s [INFO] running `Command { std: "docker" "inspect" "75cc2818abc9021527a72b577fbb471b8f28a176ed5960f1d55deaaa0fdf442e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "75cc2818abc9021527a72b577fbb471b8f28a176ed5960f1d55deaaa0fdf442e", kill_on_drop: false }` [INFO] [stdout] 75cc2818abc9021527a72b577fbb471b8f28a176ed5960f1d55deaaa0fdf442e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 98cbf0a98f95c1db18bcc35759aa4dd57c7fb69afe7404159c67326cc6f9fee6 [INFO] running `Command { std: "docker" "start" "-a" "98cbf0a98f95c1db18bcc35759aa4dd57c7fb69afe7404159c67326cc6f9fee6", kill_on_drop: false }` [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling facet-core v0.44.1 [INFO] [stderr] Compiling regex-syntax v0.8.8 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling anstream v0.6.21 [INFO] [stderr] Compiling object v0.37.3 [INFO] [stderr] Compiling facet-macros-impl v0.44.1 [INFO] [stderr] Compiling smallvec v2.0.0-alpha.12 [INFO] [stderr] Compiling clap_derive v4.5.49 [INFO] [stderr] Compiling gimli v0.32.3 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling camino v1.2.2 [INFO] [stderr] Compiling rustc-demangle v0.1.27 [INFO] [stderr] Compiling bit-vec v0.8.0 [INFO] [stderr] Compiling btparse v0.2.0 [INFO] [stderr] Compiling bit-set v0.8.0 [INFO] [stderr] Compiling escape8259 v0.5.3 [INFO] [stderr] Compiling tracing-subscriber v0.3.22 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling divan-macros v0.1.21 [INFO] [stderr] Compiling facet-testhelpers-macros v0.44.1 [INFO] [stderr] Compiling regex-lite v0.1.8 [INFO] [stderr] Compiling condtype v1.3.0 [INFO] [stderr] Compiling indexmap v2.13.0 [INFO] [stderr] Compiling terminal_size v0.4.3 [INFO] [stderr] Compiling clap_builder v4.5.54 [INFO] [stderr] Compiling regex-automata v0.4.13 [INFO] [stderr] Compiling addr2line v0.25.1 [INFO] [stderr] Compiling facet-path v0.44.1 [INFO] [stderr] Compiling clap v4.5.54 [INFO] [stderr] Compiling libtest-mimic v0.8.1 [INFO] [stderr] Compiling divan v0.1.21 [INFO] [stderr] Compiling backtrace v0.3.76 [INFO] [stderr] Compiling facet-macros v0.44.1 [INFO] [stderr] Compiling facet v0.44.1 [INFO] [stderr] Compiling facet-error v0.44.1 [INFO] [stderr] Compiling color-backtrace v0.7.2 [INFO] [stderr] Compiling hotmeal v1.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling fancy-regex v0.14.0 [INFO] [stderr] Compiling facet-testhelpers v0.44.1 [INFO] [stderr] Compiling facet-reflect v0.44.1 [INFO] [stderr] Compiling datatest-stable v0.3.3 [INFO] [stderr] Compiling facet-dessert v0.44.1 [INFO] [stderr] Compiling facet-solver v0.44.1 [INFO] [stderr] Compiling facet-format v0.44.1 [INFO] [stderr] Compiling facet-json v0.44.1 [INFO] [stdout] warning: unused variable: `result` [INFO] [stdout] --> tests/test_debug_fuzzer_bug.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | let result = doc.apply_patches(patches); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `html_end` [INFO] [stdout] --> src/dom.rs:1882:13 [INFO] [stdout] | [INFO] [stdout] 1882 | let html_end = html_start + html.len(); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_html_end` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `stem_end` [INFO] [stdout] --> src/dom.rs:1898:17 [INFO] [stdout] | [INFO] [stdout] 1898 | let stem_end = stem_start + stem_str.len(); [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stem_end` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/dom.rs:2182:14 [INFO] [stdout] | [INFO] [stdout] 2182 | for (i, child_id) in children.iter().enumerate() { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `node` [INFO] [stdout] --> src/dom.rs:2183:17 [INFO] [stdout] | [INFO] [stdout] 2183 | let node = doc.get(*child_id); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_node` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `elem` [INFO] [stdout] --> src/dom.rs:2472:38 [INFO] [stdout] | [INFO] [stdout] 2472 | if let NodeKind::Element(elem) = &noscript_data.kind { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_elem` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/dom.rs:2480:18 [INFO] [stdout] | [INFO] [stdout] 2480 | for (i, child_id) in noscript_children.iter().enumerate() { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `child` [INFO] [stdout] --> src/dom.rs:2481:21 [INFO] [stdout] | [INFO] [stdout] 2481 | let child = doc.get(*child_id); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_child` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 19.56s [INFO] running `Command { std: "docker" "inspect" "98cbf0a98f95c1db18bcc35759aa4dd57c7fb69afe7404159c67326cc6f9fee6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "98cbf0a98f95c1db18bcc35759aa4dd57c7fb69afe7404159c67326cc6f9fee6", kill_on_drop: false }` [INFO] [stdout] 98cbf0a98f95c1db18bcc35759aa4dd57c7fb69afe7404159c67326cc6f9fee6 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 1fe4acbb19c2821693a1d31ebc82993b0af94aeb7fe9749ce2af143c8e442f74 [INFO] running `Command { std: "docker" "start" "-a" "1fe4acbb19c2821693a1d31ebc82993b0af94aeb7fe9749ce2af143c8e442f74", kill_on_drop: false }` [INFO] [stderr] warning: unused variable: `html_end` [INFO] [stderr] --> src/dom.rs:1882:13 [INFO] [stderr] | [INFO] [stderr] 1882 | let html_end = html_start + html.len(); [INFO] [stderr] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_html_end` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `stem_end` [INFO] [stderr] --> src/dom.rs:1898:17 [INFO] [stderr] | [INFO] [stderr] 1898 | let stem_end = stem_start + stem_str.len(); [INFO] [stderr] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stem_end` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/dom.rs:2182:14 [INFO] [stderr] | [INFO] [stderr] 2182 | for (i, child_id) in children.iter().enumerate() { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `node` [INFO] [stderr] --> src/dom.rs:2183:17 [INFO] [stderr] | [INFO] [stderr] 2183 | let node = doc.get(*child_id); [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_node` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `elem` [INFO] [stderr] --> src/dom.rs:2472:38 [INFO] [stderr] | [INFO] [stderr] 2472 | if let NodeKind::Element(elem) = &noscript_data.kind { [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_elem` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/dom.rs:2480:18 [INFO] [stderr] | [INFO] [stderr] 2480 | for (i, child_id) in noscript_children.iter().enumerate() { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `child` [INFO] [stderr] --> src/dom.rs:2481:21 [INFO] [stderr] | [INFO] [stderr] 2481 | let child = doc.get(*child_id); [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_child` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `result` [INFO] [stderr] --> tests/test_debug_fuzzer_bug.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | let result = doc.apply_patches(patches); [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: `hotmeal` (lib test) generated 7 warnings (run `cargo fix --lib -p hotmeal --tests` to apply 7 suggestions) [INFO] [stderr] warning: `hotmeal` (test "test_debug_fuzzer_bug") generated 1 warning (run `cargo fix --test "test_debug_fuzzer_bug" -p hotmeal` to apply 1 suggestion) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.20s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/hotmeal-8fa91ab01fd49bd4) [INFO] [stdout] [INFO] [stdout] running 79 tests [INFO] [stdout]  0.001s DEBUG matching pairs: 3 [INFO] [stdout]  0.001s DEBUG arena_dom cinereus diff complete ops_count=8 matched_pairs=3 [INFO] [stdout]  0.001s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2] [INFO] [stdout] [n3] TEXT: "text1" [INFO] [stdout] [n2] [INFO] [stdout] [n4] [INFO] [stdout] [n5] TEXT: "text2" [INFO] [stdout] [n4] [INFO] [stdout] [n6] [INFO] [stdout] [n6] [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.001s DEBUG Processing operation op=SetText(a:3 → b:5 text=text3) [INFO] [stdout]  0.001s DEBUG Processing operation op=SetText(a:5 → b:7 text=text4) [INFO] [stdout]  0.001s DEBUG Processing operation op=Insert(b:6 @1 under b:4) [INFO] [stdout]  0.001s DEBUG created new slot slot_num=1 [INFO] [stdout]  0.001s DEBUG detached node to slot node=NodeId { index1: 4, stamp: NodeStamp(0) } slot_num=1 [INFO] [stdout]  0.001s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=1 detach_to_slot=Some(1) [INFO] [stdout]  0.001s DEBUG Parent children after Insert children=[(0, NodeId { index1: 2, stamp: NodeStamp(0) }, Element(Atom('strong' type=inline), Html)), (1, NodeId { index1: 9, stamp: NodeStamp(0) }, Element(Atom('strong' type=inline), Html)), (2, NodeId { index1: 6, stamp: NodeStamp(0) }, Element(Atom('img' type=inline), Html))] [INFO] [stdout]  0.001s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2] [INFO] [stdout] [n3] TEXT: "text1" [INFO] [stdout] [n2] [INFO] [stdout] [n9] [INFO] [stdout] [n9] [INFO] [stdout] [n6] [INFO] [stdout] [n6] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n4] [INFO] [stdout] [n5] TEXT: "text2" [INFO] [stdout] [n4] [INFO] [stdout] [INFO] [stdout]  0.001s DEBUG Processing operation op=Move(a:3 → b:5 @0 under b:4) [INFO] [stdout]  0.001s DEBUG Move: starting node_a=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 4, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 1, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.001s DEBUG Move: computing from reference for node node_a=NodeId { index1: 3, stamp: NodeStamp(0) } [INFO] [stdout]  0.001s DEBUG get_node_ref: computed path node=NodeId { index1: 3, stamp: NodeStamp(0) } path=[0, 0, 0] [INFO] [stdout]  0.001s DEBUG Move: computed from reference node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([0, 0, 0])) [INFO] [stdout]  0.001s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 2, stamp: NodeStamp(0) }, Element(Atom('strong' type=inline), Html)), (1, NodeId { index1: 9, stamp: NodeStamp(0) }, Element(Atom('strong' type=inline), Html)), (2, NodeId { index1: 6, stamp: NodeStamp(0) }, Element(Atom('img' type=inline), Html))] [INFO] [stdout]  0.001s DEBUG move_to_position: checking ancestry node=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent=NodeId { index1: 1, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.001s DEBUG Move: checking target position node=NodeId { index1: 3, stamp: NodeStamp(0) } position=0 children_count=3 [INFO] [stdout]  0.001s DEBUG Move: found occupant at target position occupant=NodeId { index1: 2, stamp: NodeStamp(0) } _occupant_kind=Element(Atom('strong' type=inline), Html) [INFO] [stdout]  0.001s DEBUG created new slot slot_num=2 [INFO] [stdout]  0.002s DEBUG detached node to slot node=NodeId { index1: 2, stamp: NodeStamp(0) } slot_num=2 [INFO] [stdout]  0.002s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 2, stamp: NodeStamp(0) } slot=2 [INFO] [stdout]  0.002s DEBUG Generated Move patch node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([0, 0, 0])) to=NodeRef(NodePath([0, 0])) detach_to_slot=Some(2) [INFO] [stdout]  0.002s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n3] TEXT: "text1" [INFO] [stdout] [n9] [INFO] [stdout] [n9] [INFO] [stdout] [n6] [INFO] [stdout] [n6] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n4] [INFO] [stdout] [n5] TEXT: "text2" [INFO] [stdout] [n4] [INFO] [stdout] Slot 2: [INFO] [stdout] [n2] [INFO] [stdout] [n11] TEXT: "" [INFO] [stdout] [n2] [INFO] [stdout] [INFO] [stdout]  0.002s DEBUG Processing operation op=Move(a:5 → b:7 @0 under b:6) [INFO] [stdout]  0.002s DEBUG Move: starting node_a=NodeId { index1: 5, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 6, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 9, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.002s DEBUG Move: computing from reference for node node_a=NodeId { index1: 5, stamp: NodeStamp(0) } [INFO] [stdout]  0.003s DEBUG get_node_ref: computed path node=NodeId { index1: 5, stamp: NodeStamp(0) } path=[1, 0] [INFO] [stdout]  0.003s DEBUG Move: computed from reference node_a=NodeId { index1: 5, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) [INFO] [stdout]  0.003s DEBUG Parent children BEFORE Move children=[] [INFO] [stdout]  0.003s DEBUG move_to_position: checking ancestry node=NodeId { index1: 5, stamp: NodeStamp(0) } new_parent=NodeId { index1: 9, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.003s DEBUG Move: checking target position node=NodeId { index1: 5, stamp: NodeStamp(0) } position=0 children_count=0 [INFO] [stdout]  0.003s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.003s DEBUG Generated Move patch node_a=NodeId { index1: 5, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) to=NodeRef(NodePath([0, 1, 0])) detach_to_slot=None [INFO] [stdout]  0.004s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n3] TEXT: "text1" [INFO] [stdout] [n9] [INFO] [stdout] [n5] TEXT: "text2" [INFO] [stdout] [n9] [INFO] [stdout] [n6] [INFO] [stdout] [n6] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n4] [INFO] [stdout] [n13] TEXT: "" [INFO] [stdout] [n4] [INFO] [stdout] Slot 2: [INFO] [stdout] [n2] [INFO] [stdout] [n11] TEXT: "" [INFO] [stdout] [n2] [INFO] [stdout] [INFO] [stdout]  0.003s DEBUG matching pairs: 3 [INFO] [stdout]  0.004s DEBUG matching pairs: 2 [INFO] [stdout]  0.003s DEBUG matching pairs: 2 [INFO] [stdout]  0.005s DEBUG arena_dom cinereus diff complete ops_count=4 matched_pairs=2 [INFO] [stdout]  0.005s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
[INFO] [stdout] [n3] TEXT: "Old content" [INFO] [stdout] [n2]
[INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.005s DEBUG Processing operation op=SetText(a:3 → b:6 text=New content) [INFO] [stdout]  0.005s DEBUG Processing operation op=Insert(b:5
@0 under b:4) [INFO] [stdout]  0.005s DEBUG created new slot slot_num=1 [INFO] [stdout]  0.005s DEBUG detached node to slot node=NodeId { index1: 2, stamp: NodeStamp(0) } slot_num=1 [INFO] [stdout]  0.005s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=0 detach_to_slot=Some(1) [INFO] [stdout]  0.005s DEBUG Parent children after Insert children=[(0, NodeId { index1: 6, stamp: NodeStamp(0) }, Element(Atom('div' type=inline), Html))] [INFO] [stdout]  0.005s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n6]
[INFO] [stdout] [n6]
[INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
[INFO] [stdout] [n3] TEXT: "Old content" [INFO] [stdout] [n2]
[INFO] [stdout] [INFO] [stdout]  0.005s DEBUG Processing operation op=Move(a:3 → b:6 @0 under b:5) [INFO] [stdout]  0.005s DEBUG Move: starting node_a=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 5, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 6, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.005s DEBUG Move: computing from reference for node node_a=NodeId { index1: 3, stamp: NodeStamp(0) } [INFO] [stdout]  0.005s DEBUG get_node_ref: computed path node=NodeId { index1: 3, stamp: NodeStamp(0) } path=[1, 0] [INFO] [stdout]  0.005s DEBUG Move: computed from reference node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) [INFO] [stdout]  0.005s DEBUG Parent children BEFORE Move children=[] [INFO] [stdout]  0.004s DEBUG arena_dom cinereus diff complete ops_count=2 matched_pairs=3 [INFO] [stdout]  0.005s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
[INFO] [stdout] [n3] TEXT: "Content" [INFO] [stdout] [n2]
[INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.005s DEBUG Processing operation op=Insert(b:7

@1 under b:4) [INFO] [stdout]  0.005s DEBUG arena_dom cinereus diff complete ops_count=1 matched_pairs=2 [INFO] [stdout]  0.006s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]

[INFO] [stdout] [n2]
[INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.004s DEBUG Processing operation op=Delete(a:2) [INFO] [stdout]  0.005s DEBUG move_to_position: checking ancestry node=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent=NodeId { index1: 6, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.006s DEBUG Move: checking target position node=NodeId { index1: 3, stamp: NodeStamp(0) } position=0 children_count=0 [INFO] [stdout]  0.006s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.006s DEBUG Delete operation node_a=NodeId { index1: 2, stamp: NodeStamp(0) } _node_kind=Element(Atom('strong' type=inline), Html) [INFO] [stdout]  0.006s DEBUG get_node_ref: computed path node=NodeId { index1: 2, stamp: NodeStamp(0) } path=[2] [INFO] [stdout]  0.006s DEBUG Generated Move patch node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) to=NodeRef(NodePath([0, 0, 0])) detach_to_slot=None [INFO] [stdout]  0.006s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n6]
[INFO] [stdout] [n3] TEXT: "Old content" [INFO] [stdout] [n6]
[INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
[INFO] [stdout] [n8] TEXT: "" [INFO] [stdout] [n2]
[INFO] [stdout] [INFO] [stdout]  0.006s DEBUG Processing operation op=Delete(a:2) [INFO] [stdout]  0.006s DEBUG Delete operation node_a=NodeId { index1: 2, stamp: NodeStamp(0) } _node_kind=Element(Atom('div' type=inline), Html) [INFO] [stdout]  0.006s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n3] TEXT: "text1" [INFO] [stdout] [n9] [INFO] [stdout] [n5] TEXT: "text2" [INFO] [stdout] [n9] [INFO] [stdout] [n6] [INFO] [stdout] [n6] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n4] [INFO] [stdout] [n13] TEXT: "" [INFO] [stdout] [n4] [INFO] [stdout] Slot 2: [INFO] [stdout] [n14] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.006s DEBUG get_node_ref: computed path node=NodeId { index1: 2, stamp: NodeStamp(0) } path=[1] [INFO] [stdout]  0.006s DEBUG Processing operation op=Delete(a:4) [INFO] [stdout]  0.006s DEBUG Delete operation node_a=NodeId { index1: 4, stamp: NodeStamp(0) } _node_kind=Element(Atom('strong' type=inline), Html) [INFO] [stdout]  0.006s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n6]
[INFO] [stdout] [n3] TEXT: "Old content" [INFO] [stdout] [n6]
[INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n9] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.006s DEBUG get_node_ref: computed path node=NodeId { index1: 4, stamp: NodeStamp(0) } path=[1] [INFO] [stdout]  0.006s DEBUG Patches: [ [INFO] [stdout] SetText "New content" @[0, 0, 0], [INFO] [stdout] Insert
@[0, 0] →slot1, [INFO] [stdout] Move [1, 0] → [0, 0, 0], [INFO] [stdout] Remove @[1], [INFO] [stdout] ] [INFO] [stdout]  0.006s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n3] TEXT: "text1" [INFO] [stdout] [n9] [INFO] [stdout] [n5] TEXT: "text2" [INFO] [stdout] [n9] [INFO] [stdout] [n6] [INFO] [stdout] [n6] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n15] TEXT: "" [INFO] [stdout] Slot 2: [INFO] [stdout] [n14] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.006s DEBUG Processing operation op=Delete(a:6) [INFO] [stdout]  0.006s DEBUG Delete operation node_a=NodeId { index1: 6, stamp: NodeStamp(0) } _node_kind=Element(Atom('img' type=inline), Html) [INFO] [stdout]  0.006s DEBUG get_node_ref: computed path node=NodeId { index1: 6, stamp: NodeStamp(0) } path=[0, 2] [INFO] [stdout]  0.006s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n3] TEXT: "text1" [INFO] [stdout] [n9] [INFO] [stdout] [n5] TEXT: "text2" [INFO] [stdout] [n9] [INFO] [stdout] [n16] TEXT: "" [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n15] TEXT: "" [INFO] [stdout] Slot 2: [INFO] [stdout] [n14] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.006s DEBUG Patches: [ [INFO] [stdout] SetText "text3" @[0, 0, 0], [INFO] [stdout] SetText "text4" @[0, 1, 0], [INFO] [stdout] Insert @[0, 1] →slot1, [INFO] [stdout] Move [0, 0, 0] → [0, 0] →slot2, [INFO] [stdout] Move [1, 0] → [0, 1, 0], [INFO] [stdout] Remove @[2], [INFO] [stdout] Remove @[1], [INFO] [stdout] Remove @[0, 2], [INFO] [stdout] ] [INFO] [stdout]  0.006s DEBUG Applying patch: SetText "New content" @[0, 0, 0] [INFO] [stdout]  0.006s DEBUG Applying patch: Insert
@[0, 0] →slot1 [INFO] [stdout]  0.006s DEBUG insert_at: path=[0, 0] parent= pos=0 [INFO] [stdout]  0.006s DEBUG insert_at: detaching child
at pos 0 to slot1 [INFO] [stdout]  0.006s DEBUG insert_at_position:
under at pos 0 (has 0 children) [INFO] [stdout]  0.006s DEBUG Applying patch: Move [1, 0] → [0, 0, 0] [INFO] [stdout]  0.006s DEBUG insert_at: path=[0, 0, 0] parent=
pos=0 [INFO] [stdout]  0.006s DEBUG insert_at_position: text("New conten") under
at pos 0 (has 0 children) [INFO] [stdout]  0.006s DEBUG Applying patch: Remove @[1] [INFO] [stdout]  0.006s DEBUG Applying patch: SetText "text3" @[0, 0, 0] [INFO] [stdout]  0.006s DEBUG Applying patch: SetText "text4" @[0, 1, 0] [INFO] [stdout]  0.006s DEBUG Applying patch: Insert @[0, 1] →slot1 [INFO] [stdout]  0.006s DEBUG insert_at: path=[0, 1] parent= pos=1 [INFO] [stdout]  0.006s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=1 detach_to_slot=None [INFO] [stdout]  0.006s DEBUG insert_at: detaching child at pos 1 to slot1 [INFO] [stdout]  0.006s DEBUG insert_at_position: under at pos 1 (has 2 children) [INFO] [stdout]  0.006s DEBUG Parent children after Insert children=[(0, NodeId { index1: 2, stamp: NodeStamp(0) }, Element(Atom('div' type=inline), Html)), (1, NodeId { index1: 6, stamp: NodeStamp(0) }, Element(Atom('p' type=inline), Html))] [INFO] [stdout]  0.006s DEBUG Applying patch: Move [0, 0, 0] → [0, 0] →slot2 [INFO] [stdout]  0.006s DEBUG insert_at: path=[0, 0] parent= pos=0 [INFO] [stdout]  0.006s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
[INFO] [stdout] [n3] TEXT: "Content" [INFO] [stdout] [n2]
[INFO] [stdout] [n6]

[INFO] [stdout] [n6]

[INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.006s DEBUG insert_at: detaching child at pos 0 to slot2 [INFO] [stdout]  0.006s DEBUG Processing operation op=Insert(b:8 #text @0 under b:7) [INFO] [stdout]  0.006s DEBUG insert_at_position: text("text3") under at pos 0 (has 2 children) [INFO] [stdout]  0.006s DEBUG Applying patch: Move [1, 0] → [0, 1, 0] [INFO] [stdout]  0.006s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 6, stamp: NodeStamp(0) } position=0 detach_to_slot=None [INFO] [stdout]  0.006s DEBUG insert_at: path=[0, 1, 0] parent= pos=0 [INFO] [stdout]  0.006s DEBUG Parent children after Insert children=[(0, NodeId { index1: 7, stamp: NodeStamp(0) }, Text)] [INFO] [stdout]  0.006s DEBUG insert_at_position: text("text4") under at pos 0 (has 0 children) [INFO] [stdout]  0.006s DEBUG Applying patch: Remove @[2] [INFO] [stdout]  0.006s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
[INFO] [stdout] [n3] TEXT: "Content" [INFO] [stdout] [n2]
[INFO] [stdout] [n6]

[INFO] [stdout] [n7] TEXT: "New paragraph" [INFO] [stdout] [n6]

[INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.007s DEBUG Applying patch: Remove @[1] [INFO] [stdout]  0.007s DEBUG Applying patch: Remove @[0, 2] [INFO] [stdout]  0.007s DEBUG Patches: [ [INFO] [stdout] Insert

@[0, 1], [INFO] [stdout] Insert text "New paragraph" @[0, 1, 0], [INFO] [stdout] ] [INFO] [stdout]  0.006s DEBUG Processing operation op=UpdateProps(a:2 class: → bar) [INFO] [stdout]  0.007s DEBUG Result: text3text4 [INFO] [stdout]  0.007s DEBUG Expected: text3text4 [INFO] [stdout]  0.014s DEBUG matching pairs: 1 [INFO] [stdout]  0.014s DEBUG arena_dom cinereus diff complete ops_count=1 matched_pairs=1 [INFO] [stdout]  0.014s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2] [INFO] [stdout] [n2] [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.014s DEBUG Processing operation op=Delete(a:2) [INFO] [stdout]  0.014s DEBUG Delete operation node_a=NodeId { index1: 2, stamp: NodeStamp(0) } _node_kind=Element(Atom('span' type=inline), Html) [INFO] [stdout]  0.014s DEBUG get_node_ref: computed path node=NodeId { index1: 2, stamp: NodeStamp(0) } path=[0, 0] [INFO] [stdout]  0.014s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n5] TEXT: "" [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.014s DEBUG Patches: [ [INFO] [stdout] Remove @[0, 0], [INFO] [stdout] ] [INFO] [stdout]  0.014s DEBUG Applying patch: Remove @[0, 0] [INFO] [stdout]  0.015s DEBUG matching pairs: 2 [INFO] [stdout]  0.015s DEBUG arena_dom cinereus diff complete ops_count=4 matched_pairs=2 [INFO] [stdout]  0.015s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]

[INFO] [stdout] [n3] TEXT: "old" [INFO] [stdout] [n2]
[INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.015s DEBUG Processing operation op=SetText(a:3 → b:6 text=new) [INFO] [stdout]  0.015s DEBUG Processing operation op=Insert(b:5
@0 under b:4) [INFO] [stdout]  0.015s DEBUG created new slot slot_num=1 [INFO] [stdout]  0.015s DEBUG detached node to slot node=NodeId { index1: 2, stamp: NodeStamp(0) } slot_num=1 [INFO] [stdout]  0.015s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=0 detach_to_slot=Some(1) [INFO] [stdout]  0.015s DEBUG Parent children after Insert children=[(0, NodeId { index1: 6, stamp: NodeStamp(0) }, Element(Atom('div' type=inline), Html))] [INFO] [stdout]  0.015s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n6]
[INFO] [stdout] [n6]
[INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
[INFO] [stdout] [n3] TEXT: "old" [INFO] [stdout] [n2]
[INFO] [stdout] [INFO] [stdout]  0.015s DEBUG Processing operation op=Move(a:3 → b:6 @0 under b:5) [INFO] [stdout]  0.015s DEBUG Move: starting node_a=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 5, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 6, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.015s DEBUG Move: computing from reference for node node_a=NodeId { index1: 3, stamp: NodeStamp(0) } [INFO] [stdout]  0.015s DEBUG get_node_ref: computed path node=NodeId { index1: 3, stamp: NodeStamp(0) } path=[1, 0] [INFO] [stdout]  0.015s DEBUG Move: computed from reference node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) [INFO] [stdout]  0.015s DEBUG Parent children BEFORE Move children=[] [INFO] [stdout]  0.015s DEBUG move_to_position: checking ancestry node=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent=NodeId { index1: 6, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.015s DEBUG Move: checking target position node=NodeId { index1: 3, stamp: NodeStamp(0) } position=0 children_count=0 [INFO] [stdout]  0.015s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.015s DEBUG Generated Move patch node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) to=NodeRef(NodePath([0, 0, 0])) detach_to_slot=None [INFO] [stdout]  0.015s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n6]
[INFO] [stdout] [n3] TEXT: "old" [INFO] [stdout] [n6]
[INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
[INFO] [stdout] [n8] TEXT: "" [INFO] [stdout] [n2]
[INFO] [stdout] [INFO] [stdout]  0.015s DEBUG Processing operation op=Delete(a:2) [INFO] [stdout]  0.015s DEBUG Delete operation node_a=NodeId { index1: 2, stamp: NodeStamp(0) } _node_kind=Element(Atom('div' type=inline), Html) [INFO] [stdout]  0.015s DEBUG get_node_ref: computed path node=NodeId { index1: 2, stamp: NodeStamp(0) } path=[1] [INFO] [stdout]  0.015s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n6]
[INFO] [stdout] [n3] TEXT: "old" [INFO] [stdout] [n6]
[INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n9] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.016s DEBUG Original bytes: [228, 184, 173, 230, 150, 135, 10] [INFO] [stdout]  0.016s DEBUG JSON: "中文\n" [INFO] [stdout] test diff::tests::test_adoption_agency_block_in_formatting ... ignored, fixed in fork, but not in upstream [INFO] [stdout] test diff::tests::test_arena_dom_diff ...  0.016s DEBUG matching pairs: 2 [INFO] [stdout] ok [INFO] [stdout]  0.016s DEBUG arena_dom cinereus diff complete ops_count=5 matched_pairs=2 [INFO] [stdout] test diff::tests::test_arena_dom_diff_add_element ... ok [INFO] [stdout]  0.016s DEBUG Roundtrip bytes: [228, 184, 173, 230, 150, 135, 10] [INFO] [stdout]  0.016s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2] [INFO] [stdout] [n3] TEXT: "old" [INFO] [stdout] [n2] [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout] test diff::tests::test_diff_attr_change ... ok [INFO] [stdout]  0.016s DEBUG Processing operation op=SetText(a:3 → b:5 text=new_text) [INFO] [stdout]  0.016s DEBUG Processing operation op=Insert(b:6 @1 under b:4) [INFO] [stdout]  0.016s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=1 detach_to_slot=None [INFO] [stdout]  0.016s DEBUG Parent children after Insert children=[(0, NodeId { index1: 2, stamp: NodeStamp(0) }, Element(Atom('strong' type=inline), Html)), (1, NodeId { index1: 6, stamp: NodeStamp(0) }, Element(Atom('strong' type=inline), Html))] [INFO] [stdout]  0.016s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2] [INFO] [stdout] [n3] TEXT: "old" [INFO] [stdout] [n2] [INFO] [stdout] [n6] [INFO] [stdout] [n6] [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.016s DEBUG Processing operation op=Insert(b:7 #text @0 under b:6) [INFO] [stdout]  0.016s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 6, stamp: NodeStamp(0) } position=0 detach_to_slot=None [INFO] [stdout]  0.016s DEBUG Parent children after Insert children=[(0, NodeId { index1: 7, stamp: NodeStamp(0) }, Text)] [INFO] [stdout]  0.016s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2] [INFO] [stdout] [n3] TEXT: "old" [INFO] [stdout] [n2] [INFO] [stdout] [n6] [INFO] [stdout] [n7] TEXT: "updated" [INFO] [stdout] [n6] [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.016s DEBUG Processing operation op=Move(a:3 → b:5 @0 under b:4) [INFO] [stdout]  0.016s DEBUG Move: starting node_a=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 4, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 1, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.016s DEBUG Move: computing from reference for node node_a=NodeId { index1: 3, stamp: NodeStamp(0) } [INFO] [stdout]  0.016s DEBUG get_node_ref: computed path node=NodeId { index1: 3, stamp: NodeStamp(0) } path=[0, 0, 0] [INFO] [stdout]  0.016s DEBUG Move: computed from reference node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([0, 0, 0])) [INFO] [stdout]  0.017s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 2, stamp: NodeStamp(0) }, Element(Atom('strong' type=inline), Html)), (1, NodeId { index1: 6, stamp: NodeStamp(0) }, Element(Atom('strong' type=inline), Html))] [INFO] [stdout]  0.017s DEBUG move_to_position: checking ancestry node=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent=NodeId { index1: 1, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.017s DEBUG Move: checking target position node=NodeId { index1: 3, stamp: NodeStamp(0) } position=0 children_count=2 [INFO] [stdout]  0.017s DEBUG Move: found occupant at target position occupant=NodeId { index1: 2, stamp: NodeStamp(0) } _occupant_kind=Element(Atom('strong' type=inline), Html) [INFO] [stdout]  0.017s DEBUG created new slot slot_num=1 [INFO] [stdout]  0.017s DEBUG detached node to slot node=NodeId { index1: 2, stamp: NodeStamp(0) } slot_num=1 [INFO] [stdout]  0.017s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 2, stamp: NodeStamp(0) } slot=1 [INFO] [stdout]  0.017s DEBUG Generated Move patch node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([0, 0, 0])) to=NodeRef(NodePath([0, 0])) detach_to_slot=Some(1) [INFO] [stdout] test diff::tests::test_diff_actual_fuzzer_crash ... ok [INFO] [stdout]  0.017s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n3] TEXT: "old" [INFO] [stdout] [n6] [INFO] [stdout] [n7] TEXT: "updated" [INFO] [stdout] [n6] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2] [INFO] [stdout] [n8] TEXT: "" [INFO] [stdout] [n2] [INFO] [stdout] [INFO] [stdout]  0.017s DEBUG Processing operation op=Delete(a:2) [INFO] [stdout] test diff::tests::test_diff_remove_all_children ...  0.017s DEBUG Delete operation node_a=NodeId { index1: 2, stamp: NodeStamp(0) } _node_kind=Element(Atom('strong' type=inline), Html) [INFO] [stdout] ok [INFO] [stdout]  0.017s DEBUG get_node_ref: computed path node=NodeId { index1: 2, stamp: NodeStamp(0) } path=[1] [INFO] [stdout] test diff::tests::test_diff_text_change ... ok [INFO] [stdout]  0.017s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n3] TEXT: "old" [INFO] [stdout] [n6] [INFO] [stdout] [n7] TEXT: "updated" [INFO] [stdout] [n6] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n10] TEXT: "" [INFO] [stdout] [INFO] [stdout] test diff::tests::test_foster_parent_content_in_tbody ... ok [INFO] [stdout] test diff::tests::test_facet_json_unicode_escape_bug ... ok [INFO] [stdout]  0.017s DEBUG Patches: [ [INFO] [stdout] SetText "new_text" @[0, 0, 0], [INFO] [stdout] Insert @[0, 1], [INFO] [stdout] Insert text "updated" @[0, 1, 0], [INFO] [stdout] Move [0, 0, 0] → [0, 0] →slot1, [INFO] [stdout] Remove @[1], [INFO] [stdout] ] [INFO] [stdout]  0.017s DEBUG Applying patch: SetText "new_text" @[0, 0, 0] [INFO] [stdout]  0.017s DEBUG Applying patch: Insert @[0, 1] [INFO] [stdout]  0.017s DEBUG insert_at: path=[0, 1] parent= pos=1 [INFO] [stdout]  0.017s DEBUG insert_at_position: under at pos 1 (has 1 children) [INFO] [stdout]  0.017s DEBUG Applying patch: Insert text "updated" @[0, 1, 0] [INFO] [stdout]  0.017s DEBUG insert_at: path=[0, 1, 0] parent= pos=0 [INFO] [stdout]  0.017s DEBUG insert_at_position: text("updated") under at pos 0 (has 0 children) [INFO] [stdout]  0.017s DEBUG Applying patch: Move [0, 0, 0] → [0, 0] →slot1 [INFO] [stdout]  0.017s DEBUG insert_at: path=[0, 0] parent= pos=0 [INFO] [stdout]  0.017s DEBUG insert_at: detaching child at pos 0 to slot1 [INFO] [stdout]  0.017s DEBUG insert_at_position: text("new_text") under at pos 0 (has 1 children) [INFO] [stdout]  0.017s DEBUG Applying patch: Remove @[1] [INFO] [stdout]  0.017s DEBUG Result: new_textupdated [INFO] [stdout]  0.017s DEBUG Expected: new_textupdated [INFO] [stdout]  0.017s DEBUG Old HTML parsed: Document { [INFO] [stdout] arena: Arena { [INFO] [stdout] nodes: [ [INFO] [stdout] Node { [INFO] [stdout] parent: None, [INFO] [stdout] previous_sibling: None, [INFO] [stdout] next_sibling: None, [INFO] [stdout] first_child: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 2, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] last_child: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 2, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] data: Data( [INFO] [stdout] NodeData { [INFO] [stdout] kind: Document, [INFO] [stdout] ns: Html, [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] Node { [INFO] [stdout] parent: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 1, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] previous_sibling: None, [INFO] [stdout] next_sibling: None, [INFO] [stdout] first_child: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 3, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] last_child: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 4, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] data: Data( [INFO] [stdout] NodeData { [INFO] [stdout] kind: Element( [INFO] [stdout] ElementData { [INFO] [stdout] tag: Atom('html' type=inline), [INFO] [stdout] attrs: [], [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] ns: Html, [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] Node { [INFO] [stdout] parent: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 2, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] previous_sibling: None, [INFO] [stdout] next_sibling: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 4, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] first_child: None, [INFO] [stdout] last_child: None, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] data: Data( [INFO] [stdout] NodeData { [INFO] [stdout] kind: Element( [INFO] [stdout] ElementData { [INFO] [stdout] tag: Atom('head' type=inline), [INFO] [stdout] attrs: [], [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] ns: Html, [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] Node { [INFO] [stdout] parent: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 2, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] previous_sibling: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 3, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] next_sibling: None, [INFO] [stdout] first_child: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 5, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] last_child: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 5, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] data: Data( [INFO] [stdout] NodeData { [INFO] [stdout] kind: Element( [INFO] [stdout] ElementData { [INFO] [stdout] tag: Atom('body' type=inline), [INFO] [stdout] attrs: [], [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] ns: Html, [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] Node { [INFO] [stdout] parent: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 4, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] previous_sibling: None, [INFO] [stdout] next_sibling: None, [INFO] [stdout] first_child: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 6, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] last_child: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 7, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] data: Data( [INFO] [stdout] NodeData { [INFO] [stdout] kind: Element( [INFO] [stdout] ElementData { [INFO] [stdout] tag: Atom('em' type=inline), [INFO] [stdout] attrs: [], [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] ns: Html, [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] Node { [INFO] [stdout] parent: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 5, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] previous_sibling: None, [INFO] [stdout] next_sibling: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 7, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] first_child: None, [INFO] [stdout] last_child: None, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] data: Data( [INFO] [stdout] NodeData { [INFO] [stdout] kind: Text( [INFO] [stdout] " ", [INFO] [stdout] ), [INFO] [stdout] ns: Html, [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] Node { [INFO] [stdout] parent: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 5, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] previous_sibling: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 6, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] next_sibling: None, [INFO] [stdout] first_child: None, [INFO] [stdout] last_child: None, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] data: Data( [INFO] [stdout] NodeData { [INFO] [stdout] kind: Element( [INFO] [stdout] ElementData { [INFO] [stdout] tag: Atom('v<' type=inline), [INFO] [stdout] attrs: [ [INFO] [stdout] ( [INFO] [stdout] QualName { [INFO] [stdout] prefix: None, [INFO] [stdout] ns: Atom('' type=static), [INFO] [stdout] local: Atom('<<' type=inline), [INFO] [stdout] }, [INFO] [stdout] "", [INFO] [stdout] ), [INFO] [stdout] ( [INFO] [stdout] QualName { [INFO] [stdout] prefix: None, [INFO] [stdout] ns: Atom('' type=static), [INFO] [stdout] local: Atom('v<' type=inline), [INFO] [stdout] }, [INFO] [stdout] "", [INFO] [stdout] ), [INFO] [stdout] ( [INFO] [stdout] QualName { [INFO] [stdout] prefix: None, [INFO] [stdout] ns: Atom('' type=static), [INFO] [stdout] local: Atom('em' type=inline), [INFO] [stdout] }, [INFO] [stdout] "", [INFO] [stdout] ), [INFO] [stdout] ], [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] ns: Html, [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ], [INFO] [stdout] first_free_slot: None, [INFO] [stdout] last_free_slot: None, [INFO] [stdout] }, [INFO] [stdout] root: NodeId { [INFO] [stdout] index1: 2, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] errors: [ [INFO] [stdout] "Saw < in state BeforeAttributeName", [INFO] [stdout] "Saw < in state AttributeName", [INFO] [stdout] "Saw < in state AttributeName", [INFO] [stdout] "Saw e in state SelfClosingStartTag", [INFO] [stdout] "Unexpected open tag at end of body", [INFO] [stdout] ], [INFO] [stdout] doctype: Some( [INFO] [stdout] "html", [INFO] [stdout] ), [INFO] [stdout] } [INFO] [stdout] test diff::tests::test_foster_parent_content_in_tr ... ok [INFO] [stdout] test diff::tests::test_build_tree_simple ... ok [INFO] [stdout] test diff::tests::test_foster_parent_text_in_table ... ok [INFO] [stdout] test diff::tests::test_foster_parent_element_in_table ... ok [INFO] [stdout] test diff::tests::test_foster_parent_whitespace ... ok [INFO] [stdout] test diff::tests::test_diff_complex_fuzzer_case ... ok [INFO] [stdout] test diff::tests::test_foster_parent_multiple_items ... ok [INFO] [stdout] test diff::tests::test_foster_parent_nested_tables ... ok [INFO] [stdout] test diff::tests::test_foster_parent_preserves_order ... ok [INFO] [stdout] test diff::tests::test_foster_parent_spec_example ... ok [INFO] [stdout]  0.018s DEBUG New HTML parsed: Document { [INFO] [stdout] arena: Arena { [INFO] [stdout] nodes: [ [INFO] [stdout] Node { [INFO] [stdout] parent: None, [INFO] [stdout] previous_sibling: None, [INFO] [stdout] next_sibling: None, [INFO] [stdout] first_child: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 2, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] last_child: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 2, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] data: Data( [INFO] [stdout] NodeData { [INFO] [stdout] kind: Document, [INFO] [stdout] ns: Html, [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] Node { [INFO] [stdout] parent: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 1, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] previous_sibling: None, [INFO] [stdout] next_sibling: None, [INFO] [stdout] first_child: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 3, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] last_child: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 4, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] data: Data( [INFO] [stdout] NodeData { [INFO] [stdout] kind: Element( [INFO] [stdout] ElementData { [INFO] [stdout] tag: Atom('html' type=inline), [INFO] [stdout] attrs: [], [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] ns: Html, [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] Node { [INFO] [stdout] parent: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 2, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] previous_sibling: None, [INFO] [stdout] next_sibling: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 4, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] first_child: None, [INFO] [stdout] last_child: None, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] data: Data( [INFO] [stdout] NodeData { [INFO] [stdout] kind: Element( [INFO] [stdout] ElementData { [INFO] [stdout] tag: Atom('head' type=inline), [INFO] [stdout] attrs: [], [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] ns: Html, [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] Node { [INFO] [stdout] parent: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 2, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] previous_sibling: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 3, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] next_sibling: None, [INFO] [stdout] first_child: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 5, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] last_child: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 5, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] data: Data( [INFO] [stdout] NodeData { [INFO] [stdout] kind: Element( [INFO] [stdout] ElementData { [INFO] [stdout] tag: Atom('body' type=inline), [INFO] [stdout] attrs: [], [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] ns: Html, [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] Node { [INFO] [stdout] parent: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 4, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] previous_sibling: None, [INFO] [stdout] next_sibling: None, [INFO] [stdout] first_child: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 6, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] last_child: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 7, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] data: Data( [INFO] [stdout] NodeData { [INFO] [stdout] kind: Element( [INFO] [stdout] ElementData { [INFO] [stdout] tag: Atom('li' type=inline), [INFO] [stdout] attrs: [], [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] ns: Html, [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] Node { [INFO] [stdout] parent: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 5, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] previous_sibling: None, [INFO] [stdout] next_sibling: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 7, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] first_child: None, [INFO] [stdout] last_child: None, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] data: Data( [INFO] [stdout] NodeData { [INFO] [stdout] kind: Text( [INFO] [stdout] "a< ", [INFO] [stdout] ), [INFO] [stdout] ns: Html, [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] Node { [INFO] [stdout] parent: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 5, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] previous_sibling: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 6, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] next_sibling: None, [INFO] [stdout] first_child: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 8, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] last_child: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 8, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] data: Data( [INFO] [stdout] NodeData { [INFO] [stdout] kind: Element( [INFO] [stdout] ElementData { [INFO] [stdout] tag: Atom('v<' type=inline), [INFO] [stdout] attrs: [ [INFO] [stdout] ( [INFO] [stdout] QualName { [INFO] [stdout] prefix: None, [INFO] [stdout] ns: Atom('' type=static), [INFO] [stdout] local: Atom('<<<' type=inline), [INFO] [stdout] }, [INFO] [stdout] "", [INFO] [stdout] ), [INFO] [stdout] ( [INFO] [stdout] QualName { [INFO] [stdout] prefix: None, [INFO] [stdout] ns: Atom('' type=static), [INFO] [stdout] local: Atom('li' type=inline), [INFO] [stdout] }, [INFO] [stdout] "", [INFO] [stdout] ), [INFO] [stdout] ], [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] ns: Html, [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] Node { [INFO] [stdout] parent: Some( [INFO] [stdout] NodeId { [INFO] [stdout] index1: 7, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] previous_sibling: None, [INFO] [stdout] next_sibling: None, [INFO] [stdout] first_child: None, [INFO] [stdout] last_child: None, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] data: Data( [INFO] [stdout] NodeData { [INFO] [stdout] kind: Element( [INFO] [stdout] ElementData { [INFO] [stdout] tag: Atom('img' type=inline), [INFO] [stdout] attrs: [ [INFO] [stdout] ( [INFO] [stdout] QualName { [INFO] [stdout] prefix: None, [INFO] [stdout] ns: Atom('' type=static), [INFO] [stdout] local: Atom('src' type=inline), [INFO] [stdout] }, [INFO] [stdout] "", [INFO] [stdout] ), [INFO] [stdout] ], [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] ns: Html, [INFO] [stdout] }, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] ], [INFO] [stdout] first_free_slot: None, [INFO] [stdout] last_free_slot: None, [INFO] [stdout] }, [INFO] [stdout] root: NodeId { [INFO] [stdout] index1: 2, [INFO] [stdout] stamp: NodeStamp( [INFO] [stdout] 0, [INFO] [stdout] ), [INFO] [stdout] }, [INFO] [stdout] errors: [ [INFO] [stdout] "Saw in state TagOpen", [INFO] [stdout] "Saw < in state BeforeAttributeName", [INFO] [stdout] "Saw < in state AttributeName", [INFO] [stdout] "Saw < in state AttributeName", [INFO] [stdout] "Saw l in state SelfClosingStartTag", [INFO] [stdout] "Unexpected open tag at end of body", [INFO] [stdout] ], [INFO] [stdout] doctype: Some( [INFO] [stdout] "html", [INFO] [stdout] ), [INFO] [stdout] } [INFO] [stdout]  0.019s DEBUG === Initial === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
[INFO] [stdout] [n3]
[INFO] [stdout] [n4]
[INFO] [stdout] [n4]
[INFO] [stdout] [n3]
[INFO] [stdout] [n2]
[INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.019s DEBUG move_to_position: checking ancestry node=NodeId { index1: 2, stamp: NodeStamp(0) } new_parent=NodeId { index1: 3, stamp: NodeStamp(0) } is_ancestor=true [INFO] [stdout]  0.019s DEBUG replace_with_placeholder: replacing node node=NodeId { index1: 2, stamp: NodeStamp(0) } node_kind=
[INFO] [stdout]  0.019s DEBUG replace_with_placeholder: moving children to placeholder children_count=1 [INFO] [stdout]  0.019s DEBUG replace_with_placeholder: done placeholder=NodeId { index1: 7, stamp: NodeStamp(0) } [INFO] [stdout]  0.019s DEBUG Move: checking target position node=NodeId { index1: 2, stamp: NodeStamp(0) } position=0 children_count=1 [INFO] [stdout]  0.019s DEBUG Move: found occupant at target position occupant=NodeId { index1: 4, stamp: NodeStamp(0) } _occupant_kind=Element(Atom('div' type=inline), Html) [INFO] [stdout]  0.019s DEBUG created new slot slot_num=1 [INFO] [stdout]  0.019s DEBUG matching pairs: 9 [INFO] [stdout]  0.019s DEBUG detached node to slot node=NodeId { index1: 4, stamp: NodeStamp(0) } slot_num=1 [INFO] [stdout]  0.019s DEBUG arena_dom cinereus diff complete ops_count=25 matched_pairs=9 [INFO] [stdout]  0.019s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 4, stamp: NodeStamp(0) } slot=1 [INFO] [stdout]  0.019s DEBUG === After move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n7] TEXT: "" [INFO] [stdout] [n3]
[INFO] [stdout] [n2]
[INFO] [stdout] [n2]
[INFO] [stdout] [n3]
[INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n4]
[INFO] [stdout] [n4]
[INFO] [stdout] [INFO] [stdout]  0.019s DEBUG matching pairs: 2 [INFO] [stdout]  0.019s DEBUG arena_dom cinereus diff complete ops_count=6 matched_pairs=2 [INFO] [stdout]  0.019s DEBUG Path to div_a after move path=[0, 0, 0, 0] [INFO] [stdout]  0.019s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
    [INFO] [stdout] [n2]
[INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.019s DEBUG Processing operation op=UpdateProps(a:2 start: → 93) [INFO] [stdout] test diff::tests::test_move_parent_under_child_no_cycle ... ok [INFO] [stdout]  0.019s DEBUG Processing operation op=Insert(b:5
    @0 under b:4) [INFO] [stdout]  0.019s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
    [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

    [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n4]

    [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n7]

    [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n11] TEXT: " and " [INFO] [stdout] [n12] [INFO] [stdout] [n13] TEXT: "italic" [INFO] [stdout] [n12] [INFO] [stdout] [n14] TEXT: " text." [INFO] [stdout] [n7]

    [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n16]

    [INFO] [stdout] [n17] TEXT: "Second paragraph with a " [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "link" [INFO] [stdout] [n18] [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

    [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n2]
    [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.019s DEBUG Processing operation op=SetText(a:3 → b:6 text= [INFO] [stdout] [INFO] [stdout] ) [INFO] [stdout]  0.019s DEBUG created new slot slot_num=1 [INFO] [stdout]  0.019s DEBUG Processing operation op=SetText(a:5 → b:11 text= and content) [INFO] [stdout]  0.019s DEBUG detached node to slot node=NodeId { index1: 2, stamp: NodeStamp(0) } slot_num=1 [INFO] [stdout]  0.019s DEBUG Processing operation op=SetText(a:6 → b:14 text=Second paragraph with a .) [INFO] [stdout]  0.019s DEBUG Processing operation op=Insert(b:5
    @0 under b:4) [INFO] [stdout]  0.019s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=0 detach_to_slot=Some(1) [INFO] [stdout]  0.019s DEBUG matching pairs: 2 [INFO] [stdout]  0.019s DEBUG created new slot slot_num=1 [INFO] [stdout]  0.019s DEBUG Parent children after Insert children=[(0, NodeId { index1: 5, stamp: NodeStamp(0) }, Element(Atom('ol' type=inline), Html))] [INFO] [stdout]  0.019s DEBUG arena_dom cinereus diff complete ops_count=7 matched_pairs=2 [INFO] [stdout]  0.019s DEBUG detached node to slot node=NodeId { index1: 2, stamp: NodeStamp(0) } slot_num=1 [INFO] [stdout]  0.019s DEBUG matching pairs: 3 [INFO] [stdout]  0.019s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n5]
      [INFO] [stdout] [n5]
    [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
      [INFO] [stdout] [n2]
    [INFO] [stdout] [INFO] [stdout]  0.019s DEBUG arena_dom cinereus diff complete ops_count=9 matched_pairs=3 [INFO] [stdout]  0.019s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=0 detach_to_slot=Some(1) [INFO] [stdout]  0.019s DEBUG Processing operation op=Insert(b:7
      @2 under b:4) [INFO] [stdout]  0.019s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2] [INFO] [stdout] [n3] TEXT: " " [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n2] [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.019s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=2 detach_to_slot=None [INFO] [stdout]  0.019s DEBUG Processing operation op=SetText(a:3 → b:6 text=a< ) [INFO] [stdout]  0.019s DEBUG Parent children after Insert children=[(0, NodeId { index1: 5, stamp: NodeStamp(0) }, Element(Atom('ol' type=inline), Html)), (1, NodeId { index1: 8, stamp: NodeStamp(0) }, Text), (2, NodeId { index1: 7, stamp: NodeStamp(0) }, Element(Atom('ol' type=inline), Html))] [INFO] [stdout]  0.019s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2] [INFO] [stdout] [n3] TEXT: "n<&nhnnz\"\"\"\" v" [INFO] [stdout] [n2] [INFO] [stdout] [n4] [INFO] [stdout] [n5] TEXT: "< bit" [INFO] [stdout] [n6] [INFO] [stdout] [n6] [INFO] [stdout] [n4] [INFO] [stdout] [n7] [INFO] [stdout] [n7] [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.019s DEBUG Processing operation op=Insert(b:5
    1. @0 under b:4) [INFO] [stdout]  0.019s DEBUG Processing operation op=SetText(a:3 → b:5 text=n) [INFO] [stdout]  0.019s DEBUG created new slot slot_num=1 [INFO] [stdout]  0.019s DEBUG Processing operation op=SetText(a:5 → b:7 text=aaa) [INFO] [stdout]  0.019s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n5]
        [INFO] [stdout] [n5]
      [INFO] [stdout] [n8] TEXT: "" [INFO] [stdout] [n7]
        [INFO] [stdout] [n7]
      [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
        [INFO] [stdout] [n2]
      [INFO] [stdout] [INFO] [stdout]  0.019s DEBUG Processing operation op=Insert(b:6 @1 under b:4) [INFO] [stdout]  0.019s DEBUG detached node to slot node=NodeId { index1: 2, stamp: NodeStamp(0) } slot_num=1 [INFO] [stdout]  0.019s DEBUG Processing operation op=Insert(b:8
        @0 under b:7) [INFO] [stdout]  0.019s DEBUG created new slot slot_num=1 [INFO] [stdout]  0.019s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=0 detach_to_slot=Some(1) [INFO] [stdout]  0.019s DEBUG detached node to slot node=NodeId { index1: 4, stamp: NodeStamp(0) } slot_num=1 [INFO] [stdout]  0.019s DEBUG Parent children after Insert children=[(0, NodeId { index1: 7, stamp: NodeStamp(0) }, Element(Atom('li' type=inline), Html))] [INFO] [stdout]  0.019s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 7, stamp: NodeStamp(0) } position=0 detach_to_slot=None [INFO] [stdout]  0.019s DEBUG Parent children after Insert children=[(0, NodeId { index1: 9, stamp: NodeStamp(0) }, Element(Atom('ol' type=inline), Html))] [INFO] [stdout]  0.019s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=1 detach_to_slot=Some(1) [INFO] [stdout]  0.019s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n7]
      1. [INFO] [stdout] [n7]
      2. [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2] [INFO] [stdout] [n3] TEXT: " " [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n2] [INFO] [stdout] [INFO] [stdout]  0.019s DEBUG Parent children after Insert children=[(0, NodeId { index1: 2, stamp: NodeStamp(0) }, Element(Atom('strong' type=inline), Html)), (1, NodeId { index1: 10, stamp: NodeStamp(0) }, Element(Atom('strong' type=inline), Html)), (2, NodeId { index1: 7, stamp: NodeStamp(0) }, Element(Atom('img' type=inline), Html))] [INFO] [stdout]  0.019s DEBUG Processing operation op=Insert(b:7 @1 under b:5) [INFO] [stdout]  0.019s DEBUG matching pairs: 3 [INFO] [stdout]  0.019s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n5]
          [INFO] [stdout] [n5]
        [INFO] [stdout] [n8] TEXT: "" [INFO] [stdout] [n7]
          [INFO] [stdout] [n9]
            [INFO] [stdout] [n9]
          [INFO] [stdout] [n7]
        [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
          [INFO] [stdout] [n2]
        [INFO] [stdout] [INFO] [stdout]  0.019s DEBUG Processing operation op=Insert(b:9 @0 under b:8) [INFO] [stdout]  0.019s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 7, stamp: NodeStamp(0) } position=1 detach_to_slot=None [INFO] [stdout]  0.019s DEBUG arena_dom cinereus diff complete ops_count=0 matched_pairs=3 [INFO] [stdout]  0.019s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2] [INFO] [stdout] [n3] TEXT: "n<&nhnnz\"\"\"\" v" [INFO] [stdout] [n2] [INFO] [stdout] [n10] [INFO] [stdout] [n10] [INFO] [stdout] [n7] [INFO] [stdout] [n7] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n4] [INFO] [stdout] [n5] TEXT: "< bit" [INFO] [stdout] [n6] [INFO] [stdout] [n6] [INFO] [stdout] [n4] [INFO] [stdout] [INFO] [stdout]  0.019s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 9, stamp: NodeStamp(0) } position=0 detach_to_slot=None [INFO] [stdout]  0.019s DEBUG Processing operation op=Move(a:3 → b:5 @0 under b:4) [INFO] [stdout]  0.019s DEBUG Parent children after Insert children=[(0, NodeId { index1: 10, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 9, stamp: NodeStamp(0) }, Element(Atom('v<' type=inline), Html))] [INFO] [stdout]  0.019s DEBUG Parent children after Insert children=[(0, NodeId { index1: 10, stamp: NodeStamp(0) }, Element(Atom('a' type=inline), Html))] [INFO] [stdout]  0.019s DEBUG Move: starting node_a=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 4, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 1, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.020s DEBUG Move: computing from reference for node node_a=NodeId { index1: 3, stamp: NodeStamp(0) } [INFO] [stdout]  0.019s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n7]
      3. [INFO] [stdout] [n10] TEXT: "" [INFO] [stdout] [n9] [INFO] [stdout] [n9] [INFO] [stdout] [n7]
      4. [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2] [INFO] [stdout] [n3] TEXT: " " [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n2] [INFO] [stdout] [INFO] [stdout]  0.020s DEBUG get_node_ref: computed path node=NodeId { index1: 3, stamp: NodeStamp(0) } path=[0, 0, 0] [INFO] [stdout]  0.019s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n5]
          [INFO] [stdout] [n5]
        [INFO] [stdout] [n8] TEXT: "" [INFO] [stdout] [n7]
          [INFO] [stdout] [n9]
            [INFO] [stdout] [n10] [INFO] [stdout] [n10] [INFO] [stdout] [n9]
          [INFO] [stdout] [n7]
        [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
          [INFO] [stdout] [n2]
        [INFO] [stdout] [INFO] [stdout]  0.020s DEBUG Processing operation op=Insert(b:8 @0 under b:7) [INFO] [stdout]  0.020s DEBUG Move: computed from reference node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([0, 0, 0])) [INFO] [stdout]  0.020s DEBUG Processing operation op=Move(a:2 → b:6 @1 under b:4) [INFO] [stdout]  0.020s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
        [INFO] [stdout] [n3]

        [INFO] [stdout] [n4] TEXT: "chart 1" [INFO] [stdout] [n3]

        [INFO] [stdout] [n2]
        [INFO] [stdout] [n5]
        [INFO] [stdout] [n6]

        [INFO] [stdout] [n7] TEXT: "chart 2" [INFO] [stdout] [n6]

        [INFO] [stdout] [n5]
        [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.020s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 2, stamp: NodeStamp(0) }, Element(Atom('strong' type=inline), Html)), (1, NodeId { index1: 10, stamp: NodeStamp(0) }, Element(Atom('strong' type=inline), Html)), (2, NodeId { index1: 7, stamp: NodeStamp(0) }, Element(Atom('img' type=inline), Html))] [INFO] [stdout]  0.020s DEBUG Move: starting node_a=NodeId { index1: 2, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 4, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 1, stamp: NodeStamp(0) } new_position=1 [INFO] [stdout]  0.020s DEBUG Move: computing from reference for node node_a=NodeId { index1: 2, stamp: NodeStamp(0) } [INFO] [stdout]  0.020s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 9, stamp: NodeStamp(0) } position=0 detach_to_slot=None [INFO] [stdout]  0.020s DEBUG get_node_ref: computed path node=NodeId { index1: 2, stamp: NodeStamp(0) } path=[1] [INFO] [stdout]  0.020s DEBUG move_to_position: checking ancestry node=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent=NodeId { index1: 1, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.020s DEBUG Parent children after Insert children=[(0, NodeId { index1: 11, stamp: NodeStamp(0) }, Element(Atom('img' type=inline), Html))] [INFO] [stdout]  0.020s DEBUG Move: computed from reference node_a=NodeId { index1: 2, stamp: NodeStamp(0) } from=NodeRef(NodePath([1])) [INFO] [stdout]  0.020s DEBUG Move: checking target position node=NodeId { index1: 3, stamp: NodeStamp(0) } position=0 children_count=3 [INFO] [stdout]  0.020s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 5, stamp: NodeStamp(0) }, Element(Atom('ol' type=inline), Html)), (1, NodeId { index1: 8, stamp: NodeStamp(0) }, Text), (2, NodeId { index1: 7, stamp: NodeStamp(0) }, Element(Atom('ol' type=inline), Html))] [INFO] [stdout]  0.020s DEBUG Move: found occupant at target position occupant=NodeId { index1: 2, stamp: NodeStamp(0) } _occupant_kind=Element(Atom('strong' type=inline), Html) [INFO] [stdout]  0.020s DEBUG move_to_position: checking ancestry node=NodeId { index1: 2, stamp: NodeStamp(0) } new_parent=NodeId { index1: 1, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.020s DEBUG created new slot slot_num=2 [INFO] [stdout]  0.020s DEBUG Move: checking target position node=NodeId { index1: 2, stamp: NodeStamp(0) } position=1 children_count=3 [INFO] [stdout]  0.020s DEBUG detached node to slot node=NodeId { index1: 2, stamp: NodeStamp(0) } slot_num=2 [INFO] [stdout]  0.020s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n7]
      5. [INFO] [stdout] [n10] TEXT: "" [INFO] [stdout] [n9] [INFO] [stdout] [n11] [INFO] [stdout] [n11] [INFO] [stdout] [n9] [INFO] [stdout] [n7]
      6. [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2] [INFO] [stdout] [n3] TEXT: " " [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n2] [INFO] [stdout] [INFO] [stdout]  0.020s DEBUG Move: found occupant at target position occupant=NodeId { index1: 8, stamp: NodeStamp(0) } _occupant_kind=Text [INFO] [stdout]  0.020s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 2, stamp: NodeStamp(0) } slot=2 [INFO] [stdout]  0.020s DEBUG Processing operation op=Move(a:3 → b:6 @0 under b:5) [INFO] [stdout]  0.020s DEBUG created new slot slot_num=2 [INFO] [stdout]  0.020s DEBUG matching pairs: 2 [INFO] [stdout]  0.020s DEBUG matching pairs: 2 [INFO] [stdout]  0.020s DEBUG Generated Move patch node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([0, 0, 0])) to=NodeRef(NodePath([0, 0])) detach_to_slot=Some(2) [INFO] [stdout]  0.020s DEBUG Move: starting node_a=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 5, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 7, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.020s DEBUG detached node to slot node=NodeId { index1: 8, stamp: NodeStamp(0) } slot_num=2 [INFO] [stdout]  0.020s DEBUG arena_dom cinereus diff complete ops_count=0 matched_pairs=2 [INFO] [stdout]  0.020s DEBUG Move: computing from reference for node node_a=NodeId { index1: 3, stamp: NodeStamp(0) } [INFO] [stdout]  0.020s DEBUG arena_dom cinereus diff complete ops_count=0 matched_pairs=2 [INFO] [stdout]  0.020s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 8, stamp: NodeStamp(0) } slot=2 [INFO] [stdout]  0.020s DEBUG get_node_ref: computed path node=NodeId { index1: 3, stamp: NodeStamp(0) } path=[1, 0] [INFO] [stdout]  0.020s DEBUG Generated Move patch node_a=NodeId { index1: 2, stamp: NodeStamp(0) } from=NodeRef(NodePath([1])) to=NodeRef(NodePath([0, 1])) detach_to_slot=Some(2) [INFO] [stdout]  0.020s DEBUG Move: computed from reference node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) [INFO] [stdout]  0.020s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n3] TEXT: "n<&nhnnz\"\"\"\" v" [INFO] [stdout] [n10] [INFO] [stdout] [n10] [INFO] [stdout] [n7] [INFO] [stdout] [n7] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n4] [INFO] [stdout] [n5] TEXT: "< bit" [INFO] [stdout] [n6] [INFO] [stdout] [n6] [INFO] [stdout] [n4] [INFO] [stdout] Slot 2: [INFO] [stdout] [n2] [INFO] [stdout] [n12] TEXT: "" [INFO] [stdout] [n2] [INFO] [stdout] [INFO] [stdout]  0.020s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 10, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 9, stamp: NodeStamp(0) }, Element(Atom('v<' type=inline), Html))] [INFO] [stdout]  0.020s DEBUG Processing operation op=Move(a:5 → b:7 @0 under b:6) [INFO] [stdout]  0.020s DEBUG move_to_position: checking ancestry node=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent=NodeId { index1: 7, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.020s DEBUG Move: starting node_a=NodeId { index1: 5, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 6, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 10, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.020s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n5]
          [INFO] [stdout] [n5]
        [INFO] [stdout] [n2]
          [INFO] [stdout] [n2]
        [INFO] [stdout] [n7]
          [INFO] [stdout] [n9]
            [INFO] [stdout] [n10] [INFO] [stdout] [n10] [INFO] [stdout] [n9]
          [INFO] [stdout] [n7]
        [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] Slot 2: [INFO] [stdout] [n8] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.020s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
        [INFO] [stdout] [n3]

        [INFO] [stdout] [n4] TEXT: "old" [INFO] [stdout] [n3]

        [INFO] [stdout] [n2]
        [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.020s DEBUG Move: checking target position node=NodeId { index1: 3, stamp: NodeStamp(0) } position=0 children_count=2 [INFO] [stdout]  0.020s DEBUG Move: computing from reference for node node_a=NodeId { index1: 5, stamp: NodeStamp(0) } [INFO] [stdout]  0.020s DEBUG Move: found occupant at target position occupant=NodeId { index1: 10, stamp: NodeStamp(0) } _occupant_kind=Text [INFO] [stdout]  0.020s DEBUG get_node_ref: computed path node=NodeId { index1: 5, stamp: NodeStamp(0) } path=[1, 0] [INFO] [stdout]  0.020s DEBUG created new slot slot_num=2 [INFO] [stdout]  0.020s DEBUG Move: computed from reference node_a=NodeId { index1: 5, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) [INFO] [stdout]  0.020s DEBUG Patches: [ [INFO] [stdout] UpdateProps @[0, 0] (1 changes), [INFO] [stdout] Insert
          @[0, 0] (1 attrs) →slot1, [INFO] [stdout] Insert
            @[0, 2] (1 attrs), [INFO] [stdout] Insert
              @[0, 2, 0] (1 attrs), [INFO] [stdout] Insert @[0, 2, 0, 0] (1 attrs), [INFO] [stdout] Move [1] → [0, 1] →slot2, [INFO] [stdout] ] [INFO] [stdout]  0.020s DEBUG Parent children BEFORE Move children=[] [INFO] [stdout]  0.020s DEBUG detached node to slot node=NodeId { index1: 10, stamp: NodeStamp(0) } slot_num=2 [INFO] [stdout]  0.020s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
              [INFO] [stdout] [n3]
              [INFO] [stdout] [n4]
                [INFO] [stdout] [n5]
              • [INFO] [stdout] [n6] TEXT: "item 1" [INFO] [stdout] [n5]
              • [INFO] [stdout] [n7]
              • [INFO] [stdout] [n8] TEXT: "item 2" [INFO] [stdout] [n7]
              • [INFO] [stdout] [n4]
              [INFO] [stdout] [n3]
              [INFO] [stdout] [n2]
              [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.020s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 10, stamp: NodeStamp(0) } slot=2 [INFO] [stdout]  0.020s DEBUG move_to_position: checking ancestry node=NodeId { index1: 5, stamp: NodeStamp(0) } new_parent=NodeId { index1: 10, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.020s DEBUG Move: checking target position node=NodeId { index1: 5, stamp: NodeStamp(0) } position=0 children_count=0 [INFO] [stdout]  0.020s DEBUG Generated Move patch node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) to=NodeRef(NodePath([0, 0, 0])) detach_to_slot=Some(2) [INFO] [stdout]  0.020s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.020s DEBUG Generated Move patch node_a=NodeId { index1: 5, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) to=NodeRef(NodePath([0, 1, 0])) detach_to_slot=None [INFO] [stdout]  0.020s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n7]
            1. [INFO] [stdout] [n3] TEXT: " " [INFO] [stdout] [n9] [INFO] [stdout] [n11] [INFO] [stdout] [n11] [INFO] [stdout] [n9] [INFO] [stdout] [n7]
            2. [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2] [INFO] [stdout] [n12] TEXT: "" [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n2] [INFO] [stdout] Slot 2: [INFO] [stdout] [n10] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.020s DEBUG Processing operation op=Delete(a:4) [INFO] [stdout]  0.020s DEBUG Delete operation node_a=NodeId { index1: 4, stamp: NodeStamp(0) } _node_kind=Element(Atom('v<' type=inline), Html) [INFO] [stdout]  0.020s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n3] TEXT: "n<&nhnnz\"\"\"\" v" [INFO] [stdout] [n10] [INFO] [stdout] [n5] TEXT: "< bit" [INFO] [stdout] [n10] [INFO] [stdout] [n7] [INFO] [stdout] [n7] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n4] [INFO] [stdout] [n14] TEXT: "" [INFO] [stdout] [n6] [INFO] [stdout] [n6] [INFO] [stdout] [n4] [INFO] [stdout] Slot 2: [INFO] [stdout] [n2] [INFO] [stdout] [n12] TEXT: "" [INFO] [stdout] [n2] [INFO] [stdout] [INFO] [stdout]  0.020s DEBUG get_node_ref: computed path node=NodeId { index1: 4, stamp: NodeStamp(0) } path=[1, 1] [INFO] [stdout]  0.020s DEBUG Processing operation op=Delete(a:2) [INFO] [stdout]  0.020s DEBUG Applying patch: UpdateProps @[0, 0] (1 changes) [INFO] [stdout]  0.020s DEBUG Delete operation node_a=NodeId { index1: 2, stamp: NodeStamp(0) } _node_kind=Element(Atom('strong' type=inline), Html) [INFO] [stdout]  0.020s DEBUG UpdateProps: rebuilding attrs old_count=1 changes_count=1 [INFO] [stdout]  0.020s DEBUG get_node_ref: computed path node=NodeId { index1: 2, stamp: NodeStamp(0) } path=[2] [INFO] [stdout]  0.020s DEBUG Applying patch: OpaqueChanged @[0, 0] "

              new

              " [INFO] [stdout]  0.020s DEBUG UpdateProps: processing attr start value=Some("93") [INFO] [stdout]  0.020s DEBUG UpdateProps: final attrs_count=1 [INFO] [stdout]  0.020s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n7]
            3. [INFO] [stdout] [n3] TEXT: " " [INFO] [stdout] [n9] [INFO] [stdout] [n11] [INFO] [stdout] [n11] [INFO] [stdout] [n9] [INFO] [stdout] [n7]
            4. [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2] [INFO] [stdout] [n12] TEXT: "" [INFO] [stdout] [n14] TEXT: "" [INFO] [stdout] [n2] [INFO] [stdout] Slot 2: [INFO] [stdout] [n10] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.020s DEBUG Applying patch: Insert
                @[0, 0] (1 attrs) →slot1 [INFO] [stdout]  0.020s DEBUG Processing operation op=Delete(a:2) [INFO] [stdout]  0.020s DEBUG insert_at: path=[0, 0] parent= pos=0 [INFO] [stdout]  0.020s DEBUG Delete operation node_a=NodeId { index1: 2, stamp: NodeStamp(0) } _node_kind=Element(Atom('em' type=inline), Html) [INFO] [stdout]  0.020s DEBUG insert_at: detaching child
                  at pos 0 to slot1 [INFO] [stdout]  0.020s DEBUG get_node_ref: computed path node=NodeId { index1: 2, stamp: NodeStamp(0) } path=[1] [INFO] [stdout]  0.020s DEBUG insert_at_position:
                    under at pos 0 (has 0 children) [INFO] [stdout]  0.020s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n3] TEXT: "n<&nhnnz\"\"\"\" v" [INFO] [stdout] [n10] [INFO] [stdout] [n5] TEXT: "< bit" [INFO] [stdout] [n10] [INFO] [stdout] [n7] [INFO] [stdout] [n7] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n4] [INFO] [stdout] [n14] TEXT: "" [INFO] [stdout] [n6] [INFO] [stdout] [n6] [INFO] [stdout] [n4] [INFO] [stdout] Slot 2: [INFO] [stdout] [n15] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.020s DEBUG Applying patch: Insert
                      @[0, 2] (1 attrs) [INFO] [stdout]  0.020s DEBUG Processing operation op=Delete(a:6) [INFO] [stdout]  0.020s DEBUG insert_at: path=[0, 2] parent= pos=2 [INFO] [stdout]  0.020s DEBUG Delete operation node_a=NodeId { index1: 6, stamp: NodeStamp(0) } _node_kind=Element(Atom('jva' type=inline), Html) [INFO] [stdout]  0.020s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n7]
                    1. [INFO] [stdout] [n3] TEXT: " " [INFO] [stdout] [n9] [INFO] [stdout] [n11] [INFO] [stdout] [n11] [INFO] [stdout] [n9] [INFO] [stdout] [n7]
                    2. [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n15] TEXT: "" [INFO] [stdout] Slot 2: [INFO] [stdout] [n10] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.020s DEBUG insert_at_position:
                        under at pos 2 (has 1 children) [INFO] [stdout]  0.020s DEBUG get_node_ref: computed path node=NodeId { index1: 6, stamp: NodeStamp(0) } path=[1, 1] [INFO] [stdout]  0.020s DEBUG Filled gap at position 1 with empty text node [INFO] [stdout]  0.020s DEBUG Applying patch: Insert
                          @[0, 2, 0] (1 attrs) [INFO] [stdout]  0.020s DEBUG Patches: [ [INFO] [stdout] SetText "a< " @[0, 0, 0], [INFO] [stdout] Insert
                        1. @[0, 0] →slot1, [INFO] [stdout] Insert @[0, 0, 1] (2 attrs), [INFO] [stdout] Insert @[0, 0, 1, 0] (1 attrs), [INFO] [stdout] Move [1, 0] → [0, 0, 0] →slot2, [INFO] [stdout] Remove @[1, 1], [INFO] [stdout] Remove @[1], [INFO] [stdout] ] [INFO] [stdout]  0.020s DEBUG insert_at: path=[0, 2, 0] parent=
                            pos=0 [INFO] [stdout]  0.020s DEBUG insert_at_position:
                              under
                                at pos 0 (has 0 children) [INFO] [stdout]  0.020s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n3] TEXT: "n<&nhnnz\"\"\"\" v" [INFO] [stdout] [n10] [INFO] [stdout] [n5] TEXT: "< bit" [INFO] [stdout] [n10] [INFO] [stdout] [n7] [INFO] [stdout] [n7] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n4] [INFO] [stdout] [n14] TEXT: "" [INFO] [stdout] [n16] TEXT: "" [INFO] [stdout] [n4] [INFO] [stdout] Slot 2: [INFO] [stdout] [n15] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.020s DEBUG Processing operation op=Delete(a:4) [INFO] [stdout]  0.020s DEBUG Delete operation node_a=NodeId { index1: 4, stamp: NodeStamp(0) } _node_kind=Element(Atom('strong' type=inline), Html) [INFO] [stdout]  0.020s DEBUG get_node_ref: computed path node=NodeId { index1: 4, stamp: NodeStamp(0) } path=[1] [INFO] [stdout]  0.020s DEBUG matching pairs: 2 [INFO] [stdout]  0.020s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n3] TEXT: "n<&nhnnz\"\"\"\" v" [INFO] [stdout] [n10] [INFO] [stdout] [n5] TEXT: "< bit" [INFO] [stdout] [n10] [INFO] [stdout] [n7] [INFO] [stdout] [n7] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n17] TEXT: "" [INFO] [stdout] Slot 2: [INFO] [stdout] [n15] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.020s DEBUG arena_dom cinereus diff complete ops_count=0 matched_pairs=2 [INFO] [stdout]  0.020s DEBUG Processing operation op=Delete(a:7) [INFO] [stdout]  0.020s DEBUG Delete operation node_a=NodeId { index1: 7, stamp: NodeStamp(0) } _node_kind=Element(Atom('img' type=inline), Html) [INFO] [stdout]  0.020s DEBUG Applying patch: SetText "a< " @[0, 0, 0] [INFO] [stdout]  0.020s DEBUG get_node_ref: computed path node=NodeId { index1: 7, stamp: NodeStamp(0) } path=[0, 2] [INFO] [stdout]  0.020s DEBUG Applying patch: Insert
                              1. @[0, 0] →slot1 [INFO] [stdout]  0.020s DEBUG insert_at: path=[0, 0] parent= pos=0 [INFO] [stdout]  0.020s DEBUG insert_at: detaching child at pos 0 to slot1 [INFO] [stdout]  0.020s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
                                [INFO] [stdout] [n3]
                                [INFO] [stdout] [n4] [INFO] [stdout] [n5] TEXT: "old text" [INFO] [stdout] [n4] [INFO] [stdout] [n3]
                                [INFO] [stdout] [n2]
                                [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.020s DEBUG insert_at_position:
                              2. under at pos 0 (has 0 children) [INFO] [stdout]  0.020s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n3] TEXT: "n<&nhnnz\"\"\"\" v" [INFO] [stdout] [n10] [INFO] [stdout] [n5] TEXT: "< bit" [INFO] [stdout] [n10] [INFO] [stdout] [n18] TEXT: "" [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n17] TEXT: "" [INFO] [stdout] Slot 2: [INFO] [stdout] [n15] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.020s DEBUG Applying patch: Insert @[0, 0, 1] (2 attrs) [INFO] [stdout] test diff::tests::test_opaque_multiple_siblings ...  0.020s DEBUG insert_at: path=[0, 0, 1] parent=
                              3. pos=1 [INFO] [stdout] ok [INFO] [stdout]  0.020s DEBUG insert_at_position: under
                              4. at pos 1 (has 0 children) [INFO] [stdout]  0.020s DEBUG Filled gap at position 0 with empty text node [INFO] [stdout]  0.020s DEBUG Patches: [ [INFO] [stdout] SetText "n" @[0, 0, 0], [INFO] [stdout] SetText "aaa" @[0, 1, 0], [INFO] [stdout] Insert @[0, 1] →slot1, [INFO] [stdout] Move [0, 0, 0] → [0, 0] →slot2, [INFO] [stdout] Move [1, 0] → [0, 1, 0], [INFO] [stdout] Remove @[2], [INFO] [stdout] Remove @[1, 1], [INFO] [stdout] Remove @[1], [INFO] [stdout] Remove @[0, 2], [INFO] [stdout] ] [INFO] [stdout]  0.020s DEBUG Applying patch: Insert @[0, 0, 1, 0] (1 attrs) [INFO] [stdout] test diff::tests::test_opaque_deeply_nested_content ... ok [INFO] [stdout]  0.020s DEBUG insert_at: path=[0, 0, 1, 0] parent= pos=0 [INFO] [stdout]  0.020s DEBUG insert_at_position: under at pos 0 (has 0 children) [INFO] [stdout] test diff::tests::test_opaque_roundtrip_rust_applier ... ok [INFO] [stdout]  0.020s DEBUG Applying patch: Move [1, 0] → [0, 0, 0] →slot2 [INFO] [stdout]  0.020s DEBUG insert_at: path=[0, 0, 0] parent=
                              5. pos=0 [INFO] [stdout]  0.020s DEBUG insert_at: detaching child text("") at pos 0 to slot2 [INFO] [stdout]  0.021s DEBUG insert_at_position: text("a< ") under
                              6. at pos 0 (has 1 children) [INFO] [stdout]  0.021s DEBUG Applying patch: Remove @[1, 1] [INFO] [stdout]  0.021s DEBUG Applying patch: Remove @[1] [INFO] [stdout]  0.021s DEBUG Applying patch: OpaqueChanged @[0, 0] "
                                new textextra
                              7. a<
                              8. [INFO] [stdout]  0.021s DEBUG Applying patch: Insert @[0, 1] →slot1 [INFO] [stdout]  0.021s DEBUG arena_dom cinereus diff complete ops_count=26 matched_pairs=10 [INFO] [stdout]  0.021s DEBUG Expected:
                              9. a<
                              10. [INFO] [stdout]  0.021s DEBUG insert_at: path=[0, 1] parent= pos=1 [INFO] [stdout]  0.021s DEBUG insert_at: detaching child at pos 1 to slot1 [INFO] [stdout]  0.021s DEBUG insert_at_position: under at pos 1 (has 2 children) [INFO] [stdout]  0.021s DEBUG Applying patch: Move [0, 0, 0] → [0, 0] →slot2 [INFO] [stdout]  0.021s DEBUG insert_at: path=[0, 0] parent= pos=0 [INFO] [stdout]  0.021s DEBUG insert_at: detaching child at pos 0 to slot2 [INFO] [stdout] test diff::tests::test_fuzzer_em_li_navigate_text ... ok [INFO] [stdout]  0.021s DEBUG insert_at_position: text("n") under at pos 0 (has 2 children) [INFO] [stdout]  0.021s DEBUG Applying patch: Move [1, 0] → [0, 1, 0] [INFO] [stdout]  0.021s DEBUG insert_at: path=[0, 1, 0] parent= pos=0 [INFO] [stdout]  0.021s DEBUG insert_at_position: text("aaa") under at pos 0 (has 0 children) [INFO] [stdout]  0.021s DEBUG Applying patch: Remove @[2] [INFO] [stdout]  0.021s DEBUG Applying patch: Remove @[1, 1] [INFO] [stdout]  0.021s DEBUG matching pairs: 2 [INFO] [stdout]  0.021s DEBUG Applying patch: Remove @[1] [INFO] [stdout]  0.021s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
                                [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n7]
                                  [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n9]
                                • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n11] [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n11] [INFO] [stdout] [n9]
                                • [INFO] [stdout] [n13] TEXT: "\n " [INFO] [stdout] [n14]
                                • [INFO] [stdout] [n15] TEXT: "Feature two with " [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "emphasis" [INFO] [stdout] [n16] [INFO] [stdout] [n14]
                                • [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n19]
                                • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n2]
                                [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.021s DEBUG Applying patch: Remove @[0, 2] [INFO] [stdout]  0.021s DEBUG Processing operation op=SetText(a:8 → b:15 text=item) [INFO] [stdout]  0.021s DEBUG Processing operation op=SetText(a:12 → b:16 text= [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] ) [INFO] [stdout]  0.021s DEBUG Processing operation op=Insert(b:5
                                @0 under b:4) [INFO] [stdout]  0.021s DEBUG created new slot slot_num=1 [INFO] [stdout]  0.021s DEBUG detached node to slot node=NodeId { index1: 2, stamp: NodeStamp(0) } slot_num=1 [INFO] [stdout]  0.021s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=0 detach_to_slot=Some(1) [INFO] [stdout]  0.021s DEBUG Parent children after Insert children=[(0, NodeId { index1: 25, stamp: NodeStamp(0) }, Element(Atom('div' type=inline), Html))] [INFO] [stdout] test diff::tests::test_opaque_roundtrip_deeply_nested ... ok [INFO] [stdout]  0.019s DEBUG matching pairs: 3 [INFO] [stdout]  0.021s DEBUG arena_dom cinereus diff complete ops_count=0 matched_pairs=3 [INFO] [stdout]  0.021s DEBUG Result: naaa [INFO] [stdout]  0.021s DEBUG Expected: naaa [INFO] [stdout]  0.021s DEBUG matching pairs: 3 [INFO] [stdout]  0.021s DEBUG arena_dom cinereus diff complete ops_count=4 matched_pairs=3 [INFO] [stdout]  0.021s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                [INFO] [stdout] [n25]
                                [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n7]
                                  [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n9]
                                • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n11] [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n11] [INFO] [stdout] [n9]
                                • [INFO] [stdout] [n13] TEXT: "\n " [INFO] [stdout] [n14]
                                • [INFO] [stdout] [n15] TEXT: "Feature two with " [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "emphasis" [INFO] [stdout] [n16] [INFO] [stdout] [n14]
                                • [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n19]
                                • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n2]
                                [INFO] [stdout] [INFO] [stdout]  0.021s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
                                [INFO] [stdout] [n3]

                                [INFO] [stdout] [n4] TEXT: "same" [INFO] [stdout] [n3]

                                [INFO] [stdout] [n2]
                                [INFO] [stdout] [n5]
                                [INFO] [stdout] [n6]

                                [INFO] [stdout] [n7] TEXT: "old" [INFO] [stdout] [n6]

                                [INFO] [stdout] [n5]
                                [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.021s DEBUG Processing operation op=Insert(b:10
                                  @3 under b:5) [INFO] [stdout] test diff::tests::test_fuzzer_special_chars ... ok [INFO] [stdout]  0.021s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 25, stamp: NodeStamp(0) } position=3 detach_to_slot=None [INFO] [stdout]  0.021s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
                                  [INFO] [stdout] [n3]

                                  [INFO] [stdout] [n4] TEXT: "old chart" [INFO] [stdout] [n3]

                                  [INFO] [stdout] [n2]
                                  [INFO] [stdout] [n5]

                                  [INFO] [stdout] [n6] TEXT: "before text" [INFO] [stdout] [n5]

                                  [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout] test diff::tests::test_opaque_only_one_changed ... ok [INFO] [stdout]  0.032s DEBUG Processing operation op=SetText(a:6 → b:9 text=after text) [INFO] [stdout]  0.032s DEBUG Processing operation op=Insert(b:8

                                  @1 under b:4) [INFO] [stdout]  0.032s DEBUG created new slot slot_num=1 [INFO] [stdout]  0.019s DEBUG Parent children after Insert children=[(0, NodeId { index1: 24, stamp: NodeStamp(0) }, Element(Atom('article' type=inline), Html))] [INFO] [stdout]  0.032s DEBUG detached node to slot node=NodeId { index1: 5, stamp: NodeStamp(0) } slot_num=1 [INFO] [stdout]  0.032s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=1 detach_to_slot=Some(1) [INFO] [stdout]  0.032s DEBUG Parent children after Insert children=[(0, NodeId { index1: 2, stamp: NodeStamp(0) }, Element(Atom('div' type=inline), Html)), (1, NodeId { index1: 9, stamp: NodeStamp(0) }, Element(Atom('p' type=inline), Html))] [INFO] [stdout]  0.032s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]

                                  [INFO] [stdout] [n3]

                                  [INFO] [stdout] [n4] TEXT: "old chart" [INFO] [stdout] [n3]

                                  [INFO] [stdout] [n2]
                                  [INFO] [stdout] [n9]

                                  [INFO] [stdout] [n9]

                                  [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n5]

                                  [INFO] [stdout] [n6] TEXT: "before text" [INFO] [stdout] [n5]

                                  [INFO] [stdout] [INFO] [stdout]  0.032s DEBUG Processing operation op=Move(a:6 → b:9 @0 under b:8) [INFO] [stdout]  0.032s DEBUG Move: starting node_a=NodeId { index1: 6, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 8, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 9, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.032s DEBUG Move: computing from reference for node node_a=NodeId { index1: 6, stamp: NodeStamp(0) } [INFO] [stdout]  0.032s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                  [INFO] [stdout] [n24]
                                  [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                  [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                  [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n4]

                                  [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n7]

                                  [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n11] TEXT: " and " [INFO] [stdout] [n12] [INFO] [stdout] [n13] TEXT: "italic" [INFO] [stdout] [n12] [INFO] [stdout] [n14] TEXT: " text." [INFO] [stdout] [n7]

                                  [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n16]

                                  [INFO] [stdout] [n17] TEXT: "Second paragraph with a " [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "link" [INFO] [stdout] [n18] [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

                                  [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n2]
                                  [INFO] [stdout] [INFO] [stdout]  0.032s DEBUG get_node_ref: computed path node=NodeId { index1: 6, stamp: NodeStamp(0) } path=[1, 0] [INFO] [stdout]  0.032s DEBUG Move: computed from reference node_a=NodeId { index1: 6, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) [INFO] [stdout]  0.022s DEBUG matching pairs: 2 [INFO] [stdout]  0.032s DEBUG Parent children BEFORE Move children=[] [INFO] [stdout]  0.032s DEBUG move_to_position: checking ancestry node=NodeId { index1: 6, stamp: NodeStamp(0) } new_parent=NodeId { index1: 9, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.032s DEBUG arena_dom cinereus diff complete ops_count=0 matched_pairs=2 [INFO] [stdout] test diff::tests::test_string_ascii_only_multiple_newlines ...  0.032s DEBUG Move: checking target position node=NodeId { index1: 6, stamp: NodeStamp(0) } position=0 children_count=0 [INFO] [stdout] ok [INFO] [stdout]  0.032s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.032s DEBUG Generated Move patch node_a=NodeId { index1: 6, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) to=NodeRef(NodePath([0, 1, 0])) detach_to_slot=None [INFO] [stdout]  0.032s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
                                  [INFO] [stdout] [n3]
                                  [INFO] [stdout]         [n4] TEXT: "graph TD; A-->B;"
                                  [INFO] [stdout]       [n3] 
                                  [INFO] [stdout] [n2]
                                  [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.032s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
                                  [INFO] [stdout] [n3]

                                  [INFO] [stdout] [n4] TEXT: "old chart" [INFO] [stdout] [n3]

                                  [INFO] [stdout] [n2]
                                  [INFO] [stdout] [n9]

                                  [INFO] [stdout] [n6] TEXT: "before text" [INFO] [stdout] [n9]

                                  [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n5]

                                  [INFO] [stdout] [n11] TEXT: "" [INFO] [stdout] [n5]

                                  [INFO] [stdout] [INFO] [stdout]  0.032s DEBUG Processing operation op=Delete(a:5) [INFO] [stdout]  0.032s DEBUG Delete operation node_a=NodeId { index1: 5, stamp: NodeStamp(0) } _node_kind=Element(Atom('p' type=inline), Html) [INFO] [stdout]  0.032s DEBUG get_node_ref: computed path node=NodeId { index1: 5, stamp: NodeStamp(0) } path=[1] [INFO] [stdout]  0.032s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
                                  [INFO] [stdout] [n3]

                                  [INFO] [stdout] [n4] TEXT: "old chart" [INFO] [stdout] [n3]

                                  [INFO] [stdout] [n2]
                                  [INFO] [stdout] [n9]

                                  [INFO] [stdout] [n6] TEXT: "before text" [INFO] [stdout] [n9]

                                  [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n12] TEXT: "" [INFO] [stdout] [INFO] [stdout] test diff::tests::test_opaque_structural_replacement ... ok [INFO] [stdout]  0.022s DEBUG matching pairs: 8 [INFO] [stdout]  0.021s DEBUG arena_dom cinereus diff complete ops_count=9 matched_pairs=2 [INFO] [stdout]  0.020s DEBUG Applying patch: Insert
                                  @[0, 2, 0, 0] (1 attrs) [INFO] [stdout]  0.032s DEBUG insert_at: path=[0, 2, 0, 0] parent=
                                    pos=0 [INFO] [stdout]  0.032s DEBUG insert_at_position: under
                                      at pos 0 (has 0 children) [INFO] [stdout]  0.032s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
                                        [INFO] [stdout] [n3]
                                          [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n5]
                                            [INFO] [stdout] [n6] [INFO] [stdout] [n6] [INFO] [stdout] [n5]
                                          [INFO] [stdout] [n3]
                                        [INFO] [stdout] [n2]
                                      [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.032s DEBUG Applying patch: Move [1] → [0, 1] →slot2 [INFO] [stdout]  0.032s DEBUG Processing operation op=UpdateProps(a:4 src: → aaa) [INFO] [stdout]  0.032s DEBUG insert_at: path=[0, 1] parent= pos=1 [INFO] [stdout]  0.032s DEBUG insert_at: detaching child text("") at pos 1 to slot2 [INFO] [stdout]  0.032s DEBUG Processing operation op=Insert(b:5
                                        @0 under b:4) [INFO] [stdout]  0.032s DEBUG insert_at_position:
                                          under at pos 1 (has 2 children) [INFO] [stdout]  0.032s DEBUG created new slot slot_num=1 [INFO] [stdout]  0.032s DEBUG detached node to slot node=NodeId { index1: 2, stamp: NodeStamp(0) } slot_num=1 [INFO] [stdout]  0.032s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=0 detach_to_slot=Some(1) [INFO] [stdout]  0.032s DEBUG Parent children after Insert children=[(0, NodeId { index1: 9, stamp: NodeStamp(0) }, Element(Atom('ul' type=inline), Html))] [INFO] [stdout]  0.032s DEBUG Applying patch: SetText "after text" @[0, 1, 0] [INFO] [stdout]  0.032s DEBUG Applying patch: Insert

                                          @[0, 1] →slot1 [INFO] [stdout]  0.032s DEBUG insert_at: path=[0, 1] parent= pos=1 [INFO] [stdout]  0.032s DEBUG insert_at: detaching child

                                          at pos 1 to slot1 [INFO] [stdout]  0.032s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9]

                                            [INFO] [stdout] [n9]
                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                            [INFO] [stdout] [n3]
                                              [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n5]
                                                [INFO] [stdout] [n6] [INFO] [stdout] [n6] [INFO] [stdout] [n5]
                                              [INFO] [stdout] [n3]
                                            [INFO] [stdout] [n2]
                                          [INFO] [stdout] [INFO] [stdout]  0.032s DEBUG insert_at_position:

                                          under at pos 1 (has 1 children) [INFO] [stdout]  0.032s DEBUG Processing operation op=Insert(b:6

                                            @0 under b:5) [INFO] [stdout]  0.032s DEBUG Applying patch: Move [1, 0] → [0, 1, 0] [INFO] [stdout]  0.032s DEBUG insert_at: path=[0, 1, 0] parent=

                                            pos=0 [INFO] [stdout]  0.032s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 9, stamp: NodeStamp(0) } position=0 detach_to_slot=None [INFO] [stdout]  0.032s DEBUG insert_at_position: text("after text") under

                                            at pos 0 (has 0 children) [INFO] [stdout]  0.032s DEBUG Applying patch: Remove @[1] [INFO] [stdout]  0.032s DEBUG Parent children after Insert children=[(0, NodeId { index1: 11, stamp: NodeStamp(0) }, Element(Atom('ul' type=inline), Html))] [INFO] [stdout]  0.033s DEBUG Applying patch: OpaqueChanged @[0, 0] "

                                            new chart

                                            " [INFO] [stdout]  0.033s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9]
                                              [INFO] [stdout] [n11]
                                                [INFO] [stdout] [n11]
                                              [INFO] [stdout] [n9]
                                            [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                              [INFO] [stdout] [n3]
                                                [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n5]
                                                  [INFO] [stdout] [n6] [INFO] [stdout] [n6] [INFO] [stdout] [n5]
                                                [INFO] [stdout] [n3]
                                              [INFO] [stdout] [n2]
                                            [INFO] [stdout] [INFO] [stdout]  0.033s DEBUG Processing operation op=Insert(b:7
                                              @1 under b:5) [INFO] [stdout]  0.033s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 9, stamp: NodeStamp(0) } position=1 detach_to_slot=None [INFO] [stdout]  0.033s DEBUG Result:
                                                  [INFO] [stdout]  0.033s DEBUG Parent children after Insert children=[(0, NodeId { index1: 11, stamp: NodeStamp(0) }, Element(Atom('ul' type=inline), Html)), (1, NodeId { index1: 12, stamp: NodeStamp(0) }, Element(Atom('ul' type=inline), Html))] [INFO] [stdout]  0.033s DEBUG Expected:
                                                      [INFO] [stdout]  0.033s DEBUG matching pairs: 3 [INFO] [stdout]  0.033s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9]
                                                        [INFO] [stdout] [n11]
                                                          [INFO] [stdout] [n11]
                                                        [INFO] [stdout] [n12]
                                                          [INFO] [stdout] [n12]
                                                        [INFO] [stdout] [n9]
                                                      [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                        [INFO] [stdout] [n3]
                                                          [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n5]
                                                            [INFO] [stdout] [n6] [INFO] [stdout] [n6] [INFO] [stdout] [n5]
                                                          [INFO] [stdout] [n3]
                                                        [INFO] [stdout] [n2]
                                                      [INFO] [stdout] [INFO] [stdout]  0.033s DEBUG arena_dom cinereus diff complete ops_count=2 matched_pairs=3 [INFO] [stdout]  0.033s DEBUG Processing operation op=Move(a:4 → b:8 @0 under b:7) [INFO] [stdout]  0.033s DEBUG Move: starting node_a=NodeId { index1: 4, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 7, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 12, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.033s DEBUG Move: computing from reference for node node_a=NodeId { index1: 4, stamp: NodeStamp(0) } [INFO] [stdout]  0.033s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
                                                      [INFO] [stdout] [n3] TEXT: "First" [INFO] [stdout] [n2]
                                                      [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.033s DEBUG get_node_ref: computed path node=NodeId { index1: 4, stamp: NodeStamp(0) } path=[1, 0, 0] [INFO] [stdout]  0.033s DEBUG Processing operation op=Insert(b:7

                                                      @1 under b:4) [INFO] [stdout]  0.033s DEBUG Move: computed from reference node_a=NodeId { index1: 4, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0, 0])) [INFO] [stdout]  0.033s DEBUG Parent children BEFORE Move children=[] [INFO] [stdout]  0.033s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=1 detach_to_slot=None [INFO] [stdout]  0.033s DEBUG move_to_position: checking ancestry node=NodeId { index1: 4, stamp: NodeStamp(0) } new_parent=NodeId { index1: 12, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.033s DEBUG Parent children after Insert children=[(0, NodeId { index1: 2, stamp: NodeStamp(0) }, Element(Atom('div' type=inline), Html)), (1, NodeId { index1: 6, stamp: NodeStamp(0) }, Element(Atom('p' type=inline), Html))] [INFO] [stdout]  0.033s DEBUG Move: checking target position node=NodeId { index1: 4, stamp: NodeStamp(0) } position=0 children_count=0 [INFO] [stdout]  0.033s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.033s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]

                                                      [INFO] [stdout] [n3] TEXT: "First" [INFO] [stdout] [n2]
                                                      [INFO] [stdout] [n6]

                                                      [INFO] [stdout] [n6]

                                                      [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.033s DEBUG Processing operation op=Insert(b:8 #text @0 under b:7) [INFO] [stdout]  0.033s DEBUG Generated Move patch node_a=NodeId { index1: 4, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0, 0])) to=NodeRef(NodePath([0, 0, 1, 0])) detach_to_slot=None [INFO] [stdout]  0.033s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 6, stamp: NodeStamp(0) } position=0 detach_to_slot=None [INFO] [stdout]  0.033s DEBUG Parent children after Insert children=[(0, NodeId { index1: 7, stamp: NodeStamp(0) }, Text)] [INFO] [stdout]  0.033s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
                                                      [INFO] [stdout] [n3] TEXT: "First" [INFO] [stdout] [n2]
                                                      [INFO] [stdout] [n6]

                                                      [INFO] [stdout] [n7] TEXT: "Second" [INFO] [stdout] [n6]

                                                      [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.033s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9]
                                                        [INFO] [stdout] [n11]
                                                          [INFO] [stdout] [n11]
                                                        [INFO] [stdout] [n12]
                                                          [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n12]
                                                        [INFO] [stdout] [n9]
                                                      [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                        [INFO] [stdout] [n3]
                                                          [INFO] [stdout] [n13] TEXT: "" [INFO] [stdout] [n5]
                                                            [INFO] [stdout] [n6] [INFO] [stdout] [n6] [INFO] [stdout] [n5]
                                                          [INFO] [stdout] [n3]
                                                        [INFO] [stdout] [n2]
                                                      [INFO] [stdout] [INFO] [stdout]  0.033s DEBUG Processing operation op=Delete(a:6) [INFO] [stdout]  0.022s DEBUG matching pairs: 2 [INFO] [stdout]  0.033s DEBUG Delete operation node_a=NodeId { index1: 6, stamp: NodeStamp(0) } _node_kind=Element(Atom('img' type=inline), Html) [INFO] [stdout]  0.033s DEBUG get_node_ref: computed path node=NodeId { index1: 6, stamp: NodeStamp(0) } path=[1, 0, 1, 0] [INFO] [stdout]  0.033s DEBUG arena_dom cinereus diff complete ops_count=0 matched_pairs=2 [INFO] [stdout]  0.033s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9]
                                                        [INFO] [stdout] [n11]
                                                          [INFO] [stdout] [n11]
                                                        [INFO] [stdout] [n12]
                                                          [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n12]
                                                        [INFO] [stdout] [n9]
                                                      [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                        [INFO] [stdout] [n3]
                                                          [INFO] [stdout] [n13] TEXT: "" [INFO] [stdout] [n5]
                                                            [INFO] [stdout] [n14] TEXT: "" [INFO] [stdout] [n5]
                                                          [INFO] [stdout] [n3]
                                                        [INFO] [stdout] [n2]
                                                      [INFO] [stdout] [INFO] [stdout]  0.033s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
                                                      [INFO] [stdout] [n3]

                                                      [INFO] [stdout] [n4] TEXT: "hello" [INFO] [stdout] [n3]

                                                      [INFO] [stdout] [n2]
                                                      [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.033s DEBUG Processing operation op=Delete(a:5) [INFO] [stdout]  0.033s DEBUG Applying patch: Insert

                                                      @[0, 1] [INFO] [stdout]  0.033s DEBUG Delete operation node_a=NodeId { index1: 5, stamp: NodeStamp(0) } _node_kind=Element(Atom('ul' type=inline), Html) [INFO] [stdout]  0.033s DEBUG insert_at: path=[0, 1] parent= pos=1 [INFO] [stdout]  0.033s DEBUG get_node_ref: computed path node=NodeId { index1: 5, stamp: NodeStamp(0) } path=[1, 0, 1] [INFO] [stdout]  0.033s DEBUG insert_at_position:

                                                      under at pos 1 (has 1 children) [INFO] [stdout]  0.033s DEBUG Applying patch: Insert text "Second" @[0, 1, 0] [INFO] [stdout]  0.023s DEBUG matching pairs: 3 [INFO] [stdout]  0.033s DEBUG insert_at: path=[0, 1, 0] parent=

                                                      pos=0 [INFO] [stdout]  0.033s DEBUG insert_at_position: text("Second") under

                                                      at pos 0 (has 0 children) [INFO] [stdout]  0.033s DEBUG arena_dom cinereus diff complete ops_count=4 matched_pairs=3 [INFO] [stdout]  0.033s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9]

                                                        [INFO] [stdout] [n11]
                                                          [INFO] [stdout] [n11]
                                                        [INFO] [stdout] [n12]
                                                          [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n12]
                                                        [INFO] [stdout] [n9]
                                                      [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                        [INFO] [stdout] [n3]
                                                          [INFO] [stdout] [n13] TEXT: "" [INFO] [stdout] [n15] TEXT: "" [INFO] [stdout] [n3]
                                                        [INFO] [stdout] [n2]
                                                      [INFO] [stdout] [INFO] [stdout]  0.033s DEBUG Processing operation op=Delete(a:3) [INFO] [stdout]  0.033s DEBUG Delete operation node_a=NodeId { index1: 3, stamp: NodeStamp(0) } _node_kind=Element(Atom('ul' type=inline), Html) [INFO] [stdout]  0.033s DEBUG get_node_ref: computed path node=NodeId { index1: 3, stamp: NodeStamp(0) } path=[1, 0] [INFO] [stdout] test diff::tests::test_fuzzer_nested_ol_patch_order ... ok [INFO] [stdout]  0.033s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
                                                      [INFO] [stdout] [n3]

                                                      [INFO] [stdout] [n4] TEXT: "old" [INFO] [stdout] [n3]

                                                      [INFO] [stdout] [n2]
                                                      [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "before" [INFO] [stdout] [n5] [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.033s DEBUG Processing operation op=SetText(a:6 → b:9 text=after) [INFO] [stdout]  0.033s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9]
                                                        [INFO] [stdout] [n11]
                                                          [INFO] [stdout] [n11]
                                                        [INFO] [stdout] [n12]
                                                          [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n12]
                                                        [INFO] [stdout] [n9]
                                                      [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                        [INFO] [stdout] [n16] TEXT: "" [INFO] [stdout] [n2]
                                                      [INFO] [stdout] [INFO] [stdout]  0.033s DEBUG Processing operation op=Delete(a:2) [INFO] [stdout]  0.033s DEBUG Processing operation op=Insert(b:8 @1 under b:4) [INFO] [stdout] test diff::tests::test_opaque_roundtrip_with_sibling_changes ... ok [INFO] [stdout]  0.033s DEBUG Delete operation node_a=NodeId { index1: 2, stamp: NodeStamp(0) } _node_kind=Element(Atom('ul' type=inline), Html) [INFO] [stdout]  0.033s DEBUG created new slot slot_num=1 [INFO] [stdout]  0.033s DEBUG get_node_ref: computed path node=NodeId { index1: 2, stamp: NodeStamp(0) } path=[1] [INFO] [stdout] test diff::tests::test_opaque_unchanged_no_patches ... ok [INFO] [stdout]  0.033s DEBUG detached node to slot node=NodeId { index1: 5, stamp: NodeStamp(0) } slot_num=1 [INFO] [stdout]  0.033s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=1 detach_to_slot=Some(1) [INFO] [stdout] test dom::tests::test_apply_patches_insert_element ... ok [INFO] [stdout]  0.033s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9]
                                                        [INFO] [stdout] [n11]
                                                          [INFO] [stdout] [n11]
                                                        [INFO] [stdout] [n12]
                                                          [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n12]
                                                        [INFO] [stdout] [n9]
                                                      [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n17] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.033s DEBUG Parent children after Insert children=[(0, NodeId { index1: 2, stamp: NodeStamp(0) }, Element(Atom('div' type=inline), Html)), (1, NodeId { index1: 9, stamp: NodeStamp(0) }, Element(Atom('span' type=inline), Html))] [INFO] [stdout]  0.033s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
                                                      [INFO] [stdout] [n3]

                                                      [INFO] [stdout] [n4] TEXT: "old" [INFO] [stdout] [n3]

                                                      [INFO] [stdout] [n2]
                                                      [INFO] [stdout] [n9] [INFO] [stdout] [n9] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "before" [INFO] [stdout] [n5] [INFO] [stdout] [INFO] [stdout]  0.033s DEBUG Patches: [ [INFO] [stdout] UpdateProps @[0, 0, 0, 0] (1 changes), [INFO] [stdout] Insert
                                                        @[0, 0] (1 attrs) →slot1, [INFO] [stdout] Insert
                                                          @[0, 0, 0] (1 attrs), [INFO] [stdout] Insert
                                                            @[0, 0, 1] (1 attrs), [INFO] [stdout] Move [1, 0, 0] → [0, 0, 1, 0], [INFO] [stdout] Remove @[1, 0, 1, 0], [INFO] [stdout] Remove @[1, 0, 1], [INFO] [stdout] Remove @[1, 0], [INFO] [stdout] Remove @[1], [INFO] [stdout] ] [INFO] [stdout]  0.033s DEBUG Processing operation op=Move(a:6 → b:9 @0 under b:8) [INFO] [stdout]  0.033s DEBUG Move: starting node_a=NodeId { index1: 6, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 8, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 9, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.033s DEBUG Move: computing from reference for node node_a=NodeId { index1: 6, stamp: NodeStamp(0) } [INFO] [stdout]  0.033s DEBUG get_node_ref: computed path node=NodeId { index1: 6, stamp: NodeStamp(0) } path=[1, 0] [INFO] [stdout]  0.033s DEBUG Move: computed from reference node_a=NodeId { index1: 6, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) [INFO] [stdout]  0.033s DEBUG Parent children BEFORE Move children=[] [INFO] [stdout]  0.033s DEBUG move_to_position: checking ancestry node=NodeId { index1: 6, stamp: NodeStamp(0) } new_parent=NodeId { index1: 9, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.034s DEBUG Move: checking target position node=NodeId { index1: 6, stamp: NodeStamp(0) } position=0 children_count=0 [INFO] [stdout]  0.034s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.034s DEBUG Generated Move patch node_a=NodeId { index1: 6, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) to=NodeRef(NodePath([0, 1, 0])) detach_to_slot=None [INFO] [stdout]  0.034s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3]

                                                            [INFO] [stdout] [n4] TEXT: "old" [INFO] [stdout] [n3]

                                                            [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n9] [INFO] [stdout] [n6] TEXT: "before" [INFO] [stdout] [n9] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n5] [INFO] [stdout] [n11] TEXT: "" [INFO] [stdout] [n5] [INFO] [stdout] [INFO] [stdout]  0.034s DEBUG Processing operation op=Delete(a:5) [INFO] [stdout]  0.034s DEBUG Delete operation node_a=NodeId { index1: 5, stamp: NodeStamp(0) } _node_kind=Element(Atom('span' type=inline), Html) [INFO] [stdout] test dom::tests::test_dt_dd_nested_s ... ok [INFO] [stdout]  0.034s DEBUG matching pairs: 3 [INFO] [stdout]  0.024s DEBUG matching pairs: 2 [INFO] [stdout]  0.034s DEBUG arena_dom cinereus diff complete ops_count=9 matched_pairs=3 [INFO] [stdout]  0.025s DEBUG matching pairs: 3 [INFO] [stdout]  0.031s DEBUG matching pairs: 8 [INFO] [stdout]  0.034s DEBUG arena_dom cinereus diff complete ops_count=19 matched_pairs=8 [INFO] [stdout] test dom::tests::test_dt_dd_outside_dl ... ok [INFO] [stdout]  0.034s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n13] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n13] [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.034s DEBUG Processing operation op=Insert(b:5 @0 under b:4) [INFO] [stdout]  0.034s DEBUG created new slot slot_num=1 [INFO] [stdout]  0.034s DEBUG detached node to slot node=NodeId { index1: 2, stamp: NodeStamp(0) } slot_num=1 [INFO] [stdout]  0.034s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=0 detach_to_slot=Some(1) [INFO] [stdout]  0.034s DEBUG Parent children after Insert children=[(0, NodeId { index1: 17, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html))] [INFO] [stdout]  0.034s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n13] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n13] [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.034s DEBUG Processing operation op=Insert(b:7 @1 under b:4) [INFO] [stdout]  0.034s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=1 detach_to_slot=None [INFO] [stdout]  0.034s DEBUG Parent children after Insert children=[(0, NodeId { index1: 17, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (1, NodeId { index1: 19, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html))] [INFO] [stdout]  0.034s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n19] [INFO] [stdout] [n19] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n13] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n13] [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.034s DEBUG Processing operation op=Insert(b:9 @2 under b:4) [INFO] [stdout]  0.034s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=2 detach_to_slot=None [INFO] [stdout]  0.034s DEBUG Parent children after Insert children=[(0, NodeId { index1: 17, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (1, NodeId { index1: 19, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (2, NodeId { index1: 20, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html))] [INFO] [stdout]  0.035s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n19] [INFO] [stdout] [n19] [INFO] [stdout] [n20] [INFO] [stdout] [n20] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n13] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n13] [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.035s DEBUG Processing operation op=Insert(b:11 @3 under b:4) [INFO] [stdout]  0.035s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=3 detach_to_slot=None [INFO] [stdout]  0.035s DEBUG Parent children after Insert children=[(0, NodeId { index1: 17, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (1, NodeId { index1: 19, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (2, NodeId { index1: 20, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (3, NodeId { index1: 21, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html))] [INFO] [stdout]  0.035s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n19] [INFO] [stdout] [n19] [INFO] [stdout] [n20] [INFO] [stdout] [n20] [INFO] [stdout] [n21] [INFO] [stdout] [n21] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n13] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n13] [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.035s DEBUG Processing operation op=Insert(b:12 #text @0 under b:11) [INFO] [stdout]  0.035s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 21, stamp: NodeStamp(0) } position=0 detach_to_slot=None [INFO] [stdout]  0.035s DEBUG Parent children after Insert children=[(0, NodeId { index1: 22, stamp: NodeStamp(0) }, Text)] [INFO] [stdout]  0.035s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n19] [INFO] [stdout] [n19] [INFO] [stdout] [n20] [INFO] [stdout] [n20] [INFO] [stdout] [n21] [INFO] [stdout] [n22] TEXT: "<" [INFO] [stdout] [n21] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n13] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n13] [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.035s DEBUG Processing operation op=Insert(b:13
                                                            @4 under b:4) [INFO] [stdout]  0.034s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]

                                                            [INFO] [stdout] [n3] TEXT: "Text with " [INFO] [stdout] [n4] [INFO] [stdout] [n5] TEXT: "bold" [INFO] [stdout] [n4] [INFO] [stdout] [n6] TEXT: " word." [INFO] [stdout] [n2]

                                                            [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.035s DEBUG Processing operation op=Insert(b:5

                                                            @0 under b:4) [INFO] [stdout]  0.035s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=4 detach_to_slot=None [INFO] [stdout]  0.035s DEBUG Parent children after Insert children=[(0, NodeId { index1: 17, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (1, NodeId { index1: 19, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (2, NodeId { index1: 20, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (3, NodeId { index1: 21, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (4, NodeId { index1: 23, stamp: NodeStamp(0) }, Element(Atom('article' type=inline), Html))] [INFO] [stdout]  0.035s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n19] [INFO] [stdout] [n19] [INFO] [stdout] [n20] [INFO] [stdout] [n20] [INFO] [stdout] [n21] [INFO] [stdout] [n22] TEXT: "<" [INFO] [stdout] [n21] [INFO] [stdout] [n23]

                                                            [INFO] [stdout] [n23]
                                                            [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n13] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n13] [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.035s DEBUG created new slot slot_num=1 [INFO] [stdout]  0.035s DEBUG Processing operation op=Insert(b:18

                                                            @2 under b:13) [INFO] [stdout]  0.035s DEBUG detached node to slot node=NodeId { index1: 2, stamp: NodeStamp(0) } slot_num=1 [INFO] [stdout]  0.035s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=0 detach_to_slot=Some(1) [INFO] [stdout]  0.035s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 23, stamp: NodeStamp(0) } position=2 detach_to_slot=None [INFO] [stdout]  0.035s DEBUG Parent children after Insert children=[(0, NodeId { index1: 25, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 26, stamp: NodeStamp(0) }, Text), (2, NodeId { index1: 24, stamp: NodeStamp(0) }, Element(Atom('h2' type=inline), Html))] [INFO] [stdout]  0.035s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n19] [INFO] [stdout] [n19] [INFO] [stdout] [n20] [INFO] [stdout] [n20] [INFO] [stdout] [n21] [INFO] [stdout] [n22] TEXT: "<" [INFO] [stdout] [n21] [INFO] [stdout] [n23]
                                                            [INFO] [stdout] [n25] TEXT: "" [INFO] [stdout] [n26] TEXT: "" [INFO] [stdout] [n24]

                                                            [INFO] [stdout] [n24]

                                                            [INFO] [stdout] [n23]
                                                            [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n13] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n13] [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.036s DEBUG Processing operation op=Insert(b:19 #text @0 under b:18) [INFO] [stdout] test dom::tests::test_bogus_comment_variations ... ok [INFO] [stdout]  0.036s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 24, stamp: NodeStamp(0) } position=0 detach_to_slot=None [INFO] [stdout] test dom::tests::test_dt_dd_with_custom_tag ...  0.036s DEBUG Parent children after Insert children=[(0, NodeId { index1: 27, stamp: NodeStamp(0) }, Text)] [INFO] [stdout] ok 0.024s DEBUG matching pairs: 2 [INFO] [stdout]  0.034s DEBUG Applying patch: UpdateProps @[0, 0, 0, 0] (1 changes) [INFO] [stdout]  0.034s DEBUG arena_dom cinereus diff complete ops_count=15 matched_pairs=8 [INFO] [stdout]  0.036s DEBUG arena_dom cinereus diff complete ops_count=7 matched_pairs=2 [INFO] [stdout]  0.036s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2] [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                            [INFO] [stdout] [n5] TEXT: "Title" [INFO] [stdout] [n4]

                                                            [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.036s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n19] [INFO] [stdout] [n19] [INFO] [stdout] [n20] [INFO] [stdout] [n20] [INFO] [stdout] [n21] [INFO] [stdout] [n22] TEXT: "<" [INFO] [stdout] [n21] [INFO] [stdout] [n23]
                                                            [INFO] [stdout] [n25] TEXT: "" [INFO] [stdout] [n26] TEXT: "" [INFO] [stdout] [n24]

                                                            [INFO] [stdout] [n27] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n24]

                                                            [INFO] [stdout] [n23]
                                                            [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n13] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n13] [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.036s DEBUG Processing operation op=SetText(a:3 → b:6 text= [INFO] [stdout] 中文App Title [INFO] [stdout] ) [INFO] [stdout]  0.036s DEBUG Processing operation op=Move(a:9 → b:16 @1 under b:13) [INFO] [stdout]  0.036s DEBUG Processing operation op=Insert(b:5 @0 under b:4) [INFO] [stdout]  0.036s DEBUG Move: starting node_a=NodeId { index1: 9, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 13, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 23, stamp: NodeStamp(0) } new_position=1 [INFO] [stdout]  0.036s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.036s DEBUG Move: computing from reference for node node_a=NodeId { index1: 9, stamp: NodeStamp(0) } [INFO] [stdout]  0.036s DEBUG Processing operation op=Insert(b:5 @0 under b:4) [INFO] [stdout]  0.036s DEBUG created new slot slot_num=1 [INFO] [stdout]  0.036s DEBUG get_node_ref: computed path node=NodeId { index1: 9, stamp: NodeStamp(0) } path=[1, 3] [INFO] [stdout]  0.036s DEBUG created new slot slot_num=1 [INFO] [stdout]  0.036s DEBUG detached node to slot node=NodeId { index1: 2, stamp: NodeStamp(0) } slot_num=1 [INFO] [stdout]  0.036s DEBUG Move: computed from reference node_a=NodeId { index1: 9, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 3])) [INFO] [stdout]  0.036s DEBUG detached node to slot node=NodeId { index1: 2, stamp: NodeStamp(0) } slot_num=1 [INFO] [stdout]  0.036s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=0 detach_to_slot=Some(1) [INFO] [stdout]  0.036s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 25, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 26, stamp: NodeStamp(0) }, Text), (2, NodeId { index1: 24, stamp: NodeStamp(0) }, Element(Atom('h2' type=inline), Html))] [INFO] [stdout]  0.036s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=0 detach_to_slot=Some(1) [INFO] [stdout]  0.036s DEBUG Parent children after Insert children=[(0, NodeId { index1: 9, stamp: NodeStamp(0) }, Element(Atom('my-header' type=dynamic), Html))] [INFO] [stdout]  0.036s DEBUG Parent children after Insert children=[(0, NodeId { index1: 13, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html))] [INFO] [stdout]  0.036s DEBUG move_to_position: checking ancestry node=NodeId { index1: 9, stamp: NodeStamp(0) } new_parent=NodeId { index1: 23, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.036s DEBUG Move: checking target position node=NodeId { index1: 9, stamp: NodeStamp(0) } position=1 children_count=3 [INFO] [stdout]  0.036s DEBUG Move: found occupant at target position occupant=NodeId { index1: 26, stamp: NodeStamp(0) } _occupant_kind=Text [INFO] [stdout]  0.036s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9] [INFO] [stdout] [n9] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2] [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                            [INFO] [stdout] [n5] TEXT: "Title" [INFO] [stdout] [n4]

                                                            [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.036s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.036s DEBUG Processing operation op=Move(a:3 → b:6 @0 under b:5) [INFO] [stdout]  0.036s DEBUG created new slot slot_num=2 [INFO] [stdout]  0.036s DEBUG Processing operation op=Insert(b:7 @1 under b:4) [INFO] [stdout]  0.036s DEBUG Move: starting node_a=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 5, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 9, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.036s DEBUG detached node to slot node=NodeId { index1: 26, stamp: NodeStamp(0) } slot_num=2 [INFO] [stdout]  0.036s DEBUG Move: computing from reference for node node_a=NodeId { index1: 3, stamp: NodeStamp(0) } [INFO] [stdout]  0.036s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=1 detach_to_slot=None [INFO] [stdout]  0.036s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 26, stamp: NodeStamp(0) } slot=2 [INFO] [stdout]  0.036s DEBUG Parent children after Insert children=[(0, NodeId { index1: 13, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (1, NodeId { index1: 15, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html))] [INFO] [stdout]  0.036s DEBUG get_node_ref: computed path node=NodeId { index1: 3, stamp: NodeStamp(0) } path=[1, 0] [INFO] [stdout]  0.036s DEBUG Move: computed from reference node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) [INFO] [stdout]  0.036s DEBUG Generated Move patch node_a=NodeId { index1: 9, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 3])) to=NodeRef(NodePath([0, 4, 1])) detach_to_slot=Some(2) [INFO] [stdout]  0.036s DEBUG Parent children BEFORE Move children=[] [INFO] [stdout]  0.036s DEBUG move_to_position: checking ancestry node=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent=NodeId { index1: 9, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.036s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n15] [INFO] [stdout] [n15] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.036s DEBUG Processing operation op=Insert(b:9 @2 under b:4) [INFO] [stdout]  0.036s DEBUG Move: checking target position node=NodeId { index1: 3, stamp: NodeStamp(0) } position=0 children_count=0 [INFO] [stdout]  0.036s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.036s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=2 detach_to_slot=None [INFO] [stdout]  0.036s DEBUG Generated Move patch node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) to=NodeRef(NodePath([0, 0, 0])) detach_to_slot=None [INFO] [stdout]  0.036s DEBUG Parent children after Insert children=[(0, NodeId { index1: 13, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (1, NodeId { index1: 15, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (2, NodeId { index1: 16, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html))] [INFO] [stdout]  0.036s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9] [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n9] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2] [INFO] [stdout] [n11] TEXT: "" [INFO] [stdout] [n4]

                                                            [INFO] [stdout] [n5] TEXT: "Title" [INFO] [stdout] [n4]

                                                            [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.036s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n15] [INFO] [stdout] [n15] [INFO] [stdout] [n16] [INFO] [stdout] [n16] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.036s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n19] [INFO] [stdout] [n19] [INFO] [stdout] [n20] [INFO] [stdout] [n20] [INFO] [stdout] [n21] [INFO] [stdout] [n22] TEXT: "<" [INFO] [stdout] [n21] [INFO] [stdout] [n23]
                                                            [INFO] [stdout] [n25] TEXT: "" [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n24]

                                                            [INFO] [stdout] [n27] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n24]

                                                            [INFO] [stdout] [n23]
                                                            [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n13] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n13] [INFO] [stdout] [n12]
                                                            [INFO] [stdout] [n11]
                                                            [INFO] [stdout] [n2]
                                                            [INFO] [stdout] Slot 2: [INFO] [stdout] [n26] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.036s DEBUG Processing operation op=Insert(b:10 #text @0 under b:9) [INFO] [stdout]  0.036s DEBUG Processing operation op=Delete(a:5) [INFO] [stdout]  0.036s DEBUG Processing operation op=Move(a:7 → b:14 @0 under b:13) [INFO] [stdout]  0.036s DEBUG Delete operation node_a=NodeId { index1: 5, stamp: NodeStamp(0) } _node_kind=Text [INFO] [stdout]  0.036s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 16, stamp: NodeStamp(0) } position=0 detach_to_slot=None [INFO] [stdout]  0.036s DEBUG Parent children after Insert children=[(0, NodeId { index1: 17, stamp: NodeStamp(0) }, Text)] [INFO] [stdout]  0.036s DEBUG get_node_ref: computed path node=NodeId { index1: 5, stamp: NodeStamp(0) } path=[1, 1, 0] [INFO] [stdout]  0.036s DEBUG Move: starting node_a=NodeId { index1: 7, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 13, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 23, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.036s DEBUG Move: computing from reference for node node_a=NodeId { index1: 7, stamp: NodeStamp(0) } [INFO] [stdout]  0.036s DEBUG get_node_ref: computed path node=NodeId { index1: 7, stamp: NodeStamp(0) } path=[1, 2] [INFO] [stdout]  0.036s DEBUG Move: computed from reference node_a=NodeId { index1: 7, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 2])) [INFO] [stdout]  0.036s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9] [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n9] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2] [INFO] [stdout] [n11] TEXT: "" [INFO] [stdout] [n4]

                                                            [INFO] [stdout] [n12] TEXT: "" [INFO] [stdout] [n4]

                                                            [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.036s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n15] [INFO] [stdout] [n15] [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "<" [INFO] [stdout] [n16] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.036s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 25, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 9, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (2, NodeId { index1: 24, stamp: NodeStamp(0) }, Element(Atom('h2' type=inline), Html))] [INFO] [stdout]  0.036s DEBUG Processing operation op=Insert(b:11 @3 under b:4) [INFO] [stdout]  0.036s DEBUG move_to_position: checking ancestry node=NodeId { index1: 7, stamp: NodeStamp(0) } new_parent=NodeId { index1: 23, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.035s DEBUG Parent children after Insert children=[(0, NodeId { index1: 9, stamp: NodeStamp(0) }, Element(Atom('p' type=inline), Html))] [INFO] [stdout]  0.034s DEBUG matching pairs: 3 [INFO] [stdout]  0.036s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=3 detach_to_slot=None [INFO] [stdout]  0.036s DEBUG Move: checking target position node=NodeId { index1: 7, stamp: NodeStamp(0) } position=0 children_count=3 [INFO] [stdout]  0.032s DEBUG Parent children after Insert children=[(0, NodeId { index1: 28, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 29, stamp: NodeStamp(0) }, Text), (2, NodeId { index1: 30, stamp: NodeStamp(0) }, Text), (3, NodeId { index1: 27, stamp: NodeStamp(0) }, Element(Atom('ul' type=inline), Html))] [INFO] [stdout]  0.036s DEBUG Move: found occupant at target position occupant=NodeId { index1: 25, stamp: NodeStamp(0) } _occupant_kind=Text [INFO] [stdout]  0.036s DEBUG Parent children after Insert children=[(0, NodeId { index1: 13, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (1, NodeId { index1: 15, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (2, NodeId { index1: 16, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (3, NodeId { index1: 18, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html))] [INFO] [stdout]  0.036s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9]

                                                            [INFO] [stdout] [n9]

                                                            [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]

                                                            [INFO] [stdout] [n3] TEXT: "Text with " [INFO] [stdout] [n4] [INFO] [stdout] [n5] TEXT: "bold" [INFO] [stdout] [n4] [INFO] [stdout] [n6] TEXT: " word." [INFO] [stdout] [n2]

                                                            [INFO] [stdout] [INFO] [stdout]  0.034s DEBUG get_node_ref: computed path node=NodeId { index1: 5, stamp: NodeStamp(0) } path=[1] [INFO] [stdout]  0.036s DEBUG Processing operation op=Insert(b:7 @1 under b:5) [INFO] [stdout]  0.036s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 9, stamp: NodeStamp(0) } position=1 detach_to_slot=None [INFO] [stdout]  0.036s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n15] [INFO] [stdout] [n15] [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "<" [INFO] [stdout] [n16] [INFO] [stdout] [n18] [INFO] [stdout] [n18] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.036s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3]

                                                            [INFO] [stdout] [n4] TEXT: "old" [INFO] [stdout] [n3]

                                                            [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n9] [INFO] [stdout] [n6] TEXT: "before" [INFO] [stdout] [n9] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n12] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.036s DEBUG Processing operation op=Insert(b:12 #text @0 under b:11) [INFO] [stdout]  0.036s DEBUG Parent children after Insert children=[(0, NodeId { index1: 12, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 11, stamp: NodeStamp(0) }, Element(Atom('strong' type=inline), Html))] [INFO] [stdout]  0.036s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 18, stamp: NodeStamp(0) } position=0 detach_to_slot=None [INFO] [stdout]  0.036s DEBUG Parent children after Insert children=[(0, NodeId { index1: 19, stamp: NodeStamp(0) }, Text)] [INFO] [stdout]  0.036s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                            [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n27]
                                                              [INFO] [stdout] [n27]
                                                            [INFO] [stdout] [n25]
                                                            [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                            [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                            [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n7]
                                                              [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n9]
                                                            • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n11] [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n11] [INFO] [stdout] [n9]
                                                            • [INFO] [stdout] [n13] TEXT: "\n " [INFO] [stdout] [n14]
                                                            • [INFO] [stdout] [n15] TEXT: "Feature two with " [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "emphasis" [INFO] [stdout] [n16] [INFO] [stdout] [n14]
                                                            • [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n19]
                                                            • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                                            • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                            [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.036s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9]

                                                            [INFO] [stdout] [n12] TEXT: "" [INFO] [stdout] [n11] [INFO] [stdout] [n11] [INFO] [stdout] [n9]

                                                            [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]

                                                            [INFO] [stdout] [n3] TEXT: "Text with " [INFO] [stdout] [n4] [INFO] [stdout] [n5] TEXT: "bold" [INFO] [stdout] [n4] [INFO] [stdout] [n6] TEXT: " word." [INFO] [stdout] [n2]

                                                            [INFO] [stdout] [INFO] [stdout]  0.036s DEBUG Processing operation op=Insert(b:12
                                                          • @1 under b:10) [INFO] [stdout]  0.036s DEBUG Processing operation op=Insert(b:8 @0 under b:7) [INFO] [stdout]  0.035s DEBUG arena_dom cinereus diff complete ops_count=0 matched_pairs=2 [INFO] [stdout]  0.036s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 11, stamp: NodeStamp(0) } position=0 detach_to_slot=None [INFO] [stdout]  0.036s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 27, stamp: NodeStamp(0) } position=1 detach_to_slot=None [INFO] [stdout]  0.036s DEBUG Parent children after Insert children=[(0, NodeId { index1: 13, stamp: NodeStamp(0) }, Element(Atom('svg' type=inline), Svg))] [INFO] [stdout]  0.036s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n15] [INFO] [stdout] [n15] [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "<" [INFO] [stdout] [n16] [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "<" [INFO] [stdout] [n18] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.036s DEBUG Parent children after Insert children=[(0, NodeId { index1: 32, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 31, stamp: NodeStamp(0) }, Element(Atom('li' type=inline), Html))] [INFO] [stdout]  0.036s DEBUG Processing operation op=Insert(b:18

                                                            @2 under b:13) [INFO] [stdout]  0.037s DEBUG created new slot slot_num=2 [INFO] [stdout]  0.036s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9]

                                                            [INFO] [stdout] [n12] TEXT: "" [INFO] [stdout] [n11] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n11] [INFO] [stdout] [n9]

                                                            [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]

                                                            [INFO] [stdout] [n3] TEXT: "Text with " [INFO] [stdout] [n4] [INFO] [stdout] [n5] TEXT: "bold" [INFO] [stdout] [n4] [INFO] [stdout] [n6] TEXT: " word." [INFO] [stdout] [n2]

                                                            [INFO] [stdout] [INFO] [stdout]  0.037s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3]

                                                            [INFO] [stdout] [n4] TEXT: "old" [INFO] [stdout] [n3]

                                                            [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.037s DEBUG detached node to slot node=NodeId { index1: 7, stamp: NodeStamp(0) } slot_num=2 [INFO] [stdout]  0.037s DEBUG Processing operation op=Insert(b:9 @0 under b:8) [INFO] [stdout]  0.037s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 13, stamp: NodeStamp(0) } position=0 detach_to_slot=None [INFO] [stdout]  0.037s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 2, stamp: NodeStamp(0) } position=2 detach_to_slot=Some(2) [INFO] [stdout]  0.037s DEBUG Parent children after Insert children=[(0, NodeId { index1: 14, stamp: NodeStamp(0) }, Element(Atom('circle' type=inline), Svg))] [INFO] [stdout]  0.037s DEBUG Parent children after Insert children=[(0, NodeId { index1: 3, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (1, NodeId { index1: 5, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (2, NodeId { index1: 20, stamp: NodeStamp(0) }, Element(Atom('h2' type=inline), Html)), (3, NodeId { index1: 9, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html))] [INFO] [stdout]  0.037s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                            [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n27]
                                                              [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] [n31]
                                                            • [INFO] [stdout] [n31]
                                                            • [INFO] [stdout] [n27]
                                                            [INFO] [stdout] [n25]
                                                            [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                            [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                            [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n7]
                                                              [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n9]
                                                            • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n11] [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n11] [INFO] [stdout] [n9]
                                                            • [INFO] [stdout] [n13] TEXT: "\n " [INFO] [stdout] [n14]
                                                            • [INFO] [stdout] [n15] TEXT: "Feature two with " [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "emphasis" [INFO] [stdout] [n16] [INFO] [stdout] [n14]
                                                            • [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n19]
                                                            • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                                            • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                            [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.037s DEBUG Processing operation op=Insert(b:14 @1 under b:12) [INFO] [stdout]  0.037s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9]

                                                            [INFO] [stdout] [n12] TEXT: "" [INFO] [stdout] [n11] [INFO] [stdout] [n13] [INFO] [stdout] [n14] [INFO] [stdout] [n14] [INFO] [stdout] [n13] [INFO] [stdout] [n11] [INFO] [stdout] [n9]

                                                            [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]

                                                            [INFO] [stdout] [n3] TEXT: "Text with " [INFO] [stdout] [n4] [INFO] [stdout] [n5] TEXT: "bold" [INFO] [stdout] [n4] [INFO] [stdout] [n6] TEXT: " word." [INFO] [stdout] [n2]

                                                            [INFO] [stdout] [INFO] [stdout]  0.032s DEBUG Processing operation op=Insert(b:7

                                                            @1 under b:5) [INFO] [stdout]  0.037s DEBUG Processing operation op=Move(a:6 → b:10 @2 under b:5) [INFO] [stdout]  0.035s DEBUG arena_dom cinereus diff complete ops_count=1 matched_pairs=3 [INFO] [stdout]  0.036s DEBUG Processing operation op=Delete(a:4) [INFO] [stdout]  0.037s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n15] [INFO] [stdout] [n15] [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "<" [INFO] [stdout] [n16] [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "<" [INFO] [stdout] [n18] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]

                                                            [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n20]

                                                            [INFO] [stdout] [n20]

                                                            [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n2]
                                                            [INFO] [stdout] Slot 2: [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [INFO] [stdout]  0.037s DEBUG Delete operation node_a=NodeId { index1: 4, stamp: NodeStamp(0) } _node_kind=Element(Atom('h1' type=inline), Html) [INFO] [stdout]  0.037s DEBUG Processing operation op=Insert(b:19 #text @0 under b:18) [INFO] [stdout]  0.037s DEBUG get_node_ref: computed path node=NodeId { index1: 4, stamp: NodeStamp(0) } path=[1, 1] [INFO] [stdout]  0.037s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] TEXT: "Content" [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.037s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 24, stamp: NodeStamp(0) } position=1 detach_to_slot=None [INFO] [stdout]  0.037s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 20, stamp: NodeStamp(0) } position=0 detach_to_slot=None [INFO] [stdout]  0.037s DEBUG Processing operation op=UpdateProps(a:2 class: → highlight) [INFO] [stdout]  0.037s DEBUG Parent children after Insert children=[(0, NodeId { index1: 22, stamp: NodeStamp(0) }, Text)] [INFO] [stdout]  0.037s DEBUG Parent children after Insert children=[(0, NodeId { index1: 27, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 26, stamp: NodeStamp(0) }, Element(Atom('p' type=inline), Html))] [INFO] [stdout]  0.037s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9] [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n9] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2] [INFO] [stdout] [n11] TEXT: "" [INFO] [stdout] [n13] TEXT: "" [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n2] [INFO] [stdout] [INFO] [stdout]  0.037s DEBUG Processing operation op=Delete(a:6) [INFO] [stdout]  0.037s DEBUG Delete operation node_a=NodeId { index1: 6, stamp: NodeStamp(0) } _node_kind=Text [INFO] [stdout]  0.037s DEBUG get_node_ref: computed path node=NodeId { index1: 6, stamp: NodeStamp(0) } path=[1, 2] [INFO] [stdout]  0.037s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n15] [INFO] [stdout] [n15] [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "<" [INFO] [stdout] [n16] [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "<" [INFO] [stdout] [n18] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n20]

                                                            [INFO] [stdout] [n22] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n20]

                                                            [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n2]
                                                            [INFO] [stdout] Slot 2: [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [INFO] [stdout]  0.037s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9] [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n9] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2] [INFO] [stdout] [n11] TEXT: "" [INFO] [stdout] [n13] TEXT: "" [INFO] [stdout] [n14] TEXT: "" [INFO] [stdout] [n2] [INFO] [stdout] [INFO] [stdout]  0.037s DEBUG Processing operation op=Move(a:9 → b:16 @1 under b:13) [INFO] [stdout]  0.037s DEBUG Processing operation op=Delete(a:2) [INFO] [stdout]  0.037s DEBUG Move: starting node_a=NodeId { index1: 9, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 13, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 2, stamp: NodeStamp(0) } new_position=1 [INFO] [stdout]  0.037s DEBUG Delete operation node_a=NodeId { index1: 2, stamp: NodeStamp(0) } _node_kind=Element(Atom('my-header' type=dynamic), Html) [INFO] [stdout]  0.037s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                            [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [n26]

                                                            [INFO] [stdout] [n26]

                                                            [INFO] [stdout] [n24]
                                                            [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                            [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n4]

                                                            [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n7]

                                                            [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n11] TEXT: " and " [INFO] [stdout] [n12] [INFO] [stdout] [n13] TEXT: "italic" [INFO] [stdout] [n12] [INFO] [stdout] [n14] TEXT: " text." [INFO] [stdout] [n7]

                                                            [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n16]

                                                            [INFO] [stdout] [n17] TEXT: "Second paragraph with a " [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "link" [INFO] [stdout] [n18] [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

                                                            [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.037s DEBUG get_node_ref: computed path node=NodeId { index1: 2, stamp: NodeStamp(0) } path=[1] [INFO] [stdout]  0.034s DEBUG matching pairs: 2 [INFO] [stdout]  0.037s DEBUG arena_dom cinereus diff complete ops_count=4 matched_pairs=2 [INFO] [stdout]  0.037s DEBUG Processing operation op=Insert(b:13

                                                            @3 under b:5) [INFO] [stdout]  0.037s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9] [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n9] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n15] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.037s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 24, stamp: NodeStamp(0) } position=3 detach_to_slot=None [INFO] [stdout]  0.037s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]

                                                            [INFO] [stdout] [n3] TEXT: "Old content" [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.037s DEBUG Processing operation op=SetText(a:3 → b:6 text=New content) [INFO] [stdout]  0.037s DEBUG Parent children after Insert children=[(0, NodeId { index1: 27, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 26, stamp: NodeStamp(0) }, Element(Atom('p' type=inline), Html)), (2, NodeId { index1: 29, stamp: NodeStamp(0) }, Text), (3, NodeId { index1: 28, stamp: NodeStamp(0) }, Element(Atom('p' type=inline), Html))] [INFO] [stdout]  0.037s DEBUG Processing operation op=Insert(b:5
                                                            @0 under b:4) [INFO] [stdout]  0.037s DEBUG created new slot slot_num=1 [INFO] [stdout]  0.037s DEBUG detached node to slot node=NodeId { index1: 2, stamp: NodeStamp(0) } slot_num=1 [INFO] [stdout]  0.037s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=0 detach_to_slot=Some(1) [INFO] [stdout]  0.037s DEBUG Parent children after Insert children=[(0, NodeId { index1: 6, stamp: NodeStamp(0) }, Element(Atom('div' type=inline), Html))] [INFO] [stdout]  0.037s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n6]
                                                            [INFO] [stdout] [n6]
                                                            [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] TEXT: "Old content" [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.037s DEBUG Processing operation op=Move(a:3 → b:6 @0 under b:5) [INFO] [stdout]  0.037s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                            [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [n26]

                                                            [INFO] [stdout] [n26]

                                                            [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] [n28]

                                                            [INFO] [stdout] [n28]

                                                            [INFO] [stdout] [n24]
                                                            [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                            [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n4]

                                                            [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n7]

                                                            [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n11] TEXT: " and " [INFO] [stdout] [n12] [INFO] [stdout] [n13] TEXT: "italic" [INFO] [stdout] [n12] [INFO] [stdout] [n14] TEXT: " text." [INFO] [stdout] [n7]

                                                            [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n16]

                                                            [INFO] [stdout] [n17] TEXT: "Second paragraph with a " [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "link" [INFO] [stdout] [n18] [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

                                                            [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n2]
                                                            [INFO] [stdout] [INFO] [stdout]  0.037s DEBUG Processing operation op=Move(a:21 → b:15 @4 under b:5) [INFO] [stdout]  0.037s DEBUG Move: starting node_a=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 5, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 6, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.037s DEBUG Move: computing from reference for node node_a=NodeId { index1: 3, stamp: NodeStamp(0) } [INFO] [stdout] [INFO] [stdout]  0.037s DEBUG Move: starting node_a=NodeId { index1: 21, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 5, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 24, stamp: NodeStamp(0) } new_position=4 [INFO] [stdout]  0.037s DEBUG get_node_ref: computed path node=NodeId { index1: 3, stamp: NodeStamp(0) } path=[1, 0] [INFO] [stdout]  0.037s DEBUG Move: computing from reference for node node_a=NodeId { index1: 21, stamp: NodeStamp(0) } [INFO] [stdout]  0.037s DEBUG Move: computed from reference node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) [INFO] [stdout]  0.037s DEBUG get_node_ref: computed path node=NodeId { index1: 21, stamp: NodeStamp(0) } path=[1, 6] [INFO] [stdout]  0.037s DEBUG Parent children BEFORE Move children=[] [INFO] [stdout] test diff::tests::test_opaque_with_normal_siblings ... ok [INFO] [stdout]  0.037s DEBUG Move: computed from reference node_a=NodeId { index1: 21, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 6])) [INFO] [stdout]  0.037s DEBUG move_to_position: checking ancestry node=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent=NodeId { index1: 6, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.037s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 27, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 26, stamp: NodeStamp(0) }, Element(Atom('p' type=inline), Html)), (2, NodeId { index1: 29, stamp: NodeStamp(0) }, Text), (3, NodeId { index1: 28, stamp: NodeStamp(0) }, Element(Atom('p' type=inline), Html))] [INFO] [stdout]  0.037s DEBUG Move: checking target position node=NodeId { index1: 3, stamp: NodeStamp(0) } position=0 children_count=0 [INFO] [stdout]  0.037s DEBUG Move: appending (no occupant) [INFO] [stdout] test diff::tests::test_opaque_changed_emits_opaque_changed ...  0.037s DEBUG move_to_position: checking ancestry node=NodeId { index1: 21, stamp: NodeStamp(0) } new_parent=NodeId { index1: 24, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.037s DEBUG UpdateProps: rebuilding attrs old_count=2 changes_count=1 [INFO] [stdout]  0.037s DEBUG UpdateProps: processing attr src value=Some("aaa") [INFO] [stdout]  0.037s DEBUG UpdateProps: final attrs_count=1 [INFO] [stdout] ok [INFO] [stdout]  0.037s DEBUG Applying patch: Insert
                                                              @[0, 0] (1 attrs) →slot1 [INFO] [stdout]  0.036s DEBUG created new slot slot_num=3 [INFO] [stdout]  0.037s DEBUG insert_at: path=[0, 0] parent= pos=0 [INFO] [stdout]  0.037s DEBUG detached node to slot node=NodeId { index1: 25, stamp: NodeStamp(0) } slot_num=3 [INFO] [stdout]  0.037s DEBUG insert_at: detaching child
                                                                at pos 0 to slot1 [INFO] [stdout]  0.037s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 25, stamp: NodeStamp(0) } slot=3 [INFO] [stdout] test dom::tests::test_has_doctype_prefix ...  0.037s DEBUG insert_at_position:
                                                                  under at pos 0 (has 0 children) [INFO] [stdout] ok [INFO] [stdout]  0.037s DEBUG Generated Move patch node_a=NodeId { index1: 7, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 2])) to=NodeRef(NodePath([0, 4, 0])) detach_to_slot=Some(3) [INFO] [stdout]  0.037s DEBUG Applying patch: Insert
                                                                    @[0, 0, 0] (1 attrs) [INFO] [stdout]  0.037s DEBUG insert_at: path=[0, 0, 0] parent=
                                                                      pos=0 [INFO] [stdout]  0.037s DEBUG insert_at_position:
                                                                        under
                                                                          at pos 0 (has 0 children) [INFO] [stdout]  0.037s DEBUG Applying patch: Insert
                                                                            @[0, 0, 1] (1 attrs) [INFO] [stdout]  0.037s DEBUG insert_at: path=[0, 0, 1] parent=
                                                                              pos=1 [INFO] [stdout]  0.037s DEBUG insert_at_position:
                                                                                under
                                                                                  at pos 1 (has 1 children) [INFO] [stdout]  0.037s DEBUG Move: starting node_a=NodeId { index1: 6, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 5, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 9, stamp: NodeStamp(0) } new_position=2 [INFO] [stdout]  0.037s DEBUG Applying patch: Move [1, 0, 0] → [0, 0, 1, 0] [INFO] [stdout]  0.037s DEBUG Move: computing from reference for node node_a=NodeId { index1: 6, stamp: NodeStamp(0) } [INFO] [stdout]  0.037s DEBUG insert_at: path=[0, 0, 1, 0] parent=
                                                                                    pos=0 [INFO] [stdout]  0.037s DEBUG Move: checking target position node=NodeId { index1: 21, stamp: NodeStamp(0) } position=4 children_count=4 [INFO] [stdout]  0.038s DEBUG insert_at_position: under
                                                                                      at pos 0 (has 0 children) [INFO] [stdout]  0.038s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.038s DEBUG Applying patch: Remove @[1, 0, 1, 0] [INFO] [stdout]  0.038s DEBUG Applying patch: Remove @[1, 0, 1] [INFO] [stdout]  0.037s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n19] [INFO] [stdout] [n19] [INFO] [stdout] [n20] [INFO] [stdout] [n20] [INFO] [stdout] [n21] [INFO] [stdout] [n22] TEXT: "<" [INFO] [stdout] [n21] [INFO] [stdout] [n23]
                                                                                      [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n24]

                                                                                      [INFO] [stdout] [n27] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n24]

                                                                                      [INFO] [stdout] [n23]
                                                                                      [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                      [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [n11]
                                                                                      [INFO] [stdout] [n12]
                                                                                      [INFO] [stdout] [n13] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n13] [INFO] [stdout] [n12]
                                                                                      [INFO] [stdout] [n11]
                                                                                      [INFO] [stdout] [n2]
                                                                                      [INFO] [stdout] Slot 2: [INFO] [stdout] [n26] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n25] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.038s DEBUG Generated Move patch node_a=NodeId { index1: 21, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 6])) to=NodeRef(NodePath([0, 0, 4])) detach_to_slot=None [INFO] [stdout]  0.037s DEBUG Generated Move patch node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) to=NodeRef(NodePath([0, 0, 0])) detach_to_slot=None [INFO] [stdout]  0.038s DEBUG Processing operation op=Move(a:4 → b:6 @0 under b:5) [INFO] [stdout]  0.038s DEBUG Move: starting node_a=NodeId { index1: 4, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 5, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 17, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.038s DEBUG Move: computing from reference for node node_a=NodeId { index1: 4, stamp: NodeStamp(0) } [INFO] [stdout]  0.038s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n6]
                                                                                      [INFO] [stdout] [n3] TEXT: "Old content" [INFO] [stdout] [n6]
                                                                                      [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                      [INFO] [stdout] [n8] TEXT: "" [INFO] [stdout] [n2]
                                                                                      [INFO] [stdout] [INFO] [stdout]  0.038s DEBUG get_node_ref: computed path node=NodeId { index1: 4, stamp: NodeStamp(0) } path=[1, 0, 0] [INFO] [stdout]  0.038s DEBUG Processing operation op=Delete(a:2) [INFO] [stdout]  0.038s DEBUG Move: computed from reference node_a=NodeId { index1: 4, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0, 0])) [INFO] [stdout]  0.038s DEBUG Delete operation node_a=NodeId { index1: 2, stamp: NodeStamp(0) } _node_kind=Element(Atom('div' type=inline), Html) [INFO] [stdout]  0.038s DEBUG Parent children BEFORE Move children=[] [INFO] [stdout]  0.038s DEBUG get_node_ref: computed path node=NodeId { index1: 2, stamp: NodeStamp(0) } path=[1] [INFO] [stdout]  0.038s DEBUG move_to_position: checking ancestry node=NodeId { index1: 4, stamp: NodeStamp(0) } new_parent=NodeId { index1: 17, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.038s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n6]
                                                                                      [INFO] [stdout] [n3] TEXT: "Old content" [INFO] [stdout] [n6]
                                                                                      [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n9] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.038s DEBUG Move: checking target position node=NodeId { index1: 4, stamp: NodeStamp(0) } position=0 children_count=0 [INFO] [stdout]  0.038s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.038s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                                                      [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [n26]

                                                                                      [INFO] [stdout] [n26]

                                                                                      [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] [n28]

                                                                                      [INFO] [stdout] [n28]

                                                                                      [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n24]
                                                                                      [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                      [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                      [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n4]

                                                                                      [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n7]

                                                                                      [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n11] TEXT: " and " [INFO] [stdout] [n12] [INFO] [stdout] [n13] TEXT: "italic" [INFO] [stdout] [n12] [INFO] [stdout] [n14] TEXT: " text." [INFO] [stdout] [n7]

                                                                                      [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n16]

                                                                                      [INFO] [stdout] [n17] TEXT: "Second paragraph with a " [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "link" [INFO] [stdout] [n18] [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

                                                                                      [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n2]
                                                                                      [INFO] [stdout] [INFO] [stdout]  0.038s DEBUG Generated Move patch node_a=NodeId { index1: 4, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0, 0])) to=NodeRef(NodePath([0, 0, 0])) detach_to_slot=None [INFO] [stdout]  0.038s DEBUG Processing operation op=Move(a:15 → b:12 @2 under b:5) [INFO] [stdout]  0.038s DEBUG Move: starting node_a=NodeId { index1: 15, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 5, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 24, stamp: NodeStamp(0) } new_position=2 [INFO] [stdout]  0.038s DEBUG Move: computing from reference for node node_a=NodeId { index1: 15, stamp: NodeStamp(0) } [INFO] [stdout]  0.038s DEBUG get_node_ref: computed path node=NodeId { index1: 15, stamp: NodeStamp(0) } path=[1, 4] [INFO] [stdout]  0.038s DEBUG Move: computed from reference node_a=NodeId { index1: 15, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 4])) [INFO] [stdout]  0.038s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 27, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 26, stamp: NodeStamp(0) }, Element(Atom('p' type=inline), Html)), (2, NodeId { index1: 29, stamp: NodeStamp(0) }, Text), (3, NodeId { index1: 28, stamp: NodeStamp(0) }, Element(Atom('p' type=inline), Html)), (4, NodeId { index1: 21, stamp: NodeStamp(0) }, Text)] [INFO] [stdout]  0.038s DEBUG move_to_position: checking ancestry node=NodeId { index1: 15, stamp: NodeStamp(0) } new_parent=NodeId { index1: 24, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.038s DEBUG Applying patch: SetText "New content" @[0, 0, 0] [INFO] [stdout]  0.038s DEBUG Move: checking target position node=NodeId { index1: 15, stamp: NodeStamp(0) } position=2 children_count=5 [INFO] [stdout]  0.038s DEBUG Applying patch: Insert
                                                                                      @[0, 0] →slot1 [INFO] [stdout]  0.038s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n17] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n17] [INFO] [stdout] [n19] [INFO] [stdout] [n19] [INFO] [stdout] [n20] [INFO] [stdout] [n20] [INFO] [stdout] [n21] [INFO] [stdout] [n22] TEXT: "<" [INFO] [stdout] [n21] [INFO] [stdout] [n23]
                                                                                      [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n24]

                                                                                      [INFO] [stdout] [n27] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n24]

                                                                                      [INFO] [stdout] [n23]
                                                                                      [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                      [INFO] [stdout] [n3] [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [n11]
                                                                                      [INFO] [stdout] [n12]
                                                                                      [INFO] [stdout] [n13] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n13] [INFO] [stdout] [n12]
                                                                                      [INFO] [stdout] [n11]
                                                                                      [INFO] [stdout] [n2]
                                                                                      [INFO] [stdout] Slot 2: [INFO] [stdout] [n26] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n25] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.038s DEBUG Move: found occupant at target position occupant=NodeId { index1: 29, stamp: NodeStamp(0) } _occupant_kind=Text [INFO] [stdout] test dom::tests::test_incomplete_tag_at_eof ...  0.038s DEBUG insert_at: path=[0, 0] parent= pos=0 [INFO] [stdout] ok 0.038s DEBUG created new slot slot_num=2 [INFO] [stdout]  0.038s DEBUG insert_at: detaching child
                                                                                      at pos 0 to slot1 [INFO] [stdout] [INFO] [stdout]  0.038s DEBUG insert_at_position:
                                                                                      under at pos 0 (has 0 children) [INFO] [stdout]  0.038s DEBUG detached node to slot node=NodeId { index1: 29, stamp: NodeStamp(0) } slot_num=2 [INFO] [stdout]  0.038s DEBUG Processing operation op=Move(a:6 → b:8 @0 under b:7) [INFO] [stdout]  0.038s DEBUG Applying patch: Remove @[1, 0] [INFO] [stdout]  0.038s DEBUG get_node_ref: computed path node=NodeId { index1: 6, stamp: NodeStamp(0) } path=[1, 2] [INFO] [stdout]  0.038s DEBUG Applying patch: Remove @[1] [INFO] [stdout]  0.038s DEBUG Move: starting node_a=NodeId { index1: 6, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 7, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 19, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.038s DEBUG Move: computed from reference node_a=NodeId { index1: 6, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 2])) [INFO] [stdout]  0.038s DEBUG Move: computing from reference for node node_a=NodeId { index1: 6, stamp: NodeStamp(0) } [INFO] [stdout]  0.038s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 12, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 11, stamp: NodeStamp(0) }, Element(Atom('strong' type=inline), Html))] [INFO] [stdout]  0.038s DEBUG get_node_ref: computed path node=NodeId { index1: 6, stamp: NodeStamp(0) } path=[1, 1, 0] [INFO] [stdout]  0.038s DEBUG move_to_position: checking ancestry node=NodeId { index1: 6, stamp: NodeStamp(0) } new_parent=NodeId { index1: 9, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout] test dom::tests::test_leading_whitespace_in_body_content ... ok [INFO] [stdout]  0.038s DEBUG Move: computed from reference node_a=NodeId { index1: 6, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 1, 0])) [INFO] [stdout]  0.038s DEBUG Parent children BEFORE Move children=[] [INFO] [stdout]  0.038s DEBUG Move: checking target position node=NodeId { index1: 6, stamp: NodeStamp(0) } position=2 children_count=2 [INFO] [stdout]  0.038s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.038s DEBUG move_to_position: checking ancestry node=NodeId { index1: 6, stamp: NodeStamp(0) } new_parent=NodeId { index1: 19, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.038s DEBUG Move: checking target position node=NodeId { index1: 6, stamp: NodeStamp(0) } position=0 children_count=0 [INFO] [stdout]  0.038s DEBUG Generated Move patch node_a=NodeId { index1: 6, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 2])) to=NodeRef(NodePath([0, 0, 2])) detach_to_slot=None [INFO] [stdout]  0.038s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.038s DEBUG Generated Move patch node_a=NodeId { index1: 6, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 1, 0])) to=NodeRef(NodePath([0, 1, 0])) detach_to_slot=None [INFO] [stdout]  0.038s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9]

                                                                                      [INFO] [stdout] [n12] TEXT: "" [INFO] [stdout] [n11] [INFO] [stdout] [n13] [INFO] [stdout] [n14] [INFO] [stdout] [n14] [INFO] [stdout] [n13] [INFO] [stdout] [n11] [INFO] [stdout] [n6] TEXT: " word." [INFO] [stdout] [n9]

                                                                                      [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]

                                                                                      [INFO] [stdout] [n3] TEXT: "Text with " [INFO] [stdout] [n4] [INFO] [stdout] [n5] TEXT: "bold" [INFO] [stdout] [n4] [INFO] [stdout] [n15] TEXT: "" [INFO] [stdout] [n2]

                                                                                      [INFO] [stdout] [INFO] [stdout]  0.038s DEBUG Processing operation op=Move(a:3 → b:6 @0 under b:5) [INFO] [stdout]  0.037s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 31, stamp: NodeStamp(0) } position=1 detach_to_slot=None [INFO] [stdout]  0.038s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 29, stamp: NodeStamp(0) } slot=2 [INFO] [stdout]  0.038s DEBUG Result:
                                                                                        [INFO] [stdout]  0.038s DEBUG Generated Move patch node_a=NodeId { index1: 15, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 4])) to=NodeRef(NodePath([0, 0, 2])) detach_to_slot=Some(2) [INFO] [stdout] test dom::tests::test_bogus_comment_parsing ...  0.038s DEBUG Expected:
                                                                                          [INFO] [stdout] ok 0.038s DEBUG Parent children after Insert children=[(0, NodeId { index1: 34, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 33, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html))] [INFO] [stdout] [INFO] [stdout]  0.038s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n17] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n17] [INFO] [stdout] [n19] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n19] [INFO] [stdout] [n20] [INFO] [stdout] [n20] [INFO] [stdout] [n21] [INFO] [stdout] [n22] TEXT: "<" [INFO] [stdout] [n21] [INFO] [stdout] [n23]
                                                                                          [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n24]

                                                                                          [INFO] [stdout] [n27] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n24]

                                                                                          [INFO] [stdout] [n23]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n3] [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n33] TEXT: "" [INFO] [stdout] [n5] [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [n11]
                                                                                          [INFO] [stdout] [n12]
                                                                                          [INFO] [stdout] [n13] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n13] [INFO] [stdout] [n12]
                                                                                          [INFO] [stdout] [n11]
                                                                                          [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n26] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n25] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.038s DEBUG Processing operation op=Move(a:14 → b:10 @0 under b:9) [INFO] [stdout]  0.038s DEBUG Move: starting node_a=NodeId { index1: 14, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 9, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 20, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.038s DEBUG Move: computing from reference for node node_a=NodeId { index1: 14, stamp: NodeStamp(0) } [INFO] [stdout]  0.038s DEBUG Applying patch: Move [1, 0] → [0, 0, 0] [INFO] [stdout]  0.038s DEBUG get_node_ref: computed path node=NodeId { index1: 14, stamp: NodeStamp(0) } path=[1, 4, 0, 0, 0] [INFO] [stdout]  0.038s DEBUG Move: computed from reference node_a=NodeId { index1: 14, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 4, 0, 0, 0])) [INFO] [stdout]  0.038s DEBUG insert_at: path=[0, 0, 0] parent=
                                                                                          pos=0 [INFO] [stdout]  0.038s DEBUG Parent children BEFORE Move children=[] [INFO] [stdout]  0.038s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n11] TEXT: " and " [INFO] [stdout] [n12] [INFO] [stdout] [n13] TEXT: "italic" [INFO] [stdout] [n12] [INFO] [stdout] [n14] TEXT: " text." [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n31] TEXT: "" [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n17] TEXT: "Second paragraph with a " [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "link" [INFO] [stdout] [n18] [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.038s DEBUG insert_at_position: text("New conten") under
                                                                                          at pos 0 (has 0 children) [INFO] [stdout]  0.038s DEBUG move_to_position: checking ancestry node=NodeId { index1: 14, stamp: NodeStamp(0) } new_parent=NodeId { index1: 20, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.038s DEBUG Processing operation op=Move(a:9 → b:9 @1 under b:7) [INFO] [stdout]  0.038s DEBUG Applying patch: Remove @[1] [INFO] [stdout]  0.038s DEBUG Move: checking target position node=NodeId { index1: 14, stamp: NodeStamp(0) } position=0 children_count=0 [INFO] [stdout]  0.038s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] [n33] [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                            [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n11] [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n11] [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n13] TEXT: "\n " [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n15] TEXT: "Feature two with " [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "emphasis" [INFO] [stdout] [n16] [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [INFO] [stdout]  0.038s DEBUG Move: starting node_a=NodeId { index1: 9, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 7, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 26, stamp: NodeStamp(0) } new_position=1 [INFO] [stdout]  0.038s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.038s DEBUG Move: computing from reference for node node_a=NodeId { index1: 9, stamp: NodeStamp(0) } [INFO] [stdout]  0.038s DEBUG Processing operation op=Move(a:22 → b:17 @4 under b:5) [INFO] [stdout]  0.038s DEBUG Generated Move patch node_a=NodeId { index1: 14, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 4, 0, 0, 0])) to=NodeRef(NodePath([0, 2, 0])) detach_to_slot=None [INFO] [stdout]  0.038s DEBUG get_node_ref: computed path node=NodeId { index1: 9, stamp: NodeStamp(0) } path=[1, 3, 1] [INFO] [stdout]  0.038s DEBUG Move: starting node_a=NodeId { index1: 22, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 5, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 25, stamp: NodeStamp(0) } new_position=4 [INFO] [stdout]  0.038s DEBUG Move: computing from reference for node node_a=NodeId { index1: 22, stamp: NodeStamp(0) } [INFO] [stdout]  0.038s DEBUG Move: computed from reference node_a=NodeId { index1: 9, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 3, 1])) [INFO] [stdout]  0.038s DEBUG Move: starting node_a=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 5, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 9, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.039s DEBUG Parent children BEFORE Move children=[] [INFO] [stdout]  0.038s DEBUG get_node_ref: computed path node=NodeId { index1: 22, stamp: NodeStamp(0) } path=[1, 4] [INFO] [stdout]  0.039s DEBUG move_to_position: checking ancestry node=NodeId { index1: 9, stamp: NodeStamp(0) } new_parent=NodeId { index1: 26, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.037s DEBUG Move: computing from reference for node node_a=NodeId { index1: 9, stamp: NodeStamp(0) } [INFO] [stdout]  0.038s DEBUG arena_dom cinereus diff complete ops_count=14 matched_pairs=3 [INFO] [stdout]  0.039s DEBUG Move: computed from reference node_a=NodeId { index1: 22, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 4])) [INFO] [stdout]  0.039s DEBUG Move: checking target position node=NodeId { index1: 9, stamp: NodeStamp(0) } position=1 children_count=0 [INFO] [stdout]  0.039s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.039s DEBUG Generated Move patch node_a=NodeId { index1: 9, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 3, 1])) to=NodeRef(NodePath([0, 0, 1, 1])) detach_to_slot=None [INFO] [stdout]  0.039s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] [n3] TEXT: "Unclosed paragraph" [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] [n5]
                                                                                          [INFO] [stdout] [n6] TEXT: "Inside P which browsers will auto-close" [INFO] [stdout] [n5]
                                                                                          [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "Unclosed span" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n10] TEXT: "Block in span" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] [INFO] [stdout]  0.039s DEBUG Processing operation op=SetText(a:3 → b:6 text=d ) [INFO] [stdout]  0.039s DEBUG Processing operation op=SetText(a:6 → b:8 text=d<<<&<) [INFO] [stdout]  0.039s DEBUG Processing operation op=Insert(b:5 @0 under b:4) [INFO] [stdout]  0.039s DEBUG created new slot slot_num=1 [INFO] [stdout]  0.039s DEBUG detached node to slot node=NodeId { index1: 2, stamp: NodeStamp(0) } slot_num=1 [INFO] [stdout]  0.039s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n33] TEXT: "" [INFO] [stdout] [n11] TEXT: " and " [INFO] [stdout] [n12] [INFO] [stdout] [n13] TEXT: "italic" [INFO] [stdout] [n12] [INFO] [stdout] [n14] TEXT: " text." [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n31] TEXT: "" [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n17] TEXT: "Second paragraph with a " [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "link" [INFO] [stdout] [n18] [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.039s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=0 detach_to_slot=Some(1) [INFO] [stdout]  0.039s DEBUG Processing operation op=Move(a:8 → b:8 @0 under b:7) [INFO] [stdout]  0.039s DEBUG Parent children after Insert children=[(0, NodeId { index1: 13, stamp: NodeStamp(0) }, Element(Atom('img' type=inline), Html)), (1, NodeId { index1: 5, stamp: NodeStamp(0) }, Element(Atom('div' type=inline), Html)), (2, NodeId { index1: 7, stamp: NodeStamp(0) }, Element(Atom('span' type=inline), Html))] [INFO] [stdout]  0.039s DEBUG Move: starting node_a=NodeId { index1: 8, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 7, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 26, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.039s DEBUG Move: computing from reference for node node_a=NodeId { index1: 8, stamp: NodeStamp(0) } [INFO] [stdout]  0.039s DEBUG get_node_ref: computed path node=NodeId { index1: 8, stamp: NodeStamp(0) } path=[1, 3, 0] [INFO] [stdout]  0.039s DEBUG Move: computed from reference node_a=NodeId { index1: 8, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 3, 0])) [INFO] [stdout]  0.039s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n5]
                                                                                          [INFO] [stdout] [n6] TEXT: "Inside P which browsers will auto-close" [INFO] [stdout] [n5]
                                                                                          [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "Unclosed span" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n10] TEXT: "Block in span" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] [n3] TEXT: "Unclosed paragraph" [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] [INFO] [stdout]  0.039s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 34, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 9, stamp: NodeStamp(0) }, Element(Atom('strong' type=inline), Html))] [INFO] [stdout]  0.039s DEBUG Processing operation op=Insert(b:7
                                                                                        • @2 under b:4) [INFO] [stdout]  0.039s DEBUG move_to_position: checking ancestry node=NodeId { index1: 8, stamp: NodeStamp(0) } new_parent=NodeId { index1: 26, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.039s DEBUG created new slot slot_num=2 [INFO] [stdout]  0.039s DEBUG Move: checking target position node=NodeId { index1: 8, stamp: NodeStamp(0) } position=0 children_count=2 [INFO] [stdout]  0.039s DEBUG detached node to slot node=NodeId { index1: 7, stamp: NodeStamp(0) } slot_num=2 [INFO] [stdout]  0.039s DEBUG Move: found occupant at target position occupant=NodeId { index1: 34, stamp: NodeStamp(0) } _occupant_kind=Text [INFO] [stdout]  0.039s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 1, stamp: NodeStamp(0) } position=2 detach_to_slot=Some(2) [INFO] [stdout]  0.039s DEBUG created new slot slot_num=3 [INFO] [stdout]  0.039s DEBUG detached node to slot node=NodeId { index1: 34, stamp: NodeStamp(0) } slot_num=3 [INFO] [stdout]  0.039s DEBUG Parent children after Insert children=[(0, NodeId { index1: 13, stamp: NodeStamp(0) }, Element(Atom('img' type=inline), Html)), (1, NodeId { index1: 5, stamp: NodeStamp(0) }, Element(Atom('div' type=inline), Html)), (2, NodeId { index1: 15, stamp: NodeStamp(0) }, Element(Atom('li' type=inline), Html))] [INFO] [stdout]  0.039s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 34, stamp: NodeStamp(0) } slot=3 [INFO] [stdout]  0.039s DEBUG Generated Move patch node_a=NodeId { index1: 8, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 3, 0])) to=NodeRef(NodePath([0, 0, 1, 0])) detach_to_slot=Some(3) [INFO] [stdout]  0.039s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n5]
                                                                                          [INFO] [stdout] [n6] TEXT: "Inside P which browsers will auto-close" [INFO] [stdout] [n5]
                                                                                          [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] [n3] TEXT: "Unclosed paragraph" [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "Unclosed span" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n10] TEXT: "Block in span" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [INFO] [stdout]  0.039s DEBUG Processing operation op=Insert(b:9 @1 under b:7) [INFO] [stdout]  0.039s DEBUG After Insert - checking parent state shadow_parent=NodeId { index1: 15, stamp: NodeStamp(0) } position=1 detach_to_slot=None [INFO] [stdout]  0.039s DEBUG Parent children after Insert children=[(0, NodeId { index1: 18, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 17, stamp: NodeStamp(0) }, Element(Atom('a"d' type=inline), Html))] [INFO] [stdout]  0.039s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n33] TEXT: "" [INFO] [stdout] [n11] TEXT: " and " [INFO] [stdout] [n12] [INFO] [stdout] [n13] TEXT: "italic" [INFO] [stdout] [n12] [INFO] [stdout] [n14] TEXT: " text." [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n31] TEXT: "" [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n17] TEXT: "Second paragraph with a " [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "link" [INFO] [stdout] [n18] [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.039s DEBUG Processing operation op=Move(a:3 → b:6 @0 under b:5) [INFO] [stdout]  0.039s DEBUG === After Insert === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n5]
                                                                                          [INFO] [stdout] [n6] TEXT: "Inside P which browsers will auto-close" [INFO] [stdout] [n5]
                                                                                          [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n18] TEXT: "" [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] [n3] TEXT: "Unclosed paragraph" [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "Unclosed span" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n10] TEXT: "Block in span" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [INFO] [stdout]  0.039s DEBUG Move: starting node_a=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 5, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 24, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.039s DEBUG Processing operation op=Move(a:3 → b:6 @1 under b:4) [INFO] [stdout]  0.039s DEBUG Move: computing from reference for node node_a=NodeId { index1: 3, stamp: NodeStamp(0) } [INFO] [stdout]  0.039s DEBUG Move: starting node_a=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 4, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 1, stamp: NodeStamp(0) } new_position=1 [INFO] [stdout]  0.039s DEBUG get_node_ref: computed path node=NodeId { index1: 3, stamp: NodeStamp(0) } path=[1, 0] [INFO] [stdout]  0.039s DEBUG Move: computing from reference for node node_a=NodeId { index1: 3, stamp: NodeStamp(0) } [INFO] [stdout]  0.039s DEBUG Move: computed from reference node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) [INFO] [stdout]  0.039s DEBUG get_node_ref: computed path node=NodeId { index1: 3, stamp: NodeStamp(0) } path=[1, 0] [INFO] [stdout]  0.039s DEBUG Move: computed from reference node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) [INFO] [stdout]  0.039s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 27, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 26, stamp: NodeStamp(0) }, Element(Atom('p' type=inline), Html)), (2, NodeId { index1: 15, stamp: NodeStamp(0) }, Text), (3, NodeId { index1: 28, stamp: NodeStamp(0) }, Element(Atom('p' type=inline), Html)), (4, NodeId { index1: 21, stamp: NodeStamp(0) }, Text)] [INFO] [stdout]  0.040s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 13, stamp: NodeStamp(0) }, Element(Atom('img' type=inline), Html)), (1, NodeId { index1: 5, stamp: NodeStamp(0) }, Element(Atom('div' type=inline), Html)), (2, NodeId { index1: 15, stamp: NodeStamp(0) }, Element(Atom('li' type=inline), Html))] [INFO] [stdout]  0.040s DEBUG move_to_position: checking ancestry node=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent=NodeId { index1: 24, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.040s DEBUG move_to_position: checking ancestry node=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent=NodeId { index1: 1, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.040s DEBUG Move: checking target position node=NodeId { index1: 3, stamp: NodeStamp(0) } position=0 children_count=5 [INFO] [stdout]  0.040s DEBUG Move: checking target position node=NodeId { index1: 3, stamp: NodeStamp(0) } position=1 children_count=3 [INFO] [stdout]  0.040s DEBUG Move: found occupant at target position occupant=NodeId { index1: 27, stamp: NodeStamp(0) } _occupant_kind=Text [INFO] [stdout]  0.040s DEBUG Move: found occupant at target position occupant=NodeId { index1: 5, stamp: NodeStamp(0) } _occupant_kind=Element(Atom('div' type=inline), Html) [INFO] [stdout]  0.040s DEBUG created new slot slot_num=4 [INFO] [stdout]  0.040s DEBUG created new slot slot_num=3 [INFO] [stdout]  0.040s DEBUG detached node to slot node=NodeId { index1: 27, stamp: NodeStamp(0) } slot_num=4 [INFO] [stdout]  0.040s DEBUG detached node to slot node=NodeId { index1: 5, stamp: NodeStamp(0) } slot_num=3 [INFO] [stdout]  0.040s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 27, stamp: NodeStamp(0) } slot=4 [INFO] [stdout]  0.040s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 5, stamp: NodeStamp(0) } slot=3 [INFO] [stdout]  0.040s DEBUG Generated Move patch node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) to=NodeRef(NodePath([0, 0, 0])) detach_to_slot=Some(4) [INFO] [stdout]  0.040s DEBUG Generated Move patch node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) to=NodeRef(NodePath([0, 1])) detach_to_slot=Some(3) [INFO] [stdout]  0.040s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n3] TEXT: "Unclosed paragraph" [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n18] TEXT: "" [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] [n19] TEXT: "" [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "Unclosed span" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n10] TEXT: "Block in span" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] Slot 3: [INFO] [stdout] [n5]
                                                                                          [INFO] [stdout] [n6] TEXT: "Inside P which browsers will auto-close" [INFO] [stdout] [n5]
                                                                                          [INFO] [stdout] [INFO] [stdout]  0.040s DEBUG Processing operation op=Move(a:6 → b:8 @0 under b:7) [INFO] [stdout]  0.040s DEBUG Move: starting node_a=NodeId { index1: 6, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 7, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 15, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.040s DEBUG Move: computing from reference for node node_a=NodeId { index1: 6, stamp: NodeStamp(0) } [INFO] [stdout]  0.040s DEBUG get_node_ref: computed path node=NodeId { index1: 6, stamp: NodeStamp(0) } path=[3, 0] [INFO] [stdout]  0.040s DEBUG Move: computed from reference node_a=NodeId { index1: 6, stamp: NodeStamp(0) } from=NodeRef(NodePath([3, 0])) [INFO] [stdout]  0.040s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n37] TEXT: "" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n33] TEXT: "" [INFO] [stdout] [n11] TEXT: " and " [INFO] [stdout] [n12] [INFO] [stdout] [n13] TEXT: "italic" [INFO] [stdout] [n12] [INFO] [stdout] [n14] TEXT: " text." [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n31] TEXT: "" [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n17] TEXT: "Second paragraph with a " [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "link" [INFO] [stdout] [n18] [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.040s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 18, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 17, stamp: NodeStamp(0) }, Element(Atom('a"d' type=inline), Html))] [INFO] [stdout]  0.040s DEBUG Processing operation op=Move(a:5 → b:11 @2 under b:7) [INFO] [stdout]  0.040s DEBUG move_to_position: checking ancestry node=NodeId { index1: 6, stamp: NodeStamp(0) } new_parent=NodeId { index1: 15, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.040s DEBUG Move: starting node_a=NodeId { index1: 5, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 7, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 26, stamp: NodeStamp(0) } new_position=2 [INFO] [stdout]  0.040s DEBUG Move: checking target position node=NodeId { index1: 6, stamp: NodeStamp(0) } position=0 children_count=2 [INFO] [stdout]  0.040s DEBUG Move: computing from reference for node node_a=NodeId { index1: 5, stamp: NodeStamp(0) } [INFO] [stdout]  0.040s DEBUG Move: found occupant at target position occupant=NodeId { index1: 18, stamp: NodeStamp(0) } _occupant_kind=Text [INFO] [stdout]  0.040s DEBUG get_node_ref: computed path node=NodeId { index1: 5, stamp: NodeStamp(0) } path=[1, 1, 0] [INFO] [stdout]  0.040s DEBUG created new slot slot_num=4 [INFO] [stdout]  0.040s DEBUG Move: computed from reference node_a=NodeId { index1: 5, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 1, 0])) [INFO] [stdout]  0.040s DEBUG detached node to slot node=NodeId { index1: 18, stamp: NodeStamp(0) } slot_num=4 [INFO] [stdout]  0.040s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 8, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 9, stamp: NodeStamp(0) }, Element(Atom('strong' type=inline), Html))] [INFO] [stdout]  0.040s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 18, stamp: NodeStamp(0) } slot=4 [INFO] [stdout]  0.040s DEBUG move_to_position: checking ancestry node=NodeId { index1: 5, stamp: NodeStamp(0) } new_parent=NodeId { index1: 26, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.040s DEBUG Generated Move patch node_a=NodeId { index1: 6, stamp: NodeStamp(0) } from=NodeRef(NodePath([3, 0])) to=NodeRef(NodePath([0, 2, 0])) detach_to_slot=Some(4) [INFO] [stdout]  0.040s DEBUG Move: checking target position node=NodeId { index1: 5, stamp: NodeStamp(0) } position=2 children_count=2 [INFO] [stdout]  0.040s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.040s DEBUG Generated Move patch node_a=NodeId { index1: 5, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 1, 0])) to=NodeRef(NodePath([0, 0, 1, 2])) detach_to_slot=None [INFO] [stdout]  0.040s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n3] TEXT: "Unclosed paragraph" [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n6] TEXT: "Inside P which browsers will auto-close" [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] [n19] TEXT: "" [INFO] [stdout] [n4] [INFO] [stdout] [n4] [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "Unclosed span" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n10] TEXT: "Block in span" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] Slot 3: [INFO] [stdout] [n5]
                                                                                          [INFO] [stdout] [n21] TEXT: "" [INFO] [stdout] [n5]
                                                                                          [INFO] [stdout] Slot 4: [INFO] [stdout] [n18] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.040s DEBUG Processing operation op=Delete(a:4) [INFO] [stdout]  0.040s DEBUG Delete operation node_a=NodeId { index1: 4, stamp: NodeStamp(0) } _node_kind=Element(Atom('span' type=inline), Html) [INFO] [stdout]  0.040s DEBUG get_node_ref: computed path node=NodeId { index1: 4, stamp: NodeStamp(0) } path=[1, 1] [INFO] [stdout]  0.040s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n37] TEXT: "" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n39] TEXT: "" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n33] TEXT: "" [INFO] [stdout] [n11] TEXT: " and " [INFO] [stdout] [n12] [INFO] [stdout] [n13] TEXT: "italic" [INFO] [stdout] [n12] [INFO] [stdout] [n14] TEXT: " text." [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n31] TEXT: "" [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n17] TEXT: "Second paragraph with a " [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "link" [INFO] [stdout] [n18] [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.040s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n3] TEXT: "Unclosed paragraph" [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n6] TEXT: "Inside P which browsers will auto-close" [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] [n19] TEXT: "" [INFO] [stdout] [n23] TEXT: "" [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "Unclosed span" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n10] TEXT: "Block in span" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] Slot 3: [INFO] [stdout] [n5]
                                                                                          [INFO] [stdout] [n21] TEXT: "" [INFO] [stdout] [n5]
                                                                                          [INFO] [stdout] Slot 4: [INFO] [stdout] [n18] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.040s DEBUG Processing operation op=Move(a:6 → b:14 @0 under b:13) [INFO] [stdout]  0.040s DEBUG Processing operation op=Delete(a:2) [INFO] [stdout]  0.040s DEBUG Delete operation node_a=NodeId { index1: 2, stamp: NodeStamp(0) } _node_kind=Element(Atom('p' type=inline), Html) [INFO] [stdout]  0.040s DEBUG Move: starting node_a=NodeId { index1: 6, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 13, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 28, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.040s DEBUG get_node_ref: computed path node=NodeId { index1: 2, stamp: NodeStamp(0) } path=[1] [INFO] [stdout]  0.040s DEBUG Move: computing from reference for node node_a=NodeId { index1: 6, stamp: NodeStamp(0) } [INFO] [stdout]  0.040s DEBUG get_node_ref: computed path node=NodeId { index1: 6, stamp: NodeStamp(0) } path=[1, 2] [INFO] [stdout]  0.040s DEBUG Move: computed from reference node_a=NodeId { index1: 6, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 2])) [INFO] [stdout]  0.040s DEBUG Parent children BEFORE Move children=[] [INFO] [stdout]  0.040s DEBUG move_to_position: checking ancestry node=NodeId { index1: 6, stamp: NodeStamp(0) } new_parent=NodeId { index1: 28, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.040s DEBUG Move: checking target position node=NodeId { index1: 6, stamp: NodeStamp(0) } position=0 children_count=0 [INFO] [stdout]  0.040s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n3] TEXT: "Unclosed paragraph" [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n6] TEXT: "Inside P which browsers will auto-close" [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n24] TEXT: "" [INFO] [stdout] Slot 2: [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "Unclosed span" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n10] TEXT: "Block in span" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] Slot 3: [INFO] [stdout] [n5]
                                                                                          [INFO] [stdout] [n21] TEXT: "" [INFO] [stdout] [n5]
                                                                                          [INFO] [stdout] Slot 4: [INFO] [stdout] [n18] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.040s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.040s DEBUG Processing operation op=Delete(a:5) [INFO] [stdout]  0.040s DEBUG Delete operation node_a=NodeId { index1: 5, stamp: NodeStamp(0) } _node_kind=Element(Atom('div' type=inline), Html) [INFO] [stdout]  0.040s DEBUG Generated Move patch node_a=NodeId { index1: 6, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 2])) to=NodeRef(NodePath([0, 0, 3, 0])) detach_to_slot=None [INFO] [stdout]  0.040s DEBUG get_node_ref: computed path node=NodeId { index1: 5, stamp: NodeStamp(0) } path=[3] [INFO] [stdout]  0.040s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n3] TEXT: "Unclosed paragraph" [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n6] TEXT: "Inside P which browsers will auto-close" [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n24] TEXT: "" [INFO] [stdout] Slot 2: [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "Unclosed span" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n10] TEXT: "Block in span" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] Slot 3: [INFO] [stdout] [n25] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n18] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.040s DEBUG Processing operation op=Delete(a:8) [INFO] [stdout]  0.040s DEBUG Delete operation node_a=NodeId { index1: 8, stamp: NodeStamp(0) } _node_kind=Text [INFO] [stdout]  0.040s DEBUG get_node_ref: computed path node=NodeId { index1: 8, stamp: NodeStamp(0) } path=[2, 0] [INFO] [stdout]  0.040s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n37] TEXT: "" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n39] TEXT: "" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n33] TEXT: "" [INFO] [stdout] [n11] TEXT: " and " [INFO] [stdout] [n12] [INFO] [stdout] [n13] TEXT: "italic" [INFO] [stdout] [n12] [INFO] [stdout] [n14] TEXT: " text." [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n31] TEXT: "" [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n17] TEXT: "Second paragraph with a " [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "link" [INFO] [stdout] [n18] [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.040s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n3] TEXT: "Unclosed paragraph" [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n6] TEXT: "Inside P which browsers will auto-close" [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n24] TEXT: "" [INFO] [stdout] Slot 2: [INFO] [stdout] [n7] [INFO] [stdout] [n26] TEXT: "" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n10] TEXT: "Block in span" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] Slot 3: [INFO] [stdout] [n25] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n18] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.041s DEBUG Processing operation op=Delete(a:10) [INFO] [stdout]  0.041s DEBUG Processing operation op=Delete(a:4) [INFO] [stdout]  0.041s DEBUG Delete operation node_a=NodeId { index1: 10, stamp: NodeStamp(0) } _node_kind=Text [INFO] [stdout]  0.041s DEBUG Delete operation node_a=NodeId { index1: 4, stamp: NodeStamp(0) } _node_kind=Element(Atom('h1' type=inline), Html) [INFO] [stdout]  0.041s DEBUG get_node_ref: computed path node=NodeId { index1: 10, stamp: NodeStamp(0) } path=[2, 1, 0] [INFO] [stdout]  0.041s DEBUG get_node_ref: computed path node=NodeId { index1: 4, stamp: NodeStamp(0) } path=[1, 1] [INFO] [stdout]  0.041s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n3] TEXT: "Unclosed paragraph" [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n6] TEXT: "Inside P which browsers will auto-close" [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n24] TEXT: "" [INFO] [stdout] Slot 2: [INFO] [stdout] [n7] [INFO] [stdout] [n26] TEXT: "" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [n9]
                                                                                          [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] Slot 3: [INFO] [stdout] [n25] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n18] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.041s DEBUG Processing operation op=Delete(a:9) [INFO] [stdout]  0.041s DEBUG Delete operation node_a=NodeId { index1: 9, stamp: NodeStamp(0) } _node_kind=Element(Atom('div' type=inline), Html) [INFO] [stdout]  0.041s DEBUG get_node_ref: computed path node=NodeId { index1: 9, stamp: NodeStamp(0) } path=[2, 1] [INFO] [stdout]  0.041s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n37] TEXT: "" [INFO] [stdout] [n41] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n33] TEXT: "" [INFO] [stdout] [n11] TEXT: " and " [INFO] [stdout] [n12] [INFO] [stdout] [n13] TEXT: "italic" [INFO] [stdout] [n12] [INFO] [stdout] [n14] TEXT: " text." [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n31] TEXT: "" [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n17] TEXT: "Second paragraph with a " [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "link" [INFO] [stdout] [n18] [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.041s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n3] TEXT: "Unclosed paragraph" [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n6] TEXT: "Inside P which browsers will auto-close" [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n24] TEXT: "" [INFO] [stdout] Slot 2: [INFO] [stdout] [n7] [INFO] [stdout] [n26] TEXT: "" [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [n7] [INFO] [stdout] Slot 3: [INFO] [stdout] [n25] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n18] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.041s DEBUG Processing operation op=Delete(a:11) [INFO] [stdout]  0.041s DEBUG Processing operation op=Delete(a:7) [INFO] [stdout]  0.041s DEBUG Delete operation node_a=NodeId { index1: 11, stamp: NodeStamp(0) } _node_kind=Text [INFO] [stdout]  0.041s DEBUG Delete operation node_a=NodeId { index1: 7, stamp: NodeStamp(0) } _node_kind=Element(Atom('span' type=inline), Html) [INFO] [stdout]  0.041s DEBUG get_node_ref: computed path node=NodeId { index1: 7, stamp: NodeStamp(0) } path=[2] [INFO] [stdout]  0.041s DEBUG get_node_ref: computed path node=NodeId { index1: 11, stamp: NodeStamp(0) } path=[1, 3, 2] [INFO] [stdout]  0.039s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 28, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 29, stamp: NodeStamp(0) }, Text), (2, NodeId { index1: 30, stamp: NodeStamp(0) }, Text), (3, NodeId { index1: 27, stamp: NodeStamp(0) }, Element(Atom('ul' type=inline), Html))] [INFO] [stdout]  0.038s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n17] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n17] [INFO] [stdout] [n19] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n19] [INFO] [stdout] [n20] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n20] [INFO] [stdout] [n21] [INFO] [stdout] [n22] TEXT: "<" [INFO] [stdout] [n21] [INFO] [stdout] [n23]
                                                                                          [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n24]

                                                                                          [INFO] [stdout] [n27] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n24]

                                                                                          [INFO] [stdout] [n23]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n3] [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] [n3] [INFO] [stdout] [n5] [INFO] [stdout] [n33] TEXT: "" [INFO] [stdout] [n5] [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [n11]
                                                                                          [INFO] [stdout] [n12]
                                                                                          [INFO] [stdout] [n13] [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] [n13] [INFO] [stdout] [n12]
                                                                                          [INFO] [stdout] [n11]
                                                                                          [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n26] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n25] TEXT: "" [INFO] [stdout] [INFO] [stdout] test dom::tests::test_gt_not_escaped_in_text_nodes ... ok 0.041s DEBUG Processing operation op=Delete(a:3) [INFO] [stdout] [INFO] [stdout]  0.041s DEBUG move_to_position: checking ancestry node=NodeId { index1: 22, stamp: NodeStamp(0) } new_parent=NodeId { index1: 25, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.041s DEBUG Delete operation node_a=NodeId { index1: 3, stamp: NodeStamp(0) } _node_kind=Element(Atom('code' type=inline), Html) [INFO] [stdout]  0.041s DEBUG get_node_ref: computed path node=NodeId { index1: 3, stamp: NodeStamp(0) } path=[1, 0] [INFO] [stdout]  0.041s DEBUG Move: checking target position node=NodeId { index1: 22, stamp: NodeStamp(0) } position=4 children_count=4 [INFO] [stdout] test dom::tests::test_math_fragment_parsing ...  0.041s DEBUG Move: appending (no occupant) [INFO] [stdout] ok [INFO] [stdout]  0.041s DEBUG Generated Move patch node_a=NodeId { index1: 22, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 4])) to=NodeRef(NodePath([0, 0, 4])) detach_to_slot=None [INFO] [stdout]  0.041s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n37] TEXT: "" [INFO] [stdout] [n41] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n33] TEXT: "" [INFO] [stdout] [n42] TEXT: "" [INFO] [stdout] [n12] [INFO] [stdout] [n13] TEXT: "italic" [INFO] [stdout] [n12] [INFO] [stdout] [n14] TEXT: " text." [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n31] TEXT: "" [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n17] TEXT: "Second paragraph with a " [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "link" [INFO] [stdout] [n18] [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.041s DEBUG Processing operation op=Delete(a:13) [INFO] [stdout]  0.041s DEBUG Delete operation node_a=NodeId { index1: 13, stamp: NodeStamp(0) } _node_kind=Text [INFO] [stdout]  0.041s DEBUG get_node_ref: computed path node=NodeId { index1: 13, stamp: NodeStamp(0) } path=[1, 3, 3, 0] [INFO] [stdout]  0.041s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n17] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n17] [INFO] [stdout] [n19] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n19] [INFO] [stdout] [n20] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n20] [INFO] [stdout] [n21] [INFO] [stdout] [n22] TEXT: "<" [INFO] [stdout] [n21] [INFO] [stdout] [n23]
                                                                                          [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n24]

                                                                                          [INFO] [stdout] [n27] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n24]

                                                                                          [INFO] [stdout] [n23]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n5] [INFO] [stdout] [n33] TEXT: "" [INFO] [stdout] [n5] [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [n11]
                                                                                          [INFO] [stdout] [n12]
                                                                                          [INFO] [stdout] [n13] [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] [n13] [INFO] [stdout] [n12]
                                                                                          [INFO] [stdout] [n11]
                                                                                          [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n26] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n25] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.041s DEBUG Processing operation op=Delete(a:5) [INFO] [stdout]  0.041s DEBUG Delete operation node_a=NodeId { index1: 5, stamp: NodeStamp(0) } _node_kind=Element(Atom('code' type=inline), Html) [INFO] [stdout]  0.041s DEBUG get_node_ref: computed path node=NodeId { index1: 5, stamp: NodeStamp(0) } path=[1, 1] [INFO] [stdout]  0.041s DEBUG get_node_ref: computed path node=NodeId { index1: 9, stamp: NodeStamp(0) } path=[1, 3] [INFO] [stdout]  0.041s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] [n33] [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                            [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n11] [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n11] [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n13] TEXT: "\n " [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n15] TEXT: "Feature two with " [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "emphasis" [INFO] [stdout] [n16] [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [INFO] [stdout]  0.041s DEBUG Move: computed from reference node_a=NodeId { index1: 9, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 3])) [INFO] [stdout]  0.041s DEBUG Processing operation op=Move(a:18 → b:11 @0 under b:10) [INFO] [stdout]  0.041s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 3, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (1, NodeId { index1: 5, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (2, NodeId { index1: 20, stamp: NodeStamp(0) }, Element(Atom('h2' type=inline), Html)), (3, NodeId { index1: 9, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html))] [INFO] [stdout]  0.041s DEBUG Move: starting node_a=NodeId { index1: 18, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 10, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 27, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.041s DEBUG move_to_position: checking ancestry node=NodeId { index1: 9, stamp: NodeStamp(0) } new_parent=NodeId { index1: 2, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.041s DEBUG Move: computing from reference for node node_a=NodeId { index1: 18, stamp: NodeStamp(0) } [INFO] [stdout]  0.041s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n37] TEXT: "" [INFO] [stdout] [n41] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n33] TEXT: "" [INFO] [stdout] [n42] TEXT: "" [INFO] [stdout] [n12] [INFO] [stdout] [n43] TEXT: "" [INFO] [stdout] [n12] [INFO] [stdout] [n14] TEXT: " text." [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n31] TEXT: "" [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n17] TEXT: "Second paragraph with a " [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "link" [INFO] [stdout] [n18] [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.041s DEBUG Move: checking target position node=NodeId { index1: 9, stamp: NodeStamp(0) } position=1 children_count=4 [INFO] [stdout]  0.041s DEBUG get_node_ref: computed path node=NodeId { index1: 18, stamp: NodeStamp(0) } path=[1, 3, 4] [INFO] [stdout] test diff::tests::test_fuzzer_nested_ul_remove ... ok [INFO] [stdout]  0.041s DEBUG Move: found occupant at target position occupant=NodeId { index1: 5, stamp: NodeStamp(0) } _occupant_kind=Element(Atom('code' type=inline), Html) [INFO] [stdout]  0.041s DEBUG Move: computed from reference node_a=NodeId { index1: 18, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 3, 4])) [INFO] [stdout]  0.041s DEBUG Processing operation op=Delete(a:12) [INFO] [stdout]  0.041s DEBUG created new slot slot_num=3 [INFO] [stdout]  0.041s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 32, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 31, stamp: NodeStamp(0) }, Element(Atom('li' type=inline), Html))] [INFO] [stdout] test dom::tests::test_apply_patches_roundtrip ... ok [INFO] [stdout]  0.041s DEBUG detached node to slot node=NodeId { index1: 5, stamp: NodeStamp(0) } slot_num=3 [INFO] [stdout]  0.041s DEBUG Delete operation node_a=NodeId { index1: 12, stamp: NodeStamp(0) } _node_kind=Element(Atom('em' type=inline), Html) [INFO] [stdout]  0.041s DEBUG move_to_position: checking ancestry node=NodeId { index1: 18, stamp: NodeStamp(0) } new_parent=NodeId { index1: 27, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.041s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 5, stamp: NodeStamp(0) } slot=3 [INFO] [stdout]  0.041s DEBUG get_node_ref: computed path node=NodeId { index1: 12, stamp: NodeStamp(0) } path=[1, 3, 3] [INFO] [stdout]  0.041s DEBUG Move: checking target position node=NodeId { index1: 18, stamp: NodeStamp(0) } position=0 children_count=2 [INFO] [stdout] test diff::tests::test_patch_serialization ... ok [INFO] [stdout]  0.041s DEBUG Generated Move patch node_a=NodeId { index1: 9, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 3])) to=NodeRef(NodePath([1, 1])) detach_to_slot=Some(3) [INFO] [stdout]  0.041s DEBUG Move: found occupant at target position occupant=NodeId { index1: 32, stamp: NodeStamp(0) } _occupant_kind=Text [INFO] [stdout]  0.041s DEBUG created new slot slot_num=2 [INFO] [stdout] test dom::tests::test_foster_parented_text_merging ... ok [INFO] [stdout]  0.041s DEBUG detached node to slot node=NodeId { index1: 32, stamp: NodeStamp(0) } slot_num=2 [INFO] [stdout]  0.041s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 32, stamp: NodeStamp(0) } slot=2 [INFO] [stdout] test dom::tests::test_math_with_li_fragment_parsing ... ok [INFO] [stdout]  0.041s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n15] [INFO] [stdout] [n15] [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "<" [INFO] [stdout] [n16] [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "<" [INFO] [stdout] [n18] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n20]

                                                                                          [INFO] [stdout] [n22] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n20]

                                                                                          [INFO] [stdout] [n23] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] Slot 3: [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] [INFO] [stdout] test dom::tests::test_malformed_close_tag_with_slash ... ok [INFO] [stdout]  0.041s DEBUG Processing operation op=Move(a:7 → b:14 @0 under b:13) [INFO] [stdout] test dom::tests::test_normal_text_still_escaped ... ok [INFO] [stdout]  0.041s DEBUG Move: starting node_a=NodeId { index1: 7, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 13, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 2, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.041s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n37] TEXT: "" [INFO] [stdout] [n41] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n33] TEXT: "" [INFO] [stdout] [n42] TEXT: "" [INFO] [stdout] [n44] TEXT: "" [INFO] [stdout] [n14] TEXT: " text." [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n31] TEXT: "" [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n17] TEXT: "Second paragraph with a " [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "link" [INFO] [stdout] [n18] [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.041s DEBUG Move: computing from reference for node node_a=NodeId { index1: 7, stamp: NodeStamp(0) } [INFO] [stdout] test dom::tests::test_noscript_placement_in_head ... ok [INFO] [stdout]  0.042s DEBUG Processing operation op=Delete(a:14) [INFO] [stdout]  0.042s DEBUG get_node_ref: computed path node=NodeId { index1: 7, stamp: NodeStamp(0) } path=[2] [INFO] [stdout]  0.042s DEBUG Delete operation node_a=NodeId { index1: 14, stamp: NodeStamp(0) } _node_kind=Text [INFO] [stdout]  0.042s DEBUG Move: computed from reference node_a=NodeId { index1: 7, stamp: NodeStamp(0) } from=NodeRef(NodePath([2])) [INFO] [stdout]  0.042s DEBUG get_node_ref: computed path node=NodeId { index1: 14, stamp: NodeStamp(0) } path=[1, 3, 4] [INFO] [stdout]  0.042s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 3, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (1, NodeId { index1: 9, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (2, NodeId { index1: 20, stamp: NodeStamp(0) }, Element(Atom('h2' type=inline), Html)), (3, NodeId { index1: 23, stamp: NodeStamp(0) }, Text)] [INFO] [stdout]  0.042s DEBUG move_to_position: checking ancestry node=NodeId { index1: 7, stamp: NodeStamp(0) } new_parent=NodeId { index1: 2, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.042s DEBUG Move: checking target position node=NodeId { index1: 7, stamp: NodeStamp(0) } position=0 children_count=4 [INFO] [stdout]  0.042s DEBUG Move: found occupant at target position occupant=NodeId { index1: 3, stamp: NodeStamp(0) } _occupant_kind=Element(Atom('code' type=inline), Html) [INFO] [stdout]  0.042s DEBUG created new slot slot_num=4 [INFO] [stdout]  0.042s DEBUG detached node to slot node=NodeId { index1: 3, stamp: NodeStamp(0) } slot_num=4 [INFO] [stdout]  0.042s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 3, stamp: NodeStamp(0) } slot=4 [INFO] [stdout]  0.042s DEBUG Generated Move patch node_a=NodeId { index1: 7, stamp: NodeStamp(0) } from=NodeRef(NodePath([2])) to=NodeRef(NodePath([1, 0])) detach_to_slot=Some(4) [INFO] [stdout]  0.042s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n37] TEXT: "" [INFO] [stdout] [n41] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n33] TEXT: "" [INFO] [stdout] [n42] TEXT: "" [INFO] [stdout] [n44] TEXT: "" [INFO] [stdout] [n45] TEXT: "" [INFO] [stdout] [n7]

                                                                                          [INFO] [stdout] [n31] TEXT: "" [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n17] TEXT: "Second paragraph with a " [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "link" [INFO] [stdout] [n18] [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.042s DEBUG Processing operation op=Delete(a:7) [INFO] [stdout]  0.042s DEBUG Delete operation node_a=NodeId { index1: 7, stamp: NodeStamp(0) } _node_kind=Element(Atom('p' type=inline), Html) [INFO] [stdout]  0.042s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n15] [INFO] [stdout] [n15] [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "<" [INFO] [stdout] [n16] [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "<" [INFO] [stdout] [n18] [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n20]

                                                                                          [INFO] [stdout] [n22] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n20]

                                                                                          [INFO] [stdout] [n23] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] Slot 3: [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] Slot 4: [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [INFO] [stdout]  0.042s DEBUG get_node_ref: computed path node=NodeId { index1: 7, stamp: NodeStamp(0) } path=[1, 3] [INFO] [stdout]  0.042s DEBUG Processing operation op=Move(a:2 → b:13 @4 under b:4) [INFO] [stdout]  0.042s DEBUG Move: starting node_a=NodeId { index1: 2, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 4, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 1, stamp: NodeStamp(0) } new_position=4 [INFO] [stdout]  0.042s DEBUG Move: computing from reference for node node_a=NodeId { index1: 2, stamp: NodeStamp(0) } [INFO] [stdout]  0.042s DEBUG get_node_ref: computed path node=NodeId { index1: 2, stamp: NodeStamp(0) } path=[1] [INFO] [stdout]  0.042s DEBUG Move: computed from reference node_a=NodeId { index1: 2, stamp: NodeStamp(0) } from=NodeRef(NodePath([1])) [INFO] [stdout]  0.042s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 13, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (1, NodeId { index1: 15, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (2, NodeId { index1: 16, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html)), (3, NodeId { index1: 18, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html))] [INFO] [stdout]  0.042s DEBUG move_to_position: checking ancestry node=NodeId { index1: 2, stamp: NodeStamp(0) } new_parent=NodeId { index1: 1, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.042s DEBUG Move: checking target position node=NodeId { index1: 2, stamp: NodeStamp(0) } position=4 children_count=4 [INFO] [stdout]  0.042s DEBUG Move: appending (no occupant) [INFO] [stdout] test dom::tests::test_parse_body_fragment_structure ...  0.042s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n37] TEXT: "" [INFO] [stdout] [n41] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n46] TEXT: "" [INFO] [stdout] [n31] TEXT: "" [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n17] TEXT: "Second paragraph with a " [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "link" [INFO] [stdout] [n18] [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [INFO] [stdout] ok [INFO] [stdout]  0.042s DEBUG Processing operation op=Delete(a:17) [INFO] [stdout]  0.041s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n17] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n17] [INFO] [stdout] [n19] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n19] [INFO] [stdout] [n20] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n20] [INFO] [stdout] [n21] [INFO] [stdout] [n22] TEXT: "<" [INFO] [stdout] [n21] [INFO] [stdout] [n23]
                                                                                          [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n24]

                                                                                          [INFO] [stdout] [n27] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n24]

                                                                                          [INFO] [stdout] [n23]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [n11]
                                                                                          [INFO] [stdout] [n12]
                                                                                          [INFO] [stdout] [n13] [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] [n13] [INFO] [stdout] [n12]
                                                                                          [INFO] [stdout] [n11]
                                                                                          [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n26] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n25] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.042s DEBUG Delete operation node_a=NodeId { index1: 17, stamp: NodeStamp(0) } _node_kind=Text [INFO] [stdout]  0.042s DEBUG Processing operation op=Delete(a:13) [INFO] [stdout]  0.042s DEBUG Delete operation node_a=NodeId { index1: 13, stamp: NodeStamp(0) } _node_kind=Element(Atom('code' type=inline), Html) [INFO] [stdout]  0.042s DEBUG get_node_ref: computed path node=NodeId { index1: 17, stamp: NodeStamp(0) } path=[1, 5, 0] [INFO] [stdout]  0.042s DEBUG get_node_ref: computed path node=NodeId { index1: 13, stamp: NodeStamp(0) } path=[1, 4, 0, 0] [INFO] [stdout]  0.042s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n37] TEXT: "" [INFO] [stdout] [n41] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n46] TEXT: "" [INFO] [stdout] [n31] TEXT: "" [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n47] TEXT: "" [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "link" [INFO] [stdout] [n18] [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.042s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n17] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n17] [INFO] [stdout] [n19] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n19] [INFO] [stdout] [n20] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n20] [INFO] [stdout] [n21] [INFO] [stdout] [n22] TEXT: "<" [INFO] [stdout] [n21] [INFO] [stdout] [n23]
                                                                                          [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n24]

                                                                                          [INFO] [stdout] [n27] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n24]

                                                                                          [INFO] [stdout] [n23]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [n11]
                                                                                          [INFO] [stdout] [n12]
                                                                                          [INFO] [stdout] [n37] TEXT: "" [INFO] [stdout] [n12]
                                                                                          [INFO] [stdout] [n11]
                                                                                          [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n26] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n25] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.042s DEBUG Processing operation op=Delete(a:12) [INFO] [stdout]  0.042s DEBUG Processing operation op=Delete(a:19) [INFO] [stdout]  0.042s DEBUG Delete operation node_a=NodeId { index1: 12, stamp: NodeStamp(0) } _node_kind=Element(Atom('article' type=inline), Html) [INFO] [stdout]  0.042s DEBUG Delete operation node_a=NodeId { index1: 19, stamp: NodeStamp(0) } _node_kind=Text [INFO] [stdout]  0.042s DEBUG get_node_ref: computed path node=NodeId { index1: 12, stamp: NodeStamp(0) } path=[1, 4, 0] [INFO] [stdout]  0.042s DEBUG get_node_ref: computed path node=NodeId { index1: 19, stamp: NodeStamp(0) } path=[1, 5, 1, 0] [INFO] [stdout]  0.042s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n17] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n17] [INFO] [stdout] [n19] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n19] [INFO] [stdout] [n20] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n20] [INFO] [stdout] [n21] [INFO] [stdout] [n22] TEXT: "<" [INFO] [stdout] [n21] [INFO] [stdout] [n23]
                                                                                          [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n24]

                                                                                          [INFO] [stdout] [n27] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n24]

                                                                                          [INFO] [stdout] [n23]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [n11]
                                                                                          [INFO] [stdout] [n38] TEXT: "" [INFO] [stdout] [n11]
                                                                                          [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n26] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n25] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.042s DEBUG Processing operation op=Delete(a:11) [INFO] [stdout]  0.042s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n37] TEXT: "" [INFO] [stdout] [n41] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n46] TEXT: "" [INFO] [stdout] [n31] TEXT: "" [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n47] TEXT: "" [INFO] [stdout] [n18] [INFO] [stdout] [n48] TEXT: "" [INFO] [stdout] [n18] [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.042s DEBUG Processing operation op=Delete(a:18) [INFO] [stdout]  0.042s DEBUG Delete operation node_a=NodeId { index1: 11, stamp: NodeStamp(0) } _node_kind=Element(Atom('article' type=inline), Html) [INFO] [stdout]  0.042s DEBUG Delete operation node_a=NodeId { index1: 18, stamp: NodeStamp(0) } _node_kind=Element(Atom('a' type=inline), Html) [INFO] [stdout]  0.042s DEBUG get_node_ref: computed path node=NodeId { index1: 11, stamp: NodeStamp(0) } path=[1, 4] [INFO] [stdout]  0.042s DEBUG get_node_ref: computed path node=NodeId { index1: 18, stamp: NodeStamp(0) } path=[1, 5, 1] [INFO] [stdout]  0.042s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n17] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n17] [INFO] [stdout] [n19] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n19] [INFO] [stdout] [n20] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n20] [INFO] [stdout] [n21] [INFO] [stdout] [n22] TEXT: "<" [INFO] [stdout] [n21] [INFO] [stdout] [n23]
                                                                                          [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n24]

                                                                                          [INFO] [stdout] [n27] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n24]

                                                                                          [INFO] [stdout] [n23]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [n39] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n26] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n25] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.042s DEBUG Generated Move patch node_a=NodeId { index1: 2, stamp: NodeStamp(0) } from=NodeRef(NodePath([1])) to=NodeRef(NodePath([0, 4])) detach_to_slot=None [INFO] [stdout]  0.043s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n15] [INFO] [stdout] [n15] [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "<" [INFO] [stdout] [n16] [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "<" [INFO] [stdout] [n18] [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n20]

                                                                                          [INFO] [stdout] [n22] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n20]

                                                                                          [INFO] [stdout] [n23] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] Slot 2: [INFO] [stdout] Slot 3: [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] Slot 4: [INFO] [stdout] [n3] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n3] [INFO] [stdout] [INFO] [stdout]  0.043s DEBUG Processing operation op=Move(a:4 → b:6 @0 under b:5) [INFO] [stdout]  0.043s DEBUG Move: starting node_a=NodeId { index1: 4, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 5, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 13, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.043s DEBUG Move: computing from reference for node node_a=NodeId { index1: 4, stamp: NodeStamp(0) } [INFO] [stdout]  0.043s DEBUG get_node_ref: computed path node=NodeId { index1: 4, stamp: NodeStamp(0) } path=[4, 0] [INFO] [stdout]  0.043s DEBUG Move: computed from reference node_a=NodeId { index1: 4, stamp: NodeStamp(0) } from=NodeRef(NodePath([4, 0])) [INFO] [stdout]  0.043s DEBUG Parent children BEFORE Move children=[] [INFO] [stdout]  0.043s DEBUG move_to_position: checking ancestry node=NodeId { index1: 4, stamp: NodeStamp(0) } new_parent=NodeId { index1: 13, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.043s DEBUG Move: checking target position node=NodeId { index1: 4, stamp: NodeStamp(0) } position=0 children_count=0 [INFO] [stdout]  0.043s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.043s DEBUG Generated Move patch node_a=NodeId { index1: 4, stamp: NodeStamp(0) } from=NodeRef(NodePath([4, 0])) to=NodeRef(NodePath([0, 0, 0])) detach_to_slot=None [INFO] [stdout]  0.043s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n13] [INFO] [stdout] [n15] [INFO] [stdout] [n15] [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "<" [INFO] [stdout] [n16] [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "<" [INFO] [stdout] [n18] [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n20]

                                                                                          [INFO] [stdout] [n22] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n20]

                                                                                          [INFO] [stdout] [n23] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] Slot 2: [INFO] [stdout] Slot 3: [INFO] [stdout] [n5] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n5] [INFO] [stdout] Slot 4: [INFO] [stdout] [n3] [INFO] [stdout] [n26] TEXT: "" [INFO] [stdout] [n3] [INFO] [stdout] [INFO] [stdout]  0.043s DEBUG Processing operation op=Move(a:6 → b:8 @0 under b:7) [INFO] [stdout]  0.043s DEBUG Move: starting node_a=NodeId { index1: 6, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 7, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 15, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.043s DEBUG Move: computing from reference for node node_a=NodeId { index1: 6, stamp: NodeStamp(0) } [INFO] [stdout]  0.043s DEBUG get_node_ref: computed path node=NodeId { index1: 6, stamp: NodeStamp(0) } path=[3, 0] [INFO] [stdout]  0.043s DEBUG Move: computed from reference node_a=NodeId { index1: 6, stamp: NodeStamp(0) } from=NodeRef(NodePath([3, 0])) [INFO] [stdout]  0.043s DEBUG Parent children BEFORE Move children=[] [INFO] [stdout]  0.043s DEBUG move_to_position: checking ancestry node=NodeId { index1: 6, stamp: NodeStamp(0) } new_parent=NodeId { index1: 15, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.043s DEBUG Move: checking target position node=NodeId { index1: 6, stamp: NodeStamp(0) } position=0 children_count=0 [INFO] [stdout]  0.043s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.043s DEBUG Generated Move patch node_a=NodeId { index1: 6, stamp: NodeStamp(0) } from=NodeRef(NodePath([3, 0])) to=NodeRef(NodePath([0, 1, 0])) detach_to_slot=None [INFO] [stdout]  0.043s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n13] [INFO] [stdout] [n15] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n15] [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "<" [INFO] [stdout] [n16] [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "<" [INFO] [stdout] [n18] [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n20]

                                                                                          [INFO] [stdout] [n22] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n20]

                                                                                          [INFO] [stdout] [n23] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] Slot 2: [INFO] [stdout] Slot 3: [INFO] [stdout] [n5] [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [n5] [INFO] [stdout] Slot 4: [INFO] [stdout] [n3] [INFO] [stdout] [n26] TEXT: "" [INFO] [stdout] [n3] [INFO] [stdout] [INFO] [stdout]  0.043s DEBUG Processing operation op=Delete(a:3) [INFO] [stdout]  0.043s DEBUG Delete operation node_a=NodeId { index1: 3, stamp: NodeStamp(0) } _node_kind=Element(Atom('code' type=inline), Html) [INFO] [stdout]  0.043s DEBUG get_node_ref: computed path node=NodeId { index1: 3, stamp: NodeStamp(0) } path=[4] [INFO] [stdout]  0.043s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n13] [INFO] [stdout] [n15] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n15] [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "<" [INFO] [stdout] [n16] [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "<" [INFO] [stdout] [n18] [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n20]

                                                                                          [INFO] [stdout] [n22] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n20]

                                                                                          [INFO] [stdout] [n23] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] Slot 2: [INFO] [stdout] Slot 3: [INFO] [stdout] [n5] [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [n5] [INFO] [stdout] Slot 4: [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.044s DEBUG Processing operation op=Delete(a:5) [INFO] [stdout]  0.044s DEBUG Delete operation node_a=NodeId { index1: 5, stamp: NodeStamp(0) } _node_kind=Element(Atom('code' type=inline), Html) [INFO] [stdout]  0.044s DEBUG get_node_ref: computed path node=NodeId { index1: 5, stamp: NodeStamp(0) } path=[3] [INFO] [stdout]  0.044s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n13] [INFO] [stdout] [n15] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n15] [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "<" [INFO] [stdout] [n16] [INFO] [stdout] [n18] [INFO] [stdout] [n19] TEXT: "<" [INFO] [stdout] [n18] [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n20]

                                                                                          [INFO] [stdout] [n22] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n20]

                                                                                          [INFO] [stdout] [n23] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] Slot 2: [INFO] [stdout] Slot 3: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [INFO] [stdout] test dom::tests::test_noscript_rawtext_vs_browser ... ok [INFO] [stdout]  0.044s DEBUG Patches: [ [INFO] [stdout] Insert @[0, 0] →slot1, [INFO] [stdout] Insert @[0, 1], [INFO] [stdout] Insert @[0, 2], [INFO] [stdout] Insert text "<" @[0, 2, 0], [INFO] [stdout] Insert @[0, 3], [INFO] [stdout] Insert text "<" @[0, 3, 0], [INFO] [stdout] Insert

                                                                                          @[1, 2] →slot2, [INFO] [stdout] Insert text "<<<<<<<<<<<<<" @[1, 2, 0], [INFO] [stdout] Move [1, 3] → [1, 1] →slot3, [INFO] [stdout] Move [2] → [1, 0] →slot4, [INFO] [stdout] Move [1] → [0, 4], [INFO] [stdout] Move [4, 0] → [0, 0, 0], [INFO] [stdout] Move [3, 0] → [0, 1, 0], [INFO] [stdout] Remove @[4], [INFO] [stdout] Remove @[3], [INFO] [stdout] ] [INFO] [stdout] test dom::tests::test_parse_doctype ... ok [INFO] [stdout] test dom::tests::test_noscript_with_malformed_tag ... ok [INFO] [stdout] test dom::tests::test_parser_mismatch_li_u_svg ... ignored, fixed in fork, but not in upstream [INFO] [stdout]  0.044s DEBUG Applying patch: Insert @[0, 0] →slot1 [INFO] [stdout]  0.044s DEBUG insert_at: path=[0, 0] parent= pos=0 [INFO] [stdout] test dom::tests::test_script_content_not_escaped ... ok [INFO] [stdout]  0.044s DEBUG insert_at: detaching child
                                                                                          at pos 0 to slot1 [INFO] [stdout]  0.044s DEBUG insert_at_position: under at pos 0 (has 0 children) [INFO] [stdout]  0.044s DEBUG Applying patch: Insert @[0, 1] [INFO] [stdout]  0.044s DEBUG insert_at: path=[0, 1] parent= pos=1 [INFO] [stdout]  0.044s DEBUG insert_at_position: under at pos 1 (has 1 children) [INFO] [stdout]  0.044s DEBUG Applying patch: Insert @[0, 2] [INFO] [stdout] test dom::tests::test_style_content_not_escaped ... ok [INFO] [stdout]  0.044s DEBUG insert_at: path=[0, 2] parent= pos=2 [INFO] [stdout]  0.044s DEBUG insert_at_position: under at pos 2 (has 2 children) [INFO] [stdout]  0.044s DEBUG Applying patch: Insert text "<" @[0, 2, 0] [INFO] [stdout]  0.044s DEBUG insert_at: path=[0, 2, 0] parent= pos=0 [INFO] [stdout]  0.044s DEBUG insert_at_position: text("<") under at pos 0 (has 0 children) [INFO] [stdout]  0.044s DEBUG Applying patch: Insert @[0, 3] [INFO] [stdout]  0.044s DEBUG insert_at: path=[0, 3] parent= pos=3 [INFO] [stdout]  0.044s DEBUG insert_at_position: under at pos 3 (has 3 children) [INFO] [stdout]  0.044s DEBUG Applying patch: Insert text "<" @[0, 3, 0] [INFO] [stdout]  0.044s DEBUG insert_at: path=[0, 3, 0] parent= pos=0 [INFO] [stdout]  0.044s DEBUG insert_at_position: text("<") under at pos 0 (has 0 children) [INFO] [stdout]  0.044s DEBUG Applying patch: Insert

                                                                                          @[1, 2] →slot2 [INFO] [stdout]  0.044s DEBUG insert_at: path=[1, 2] parent=
                                                                                          pos=2 [INFO] [stdout]  0.044s DEBUG insert_at: detaching child at pos 2 to slot2 [INFO] [stdout]  0.044s DEBUG insert_at_position:

                                                                                          under
                                                                                          at pos 2 (has 3 children) [INFO] [stdout]  0.044s DEBUG Applying patch: Insert text "<<<<<<<<<<<<<" @[1, 2, 0] [INFO] [stdout]  0.044s DEBUG insert_at: path=[1, 2, 0] parent=

                                                                                          pos=0 [INFO] [stdout]  0.044s DEBUG insert_at_position: text("<<<<<<<<<<") under

                                                                                          at pos 0 (has 0 children) [INFO] [stdout]  0.044s DEBUG Applying patch: Move [1, 3] → [1, 1] →slot3 [INFO] [stdout]  0.044s DEBUG insert_at: path=[1, 1] parent=
                                                                                          pos=1 [INFO] [stdout]  0.044s DEBUG insert_at: detaching child at pos 1 to slot3 [INFO] [stdout]  0.044s DEBUG insert_at_position: under
                                                                                          at pos 1 (has 3 children) [INFO] [stdout]  0.044s DEBUG Applying patch: Move [2] → [1, 0] →slot4 [INFO] [stdout]  0.044s DEBUG insert_at: path=[1, 0] parent=
                                                                                          pos=0 [INFO] [stdout]  0.044s DEBUG insert_at: detaching child at pos 0 to slot4 [INFO] [stdout]  0.045s DEBUG insert_at_position: under
                                                                                          at pos 0 (has 3 children) [INFO] [stdout]  0.045s DEBUG Applying patch: Move [1] → [0, 4] [INFO] [stdout]  0.045s DEBUG insert_at: path=[0, 4] parent= pos=4 [INFO] [stdout]  0.045s DEBUG insert_at_position:
                                                                                          under at pos 4 (has 4 children) [INFO] [stdout]  0.045s DEBUG Applying patch: Move [4, 0] → [0, 0, 0] [INFO] [stdout]  0.045s DEBUG insert_at: path=[0, 0, 0] parent= pos=0 [INFO] [stdout]  0.045s DEBUG insert_at_position: text("<") under at pos 0 (has 0 children) [INFO] [stdout]  0.045s DEBUG Applying patch: Move [3, 0] → [0, 1, 0] [INFO] [stdout]  0.045s DEBUG insert_at: path=[0, 1, 0] parent= pos=0 [INFO] [stdout]  0.045s DEBUG insert_at_position: text("<") under at pos 0 (has 0 children) [INFO] [stdout]  0.041s DEBUG Generated Move patch node_a=NodeId { index1: 18, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 3, 4])) to=NodeRef(NodePath([0, 0, 3, 0])) detach_to_slot=Some(2) [INFO] [stdout]  0.045s DEBUG Applying patch: Remove @[4] [INFO] [stdout]  0.045s DEBUG Applying patch: Remove @[3] [INFO] [stdout]  0.045s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] [n33] [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                            [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n11] [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n11] [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n13] TEXT: "\n " [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n15] TEXT: "Feature two with " [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "emphasis" [INFO] [stdout] [n16] [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.045s DEBUG Processing operation op=Move(a:10 → b:13 @0 under b:12) [INFO] [stdout]  0.045s DEBUG Move: starting node_a=NodeId { index1: 10, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 12, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 31, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.045s DEBUG Move: computing from reference for node node_a=NodeId { index1: 10, stamp: NodeStamp(0) } [INFO] [stdout]  0.045s DEBUG get_node_ref: computed path node=NodeId { index1: 10, stamp: NodeStamp(0) } path=[1, 3, 1, 0] [INFO] [stdout]  0.045s DEBUG Move: computed from reference node_a=NodeId { index1: 10, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 3, 1, 0])) [INFO] [stdout]  0.045s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 34, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 33, stamp: NodeStamp(0) }, Element(Atom('code' type=inline), Html))] [INFO] [stdout]  0.045s DEBUG move_to_position: checking ancestry node=NodeId { index1: 10, stamp: NodeStamp(0) } new_parent=NodeId { index1: 31, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.045s DEBUG Move: checking target position node=NodeId { index1: 10, stamp: NodeStamp(0) } position=0 children_count=2 [INFO] [stdout] test dom::tests::test_parser_stray_body_tags_merge_attrs ... ok 0.045s DEBUG Move: found occupant at target position occupant=NodeId { index1: 34, stamp: NodeStamp(0) } _occupant_kind=Text [INFO] [stdout] [INFO] [stdout]  0.045s DEBUG created new slot slot_num=3 [INFO] [stdout]  0.045s DEBUG detached node to slot node=NodeId { index1: 34, stamp: NodeStamp(0) } slot_num=3 [INFO] [stdout]  0.045s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 34, stamp: NodeStamp(0) } slot=3 [INFO] [stdout] test dom::tests::test_to_html ... ok [INFO] [stdout]  0.045s DEBUG Generated Move patch node_a=NodeId { index1: 10, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 3, 1, 0])) to=NodeRef(NodePath([0, 0, 3, 1, 0])) detach_to_slot=Some(3) [INFO] [stdout] test dom::tests::test_parser_lf_cr_attribute_handling ... ok [INFO] [stdout] test dom::tests::test_parse_nested_elements ... ok [INFO] [stdout] test dom::tests::test_parse_comment ... ok [INFO] [stdout]  0.042s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n37] TEXT: "" [INFO] [stdout] [n41] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n46] TEXT: "" [INFO] [stdout] [n31] TEXT: "" [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n47] TEXT: "" [INFO] [stdout] [n49] TEXT: "" [INFO] [stdout] [n20] TEXT: "." [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.045s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n33] [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                            [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n38] TEXT: "" [INFO] [stdout] [n11] [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n11] [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n13] TEXT: "\n " [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n15] TEXT: "Feature two with " [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "emphasis" [INFO] [stdout] [n16] [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.045s DEBUG Processing operation op=Move(a:6 → b:9 @2 under b:5) [INFO] [stdout]  0.045s DEBUG Processing operation op=Delete(a:20) [INFO] [stdout]  0.041s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n13] [INFO] [stdout] [n13] [INFO] [stdout] [n3] TEXT: "Unclosed paragraph" [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n6] TEXT: "Inside P which browsers will auto-close" [INFO] [stdout] [n17] [INFO] [stdout] [n17] [INFO] [stdout] [n15]
                                                                                        • [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n24] TEXT: "" [INFO] [stdout] Slot 2: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n25] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n18] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.045s DEBUG Delete operation node_a=NodeId { index1: 20, stamp: NodeStamp(0) } _node_kind=Text [INFO] [stdout]  0.045s DEBUG Move: starting node_a=NodeId { index1: 6, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 5, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 25, stamp: NodeStamp(0) } new_position=2 [INFO] [stdout]  0.045s DEBUG Move: computing from reference for node node_a=NodeId { index1: 6, stamp: NodeStamp(0) } [INFO] [stdout]  0.045s DEBUG get_node_ref: computed path node=NodeId { index1: 20, stamp: NodeStamp(0) } path=[1, 5, 2] [INFO] [stdout]  0.045s DEBUG get_node_ref: computed path node=NodeId { index1: 6, stamp: NodeStamp(0) } path=[1, 2] [INFO] [stdout]  0.045s DEBUG Move: computed from reference node_a=NodeId { index1: 6, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 2])) [INFO] [stdout]  0.045s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 28, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 29, stamp: NodeStamp(0) }, Text), (2, NodeId { index1: 30, stamp: NodeStamp(0) }, Text), (3, NodeId { index1: 27, stamp: NodeStamp(0) }, Element(Atom('ul' type=inline), Html)), (4, NodeId { index1: 22, stamp: NodeStamp(0) }, Text)] [INFO] [stdout]  0.045s DEBUG Patches: [ [INFO] [stdout] SetText "d " @[0, 0, 0], [INFO] [stdout] SetText "d<<<&<" @[0, 1, 0], [INFO] [stdout] Insert @[0, 0] (2 attrs) →slot1, [INFO] [stdout] Insert
                                                                                        • @[0, 2] →slot2, [INFO] [stdout] Insert @[0, 2, 1] (2 attrs), [INFO] [stdout] Move [1, 0] → [0, 1] →slot3, [INFO] [stdout] Move [3, 0] → [0, 2, 0] →slot4, [INFO] [stdout] Remove @[1, 1], [INFO] [stdout] Remove @[1], [INFO] [stdout] Remove @[3], [INFO] [stdout] Remove @[2, 0], [INFO] [stdout] Remove @[2, 1, 0], [INFO] [stdout] Remove @[2, 1], [INFO] [stdout] Remove @[2], [INFO] [stdout] ] [INFO] [stdout]  0.045s DEBUG move_to_position: checking ancestry node=NodeId { index1: 6, stamp: NodeStamp(0) } new_parent=NodeId { index1: 25, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.045s DEBUG Move: checking target position node=NodeId { index1: 6, stamp: NodeStamp(0) } position=2 children_count=5 [INFO] [stdout]  0.045s DEBUG Move: found occupant at target position occupant=NodeId { index1: 30, stamp: NodeStamp(0) } _occupant_kind=Text [INFO] [stdout]  0.045s DEBUG created new slot slot_num=4 [INFO] [stdout]  0.045s DEBUG detached node to slot node=NodeId { index1: 30, stamp: NodeStamp(0) } slot_num=4 [INFO] [stdout]  0.045s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n37] TEXT: "" [INFO] [stdout] [n41] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n46] TEXT: "" [INFO] [stdout] [n31] TEXT: "" [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n47] TEXT: "" [INFO] [stdout] [n49] TEXT: "" [INFO] [stdout] [n50] TEXT: "" [INFO] [stdout] [n16]

                                                                                          [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.046s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 30, stamp: NodeStamp(0) } slot=4 [INFO] [stdout]  0.046s DEBUG Processing operation op=Delete(a:16) [INFO] [stdout]  0.046s DEBUG Generated Move patch node_a=NodeId { index1: 6, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 2])) to=NodeRef(NodePath([0, 0, 2])) detach_to_slot=Some(4) [INFO] [stdout]  0.046s DEBUG Delete operation node_a=NodeId { index1: 16, stamp: NodeStamp(0) } _node_kind=Element(Atom('p' type=inline), Html) [INFO] [stdout]  0.046s DEBUG get_node_ref: computed path node=NodeId { index1: 16, stamp: NodeStamp(0) } path=[1, 5] [INFO] [stdout]  0.046s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n37] TEXT: "" [INFO] [stdout] [n41] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n46] TEXT: "" [INFO] [stdout] [n31] TEXT: "" [INFO] [stdout] [n51] TEXT: "" [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.046s DEBUG Processing operation op=Delete(a:2) [INFO] [stdout]  0.046s DEBUG Delete operation node_a=NodeId { index1: 2, stamp: NodeStamp(0) } _node_kind=Element(Atom('article' type=inline), Html) [INFO] [stdout]  0.046s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n33] [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]
                                                                                            [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n38] TEXT: "" [INFO] [stdout] [n11] [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n11] [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n13] TEXT: "\n " [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n15] TEXT: "Feature two with " [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "emphasis" [INFO] [stdout] [n16] [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.046s DEBUG get_node_ref: computed path node=NodeId { index1: 2, stamp: NodeStamp(0) } path=[1] [INFO] [stdout]  0.046s DEBUG Applying patch: SetText "d " @[0, 0, 0] [INFO] [stdout]  0.046s DEBUG Processing operation op=Move(a:4 → b:7 @1 under b:5) [INFO] [stdout]  0.046s DEBUG Applying patch: SetText "d<<<&<" @[0, 1, 0] [INFO] [stdout]  0.046s DEBUG Applying patch: Insert @[0, 0] (2 attrs) →slot1 [INFO] [stdout]  0.046s DEBUG Move: starting node_a=NodeId { index1: 4, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 5, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 25, stamp: NodeStamp(0) } new_position=1 [INFO] [stdout]  0.046s DEBUG insert_at: path=[0, 0] parent= pos=0 [INFO] [stdout]  0.046s DEBUG Move: computing from reference for node node_a=NodeId { index1: 4, stamp: NodeStamp(0) } [INFO] [stdout]  0.046s DEBUG insert_at: detaching child

                                                                                          at pos 0 to slot1 [INFO] [stdout]  0.046s DEBUG get_node_ref: computed path node=NodeId { index1: 4, stamp: NodeStamp(0) } path=[1, 1] [INFO] [stdout]  0.046s DEBUG insert_at_position: under at pos 0 (has 2 children) [INFO] [stdout]  0.046s DEBUG Move: computed from reference node_a=NodeId { index1: 4, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 1])) [INFO] [stdout]  0.046s DEBUG Applying patch: Insert

                                                                                        • @[0, 2] →slot2 [INFO] [stdout]  0.046s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n8] TEXT: "First paragraph with " [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "bold" [INFO] [stdout] [n9] [INFO] [stdout] [n5] TEXT: "Article Title" [INFO] [stdout] [n26]

                                                                                          [INFO] [stdout] [n15] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n28]

                                                                                          [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n24]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n52] TEXT: "" [INFO] [stdout] Slot 2: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n27] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.046s DEBUG insert_at: path=[0, 2] parent= pos=2 [INFO] [stdout]  0.046s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 28, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 29, stamp: NodeStamp(0) }, Text), (2, NodeId { index1: 6, stamp: NodeStamp(0) }, Text), (3, NodeId { index1: 27, stamp: NodeStamp(0) }, Element(Atom('ul' type=inline), Html)), (4, NodeId { index1: 22, stamp: NodeStamp(0) }, Text)] [INFO] [stdout]  0.046s DEBUG insert_at: detaching child at pos 2 to slot2 [INFO] [stdout]  0.046s DEBUG insert_at_position:
                                                                                        • under at pos 2 (has 2 children) [INFO] [stdout]  0.046s DEBUG move_to_position: checking ancestry node=NodeId { index1: 4, stamp: NodeStamp(0) } new_parent=NodeId { index1: 25, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.046s DEBUG Applying patch: Insert @[0, 2, 1] (2 attrs) [INFO] [stdout]  0.046s DEBUG insert_at: path=[0, 2, 1] parent=
                                                                                        • pos=1 [INFO] [stdout]  0.046s DEBUG Move: checking target position node=NodeId { index1: 4, stamp: NodeStamp(0) } position=1 children_count=5 [INFO] [stdout]  0.046s DEBUG insert_at_position: under
                                                                                        • at pos 1 (has 0 children) [INFO] [stdout]  0.046s DEBUG Move: found occupant at target position occupant=NodeId { index1: 29, stamp: NodeStamp(0) } _occupant_kind=Text [INFO] [stdout]  0.046s DEBUG Filled gap at position 0 with empty text node [INFO] [stdout]  0.046s DEBUG created new slot slot_num=5 [INFO] [stdout]  0.046s DEBUG Applying patch: Move [1, 0] → [0, 1] →slot3 [INFO] [stdout]  0.046s DEBUG detached node to slot node=NodeId { index1: 29, stamp: NodeStamp(0) } slot_num=5 [INFO] [stdout]  0.046s DEBUG Patches: [ [INFO] [stdout] SetText "\n\n " @[0, 0, 0], [INFO] [stdout] SetText " and content" @[0, 0, 1, 0], [INFO] [stdout] SetText "Second paragraph wit" @[0, 0, 2], [INFO] [stdout] Insert
                                                                                          @[0, 0] →slot1, [INFO] [stdout] Insert

                                                                                          @[0, 0, 1], [INFO] [stdout] Insert

                                                                                          @[0, 0, 3] (1 attrs), [INFO] [stdout] Move [1, 6] → [0, 0, 4], [INFO] [stdout] Move [1, 4] → [0, 0, 2] →slot2, [INFO] [stdout] Move [1, 3, 1] → [0, 0, 1, 1], [INFO] [stdout] Move [1, 3, 0] → [0, 0, 1, 0] →slot3, [INFO] [stdout] Move [1, 0] → [0, 0, 0] →slot4, [INFO] [stdout] Move [1, 1, 0] → [0, 0, 1, 2], [INFO] [stdout] Move [1, 2] → [0, 0, 3, 0], [INFO] [stdout] Remove @[1, 1], [INFO] [stdout] Remove @[1, 3, 2], [INFO] [stdout] Remove @[1, 3, 3, 0], [INFO] [stdout] Remove @[1, 3, 3], [INFO] [stdout] Remove @[1, 3, 4], [INFO] [stdout] Remove @[1, 3], [INFO] [stdout] Remove @[1, 5, 0], [INFO] [stdout] Remove @[1, 5, 1, 0], [INFO] [stdout] Remove @[1, 5, 1], [INFO] [stdout] Remove @[1, 5, 2], [INFO] [stdout] Remove @[1, 5], [INFO] [stdout] Remove @[1], [INFO] [stdout] ] [INFO] [stdout]  0.046s DEBUG insert_at: path=[0, 1] parent= pos=1 [INFO] [stdout]  0.046s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 29, stamp: NodeStamp(0) } slot=5 [INFO] [stdout]  0.046s DEBUG insert_at: detaching child

                                                                                          at pos 1 to slot3 [INFO] [stdout]  0.046s DEBUG Patch 0: SetText "\n\n " @[0, 0, 0] [INFO] [stdout]  0.046s DEBUG Patch 1: SetText " and content" @[0, 0, 1, 0] [INFO] [stdout]  0.046s DEBUG insert_at_position: text("d ") under at pos 1 (has 2 children) [INFO] [stdout]  0.046s DEBUG Generated Move patch node_a=NodeId { index1: 4, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 1])) to=NodeRef(NodePath([0, 0, 1])) detach_to_slot=Some(5) [INFO] [stdout]  0.046s DEBUG Patch 2: SetText "Second paragraph wit" @[0, 0, 2] [INFO] [stdout]  0.046s DEBUG Applying patch: Move [3, 0] → [0, 2, 0] →slot4 [INFO] [stdout]  0.046s DEBUG Patch 3: Insert
                                                                                          @[0, 0] →slot1 [INFO] [stdout]  0.046s DEBUG Patch 4: Insert

                                                                                          @[0, 0, 1] [INFO] [stdout]  0.046s DEBUG insert_at: path=[0, 2, 0] parent=

                                                                                        • pos=0 [INFO] [stdout]  0.046s DEBUG Patch 5: Insert

                                                                                          @[0, 0, 3] (1 attrs) [INFO] [stdout]  0.046s DEBUG insert_at: detaching child text("") at pos 0 to slot4 [INFO] [stdout]  0.046s DEBUG Patch 6: Move [1, 6] → [0, 0, 4] [INFO] [stdout]  0.046s DEBUG -> Move FROM slot 1 [INFO] [stdout]  0.046s DEBUG insert_at_position: text("d<<<&<") under

                                                                                        • at pos 0 (has 1 children) [INFO] [stdout]  0.046s DEBUG Patch 7: Move [1, 4] → [0, 0, 2] →slot2 [INFO] [stdout]  0.046s DEBUG Applying patch: Remove @[1, 1] [INFO] [stdout]  0.046s DEBUG -> Move FROM slot 1 [INFO] [stdout]  0.046s DEBUG Patch 8: Move [1, 3, 1] → [0, 0, 1, 1] [INFO] [stdout]  0.046s DEBUG Applying patch: Remove @[1] [INFO] [stdout]  0.046s DEBUG -> Move FROM slot 1 [INFO] [stdout]  0.046s DEBUG Applying patch: Remove @[3] [INFO] [stdout]  0.046s DEBUG Patch 9: Move [1, 3, 0] → [0, 0, 1, 0] →slot3 [INFO] [stdout]  0.046s DEBUG Applying patch: Remove @[2, 0] [INFO] [stdout]  0.046s DEBUG -> Move FROM slot 1 [INFO] [stdout]  0.046s DEBUG Patch 10: Move [1, 0] → [0, 0, 0] →slot4 [INFO] [stdout]  0.046s DEBUG Applying patch: Remove @[2, 1, 0] [INFO] [stdout]  0.046s DEBUG -> Move FROM slot 1 [INFO] [stdout]  0.046s DEBUG Applying patch: Remove @[2, 1] [INFO] [stdout]  0.046s DEBUG Patch 11: Move [1, 1, 0] → [0, 0, 1, 2] [INFO] [stdout]  0.046s DEBUG Applying patch: Remove @[2] [INFO] [stdout]  0.046s DEBUG -> Move FROM slot 1 [INFO] [stdout]  0.046s DEBUG Patch 12: Move [1, 2] → [0, 0, 3, 0] [INFO] [stdout]  0.046s DEBUG -> Move FROM slot 1 [INFO] [stdout]  0.046s DEBUG Patch 13: Remove @[1, 1] [INFO] [stdout]  0.046s DEBUG Patch 14: Remove @[1, 3, 2] [INFO] [stdout]  0.046s DEBUG Patch 15: Remove @[1, 3, 3, 0] [INFO] [stdout]  0.046s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n33] [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n42] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]
                                                                                            [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n38] TEXT: "" [INFO] [stdout] [n11] [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n11] [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n13] TEXT: "\n " [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n15] TEXT: "Feature two with " [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "emphasis" [INFO] [stdout] [n16] [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] Slot 5: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.046s DEBUG Patch 16: Remove @[1, 3, 3] [INFO] [stdout]  0.046s DEBUG Patch 17: Remove @[1, 3, 4] [INFO] [stdout]  0.046s DEBUG Processing operation op=Move(a:3 → b:6 @0 under b:5) [INFO] [stdout]  0.046s DEBUG Patch 18: Remove @[1, 3] [INFO] [stdout]  0.046s DEBUG Patch 19: Remove @[1, 5, 0] [INFO] [stdout]  0.046s DEBUG Move: starting node_a=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 5, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 25, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.046s DEBUG Patch 20: Remove @[1, 5, 1, 0] [INFO] [stdout]  0.046s DEBUG Patch 21: Remove @[1, 5, 1] [INFO] [stdout]  0.046s DEBUG Move: computing from reference for node node_a=NodeId { index1: 3, stamp: NodeStamp(0) } [INFO] [stdout]  0.046s DEBUG Patch 22: Remove @[1, 5, 2] [INFO] [stdout]  0.046s DEBUG Patch 23: Remove @[1, 5] [INFO] [stdout]  0.046s DEBUG get_node_ref: computed path node=NodeId { index1: 3, stamp: NodeStamp(0) } path=[1, 0] [INFO] [stdout]  0.046s DEBUG Patch 24: Remove @[1] [INFO] [stdout]  0.046s DEBUG Move: computed from reference node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) [INFO] [stdout]  0.046s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 28, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 4, stamp: NodeStamp(0) }, Element(Atom('h3' type=inline), Html)), (2, NodeId { index1: 6, stamp: NodeStamp(0) }, Text), (3, NodeId { index1: 27, stamp: NodeStamp(0) }, Element(Atom('ul' type=inline), Html)), (4, NodeId { index1: 22, stamp: NodeStamp(0) }, Text)] [INFO] [stdout]  0.046s DEBUG move_to_position: checking ancestry node=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent=NodeId { index1: 25, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.046s DEBUG Move: checking target position node=NodeId { index1: 3, stamp: NodeStamp(0) } position=0 children_count=5 [INFO] [stdout]  0.046s DEBUG Move: found occupant at target position occupant=NodeId { index1: 28, stamp: NodeStamp(0) } _occupant_kind=Text [INFO] [stdout]  0.046s DEBUG created new slot slot_num=6 [INFO] [stdout] test dom::tests::test_zero_copy_parsing ...  0.046s DEBUG detached node to slot node=NodeId { index1: 28, stamp: NodeStamp(0) } slot_num=6 [INFO] [stdout] ok [INFO] [stdout] test dom::tests::test_to_html_void_elements ... ok [INFO] [stdout]  0.046s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 28, stamp: NodeStamp(0) } slot=6 [INFO] [stdout] test diff::tests::test_fuzz_seed_0_template_0 ... ok [INFO] [stdout]  0.046s DEBUG Result: tttd
                                                                                        • d<<<&<
                                                                                        • [INFO] [stdout]  0.046s DEBUG Expected: tttd
                                                                                        • d<<<&<
                                                                                        • [INFO] [stdout] test diff::tests::test_fuzzer_img_li_roundtrip ... ok [INFO] [stdout]  0.047s DEBUG Processing operation op=Delete(a:2) [INFO] [stdout]  0.047s DEBUG Delete operation node_a=NodeId { index1: 2, stamp: NodeStamp(0) } _node_kind=Element(Atom('article' type=inline), Html) [INFO] [stdout]  0.047s DEBUG get_node_ref: computed path node=NodeId { index1: 2, stamp: NodeStamp(0) } path=[1] [INFO] [stdout] test dom::tests::test_to_html_escaping ... ok [INFO] [stdout]  0.047s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n17] [INFO] [stdout] [n4] TEXT: "<" [INFO] [stdout] [n17] [INFO] [stdout] [n19] [INFO] [stdout] [n6] TEXT: "<" [INFO] [stdout] [n19] [INFO] [stdout] [n20] [INFO] [stdout] [n14] TEXT: "<" [INFO] [stdout] [n20] [INFO] [stdout] [n21] [INFO] [stdout] [n22] TEXT: "<" [INFO] [stdout] [n21] [INFO] [stdout] [n23]
                                                                                          [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "<" [INFO] [stdout] [n7] [INFO] [stdout] [n9] [INFO] [stdout] [n10] TEXT: "<" [INFO] [stdout] [n9] [INFO] [stdout] [n24]

                                                                                          [INFO] [stdout] [n27] TEXT: "<<<<<<<<<<<<<" [INFO] [stdout] [n24]

                                                                                          [INFO] [stdout] [n23]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] Slot 2: [INFO] [stdout] [n26] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n25] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.047s DEBUG Patches: [ [INFO] [stdout] Insert @[0, 0] →slot1, [INFO] [stdout] Insert @[0, 1], [INFO] [stdout] Insert @[0, 2], [INFO] [stdout] Insert @[0, 3], [INFO] [stdout] Insert text "<" @[0, 3, 0], [INFO] [stdout] Insert
                                                                                          @[0, 4], [INFO] [stdout] Insert

                                                                                          @[0, 4, 2], [INFO] [stdout] Insert text "<<<<<<<<<<<<<" @[0, 4, 2, 0], [INFO] [stdout] Move [1, 3] → [0, 4, 1] →slot2, [INFO] [stdout] Move [1, 2] → [0, 4, 0] →slot3, [INFO] [stdout] Move [1, 0, 0] → [0, 0, 0], [INFO] [stdout] Move [1, 1, 0] → [0, 1, 0], [INFO] [stdout] Move [1, 4, 0, 0, 0] → [0, 2, 0], [INFO] [stdout] Remove @[1, 0], [INFO] [stdout] Remove @[1, 1], [INFO] [stdout] Remove @[1, 4, 0, 0], [INFO] [stdout] Remove @[1, 4, 0], [INFO] [stdout] Remove @[1, 4], [INFO] [stdout] Remove @[1], [INFO] [stdout] ] [INFO] [stdout]  0.047s DEBUG Applying patch: Insert @[0, 0] →slot1 [INFO] [stdout]  0.047s DEBUG insert_at: path=[0, 0] parent= pos=0 [INFO] [stdout]  0.047s DEBUG insert_at: detaching child
                                                                                          at pos 0 to slot1 [INFO] [stdout]  0.047s DEBUG insert_at_position: under at pos 0 (has 0 children) [INFO] [stdout]  0.047s DEBUG Applying patch: Insert @[0, 1] [INFO] [stdout]  0.047s DEBUG insert_at: path=[0, 1] parent= pos=1 [INFO] [stdout]  0.047s DEBUG insert_at_position: under at pos 1 (has 1 children) [INFO] [stdout]  0.047s DEBUG Applying patch: Insert @[0, 2] [INFO] [stdout]  0.047s DEBUG insert_at: path=[0, 2] parent= pos=2 [INFO] [stdout]  0.047s DEBUG insert_at_position: under at pos 2 (has 2 children) [INFO] [stdout]  0.047s DEBUG Applying patch: Insert @[0, 3] [INFO] [stdout]  0.047s DEBUG insert_at: path=[0, 3] parent= pos=3 [INFO] [stdout]  0.047s DEBUG insert_at_position: under at pos 3 (has 3 children) [INFO] [stdout]  0.047s DEBUG Applying patch: Insert text "<" @[0, 3, 0] [INFO] [stdout]  0.047s DEBUG insert_at: path=[0, 3, 0] parent= pos=0 [INFO] [stdout]  0.047s DEBUG insert_at_position: text("<") under at pos 0 (has 0 children) [INFO] [stdout]  0.047s DEBUG Applying patch: Insert
                                                                                          @[0, 4] [INFO] [stdout]  0.047s DEBUG insert_at: path=[0, 4] parent= pos=4 [INFO] [stdout]  0.047s DEBUG insert_at_position:
                                                                                          under at pos 4 (has 4 children) [INFO] [stdout]  0.048s DEBUG Applying patch: Insert

                                                                                          @[0, 4, 2] [INFO] [stdout]  0.048s DEBUG insert_at: path=[0, 4, 2] parent=
                                                                                          pos=2 [INFO] [stdout]  0.048s DEBUG insert_at_position:

                                                                                          under
                                                                                          at pos 2 (has 0 children) [INFO] [stdout]  0.048s DEBUG Filled gap at position 0 with empty text node [INFO] [stdout]  0.048s DEBUG Filled gap at position 1 with empty text node [INFO] [stdout]  0.048s DEBUG Applying patch: Insert text "<<<<<<<<<<<<<" @[0, 4, 2, 0] [INFO] [stdout]  0.048s DEBUG insert_at: path=[0, 4, 2, 0] parent=

                                                                                          pos=0 [INFO] [stdout]  0.048s DEBUG insert_at_position: text("<<<<<<<<<<") under

                                                                                          at pos 0 (has 0 children) [INFO] [stdout]  0.048s DEBUG Applying patch: Move [1, 3] → [0, 4, 1] →slot2 [INFO] [stdout]  0.048s DEBUG insert_at: path=[0, 4, 1] parent=
                                                                                          pos=1 [INFO] [stdout]  0.048s DEBUG insert_at: detaching child text("") at pos 1 to slot2 [INFO] [stdout]  0.048s DEBUG insert_at_position: under
                                                                                          at pos 1 (has 2 children) [INFO] [stdout]  0.048s DEBUG Applying patch: Move [1, 2] → [0, 4, 0] →slot3 [INFO] [stdout]  0.048s DEBUG insert_at: path=[0, 4, 0] parent=
                                                                                          pos=0 [INFO] [stdout]  0.048s DEBUG insert_at: detaching child text("") at pos 0 to slot3 [INFO] [stdout]  0.048s DEBUG insert_at_position: under
                                                                                          at pos 0 (has 2 children) [INFO] [stdout]  0.048s DEBUG Applying patch: Move [1, 0, 0] → [0, 0, 0] [INFO] [stdout]  0.048s DEBUG Move: computing from reference for node node_a=NodeId { index1: 3, stamp: NodeStamp(0) } [INFO] [stdout]  0.048s DEBUG insert_at: path=[0, 0, 0] parent= pos=0 [INFO] [stdout]  0.048s DEBUG get_node_ref: computed path node=NodeId { index1: 3, stamp: NodeStamp(0) } path=[1, 0] [INFO] [stdout]  0.048s DEBUG insert_at_position: text("<") under at pos 0 (has 0 children) [INFO] [stdout]  0.048s DEBUG Move: computed from reference node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) [INFO] [stdout]  0.048s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 12, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 11, stamp: NodeStamp(0) }, Element(Atom('strong' type=inline), Html)), (2, NodeId { index1: 6, stamp: NodeStamp(0) }, Text)] [INFO] [stdout]  0.048s DEBUG move_to_position: checking ancestry node=NodeId { index1: 3, stamp: NodeStamp(0) } new_parent=NodeId { index1: 9, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.048s DEBUG Move: checking target position node=NodeId { index1: 3, stamp: NodeStamp(0) } position=0 children_count=3 [INFO] [stdout]  0.048s DEBUG Move: found occupant at target position occupant=NodeId { index1: 12, stamp: NodeStamp(0) } _occupant_kind=Text [INFO] [stdout]  0.049s DEBUG created new slot slot_num=2 [INFO] [stdout]  0.048s DEBUG Applying patch: Move [1, 1, 0] → [0, 1, 0] [INFO] [stdout]  0.049s DEBUG insert_at: path=[0, 1, 0] parent= pos=0 [INFO] [stdout]  0.049s DEBUG insert_at_position: text("<") under at pos 0 (has 0 children) [INFO] [stdout]  0.049s DEBUG Applying patch: Move [1, 4, 0, 0, 0] → [0, 2, 0] [INFO] [stdout]  0.049s DEBUG insert_at: path=[0, 2, 0] parent= pos=0 [INFO] [stdout] test dom::tests::test_parse_simple_html ... ok [INFO] [stdout] test dom::tests::test_parse_with_attributes ... ok [INFO] [stdout]  0.048s DEBUG Result: <<<<
                                                                                          <<

                                                                                          <<<<<<<<<<<<<

                                                                                          [INFO] [stdout]  0.049s DEBUG detached node to slot node=NodeId { index1: 12, stamp: NodeStamp(0) } slot_num=2 [INFO] [stdout]  0.050s DEBUG Move: detached occupant to slot occupant=NodeId { index1: 12, stamp: NodeStamp(0) } slot=2 [INFO] [stdout]  0.051s DEBUG Generated Move patch node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) to=NodeRef(NodePath([0, 0, 0])) detach_to_slot=Some(2) [INFO] [stdout]  0.050s DEBUG insert_at_position: text("<") under at pos 0 (has 0 children) [INFO] [stdout]  0.052s DEBUG Applying patch: Remove @[1, 0] [INFO] [stdout]  0.052s DEBUG Applying patch: Remove @[1, 1] [INFO] [stdout]  0.052s DEBUG Applying patch: Remove @[1, 4, 0, 0] [INFO] [stdout]  0.052s DEBUG Applying patch: Remove @[1, 4, 0] [INFO] [stdout]  0.052s DEBUG Applying patch: Remove @[1, 4] [INFO] [stdout] test dom::tests::test_to_html_with_attributes ... ok [INFO] [stdout]  0.052s DEBUG Applying patch: Remove @[1] [INFO] [stdout]  0.050s DEBUG Expected: <<<<
                                                                                          <<

                                                                                          <<<<<<<<<<<<<

                                                                                          [INFO] [stdout] test diff::tests::test_fuzzer_slot_contains_text ... ok [INFO] [stdout]  0.052s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9]

                                                                                          [INFO] [stdout] [n3] TEXT: "Text with " [INFO] [stdout] [n11] [INFO] [stdout] [n13] [INFO] [stdout] [n14] [INFO] [stdout] [n14] [INFO] [stdout] [n13] [INFO] [stdout] [n11] [INFO] [stdout] [n6] TEXT: " word." [INFO] [stdout] [n9]

                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] [n16] TEXT: "" [INFO] [stdout] [n4] [INFO] [stdout] [n5] TEXT: "bold" [INFO] [stdout] [n4] [INFO] [stdout] [n15] TEXT: "" [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n12] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.054s DEBUG Processing operation op=Delete(a:5) [INFO] [stdout]  0.054s DEBUG Delete operation node_a=NodeId { index1: 5, stamp: NodeStamp(0) } _node_kind=Text [INFO] [stdout]  0.054s DEBUG get_node_ref: computed path node=NodeId { index1: 5, stamp: NodeStamp(0) } path=[1, 1, 0] [INFO] [stdout]  0.054s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9]

                                                                                          [INFO] [stdout] [n3] TEXT: "Text with " [INFO] [stdout] [n11] [INFO] [stdout] [n13] [INFO] [stdout] [n14] [INFO] [stdout] [n14] [INFO] [stdout] [n13] [INFO] [stdout] [n11] [INFO] [stdout] [n6] TEXT: " word." [INFO] [stdout] [n9]

                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] [n16] TEXT: "" [INFO] [stdout] [n4] [INFO] [stdout] [n18] TEXT: "" [INFO] [stdout] [n4] [INFO] [stdout] [n15] TEXT: "" [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n12] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.054s DEBUG Processing operation op=Delete(a:4) [INFO] [stdout]  0.054s DEBUG Delete operation node_a=NodeId { index1: 4, stamp: NodeStamp(0) } _node_kind=Element(Atom('strong' type=inline), Html) [INFO] [stdout]  0.054s DEBUG get_node_ref: computed path node=NodeId { index1: 4, stamp: NodeStamp(0) } path=[1, 1] [INFO] [stdout]  0.054s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9]

                                                                                          [INFO] [stdout] [n3] TEXT: "Text with " [INFO] [stdout] [n11] [INFO] [stdout] [n13] [INFO] [stdout] [n14] [INFO] [stdout] [n14] [INFO] [stdout] [n13] [INFO] [stdout] [n11] [INFO] [stdout] [n6] TEXT: " word." [INFO] [stdout] [n9]

                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] [n16] TEXT: "" [INFO] [stdout] [n19] TEXT: "" [INFO] [stdout] [n15] TEXT: "" [INFO] [stdout] [n2]

                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n12] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.054s DEBUG Processing operation op=Delete(a:2) [INFO] [stdout]  0.054s DEBUG Delete operation node_a=NodeId { index1: 2, stamp: NodeStamp(0) } _node_kind=Element(Atom('p' type=inline), Html) [INFO] [stdout]  0.054s DEBUG get_node_ref: computed path node=NodeId { index1: 2, stamp: NodeStamp(0) } path=[1] [INFO] [stdout]  0.054s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n9]

                                                                                          [INFO] [stdout] [n3] TEXT: "Text with " [INFO] [stdout] [n11] [INFO] [stdout] [n13] [INFO] [stdout] [n14] [INFO] [stdout] [n14] [INFO] [stdout] [n13] [INFO] [stdout] [n11] [INFO] [stdout] [n6] TEXT: " word." [INFO] [stdout] [n9]

                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n20] TEXT: "" [INFO] [stdout] Slot 2: [INFO] [stdout] [n12] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.055s DEBUG Applying patch: Insert

                                                                                          @[0, 0] →slot1 [INFO] [stdout]  0.055s DEBUG insert_at: path=[0, 0] parent= pos=0 [INFO] [stdout]  0.055s DEBUG insert_at: detaching child

                                                                                          at pos 0 to slot1 [INFO] [stdout]  0.055s DEBUG insert_at_position:

                                                                                          under at pos 0 (has 0 children) [INFO] [stdout]  0.055s DEBUG Applying patch: Insert @[0, 0, 1] [INFO] [stdout]  0.055s DEBUG insert_at: path=[0, 0, 1] parent=

                                                                                          pos=1 [INFO] [stdout]  0.055s DEBUG insert_at_position: under

                                                                                          at pos 1 (has 0 children) [INFO] [stdout]  0.055s DEBUG Filled gap at position 0 with empty text node [INFO] [stdout]  0.055s DEBUG Applying patch: Insert @[0, 0, 1, 0] (2 attrs) [INFO] [stdout]  0.055s DEBUG insert_at: path=[0, 0, 1, 0] parent= pos=0 [INFO] [stdout]  0.055s DEBUG insert_at_position: under at pos 0 (has 0 children) [INFO] [stdout]  0.055s DEBUG Applying patch: Insert @[0, 0, 1, 0, 0] [INFO] [stdout]  0.055s DEBUG insert_at: path=[0, 0, 1, 0, 0] parent= pos=0 [INFO] [stdout]  0.055s DEBUG insert_at_position: under at pos 0 (has 0 children) [INFO] [stdout]  0.055s DEBUG Applying patch: Move [1, 2] → [0, 0, 2] [INFO] [stdout]  0.055s DEBUG insert_at: path=[0, 0, 2] parent=

                                                                                          pos=2 [INFO] [stdout]  0.055s DEBUG insert_at_position: text(" word.") under

                                                                                          at pos 2 (has 2 children) [INFO] [stdout]  0.055s DEBUG Applying patch: Move [1, 0] → [0, 0, 0] →slot2 [INFO] [stdout]  0.055s DEBUG insert_at: path=[0, 0, 0] parent=

                                                                                          pos=0 [INFO] [stdout]  0.055s DEBUG insert_at: detaching child text("") at pos 0 to slot2 [INFO] [stdout]  0.055s DEBUG insert_at_position: text("Text with ") under

                                                                                          at pos 0 (has 2 children) [INFO] [stdout]  0.055s DEBUG Applying patch: Remove @[1, 1, 0] [INFO] [stdout]  0.055s DEBUG Applying patch: Remove @[1, 1] [INFO] [stdout]  0.055s DEBUG Applying patch: Remove @[1] [INFO] [stdout]  0.055s DEBUG Applying patch: SetText "\n 中文App Title\n " @[0, 0, 0] [INFO] [stdout]  0.055s DEBUG Applying patch: Insert @[0, 0] →slot1 [INFO] [stdout]  0.055s DEBUG insert_at: path=[0, 0] parent= pos=0 [INFO] [stdout]  0.056s DEBUG insert_at: detaching child at pos 0 to slot1 [INFO] [stdout]  0.056s DEBUG insert_at_position: under at pos 0 (has 0 children) [INFO] [stdout]  0.056s DEBUG Applying patch: Move [1, 0] → [0, 0, 0] [INFO] [stdout]  0.056s DEBUG insert_at: path=[0, 0, 0] parent= pos=0 [INFO] [stdout]  0.056s DEBUG insert_at_position: text("\n 中文A") under at pos 0 (has 0 children) [INFO] [stdout]  0.056s DEBUG Applying patch: Remove @[1, 1, 0] [INFO] [stdout]  0.056s DEBUG Applying patch: Remove @[1, 1] [INFO] [stdout]  0.057s DEBUG Applying patch: Remove @[1, 2] [INFO] [stdout]  0.057s DEBUG Applying patch: Remove @[1] [INFO] [stdout]  0.056s DEBUG Result: <<<<

                                                                                          <<

                                                                                          <<<<<<<<<<<<<

                                                                                          [INFO] [stdout]  0.058s DEBUG Expected: <<<<
                                                                                          <<

                                                                                          <<<<<<<<<<<<<

                                                                                          [INFO] [stdout] test diff::tests::test_svg_inside_strong ... ok [INFO] [stdout] test diff::tests::test_patch_json_roundtrip_with_unicode ... ok [INFO] [stdout] test diff::tests::test_fuzzer_article_code_move ... ok [INFO] [stdout]  0.058s DEBUG Generated Move patch node_a=NodeId { index1: 3, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 0])) to=NodeRef(NodePath([0, 0, 0])) detach_to_slot=Some(6) [INFO] [stdout]  0.061s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n33] [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n44] TEXT: "" [INFO] [stdout] [n42] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]
                                                                                            [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n38] TEXT: "" [INFO] [stdout] [n11] [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n11] [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n13] TEXT: "\n " [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n15] TEXT: "Feature two with " [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "emphasis" [INFO] [stdout] [n16] [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] Slot 5: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 6: [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.061s DEBUG Processing operation op=Move(a:8 → b:15 @0 under b:14) [INFO] [stdout]  0.061s DEBUG Move: starting node_a=NodeId { index1: 8, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 14, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 33, stamp: NodeStamp(0) } new_position=0 [INFO] [stdout]  0.061s DEBUG Move: computing from reference for node node_a=NodeId { index1: 8, stamp: NodeStamp(0) } [INFO] [stdout]  0.061s DEBUG get_node_ref: computed path node=NodeId { index1: 8, stamp: NodeStamp(0) } path=[1, 3, 0] [INFO] [stdout]  0.061s DEBUG Move: computed from reference node_a=NodeId { index1: 8, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 3, 0])) [INFO] [stdout]  0.061s DEBUG Parent children BEFORE Move children=[] [INFO] [stdout]  0.061s DEBUG move_to_position: checking ancestry node=NodeId { index1: 8, stamp: NodeStamp(0) } new_parent=NodeId { index1: 33, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.061s DEBUG Move: checking target position node=NodeId { index1: 8, stamp: NodeStamp(0) } position=0 children_count=0 [INFO] [stdout]  0.061s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.061s DEBUG Generated Move patch node_a=NodeId { index1: 8, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 3, 0])) to=NodeRef(NodePath([0, 0, 3, 1, 1, 0])) detach_to_slot=None [INFO] [stdout]  0.061s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n33] [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n44] TEXT: "" [INFO] [stdout] [n42] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]
                                                                                            [INFO] [stdout] [n46] TEXT: "" [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n38] TEXT: "" [INFO] [stdout] [n11] [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n11] [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n13] TEXT: "\n " [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n15] TEXT: "Feature two with " [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "emphasis" [INFO] [stdout] [n16] [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] Slot 5: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 6: [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.062s DEBUG Processing operation op=Move(a:12 → b:16 @2 under b:10) [INFO] [stdout]  0.062s DEBUG Move: starting node_a=NodeId { index1: 12, stamp: NodeStamp(0) } new_parent_b=NodeId { index1: 10, stamp: NodeStamp(0) } shadow_new_parent=NodeId { index1: 27, stamp: NodeStamp(0) } new_position=2 [INFO] [stdout]  0.062s DEBUG Move: computing from reference for node node_a=NodeId { index1: 12, stamp: NodeStamp(0) } [INFO] [stdout]  0.062s DEBUG get_node_ref: computed path node=NodeId { index1: 12, stamp: NodeStamp(0) } path=[1, 3, 1, 1, 0] [INFO] [stdout]  0.062s DEBUG Move: computed from reference node_a=NodeId { index1: 12, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 3, 1, 1, 0])) [INFO] [stdout]  0.062s DEBUG Parent children BEFORE Move children=[(0, NodeId { index1: 18, stamp: NodeStamp(0) }, Text), (1, NodeId { index1: 31, stamp: NodeStamp(0) }, Element(Atom('li' type=inline), Html))] [INFO] [stdout]  0.062s DEBUG move_to_position: checking ancestry node=NodeId { index1: 12, stamp: NodeStamp(0) } new_parent=NodeId { index1: 27, stamp: NodeStamp(0) } is_ancestor=false [INFO] [stdout]  0.062s DEBUG Move: checking target position node=NodeId { index1: 12, stamp: NodeStamp(0) } position=2 children_count=2 [INFO] [stdout]  0.062s DEBUG Move: appending (no occupant) [INFO] [stdout]  0.062s DEBUG Generated Move patch node_a=NodeId { index1: 12, stamp: NodeStamp(0) } from=NodeRef(NodePath([1, 3, 1, 1, 0])) to=NodeRef(NodePath([0, 0, 3, 2])) detach_to_slot=None [INFO] [stdout]  0.062s DEBUG === After Move === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n33] [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n44] TEXT: "" [INFO] [stdout] [n42] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]
                                                                                            [INFO] [stdout] [n46] TEXT: "" [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n38] TEXT: "" [INFO] [stdout] [n11] [INFO] [stdout] [n47] TEXT: "" [INFO] [stdout] [n11] [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n13] TEXT: "\n " [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n15] TEXT: "Feature two with " [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "emphasis" [INFO] [stdout] [n16] [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] Slot 5: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 6: [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.062s DEBUG Processing operation op=Delete(a:11) [INFO] [stdout]  0.062s DEBUG Delete operation node_a=NodeId { index1: 11, stamp: NodeStamp(0) } _node_kind=Element(Atom('code' type=inline), Html) [INFO] [stdout]  0.062s DEBUG get_node_ref: computed path node=NodeId { index1: 11, stamp: NodeStamp(0) } path=[1, 3, 1, 1] [INFO] [stdout]  0.062s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n33] [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n44] TEXT: "" [INFO] [stdout] [n42] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]
                                                                                            [INFO] [stdout] [n46] TEXT: "" [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n38] TEXT: "" [INFO] [stdout] [n48] TEXT: "" [INFO] [stdout] [n9]
                                                                                          • [INFO] [stdout] [n13] TEXT: "\n " [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n15] TEXT: "Feature two with " [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "emphasis" [INFO] [stdout] [n16] [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] Slot 5: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 6: [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.062s DEBUG Processing operation op=Delete(a:9) [INFO] [stdout]  0.062s DEBUG Delete operation node_a=NodeId { index1: 9, stamp: NodeStamp(0) } _node_kind=Element(Atom('li' type=inline), Html) [INFO] [stdout]  0.062s DEBUG get_node_ref: computed path node=NodeId { index1: 9, stamp: NodeStamp(0) } path=[1, 3, 1] [INFO] [stdout]  0.062s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n33] [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n44] TEXT: "" [INFO] [stdout] [n42] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]
                                                                                            [INFO] [stdout] [n46] TEXT: "" [INFO] [stdout] [n49] TEXT: "" [INFO] [stdout] [n13] TEXT: "\n " [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n15] TEXT: "Feature two with " [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "emphasis" [INFO] [stdout] [n16] [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] Slot 5: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 6: [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.062s DEBUG Processing operation op=Delete(a:13) [INFO] [stdout]  0.062s DEBUG Delete operation node_a=NodeId { index1: 13, stamp: NodeStamp(0) } _node_kind=Text [INFO] [stdout]  0.062s DEBUG get_node_ref: computed path node=NodeId { index1: 13, stamp: NodeStamp(0) } path=[1, 3, 2] [INFO] [stdout]  0.062s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n33] [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n44] TEXT: "" [INFO] [stdout] [n42] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]
                                                                                            [INFO] [stdout] [n46] TEXT: "" [INFO] [stdout] [n49] TEXT: "" [INFO] [stdout] [n50] TEXT: "" [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n15] TEXT: "Feature two with " [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "emphasis" [INFO] [stdout] [n16] [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] Slot 5: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 6: [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.063s DEBUG Processing operation op=Delete(a:15) [INFO] [stdout]  0.063s DEBUG Delete operation node_a=NodeId { index1: 15, stamp: NodeStamp(0) } _node_kind=Text [INFO] [stdout]  0.063s DEBUG get_node_ref: computed path node=NodeId { index1: 15, stamp: NodeStamp(0) } path=[1, 3, 3, 0] [INFO] [stdout]  0.063s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n33] [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n44] TEXT: "" [INFO] [stdout] [n42] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]
                                                                                            [INFO] [stdout] [n46] TEXT: "" [INFO] [stdout] [n49] TEXT: "" [INFO] [stdout] [n50] TEXT: "" [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n51] TEXT: "" [INFO] [stdout] [n16] [INFO] [stdout] [n17] TEXT: "emphasis" [INFO] [stdout] [n16] [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] Slot 5: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 6: [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.063s DEBUG Processing operation op=Delete(a:17) [INFO] [stdout]  0.063s DEBUG Delete operation node_a=NodeId { index1: 17, stamp: NodeStamp(0) } _node_kind=Text [INFO] [stdout]  0.063s DEBUG get_node_ref: computed path node=NodeId { index1: 17, stamp: NodeStamp(0) } path=[1, 3, 3, 1, 0] [INFO] [stdout]  0.063s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n33] [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n44] TEXT: "" [INFO] [stdout] [n42] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]
                                                                                            [INFO] [stdout] [n46] TEXT: "" [INFO] [stdout] [n49] TEXT: "" [INFO] [stdout] [n50] TEXT: "" [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n51] TEXT: "" [INFO] [stdout] [n16] [INFO] [stdout] [n52] TEXT: "" [INFO] [stdout] [n16] [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] Slot 5: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 6: [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.063s DEBUG Processing operation op=Delete(a:16) [INFO] [stdout]  0.063s DEBUG Delete operation node_a=NodeId { index1: 16, stamp: NodeStamp(0) } _node_kind=Element(Atom('strong' type=inline), Html) [INFO] [stdout]  0.063s DEBUG get_node_ref: computed path node=NodeId { index1: 16, stamp: NodeStamp(0) } path=[1, 3, 3, 1] [INFO] [stdout]  0.063s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n33] [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n44] TEXT: "" [INFO] [stdout] [n42] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]
                                                                                            [INFO] [stdout] [n46] TEXT: "" [INFO] [stdout] [n49] TEXT: "" [INFO] [stdout] [n50] TEXT: "" [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n51] TEXT: "" [INFO] [stdout] [n53] TEXT: "" [INFO] [stdout] [n14]
                                                                                          • [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] Slot 5: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 6: [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.063s DEBUG Processing operation op=Delete(a:14) [INFO] [stdout]  0.063s DEBUG Delete operation node_a=NodeId { index1: 14, stamp: NodeStamp(0) } _node_kind=Element(Atom('li' type=inline), Html) [INFO] [stdout]  0.063s DEBUG get_node_ref: computed path node=NodeId { index1: 14, stamp: NodeStamp(0) } path=[1, 3, 3] [INFO] [stdout]  0.063s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n33] [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n44] TEXT: "" [INFO] [stdout] [n42] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]
                                                                                            [INFO] [stdout] [n46] TEXT: "" [INFO] [stdout] [n49] TEXT: "" [INFO] [stdout] [n50] TEXT: "" [INFO] [stdout] [n54] TEXT: "" [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n20] TEXT: "Feature three" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] Slot 5: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 6: [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.064s DEBUG Processing operation op=Delete(a:20) [INFO] [stdout]  0.064s DEBUG Delete operation node_a=NodeId { index1: 20, stamp: NodeStamp(0) } _node_kind=Text [INFO] [stdout]  0.064s DEBUG get_node_ref: computed path node=NodeId { index1: 20, stamp: NodeStamp(0) } path=[1, 3, 5, 0] [INFO] [stdout]  0.064s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n33] [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n44] TEXT: "" [INFO] [stdout] [n42] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]
                                                                                            [INFO] [stdout] [n46] TEXT: "" [INFO] [stdout] [n49] TEXT: "" [INFO] [stdout] [n50] TEXT: "" [INFO] [stdout] [n54] TEXT: "" [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n55] TEXT: "" [INFO] [stdout] [n19]
                                                                                          • [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] Slot 5: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 6: [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.064s DEBUG Processing operation op=Delete(a:19) [INFO] [stdout]  0.064s DEBUG Delete operation node_a=NodeId { index1: 19, stamp: NodeStamp(0) } _node_kind=Element(Atom('li' type=inline), Html) [INFO] [stdout]  0.064s DEBUG get_node_ref: computed path node=NodeId { index1: 19, stamp: NodeStamp(0) } path=[1, 3, 5] [INFO] [stdout]  0.064s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n33] [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n44] TEXT: "" [INFO] [stdout] [n42] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]
                                                                                            [INFO] [stdout] [n46] TEXT: "" [INFO] [stdout] [n49] TEXT: "" [INFO] [stdout] [n50] TEXT: "" [INFO] [stdout] [n54] TEXT: "" [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n56] TEXT: "" [INFO] [stdout] [n21] TEXT: "\n " [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] Slot 5: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 6: [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.064s DEBUG Processing operation op=Delete(a:21) [INFO] [stdout]  0.064s DEBUG Delete operation node_a=NodeId { index1: 21, stamp: NodeStamp(0) } _node_kind=Text [INFO] [stdout]  0.064s DEBUG get_node_ref: computed path node=NodeId { index1: 21, stamp: NodeStamp(0) } path=[1, 3, 6] [INFO] [stdout]  0.064s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n33] [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n44] TEXT: "" [INFO] [stdout] [n42] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n7]
                                                                                            [INFO] [stdout] [n46] TEXT: "" [INFO] [stdout] [n49] TEXT: "" [INFO] [stdout] [n50] TEXT: "" [INFO] [stdout] [n54] TEXT: "" [INFO] [stdout] [n36] TEXT: "" [INFO] [stdout] [n56] TEXT: "" [INFO] [stdout] [n57] TEXT: "" [INFO] [stdout] [n7]
                                                                                          [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] Slot 5: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 6: [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.065s DEBUG Processing operation op=Delete(a:7) [INFO] [stdout]  0.065s DEBUG Delete operation node_a=NodeId { index1: 7, stamp: NodeStamp(0) } _node_kind=Element(Atom('ul' type=inline), Html) [INFO] [stdout]  0.065s DEBUG get_node_ref: computed path node=NodeId { index1: 7, stamp: NodeStamp(0) } path=[1, 3] [INFO] [stdout]  0.065s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n33] [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] [n44] TEXT: "" [INFO] [stdout] [n42] TEXT: "" [INFO] [stdout] [n40] TEXT: "" [INFO] [stdout] [n58] TEXT: "" [INFO] [stdout] [n35] TEXT: "" [INFO] [stdout] [n2]
                                                                                          [INFO] [stdout] Slot 2: [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] Slot 5: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 6: [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.065s DEBUG Processing operation op=Delete(a:2) [INFO] [stdout]  0.065s DEBUG Delete operation node_a=NodeId { index1: 2, stamp: NodeStamp(0) } _node_kind=Element(Atom('div' type=inline), Html) [INFO] [stdout]  0.065s DEBUG get_node_ref: computed path node=NodeId { index1: 2, stamp: NodeStamp(0) } path=[1] [INFO] [stdout]  0.065s DEBUG === After Delete === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n3] TEXT: "\n " [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n5] TEXT: "Features" [INFO] [stdout] [n4]

                                                                                          [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n27]
                                                                                            [INFO] [stdout] [n18] TEXT: "\n " [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n10] TEXT: "Feature one with " [INFO] [stdout] [n33] [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n33] [INFO] [stdout] [n31]
                                                                                          • [INFO] [stdout] [n12] TEXT: "code" [INFO] [stdout] [n27]
                                                                                          [INFO] [stdout] [n22] TEXT: "\n " [INFO] [stdout] [n25]
                                                                                          [INFO] [stdout] [n1] [INFO] [stdout] Slot 1: [INFO] [stdout] [n59] TEXT: "" [INFO] [stdout] Slot 2: [INFO] [stdout] [n32] TEXT: "" [INFO] [stdout] Slot 3: [INFO] [stdout] [n34] TEXT: "" [INFO] [stdout] Slot 4: [INFO] [stdout] [n30] TEXT: "" [INFO] [stdout] Slot 5: [INFO] [stdout] [n29] TEXT: "" [INFO] [stdout] Slot 6: [INFO] [stdout] [n28] TEXT: "" [INFO] [stdout] [INFO] [stdout]  0.065s DEBUG Patches: [ [INFO] [stdout] SetText "item" @[0, 0, 3, 0], [INFO] [stdout] SetText "\n\n\n " @[0, 0, 3, 1, 1, 0], [INFO] [stdout] Insert
                                                                                          @[0, 0] (1 attrs) →slot1, [INFO] [stdout] Insert
                                                                                            @[0, 0, 3], [INFO] [stdout] Insert
                                                                                          • @[0, 0, 3, 1], [INFO] [stdout] Insert @[0, 0, 3, 1, 1], [INFO] [stdout] Move [1, 4] → [0, 0, 4], [INFO] [stdout] Move [1, 3, 4] → [0, 0, 3, 0] →slot2, [INFO] [stdout] Move [1, 3, 1, 0] → [0, 0, 3, 1, 0] →slot3, [INFO] [stdout] Move [1, 2] → [0, 0, 2] →slot4, [INFO] [stdout] Move [1, 1] → [0, 0, 1] →slot5, [INFO] [stdout] Move [1, 0] → [0, 0, 0] →slot6, [INFO] [stdout] Move [1, 3, 0] → [0, 0, 3, 1, 1, 0], [INFO] [stdout] Move [1, 3, 1, 1, 0] → [0, 0, 3, 2], [INFO] [stdout] Remove @[1, 3, 1, 1], [INFO] [stdout] Remove @[1, 3, 1], [INFO] [stdout] Remove @[1, 3, 2], [INFO] [stdout] Remove @[1, 3, 3, 0], [INFO] [stdout] Remove @[1, 3, 3, 1, 0], [INFO] [stdout] Remove @[1, 3, 3, 1], [INFO] [stdout] Remove @[1, 3, 3], [INFO] [stdout] Remove @[1, 3, 5, 0], [INFO] [stdout] Remove @[1, 3, 5], [INFO] [stdout] Remove @[1, 3, 6], [INFO] [stdout] Remove @[1, 3], [INFO] [stdout] Remove @[1], [INFO] [stdout] ] [INFO] [stdout]  0.065s DEBUG Patch 0: SetText "item" @[0, 0, 3, 0] [INFO] [stdout]  0.066s DEBUG Patch 1: SetText "\n\n\n " @[0, 0, 3, 1, 1, 0] [INFO] [stdout]  0.066s DEBUG Patch 2: Insert
                                                                                            @[0, 0] (1 attrs) →slot1 [INFO] [stdout]  0.066s DEBUG Patch 3: Insert
                                                                                              @[0, 0, 3] [INFO] [stdout]  0.066s DEBUG Patch 4: Insert
                                                                                            • @[0, 0, 3, 1] [INFO] [stdout]  0.067s DEBUG Patch 5: Insert @[0, 0, 3, 1, 1] [INFO] [stdout]  0.067s DEBUG Patch 6: Move [1, 4] → [0, 0, 4] [INFO] [stdout]  0.067s DEBUG Patch 7: Move [1, 3, 4] → [0, 0, 3, 0] →slot2 [INFO] [stdout]  0.067s DEBUG Patch 8: Move [1, 3, 1, 0] → [0, 0, 3, 1, 0] →slot3 [INFO] [stdout]  0.067s DEBUG Patch 9: Move [1, 2] → [0, 0, 2] →slot4 [INFO] [stdout]  0.067s DEBUG Patch 10: Move [1, 1] → [0, 0, 1] →slot5 [INFO] [stdout]  0.068s DEBUG Patch 11: Move [1, 0] → [0, 0, 0] →slot6 [INFO] [stdout]  0.068s DEBUG Patch 12: Move [1, 3, 0] → [0, 0, 3, 1, 1, 0] [INFO] [stdout]  0.068s DEBUG Patch 13: Move [1, 3, 1, 1, 0] → [0, 0, 3, 2] [INFO] [stdout]  0.068s DEBUG Patch 14: Remove @[1, 3, 1, 1] [INFO] [stdout]  0.068s DEBUG Patch 15: Remove @[1, 3, 1] [INFO] [stdout]  0.068s DEBUG Patch 16: Remove @[1, 3, 2] [INFO] [stdout]  0.068s DEBUG Patch 17: Remove @[1, 3, 3, 0] [INFO] [stdout]  0.068s DEBUG Patch 18: Remove @[1, 3, 3, 1, 0] [INFO] [stdout]  0.068s DEBUG Patch 19: Remove @[1, 3, 3, 1] [INFO] [stdout]  0.068s DEBUG Patch 20: Remove @[1, 3, 3] [INFO] [stdout]  0.068s DEBUG Patch 21: Remove @[1, 3, 5, 0] [INFO] [stdout]  0.068s DEBUG Patch 22: Remove @[1, 3, 5] [INFO] [stdout]  0.068s DEBUG Patch 23: Remove @[1, 3, 6] [INFO] [stdout]  0.068s DEBUG Patch 24: Remove @[1, 3] [INFO] [stdout]  0.068s DEBUG Patch 25: Remove @[1] [INFO] [stdout]  0.070s DEBUG Applying patch: SetText "item" @[0, 0, 3, 0] [INFO] [stdout]  0.070s DEBUG Applying patch: SetText "\n\n\n " @[0, 0, 3, 1, 1, 0] [INFO] [stdout]  0.070s DEBUG Applying patch: Insert
                                                                                              @[0, 0] (1 attrs) →slot1 [INFO] [stdout]  0.070s DEBUG insert_at: path=[0, 0] parent= pos=0 [INFO] [stdout]  0.070s DEBUG insert_at: detaching child
                                                                                              at pos 0 to slot1 [INFO] [stdout]  0.070s DEBUG insert_at_position:
                                                                                              under at pos 0 (has 0 children) [INFO] [stdout]  0.070s DEBUG Applying patch: Insert
                                                                                                @[0, 0, 3] [INFO] [stdout]  0.070s DEBUG insert_at: path=[0, 0, 3] parent=
                                                                                                pos=3 [INFO] [stdout]  0.070s DEBUG insert_at_position:
                                                                                                  under
                                                                                                  at pos 3 (has 0 children) [INFO] [stdout]  0.070s DEBUG Filled gap at position 0 with empty text node [INFO] [stdout]  0.070s DEBUG Filled gap at position 1 with empty text node [INFO] [stdout]  0.070s DEBUG Filled gap at position 2 with empty text node [INFO] [stdout]  0.070s DEBUG Applying patch: Insert
                                                                                                • @[0, 0, 3, 1] [INFO] [stdout]  0.070s DEBUG insert_at: path=[0, 0, 3, 1] parent=
                                                                                                    pos=1 [INFO] [stdout]  0.070s DEBUG insert_at_position:
                                                                                                  • under
                                                                                                      at pos 1 (has 0 children) [INFO] [stdout]  0.070s DEBUG Filled gap at position 0 with empty text node [INFO] [stdout]  0.070s DEBUG Applying patch: Insert @[0, 0, 3, 1, 1] [INFO] [stdout]  0.070s DEBUG insert_at: path=[0, 0, 3, 1, 1] parent=
                                                                                                    • pos=1 [INFO] [stdout]  0.070s DEBUG insert_at_position: under
                                                                                                    • at pos 1 (has 0 children) [INFO] [stdout]  0.070s DEBUG Filled gap at position 0 with empty text node [INFO] [stdout]  0.070s DEBUG Applying patch: Move [1, 4] → [0, 0, 4] [INFO] [stdout]  0.070s DEBUG insert_at: path=[0, 0, 4] parent=
                                                                                                      pos=4 [INFO] [stdout]  0.070s DEBUG insert_at_position: text("\n ") under
                                                                                                      at pos 4 (has 4 children) [INFO] [stdout]  0.070s DEBUG Applying patch: Move [1, 3, 4] → [0, 0, 3, 0] →slot2 [INFO] [stdout]  0.070s DEBUG insert_at: path=[0, 0, 3, 0] parent=
                                                                                                        pos=0 [INFO] [stdout]  0.070s DEBUG insert_at: detaching child text("") at pos 0 to slot2 [INFO] [stdout]  0.070s DEBUG insert_at_position: text("\n ") under
                                                                                                          at pos 0 (has 1 children) [INFO] [stdout]  0.070s DEBUG Applying patch: Move [1, 3, 1, 0] → [0, 0, 3, 1, 0] →slot3 [INFO] [stdout]  0.070s DEBUG insert_at: path=[0, 0, 3, 1, 0] parent=
                                                                                                        • pos=0 [INFO] [stdout]  0.070s DEBUG insert_at: detaching child text("") at pos 0 to slot3 [INFO] [stdout]  0.070s DEBUG insert_at_position: text("Feature on") under
                                                                                                        • at pos 0 (has 1 children) [INFO] [stdout]  0.070s DEBUG Applying patch: Move [1, 2] → [0, 0, 2] →slot4 [INFO] [stdout]  0.070s DEBUG insert_at: path=[0, 0, 2] parent=
                                                                                                          pos=2 [INFO] [stdout]  0.070s DEBUG insert_at: detaching child text("") at pos 2 to slot4 [INFO] [stdout]  0.070s DEBUG insert_at_position: text("\n ") under
                                                                                                          at pos 2 (has 4 children) [INFO] [stdout]  0.070s DEBUG Applying patch: Move [1, 1] → [0, 0, 1] →slot5 [INFO] [stdout]  0.070s DEBUG insert_at: path=[0, 0, 1] parent=
                                                                                                          pos=1 [INFO] [stdout]  0.070s DEBUG insert_at: detaching child text("") at pos 1 to slot5 [INFO] [stdout]  0.070s DEBUG insert_at_position:

                                                                                                          under
                                                                                                          at pos 1 (has 4 children) [INFO] [stdout]  0.070s DEBUG Applying patch: Move [1, 0] → [0, 0, 0] →slot6 [INFO] [stdout]  0.070s DEBUG insert_at: path=[0, 0, 0] parent=
                                                                                                          pos=0 [INFO] [stdout]  0.070s DEBUG insert_at: detaching child text("") at pos 0 to slot6 [INFO] [stdout]  0.070s DEBUG insert_at_position: text("\n ") under
                                                                                                          at pos 0 (has 4 children) [INFO] [stdout]  0.070s DEBUG Applying patch: Move [1, 3, 0] → [0, 0, 3, 1, 1, 0] [INFO] [stdout]  0.070s DEBUG insert_at: path=[0, 0, 3, 1, 1, 0] parent= pos=0 [INFO] [stdout]  0.070s DEBUG insert_at_position: text("item") under at pos 0 (has 0 children) [INFO] [stdout]  0.070s DEBUG Applying patch: Move [1, 3, 1, 1, 0] → [0, 0, 3, 2] [INFO] [stdout]  0.070s DEBUG insert_at: path=[0, 0, 3, 2] parent=
                                                                                                            pos=2 [INFO] [stdout]  0.070s DEBUG insert_at_position: text("\n\n\n ") under
                                                                                                              at pos 2 (has 2 children) [INFO] [stdout]  0.070s DEBUG Applying patch: Remove @[1, 3, 1, 1] [INFO] [stdout]  0.070s DEBUG Applying patch: Remove @[1, 3, 1] [INFO] [stdout]  0.070s DEBUG Applying patch: Remove @[1, 3, 2] [INFO] [stdout]  0.070s DEBUG Applying patch: Remove @[1, 3, 3, 0] [INFO] [stdout]  0.070s DEBUG Applying patch: Remove @[1, 3, 3, 1, 0] [INFO] [stdout]  0.070s DEBUG Applying patch: Remove @[1, 3, 3, 1] [INFO] [stdout]  0.070s DEBUG Applying patch: Remove @[1, 3, 3] [INFO] [stdout]  0.070s DEBUG Applying patch: Remove @[1, 3, 5, 0] [INFO] [stdout]  0.071s DEBUG Applying patch: Remove @[1, 3, 5] [INFO] [stdout]  0.071s DEBUG Applying patch: Remove @[1, 3, 6] [INFO] [stdout]  0.071s DEBUG Applying patch: Remove @[1, 3] [INFO] [stdout]  0.071s DEBUG Applying patch: Remove @[1] [INFO] [stdout] test diff::tests::test_fuzz_seed_27_template_4 ... ok [INFO] [stdout]  0.497s DEBUG matching pairs: 3896 [INFO] [stdout]  0.497s DEBUG arena_dom cinereus diff complete ops_count=1 matched_pairs=3896 [INFO] [stdout]  0.508s DEBUG === Initial shadow tree === [INFO] [stdout] Slot 0: [INFO] [stdout] [n1] [INFO] [stdout] [n2] TEXT: "\n" [INFO] [stdout] [n3]
                                                                                                              [INFO] [stdout] [n4] TEXT: "\n" [INFO] [stdout] [n5]
                                                                                                              [INFO] [stdout] [n6] TEXT: "\n " [INFO] [stdout] [n7] [INFO] [stdout] [n7] [INFO] [stdout] [n8] TEXT: "\n " [INFO] [stdout] [n9]
                                                                                                              [INFO] [stdout] [n10] TEXT: "\n " [INFO] [stdout] [n11]
                                                                                                              [INFO] [stdout] [n11]
                                                                                                              [INFO] [stdout] [n12] TEXT: "\n\n \n " [INFO] [stdout] [n13]
                                                                                                              [INFO] [stdout] [n14] TEXT: "\n " [INFO] [stdout] [n15]
                                                                                                              [INFO] [stdout] [n15]
                                                                                                              [INFO] [stdout] [n16] TEXT: "\n\n \n \n\n " [INFO] [stdout] [n17]
                                                                                                              [INFO] [stdout] [n18] TEXT: "\n\n \n \n \n\n \n \n\n " [INFO] [stdout] [n19]

                                                                                                              [INFO] [stdout] [n20] TEXT: "\n Face cams: the missing guide\n " [INFO] [stdout] [n19]

                                                                                                              [INFO] [stdout] [n21] TEXT: "\n\n \n\n \n \n\n \n \n " [INFO] [stdout] [n22]
                                                                                                              [INFO] [stdout] [n23] TEXT: "\n \n " [INFO] [stdout] [n24] [INFO] [stdout] [n25] TEXT: "Mar 02, 2024" [INFO] [stdout] [n24] [INFO] [stdout] [n26] TEXT: "\n \n \n\n " [INFO] [stdout] [n27] [INFO] [stdout] [n28] TEXT: "\n " [INFO] [stdout] [n29] [INFO] [stdout] [n30] [INFO] [stdout] [n30] [INFO] [stdout] [n31] [INFO] [stdout] [n31] [INFO] [stdout] [n29] [INFO] [stdout] [n32] TEXT: "\n\n " [INFO] [stdout] [n33] [INFO] [stdout] [n34] TEXT: "\n \n \n \n 1 hour 11 min\n \n " [INFO] [stdout] [n33] [INFO] [stdout] [n35] TEXT: "\n " [INFO] [stdout] [n27] [INFO] [stdout] [n36] TEXT: "\n \n " [INFO] [stdout] [n37] [INFO] [stdout] [n38] TEXT: "\n \n \n " [INFO] [stdout] [n39] [INFO] [stdout] [n40] [INFO] [stdout] [n41] TEXT: "#meta" [INFO] [stdout] [n40] [INFO] [stdout] [n39] [INFO] [stdout] [n42] TEXT: "\n \n \n " [INFO] [stdout] [n43] [INFO] [stdout] [n44] TEXT: "·" [INFO] [stdout] [n43] [INFO] [stdout] [n45] TEXT: "\n \n \n \n " [INFO] [stdout] [n46] [INFO] [stdout] [n47] [INFO] [stdout] [n48] TEXT: "#production" [INFO] [stdout] [n47] [INFO] [stdout] [n46] [INFO] [stdout] [n49] TEXT: "\n \n \n \n " [INFO] [stdout] [n37] [INFO] [stdout] [n50] TEXT: "\n " [INFO] [stdout] [n51] [INFO] [stdout] [n52] TEXT: "\n \n \n\n \n \n\n \n" [INFO] [stdout] [n51] [INFO] [stdout] [n53] TEXT: "\n " [INFO] [stdout] [n22]
                                                                                                              [INFO] [stdout] [n54] TEXT: " \n \n\n \n \n" [INFO] [stdout] [n55]

                                                                                                              [INFO] [stdout] [n56] TEXT: "\n Thanks to my sponsors:\n " [INFO] [stdout] [n57] [INFO] [stdout] [n58] TEXT: "\n \n Adam Lassek, Thehbadger, Andy Gocke, Dominik Wagner, James Rhodes, Peter Shih, Zalán Bálint Lévai, Cole Kurkowski, Geoff Cant, Tomas Sedovic, Radu Matei, Ian McLinden, James Brown, psentee, Manuel Hutter, Malik Bougacha, Austin Traver, Marcus Griep, Guy Waldman, Kevin Murphy\n and " [INFO] [stdout] [n59] [INFO] [stdout] [n60] [INFO] [stdout] [n61] TEXT: "262" [INFO] [stdout] [n60] [INFO] [stdout] [n62] TEXT: " more" [INFO] [stdout] [n59] [INFO] [stdout] [n63] TEXT: "\n \n " [INFO] [stdout] [n57] [INFO] [stdout] [n64] TEXT: "\n " [INFO] [stdout] [n65] [INFO] [stdout] [n66] TEXT: "Adam Lassek, Thehbadger, Andy Gocke, Dominik Wagner, James Rhodes, Peter Shih, Zalán Bálint Lévai, Cole Kurkowski, Geoff Cant, Tomas Sedovic, Radu Matei, Ian McLinden, James Brown, psentee, Manuel Hutter, Malik Bougacha, Austin Traver, Marcus Griep, Guy Waldman, Kevin Murphy, Diego Roig, Berkus Decker, Elendol, Christopher Valerio, Angelo, Yuriy Taraday, Pete Bevin, ShikChen, Lawrence Bethlenfalvy, Xavier Groleau, Ben Wishovich, Marco Carmosino, Alan O'Donnell, Anna M, Ronen Ulanovsky, Romain Ruetschi, Vinay Mehta, Geoffroy Couprie, L0r3m1p5um, Mark, eliferrous, Max Heaton, Gorazd Brumen, Brooke Tilley, Boris Dolgov, qrpth, Kyle Lacy, budrick, Toon Willems, Sawyer Knoblich, Romain Kelifa, callym, Luis, Guilherme Neubaner, playest, Dragoon, Morgan Rosenkranz, Olivia Crain, Simon Menke, Ross Williams, compwhizii, pinkhatbeard, Mark Old, David Smith, Chris Thackrey, Beat Scherrer, Tom Forbes, Cole Tobin, Taneli Kaivola, Michael Alyn Miller, Brian L. Troutwine, Egor Ternovoi, Björn Marschollek, Sean Bryant, Jonathan Adams, Nicolas Riebesel, Michał Zalewski, Olly Swanson, Laine Taffin Altman, Josh Triplett, Timothée Gerber, Jimmy Hartzell, Senyo Simpson, Adam Gutglick, Chris Walker, Victor Song, Chris Biscardi, Andy F, Antoine Boegli, Ben Mitchell, Luke Konopka, Lucille Blumire, Sung Jeon, zed, Jan-Stefan Janetzky, Xirvik Servers, Enrico Zschemisch, Zac Harrold, Matt Heise, Matěj Volf, messense, Christoph Grabo, milan, Sam Leonard, Alex Rudy, David Cornu, Raine Godmaire, Yann Schwartz, Paige Ruten, Braidon Whatley, Jack Duvall, Paul Marques Mota, you got maiL, Dylan Anthony, Jake Demarest-Mays, Guillaume E, Urs Metz, The0x539, Zachary Thomas, Colin VanDervoort, Mathew Haji, xales, Zaki, Eugene Bulkin, Max von Forell, old.woman.josiah, Matthias Zepper, Luke Yue, Noel, Yufan Lou, Carson Page, Tabitha, notryanb, Benjamin Röjder Delnavaz, Max Bruckner, Geoffrey Thomas, Vladimir, Daniel Silverstone, Menno Finlay-Smits, Olivier Peyrusse, Mario Fleischhacker, Philipp Hatt, Tobias Bahls, Nicholas, std__mpa, villem, Corey Alexander, clement, Marie Janssen, Hadrien G., Santiago Lema, Mark Tomlin, DaVince, Kamran Khan, Steven Pham, Aiden Scandella, Mikkel Rasmussen, Dimitri Merejkowsky, Antoine PESTEL-ROPARS, Scott Steele, Dom, Justy, traxys, Paul Horn, René Ribaud, 0lach, Pete LeVasseur, Tyler Bloom, John VanEnk, Scott Sanderson, Justin Ossevoort, Isak Sunde Singh, Matt Campbell, avborhanian, Matt Jackson, Horváth-Lázár Péter, anichno, Jelle Besseling, Matthew T, Henrik Tudborg, Michael, Marc-Andre Giroux, Nicolas Coulange, Aleksandre Khokhiashvili, Torben Clasen, AdrianEddy, Joshua Roesslein, Mattia Valzelli, belzael, Michal Hošna, Mike English, Justin Smith, Alex Krantz, Felix Weis, Borys Minaiev, Matt Jadczak, Zeeger Lubsen, Daniel Wagner-Hall, Alexandra Østermark, Ripta Pasay, Arjen Laarhoven, Marty Penner, Romet Tagobert, Philipp Angerer, dataphract, Jörn Huxhorn, Lena Schönburg, Marcus Griep, Stephan Buys, Kai Kaufman, Marcin Kołodziej, jalciné, Chris Emery, Daniel Strittmatter, Em Sharnoff, Antoine Rouaze, bbutkovic, Julian Schmid, Hamilton Chapman, Tanner Muro, Reto Trappitsch, Yves, David White, C J Silverio, Gioele Pannetto, Vincent Mutolo, Mason Ginter, Bob Ippolito, Seth, ofrighil, Mateusz Wykurz, hgranthorner, Wyatt Herkamp, Tiziano Santoro, James Leitch, Zoran Zaric, Walther, ZacJW, Ryan, Sylvie Nightshade, Twan Walpot, Michał Bartoszkiewicz, Nyefan, jatescher, Blake Johnson, Valentin Mariette, Ronen Cohen, Miguel Raz Guzmán Macedo, Ives van Hoorne, Chris, David Barsky, Johnathan Pagnutti, Jesse Luehrs, Chris Sims, SeniorMars, me, Luuk, Christian Bourjau, Integer 32, LLC, Richard Stephens, Richard Pringle, Dirkjan Ochtman, prairiewolf, genny, Makoto Nakashima, Elnath, Zachary Myers, Brandon Piña, WeblWabl, Niels Abildgaard, Andrew Henshaw, Mathias Brossard, Astrid, Raphaël Thériault, Dave Minter, Samit Basu, Jim, Julien Roncaglia, Neil Blakey-Milner, Jean-David Gadina, Lyssieth, Ahmad Alhashemi" [INFO] [stdout] [n65] [INFO] [stdout] [n67] TEXT: "\n\n \n" [INFO] [stdout] [n55]

                                                                                                              [INFO] [stdout] [n68] TEXT: "\n\n" [INFO] [stdout] [n69] [INFO] [stdout] [n71] TEXT: "\n\n \n\n " [INFO] [stdout] [n72]
                                                                                                              [INFO] [stdout] [n72]
                                                                                                              [INFO] [stdout] [n73] TEXT: "\n\n \n \n\n\n\n \n\n \n\n \n\n " [INFO] [stdout] [n74]

                                                                                                              [INFO] [stdout] [n75] TEXT: "I try to avoid doing “meta” / “behind the scenes” stuff, because I usually feel\nlike it has to be “earned”. How many YouTube channels are channels about making\nYouTube videos? Too many." [INFO] [stdout] [n74]

                                                                                                              [INFO] [stdout] [n76] TEXT: "\n\n" [INFO] [stdout] [n77]

                                                                                                              [INFO] [stdout] [n78] TEXT: "Regardless, because I’ve had the opportunity to make my own mistakes now for a\nfew years (I started " [INFO] [stdout] [n79] [INFO] [stdout] [n80] TEXT: "doing the video thing" [INFO] [stdout] [n79] [INFO] [stdout] [n81] TEXT: " in earnest in 2019), and because I’ve recently made a few leaps\nin quality-of-life re: shooting and editing video, I thought I’d publish a few\nnotes, if only for reference for my future self." [INFO] [stdout] [n77]

                                                                                                              [INFO] [stdout] [n82] TEXT: "\n\n" [INFO] [stdout] [n83] [INFO] [stdout] [n84]

                                                                                                              [INFO] [stdout] [n85] TEXT: "Where to buy stuff?" [INFO] [stdout] [n84]

                                                                                                              [INFO] [stdout] [n83]
                                                                                                              [INFO] [stdout] [n86] TEXT: "\n" [INFO] [stdout] [n87]

                                                                                                              [INFO] [stdout] [n88] TEXT: "There’s no affiliate links in this entire article: it all links to the\nmanufacturers’ websites or Wikipedia." [INFO] [stdout] [n87]

                                                                                                              [INFO] [stdout] [n89] TEXT: "\n\n" [INFO] [stdout] [n90]

                                                                                                              [INFO] [stdout] [n91] TEXT: "Amazon is as evil as they come, but they have a " [INFO] [stdout] [n92] [INFO] [stdout] [n93] TEXT: "great" [INFO] [stdout] [n92] [INFO] [stdout] [n94] TEXT: " “no questions asked”\nreturn policy." [INFO] [stdout] [n90]

                                                                                                              [INFO] [stdout] [n95] TEXT: "\n\n" [INFO] [stdout] [n96]

                                                                                                              [INFO] [stdout] [n97] TEXT: "However, whenever I can, I try to buy from elsewhere. For audio stuff, that’s\noften " [INFO] [stdout] [n98] [INFO] [stdout] [n99] TEXT: "Thomann" [INFO] [stdout] [n98] [INFO] [stdout] [n100] TEXT: " (they have a separate\nwebsite for the Americas). For visual stuff, that’s often " [INFO] [stdout] [n101] [INFO] [stdout] [n102] TEXT: "Miss\nNumerique" [INFO] [stdout] [n101] [INFO] [stdout] [n103] TEXT: ", but that’s just for France." [INFO] [stdout] [n96]

                                                                                                              [INFO] [stdout] [n104] TEXT: "\n\n" [INFO] [stdout] [n105]

                                                                                                              [INFO] [stdout] [n106] TEXT: "You can find a list of local resellers on the manufacturers’ websites:\nsometimes, the slight inconvenience of going off-Amazon pays off in terms of,\nwell, the knowledge you’re supporting a smaller outlet, but also a higher\nquality of service, advice, etc." [INFO] [stdout] [n105]

                                                                                                              [INFO] [stdout] [n107] TEXT: "\n\n" [INFO] [stdout] [n108]

                                                                                                              [INFO] [stdout] [n109] TEXT: "I bought one thing off of eBay and had a really negative experience, but that’s\njust me. There " [INFO] [stdout] [n110] [INFO] [stdout] [n111] TEXT: "are" [INFO] [stdout] [n110] [INFO] [stdout] [n112] TEXT: " things worth the money on AliExpress and similar Chinese\nwebsites, but you won’t find them unless you explicitly know what to look for:\nthe good stuff looks exactly like the bad stuff." [INFO] [stdout] [n108]

                                                                                                              [INFO] [stdout] [n113] TEXT: "\n\n" [INFO] [stdout] [n114]

                                                                                                              [INFO] [stdout] [n115] TEXT: "For example, I grabbed these 2160p@30 HDMI capture sticks for 22.41EUR, and\nthey " [INFO] [stdout] [n116] [INFO] [stdout] [n117] TEXT: "work" [INFO] [stdout] [n116] [INFO] [stdout] [n118] TEXT: " (they’re USB video class, no drivers needed):" [INFO] [stdout] [n114]

                                                                                                              [INFO] [stdout] [n119] TEXT: "\n\n" [INFO] [stdout] [n120]

                                                                                                              [INFO] [stdout] [n121] [INFO] [stdout] [n122] [INFO] [stdout] [n122] [INFO] [stdout] [n123] [INFO] [stdout] [n123] [INFO] [stdout] [n124] [INFO] [stdout] [n124] [INFO] [stdout] [n125] [INFO] [stdout] [n125] [INFO] [stdout] [n126] [INFO] [stdout] [n126] [INFO] [stdout] [n127] [INFO] [stdout] [n127] [INFO] [stdout] [n128] [INFO] [stdout] [n128] [INFO] [stdout] [n129] [INFO] [stdout] [n129] [INFO] [stdout] [n130] [INFO] [stdout] [n130] [INFO] [stdout] [n131] [INFO] [stdout] [n131] [INFO] [stdout] [n121] [INFO] [stdout] [n120]

                                                                                                              [INFO] [stdout] [n132] TEXT: "\n\n" [INFO] [stdout] [n133] [INFO] [stdout] [n134]

                                                                                                              [INFO] [stdout] [n135] TEXT: "About the money thing" [INFO] [stdout] [n134]

                                                                                                              [INFO] [stdout] [n133]
                                                                                                              [INFO] [stdout] [n136] TEXT: "\n" [INFO] [stdout] [n137]

                                                                                                              [INFO] [stdout] [n138] TEXT: "AV (audio/video) is an expensive hobby." [INFO] [stdout] [n137]

                                                                                                              [INFO] [stdout] [n139] TEXT: "\n\n" [INFO] [stdout] [n140]

                                                                                                              [INFO] [stdout] [n141] TEXT: "Expect your “price sensitivities” to evolve over time. I think I’ve wasted more\nmoney trying to " [INFO] [stdout] [n142] [INFO] [stdout] [n143] TEXT: "save" [INFO] [stdout] [n142] [INFO] [stdout] [n144] TEXT: " money by getting the cheap, not-fit-for-purpose\nentry-level stuff, rather than just getting something that works." [INFO] [stdout] [n140]

                                                                                                              [INFO] [stdout] [n145] TEXT: "\n\n" [INFO] [stdout] [n146]

                                                                                                              [INFO] [stdout] [n147] TEXT: "But when I started out, I didn’t know what worked!" [INFO] [stdout] [n146]

                                                                                                              [INFO] [stdout] [n148] TEXT: "\n\n" [INFO] [stdout] [n149]

                                                                                                              [INFO] [stdout] [n150] TEXT: "So that’s what I’m here to tell you." [INFO] [stdout] [n149]

                                                                                                              [INFO] [stdout] [n151] TEXT: "\n\n" [INFO] [stdout] [n152]

                                                                                                              [INFO] [stdout] [n153] TEXT: "You obviously shouldn’t follow my “current rig” blindly: I’ve assembled it over\nyears, and video stuff is my passion project. I do other work on the side to\nfund it. It’s easier to stomach the end-of-year accounting if you think of it\nthat way." [INFO] [stdout] [n152]

                                                                                                              [INFO] [stdout] [n154] TEXT: "\n\n" [INFO] [stdout] [n155] [INFO] [stdout] [n156]

                                                                                                              [INFO] [stdout] [n157] TEXT: "What I’m going for" [INFO] [stdout] [n156]

                                                                                                              [INFO] [stdout] [n155]
                                                                                                              [INFO] [stdout] [n158] TEXT: "\n" [INFO] [stdout] [n159]

                                                                                                              [INFO] [stdout] [n160] TEXT: "It doesn’t really matter if you’re doing shorter, more frequent videos, that\ncover current event, new releases etc., if you’re going for longer essays, or\nsomething in the middle: you want to keep your workflow as simple as possible." [INFO] [stdout] [n159]

                                                                                                              [INFO] [stdout] [n161] TEXT: "\n\n" [INFO] [stdout] [n162]

                                                                                                              [INFO] [stdout] [n163] TEXT: "If you’re recording for YouTube, chances are, you’re doing everything yourself.\nIt’s not a big production where other people prepare your stuff, you’ll have to\ndo the research, write the script, edit the script, set up the camera, the\nlighting, the mic, do your own wardrobe and make-up (for me that mostly means\nputting on a shirt and doing my best at wrangling facial hair), then later do\ncolor grading, edit, do sound design, title design, etc. etc." [INFO] [stdout] [n162]

                                                                                                              [INFO] [stdout] [n164] TEXT: "\n\n" [INFO] [stdout] [n165]

                                                                                                              [INFO] [stdout] [n166] TEXT: "Making a YouTube video isn’t one job, it’s 15 jobs." [INFO] [stdout] [n165]

                                                                                                              [INFO] [stdout] [n167] TEXT: "\n\n" [INFO] [stdout] [n168]

                                                                                                              [INFO] [stdout] [n169] TEXT: "So unless you have the budget to hire 15 people, you want to keep things as\nstreamlined as possible, and sometimes that means spending money on hardware or\nsoftware that will, in the long run, save you a lot of time. Or simply prevent\nyou from getting so frustrated with the whole thing that you give it up\nentirely." [INFO] [stdout] [n168]

                                                                                                              [INFO] [stdout] [n170] TEXT: "\n\n" [INFO] [stdout] [n171]

                                                                                                              [INFO] [stdout] [n172] TEXT: "So, for example, let’s say you get a nice DSLR or mirrorless camera (the kind of\ncamera you think of if I say “Canon” or “Nikon”? Think wedding photographer),\nmost of those will let you record video directly to an SD card." [INFO] [stdout] [n171]

                                                                                                              [INFO] [stdout] [n173] TEXT: "\n\n" [INFO] [stdout] [n174]

                                                                                                              [INFO] [stdout] [n175] TEXT: "SD cards have fairly good capacity these days: you can get 512 GB ones in the\n100-150EUR price range. Of course, you’ll need to ensure it’s fast enough to\nsupport the bit rate your camera is outputting." [INFO] [stdout] [n174]

                                                                                                              [INFO] [stdout] [n176] TEXT: "\n\n" [INFO] [stdout] [n177]

                                                                                                              [INFO] [stdout] [n178] [INFO] [stdout] [n179] [INFO] [stdout] [n179] [INFO] [stdout] [n180] [INFO] [stdout] [n180] [INFO] [stdout] [n181] [INFO] [stdout] [n181] [INFO] [stdout] [n182] [INFO] [stdout] [n182] [INFO] [stdout] [n183] [INFO] [stdout] [n183] [INFO] [stdout] [n184] [INFO] [stdout] [n184] [INFO] [stdout] [n185] [INFO] [stdout] [n185] [INFO] [stdout] [n186] [INFO] [stdout] [n186] [INFO] [stdout] [n187] [INFO] [stdout] [n187] [INFO] [stdout] [n188] [INFO] [stdout] [n188] [INFO] [stdout] [n178] [INFO] [stdout] [n177]

                                                                                                              [INFO] [stdout] [n189] TEXT: "\n\n" [INFO] [stdout] [n190]

                                                                                                              [INFO] [stdout] [n191] TEXT: "And that can totally work! Get yourself a tripod, and I mean a " [INFO] [stdout] [n192] [INFO] [stdout] [n193] TEXT: "good" [INFO] [stdout] [n192] [INFO] [stdout] [n194] TEXT: " tripod: as\na rule of thumb, never cheap out on stuff that could kill expensive stuff, so no\ncheap tripods, no cheap mic arms, no cheap battery packs, etc." [INFO] [stdout] [n190]

                                                                                                              [INFO] [stdout] [n195] TEXT: "\n\n" [INFO] [stdout] [n196]

                                                                                                              [INFO] [stdout] [n197] TEXT: "Get yourself a tripod, put the camera on there, and you’re good to go!" [INFO] [stdout] [n196]

                                                                                                              [INFO] [stdout] [n198] TEXT: "\n\n" [INFO] [stdout] [n199]

                                                                                                              [INFO] [stdout] [n200] [INFO] [stdout] [n201] [INFO] [stdout] [n201] [INFO] [stdout] [n202] [INFO] [stdout] [n202] [INFO] [stdout] [n203] [INFO] [stdout] [n203] [INFO] [stdout] [n204] [INFO] [stdout] [n204] [INFO] [stdout] [n205] [INFO] [stdout] [n205] [INFO] [stdout] [n206] [INFO] [stdout] [n206] [INFO] [stdout] [n207] [INFO] [stdout] [n207] [INFO] [stdout] [n208] [INFO] [stdout] [n208] [INFO] [stdout] [n209] [INFO] [stdout] [n209] [INFO] [stdout] [n210] [INFO] [stdout] [n210] [INFO] [stdout] [n200] [INFO] [stdout] [n199]

                                                                                                              [INFO] [stdout] [n211] TEXT: "\n\n" [INFO] [stdout] [n212]

                                                                                                              [INFO] [stdout] [n213] TEXT: "Several downsides are immediately apparent with that approach though: for\nstarters, due to some tax rules in some countries (possibly the US?) some\ncameras stop recording after 30 minutes. (If they didn’t, they’d be taxed\ndifferently and cost a " [INFO] [stdout] [n214] [INFO] [stdout] [n215] TEXT: "lot" [INFO] [stdout] [n214] [INFO] [stdout] [n216] TEXT: " more on import. Sorry I can’t be bothered to\nlook it up right now, I’m info-dumping)." [INFO] [stdout] [n212]

                                                                                                              [INFO] [stdout] [n217] TEXT: "\n\n" [INFO] [stdout] [n218]

                                                                                                              [INFO] [stdout] [n219] TEXT: "Ignoring that, the mic is crap. The mic on any given camera exists solely to let\nyou know your audio encoder is working, or, " [INFO] [stdout] [n220] [INFO] [stdout] [n221] TEXT: "I guess" [INFO] [stdout] [n220] [INFO] [stdout] [n222] TEXT: ", for AV sync (but a good\nold-fashioned clap is better. “Auto align audio” functionality in editing\nsoftware never worked for me)." [INFO] [stdout] [n218]

                                                                                                              [INFO] [stdout] [n223] TEXT: "\n\n" [INFO] [stdout] [n224]

                                                                                                              [INFO] [stdout] [n225] TEXT: "But that’s somewhat solvable. You can grab a " [INFO] [stdout] [n226] [INFO] [stdout] [n227] TEXT: "RODE\nVideoMic" [INFO] [stdout] [n226] [INFO] [stdout] [n228] TEXT: " (~280EUR), now\nyour mic isn’t as bad, problem solved." [INFO] [stdout] [n224]

                                                                                                              [INFO] [stdout] [n229] TEXT: "\n\n" [INFO] [stdout] [n230]

                                                                                                              [INFO] [stdout] [n231] [INFO] [stdout] [n232] [INFO] [stdout] [n232] [INFO] [stdout] [n233] [INFO] [stdout] [n233] [INFO] [stdout] [n234] [INFO] [stdout] [n234] [INFO] [stdout] [n235] [INFO] [stdout] [n235] [INFO] [stdout] [n236] [INFO] [stdout] [n236] [INFO] [stdout] [n237] [INFO] [stdout] [n237] [INFO] [stdout] [n238] [INFO] [stdout] [n238] [INFO] [stdout] [n239] [INFO] [stdout] [n239] [INFO] [stdout] [n240] [INFO] [stdout] [n240] [INFO] [stdout] [n241] [INFO] [stdout] [n241] [INFO] [stdout] [n231] [INFO] [stdout] [n230]

                                                                                                              [INFO] [stdout] [n242] TEXT: "\n\n" [INFO] [stdout] [n243]

                                                                                                              [INFO] [stdout] [n244] [INFO] [stdout] [n245] [INFO] [stdout] [n245] [INFO] [stdout] [n246] [INFO] [stdout] [n246] [INFO] [stdout] [n247] [INFO] [stdout] [n247] [INFO] [stdout] [n248] [INFO] [stdout] [n248] [INFO] [stdout] [n249] [INFO] [stdout] [n249] [INFO] [stdout] [n250] [INFO] [stdout] [n250] [INFO] [stdout] [n251] [INFO] [stdout] [n251] [INFO] [stdout] [n252] [INFO] [stdout] [n252] [INFO] [stdout] [n253] [INFO] [stdout] [n253] [INFO] [stdout] [n254] [INFO] [stdout] [n254] [INFO] [stdout] [n244] [INFO] [stdout] [n243]

                                                                                                              [INFO] [stdout] [n255] TEXT: "\n\n" [INFO] [stdout] [n256]

                                                                                                              [INFO] [stdout] [n257] TEXT: "Although… now your mic is powered. So not only do you have to remember to\nactually hit record on your camera before “acting”, you also have to remember\nto turn on your mic." [INFO] [stdout] [n256]

                                                                                                              [INFO] [stdout] [n258] TEXT: "\n\n" [INFO] [stdout] [n259]

                                                                                                              [INFO] [stdout] [n260] TEXT: "And you might be thinking “Amos, I’m not stupid, I can remember two things”. But\nthat’s two of many things that mean redoing a shoot." [INFO] [stdout] [n259]

                                                                                                              [INFO] [stdout] [n261] TEXT: "\n\n" [INFO] [stdout] [n262]

                                                                                                              [INFO] [stdout] [n263] TEXT: "Some cameras have a screen that rotates around, so you can see it from the side\nkind of, but unless you buy a separate monitor, you have no way to check you’re\nactually in frame." [INFO] [stdout] [n262]

                                                                                                              [INFO] [stdout] [n264] TEXT: "\n\n" [INFO] [stdout] [n265]

                                                                                                              [INFO] [stdout] [n266] TEXT: "If you’re doing green screen, and you’re slightly off center, it’s not a huge\nissue: if your keying is good enough, you can just re-center yourself\n(emotionally, too)." [INFO] [stdout] [n265]

                                                                                                              [INFO] [stdout] [n267] TEXT: "\n\n" [INFO] [stdout] [n268]

                                                                                                              [INFO] [stdout] [n269] TEXT: "But yeah, here’s a list of reasons I’ve had to reshoot over the past few years:" [INFO] [stdout] [n268]

                                                                                                              [INFO] [stdout] [n270] TEXT: "\n\n" [INFO] [stdout] [n271]
                                                                                                                [INFO] [stdout] [n272]
                                                                                                              • [INFO] [stdout] [n273] TEXT: "The camera wasn’t on" [INFO] [stdout] [n272]
                                                                                                              • [INFO] [stdout] [n274] TEXT: "\n" [INFO] [stdout] [n275]
                                                                                                              • [INFO] [stdout] [n276] TEXT: "The external mic wasn’t on" [INFO] [stdout] [n275]
                                                                                                              • [INFO] [stdout] [n277] TEXT: "\n" [INFO] [stdout] [n278]
                                                                                                              • [INFO] [stdout] [n279] TEXT: "The external mic was on, but wasn’t being recorded properly" [INFO] [stdout] [n278]
                                                                                                              • [INFO] [stdout] [n280] TEXT: "\n" [INFO] [stdout] [n281]
                                                                                                              • [INFO] [stdout] [n282] TEXT: "The SD card ran out of space (classic!) so the back half of the recording dropped" [INFO] [stdout] [n281]
                                                                                                              • [INFO] [stdout] [n283] TEXT: "\n" [INFO] [stdout] [n284]
                                                                                                              • [INFO] [stdout] [n285] TEXT: "The recording stopped for some other miraculous reason" [INFO] [stdout] [n284]
                                                                                                              • [INFO] [stdout] [n286] TEXT: "\n" [INFO] [stdout] [n287]
                                                                                                              • [INFO] [stdout] [n288] TEXT: "The camera ran out of battery" [INFO] [stdout] [n287]
                                                                                                              • [INFO] [stdout] [n289] TEXT: "\n" [INFO] [stdout] [n290]
                                                                                                              • [INFO] [stdout] [n291] TEXT: "The mic ran out of battery" [INFO] [stdout] [n290]
                                                                                                              • [INFO] [stdout] [n292] TEXT: "\n" [INFO] [stdout] [n293]
                                                                                                              • [INFO] [stdout] [n294] TEXT: "The mic " [INFO] [stdout] [n295] [INFO] [stdout] [n296] TEXT: "receiver" [INFO] [stdout] [n295] [INFO] [stdout] [n297] TEXT: " ran out of battery" [INFO] [stdout] [n293]
                                                                                                              • [INFO] [stdout] [n298] TEXT: "\n" [INFO] [stdout] [n299]
                                                                                                              • [INFO] [stdout] [n300] TEXT: "The audio clipped (more on that latter)" [INFO] [stdout] [n299]
                                                                                                              • [INFO] [stdout] [n301] TEXT: "\n" [INFO] [stdout] [n302]
                                                                                                              • [INFO] [stdout] [n303] TEXT: "I was off frame" [INFO] [stdout] [n302]
                                                                                                              • [INFO] [stdout] [n304] TEXT: "\n" [INFO] [stdout] [n305]
                                                                                                              • [INFO] [stdout] [n306] TEXT: "There was something wrong with my appearance, on a “can’t take your eyes off\nof it” level. Whatever your thoughts on the final product, consider that the\ntakes I threw away were " [INFO] [stdout] [n307] [INFO] [stdout] [n308] TEXT: "worse" [INFO] [stdout] [n307] [INFO] [stdout] [n309] TEXT: "." [INFO] [stdout] [n305]
                                                                                                              • [INFO] [stdout] [n310] TEXT: "\n" [INFO] [stdout] [n311]
                                                                                                              • [INFO] [stdout] [n312] TEXT: "The tablet I use as teleprompter ran out of battery" [INFO] [stdout] [n311]
                                                                                                              • [INFO] [stdout] [n313] TEXT: "\n" [INFO] [stdout] [n314]
                                                                                                              • [INFO] [stdout] [n315] TEXT: "Construction started in the streets" [INFO] [stdout] [n314]
                                                                                                              • [INFO] [stdout] [n316] TEXT: "\n" [INFO] [stdout] [n317]
                                                                                                              • [INFO] [stdout] [n318] TEXT: "Someone is home early" [INFO] [stdout] [n317]
                                                                                                              • [INFO] [stdout] [n319] TEXT: "\n" [INFO] [stdout] [n320]
                                                                                                              • [INFO] [stdout] [n321] TEXT: "Someone will be home late (so I have to cook)" [INFO] [stdout] [n320]
                                                                                                              • [INFO] [stdout] [n322] TEXT: "\n" [INFO] [stdout] [n323]
                                                                                                              • [INFO] [stdout] [n324] TEXT: "A cat is feeling particularly vocal" [INFO] [stdout] [n323]
                                                                                                              • [INFO] [stdout] [n325] TEXT: "\n" [INFO] [stdout] [n326]
                                                                                                              • [INFO] [stdout] [n327] TEXT: "In the middle of shooting, something I said out loud sounded odd, so I took a minute to Google it, and it turns out the second half of the script is based\non a factual error I made during research." [INFO] [stdout] [n326]
                                                                                                              • [INFO] [stdout] [n328] TEXT: "\n" [INFO] [stdout] [n329]
                                                                                                              • [INFO] [stdout] [n330] TEXT: "There’s flickering (more on that later)" [INFO] [stdout] [n329]
                                                                                                              • [INFO] [stdout] [n331] TEXT: "\n" [INFO] [stdout] [n332]
                                                                                                              • [INFO] [stdout] [n333] TEXT: "There’s a background noise (fans, etc.) I didn’t notice and that I " [INFO] [stdout] [n334] [INFO] [stdout] [n335] TEXT: "could" [INFO] [stdout] [n334] [INFO] [stdout] [n336] TEXT: "\nremove, at great cost to the quality of the voice take." [INFO] [stdout] [n332]
                                                                                                              • [INFO] [stdout] [n337] TEXT: "\n" [INFO] [stdout] [n271]
                                                                                                              [INFO] [stdout] [n338] TEXT: "\n" [INFO] [stdout] [n339]

                                                                                                              [INFO] [stdout] [n340] TEXT: "I could go on." [INFO] [stdout] [n339]

                                                                                                              [INFO] [stdout] [n341] TEXT: "\n\n" [INFO] [stdout] [n342]

                                                                                                              [INFO] [stdout] [n343] TEXT: "The name of the game is simple: we’re trying to eliminate " [INFO] [stdout] [n344] [INFO] [stdout] [n345] TEXT: "entire classes of\nproblems" [INFO] [stdout] [n344] [INFO] [stdout] [n346] TEXT: "." [INFO] [stdout] [n342]

                                                                                                              [INFO] [stdout] [n347] TEXT: "\n\n" [INFO] [stdout] [n348]

                                                                                                              [INFO] [stdout] [n349] TEXT: "Batteries run out? Use power adapters. Your camera only takes batteries? No it\ndoesn’t: dummy batteries exist." [INFO] [stdout] [n348]

                                                                                                              [INFO] [stdout] [n350] TEXT: "\n\n" [INFO] [stdout] [n351]

                                                                                                              [INFO] [stdout] [n352] [INFO] [stdout] [n353] [INFO] [stdout] [n353] [INFO] [stdout] [n354] [INFO] [stdout] [n354] [INFO] [stdout] [n355] [INFO] [stdout] [n355] [INFO] [stdout] [n356] [INFO] [stdout] [n356] [INFO] [stdout] [n357] [INFO] [stdout] [n357] [INFO] [stdout] [n358] [INFO] [stdout] [n358] [INFO] [stdout] [n359] [INFO] [stdout] [n359] [INFO] [stdout] [n360] [INFO] [stdout] [n360] [INFO] [stdout] [n361] [INFO] [stdout] [n361] [INFO] [stdout] [n362] [INFO] [stdout] [n362] [INFO] [stdout] [n352] [INFO] [stdout] [n351]

                                                                                                              [INFO] [stdout] [n363] TEXT: "\n\n" [INFO] [stdout] [n364]

                                                                                                              [INFO] [stdout] [n365] TEXT: "They’re battery-shaped blocks with a cable coming out, that goes into a power\nsupply. Just don’t forget to turn off your camera when you’re done." [INFO] [stdout] [n364]

                                                                                                              [INFO] [stdout] [n366] TEXT: "\n\n" [INFO] [stdout] [n367] [INFO] [stdout] [n368]

                                                                                                              [INFO] [stdout] [n369] TEXT: "Microphones & mic arms" [INFO] [stdout] [n368]

                                                                                                              [INFO] [stdout] [n367]
                                                                                                              [INFO] [stdout] [n370] TEXT: "\n" [INFO] [stdout] [n371]

                                                                                                              [INFO] [stdout] [n372] TEXT: "Some shotgun mics like the " [INFO] [stdout] [n373] [INFO] [stdout] [n374] TEXT: "RODE\nNTG4+" [INFO] [stdout] [n373] [INFO] [stdout] [n375] TEXT: ", (~250EUR) (no I’m not\nsponsored by RODE I just dig their stuff) can be powered both by battery (for\nnomad use) or USB-C cable: that’s ideal!" [INFO] [stdout] [n371]

                                                                                                              [INFO] [stdout] [n376] TEXT: "\n\n" [INFO] [stdout] [n377]

                                                                                                              [INFO] [stdout] [n378] [INFO] [stdout] [n379] [INFO] [stdout] [n379] [INFO] [stdout] [n380] [INFO] [stdout] [n380] [INFO] [stdout] [n381] [INFO] [stdout] [n381] [INFO] [stdout] [n382] [INFO] [stdout] [n382] [INFO] [stdout] [n383] [INFO] [stdout] [n383] [INFO] [stdout] [n384] [INFO] [stdout] [n384] [INFO] [stdout] [n385] [INFO] [stdout] [n385] [INFO] [stdout] [n386] [INFO] [stdout] [n386] [INFO] [stdout] [n387] [INFO] [stdout] [n387] [INFO] [stdout] [n388] [INFO] [stdout] [n388] [INFO] [stdout] [n378] [INFO] [stdout] [n377]

                                                                                                              [INFO] [stdout] [n389] TEXT: "\n\n" [INFO] [stdout] [n390]

                                                                                                              [INFO] [stdout] [n391] TEXT: "Some lavalier wireless transmitter/receiver packs like the " [INFO] [stdout] [n392] [INFO] [stdout] [n393] TEXT: "RODE Wireless GO\nII" [INFO] [stdout] [n392] [INFO] [stdout] [n394] TEXT: " are " [INFO] [stdout] [n395] [INFO] [stdout] [n396] TEXT: "very good" [INFO] [stdout] [n395] [INFO] [stdout] [n397] TEXT: "\nwith reporting battery levels, and last hundreds of hours: just charge them\nbefore a shoot, if you run out of batteries, you probably need to recharge\nas a human, too." [INFO] [stdout] [n390]

                                                                                                              [INFO] [stdout] [n398] TEXT: "\n\n" [INFO] [stdout] [n399]

                                                                                                              [INFO] [stdout] [n400] [INFO] [stdout] [n401] [INFO] [stdout] [n401] [INFO] [stdout] [n402] [INFO] [stdout] [n402] [INFO] [stdout] [n403] [INFO] [stdout] [n403] [INFO] [stdout] [n404] [INFO] [stdout] [n404] [INFO] [stdout] [n405] [INFO] [stdout] [n405] [INFO] [stdout] [n406] [INFO] [stdout] [n406] [INFO] [stdout] [n407] [INFO] [stdout] [n407] [INFO] [stdout] [n408] [INFO] [stdout] [n408] [INFO] [stdout] [n409] [INFO] [stdout] [n409] [INFO] [stdout] [n410] [INFO] [stdout] [n410] [INFO] [stdout] [n400] [INFO] [stdout] [n399]

                                                                                                              [INFO] [stdout] [n411] TEXT: "\n\n" [INFO] [stdout] [n412]

                                                                                                              [INFO] [stdout] [n413] TEXT: "(Also, they have backup recordings on the transmitter if the connection drops\nout. I would trust those with my life.)" [INFO] [stdout] [n412]

                                                                                                              [INFO] [stdout] [n414] TEXT: "\n\n" [INFO] [stdout] [n415]

                                                                                                              [INFO] [stdout] [n416] TEXT: "But more to the point: if you’re doing a face cam (the topic of this article\nafter all), why are you even looking at all that? Lav mics are great for the\noutdoors, or noisy environments where you need to get as close as possible to\nthe chest to isolate individual voices from the overall noise (here’s a " [INFO] [stdout] [n417] [INFO] [stdout] [n418] TEXT: "guide\non how to mic up someone btw" [INFO] [stdout] [n417] [INFO] [stdout] [n419] TEXT: "),\nbut pointless if you’re sitting in your home office or garage." [INFO] [stdout] [n415]

                                                                                                              [INFO] [stdout] [n420] TEXT: "\n\n" [INFO] [stdout] [n421]

                                                                                                              [INFO] [stdout] [n422] TEXT: "Similarly, shotgun mics let you aim at a specific area, but they work best in\noutdoor/large spaces: a small room will have tons of reflections unless you\ntreat it properly, which " [INFO] [stdout] [n423] [INFO] [stdout] [n424] TEXT: "will" [INFO] [stdout] [n423] [INFO] [stdout] [n425] TEXT: " make your budget big and round in record time\n(unless you go DIY, I won’t talk about that part much as it’s the one I explored\nthe least)." [INFO] [stdout] [n421]

                                                                                                              [INFO] [stdout] [n426] TEXT: "\n\n" [INFO] [stdout] [n427]

                                                                                                              [INFO] [stdout] [n428] TEXT: "Using the “right kind of hardware” will make a big difference than moving across\nprice ranges, and that is, of course, a lesson I learned after buying the\nmid-range thing for every " [INFO] [stdout] [n429] [INFO] [stdout] [n430] TEXT: "wrong" [INFO] [stdout] [n429] [INFO] [stdout] [n431] TEXT: " kind of hardware." [INFO] [stdout] [n427]

                                                                                                              [INFO] [stdout] [n432] TEXT: "\n\n" [INFO] [stdout] [n433]

                                                                                                              [INFO] [stdout] [n434] TEXT: "For example, I recorded my early videos with a " [INFO] [stdout] [n435] [INFO] [stdout] [n436] TEXT: "RODE\nNT1-A" [INFO] [stdout] [n435] [INFO] [stdout] [n437] TEXT: " (~200EUR). Decent\nmic to slap in a homemade mic booth, but " [INFO] [stdout] [n438] [INFO] [stdout] [n439] TEXT: "terrible" [INFO] [stdout] [n438] [INFO] [stdout] [n440] TEXT: " when your entire room is\nmostly naked hard surfaces (walls, floor, ceiling, desks, screens, etc.). It\n" [INFO] [stdout] [n441] [INFO] [stdout] [n442] TEXT: "will" [INFO] [stdout] [n441] [INFO] [stdout] [n443] TEXT: " capture all the reflections, and let me tell you, that’s a hard one to\nfix in post. There’s de-reverb plug-ins (iZotope RX10 has one) but they\nabsolutely murder the recording." [INFO] [stdout] [n433]

                                                                                                              [INFO] [stdout] [n444] TEXT: "\n\n" [INFO] [stdout] [n445]

                                                                                                              [INFO] [stdout] [n446] TEXT: "Remember: “garbage in, garbage out”. It’s much easier to " [INFO] [stdout] [n447] [INFO] [stdout] [n448] TEXT: "not" [INFO] [stdout] [n447] [INFO] [stdout] [n449] TEXT: " record crap in\nthe first place, than to fix it later." [INFO] [stdout] [n445]

                                                                                                              [INFO] [stdout] [n450] TEXT: "\n\n" [INFO] [stdout] [n451]

                                                                                                              [INFO] [stdout] [n452] TEXT: "I eventually graduated to a " [INFO] [stdout] [n453] [INFO] [stdout] [n454] TEXT: "RODE\nPodMic" [INFO] [stdout] [n453] [INFO] [stdout] [n455] TEXT: " (~100EUR), still with\nXLR to a USB audio interface, half the price but with a “tight cardioid polar\npattern offering superior room noise rejection”. What does this mean? It means\nyou can get away with those naked flat surfaces a lot easier. Should you still\nslap a couch in the room where you record? Probably! YouTubers are not doing\nit for the aesthetic." [INFO] [stdout] [n451]

                                                                                                              [INFO] [stdout] [n456] TEXT: "\n\n" [INFO] [stdout] [n457]

                                                                                                              [INFO] [stdout] [n458] [INFO] [stdout] [n459] [INFO] [stdout] [n459] [INFO] [stdout] [n460] [INFO] [stdout] [n460] [INFO] [stdout] [n461] [INFO] [stdout] [n461] [INFO] [stdout] [n462] [INFO] [stdout] [n462] [INFO] [stdout] [n463] [INFO] [stdout] [n463] [INFO] [stdout] [n464] [INFO] [stdout] [n464] [INFO] [stdout] [n465] [INFO] [stdout] [n465] [INFO] [stdout] [n466] [INFO] [stdout] [n466] [INFO] [stdout] [n467] [INFO] [stdout] [n467] [INFO] [stdout] [n468] [INFO] [stdout] [n468] [INFO] [stdout] [n458] [INFO] [stdout] [n457]

                                                                                                              [INFO] [stdout] [n469] TEXT: "\n\n" [INFO] [stdout] [n470]

                                                                                                              [INFO] [stdout] [n471] TEXT: "I still wasn’t happy with the sound quality I had with the PodMic, and I ended\nup making myself crazy over EQ (equalizer) settings in post, so I finally broke\ndown and got " [INFO] [stdout] [n472] [INFO] [stdout] [n473] TEXT: "the" [INFO] [stdout] [n472] [INFO] [stdout] [n474] TEXT: " YouTuber mic, the " [INFO] [stdout] [n475] [INFO] [stdout] [n476] TEXT: "Shure\nSM7B" [INFO] [stdout] [n475] [INFO] [stdout] [n477] TEXT: "\n(~400EUR), along with a FetHead (which adds “clean gain”), and I used it with\nthe quality USB audio interface I already had." [INFO] [stdout] [n470]

                                                                                                              [INFO] [stdout] [n478] TEXT: "\n\n" [INFO] [stdout] [n479]

                                                                                                              [INFO] [stdout] [n480] [INFO] [stdout] [n481] [INFO] [stdout] [n481] [INFO] [stdout] [n482] [INFO] [stdout] [n482] [INFO] [stdout] [n483] [INFO] [stdout] [n483] [INFO] [stdout] [n484] [INFO] [stdout] [n484] [INFO] [stdout] [n485] [INFO] [stdout] [n485] [INFO] [stdout] [n486] [INFO] [stdout] [n486] [INFO] [stdout] [n487] [INFO] [stdout] [n487] [INFO] [stdout] [n488] [INFO] [stdout] [n488] [INFO] [stdout] [n489] [INFO] [stdout] [n489] [INFO] [stdout] [n490] [INFO] [stdout] [n490] [INFO] [stdout] [n480] [INFO] [stdout] [n479]

                                                                                                              [INFO] [stdout] [n491] TEXT: "\n\n" [INFO] [stdout] [n492]

                                                                                                              [INFO] [stdout] [n493] TEXT: "And you know what? It sounds " [INFO] [stdout] [n494] [INFO] [stdout] [n495] TEXT: "perfect" [INFO] [stdout] [n494] [INFO] [stdout] [n496] TEXT: " out of the box. It’s 4x as expensive as\nthe PodMic, without counting the rest of the audio pipeline you need to make it\nsound proper, but… for the rest of my face-cam-in-home-office life, I will\nnever have to worry about equalizing ever again." [INFO] [stdout] [n492]

                                                                                                              [INFO] [stdout] [n497] TEXT: "\n\n" [INFO] [stdout] [n498]

                                                                                                              [INFO] [stdout] [n499] TEXT: "So, again, it’s not " [INFO] [stdout] [n500] [INFO] [stdout] [n501] TEXT: "just" [INFO] [stdout] [n500] [INFO] [stdout] [n502] TEXT: " a trend that “those stupid YouTubers” follow: and I’m\nsure some folks are using theirs “incorrectly”. It’s just a really solid mic,\nand folks in the trade talk to one another and kinda ended up standardizing on\nit." [INFO] [stdout] [n498]

                                                                                                              [INFO] [stdout] [n503] TEXT: "\n\n" [INFO] [stdout] [n504]

                                                                                                              [INFO] [stdout] [n505] TEXT: "As far as mic arms go, after having a cheap knock-off break " [INFO] [stdout] [n506] [INFO] [stdout] [n507] TEXT: "while I was on\nvacation" [INFO] [stdout] [n506] [INFO] [stdout] [n508] TEXT: ", I went for the " [INFO] [stdout] [n509] [INFO] [stdout] [n510] TEXT: "Rode\nPSA1" [INFO] [stdout] [n509] [INFO] [stdout] [n511] TEXT: " (~90EUR) and haven’t\nlooked back. It clamps on your desk, I had to move it around a bunch of times to\nkeep it off-frame, no issue at all (the metal handle you have to turn is a bit\nharsh on me poor fingers, but ah well)." [INFO] [stdout] [n504]

                                                                                                              [INFO] [stdout] [n512] TEXT: "\n\n" [INFO] [stdout] [n513]

                                                                                                              [INFO] [stdout] [n514] [INFO] [stdout] [n515] [INFO] [stdout] [n515] [INFO] [stdout] [n516] [INFO] [stdout] [n516] [INFO] [stdout] [n517] [INFO] [stdout] [n517] [INFO] [stdout] [n518] [INFO] [stdout] [n518] [INFO] [stdout] [n519] [INFO] [stdout] [n519] [INFO] [stdout] [n520] [INFO] [stdout] [n520] [INFO] [stdout] [n521] [INFO] [stdout] [n521] [INFO] [stdout] [n522] [INFO] [stdout] [n522] [INFO] [stdout] [n523] [INFO] [stdout] [n523] [INFO] [stdout] [n524] [INFO] [stdout] [n524] [INFO] [stdout] [n514] [INFO] [stdout] [n513]

                                                                                                              [INFO] [stdout] [n525] TEXT: "\n\n" [INFO] [stdout] [n526] [INFO] [stdout] [n527]

                                                                                                              [INFO] [stdout] [n528] TEXT: "Audio interfaces & 32-bit floating-point" [INFO] [stdout] [n527]

                                                                                                              [INFO] [stdout] [n526]
                                                                                                              [INFO] [stdout] [n529] TEXT: "\n" [INFO] [stdout] [n530]

                                                                                                              [INFO] [stdout] [n531] TEXT: "If you’re used to microphones in the “voice call” context, you’re using to 3.5mm\njack (aka mini-jack), or bluetooth." [INFO] [stdout] [n530]

                                                                                                              [INFO] [stdout] [n532] TEXT: "\n\n" [INFO] [stdout] [n533]

                                                                                                              [INFO] [stdout] [n534] TEXT: "None of that here. We’re talking either USB directly, or XLR." [INFO] [stdout] [n533]

                                                                                                              [INFO] [stdout] [n535] TEXT: "\n\n" [INFO] [stdout] [n536]

                                                                                                              [INFO] [stdout] [n537] TEXT: "A mic having a built-in USB interface " [INFO] [stdout] [n538] [INFO] [stdout] [n539] TEXT: "could" [INFO] [stdout] [n538] [INFO] [stdout] [n540] TEXT: " be a sign that it’s cheap (in a\nbad way), I’m thinking at Blue Yeti-style mics for example, but these days\nthere’s excellent all-in-one packages, like the " [INFO] [stdout] [n541] [INFO] [stdout] [n542] TEXT: "Rode\nNT1-5" [INFO] [stdout] [n541] [INFO] [stdout] [n543] TEXT: ",\nthat offer XLR (for when it’s one of many mics going into a mixer) " [INFO] [stdout] [n544] [INFO] [stdout] [n545] TEXT: "and" [INFO] [stdout] [n544] [INFO] [stdout] [n546] TEXT: " USB,\nwith a “world-first 32-bit float digital output”." [INFO] [stdout] [n536]

                                                                                                              [INFO] [stdout] [n547] TEXT: "\n\n" [INFO] [stdout] [n548]

                                                                                                              [INFO] [stdout] [n549] TEXT: "What does that mean? That means you never have to worry about clipping ever\nagain." [INFO] [stdout] [n548]

                                                                                                              [INFO] [stdout] [n550] TEXT: "\n\n" [INFO] [stdout] [n551]

                                                                                                              [INFO] [stdout] [n552] TEXT: "When recording audio, you can adjust the “gain” of your mic. If you set it too\nlow, you’ll have to amplify in post, and you’ll amplify any background noise\ncoming from the entire system with it." [INFO] [stdout] [n551]

                                                                                                              [INFO] [stdout] [n553] TEXT: "\n\n" [INFO] [stdout] [n554]

                                                                                                              [INFO] [stdout] [n555] TEXT: "Also, if it’s only using, say, 10% of the amplitude available, then you’re only\nusing 10% of the precision available. For 16-bit integer sampling, instead of\n65K different values, that’s 6K values." [INFO] [stdout] [n554]

                                                                                                              [INFO] [stdout] [n556] TEXT: "\n\n" [INFO] [stdout] [n557]

                                                                                                              [INFO] [stdout] [n558] TEXT: "But if you set the gain " [INFO] [stdout] [n559] [INFO] [stdout] [n560] TEXT: "too high" [INFO] [stdout] [n559] [INFO] [stdout] [n561] TEXT: ", that’s not good either. It only takes one\nplosive (“p”/“b” sounds etc.) or a little enthusiasm to exceed the range of\nvalues it can represent: the amplitude is " [INFO] [stdout] [n562] [INFO] [stdout] [n563] TEXT: "more" [INFO] [stdout] [n562] [INFO] [stdout] [n564] TEXT: " than 65536 (or 2**24 for\n24-bit, etc.) and.. since there’s no way to represent that, it’s “clamped” at\nthe max value, and what should be a nice wave peak is a flat edge instead." [INFO] [stdout] [n557]

                                                                                                              [INFO] [stdout] [n565] TEXT: "\n\n" [INFO] [stdout] [n566]

                                                                                                              [INFO] [stdout] [n567] [INFO] [stdout] [n568] [INFO] [stdout] [n568] [INFO] [stdout] [n569] [INFO] [stdout] [n569] [INFO] [stdout] [n570] [INFO] [stdout] [n570] [INFO] [stdout] [n571] [INFO] [stdout] [n571] [INFO] [stdout] [n572] [INFO] [stdout] [n572] [INFO] [stdout] [n573] [INFO] [stdout] [n573] [INFO] [stdout] [n574] [INFO] [stdout] [n574] [INFO] [stdout] [n575] [INFO] [stdout] [n575] [INFO] [stdout] [n576] [INFO] [stdout] [n576] [INFO] [stdout] [n577] [INFO] [stdout] [n577] [INFO] [stdout] [n567] [INFO] [stdout] [n566]

                                                                                                              [INFO] [stdout] [n578] TEXT: "\n\n" [INFO] [stdout] [n579]

                                                                                                              [INFO] [stdout] [n580] TEXT: "That’s called “clipping”." [INFO] [stdout] [n579]

                                                                                                              [INFO] [stdout] [n581] TEXT: "\n\n" [INFO] [stdout] [n582]

                                                                                                              [INFO] [stdout] [n583] TEXT: "You can’t recover from that. Once that happens in recording, the take is ruined." [INFO] [stdout] [n582]

                                                                                                              [INFO] [stdout] [n584] TEXT: "\n\n" [INFO] [stdout] [n585]

                                                                                                              [INFO] [stdout] [n586] TEXT: "This is why professionals will often have backups: some productions will mic\npeople up with " [INFO] [stdout] [n587] [INFO] [stdout] [n588] TEXT: "two" [INFO] [stdout] [n587] [INFO] [stdout] [n589] TEXT: " lavs, in case one fails." [INFO] [stdout] [n585]

                                                                                                              [INFO] [stdout] [n590] TEXT: "\n\n" [INFO] [stdout] [n591]

                                                                                                              [INFO] [stdout] [n592] TEXT: "Similarly, the " [INFO] [stdout] [n593] [INFO] [stdout] [n594] TEXT: "RODE Wireless GO\nII" [INFO] [stdout] [n593] [INFO] [stdout] [n595] TEXT: " allow recording\nstereo files, where the second channel is the exact same mic, but with\n-8/-12/-20dB gain." [INFO] [stdout] [n591]

                                                                                                              [INFO] [stdout] [n596] TEXT: "\n\n" [INFO] [stdout] [n597]

                                                                                                              [INFO] [stdout] [n598] TEXT: "That way, even if the first channel clips, for that portion of the audio, you\ncan salvage the take by using the second channel. Precision will suffer, but\nit’s much better than the alternative." [INFO] [stdout] [n597]

                                                                                                              [INFO] [stdout] [n599] TEXT: "\n\n" [INFO] [stdout] [n600]

                                                                                                              [INFO] [stdout] [n601] TEXT: "Floating-point sample formats have been around for as long as we’ve been able to\nafford them (we did 8-bit PCM back in the days! I know, I’m the oldest\n33-year-old you know), but mostly as an intermediate representation, as far as I\ncan tell?" [INFO] [stdout] [n600]

                                                                                                              [INFO] [stdout] [n602] TEXT: "\n\n" [INFO] [stdout] [n603]

                                                                                                              [INFO] [stdout] [n604] TEXT: "When producing a track, sometimes plug-ins can make the waveform a bit larger\nthan expected, and sometimes it’s easier to just “scale it back down” to a\nreasonable amplitude before exporting, than to go mess with plug-in settings\nseveral stages earlier in the pipeline." [INFO] [stdout] [n603]

                                                                                                              [INFO] [stdout] [n605] TEXT: "\n\n" [INFO] [stdout] [n606]

                                                                                                              [INFO] [stdout] [n607] TEXT: "However, " [INFO] [stdout] [n608] [INFO] [stdout] [n609] TEXT: "recording" [INFO] [stdout] [n608] [INFO] [stdout] [n610] TEXT: " in 32-bit floating-point audio is relatively new, at least\nas far as “plugging a USB thing into your computer” goes. There’s been portable\nfloat32 recorders for a while, and I’m sure the real pros have their own product\nlines." [INFO] [stdout] [n606]

                                                                                                              [INFO] [stdout] [n611] TEXT: "\n\n" [INFO] [stdout] [n612]

                                                                                                              [INFO] [stdout] [n613] TEXT: "What this means for a mic like the NT1-5, is that " [INFO] [stdout] [n614] [INFO] [stdout] [n615] TEXT: "you cannot mess up your gain\nsetting" [INFO] [stdout] [n614] [INFO] [stdout] [n616] TEXT: ". You can set it to whatever feels good, and if you got it slightly\nwrong in either direction, no big deal." [INFO] [stdout] [n612]

                                                                                                              [INFO] [stdout] [n617] TEXT: "\n\n" [INFO] [stdout] [n618]

                                                                                                              [INFO] [stdout] [n619] TEXT: "An IEEE-754 32-bit floating point has " [INFO] [stdout] [n620] [INFO] [stdout] [n621] TEXT: "a 23-bit\nsignificand" [INFO] [stdout] [n620] [INFO] [stdout] [n622] TEXT: " (which you, like me, may have\nknown as “mantissa”), which is the long way of saying that it’s " [INFO] [stdout] [n623] [INFO] [stdout] [n624] TEXT: "almost as good" [INFO] [stdout] [n623] [INFO] [stdout] [n625] TEXT: "\nas 24-bit integer samples (unless the exponent goes to the extremes, which would\nmake neighbor values very distant), and much better than 16-bit integer samples\nat any rate." [INFO] [stdout] [n618]

                                                                                                              [INFO] [stdout] [n626] TEXT: "\n\n" [INFO] [stdout] [n627]

                                                                                                              [INFO] [stdout] [n628] TEXT: "It also takes up more space, but the storage space for your " [INFO] [stdout] [n629] [INFO] [stdout] [n630] TEXT: "audio tracks" [INFO] [stdout] [n629] [INFO] [stdout] [n631] TEXT: " is\nreally not a concern when you get into video." [INFO] [stdout] [n627]

                                                                                                              [INFO] [stdout] [n632] TEXT: "\n\n" [INFO] [stdout] [n633]

                                                                                                              [INFO] [stdout] [n634] TEXT: "The first USB audio interface I bought specifically for video-making was the\n" [INFO] [stdout] [n635] [INFO] [stdout] [n636] TEXT: "Focusrite Scarlett 2i2 4th Gen" [INFO] [stdout] [n635] [INFO] [stdout] [n637] TEXT: ",\nbecause it’s small, pretty, and also, famously, just good." [INFO] [stdout] [n633]

                                                                                                              [INFO] [stdout] [n638] TEXT: "\n\n" [INFO] [stdout] [n639]

                                                                                                              [INFO] [stdout] [n640] [INFO] [stdout] [n641] [INFO] [stdout] [n641] [INFO] [stdout] [n642] [INFO] [stdout] [n642] [INFO] [stdout] [n643] [INFO] [stdout] [n643] [INFO] [stdout] [n644] [INFO] [stdout] [n644] [INFO] [stdout] [n645] [INFO] [stdout] [n645] [INFO] [stdout] [n646] [INFO] [stdout] [n646] [INFO] [stdout] [n647] [INFO] [stdout] [n647] [INFO] [stdout] [n648] [INFO] [stdout] [n648] [INFO] [stdout] [n649] [INFO] [stdout] [n649] [INFO] [stdout] [n650] [INFO] [stdout] [n650] [INFO] [stdout] [n640] [INFO] [stdout] [n639]

                                                                                                              [INFO] [stdout] [n651] TEXT: "\n\n" [INFO] [stdout] [n652]
                                                                                                              [INFO] [stdout] [n653] TEXT: "\n" [INFO] [stdout] [n654]
                                                                                                              [INFO] [stdout] [n655] TEXT: "\n " [INFO] [stdout] [n656] [INFO] [stdout] [n657] [INFO] [stdout] [n657] [INFO] [stdout] [n658] [INFO] [stdout] [n658] [INFO] [stdout] [n659] [INFO] [stdout] [n659] [INFO] [stdout] [n660] [INFO] [stdout] [n660] [INFO] [stdout] [n661] [INFO] [stdout] [n661] [INFO] [stdout] [n662] [INFO] [stdout] [n662] [INFO] [stdout] [n663] [INFO] [stdout] [n663] [INFO] [stdout] [n664] [INFO] [stdout] [n664] [INFO] [stdout] [n665] [INFO] [stdout] [n665] [INFO] [stdout] [n666] [INFO] [stdout] [n666] [INFO] [stdout] [n656] [INFO] [stdout] [n667] TEXT: "\n" [INFO] [stdout] [n654]
                                                                                                              [INFO] [stdout] [n668] TEXT: "\n" [INFO] [stdout] [n669]
                                                                                                              [INFO] [stdout] [n670] TEXT: "\n" [INFO] [stdout] [n671]

                                                                                                              [INFO] [stdout] [n672] TEXT: "At this point you may wonder: were those past purchases mostly vibes-based?" [INFO] [stdout] [n671]

                                                                                                              [INFO] [stdout] [n673] TEXT: "\n\n" [INFO] [stdout] [n674]

                                                                                                              [INFO] [stdout] [n675] TEXT: "Well, yeah! It’s all trial and error. You can spend days and nights reading\nreviews, you’ll always find reasons " [INFO] [stdout] [n676] [INFO] [stdout] [n677] TEXT: "not" [INFO] [stdout] [n676] [INFO] [stdout] [n678] TEXT: " to buy something. In the end, I\nusually went with someone’s recommendation, which makes me feel better about writing this article." [INFO] [stdout] [n674]

                                                                                                              [INFO] [stdout] [n679] TEXT: "\n\n" [INFO] [stdout] [n669]
                                                                                                              [INFO] [stdout] [n680] TEXT: "\n" [INFO] [stdout] [n652]
                                                                                                              [INFO] [stdout] [n681]

                                                                                                              [INFO] [stdout] [n682] TEXT: "I recently migrated from the Scarlett to a " [INFO] [stdout] [n683] [INFO] [stdout] [n684] TEXT: "Zoom\nUAC-232" [INFO] [stdout] [n683] [INFO] [stdout] [n685] TEXT: "\nspecifically for 32-bit float support, for " [INFO] [stdout] [n686] [INFO] [stdout] [n687] TEXT: "any" [INFO] [stdout] [n686] [INFO] [stdout] [n688] TEXT: " mic that outputs XLR." [INFO] [stdout] [n681]

                                                                                                              [INFO] [stdout] [n689] TEXT: "\n\n" [INFO] [stdout] [n690]

                                                                                                              [INFO] [stdout] [n691] [INFO] [stdout] [n692] [INFO] [stdout] [n692] [INFO] [stdout] [n693] [INFO] [stdout] [n693] [INFO] [stdout] [n694] [INFO] [stdout] [n694] [INFO] [stdout] [n695] [INFO] [stdout] [n695] [INFO] [stdout] [n696] [INFO] [stdout] [n696] [INFO] [stdout] [n697] [INFO] [stdout] [n697] [INFO] [stdout] [n698] [INFO] [stdout] [n698] [INFO] [stdout] [n699] [INFO] [stdout] [n699] [INFO] [stdout] [n700] [INFO] [stdout] [n700] [INFO] [stdout] [n701] [INFO] [stdout] [n701] [INFO] [stdout] [n691] [INFO] [stdout] [n690]

                                                                                                              [INFO] [stdout] [n702] TEXT: "\n\n" [INFO] [stdout] [n703]

                                                                                                              [INFO] [stdout] [n704] TEXT: "The way it works is actually really neat! They “simply” have two ADC\n(analog-digital converters) set to two different input gains, and they switch\ndynamically between the two to get the best low-floor-noise/no-clipping\ncompromise." [INFO] [stdout] [n703]

                                                                                                              [INFO] [stdout] [n705] TEXT: "\n\n" [INFO] [stdout] [n706]

                                                                                                              [INFO] [stdout] [n707] TEXT: "The " [INFO] [stdout] [n708] [INFO] [stdout] [n709] TEXT: "Zoom UAC-232 manual" [INFO] [stdout] [n708] [INFO] [stdout] [n710] TEXT: " goes into\ndetails, should you be curious." [INFO] [stdout] [n706]

                                                                                                              [INFO] [stdout] [n711] TEXT: "\n\n" [INFO] [stdout] [n712]

                                                                                                              [INFO] [stdout] [n713] TEXT: "Note that after buying one of these, you still have to set up all the software\nproperly, otherwise you’re " [INFO] [stdout] [n714] [INFO] [stdout] [n715] TEXT: "still" [INFO] [stdout] [n714] [INFO] [stdout] [n716] TEXT: " not safe from clipping. More on that later." [INFO] [stdout] [n712]

                                                                                                              [INFO] [stdout] [n717] TEXT: "\n\n" [INFO] [stdout] [n718]

                                                                                                              [INFO] [stdout] [n719] TEXT: "As far as “portable setups” go, I got a " [INFO] [stdout] [n720] [INFO] [stdout] [n721] TEXT: "Zoom H4N Pro\nBlack" [INFO] [stdout] [n720] [INFO] [stdout] [n722] TEXT: "\na while ago: I liked the versatility, very good built-in XY microphones, you can plug your lav mic in there, or use one or two of the XLR inputs." [INFO] [stdout] [n718]

                                                                                                              [INFO] [stdout] [n723] TEXT: "\n\n" [INFO] [stdout] [n724]

                                                                                                              [INFO] [stdout] [n725] [INFO] [stdout] [n726] [INFO] [stdout] [n726] [INFO] [stdout] [n727] [INFO] [stdout] [n727] [INFO] [stdout] [n728] [INFO] [stdout] [n728] [INFO] [stdout] [n729] [INFO] [stdout] [n729] [INFO] [stdout] [n730] [INFO] [stdout] [n730] [INFO] [stdout] [n731] [INFO] [stdout] [n731] [INFO] [stdout] [n732] [INFO] [stdout] [n732] [INFO] [stdout] [n733] [INFO] [stdout] [n733] [INFO] [stdout] [n734] [INFO] [stdout] [n734] [INFO] [stdout] [n735] [INFO] [stdout] [n735] [INFO] [stdout] [n725] [INFO] [stdout] [n724]

                                                                                                              [INFO] [stdout] [n736] TEXT: "\n\n" [INFO] [stdout] [n737]

                                                                                                              [INFO] [stdout] [n738] TEXT: "But in practice I use it very little. I can imagine it being very useful for\ninterviewing on-the-go if you don’t have something like the RODE Wireless Go,\nand to record live music sessions and sound effects." [INFO] [stdout] [n737]

                                                                                                              [INFO] [stdout] [n739] TEXT: "\n\n" [INFO] [stdout] [n740]

                                                                                                              [INFO] [stdout] [n741] TEXT: "For usage in a “home office to shoot a face cam” setting though, it’s not what\nyou want. It takes a " [INFO] [stdout] [n742] [INFO] [stdout] [n743] TEXT: "long" [INFO] [stdout] [n742] [INFO] [stdout] [n744] TEXT: " time to boot up, and it’s " [INFO] [stdout] [n745] [INFO] [stdout] [n746] TEXT: "another" [INFO] [stdout] [n745] [INFO] [stdout] [n747] TEXT: " SD card and set\nof batteries to worry about." [INFO] [stdout] [n740]

                                                                                                              [INFO] [stdout] [n748] TEXT: "\n\n" [INFO] [stdout] [n749]

                                                                                                              [INFO] [stdout] [n750] TEXT: "You can use it as a USB audio interface, but at that point you’re tethered, just\nget a regular desktop one. I bought a power cable for it off of Amazon, but I’m\nhonestly too scared to try it, so even with rechargeable AA batteries, it’s a\nhassle to use." [INFO] [stdout] [n749]

                                                                                                              [INFO] [stdout] [n751] TEXT: "\n\n" [INFO] [stdout] [n752]

                                                                                                              [INFO] [stdout] [n753] [INFO] [stdout] [n754] [INFO] [stdout] [n754] [INFO] [stdout] [n755] [INFO] [stdout] [n755] [INFO] [stdout] [n756] [INFO] [stdout] [n756] [INFO] [stdout] [n757] [INFO] [stdout] [n757] [INFO] [stdout] [n758] [INFO] [stdout] [n758] [INFO] [stdout] [n759] [INFO] [stdout] [n759] [INFO] [stdout] [n760] [INFO] [stdout] [n760] [INFO] [stdout] [n761] [INFO] [stdout] [n761] [INFO] [stdout] [n762] [INFO] [stdout] [n762] [INFO] [stdout] [n763] [INFO] [stdout] [n763] [INFO] [stdout] [n753] [INFO] [stdout] [n752]

                                                                                                              [INFO] [stdout] [n764] TEXT: "\n\n" [INFO] [stdout] [n765]

                                                                                                              [INFO] [stdout] [n766] TEXT: "Going around with the H4N’s XY mics and studio headphones plugged in will never\nget old for me though: it’s like listening to the world with a different pair of\nears." [INFO] [stdout] [n765]

                                                                                                              [INFO] [stdout] [n767] TEXT: "\n\n" [INFO] [stdout] [n768]

                                                                                                              [INFO] [stdout] [n769] TEXT: "Re: audio processing, I bought " [INFO] [stdout] [n770] [INFO] [stdout] [n771] TEXT: "iZotope’s RX 10\nStandard" [INFO] [stdout] [n770] [INFO] [stdout] [n772] TEXT: " (439EUR now, I bought it\nwhen it was 33% off in 2022) and use their “Mouth de-click” and “De-plosive”\nplug-ins whenever needed." [INFO] [stdout] [n768]

                                                                                                              [INFO] [stdout] [n773] TEXT: "\n\n" [INFO] [stdout] [n774]

                                                                                                              [INFO] [stdout] [n775] TEXT: "The latter isn’t strictly needed if you take care of mic placement and/or make\njudicious use of a pop filter, but it will save the occasional sound explosion." [INFO] [stdout] [n774]

                                                                                                              [INFO] [stdout] [n776] TEXT: "\n\n" [INFO] [stdout] [n777]

                                                                                                              [INFO] [stdout] [n778] TEXT: "The “Mouth de-click” plug-in is amazing, though. It’s worth the price of the\nentire bundle. Dry mouth is a hard problem to fix: sometimes, no amount of apple\njuice will do, and although I haven’t smoked in 10 months now, however much that\nhas improved my mouth noises has been ruined by a " [INFO] [stdout] [n779] [INFO] [stdout] [n780] TEXT: "second" [INFO] [stdout] [n779] [INFO] [stdout] [n781] TEXT: " 18-month round of\northodontics." [INFO] [stdout] [n777]

                                                                                                              [INFO] [stdout] [n782] TEXT: "\n\n" [INFO] [stdout] [n783]

                                                                                                              [INFO] [stdout] [n784] TEXT: "So. The sound processing will continue until oral health improves." [INFO] [stdout] [n783]

                                                                                                              [INFO] [stdout] [n785] TEXT: "\n\n" [INFO] [stdout] [n786] [INFO] [stdout] [n787]

                                                                                                              [INFO] [stdout] [n788] TEXT: "Studio headphones" [INFO] [stdout] [n787]

                                                                                                              [INFO] [stdout] [n786]
                                                                                                              [INFO] [stdout] [n789] TEXT: "\n" [INFO] [stdout] [n790]

                                                                                                              [INFO] [stdout] [n791] TEXT: "I have the " [INFO] [stdout] [n792] [INFO] [stdout] [n793] TEXT: "250-ohm beyerdynamic DT 770 PRO" [INFO] [stdout] [n792] [INFO] [stdout] [n794] TEXT: ", and I like them." [INFO] [stdout] [n790]

                                                                                                              [INFO] [stdout] [n795] TEXT: "\n\n" [INFO] [stdout] [n796]

                                                                                                              [INFO] [stdout] [n797] [INFO] [stdout] [n798] [INFO] [stdout] [n798] [INFO] [stdout] [n799] [INFO] [stdout] [n799] [INFO] [stdout] [n800] [INFO] [stdout] [n800] [INFO] [stdout] [n801] [INFO] [stdout] [n801] [INFO] [stdout] [n802] [INFO] [stdout] [n802] [INFO] [stdout] [n803] [INFO] [stdout] [n803] [INFO] [stdout] [n804] [INFO] [stdout] [n804] [INFO] [stdout] [n805] [INFO] [stdout] [n805] [INFO] [stdout] [n806] [INFO] [stdout] [n806] [INFO] [stdout] [n807] [INFO] [stdout] [n807] [INFO] [stdout] [n797] [INFO] [stdout] [n796]

                                                                                                              [INFO] [stdout] [n808] TEXT: "\n\n" [INFO] [stdout] [n809]

                                                                                                              [INFO] [stdout] [n810] TEXT: "They’re neutral (important for mixing), comfortable enough to wear for long\nperiods of time (also important), and they came highly recommended by friends\nwho are better at mixing than I am, so that’s enough for me!" [INFO] [stdout] [n809]

                                                                                                              [INFO] [stdout] [n811] TEXT: "\n\n" [INFO] [stdout] [n812]

                                                                                                              [INFO] [stdout] [n813] TEXT: "Before that, I had the classic (vintage?) " [INFO] [stdout] [n814] [INFO] [stdout] [n815] TEXT: "Sennheiser HD-25\n1-II" [INFO] [stdout] [n814] [INFO] [stdout] [n816] TEXT: "." [INFO] [stdout] [n812]

                                                                                                              [INFO] [stdout] [n817] TEXT: "\n\n" [INFO] [stdout] [n818]

                                                                                                              [INFO] [stdout] [n819] [INFO] [stdout] [n820] [INFO] [stdout] [n820] [INFO] [stdout] [n821] [INFO] [stdout] [n821] [INFO] [stdout] [n822] [INFO] [stdout] [n822] [INFO] [stdout] [n823] [INFO] [stdout] [n823] [INFO] [stdout] [n824] [INFO] [stdout] [n824] [INFO] [stdout] [n825] [INFO] [stdout] [n825] [INFO] [stdout] [n826] [INFO] [stdout] [n826] [INFO] [stdout] [n827] [INFO] [stdout] [n827] [INFO] [stdout] [n828] [INFO] [stdout] [n828] [INFO] [stdout] [n829] [INFO] [stdout] [n829] [INFO] [stdout] [n819] [INFO] [stdout] [n818]

                                                                                                              [INFO] [stdout] [n830] TEXT: "\n\n" [INFO] [stdout] [n831]

                                                                                                              [INFO] [stdout] [n832] TEXT: "You could do worse than the HD-25, and I like that almost everything is\nreplaceable (I did replace the ear pads after many years of loyal service), but\nI wouldn’t buy them today unless I was on a very tight budget." [INFO] [stdout] [n831]

                                                                                                              [INFO] [stdout] [n833] TEXT: "\n\n" [INFO] [stdout] [n834]

                                                                                                              [INFO] [stdout] [n835] TEXT: "Before that, I made the mistake of mixing with some Logitech computer speakers:\nthose are not studio speakers, they are extremely biased, what sounds good to\nyou will not sound good to others (and of course, it depends a lot on how the\nroom is set up)." [INFO] [stdout] [n834]

                                                                                                              [INFO] [stdout] [n836] TEXT: "\n\n" [INFO] [stdout] [n837]

                                                                                                              [INFO] [stdout] [n838] TEXT: "In the past, I also mixed with some Sony wireless headphones (WH-1000XM3).\nDon’t. With Bluetooth, some editing software will compensate the delay\n(~200-400ms due to buffering), but only " [INFO] [stdout] [n839] [INFO] [stdout] [n840] TEXT: "some" [INFO] [stdout] [n839] [INFO] [stdout] [n841] TEXT: " time." [INFO] [stdout] [n837]

                                                                                                              [INFO] [stdout] [n842] TEXT: "\n\n" [INFO] [stdout] [n843]

                                                                                                              [INFO] [stdout] [n844] [INFO] [stdout] [n845] [INFO] [stdout] [n845] [INFO] [stdout] [n846] [INFO] [stdout] [n846] [INFO] [stdout] [n847] [INFO] [stdout] [n847] [INFO] [stdout] [n848] [INFO] [stdout] [n848] [INFO] [stdout] [n849] [INFO] [stdout] [n849] [INFO] [stdout] [n850] [INFO] [stdout] [n850] [INFO] [stdout] [n851] [INFO] [stdout] [n851] [INFO] [stdout] [n852] [INFO] [stdout] [n852] [INFO] [stdout] [n853] [INFO] [stdout] [n853] [INFO] [stdout] [n854] [INFO] [stdout] [n854] [INFO] [stdout] [n844] [INFO] [stdout] [n843]

                                                                                                              [INFO] [stdout] [n855] TEXT: "\n\n" [INFO] [stdout] [n856]

                                                                                                              [INFO] [stdout] [n857] TEXT: "I went as far as uploading and publishing a video, and only noticing during the\npremiere (that I watched from a phone or a TV) that the audio and video were out\nof sync." [INFO] [stdout] [n856]

                                                                                                              [INFO] [stdout] [n858] TEXT: "\n\n" [INFO] [stdout] [n859]

                                                                                                              [INFO] [stdout] [n860] TEXT: "The WH-1000XMY family can also be used “plugged”, with mini-jack, but even then,\nthey’re really biased, which isn’t surprised: they’re not " [INFO] [stdout] [n861] [INFO] [stdout] [n862] TEXT: "trying" [INFO] [stdout] [n861] [INFO] [stdout] [n863] TEXT: " to be studio\nheadphones. Their noise-cancelling feature makes taking the subway bearable, but\nthey’re not suitable for mixing work." [INFO] [stdout] [n859]

                                                                                                              [INFO] [stdout] [n864] TEXT: "\n\n" [INFO] [stdout] [n865] [INFO] [stdout] [n866]

                                                                                                              [INFO] [stdout] [n867] TEXT: "Cameras" [INFO] [stdout] [n866]

                                                                                                              [INFO] [stdout] [n865]
                                                                                                              [INFO] [stdout] [n868] TEXT: "\n" [INFO] [stdout] [n869]

                                                                                                              [INFO] [stdout] [n870] TEXT: "When I started out, I had a DSLR lying around: a " [INFO] [stdout] [n871] [INFO] [stdout] [n872] TEXT: "Canon\nEOS-550D" [INFO] [stdout] [n871] [INFO] [stdout] [n873] TEXT: ", which was already old\nat that time (it came out in 2010!)" [INFO] [stdout] [n869]

                                                                                                              [INFO] [stdout] [n874] TEXT: "\n\n" [INFO] [stdout] [n875]

                                                                                                              [INFO] [stdout] [n876] [INFO] [stdout] [n877] [INFO] [stdout] [n877] [INFO] [stdout] [n878] [INFO] [stdout] [n878] [INFO] [stdout] [n879] [INFO] [stdout] [n879] [INFO] [stdout] [n880] [INFO] [stdout] [n880] [INFO] [stdout] [n881] [INFO] [stdout] [n881] [INFO] [stdout] [n882] [INFO] [stdout] [n882] [INFO] [stdout] [n883] [INFO] [stdout] [n883] [INFO] [stdout] [n884] [INFO] [stdout] [n884] [INFO] [stdout] [n885] [INFO] [stdout] [n885] [INFO] [stdout] [n886] [INFO] [stdout] [n886] [INFO] [stdout] [n876] [INFO] [stdout] [n875]

                                                                                                              [INFO] [stdout] [n887] TEXT: "\n\n" [INFO] [stdout] [n888]

                                                                                                              [INFO] [stdout] [n889] [INFO] [stdout] [n890] [INFO] [stdout] [n890] [INFO] [stdout] [n891] [INFO] [stdout] [n891] [INFO] [stdout] [n892] [INFO] [stdout] [n892] [INFO] [stdout] [n893] [INFO] [stdout] [n893] [INFO] [stdout] [n894] [INFO] [stdout] [n894] [INFO] [stdout] [n895] [INFO] [stdout] [n895] [INFO] [stdout] [n896] [INFO] [stdout] [n896] [INFO] [stdout] [n897] [INFO] [stdout] [n897] [INFO] [stdout] [n898] [INFO] [stdout] [n898] [INFO] [stdout] [n899] [INFO] [stdout] [n899] [INFO] [stdout] [n889] [INFO] [stdout] [n888]

                                                                                                              [INFO] [stdout] [n900] TEXT: "\n\n" [INFO] [stdout] [n901]

                                                                                                              [INFO] [stdout] [n902] TEXT: "Although it could record at 1080p@30 (1920x1080 at 30 frames per second) direct\nto SD card, I rapidly looked into switching to a workflow where the camera was\njust a “sensor”, and didn’t take care of any audio processing, video\ncompression, or storage." [INFO] [stdout] [n901]

                                                                                                              [INFO] [stdout] [n903] TEXT: "\n\n" [INFO] [stdout] [n904]

                                                                                                              [INFO] [stdout] [n905] TEXT: "Since I had started out with livestreaming on Twitch, I would’ve loved to just\nset everything up in " [INFO] [stdout] [n906] [INFO] [stdout] [n907] TEXT: "OBS Studio" [INFO] [stdout] [n906] [INFO] [stdout] [n908] TEXT: ", which, for all its\nshortcomings, is still the least worst recording software I’ve used." [INFO] [stdout] [n904]

                                                                                                              [INFO] [stdout] [n909] TEXT: "\n\n" [INFO] [stdout] [n910]

                                                                                                              [INFO] [stdout] [n911] [INFO] [stdout] [n912] [INFO] [stdout] [n912] [INFO] [stdout] [n913] [INFO] [stdout] [n913] [INFO] [stdout] [n914] [INFO] [stdout] [n914] [INFO] [stdout] [n915] [INFO] [stdout] [n915] [INFO] [stdout] [n916] [INFO] [stdout] [n916] [INFO] [stdout] [n917] [INFO] [stdout] [n917] [INFO] [stdout] [n918] [INFO] [stdout] [n918] [INFO] [stdout] [n919] [INFO] [stdout] [n919] [INFO] [stdout] [n920] [INFO] [stdout] [n920] [INFO] [stdout] [n921] [INFO] [stdout] [n921] [INFO] [stdout] [n911] [INFO] [stdout] [n910]

                                                                                                              [INFO] [stdout] [n922] TEXT: "\n\n" [INFO] [stdout] [n923]

                                                                                                              [INFO] [stdout] [n924] TEXT: "So, naturally, I looked into webcams. I thought, maybe I just had shitty webcams\nall this time? Laptop webcams are crap, that’s a given: even the ones on\nMacBook Pro laptops are frankly insulting. And if you pay less than 50EUR for a\nUSB camera well, you get what you " [INFO] [stdout] [n925] [INFO] [stdout] [n926] TEXT: "didn’t" [INFO] [stdout] [n925] [INFO] [stdout] [n927] TEXT: " pay for." [INFO] [stdout] [n923]

                                                                                                              [INFO] [stdout] [n928] TEXT: "\n\n" [INFO] [stdout] [n929]

                                                                                                              [INFO] [stdout] [n930] TEXT: "But it turns out, even if you throw 200EUR at a " [INFO] [stdout] [n931] [INFO] [stdout] [n932] TEXT: "Logitech\nBRIO" [INFO] [stdout] [n931] [INFO] [stdout] [n933] TEXT: "\nfor example, that touts “4K” and “HDR” support, it’s still pretty bad!" [INFO] [stdout] [n929]

                                                                                                              [INFO] [stdout] [n934] TEXT: "\n\n" [INFO] [stdout] [n935]

                                                                                                              [INFO] [stdout] [n936] [INFO] [stdout] [n937] [INFO] [stdout] [n937] [INFO] [stdout] [n938] [INFO] [stdout] [n938] [INFO] [stdout] [n939] [INFO] [stdout] [n939] [INFO] [stdout] [n940] [INFO] [stdout] [n940] [INFO] [stdout] [n941] [INFO] [stdout] [n941] [INFO] [stdout] [n942] [INFO] [stdout] [n942] [INFO] [stdout] [n943] [INFO] [stdout] [n943] [INFO] [stdout] [n944] [INFO] [stdout] [n944] [INFO] [stdout] [n945] [INFO] [stdout] [n945] [INFO] [stdout] [n946] [INFO] [stdout] [n946] [INFO] [stdout] [n936] [INFO] [stdout] [n935]

                                                                                                              [INFO] [stdout] [n947] TEXT: "\n\n" [INFO] [stdout] [n948]

                                                                                                              [INFO] [stdout] [n949] TEXT: "Sure, because it has such a tiny lens and sensor, you’re never going to get the\nnice depth of field effect you could get on a “real” camera, but at some point,\nI realized the limiting factor was simply the video format / USB connection." [INFO] [stdout] [n948]

                                                                                                              [INFO] [stdout] [n950] TEXT: "\n\n" [INFO] [stdout] [n951]

                                                                                                              [INFO] [stdout] [n952] TEXT: "I was wondering how it was able to transfer 4K images at 30FPS over USB 2.0. I\nwill surely come to regret this back-of-the-envelope calculation, but: it seems\nUSB 2.0 has an effective throughput of around 35 MB/s. Assuming RGBX8888 (8 bit\nper red/green/blue channel, the fourth value is just zero, for alignment’s\nsake), " [INFO] [stdout] [n953] [INFO] [stdout] [n954] TEXT: "one" [INFO] [stdout] [n953] [INFO] [stdout] [n955] TEXT: " 3840x2160 image is around 32 MB." [INFO] [stdout] [n951]

                                                                                                              [INFO] [stdout] [n956] TEXT: "\n\n" [INFO] [stdout] [n957]

                                                                                                              [INFO] [stdout] [n958] TEXT: "You can fit one of them per second, but certainly not 30. And I checked, it’s\nnot like the camera unlocks different output formats when plugged on a USB\n3.0-capable port." [INFO] [stdout] [n957]

                                                                                                              [INFO] [stdout] [n959] TEXT: "\n\n" [INFO] [stdout] [n960]

                                                                                                              [INFO] [stdout] [n961] TEXT: "So, what do they do? H.264? Well, they " [INFO] [stdout] [n962] [INFO] [stdout] [n963] TEXT: "used\nto" [INFO] [stdout] [n962] [INFO] [stdout] [n964] TEXT: ",\nas part of a partnership with Skype, so you could do 1080p video calls on your\nshitty $300 laptop." [INFO] [stdout] [n960]

                                                                                                              [INFO] [stdout] [n965] TEXT: "\n\n" [INFO] [stdout] [n966]

                                                                                                              [INFO] [stdout] [n967] TEXT: "But they no longer do, and now if you add a Logitech Brio as an input to OBS,\nyou’ll see the video format is… MJPEG!" [INFO] [stdout] [n966]

                                                                                                              [INFO] [stdout] [n968] TEXT: "\n\n" [INFO] [stdout] [n969]

                                                                                                              [INFO] [stdout] [n970] TEXT: "I’ve included some comparative webcam footage in " [INFO] [stdout] [n971] [INFO] [stdout] [n972] TEXT: "This is a video about\nvideo" [INFO] [stdout] [n971] [INFO] [stdout] [n973] TEXT: ", and you can see that, even with the\npricey one, the JPEG artifacts are just… bad. Which I guess you wouldn’t\nnotice on your 8th Zoom call of the day, but in this house, we’re making " [INFO] [stdout] [n974] [INFO] [stdout] [n975] TEXT: "art" [INFO] [stdout] [n974] [INFO] [stdout] [n976] TEXT: "." [INFO] [stdout] [n969]

                                                                                                              [INFO] [stdout] [n977] TEXT: "\n\n" [INFO] [stdout] [n978]

                                                                                                              [INFO] [stdout] [n979] [INFO] [stdout] [n980] [INFO] [stdout] [n980] [INFO] [stdout] [n981] [INFO] [stdout] [n981] [INFO] [stdout] [n982] [INFO] [stdout] [n982] [INFO] [stdout] [n983] [INFO] [stdout] [n983] [INFO] [stdout] [n984] [INFO] [stdout] [n984] [INFO] [stdout] [n985] [INFO] [stdout] [n985] [INFO] [stdout] [n986] [INFO] [stdout] [n986] [INFO] [stdout] [n987] [INFO] [stdout] [n987] [INFO] [stdout] [n988] [INFO] [stdout] [n988] [INFO] [stdout] [n989] [INFO] [stdout] [n989] [INFO] [stdout] [n979] [INFO] [stdout] [n978]

                                                                                                              [INFO] [stdout] [n990] TEXT: "\n\n" [INFO] [stdout] [n991]

                                                                                                              [INFO] [stdout] [n992] TEXT: "So, alright, proper camera it is. I got the " [INFO] [stdout] [n993] [INFO] [stdout] [n994] TEXT: "Panasonic Lumix\nGH5M" [INFO] [stdout] [n993] [INFO] [stdout] [n995] TEXT: " (1300 EUR at the time)." [INFO] [stdout] [n991]

                                                                                                              [INFO] [stdout] [n996] TEXT: "\n\n" [INFO] [stdout] [n997]

                                                                                                              [INFO] [stdout] [n998] TEXT: "My criteria was: I want 4K60 support (3840x2160 at 60 frames per second), and I\nwant “clean HDMI output”." [INFO] [stdout] [n997]

                                                                                                              [INFO] [stdout] [n999] TEXT: "\n\n" [INFO] [stdout] [n1000]

                                                                                                              [INFO] [stdout] [n1001] TEXT: "Why clean HDMI output? Because I’m only using the camera for its.. well, its\nlens, sensor and image processing pipeline, but then I don’t want to mess with\npopping SD cards in and out, painstakingly copying files to the computer, etc." [INFO] [stdout] [n1000]

                                                                                                              [INFO] [stdout] [n1002] TEXT: "\n\n" [INFO] [stdout] [n1003]

                                                                                                              [INFO] [stdout] [n1004] TEXT: "Some cameras have a “webcam mode” over USB, but it has the same limitations as\nUSB webcams: the max resolution and frame rate are a far cry from what the\ncamera is capable of." [INFO] [stdout] [n1003]

                                                                                                              [INFO] [stdout] [n1005] TEXT: "\n\n" [INFO] [stdout] [n1006] [INFO] [stdout] [n1007]

                                                                                                              [INFO] [stdout] [n1008] TEXT: "HDMI capture cards" [INFO] [stdout] [n1007]

                                                                                                              [INFO] [stdout] [n1006]
                                                                                                              [INFO] [stdout] [n1009] TEXT: "\n" [INFO] [stdout] [n1010]

                                                                                                              [INFO] [stdout] [n1011] TEXT: "Since I wanted 4K60, I let myself be swayed by Elgato’s siren song. They " [INFO] [stdout] [n1012] [INFO] [stdout] [n1013] TEXT: "do" [INFO] [stdout] [n1012] [INFO] [stdout] [n1014] TEXT: "\nmake some good stuff, we’ll come back to that. And honestly, the " [INFO] [stdout] [n1015] [INFO] [stdout] [n1016] TEXT: "Elgato 4K60\nPro MK.2" [INFO] [stdout] [n1015] [INFO] [stdout] [n1017] TEXT: " (~250EUR) card\nlooks great, and when it works, it works as advertised." [INFO] [stdout] [n1010]

                                                                                                              [INFO] [stdout] [n1018] TEXT: "\n\n" [INFO] [stdout] [n1019]

                                                                                                              [INFO] [stdout] [n1020] [INFO] [stdout] [n1021] [INFO] [stdout] [n1021] [INFO] [stdout] [n1022] [INFO] [stdout] [n1022] [INFO] [stdout] [n1023] [INFO] [stdout] [n1023] [INFO] [stdout] [n1024] [INFO] [stdout] [n1024] [INFO] [stdout] [n1025] [INFO] [stdout] [n1025] [INFO] [stdout] [n1026] [INFO] [stdout] [n1026] [INFO] [stdout] [n1027] [INFO] [stdout] [n1027] [INFO] [stdout] [n1028] [INFO] [stdout] [n1028] [INFO] [stdout] [n1029] [INFO] [stdout] [n1029] [INFO] [stdout] [n1030] [INFO] [stdout] [n1030] [INFO] [stdout] [n1020] [INFO] [stdout] [n1019]

                                                                                                              [INFO] [stdout] [n1031] TEXT: "\n\n" [INFO] [stdout] [n1032]

                                                                                                              [INFO] [stdout] [n1033] TEXT: "It needs a PCI-e 4x lane: after my graphics card, I only have one of those left,\nso I can’t set up a second capture card on there. It has one HDMI in and one\nHDMI out: I’ve never used the latter." [INFO] [stdout] [n1032]

                                                                                                              [INFO] [stdout] [n1034] TEXT: "\n\n" [INFO] [stdout] [n1035]

                                                                                                              [INFO] [stdout] [n1036] [INFO] [stdout] [n1037] [INFO] [stdout] [n1037] [INFO] [stdout] [n1038] [INFO] [stdout] [n1038] [INFO] [stdout] [n1039] [INFO] [stdout] [n1039] [INFO] [stdout] [n1040] [INFO] [stdout] [n1040] [INFO] [stdout] [n1041] [INFO] [stdout] [n1041] [INFO] [stdout] [n1042] [INFO] [stdout] [n1042] [INFO] [stdout] [n1043] [INFO] [stdout] [n1043] [INFO] [stdout] [n1044] [INFO] [stdout] [n1044] [INFO] [stdout] [n1045] [INFO] [stdout] [n1045] [INFO] [stdout] [n1046] [INFO] [stdout] [n1046] [INFO] [stdout] [n1036] [INFO] [stdout] [n1035]

                                                                                                              [INFO] [stdout] [n1047] TEXT: "\n\n" [INFO] [stdout] [n1048]

                                                                                                              [INFO] [stdout] [n1049] TEXT: "I’ve had multiple “no signal” problems that were usually solved by turning\nvarious parts of my setup on and off again, or going off to make coffee. Not\ngreat, but, once it started working, it didn’t stop working." [INFO] [stdout] [n1048]

                                                                                                              [INFO] [stdout] [n1050] TEXT: "\n\n" [INFO] [stdout] [n1051]

                                                                                                              [INFO] [stdout] [n1052] TEXT: "The one thing that made it " [INFO] [stdout] [n1053] [INFO] [stdout] [n1054] TEXT: "really annoying" [INFO] [stdout] [n1053] [INFO] [stdout] [n1055] TEXT: " to use the Elgato 4K60 Pro MK.2 for\nme was that I couldn’t quite use it in OBS for full-resolution recording. It\njust kept dropping frames for some reason?" [INFO] [stdout] [n1051]

                                                                                                              [INFO] [stdout] [n1056] TEXT: "\n\n" [INFO] [stdout] [n1057]

                                                                                                              [INFO] [stdout] [n1058] TEXT: "It had been a while since I tried, so I thought maybe I was holding it wrong,\nbut checking the comments on " [INFO] [stdout] [n1059] [INFO] [stdout] [n1060] TEXT: "one of their\nguides" [INFO] [stdout] [n1059] [INFO] [stdout] [n1061] TEXT: " reassured me that it’s\nstill a problem for people today." [INFO] [stdout] [n1057]

                                                                                                              [INFO] [stdout] [n1062] TEXT: "\n\n" [INFO] [stdout] [n1063]

                                                                                                              [INFO] [stdout] [n1064] TEXT: "So, for the past few years, I’ve been using their own recording tool, the\n" [INFO] [stdout] [n1065] [INFO] [stdout] [n1066] TEXT: "Elgato 4K Capture Utility" [INFO] [stdout] [n1065] [INFO] [stdout] [n1067] TEXT: "." [INFO] [stdout] [n1063]

                                                                                                              [INFO] [stdout] [n1068] TEXT: "\n\n" [INFO] [stdout] [n1069]

                                                                                                              [INFO] [stdout] [n1070] [INFO] [stdout] [n1071] [INFO] [stdout] [n1071] [INFO] [stdout] [n1072] [INFO] [stdout] [n1072] [INFO] [stdout] [n1073] [INFO] [stdout] [n1073] [INFO] [stdout] [n1074] [INFO] [stdout] [n1074] [INFO] [stdout] [n1075] [INFO] [stdout] [n1075] [INFO] [stdout] [n1076] [INFO] [stdout] [n1076] [INFO] [stdout] [n1077] [INFO] [stdout] [n1077] [INFO] [stdout] [n1078] [INFO] [stdout] [n1078] [INFO] [stdout] [n1079] [INFO] [stdout] [n1079] [INFO] [stdout] [n1080] [INFO] [stdout] [n1080] [INFO] [stdout] [n1070] [INFO] [stdout] [n1069]

                                                                                                              [INFO] [stdout] [n1081] TEXT: "\n\n" [INFO] [stdout] [n1082]

                                                                                                              [INFO] [stdout] [n1083] TEXT: "I was happy enough with the quality, after cranking the bit rate all the way up\nto 140 Mbps (it doesn’t go any higher). Why such a high bit rate?" [INFO] [stdout] [n1082]

                                                                                                              [INFO] [stdout] [n1084] TEXT: "\n\n" [INFO] [stdout] [n1085]

                                                                                                              [INFO] [stdout] [n1086] [INFO] [stdout] [n1087] [INFO] [stdout] [n1087] [INFO] [stdout] [n1088] [INFO] [stdout] [n1088] [INFO] [stdout] [n1089] [INFO] [stdout] [n1089] [INFO] [stdout] [n1090] [INFO] [stdout] [n1090] [INFO] [stdout] [n1091] [INFO] [stdout] [n1091] [INFO] [stdout] [n1092] [INFO] [stdout] [n1092] [INFO] [stdout] [n1093] [INFO] [stdout] [n1093] [INFO] [stdout] [n1094] [INFO] [stdout] [n1094] [INFO] [stdout] [n1095] [INFO] [stdout] [n1095] [INFO] [stdout] [n1096] [INFO] [stdout] [n1096] [INFO] [stdout] [n1086] [INFO] [stdout] [n1085]

                                                                                                              [INFO] [stdout] [n1097] TEXT: "\n\n" [INFO] [stdout] [n1098]

                                                                                                              [INFO] [stdout] [n1099] TEXT: "Because when you’re doing green screen, and you’re not lighting your scene\nproperly (in real life), the green tones end up being lit unevenly " [INFO] [stdout] [n1100] [INFO] [stdout] [n1101] TEXT: "and" [INFO] [stdout] [n1100] [INFO] [stdout] [n1102] TEXT: " falling\nin the sort of “darker ranges” that get bit-crushed when encoding to H.264." [INFO] [stdout] [n1098]

                                                                                                              [INFO] [stdout] [n1103] TEXT: "\n\n" [INFO] [stdout] [n1104]

                                                                                                              [INFO] [stdout] [n1105] TEXT: "Video codecs are like image codecs with motion smarts added on top: they try to\nspend their bits wisely, where human eyes and minds will notice them. We don’t\nusually pay attention to the darker parts of a scene, the shadows, and so it\nsimply has “fewer shades” there, resulting in banding-like artifacts that are\nnoticeable when you look closely or post-process the image." [INFO] [stdout] [n1104]

                                                                                                              [INFO] [stdout] [n1106] TEXT: "\n\n" [INFO] [stdout] [n1107]

                                                                                                              [INFO] [stdout] [n1108] TEXT: "Much like for audio, it’s often desirable to capture in higher fidelity than\nyour final render target: I did try recording in 10-bit to have a little more to\nwork with, but nothing could save me from having to buy some proper freaking\nlights." [INFO] [stdout] [n1107]

                                                                                                              [INFO] [stdout] [n1109] TEXT: "\n\n" [INFO] [stdout] [n1110]

                                                                                                              [INFO] [stdout] [n1111] TEXT: "Plus, 10-bit color comes with its own pantry full of worm-cans. 10-bit is often\ninterchangeably with “HDR”, except it’s very far from being that simple. There’s\nalso 12-bit, some 10-bit displays are " [INFO] [stdout] [n1112] [INFO] [stdout] [n1113] TEXT: "actually" [INFO] [stdout] [n1112] [INFO] [stdout] [n1114] TEXT: " 8-bit but “changing values\nrapidly”, “HDR 400” is a lie but “DisplayHDR 400” isn’t, “HDR 10/10+” are\nconfusing, Dolby Vision is fully proprietary…" [INFO] [stdout] [n1110]

                                                                                                              [INFO] [stdout] [n1115] TEXT: "\n\n" [INFO] [stdout] [n1116]

                                                                                                              [INFO] [stdout] [n1117] TEXT: "“HDR” is the reason I bought an iPhone in the first place! (And then a proper\nTV). I researched it a bunch and started writing a whole script, even tried\nreleasing a couple videos with it (like " [INFO] [stdout] [n1118] [INFO] [stdout] [n1119] TEXT: "this health\nupdate" [INFO] [stdout] [n1118] [INFO] [stdout] [n1120] TEXT: "). But as the rabbit hold\ngot deeper, I… well, you haven’t seen any of it yet. But it’s on the back of\nmy mind." [INFO] [stdout] [n1116]

                                                                                                              [INFO] [stdout] [n1121] TEXT: "\n\n" [INFO] [stdout] [n1122]

                                                                                                              [INFO] [stdout] [n1123] TEXT: "Notably, one thing about HDR is that it’s not " [INFO] [stdout] [n1124] [INFO] [stdout] [n1125] TEXT: "just" [INFO] [stdout] [n1124] [INFO] [stdout] [n1126] TEXT: " about having “more shades\nof colors”. Even in 8-bit, once you’re going through formats like H.264 (AVC for\nthe pedants), chances are you’re doing " [INFO] [stdout] [n1127] [INFO] [stdout] [n1128] TEXT: "chroma\nsubsampling" [INFO] [stdout] [n1127] [INFO] [stdout] [n1129] TEXT: " anyway." [INFO] [stdout] [n1122]

                                                                                                              [INFO] [stdout] [n1130] TEXT: "\n\n" [INFO] [stdout] [n1131]

                                                                                                              [INFO] [stdout] [n1132] TEXT: "Only 4:4:4 (e.g. I444) is “non-subsampled”, and " [INFO] [stdout] [n1133] [INFO] [stdout] [n1134] TEXT: "nobody" [INFO] [stdout] [n1133] [INFO] [stdout] [n1135] TEXT: " does that. You can\ntechnically tell OBS to do that, and it might be a good idea when recording\nscreen capture, but once you upload it to YouTube, it " [INFO] [stdout] [n1136] [INFO] [stdout] [n1137] TEXT: "will" [INFO] [stdout] [n1136] [INFO] [stdout] [n1138] TEXT: " be served as\nYUV420P, which is 4:2:0, where you have a luminance (“grayscale”) sample for\nevery pixel, but only one chrominance (“color”) sample per every " [INFO] [stdout] [n1139] [INFO] [stdout] [n1140] TEXT: "four" [INFO] [stdout] [n1139] [INFO] [stdout] [n1141] TEXT: " pixels." [INFO] [stdout] [n1131]

                                                                                                              [INFO] [stdout] [n1142] TEXT: "\n\n" [INFO] [stdout] [n1143]

                                                                                                              [INFO] [stdout] [n1144] [INFO] [stdout] [n1144] [INFO] [stdout] [n1143]

                                                                                                              [INFO] [stdout] [n1145] TEXT: "\n\n" [INFO] [stdout] [n1146]

                                                                                                              [INFO] [stdout] [n1147] TEXT: "(Image credit: " [INFO] [stdout] [n1148] [INFO] [stdout] [n1149] TEXT: "Stevo-88 on Wikimedia commons" [INFO] [stdout] [n1148] [INFO] [stdout] [n1150] TEXT: ")" [INFO] [stdout] [n1146]

                                                                                                              [INFO] [stdout] [n1151] TEXT: "\n\n" [INFO] [stdout] [n1152]

                                                                                                              [INFO] [stdout] [n1153] TEXT: "Back when I did a survey of HTML5 video support in web browsers (not documented\nanywhere, sadly), I " [INFO] [stdout] [n1154] [INFO] [stdout] [n1155] TEXT: "think" [INFO] [stdout] [n1154] [INFO] [stdout] [n1156] TEXT: " only Firefox on Windows 10 was able to play back\n4:4:4 video properly." [INFO] [stdout] [n1152]

                                                                                                              [INFO] [stdout] [n1157] TEXT: "\n\n" [INFO] [stdout] [n1158]

                                                                                                              [INFO] [stdout] [n1159] TEXT: "It’s just one of those things you can’t unlearn to see: just like how different\nthe blacks look on an OLED screen vs an affordable LED one." [INFO] [stdout] [n1158]

                                                                                                              [INFO] [stdout] [n1160] TEXT: "\n\n" [INFO] [stdout] [n1161]

                                                                                                              [INFO] [stdout] [n1162] TEXT: "Anyway, I gave up on HDR fairly quick because, as I said, it’s not " [INFO] [stdout] [n1163] [INFO] [stdout] [n1164] TEXT: "just" [INFO] [stdout] [n1163] [INFO] [stdout] [n1165] TEXT: " more\nshades, it’s also different colorspaces (" [INFO] [stdout] [n1166] [INFO] [stdout] [n1167] TEXT: "Rec.2020" [INFO] [stdout] [n1166] [INFO] [stdout] [n1168] TEXT: " vs " [INFO] [stdout] [n1169] [INFO] [stdout] [n1170] TEXT: "Rec.709" [INFO] [stdout] [n1169] [INFO] [stdout] [n1171] TEXT: " for HD SDR content,\nand let’s not talk about SD content)." [INFO] [stdout] [n1161]

                                                                                                              [INFO] [stdout] [n1172] TEXT: "\n\n" [INFO] [stdout] [n1173]
                                                                                                              [INFO] [stdout] [n1174] TEXT: "\n" [INFO] [stdout] [n1175]
                                                                                                              [INFO] [stdout] [n1176] TEXT: "\n" [INFO] [stdout] [n1177] [INFO] [stdout] [n1178] [INFO] [stdout] [n1178] [INFO] [stdout] [n1179] [INFO] [stdout] [n1179] [INFO] [stdout] [n1180] [INFO] [stdout] [n1180] [INFO] [stdout] [n1181] [INFO] [stdout] [n1181] [INFO] [stdout] [n1182] [INFO] [stdout] [n1182] [INFO] [stdout] [n1183] [INFO] [stdout] [n1183] [INFO] [stdout] [n1184] [INFO] [stdout] [n1184] [INFO] [stdout] [n1185] [INFO] [stdout] [n1185] [INFO] [stdout] [n1186] [INFO] [stdout] [n1186] [INFO] [stdout] [n1187] [INFO] [stdout] [n1187] [INFO] [stdout] [n1177] [INFO] [stdout] [n1188] TEXT: "\nCool Bear's hot tip\n" [INFO] [stdout] [n1175]
                                                                                                              [INFO] [stdout] [n1189] TEXT: "\n" [INFO] [stdout] [n1190]

                                                                                                              [INFO] [stdout] [n1191] TEXT: "In this context:" [INFO] [stdout] [n1190]

                                                                                                              [INFO] [stdout] [n1192] TEXT: "\n\n" [INFO] [stdout] [n1193]
                                                                                                                [INFO] [stdout] [n1194]
                                                                                                              • [INFO] [stdout] [n1195] TEXT: "HD = “high definition”" [INFO] [stdout] [n1194]
                                                                                                              • [INFO] [stdout] [n1196] TEXT: "\n" [INFO] [stdout] [n1197]
                                                                                                              • [INFO] [stdout] [n1198] TEXT: "SD = “standard definition”" [INFO] [stdout] [n1197]
                                                                                                              • [INFO] [stdout] [n1199] TEXT: "\n" [INFO] [stdout] [n1200]
                                                                                                              • [INFO] [stdout] [n1201] TEXT: "HDR = “high dynamic range”" [INFO] [stdout] [n1200]
                                                                                                              • [INFO] [stdout] [n1202] TEXT: "\n" [INFO] [stdout] [n1203]
                                                                                                              • [INFO] [stdout] [n1204] TEXT: "SDR = “standard dynamic range”" [INFO] [stdout] [n1203]
                                                                                                              • [INFO] [stdout] [n1205] TEXT: "\n" [INFO] [stdout] [n1193]
                                                                                                              [INFO] [stdout] [n1206] TEXT: "\n" [INFO] [stdout] [n1173]
                                                                                                              [INFO] [stdout] [n1207]

                                                                                                              [INFO] [stdout] [n1208] TEXT: "And it’s also different brightness standards: the brightest white on a properly\ncalibrated HDR400 display isn’t “whatever I guess”, it’s 400 nits. On other,\nbetter displays, it’s 1000 nits." [INFO] [stdout] [n1207]

                                                                                                              [INFO] [stdout] [n1209] TEXT: "\n\n" [INFO] [stdout] [n1210]

                                                                                                              [INFO] [stdout] [n1211] TEXT: "My editing software shows me values of up to 4000 nits for Dolby Vision\n“Mastering displays”, and therein lies the problem: if you want to master HDR\nvideo, you need a display that costs an absolutely revolting amount of money." [INFO] [stdout] [n1210]

                                                                                                              [INFO] [stdout] [n1212] TEXT: "\n\n" [INFO] [stdout] [n1213]

                                                                                                              [INFO] [stdout] [n1214] TEXT: "Even if you do everything right, ideally you’d do a " [INFO] [stdout] [n1215] [INFO] [stdout] [n1216] TEXT: "separate" [INFO] [stdout] [n1215] [INFO] [stdout] [n1217] TEXT: " master for SDR\n(since most people do " [INFO] [stdout] [n1218] [INFO] [stdout] [n1219] TEXT: "not" [INFO] [stdout] [n1218] [INFO] [stdout] [n1220] TEXT: " have a good HDR display, or an HDR display at all,\nI try not to think of everyone watching on a shitty Dell Laptop), but YouTube\ndoesn’t let you do that. It barely achieves HDR playback anywhere, and certainly\nnot with consistent results, as others have " [INFO] [stdout] [n1221] [INFO] [stdout] [n1222] TEXT: "documented extensively before me" [INFO] [stdout] [n1221] [INFO] [stdout] [n1223] TEXT: "." [INFO] [stdout] [n1213]

                                                                                                              [INFO] [stdout] [n1224] TEXT: "\n\n" [INFO] [stdout] [n1225]

                                                                                                              [INFO] [stdout] [n1226] TEXT: "I might go back to 10-bit at some point, but only as a capture format: my target\nwill be SDR for the foreseeable future, unless the landscape changes significantly. The reason I " [INFO] [stdout] [n1227] [INFO] [stdout] [n1228] TEXT: "haven’t" [INFO] [stdout] [n1227] [INFO] [stdout] [n1229] TEXT: " been using 10-bit as a capture format\nis because… my Elgato capture card simply refused to work when I set my camera\nto 10-bit output! How fun." [INFO] [stdout] [n1225]

                                                                                                              [INFO] [stdout] [n1230] TEXT: "\n\n" [INFO] [stdout] [n1231]

                                                                                                              [INFO] [stdout] [n1232] TEXT: "Since I’m always thinking of how portable my whole setup is, just in case I\nfinally find a way to make my “travelling interviewer” dream job work, I started\nchecking out portable recording devices, and eventually got an " [INFO] [stdout] [n1233] [INFO] [stdout] [n1234] TEXT: "Atomos Ninja V" [INFO] [stdout] [n1233] [INFO] [stdout] [n1235] TEXT: " (~600EUR)." [INFO] [stdout] [n1231]

                                                                                                              [INFO] [stdout] [n1236] TEXT: "\n\n" [INFO] [stdout] [n1237]

                                                                                                              [INFO] [stdout] [n1238] [INFO] [stdout] [n1239] [INFO] [stdout] [n1239] [INFO] [stdout] [n1240] [INFO] [stdout] [n1240] [INFO] [stdout] [n1241] [INFO] [stdout] [n1241] [INFO] [stdout] [n1242] [INFO] [stdout] [n1242] [INFO] [stdout] [n1243] [INFO] [stdout] [n1243] [INFO] [stdout] [n1244] [INFO] [stdout] [n1244] [INFO] [stdout] [n1245] [INFO] [stdout] [n1245] [INFO] [stdout] [n1246] [INFO] [stdout] [n1246] [INFO] [stdout] [n1247] [INFO] [stdout] [n1247] [INFO] [stdout] [n1248] [INFO] [stdout] [n1248] [INFO] [stdout] [n1238] [INFO] [stdout] [n1237]

                                                                                                              [INFO] [stdout] [n1249] TEXT: "\n\n" [INFO] [stdout] [n1250]

                                                                                                              [INFO] [stdout] [n1251] TEXT: "Is this half the price of the camera? Yes. Is it worth it? Not for me, as it\nturns out: that thing gets CRAZY HOT and not only is the fan noise a no-go in a\ntight indoor environment, you have to hold the buttons 4 seconds to turn it off,\nand it " [INFO] [stdout] [n1252] [INFO] [stdout] [n1253] TEXT: "physically hurt my fingers" [INFO] [stdout] [n1252] [INFO] [stdout] [n1254] TEXT: " to do so after a recording session, since\nthe whole thing was just boiling at that point." [INFO] [stdout] [n1250]

                                                                                                              [INFO] [stdout] [n1255] TEXT: "\n\n" [INFO] [stdout] [n1256]

                                                                                                              [INFO] [stdout] [n1257] [INFO] [stdout] [n1258] [INFO] [stdout] [n1258] [INFO] [stdout] [n1259] [INFO] [stdout] [n1259] [INFO] [stdout] [n1260] [INFO] [stdout] [n1260] [INFO] [stdout] [n1261] [INFO] [stdout] [n1261] [INFO] [stdout] [n1262] [INFO] [stdout] [n1262] [INFO] [stdout] [n1263] [INFO] [stdout] [n1263] [INFO] [stdout] [n1264] [INFO] [stdout] [n1264] [INFO] [stdout] [n1265] [INFO] [stdout] [n1265] [INFO] [stdout] [n1266] [INFO] [stdout] [n1266] [INFO] [stdout] [n1267] [INFO] [stdout] [n1267] [INFO] [stdout] [n1257] [INFO] [stdout] [n1256]

                                                                                                              [INFO] [stdout] [n1268] TEXT: "\n\n" [INFO] [stdout] [n1269]

                                                                                                              [INFO] [stdout] [n1270] TEXT: "But damn, what a cool piece of tech. The display does 1000-nit HDR, it’s full of\nneat features like showing overexposed areas, audio monitors (multiple inputs,\ntoo), there’s expansion packs to cast over Wi-Fi, it does many codecs (ProRes,\nDNxHR, H.264, H.265, etc. — some you have to pay once to unlock), and my\nfavorite feature is that it doesn’t shoot to SD cards." [INFO] [stdout] [n1269]

                                                                                                              [INFO] [stdout] [n1271] TEXT: "\n\n" [INFO] [stdout] [n1272]

                                                                                                              [INFO] [stdout] [n1273] TEXT: "Ohhhh no." [INFO] [stdout] [n1272]

                                                                                                              [INFO] [stdout] [n1274] TEXT: "\n\n" [INFO] [stdout] [n1275]

                                                                                                              [INFO] [stdout] [n1276] TEXT: "It shoots straight to SATA 2.5“ SSDs." [INFO] [stdout] [n1275]

                                                                                                              [INFO] [stdout] [n1277] TEXT: "\n\n" [INFO] [stdout] [n1278]

                                                                                                              [INFO] [stdout] [n1279] [INFO] [stdout] [n1280] [INFO] [stdout] [n1280] [INFO] [stdout] [n1281] [INFO] [stdout] [n1281] [INFO] [stdout] [n1282] [INFO] [stdout] [n1282] [INFO] [stdout] [n1283] [INFO] [stdout] [n1283] [INFO] [stdout] [n1284] [INFO] [stdout] [n1284] [INFO] [stdout] [n1285] [INFO] [stdout] [n1285] [INFO] [stdout] [n1286] [INFO] [stdout] [n1286] [INFO] [stdout] [n1287] [INFO] [stdout] [n1287] [INFO] [stdout] [n1288] [INFO] [stdout] [n1288] [INFO] [stdout] [n1289] [INFO] [stdout] [n1289] [INFO] [stdout] [n1279] [INFO] [stdout] [n1278]

                                                                                                              [INFO] [stdout] [n1290] TEXT: "\n\n" [INFO] [stdout] [n1291]

                                                                                                              [INFO] [stdout] [n1292] TEXT: "You buy plastic caddies, that you mount SSDs into, and then you can just slide\nthem in and out of the monitor. It’s… really fun!" [INFO] [stdout] [n1291]

                                                                                                              [INFO] [stdout] [n1293] TEXT: "\n\n" [INFO] [stdout] [n1294]

                                                                                                              [INFO] [stdout] [n1295] [INFO] [stdout] [n1296] [INFO] [stdout] [n1296] [INFO] [stdout] [n1297] [INFO] [stdout] [n1297] [INFO] [stdout] [n1298] [INFO] [stdout] [n1298] [INFO] [stdout] [n1299] [INFO] [stdout] [n1299] [INFO] [stdout] [n1300] [INFO] [stdout] [n1300] [INFO] [stdout] [n1301] [INFO] [stdout] [n1301] [INFO] [stdout] [n1302] [INFO] [stdout] [n1302] [INFO] [stdout] [n1303] [INFO] [stdout] [n1303] [INFO] [stdout] [n1304] [INFO] [stdout] [n1304] [INFO] [stdout] [n1305] [INFO] [stdout] [n1305] [INFO] [stdout] [n1295] [INFO] [stdout] [n1294]

                                                                                                              [INFO] [stdout] [n1306] TEXT: "\n\n" [INFO] [stdout] [n1307]

                                                                                                              [INFO] [stdout] [n1308] TEXT: "Much like cameras have requirements for SD cards, the Atomos Ninja V does too\nfor storage. In fact, there’s a " [INFO] [stdout] [n1309] [INFO] [stdout] [n1310] TEXT: "specific" [INFO] [stdout] [n1309] [INFO] [stdout] [n1311] TEXT: " list of SSDs it’ll work with. I had\nto wait a month for my “professional-grade” 960 GB SSD." [INFO] [stdout] [n1307]

                                                                                                              [INFO] [stdout] [n1312] TEXT: "\n\n" [INFO] [stdout] [n1313]

                                                                                                              [INFO] [stdout] [n1314] TEXT: "You can even mount it on a cold shoe (this means on top of your camera, sliding\nit into a slot made for this: “hot shoes” have electronic connections, to\ntrigger flashes, external mics, etc. “cold shoes” are there just to physically\nhold stuff up), and I loved that!" [INFO] [stdout] [n1313]

                                                                                                              [INFO] [stdout] [n1315] TEXT: "\n\n" [INFO] [stdout] [n1316]

                                                                                                              [INFO] [stdout] [n1317] TEXT: "Having a high quality 10-inch display to see if your shot actually looks good\nwhen you’re shooting solo is great. But I couldn’t use it in conjunction with my\nteleprompter, which goes all " [INFO] [stdout] [n1318] [INFO] [stdout] [n1319] TEXT: "around" [INFO] [stdout] [n1318] [INFO] [stdout] [n1320] TEXT: " the camera." [INFO] [stdout] [n1316]

                                                                                                              [INFO] [stdout] [n1321] TEXT: "\n\n" [INFO] [stdout] [n1322]

                                                                                                              [INFO] [stdout] [n1323] TEXT: "So, the heat, the noise, incompatibility with a teleprompter, means my Ninja V\nis sitting somewhere in my studio looking pretty, and I should look into selling\nit before it gets completely outdated." [INFO] [stdout] [n1322]

                                                                                                              [INFO] [stdout] [n1324] TEXT: "\n\n" [INFO] [stdout] [n1325]

                                                                                                              [INFO] [stdout] [n1326] TEXT: "While exploring my editing software’s interface deeper, I " [INFO] [stdout] [n1327] [INFO] [stdout] [n1328] TEXT: "thought" [INFO] [stdout] [n1327] [INFO] [stdout] [n1329] TEXT: " it could\ncapture video directly, and I was really curious about that, because my “Elgato\n4K Capture Utility” workflow was starting to get on my nerves: even when it " [INFO] [stdout] [n1330] [INFO] [stdout] [n1331] TEXT: "did" [INFO] [stdout] [n1330] [INFO] [stdout] [n1332] TEXT: " work, it worked my external mic as a " [INFO] [stdout] [n1333] [INFO] [stdout] [n1334] TEXT: "separate" [INFO] [stdout] [n1333] [INFO] [stdout] [n1335] TEXT: " .mp4 file." [INFO] [stdout] [n1325]

                                                                                                              [INFO] [stdout] [n1336] TEXT: "\n\n" [INFO] [stdout] [n1337]

                                                                                                              [INFO] [stdout] [n1338] TEXT: "The result was actually 3 mp4 files:" [INFO] [stdout] [n1337]

                                                                                                              [INFO] [stdout] [n1339] TEXT: "\n\n" [INFO] [stdout] [n1340]
                                                                                                                [INFO] [stdout] [n1341]
                                                                                                              • [INFO] [stdout] [n1342] TEXT: "One with the camera mic audio" [INFO] [stdout] [n1341]
                                                                                                              • [WARN] too many lines in the log, truncating it