§
    )xÅjf' ã                  óÆ  — d dl mZ d dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZmZmZmZ d d	lmZ d d
lmZ d dlmZmZmZmZmZmZ d dlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=m>Z> ddl?m@Z@mAZAmBZB ddlCmDZD ddgZEe3ZFejG        ZGeGdz   ZH G d„ de¦  «        ZI G d„ d¦  «        ZJeeFgeJf         ZK edeK¬ ¦  «        ZLd2d%„ZMeeFeJgdf         ZN ed&eN¬ ¦  «        ZOd3d(„ZPed4d*„¦   «         ZQed4d+„¦   «         ZRed4d,„¦   «         ZSed4d-„¦   «         ZTed4d.„¦   «         ZUd5d0„ZVd5d1„ZWdS )6é    )ÚannotationsN)ÚCallableÚIterable)ÚEnum)Ú
accumulate)ÚTypeVar)Úget_app)ÚBufferÚindentÚreshape_textÚunindent)ÚClipboardData)ÚDocument)ÚAlwaysÚ	ConditionÚFilterÚhas_argÚis_read_onlyÚis_searching)Úin_paste_modeÚis_multilineÚvi_digraph_modeÚvi_insert_modeÚvi_insert_multiple_modeÚvi_modeÚvi_navigation_modeÚvi_recording_macroÚvi_replace_modeÚvi_replace_single_modeÚvi_search_direction_reversedÚvi_selection_modeÚvi_waiting_for_text_object_mode)ÚVt100Parser)ÚDIGRAPHS)ÚKeyPressÚKeyPressEvent)ÚCharacterFindÚ	InputMode)ÚKeys)ÚSearchDirection)Ú	PasteModeÚSelectionStateÚSelectionTypeé   )ÚConditionalKeyBindingsÚKeyBindingsÚKeyBindingsBaseé   )Úget_by_nameÚload_vi_bindingsÚload_vi_search_bindingsÚ
0123456789c                  ó   — e Zd ZdZdZdZdZdS )ÚTextObjectTypeÚ	EXCLUSIVEÚ	INCLUSIVEÚLINEWISEÚBLOCKN)Ú__name__Ú
__module__Ú__qualname__r9   r:   r;   r<   © ó    úWC:\Projects\Historical\venv\Lib\site-packages\prompt_toolkit/key_binding/bindings/vi.pyr8   r8   =   s"   € € € € € Ø€IØ€IØ€HØ€E€E€ErA   r8   c                  ób   — e Zd ZdZdej        fdd„Zedd„¦   «         Zdd„Z	dd„Z
dd„Zdd„ZdS )Ú
TextObjectz‰
    Return struct for functions wrapped in ``text_object``.
    Both `start` and `end` are relative to the current cursor position.
    r   ÚstartÚintÚendÚtyper8   c                ó0   — || _         || _        || _        d S ©N)rE   rG   rH   )ÚselfrE   rG   rH   s       rB   Ú__init__zTextObject.__init__J   s   € ð ˆŒ
ØˆŒØˆŒ	ˆ	ˆ	rA   Úreturnr-   c                óž   — | j         t          j        k    rt          j        S | j         t          j        k    rt          j        S t          j        S rJ   )rH   r8   r;   r-   ÚLINESr<   Ú
CHARACTERS©rK   s    rB   Úselection_typezTextObject.selection_typeQ   s=   € àŒ9�Ô/Ò/Ð/Ý Ô&Ð&ØŒ9�Ô,Ò,Ð,Ý Ô&Ð&å Ô+Ð+rA   útuple[int, int]c                óZ   — | j         | j        k     r| j         | j        fS | j        | j         fS )zA
        Return a (start, end) tuple where start <= end.
        )rE   rG   rQ   s    rB   ÚsortedzTextObject.sortedZ   s1   € ð Œ:˜œÒ Ð Ø”:˜tœxÐ'Ð'à”8˜TœZÐ'Ð'rA   Údocumentr   c                óD  — |                       ¦   «         \  }}|}| j        t          j        k    r,|                     ||j        z   ¦  «        d         dk    r|dz  }| j        t          j        k    r|dz  }| j        t          j        k    r”|                     ||j        z   ¦  «        \  }}|                     |d¦  «        |j        z
  }|                     ||j        z   ¦  «        \  }}|                     |t          |j
        |         ¦  «        ¦  «        |j        z
  }||fS )a2  
        Return a (start, end) tuple with start <= end that indicates the range
        operators should operate on.
        `buffer` is used to get start and end of line positions.

        This should return something that can be used in a slice, so the `end`
        position is *not* included.
        r2   r   )rU   rH   r8   r9   Útranslate_index_to_positionÚcursor_positionr:   r;   Útranslate_row_col_to_indexÚlenÚlines)rK   rV   rE   rG   ÚdocÚrowÚcols          rB   Úoperator_rangezTextObject.operator_rangec   s  € ð —[’[‘]”]‰
ˆˆsØˆð ŒI�Ô1Ò1Ð1Ø×/Ò/°°cÔ6IÑ0IÑJÔJÈ1ÔMÐQRÒRÐRð �1‰HˆCØŒ9�Ô0Ò0Ð0Ø�1‰HˆCØŒ9�Ô/Ò/Ð/à×6Ò6°u¸sÔ?RÑ7RÑSÔS‰HˆC�Ø×2Ò2°3¸Ñ:Ô:¸SÔ=PÑPˆEØ×6Ò6°s¸SÔ=PÑ7PÑQÔQ‰HˆC�à×.Ò.¨sµC¸¼	À#¼Ñ4GÔ4GÑHÔHØÔ%ñ&ð ð �cˆzÐrA   Úbufferr
   c                óà   — |                       |j        ¦  «        \  }}||j        z  }||j        z  }|j                             |¦  «        \  }}|j                             |¦  «        \  }}||fS )z7
        Return a (start_line, end_line) pair.
        )r`   rV   rY   rX   )rK   ra   Úfrom_ÚtoÚ_s        rB   Úget_line_numberszTextObject.get_line_numbersƒ   su   € ð
 ×'Ò'¨¬Ñ8Ô8‰	ˆˆrØ�Ô'Ñ'ˆØ
ˆfÔ$Ñ$ˆð ”?×>Ò>¸uÑEÔE‰ˆˆqØ”×;Ò;¸BÑ?Ô?‰ˆˆAà�bˆyÐrA   útuple[Document, ClipboardData]c                ó"  — |                       |j        ¦  «        \  }}||j        z  }||j        z  }| j        t          j        k    r|dz  }t          |j        |t          || j	        ¬¦  «        ¦  «        }| 
                    ¦   «         \  }}||fS )zA
        Turn text object into `ClipboardData` instance.
        r2   )Úoriginal_cursor_positionrH   )r`   rV   rY   rH   r8   r;   r   Útextr,   rR   Úcut_selection)rK   ra   rc   rd   rV   Únew_documentÚclipboard_datas          rB   ÚcutzTextObject.cut’   sŸ   € ð ×'Ò'¨¬Ñ8Ô8‰	ˆˆrà�Ô'Ñ'ˆØ
ˆfÔ$Ñ$ˆð Œ9�Ô/Ò/Ð/Ø�!‰GˆBåØŒKØÝ°EÀÔ@SÐTÑTÔTñ
ô 
ˆð (0×'=Ò'=Ñ'?Ô'?Ñ$ˆ�nØ˜^Ð+Ð+rA   N)rE   rF   rG   rF   rH   r8   )rM   r-   )rM   rS   )rV   r   rM   rS   )ra   r
   rM   rS   )ra   r
   rM   rg   )r=   r>   r?   Ú__doc__r8   r9   rL   ÚpropertyrR   rU   r`   rf   rn   r@   rA   rB   rD   rD   D   s²   € € € € € ðð ð &'¸~Ô?Wðð ð ð ð ð ð,ð ,ð ,ñ „Xð,ð(ð (ð (ð (ðð ð ð ð@ð ð ð ð,ð ,ð ,ð ,ð ,ð ,rA   rD   Ú_TOF)ÚboundÚkey_bindingsr0   rM   ú%Callable[..., Callable[[_TOF], _TOF]]c                ó8   ‡ — t          ¦   «         ddddœdˆ fd„}|S )zY
    Create a decorator that can be used to register Vi text object implementations.
    F)ÚfilterÚno_move_handlerÚno_selection_handlerÚeagerÚkeysú
Keys | strrv   r   rw   Úboolrx   ry   rM   úCallable[[_TOF], _TOF]c                ó(   •‡ ‡‡‡‡— dˆˆ ˆˆˆˆfd„}|S )a‚  
        Register a text object function.

        Usage::

            @text_object('w', filter=..., no_move_handler=False)
            def handler(event):
                # Return a text object for this key.
                return TextObject(...)

        :param no_move_handler: Disable the move handler in navigation mode.
            (It's still active in selection mode.)
        Útext_object_funcrq   rM   c                ó  •‡ —  ‰j         ‰t          ‰z  ‰dœŽd	ˆ fd„¦   «         }‰s+ ‰j         ‰t           ‰z  t          z  ‰dœŽd	ˆ fd„¦   «         }‰	s+ ‰j         ‰t           ‰z  t          z  ‰dœŽd	ˆ fd„¦   «         }‰ S )
N©rv   ry   ÚeventÚErM   ÚNonec                óò   •— | j         j        }t          |j        pd| j        pdz  ¦  «        | _         ‰| ¦  «        }|j        }|�|� || |¦  «         d | j         j        _        d | j         j        _        d S ©Nr2   )ÚappÚvi_stateÚstrÚoperator_argÚargÚ_argÚoperator_func)r‚   rˆ   Útext_objr�   r   s       €rB   Ú_apply_operator_to_text_objectzvcreate_text_object_decorator.<locals>.text_object_decorator.<locals>.decorator.<locals>._apply_operator_to_text_objectÎ   sŒ   ø€ ð
 !œ9Ô-�Ý  (Ô"7Ð"<¸1ÀÄÀÈaÑ!PÑQÔQ�”
ð ,Ð+¨EÑ2Ô2�ð
 !)Ô 6�àÐ'¨MÐ,Eà!�M %¨Ñ2Ô2Ð2ð 48�”	Ô"Ô0Ø26�”	Ô"Ô/Ð/Ð/rA   c                óR   •—  ‰| ¦  «        }| j         xj        |j        z  c_        dS )zK
                    Move handler for navigation mode.
                    N)Úcurrent_bufferrY   rE   )r‚   Útext_objectr   s     €rB   Ú_move_in_navigation_modezpcreate_text_object_decorator.<locals>.text_object_decorator.<locals>.decorator.<locals>._move_in_navigation_modeé   s5   ø€ ð #3Ð"2°5Ñ"9Ô"9�KØÔ(Ð8Ô8¸KÔ<MÑMÐ8Ô8Ð8Ð8rA   c                óx  •—  ‰| ¦  «        }| j         }|j        }|€dS |j        rz|                     |j        ¦  «        \  }}||j        z  }||j        z  }||_        ||_        |j        t          j	        k    rt          j        |_        dS t          j        |_        dS | j         xj        |j        z  c_        dS )zJ
                    Move handler for selection mode.
                    N)r‘   Úselection_staterG   r`   rV   rY   ri   rH   r8   r;   r-   rO   rP   rE   )r‚   r’   Úbuffr•   rE   rG   r   s         €rB   Ú_move_in_selection_modezocreate_text_object_decorator.<locals>.text_object_decorator.<locals>.decorator.<locals>._move_in_selection_modeú   sÕ   ø€ ð #3Ð"2°5Ñ"9Ô"9�KØ Ô/�DØ&*Ô&:�Oà&Ð.Ø˜ð #”ð Rà%0×%?Ò%?ÀÄÑ%NÔ%N™
˜˜sØ Ô!5Ñ5˜Ø˜tÔ3Ñ3˜àCH˜Ô@Ø/2˜Ô,ð 'Ô+­~Ô/FÒFÐFÝ3@Ô3F˜OÔ0Ð0Ð0å3@Ô3K˜OÔ0Ð0Ð0àÔ,Ð<Ô<ÀÔ@QÑQÐ<Ô<Ð<Ð<rA   ©r‚   rƒ   rM   r„   ©Úaddr"   r   r!   )
r   r�   r“   r—   ry   rv   rs   rz   rw   rx   s
   `   €€€€€€rB   Ú	decoratorzNcreate_text_object_decorator.<locals>.text_object_decorator.<locals>.decoratorÍ   s4  øø€ Øˆ\ÔØÕ=ÀÑFÈeðð ð ð7ð 7ð 7ð 7ð 7ñô ð7ð, #ð Nà!�Ô!ØÝ;Ð;Øñå(ñ)ð  ðð ð ðNð Nð Nð Nð Nñô ðNð (ð %Rà!�Ô!ØÝ;Ð;Øñå'ñ(ð  ðð ð ðRð Rð Rð Rð Rñô ðRð> $Ð#rA   )r   rq   rM   rq   r@   )rv   rw   rx   ry   rz   r›   rs   s   ````` €rB   Útext_object_decoratorz;create_text_object_decorator.<locals>.text_object_decorator¸   sS   øøøøøø€ ð*S	$ð S	$ð S	$ð S	$ð S	$ð S	$ð S	$ð S	$ð S	$ð S	$ð S	$ðj ÐrA   )rz   r{   rv   r   rw   r|   rx   r|   ry   r|   rM   r}   ©r   )rs   rœ   s   ` rB   Úcreate_text_object_decoratorrž   ±   sN   ø€ õ  ™œØ %Ø%*Øðjð jð jð jð jð jð jð jðX !Ð rA   Ú_OFú#Callable[..., Callable[[_OF], _OF]]c                ó4   ‡ — t          ¦   «         ddœdˆ fd„}|S )zK
    Create a decorator that can be used for registering Vi operators.
    Fr�   rz   r{   rv   r   ry   r|   rM   úCallable[[_OF], _OF]c                ó    •‡ ‡‡— dˆˆ ˆˆfd„}|S )zÉ
        Register a Vi operator.

        Usage::

            @operator('d', filter=...)
            def handler(event, text_object):
                # Do something with the text object here.
        r�   rŸ   rM   c                ó¶   •‡ —  ‰j         ‰t           ‰z  t          z  ‰dœŽdˆ fd„¦   «         } ‰j         ‰t           ‰z  t          z  ‰dœŽdˆ fd„¦   «         }‰ S )	Nr�   r‚   rƒ   rM   r„   c                óV   •— ‰| j         j        _        | j        | j         j        _        dS )zE
                Handle operator in navigation mode.
                N)r‡   rˆ   r�   r‹   rŠ   )r‚   r�   s    €rB   Ú_operator_in_navigationzicreate_operator_decorator.<locals>.operator_decorator.<locals>.decorator.<locals>._operator_in_navigationA  s(   ø€ ð 4A�”	Ô"Ô0Ø27´)�”	Ô"Ô/Ð/Ð/rA   c                ó.  •— | j         }|j        }|�ƒ|j        t          j        k    rt
          j        }n.|j        t          j        k    rt
          j        }nt
          j        }t          |j
        |j        z
  |¬¦  «        } ‰| |¦  «         d|_        dS dS )zD
                Handle operator in selection mode.
                N©rH   )r‘   r•   rH   r-   rO   r8   r;   r<   r:   rD   ri   rY   )r‚   r–   r•   Útext_obj_typer’   r�   s        €rB   Ú_operator_in_selectionzhcreate_operator_decorator.<locals>.operator_decorator.<locals>.decorator.<locals>._operator_in_selectionP  sª   ø€ ð Ô+�Ø"&Ô"6�à"Ð.à&Ô+­}Ô/BÒBÐBÝ(6Ô(?˜˜Ø(Ô-µÔ1DÒDÐDÝ(6Ô(<˜˜å(6Ô(@˜å",Ø'Ô@À4ÔCWÑWØ*ð#ñ #ô #�Kð "�M %¨Ñ5Ô5Ð5ð ,0�DÔ(Ð(Ð(ð% /Ð.rA   r˜   r™   )r�   r¦   rª   ry   rv   rs   rz   s   `  €€€€rB   r›   zHcreate_operator_decorator.<locals>.operator_decorator.<locals>.decorator@  sº   øø€ Øˆ\ÔØÝ7Ð7¸&Ñ@ÕCUÑUØðð ð ð
<ð <ð <ð <ð <ñô ð
<ð ˆ\ÔØÝ7Ð7¸&Ñ@ÕCTÑTØðð ð ð
0ð 0ð 0ð 0ð 0ñô ð
0ð6 !Ð rA   )r�   rŸ   rM   rŸ   r@   )rv   ry   rz   r›   rs   s   ``` €rB   Úoperator_decoratorz5create_operator_decorator.<locals>.operator_decorator3  s<   øøøø€ ð0	!ð 0	!ð 0	!ð 0	!ð 0	!ð 0	!ð 0	!ð 0	!ð 0	!ðd ÐrA   )rz   r{   rv   r   ry   r|   rM   r¢   r�   )rs   r«   s   ` rB   Úcreate_operator_decoratorr¬   ,  s?   ø€ õ -3©H¬HÀEð?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ðB ÐrA   r|   c                 ó2   — t          ¦   «         j        j        S rJ   )r	   r‘   Úis_returnabler@   rA   rB   r®   r®   w  s   € å‰9Œ9Ô#Ô1Ð1rA   c                 ó„   — t          ¦   «         j        } t          | j        o| j        j        t
          j        k    ¦  «        S rJ   )r	   r‘   r|   r•   rH   r-   r<   )r–   s    rB   Úin_block_selectionr°   |  s9   € å‰9Œ9Ô#€DÝØÔÐQ Ô!5Ô!:½mÔ>QÒ!Qñô ð rA   c                 ó6   — t          ¦   «         j        j        d uS rJ   )r	   rˆ   Údigraph_symbol1r@   rA   rB   Údigraph_symbol_1_givenr³   „  s   € å‰9Œ9ÔÔ-°TÐ9Ð9rA   c                 ó:   — t          ¦   «         j        j        dk    S )z-Returns True when the search buffer is empty.Ú )r	   r‘   rj   r@   rA   rB   Úsearch_buffer_is_emptyr¶   ‰  s   € õ ‰9Œ9Ô#Ô(¨BÒ.Ð.rA   c                 ó2   — t          ¦   «         j        j        S rJ   )r	   rˆ   Útilde_operatorr@   rA   rB   r¸   r¸   �  s   € å‰9Œ9ÔÔ,Ð,rA   r1   c                 óT&  ‡�‡‘‡’— t          ¦   «         } | j        }t          t          t          df         t          t
          t          gt          f         f         }dt          ¦   «         d„ fdt          ¦   «         d„ fdt          ¦   «         d„ fdt          ¦   «         d	„ fd
