ó
    OÎhR' ã                  óž  • S SK Jr  S SKrS SKrS SKJr  S SKJr  S SKJ	r	J
r
JrJr  S SKJr  S SKJrJrJrJr  S SKJr  S S	KJr  S S
KJrJrJrJrJrJr  S SKJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,  S SK-J.r.  S SK/J0r0  S SK1J2r2J3r3  S SK4J5r5J6r6  S SK7J8r8  S SK9J:r:  S SK;J<r<J=r=J>r>  SSK?J@r@JArAJBrB  SSKCJDrD  SS/rE\3rF\RŽ                  rG\GS-   rH " S S\5      rI " S S5      rJ\	\F/\J4   rK\" S\KS9rL    S*S  jrM\	\F\J/S4   rN\" S!\NS9rO    S+S" jrP\S,S# j5       rQ\S,S$ j5       rR\S,S% j5       rS\S,S& j5       rT\S,S' j5       rUS-S( jrVS-S) jrWg).é    )ÚannotationsN)ÚEnum)Ú
accumulate)ÚCallableÚIterableÚTupleÚ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                  ó$   • \ rS rSrSrSrSrSrSrg)ÚTextObjectTypeé<   Ú	EXCLUSIVEÚ	INCLUSIVEÚLINEWISEÚBLOCK© N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r;   r<   r=   r>   Ú__static_attributes__r?   ó    Úc/home/mande/repo/quber/.venv/lib/python3.13/site-packages/prompt_toolkit/key_binding/bindings/vi.pyr9   r9   <   s   † Ø€IØ€IØ€HØƒErE   r9   c                  ó„   • \ rS rSrSrS\R                  4     SS jjr\SS j5       r	SS jr
SS jrSS jrSS	 jrS
rg)Ú
TextObjectéC   z}
Return struct for functions wrapped in ``text_object``.
Both `start` and `end` are relative to the current cursor position.
r   c                ó(   • Xl         X l        X0l        g ©N)ÚstartÚendÚtype)ÚselfrL   rM   rN   s       rF   Ú__init__ÚTextObject.__init__I   s   € ð Œ
ØŒØ�	rE   c                óÚ   • U R                   [        R                  :X  a  [        R                  $ U R                   [        R
                  :X  a  [        R
                  $ [        R                  $ rK   )rN   r9   r=   r.   ÚLINESr>   Ú
CHARACTERS©rO   s    rF   Úselection_typeÚTextObject.selection_typeP   sJ   € à�9‰9œ×/Ñ/Ó/Ü ×&Ñ&Ð&Ø�9‰9œ×,Ñ,Ó,Ü ×&Ñ&Ð&ä ×+Ñ+Ð+rE   c                ó–   • U R                   U R                  :  a  U R                   U R                  4$ U R                  U R                   4$ )z1
Return a (start, end) tuple where start <= end.
)rL   rM   rU   s    rF   ÚsortedÚTextObject.sortedY   s:   € ð �:‰:˜Ÿ™Ó Ø—:‘:˜tŸx™xÐ'Ð'à—8‘8˜TŸZ™ZÐ'Ð'rE   c                ód  • U R                  5       u  p#UnU R                  [        R                  :X  a)  UR	                  X4R
                  -   5      S   S:X  a  US-  nU R                  [        R                  :X  a  US-  nU R                  [        R                  :X  a’  UR	                  X$R
                  -   5      u  pVUR                  US5      UR
                  -
  nUR	                  X4R
                  -   5      u  pVUR                  U[        UR                  U   5      5      UR
                  -
  nX#4$ )a  
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.
r3   r   )rY   rN   r9   r;   Útranslate_index_to_positionÚcursor_positionr<   r=   Útranslate_row_col_to_indexÚlenÚlines)rO   ÚdocumentrL   rM   ÚdocÚrowÚcols          rF   Úoperator_rangeÚTextObject.operator_rangeb   s  € ð —[‘[“]‰
ˆØˆð �I‰Iœ×1Ñ1Ó1Ø×/Ñ/°×6IÑ6IÑ0IÓJÈ1ÑMÐQRÓRð �1‰HˆCØ�9‰9œ×0Ñ0Ó0Ø�1‰HˆCØ�9‰9œ×/Ñ/Ó/à×6Ñ6°u×?RÑ?RÑ7RÓS‰HˆCØ×2Ñ2°3¸Ó:¸S×=PÑ=PÑPˆEØ×6Ñ6°s×=PÑ=PÑ7PÓQ‰HˆCà×.Ñ.¨s´C¸¿	¹	À#¹Ó4GÓHØ×%Ñ%ñ&ð ð ˆzÐrE   c                óî   • U R                  UR                  5      u  p#X!R                  -  nX1R                  -  nUR                  R                  U5      u  p$UR                  R                  U5      u  p4X#4$ )z'
Return a (start_line, end_line) pair.
)re   ra   r]   r\   )rO   ÚbufferÚfrom_ÚtoÚ_s        rF   Úget_line_numbersÚTextObject.get_line_numbers‚   sl   € ð
 ×'Ñ'¨¯©Ó8‰	ˆØ×'Ñ'Ñ'ˆØ
×$Ñ$Ñ$ˆð —?‘?×>Ñ>¸uÓE‰ˆØ—‘×;Ñ;¸BÓ?‰ˆàˆyÐrE   c           	     ó4  • U R                  UR                  5      u  p#X!R                  -  nX1R                  -  nU R                  [        R
                  :w  a  US-  n[        UR                  U[        X R                  S95      nUR                  5       u  pVXV4$ )z1
Turn text object into `ClipboardData` instance.
r3   )Úoriginal_cursor_positionrN   )re   ra   r]   rN   r9   r=   r   Útextr-   rV   Úcut_selection)rO   rh   ri   rj   ra   Únew_documentÚclipboard_datas          rF   ÚcutÚTextObject.cut‘   s‘   € ð ×'Ñ'¨¯©Ó8‰	ˆà×'Ñ'Ñ'ˆØ
×$Ñ$Ñ$ˆð �9‰9œ×/Ñ/Ó/Ø�!‰GˆBäØ�K‰KØÜ°E×@SÑ@SÑTó
ˆð (0×'=Ñ'=Ó'?Ñ$ˆØÐ+Ð+rE   )rM   rL   rN   N)rL   ÚintrM   rv   rN   r9   )Úreturnr.   )rw   útuple[int, int])ra   r   rw   rx   )rh   r   rw   rx   )rh   r   rw   ztuple[Document, ClipboardData])r@   rA   rB   rC   Ú__doc__r9   r;   rP   ÚpropertyrV   rY   re   rl   rt   rD   r?   rE   rF   rH   rH   C   sZ   † ñð &'¸~×?WÑ?WðØðØ"ðØ.<õð ó,ó ð,ô(ôô@÷,rE   rH   Ú_TOF)Úboundc                óL   ^ • [        5       SSSS.           SU 4S jjjnU$ )zQ
Create a decorator that can be used to register Vi text object implementations.
F)ÚfilterÚno_move_handlerÚno_selection_handlerÚeagerc                ó,   >^ ^^^^• SUU UUUU4S jjnU$ )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.)
c                ó$  >^ • TR                   " T[        T-  TS.6SU 4S jj5       nT(       d-  TR                   " T[        ) T-  [        -  TS.6SU 4S jj5       nT	(       d-  TR                   " T[        ) T-  [        -  TS.6SU 4S jj5       nT $ )N©r~   r�   c                óT  >• U R                   R                  n[        UR                  =(       d    SU R                  =(       d    S-  5      U l        T" U 5      nUR                  nUb  Ub  U" X5        S U R                   R                  l        S U R                   R                  l        g ©Nr3   )ÚappÚvi_stateÚstrÚoperator_argÚargÚ_argÚoperator_func)Úeventrˆ   Útext_objr�   Útext_object_funcs       €rF   Ú_apply_operator_to_text_objectÚvcreate_text_object_decorator.<locals>.text_object_decorator.<locals>.decorator.<locals>._apply_operator_to_text_objectÍ   sŠ   ø€ ð
 !Ÿ9™9×-Ñ-�Ü  (×"7Ñ"7×"<¸1ÀÇÁÇÈaÑ!PÓQ�”
ñ ,¨EÓ2�ð
 !)× 6Ñ 6�àÑ'¨MÑ,Eá! %Ô2ð 48�—	‘	×"Ñ"Ô0Ø26�—	‘	×"Ñ"Õ/rE   c                óh   >• T" U 5      nU R                   =R                  UR                  -  sl        g)z#
Move handler for navigation mode.
N)Úcurrent_bufferr]   rL   )rŽ   Útext_objectr�   s     €rF   Ú_move_in_navigation_modeÚpcreate_text_object_decorator.<locals>.text_object_decorator.<locals>.decorator.<locals>._move_in_navigation_modeè   s,   ø€ ñ #3°5Ó"9�KØ×(Ñ(×8Ò8¸K×<MÑ<MÑMÖ8rE   c                óà  >• T" U 5      nU R                   nUR                  nUc  gUR                  (       a�  UR                  UR                  5      u  pEXBR
                  -  nXRR
                  -  nXCl        XRl        UR                  [        R                  :X  a  [        R                  Ul        g[        R                  Ul        gU R                   =R
                  UR                  -  sl        g)z"
Move handler for selection mode.
N)r”   Úselection_staterM   re   ra   r]   ro   rN   r9   r=   r.   rS   rT   rL   )rŽ   r•   Úbuffr™   rL   rM   r�   s         €rF   Ú_move_in_selection_modeÚocreate_text_object_decorator.<locals>.text_object_decorator.<locals>.decorator.<locals>._move_in_selection_modeù   sÄ   ø€ ñ #3°5Ó"9�KØ ×/Ñ/�DØ&*×&:Ñ&:�Oà&Ñ.Øð #——à%0×%?Ñ%?ÀÇÁÓ%N™
˜Ø×!5Ñ!5Ñ5˜Ø×3Ñ3Ñ3˜àCHÔ@Ø/2Ô,ð '×+Ñ+¬~×/FÑ/FÓFÜ3@×3FÑ3F˜OÕ0ä3@×3KÑ3K˜OÕ0à×,Ñ,×<Ò<À×@QÑ@QÑQÖ<rE   ©rŽ   ÚErw   ÚNone©Úaddr#   r   r"   )
r�   r‘   r–   r›   r�   r~   Úkey_bindingsÚkeysr   r€   s
   `   €€€€€€rF   Ú	decoratorÚNcreate_text_object_decorator.<locals>.text_object_decorator.<locals>.decoratorÌ   s¹   ù€ Ø×ÒØÔ=ÀÑFÈeòö7óð7ö, #à×!Ò!ØÜ;Ð;Øñä(ñ)ð  òöNóðNö (à×!Ò!ØÜ;Ð;Øñä'ñ(ð  òöRóðRð> $Ð#rE   )r�   r{   rw   r{   r?   )r~   r   r€   r�   r£   r¤   r¢   s   ````` €rF   Útext_object_decoratorÚ;create_text_object_decorator.<locals>.text_object_decorator·   s   ý€ ÷*S	$ô S	$ðj ÐrE   )r£   ú
