Fix remaining vim failures

Nathan Sobo created

Change summary

crates/util/src/test/marked_text.rs                   |   5 
crates/vim/src/editor_events.rs                       |  43 -
crates/vim/src/motion.rs                              |   1 
crates/vim/src/normal.rs                              |  10 
crates/vim/src/object.rs                              |  15 
crates/vim/src/test/neovim_backed_test_context.rs     |   1 
crates/vim/src/vim.rs                                 |  51 +
crates/vim/test_data/test_change_sentence_object.json |  44 
crates/vim/test_data/test_delete_sentence_object.json |  44 
crates/vim/test_data/test_f_and_t.json                | 430 ++++++------
10 files changed, 331 insertions(+), 313 deletions(-)

Detailed changes

crates/util/src/test/marked_text.rs 🔗

@@ -104,6 +104,10 @@ pub fn marked_text_ranges_by(
 ///    ```text
 ///    one «ˇreversed» selection and one «forwardˇ» selection
 ///    ```
+///
+/// Any • characters in the input string will be replaced with spaces. This makes
+/// it easier to test cases with trailing spaces, which tend to get trimmed from the
+/// source code.
 pub fn marked_text_ranges(
     marked_text: &str,
     ranges_are_directed: bool,
@@ -114,6 +118,7 @@ pub fn marked_text_ranges(
     let mut current_range_start = None;
     let mut current_range_cursor = None;
 
+    let marked_text = marked_text.replace("•", " ");
     for (marked_ix, marker) in marked_text.match_indices(&['«', '»', 'ˇ']) {
         unmarked_text.push_str(&marked_text[prev_marked_ix..marked_ix]);
         let unmarked_len = unmarked_text.len();

crates/vim/src/editor_events.rs 🔗

@@ -1,7 +1,6 @@
-use editor::{EditorBlurred, EditorFocused, EditorMode, EditorReleased, Event};
-use gpui::{AppContext, WindowContext};
-
-use crate::{state::Mode, Vim};
+use crate::Vim;
+use editor::{EditorBlurred, EditorFocused, EditorReleased};
+use gpui::AppContext;
 
 pub fn init(cx: &mut AppContext) {
     cx.subscribe_global(focused).detach();
@@ -15,33 +14,7 @@ fn focused(EditorFocused(editor): &EditorFocused, cx: &mut AppContext) {
             vim.update_active_editor(cx, |previously_active_editor, cx| {
                 Vim::unhook_vim_settings(previously_active_editor, cx);
             });
-
-            vim.active_editor = Some(editor.downgrade());
-            vim.editor_subscription = Some(cx.subscribe(editor, |editor, event, cx| match event {
-                Event::SelectionsChanged { local: true } => {
-                    let editor = editor.read(cx);
-                    if editor.leader_replica_id().is_none() {
-                        let newest_empty = editor.selections.newest::<usize>(cx).is_empty();
-                        local_selections_changed(newest_empty, cx);
-                    }
-                }
-                Event::InputIgnored { text } => {
-                    Vim::active_editor_input_ignored(text.clone(), cx);
-                }
-                _ => {}
-            }));
-
-            if vim.enabled {
-                let editor = editor.read(cx);
-                let editor_mode = editor.mode();
-                let newest_selection_empty = editor.selections.newest::<usize>(cx).is_empty();
-
-                if editor_mode == EditorMode::Full && !newest_selection_empty {
-                    vim.switch_mode(Mode::Visual { line: false }, true, cx);
-                }
-            }
-
-            vim.sync_vim_settings(cx);
+            vim.set_active_editor(editor.clone(), cx);
         });
     });
 }
@@ -73,11 +46,3 @@ fn released(EditorReleased(editor): &EditorReleased, cx: &mut AppContext) {
         });
     });
 }
-
-fn local_selections_changed(newest_empty: bool, cx: &mut WindowContext) {
-    Vim::update(cx, |vim, cx| {
-        if vim.enabled && vim.state.mode == Mode::Normal && !newest_empty {
-            vim.switch_mode(Mode::Visual { line: false }, false, cx)
-        }
-    })
-}

crates/vim/src/motion.rs 🔗