t          d„ fg}  |dt          ¬¦  «        t          d¦  «        ¦  «          |d¦  «        �dd„¦   «         } |dt          ¬¦  «        �dd„¦   «         } |dt          ¬¦  «        �dd„¦   «         } |dt          ¬¦  «         |dt          ¬¦  «        �dd„¦   «         ¦   «         } |dt          ¬¦  «        �dd„¦   «         } |dt          ¬¦  «         |dt          ¬¦  «        �dd„¦   «         ¦   «         }	 |dt          ¬¦  «        �dd „¦   «         }
 |d!t          ¬¦  «        �dd"„¦   «         } |dt          ¬¦  «        �dd#„¦   «         } |dt          ¬¦  «        �dd$„¦   «         } |d%t          ¬¦  «         |d&t          ¬¦  «        �dd'„¦   «         ¦   «         } |d(t          ¬¦  «        �dd)„¦   «         }  |d*t          t          z  ¬¦  «        t          d+¦  «        ¦  «           |d*t          t           z  ¬¦  «        t          d+¦  «        ¦  «          |d*t           t          z  ¬¦  «        �dd,„¦   «         } |d-t          ¬¦  «        �dd.„¦   «         } |d-t          ¬¦  «        �dd/„¦   «         } |d0t          t           z  ¬¦  «        �dd1„¦   «         } |d2t          t           z  ¬¦  «        �dd3„¦   «         } |d4t          t           z  ¬¦  «        �dd5„¦   «         } |d6d6t          t           z  ¬¦  «         |d7t          t           z  ¬¦  «        �dd8„¦   «         ¦   «         } |d9t          ¬¦  «        �dd:„¦   «         } |d;d;t          ¬¦  «        �dd<„¦   «         } |d=t          ¬¦  «        �dd>„¦   «         } |d?t          t           z  ¬¦  «        �dd@„¦   «         } |dAt          t           z  ¬¦  «        �ddB„¦   «         } |dAt          t           z  ¬¦  «        �d�ddF„¦   «         Š� |d2t          t           z  ¬¦  «        �dˆ�fdG„¦   «         } |dHt          t           z  ¬¦  «        �ddI„¦   «         } |dJdHt          t           z  ¬¦  «        �ddK„¦   «         } |dHt          t           z  ¬¦  «        �ddL„¦   «         } |dJdHt          t           z  ¬¦  «        �ddM„¦   «         }  |dNt          ¬¦  «        �ddO„¦   «         }! |dPt          ¬¦  «        �ddQ„¦   «         }" |dRt           j        dNt          ¬¦  «        �ddS„¦   «         }# |dRt           j        dPt          ¬¦  «        �ddT„¦   «         }$ |dUt          ¬¦  «        �ddV„¦   «         }% |dWt          ¬¦  «        �ddX„¦   «         }& |dYt          t           z  ¬¦  «        �ddZ„¦   «         }' |d[t          d\„ ¬]¦  «        �dd^„¦   «         }( |d_t          ¬¦  «        �dd`„¦   «         }) |dt          ¬¦  «        �dda„¦   «         }* |d_t          ¬¦  «        �ddb„¦   «         }+ |dct          ¬¦  «        �ddd„¦   «         }, |dct          ¬¦  «        �dde„¦   «         }- |dt          ¬¦  «        �ddf„¦   «         }. |d0dgt          ¬¦  «         |d0dht          ¬¦  «        �ddi„¦   «         ¦   «         }/ |d=t          ¬¦  «        �ddj„¦   «         }0 |dkt          ¬¦  «        �ddl„¦   «         }1 |dmdmt          ¬¦  «         |dnt          ¬¦  «        �ddo„¦   «         ¦   «         }2 |dpt          ¬¦  «        �ddq„¦   «         }3 |drt          ¬¦  «        �dds„¦   «         }4 |dtdtt          ¬¦  «         |dut          ¬¦  «        �ddv„¦   «         ¦   «         }5 |dwdwt          ¬¦  «         |dxt          ¬¦  «        �ddy„¦   «         ¦   «         }6 |dzt          t           z  ¬¦  «        �dd{„¦   «         }7 |d|t          t           z  ¬¦  «        �dd}„¦   «         }8 |d~t          ¬¦  «        �dd„¦   «         }9 |dJd[d[t          t           z  ¬¦  «        �dd€„¦   «         }: |dJd�d�t          t           z  ¬¦  «        �dd‚„¦   «         }; |dJd~d~t          t           z  ¬¦  «        �ddƒ„¦   «         }< |d„t          ¬¦  «        �dd…„¦   «         }= |d†t          ¬¦  «        �dd‡„¦   «         }> |dˆt          ¬¦  «        �dd‰„¦   «         }? |dŠt          ¬¦  «        �dd‹„¦   «         }@t%          | ¦  «        Š‘t'          | ¦  «        Š’ |t           j        t(          ¬¦  «        �ddŒ„¦   «         }A	 �d�dˆ‘fd�„}B |BdCdC¦  «          |BdCd�¦  «          |Bd�dC¦  «          |Bd�d�¦  «         �dˆ‘fd–„}C|D ]\  }D}E}F |C|E|Fg|D¢R Ž  Œ ‰‘dm¦  «        �dd™„¦   «         }G ‰‘dRt           j        dm¦  «        �ddš„¦   «         }H ‰‘dt¦  «        �dd›„¦   «         }I ‰‘dw¦  «        �ddœ„¦   «         }J ‰‘dJd�¦  «        �ddž„¦   «         }K ‰’dŸ¦  «        �dd „¦   «         }L ‰’d¡¦  «        �dd¢„¦   «         }M ‰’d£¦  «        �dd¤„¦   «         }N ‰’dg¦  «        �dd¥„¦   «         }O ‰’dh¦  «        �dd¦„¦   «         }P ‰’d§¦  «        �dd¨„¦   «         }Q ‰’d¦  «        �dd©„¦   «         }R ‰’d?dgd�¬ª¦  «        �dd«„¦   «         }S ‰’d0dgd�¬ª¦  «        �dd¬„¦   «         }T ‰’d?dhd�¬ª¦  «        �dd­„¦   «         }U ‰’d0dhd�¬ª¦  «        �dd®„¦   «         }V ‰’d0dNd�¬ª¦  «        �dd¯„¦   «         }W ‰’d°¦  «        �dd±„¦   «         }X ‰’d²¦  «        �dd³„¦   «         }Y	 �d�dˆ’fdº„}Zd»D ]3}[d¼D ]\  }\}] |Z|\|]|[¦  «         Œ |ZdˆdŠ|[dŸ¦  «          |Zd½d¾|[d¡¦  «         Œ4 ‰’d½¦  «        �dd¿„¦   «         }^ ‰’d¾¦  «        �ddÀ„¦   «         }_ ‰’dÁt           j        ¦  «        �ddÂ„¦   «         }` ‰’dÃt           j        ¦  «        �ddÄ„¦   «         }a ‰’dÅt           j        ¦  «        �ddÆ„¦   «         }b ‰’dÇt           j        ¦  «        �ddÈ„¦   «         }c�dˆ’fdÊ„}d |dd�¦  «          |ddC¦  «          ‰’dË¦  «         ‰’dÌ¦  «        �ddÍ„¦   «         ¦   «         }e ‰’dd�d�¬Î¦  «        �ddÏ„¦   «         }f ‰’dd�d�¬Î¦  «        �ddÐ„¦   «         }g ‰’dÑ¦  «         ‰’dÒ¦  «         ‰’dÓ¦  «        �ddÔ„¦   «         ¦   «         ¦   «         }h ‰’dÕ¦  «        �ddÖ„¦   «         }i ‰’d×¦  «        �ddØ„¦   «         }j ‰’dÙ¦  «        �ddÚ„¦   «         }k ‰’dÛd�¬ª¦  «        �ddÜ„¦   «         }l |dÛt          ¬¦  «        �ddÝ„¦   «         }m ‰’dÞd�¬ª¦  «        �ddß„¦   «         }n |dÞt          ¬¦  «        �ddà„¦   «         }o |dádpt          t          z  ¬¦  «         |dádÅt          t          z  ¬¦  «         |dád*t          t          z  ¬¦  «        �ddâ„¦   «         ¦   «         ¦   «         }p |dádrt          t          z  ¬¦  «         |dádŸt          t          z  ¬¦  «        �ddã„¦   «         ¦   «         }q |dádát          t          z  ¬¦  «        �ddä„¦   «         }r ‰’då¦  «        �ddæ„¦   «         }s ‰’dç¦  «        �ddè„¦   «         }t ‰’dJdJ¦  «        �ddé„¦   «         }u ‰’dJdê¦  «        �ddë„¦   «         }v ‰’dJd§¦  «        �ddì„¦   «         }w ‰’dJd¦  «        �ddí„¦   «         }x ‰’dJdî¦  «        �ddï„¦   «         }y ‰’dð¦  «        �ddñ„¦   «         }z |dðt*          ¬¦  «        �ddò„¦   «         }{dóD ]/}| |||t          t          z  t(          z  ¬¦  «        �ddô„¦   «         }}Œ0 |d²t          t          z  t(          z  t*          z  ¬¦  «        �ddõ„¦   «         }~ |t           j        t,          ¬¦  «        �ddö„¦   «         } |t           j        t.          ¬¦  «        �dd÷„¦   «         }€ |t           j        t0          dø„ ¬]¦  «        �ddù„¦   «         }� |d!t0          ¬¦  «        �ddú„¦   «         }‚ |dût0          ¬¦  «        �ddü„¦   «         }ƒ |dÌt0          ¬¦  «        �ddý„¦   «         }„ |dÓt0          ¬¦  «        �ddþ„¦   «         }… |dt0          ¬¦  «         |dt0          ¬¦  «        �ddÿ„¦   «         ¦   «         }† |�d �dt          ¬¦  «        �d�d„¦   «         }‡ |�d �dt          ¬¦  «        �d�d„¦   «         }ˆ |�dt          t,          z  ¬¦  «        �d�d„¦   «         }‰ |t           j        t2          t4           z  ¬¦  «        �d�d„¦   «         }Š |t           j        t2          t4          z  ¬¦  «        �d�d„¦   «         }‹ |�d	t          t,          z  ¬¦  «        �d�d
„¦   «         }Œ |d�t           j        t          t6           z  ¬¦  «        �d�d„¦   «         }� |d�t          t6          z  ¬¦  «        �d�d„¦   «         }Ž |�dt           j        t          dC�¬¦  «        �d�d„¦   «         }�t9          | t:          ¦  «        S (  z�
    Vi extensions.

    # Overview of Readline Vi commands:
    # http://www.catonmat.net/download/bash-vi-editing-mode-cheat-sheet.pdf
    .)Úgú?c                ó,   — t          j        | d¦  «        S )NÚrot_13)ÚcodecsÚencode©Ústrings    rB   ú<lambda>z"load_vi_bindings.<locals>.<lambda>±  s   € �6œ=¨°Ñ:Ô:€ rA   )rº   Úuc                ó    —  | j         ¦   «         S rJ   ©ÚlowerrÀ   s    rB   rÂ   z"load_vi_bindings.<locals>.<lambda>´  ó   € ¨l¨f¬l©n¬n€ rA   )rº   ÚUc                ó    —  | j         ¦   «         S rJ   ©ÚupperrÀ   s    rB   rÂ   z"load_vi_bindings.<locals>.<lambda>¶  rÇ   rA   )rº   ú~c                ó    —  | j         ¦   «         S rJ   ©ÚswapcaserÀ   s    rB   rÂ   z"load_vi_bindings.<locals>.<lambda>¸  s   € ¨o¨f¬oÑ.?Ô.?€ rA   )rÌ   c                ó    —  | j         ¦   «         S rJ   rÎ   rÀ   s    rB   rÂ   z"load_vi_bindings.<locals>.<lambda>¼  s   € ˜?˜6œ?Ñ,Ô,€ rA   zc-v©rv   zquoted-insertÚescaper‚   rƒ   rM   r„   c                ó.  — | j         }| j        j        }|j        t          j        t          j        fv r'|xj        |j         	                    ¦   «         z  c_        t          j
        |_        t          |j        ¦  «        r|                     ¦   «          dS dS )z4
        Escape goes to vi navigation mode.
        N)r‘   r‡   rˆ   Ú
input_moder(   ÚINSERTÚREPLACErY   rV   Úget_cursor_left_positionÚ
NAVIGATIONr|   r•   Úexit_selection)r‚   ra   rˆ   s      rB   Ú_back_to_navigationz-load_vi_bindings.<locals>._back_to_navigationÃ  s‘   € ð
 Ô%ˆØ”9Ô%ˆàÔ¥9Ô#3µYÔ5FÐ"GÐGÐGØÐ"Ô" f¤o×&NÒ&NÑ&PÔ&PÑPÐ"Ô"å'Ô2ˆÔå�Ô&Ñ'Ô'ð 	$Ø×!Ò!Ñ#Ô#Ð#Ð#Ð#ð	$ð 	$rA   Úkc                óF   — | j                              | j        ¬¦  «         dS )z-
        Arrow up in selection mode.
        ©ÚcountN)r‘   Ú	cursor_upr‹   ©r‚   s    rB   Ú_up_in_selectionz*load_vi_bindings.<locals>._up_in_selectionÓ  s&   € ð
 	Ô×&Ò&¨U¬YÐ&Ñ7Ô7Ð7Ð7Ð7rA   Újc                óF   — | j                              | j        ¬¦  «         dS )z/
        Arrow down in selection mode.
        rÝ   N)r‘   Úcursor_downr‹   rà   s    rB   Ú_down_in_selectionz,load_vi_bindings.<locals>._down_in_selectionÚ  s&   € ð
 	Ô×(Ò(¨u¬yÐ(Ñ9Ô9Ð9Ð9Ð9rA   Úupzc-pc                óF   — | j                              | j        ¬¦  «         dS )zA
        Arrow up and ControlP in navigation mode go up.
        rÝ   N©r‘   Úauto_upr‹   rà   s    rB   Ú_up_in_navigationz+load_vi_bindings.<locals>._up_in_navigationá  s&   € ð 	Ô×$Ò$¨5¬9Ð$Ñ5Ô5Ð5Ð5Ð5rA   c                óH   — | j                              | j        d¬¦  «         dS )zd
        Go up, but if we enter a new history entry, move to the start of the
        line.
        T©rÞ   Ú&go_to_start_of_line_if_history_changesNrè   rà   s    rB   Ú_go_upz load_vi_bindings.<locals>._go_upé  s5   € ð 	Ô×$Ò$Ø”)ÀDð 	%ñ 	
ô 	
ð 	
ð 	
ð 	
rA   Údownzc-nc                óF   — | j                              | j        ¬¦  «         dS )z>
        Arrow down and Control-N in navigation mode.
        rÝ   N©r‘   Ú	auto_downr‹   rà   s    rB   Ú_go_downz"load_vi_bindings.<locals>._go_downó  s&   € ð 	Ô×&Ò&¨U¬YÐ&Ñ7Ô7Ð7Ð7Ð7rA   c                óH   — | j                              | j        d¬¦  «         dS )z\
        Go down, but if we enter a new history entry, go to the start of the line.
        Trì   Nrñ   rà   s    rB   Ú	_go_down2z#load_vi_bindings.<locals>._go_down2û  s5   € ð
 	Ô×&Ò&Ø”)ÀDð 	'ñ 	
ô 	
ð 	
ð 	
ð 	
rA   Ú	backspacec                óv   — | j         xj        | j         j                             | j        ¬¦  «        z  c_        dS )z2
        In navigation-mode, move cursor.
        rÝ   N)r‘   rY   rV   r×   r‹   rà   s    rB   Ú_go_leftz"load_vi_bindings.<locals>._go_left  s=   € ð
 	ÔÐ,Ô,ØÔ Ô)×BÒBÈÌÐBÑSÔSñ	