Keys | strr~   r   r   Úboolr€   r©   r�   r©   rw   zCallable[[_TOF], _TOF]©r   )r¢   r¦   s   ` rF   Úcreate_text_object_decoratorr«   °   sf   ø€ ô  ›Ø %Ø%*ØñjØðjàðjð ðjð #ð	jð
 ðjð 
 ÷jð jðX !Ð rE   Ú_OFc                ó@   ^ • [        5       SS.       SU 4S jjjnU$ )zC
Create a decorator that can be used for registering Vi operators.
Fr„   c                ó$   >^ ^^• SUU UU4S jjnU$ )z™
Register a Vi operator.

Usage::

    @operator('d', filter=...)
    def handler(event, text_object):
        # Do something with the text object here.
c                ó¾   >^ • TR                   " T[        ) T-  [        -  TS.6SU 4S jj5       nTR                   " T[        ) T-  [        -  TS.6SU 4S jj5       nT $ )Nr„   c                ó†   >• TU R                   R                  l        U R                  U R                   R                  l        g)z%
Handle operator in navigation mode.
N)r‡   rˆ   r�   r‹   rŠ   )rŽ   r�   s    €rF   Ú_operator_in_navigationÚicreate_operator_decorator.<locals>.operator_decorator.<locals>.decorator.<locals>._operator_in_navigation@  s.   ø€ ð 4A�—	‘	×"Ñ"Ô0Ø27·)±)�—	‘	×"Ñ"Õ/rE   c                óz  >• U R                   nUR                  nUbŸ  UR                  [        R                  :X  a  [
        R                  nO?UR                  [        R                  :X  a  [
        R                  nO[
        R                  n[        UR                  UR                  -
  US9nT" X5        SUl        gg)z$
Handle operator in selection mode.
N©rN   )r”   r™   rN   r.   rS   r9   r=   r>   r<   rH   ro   r]   )rŽ   rš   r™   Útext_obj_typer•   r�   s        €rF   Ú_operator_in_selectionÚhcreate_operator_decorator.<locals>.operator_decorator.<locals>.decorator.<locals>._operator_in_selectionO  s¤   ø€ ð ×+Ñ+�Ø"&×"6Ñ"6�à"Ñ.à&×+Ñ+¬}×/BÑ/BÓBÜ(6×(?Ñ(?™Ø(×-Ñ-´×1DÑ1DÓDÜ(6×(<Ñ(<™ä(6×(@Ñ(@˜ä",Ø'×@Ñ@À4×CWÑCWÑWØ*ñ#�Kñ " %Ô5ð ,0�DÕ(ð% /rE   r�   r    )r�   r±   r¶   r�   r~   r¢   r£   s   `  €€€€rF   r¤   ÚHcreate_operator_decorator.<locals>.operator_decorator.<locals>.decorator?  su   ù€ Ø×ÒØÜ7Ð7¸&Ñ@ÔCUÑUØòö
<óð
<ð ×ÒØÜ7Ð7¸&Ñ@ÔCTÑTØòö
0óð
0ð6 !Ð rE   )r�   r¬   rw   r¬   r?   )r~   r�   r£   r¤   r¢   s   ``` €rF   Úoperator_decoratorÚ5create_operator_decorator.<locals>.operator_decorator2  s   û€ ÷0	!ò 0	!ðd ÐrE   )r£   r¨   r~   r   r�   r©   rw   zCallable[[_OF], _OF]rª   )r¢   r¹   s   ` rF   Úcreate_operator_decoratorr»   +  s?   ø€ ô -3«HÀEñ?Øð?Ø#)ð?Ø=Að?à	÷?ð ?ðB ÐrE   c                 ó>   • [        5       R                  R                  $ rK   )r
   r”   Úis_returnabler?   rE   rF   r½   r½   v  s   € ä‹9×#Ñ#×1Ñ1Ð1rE   c                 ó°   • [        5       R                  n [        U R                  =(       a'    U R                  R                  [
        R                  :H  5      $ rK   )r
   r”   r©   r™   rN   r.   r>   )rš   s    rF   Úin_block_selectionr¿   {  sA   € ä‹9×#Ñ#€DÜØ×Ñ×Q ×!5Ñ!5×!:Ñ!:¼m×>QÑ>QÑ!Qóð rE   c                 óB   • [        5       R                  R                  S L$ rK   )r
   rˆ   Údigraph_symbol1r?   rE   rF   Údigraph_symbol_1_givenrÂ   ƒ  s   € ä‹9×Ñ×-Ñ-°TÐ9Ð9rE   c                 óD   • [        5       R                  R                  S:H  $ )z-Returns True when the search buffer is empty.Ú )r
   r”   rp   r?   rE   rF   Úsearch_buffer_is_emptyrÅ   ˆ  s   € ô ‹9×#Ñ#×(Ñ(¨BÑ.Ð.rE   c                 ó>   • [        5       R                  R                  $ rK   )r
   rˆ   Útilde_operatorr?   rE   rF   rÇ   rÇ   Ž  s   € ä‹9×Ñ×,Ñ,Ð,rE   c                 ó  ^�^‘^’• [        5       n U R                  n[        [        [        S4   [        [
        [        /[        4   4   nS[        5       S 4S[        5       S 4S[        5       S 4S[        5       S	 4S
[        S 4/nU" S[        S9" [        S5      5        U" S5      SûS j5       nU" S[        S9SûS j5       nU" S[        S9SûS j5       nU" S[        S9U" S[        S9SûS j5       5       nU" S[        S9SûS j5       nU" S[        S9U" S[        S9SûS j5       5       n	U" S[        S9SûS j5       n
U" S[        S9SûS j5       nU" S[        S9SûS  j5       nU" S[        S9SûS! j5       nU" S"[        S9U" S#[        S9SûS$ j5       5       nU" S%[        S9SûS& j5       nU" S'[        [        -  S9" [        S(5      5        U" S'[        [        ) -  S9" [        S(5      5        U" S'[        ) [        -  S9SûS) j5       nU" S*[        S9SûS+ j5       nU" S*[        S9SûS, j5       nU" S-[        [        ) -  S9SûS. j5       nU" S/[        [        ) -  S9SûS0 j5       nU" S1[        [        ) -  S9SûS2 j5       nU" S3S3[        [        ) -  S9U" S4[        [        ) -  S9SûS5 j5       5       nU" S6[        S9SûS7 j5       nU" S8S8[        S9SûS9 j5       nU" S:[        S9SûS; j5       nU" S<[        [        ) -  S9SûS= j5       nU" S>[        [        ) -  S9SûS? j5       nU" S>[        [        ) -  S9SüSýSA jj5       m�U" S/[        [        ) -  S9SûU�4SB jj5       nU" SC[        [        ) -  S9SûSD j5       nU" SESC[        [        ) -  S9SûSF j5       nU" SC[        [        ) -  S9SûSG j5       nU" SESC[        [        ) -  S9SûSH j5       n U" SI[        S9SûSJ j5       n!U" SK[        S9SûSL j5       n"U" SM[         R"                  SI[        S9SûSN j5       n#U" SM[         R"                  SK[        S9SûSO j5       n$U" SP[        S9SûSQ j5       n%U" SR[        S9SûSS j5       n&U" ST[        [        ) -  S9SûSU j5       n'U" SV[        SW SX9SûSY j5       n(U" SZ[        S9SûS[ j5       n)U" S[        S9SûS\ j5       n*U" SZ[        S9SûS] j5       n+U" S^[        S9SûS_ j5       n,U" S^[        S9SûS` j5       n-U" S[        S9SûSa j5       n.U" S-Sb[        S9U" S-Sc[        S9SûSd j5       5       n/U" S:[        S9SûSe j5       n0U" Sf[        S9SûSg j5       n1U" ShSh[        S9U" Si[        S9SûSj j5       5       n2U" Sk[        S9SûSl j5       n3U" Sm[        S9SûSn j5       n4U" SoSo[        S9U" Sp[        S9SûSq j5       5       n5U" SrSr[        S9U" Ss[        S9SûSt j5       5       n6U" Su[        [        ) -  S9SûSv j5       n7U" Sw[        [        ) -  S9SûSx j5       n8U" Sy[        S9SûSz j5       n9U" SESVSV[        [        ) -  S9SûS{ j5       n:U" SES|S|[        [        ) -  S9SûS} j5       n;U" SESySy[        [        ) -  S9SûS~ j5       n<U" S[        S9SûS€ j5       n=U" S�[        S9SûS‚ j5       n>U" Sƒ[        S9SûS„ j5       n?U" S…[        S9SûS† j5       n@[%        U 5      m‘['        U 5      m’U" [         R"                  [(        S9SûS‡ j5       nA Sü     SþU‘4Sˆ jjjnBUB" S@S@5        UB" S@S‰5        UB" S‰S@5        UB" S‰S‰5                SÿU‘4SŠ jjnCU H  u  nDnEnFWC" UEUF/UDQ76   M     T‘" Sh5      GS S‹ j5       nGT‘" SM[         R"                  Sh5      GS SŒ j5       nHT‘" So5      GS S� j5       nIT‘" Sr5      GS SŽ j5       nJT‘" SES�5      GS S� j5       nKT’" S‘5      GSS’ j5       nLT’" S“5      GSS” j5       nMT’" S•5      GSS– j5       nNT’" Sb5      GSS— j5       nOT’" Sc5      GSS˜ j5       nPT’" S™5      GSSš j5       nQT’" S5      GSS› j5       nRT’" S<SbS‰Sœ9GSS� j5       nST’" S-SbS‰Sœ9GSSž j5       nTT’" S<ScS‰Sœ9GSSŸ j5       nUT’" S-ScS‰Sœ9GSS  j5       nVT’" S-SIS‰Sœ9GSS¡ j5       nWT’" S¢5      GSS£ j5       nXT’" S¤5      GSS¥ j5       nY GS         GSU’4S¦ jjjnZS§ H/  n[S¨ H  u  n\n]WZ" U\U]W[5        M     WZ" SƒS…W[S‘5        UZ" S©SªU[S“5        M1     T’" S©5      GSS« j5       n^T’" Sª5      GSS¬ j5       n_T’" S­[         R"                  5      GSS® j5       n`T’" S¯[         R"                  5      GSS° j5       naT’" S±[         R"                  5      GSS² j5       nbT’" S³[         R"                  5      GSS´ j5       ncGSU’4Sµ jjndUd" S‰5        Ud" S@5        T’" S¶5      T’" S·5      GSS¸ j5       5       neT’" SS‰S‰S¹9GSSº j5       nfT’" SS‰S‰S¹9GSS» j5       ngT’" S¼5      T’" S½5      T’" S¾5      GSS¿ j5       5       5       nhT’" SÀ5      GSSÁ j5       niT’" SÂ5      GSSÃ j5       njT’" SÄ5      GSSÅ j5       nkT’" SÆS‰Sœ9GSSÇ j5       nlU" SÆ[        S9SûSÈ j5       nmT’" SÉS‰Sœ9GSSÊ j5       nnU" SÉ[        S9SûSË j5       noU" SÌSk[        [        -  S9U" SÌS±[        [        -  S9U" SÌS'[        [        -  S9SûSÍ j5       5       5       npU" SÌSm[        [        -  S9U" SÌS‘[        [        -  S9SûSÎ j5       5       nqU" SÌSÌ[        [        -  S9SûSÏ j5       nrT’" SÐ5      GSSÑ j5       nsT’" SÒ5      GSSÓ j5       ntT’" SESE5      GSSÔ j5       nuT’" SESÕ5      GSSÖ j5       nvT’" SES™5      GSS× j5       nwT’" SES5      GSSØ j5       nxT’" SESÙ5      GSSÚ j5       nyT’" SÛ5      GSSÜ j5       nzU" SÛ[*        S9SûSÝ j5       n{SÞ H$  n|U" U|[        [        -  [(        -  S9SûSß j5       n}M&     U" S¤[        [        -  [(        -  [*        -  S9SûSà j5       n~U" [         R"                  [,        S9SûSá j5       nU" [         R"                  [.        S9SûSâ j5       n€U" [         R"                  [0        Sã SX9SûSä j5       n�U" S[0        S9SûSå j5       n‚U" Sæ[0        S9SûSç j5       nƒU" S·[0        S9SûSè j5       n„U" S¾[0        S9SûSé j5       n…U" S[0        S9U" S[0        S9SûSê j5       5       n†U" SëSì[        S9SûSí j5       n‡U" SëSî[        S9SûSï j5       nˆU" Sð[        [,        -  S9SûSñ j5       n‰U" [         R"                  [2        [4        ) -  S9SûSò j5       nŠU" [         R"                  [2        [4        -  S9SûSó j5       n‹U" Sô[        [,        -  S9SûSõ j5       nŒU" S�[         R"                  [        [6        ) -  S9SûSö j5       n�U" S�[        [6        -  S9SûS÷ j5       nŽU" Sø[         R"                  [        S@Sù9SûSú j5       n�[9        U [:        5      $ (  z}
Vi extensions.

# Overview of Readline Vi commands:
# http://www.catonmat.net/download/bash-vi-editing-mode-cheat-sheet.pdf
.)ÚgÚ?c                ó0   • [         R                  " U S5      $ )NÚrot_13)ÚcodecsÚencode©Ústrings    rF   Ú<lambda>Ú"load_vi_bindings.<locals>.<lambda>°  s   € œ6Ÿ=š=¨°Ô:rE   )rÉ   Úuc                ó$   • U R                   " 5       $ rK   ©ÚlowerrÏ   s    rF   rÑ   rÒ   ³  ó
   € ¨f¯lªl¬nrE   )rÉ   ÚUc                ó$   • U R                   " 5       $ rK   ©ÚupperrÏ   s    rF   rÑ   rÒ   µ  r×   rE   )rÉ   Ú~c                ó$   • U R                   " 5       $ rK   ©ÚswapcaserÏ   s    rF   rÑ   rÒ   ·  s   € ¨f¯oªoÔ.?rE   )rÜ   c                ó$   • U R                   " 5       $ rK   rÞ   rÏ   s    rF   rÑ   rÒ   »  s   € ˜6Ÿ?š?Ô,rE   zc-v©r~   zquoted-insertÚescaperž   c                ó~  • U R                   nU R                  R                  nUR                  [        R
                  [        R                  4;   a-  U=R                  UR                  R                  5       -  sl        [        R                  Ul        [        UR                  5      (       a  UR                  5         gg)z$
Escape goes to vi navigation mode.
N)r”   r‡   rˆ   Ú
input_moder)   ÚINSERTÚREPLACEr]   ra   Úget_cursor_left_positionÚ
NAVIGATIONr©   r™   Úexit_selection)rŽ   rh   rˆ   s      rF   Ú_back_to_navigationÚ-load_vi_bindings.<locals>._back_to_navigationÂ  s‹   € ð
 ×%Ñ%ˆØ—9‘9×%Ñ%ˆà×Ñ¤9×#3Ñ#3´Y×5FÑ5FÐ"GÓGØ×"Ò" f§o¡o×&NÑ&NÓ&PÑPÕ"ä'×2Ñ2ˆÔä�×&Ñ&×'Ñ'Ø×!Ñ!Õ#ð (rE   Úkc                óJ   • U R                   R                  U R                  S9  g)z
Arrow up in selection mode.
©ÚcountN)r”   Ú	cursor_upr‹   ©rŽ   s    rF   Ú_up_in_selectionÚ*load_vi_bindings.<locals>._up_in_selectionÒ  s   € ð
 	×Ñ×&Ñ&¨U¯Y©YÐ&Ò7rE   Újc                óJ   • U R                   R                  U R                  S9  g)z
Arrow down in selection mode.
rî   N)r”   Úcursor_downr‹   rñ   s    rF   Ú_down_in_selectionÚ,load_vi_bindings.<locals>._down_in_selectionÙ  s   € ð
 	×Ñ×(Ñ(¨u¯y©yÐ(Ò9rE   Úupzc-pc                óJ   • U R                   R                  U R                  S9  g)z1
Arrow up and ControlP in navigation mode go up.
rî   N©r”   Úauto_upr‹   rñ   s    rF   Ú_up_in_navigationÚ+load_vi_bindings.<locals>._up_in_navigationà  s   € ð 	×Ñ×$Ñ$¨5¯9©9Ð$Ò5rE   c                óL   • U R                   R                  U R                  SS9  g)zL
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    rF   Ú_go_upÚ load_vi_bindings.<locals>._go_upè  s&   € ð 	×Ñ×$Ñ$Ø—)‘)ÀDð 	%ò 	
rE   Údownzc-nc                óJ   • U R                   R                  U R                  S9  g)z.
Arrow down and Control-N in navigation mode.
rî   N©r”   Ú	auto_downr‹   rñ   s    rF   Ú_go_downÚ"load_vi_bindings.<locals>._go_downò  s   € ð 	×Ñ×&Ñ&¨U¯Y©YÐ&Ò7rE   c                óL   • U R                   R                  U R                  SS9  g)zL
Go down, but if we enter a new history entry, go to the start of the line.
Tr   Nr  rñ   s    rF   Ú	_go_down2Ú#load_vi_bindings.<locals>._go_down2ú  s&   € ð
 	×Ñ×&Ñ&Ø—)‘)ÀDð 	'ò 	
rE   Ú	backspacec                ó˜   • U R                   =R                  U R                   R                  R                  U R                  S9-  sl        g)z"
In navigation-mode, move cursor.
rî   N)r”   r]   ra   rç   r‹   rñ   s    rF   Ú_go_leftÚ"load_vi_bindings.<locals>._go_left  s<   € ð
 	×Ñ×,Ò,Ø× Ñ ×)Ñ)×BÑBÈÏÉÐBÐSñ	
Ö,rE   c                ó~   • U R                   nUR                  (       a  UR                  5         g UR                  SS9  g )NT)Úselect_first)r”   Úcomplete_stateÚcomplete_nextÚstart_completion©rŽ   Úbs     rF   Ú_complete_nextÚ(load_vi_bindings.<locals>._complete_next  s1   € à× Ñ ˆà××Ø�O‰OÕà×Ñ¨DÐÒ1rE   c                ó~   • U R                   nUR                  (       a  UR                  5         gUR                  SS9  g)z$
Control-P: To previous completion.
T)Úselect_lastN)r”   r  Úcomplete_previousr  r  s     rF   Ú_complete_prevÚ(load_vi_bindings.<locals>._complete_prev  s5   € ð
 × Ñ ˆà××Ø×ÑÕ!à×Ñ¨4ÐÒ0rE   úc-gzc-yc                ó&   • SU R                   l        g)z
Accept current completion.
N)r”   r  rñ   s    rF   Ú_accept_completionÚ,load_vi_bindings.<locals>._accept_completion!  s   € ð /3ˆ×ÑÕ+rE   zc-ec                ó8   • U R                   R                  5         g)z6
Cancel completion. Go back to originally typed text.
N)r”   Úcancel_completionrñ   s    rF   Ú_cancel_completionÚ,load_vi_bindings.<locals>._cancel_completion)  s   € ð
 	×Ñ×.Ñ.Õ0rE   Úenterzaccept-linec                ó¦   • U R                   nUR                  U R                  S9  U=R                  UR                  R                  SS9-  sl        g)z#