@@ -117,6 +117,7 @@ pub fn init(cx: &mut AppContext) {
 }
 
 pub(crate) fn motion(motion: Motion, cx: &mut WindowContext) {
+    dbg!(&motion);
     if let Some(Operator::Namespace(_))
     | Some(Operator::FindForward { .. })
     | Some(Operator::FindBackward { .. }) = Vim::read(cx).active_operator()

crates/vim/src/normal.rs 🔗

@@ -1017,15 +1017,17 @@ mod test {
         let test_case = indoc! {"
             ˇaaaˇbˇ ˇbˇ   ˇbˇbˇ aˇaaˇbaaa
             ˇ    ˇbˇaaˇa ˇbˇbˇb
-            ˇ
+            ˇ•••
             ˇb
-            "};
+            "
+        }
+        .replace("•", " ");
 
         for count in 1..=3 {
-            cx.assert_binding_matches_all([&count.to_string(), "shift-f", "b"], test_case)
+            cx.assert_binding_matches_all([&count.to_string(), "shift-f", "b"], &test_case)
                 .await;
 
-            cx.assert_binding_matches_all([&count.to_string(), "shift-t", "b"], test_case)
+            cx.assert_binding_matches_all([&count.to_string(), "shift-t", "b"], &test_case)
                 .await;
         }
     }

crates/vim/src/object.rs 🔗

@@ -434,19 +434,20 @@ mod test {
     use crate::test::{ExemptionFeatures, NeovimBackedTestContext};
 
     const WORD_LOCATIONS: &'static str = indoc! {"
-        The quick ˇbrowˇnˇ
+        The quick ˇbrowˇnˇ•••
         fox ˇjuˇmpsˇ over
-        the lazy dogˇ
+        the lazy dogˇ••
         ˇ
         ˇ
         ˇ
-        Thˇeˇ-ˇquˇickˇ ˇbrownˇ
-        ˇ
-        ˇ
+        Thˇeˇ-ˇquˇickˇ ˇbrownˇ•
+        ˇ••
+        ˇ••
         ˇ  fox-jumpˇs over
-        the lazy dogˇ
+        the lazy dogˇ•
         ˇ
-        "};
+        "
+    };
 
     #[gpui::test]
     async fn test_change_word_object(cx: &mut gpui::TestAppContext) {

crates/vim/src/test/neovim_backed_test_context.rs 🔗

@@ -153,6 +153,7 @@ impl<'a> NeovimBackedTestContext<'a> {
             }
         }
 
+        dbg!(initial_state);
         let _state_context = self.set_shared_state(initial_state).await;
         let _keystroke_context = self.simulate_shared_keystrokes(keystrokes).await;
         self.assert_state_matches().await;

crates/vim/src/vim.rs 🔗

@@ -13,9 +13,10 @@ mod visual;
 use std::sync::Arc;
 
 use collections::CommandPaletteFilter;
-use editor::{Bias, Cancel, Editor, EditorMode};
+use editor::{Bias, Cancel, Editor, EditorMode, Event};
 use gpui::{
-    actions, impl_actions, AppContext, Subscription, ViewContext, WeakViewHandle, WindowContext,
+    actions, impl_actions, AppContext, Subscription, ViewContext, ViewHandle, WeakViewHandle,
+    WindowContext,
 };
 use language::CursorShape;
 use motion::Motion;
@@ -142,6 +143,35 @@ impl Vim {
         cx.update_default_global(update)
     }
 
+    fn set_active_editor(&mut self, editor: ViewHandle<Editor>, cx: &mut WindowContext) {
+        self.active_editor = Some(editor.downgrade());
+        self.editor_subscription = Some(cx.subscribe(&editor, |editor, event, cx| match event {
+            Event::SelectionsChanged { local: true } => {
+                let editor = editor.read(cx);
+                if editor.leader_replica_id().is_none() {
+                    let newest_empty = editor.selections.newest::<usize>(cx).is_empty();
+                    local_selections_changed(newest_empty, cx);
+                }
+            }
+            Event::InputIgnored { text } => {
+                Vim::active_editor_input_ignored(text.clone(), cx);
+            }
+            _ => {}
+        }));
+
+        if self.enabled {
+            let editor = editor.read(cx);
+            let editor_mode = editor.mode();
+            let newest_selection_empty = editor.selections.newest::<usize>(cx).is_empty();
+
+            if editor_mode == EditorMode::Full && !newest_selection_empty {
+                self.switch_mode(Mode::Visual { line: false }, true, cx);
+            }
+        }
+
+        self.sync_vim_settings(cx);
+    }
+
     fn update_active_editor<S>(
         &self,
         cx: &mut WindowContext,
@@ -179,6 +209,7 @@ impl Vim {
     }
 
     fn push_operator(&mut self, operator: Operator, cx: &mut WindowContext) {
+        dbg!("push_operator", &operator);
         self.state.operator_stack.push(operator);
         self.sync_vim_settings(cx);
     }
@@ -218,6 +249,7 @@ impl Vim {
     }
 
     fn active_editor_input_ignored(text: Arc<str>, cx: &mut WindowContext) {
+        dbg!(&text);
         if text.is_empty() {
             return;
         }
@@ -253,11 +285,14 @@ impl Vim {
 
             cx.update_active_window(|cx| {
                 if self.enabled {
-                    self.active_editor = cx
+                    let active_editor = cx
                         .root_view()
                         .downcast_ref::<Workspace>()
                         .and_then(|workspace| workspace.read(cx).active_item(cx))
-                        .and_then(|item| item.downcast::<Editor>().map(|h| h.downgrade()));
+                        .and_then(|item| item.downcast::<Editor>());
+                    if let Some(active_editor) = active_editor {
+                        self.set_active_editor(active_editor, cx);
+                    }
                     self.switch_mode(Mode::Normal, false, cx);
                 }
                 self.sync_vim_settings(cx);
@@ -291,3 +326,11 @@ impl Vim {
         editor.remove_keymap_context_layer::<Self>();
     }
 }
+
+fn local_selections_changed(newest_empty: bool, cx: &mut WindowContext) {
+    Vim::update(cx, |vim, cx| {
+        if vim.enabled && vim.state.mode == Mode::Normal && !newest_empty {
+            vim.switch_mode(Mode::Visual { line: false }, false, cx)
+        }
+    })
+}

crates/vim/test_data/test_change_sentence_object.json 🔗

@@ -53,46 +53,46 @@
 {"Key":"i"}
 {"Key":"s"}
 {"Get":{"state":"The quick brown? Fox Jumps! ˇ","mode":"Insert"}}
-{"Put":{"state":"ˇThe quick brown   \nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"ˇThe quick brown\nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
 {"Key":"c"}
 {"Key":"i"}
 {"Key":"s"}
 {"Get":{"state":"ˇ The quick \nbrown fox jumps over\n","mode":"Insert"}}
-{"Put":{"state":"The quick ˇbrown   \nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick ˇbrown\nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
 {"Key":"c"}
 {"Key":"i"}
 {"Key":"s"}
 {"Get":{"state":"ˇ The quick \nbrown fox jumps over\n","mode":"Insert"}}
-{"Put":{"state":"The quick brownˇ   \nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick brownˇ\nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
 {"Key":"c"}
 {"Key":"i"}
 {"Key":"s"}
 {"Get":{"state":"ˇ The quick \nbrown fox jumps over\n","mode":"Insert"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy doˇg. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy doˇg. The quick \nbrown fox jumps over\n"}}
 {"Key":"c"}
 {"Key":"i"}
 {"Key":"s"}
 {"Get":{"state":"ˇ The quick \nbrown fox jumps over\n","mode":"Insert"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy dogˇ. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy dogˇ. The quick \nbrown fox jumps over\n"}}
 {"Key":"c"}
 {"Key":"i"}
 {"Key":"s"}
 {"Get":{"state":"ˇ The quick \nbrown fox jumps over\n","mode":"Insert"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy dog.ˇ The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy dog.ˇ The quick \nbrown fox jumps over\n"}}
 {"Key":"c"}
 {"Key":"i"}
 {"Key":"s"}
-{"Get":{"state":"The quick brown   \nfox jumps over\nthe lazy dog.ˇThe quick \nbrown fox jumps over\n","mode":"Insert"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy dog. ˇThe quick \nbrown fox jumps over\n"}}
+{"Get":{"state":"The quick brown\nfox jumps over\nthe lazy dog.ˇThe quick \nbrown fox jumps over\n","mode":"Insert"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy dog. ˇThe quick \nbrown fox jumps over\n"}}
 {"Key":"c"}
 {"Key":"i"}
 {"Key":"s"}
-{"Get":{"state":"The quick brown   \nfox jumps over\nthe lazy dog. ˇ\n","mode":"Insert"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy dog. The quick ˇ\nbrown fox jumps over\n"}}
+{"Get":{"state":"The quick brown\nfox jumps over\nthe lazy dog. ˇ\n","mode":"Insert"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy dog. The quick ˇ\nbrown fox jumps over\n"}}
 {"Key":"c"}
 {"Key":"i"}
 {"Key":"s"}
-{"Get":{"state":"The quick brown   \nfox jumps over\nthe lazy dog. ˇ\n","mode":"Insert"}}
+{"Get":{"state":"The quick brown\nfox jumps over\nthe lazy dog. ˇ\n","mode":"Insert"}}
 {"Put":{"state":"ˇThe quick brown.)]'\" Brown fox jumps. "}}
 {"Key":"c"}
 {"Key":"i"}
@@ -188,46 +188,46 @@
 {"Key":"a"}
 {"Key":"s"}
 {"Get":{"state":"The quick brown? Fox Jumps!ˇ","mode":"Insert"}}
-{"Put":{"state":"ˇThe quick brown   \nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"ˇThe quick brown\nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
 {"Key":"c"}
 {"Key":"a"}
 {"Key":"s"}
 {"Get":{"state":"ˇThe quick \nbrown fox jumps over\n","mode":"Insert"}}
-{"Put":{"state":"The quick ˇbrown   \nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick ˇbrown\nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
 {"Key":"c"}
 {"Key":"a"}
 {"Key":"s"}
 {"Get":{"state":"ˇThe quick \nbrown fox jumps over\n","mode":"Insert"}}
-{"Put":{"state":"The quick brownˇ   \nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick brownˇ\nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
 {"Key":"c"}
 {"Key":"a"}
 {"Key":"s"}
 {"Get":{"state":"ˇThe quick \nbrown fox jumps over\n","mode":"Insert"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy doˇg. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy doˇg. The quick \nbrown fox jumps over\n"}}
 {"Key":"c"}
 {"Key":"a"}
 {"Key":"s"}
 {"Get":{"state":"ˇThe quick \nbrown fox jumps over\n","mode":"Insert"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy dogˇ. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy dogˇ. The quick \nbrown fox jumps over\n"}}
 {"Key":"c"}
 {"Key":"a"}
 {"Key":"s"}
 {"Get":{"state":"ˇThe quick \nbrown fox jumps over\n","mode":"Insert"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy dog.ˇ The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy dog.ˇ The quick \nbrown fox jumps over\n"}}
 {"Key":"c"}
 {"Key":"a"}
 {"Key":"s"}
-{"Get":{"state":"The quick brown   \nfox jumps over\nthe lazy dog.ˇ\n","mode":"Insert"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy dog. ˇThe quick \nbrown fox jumps over\n"}}
+{"Get":{"state":"The quick brown\nfox jumps over\nthe lazy dog.ˇ\n","mode":"Insert"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy dog. ˇThe quick \nbrown fox jumps over\n"}}
 {"Key":"c"}
 {"Key":"a"}
 {"Key":"s"}
-{"Get":{"state":"The quick brown   \nfox jumps over\nthe lazy dog.ˇ\n","mode":"Insert"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy dog. The quick ˇ\nbrown fox jumps over\n"}}
+{"Get":{"state":"The quick brown\nfox jumps over\nthe lazy dog.ˇ\n","mode":"Insert"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy dog. The quick ˇ\nbrown fox jumps over\n"}}
 {"Key":"c"}
 {"Key":"a"}
 {"Key":"s"}
-{"Get":{"state":"The quick brown   \nfox jumps over\nthe lazy dog.ˇ\n","mode":"Insert"}}
+{"Get":{"state":"The quick brown\nfox jumps over\nthe lazy dog.ˇ\n","mode":"Insert"}}
 {"Put":{"state":"ˇThe quick brown.)]'\" Brown fox jumps. "}}
 {"Key":"c"}
 {"Key":"a"}

crates/vim/test_data/test_delete_sentence_object.json 🔗

@@ -53,46 +53,46 @@
 {"Key":"i"}
 {"Key":"s"}
 {"Get":{"state":"The quick brown? Fox Jumps!ˇ ","mode":"Normal"}}
-{"Put":{"state":"ˇThe quick brown   \nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"ˇThe quick brown\nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
 {"Key":"d"}
 {"Key":"i"}
 {"Key":"s"}
 {"Get":{"state":"ˇ The quick \nbrown fox jumps over\n","mode":"Normal"}}
-{"Put":{"state":"The quick ˇbrown   \nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick ˇbrown\nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
 {"Key":"d"}
 {"Key":"i"}
 {"Key":"s"}
 {"Get":{"state":"ˇ The quick \nbrown fox jumps over\n","mode":"Normal"}}
-{"Put":{"state":"The quick brownˇ   \nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick brownˇ\nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
 {"Key":"d"}
 {"Key":"i"}
 {"Key":"s"}
 {"Get":{"state":"ˇ The quick \nbrown fox jumps over\n","mode":"Normal"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy doˇg. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy doˇg. The quick \nbrown fox jumps over\n"}}
 {"Key":"d"}
 {"Key":"i"}
 {"Key":"s"}
 {"Get":{"state":"ˇ The quick \nbrown fox jumps over\n","mode":"Normal"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy dogˇ. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy dogˇ. The quick \nbrown fox jumps over\n"}}
 {"Key":"d"}
 {"Key":"i"}
 {"Key":"s"}
 {"Get":{"state":"ˇ The quick \nbrown fox jumps over\n","mode":"Normal"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy dog.ˇ The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy dog.ˇ The quick \nbrown fox jumps over\n"}}
 {"Key":"d"}
 {"Key":"i"}
 {"Key":"s"}
-{"Get":{"state":"The quick brown   \nfox jumps over\nthe lazy dog.ˇThe quick \nbrown fox jumps over\n","mode":"Normal"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy dog. ˇThe quick \nbrown fox jumps over\n"}}
+{"Get":{"state":"The quick brown\nfox jumps over\nthe lazy dog.ˇThe quick \nbrown fox jumps over\n","mode":"Normal"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy dog. ˇThe quick \nbrown fox jumps over\n"}}
 {"Key":"d"}
 {"Key":"i"}
 {"Key":"s"}
-{"Get":{"state":"The quick brown   \nfox jumps over\nthe lazy dog.ˇ \n","mode":"Normal"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy dog. The quick ˇ\nbrown fox jumps over\n"}}
+{"Get":{"state":"The quick brown\nfox jumps over\nthe lazy dog.ˇ \n","mode":"Normal"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy dog. The quick ˇ\nbrown fox jumps over\n"}}
 {"Key":"d"}
 {"Key":"i"}
 {"Key":"s"}
-{"Get":{"state":"The quick brown   \nfox jumps over\nthe lazy dog.ˇ \n","mode":"Normal"}}
+{"Get":{"state":"The quick brown\nfox jumps over\nthe lazy dog.ˇ \n","mode":"Normal"}}
 {"Put":{"state":"ˇThe quick brown.)]'\" Brown fox jumps. "}}
 {"Key":"d"}
 {"Key":"i"}
@@ -188,46 +188,46 @@
 {"Key":"a"}
 {"Key":"s"}
 {"Get":{"state":"The quick brown? Fox Jumpsˇ!","mode":"Normal"}}
-{"Put":{"state":"ˇThe quick brown   \nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"ˇThe quick brown\nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
 {"Key":"d"}
 {"Key":"a"}
 {"Key":"s"}
 {"Get":{"state":"ˇThe quick \nbrown fox jumps over\n","mode":"Normal"}}
-{"Put":{"state":"The quick ˇbrown   \nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick ˇbrown\nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
 {"Key":"d"}
 {"Key":"a"}
 {"Key":"s"}
 {"Get":{"state":"ˇThe quick \nbrown fox jumps over\n","mode":"Normal"}}
-{"Put":{"state":"The quick brownˇ   \nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick brownˇ\nfox jumps over\nthe lazy dog. The quick \nbrown fox jumps over\n"}}
 {"Key":"d"}
 {"Key":"a"}
 {"Key":"s"}
 {"Get":{"state":"ˇThe quick \nbrown fox jumps over\n","mode":"Normal"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy doˇg. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy doˇg. The quick \nbrown fox jumps over\n"}}
 {"Key":"d"}
 {"Key":"a"}
 {"Key":"s"}
 {"Get":{"state":"ˇThe quick \nbrown fox jumps over\n","mode":"Normal"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy dogˇ. The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy dogˇ. The quick \nbrown fox jumps over\n"}}
 {"Key":"d"}
 {"Key":"a"}
 {"Key":"s"}
 {"Get":{"state":"ˇThe quick \nbrown fox jumps over\n","mode":"Normal"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy dog.ˇ The quick \nbrown fox jumps over\n"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy dog.ˇ The quick \nbrown fox jumps over\n"}}
 {"Key":"d"}
 {"Key":"a"}
 {"Key":"s"}
-{"Get":{"state":"The quick brown   \nfox jumps over\nthe lazy dogˇ.\n","mode":"Normal"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy dog. ˇThe quick \nbrown fox jumps over\n"}}
+{"Get":{"state":"The quick brown\nfox jumps over\nthe lazy dogˇ.\n","mode":"Normal"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy dog. ˇThe quick \nbrown fox jumps over\n"}}
 {"Key":"d"}
 {"Key":"a"}
 {"Key":"s"}
-{"Get":{"state":"The quick brown   \nfox jumps over\nthe lazy dogˇ.\n","mode":"Normal"}}
-{"Put":{"state":"The quick brown   \nfox jumps over\nthe lazy dog. The quick ˇ\nbrown fox jumps over\n"}}
+{"Get":{"state":"The quick brown\nfox jumps over\nthe lazy dogˇ.\n","mode":"Normal"}}
+{"Put":{"state":"The quick brown\nfox jumps over\nthe lazy dog. The quick ˇ\nbrown fox jumps over\n"}}
 {"Key":"d"}
 {"Key":"a"}
 {"Key":"s"}
-{"Get":{"state":"The quick brown   \nfox jumps over\nthe lazy dogˇ.\n","mode":"Normal"}}
+{"Get":{"state":"The quick brown\nfox jumps over\nthe lazy dogˇ.\n","mode":"Normal"}}
 {"Put":{"state":"ˇThe quick brown.)]'\" Brown fox jumps. "}}
 {"Key":"d"}
 {"Key":"a"}

crates/vim/test_data/test_f_and_t.json 🔗

@@ -1,557 +1,557 @@
-{"Put":{"state":"ˇaaab b   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Put":{"state":"ˇaaab b   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaaˇb b   bb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
+{"Get":{"state":"aaaˇb b   bb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
 {"Key":"1"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab ˇb   bb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaabˇ b   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab ˇb   bb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaabˇ b   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab ˇb   bb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
+{"Get":{"state":"aaab ˇb   bb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
 {"Key":"1"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab bˇ   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab bˇ   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
+{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
 {"Key":"1"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
+{"Get":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
 {"Key":"1"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
+{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
 {"Key":"1"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\nˇ    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\nˇ    baaa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    ˇbaaa bbb\n   \nb\n","mode":"Normal"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    ˇbaaa bbb\n\nb\n","mode":"Normal"}}
 {"Key":"1"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    bˇaaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    bˇaaa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaˇa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaˇa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n   \nb\n","mode":"Normal"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n\nb\n","mode":"Normal"}}
 {"Key":"1"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n   \nb\n","mode":"Normal"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n\nb\n","mode":"Normal"}}
 {"Key":"1"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n   \nb\n","mode":"Normal"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n\nb\n","mode":"Normal"}}
 {"Key":"1"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ\nb\n"}}
 {"Key":"1"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n   \nˇb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n\nˇb\n"}}
 {"Key":"1"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n   \nˇb\n","mode":"Normal"}}
-{"Put":{"state":"ˇaaab b   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n\nˇb\n","mode":"Normal"}}
+{"Put":{"state":"ˇaaab b   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaˇab b   bb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaaˇb b   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaˇab b   bb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaaˇb b   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaabˇ b   bb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
+{"Get":{"state":"aaabˇ b   bb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
 {"Key":"1"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaabˇ b   bb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab ˇb   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaabˇ b   bb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab ˇb   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b  ˇ bb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab bˇ   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b  ˇ bb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab bˇ   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b  ˇ bb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b  ˇ bb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaˇabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaˇabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaˇabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaˇabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaˇabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaˇabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\nˇ    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\nˇ    baaa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n   ˇ baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    ˇbaaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n   ˇ baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    ˇbaaa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaaˇ bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    bˇaaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaaˇ bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    bˇaaa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaaˇ bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaˇa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaaˇ bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaˇa bbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaaˇ bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaaˇ bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n\nb\n"}}
 {"Key":"1"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ\nb\n"}}
 {"Key":"1"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n   \nˇb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n\nˇb\n"}}
 {"Key":"1"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n   \nˇb\n","mode":"Normal"}}
-{"Put":{"state":"ˇaaab b   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n\nˇb\n","mode":"Normal"}}
+{"Put":{"state":"ˇaaab b   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab ˇb   bb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaaˇb b   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab ˇb   bb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaaˇb b   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaabˇ b   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaabˇ b   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab ˇb   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab ˇb   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab bˇ   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab bˇ   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\nˇ    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\nˇ    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    ˇbaaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    ˇbaaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    bˇaaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    bˇaaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaˇa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaˇa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ\nb\n"}}
 {"Key":"2"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n   \nˇb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n\nˇb\n"}}
 {"Key":"2"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n   \nˇb\n","mode":"Normal"}}
-{"Put":{"state":"ˇaaab b   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n\nˇb\n","mode":"Normal"}}
+{"Put":{"state":"ˇaaab b   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaabˇ b   bb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaaˇb b   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaabˇ b   bb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaaˇb b   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b  ˇ bb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaabˇ b   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b  ˇ bb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaabˇ b   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b  ˇ bb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab ˇb   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b  ˇ bb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab ˇb   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab bˇ   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab bˇ   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
+{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
 {"Key":"2"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaˇabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaˇabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\nˇ    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\nˇ    baaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaaˇ bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    ˇbaaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaaˇ bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    ˇbaaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    bˇaaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    bˇaaa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaˇa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaˇa bbb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n   \nb\n","mode":"Normal"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n\nb\n","mode":"Normal"}}
 {"Key":"2"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n   \nb\n","mode":"Normal"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n\nb\n","mode":"Normal"}}
 {"Key":"2"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n\nb\n"}}
 {"Key":"2"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ\nb\n"}}
 {"Key":"2"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n   \nˇb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n\nˇb\n"}}
 {"Key":"2"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n   \nˇb\n","mode":"Normal"}}
-{"Put":{"state":"ˇaaab b   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n\nˇb\n","mode":"Normal"}}
+{"Put":{"state":"ˇaaab b   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaaˇb b   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaaˇb b   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaabˇ b   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaabˇ b   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab ˇb   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab ˇb   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab bˇ   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab bˇ   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\nˇ    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\nˇ    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    ˇbaaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    ˇbaaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    bˇaaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    bˇaaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaˇa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaˇa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ\nb\n"}}
 {"Key":"3"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n   \nˇb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n\nˇb\n"}}
 {"Key":"3"}
 {"Key":"f"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n   \nˇb\n","mode":"Normal"}}
-{"Put":{"state":"ˇaaab b   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n\nˇb\n","mode":"Normal"}}
+{"Put":{"state":"ˇaaab b   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b  ˇ bb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaaˇb b   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b  ˇ bb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaaˇb b   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaabˇ b   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaabˇ b   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab ˇb   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab ˇb   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaˇabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab bˇ   bb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaˇabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab bˇ   bb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaˇabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaˇabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   ˇbb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bˇb aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bbˇ aaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aˇaabaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\nˇ    baaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaaˇbaaa\n    baaa bbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\nˇ    baaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    ˇbaaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    ˇbaaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    bˇaaa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    bˇaaa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaˇa bbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaˇa bbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa ˇbbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bˇbb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n\nb\n"}}
 {"Key":"3"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ   \nb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbˇb\n\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ\nb\n"}}
 {"Key":"3"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ   \nb\n","mode":"Normal"}}
-{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n   \nˇb\n"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\nˇ\nb\n","mode":"Normal"}}
+{"Put":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n\nˇb\n"}}
 {"Key":"3"}
 {"Key":"t"}
 {"Key":"b"}
-{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n   \nˇb\n","mode":"Normal"}}
+{"Get":{"state":"aaab b   bb aaabaaa\n    baaa bbb\n\nˇb\n","mode":"Normal"}}