
    F\htT                       % 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Jr  S SK	r	S SK
JrJrJrJrJrJrJrJrJr  S SK	Jr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 SK	JrJ r J!r!J"r"  Sr&\&(       a  S SK'J(r(  0 SS_SS_SS_SS_SS_SS_SS_S S!_S"S#_S$S%_S&S'_S(S)_S*S+_S,S-_S.S/_S0S1_S2S3_S4S5S6S7S8S9S:S;S<S=S>.
Er)S?\*S@'   SAr+SBr,SCr-SDr.SEr/SFr0SGr1SHr2 " SI SJ\35      r4SK r5 " SL SM\5      r6 " SN SO\5      r7 " SP SQ\5      r8 " SR SS\5      r9 " ST SU\5      r: " SV SW\	R(                  5      r; " SX SY\	R(                  5      r< " SZ S[\	R,                  5      r= " S\ S]\5      r>Sr?S^r@S_rAS`rBSarCSrDS`rESarFS^rGSbrHScrISrJS`rKSarLSdrMSerN\R                  Sf:X  Ga?  \ " SgShSi9rP\!R                  R                  rR\/\RlS        \\RlT        \PR                  rU\\	R*                  " \75      /\UlS        \\UlT        \PR                  rW\\" \5      \" \5      \\" \95      /\WlS        \\WlT        \PR                  rX\\" \5      /\XlS        \\XlT        \PR                  rY\\/\YlS        \\YlT        \PR                  r[\\" \>5      \\" \5      /\[lS        \\[lT        \PR                  r\\\" \5      /\\lS        \\\lT        \PR                  r]\/\]lS        \\]lT        \R" \N5      r^\R" \M5      r_gSj r`\`rR\`rU\`rW\`rX\`rY\`r[\`r\\`r]S r^S r_g!   S SK	J#r J$r!  SkS jr " S S\%5      r" GN= f)l    )annotationsN)deque)	_COORDWORD
SMALL_RECTBOOLHANDLECHARDWORDWCHARSHORT)	StructurePOINTERUnion   )EventConsole)trace)wlen)
EventQueue)GetLastErrorWinDLLwindllWinError)CDLLcdllc                     g)N*    r       ./usr/lib/python3.13/_pyrepl/windows_console.pyr   r   5   s    r    c                  "    \ rS rSrSSS jjrSrg)r   8   Nc                    Xl         X l        g N)errdescr)selfr&   r'   s      r!   __init__WinError.__init__9   s    HJr    )r'   r&   r%   )r&   
int | Noner'   z
str | NonereturnNone)__name__
__module____qualname____firstlineno__r)   __static_attributes__r   r    r!   r   r   8   s    	 	r    r   F)IO#   end$   home%   left&   up'   right(   down.   deletep   f1q   f2r   f3s   f4t   f5u   f6v   f7w   f8x   f9y   f10f11f12f13f14f15f16f17f18f19f20)
z   {   |   }   ~                  zdict[int, str]VK_MAPz[Kz[{}Dz[{}Cz[{}Az[{}Bz[H[J      c                      \ rS rSrSrg)_errorrD   r   N)r.   r/   r0   r1   r2   r   r    r!   rn   rn   q   s    r    rn   c                 X     SS K n U R                  5       $ ! [        [        4 a     gf = f)Nr   F)nt_supports_virtual_terminalImportErrorAttributeError)rp   s    r!   _supports_vtrt   t   s0    ,,..( s    ))c                    ^  \ rS rSr    S#       S$U 4S jjjrS%S jr\S 5       r          S&S jr S'         S(S jjr	S r
S rS	 rS
 rS)S jrS)S jrS*S jr\S+S j5       rS)S jrS)S jrS)S jrS,S jrS,S jrS-S jrS+S jrS.S jrS/S0S jjrS/S1S jjrS2S jrS)S jrS)S jrS)S jrS)S jr S)S jr!S3S jr"S4S  jr#S)S! jr$S"r%U =r&$ )5WindowsConsolera   c                  > [         TU ]  XX45        [        5       U l        U R                  (       a  [	        S5        [        5       n[        [        U5        [	        SUR                  S 35        UR                  U l	        [        [        [        [        -  [        -  5        / U l        SU l        SU l        SU l        ['        U5      U l         [*        R,                  " U R.                  S5      U l        g ! [2         a
    S U l         g f = f)Nz!console supports virtual terminalzsaved original input mode 0xxP      r   w)superr)   rt   _WindowsConsole__vt_supportr   r   GetConsoleModeInHandlevalue$_WindowsConsole__original_input_modeSetConsoleMode	OutHandleENABLE_WRAP_AT_EOL_OUTPUTENABLE_PROCESSED_OUTPUT"ENABLE_VIRTUAL_TERMINAL_PROCESSINGscreenwidthheight_WindowsConsole__offsetr   event_queueio_WindowsConsoleIO	output_fdout
ValueError)r(   f_inf_outtermencodingoriginal_input_mode	__class__s         r!   r)   WindowsConsole.__init__|   s     	d5(N56 $gx!45,-@-F-Fq,IJK%8%>%>"%%&01	
 "$
%h/	++DNNC@DH 	DH	s   &C7 7D
Dc                   Uu  p4[        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  U R                  u  pVU R                  =pxU R                  n	XH:  a  UnOXHU	-   :  a  XI-
  S-   nX-
  n
U R                  XR                  5       5        U R                  S   U R                  S   U
-   4U l        U =R                  U
-  sl	        [        U
5       H  nU R                  R                  S5        M      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Xl	        U R	                  5         [        [        XU	-   5      X5       H"  u  nnnUU:w  d  M  U R                  XUU5        M$     [        U5      nU[        U5      :  aA  U R                  SU5        SU4U l        U R!                  5         US-  nU[        U5      :  a  MA  U R#                  5         Xl        U R%                  X45        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)lenr   minr   _hide_cursor_move_relative_WindowsConsole__writeposxyappendr   _scroll_getscrollbacksizerangemaxzip#_WindowsConsole__write_changed_line_erase_to_end_show_cursormove_cursor)r(   r   c_xycxcypxpy
old_offsetoffsetr   scroll_linesioldscrnewscryoldlinenewlines                    r!   refreshWindowsConsole.refresh   sx    $++S[$++!>>3t{{#3a#78LLC,,DJKKr" $++S[$++!>> "mm+
 ;FF?"[1_F!.L
 LL'>'>'@AA

1(DDDJMM\)M<(""2& )aZCK&/9Vv-q1FMM"Zv*=>1
 v/@	
'!))!grB A K#f+o1%ADJ FA	 #f+o 	 r    c                p     SS K nUR                  5       (       a  UR                  $ g ! [         a     g f = f)Nr   )rp   rr   _is_inputhook_installed
_inputhook)r(   rp   s     r!   
input_hookWindowsConsole.input_hook   s>    	 %%''==  (  		s   ( 
55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.  U R                  5         U R                  Xq5        [        U5      [        U5      :  a  U R	                  5         U R                  X6S  5        [        U5      U R                  :X  a"  U R                  SUS-   5        SUS-   4U l        g [        U5      U4U l        SU;   d  XR                  S   :w  d  SU;   a  U R                  SU5        g g )Nr   r   )	r   r   r   r   r   r   r   r   r   )r(   r   r   r   px_coordminlenx_posx_coordpx_posjcs              r!   __write_changed_line#WindowsConsole.__write_changed_line   si    T']DM2A}aLAaKF	  '.0&(tGN++GQJE '.0&(
 	G'=4=( WV_%=DJJ&1q5)AEDJg)DJ AA$6&G:K   A&	 ;Lr    c                ^   [        5       n[        U5      Ul        [        U5      Ul        [        Uc  SOU5      Ul        [        Uc  U R                  5       S   S-
  OU5      Ul        [        5       n[        5       nSUl	        [        [        US Xg5      (       d  [        [        5       5      eg )Nr   r    )r   r   TopBottomLeftgetheightwidthRightr   	CHAR_INFOUnicodeCharScrollConsoleScreenBufferr   r   r   )r(   topbottomr9   r=   scroll_rectdestination_origin	fill_infos           r!   r   WindowsConsole._scroll   s     !l*"6] dl=!,1MD!!$q(u
 $XK	 #	({D*<
 
 <>**
r    c                &    U R                  S5        g )Nz[?25lr   r(   s    r!   r   WindowsConsole._hide_cursor3      [!r    c                &    U R                  S5        g )Nz[?25hr   r   s    r!   r   WindowsConsole._show_cursor6  r   r    c                &    U R                  S5        g )Nz[?12hr   r   s    r!   _enable_blinkingWindowsConsole._enable_blinking9  r   r    c                &    U R                  S5        g )Nz[?12lr   r   s    r!   _disable_blinking WindowsConsole._disable_blinking<  r   r    c                &    U R                  S5        g )Nz[?2004hr   r   s    r!   _enable_bracketed_paste&WindowsConsole._enable_bracketed_paste?      ]#r    c                &    U R                  S5        g )Nz[?2004lr   r   s    r!   _disable_bracketed_paste'WindowsConsole._disable_bracketed_pasteB  r   r    c                   SU;   a)  SR                  U Vs/ s H  o"S:X  a  SOUPM     sn5      nU R                  bP  U R                  R                  UR                  U R                  S5      5        U R                  R                  5         g [        R                  " U R                  UR                  U R                  S5      5        g s  snf )Nr   r   z^Zreplace)joinr   writeencoder   flushosr   )r(   textrx   s      r!   __writeWindowsConsole.__writeE  s    T>77E1KDQ6EFD88HHNN4;;t}}i@AHHNNHHT^^T[[	%JK Fs   C	c                    [        5       n[        [        U5      (       d  [        [	        5       5      eUR
                  R                  UR
                  R                  4$ r%   )CONSOLE_SCREEN_BUFFER_INFOGetConsoleScreenBufferInfor   r   r   dwCursorPositionXYr(   infos     r!   	screen_xyWindowsConsole.screen_xyO  sG    )+))T::<>**$$&&(=(=(?(???r    c                .    U R                  [        5        g r%   )r   ERASE_IN_LINEr   s    r!   r   WindowsConsole._erase_to_endV  s    ]#r    c                   [        S5        / U l        U R                  5       u  U l        U l        SU l        SU l        SU l        U R                  (       a2  [        [        U R                  [        -  5        U R                  5         g g )Npreparer   r   r   )r   r   r   r   r   r   _WindowsConsole__gone_tallr   r}   r   r   r   ENABLE_VIRTUAL_TERMINAL_INPUTr   r   s    r!   r  WindowsConsole.prepareY  sn    i"&"5"5"7TZ
8T%?%?B_%_`((* r    c                |    U R                   (       a+  U R                  5         [        [        U R                  5        g g r%   )r}   r   r   r   r   r   s    r!   restoreWindowsConsole.restoref  s,    ))+8T%?%?@ r    c                   XR                   S   -
  nX R                   S   -
  nUS:  a&  U R                  [        R                  U* 5      5        O*US:  a$  U R                  [        R                  U5      5        US:  a&  U R                  [
        R                  U* 5      5        gUS:  a%  U R                  [        R                  U5      5        gg)z#Moves relative to the current posxyr   r   N)r   r   	MOVE_LEFTformat
MOVE_RIGHTMOVE_UP	MOVE_DOWN)r(   rx   r   dxdys        r!   r   WindowsConsole._move_relativel  s    AA6LL))2#./!VLL**2./6LL,-!VLL))"-. r    c                   US:  d  US:  a  [        SU SU 35      eX R                  :  d  X R                  U R                  -   :  a&  U R                  R	                  [        SS5      5        g U R                  X5        X4U l        g )Nr   zBad cursor position z, scrollr   )r   r   r   r   insertr   r   r   )r(   rx   r   s      r!   r   WindowsConsole.move_cursorz  sv    q5AE3A3b<==}}]]T[[%@ @##E(B$78%DJr    c                T    U(       a  U R                  5         g U R                  5         g r%   )r   r   )r(   visibles     r!   set_cursor_visWindowsConsole.set_cursor_vis  s    r    c                &   [        5       n[        [        U5      (       d  [        [	        5       5      eUR
                  R                  UR
                  R                  -
  S-   UR
                  R                  UR
                  R                  -
  S-   4$ )zlReturn (height, width) where height and width are the height
and width of the terminal window in characters.r   )
r   r   r   r   r   srWindowr   r   r   r   r   s     r!   r   WindowsConsole.getheightwidth  sr     *+))T::<>**MM  4==#4#44q8MM$--"4"44q8
 	
r    c                    [        5       n[        [        U5      (       d  [        [	        5       5      eUR
                  R                  $ r%   )r   r   r   r   r   r"  r   r   s     r!   r   !WindowsConsole._getscrollbacksize  s4    )+))T::<>**}}###r    c                   U(       dD  [        5       n[        [        U5      (       d  [        [	        5       5      eUR
                  (       d  g [        5       n[        5       n[        [        USU5      (       d  [        [	        5       5      eU$ )Nr   )r   GetNumberOfConsoleInputEventsr   r   r   r   INPUT_RECORDReadConsoleInput)r(   blockeventsrecreads        r!   _read_inputWindowsConsole._read_input  sa    WF06BB|~..<<nw#q$77<>**
r    c                   U R                   R                  5       (       Ga0  U R                  U5      nUc  gUR                  [        :X  a  [        SS5      $ UR                  [        :w  d%  UR
                  R                  R                  (       d
  U(       a  M  gUR
                  R                  nUR                  R                  =pEUS:X  a
  [        SSS9$ UR                  S:X  a  S	nGO US
:X  a  [        R                  UR                  5      nU(       am  UR                  [        -  (       a  SU 3nOEUR                  [         -  (       a-  U R                   R#                  [        SUS95        [        SSS9$ [        SUS9$ U(       a  GM  gU R$                  (       aK  UR'                  U R                   R(                  S5       H  nU R                   R+                  U5        M      GM  UR                  [         -  (       aE  UR                  [        -  (       d-  U R                   R#                  [        SUS95        [        SSS9$ [        SUS9$ U R                   R                  5       $ )zReturn an Event instance.  Returns None if |block| is false
and there is no event pending, otherwise waits for the
completion of an event.Nresizer   keyr   )evtdata   	backspace zctrl r   r   )r   emptyr.  	EventTypeWINDOW_BUFFER_SIZE_EVENTr   	KEY_EVENTKeyEventbKeyDownuCharr   wVirtualKeyCoderj   getdwControlKeyStateCTRL_ACTIVE
ALT_ACTIVEr  r}   r   r   push)r(   r*  r,  	key_eventraw_keyr3  chars          r!   	get_eventWindowsConsole.get_event  s   
 $$&&""5)C{}} 88Xr**}}	)1C1C1L1L		**I%OO777Gd{T22**a/!jj!:!:; 22[@ %cUm"44zA((//%c0JK$V<< U55""#NN4+;+;+D+DiPD$$))$/ Q**Z7 !22[@$$++Ee#,FG U88U--##%%r    c                    [        S5      e)z.
Push a character to the console event queue.
z"push_char not supported on WindowsNotImplementedError)r(   rH  s     r!   	push_charWindowsConsole.push_char  s     ""FGGr    c                &    U R                  S5        g )Nr   r   s    r!   beepWindowsConsole.beep  s    Vr    c                L    U R                  [        5        SU l        S/U l        g)zWipe the screenr	  r   N)r   CLEARr   r   r   s    r!   clearWindowsConsole.clear  s    U
dr    c                6   [        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        g)zsMove the cursor to the end of the display and otherwise get
ready for end.  XXX could be merged with restore?  Hmm.r   r   z
N)r   r   r   r   r   r   r   )r(   r   s     r!   finishWindowsConsole.finish  sy     q 1fT[[^FA 1fT[[^^As1kkDMM&AA&EFGVr    c                    g)zFlush all output to the screen (assuming there's some
buffering going on somewhere).

All output on Windows is unbuffered so this is a nopNr   r   s    r!   flushoutputWindowsConsole.flushoutput   s    
 	r    c                R    [        [        5      (       d  [        [        5       5      eg)z0Forget all pending, but not yet processed input.N)FlushConsoleInputBufferr   r   r   r   s    r!   forgetinputWindowsConsole.forgetinput  s    &x00<>** 1r    c                    [        SSS5      $ )zAReturn the characters that have been typed but not yet
processed.r3  r   r    )r   r   s    r!   
getpendingWindowsConsole.getpending  s     UB$$r    c                    [         R                   " 5       n [        R                  " 5       (       a  gU(       a   [         R                   " 5       U-
  US-  :  a  g[         R                  " S5        MZ  )zWait for an event.Ti  Fg{Gz?)timemsvcrtkbhitsleep)r(   timeout
start_times      r!   waitWindowsConsole.wait  sM     YY[
||~~499;3gnDJJt r    c                    [        S5      e)NzNo repaint supportrL  r   s    r!   repaintWindowsConsole.repaint  s    !"677r    )
__gone_tall__offset__original_input_mode__vt_supportr   r   r   r   r   r   )r   r   r   r   )r   IO[bytes] | intr   ru  r   strr   rv  )r   z	list[str]r   tuple[int, int]r,   r-   )
r   intr   rv  r   rv  r   rx  r,   r-   )NN)
r   rx  r   rx  r9   r+   r=   r+   r,   r-   )r,   r-   )r   rv  r,   r-   )r,   rw  )rx   rx  r   rx  r,   r-   )r  boolr,   r-   r,   rx  )T)r*  ry  r,   zINPUT_RECORD | None)r*  ry  r,   zEvent | None)rH  zint | bytesr,   r-   )r,   r   )rj  zfloat | Noner,   ry  )'r.   r/   r0   r1   r)   r   propertyr   r   r   r   r   r   r   r   r   r   r  r   r  r  r   r   r  r   r   r.  rI  rN  rR  rV  rY  r\  r`  rc  rl  ro  r2   __classcell__)r   s   @r!   rv   rv   {   s`    !"!"$$ $ 	$
 $ $LB!H ! !/'/'"/'-0/'<?/'	/'d SW++ #++5+EO+	+&""""$$L @ @$+A/ 	
$;&zH+
%
	8 8r    rv   c                  6    \ rS rSrS\4S\4S\4S\4S\4/rSrg)	r   i!  dwSizer   wAttributesr"  dwMaximumWindowSizer   N)	r.   r/   r0   r1   r   r   r   _fields_r2   r   r    r!   r   r   !  s1    	6	V$		Z 	'Hr    r   c                  $    \ rS rSrS\4S\4/rSrg)CONSOLE_CURSOR_INFOi+  r~  bVisibler   N)r.   r/   r0   r1   r   r   r  r2   r   r    r!   r  r  +  s    	5	THr    r  c                  $    \ rS rSrS\4S\4/rSrg)r   i2  r   
Attributesr   N)r.   r/   r0   r1   r   r   r  r2   r   r    r!   r   r   2  s    		tHr    r   c                  $    \ rS rSrS\4S \4/rSrg)Chari9  r   r   N)r.   r/   r0   r1   r   r
   r  r2   r   r    r!   r  r  9  s    		Hr    r  c                  <    \ rS rSrS\4S\4S\4S\4S\4S\4/rSr	g	)
r=  i@  r>  wRepeatCountr@  wVirtualScanCoder?  rB  r   N)
r.   r/   r0   r1   r   r   r  r   r  r2   r   r    r!   r=  r=  @  s8    	T		D!	T"	$	e$Hr    r=  c                      \ rS rSrS\4/rSrg)WindowsBufferSizeEventiK  r~  r   N)r.   r/   r0   r1   r   r  r2   r   r    r!   r  r  K  s    6"#Hr    r  c                  $    \ rS rSrS\4S\4/rSrg)ConsoleEventiO  r=  r  r   N)r.   r/   r0   r1   r=  r  r  r2   r   r    r!   r  r  O  s    	X	!#9:Hr    r  c                  $    \ rS rSrS\4S\4/rSrg)r(  iV  r:  r   r   N)r.   r/   r0   r1   r   r  r  r2   r   r    r!   r(  r(  V  s    d#g|%<=Hr    r(     r6            i   iiwin32kernel32T)use_last_errorc                     [        S5      e)NzWindows onlyrL  )argskwargss     r!   	_win_onlyr    s    !.11r    rz  )a
__future__r   r   r   sysrf  rg  collectionsr   ctypesctypes.wintypesr   r   r   r   r	   r
   r   r   r   r   r   r   consoler   r   r   utilsr   windows_eventqueuer   r   r   r   r   r   r   OSErrorTYPE_CHECKINGtypingr3   rj   __annotations__r  r  r  r  r  rU  rD  rC  	Exceptionrn   rt   rv   r   r  r   r  r=  r  r  r(  r<  FOCUS_EVENT
MENU_EVENTMOUSE_EVENTr;  ENABLE_PROCESSED_INPUTENABLE_LINE_INPUTENABLE_ECHO_INPUTENABLE_MOUSE_INPUTENABLE_INSERT_MODEr  r   r   r   STD_INPUT_HANDLESTD_OUTPUT_HANDLEplatform	_KERNEL32r  GetStdHandleargtypesrestyper   ScrollConsoleScreenBufferWr   r~   r   ReadConsoleInputWr)  r'  r_  r   r   r  r   r    r!   <module>r     sE  ( # 	 	 
    
 
 
 - , #   *== %& 	& 	$	
 	' 	& 	( 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$  	$!" 	%#$ 








7 B 	

	 
	Y 	b8W b8L ) 	 5 v $V-- $6<< >9 > 	
       &    %) "  <<7z$7I??//L"GL!L!*!E!E12+' *.& ) D D

	*& )-%--N%wu~6N!N--N%uoN!N 22!')>wu~ V#$-$K$K!.4gen-E!*,0!)'??(.x$&*#./I,-H2 L!* )NN $-!'IHs
57 s   !K* *L