Go to the beginning of next line.
rî   T©Úafter_whitespaceN)r”   rö   r‹   r]   ra   Úget_start_of_line_positionr  s     rF   Ú_start_of_next_lineÚ-load_vi_bindings.<locals>._start_of_next_line9  sL   € ð
 × Ñ ˆØ	�‰˜EŸI™IˆÑ&Ø	×Ò˜QŸZ™Z×BÑBØ!ð Cð 
ñ 	
ÖrE   Úinsertc                óV   • [         R                  U R                  R                  l        g©z
Pressing the Insert key.
N©r)   rå   r‡   rˆ   rä   rñ   s    rF   Ú_insert_modeÚ&load_vi_bindings.<locals>._insert_modeH  s   € ô
 )2×(8Ñ(8ˆ�	‰	×ÑÕ%rE   c                óV   • [         R                  U R                  R                  l        gr0  )r)   rè   r‡   rˆ   rä   rñ   s    rF   Ú_navigation_modeÚ*load_vi_bindings.<locals>._navigation_modeO  s   € ô
 )2×(<Ñ(<ˆ�	‰	×ÑÕ%rE   Úac                óØ   • U R                   =R                  U R                   R                  R                  5       -  sl        [        R
                  U R                  R                  l        g rK   )	r”   r]   ra   Úget_cursor_right_positionr)   rå   r‡   rˆ   rä   rñ   s    rF   Ú_aÚload_vi_bindings.<locals>._aV  sM   € ð 	×Ñ×,Ò,Ø× Ñ ×)Ñ)×CÑCÓEñ	
Õ,ô )2×(8Ñ(8ˆ�	‰	×ÑÕ%rE   ÚAc                óØ   • U R                   =R                  U R                   R                  R                  5       -  sl        [        R
                  U R                  R                  l        g rK   )	r”   r]   ra   Úget_end_of_line_positionr)   rå   r‡   rˆ   rä   rñ   s    rF   Ú_AÚload_vi_bindings.<locals>._A_  sK   € à×Ñ×,Ò,Ø× Ñ ×)Ñ)×BÑBÓDñ	
Õ,ô )2×(8Ñ(8ˆ�	‰	×ÑÕ%rE   ÚCc                ó  • U R                   nUR                  UR                  R                  5       S9nU R                  R
                  R                  U5        [        R                  U R                  R                  l
        g)zG
Change to end of line.
Same as 'c$' (which is implemented elsewhere.)
rî   N)r”   Údeletera   r>  r‡   Ú	clipboardÚset_textr)   rå   rˆ   rä   ©rŽ   rh   Údeleteds      rF   Ú_change_until_end_of_lineÚ3load_vi_bindings.<locals>._change_until_end_of_linef  s\   € ð ×%Ñ%ˆà—-‘- f§o¡o×&NÑ&NÓ&P�-ÐQˆØ�	‰	×Ñ×$Ñ$ WÔ-Ü(1×(8Ñ(8ˆ�	‰	×ÑÕ%rE   ÚcÚSc                óº  • U R                   n[        UR                  R                  [        R
                  5      nU R                  R                  R                  U5        U=R                  UR                  R                  SS9-  sl	        UR                  UR                  R                  5       S9  [        R                  U R                  R                  l        g)z
Change current line
Tr)  rî   N)r”   r   ra   Úcurrent_liner.   rS   r‡   rD  Úset_datar]   r+  rC  r>  r)   rå   rˆ   rä   )rŽ   rh   Údatas      rF   Ú_change_current_lineÚ.load_vi_bindings.<locals>._change_current_liner  s§   € ð ×%Ñ%ˆô ˜VŸ_™_×9Ñ9¼=×;NÑ;NÓOˆØ�	‰	×Ñ×$Ñ$ TÔ*ð 	×Ò &§/¡/×"LÑ"LØ!ð #Mð #
ñ 	
Õð 	�‰˜FŸO™O×DÑDÓFˆÑGÜ(1×(8Ñ(8ˆ�	‰	×ÑÕ%rE   ÚDc                ó´   • U R                   nUR                  UR                  R                  5       S9nU R                  R
                  R                  U5        g)z8
Delete from cursor position until the end of the line.
rî   N)r”   rC  ra   r>  r‡   rD  rE  rF  s      rF   Ú_delete_until_end_of_lineÚ3load_vi_bindings.<locals>._delete_until_end_of_line…  sD   € ð
 ×%Ñ%ˆØ—-‘- f§o¡o×&NÑ&NÓ&P�-ÐQˆØ�	‰	×Ñ×$Ñ$ WÕ-rE   Údc           	     ó´  • U R                   nUR                  R                  nSR                  USUR                  R                   5      nSR                  UUR                  R                  UR                  R                  U R
                  -    5      nSR                  X!R                  R                  U R
                  -   S 5      nU(       a  U(       a  US-   n[        X5-   [        U5      [        U5      -   [        UR                  S5      5      -
  S9Ul        U R                  R                  R                  [        U[        R                  5      5        g)z,
Delete line. (Or the following 'n' lines.)
Ú
NÚ )rp   r]   )r”   ra   r`   ÚjoinÚcursor_position_rowr‹   r   r_   Úlstripr‡   rD  rN  r   r.   rS   )rŽ   rh   r`   ÚbeforerG  Úafters         rF   Ú_delete_lineÚ&load_vi_bindings.<locals>._delete_lineŽ  s  € ð
 ×%Ñ%ˆð —‘×%Ñ%ˆà—‘˜5Ð!F 6§?¡?×#FÑ#FÐGÓHˆØ—)‘)ØØ—‘×3Ñ3°f·o±o×6YÑ6YØ—)‘)ñ7ðó
ˆð —	‘	˜%§¡× CÑ CÀeÇiÁiÑ OÐ QÐRÓSˆö –eØ˜d‘]ˆFô #Ø‘ä ›K¬#¨e«*Ñ4´s¸5¿<¹<ÈÓ;LÓ7MÑMñ
ˆŒð 	�	‰	×Ñ×$Ñ$¤]°7¼M×<OÑ<OÓ%PÕQrE   Úxc                ó‚   • U R                   R                  5       nU R                  R                  R	                  U5        g)z*
Cut selection.
('x' is not an operator.)
N)r”   rq   r‡   rD  rN  )rŽ   rs   s     rF   Ú_cutÚload_vi_bindings.<locals>._cut¯  s0   € ð ×-Ñ-×;Ñ;Ó=ˆØ�	‰	×Ñ×$Ñ$ ^Õ4rE   Úic                óV   • [         R                  U R                  R                  l        g rK   r1  rñ   s    rF   Ú_iÚload_vi_bindings.<locals>._i¸  s   € ä(1×(8Ñ(8ˆ�	‰	×ÑÕ%rE   ÚIc                óÖ   • [         R                  U R                  R                  l        U R
                  =R                  U R
                  R                  R                  SS9-  sl        g )NTr)  )	r)   rå   r‡   rˆ   rä   r”   r]   ra   r+  rñ   s    rF   Ú_IÚload_vi_bindings.<locals>._I¼  sT   € ä(1×(8Ñ(8ˆ�	‰	×ÑÔ%Ø×Ñ×,Ò,Ø× Ñ ×)Ñ)×DÑDØ!%ð Eð ñ	
Ö,rE   Fc                ór  • U R                   n/ nU(       a  SS jnOSS jn[        UR                  R                  5       5       H1  u  pVUR	                  U" U5      5        US:X  d  M$  U" U5      Ul        M3     X2l        [        R                  U R                  R                  l        UR                  5         g)z!
Insert in block selection mode.
c                ó   • U S   $ r†   r?   ©Úfrom_tos    rF   Úget_posÚDload_vi_bindings.<locals>.insert_in_block_selection.<locals>.get_posÑ  ó   € Ø˜q‘zÐ!rE   c                ó   • U S   $ )Nr   r?   ro  s    rF   rq  rr  Ö  rs  rE   r   N)rp  rx   rw   rv   )r”   Ú	enumeratera   Úselection_rangesÚappendr]   Úmultiple_cursor_positionsr)   ÚINSERT_MULTIPLEr‡   rˆ   rä   ré   )rŽ   r^  rš   Ú	positionsrq  re  rp  s          rF   Úinsert_in_block_selectionÚ3load_vi_bindings.<locals>.insert_in_block_selectionÅ  s™   € ð
 ×#Ñ#ˆð ˆ	æõ"ô
"ô $ D§M¡M×$BÑ$BÓ$DÖE‰JˆAØ×Ñ™W WÓ-Ô.Ø�A�vÙ'.¨wÓ'7�Ö$ñ Fð
 *3Ô&ô )2×(AÑ(Aˆ�	‰	×ÑÔ%Ø×ÑÕrE   c                ó   >• T" U SS9  g )NT)r^  r?   )rŽ   r{  s    €rF   Ú_append_after_blockÚ-load_vi_bindings.<locals>._append_after_blockä  s   ø€ á! %¨tÓ4rE   ÚJc                óp   • [        U R                  5       H  nU R                  R                  5         M     g)z
Join lines.
N©Úranger‹   r”   Újoin_next_line©rŽ   re  s     rF   Ú_joinÚload_vi_bindings.<locals>._joinè  s)   € ô
 �u—y‘yÖ!ˆAØ× Ñ ×/Ñ/Ö1ò "rE   rÉ   c                ón   • [        U R                  5       H  nU R                  R                  SS9  M     g)z
Join lines without space.
rÄ   ©Ú	separatorNr‚  r…  s     rF   Ú_join_nospaceÚ'load_vi_bindings.<locals>._join_nospaceð  s.   € ô
 �u—y‘yÖ!ˆAØ× Ñ ×/Ñ/¸"Ð/Ó=ò "rE   c                ó8   • U R                   R                  5         g)z
Join selected lines.
N©r”   Újoin_selected_linesrñ   s    rF   Ú_join_selectionÚ)load_vi_bindings.<locals>._join_selectionø  s   € ð
 	×Ñ×0Ñ0Õ2rE   c                ó6   • U R                   R                  SS9  g)z$
Join selected lines without space.
rÄ   r‰  NrŽ  rñ   s    rF   Ú_join_selection_nospaceÚ1load_vi_bindings.<locals>._join_selection_nospaceÿ  s   € ð
 	×Ñ×0Ñ0¸2Ð0Ò>rE   Úpc                ó®   • U R                   R                  U R                  R                  R	                  5       U R
                  [        R                  S9  g)z
Paste after
©rï   Ú
paste_modeN)r”   Úpaste_clipboard_datar‡   rD  Úget_datar‹   r,   ÚVI_AFTERrñ   s    rF   Ú_pasteÚ load_vi_bindings.<locals>._paste  sC   € ð
 	×Ñ×1Ñ1Ø�I‰I×Ñ×(Ñ(Ó*Ø—)‘)Ü ×)Ñ)ð 	2ò 	
rE   ÚPc                ó®   • U R                   R                  U R                  R                  R	                  5       U R
                  [        R                  S9  g)z
Paste before
r—  N)r”   r™  r‡   rD  rš  r‹   r,   Ú	VI_BEFORErñ   s    rF   Ú_paste_beforeÚ'load_vi_bindings.<locals>._paste_before  sC   € ð
 	×Ñ×1Ñ1Ø�I‰I×Ñ×(Ñ(Ó*Ø—)‘)Ü ×*Ñ*ð 	2ò 	
rE   Ú"c                ó  • U R                   S   R                  nU[        ;   aj  U R                  R                  R
                  R                  U5      nU(       a3  U R                  R                  X R                  [        R                  S9  ggg)z
Paste from named register.
r3   r—  N)Úkey_sequencerO  Úvi_register_namesr‡   rˆ   Únamed_registersÚgetr”   r™  r‹   r,   r›  ©rŽ   rJ  rO  s      rF   Ú_paste_registerÚ)load_vi_bindings.<locals>._paste_register  sx   € ð
 ×Ñ˜qÑ!×&Ñ&ˆØÔ!Ó!Ø—9‘9×%Ñ%×5Ñ5×9Ñ9¸!Ó<ˆDÞØ×$Ñ$×9Ñ9Ø§	¡	´i×6HÑ6Hð :ò ð ð "rE   c                ó  • U R                   S   R                  nU[        ;   aj  U R                  R                  R
                  R                  U5      nU(       a3  U R                  R                  X R                  [        R                  S9  ggg)z%
Paste (before) from named register.
r3   r—  N)r¥  rO  r¦  r‡   rˆ   r§  r¨  r”   r™  r‹   r,   r   r©  s      rF   Ú_paste_register_beforeÚ0load_vi_bindings.<locals>._paste_register_before)  sx   € ð
 ×Ñ˜qÑ!×&Ñ&ˆØÔ!Ó!Ø—9‘9×%Ñ%×5Ñ5×9Ñ9¸!Ó<ˆDÞØ×$Ñ$×9Ñ9Ø§	¡	´i×6IÑ6Ið :ò ð ð "rE   Úrc                óV   • [         R                  U R                  R                  l        g)z
Go to 'replace-single'-mode.
N)r)   ÚREPLACE_SINGLEr‡   rˆ   rä   rñ   s    rF   Ú_replaceÚ"load_vi_bindings.<locals>._replace6  s   € ô
 )2×(@Ñ(@ˆ�	‰	×ÑÕ%rE   ÚRc                óV   • [         R                  U R                  R                  l        g)z
Go to 'replace'-mode.
N)r)   ræ   r‡   rˆ   rä   rñ   s    rF   Ú_replace_modeÚ'load_vi_bindings.<locals>._replace_mode=  s   € ô
 )2×(9Ñ(9ˆ�	‰	×ÑÕ%rE   Úsc                óæ   • U R                   R                  U R                  S9nU R                  R                  R                  U5        [        R                  U R                  R                  l	        g)zG
Substitute with new text
(Delete character(s) and go to insert mode.)
rî   N)
r”   rC  r‹   r‡   rD  rE  r)   rå   rˆ   rä   ©rŽ   rp   s     rF   Ú_substituteÚ%load_vi_bindings.<locals>._substituteD  sQ   € ð ×#Ñ#×*Ñ*°·±Ð*Ð;ˆØ�	‰	×Ñ×$Ñ$ TÔ*Ü(1×(8Ñ(8ˆ�	‰	×ÑÕ%rE   rÓ   c                ó   • g)NFr?   ©Úes    rF   rÑ   rÒ   N  s   € À5rE   )r~   Úsave_beforec                óp   • [        U R                  5       H  nU R                  R                  5         M     g rK   )rƒ  r‹   r”   Úundor…  s     rF   Ú_undoÚload_vi_bindings.<locals>._undoN  s'   € ä�u—y‘yÖ!ˆAØ× Ñ ×%Ñ%Ö'ò "rE   ÚVc                óR   • U R                   R                  [        R                  S9  g)z
Start lines selection.
©rV   N)r”   Ústart_selectionr.   rS   rñ   s    rF   Ú_visual_lineÚ&load_vi_bindings.<locals>._visual_lineS  ó!   € ð
 	×Ñ×,Ñ,¼M×<OÑ<OÐ,ÒPrE   c                óR   • U R                   R                  [        R                  S9  g)z
