§
    ŒŸj²z  ã                  óX  — d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	 ddl
mZ ej        dk    sJ ‚es
d dlZd d	lmZ d d
lmZmZmZ d dlmZmZ d dlmZmZmZmZmZ d dlmZ d dlmZm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z&m'Z' d dl(m)Z)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 g d¢Z4dZ5dZ6dZ7dZ8dZ9 G d„ de1¦  «        Z: G d„ de:¦  «        Z; G d„ d¦  «        Z< G d „ d!¦  «        Z= G d"„ d#¦  «        Z>e	d1d)„¦   «         Z?e	d2d*„¦   «         Z@ G d+„ d,¦  «        ZA G d-„ d.eA¦  «        ZBd3d0„ZCdS )4é    )ÚannotationsN)Úabstractmethod)Úget_running_loop)Úcontextmanageré   )ÚSPHINX_AUTODOC_RUNNINGÚwin32)Úwindll)ÚArrayÚbyrefÚpointer)ÚDWORDÚHANDLE)ÚCallableÚContextManagerÚIterableÚIteratorÚTextIO©Úrun_in_executor_with_context)Úcreate_win32_eventÚwait_for_handles)ÚKeyPress)ÚKeys)ÚMouseButtonÚMouseEventType)ÚINPUT_RECORDÚKEY_EVENT_RECORDÚMOUSE_EVENT_RECORDÚSTD_INPUT_HANDLEÚ
EventTypesé   )ÚREVERSE_ANSI_SEQUENCES)ÚInput)ÚVt100Parser)Ú
Win32InputÚConsoleInputReaderÚraw_modeÚcooked_modeÚattach_win32_inputÚdetach_win32_inputé   i   c                  óB   — e Zd ZdZdd„Zeed	d„¦   «         ¦   «         ZdS )
Ú_Win32InputBasez;
    Base class for `Win32Input` and `Win32PipeInput`.
    ÚreturnÚNonec                ó,   — t          ¦   «         | _        d S ©N)Ú_Win32HandlesÚwin32_handles©Úselfs    úg/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/prompt_toolkit/input/win32.pyÚ__init__z_Win32InputBase.__init__A   s   € Ý*™_œ_ˆÔÐÐó    r   c                ó   — d S r2   © r5   s    r7   Úhandlez_Win32InputBase.handleD   s	   € ð 	ˆr9   N©r/   r0   ©r/   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r8   Úpropertyr   r<   r;   r9   r7   r.   r.   <   s\   € € € € € ðð ð-ð -ð -ð -ð Øðð ð ñ „^ñ „Xðð ð r9   r.   c                  óž   ‡ — e Zd ZdZddˆ fd„Zdd„Zdd„Zdd„Zdd„Ze	d d„¦   «         Z
dd„Zdd„Zd!d„Zd"d„Zd#d„Ze	d$d„¦   «         Zˆ xZS )%r&   z<
    `Input` class that reads from the Windows console.
    NÚstdinúTextIO | Noner/   r0   c                óÐ   •— t          ¦   «                              ¦   «          t          ¦   «         | _        |  | j        rt	          ¦   «         | _        d S t          ¦   «         | _        d S r2   )Úsuperr8   Ú_is_win_vt100_input_enabledÚ_use_virtual_terminal_inputÚVt100ConsoleInputReaderÚconsole_input_readerr'   )r6   rE   Ú	__class__s     €r7   r8   zWin32Input.__init__O   s`   ø€ Ý‰Œ×ÒÑÔÐÝ+FÑ+HÔ+HˆÔ(àÐOàÔ+ð 	=Ý(?Ñ(AÔ(AˆDÔ%Ð%Ð%å(:Ñ(<Ô(<ˆDÔ%Ð%Ð%r9   Úinput_ready_callbackúCallable[[], None]úContextManager[None]c                ó"   — t          | |¦  «        S )zj
        Return a context manager that makes this input active in the current
        event loop.
        )r*   )r6   rN   s     r7   ÚattachzWin32Input.attachZ   s   € õ
 " $Ð(<Ñ=Ô=Ð=r9   c                ó    — t          | ¦  «        S )z{
        Return a context manager that makes sure that this input is not active
        in the current event loop.
        )r+   r5   s    r7   ÚdetachzWin32Input.detacha   s   € õ
 " $Ñ'Ô'Ð'r9   úlist[KeyPress]c                óN   — t          | j                             ¦   «         ¦  «        S r2   )ÚlistrL   Úreadr5   s    r7   Ú	read_keyszWin32Input.read_keysh   s   € Ý�DÔ-×2Ò2Ñ4Ô4Ñ5Ô5Ð5r9   c                ó4   — | j                              ¦   «         S r2   )rL   Ú