Ð,Ô,Ð,Ð,rA   c                óz   — | j         }|j        r|                     ¦   «          d S |                     d¬¦  «         d S )NT)Úselect_first)r‘   Úcomplete_stateÚcomplete_nextÚstart_completion©r‚   Úbs     rB   Ú_complete_nextz(load_vi_bindings.<locals>._complete_next  sH   € àÔ ˆàÔð 	2Ø�OŠOÑÔÐÐÐà×Ò¨DÐÑ1Ô1Ð1Ð1Ð1rA   c                óz   — | j         }|j        r|                     ¦   «          dS |                     d¬¦  «         dS )z4
        Control-P: To previous completion.
        T)Úselect_lastN)r‘   rû   Úcomplete_previousrý   rþ   s     rB   Ú_complete_prevz(load_vi_bindings.<locals>._complete_prev  sL   € ð
 Ô ˆàÔð 	1Ø×ÒÑ!Ô!Ð!Ð!Ð!à×Ò¨4ÐÑ0Ô0Ð0Ð0Ð0rA   úc-gzc-yc                ó   — d| j         _        dS )z,
        Accept current completion.
        N)r‘   rû   rà   s    rB   Ú_accept_completionz,load_vi_bindings.<locals>._accept_completion"  s   € ð /3ˆÔÔ+Ð+Ð+rA   zc-ec                ó8   — | j                              ¦   «          dS )zF
        Cancel completion. Go back to originally typed text.
        N)r‘   Úcancel_completionrà   s    rB   Ú_cancel_completionz,load_vi_bindings.<locals>._cancel_completion*  s   € ð
 	Ô×.Ò.Ñ0Ô0Ð0Ð0Ð0rA   Úenterzaccept-linec                óœ   — | j         }|                     | j        ¬¦  «         |xj        |j                             d¬¦  «        z  c_        dS )z3
        Go to the beginning of next line.
        rÝ   T©Úafter_whitespaceN)r‘   rä   r‹   rY   rV   Úget_start_of_line_positionrþ   s     rB   Ú_start_of_next_linez-load_vi_bindings.<locals>._start_of_next_line:  sY   € ð
 Ô ˆØ	�Š˜EœIˆÑ&Ô&Ð&Ø	ÐÔ˜QœZ×BÒBØ!ð Cñ 
ô 
ñ 	
ÐÔÐÐrA   Úinsertc                ó<   — t           j        | j        j        _        dS ©z*
        Pressing the Insert key.
        N©r(   rÕ   r‡   rˆ   rÔ   rà   s    rB   Ú_insert_modez&load_vi_bindings.<locals>._insert_modeI  s   € õ
 )2Ô(8ˆŒ	ÔÔ%Ð%Ð%rA   c                ó<   — t           j        | j        j        _        dS r  )r(   rØ   r‡   rˆ   rÔ   rà   s    rB   Ú_navigation_modez*load_vi_bindings.<locals>._navigation_modeP  s   € õ
 )2Ô(<ˆŒ	ÔÔ%Ð%Ð%rA   Úac                óž   — | j         xj        | j         j                             ¦   «         z  c_        t          j        | j        j        _        d S rJ   )	r‘   rY   rV   Úget_cursor_right_positionr(   rÕ   r‡   rˆ   rÔ   rà   s    rB   Ú_azload_vi_bindings.<locals>._aW  sH   € ð 	ÔÐ,Ô,ØÔ Ô)×CÒCÑEÔEñ	