Enter block selection mode.
rÇ  N)r”   rÈ  r.   r>   rñ   s    rF   Ú_visual_blockÚ'load_vi_bindings.<locals>._visual_blockZ  rË  rE   c                óÔ   • U R                   R                  nUbO  UR                  [        R                  :w  a  [        R                  Ul        gU R                   R                  5         gg)zV
Exit line selection mode, or go from non line selection mode to line
selection mode.
N)r”   r™   rN   r.   rS   ré   ©rŽ   r™   s     rF   Ú_visual_line2Ú'load_vi_bindings.<locals>._visual_line2a  óT   € ð  ×.Ñ.×>Ñ>ˆàÑ&Ø×#Ñ#¤}×':Ñ':Ó:Ü'4×':Ñ':�Õ$à×$Ñ$×3Ñ3Õ5ð	 'rE   Úvc                óR   • U R                   R                  [        R                  S9  g)z!
Enter character selection mode.
rÇ  N)r”   rÈ  r.   rT   rñ   s    rF   Ú_visualÚ!load_vi_bindings.<locals>._visualo  s!   € ð
 	×Ñ×,Ñ,¼M×<TÑ<TÐ,ÒUrE   c                óÔ   • U R                   R                  nUbO  UR                  [        R                  :w  a  [        R                  Ul        gU R                   R                  5         gg)ze
Exit character selection mode, or go from non-character-selection mode
to character selection mode.
N)r”   r™   rN   r.   rT   ré   rÐ  s     rF   Ú_visual2Ú"load_vi_bindings.<locals>._visual2v  sT   € ð  ×.Ñ.×>Ñ>ˆàÑ&Ø×#Ñ#¤}×'?Ñ'?Ó?Ü'4×'?Ñ'?�Õ$à×$Ñ$×3Ñ3Õ5ð	 'rE   c                óÔ   • U R                   R                  nUbO  UR                  [        R                  :w  a  [        R                  Ul        gU R                   R                  5         gg)zY
Exit block selection mode, or go from non block selection mode to block
selection mode.
N)r”   r™   rN   r.   r>   ré   rÐ  s     rF   Ú_visual_block2Ú(load_vi_bindings.<locals>._visual_block2„  rÓ  rE   ÚwÚWc                óÐ   • U R                   nUR                  (       aI  UR                  R                  [        R                  :X  a   [        R
                  UR                  l        ggg)z@
Switch from visual linewise mode to visual characterwise mode.
N)r”   r™   rN   r.   rS   rT   ©rŽ   rh   s     rF   Ú_visual_auto_wordÚ+load_vi_bindings.<locals>._visual_auto_word’  sS   € ð ×%Ñ%ˆð ×"×"Ø×&Ñ&×+Ñ+¬}×/BÑ/BÓBä*7×*BÑ*BˆF×"Ñ"Õ'ð Cð #rE   c                ó  • U R                   n[        U R                  [        UR                  R
                  5      5      nU(       a?  U R                   R                  US9nU R                  R                  R                  U5        gg)z
Delete character.
rî   N)
r”   Úminr‹   r_   ra   Úcurrent_line_after_cursorrC  r‡   rD  rE  ©rŽ   rš   rï   rp   s       rF   Ú_deleteÚ!load_vi_bindings.<locals>._delete   sg   € ð
 ×#Ñ#ˆÜ�E—I‘Iœs 4§=¡=×#JÑ#JÓKÓLˆÞØ×'Ñ'×.Ñ.°UÐ.Ð;ˆDØ�I‰I×Ñ×(Ñ(¨Õ.ð rE   ÚXc                ó  • U R                   n[        U R                  [        UR                  R
                  5      5      nU(       a?  U R                   R                  US9nU R                  R                  R                  U5        g g )Nrî   )
r”   rå  r‹   r_   ra   Úcurrent_line_before_cursorÚdelete_before_cursorr‡   rD  rE  rç  s       rF   Ú_delete_before_cursorÚ/load_vi_bindings.<locals>._delete_before_cursor«  se   € à×#Ñ#ˆÜ�E—I‘Iœs 4§=¡=×#KÑ#KÓLÓMˆÞØ×'Ñ'×<Ñ<À5Ð<ÐIˆDØ�I‰I×Ñ×(Ñ(¨Õ.ð rE   ÚyÚYc                óö   • SR                  U R                  R                  R                  SU R                   5      nU R
                  R                  R                  [        U[        R                  5      5        g)z
Yank the whole line.
rX  N)rZ  r”   ra   Úlines_from_currentr‹   r‡   rD  rN  r   r.   rS   rº  s     rF   Ú
_yank_lineÚ$load_vi_bindings.<locals>._yank_line³  sT   € ð �y‰y˜×-Ñ-×6Ñ6×IÑIÈ+ÈEÏIÉIÐVÓWˆØ�	‰	×Ñ×$Ñ$¤]°4¼×9LÑ9LÓ%MÕNrE   Ú+c                óà   • U R                   nU=R                  UR                  R                  U R                  S9-  sl        U=R                  UR                  R                  SS9-  sl        g)z+
Move to first non whitespace of next line
rî   Tr)  N)r”   r]   ra   Úget_cursor_down_positionr‹   r+  rá  s     rF   Ú
_next_lineÚ$load_vi_bindings.<locals>._next_line¼  sk   € ð
 ×%Ñ%ˆØ×Ò &§/¡/×"JÑ"JØ—)‘)ð #Kð #
ñ 	
Õð 	×Ò &§/¡/×"LÑ"LØ!ð #Mð #
ñ 	
ÖrE   Ú-c                óà   • U R                   nU=R                  UR                  R                  U R                  S9-  sl        U=R                  UR                  R                  SS9-  sl        g)z/
Move to first non whitespace of previous line
rî   Tr)  N)r”   r]   ra   Úget_cursor_up_positionr‹   r+  rá  s     rF   Ú
_prev_lineÚ$load_vi_bindings.<locals>._prev_lineÉ  sk   € ð
 ×%Ñ%ˆØ×Ò &§/¡/×"HÑ"HØ—)‘)ð #Ið #
ñ 	
Õð 	×Ò &§/¡/×"LÑ"LØ!ð #Mð #
ñ 	
ÖrE   Ú>zc-tc                óx   • U R                   nUR                  R                  n[        XX R                  -   5        g)z
Indent lines.
N)r”   ra   r[  r   r‹   )rŽ   rh   Úcurrent_rows      rF   Ú_indentÚ!load_vi_bindings.<locals>._indentÖ  s/   € ð ×%Ñ%ˆØ—o‘o×9Ñ9ˆÜˆv K·)±)Ñ$;Õ<rE   Ú<zc-dc                óŠ   • U R                   R                  R                  n[        U R                   XU R                  -   5        g)z
Unindent lines.
N)r”   ra   r[  r   r‹   )rŽ   r  s     rF   Ú	_unindentÚ#load_vi_bindings.<locals>._unindentà  s4   € ð ×*Ñ*×3Ñ3×GÑGˆÜ�×%Ñ% {À%Ç)Á)Ñ4KÕLrE   ÚOc                ó¢   • U R                   R                  [        5       (       + S9  [        R                  U R
                  R                  l        g)z*
Open line above and enter insertion mode
©Úcopy_marginN)r”   Úinsert_line_abover   r)   rå   r‡   rˆ   rä   rñ   s    rF   Ú_open_aboveÚ%load_vi_bindings.<locals>._open_aboveé  ó8   € ð
 	×Ñ×.Ñ.¼}»Ô;NÐ.ÑOÜ(1×(8Ñ(8ˆ�	‰	×ÑÕ%rE   Úoc                ó¢   • U R                   R                  [        5       (       + S9  [        R                  U R
                  R                  l        g)z*
Open line below and enter insertion mode
r  N)r”   Úinsert_line_belowr   r)   rå   r‡   rˆ   rä   rñ   s    rF   Ú_open_belowÚ%load_vi_bindings.<locals>._open_belowñ  r  rE   rÜ   c                óš   • U R                   nUR                  R                  nUb&  US:w  a  UR                  UR	                  5       SS9  ggg)z<
Reverse case of current character and move cursor forward.
NrX  T©Ú	overwrite)r”   ra   Úcurrent_charÚinsert_textrß   )rŽ   rh   rJ  s      rF   Ú_reverse_caseÚ'load_vi_bindings.<locals>._reverse_caseù  sI   € ð
 ×%Ñ%ˆØ�O‰O×(Ñ(ˆà‰=˜Q $›YØ×Ñ˜qŸz™z›|°tÐÒ<ð 'ˆ=rE   c                ó@   • U R                   nUR                  S 5        g)z
Lowercase current line.
c                ó"   • U R                  5       $ rK   rÕ   ©r¸  s    rF   rÑ   Ú;load_vi_bindings.<locals>._lowercase_line.<locals>.<lambda>
  ó
   € ¨a¯g©g¬irE   N©r”   Útransform_current_line©rŽ   rš   s     rF   Ú_lowercase_lineÚ)load_vi_bindings.<locals>._lowercase_line  ó   € ð
 ×#Ñ#ˆØ×#Ñ#Ñ$7Õ8rE   rØ   c                ó@   • U R                   nUR                  S 5        g)z
Uppercase current line.
c                ó"   • U R                  5       $ rK   rÚ   r  s    rF   rÑ   Ú;load_vi_bindings.<locals>._uppercase_line.<locals>.<lambda>  r!  rE   Nr"  r$  s     rF   Ú_uppercase_lineÚ)load_vi_bindings.<locals>._uppercase_line  r'  rE   c                ó@   • U R                   nUR                  S 5        g)z 
Swap case of the current line.
c                ó"   • U R                  5       $ rK   rÞ   r  s    rF   rÑ   Ú:load_vi_bindings.<locals>._swapcase_line.<locals>.<lambda>  s
   € ¨a¯j©j¬lrE   Nr"  r$  s     rF   Ú_swapcase_lineÚ(load_vi_bindings.<locals>._swapcase_line  s   € ð
 ×#Ñ#ˆØ×#Ñ#Ñ$:Õ;rE   Ú#c                óä   • U R                   nU R                  R                  nUR                  R	                  5       Ul        [        R                  Ul        UR                  X R                  SS9  g)z)
Go to previous occurrence of this word.
F©rï   Úinclude_current_positionN)r”   r‡   Úcurrent_search_statera   Úget_word_under_cursorrp   r+   ÚBACKWARDÚ	directionÚapply_searchr‹   ©rŽ   r  Úsearch_states      rF   Ú_prev_occurrenceÚ*load_vi_bindings.<locals>._prev_occurrence  sU   € ð
 × Ñ ˆØ—y‘y×5Ñ5ˆàŸJ™J×<Ñ<Ó>ˆÔÜ!0×!9Ñ!9ˆÔà	�‰�|¯9©9ÈuˆÒUrE   Ú*c                óä   • U R                   nU R                  R                  nUR                  R	                  5       Ul        [        R                  Ul        UR                  X R                  SS9  g)z%
Go to next occurrence of this word.
Fr4  N)r”   r‡   r6  ra   r7  rp   r+   ÚFORWARDr9  r:  r‹   r;  s      rF   Ú_next_occurrenceÚ*load_vi_bindings.<locals>._next_occurrence)  sU   € ð
 × Ñ ˆØ—y‘y×5Ñ5ˆàŸJ™J×<Ñ<Ó>ˆÔÜ!0×!8Ñ!8ˆÔà	�‰�|¯9©9ÈuˆÒUrE   Ú(c                ó   • g rK   r?   rñ   s    rF   Ú_begin_of_sentenceÚ,load_vi_bindings.<locals>._begin_of_sentence6  ó   € ð 	rE   Ú)c                ó   • g rK   r?   rñ   s    rF   Ú_end_of_sentenceÚ*load_vi_bindings.<locals>._end_of_sentence<  rH  rE   c                óL   • U R                   R                  R                  5         g)z6