flush_keysr5   s    r7   r[   zWin32Input.flush_keysk   s   € ØÔ(×3Ò3Ñ5Ô5Ð5r9   Úboolc                ó   — dS ©NFr;   r5   s    r7   ÚclosedzWin32Input.closedn   s   € àˆur9   c                ó,   — t          | j        ¬¦  «        S )N)Ú use_win10_virtual_terminal_input)r(   rJ   r5   s    r7   r(   zWin32Input.raw_moder   s   € ÝØ-1Ô-Mð
ñ 
ô 
ð 	
r9   c                ó   — t          ¦   «         S r2   )r)   r5   s    r7   r)   zWin32Input.cooked_modew   s   € Ý‰}Œ}Ðr9   Úintc                ó>   — t           j                             ¦   «         S r2   )ÚsysrE   Úfilenor5   s    r7   rf   zWin32Input.filenoz   s   € õ
 Œy×ÒÑ!Ô!Ð!r9   Ústrc                ó   — dS )Nzwin32-inputr;   r5   s    r7   Útypeahead_hashzWin32Input.typeahead_hash�   s   € Øˆ}r9   c                ó8   — | j                              ¦   «          d S r2   )rL   Úcloser5   s    r7   rk   zWin32Input.close„   s   € ØÔ!×'Ò'Ñ)Ô)Ð)Ð)Ð)r9   r   c                ó   — | j         j        S r2   )rL   r<   r5   s    r7   r<   zWin32Input.handle‡   s   € àÔ(Ô/Ð/r9   r2   )rE   rF   r/   r0   )rN   rO   r/   rP   )r/   rP   ©r/   rU   ©r/   r\   )r/   rc   )r/   rg   r=   r>   )r?   r@   rA   rB   r8   rR   rT   rY   r[   rC   r_   r(   r)   rf   ri   rk   r<   Ú__classcell__)rM   s   @r7   r&   r&   J   s@  ø€ € € € € ðð ð	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð>ð >ð >ð >ð(ð (ð (ð (ð6ð 6ð 6ð 6ð6ð 6ð 6ð 6ð ðð ð ñ „Xðð
ð 
ð 
ð 
ð
ð ð ð ð"ð "ð "ð "ðð ð ð ð*ð *ð *ð *ð ð0ð 0ð 0ñ „Xð0ð 0ð 0ð 0ð 0r9   r&   c                  ó  — e Zd ZdZi dej        “dej        “dej        “dej        “dej	        “dej
        “dej        “d	ej        “d
ej        “dej        “dej        “dej        “dej        “dej        “dej        “dej        “dej        “i dej        “dej        “dej        “dej        “dej        “dej        “dej        “dej        “dej        “dej        “dej         “dej!        “dej"        “d ej#        “d!ej$        “d"ej%        “¥Z&i d#ej'        “d$ej(        “d%ej)        “d&ej*        “d'ej+        “d(ej,        “d)ej-        “d*ej.        “d+ej/        “d,ej0        “d-ej1        “d.ej2        “d/ej3        “d0ej4        “d1ej5        “d2ej6        “d3ej7        “ej8        ej9        ej:        ej;        ej<        d4œ¥Z=d5Z>d6Z?d7Z@d8ZAd9ZBdXdYd?„ZCdZd@„ZDd[dB„ZEd\dD„ZFd]dG„ZGd^dM„ZHeId_dO„¦   «         ZJeId`dQ„¦   «         ZKdadT„ZLdbdV„ZMdWS )cr'   z|
    :param recognize_paste: When True, try to discover paste actions and turn
        the event into a BracketedPaste.
    ó   ó    ó   ó   ó   ó   ó   ó   ó   ó   ó   	ó   
ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   ó   é!   é"   é#   é$   é%   é&   é'   é(   é-   é.   ép   éq   ér   és   ét   éu   év   )éw   éx   éy   éz   é{   r   r"   é   é   r,   TÚrecognize_paster\   r/   r0   c                óŠ  — d | _         || _        |  t          j                             ¦   «         r8t          t          j                             t          ¦  «        ¦  «        | _
        d S t          j        dt          j        t          j        z  ¦  «        | _         t          t          j        | j         ¦  «        ¦  «        | _
        d S )NúCONIN$)Ú_fdconrª   re   rE   Úisattyr   r
   Úkernel32ÚGetStdHandler    r<   ÚosÚopenÚO_RDWRÚO_BINARYÚmsvcrtÚget_osfhandle)r6   rª   s     r7   r8   zConsoleInputReader.__init__Ú   s�   € ØˆŒØ.ˆÔð 	ÐÝŒ9×ÒÑÔð 	DÝ ¥¤×!=Ò!=Õ>NÑ!OÔ!OÑPÔPˆDŒKˆKˆKåœ' (­B¬I½¼Ñ,CÑDÔDˆDŒKÝ ¥Ô!5°d´kÑ!BÔ!BÑCÔCˆDŒKˆKˆKr9   c                óJ   — | j         �t          j        | j         ¦  «         dS dS ©zClose fdcon.N©r­   r±   rk   r5   s    r7   rk   zConsoleInputReader.closeç   ó*   € àŒ;Ð"ÝŒH�T”[Ñ!Ô!Ð!Ð!Ð!ð #Ð"r9   úIterable[KeyPress]c              #  ó   ‡ K  — d}t          d¦  «        }t          |z  } |¦   «         }t          ‰ j        gd¬¦  «        sdS t          j                             ‰ j        t          |¦  «        |t          |¦  «        ¦  «         t          ‰  	                    ||¦  «        ¦  «        }ˆ fd„|D ¦   «         }t          ‰  
                    |¦  «        ¦  «        }‰ j        �r‰                      |¦  «        �rt          |¦  «        }|D ]î}g }|r±t          |j        t           ¦  «        r|j        t           j        t           j        hv rx|                     |j        ¦  «         	 t+          |¦  «        }n# t,          $ r d}Y nw xY w|r9t          |j        t           ¦  «        ¯Y|j        t           j        t           j        hv °x|r/t/          t           j        d                     |¦  «        ¦  «        V — |�|V — ŒïdS |E d{V —† dS )úñ
        Return a list of `KeyPress` instances. It won't return anything when
        there was nothing to read.  (This function doesn't block.)

        http://msdn.microsoft.com/en-us/library/windows/desktop/ms684961(v=vs.85).aspx
        é   r   ©ÚtimeoutNc                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r;   )Ú_insert_key_data)Ú.0Úkeyr6   s     €r7   ú
<listcomp>z+ConsoleInputReader.read.<locals>.<listcomp>  s'   ø€ ÐCÐCÐC°3�D×)Ò)¨#Ñ.Ô.ÐCÐCÐCr9   Ú )r   r   r   r<   r
   r¯   ÚReadConsoleInputWr   rW   Ú	_get_keysÚ_merge_paired_surrogatesrª   Ú	_is_pasteÚiterÚ
