ó
    F\h%d  ã                  ó.  • % S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SK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  SSKJrJr  SSKJr  SS	KJr  SS
KJr  Sr\(       a  S SKJrJrJr  OS r " S S\5      r \RB                  \RB                  \ 4r"Sr#\$" \SS5      r%\$" \SS5      r&SS jr'/ SQr(0 r)S\*S'   \( H  r+\'" \)\+5        M     C+C'\RX                  " S5      r- \R\                  r.S\*S'    " S S\5      r1g! \/ a     " S S5      r0\0r. N f = f)é    )ÚannotationsN)Úioctlé   )Úcurses)ÚConsoleÚEvent)Ú	tcgetattrÚ	tcsetattr)Útrace)Ú
EventQueue)ÚwlenF)ÚIOÚLiteralÚoverloadc                ó   • g ©N© )Úfuncs    Ú+/usr/lib/python3.13/_pyrepl/unix_console.pyÚ<lambda>r   1   s   € ˜Dó    c                  ó   • \ rS rSrSrg)ÚInvalidTerminalé4   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   r   r   r   r   4   s   † Úr   r   ÚrepaintÚFIONREADÚ
TIOCGWINSZúdict[int, int]c                ó^   • SU-  n[        [        U5      (       a  X[        [        U5      '   g g )NzB%d)ÚhasattrÚtermiosÚgetattr)Ú
dictionaryÚrateÚbaudrate_names      r   Úadd_baudrate_if_supportedr+   D   s,   € Ø˜D‘L€MÜŒw˜×&Ñ&Ø6:”7œ7 MÓ2Ò3ð 'r   )r   én   i Â i°  é†   é–   i  i K  éÈ   i „ i`	  i,  i –  i  iÀ  é2   i á  iX  éK   i€%  Úratedicts   \$<([0-9]+)((?:/|\*){0,2})>ztype[select.poll]Úpollc                  ó.   • \ rS rSrS rS rSSS jjrSrg)	ÚMinimalPollés   c                ó   • g r   r   ©Úselfs    r   Ú__init__ÚMinimalPoll.__init__t   s   € Ør   c                ó   • Xl         g r   ©Úfd)r9   r>   Úflags      r   ÚregisterÚMinimalPoll.registerw   s   € Ø�Gr   Nc                ó°   • Uc(  [         R                   " U R                  // / 5      u  p#nU$ [         R                   " U R                  // / US-  5      u  p#nU$ )Néè  )Úselectr>   )r9   ÚtimeoutÚrÚwÚes        r   r3   ÚMinimalPoll.pollz   sS   € Ø‰Ü Ÿ-š-¨¯©¨	°2°rÓ:‘��að ˆHô !Ÿ-š-¨¯©¨	°2°r¸7À4¹<ÓH‘��aØˆHr   r=   r   )rE   úfloat | NoneÚreturnz	list[int])r   r   r   r   r:   r@   r3   r   r   r   r   r5   r5   s   s   † ò	ò	÷	ñ 	r   r5   c                  ó   ^ • \ rS rSr    S-       S.U 4S jjjrS rS/S jrS0S jrS1S jrS r	S r
S	 rS
 rS2S jrS3S4S jjrS5S6S jjrS r\(       a  S rOS rS rS rS rS r\(       a  S rOS rS r\S 5       rS7S jrS7S jrS rS rS r S r!S r"S  r#S! r$S8S" jr%S8S# jr&S8S$ jr'S% r(S& r)S' r*S( r+S) r,S* r-\.4S+ jr/S,r0U =r1$ )9ÚUnixConsoleé„   c                ó�  >• [         TU ]  XX45        [        5       U l        U R                  R	                  U R
                  [        R                  5        SU l        SU l	        [        R                  " U=(       d    SU R                  5        X0l        [        S"S#S jj5       n[        S$S j5       nS"S$S jjnU" S5      U l        U" SS	S
9U l        U" S5      U l        U" SS	S
9U l        U" SS	S
9U l        U" SS	S
9U l        U" SS	S
9U l        U" SS	S
9U l        U" SS	S
9U l        U" SS	S
9U l        U" S5      U l        U" SS	S
9U l        U" SS	S
9U l        U" SS	S
9U l        U" SS	S
9U l        U" S5      U l        U" SS	S
9U l        U" SS	S
9U l         U" SS	S
9U l!        U" SS	S
9U l"        U" SS	S
9U l#        U" SS	S
9U l$        U" SS	S
9U l%        U" S S	S
9U l&        U RO                  5         [Q        U R
                  U RR                  5      U l*        S!U l+        [X        RX                  " [X        RZ                  U R\                  5        g)%a  
Initialize the UnixConsole.

Parameters:
- f_in (int or file-like object): Input file descriptor or object.
- f_out (int or file-like object): Output file descriptor or object.
- term (str): Terminal name.
- encoding (str): Encoding to use for I/O operations.
r   r   Nc                ó   • g r   r   ©ÚcapÚoptionals     r   Ú
_my_getstrÚ(UnixConsole.__init__.<locals>._my_getstrž   s   € ØMPr   c                ó   • g r   r   rQ   s     r   rT   rU   ¡   s   € ØBEr   c                ód   • [         R                  " U 5      nU(       d  Uc  [        SU  S35      eU$ )Nz#terminal doesn't have the required z capability)r   Útigetstrr   )rR   rS   rF   s      r   rT   rU   ¤   s7   € Ü—’ Ó$ˆAÞ ¡	Ü%Ø9¸#¸¸kÐJóð ð ˆHr   ÚbelÚcivisT)rS   ÚclearÚcnormÚcubÚcub1ÚcudÚcud1ÚcufÚcuf1ÚcupÚcuuÚcuu1Údch1ÚdchÚelÚhpaÚichÚich1ÚindÚpadÚriÚrmkxÚsmkxr   )F)rR   ÚstrrS   zLiteral[False]rK   Úbytes)rR   rq   rS   ÚboolrK   zbytes | None)/Úsuperr:   r3   Úpollobr@   Úinput_fdrD   ÚPOLLINÚinput_bufferÚinput_buffer_posr   Ú	setuptermÚ	output_fdÚtermr   Ú_belÚ_civisÚ_clearÚ_cnormÚ_cubÚ_cub1Ú_cudÚ_cud1Ú_cufÚ_cuf1Ú_cupÚ_cuuÚ_cuu1Ú_dch1Ú_dchÚ_elÚ_hpaÚ_ichÚ_ich1Ú_indÚ_padÚ_riÚ_rmkxÚ_smkxÚ_UnixConsole__setup_movementr   ÚencodingÚevent_queueÚcursor_visibleÚsignalÚSIGCONTÚ_sigcont_handler)r9   Úf_inÚf_outr|   r–   rT   Ú	__class__s         €r   r:   ÚUnixConsole.__init__…   s  ø€ ô  	‰Ñ˜ dÔ5ä“fˆŒØ�‰×Ñ˜TŸ]™]¬F¯M©MÔ:ØˆÔØ !ˆÔÜ×Ò˜Ÿ  t§~¡~Ô6ØŒ	ä	ÝPó 
ØPä	ÛEó 
ØEö	ñ ˜uÓ%ˆŒ	Ù  °4Ñ8ˆŒÙ  Ó)ˆŒÙ  °4Ñ8ˆŒÙ˜u¨tÑ4ˆŒ	Ù °Ñ6ˆŒ
Ù˜u¨tÑ4ˆŒ	Ù °Ñ6ˆŒ
Ù˜u¨tÑ4ˆŒ	Ù °Ñ6ˆŒ
Ù˜uÓ%ˆŒ	Ù˜u¨tÑ4ˆŒ	Ù °Ñ6ˆŒ
Ù °Ñ6ˆŒ
Ù˜u¨tÑ4ˆŒ	Ù˜dÓ#ˆŒÙ˜u¨tÑ4ˆŒ	Ù˜u¨tÑ4ˆŒ	Ù °Ñ6ˆŒ
Ù˜u¨tÑ4ˆŒ	Ù˜u¨tÑ4ˆŒ	Ù˜d¨TÑ2ˆŒÙ °Ñ6ˆŒ
Ù °Ñ6ˆŒ
à×ÑÔä% d§m¡m°T·]±]ÓCˆÔØˆÔä�Š”f—n‘n d×&;Ñ&;Õ<r   c                óD   • U R                  5         U R                  5         g r   )ÚrestoreÚprepare©r9   ÚsignumÚframes      r   r›   ÚUnixConsole._sigcont_handlerÌ   s   € Ø�‰ŒØ�‰�r   c                ó~   • [        U R                  =(       a"    U R                  [        U R                  5      :  5      $ r   )rs   rx   ry   Úlenr8   s    r   Úmore_in_bufferÚUnixConsole.more_in_bufferÐ   s6   € ÜØ×Ñ÷ ?Ø×%Ñ%¬¨D×,=Ñ,=Ó(>Ñ>ó
ð 	
r   c                óf  • U R                  5       (       d&  [        R                  " U R                  S5      U l        U R                  U R
                  U R
                  U-    nU =R
                  [        U5      -  sl        U R
                  [        U R                  5      :¼  a  SU l        SU l        U$ )Né'  r   r   )r©   ÚosÚreadrv   rx   ry   r¨   )r9   ÚnÚrets      r   Ú__readÚUnixConsole.__readÖ   s�   € Ø×"Ñ"×$Ñ$Ü "§¢¨¯©°uÓ =ˆDÔà×Ñ × 5Ñ 5¸×8MÑ8MÐPQÑ8QÐRˆØ×Ò¤ S£Ñ)ÕØ× Ñ ¤C¨×(9Ñ(9Ó$:Ó:Ø #ˆDÔØ$%ˆDÔ!Øˆ
r   c                ó   • Xl         g)zb
Change the encoding used for I/O operations.

Parameters:
- encoding (str): New encoding to use.
N)r–   )r9   r–   s     r   Úchange_encodingÚUnixConsole.change_encodingâ   s	   € ð !�r   c                ó	  • Uu  p4U R                   (       dï  [        U R                  5      [        [        U5      U R                  5      :  a¸  U R                  5         U R                  S[        U R                  5      S-
  5        U R                  S5        S[        U R                  5      4U l        U R                  R                  S5        [        U R                  5      [        [        U5      U R                  5      :  a  M¸  Oa[        U R                  5      [        U5      :  a?  U R                  R                  S5        [        U R                  5      [        U5      :  a  M?  [        U5      U R                  :”  a  SU l         U R                  U l        U R                  u  pVU R                  =pxU R                  n	XH:  a  UnOPXHU	-   :¼  a  XI-
  S-   nO@US:”  a:  [        U5      X‰-   :  a)  [        [        U5      U	-
  S5      nUR                  S5        U R                  XwU	-    n
XX‰-    nXx:”  aš  U R                  (       a‰  U R                  5         U R                  U R                  SS5        SU4U l        [!        Xx-
  5       HA  nU R                  U R                  5        U
R#                  S5        U
R%                  SS5        MC     O¹Xx:  a´  U R&                  (       a£  U R                  5         U R                  U R                  U R                  S-
  S5        SXpR                  -   S-
  4U l        [!        X‡-
  5       H@  nU R                  U R&                  5        U
R#                  S5        U
R                  S5        MB     X€l        [)        [!        XˆU	-   5      X«5       H   u  nnnXï:w  d  M  U R+                  XÞXõ5        M"     [        U5      nU[        U
5      :  a\  U R                  5         U R                  SU5        SU4U l        U R                  U R,                  5        US-  nU[        U
5      :  a  M\  U R/                  5         UR1                  5       U l        U R3                  X45        U R5                  5         g)z£
Refresh the console screen.

Parameters:
- screen (list): List of strings representing the screen contents.
- c_xy (tuple): Cursor position (x, y) on the screen.
r   r   Ú
Ú éÿÿÿÿN)Ú_UnixConsole__gone_tallr¨   ÚscreenÚminÚheightÚ_UnixConsole__hide_cursorÚ_UnixConsole__moveÚ_UnixConsole__writeÚposxyÚappendÚ_UnixConsole__move_tallÚ_UnixConsole__offsetÚmaxr’   Ú_UnixConsole__write_coder‡   ÚrangeÚpopÚinsertr�   ÚzipÚ _UnixConsole__write_changed_linerŒ   Ú_UnixConsole__show_cursorÚcopyÚmove_cursorÚflushoutput)r9   r»   Úc_xyÚcxÚcyÚpxÚpyÚ
old_offsetÚoffsetr½   ÚoldscrÚnewscrÚiÚyÚoldlineÚnewlines                   r   ÚrefreshÚUnixConsole.refreshë   s�  € ð ‰ˆØ××Ü�d—k‘kÓ"¤S¬¨V«°d·k±kÓ%BÓBØ×"Ñ"Ô$Ø—‘˜Aœs 4§;¡;Ó/°!Ñ3Ô4Ø—‘˜TÔ"Ø¤ D§K¡KÓ 0Ð0�”
Ø—‘×"Ñ" 2Ô&ô �d—k‘kÓ"¤S¬¨V«°d·k±kÓ%BÕBøô �d—k‘kÓ"¤S¨£[Ó0Ø—‘×"Ñ" 2Ô&ô �d—k‘kÓ"¤S¨£[Õ0ô ˆv‹;˜Ÿ™Ó$Ø ˆDÔØ×*Ñ*ˆDŒKà—‘‰ˆØ"Ÿm™mÐ+ˆ
Ø—‘ˆð ‹;Ø‰FØ˜F‘?Ó"Ø‘[ 1‘_‰FØ�a‹ZœC ›K¨&©/Ó9Üœ˜V› vÑ-¨qÓ1ˆFØ�M‰M˜"Ôà—‘˜Z°vÑ*=Ð>ˆØ ¡Ð1ˆð Ó 4§8§8Ø×ÑÔ Ø×Ñ˜dŸi™i¨¨AÔ.Ø˜J˜ˆDŒJÜ˜:Ñ.Ö/�Ø×!Ñ! $§(¡(Ô+Ø—
‘
˜2”Ø—‘˜a Ö$ò 0ð Ó  T§Y§YØ×ÑÔ Ø×Ñ˜dŸi™i¨¯©°q©¸!Ô<Ø˜J¯©Ñ4°qÑ8Ð8ˆDŒJÜ˜6Ñ.Ö/�Ø×!Ñ! $§)¡)Ô,Ø—
‘
˜1”Ø—‘˜bÖ!ñ 0ð
 Œô ”�v¨™Ó/°Ö@ñ	
ØØØàÕ!Ø×)Ñ)¨!°gÖBñ Aô �‹KˆØ”#�f“+‹oØ×ÑÔ Ø�K‰K˜˜1ÔØ˜A˜ˆDŒJØ×Ñ˜dŸh™hÔ'Ø�‰FˆAð ”#�f“+�oð 	×ÑÔà—k‘k“mˆŒØ×Ñ˜Ô Ø×ÑÕr   c                óø   • X R                   :  d  X R                   U R                  -   :¼  a&  U R                  R                  [	        SS5      5        gU R                  X5        X4U l        U R                  5         g)zy
Move the cursor to the specified position on the screen.

Parameters:
- x (int): X coordinate.
- y (int): Y coordinate.
ÚscrollN)rÄ   r½   r—   rÉ   r   r¿   rÁ   rÏ   ©r9   ÚxrÚ   s      r   rÎ   ÚUnixConsole.move_cursor>  s\   € ð �}‰}Ó §]¡]°T·[±[Ñ%@Ó @Ø×Ñ×#Ñ#¤E¨(°DÓ$9Õ:à�K‰K˜ÔØ˜ˆDŒJØ×ÑÕr   c                óð  • [        U R                  5      U l        U R                  R                  5       nU=R                  [
        R                  [
        R                  -  [
        R                  -  ) -  sl        U=R                  [
        R                  ) -  sl	        U=R                  [
        R                  [
        R                  -  ) -  sl        U=R                  [
        R                  -  sl        U=R                  [
        R                  -  sl        U=R                   [
        R"                  [
        R$                  -  [
        R&                  -  ) -  sl        U=R                   [
        R(                  -  sl        SUR*                  [
        R,                  '   SUR*                  [
        R.                  '   [1        U R                  [
        R2                  U5        [4        R6                  " 5       S:X  a;  [8        R:                  " S5      S:X  a!  [8        R<                  " U R>                  S5        / U l         U RC                  5       u  U l"        U l#        / U l$        SU l%        SU l&        U RN                  U l(        SU l)        U RU                  U RV                  5         [X        RX                  " [X        RZ                  U R\                  5      U l/        U Rc                  5         g! [`         a     Nf = f)	z2
Prepare the console for input/output operations.
r   r   ÚDarwinÚTERM_PROGRAMÚApple_Terminals   [?7l©r   r   N)2r	   rv   Ú_UnixConsole__svtermstaterÍ   Úiflagr&   ÚINPCKÚISTRIPÚIXONÚoflagÚOPOSTÚcflagÚCSIZEÚPARENBÚCS8ÚBRKINTÚlflagÚICANONÚECHOÚIEXTENÚISIGÚccÚVMINÚVTIMEr
   Ú	TCSADRAINÚplatformÚsystemr­   ÚgetenvÚwriter{   r»   Úgetheightwidthr½   ÚwidthÚ_UnixConsole__bufferrÁ   rº   Ú_UnixConsole__move_shortr¿   rÄ   Ú_UnixConsole__maybe_write_coder”   r™   ÚSIGWINCHÚ_UnixConsole__sigwinchÚold_sigwinchÚ
ValueErrorÚ$_UnixConsole__enable_bracketed_paste)r9   Úraws     r   r¢   ÚUnixConsole.prepareM  sê  € ô ' t§}¡}Ó5ˆÔØ× Ñ ×%Ñ%Ó'ˆØ�	Š	”w—}‘}¤w§~¡~Ñ5¼¿¹ÑDÐEÑE�	Ø�	Š	”w—}‘}Ð%Ñ%�	Ø�	Š	”w—}‘}¤w§~¡~Ñ5Ð6Ñ6�	Ø�	Š	”W—[‘[Ñ �	Ø�	Š	”W—^‘^Ñ#�	Ø�	Š	”w—~‘~¬¯©Ñ4´w·~±~ÑEÐFÑF�	Ø�	Š	”W—\‘\Ñ!�	Ø ˆ�‰Œw�|‰|ÑØ !ˆ�‰Œw�}‰}ÑÜ�$—-‘-¤×!2Ñ!2°CÔ8ô �?Š?Ó Ó(¬R¯YªY°~Ó-FÐJZÓ-ZÜ�HŠH�T—^‘^ [Ô1àˆŒØ"&×"5Ñ"5Ó"7ÑˆŒ�T”ZàˆŒàˆŒ
ØˆÔØ×'Ñ'ˆŒØˆŒà×Ñ §
¡
Ô+ð	Ü &§¢¬f¯o©o¸t¿¹Ó OˆDÔð 	×%Ñ%Õ'øô ó 	Ùð	ús   Ê#4K( Ë(
K5Ë4K5c                ó  • U R                  5         U R                  U R                  5        U R                  5         [	        U R
                  [        R                  U R                  5        [        R                  " 5       S:X  a;  [        R                  " S5      S:X  a!  [        R                  " U R                  S5        [        U S5      (       a2  [         R                   " [         R"                  U R$                  5        U ?gg)z*
Restore the console to the default state
rå   ræ   rç   s   [?7hr	  N)Ú%_UnixConsole__disable_bracketed_paster  r“   rÏ   r
   rv   r&   rý   ré   rþ   rÿ   r­   r   r  r{   r%   r™   r  r	  r8   s    r   r¡   ÚUnixConsole.restoreu  s¬   € ð 	×&Ñ&Ô(Ø×Ñ §
¡
Ô+Ø×ÑÔÜ�$—-‘-¤×!2Ñ!2°D×4FÑ4FÔGä�?Š?Ó Ó(¬R¯YªY°~Ó-FÐJZÓ-ZÜ�HŠH�T—^‘^ [Ô1ä�4˜×(Ñ(Ü�MŠMœ&Ÿ/™/¨4×+<Ñ+<Ô=ØÑ!ð )r   c                óN   • [        SUS9  U R                  R                  U5        g)z.
Push a character to the console event queue.
zpush char {char!r})ÚcharN)r   r—   Úpush)r9   r  s     r   Ú	push_charÚUnixConsole.push_char…  s#   € ô 	Ð"¨Ò.Ø×Ñ×Ñ˜dÕ#r   c                ó  • U(       d  U R                  SS9(       d  gU R                  R                  5       (       aD    U R                  U R	                  S5      5         U R                  R                  5       (       a  MD  U R                  R                  5       $ ! [
         ah  nUR                  [        R                  :X  aD  U R                  R                  5       (       d  U R                  R                  5       s SnA$  SnAMÊ  e SnAff = f)z­
Get an event from the console event queue.

Parameters:
- block (bool): Whether to block until an event is available.

Returns:
- Event: Event object from the event queue.
r   )rE   Nr   )	Úwaitr—   Úemptyr  Ú_UnixConsole__readÚOSErrorÚerrnoÚEINTRÚget)r9   ÚblockÚerrs      r   Ú	get_eventÚUnixConsole.get_eventŒ  sÍ   € ö ˜TŸY™Y¨q˜YÖ1Øà×Ñ×$Ñ$×&Ñ&ØðØ—N‘N 4§;¡;¨q£>Ô2ð ð ×Ñ×$Ñ$×&Ó&ð ×Ñ×#Ñ#Ó%Ð%øô ó Ø—y‘y¤E§K¡KÓ/Ø#×/Ñ/×5Ñ5×7Ñ7Ø#'×#3Ñ#3×#7Ñ#7Ó#9Õ9å$àûðús$   ¾ B Â
DÂ$ADÃ:DÄDÄDc                óÄ   • U R                   R                  5       (       + =(       d;    U R                  5       =(       d$    [        U R                  R                  U5      5      $ )z!
Wait for events on the console.
)r—   r  r©   rs   ru   r3   )r9   rE   s     r   r  ÚUnixConsole.wait©  sK   € ð
 × Ñ ×&Ñ&Ó(Ô(÷ /Ø×"Ñ"Ó$÷/ä�D—K‘K×$Ñ$ WÓ-Ó.ð	
r   c                óT   • U(       a  U R                  5         gU R                  5         g)zS
Set the visibility of the cursor.

Parameters:
- visible (bool): Visibility flag.
N)rÌ   r¾   )r9   Úvisibles     r   Úset_cursor_visÚUnixConsole.set_cursor_vis³  s   € ö Ø×ÑÕ à×ÑÕ r   c                óV  •  [        [        R                  S   5      [        [        R                  S   5      4$ ! [        [        [
        4 aY     [        U R                  [        S5      nO! [         a      gf = f[        R                  " SU5      SS u  p#U(       d   gX#4s $ f = f)ú^
Get the height and width of the console.

Returns:
- tuple: Height and width of the console.
ÚLINESÚCOLUMNSs           ©é   éP   Úhhhhr   é   )Úintr­   ÚenvironÚKeyErrorÚ	TypeErrorr
  r   rv   r"   r  ÚstructÚunpack)r9   Úsizer½   r  s       r   r  ÚUnixConsole.getheightwidthÁ  s”   € ð
%Üœ2Ÿ:™: gÑ.Ó/´´R·Z±ZÀ	Ñ5JÓ1KÐKÐKøÜœi¬Ð4ó %ð"Ü  §¡´
¸KÓH‘DøÜó "Ú!ð"úä &§¢¨f°dÓ ;¸A¸aÐ @‘�ÞÙ!Ø�}Ò$ð%ús9   ‚7: ºB(ÁA,Á+B(Á,
A:Á6B(Á9A:Á:&B(Â"B(Â'B(c                óª   •  [        [        R                  S   5      [        [        R                  S   5      4$ ! [        [        [
        4 a     gf = f)r)  r*  r+  r,  )r1  r­   r2  r3  r4  r
  r8   s    r   r  r8  Ö  sG   € ðÜœ2Ÿ:™: gÑ.Ó/´´R·Z±ZÀ	Ñ5JÓ1KÐKÐKøÜœi¬Ð4ó Ùðús   ‚7: ºAÁAc                ób   • [         R                  " U R                  [         R                  5        g)z+
Discard any pending input on the console.
N)r&   Útcflushrv   ÚTCIFLUSHr8   s    r   ÚforgetinputÚUnixConsole.forgetinputâ  s   € ô 	�Š˜Ÿ™¤w×'7Ñ'7Õ8r   c                óö   • U R                    HZ  u  pU(       a  U R                  U5        M  [        R                  " U R                  UR                  U R                  S5      5        M\     U R                   SS2	 g)z
Flush the output buffer.
ÚreplaceN)r  Ú_UnixConsole__tputsr­   r  r{   Úencoder–   )r9   ÚtextÚiscodes      r   rÏ   ÚUnixConsole.flushoutputè  sR   € ð !ŸMœM‰LˆDÞØ—‘˜TÖ"ä—’˜Ÿ™¨¯©°T·]±]ÀIÓ)NÖOñ	 *ð
 �M‰Mš!Ñr   c                óV  • [        U R                  5      S-
  nUS:¼  a5  U R                  U   (       d!  US-  nUS:¼  a  U R                  U   (       d  M!  U R                  S[        XR                  U R
                  -   S-
  5      5        U R                  S5        U R                  5         g)z8
Finish console operations and flush the output buffer.
r   r   z
N)r¨   r»   r¿   r¼   r½   rÄ   rÀ   rÏ   )r9   rÚ   s     r   ÚfinishÚUnixConsole.finishó  sƒ   € ô �—‘Ó˜qÑ ˆØ�1‹f˜TŸ[™[¨Ÿ^Ø�‰FˆAð �1‹f˜TŸ[™[¨Ÿ^™^à�‰�A”s˜1Ÿk™k¨D¯M©MÑ9¸AÑ=Ó>Ô?Ø�‰�VÔØ×ÑÕr   c                óZ   • U R                  U R                  5        U R                  5         g)z
Emit a beep sound.
N)r  r}   rÏ   r8   s    r   ÚbeepÚUnixConsole.beepþ  s"   € ð 	×Ñ §	¡	Ô*Ø×ÑÕr   c                óX  • [        SSS5      nU R                  R                  5       (       dy  U R                  R                  5       nU=R                  UR                  -  sl        U=R
                  UR
                  -  sl        U R                  R                  5       (       d  My  [        R                  " S[        U R                  [        S5      5      S   nU R                  U5      n[        X@R                  S5      nU=R                  U-  sl        U=R
                  U-  sl        U$ )úi
Get pending events from the console event queue.

Returns:
- Event: Pending event from the event queue.
Úkeyr¸   r   rÙ   s       r   r@  )r   r—   r  r  Údatar  r5  r6  r   rv   r!   r  rq   r–   ©r9   rH   Úe2Úamountr  rO  s         r   Ú
getpendingÚUnixConsole.getpending  s×   € ô �e˜R Ó%ˆAà×&Ñ&×,Ñ,×.Ñ.Ø×%Ñ%×)Ñ)Ó+�Ø—’˜"Ÿ'™'Ñ!•Ø—’˜Ÿ™‘•ð ×&Ñ&×,Ñ,×.Ó.ô
 —]’] 3¬¨d¯m©m¼XÀ{Ó(SÓTÐUVÑWˆFØ—+‘+˜fÓ%ˆCÜ�sŸM™M¨9Ó5ˆDØ�FŠF�d‰N�FØ�EŠE�S‰L�EØˆHr   c                óö  • [        SSS5      nU R                  R                  5       (       dy  U R                  R                  5       nU=R                  UR                  -  sl        U=R
                  UR
                  -  sl        U R                  R                  5       (       d  My  SnU R                  U5      n[        X@R                  S5      nU=R                  U-  sl        U=R
                  U-  sl        U$ )rM  rN  r¸   r   r¬   r@  )	r   r—   r  r  rO  r  r  rq   r–   rP  s         r   rS  rT    s¹   € ô �e˜R Ó%ˆAà×&Ñ&×,Ñ,×.Ñ.Ø×%Ñ%×)Ñ)Ó+�Ø—’˜"Ÿ'™'Ñ!•Ø—’˜Ÿ™‘•ð ×&Ñ&×,Ñ,×.Ó.ð
 ˆFØ—+‘+˜fÓ%ˆCÜ�sŸM™M¨9Ó5ˆDØ�FŠF�d‰N�FØ�EŠE�S‰L�EØˆHr   c                ó†   • U R                  U R                  5        SU l        U R                  U l        SU l        / U l        g)z
Clear the console screen.
r   rè   N)rÆ   r   rº   rÃ   r¿   rÁ   r»   r8   s    r   r[   ÚUnixConsole.clear3  s9   € ð 	×Ñ˜$Ÿ+™+Ô&ØˆÔØ×&Ñ&ˆŒØˆŒ
Øˆ�r   c                óp   •  SS K nUR                  5       (       a  UR                  $ g ! [         a     g f = f©Nr   )ÚposixÚImportErrorÚ_is_inputhook_installedÚ
_inputhook)r9   rZ  s     r   Ú
input_hookÚUnixConsole.input_hook=  s@   € ð	Ûð ×(Ñ(×*Ñ*Ø×#Ñ#Ð#ð +øô ó 	Ùð	ús   ‚( ¨
5´5c                óF   • [         R                  " U R                  S5        g )Ns   [?2004h©r­   r  r{   r8   s    r   Ú__enable_bracketed_pasteÚ$UnixConsole.__enable_bracketed_pasteF  ó   € Ü
�Š�—‘ Õ0r   c                óF   • [         R                  " U R                  S5        g )Ns   [?2004lra  r8   s    r   Ú__disable_bracketed_pasteÚ%UnixConsole.__disable_bracketed_pasteI  rd  r   c                ó|  •  U R                  (       a#  U R                  (       a  U R
                  U l        O?U R                  (       a#  U R                  (       a  U R                  U l        O[        S5      eU R                  (       a#  U R                  (       a  U R                  U l        O?U R                  (       a#  U R                  (       a  U R                   U l        O[        S5      eU R"                  (       a  U R"                  U l        O?U R&                  (       a'  [(        R*                  " U R&                  S5      U l        OSU l        U R,                  (       a  U R,                  U l        O?U R0                  (       a'  [(        R*                  " U R0                  S5      U l        OSU l        U R2                  U l        g)zC
Set up the movement functions based on the terminal capabilities.
z"insufficient terminal (horizontal)z insufficient terminal (vertical)r   N)r�   Ú_UnixConsole__move_x_hpaÚ_UnixConsole__move_xr�   r…   Ú_UnixConsole__move_x_cub_cufr‚   r†   Ú_UnixConsole__move_x_cub1_cuf1ÚRuntimeErrorrˆ   rƒ   Ú_UnixConsole__move_y_cuu_cudÚ_UnixConsole__move_yr‰   r„   Ú_UnixConsole__move_y_cuu1_cud1rŠ   rf   r‹   r   Útparmr�   rk   rŽ   r  r¿   r8   s    r   Ú__setup_movementÚUnixConsole.__setup_movementL  s   € ð à�Y�Y˜4Ÿ9Ÿ9Ø ×1Ñ1ˆD�MØ�Z�Z˜DŸJŸJØ ×3Ñ3ˆD�MäÐCÓDÐDà�9�9˜ŸŸØ ×1Ñ1ˆD�MØ�Z�Z˜DŸJŸJØ ×3Ñ3ˆD�MäÐAÓBÐBà�:�:ØŸ
™
ˆD�IØ�Y�YÜŸš T§Y¡Y°Ó2ˆD�IàˆDŒIà�:�:ØŸ
™
ˆD�IØ�Y�YÜŸš T§Y¡Y°Ó2ˆD�IàˆDŒIà×'Ñ'ˆ�r   c                ó¨  • [        [        U5      [        U5      5      nSnSnSnSn	U H  n
X”:¼  a    OU	[        U
5      -  n	US-  nM     Xu:  a@  X&   X6   :X  a6  X6   S:w  a.  U[        X6   5      -  nUS-  nXu:  a  X&   X6   :X  a
  X6   S:w  a  M.  X&S  X6S-   S  :X  a¢  U R                  (       a‘  XR                  S   :X  a&  XpR                  S   :”  a  X(U X8S-   US-    :X  a  UnUn[        X6   5      nU R	                  Xq5        U R                  U R                  5        U R                  X6   5        X{-   U4U l        GOüXu:  aj  X&S-   S  X6S-   S  :X  aZ  [        X&   5      [        X6   5      :X  a>  [        X6   5      nU R	                  Xq5        U R                  X6   5        X{-   U4U l        GO�U R                  (       Ga  U R                  (       añ  [        U5      U R                  :X  aØ  U[        U5      S-
  :  aÆ  X6S-   S X&S :X  a¹  U R                  5         U R	                  U R                  S-
  U5        U R                  S-
  U4U l        U R                  U R                  5        [        X6   5      nU R	                  Xq5        U R                  U R                  5        U R                  X6   5        US-   U4U l        OyU R                  5         U R	                  Xq5        [        U5      [        U5      :”  a  U R                  U R                  5        U R                  X6S  5        [        U5      U4U l        SU;   a  U R                  SU5        g g )Nr   r   Úr0  r¹   éþÿÿÿ)r¼   r   rk   rÁ   r¿   rÆ   rÀ   rf   r  r¾   rŒ   rÎ   )r9   rÚ   rÛ   rÜ   Úpx_coordÚminlenÚx_posÚx_coordÚpx_posÚjÚcÚcharacter_widths               r   Ú__write_changed_lineÚ UnixConsole.__write_changed_linep  s  € ô
 ”T˜'“]¤D¨£MÓ2ˆØˆØˆàˆØˆÛˆAØ‹}ÙØ”�a“‰LˆAØ�a‰KŠFñ	 ð ÓØ‘ '¡.Ó0Ø‘ &Ó(à”t˜G™NÓ+Ñ+ˆGØ�Q‰JˆEð ÓØ‘ '¡.Ó0Ø‘ &Õ(ð �6ˆ?˜g¨a¡i kÐ2Ó2°t·y·yà—Z‘Z ‘]Ó"ØŸj™j¨™mÓ+Ø 5Ð)¨W¸a±ZÀ%È!Á)Ð-LÓLà�Ø"�Ü" 7¡>Ó2ˆOØ�K‰K˜Ô#Ø×Ñ˜dŸi™iÔ(Ø�L‰L˜™Ô(Ø Ñ2°AÐ5ˆDŽJð ÓØ ™	˜Ð$¨¸±	°Ð(<Ó<Ü�W‘^Ó$¬¨W©^Ó(<Ó<ä" 7¡>Ó2ˆOØ�K‰K˜Ô#Ø�L‰L˜™Ô(Ø Ñ2°AÐ5ˆDŽJð �I�IˆIØ—	—	Ü�W“ §¡Ó+Øœ$˜w›-¨!Ñ+Ó+Ø ™	 BÐ'¨7¸Ð+<Ó<à×ÑÔ Ø�K‰K˜Ÿ
™
 Q™¨Ô*ØŸ™ a™¨Ð*ˆDŒJØ×Ñ˜dŸi™iÔ(ä" 7¡>Ó2ˆOØ�K‰K˜Ô#Ø×Ñ˜dŸi™iÔ(Ø�L‰L˜™Ô(Ø(¨1Ñ,¨aÐ/ˆD�Jð ×ÑÔ Ø�K‰K˜Ô#Ü�G‹}œt G›}Ó,Ø×!Ñ! $§(¡(Ô+Ø�L‰L˜ ˜Ô)Ü˜g›¨Ð)ˆDŒJà�WÓð ×Ñ˜Q Õ"ð	 r   c                ó>   • U R                   R                  US45        g rY  )r  rÂ   )r9   rC  s     r   Ú__writeÚUnixConsole.__writeÇ  s   € Ø�‰×Ñ˜d A˜YÕ'r   c                óh   • U R                   R                  [        R                  " U/UQ76 S45        g ©Nr   )r  rÂ   r   rq  ©r9   ÚfmtÚargss      r   Ú__write_codeÚUnixConsole.__write_codeÊ  s'   € Ø�‰×ÑœfŸlšl¨3Ð6°Ò6¸Ð:Õ;r   c                ó:   • U(       a  U R                   " U/UQ76   g g r   )rÆ   r†  s      r   Ú__maybe_write_codeÚUnixConsole.__maybe_write_codeÍ  s   € ÞØ×Ò˜cÐ) DÔ)ð r   c                óö   • U R                   c   eU R                  c   eXR                  S   -
  nUS:”  a  U R                  X R                   -  5        g US:  a   U R                  U* U R                  -  5        g g ©Nr   r   )r„   r‰   rÁ   rÆ   ©r9   rÚ   Údys      r   Ú__move_y_cuu1_cud1ÚUnixConsole.__move_y_cuu1_cud1Ñ  sr   € Ø�z‰zÑ%Ð%Ð%Ø�z‰zÑ%Ð%Ð%Ø—‘˜A‘ÑˆØ�‹6Ø×Ñ˜b§:¡:™oÕ.Ø�!‹VØ×Ñ ˜s d§j¡jÑ0Õ1ð r   c                ó´   • XR                   S   -
  nUS:”  a  U R                  U R                  U5        g US:  a  U R                  U R                  U* 5        g g r�  )rÁ   rÆ   rƒ   rˆ   r�  s      r   Ú__move_y_cuu_cudÚUnixConsole.__move_y_cuu_cudÚ  óO   € Ø—‘˜A‘ÑˆØ�‹6Ø×Ñ˜dŸi™i¨Õ,Ø�!‹VØ×Ñ˜dŸi™i¨"¨Õ-ð r   c                ób   • XR                   S   :w  a  U R                  U R                  U5        g g rY  )rÁ   rÆ   r�   )r9   râ   s     r   Ú__move_x_hpaÚUnixConsole.__move_x_hpaá  s)   € Ø—
‘
˜1‘ÓØ×Ñ˜dŸi™i¨Õ+ð r   c                óø   • U R                   c   eU R                  c   eXR                  S   -
  nUS:”  a  U R                  U R                   U-  5        g US:  a   U R                  U R                  U* -  5        g g rY  )r†   r‚   rÁ   rÆ   ©r9   râ   Údxs      r   Ú__move_x_cub1_cuf1ÚUnixConsole.__move_x_cub1_cuf1å  st   € Ø�z‰zÑ%Ð%Ð%Ø�z‰zÑ%Ð%Ð%Ø—‘˜A‘ÑˆØ�‹6Ø×Ñ˜dŸj™j¨2™oÕ.Ø�!‹VØ×Ñ˜dŸj™j¨R¨CÑ0Õ1ð r   c                ó´   • XR                   S   -
  nUS:”  a  U R                  U R                  U5        g US:  a  U R                  U R                  U* 5        g g rY  )rÁ   rÆ   r…   r�   rœ  s      r   Ú__move_x_cub_cufÚUnixConsole.__move_x_cub_cufî  r—  r   c                óH   • U R                  U5        U R                  U5        g r   )rj  ro  rá   s      r   Ú__move_shortÚUnixConsole.__move_shortõ  s   € Ø�‰�aÔØ�‰�aÕr   c                óÆ   • SX R                   -
  s=::  a  U R                  :  d  O   X R                   -
  5       eU R                  U R                  X R                   -
  U5        g rY  )rÄ   r½   rÆ   r‡   rá   s      r   Ú__move_tallÚUnixConsole.__move_tallù  sI   € Ø�AŸ™Ñ%Õ3¨¯©Õ3ÐF°Q¿¹Ñ5FÓFÐ3Ø×Ñ˜$Ÿ)™) Q¯©Ñ%6¸Õ:r   c                óˆ   • U R                  5       u  U l        U l        U R                  R	                  [        SS 5      5        g )NÚresize)r  r½   r  r—   rÉ   r   r£   s      r   Ú
__sigwinchÚUnixConsole.__sigwinchý  s4   € Ø"&×"5Ñ"5Ó"7ÑˆŒ�T”ZØ×Ñ×Ñ¤ h°Ó 5Õ6r   c                ól   • U R                   (       a#  U R                  U R                  5        SU l         g g rY  )r˜   r  r~   r8   s    r   Ú__hide_cursorÚUnixConsole.__hide_cursor  s*   € Ø××Ø×#Ñ# D§K¡KÔ0Ø"#ˆDÕð r   c                ól   • U R                   (       d#  U R                  U R                  5        SU l         g g r…  )r˜   r  r€   r8   s    r   Ú__show_cursorÚUnixConsole.__show_cursor  s*   € Ø×"×"Ø×#Ñ# D§K¡KÔ0Ø"#ˆDÕð #r   c                ór  • U R                   (       dT  SU R                  S   4U l        U R                  S5        [        U R                  5      SU R
                  -  /-  nXl        g SU R                  4U l        U R                  SU R                  5        U R                  SU R
                  -  /-  nXl        g )Nr   r   ÚÚ )	rº   rÁ   rÀ   r¨   r»   r  rÄ   r¿   r½   )r9   Únss     r   r    ÚUnixConsole.repaint  s�   € Ø××Ø˜DŸJ™J q™MÐ)ˆDŒJØ�L‰L˜ÔÜ�T—[‘[Ó! V¨d¯j©jÑ%8Ð$9Ñ9ˆBØ�Kà˜DŸM™MÐ)ˆDŒJØ�K‰K˜˜4Ÿ=™=Ô)Ø—‘ ¨¯©Ñ 3Ð4Ñ4ˆBØ�Kr   c                ó–  • [         R                  U R                  R                  5      n UR	                  U5      nU(       d"  [
        R                  " U R                  U5        gUR                  5       u  pV[
        R                  " U R                  USU 5        XS n[        UR                  S5      5      nSUR                  S5      ;   a  XpR                  -  nU R                  (       a9  Ub6  X7-  S-  n[
        R                  " U R                  U R                  U-  5        O"[        R                  " [        U5      S-  5        GM   )zÇA Python implementation of the curses tputs function; the
curses one can't really be wrapped in a sane manner.

I have the strong suspicion that this is complexity that
will never do anyone any good.r   Nó   *r0  rC   g     @�@)r2   r  ré   ÚospeedÚsearchr­   r  r{   Úspanr1  Úgroupr½   r‘   ÚtimeÚsleepÚfloat)	r9   r‡  ÚprogÚbpsÚmrâ   rÚ   ÚdelayÚncharss	            r   Ú__tputsÚUnixConsole.__tputs  sî   € ô �l‰l˜4×-Ñ-×4Ñ4Ó5ˆØØ—‘˜CÓ ˆAÞÜ—’˜Ÿ™¨Ô-ØØ—6‘6“8‰DˆAÜ�HŠH�T—^‘^ S¨¨! WÔ-Ø�b�'ˆCÜ˜Ÿ™ ›
“OˆEØ�q—w‘w˜q“zÓ!ØŸ™Ñ$�Ø�y�y˜S™_Ø™+¨Ñ-�Ü—’˜Ÿ™¨¯©°VÑ);Õ<ä—
’
œ5 ›<¨&Ñ0Ô1ò r   )-Ú__bufferÚ__gone_tallÚ__moveÚ__move_xÚ__move_yÚ__offsetÚ__svtermstater}   r~   r   r€   r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   r‹   rŠ   rŒ   r�   rŽ   r�   r�   r‘   r’   r“   r”   r˜   rf   r–   r—   r½   rk   rx   ry   r	  ru   rÁ   r»   r|   r  )r   r   r¸   r¸   )rœ   úIO[bytes] | intr�   rÏ  r|   rq   r–   rq   )rK   rs   )r¯   r1  rK   rr   )r–   rq   rK   ÚNone)r  zint | bytesrK   rÐ  )T)r  rs   rK   zEvent | Noner   )rE   rJ   rK   rs   )rK   rÐ  )râ   r1  rK   rÐ  )2r   r   r   r   r:   r›   r©   r  r´   rÝ   rÎ   r¢   r¡   r  r   r  r&  r"   r  r=  rÏ   rG  rJ  r!   rS  r[   Úpropertyr^  r  r  r•   rË   rÀ   rÆ   r  rp  rn  ri  rl  rk  r  rÃ   r  r¾   rÌ   r    Ú	delayprogrA  r   Ú__classcell__)rž   s   @r   rM   rM   „   s>  ø† ð !"Ø!"ØØðE=àðE=ð ðE=ð ð	E=ð
 ÷E=ð E=òNô
ô	ô!òQòfò&(òP"ô $ö&ö:
ò
!ö ó	%ò*
	ò9ò	ò	òö ó	ò.	ò*ð ñ$ó ð$ô1ô1ò"(òHU#òn(ò<ò*ò2ò.ô,ô2ô.òò;ò7ò$ò
$ò

ð !*÷ 2ò 2r   rM   )r(   r#   r)   r1  rK   rÐ  )2Ú
__future__r   r  r­   ÚrerD   r™   r5  r&   r¾  rþ   Úfcntlr   r¸   r   Úconsoler   r   Úfancy_termiosr	   r
   r   Úunix_eventqueuer   Úutilsr   ÚTYPE_CHECKINGÚtypingr   r   r   rm  r   ÚerrorÚ_errorÚSIGWINCH_EVENTr'   r!   r"   r+   Úpotential_baudratesr2   Ú__annotations__r)   ÚcompilerÒ  r3   ÚAttributeErrorr5   rM   r   r   r   Ú<module>rä     s  ðö, #ã Û 	Û 	Û Û Û Û Û Û Ý å ß #ß /Ý Ý 'Ý ð €ö ß,Ò,á €Hô	�lô 	ð �-‰-˜Ÿ™ Ð	7€à€á�7˜J¨Ó-€Ù�W˜l¨DÓ1€
ô;òÐ ð. €ˆ.Ó Û€DÙ˜h¨Ö-ñ  ð 	Ð
#ð �JŠJÐ7Ó8€	ðØ$Ÿk™k€DÐ
Ó)ô*l
2�'õ l
2øð) ó ÷ñ ð ‚Dð#ús   Ã"C? Ã?DÄD