Ð,Ô,õ )2Ô(8ˆŒ	ÔÔ%Ð%Ð%rA   ÚAc                óž   — | j         xj        | j         j                             ¦   «         z  c_        t          j        | j        j        _        d S rJ   )	r‘   rY   rV   Úget_end_of_line_positionr(   rÕ   r‡   rˆ   rÔ   rà   s    rB   Ú_Azload_vi_bindings.<locals>._A`  sF   € àÔÐ,Ô,ØÔ Ô)×BÒBÑDÔDñ	
Ð,Ô,õ )2Ô(8ˆŒ	ÔÔ%Ð%Ð%rA   ÚCc                óâ   — | j         }|                     |j                             ¦   «         ¬¦  «        }| j        j                             |¦  «         t          j        | j        j	        _
        dS )z_
        Change to end of line.
        Same as 'c$' (which is implemented elsewhere.)
        rÝ   N)r‘   ÚdeleterV   r  r‡   Ú	clipboardÚset_textr(   rÕ   rˆ   rÔ   ©r‚   ra   Údeleteds      rB   Ú_change_until_end_of_linez3load_vi_bindings.<locals>._change_until_end_of_lineg  s\   € ð Ô%ˆà—-’- f¤o×&NÒ&NÑ&PÔ&P�-ÑQÔQˆØŒ	Ô×$Ò$ WÑ-Ô-Ð-Ý(1Ô(8ˆŒ	ÔÔ%Ð%Ð%rA   ÚcÚSc                ó|  — | j         }t          |j        j        t          j        ¦  «        }| j        j                             |¦  «         |xj	        |j         
                    d¬¦  «        z  c_	        |                     |j                             ¦   «         ¬¦  «         t          j        | j        j        _        dS )z%
        Change current line
        Tr  rÝ   N)r‘   r   rV   Úcurrent_liner-   rO   r‡   r#  Úset_datarY   r  r"  r  r(   rÕ   rˆ   rÔ   )r‚   ra   Údatas      rB   Ú_change_current_linez.load_vi_bindings.<locals>._change_current_lines  s«   € ð Ô%ˆõ ˜Vœ_Ô9½=Ô;NÑOÔOˆØŒ	Ô×$Ò$ TÑ*Ô*Ð*ð 	ÐÔ &¤/×"LÒ"LØ!ð #Mñ #
ô #
ñ 	
ÐÔð 	�Š˜FœO×DÒDÑFÔFˆÑGÔGÐGÝ(1Ô(8ˆŒ	ÔÔ%Ð%Ð%rA   ÚDc                ó¬   — | j         }|                     |j                             ¦   «         ¬¦  «        }| j        j                             |¦  «         dS )zH
        Delete from cursor position until the end of the line.
        rÝ   N)r‘   r"  rV   r  r‡   r#  r$  r%  s      rB   Ú_delete_until_end_of_linez3load_vi_bindings.<locals>._delete_until_end_of_line†  sL   € ð
 Ô%ˆØ—-’- f¤o×&NÒ&NÑ&PÔ&P�-ÑQÔQˆØŒ	Ô×$Ò$ WÑ-Ô-Ð-Ð-Ð-rA   Údc           	     ó|  — | j         }|j        j        }d                     |d|j        j        …         ¦  «        }d                     ||j        j        |j        j        | j        z   …         ¦  «        }d                     ||j        j        | j        z   d…         ¦  «        }|r|r|dz   }t          ||z   t          |¦  «        t          |¦  «        z   t          |                     d¦  «        ¦  «        z
  ¬¦  «        |_        | j	        j
                             t          |t          j        ¦  «        ¦  «         dS )z<
        Delete line. (Or the following 'n' lines.)
        ú
Nú )rj   rY   )r‘   rV   r\   ÚjoinÚcursor_position_rowr‹   r   r[   Úlstripr‡   r#  r,  r   r-   rO   )r‚   ra   r\   Úbeforer&  Úafters         rB   Ú_delete_linez&load_vi_bindings.<locals>._delete_line�  s0  € ð
 Ô%ˆð ”Ô%ˆà—’˜5Ð!F 6¤?Ô#FÐ!FÔGÑHÔHˆØ—)’)ØØ”Ô3°f´oÔ6YØ”)ñ7ð ôñ
ô 
ˆð —	’	˜% ¤Ô CÀeÄiÑ OÐ QÐ QÔRÑSÔSˆð ð 	#�eð 	#Ø˜d‘]ˆFõ #Ø˜%‘å ™KœK­#¨e©*¬*Ñ4µs¸5¿<º<ÈÑ;LÔ;LÑ7MÔ7MÑMð
ñ 
ô 
ˆŒð 	Œ	Ô×$Ò$¥]°7½MÔ<OÑ%PÔ%PÑQÔQÐQÐQÐQrA   Úxc                óv   — | j                              ¦   «         }| j        j                             |¦  «         dS )zB
        Cut selection.
        ('x' is not an operator.)
        N)r‘   rk   r‡   r#  r,  )r‚   rm   s     rB   Ú_cutzload_vi_bindings.<locals>._cut°  s7   € ð Ô-×;Ò;Ñ=Ô=ˆØŒ	Ô×$Ò$ ^Ñ4Ô4Ð4Ð4Ð4rA   Úic                ó<   — t           j        | j        j        _        d S rJ   r  rà   s    rB   Ú_izload_vi_bindings.<locals>._i¹  s   € å(1Ô(8ˆŒ	ÔÔ%Ð%Ð%rA   ÚIc                ó¢   — t           j        | j        j        _        | j        xj        | j        j                             d¬¦  «        z  c_        d S )NTr  )	r(   rÕ   r‡   rˆ   rÔ   r‘   rY   rV   r  rà   s    rB   Ú_Izload_vi_bindings.<locals>._I½  sQ   € å(1Ô(8ˆŒ	ÔÔ%ØÔÐ,Ô,ØÔ Ô)×DÒDØ!%ð Eñ ô ñ	
Ð,Ô,Ð,Ð,rA   Fr:  r|   c                óZ  — | j         }g }|rd	d„}nd	d„}t          |j                             ¦   «         ¦  «        D ]9\  }}|                      ||¦  «        ¦  «         |dk    r ||¦  «        |_        Œ:||_        t          j        | j	        j
        _        |                     ¦   «          dS )
z1
        Insert in block selection mode.
        Úfrom_torS   rM   rF   c                ó   — | d         S r†   r@   ©rF  s    rB   Úget_poszDload_vi_bindings.<locals>.insert_in_block_selection.<locals>.get_posÒ  ó   € Ø˜q”zÐ!rA   c                ó   — | d         S )Nr   r@   rH  s    rB   rI  zDload_vi_bindings.<locals>.insert_in_block_selection.<locals>.get_pos×  rJ  rA   r   N)rF  rS   rM   rF   )r‘   Ú	enumeraterV   Úselection_rangesÚappendrY   Úmultiple_cursor_positionsr(   ÚINSERT_MULTIPLEr‡   rˆ   rÔ   rÙ   )r‚   r:  r–   Ú	positionsrI  r?  rF  s          rB   Úinsert_in_block_selectionz3load_vi_bindings.<locals>.insert_in_block_selectionÆ  sß   € ð
 Ô#ˆð ˆ	àð 	"ð"ð "ð "ð "ð "ð
"ð "ð "ð "õ $ D¤M×$BÒ$BÑ$DÔ$DÑEÔEð 	8ð 	8‰JˆAˆwØ×Ò˜W˜W WÑ-Ô-Ñ.Ô.Ð.Ø�AŠvˆvØ'. w¨wÑ'7Ô'7�Ô$øà)2ˆÔ&õ )2Ô(AˆŒ	ÔÔ%Ø×ÒÑÔÐÐÐrA   c                ó"   •—  ‰| d¬¦  «         d S )NT)r:  r@   )r‚   rR  s    €rB   Ú_append_after_blockz-load_vi_bindings.<locals>._append_after_blockå  s   ø€ à!Ð! %¨tÐ4Ñ4Ô4Ð4Ð4Ð4rA   ÚJc                óf   — t          | j        ¦  «        D ]}| j                             ¦   «          ŒdS )z
        Join lines.
        N©Úranger‹   r‘   Újoin_next_line©r‚   r?  s     rB   Ú_joinzload_vi_bindings.<locals>._joiné  s?   € õ
 �u”yÑ!Ô!ð 	2ð 	2ˆAØÔ ×/Ò/Ñ1Ô1Ð1Ð1ð	2ð 	2rA   rº   c                ój   — t          | j        ¦  «        D ]}| j                             d¬¦  «         ŒdS )z+
        Join lines without space.
        rµ   ©Ú	separatorNrW  rZ  s     rB   Ú_join_nospacez'load_vi_bindings.<locals>._join_nospaceñ  sD   € õ
 �u”yÑ!Ô!ð 	>ð 	>ˆAØÔ ×/Ò/¸"Ð/Ñ=Ô=Ð=Ð=ð	>ð 	>rA   c                ó8   — | j                              ¦   «          dS )z&
        Join selected lines.
        N©r‘   Újoin_selected_linesrà   s    rB   Ú_join_selectionz)load_vi_bindings.<locals>._join_selectionù  s   € ð
 	Ô×0Ò0Ñ2Ô2Ð2Ð2Ð2rA   c                ó<   — | j                              d¬¦  «         dS )z4
        Join selected lines without space.
        rµ   r]  Nra  rà   s    rB   Ú_join_selection_nospacez1load_vi_bindings.<locals>._join_selection_nospace   s$   € ð
 	Ô×0Ò0¸2Ð0Ñ>Ô>Ð>Ð>Ð>rA   Úpc                ó–   — | j                              | j        j                             ¦   «         | j        t          j        ¬¦  «         dS )z
        Paste after
        ©rÞ   Ú
paste_modeN)r‘   Úpaste_clipboard_datar‡   r#  Úget_datar‹   r+   ÚVI_AFTERrà   s    rB   Ú_pastez load_vi_bindings.<locals>._paste  sM   € ð
 	Ô×1Ò1ØŒIÔ×(Ò(Ñ*Ô*Ø”)Ý Ô)ð 	2ñ 	
ô 	
ð 	
ð 	
ð 	
rA   ÚPc                ó–   — | j                              | j        j                             ¦   «         | j        t          j        ¬¦  «         dS )z
        Paste before
        rh  N)r‘   rj  r‡   r#  rk  r‹   r+   Ú	VI_BEFORErà   s    rB   Ú_paste_beforez'load_vi_bindings.<locals>._paste_before  sM   € ð
 	Ô×1Ò1ØŒIÔ×(Ò(Ñ*Ô*Ø”)Ý Ô*ð 	2ñ 	
ô 	
ð 	
ð 	
ð 	
rA   ú"c                óè   — | j         d         j        }|t          v rT| j        j        j                             |¦  «        }|r0| j                             || j	        t          j        ¬¦  «         dS dS dS )z,
        Paste from named register.
        r2   rh  N)Úkey_sequencer-  Úvi_register_namesr‡   rˆ   Únamed_registersÚgetr‘   rj  r‹   r+   rl  ©r‚   r(  r-  s      rB   Ú_paste_registerz)load_vi_bindings.<locals>._paste_register  s‹   € ð
 Ô˜qÔ!Ô&ˆØÕ!Ð!Ð!Ø”9Ô%Ô5×9Ò9¸!Ñ<Ô<ˆDØð ØÔ$×9Ò9Ø ¤	µiÔ6Hð :ñ ô ð ð ð ð "Ð!ðð rA   c                óè   — | j         d         j        }|t          v rT| j        j        j                             |¦  «        }|r0| j                             || j	        t          j        ¬¦  «         dS dS dS )z5
        Paste (before) from named register.
        r2   rh  N)rt  r-  ru  r‡   rˆ   rv  rw  r‘   rj  r‹   r+   rp  rx  s      rB   Ú_paste_register_beforez0load_vi_bindings.<locals>._paste_register_before*  s‹   € ð
 Ô˜qÔ!Ô&ˆØÕ!Ð!Ð!Ø”9Ô%Ô5×9Ò9¸!Ñ<Ô<ˆDØð ØÔ$×9Ò9Ø ¤	µiÔ6Ið :ñ ô ð ð ð ð "Ð!ðð rA   Úrc                ó<   — t           j        | j        j        _        dS )z.
        Go to 'replace-single'-mode.
        N)r(   ÚREPLACE_SINGLEr‡   rˆ   rÔ   rà   s    rB   Ú_replacez"load_vi_bindings.<locals>._replace7  s   € õ
 )2Ô(@ˆŒ	ÔÔ%Ð%Ð%rA   ÚRc                ó<   — t           j        | j        j        _        dS )z'
        Go to 'replace'-mode.
        N)r(   rÖ   r‡   rˆ   rÔ   rà   s    rB   Ú_replace_modez'load_vi_bindings.<locals>._replace_mode>  s   € õ
 )2Ô(9ˆŒ	ÔÔ%Ð%Ð%rA   Úsc                óº   — | j                              | j        ¬¦  «        }| j        j                             |¦  «         t          j        | j        j        _	        dS )z_
        Substitute with new text
        (Delete character(s) and go to insert mode.)
        rÝ   N)
r‘   r"  r‹   r‡   r#  r$  r(   rÕ   rˆ   rÔ   ©r‚   rj   s     rB   Ú_substitutez%load_vi_bindings.<locals>._substituteE  sN   € ð Ô#×*Ò*°´Ð*Ñ;Ô;ˆØŒ	Ô×$Ò$ TÑ*Ô*Ð*Ý(1Ô(8ˆŒ	ÔÔ%Ð%Ð%rA   rÃ   c                ó   — dS )NFr@   ©Úes    rB   rÂ   z"load_vi_bindings.<locals>.<lambda>O  s   € À5€ rA   )rv   Úsave_beforec                óf   — t          | j        ¦  «        D ]}| j                             ¦   «          Œd S rJ   )rX  r‹   r‘   ÚundorZ  s     rB   Ú_undozload_vi_bindings.<locals>._undoO  s=   € å�u”yÑ!Ô!ð 	(ð 	(ˆAØÔ ×%Ò%Ñ'Ô'Ð'Ð'ð	(ð 	(rA   ÚVc                óP   — | j                              t          j        ¬¦  «         dS )z(
        Start lines selection.
        ©rR   N)r‘   Ústart_selectionr-   rO   rà   s    rB   Ú_visual_linez&load_vi_bindings.<locals>._visual_lineT  ó'   € ð
 	Ô×,Ò,½MÔ<OÐ,ÑPÔPÐPÐPÐPrA   c                óP   — | j                              t          j        ¬¦  «         dS )z-
        Enter block selection mode.
        r�  N)r‘   r‘  r-   r<   rà   s    rB   Ú_visual_blockz'load_vi_bindings.<locals>._visual_block[  r“  rA   c                ó¨   — | j         j        }|�C|j        t          j        k    rt          j        |_        dS | j                              ¦   «          dS dS )zn
        Exit line selection mode, or go from non line selection mode to line
        selection mode.
        N)r‘   r•   rH   r-   rO   rÙ   ©r‚   r•   s     rB   Ú_visual_line2z'load_vi_bindings.<locals>._visual_line2b  óZ   € ð  Ô.Ô>ˆàÐ&ØÔ#¥}Ô':Ò:Ð:Ý'4Ô':�Ô$Ð$Ð$àÔ$×3Ò3Ñ5Ô5Ð5Ð5Ð5ð	 'Ð&rA   Úvc                óP   — | j                              t          j        ¬¦  «         dS )z1
        Enter character selection mode.
        r�  N)r‘   r‘  r-   rP   rà   s    rB   Ú_visualz!load_vi_bindings.<locals>._visualp  s'   € ð
 	Ô×,Ò,½MÔ<TÐ,ÑUÔUÐUÐUÐUrA   c                ó¨   — | j         j        }|�C|j        t          j        k    rt          j        |_        dS | j                              ¦   «          dS dS )z}
        Exit character selection mode, or go from non-character-selection mode
        to character selection mode.
        N)r‘   r•   rH   r-   rP   rÙ   r—  s     rB   Ú_visual2z"load_vi_bindings.<locals>._visual2w  sZ   € ð  Ô.Ô>ˆàÐ&ØÔ#¥}Ô'?Ò?Ð?Ý'4Ô'?�Ô$Ð$Ð$àÔ$×3Ò3Ñ5Ô5Ð5Ð5Ð5ð	 'Ð&rA   c                ó¨   — | j         j        }|�C|j        t          j        k    rt          j        |_        dS | j                              ¦   «          dS dS )zq
        Exit block selection mode, or go from non block selection mode to block
        selection mode.
        N)r‘   r•   rH   r-   r<   rÙ   r—  s     rB   Ú_visual_block2z(load_vi_bindings.<locals>._visual_block2…  r™  rA   ÚwÚWc                óŠ   — | j         }|j        r2|j        j        t          j        k    rt          j        |j        _        dS dS dS )zP
        Switch from visual linewise mode to visual characterwise mode.
        N)r‘   r•   rH   r-   rO   rP   ©r‚   ra   s     rB   Ú_visual_auto_wordz+load_vi_bindings.<locals>._visual_auto_word“  sT   € ð Ô%ˆð Ô"ð	CàÔ&Ô+­}Ô/BÒBÐBå*7Ô*BˆFÔ"Ô'Ð'Ð'ð		Cð 	CàBÐBrA   c                óè   — | j         }t          | j        t          |j        j        ¦  «        ¦  «        }|r<| j                              |¬¦  «        }| j        j         	                    |¦  «         dS dS )z#
        Delete character.
        rÝ   N)
r‘   Úminr‹   r[   rV   Úcurrent_line_after_cursorr"  r‡   r#  r$  ©r‚   r–   rÞ   rj   s       rB   Ú_deletez!load_vi_bindings.<locals>._delete¡  st   € ð
 Ô#ˆÝ�E”I�s 4¤=Ô#JÑKÔKÑLÔLˆØð 	/ØÔ'×.Ò.°UÐ.Ñ;Ô;ˆDØŒIÔ×(Ò(¨Ñ.Ô.Ð.Ð.Ð.ð	/ð 	/rA   ÚXc                óè   — | j         }t          | j        t          |j        j        ¦  «        ¦  «        }|r<| j                              |¬¦  «        }| j        j         	                    |¦  «         d S d S )NrÝ   )
r‘   r§  r‹   r[   rV   Úcurrent_line_before_cursorÚdelete_before_cursorr‡   r#  r$  r©  s       rB   Ú_delete_before_cursorz/load_vi_bindings.<locals>._delete_before_cursor¬  sr   € àÔ#ˆÝ�E”I�s 4¤=Ô#KÑLÔLÑMÔMˆØð 	/ØÔ'×<Ò<À5Ð<ÑIÔIˆDØŒIÔ×(Ò(¨Ñ.Ô.Ð.Ð.Ð.ð	/ð 	/rA   ÚyÚYc                óÖ   — d                      | j        j        j        d| j        …         ¦  «        }| j        j                             t          |t          j
        ¦  «        ¦  «         dS )z&
        Yank the whole line.
        r4  N)r6  r‘   rV   Úlines_from_currentr‹   r‡   r#  r,  r   r-   rO   r…  s     rB   Ú
_yank_linez$load_vi_bindings.<locals>._yank_line´  sU   € ð �yŠy˜Ô-Ô6ÔIÈ+ÈEÌIÈ+ÔVÑWÔWˆØŒ	Ô×$Ò$¥]°4½Ô9LÑ%MÔ%MÑNÔNÐNÐNÐNrA   ú+c                óÂ   — | j         }|xj        |j                             | j        ¬¦  «        z  c_        |xj        |j                             d¬¦  «        z  c_        dS )z;
        Move to first non whitespace of next line
        rÝ   Tr  N)r‘   rY   rV   Úget_cursor_down_positionr‹   r  r¤  s     rB   Ú
_next_linez$load_vi_bindings.<locals>._next_line½  sx   € ð
 Ô%ˆØÐÔ &¤/×"JÒ"JØ”)ð #Kñ #
ô #
ñ 	
ÐÔð 	ÐÔ &¤/×"LÒ"LØ!ð #Mñ #
ô #
ñ 	
ÐÔÐÐrA   ú-c                óÂ   — | j         }|xj        |j                             | j        ¬¦  «        z  c_        |xj        |j                             d¬¦  «        z  c_        dS )z?
        Move to first non whitespace of previous line
        rÝ   Tr  N)r‘   rY   rV   Úget_cursor_up_positionr‹   r  r¤  s     rB   Ú
_prev_linez$load_vi_bindings.<locals>._prev_lineÊ  sx   € ð
 Ô%ˆØÐÔ &¤/×"HÒ"HØ”)ð #Iñ #
ô #
ñ 	
ÐÔð 	ÐÔ &¤/×"LÒ"LØ!ð #Mñ #
ô #
ñ 	
ÐÔÐÐrA   ú>zc-tc                ó^   — | j         }|j        j        }t          |||| j        z   ¦  «         dS )z
        Indent lines.
        N)r‘   rV   r7  r   r‹   )r‚   ra   Úcurrent_rows      rB   Ú_indentz!load_vi_bindings.<locals>._indent×  s5   € ð Ô%ˆØ”oÔ9ˆÝˆv�{ K°%´)Ñ$;Ñ<Ô<Ð<Ð<Ð<rA   ú<zc-dc                ód   — | j         j        j        }t          | j         ||| j        z   ¦  «         dS )z!
        Unindent lines.
        N)r‘   rV   r7  r   r‹   )r‚   r¿  s     rB   Ú	_unindentz#load_vi_bindings.<locals>._unindentá  s4   € ð Ô*Ô3ÔGˆÝ�Ô% {°KÀ%Ä)Ñ4KÑLÔLÐLÐLÐLrA   ÚOc                óŒ   — | j                              t          ¦   «          ¬¦  «         t          j        | j        j        _        dS )z:
        Open line above and enter insertion mode
        ©Úcopy_marginN)r‘   Úinsert_line_abover   r(   rÕ   r‡   rˆ   rÔ   rà   s    rB   Ú_open_abovez%load_vi_bindings.<locals>._open_aboveê  ó;   € ð
 	Ô×.Ò.½}¹¼Ð;NÐ.ÑOÔOÐOÝ(1Ô(8ˆŒ	ÔÔ%Ð%Ð%rA   Úoc                óŒ   — | j                              t          ¦   «          ¬¦  «         t          j        | j        j        _        dS )z:
        Open line below and enter insertion mode
        rÆ  N)r‘   Úinsert_line_belowr   r(   rÕ   r‡   rˆ   rÔ   rà   s    rB   Ú_open_belowz%load_vi_bindings.<locals>._open_belowò  rÊ  rA   rÌ   c                ó–   — | j         }|j        j        }|�1|dk    r-|                     |                     ¦   «         d¬¦  «         dS dS dS )zL
        Reverse case of current character and move cursor forward.
        Nr4  T©Ú	overwrite)r‘   rV   Úcurrent_charÚinsert_textrÏ   )r‚   ra   r(  s      rB   Ú_reverse_casez'load_vi_bindings.<locals>._reverse_caseú  sU   € ð
 Ô%ˆØŒOÔ(ˆàˆ=˜Q $šY˜YØ×Ò˜qŸzšz™|œ|°tÐÑ<Ô<Ð<Ð<Ð<ð ˆ=˜Y˜YrA   c                ó@   — | j         }|                     d„ ¦  «         dS )z)
        Lowercase current line.
        c                ó*   — |                       ¦   «         S rJ   rÅ   ©rƒ  s    rB   rÂ   z;load_vi_bindings.<locals>._lowercase_line.<locals>.<lambda>  ó   € ¨a¯gªg©i¬i€ rA   N©r‘   Útransform_current_line©r‚   r–   s     rB   Ú_lowercase_linez)load_vi_bindings.<locals>._lowercase_line  ó*   € ð
 Ô#ˆØ×#Ò#Ð$7Ð$7Ñ8Ô8Ð8Ð8Ð8rA   rÈ   c                ó@   — | j         }|                     d„ ¦  «         dS )z)
        Uppercase current line.
        c                ó*   — |                       ¦   «         S rJ   rÊ   r×  s    rB   rÂ   z;load_vi_bindings.<locals>._uppercase_line.<locals>.<lambda>  rØ  rA   NrÙ  rÛ  s     rB   Ú_uppercase_linez)load_vi_bindings.<locals>._uppercase_line  rÝ  rA   c                ó@   — | j         }|                     d„ ¦  «         dS )z0
        Swap case of the current line.
        c                ó*   — |                       ¦   «         S rJ   rÎ   r×  s    rB   rÂ   z:load_vi_bindings.<locals>._swapcase_line.<locals>.<lambda>  s   € ¨a¯jªj©l¬l€ rA   NrÙ  rÛ  s     rB   Ú_swapcase_linez(load_vi_bindings.<locals>._swapcase_line  s*   € ð
 Ô#ˆØ×#Ò#Ð$:Ð$:Ñ;Ô;Ð;Ð;Ð;rA   ú#c                óÄ   — | j         }| j        j        }|j                             ¦   «         |_        t          j        |_        | 	                    || j
        d¬¦  «         dS )z9
        Go to previous occurrence of this word.
        F©rÞ   Úinclude_current_positionN)r‘   r‡   Úcurrent_search_staterV   Úget_word_under_cursorrj   r*   ÚBACKWARDÚ	directionÚapply_searchr‹   ©r‚   rÿ   Úsearch_states      rB   Ú_prev_occurrencez*load_vi_bindings.<locals>._prev_occurrence  sW   € ð
 Ô ˆØ”yÔ5ˆàœJ×<Ò<Ñ>Ô>ˆÔÝ!0Ô!9ˆÔà	�Š�|¨5¬9ÈuˆÑUÔUÐUÐUÐUrA   Ú*c                óÄ   — | j         }| j        j        }|j                             ¦   «         |_        t          j        |_        | 	                    || j
        d¬¦  «         dS )z5
        Go to next occurrence of this word.
        Fræ  N)r‘   r‡   rè  rV   ré  rj   r*   ÚFORWARDrë  rì  r‹   rí  s      rB   Ú_next_occurrencez*load_vi_bindings.<locals>._next_occurrence*  sW   € ð
 Ô ˆØ”yÔ5ˆàœJ×<Ò<Ñ>Ô>ˆÔÝ!0Ô!8ˆÔà	�Š�|¨5¬9ÈuˆÑUÔUÐUÐUÐUrA   ú(c                ó   — d S rJ   r@   rà   s    rB   Ú_begin_of_sentencez,load_vi_bindings.<locals>._begin_of_sentence7  ó	   € ð 	ˆrA   ú)c                ó   — d S rJ   r@   rà   s    rB   Ú_end_of_sentencez*load_vi_bindings.<locals>._end_of_sentence=  r÷  rA   c                óB   — | j         j                             ¦   «          dS )zF
        Unknown key binding while waiting for a text object.
        N)r‡   ÚoutputÚbellrà   s    rB   Ú_unknown_text_objectz.load_vi_bindings.<locals>._unknown_text_objectF  s!   € ð
 	Œ	Ô×ÒÑÔÐÐÐrA   Údelete_onlyÚwith_registerc                ó‚   •‡ ‡— ‰rdt           j        d‰          f}nd‰          } ‰|dt           iŽdˆ ˆfd
„¦   «         }dS )zð
        Delete and change operators.

        :param delete_only: Create an operator that deletes, but doesn't go to insert mode.
        :param with_register: Copy the deleted text to this named register instead of the clipboard.
        rr  Úcdrv   r‚   rƒ   r’   rD   rM   r„   c                óN  •— d }| j         }|r|                     |¦  «        \  }}||_        |rX|j        rQ‰r0| j        d         j        }|t          v r|| j        j        j	        |<   n| j        j
                             |¦  «         ‰st          j        | j        j        _        d S d S r†   )r‘   rn   rV   rj   rt  r-  ru  r‡   rˆ   rv  r#  r,  r(   rÕ   rÔ   )r‚   r’   rm   r–   rl   Úreg_namerÿ  r   s         €€rB   Údelete_or_change_operatorz_load_vi_bindings.<locals>.create_delete_and_change_operators.<locals>.delete_or_change_operator`  sÉ   ø€ à!ˆNØÔ'ˆDàð -Ø/:¯ª¸tÑ/DÔ/DÑ,�˜nØ ,�”ð ð A .Ô"5ð AØ ð AØ$Ô1°!Ô4Ô9�HØÕ#4Ð4Ð4ØGU˜œ	Ô*Ô:¸8ÑDøà”IÔ'×0Ò0°Ñ@Ô@Ð@ð ð AÝ09Ô0@�”	Ô"Ô-Ð-Ð-ðAð ArA   N©r‚   rƒ   r’   rD   rM   r„   )r)   ÚAnyr   )rÿ  r   Úhandler_keysr  Úoperators   ``  €rB   Ú"create_delete_and_change_operatorsz<load_vi_bindings.<locals>.create_delete_and_change_operatorsQ  s€   øøø€ ð ð 	-Ø¥¤¨4°Ô+<Ð=ˆLˆLà Ô,ˆLà	ˆ�<Ð	6­¨Ð	6Ð	6ð	Að 	Að 	Að 	Að 	Að 	Añ 
7Ô	6ð	Að 	Að 	ArA   Trv   r   Útransform_funcúCallable[[str], str]r‰   c                óD   •‡—  ‰|d| t            z  iŽd	ˆfd„¦   «         }d S )
Nrv   r‚   rƒ   r’   rD   rM   r„   c                óæ   •— | j         }|                     |j        ¦  «        \  }}||k     rE|                     |j        |z   |j        |z   ‰¦  «         |xj        |j        p|j        z  c_        dS dS )zX
            Apply transformation (uppercase, lowercase, rot13, swap case).
            N)r‘   r`   rV   Útransform_regionrY   rG   rE   )r‚   r’   r–   rE   rG   r  s        €rB   re   z=load_vi_bindings.<locals>.create_transform_handler.<locals>._~  s�   ø€ ð
 Ô'ˆDØ$×3Ò3°D´MÑBÔB‰JˆE�3à�sŠ{ˆ{à×%Ò%ØÔ(¨5Ñ0ØÔ(¨3Ñ.Ø"ñô ð ð Ð$Ô$¨¬Ð(L¸;Ô;LÑLÐ$Ô$Ð$Ð$ð ˆ{rA   r  )r   )rv   r  r  re   r	  s    `  €rB   Úcreate_transform_handlerz2load_vi_bindings.<locals>.create_transform_handler{  sW   øø€ ð 
ˆ�1Ð	4˜V¥| mÑ3Ð	4Ð	4ð	Mð 	Mð 	Mð 	Mð 	Mñ 
5Ô	4ð	Mð 	Mð 	MrA   r’   rD   c                ó�   — |                      | j        ¦  «        \  }}|j        r!| j        j                             |¦  «         dS dS )z-
        Yank operator. (Copy text.)
        N)rn   r‘   rj   r‡   r#  r,  )r‚   r’   re   rm   s       rB   Ú_yankzload_vi_bindings.<locals>._yank”  sQ   € ð
 (ŸOšO¨EÔ,@ÑAÔAÑˆˆ>ØÔð 	9ØŒIÔ×(Ò(¨Ñ8Ô8Ð8Ð8Ð8ð	9ð 	9rA   c                ó¢   — | j         d         j        }|t          v r3|                     | j        ¦  «        \  }}|| j        j        j        |<   dS dS )z3
        Yank selection to named register.
        r2   N)rt  r-  ru  rn   r‘   r‡   rˆ   rv  )r‚   r’   r(  re   rm   s        rB   Ú_yank_to_registerz+load_vi_bindings.<locals>._yank_to_register�  sY   € ð
 Ô˜qÔ!Ô&ˆØÕ!Ð!Ð!Ø +§¢°Ô0DÑ EÔ EÑˆAˆ~Ø4BˆEŒIÔÔ.¨qÑ1Ð1Ð1ð "Ð!rA   c                óz   — | j         }|                     |¦  «        \  }}t          |||dz   | j        ¬¦  «         dS )z
        Indent.
        r2   rÝ   N)r‘   rf   r   r‹   ©r‚   r’   r–   rc   rd   s        rB   Ú_indent_text_objectz-load_vi_bindings.<locals>._indent_text_object§  sF   € ð
 Ô#ˆØ×0Ò0°Ñ6Ô6‰	ˆˆrÝˆt�U˜B ™F¨%¬)Ð4Ñ4Ô4Ð4Ð4Ð4rA   c                óz   — | j         }|                     |¦  «        \  }}t          |||dz   | j        ¬¦  «         dS )z
        Unindent.
        r2   rÝ   N)r‘   rf   r   r‹   r  s        rB   Ú_unindent_text_objectz/load_vi_bindings.<locals>._unindent_text_object°  sF   € ð
 Ô#ˆØ×0Ò0°Ñ6Ô6‰	ˆˆrÝ��u˜b 1™f¨E¬IÐ6Ñ6Ô6Ð6Ð6Ð6rA   Úqc                óf   — | j         }|                     |¦  «        \  }}t          |||¦  «         dS )z
        Reshape text.
        N)r‘   rf   r   r  s        rB   Ú_reshapez"load_vi_bindings.<locals>._reshape¹  s;   € ð
 Ô#ˆØ×0Ò0°Ñ6Ô6‰	ˆˆrÝ�T˜5 "Ñ%Ô%Ð%Ð%Ð%rA   rÿ   c                ój   — t          | j        j                             | j        ¬¦  «        pd¦  «        S )z.
        Move one word or token left.
        rÝ   r   ©rD   r‘   rV   Úfind_start_of_previous_wordr‹   rà   s    rB   Ú_bzload_vi_bindings.<locals>._bÆ  s:   € õ
 ØÔ Ô)×EÒEÈEÌIÐEÑVÔVð Øñ