isinstancerÄ   r   ÚControlJÚControlMÚappendÚdataÚnextÚStopIterationr   ÚBracketedPasteÚjoin)	r6   Ú	max_countrX   ÚarrtypeÚinput_recordsÚall_keysÚgenÚkrÐ   s	   `        r7   rX   zConsoleInputReader.readì   s1  øè è € ð ˆ	å�Q‰xŒxˆÝ Ñ*ˆØ˜™	œ	ˆõ   ¤ °qÐ9Ñ9Ô9ð 	ØˆFõ 	Œ×)Ò)ØŒK� Ñ/Ô/°½GÀD¹M¼Mñ	
ô 	
ð 	
õ ˜Ÿš t¨]Ñ;Ô;Ñ<Ô<ˆð DÐCÐCÐC¸(ÐCÑCÔCˆõ ˜×5Ò5°hÑ?Ô?Ñ@Ô@ˆàÔñ 	  D§N¢N°8Ñ$<Ô$<ñ 	 Ý�x‘.”.ˆCð ð ð �ð �Øð !Ý" 1¤5­$Ñ/Ô/ð!à”u¥¤µ´Ð >Ð>Ð>à—K’K ¤Ñ'Ô'Ð'ð!Ý  ™IœI˜˜øÝ(ð !ð !ð !Ø ˜˜˜ð!øøøð ð !Ý" 1¤5­$Ñ/Ô/ð!à”u¥¤µ´Ð >Ð>Ð>ð ð GÝ"¥4Ô#6¸¿ºÀ¹¼ÑFÔFÐFÐFÐFØ�=Ø�G�G�Gøð#ð ð&  ÐÐÐÐÐÐÐÐÐs   ÅE/Å/E>Å=E>rU   c                ó   — g S r2   r;   r5   s    r7   r[   zConsoleInputReader.flush_keys*  s   € àˆ	r9   Ú	key_pressr   c                ó¬   — |j         r|S t          |j        t          ¦  «        rt	          j        |j        d¦  «        }nd}t          |j        |¦  «        S )z@
        Insert KeyPress data, for vt100 compatibility.
        rÆ   )rÐ   rÌ   rÄ   r   r#   Úgetr   )r6   rÜ   rÐ   s      r7   rÂ   z#ConsoleInputReader._insert_key_data.  sU   € ð Œ>ð 	ØÐå�i”m¥TÑ*Ô*ð 	Ý)Ô-¨i¬m¸RÑ@Ô@ˆDˆDàˆDå˜	œ tÑ,Ô,Ð,r9   rX   r   r×   úArray[INPUT_RECORD]úIterator[KeyPress]c              #  ó~  K  — t          |j        ¦  «        D ]¥}||         }|j        t          v r�t	          |j        t          |j                 ¦  «        }t          |t          ¦  «        r#|j        r|  	                    |¦  «        E d{V —† Œut          |t          ¦  «        r|                      |¦  «        E d{V —† Œ¦dS )úR
        Generator that yields `KeyPress` objects from the input records.
        N)ÚrangeÚvalueÚ	EventTyper!   ÚgetattrÚEventrÌ   r   ÚKeyDownÚ_event_to_key_pressesr   Ú_handle_mouse)r6   rX   r×   ÚiÚirÚevs         r7   rÈ   zConsoleInputReader._get_keys<  sÝ   è è € õ �t”zÑ"Ô"ð 	6ð 	6ˆAØ˜qÔ!ˆBð Œ|�zÐ)Ð)Ý˜RœX¥z°"´,Ô'?Ñ@Ô@�õ ˜bÕ"2Ñ3Ô3ð 6¸¼
ð 6Ø#×9Ò9¸"Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=å Õ$6Ñ7Ô7ð 6Ø#×1Ò1°"Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5øð!	6ð 	6r9   Úkey_pressesc              #  ón  K  — d}| D ]¥}t          |j        t          ¦  «         }|od|j        cxk    odk    nc }|od|j        cxk    odk    nc }|rO|rG|j        |j        z                        dd¦  «                             d¦  «        }t          ||¦  «        }n|V — d}|r|}Œ¡|V — Œ¦|r|V — dS dS )zm
        Combines consecutive KeyPresses with high and low surrogates into
        single characters
        Nu   í €u   í¯¿u   í°€u   í¿¿z	utf-16-leÚsurrogatepass)rÌ   rÄ   r   ÚencodeÚdecoder   )rî   Úbuffered_high_surrogaterÄ   Úis_textÚis_high_surrogateÚis_low_surrogateÚfullchars          r7   rÉ   z+ConsoleInputReader._merge_paired_surrogatesT  s(  è è € ð #'ÐØð 	ð 	ˆCÝ$ S¤W­dÑ3Ô3Ð3ˆGØ 'Ð K¨H¸¼Ð,KÐ,KÒ,KÐ,KÀ8Ò,KÐ,KÐ,KÐ,KÐØ&ÐJ¨8°s´wÐ+JÐ+JÒ+JÐ+JÀ(Ò+JÐ+JÐ+JÐ+JÐà&ð /Ø#ð 	2ð 1Ô4°s´wÑ>ßš ¨_Ñ=Ô=ßš Ñ,Ô,ð õ
 # 8¨XÑ6Ô6�C�Cà1Ð1Ð1Ð1Ø*.Ð'à ð Ø*-Ð'Ð'à�	�	�	�	à"ð 	*Ø)Ð)Ð)Ð)Ð)Ð)ð	*ð 	*r9   Úkeysc                óž   — d}d}| D ];}t          |j        t          ¦  «        s|dz  }|j        t          j        k    r|dz  }Œ<|dk    o|dk    S )a<  
        Return `True` when we should consider this list of keys as a paste
        event. Pasted text on windows will be turned into a
        `Keys.BracketedPaste` event. (It's not 100% correct, but it is probably
        the best possible way to detect pasting of text and handle that
        correctly.)
        r   r"   )rÌ   rÄ   r   rÎ   )rø   Ú
text_countÚnewline_countrÚ   s       r7   rÊ   zConsoleInputReader._is_pasteu  sh   € ð ˆ
Øˆàð 	#ð 	#ˆAÝ˜aœe¥TÑ*Ô*ð  Ø˜a‘�
ØŒu�œÒ%Ð%Ø Ñ"�øà Ò!Ð5 j°A¢oÐ5r9   rí   r   c                ó¢	  — t          |t          ¦  «        r|j        sJ ‚d}|j        }|j        j        }|                     dd¦  «        }|dk    r/|j        | j        v r t          | j        |j                 d¦  «        }nR|| j
        v r9| j
        |         t          j        k    rd}t          | j
        |         |¦  «        }nt          ||¦  «        }|| j        z  s
|| j        z  rù|| j        z  rï|rít          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j         t          j!        i	}| "                    |j#        |j#        ¦  «        |_#        || j        z  s|| j        z  �r|�rt          j        t          j$        t          j        t          j%        t          j        t          j&        t          j        t          j'        t          j        t          j(        t          j        t          j)        t          j        t          j*        t          j+        t          j,        t          j        t          j-        t          j         t          j.        i
}| "                    |j#        |j#        ¦  «        |_#        || j        z  �r|�rt          j/        t          j0        t          j        t          j1        t          j        t          j2        t          j        t          j3        t          j        t          j4        t          j        t          j5        t          j        t          j6        t          j        t          j7        t          j+        t          j8        t          j        t          j9        t          j         t          j:        i}| "                    |j#        |j#        ¦  «        |_#        || j        z  s
|| j        z  r'|r%|j;        dk    rt          t          j<        d¦  «        }|| j        z  s
|| j        z  r3|r1|j#        t          j        k    rt          t          j=        d¦  «        |gS |r+|| j>        z  }|rt          t          j=        d¦  «        |gS |gS g S )zU
        For this `KEY_EVENT_RECORD`, return a list of `KeyPress` instances.
        Nzutf-8rð   ú rÆ   ú
ú )?rÌ   r   rè   ÚControlKeyStateÚuCharÚUnicodeCharrñ   ÚVirtualKeyCodeÚkeycodesr   Úmappingsr   rÍ   ÚLEFT_CTRL_PRESSEDÚRIGHT_CTRL_PRESSEDÚSHIFT_PRESSEDÚLeftÚControlShiftLeftÚRightÚControlShiftRightÚUpÚControlShiftUpÚDownÚControlShiftDownÚHomeÚControlShiftHomeÚEndÚControlShiftEndÚInsertÚControlShiftInsertÚPageUpÚControlShiftPageUpÚPageDownÚControlShiftPageDownrÞ   rÄ   ÚControlLeftÚControlRightÚ	ControlUpÚControlDownÚControlHomeÚ
ControlEndÚControlInsertÚDeleteÚControlDeleteÚControlPageUpÚControlPageDownÚTabÚBackTabÚ	ShiftLeftÚ
ShiftRightÚShiftUpÚ	ShiftDownÚ	ShiftHomeÚShiftEndÚShiftInsertÚShiftDeleteÚShiftPageUpÚShiftPageDownrÐ   ÚControlSpaceÚEscapeÚLEFT_ALT_PRESSED)r6   rí   ÚresultÚcontrol_key_stateÚu_charÚ
ascii_charÚmappingÚmeta_presseds           r7   ré   z(ConsoleInputReader._event_to_key_presses‹  sÑ  € õ ˜"Õ.Ñ/Ô/Ð>°B´JÐ>Ð>Ð>à"&ˆàÔ.ÐØ”Ô%ˆà—]’] 7¨OÑ<Ô<ˆ
ð �VÒÐØÔ  D¤MÐ1Ð1Ý! $¤-°Ô0AÔ"BÀBÑGÔG�øà˜Tœ]Ð*Ð*Ø”= Ô,µ´Ò=Ð=àð õ " $¤-°
Ô";¸VÑDÔD��å! &¨&Ñ1Ô1�ð
 " DÔ$:Ñ:ð	=ð % tÔ'>Ñ>ð	=ð
 " DÔ$6Ñ6ð	=ð ð	=õ ”	�4Ô0Ý”
�DÔ2Ý”�Ô,Ý”	�4Ô0Ý”	�4Ô0Ý”�$Ô.Ý”�TÔ4Ý”�TÔ4Ý”�tÔ8ð
'ˆGð !Ÿš V¤Z°´Ñ<Ô<ˆFŒJð  Ô 6Ñ6ð	=à  4Ô#:Ñ:ñ	=ð ñ	=õ
 ”	�4Ô+Ý”
�DÔ-Ý”�œÝ”	�4Ô+Ý”	�4Ô+Ý”�$œ/Ý”�TÔ/Ý”�TÔ/Ý”�TÔ/Ý”�tÔ3ðˆGð !Ÿš V¤Z°´Ñ<Ô<ˆFŒJð ˜tÔ1Ñ1ñ 	=°fñ 	=å”�$œ,Ý”	�4œ>Ý”
�DœOÝ”�œÝ”	�4œ>Ý”	�4œ>Ý”�$œ-Ý”�TÔ-Ý”�TÔ-Ý”�TÔ-Ý”�tÔ1ðˆGð !Ÿš V¤Z°´Ñ<Ô<ˆFŒJð
 " DÔ$:Ñ:ð	6ð % tÔ'>Ñ>ð	6ð
 ð	6ð ”˜sÒ"Ð"å�dÔ/°Ñ5Ô5ˆFð " DÔ$:Ñ:ð	7ð % tÔ'>Ñ>ð	7ð
 ð	7ð ”
�dœmÒ+Ð+å�Tœ[¨"Ñ-Ô-¨vÐ6Ð6ð ð 		Ø,¨tÔ/DÑDˆLàð  Ý ¥¤¨bÑ1Ô1°6Ð:Ð:à�x�ð ˆIr9   r   c                ó2  — |j         }|j        }d}t          j        }|t          z  r |dk    rt
          j        }n<t
          j        }n/|t          k    rt          j	        }n|t          k    rt          j        }|t          z  rt
          j        }|€|dk    rt
          j        }nt
          j        }d                     |j        |j        t%          |j        j        ¦  «        t%          |j        j        ¦  «        g¦  «        }t-          t.          j        |¦  «        gS )zK
        Handle mouse events. Return a list of KeyPress instances.
        Nr   ú;)Ú
EventFlagsÚButtonStater   ÚNONEÚMOUSE_WHEELEDr   Ú	SCROLL_UPÚSCROLL_DOWNÚFROM_LEFT_1ST_BUTTON_PRESSEDÚLEFTÚRIGHTMOST_BUTTON_PRESSEDÚRIGHTÚMOUSE_MOVEDÚ
MOUSE_MOVEÚ
MOUSE_DOWNÚMOUSE_UPrÔ   rä   rg   ÚMousePositionÚXÚYr   r   ÚWindowsMouseEvent)r6   rí   Úevent_flagsÚbutton_stateÚ
event_typeÚbuttonrÐ   s          r7   rê   z ConsoleInputReader._handle_mouse  s  € ð ”mˆØ”~ˆà,0ˆ
Ý)Ô.ˆð �Ñ&ð 	+Ø˜aÒÐÝ+Ô5�
�
å+Ô7�
�
ð Õ;Ò;Ð;Ý$Ô)��àÕ!9Ò9Ð9Ý$Ô*�ð �Ñ$ð 	3Ý'Ô2ˆJð ÐØ˜aÒÐå+Ô6�
�
õ ,Ô4�
à�xŠxà”ØÔ Ý�BÔ$Ô&Ñ'Ô'Ý�BÔ$Ô&Ñ'Ô'ð	ñ
ô 
ˆõ �Ô/°Ñ6Ô6Ð7Ð7r9   N)T)rª   r\   r/   r0   r=   ©r/   r»   rm   )rÜ   r   r/   r   )rX   r   r×   rß   r/   rà   )rî   rU   r/   rà   )rø   rU   r/   r\   )rí   r   r/   rU   )rí   r   r/   rU   )Nr?   r@   rA   rB   r   r3  r2  ÚControlAÚControlBÚControlCÚControlDÚControlEÚControlFÚControlGÚControlHÚControlIrÍ   ÚControlKÚControlLrÎ   ÚControlNÚControlOÚControlPÚControlQÚControlRÚControlSÚControlTÚControlUÚControlVÚControlWÚControlXÚControlYÚControlZÚControlBackslashÚControlSquareCloseÚControlCircumflexÚControlUnderscoreÚ	Backspacer  r  r  r  r  r	  r  r  r  r  r"  ÚF1ÚF2ÚF3ÚF4ÚF5ÚF6ÚF7ÚF8ÚF9ÚF10ÚF11ÚF12r  r4  ÚRIGHT_ALT_PRESSEDr  r  r  r8   rk   rX   r[   rÂ   rÈ   ÚstaticmethodrÉ   rÊ   ré   rê   r;   r9   r7   r'   r'   Œ   s0  € € € € € ðð ð"Ø�”ð"à�Ô"ð"ð 	�”ð"ð 	�”ð	"ð
 	�”ð"ð 	�”ð"ð 	�”ð"ð 	�”ð"ð 	�”ð"ð 	�”ð"ð 	�”ð"ð 	�”ð"ð 	�”ð"ð 	�”ð"ð 	�”ð"ð  	�”ð!"ð" 	�”ð#"ð "ð$ 	�”ð%"ð& 	�”ð'"ð( 	�”ð)"ð* 	�”ð+"ð, 	�”ð-"ð. 	�”ð/"ð0 	�”ð1"ð2 	�”ð3"ð4 	�”ð5"ð6 	�”ð7"ð8 	�”ð9"ð: 	�Ô&ð;"ð< 	�Ô(ð="ð> 	�Ô'ð?"ð@ 	�Ô'ðA"ðB 	�”ðC"ð "€HðJà
ˆDŒKðð 	ˆDŒMðð 	ˆDŒHð	ð
 	ˆDŒIðð 	ˆDŒIðð 	ˆDŒGðð 	ˆDŒJðð 	ˆDŒIðð 	ˆDŒKðð 	ˆDŒKðð 	ˆTŒWðð 	ˆTŒWðð  	ˆTŒWð!ð" 	ˆTŒWð#ð$ 	ˆTŒWð%ð& 	ˆTŒWð'ð( 	ˆTŒWð)ð* ŒWØŒWØŒXØŒXØŒXð3ð ð €Hð8 ÐØÐØ€MØÐØÐðDð Dð Dð Dð Dð"ð "ð "ð "ð
< ð < ð < ð < ð|ð ð ð ð-ð -ð -ð -ð6ð 6ð 6ð 6ð0 ð*ð *ð *ñ „\ð*ð@ ð6ð 6ð 6ñ „\ð6ð*Bð Bð Bð BðH-8ð -8ð -8ð -8ð -8ð -8r9   r'   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zdd	„Zdd„ZdS )rK   aÛ  
    Similar to `ConsoleInputReader`, but for usage when
    `ENABLE_VIRTUAL_TERMINAL_INPUT` is enabled. This assumes that Windows sends
    us the right vt100 escape sequences and we parse those with our vt100
    parser.

    (Using this instead of `ConsoleInputReader` results in the "data" attribute
    from the `KeyPress` instances to be more correct in edge cases, because
    this responds to for instance the terminal being in application cursor keys
    mode.)
    r/   r0   c                óº  ‡ — d ‰ _         g ‰ _        t          ˆ fd„¦  «        ‰ _        ‰  t          j                             ¦   «         r8t          t          j	         
                    t          ¦  «        ¦  «        ‰ _        d S t          j        dt          j        t          j        z  ¦  «        ‰ _         t          t#          j        ‰ j         ¦  «        ¦  «        ‰ _        d S )Nc                ó8   •— ‰j                              | ¦  «        S r2   )Ú_bufferrÏ   )rÜ   r6   s    €r7   ú<lambda>z2Vt100ConsoleInputReader.__init__.<locals>.<lambda>Q  s   ø€ ˜dœl×1Ò1°)Ñ<Ô<€ r9   r¬   )r­   r‚  r%   Ú_vt100_parserre   rE   r®   r   r
   r¯   r°   r    r<   r±   r²   r³   r´   rµ   r¶   r5   s   `r7   r8   z Vt100ConsoleInputReader.__init__L  s®   ø€ ØˆŒà')ˆŒÝ(Ø<Ð<Ð<Ð<ñ