Unknown key binding while waiting for a text object.
N)r‡   ÚoutputÚbellrñ   s    rF   Ú_unknown_text_objectÚ.load_vi_bindings.<locals>._unknown_text_objectE  s   € ð
 	�	‰	×Ñ×ÑÕrE   c                ó‚   >^ ^• T(       a  S[         R                  ST    4nOST    nT" US[        ) 06SU U4S jj5       ng)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.
r£  Úcdr~   c                óØ  >• S nU R                   nU(       a  UR                  U5      u  pBXCl        U(       aƒ  UR                  (       ar  T(       aF  U R                  S   R
                  nU[        ;   a"  X R                  R                  R                  U'   O%U R                  R                  R                  U5        T(       d*  [        R                  U R                  R                  l        g g r†   )r”   rt   ra   rp   r¥  rO  r¦  r‡   rˆ   r§  rD  rN  r)   rå   rä   )rŽ   r•   rs   rš   rr   Úreg_nameÚdelete_onlyÚwith_registers         €€rF   Údelete_or_change_operatorÚ_load_vi_bindings.<locals>.create_delete_and_change_operators.<locals>.delete_or_change_operator_  s®   ø€ à!ˆNØ×'Ñ'ˆDæØ/:¯©¸tÓ/DÑ,�Ø ,”ö  .×"5×"5Þ Ø$×1Ñ1°!Ñ4×9Ñ9�HØÔ#4Ó4ØGUŸ	™	×*Ñ*×:Ñ:¸8ÑDøà—I‘I×'Ñ'×0Ñ0°Ô@ö Ü09×0@Ñ0@�—	‘	×"Ñ"Õ-ð rE   N©rŽ   rž   r•   rH   rw   rŸ   )r*   ÚAnyr   )rV  rW  Úhandler_keysrX  Úoperators   ``  €rF   Ú"create_delete_and_change_operatorsÚ<load_vi_bindings.<locals>.create_delete_and_change_operatorsP  sG   ú€ ö Ø¤§¡¨4°Ñ+<Ð=‰Là Ñ,ˆLá	�<Ð	6¬¨Ñ	6÷	Aó 
7ñ	ArE   Tc                ó>   >^• T" USU [         ) -  06SU4S jj5       ng )Nr~   c                ó"  >• U R                   nUR                  UR                  5      u  p4X4:  a`  UR                  UR                  U-   UR                  U-   T5        U=R                  UR
                  =(       d    UR                  -  sl        gg)z@
Apply transformation (uppercase, lowercase, rot13, swap case).
N)r”   re   ra   Útransform_regionr]   rM   rL   )rŽ   r•   rš   rL   rM   Útransform_funcs        €rF   rk   Ú=load_vi_bindings.<locals>.create_transform_handler.<locals>._}  s   ø€ ð
 ×'Ñ'ˆDØ$×3Ñ3°D·M±MÓB‰JˆEà‹{à×%Ñ%Ø×(Ñ(¨5Ñ0Ø×(Ñ(¨3Ñ.Ø"ôð ×$Ò$¨¯©×(L¸;×;LÑ;LÑLÖ$ð rE   rZ  )r   )r~   rc  r7  rk   r]  s    `  €rF   Úcreate_transform_handlerÚ2load_vi_bindings.<locals>.create_transform_handlerz  s*   ù€ ñ 
�1Ð	4˜V¤| mÑ3Ñ	4ö	Mó 
5ñ	MrE   c                ó¬   • UR                  U R                  5      u  p#UR                  (       a&  U R                  R                  R                  U5        gg)z
Yank operator. (Copy text.)
N)rt   r”   rp   r‡   rD  rN  )rŽ   r•   rk   rs   s       rF   Ú_yankÚload_vi_bindings.<locals>._yank“  sA   € ð
 (ŸO™O¨E×,@Ñ,@ÓAÑˆØ××Ø�I‰I×Ñ×(Ñ(¨Õ8ð rE   c                óÊ   • U R                   S   R                  nU[        ;   a@  UR                  U R                  5      u  p4X@R
                  R                  R                  U'   gg)z#
Yank selection to named register.
r3   N)r¥  rO  r¦  rt   r”   r‡   rˆ   r§  )rŽ   r•   rJ  rk   rs   s        rF   Ú_yank_to_registerÚ+load_vi_bindings.<locals>._yank_to_registerœ  sW   € ð
 ×Ñ˜qÑ!×&Ñ&ˆØÔ!Ó!Ø +§¡°×0DÑ0DÓ EÑˆAØ4B�I‰I×Ñ×.Ñ.¨qÒ1ð "rE   c                ór   • U R                   nUR                  U5      u  p4[        X#US-   U R                  S9  g)z	
Indent.
r3   rî   N)r”   rl   r   r‹   ©rŽ   r•   rš   ri   rj   s        rF   Ú_indent_text_objectÚ-load_vi_bindings.<locals>._indent_text_object¦  s5   € ð
 ×#Ñ#ˆØ×0Ñ0°Ó6‰	ˆÜˆt˜B ™F¨%¯)©)Ó4rE   c                ór   • U R                   nUR                  U5      u  p4[        X#US-   U R                  S9  g)z
Unindent.
r3   rî   N)r”   rl   r   r‹   rn  s        rF   Ú_unindent_text_objectÚ/load_vi_bindings.<locals>._unindent_text_object¯  s5   € ð
 ×#Ñ#ˆØ×0Ñ0°Ó6‰	ˆÜ�˜b 1™f¨E¯I©IÓ6rE   Úqc                óZ   • U R                   nUR                  U5      u  p4[        X#U5        g)z
Reshape text.
N)r”   rl   r   rn  s        rF   Ú_reshapeÚ"load_vi_bindings.<locals>._reshape¸  s+   € ð
 ×#Ñ#ˆØ×0Ñ0°Ó6‰	ˆÜ�T "Õ%rE   r  c                ó€   • [        U R                  R                  R                  U R                  S9=(       d    S5      $ )z
Move one word or token left.
rî   r   ©rH   r”   ra   Úfind_start_of_previous_wordr‹   rñ   s    rF   Ú_bÚload_vi_bindings.<locals>._bÅ  s:   € ô
 Ø× Ñ ×)Ñ)×EÑEÈEÏIÉIÐEÐV÷ Øó
ð 	
rE   ÚBc                ó‚   • [        U R                  R                  R                  U R                  SS9=(       d    S5      $ )z
Move one non-blank word left
T©rï   ÚWORDr   ry  rñ   s    rF   Ú_BÚload_vi_bindings.<locals>._BÏ  sD   € ô
 Ø× Ñ ×)Ñ)×EÑEØ—i‘i dð Fð ÷ ð ó	
ð 	
rE   Ú$c                ó\   • [        U R                  R                  R                  5       5      $ )z<
'c$', 'd$' and '$':  Delete/change/move until end of line.
)rH   r”   ra   r>  rñ   s    rF   Ú_dollarÚ!load_vi_bindings.<locals>._dollarÛ  s$   € ô
 ˜%×.Ñ.×7Ñ7×PÑPÓRÓSÐSrE   c                óÄ   • [        U R                  R                  R                  U R                  S9=(       d$    U R                  R                  R                  5       5      $ )z?
'word' forward. 'cw', 'dw', 'w': Delete/change/move one word.
rî   ©rH   r”   ra   Úfind_next_word_beginningr‹   Úget_end_of_document_positionrñ   s    rF   Ú_word_forwardÚ'load_vi_bindings.<locals>._word_forwardâ  sP   € ô
 Ø× Ñ ×)Ñ)×BÑBÈÏÉÐBÐS÷ LØ×#Ñ#×,Ñ,×IÑIÓKó
ð 	
rE   c                óÆ   • [        U R                  R                  R                  U R                  SS9=(       d$    U R                  R                  R                  5       5      $ )z?
'WORD' forward. 'cW', 'dW', 'W': Delete/change/move one WORD.
Tr  rˆ  rñ   s    rF   Ú_WORD_forwardÚ'load_vi_bindings.<locals>._WORD_forwardì  sZ   € ô
 Ø× Ñ ×)Ñ)×BÑBØ—i‘i dð Cð ÷ Lð ×#Ñ#×,Ñ,×IÑIÓKó	
ð 	
rE   r¿  c                ó¤   • U R                   R                  R                  U R                  S9n[	        U(       a  US-
  OS[
        R                  S9$ )z 
End of 'word': 'ce', 'de', 'e'
rî   r3   r   r´   ©r”   ra   Úfind_next_word_endingr‹   rH   r9   r<   ©rŽ   rM   s     rF   Ú_end_of_wordÚ&load_vi_bindings.<locals>._end_of_wordø  sB   € ð
 ×"Ñ"×+Ñ+×AÑAÈÏ	É	ÐAÐRˆÜ¦S˜# š'¨a´n×6NÑ6NÑOÐOrE   c                ó¦   • U R                   R                  R                  U R                  SS9n[	        U(       a  US-
  OS[
        R                  S9$ )z 
End of 'WORD': 'cE', 'dE', 'E'
Tr  r3   r   r´   r‘  r“  s     rF   Ú_end_of_WORDÚ&load_vi_bindings.<locals>._end_of_WORD   sL   € ð
 ×"Ñ"×+Ñ+×AÑAØ—)‘) $ð Bð 
ˆô ¦S˜# š'¨a´n×6NÑ6NÑOÐOrE   ©r   c                ód   • U R                   R                  R                  5       u  p[        X5      $ )z
Inner 'word': ciw and diw
©r”   ra   Úfind_boundaries_of_current_wordrH   ©rŽ   rL   rM   s      rF   Ú_inner_wordÚ%load_vi_bindings.<locals>._inner_word
  s+   € ð
 ×)Ñ)×2Ñ2×RÑRÓT‰
ˆÜ˜%Ó%Ð%rE   c                ób   • U R                   R                  R                  SS9u  p[        X5      $ )z
A 'word': caw and daw
T)Úinclude_trailing_whitespacer›  r�  s      rF   Ú_a_wordÚ!load_vi_bindings.<locals>._a_word  s8   € ð
 ×)Ñ)×2Ñ2×RÑRØ(,ð Sð 
‰
ˆô ˜%Ó%Ð%rE   c                ób   • U R                   R                  R                  SS9u  p[        X5      $ )z
Inner 'WORD': ciW and diW
T)r€  r›  r�  s      rF   Ú_inner_WORDÚ%load_vi_bindings.<locals>._inner_WORD  s8   € ð
 ×)Ñ)×2Ñ2×RÑRØð Sð 
‰
ˆô ˜%Ó%Ð%rE   c                ód   • U R                   R                  R                  SSS9u  p[        X5      $ )z
A 'WORD': caw and daw
T)r€  r¡  r›  r�  s      rF   Ú_a_WORDÚ!load_vi_bindings.<locals>._a_WORD&  s:   € ð
 ×)Ñ)×2Ñ2×RÑRØ°4ð Sð 
‰
ˆô ˜%Ó%Ð%rE   c                óº   • U R                   R                  R                  5       nU R                   R                  R                  U R                  S9n[        X5      $ )z
Auto paragraph.
rî   )r”   ra   Ústart_of_paragraphÚend_of_paragraphr‹   rH   r�  s      rF   Ú
_paragraphÚ$load_vi_bindings.<locals>._paragraph0  sL   € ð
 ×$Ñ$×-Ñ-×@Ñ@ÓBˆØ×"Ñ"×+Ñ+×<Ñ<À5Ç9Á9Ð<ÐMˆÜ˜%Ó%Ð%rE   Ú^c                óZ   • [        U R                  R                  R                  SS95      $ )z9'c^', 'd^' and '^': Soft start of line, after whitespace.Tr)  ©rH   r”   ra   r+  rñ   s    rF   Ú_start_of_lineÚ(load_vi_bindings.<locals>._start_of_line9  s4   € ô Ø× Ñ ×)Ñ)×DÑDØ!%ð Eð ó
ð 	
rE   Ú0c                óZ   • [        U R                  R                  R                  SS95      $ )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)  r±  rñ   s    rF   Ú_hard_start_of_lineÚ-load_vi_bindings.<locals>._hard_start_of_lineB  s4   € ô Ø× Ñ ×)Ñ)×DÑDØ!&ð Eð ó
ð 	
rE   c                óŽ   >^ ^^• SUU U4S jjnUc#  T" ST   T SS9" U5        T" ST   TSS9" U5        gT" ST   USS9" U5        g)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.
c                óš  >• TT:X  aI  U R                   R                  R                  TSS9nU R                   R                  R                  TSS9nOLU R                   R                  R	                  TT5      nU R                   R                  R                  TT5      nUb"  Ub  T(       a  SOSn[        US-   U-
  X#-   5      $ [        S5      $ )NF)Úin_current_liner   r3   )r”   ra   Úfind_backwardsÚfindÚfind_enclosing_bracket_leftÚfind_enclosing_bracket_rightrH   )rŽ   rL   rM   ÚoffsetÚci_endÚci_startÚinners       €€€rF   ÚhandlerÚ?load_vi_bindings.<locals>.create_ci_ca_handles.<locals>.handlerW  sÕ   ø€ Ø˜6Ó!à×,Ñ,×5Ñ5×DÑDØ¨eð Eð �ð ×*Ñ*×3Ñ3×8Ñ8¸ÐQVÐ8ÐW‘ð ×,Ñ,×5Ñ5×QÑQØ˜fó�ð ×*Ñ*×3Ñ3×PÑPØ˜fó�ð Ñ  S¡_Þ#™¨�Ü! %¨!¡)¨fÑ"4°c±lÓCÐCô " !“}Ð$rE   NÚaiTr™  ©rŽ   rž   rw   rH   r?   )rÁ  rÀ  rÂ  ÚkeyrÃ  r•   s   ```  €rF   Úcreate_ci_ca_handlesÚ.load_vi_bindings.<locals>.create_ci_ca_handlesN  sS   û€ ÷	%ñ 	%ð. ‰;Ù˜˜U™ X¸tÒDÀWÔMÙ˜˜U™ V¸TÒBÀ7ÕKá˜˜U™ S¸$Ò?ÀÕHrE   )FT))r£  r£  )Ú'rÊ  )Ú`rË  )Ú[Ú])r  r   )Ú{Ú})rD  rI  rÎ  rÏ  c                ót   • U R                   R                  R                  U R                  SS9n[	        U5      $ )zQ