ô 
ð 	
rA   ÚBc                ól   — t          | j        j                             | j        d¬¦  «        pd¦  «        S )z.
        Move one non-blank word left
        T©rÞ   ÚWORDr   r  rà   s    rB   Ú_Bzload_vi_bindings.<locals>._BÐ  sF   € õ
 ØÔ Ô)×EÒEØ”i dð Fñ ô ð ð ñ	
ô 
ð 	
rA   ú$c                óX   — t          | j        j                             ¦   «         ¦  «        S )zL
        'c$', 'd$' and '$':  Delete/change/move until end of line.
        )rD   r‘   rV   r  rà   s    rB   Ú_dollarz!load_vi_bindings.<locals>._dollarÜ  s$   € õ
 ˜%Ô.Ô7×PÒPÑRÔRÑSÔSÐSrA   c                ó¢   — t          | j        j                             | j        ¬¦  «        p| j        j                             ¦   «         ¦  «        S )zO
        'word' forward. 'cw', 'dw', 'w': Delete/change/move one word.
        rÝ   ©rD   r‘   rV   Úfind_next_word_beginningr‹   Úget_end_of_document_positionrà   s    rB   Ú_word_forwardz'load_vi_bindings.<locals>._word_forwardã  sM   € õ
 ØÔ Ô)×BÒBÈÌÐBÑSÔSð LØÔ#Ô,×IÒIÑKÔKñ
ô 
ð 	
rA   c                ó¤   — t          | j        j                             | j        d¬¦  «        p| j        j                             ¦   «         ¦  «        S )zO
        'WORD' forward. 'cW', 'dW', 'W': Delete/change/move one WORD.
        Tr#  r*  rà   s    rB   Ú_WORD_forwardz'load_vi_bindings.<locals>._WORD_forwardí  sY   € õ
 ØÔ Ô)×BÒBØ”i dð Cñ ô ð Lð Ô#Ô,×IÒIÑKÔKñ	
ô 
ð 	
rA   r‰  c                ó�   — | j         j                             | j        ¬¦  «        }t	          |r|dz
  ndt
          j        ¬¦  «        S )z0
        End of 'word': 'ce', 'de', 'e'
        rÝ   r2   r   r¨   ©r‘   rV   Úfind_next_word_endingr‹   rD   r8   r:   ©r‚   rG   s     rB   Ú_end_of_wordz&load_vi_bindings.<locals>._end_of_wordù  sE   € ð
 Ô"Ô+×AÒAÈÌ	ÐAÑRÔRˆÝ SÐ/˜# ™'˜'¨aµnÔ6NÐOÑOÔOÐOrA   c                ó’   — | j         j                             | j        d¬¦  «        }t	          |r|dz
  ndt
          j        ¬¦  «        S )z0
        End of 'WORD': 'cE', 'dE', 'E'
        Tr#  r2   r   r¨   r1  r3  s     rB   Ú_end_of_WORDz&load_vi_bindings.<locals>._end_of_WORD  sQ   € ð
 Ô"Ô+×AÒAØ”) $ð Bñ 
ô 
ˆõ  SÐ/˜# ™'˜'¨aµnÔ6NÐOÑOÔOÐOrA   ©rw   c                ód   — | j         j                             ¦   «         \  }}t          ||¦  «        S )z+
        Inner 'word': ciw and diw
        ©r‘   rV   Úfind_boundaries_of_current_wordrD   ©r‚   rE   rG   s      rB   Ú_inner_wordz%load_vi_bindings.<locals>._inner_word  s/   € ð
 Ô)Ô2×RÒRÑTÔT‰
ˆˆsÝ˜% Ñ%Ô%Ð%rA   c                óh   — | j         j                             d¬¦  «        \  }}t          ||¦  «        S )z'
        A 'word': caw and daw
        T)Úinclude_trailing_whitespacer9  r;  s      rB   Ú_a_wordz!load_vi_bindings.<locals>._a_word  s>   € ð
 Ô)Ô2×RÒRØ(,ð Sñ 
ô 
‰
ˆˆsõ ˜% Ñ%Ô%Ð%rA   c                óh   — | j         j                             d¬¦  «        \  }}t          ||¦  «        S )z+
        Inner 'WORD': ciW and diW
        T)r$  r9  r;  s      rB   Ú_inner_WORDz%load_vi_bindings.<locals>._inner_WORD  s>   € ð
 Ô)Ô2×RÒRØð Sñ 
ô 
‰
ˆˆsõ ˜% Ñ%Ô%Ð%rA   c                ój   — | j         j                             dd¬¦  «        \  }}t          ||¦  «        S )z'
        A 'WORD': caw and daw
        T)r$  r>  r9  r;  s      rB   Ú_a_WORDz!load_vi_bindings.<locals>._a_WORD'  s@   € ð
 Ô)Ô2×RÒRØ°4ð Sñ 
ô 
‰
ˆˆsõ ˜% Ñ%Ô%Ð%rA   c                ó¨   — | j         j                             ¦   «         }| j         j                             | j        ¬¦  «        }t          ||¦  «        S )z!
        Auto paragraph.
        rÝ   )r‘   rV   Ústart_of_paragraphÚend_of_paragraphr‹   rD   r;  s      rB   Ú
_paragraphz$load_vi_bindings.<locals>._paragraph1  sI   € ð
 Ô$Ô-×@Ò@ÑBÔBˆØÔ"Ô+×<Ò<À5Ä9Ð<ÑMÔMˆÝ˜% Ñ%Ô%Ð%rA   ú^c                ó\   — t          | j        j                             d¬¦  «        ¦  «        S )z9'c^', 'd^' and '^': Soft start of line, after whitespace.Tr  ©rD   r‘   rV   r  rà   s    rB   Ú_start_of_linez(load_vi_bindings.<locals>._start_of_line:  s8   € õ ØÔ Ô)×DÒDØ!%ð Eñ ô ñ
ô 
ð 	
rA   Ú0c                ó\   — t          | j        j                             d¬¦  «        ¦  «        S )z¤
        'c0', 'd0': Hard start of line, before whitespace.
        (The move '0' key is implemented elsewhere, because a '0' could also change the `arg`.)
        Fr  rJ  rà   s    rB   Ú_hard_start_of_linez-load_vi_bindings.<locals>._hard_start_of_lineC  s8   € õ ØÔ Ô)×DÒDØ!&ð Eñ ô ñ
ô 
ð 	
rA   NÚci_startÚci_endÚinnerÚkeyú
str | Nonec                óÔ   •‡ ‡‡— d
ˆˆ ˆfd„}|€<  ‰d‰         ‰ d¬	¦  «        |¦  «           ‰d‰         ‰d¬	¦  «        |¦  «         dS   ‰d‰         |d¬	¦  «        |¦  «         dS )zÂ
        Delete/Change string between this start and stop character. But keep these characters.
        This implements all the ci", ci<, ci{, ci(, di", di<, ca", ca<, ... combinations.
        r‚   rƒ   rM   rD   c                óz  •— ‰‰k    rC| j         j                             ‰d¬¦  «        }| j         j                             ‰d¬¦  «        }n@| j         j                             ‰‰¦  «        }| j         j                             ‰‰¦  «        }|�!|�‰rdnd}t          |dz   |z
  ||z   ¦  «        S t          d¦  «        S )NF)Úin_current_liner   r2   )r‘   rV   Úfind_backwardsÚfindÚfind_enclosing_bracket_leftÚfind_enclosing_bracket_rightrD   )r‚   rE   rG   ÚoffsetrP  rO  rQ  s       €€€rB   Úhandlerz?load_vi_bindings.<locals>.create_ci_ca_handles.<locals>.handlerX  sà   ø€ Ø˜6Ò!Ð!àÔ,Ô5×DÒDØ¨eð Eñ ô �ð Ô*Ô3×8Ò8¸ÐQVÐ8ÑWÔW��ð Ô,Ô5×QÒQØ˜fñô �ð Ô*Ô3×PÒPØ˜fñô �ð Ð  S _Ø#Ð*˜˜¨�Ý! %¨!¡)¨fÑ"4°c¸F±lÑCÔCÐCõ " !‘}”}Ð$rA   NÚaiTr7  ©r‚   rƒ   rM   rD   r@   )rO  rP  rQ  rR  r\  r’   s   ```  €rB   Úcreate_ci_ca_handlesz.load_vi_bindings.<locals>.create_ci_ca_handlesO  s°   øøøø€ ð	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð. ˆ;ØDˆKˆK˜˜Uœ X¸tÐDÑDÔDÀWÑMÔMÐMØBˆKˆK˜˜Uœ V¸TÐBÑBÔBÀ7ÑKÔKÐKÐKÐKà?ˆKˆK˜˜Uœ S¸$Ð?Ñ?Ô?ÀÑHÔHÐHÐHÐHrA   )FT))rr  rr  )ú'r`  )ú`ra  )ú[ú])rÁ  r½  )Ú{Ú})rô  rø  rd  re  c                ól   — | j         j                             | j        d¬¦  «        }t	          |¦  «        S )zi
        Move to previous blank-line separated section.
        Implements '{', 'c{', 'd{', 'y{'
        T)rÞ   r9  )r‘   rV   rE  r‹   rD   ©r‚   Úindexs     rB   Ú_previous_sectionz+load_vi_bindings.<locals>._previous_section„  s<   € ð Ô$Ô-×@Ò@Ø”) Dð Añ 
ô 
ˆõ ˜%Ñ Ô Ð rA   c                ól   — | j         j                             | j        d¬¦  «        }t	          |¦  «        S )ze
        Move to next blank-line separated section.
        Implements '}', 'c}', 'd}', 'y}'
        T)rÞ   r:  )r‘   rV   rF  r‹   rD   rg  s     rB   Ú_next_sectionz'load_vi_bindings.<locals>._next_section�  s;   € ð Ô$Ô-×>Ò>Ø”) 4ð ?ñ 
ô 
ˆõ ˜%Ñ Ô Ð rA   Úfc                óú   — t          | j        d¦  «        | j        j        _        | j        j                             | j        d| j        ¬¦  «        }|rt          |t          j        ¬¦  «        S t          d¦  «        S )zˆ
        Go to next occurrence of character. Typing 'fx' will move the
        cursor to the next occurrence of character. 'x'.
        FT©rV  rÞ   r¨   r   ©r'   r-  r‡   rˆ   Úlast_character_findr‘   rV   rX  r‹   rD   r8   r:   ©r‚   Úmatchs     rB   Ú_find_next_occurrencez/load_vi_bindings.<locals>._find_next_occurrenceš  st   € õ 2?¸u¼zÈ5Ñ1QÔ1QˆŒ	ÔÔ.ØÔ$Ô-×2Ò2ØŒJ¨°E´Ið 3ñ 
ô 
ˆð ð 	!Ý˜e­.Ô*BÐCÑCÔCÐCå˜a‘=”=Ð rA   ÚFc                óÀ   — t          | j        d¦  «        | j        j        _        t          | j        j                             | j        d| j	        ¬¦  «        pd¦  «        S )z�
        Go to previous occurrence of character. Typing 'Fx' will move the
        cursor to the previous occurrence of character. 'x'.
        Trn  r   )
r'   r-  r‡   rˆ   rp  rD   r‘   rV   rW  r‹   rà   s    rB   Ú_find_previous_occurrencez3load_vi_bindings.<locals>._find_previous_occurrence©  sb   € õ 2?¸u¼zÈ4Ñ1PÔ1PˆŒ	ÔÔ.ÝØÔ Ô)×8Ò8Ø”
¨D¸¼	ð 9ñ ô ð ð ñ	
ô 
ð 	
rA   Útc                ó   — t          | j        d¦  «        | j        j        _        | j        j                             | j        d| j        ¬¦  «        }|rt          |dz
  t          j        ¬¦  «        S t          d¦  «        S )zQ
        Move right to the next occurrence of c, then one char backward.
        FTrn  r2   r¨   r   ro  rq  s     rB   Ú_tzload_vi_bindings.<locals>._t·  sx   € õ
 2?¸u¼zÈ5Ñ1QÔ1QˆŒ	ÔÔ.ØÔ$Ô-×2Ò2ØŒJ¨°E´Ið 3ñ 
ô 
ˆð ð 	!Ý˜e a™i­nÔ.FÐGÑGÔGÐGå˜a‘=”=Ð rA   ÚTc                óÎ   — t          | j        d¦  «        | j        j        _        | j        j                             | j        d| j        ¬¦  «        }t          |r|dz   nd¦  «        S )zS
        Move left to the previous occurrence of c, then one char forward.
        Trn  r2   r   )
r'   r-  r‡   rˆ   rp  r‘   rV   rW  r‹   rD   rq  s     rB   Ú_Tzload_vi_bindings.<locals>._TÅ  se   € õ
 2?¸u¼zÈ4Ñ1PÔ1PˆŒ	ÔÔ.ØÔ$Ô-×<Ò<ØŒJ¨°E´Ið =ñ 
ô 
ˆõ  uÐ3˜% !™)˜)°!Ñ4Ô4Ð4rA   Úreversec                ó@   •‡ —  ‰‰ rdnd¦  «        d	ˆ fd„¦   «         }dS )
z.
        Create ',' and ';' commands.
        ú,ú;r‚   rƒ   rM   rD   c                ó~  •— d}| j         j        }t          j        }|j        rz|j        j        }|j        j        }‰r| }|r(| j        j         	                    |d| j
        ¬¦  «        }n3| j        j                             |d| j
        ¬¦  «        }t          j        }|rt          ||¬¦  «        S t          d¦  «        S )zB
            Repeat the last 'f'/'F'/'t'/'T' command.
            r   Trn  r¨   )r‡   rˆ   r8   r9   rp  Ú	characterÚ	backwardsr‘   rV   rW  r‹   rX  r:   rD   )r‚   Úposrˆ   rH   Úcharrƒ  r}  s         €rB   re   z+load_vi_bindings.<locals>.repeat.<locals>._Õ  sÜ   ø€ ð
  ˆCØ”yÔ)ˆHå!Ô+ˆDàÔ+ð 4ØÔ3Ô=�Ø$Ô8ÔB�	àð .Ø$- �Iàð 4ØÔ.Ô7×FÒFØ¨d¸%¼)ð Gñ ô �C�Cð  Ô.Ô7×<Ò<Ø¨d¸%¼)ð =ñ ô �Cõ *Ô3�DØð %Ý! #¨DÐ1Ñ1Ô1Ð1å! !‘}”}Ð$rA   Nr^  r@   )r}  re   r’   s   ` €rB   Úrepeatz load_vi_bindings.<locals>.repeatÐ  sL   øø€ ð
 
ˆ˜GÐ,�S�S¨Ñ	-Ô	-ð	%ð 	%ð 	%ð 	%ð 	%ñ 
.Ô	-ð	%ð 	%ð 	%rA   ÚhÚleftc                óf   — t          | j        j                             | j        ¬¦  «        ¦  «        S )z:
        Implements 'ch', 'dh', 'h': Cursor left.
        rÝ   )rD   r‘   rV   r×   r‹   rà   s    rB   Ú_leftzload_vi_bindings.<locals>._left÷  s2   € õ ØÔ Ô)×BÒBÈÌÐBÑSÔSñ
ô 
ð 	
rA   )rw   rx   c                ó~   — t          | j        j                             | j        ¬¦  «        t
          j        ¬¦  «        S )z<
        Implements 'cj', 'dj', 'j', ... Cursor up.
        rÝ   r¨   )rD   r‘   rV   r·  r‹   r8   r;   rà   s    rB   Ú_downzload_vi_bindings.<locals>._down  s=   € õ ØÔ Ô)×BÒBÈÌÐBÑSÔSÝÔ(ð
ñ 
ô 
ð 	
rA   c                ó~   — t          | j        j                             | j        ¬¦  «        t
          j        ¬¦  «        S )z<
        Implements 'ck', 'dk', 'k', ... Cursor up.
        rÝ   r¨   )rD   r‘   rV   r»  r‹   r8   r;   rà   s    rB   Ú_upzload_vi_bindings.<locals>._up  s=   € õ
 ØÔ Ô)×@Ò@ÀuÄyÐ@ÑQÔQÝÔ(ð
ñ 
ô 
ð 	
rA   Úlr5  Úrightc                óf   — t          | j        j                             | j        ¬¦  «        ¦  «        S )zL
        Implements 'cl', 'dl', 'l', 'c ', 'd ', ' '. Cursor right.
        rÝ   )rD   r‘   rV   r  r‹   rà   s    rB   Ú_rightz load_vi_bindings.<locals>._right  s2   € õ ØÔ Ô)×CÒCÈ%Ì)ÐCÑTÔTñ