ô 
ˆÔð 	ÐÝŒ9×ÒÑÔð 	DÝ ¥¤×!=Ò!=Õ>NÑ!OÔ!OÑPÔPˆDŒKˆKˆKåœ' (­B¬I½¼Ñ,CÑDÔDˆDŒKÝ ¥Ô!5°d´kÑ!BÔ!BÑCÔCˆDŒKˆKˆKr9   c                óJ   — | j         �t          j        | j         ¦  «         dS dS r¸   r¹   r5   s    r7   rk   zVt100ConsoleInputReader.close]  rº   r9   r»   c                ó†  — d}t          d¦  «        }t          |z  } |¦   «         }t          | j        gd¬¦  «        sg S t          j                             | j        t          |¦  «        |t          |¦  «        ¦  «         |                      ||¦  «        D ]}| j	         
                    |¦  «         Œ| j        }g | _        |S )r½   r¾   r   r¿   )r   r   r   r<   r
   r¯   rÇ   r   rÈ   r„  Úfeedr‚  )r6   rÕ   rX   rÖ   r×   Úkey_datar5  s          r7   rX   zVt100ConsoleInputReader.readb  sÌ   € ð ˆ	å�Q‰xŒxˆÝ Ñ*ˆØ˜™	œ	ˆõ   ¤ °qÐ9Ñ9Ô9ð 	ØˆIõ 	Œ×)Ò)ØŒK� Ñ/Ô/°½GÀD¹M¼Mñ	