Move to previous blank-line separated section.
Implements '{', 'c{', 'd{', 'y{'
T)rï   r]  )r”   ra   r«  r‹   rH   ©rŽ   Úindexs     rF   Ú_previous_sectionÚ+load_vi_bindings.<locals>._previous_sectionƒ  s<   € ð ×$Ñ$×-Ñ-×@Ñ@Ø—)‘) Dð Að 
ˆô ˜%Ó Ð rE   c                ót   • U R                   R                  R                  U R                  SS9n[	        U5      $ )zM
Move to next blank-line separated section.
Implements '}', 'c}', 'd}', 'y}'
T)rï   r^  )r”   ra   r¬  r‹   rH   rÑ  s     rF   Ú_next_sectionÚ'load_vi_bindings.<locals>._next_sectionŽ  s;   € ð ×$Ñ$×-Ñ-×>Ñ>Ø—)‘) 4ð ?ð 
ˆô ˜%Ó Ð rE   Úfc                ó&  • [        U R                  S5      U R                  R                  l        U R
                  R                  R                  U R                  SU R                  S9nU(       a  [        U[        R                  S9$ [        S5      $ )zp
Go to next occurrence of character. Typing 'fx' will move the
cursor to the next occurrence of character. 'x'.
FT©rº  rï   r´   r   ©r(   rO  r‡   rˆ   Úlast_character_findr”   ra   r¼  r‹   rH   r9   r<   ©rŽ   Úmatchs     rF   Ú_find_next_occurrenceÚ/load_vi_bindings.<locals>._find_next_occurrence™  ss   € ô 2?¸u¿z¹zÈ5Ó1Qˆ�	‰	×ÑÔ.Ø×$Ñ$×-Ñ-×2Ñ2Ø�J‰J¨°E·I±Ið 3ð 
ˆö Ü˜e¬.×*BÑ*BÑCÐCä˜a“=Ð rE   ÚFc                óö   • [        U R                  S5      U R                  R                  l        [        U R                  R                  R                  U R                  SU R                  S9=(       d    S5      $ )zx
Go to previous occurrence of character. Typing 'Fx' will move the
cursor to the previous occurrence of character. 'x'.
TrÚ  r   )
r(   rO  r‡   rˆ   rÜ  rH   r”   ra   r»  r‹   rñ   s    rF   Ú_find_previous_occurrenceÚ3load_vi_bindings.<locals>._find_previous_occurrence¨  sf   € ô 2?¸u¿z¹zÈ4Ó1Pˆ�	‰	×ÑÔ.ÜØ× Ñ ×)Ñ)×8Ñ8Ø—
‘
¨D¸¿	¹	ð 9ð ÷ ð ó	
ð 	
rE   Útc                ó,  • [        U R                  S5      U R                  R                  l        U R
                  R                  R                  U R                  SU R                  S9nU(       a  [        US-
  [        R                  S9$ [        S5      $ )zA
Move right to the next occurrence of c, then one char backward.
FTrÚ  r3   r´   r   rÛ  rÝ  s     rF   Ú_tÚload_vi_bindings.<locals>._t¶  sw   € ô
 2?¸u¿z¹zÈ5Ó1Qˆ�	‰	×ÑÔ.Ø×$Ñ$×-Ñ-×2Ñ2Ø�J‰J¨°E·I±Ið 3ð 
ˆö Ü˜e a™i¬n×.FÑ.FÑGÐGä˜a“=Ð rE   ÚTc                ó  • [        U R                  S5      U R                  R                  l        U R
                  R                  R                  U R                  SU R                  S9n[        U(       a	  US-   5      $ S5      $ )zC
Move left to the previous occurrence of c, then one char forward.
TrÚ  r3   r   )
r(   rO  r‡   rˆ   rÜ  r”   ra   r»  r‹   rH   rÝ  s     rF   Ú_TÚload_vi_bindings.<locals>._TÄ  sl   € ô
 2?¸u¿z¹zÈ4Ó1Pˆ�	‰	×ÑÔ.Ø×$Ñ$×-Ñ-×<Ñ<Ø�J‰J¨°E·I±Ið =ð 
ˆô ¦u˜% !™)Ó4Ð4°!Ó4Ð4rE   c                ó@   >^ • T" T (       a  SOS5      SU 4S jj5       ng)z
Create ',' and ';' commands.
Ú,Ú;c                ó  >• SnU R                   R                  n[        R                  nUR                  (       a°  UR                  R
                  nUR                  R                  nT(       a  U(       + nU(       a0  U R                  R                  R                  USU R                  S9nO?U R                  R                  R                  USU R                  S9n[        R                  nU(       a	  [        XS9$ [        S5      $ )z*
Repeat the last 'f'/'F'/'t'/'T' command.
r   TrÚ  r´   )r‡   rˆ   r9   r;   rÜ  Ú	characterÚ	backwardsr”   ra   r»  r‹   r¼  r<   rH   )rŽ   Úposrˆ   rN   Úcharrò  Úreverses         €rF   rk   Ú+load_vi_bindings.<locals>.repeat.<locals>._Ô  sÜ   ø€ ð
  ˆCØ—y‘y×)Ñ)ˆHä!×+Ñ+ˆDà×+×+Ø×3Ñ3×=Ñ=�Ø$×8Ñ8×BÑB�	æØ$-¤�IæØ×.Ñ.×7Ñ7×FÑFØ¨d¸%¿)¹)ð Gð ‘Cð  ×.Ñ.×7Ñ7×<Ñ<Ø¨d¸%¿)¹)ð =ð �Cô *×3Ñ3�DÞÜ! #Ñ1Ð1ä! !“}Ð$rE   NrÆ  r?   )rõ  rk   r•   s   ` €rF   ÚrepeatÚ load_vi_bindings.<locals>.repeatÏ  s    ù€ ñ
 
žG‘S¨Ó	-ö	%ó 
.ñ	%rE   ÚhÚleftc                ón   • [        U R                  R                  R                  U R                  S95      $ )z*
Implements 'ch', 'dh', 'h': Cursor left.
rî   )rH   r”   ra   rç   r‹   rñ   s    rF   Ú_leftÚload_vi_bindings.<locals>._leftö  s2   € ô Ø× Ñ ×)Ñ)×BÑBÈÏÉÐBÐSó
ð 	
rE   )r   r€   c                óˆ   • [        U R                  R                  R                  U R                  S9[
        R                  S9$ )z,
Implements 'cj', 'dj', 'j', ... Cursor up.
rî   r´   )rH   r”   ra   rø  r‹   r9   r=   rñ   s    rF   Ú_downÚload_vi_bindings.<locals>._down   s;   € ô Ø× Ñ ×)Ñ)×BÑBÈÏÉÐBÐSÜ×(Ñ(ñ
ð 	
rE   c                óˆ   • [        U R                  R                  R                  U R                  S9[
        R                  S9$ )z,
Implements 'ck', 'dk', 'k', ... Cursor up.
rî   r´   )rH   r”   ra   rý  r‹   r9   r=   rñ   s    rF   Ú_upÚload_vi_bindings.<locals>._up  s;   € ô
 Ø× Ñ ×)Ñ)×@Ñ@ÀuÇyÁyÐ@ÐQÜ×(Ñ(ñ
ð 	
rE   ÚlrY  Úrightc                ón   • [        U R                  R                  R                  U R                  S95      $ )z<
Implements 'cl', 'dl', 'l', 'c ', 'd ', ' '. Cursor right.
rî   )rH   r”   ra   r9  r‹   rñ   s    rF   Ú_rightÚ load_vi_bindings.<locals>._right  s2   € ô Ø× Ñ ×)Ñ)×CÑCÈ%Ï)É)ÐCÐTó
ð 	
rE   ÚHc                ó|  • U R                   R                  R                  nU R                  nU(       aR  UR                  (       aA  UR
                  R                  UR                  R                  SS9S5      UR                  -
  nO [        UR
                  R                  5      * n[        U[        R                  S9$ )zb
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_infora   r^   Úfirst_visible_liner]   r_   Útext_before_cursorrH   r9   r=   ©rŽ   rÞ  r  ró  s       rF   Ú_top_of_screenÚ(load_vi_bindings.<locals>._top_of_screen"  sš   € ð �I‰I×Ñ×+Ñ+ˆØ× Ñ ˆæ�——ð —
‘
×5Ñ5Ø—M‘M×4Ñ4ÈÐ4ÐNÐPQóð ×#Ñ#ñ$ñ ô �q—z‘z×4Ñ4Ó5Ð5ˆCÜ˜#¤N×$;Ñ$;Ñ<Ð<rE   ÚMc                ó~  • U R                   R                  R                  nU R                  nU(       aS  UR                  (       aB  UR
                  R                  UR                  R                  5       S5      UR                  -
  nO [        UR
                  R                  5      * n[        U[        R                  S9$ )zX
Moves cursor to the vertical center of the visible region.
Implements 'cM', 'dM', 'M'.
r   r´   )r‡   r  r  r”   r  ra   r^   Úcenter_visible_liner]   r_   r  rH   r9   r=   r  s       rF   Ú_middle_of_screenÚ+load_vi_bindings.<locals>._middle_of_screen:  s”   € ð �I‰I×Ñ×+Ñ+ˆØ× Ñ ˆæ�——ð —
‘
×5Ñ5Ø—M‘M×5Ñ5Ó7¸óð ×#Ñ#ñ$ñ ô �q—z‘z×4Ñ4Ó5Ð5ˆCÜ˜#¤N×$;Ñ$;Ñ<Ð<rE   ÚLc                óz  • U R                   R                  R                  nU R                  nU(       aR  UR                  (       aA  UR
                  R                  UR                  R                  SS9S5      UR                  -
  nO[        UR
                  R                  5      n[        U[        R                  S9$ )zD
Moves to the end of the visible region. (Above the scroll offset.)
T)Úbefore_scroll_offsetr   r´   )r‡   r  r  r”   r  ra   r^   Úlast_visible_liner]   r_   Útext_after_cursorrH   r9   r=   r  s       rF   Ú_end_of_screenÚ(load_vi_bindings.<locals>._end_of_screenR  s—   € ð
 �I‰I×Ñ×+Ñ+ˆØ× Ñ ˆæ�——ð —
‘
×5Ñ5Ø—M‘M×3Ñ3ÈÐ3ÐNÐPQóð ×#Ñ#ñ$ñ ô �a—j‘j×2Ñ2Ó3ˆCÜ˜#¤N×$;Ñ$;Ñ<Ð<rE   Únc                óª   • U R                   nU R                  R                  nUR                  USU R                  S9n[        X1R                  -
  5      $ )z
Search next.
F©r5  rï   ©r”   r‡   r6  Úget_search_positionr‹   rH   r]   ©rŽ   rš   r<  r]   s       rF   Ú_search_nextÚ&load_vi_bindings.<locals>._search_nexti  sT   € ð
 ×#Ñ#ˆØ—y‘y×5Ñ5ˆà×2Ñ2Ø°5ÀÇ	Á	ð 3ð 
ˆô ˜/×,@Ñ,@Ñ@ÓAÐArE   c                óz   • U R                   R                  nU R                  R                  USU R                  S9  g)zB
Search next in navigation mode. (This goes through the history.)
Fr"  N©r‡   r6  r”   r:  r‹   ©rŽ   r<  s     rF   Ú_search_next2Ú'load_vi_bindings.<locals>._search_next2v  s7   € ð
 —y‘y×5Ñ5ˆà×Ñ×)Ñ)Ø°5ÀÇ	Á	ð 	*ò 	
rE   ÚNc                ó¬   • U R                   nU R                  R                  nUR                  U) SU R                  S9n[        X1R                  -
  5      $ )z
Search previous.
Fr"  r#  r%  s       rF   Ú_search_previousÚ*load_vi_bindings.<locals>._search_previous�  sV   € ð
 ×#Ñ#ˆØ—y‘y×5Ñ5ˆà×2Ñ2ØˆM°EÀÇÁð 3ð 
ˆô ˜/×,@Ñ,@Ñ@ÓAÐArE   c                ó|   • U R                   R                  nU R                  R                  U) SU R                  S9  g)zF
Search previous in navigation mode. (This goes through the history.)
Fr"  Nr)  r*  s     rF   Ú_search_previous2Ú+load_vi_bindings.<locals>._search_previous2Ž  s9   € ð
 —y‘y×5Ñ5ˆà×Ñ×)Ñ)ØˆM°EÀÇÁð 	*ò 	
rE   Úzc                óŽ   • U R                   nUR                  R                  U R                  R                  R
                  l        g)zT
Scrolls the window to makes the current line the first line in the visible region.
N)r”   ra   r[  r‡   r  r  Úvertical_scrollr  s     rF   Ú_scroll_topÚ%load_vi_bindings.<locals>._scroll_top™  s1   € ð × Ñ ˆØ:;¿*¹*×:XÑ:Xˆ�	‰	×Ñ×'Ñ'Õ7rE   c                óN   • SU R                   R                  R                  l        g)zS
Scrolls the window to makes the current line the last line in the visible region.
r   N)r‡   r  r  r6  rñ   s    rF   Ú_scroll_bottomÚ(load_vi_bindings.<locals>._scroll_bottom£  s   € ð ;<ˆ�	‰	×Ñ×'Ñ'Õ7rE   c                ó€  • U R                   R                  R                  nU R                  nU(       a‹  UR                  (       ay  UR                  nUR
                  S-  n[        SUR                  R                  S-
  5      nSnUS:”  a,  UR                  U5      nXg-   U:  a
  Xg-  nUS-  nOOUS:”  a  M,  XQl
        ggg)z)
Center Window vertically around cursor.
r/   r   r3   N)r‡   r  r  r”   r  Úwindow_heightÚmaxra   r[  Úget_height_for_liner6  )rŽ   rÞ  r  ÚinfoÚscroll_heightrð  ÚheightÚline_heights           rF   Ú_scroll_centerÚ(load_vi_bindings.<locals>._scroll_center®  s¶   € ð
 �I‰I×Ñ×+Ñ+ˆØ× Ñ ˆæ�——Ø—=‘=ˆDð !×.Ñ.°!Ñ3ˆMä�A�q—z‘z×5Ñ5¸Ñ9Ó:ˆAØˆFØ�a“%Ø"×6Ñ6°qÓ9�àÑ'¨-Ó7ØÑ)�FØ˜‘F‘Aàð �a•%ð !"Õð% ˆ1rE   Ú%c                ó  • U R                   nU R                  (       aŸ  SU R                  s=:  a  S::  a}  O  OzUR                  R	                  [        U R                  UR                  R                  -  S-
  S-  5      S5      n[        X!R                  R                  -
  [        R                  S9$ [        S5      $ UR                  R                  5       nU(       a  [        U[        R                  S9$ [        S5      $ )zƒ
Implements 'c%', 'd%', '%, 'y%' (Move to corresponding bracket.)
If an 'arg' has been given, go this this % position in the file.
r   éd   r3   r´   )r”   rŒ   r‹   ra   r^   rv   Ú
line_countrH   r]   r9   r=   Úfind_matching_bracket_positionr<   )rŽ   rh   Úabsolute_indexrÞ  s       rF   Ú_goto_corresponding_bracketÚ5load_vi_bindings.<locals>._goto_corresponding_bracketÊ  sÌ   € ð ×%Ñ%ˆà�:�:ð �5—9‘9Õ# Ö#Ø!'§¡×!KÑ!KÜ˜Ÿ™ V§_¡_×%?Ñ%?Ñ?À!ÑCÀsÑJÓKÈQó"�ô "Ø"§_¡_×%DÑ%DÑDÜ'×0Ñ0ñð ô
 " !“}Ð$ð —O‘O×BÑBÓDˆEÞÜ! %¬n×.FÑ.FÑGÐGä! !“}Ð$rE   Ú|c                óx   • [        U R                  R                  R                  U R                  S-
  5      5      $ )zi
Move to the n-th column (you may specify the argument n by typing it on
number keys, for example, 20|).
r3   )rH   r”   ra   Úget_column_cursor_positionr‹   rñ   s    rF   Ú
_to_columnÚ$load_vi_bindings.<locals>._to_columnè  s4   € ô Ø× Ñ ×)Ñ)×DÑDÀUÇYÁYÐQRÁ]ÓSó
ð 	
rE   c                ó   • U R                   R                  nU R                  (       aB  [        UR	                  U R
                  S-
  S5      UR                  -
  [        R                  S9$ [        UR                  5       [        R                  S9$ )zG
Go to the start of the very first line.
Implements 'gg', 'cgg', 'ygg'
r3   r   r´   )
r”   ra   rŒ   rH   r^   r‹   r]   r9   r=   Úget_start_of_document_position)rŽ   rV  s     rF   Ú_goto_first_lineÚ*load_vi_bindings.<locals>._goto_first_lineò  sx   € ð × Ñ ×)Ñ)ˆà�:�:äØ×,Ñ,¨U¯Y©Y¸©]¸AÓ>À×ARÑARÑRÜ#×,Ñ,ñð ô Ø×0Ñ0Ó2¼×9PÑ9Pñð rE   rk   c                óv   • [        U R                  R                  R                  5       [        R
                  S9$ )z9
Go to last non-blank of line.
'g_', 'cg_', 'yg_', etc..
r´   )rH   r”   ra   Ú'last_non_blank_of_current_line_positionr9   r<   rñ   s    rF   Ú_goto_last_lineÚ)load_vi_bindings.<locals>._goto_last_line  s2   € ô Ø× Ñ ×)Ñ)×QÑQÓSÜ×)Ñ)ñ
ð 	
rE   c                óœ   • U R                   R                  R                  U R                  S9n[	        Ub  US-
  OS[
        R                  S9$ )zB
Go to last character of previous word.
'ge', 'cge', 'yge', etc..
rî   r3   r   r´   ©r”   ra   Úfind_previous_word_endingr‹   rH   r9   r<   ©rŽ   Úprev_ends     rF   Ú_geÚload_vi_bindings.<locals>._ge  sR   € ð ×'Ñ'×0Ñ0×JÑJØ—)‘)ð Kð 
ˆô Ø$Ñ0ˆH�qŠL°a¼n×>VÑ>Vñ
ð 	
rE   c                óž   • U R                   R                  R                  U R                  SS9n[	        Ub  US-
  OS[
        R                  S9$ )zB
Go to last character of previous WORD.
'gE', 'cgE', 'ygE', etc..
Tr  r3   r   r´   r\  r^  s     rF   Ú_gEÚload_vi_bindings.<locals>._gE  sT   € ð ×'Ñ'×0Ñ0×JÑJØ—)‘) $ð Kð 
ˆô Ø$Ñ0ˆH�qŠL°a¼n×>VÑ>Vñ
ð 	
rE   Úmc           	     óž  • U R                   R                  R                  nU R                  nU(       a�  UR                  (       a  UR                  R
                  nUR                  R                  SS9nU[        [        US-  [        UR                  R                  5      5      5      -  n[        U[        R                  S9$ [        S5      $ )zI
Like g0, but half a screenwidth to the right. (Or as much as possible.)
Fr)  r/   r´   r   )r‡   r  r  r”   r  Úwindow_widthra   r+  rv   rå  r_   rM  rH   r9   r<   )rŽ   rÞ  rš   ÚwidthrL   s        rF   Ú_gmÚload_vi_bindings.<locals>._gm+  s™   € ð
 �I‰I×Ñ×+Ñ+ˆØ×#Ñ#ˆæ�——Ø—M‘M×.Ñ.ˆEØ—M‘M×<Ñ<ÈeÐ<ÐTˆEØ”Sœ˜U Q™Y¬¨D¯M©M×,FÑ,FÓ(GÓHÓIÑIˆEä˜e¬.×*BÑ*BÑCÐCÜ˜!‹}ÐrE   ÚGc                óÆ   • U R                   n[        UR                  R                  UR                  R                  S-
  S5      UR
                  -
  [        R                  S9$ )z<
Go to the end of the document. (If no arg has been given.)
r3   r   r´   )r”   rH   ra   r^   rI  r]   r9   r=   )rŽ   Úbufs     rF   Ú
_last_lineÚ$load_vi_bindings.<locals>._last_line;  sW   € ð
 ×"Ñ"ˆÜØ�L‰L×3Ñ3°C·L±L×4KÑ4KÈaÑ4OÐQRÓSØ×!Ñ!ñ"ä×(Ñ(ñ
ð 	
rE   c                óT   • U R                   R                  U R                  S-
  5        g)zP