ô 
ð 	
rA   ÚHc                ó(  — | j         j        j        }| j        }|rD|j        r=|j                             |j                             d¬¦  «        d¦  «        |j        z
  }nt          |j        j
        ¦  «         }t          |t          j        ¬¦  «        S )zz
        Moves to the start of the visible region. (Below the scroll offset.)
        Implements 'cH', 'dH', 'H'.
        T)Úafter_scroll_offsetr   r¨   )r‡   ÚlayoutÚcurrent_windowr‘   Úrender_inforV   rZ   Úfirst_visible_linerY   r[   Útext_before_cursorrD   r8   r;   ©r‚   r¡  rÿ   r„  s       rB   Ú_top_of_screenz(load_vi_bindings.<locals>._top_of_screen#  s›   € ð ŒIÔÔ+ˆØÔ ˆàð 	6�”ð 	6ð ”
×5Ò5Ø”M×4Ò4ÈÐ4ÑNÔNÐPQñô ð Ô#ñ$ð ˆCõ �q”zÔ4Ñ5Ô5Ð5ˆCÝ˜#¥NÔ$;Ð<Ñ<Ô<Ð<rA   ÚMc                ó$  — | j         j        j        }| j        }|rB|j        r;|j                             |j                             ¦   «         d¦  «        |j        z
  }nt          |j        j
        ¦  «         }t          |t          j        ¬¦  «        S )zp
        Moves cursor to the vertical center of the visible region.
        Implements 'cM', 'dM', 'M'.
        r   r¨   )r‡   r–  r—  r‘   r˜  rV   rZ   Úcenter_visible_linerY   r[   rš  rD   r8   r;   r›  s       rB   Ú_middle_of_screenz+load_vi_bindings.<locals>._middle_of_screen;  s•   € ð ŒIÔÔ+ˆØÔ ˆàð 	6�”ð 	6ð ”
×5Ò5Ø”M×5Ò5Ñ7Ô7¸ñô ð Ô#ñ$ð ˆCõ �q”zÔ4Ñ5Ô5Ð5ˆCÝ˜#¥NÔ$;Ð<Ñ<Ô<Ð<rA   ÚLc                ó&  — | j         j        j        }| j        }|rD|j        r=|j                             |j                             d¬¦  «        d¦  «        |j        z
  }nt          |j        j
        ¦  «        }t          |t          j        ¬¦  «        S )zT
        Moves to the end of the visible region. (Above the scroll offset.)
        T)Úbefore_scroll_offsetr   r¨   )r‡   r–  r—  r‘   r˜  rV   rZ   Úlast_visible_linerY   r[   Útext_after_cursorrD   r8   r;   r›  s       rB   Ú_end_of_screenz(load_vi_bindings.<locals>._end_of_screenS  s˜   € ð
 ŒIÔÔ+ˆØÔ ˆàð 	4�”ð 	4ð ”
×5Ò5Ø”M×3Ò3ÈÐ3ÑNÔNÐPQñô ð Ô#ñ$ð ˆCõ �a”jÔ2Ñ3Ô3ˆCÝ˜#¥NÔ$;Ð<Ñ<Ô<Ð<rA   Únc                ó�   — | j         }| j        j        }|                     |d| j        ¬¦  «        }t          ||j        z
  ¦  «        S )z
        Search next.
        F©rç  rÞ   ©r‘   r‡   rè  Úget_search_positionr‹   rD   rY   ©r‚   r–   rî  rY   s       rB   Ú_search_nextz&load_vi_bindings.<locals>._search_nextj  sQ   € ð
 Ô#ˆØ”yÔ5ˆà×2Ò2Ø°5ÀÄ	ð 3ñ 
ô 
ˆõ ˜/¨DÔ,@Ñ@ÑAÔAÐArA   c                ób   — | j         j        }| j                             |d| j        ¬¦  «         dS )zR
        Search next in navigation mode. (This goes through the history.)
        Fr©  N©r‡   rè  r‘   rì  r‹   ©r‚   rî  s     rB   Ú_search_next2z'load_vi_bindings.<locals>._search_next2w  sA   € ð
 ”yÔ5ˆàÔ×)Ò)Ø°5ÀÄ	ð 	*ñ 	
ô 	
ð 	
ð 	
ð 	
rA   ÚNc                ó’   — | j         }| j        j        }|                     | d| j        ¬¦  «        }t          ||j        z
  ¦  «        S )z"
        Search previous.
        Fr©  rª  r¬  s       rB   Ú_search_previousz*load_vi_bindings.<locals>._search_previous‚  sS   € ð
 Ô#ˆØ”yÔ5ˆà×2Ò2ØˆM°EÀÄð 3ñ 
ô 
ˆõ ˜/¨DÔ,@Ñ@ÑAÔAÐArA   c                ód   — | j         j        }| j                             | d| j        ¬¦  «         dS )zV
        Search previous in navigation mode. (This goes through the history.)
        Fr©  Nr¯  r°  s     rB   Ú_search_previous2z+load_vi_bindings.<locals>._search_previous2�  sC   € ð
 ”yÔ5ˆàÔ×)Ò)ØˆM°EÀÄð 	*ñ 	
ô 	
ð 	
ð 	
ð 	
rA   Úzc                óT   — | j         }|j        j        | j        j        j        _        dS )zd
        Scrolls the window to makes the current line the first line in the visible region.
        N)r‘   rV   r7  r‡   r–  r—  Úvertical_scrollrþ   s     rB   Ú_scroll_topz%load_vi_bindings.<locals>._scroll_topš  s'   € ð Ô ˆØ:;¼*Ô:XˆŒ	ÔÔ'Ô7Ð7Ð7rA   c                ó2   — d| j         j        j        _        dS )zc
        Scrolls the window to makes the current line the last line in the visible region.
        r   N)r‡   r–  r—  r¹  rà   s    rB   Ú_scroll_bottomz(load_vi_bindings.<locals>._scroll_bottom¤  s   € ð ;<ˆŒ	ÔÔ'Ô7Ð7Ð7rA   c                ó*  — | j         j        j        }| j        }|rv|j        rq|j        }|j        dz  }t          d|j        j        dz
  ¦  «        }d}|dk    r0| 	                    |¦  «        }||z   |k     r||z  }|dz  }nn|dk    °0||_
        dS dS dS )z9
        Center Window vertically around cursor.
        r.   r   r2   N)r‡   r–  r—  r‘   r˜  Úwindow_heightÚmaxrV   r7  Úget_height_for_liner¹  )r‚   r¡  rÿ   ÚinfoÚscroll_heightr°  ÚheightÚline_heights           rB   Ú_scroll_centerz(load_vi_bindings.<locals>._scroll_center¯  sÑ   € ð
 ŒIÔÔ+ˆØÔ ˆàð 	"�”ð 	"Ø”=ˆDð !Ô.°!Ñ3ˆMå�A�q”zÔ5¸Ñ9Ñ:Ô:ˆAØˆFØ�a’%�%Ø"×6Ò6°qÑ9Ô9�à˜KÑ'¨-Ò7Ð7Ø˜kÑ)�FØ˜‘F�A�Aàð �a’%�%ð !"ˆAÔÐÐð%	"ð 	"ð 	"ð 	"rA   ú%c                óÀ  — | j         }| j        rŒd| j        cxk     rdk    rkn nh|j                             t          | j        |j        j        z  dz
  dz  ¦  «        d¦  «        }t          ||j        j        z
  t          j
        ¬¦  «        S t          d¦  «        S |j                             ¦   «         }|rt          |t          j        ¬¦  «        S t          d¦  «        S )z›
        Implements 'c%', 'd%', '%, 'y%' (Move to corresponding bracket.)
        If an 'arg' has been given, go this this % position in the file.
        r   éd   r2   r¨   )r‘   rŒ   r‹   rV   rZ   rF   Ú
line_countrD   rY   r8   r;   Úfind_matching_bracket_positionr:   )r‚   ra   Úabsolute_indexrr  s       rB   Ú_goto_corresponding_bracketz5load_vi_bindings.<locals>._goto_corresponding_bracketË  sï   € ð Ô%ˆàŒ:ð 	%ð �5”9Ð#Ð#Ò#Ð# Ò#Ð#Ð#Ð#Ð#Ø!'¤×!KÒ!KÝ˜œ V¤_Ô%?Ñ?À!ÑCÀsÑJÑKÔKÈQñ"ô "�õ "Ø" V¤_Ô%DÑDÝ'Ô0ðñ ô ð õ
 " !‘}”}Ð$ð ”O×BÒBÑDÔDˆEØð %Ý! %­nÔ.FÐGÑGÔGÐGå! !‘}”}Ð$rA   ú|c                ój   — t          | j        j                             | j        dz
  ¦  «        ¦  «        S )z�
        Move to the n-th column (you may specify the argument n by typing it on
        number keys, for example, 20|).
        r2   )rD   r‘   rV   Úget_column_cursor_positionr‹   rà   s    rB   Ú
_to_columnz$load_vi_bindings.<locals>._to_columné  s4   € õ ØÔ Ô)×DÒDÀUÄYÐQRÁ]ÑSÔSñ
ô 
ð 	
rA   c                ó   — | j         j        }| j        r?t          |                     | j        dz
  d¦  «        |j        z
  t          j        ¬¦  «        S t          | 	                    ¦   «         t          j        ¬¦  «        S )z_
        Go to the start of the very first line.
        Implements 'gg', 'cgg', 'ygg'
        r2   r   r¨   )
r‘   rV   rŒ   rD   rZ   r‹   rY   r8   r;   Úget_start_of_document_position)r‚   r2  s     rB   Ú_goto_first_linez*load_vi_bindings.<locals>._goto_first_lineó  s„   € ð Ô Ô)ˆàŒ:ð 
	åØ×,Ò,¨U¬Y¸©]¸AÑ>Ô>ÀÔARÑRÝ#Ô,ðñ ô ð õ Ø×0Ò0Ñ2Ô2½Ô9Pðñ ô ð rA   re   c                óp   — t          | j        j                             ¦   «         t          j        ¬¦  «        S )zQ
        Go to last non-blank of line.
        'g_', 'cg_', 'yg_', etc..
        r¨   )rD   r‘   rV   Ú'last_non_blank_of_current_line_positionr8   r:   rà   s    rB   Ú_goto_last_linez)load_vi_bindings.<locals>._goto_last_line  s6   € õ ØÔ Ô)×QÒQÑSÔSÝÔ)ð
ñ 
ô 
ð 	
rA   c                ó�   — | j         j                             | j        ¬¦  «        }t	          |�|dz
  ndt
          j        ¬¦  «        S )zZ
        Go to last character of previous word.
        'ge', 'cge', 'yge', etc..
        rÝ   Nr2   r   r¨   ©r‘   rV   Úfind_previous_word_endingr‹   rD   r8   r:   ©r‚   Úprev_ends     rB   Ú_gezload_vi_bindings.<locals>._ge  sX   € ð Ô'Ô0×JÒJØ”)ð Kñ 
ô 
ˆõ Ø$Ð0ˆH�q‰LˆL°a½nÔ>Vð
ñ 
ô 
ð 	
rA   c                ó’   — | j         j                             | j        d¬¦  «        }t	          |�|dz
  ndt
          j        ¬¦  «        S )zZ
        Go to last character of previous WORD.
        'gE', 'cgE', 'ygE', etc..
        Tr#  Nr2   r   r¨   rØ  rÚ  s     rB   Ú_gEzload_vi_bindings.<locals>._gE  sZ   € ð Ô'Ô0×JÒJØ”) $ð Kñ 
ô 
ˆõ Ø$Ð0ˆH�q‰LˆL°a½nÔ>Vð
ñ 
ô 
ð 	
rA   Úmc           	     óZ  — | j         j        j        }| j        }|rƒ|j        r||j        j        }|j                             d¬¦  «        }|t          t          |dz  t          |j        j        ¦  «        ¦  «        ¦  «        z  }t          |t          j        ¬¦  «        S t          d¦  «        S )zY
        Like g0, but half a screenwidth to the right. (Or as much as possible.)
        Fr  r.   r¨   r   )r‡   r–  r—  r‘   r˜  Úwindow_widthrV   r  rF   r§  r[   r+  rD   r8   r:   )r‚   r¡  r–   ÚwidthrE   s        rB   Ú_gmzload_vi_bindings.<locals>._gm,  s�   € ð
 ŒIÔÔ+ˆØÔ#ˆàð 	D�”ð 	DØ”MÔ.ˆEØ”M×<Ò<ÈeÐ<ÑTÔTˆEØ•S�˜U Q™Y­¨D¬MÔ,FÑ(GÔ(GÑHÔHÑIÔIÑIˆEå˜e­.Ô*BÐCÑCÔCÐCÝ˜!‰}Œ}ÐrA   ÚGc                ó¢   — | j         }t          |j                             |j        j        dz
  d¦  «        |j        z
  t          j        ¬¦  «        S )zL
        Go to the end of the document. (If no arg has been given.)
        r2   r   r¨   )r‘   rD   rV   rZ   rÉ  rY   r8   r;   )r‚   Úbufs     rB   Ú
_last_linez$load_vi_bindings.<locals>._last_line<  sT   € ð
 Ô"ˆÝØŒL×3Ò3°C´LÔ4KÈaÑ4OÐQRÑSÔSØÔ!ñ"åÔ(ð
ñ 
ô 
ð 	
rA   c                óJ   — | j                              | j        dz
  ¦  «         dS )zh
        If an argument is given, move to this line in the  history. (for
        example, 15G)
        r2   N)r‘   Úgo_to_historyr‹   rà   s    rB   Ú_to_nth_history_linez.load_vi_bindings.<locals>._to_nth_history_lineL  s'   € ð 	Ô×*Ò*¨5¬9°q©=Ñ9Ô9Ð9Ð9Ð9rA   Ú	123456789c                ó:   — |                       | j        ¦  «         dS )zK
            Always handle numerics in navigation mode as arg.
            N©Úappend_to_arg_countr-  rà   s    rB   rŒ   zload_vi_bindings.<locals>._argV  s    € ð ×%Ò% e¤jÑ1Ô1Ð1Ð1Ð1rA   c                ó:   — |                       | j        ¦  «         dS )z9
        Zero when an argument was already give.
        Nrí  rà   s    rB   Ú_0_argz load_vi_bindings.<locals>._0_argb  s    € ð 	×!Ò! %¤*Ñ-Ô-Ð-Ð-Ð-rA   c                óH   — | j                              | j        d¬¦  «         dS )z1
        Insert data at cursor position.
        TrÐ  N)r‘   rÓ  r-  rà   s    rB   Ú_insert_textz&load_vi_bindings.<locals>._insert_texto  s(   € ð
 	Ô×(Ò(¨¬¸tÐ(ÑDÔDÐDÐDÐDrA   c                ó¨   — | j                              | j        d¬¦  «         | j         xj        dz  c_        t          j        | j        j        _        dS )z>
        Replace single character at cursor position.
        TrÐ  r2   N)	r‘   rÓ  r-  rY   r(   rØ   r‡   rˆ   rÔ   rà   s    rB   Ú_replace_singlez)load_vi_bindings.<locals>._replace_singlev  sO   € ð
 	Ô×(Ò(¨¬¸tÐ(ÑDÔDÐDØÔÐ,Ô,°Ñ1Ð,Ô,Ý(1Ô(<ˆŒ	ÔÔ%Ð%Ð%rA   c                ó   — | j          S rJ   )Ú	is_repeatrˆ  s    rB   rÂ   z"load_vi_bindings.<locals>.<lambda>‚  s
   €  1¤;˜€ rA   c                óˆ  — | j         }|j        }g }d}|j        D ];}|                     |||…         ¦  «         |                     | j        ¦  «         |}Œ<|                     ||d…         ¦  «         d„ t          |j        ¦  «        D ¦   «         }d                     |¦  «        |_        ||_        |xj        dz  c_        dS )zŽ
        Insert data at multiple cursor positions at once.
        (Usually a result of pressing 'I' or 'A' in block-selection mode.)
        r   Nc                ó$   — g | ]\  }}||z   d z   ‘ŒS )r2   r@   )Ú.0r?  r„  s      rB   ú
<listcomp>zKload_vi_bindings.<locals>._insert_text_multiple_cursors.<locals>.<listcomp>˜  s1   € ð  
ð  
ð  
Ù"˜A˜sˆC�!‰G�a‰Kð 
ð  
ð  
rA   rµ   r2   )r‘   rj   rO  rN  r-  rL  r6  rY   )r‚   r–   Úoriginal_textrj   rf  Úp2Únew_cursor_positionss          rB   Ú_insert_text_multiple_cursorsz7load_vi_bindings.<locals>._insert_text_multiple_cursors  sá   € ð Ô#ˆØœ	ˆð ˆØˆàÔ0ð 	ð 	ˆBØ�KŠK˜ a¨ dÔ+Ñ,Ô,Ð,Ø�KŠK˜œ
Ñ#Ô#Ð#ØˆAˆAà�Š�M ! " "Ô%Ñ&Ô&Ð&ð 
ð  
Ý&/°Ô0NÑ&OÔ&Oð 
ñ  
ô  
Ðð
 —G’G˜D‘M”MˆŒ	Ø)=ˆÔ&ØÐÔ Ñ!ÐÔÐÐrA   c                ó0  — | j         }|j        }d}g }d}|j        D ]Y}|dk    r2||dz
           dk    r#|                     |||dz
  …         ¦  «         d}n|                     |||…         ¦  «         |}ŒZ|                     ||d…         ¦  «         |rcd„ |dd…         D ¦   «         }t	          t          |¦  «        ¦  «        }d	                     |¦  «        |_        ||_        |xj        dz  c_        dS | j        j	         
                    ¦   «          dS )