ô 	
ð 	
ð Ÿš t¨]Ñ;Ô;ð 	.ð 	.ˆHØÔ×#Ò# HÑ-Ô-Ð-Ð-ð ”ˆØˆŒØˆr9   rU   c                óT   — | j                              ¦   «          | j        }g | _        |S )zc
        Flush pending keys and return them.
        (Used for flushing the 'escape' key.)
        )r„  Úflushr‚  )r6   r5  s     r7   r[   z"Vt100ConsoleInputReader.flush_keys‡  s.   € ð 	Ô× Ò Ñ"Ô"Ð"ð ”ˆØˆŒØˆr9   rX   r   r×   rß   úIterator[str]c              #  ó  K  — t          |j        ¦  «        D ]o}||         }|j        t          v rWt	          |j        t          |j                 ¦  «        }t          |t          ¦  «        r|j        r|j	        j
        }|dk    r|V — ŒpdS )râ   rý   N)rã   rä   rå   r!   ræ   rç   rÌ   r   rè   r  r  )r6   rX   r×   rë   rì   rí   r7  s          r7   rÈ   z!Vt100ConsoleInputReader._get_keys•  s™   è è € õ �t”zÑ"Ô"ð 	%ð 	%ˆAØ˜qÔ!ˆBð Œ|�zÐ)Ð)Ý˜RœX¥z°"´,Ô'?Ñ@Ô@�õ ˜bÕ"2Ñ3Ô3ð %¸¼