If an argument is given, move to this line in the  history. (for
example, 15G)
r3   N)r”   Úgo_to_historyr‹   rñ   s    rF   Ú_to_nth_history_lineÚ.load_vi_bindings.<locals>._to_nth_history_lineK  s    € ð 	×Ñ×*Ñ*¨5¯9©9°q©=Õ9rE   Ú	123456789c                ó:   • U R                  U R                  5        g)z3
Always handle numerics in navigation mode as arg.
N©Úappend_to_arg_countrO  rñ   s    rF   rŒ   Úload_vi_bindings.<locals>._argU  s   € ð ×%Ñ% e§j¡jÕ1rE   c                ó:   • U R                  U R                  5        g)z)
Zero when an argument was already give.
Nrv  rñ   s    rF   Ú_0_argÚ load_vi_bindings.<locals>._0_arga  s   € ð 	×!Ñ! %§*¡*Õ-rE   c                óL   • U R                   R                  U R                  SS9  g)z!
Insert data at cursor position.
Tr  N)r”   r  rO  rñ   s    rF   Ú_insert_textÚ&load_vi_bindings.<locals>._insert_textn  s!   € ð
 	×Ñ×(Ñ(¨¯©¸tÐ(ÒDrE   c                óÜ   • U R                   R                  U R                  SS9  U R                   =R                  S-  sl        [        R
                  U R                  R                  l        g)z.
Replace single character at cursor position.
Tr  r3   N)	r”   r  rO  r]   r)   rè   r‡   rˆ   rä   rñ   s    rF   Ú_replace_singleÚ)load_vi_bindings.<locals>._replace_singleu  sP   € ð
 	×Ñ×(Ñ(¨¯©¸tÐ(ÑDØ×Ñ×,Ò,°Ñ1Õ,Ü(1×(<Ñ(<ˆ�	‰	×ÑÕ%rE   c                ó$   • U R                   (       + $ rK   )Ú	is_repeatr¾  s    rF   rÑ   rÒ   �  s
   €  1§;¡;�rE   c                ó²  • U R                   nUR                  n/ nSnUR                   H3  nUR                  X$U 5        UR                  U R                  5        UnM5     UR                  X$S 5        [        UR                  5       VVs/ s H  u  pgXv-   S-   PM     nnnSR                  U5      Ul        X�l        U=R                  S-  sl        gs  snnf )zv
Insert data at multiple cursor positions at once.
(Usually a result of pressing 'I' or 'A' in block-selection mode.)
r   Nr3   rÄ   )r”   rp   rx  rw  rO  ru  rZ  r]   )	rŽ   rš   Úoriginal_textrp   r•  Úp2re  ró  Únew_cursor_positionss	            rF   Ú_insert_text_multiple_cursorsÚ7load_vi_bindings.<locals>._insert_text_multiple_cursors~  sÌ   € ð ×#Ñ#ˆØŸ	™	ˆð ˆØˆà×0Ô0ˆBØ�K‰K˜¨Ð+Ô,Ø�K‰K˜Ÿ
™
Ô#ØŠAñ 1ð
 	�‰�M "Ð%Ô&ô '0°×0NÑ0NÔ&Oô 
Ú&O™F˜AˆC‰G�aŒKÑ&Oð 	ñ  
ð
 —G‘G˜D“MˆŒ	Ø)=Ô&Ø×Ò Ñ!Öùó 
s   ÂCc                ó2  • U R                   nUR                  nSn/ nSnUR                   HB  nUS:”  a$  X&S-
     S:w  a  UR                  X%US-
   5        SnOUR                  X%U 5        UnMD     UR                  X%S 5        U(       ad  USS  Vs/ s H  n[	        U5      PM     nn[        [        U5      5      n	SR                  U5      Ul        X‘l        U=R                  S-  sl        gU R                  R                  R                  5         gs  snf )	z$
Backspace, using multiple cursors.
Fr   r3   rX  TNéÿÿÿÿrÄ   )r”   rp   rx  rw  r_   Úlistr   rZ  r]   r‡   rN  rO  )
rŽ   rš   r…  Údeleted_somethingrp   r•  r†  ÚpartÚlengthsr‡  s
             rF   Ú_delete_before_multiple_cursorsÚ9load_vi_bindings.<locals>._delete_before_multiple_cursors   s  € ð
 ×#Ñ#ˆØŸ	™	ˆð "ÐØˆØˆà×0Ô0ˆBØ�A‹v˜-¨Q©Ñ/°4Ó7Ø—‘˜M¨b°1©fÐ5Ô6Ø$(Ñ!à—‘˜M¨BÐ/Ô0ØŠAñ 1ð 	�‰�M "Ð%Ô&æà-1°#°2©YÓ7ªY T”s˜4–y©YˆGÐ7Ü#'¬
°7Ó(;Ó#<Ð ð Ÿ™ ›ˆDŒIØ-AÔ*Ø× Ò  AÑ%Ö à�I‰I×Ñ×!Ñ!Õ#ùò 8s   ÂDrC  c                óø  • U R                   nUR                  nSn/ n/ nSnUR                   H8  nUR                  X&U 5        U[	        U5      :¼  d  X'   S:X  a  UnM1  US-   nSnM:     UR                  X&S 5        U(       aO  USS  Vs/ s H  n[	        U5      PM     n	n[        [        U	5      5      nSR                  U5      Ul        XQl        gU R                  R                  R                  5         gs  snf )	z!
Delete, using multiple cursors.
Fr   rX  r3   TNr‹  rÄ   )r”   rp   rx  rw  r_   rŒ  r   rZ  r‡   rN  rO  )
rŽ   rš   r…  r�  rp   r‡  r•  r†  rŽ  r�  s
             rF   Ú_delete_after_multiple_cursorsÚ8load_vi_bindings.<locals>._delete_after_multiple_cursorsÃ  sò   € ð
 ×#Ñ#ˆØŸ	™	ˆð "ÐØˆØ!ÐØˆà×0Ô0ˆBØ�K‰K˜¨Ð+Ô,Ø”S˜Ó'Ó'¨=Ñ+<ÀÓ+Dà’à˜‘F�Ø$(Ò!ñ 1ð 	�‰�M "Ð%Ô&æà-1°#°2©YÓ7ªY T”s˜4–y©YˆGÐ7Ü#'¬
°7Ó(;Ó#<Ð ð Ÿ™ ›ˆDŒIØ-AÕ*à�I‰I×Ñ×!Ñ!Õ#ùò 8s   Â
C7c                ó"  • U R                   n/ nUR                   H;  nUR                  R                  U5      S   S:”  a  US-  nUR	                  U5        M=     X!l        UR                  R
                  S:”  a  U=R                  S-  sl        gg)zH
Move all cursors to the left.
(But keep all cursors on the same line.)
r3   r   N)r”   rx  ra   r\   rw  Úcursor_position_colr]   )rŽ   rš   Únew_positionsr•  s       rF   Ú_left_multipleÚ(load_vi_bindings.<locals>._left_multipleç  s‡   € ð ×#Ñ#ˆØˆà×/Ô/ˆAØ�}‰}×8Ñ8¸Ó;¸AÑ>ÀÓBØ�Q‘�Ø× Ñ  Ö#ñ 0ð
 *7Ô&à�=‰=×,Ñ,¨qÓ0Ø× Ò  AÑ%Ö ð 1rE   c                óf  • U R                   n/ nUR                   H\  nUR                  R                  U5      u  pEU[	        UR                  R
                  U   5      :  a  US-  nUR                  U5        M^     X!l        UR                  R                  (       d  U=R                  S-  sl        gg)zI
Move all cursors to the right.
(But keep all cursors on the same line.)
r3   N)	r”   rx  ra   r\   r_   r`   rw  Úis_cursor_at_the_end_of_liner]   )rŽ   rš   r—  r•  rc   Úcolumns         rF   Ú_right_multipleÚ)load_vi_bindings.<locals>._right_multipleú  s˜   € ð ×#Ñ#ˆØˆà×/Ô/ˆAØŸ-™-×CÑCÀAÓF‰KˆCØœ˜DŸM™M×/Ñ/°Ñ4Ó5Ó5Ø�Q‘�Ø× Ñ  Ö#ñ	 0ð *7Ô&à�}‰}×9×9Ø× Ò  AÑ%Ö ð :rE   c                ó   • g)z>
Ignore all up/down key presses when in multiple cursor mode.
Nr?   rñ   s    rF   Ú_updown_multipleÚ*load_vi_bindings.<locals>._updown_multiple  s   � rE   zc-xzc-lc                ó8   • U R                   R                  5         g)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    rF   Ú_complete_lineÚ(load_vi_bindings.<locals>._complete_line  s   € ð 	×Ñ×;Ñ;Õ=rE   zc-fc                ó   • g)z
Complete file names.
Nr?   rñ   s    rF   Ú_complete_filenameÚ,load_vi_bindings.<locals>._complete_filename  s   € ð 	rE   zc-kc                ó:   • SU R                   R                  l        g)z
Go into digraph mode.
TN)r‡   rˆ   Úwaiting_for_digraphrñ   s    rF   Ú_digraphÚ"load_vi_bindings.<locals>._digraph%  s   € ð
 26ˆ�	‰	×ÑÕ.rE   c                óN   • U R                   U R                  R                  l        g)z
First digraph symbol.
N)rO  r‡   rˆ   rÁ   rñ   s    rF   Ú	_digraph1Ú#load_vi_bindings.<locals>._digraph1,  s   € ð
 .3¯Z©Zˆ�	‰	×ÑÕ*rE   c                óÎ  •  U R                   R                  R                  =(       d    SU R                  4nU[        ;  a  USSS2   n[        U   nU R                   R                  R
                  [        R                  :H  nU R                  R                  [        U5      US9  SU R                   R                  l        SU R                   R                  l        SU R                   R                  l        g! [         a'    U R                   R                  R                  5          Ngf = f! SU R                   R                  l        SU R                   R                  l        f = f)z
Insert digraph.
rÄ   Nr‹  r  F)r‡   rˆ   rÁ   rO  r%   rä   r)   ræ   r”   r  Úchrrª  ÚKeyErrorrN  rO  )rŽ   ÚcodeÚsymbolr  s       rF   Ú_create_digraphÚ)load_vi_bindings.<locals>._create_digraph3  s  € ð
	6ð —	‘	×"Ñ"×2Ñ2×8°bØ—
‘
ð%ˆDð œ8Ó#Ø™D˜b˜D‘z�Ü˜d‘^ˆFð Ÿ	™	×*Ñ*×5Ñ5¼×9JÑ9JÑJˆIØ× Ñ ×,Ñ,¬S°«[ÀIÐ,ÑNØ5:ˆE�I‰I×ÑÔ2à5:ˆE�I‰I×ÑÔ2Ø15ˆE�I‰I×ÑÕ.øô ó 	$à�I‰I×Ñ×!Ñ!Ö#ð	$ûð 6;ˆE�I‰I×ÑÔ2Ø15ˆE�I‰I×ÑÕ.ús+   ‚AC8 ÁA/D, Ã8.D)Ä&D, Ä(D)Ä)D, Ä,8E$zc-oc                ó:   • SU R                   R                  l        g)z,
Go into normal mode for one single action.
TN)r‡   rˆ   Útemporary_navigation_moderñ   s    rF   Ú_quick_normal_modeÚ,load_vi_bindings.<locals>._quick_normal_modeM  s   € ð
 8<ˆ�	‰	×ÑÕ4rE   c                ó’   • U R                   S   R                  nU[        ;   a$  U R                  R                  nXl        SUl        gg)z
Start recording macro.
r3   rÄ   N)r¥  rO  r¦  r‡   rˆ   Úrecording_registerÚcurrent_recording)rŽ   rJ  rˆ   s      rF   Ú_start_macroÚ&load_vi_bindings.<locals>._start_macroT  sE   € ð
 ×Ñ˜qÑ!×&Ñ&ˆØÔ!Ó!Ø—y‘y×)Ñ)ˆHà*+Ô'Ø)+ˆHÕ&ð	 "rE   c                óÈ   • U R                   R                  nUR                  (       a;  [        UR                  5      UR
                  UR                  '   SUl        SUl        gg)z
Stop recording macro.
NrÄ   )r‡   rˆ   r¼  r   r½  r§  )rŽ   rˆ   s     rF   Ú_stop_macroÚ%load_vi_bindings.<locals>._stop_macro`  sZ   € ð
 —9‘9×%Ñ%ˆð ×&×&ÜDQØ×*Ñ*óEˆH×$Ñ$ X×%@Ñ%@ÑAð +/ˆHÔ'Ø)+ˆHÕ&ð 'rE   Ú@)r~   Úrecord_in_macroc                ó¢  • U R                   S   R                  n U R                  R                  R                  U   n/ n[        UR                  5      nUR                  UR                  5        UR                  5         [        U R                  5       H'  nU R                  R                  R                  USS9  M)     g! [
         a     gf = f)a4  
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`.
r3   NT)Úfirst)r¥  rO  r‡   rˆ   r§  r²  r$   rw  Úfeedrp   Úflushrƒ  r‹   Úkey_processorÚfeed_multiple)rŽ   rJ  Úmacror£   Úparserrk   s         rF   Ú_execute_macroÚ(load_vi_bindings.<locals>._execute_macroo  s­   € ð ×Ñ˜qÑ!×&Ñ&ˆð	Ø—I‘I×&Ñ&×6Ñ6°qÑ9ˆEð  "ˆä˜TŸ[™[Ó)ˆØ�‰�E—J‘JÔØ�‰Œô �u—y‘yÖ!ˆAØ�I‰I×#Ñ#×1Ñ1°$¸dÐ1ÓCò "øô ó 	Ùð	ús   ›#C Ã
CÃCr�   )F)rŽ   rž   r^  r©   rw   rŸ   )rV  r©   rW  r©   rw   rŸ   )r~   r   rc  zCallable[[str], str]r7  r‰   rw   rŸ   rZ  rÆ  rK   )
rÁ  r‰   rÀ  r‰   rÂ  r©   rÇ  z
str | Nonerw   rŸ   )rõ  r©   rw   rŸ   )r1   r¡   r   r‰   r   r   r   rÇ   r   r4   r"   r   r½   r   r   r¿   r*   r[  r»   r«   r#   r   r   r    r   r   rÂ   r   r0   r   )“r¢   ÚhandleÚTransformFunctionÚvi_transform_functionsrê   rò   r÷   rý   r  r  r  r  r  r  r!  r%  r,  r2  r5  r:  r?  rH  rP  rT  r_  rc  rg  rk  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+  r0  r=  rB  rF  rK  rP  r^  re  rì   rØ  Úfuncrh  rk  ro  rr  rv  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/  r2  r7  r:  rD  rL  rQ  rU  rY  r`  rc  ri  rn  rr  r   rŒ   rz  r}  r€  rˆ  r�  r“  r˜  r�  r   r¤  r§  r«  r®  rµ  r¹  r¾  rÁ  rÍ  r{  r]  r•   s“                                                                                                                                                   @@@rF   r5   r5   “  sÒ  ú€ ô  “=€LØ×Ñ€Fô
 œe¤C¨ H™o¬v´xÄÀÄsÀ