z4
        Backspace, using multiple cursors.
        Fr   r2   r4  TNc                ó,   — g | ]}t          |¦  «        ‘ŒS r@   ©r[   ©rù  Úparts     rB   rú  zMload_vi_bindings.<locals>._delete_before_multiple_cursors.<locals>.<listcomp>º  ó   € Ð7Ð7Ð7 T•s˜4‘y”yÐ7Ð7Ð7rA   éÿÿÿÿrµ   )r‘   rj   rO  rN  Úlistr   r6  rY   r‡   rü  rý  )	r‚   r–   rû  Údeleted_somethingrj   rf  rü  Úlengthsrý  s	            rB   Ú_delete_before_multiple_cursorsz9load_vi_bindings.<locals>._delete_before_multiple_cursors¡  sC  € ð
 Ô#ˆØœ	ˆð "ÐØˆØˆàÔ0ð 	ð 	ˆBØ�AŠvˆv˜-¨¨Q©Ô/°4Ò7Ð7Ø—’˜M¨!¨b°1©f¨*Ô5Ñ6Ô6Ð6Ø$(Ð!Ð!à—’˜M¨!¨B¨$Ô/Ñ0Ô0Ð0ØˆAˆAà�Š�M ! " "Ô%Ñ&Ô&Ð&àð 
	$à7Ð7¨T°#°2°#¬YÐ7Ñ7Ô7ˆGÝ#'­
°7Ñ(;Ô(;Ñ#<Ô#<Ð ð Ÿš ™œˆDŒIØ-AˆDÔ*ØÐ Ô  AÑ%Ð Ô Ð Ð àŒIÔ×!Ò!Ñ#Ô#Ð#Ð#Ð#rA   r"  c                óò  — | j         }|j        }d}g }g }d}|j        D ]H}|                     |||…         ¦  «         |t	          |¦  «        k    s||         dk    r|}ŒA|dz   }d}ŒI|                     ||d…         ¦  «         |rSd„ |dd…         D ¦   «         }t          t          |¦  «        ¦  «        }d	                     |¦  «        |_        ||_        dS | j        j	         
                    ¦   «          dS )
z1
        Delete, using multiple cursors.
        Fr   r4  r2   TNc                ó,   — g | ]}t          |¦  «        ‘ŒS r@   r  r  s     rB   rú  zLload_vi_bindings.<locals>._delete_after_multiple_cursors.<locals>.<listcomp>ß  r  rA   r  rµ   )r‘   rj   rO  rN  r[   r  r   r6  r‡   rü  rý  )	r‚   r–   rû  r  rj   rý  rf  rü  r  s	            rB   Ú_delete_after_multiple_cursorsz8load_vi_bindings.<locals>._delete_after_multiple_cursorsÄ  s%  € ð
 Ô#ˆØœ	ˆð "ÐØˆØ!ÐØˆàÔ0ð 	)ð 	)ˆBØ�KŠK˜ a¨ dÔ+Ñ,Ô,Ð,Ø•S˜Ñ'Ô'Ò'Ð'¨=¸Ô+<ÀÒ+DÐ+Dà��à˜‘F�Ø$(Ð!Ð!à�Š�M ! " "Ô%Ñ&Ô&Ð&àð 		$à7Ð7¨T°#°2°#¬YÐ7Ñ7Ô7ˆGÝ#'­
°7Ñ(;Ô(;Ñ#<Ô#<Ð ð Ÿš ™œˆDŒIØ-AˆDÔ*Ð*Ð*àŒIÔ×!Ò!Ñ#Ô#Ð#Ð#Ð#rA   c                óú   — | j         }g }|j        D ]@}|j                             |¦  «        d         dk    r|dz  }|                     |¦  «         ŒA||_        |j        j        dk    r|xj        dz  c_        dS dS )z`
        Move all cursors to the left.
        (But keep all cursors on the same line.)
        r2   r   N)r‘   rO  rV   rX   rN  Úcursor_position_colrY   )r‚   r–   Únew_positionsrf  s       rB   Ú_left_multiplez(load_vi_bindings.<locals>._left_multipleè  s�   € ð Ô#ˆØˆàÔ/ð 	$ð 	$ˆAØŒ}×8Ò8¸Ñ;Ô;¸AÔ>ÀÒBÐBØ�Q‘�Ø× Ò  Ñ#Ô#Ð#Ð#à)6ˆÔ&àŒ=Ô,¨qÒ0Ð0ØÐ Ô  AÑ%Ð Ô Ð Ð ð 1Ð0rA   c                ó*  — | j         }g }|j        D ]\}|j                             |¦  «        \  }}|t	          |j        j        |         ¦  «        k     r|dz  }|                     |¦  «         Œ]||_        |j        j        s|xj        dz  c_        dS dS )za
        Move all cursors to the right.
        (But keep all cursors on the same line.)
        r2   N)	r‘   rO  rV   rX   r[   r\   rN  Úis_cursor_at_the_end_of_linerY   )r‚   r–   r  rf  r^   Úcolumns         rB   Ú_right_multiplez)load_vi_bindings.<locals>._right_multipleû  s²   € ð Ô#ˆØˆàÔ/ð 	$ð 	$ˆAØœ-×CÒCÀAÑFÔF‰KˆC�Ø�˜DœMÔ/°Ô4Ñ5Ô5Ò5Ð5Ø�Q‘�Ø× Ò  Ñ#Ô#Ð#Ð#à)6ˆÔ&àŒ}Ô9ð 	&ØÐ Ô  AÑ%Ð Ô Ð Ð ð	&ð 	&rA   c                ó   — dS )zN
        Ignore all up/down key presses when in multiple cursor mode.
        Nr@   rà   s    rB   Ú_updown_multiplez*load_vi_bindings.<locals>._updown_multiple  s   € € € rA   zc-xzc-lc                ó8   — | j                              ¦   «          dS )z�
        Pressing the ControlX - ControlL sequence in Vi mode does line
        completion based on the other lines in the document and the history.
        N)r‘   Ústart_history_lines_completionrà   s    rB   Ú_complete_linez(load_vi_bindings.<locals>._complete_line  s   € ð 	Ô×;Ò;Ñ=Ô=Ð=Ð=Ð=rA   zc-fc                ó   — dS )z&
        Complete file names.
        Nr@   rà   s    rB   Ú_complete_filenamez,load_vi_bindings.<locals>._complete_filename  s	   € ð 	ˆrA   zc-kc                ó(   — d| j         j        _        dS )z'
        Go into digraph mode.
        TN)r‡   rˆ   Úwaiting_for_digraphrà   s    rB   Ú_digraphz"load_vi_bindings.<locals>._digraph&  s   € ð
 26ˆŒ	ÔÔ.Ð.Ð.rA   c                ó2   — | j         | j        j        _        dS )z'
        First digraph symbol.
        N)r-  r‡   rˆ   r²   rà   s    rB   Ú	_digraph1z#load_vi_bindings.<locals>._digraph1-  s   € ð
 .3¬ZˆŒ	ÔÔ*Ð*Ð*rA   c                ó   — 	 | j         j        j        pd| j        f}|t          vr|ddd…         }t          |         }| j         j        j        t          j        k    }| j         	                    t          |¦  «        |¬¦  «         d| j         j        _        n.# t          $ r! | j         j                             ¦   «          Y nw xY wd| j         j        _        d| j         j        _        dS # d| j         j        _        d| j         j        _        w xY w)z!
        Insert digraph.
        rµ   Nr  rÐ  F)r‡   rˆ   r²   r-  r$   rÔ   r(   rÖ   r‘   rÓ  Úchrr  ÚKeyErrorrü  rý  )r‚   ÚcodeÚsymbolrÑ  s       rB   Ú_create_digraphz)load_vi_bindings.<locals>._create_digraph4  s  € ð
	6ð ”	Ô"Ô2Ð8°bØ”
ð%ˆDð �8Ð#Ð#Ø˜D˜D˜b˜D”z�Ý˜d”^ˆFð œ	Ô*Ô5½Ô9JÒJˆIØÔ ×,Ò,­S°©[¬[ÀIÐ,ÑNÔNÐNØ5:ˆEŒIÔÔ2Ð2øõ ð 	$ð 	$ð 	$àŒIÔ×!Ò!Ñ#Ô#Ð#Ð#Ð#ð	$øøøð 6;ˆEŒIÔÔ2Ø15ˆEŒIÔÔ.Ð.Ð.øð 6;ˆEŒIÔÔ2Ø15ˆEŒIÔÔ.Ð5Ð5Ð5Ð5s)   ‚;B ½AC) Â(CÂ?C) ÃCÃC) Ã)$Dzc-oc                ó(   — d| j         j        _        dS )z<
        Go into normal mode for one single action.
        TN)r‡   rˆ   Útemporary_navigation_moderà   s    rB   Ú_quick_normal_modez,load_vi_bindings.<locals>._quick_normal_modeN  s   € ð
 8<ˆŒ	ÔÔ4Ð4Ð4rA   c                ót   — | j         d         j        }|t          v r| j        j        }||_        d|_        dS dS )z(
        Start recording macro.
        r2   rµ   N)rt  r-  ru  r‡   rˆ   Úrecording_registerÚcurrent_recording)r‚   r(  rˆ   s      rB   Ú_start_macroz&load_vi_bindings.<locals>._start_macroU  sH   € ð
 Ô˜qÔ!Ô&ˆØÕ!Ð!Ð!Ø”yÔ)ˆHà*+ˆHÔ'Ø)+ˆHÔ&Ð&Ð&ð	 "Ð!rA   c                óŽ   — | j         j        }|j        r1t          |j        ¦  «        |j        |j        <   d|_        d|_        dS dS )z'
        Stop recording macro.
        Nrµ   )r‡   rˆ   r+  r   r,  rv  )r‚   rˆ   s     rB   Ú_stop_macroz%load_vi_bindings.<locals>._stop_macroa  s_   € ð
 ”9Ô%ˆð Ô&ð 	,ÝDQØÔ*ñEô EˆHÔ$ XÔ%@ÑAð +/ˆHÔ'Ø)+ˆHÔ&Ð&Ð&ð	,ð 	,rA   ú@)rv   Úrecord_in_macroc                óv  — | j         d         j        }	 | j        j        j        |         }n# t
          $ r Y dS w xY wg }t          |j        ¦  «        }|                     |j	        ¦  «         | 
                    ¦   «          t          | j        ¦  «        D ]#}| j        j                             |d¬¦  «         Œ$dS )al  
        Execute macro.

        Notice that we pass `record_in_macro=False`. This ensures that the `@x`
        keys don't appear in the recording itself. This function inserts the
        body of the called macro back into the KeyProcessor, so these keys will
        be added later on to the macro of their handlers have
        `record_in_macro=True`.
        r2   NT)Úfirst)rt  r-  r‡   rˆ   rv  r#  r#   rN  Úfeedrj   ÚflushrX  r‹   Úkey_processorÚfeed_multiple)r‚   r(  Úmacrorz   Úparserre   s         rB   Ú_execute_macroz(load_vi_bindings.<locals>._execute_macrop  sÐ   € ð Ô˜qÔ!Ô&ˆð	Ø”IÔ&Ô6°qÔ9ˆEˆEøÝð 	ð 	ð 	ØˆFˆFð	øøøð
  "ˆå˜Tœ[Ñ)Ô)ˆØ�Š�E”JÑÔÐØ�Š‰Œˆõ �u”yÑ!Ô!ð 	Dð 	DˆAØŒIÔ#×1Ò1°$¸dÐ1ÑCÔCÐCÐCð	Dð 	Ds   ”, ¬
:¹:r˜   )F)r‚   rƒ   r:  r|   rM   r„   )rÿ  r|   r   r|   rM   r„   )rv   r   r  r  r  r‰   rM   r„   r  r^  rJ   )
rO  r‰   rP  r‰   rQ  r|   rR  rS  rM   r„   )r}  r|   rM   r„   )r0   rš   Útupler‰   r   r   r   r¸   r   r3   r!   r   r®   r   r   r°   r)   r  r¬   rž   r"   r   r   r   r   r   r³   r   r/   r   )“rs   ÚhandleÚTransformFunctionÚvi_transform_functionsrÚ   rá   rå   rê   rî   ró   rõ   rø   r   r  r  r
  r  r  r  r  r  r'  r.  r1  r;  r>  rA  rD  rT  r[  r_  rc  re  rm  rq  ry  r{  r  r‚  r†  r�  r’  r•  r˜  rœ  rž  r   r¥  rª  r¯  r´  r¸  r¼  rÀ  rÃ  rÉ  rÎ  rÔ  rÜ  rà  rã  rï  ró  rö  rú  rþ  r
  r  rÛ   rl  Úfuncr  r  r  r  r  r   r%  r(  r-  r/  r4  r6  r<  r?  rA  rC  rG  rK  rN  r_  rQ  rO  rP  ri  rk  rs  rv  ry  r|  r†  rŠ  rŒ  rŽ  r’  rœ  r   r¦  r­  r±  r´  r¶  rº  r¼  rÅ  rÌ  rÐ  rÓ  rÖ  rÜ  rÞ  rã  rç  rê  r§  rŒ   rð  rò  rô  rþ  r	  r  r  r  r  r  r  r  r   r&  r)  r-  r/  r:  rR  r	  r’   s“                                                                                                                                                   @@@rB   r4   r4   ”  s­  øøø€ õ  ‘=”=€LØÔ€Fõ
 �e¥C¨ Hœo­vµxÅÀÅsÀ
Ô7KÐKÔLÐð
 Ý‰HŒHØ:Ð:ð	