ð %ØœXÔ1�FØ Ò'Ð'Ø$˜˜˜øð	%ð 	%r9   Nr=   rS  rm   )rX   r   r×   rß   r/   r‹  )	r?   r@   rA   rB   r8   rk   rX   r[   rÈ   r;   r9   r7   rK   rK   ?  s‡   € € € € € ð
ð 
ðDð Dð Dð Dð""ð "ð "ð "ð
#ð #ð #ð #ðJð ð ð ð%ð %ð %ð %ð %ð %r9   rK   c                  ó*   — e Zd ZdZdd„Zdd	„Zdd„ZdS )r3   a¨  
    Utility to keep track of which handles are connectod to which callbacks.

    `add_win32_handle` starts a tiny event loop in another thread which waits
    for the Win32 handle to become ready. When this happens, the callback will
    be called in the current asyncio event loop using `call_soon_threadsafe`.

    `remove_win32_handle` will stop this tiny event loop.

    NOTE: We use this technique, so that we don't have to use the
          `ProactorEventLoop` on Windows and we can wait for things like stdin
          in a `SelectorEventLoop`. This is important, because our inputhook
          mechanism (used by IPython), only works with the `SelectorEventLoop`.
    r/   r0   c                ó"   — i | _         i | _        d S r2   )Ú_handle_callbacksÚ_remove_eventsr5   s    r7   r8   z_Win32Handles.__init__½  s   € Ø@BˆÔð 24ˆÔÐÐr9   r<   r   ÚcallbackrO   c                ó  ‡‡‡‡‡‡— ‰j         }|€t          d¦  «        ‚|                      ‰¦  «         t          ¦   «         Š‰| j        |<   t          ¦   «         Š‰| j        |<   dˆˆˆfd„Šdˆˆˆˆfd„Št          ‰‰¬¦  «         dS )	z7
        Add a Win32 handle to the event loop.
        NúInvalid handle.r/   r0   c                 ól   •— 	  ‰ ¦   «          t          ‰‰¬¦  «         d S # t          ‰‰¬¦  «         w xY w)N©Úloopr   )r‘  r–  Úwaits   €€€r7   Úreadyz-_Win32Handles.add_win32_handle.<locals>.readyØ  sF   ø€ ð>Ø�‘
”
�
å,¨T¸Ð=Ñ=Ô=Ð=Ð=Ð=øÕ,¨T¸Ð=Ñ=Ô=Ð=Ð=øøøs   ƒ
   3c                 óž   •— t          ‰‰g¦  «        } | ‰u r!t          j                             ‰¦  «         d S ‰                     ‰¦  «         d S r2   )r   r
   r¯   ÚCloseHandleÚcall_soon_threadsafe)r5  r<   r–  r˜  Úremove_events    €€€€r7   r—  z,_Win32Handles.add_win32_handle.<locals>.waitâ  sW   ø€ õ & |°VÐ&<Ñ=Ô=ˆFà˜Ð%Ð%Ý”×+Ò+¨LÑ9Ô9Ð9Ø�à×)Ò)¨%Ñ0Ô0Ð0Ð0Ð0r9   r•  r=   )rä   Ú