Ñ7KÐKÑLÐð
 Ü‹HÙ:ð	
ð 
”V“XÑ<Ð=à	”V“XÑ<Ð=à	”V“XÑ?Ð@àÜÙ,ð	
ð7Ðñ* ˆ5œÒ(¬°_Ó)EÔFáˆHÓó$ó ð$ñ ˆCÔ)Ñ*ó8ó +ð8ñ ˆCÔ)Ñ*ó:ó +ð:ñ ˆDÔ+Ñ,ÙˆEÔ,Ñ-ó6ó .ó -ð6ñ ˆCÔ*Ñ+ó
ó ,ð
ñ ˆFÔ-Ñ.ÙˆEÔ,Ñ-ó8ó .ó /ð8ñ ˆCÔ*Ñ+ó
ó ,ð
ñ ˆKÔ 2Ñ3ó
ó 4ð
ñ ˆEœ.Ñ)ó2ó *ð2ñ ˆEœ.Ñ)ó	1ó *ð	1ñ ˆEœ.Ñ)ÙˆEœ.Ñ)ó3ó *ó *ð3ñ ˆEœ.Ñ)ó1ó *ð1ñ ˆ7Ô-´Ñ=Ò>Ü�MÓ"ôñ ˆ7œ=¬L¨=Ñ8Ò9¼+ÀmÓ:TÔUáˆGœ]˜NÔ-?Ñ?Ñ@ó
ó Að
ñ ˆHÔ/Ñ0ó9ó 1ð9ñ ˆHœ^Ñ,ó=ó -ð=ñ ˆCÔ*¬l¨]Ñ:Ñ;ó9ó <ð9ñ ˆCÔ*¬l¨]Ñ:Ñ;ó9ó <ð9ñ ˆCÔ*¬l¨]Ñ:Ñ;ó	9ó <ð	9ñ ˆC�Ô/´<°-Ñ?Ñ@ÙˆCÔ*¬l¨]Ñ:Ñ;ó9ó <ó Að9ñ" ˆCÔ*Ñ+ó.ó ,ð.ñ ˆC�Ô/Ñ0óRó 1ðRñ@ ˆCÔ)Ñ*ó5ó +ð5ñ ˆCÔ*¬l¨]Ñ:Ñ;ó9ó <ð9ñ ˆCÔ*¬l¨]Ñ:Ñ;ó
ó <ð
ñ ˆCÔ*¬l¨]Ñ:Ñ;õó <ðñ< ˆCÔ*¬l¨]Ñ:Ñ;ö5ó <ð5ñ ˆCÔ*¬l¨]Ñ:Ñ;ó2ó <ð2ñ ˆC�Ô/´<°-Ñ?Ñ@ó>ó Að>ñ ˆCÔ)¬\¨MÑ9Ñ:ó3ó ;ð3ñ ˆC�Ô.´,°Ñ>Ñ?ó?ó @ð?ñ ˆCÔ*Ñ+ó
ó ,ð
ñ ˆCÔ*Ñ+ó
ó ,ð
ñ ˆC”—‘˜3Ô'9Ñ:ó
ó ;ð
ñ ˆC”—‘˜3Ô'9Ñ:ó
ó ;ð
ñ ˆCÔ*Ñ+óAó ,ðAñ ˆCÔ*Ñ+ó:ó ,ð:ñ ˆCÔ*¬l¨]Ñ:Ñ;ó9ó <ð9ñ ˆCÔ*¹ÑJó(ó Kð(ñ ˆCÔ*Ñ+óQó ,ðQñ ˆEÔ,Ñ-óQó .ðQñ ˆCÔ)Ñ*ó6ó +ð6ñ ˆCÔ*Ñ+óVó ,ðVñ ˆCÔ)Ñ*ó6ó +ð6ñ ˆEÔ+Ñ,ó6ó -ð6ñ ˆC�Ô.Ñ/ÙˆC�Ô.Ñ/ó
Có 0ó 0ð
Cñ ˆCÔ*Ñ+ó/ó ,ð/ñ ˆCÔ*Ñ+ó/ó ,ð/ñ ˆC�Ô/Ñ0ÙˆCÔ*Ñ+óOó ,ó 1ðOñ ˆCÔ*Ñ+ó

ó ,ð

ñ ˆCÔ*Ñ+ó

ó ,ð

ñ ˆC�Ô/Ñ0ÙˆEœ.Ñ)ó=ó *ó 1ð=ñ ˆC�Ô/Ñ0ÙˆEœ.Ñ)óMó *ó 1ðMñ ˆCÔ*¬l¨]Ñ:Ñ;ó9ó <ð9ñ ˆCÔ*¬l¨]Ñ:Ñ;ó9ó <ð9ñ ˆCÔ*Ñ+ó=ó ,ð=ñ ˆC��cÔ"4¼°}Ñ"DÑEó9ó Fð9ñ ˆC��cÔ"4¼°}Ñ"DÑEó9ó Fð9ñ ˆC��cÔ"4¼°}Ñ"DÑEó<ó Fð<ñ ˆCÔ*Ñ+ó
Vó ,ð
Vñ ˆCÔ*Ñ+ó
Vó ,ð
Vñ ˆCÔ*Ñ+óó ,ðñ
 ˆCÔ*Ñ+óó ,ðô
 )¨Ó6€HÜ.¨|Ó<€KáŒD�H‰HÔ<Ñ=ó ó >ð ð 27ð#AØð#AØ*.ð#Aà	÷#Að #AñJ ' u¨eÔ4Ù& u¨dÔ3Ù& t¨UÔ3Ù& t¨TÔ2ðMØðMØ(<ðMØBEðMà	÷Mó, -‰
ˆˆ1ˆdÙ   DÐ-¨1Õ-ñ -ñ ˆcƒ]ô9ó ð9ñ ˆc”4—8‘8˜SÓ!ôCó "ðCñ ˆcƒ]ô5ó ð5ñ ˆcƒ]ô7ó ð7ñ ˆc�3Óô&ó ð&ñ �Óô
ó ð
ñ �Óô	
ó ð	
ñ �ÓôTó ðTñ �Óô
ó ð
ñ �Óô	
ó ð	
ñ �ÓôPó ðPñ �ÓôPó ðPñ ��c¨4Ñ0ô&ó 1ð&ñ ��c¨4Ñ0ô&ó 1ð&ñ ��c¨4Ñ0ô&ó 1ð&ñ ��c¨4Ñ0ô&ó 1ð&ñ ��c¨4Ñ0ô&ó 1ð&ñ �Óô
ó ð
ñ �Óô	
ó ð	
ð DHñ$IØð$IØ"ð$IØ+/ð$IØ6@ð$Ià	÷$Iñ $IóL ˆó!
ÑˆH�fñ ! ¨6°5Ö9ñ!
ñ 	˜S # u¨cÔ2Ù˜S # u¨cÖ2ñ ñ �Óô!ó ð!ñ �Óô!ó ð!ñ �”d—h‘hÓô!ó  ð!ñ �”d—h‘hÓô
ó  ð
ñ �”d—h‘hÓô!ó  ð!ñ �”d—h‘hÓô5ó  ð5÷"%ð "%ñH ˆ4„LÙ
ˆ5„Má�ÓÙ�Óô
ó ó ð
ñ � dÀÑFô
ó	 Gð
ñ � dÀÑFô
ó Gð
ñ �ÓÙ�ÓÙ�Óô
ó ó ó ð
ñ �Óô=ó ð=ñ. �Óô=ó ð=ñ. �Óô=ó ð=ñ, � dÑ+ô
Bó ,ð
Bñ ˆCÔ*Ñ+ó
ó ,ð
ñ � dÑ+ô
Bó ,ð
Bñ ˆCÔ*Ñ+ó
ó ,ð
ñ ˆC�Ô/Ô2CÑCÑDÙˆC�Ô/Ô2CÑCÑDÙˆC�Ô!3Ô6GÑ!GÑHóYó Ió Eó EðYñ ˆC�Ô/Ô2CÑCÑDÙˆC�Ô/Ô2CÑCÑDó<ó Eó Eð<ñ ˆC�Ô/Ô2CÑCÑDó"ó Eð"ñ6 �Óô%ó ð%ñ: �Óô
ó ð
ñ ��cÓôó ðñ& ��cÓô
ó ð
ñ ��cÓô

ó ð

ñ ��cÓô

ó ð

ñ ��cÓôó ðñ �Óô	
ó ð	
ñ ˆCœÑ ó:ó !ð:ó ˆá	ØÜ%Üñ ä-ñ.ñ

ó	2ó

ò	2ñ ñ ØäÔ!2Ñ2Ô5TÑTä
ññó.óð.ñ ŒD�H‰Hœ_Ñ-óEó .ðEñ ŒD�H‰HÔ3Ñ4ó=ó 5ð=ñ Ü�‰Ü&Ù.ñó
"óð
"ñ: ˆKÔ 7Ñ8ó $ó 9ð $ñD ˆHÔ4Ñ5ó!$ó 6ð!$ñF ˆFÔ2Ñ3ó&ó 4ð&ñ$ ˆGÔ3Ñ4ó&ó 5ð&ñ& ˆDÔ0Ñ1ÙˆFÔ2Ñ3óó 4ó 2ðñ
 ˆE�5¤Ñ0ó>ó 1ð>ñ ˆE�5¤Ñ0óó 1ðñ ˆEœ.¬?Ñ:Ñ;ó6ó <ð6ñ ŒD�H‰Hœ_Ô0FÐ/FÑFÑGó8ó Hð8ñ ŒD�H‰Hœ_Ô/EÑEÑFó6ó Gð6ñ2 ˆEœ.¬?Ñ:Ñ;ó<ó <ð<ñ ˆC”—‘Ô"4Ô8JÐ7JÑ"JÑKó	,ó Lð	,ñ ˆCÔ*Ô-?Ñ?Ñ@ó,ó Að,ñ ˆC”—‘Ô"4ÀeÑLóDó MðDô: " ,´Ó8Ð8rE   c                 ón  • [        5       n U R                  nSSKJn  U" S[        [
        -  [        ) -  S9" UR                  5        U" S[        [
        -  [        -  S9" UR                  5        U" S5      " UR                  5        U" S[        [
        -  [        ) -  S9" UR                  5        U" S[        [
        -  [        -  S9" UR                  5        U" S5      " UR                  5        U" S[        S9" UR                  5        U" S[        S9" UR                  5        U" S[        S9" UR                  5        U" S	5      " UR                  5        U" S
5      " UR                  5        U" S[        S9" UR                  5        U" S5      " UR                  5        [        U [         5      $ )Nr3   )ÚsearchÚ/rá   rÊ   zc-szc-rr'  zc-cr  r  râ   )r1   r¡   rÄ   rÔ  r   r"   r!   Ú start_forward_incremental_searchÚ start_reverse_incremental_searchr   Úaccept_searchÚreverse_incremental_searchÚforward_incremental_searchÚabort_searchrÅ   r0   r   )r¢   rÏ  rÔ  s      rF   r6   r6   �  s’  € Ü“=€LØ×Ñ€FÝñ ØÜ"Ô%6Ñ6Ô;WÐ:WÑWòð ×-Ñ-ô/ñ ØÜ"Ô%6Ñ6Ô:VÑVòð ×-Ñ-ô/ñ ˆ5„M�&×9Ñ9Ô:ñ ØÜ"Ô%6Ñ6Ô;WÐ:WÑWòð ×-Ñ-ô/ñ ØÜ"Ô%6Ñ6Ô:VÑVòð ×-Ñ-ô/ñ ˆ5„M�&×9Ñ9Ô:ñ ˆ7œ<Ò(¨×)=Ñ)=Ô>á
ˆ5œÒ& v×'HÑ'HÔIÙ
ˆ5œÒ& v×'HÑ'HÔIá
ˆ5„M�&×%Ñ%Ô&Ù
ˆ5„M�&×%Ñ%Ô&Ù
ˆ;Ô5Ò6°v×7JÑ7JÔKñ ˆ8Ô�V×)Ñ)Ô*ä! ,´Ó8Ð8rE   )r¢   r1   rw   z%Callable[..., Callable[[_TOF], _TOF]])r¢   r1   rw   z#Callable[..., Callable[[_OF], _OF]])rw   r©   )rw   r2   )XÚ
__future__r   rÍ   rÐ   Úenumr   Ú	itertoolsr   Útypingr   r   r   r	   Ú"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.   r¢   r0   r1   r2   Únamed_commandsr4   Ú__all__rž   Úascii_lowercaser¦  r9   rH   ÚTextObjectFunctionr{   r«   ÚOperatorFunctionr¬   r»   r½   r¿   rÂ   rÅ   rÇ   r5   r6   r?   rE   rF   Ú<module>rò     s”  ðå "ã Û Ý Ý  ß 5Ó 5å 6ß HÓ HÝ 2Ý ,÷÷ ÷÷ ÷ õ õ :Ý 8ß Lß HÝ $Ý 1ß MÑ Mç OÑ OÝ 'ð Øð€ð
 €à×(Ñ(€à# lÑ2Ð ô�Tô ÷e,ñ e,ðR ˜q˜c :˜oÑ.Ð ÙˆvÐ/Ñ0€ðs!Øðs!à*ôs!ðn ˜Q 
˜O¨TÐ1Ñ2Ð ÙˆeÐ+Ñ,€ðHØðHà(ôHðV ó2ó ð2ð óó ðð ó:ó ð:ð ó/ó ð/ð
 ó-ó ð-ôz9õz7)9rE   