ð 
•V‘X”XÐ<Ð<Ð=à	•V‘X”XÐ<Ð<Ð=à	•V‘X”XÐ?Ð?Ð@àÝØ,Ð,ð	
ð7Ðð* )€F€Fˆ5�Ð(Ñ(Ô(­°_Ñ)EÔ)EÑFÔFÐFà€VˆHÑÔñ$ð $ð $ñ Ôð$ð €VˆCÕ)Ð*Ñ*Ô*ñ8ð 8ð 8ñ +Ô*ð8ð €VˆCÕ)Ð*Ñ*Ô*ñ:ð :ð :ñ +Ô*ð:ð €VˆDÕ+Ð,Ñ,Ô,Ø€VˆEÕ,Ð-Ñ-Ô-ñ6ð 6ð 6ñ .Ô-ñ -Ô,ð6ð €VˆCÕ*Ð+Ñ+Ô+ñ
ð 
ð 
ñ ,Ô+ð
ð €VˆFÕ-Ð.Ñ.Ô.Ø€VˆEÕ,Ð-Ñ-Ô-ñ8ð 8ð 8ñ .Ô-ñ /Ô.ð8ð €VˆCÕ*Ð+Ñ+Ô+ñ
ð 
ð 
ñ ,Ô+ð
ð €VˆKÕ 2Ð3Ñ3Ô3ñ
ð 
ð 
ñ 4Ô3ð
ð €VˆE�.Ð)Ñ)Ô)ñ2ð 2ð 2ñ *Ô)ð2ð €VˆE�.Ð)Ñ)Ô)ñ	1ð 	1ð 	1ñ *Ô)ð	1ð €VˆE�.Ð)Ñ)Ô)Ø€VˆE�.Ð)Ñ)Ô)ñ3ð 3ð 3ñ *Ô)ñ *Ô)ð3ð €VˆE�.Ð)Ñ)Ô)ñ1ð 1ð 1ñ *Ô)ð1ð ?€F€Fˆ7Õ-µÑ=Ð>Ñ>Ô>Ý�MÑ"Ô"ñô ð ð :€F€Fˆ7�=­L¨=Ñ8Ð9Ñ9Ô9½+ÀmÑ:TÔ:TÑUÔUÐUà€VˆG�]˜NÕ-?Ñ?Ð@Ñ@Ô@ñ
ð 
ð 
ñ AÔ@ð
ð €VˆHÕ/Ð0Ñ0Ô0ñ9ð 9ð 9ñ 1Ô0ð9ð €VˆH�^Ð,Ñ,Ô,ñ=ð =ð =ñ -Ô,ð=ð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ9ð 9ð 9ñ <Ô;ð9ð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ9ð 9ð 9ñ <Ô;ð9ð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ	9ð 	9ð 	9ñ <Ô;ð	9ð €VˆC�Õ/µ<°-Ñ?Ð@Ñ@Ô@Ø€VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ9ð 9ð 9ñ <Ô;ñ AÔ@ð9ð" €VˆCÕ*Ð+Ñ+Ô+ñ.ð .ð .ñ ,Ô+ð.ð €VˆC�Õ/Ð0Ñ0Ô0ñRð Rð Rñ 1Ô0ðRð@ €VˆCÕ)Ð*Ñ*Ô*ñ5ð 5ð 5ñ +Ô*ð5ð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ9ð 9ð 9ñ <Ô;ð9ð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ
ð 
ð 
ñ <Ô;ð
ð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ññ ð ð ñ <Ô;ðð< €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ5ð 5ð 5ð 5ð 5ñ <Ô;ð5ð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ2ð 2ð 2ñ <Ô;ð2ð €VˆC�Õ/µ<°-Ñ?Ð@Ñ@Ô@ñ>ð >ð >ñ AÔ@ð>ð €VˆCÕ)­\¨MÑ9Ð:Ñ:Ô:ñ3ð 3ð 3ñ ;Ô:ð3ð €VˆC�Õ.µ,°Ñ>Ð?Ñ?Ô?ñ?ð ?ð ?ñ @Ô?ð?ð €VˆCÕ*Ð+Ñ+Ô+ñ
ð 
ð 
ñ ,Ô+ð
ð €VˆCÕ*Ð+Ñ+Ô+ñ
ð 
ð 
ñ ,Ô+ð
ð €VˆC•”˜3Õ'9Ð:Ñ:Ô:ñ
ð 
ð 
ñ ;Ô:ð
ð €VˆC•”˜3Õ'9Ð:Ñ:Ô:ñ
ð 
ð 
ñ ;Ô:ð
ð €VˆCÕ*Ð+Ñ+Ô+ñAð Að Añ ,Ô+ðAð €VˆCÕ*Ð+Ñ+Ô+ñ:ð :ð :ñ ,Ô+ð:ð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ9ð 9ð 9ñ <Ô;ð9ð €VˆCÕ*¸¸ÐJÑJÔJñ(ð (ð (ñ KÔJð(ð €VˆCÕ*Ð+Ñ+Ô+ñQð Qð Qñ ,Ô+ðQð €VˆEÕ,Ð-Ñ-Ô-ñQð Qð Qñ .Ô-ðQð €VˆCÕ)Ð*Ñ*Ô*ñ6ð 6ð 6ñ +Ô*ð6ð €VˆCÕ*Ð+Ñ+Ô+ñVð Vð Vñ ,Ô+ðVð €VˆCÕ)Ð*Ñ*Ô*ñ6ð 6ð 6ñ +Ô*ð6ð €VˆEÕ+Ð,Ñ,Ô,ñ6ð 6ð 6ñ -Ô,ð6ð €VˆC�Õ.Ð/Ñ/Ô/Ø€VˆC�Õ.Ð/Ñ/Ô/ñ
Cð 
Cð 
Cñ 0Ô/ñ 0Ô/ð
Cð €VˆCÕ*Ð+Ñ+Ô+ñ/ð /ð /ñ ,Ô+ð/ð €VˆCÕ*Ð+Ñ+Ô+ñ/ð /ð /ñ ,Ô+ð/ð €VˆC�Õ/Ð0Ñ0Ô0Ø€VˆCÕ*Ð+Ñ+Ô+ñOð Oð Oñ ,Ô+ñ 1Ô0ðOð €VˆCÕ*Ð+Ñ+Ô+ñ

ð 

ð 

ñ ,Ô+ð

ð €VˆCÕ*Ð+Ñ+Ô+ñ

ð 

ð 

ñ ,Ô+ð

ð €VˆC�Õ/Ð0Ñ0Ô0Ø€VˆE�.Ð)Ñ)Ô)ñ=ð =ð =ñ *Ô)ñ 1Ô0ð=ð €VˆC�Õ/Ð0Ñ0Ô0Ø€VˆE�.Ð)Ñ)Ô)ñMð Mð Mñ *Ô)ñ 1Ô0ðMð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ9ð 9ð 9ñ <Ô;ð9ð €VˆCÕ*­l¨]Ñ:Ð;Ñ;Ô;ñ9ð 9ð 9ñ <Ô;ð9ð €VˆCÕ*Ð+Ñ+Ô+ñ=ð =ð =ñ ,Ô+ð=ð €VˆC��cÕ"4½°}Ñ"DÐEÑEÔEñ9ð 9ð 9ñ FÔEð9ð €VˆC��cÕ"4½°}Ñ"DÐEÑEÔEñ9ð 9ð 9ñ FÔEð9ð €VˆC��cÕ"4½°}Ñ"DÐEÑEÔEñ<ð <ð <ñ FÔEð<ð €VˆCÕ*Ð+Ñ+Ô+ñ
Vð 
Vð 
Vñ ,Ô+ð
Vð €VˆCÕ*Ð+Ñ+Ô+ñ
Vð 
Vð 
Vñ ,Ô+ð
Vð €VˆCÕ*Ð+Ñ+Ô+ñð ð ñ ,Ô+ðð
 €VˆCÕ*Ð+Ñ+Ô+ñð ð ñ ,Ô+ðõ
 )¨Ñ6Ô6€HÝ.¨|Ñ<Ô<€Kà€V�DŒHÕ<Ð=Ñ=Ô=ñ ð  ð  ñ >Ô=ð ð 27ñ#Añ #Að #Að #Að #Að #Að #AðJ 'Ð& u¨eÑ4Ô4Ð4Ø&Ð& u¨dÑ3Ô3Ð3Ø&Ð& t¨UÑ3Ô3Ð3Ø&Ð& t¨TÑ2Ô2Ð2ñMð Mð Mð Mð Mð Mð, -ð .ð .‰
ˆˆ1ˆdØ Ð   DÐ-¨1Ð-Ð-Ð-Ð-Ð-à€Xˆc�]„]ñ9ð 9ð 9ñ „]ð9ð €Xˆc•4”8˜SÑ!Ô!ñCð Cð Cñ "Ô!ðCð €Xˆc�]„]ñ5ð 5ð 5ñ „]ð5ð €Xˆc�]„]ñ7ð 7ð 7ñ „]ð7ð €Xˆc�3ÑÔñ&ð &ð &ñ Ôð&ð €[�ÑÔñ
ð 
ð 
ñ Ôð
ð €[�ÑÔñ	
ð 	
ð 	
ñ Ôð	
ð €[�ÑÔñTð Tð Tñ ÔðTð €[�ÑÔñ
ð 
ð 
ñ Ôð
ð €[�ÑÔñ	
ð 	
ð 	
ñ Ôð	
ð €[�ÑÔñPð Pð Pñ ÔðPð €[�ÑÔñPð Pð Pñ ÔðPð €[��c¨4Ð0Ñ0Ô0ñ&ð &ð &ñ 1Ô0ð&ð €[��c¨4Ð0Ñ0Ô0ñ&ð &ð &ñ 1Ô0ð&ð €[��c¨4Ð0Ñ0Ô0ñ&ð &ð &ñ 1Ô0ð&ð €[��c¨4Ð0Ñ0Ô0ñ&ð &ð &ñ 1Ô0ð&ð €[��c¨4Ð0Ñ0Ô0ñ&ð &ð &ñ 1Ô0ð&ð €[�ÑÔñ
ð 
ð 
ñ Ôð
ð €[�ÑÔñ	
ð 	
ð 	
ñ Ôð	
ð DHñ$Iñ $Ið $Ið $Ið $Ið $Ið $IðL ð 3ð 3ˆð!
ð 		:ð 		:ÑˆH�fð !Ð  ¨6°5Ñ9Ô9Ð9Ð9àÐ˜S # u¨cÑ2Ô2Ð2ØÐ˜S # u¨cÑ2Ô2Ð2Ð2à€[�ÑÔñ!ð !ð !ñ Ôð!ð €[�ÑÔñ!ð !ð !ñ Ôð!ð €[�•d”hÑÔñ!ð !ð !ñ  Ôð!ð €[�•d”hÑÔñ
ð 
ð 
ñ  Ôð
ð €[�•d”hÑÔñ!ð !ð !ñ  Ôð!ð €[�•d”hÑÔñ5ð 5ð 5ñ  Ôð5ñ"%ð "%ð "%ð "%ð "%ð "%ðH €Fˆ4�L„L€LØ
€Fˆ5�M„M€Mà€[�ÑÔØ€[�ÑÔñ
ð 
ð 
ñ Ôñ Ôð
ð €[� dÀÐFÑFÔFñ
ð 
ð 
ñ	 GÔFð
ð €[� dÀÐFÑFÔFñ
ð 
ð 
ñ GÔFð
ð €[�ÑÔØ€[�ÑÔØ€[�ÑÔñ
ð 
ð 
ñ Ôñ Ôñ Ôð
ð €[�ÑÔñ=ð =ð =ñ Ôð=ð. €[�ÑÔñ=ð =ð =ñ Ôð=ð. €[�ÑÔñ=ð =ð =ñ Ôð=ð, €[� dÐ+Ñ+Ô+ñ
Bð 
Bð 
Bñ ,Ô+ð
Bð €VˆCÕ*Ð+Ñ+Ô+ñ
ð 
ð 
ñ ,Ô+ð
ð €[� dÐ+Ñ+Ô+ñ
Bð 
Bð 
Bñ ,Ô+ð
Bð €VˆCÕ*Ð+Ñ+Ô+ñ
ð 
ð 
ñ ,Ô+ð
ð €VˆC�Õ/Õ2CÑCÐDÑDÔDØ€VˆC�Õ/Õ2CÑCÐDÑDÔDØ€VˆC�Õ!3Õ6GÑ!GÐHÑHÔHñYð Yð Yñ IÔHñ EÔDñ EÔDðYð €VˆC�Õ/Õ2CÑCÐDÑDÔDØ€VˆC�Õ/Õ2CÑCÐDÑDÔDñ<ð <ð <ñ EÔDñ EÔDð<ð €VˆC�Õ/Õ2CÑCÐDÑDÔDñ"ð "ð "ñ EÔDð"ð6 €[�ÑÔñ%ð %ð %ñ Ôð%ð: €[�ÑÔñ
ð 
ð 
ñ Ôð
ð €[��cÑÔñð ð ñ Ôðð& €[��cÑÔñ
ð 
ð 
ñ Ôð
ð €[��cÑÔñ

ð 

ð 

ñ Ôð

ð €[��cÑÔñ

ð 

ð 

ñ Ôð

ð €[��cÑÔñð ð ñ Ôðð €[�ÑÔñ	
ð 	
ð 	
ñ Ôð	
ð €VˆC�Ð Ñ Ô ñ:ð :ð :ñ !Ô ð:ð ð 2ð 2ˆà	ˆØÝ%Ýñ å-ñ.ð

ñ 

ô 

ñ	2ð 	2ð 	2ñ

ô 

ð	2ð 	2ð €VØåÕ!2Ñ2Õ5TÑTå
ñðñ ô ñ.ð .ð .ñô ð.ð €V�DŒH�_Ð-Ñ-Ô-ñEð Eð Eñ .Ô-ðEð €V�DŒHÕ3Ð4Ñ4Ô4ñ=ð =ð =ñ 5Ô4ð=ð €VÝŒÝ&Ø.Ð.ðñ ô ñ
"ð "ð "ñô ð
"ð: €VˆKÕ 7Ð8Ñ8Ô8ñ $ð  $ð  $ñ 9Ô8ð $ðD €VˆHÕ4Ð5Ñ5Ô5ñ!$ð !$ð !$ñ 6Ô5ð!$ðF €VˆFÕ2Ð3Ñ3Ô3ñ&ð &ð &ñ 4Ô3ð&ð$ €VˆGÕ3Ð4Ñ4Ô4ñ&ð &ð &ñ 5Ô4ð&ð& €VˆDÕ0Ð1Ñ1Ô1Ø€VˆFÕ2Ð3Ñ3Ô3ñð ð ñ 4Ô3ñ 2Ô1ðð
 €V‰E‘5¥Ð0Ñ0Ô0ñ>ñ >ð >ñ 1Ô0ð>ð €V‰E‘5¥Ð0Ñ0Ô0ññ ð ñ 1Ô0ðð €V‰E�.­?Ñ:Ð;Ñ;Ô;ñ6ñ 6ð 6ñ <Ô;ð6ð €V�DŒH�_Õ0FÐ/FÑFÐGÑGÔGñ8ñ 8ð 8ñ HÔGð8ð €V�DŒH�_Õ/EÑEÐFÑFÔFñ6ñ 6ð 6ñ GÔFð6ð2 €V‰E�.­?Ñ:Ð;Ñ;Ô;ñ<ñ <ð <ñ <Ô;ð<ð €VˆC•”Õ"4Õ8JÐ7JÑ"JÐKÑKÔKñ	,ñ 	,ð 	,ñ LÔKð	,ð €VˆCÕ*Õ-?Ñ?Ð@Ñ@Ô@ñ,ñ ,ð ,ñ AÔ@ð,ð €V‰C•”Õ"4ÀeÑLÑLÔLñDñ Dð Dñ MÔLðDõ: " ,µÑ8Ô8Ð8rA   c                 óà  — t          ¦   «         } | j        }ddlm}   |dt          t
          z  t           z  ¬¦  «        |j        ¦  «           |dt          t
          z  t          z  ¬¦  «        |j        ¦  «           |d¦  «        |j        ¦  «           |dt          t
          z  t           z  ¬¦  «        |j        ¦  «           |dt          t
          z  t          z  ¬¦  «        |j        ¦  «           |d¦  «        |j        ¦  «           |dt          ¬¦  «        |j
        ¦  «           |dt          ¬¦  «        |j        ¦  «           |dt          ¬¦  «        |j        ¦  «           |d	¦  «        |j        ¦  «           |d
¦  «        |j        ¦  «           |dt          ¬¦  «        |j        ¦  «           |d¦  «        |j
        ¦  «         t          | t           ¦  «        S )Nr2   )Úsearchú/rÑ   r»   zc-szc-rr  zc-cr  rö   rÒ   )r0   rš   rµ   rA  r   r!   r    Ú start_forward_incremental_searchÚ start_reverse_incremental_searchr   Úaccept_searchÚreverse_incremental_searchÚforward_incremental_searchÚabort_searchr¶   r/   r   )rs   r<  rA  s      rB   r5   r5   ‘  sY  € Ý‘=”=€LØÔ€FØÐÐÐÐÐð€F€FØÝ"Õ%6Ñ6Õ;WÐ:WÑWðñ ô ð Ô-ñ/ô /ð /ð€F€FØÝ"Õ%6Ñ6Õ:VÑVðñ ô ð Ô-ñ/ô /ð /ð €F€Fˆ5�M„M�&Ô9Ñ:Ô:Ð:ð€F€FØÝ"Õ%6Ñ6Õ;WÐ:WÑWðñ ô ð Ô-ñ/ô /ð /ð€F€FØÝ"Õ%6Ñ6Õ:VÑVðñ ô ð Ô-ñ/ô /ð /ð €F€Fˆ5�M„M�&Ô9Ñ:Ô:Ð:ð )€F€Fˆ7�<Ð(Ñ(Ô(¨Ô)=Ñ>Ô>Ð>à&€F€Fˆ5�Ð&Ñ&Ô& vÔ'HÑIÔIÐIØ&€F€Fˆ5�Ð&Ñ&Ô& vÔ'HÑIÔIÐIà€F€Fˆ5�M„M�&Ô%Ñ&Ô&Ð&Ø€F€Fˆ5�M„M�&Ô%Ñ&Ô&Ð&Ø6€F€Fˆ;Õ5Ð6Ñ6Ô6°vÔ7JÑKÔKÐKð €F€Fˆ8ÑÔ�VÔ)Ñ*Ô*Ð*å! ,µÑ8Ô8Ð8rA   )rs   r0   rM   rt   )rs   r0   rM   r    )rM   r|   )rM   r1   )XÚ
__future__r   r¾   rÁ   Úcollections.abcr   r   Úenumr   Ú	itertoolsr   Útypingr   Ú"prompt_toolkit.application.currentr	   Úprompt_toolkit.bufferr
   r   r   r   Úprompt_toolkit.clipboardr   Úprompt_toolkit.documentr   Úprompt_toolkit.filtersr   r   r   r   r   r   Úprompt_toolkit.filters.appr   r   r   r   r   r   r   r   r   r   r    r!   r"   Ú!prompt_toolkit.input.vt100_parserr#   Ú#prompt_toolkit.key_binding.digraphsr$   Ú(prompt_toolkit.key_binding.key_processorr%   r&   Ú#prompt_toolkit.key_binding.vi_stater'   r(   Úprompt_toolkit.keysr)   Úprompt_toolkit.searchr*   Úprompt_toolkit.selectionr+   r,   r-   rs   r/   r0   r1   Únamed_commandsr3   Ú__all__rƒ   Úascii_lowercaseru  r8   rD   ÚTextObjectFunctionrq   rž   ÚOperatorFunctionrŸ   r¬   r®   r°   r³   r¶   r¸   r4   r5   r@   rA   rB   ú<module>r`     s_  ðà "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð à 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð :Ð 9Ð 9Ð 9Ð 9Ð 9Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ $Ð $Ð $Ð $Ð $Ð $Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ Mà OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ 'Ð 'Ð 'Ð 'Ð 'Ð 'ð Øð€ð
 €àÔ(€à# lÑ2Ð ðð ð ð ð �Tñ ô ð ðe,ð e,ð e,ð e,ð e,ñ e,ô e,ð e,ðR ˜q˜c :˜oÔ.Ð Ø€wˆvÐ/Ð0Ñ0Ô0€ðs!ð s!ð s!ð s!ðn ˜Q 
˜O¨TÐ1Ô2Ð Ø€gˆeÐ+Ð,Ñ,Ô,€ðHð Hð Hð HðV ð2ð 2ð 2ñ „ð2ð ðð ð ñ „ðð ð:ð :ð :ñ „ð:ð ð/ð /ð /ñ „ð/ð
 ð-ð -ð -ñ „ð-ðz9ð z9ð z9ð z9ðz7)9ð )9ð )9ð )9ð )9ð )9rA   