ValueErrorÚremove_win32_handler   r�  r   r�  r   )r6   r<   r‘  Úhandle_valuer–  r˜  rœ  r—  s    `` @@@@r7   Úadd_win32_handlez_Win32Handles.add_win32_handleÄ  sÞ   øøøøøø€ ð ”|ˆàÐÝÐ.Ñ/Ô/Ð/ð 	× Ò  Ñ(Ô(Ð(åÑ!Ô!ˆØ/7ˆÔ˜|Ñ,õ *Ñ+Ô+ˆØ,8ˆÔ˜LÑ)ð	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð		1ð 		1ð 		1ð 		1ð 		1ð 		1ð 		1ð 		1ð 		1õ 	% T°Ð5Ñ5Ô5Ð5Ð5Ð5r9   úCallable[[], None] | Nonec                ó  — |j         €dS 	 | j                             |j         ¦  «        }t          j                             |¦  «         n# t          $ r Y nw xY w	 | j                             |j         ¦  «        S # t          $ r Y dS w xY w)zt
        Remove a Win32 handle from the event loop.
        Return either the registered handler or `None`.
        N)rä   r�  Úpopr
   r¯   ÚSetEventÚKeyErrorr�  )r6   r<   Úevents      r7   rž  z!_Win32Handles.remove_win32_handleï  s«   € ð
 Œ<ÐØ�4ð	,ØÔ'×+Ò+¨F¬LÑ9Ô9ˆEõ ŒO×$Ò$ UÑ+Ô+Ð+Ð+øõ ð 	ð 	ð 	ØˆDð	øøøð
	ØÔ)×-Ò-¨f¬lÑ;Ô;Ð;øÝð 	ð 	ð 	Ø�4�4ð	øøøs#   ‹A
 Á

AÁAÁA: Á:
BÂBNr=   )r<   r   r‘  rO   r/   r0   )r<   r   r/   r¡  )r?   r@   rA   rB   r8   r   rž  r;   r9   r7   r3   r3   ­  s[   € € € € € ðð ð4ð 4ð 4ð 4ð)6ð )6ð )6ð )6ðVð ð ð ð ð r9   r3   Úinputr‘  rO   r/   úIterator[None]c              #  óv  K  — | j         }| j        }|j        €t          d¦  «        ‚|                     |¦  «        }|                     ||¦  «         	 dV — |                     |¦  «         |r|                     ||¦  «         dS dS # |                     |¦  «         |r|                     ||¦  «         w w xY w)zÚ
    Context manager that makes this input active in the current event loop.

    :param input: :class:`~prompt_toolkit.input.Input` object.
    :param input_ready_callback: Called when the input is ready to read.
    Nr“  ©r4   r<   rä   r�  rž  r   )r§  r‘  r4   r<   Úprevious_callbacks        r7   r*   r*     sò   è è € ð Ô'€MØŒ\€Fà„|ÐÝÐ*Ñ+Ô+Ð+ð &×9Ò9¸&ÑAÔAÐØ×"Ò" 6¨8Ñ4Ô4Ð4ðFØˆˆˆà×)Ò)¨&Ñ1Ô1Ð1àð 	FØ×*Ò*¨6Ð3DÑEÔEÐEÐEÐEð	Fð 	Føð 	×)Ò)¨&Ñ1Ô1Ð1àð 	FØ×*Ò*¨6Ð3DÑEÔEÐEÐEð	Føøøs   ÁB Â0B8c              #  óö   K  — | j         }| j        }|j        €t          d¦  «        ‚|                     |¦  «        }	 d V — |r|                     ||¦  «         d S d S # |r|                     ||¦  «         w w xY w)Nr“  rª  )r§  r4   r<   r«  s       r7   r+   r+   "  s®   è è € àÔ'€MØŒ\€Fà„|ÐÝÐ*Ñ+Ô+Ð+à%×9Ò9¸&ÑAÔAÐðFØˆˆˆàð 	FØ×*Ò*¨6Ð3DÑEÔEÐEÐEÐEð	Fð 	FøÐð 	FØ×*Ò*¨6Ð3DÑEÔEÐEÐEð	Føøøs   ½A ÁA8c                  ó6   — e Zd ZdZ	 ddd
„Zdd„Zdd„Zdd„ZdS )r(   zà
    ::

        with raw_mode(stdin):
            ''' the windows terminal is now in 'raw' mode. '''

    The ``fileno`` attribute is ignored. This is to be compatible with the
    `raw_input` method of `.vt100_input`.
    NFrf   ú
int | Nonera   r\   r/   r0   c                ó€   — t          t          j                             t          ¦  «        ¦  «        | _        || _        d S r2   )r   r
   r¯   r°   r    r<   ra   )r6   rf   ra   s      r7   r8   zraw_mode.__init__>  s2   € õ �Vœ_×9Ò9Õ:JÑKÔKÑLÔLˆŒØ0PˆÔ-Ð-Ð-r9   c                ó¼   — t          ¦   «         }t          j                             | j        t          |¦  «        ¦  «         || _        |                      ¦   «          d S r2   )r   r
   r¯   ÚGetConsoleModer<   r   Úoriginal_modeÚ_patch)r6   r²  s     r7   Ú	__enter__zraw_mode.__enter__D  sF   € å™œˆÝŒ×&Ò& t¤{µG¸MÑ4JÔ4JÑKÔKÐKØ*ˆÔà�Š‰Œˆˆˆr9   c                óª   — d}d}d}| j         j        ||z  |z   z  }| j        r
|t          z  }t          j                             | j        |¦  «         d S ©Nr,   r   r"   )r²  rä   ra   ÚENABLE_VIRTUAL_TERMINAL_INPUTr
   r¯   ÚSetConsoleModer<   )r6   ÚENABLE_ECHO_INPUTÚENABLE_LINE_INPUTÚENABLE_PROCESSED_INPUTÚnew_modes        r7   r³  zraw_mode._patchL  sp   € à"ÐØ"ÐØ!'ÐàÔ%Ô+ØÐ 1Ñ1Ð4JÑJð/
ñ 
ˆð Ô0ð 	6ØÕ5Ñ5ˆHåŒ×&Ò& t¤{°HÑ=Ô=Ð=Ð=Ð=r9   ÚaÚobjectc                óZ   — t           j                             | j        | j        ¦  «         d S r2   )r
   r¯   r¸  r<   r²  )r6   r½  s     r7   Ú__exit__zraw_mode.__exit__[  s%   € åŒ×&Ò& t¤{°DÔ4FÑGÔGÐGÐGÐGr9   r^   )rf   r®  ra   r\   r/   r0   r=   )r½  r¾  r/   r0   )r?   r@   rA   rB   r8   r´  r³  rÀ  r;   r9   r7   r(   r(   3  s…   € € € € € ðð ð SXðQð Qð Qð Qð Qðð ð ð ð>ð >ð >ð >ðHð Hð Hð Hð Hð Hr9   r(   c                  ó   — e Zd ZdZdd„ZdS )r)   zx
    ::

        with cooked_mode(stdin):
            ''' The pseudo-terminal stdin is now used in cooked mode. '''
    r/   r0   c                ó‚   — d}d}d}t           j                             | j        | j        j        ||z  |z  z  ¦  «         d S r¶  )r
   r¯   r¸  r<   r²  rä   )r6   r¹  rº  r»  s       r7   r³  zcooked_mode._patchh  s[   € à"ÐØ"ÐØ!'ÐåŒ×&Ò&ØŒKØÔÔ$Ø Ð#4Ñ4Ð7MÑMñOñ	
ô 	
ð 	
ð 	
ð 	
r9   Nr=   )r?   r@   rA   rB   r³  r;   r9   r7   r)   r)   `  s2   € € € € € ðð ð

ð 

ð 

ð 

ð 

ð 

r9   r)   r\   c                 óØ  — t          t          j                             t          ¦  «        ¦  «        } t          d¦  «        }t          j                             | t          |¦  «        ¦  «         	 t          j                             | t          t          ¦  «        ¦  «        }|dk    t          j                             | |¦  «         S # t          j                             | |¦  «         w xY w)z_
    Returns True when we're running Windows and VT100 escape sequences are
    supported.
    r   r"   )
r   r
   r¯   r°   r    r   r±  r   r¸  r·  )Úhconsoler²  r5  s      r7   rI   rI   u  s¼   € õ
 •f”o×2Ò2Õ3CÑDÔDÑEÔE€Hõ ˜!‘H”H€MÝ
„O×"Ò" 8­U°=Ñ-AÔ-AÑBÔBÐBð@å”o×4Ò4Ø•eÕ9Ñ:Ô:ñ
ô 
ˆð ˜Š{åŒ×&Ò& x°Ñ?Ô?Ð?Ð?ø�Œ×&Ò& x°Ñ?Ô?Ð?Ð?øøøs   Á/7C Ã"C))r§  r.   r‘  rO   r/   r¨  )r§  r.   r/   r¨  rn   )DÚ
__future__r   r±   re   Úabcr   Úasyncior   Ú
contextlibr   Úutilsr   Úplatformrµ   Úctypesr
   r   r   r   Úctypes.wintypesr   r   Útypingr   r   r   r   r   Úprompt_toolkit.eventloopr   Úprompt_toolkit.eventloop.win32r   r   Ú(prompt_toolkit.key_binding.key_processorr   Úprompt_toolkit.keysr   Úprompt_toolkit.mouse_eventsr   r   Úprompt_toolkit.win32_typesr   r   r   r    r!   Úansi_escape_sequencesr#   Úbaser$   Úvt100_parserr%   Ú__all__rC  rE  rG  r@  r·  r.   r&   r'   rK   r3   r*   r+   r(   r)   rI   r;   r9   r7   ú<module>rØ     sÍ  ðØ "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø %Ð %Ð %Ð %Ð %Ð %à *Ð *Ð *Ð *Ð *Ð *à
„|�wÒÐÐÐð ð Ø€M€M€MØÐÐÐÐÐà (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ Gà AÐ AÐ AÐ AÐ AÐ AØ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ =Ð =Ð =Ð =Ð =Ð =Ø $Ð $Ð $Ð $Ð $Ð $Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cðð ð ð ð ð ð ð ð ð ð ð ð ð ð :Ð 9Ð 9Ð 9Ð 9Ð 9Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %ðð ð €ð  #Ð ØÐ Ø€Ø€ð !'Ð ðð ð ð ð �eñ ô ð ð?0ð ?0ð ?0ð ?0ð ?0�ñ ?0ô ?0ð ?0ðDp8ð p8ð p8ð p8ð p8ñ p8ô p8ð p8ðfk%ð k%ð k%ð k%ð k%ñ k%ô k%ð k%ð\Uð Uð Uð Uð Uñ Uô Uð Uðp ðFð Fð Fñ „ðFð8 ðFð Fð Fñ „ðFð *Hð *Hð *Hð *Hð *Hñ *Hô *Hð *HðZ
ð 
ð 
ð 
ð 
�(ñ 
ô 
ð 
ð*@ð @ð @ð @ð @ð @r9   