ó
    F\h¸  ã                   ó   • S SK r S SKrS SKrSSKJrJr  SSKJr  \ R                  " S5      r\ R                  " S5      r	\
R                  SSS.5      r\R                  S	\
S
\4S j5       rS\
S
\4S jrSS\
S\S
\
4S jjrS\
S
\\\4   4S jrg)é    Né   )Ú
CharBufferÚ
CharWidths)Útracez\x1b\[[ -@]*[A-~]z\x01.*?\x02Ú )ÚÚÚcÚreturnc                 ó^   • [        U 5      S:  a  g[        R                  " U 5      nUS;   a  gg)Né€   r   )ÚNÚNaÚHÚAé   )ÚordÚunicodedataÚeast_asian_width)r
   Úws     Ú$/usr/lib/python3.13/_pyrepl/utils.pyÚ	str_widthr      s/   € ä
ˆ1ƒv�ƒ|ØÜ×$Ò$ QÓ'€AØÐ!Ó!ØØó    Úsc                 óâ   • [        U 5      S:X  a  U S:w  a  [        U 5      $ [        S U  5       5      n[        R	                  U 5      nU R                  S5      nU[        S U 5       5      -
  U-   $ )Nr   Úc              3   ó8   #   • U  H  n[        U5      v •  M     g 7f©N)r   ©Ú.0Úis     r   Ú	<genexpr>Úwlen.<locals>.<genexpr>   s   é € Ð)¢q !”˜1—�¢qùó   ‚c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr   )Úlenr   s     r   r"   r#      s   é € Ð1ª 1œ˜AŸ˜ªùr$   )r&   r   ÚsumÚANSI_ESCAPE_SEQUENCEÚfindallÚcount)r   ÚlengthÚsequenceÚ
ctrl_z_cnts       r   Úwlenr.      se   € Ü
ˆ1ƒv�ƒ{�q˜F“{Ü˜‹|ÐÜÑ)¡qÓ)Ó)€Fä#×+Ñ+¨AÓ.€HØ—‘˜“€JØ”CÑ1©Ó1Ó1Ñ1°JÑ>Ð>r   Úincluding_contentc                 óf   • U(       a  [         R                  SU 5      $ U R                  [        5      $ )zƒReturn `s` with \001 and \002 characters removed.

If `including_content` is True, content between \001 and \002 is also
stripped.
r   )ÚZERO_WIDTH_BRACKETÚsubÚ	translateÚZERO_WIDTH_TRANS)r   r/   s     r   Ú	unbracketr5   !   s*   € ö Ü!×%Ñ% b¨!Ó,Ð,Ø�;‰;Ô'Ó(Ð(r   Úbufferc                 ó8  • / n/ nU (       d  X4$ U  Hð  nUS:X  a$  UR                  U5        UR                  S5        M-  [        U5      S:  a$  UR                  U5        UR                  S5        M`  [        R                  " U5      R	                  S5      (       a;  S[        U5      -  nUR                  U5        UR                  [        U5      5        MÅ  UR                  U5        UR                  [        U5      5        Mò     [        S[        U 5      XS9  X4$ )	a6  Decompose the input buffer into a printable variant.

Returns a tuple of two lists:
- the first list is the input buffer, character by character;
- the second list is the visible width of each character in the input
  buffer.

Examples:
>>> utils.disp_str("a = 9")
(['a', ' ', '=', ' ', '9'], [1, 1, 1, 1, 1])
r   r   r   r   ÚCz\u%04xzdisp_str({buffer}) = {s}, {b})r6   r   Úb)	Úappendr   r   ÚcategoryÚ
startswithr&   r   r   Úrepr)r6   ÚcharsÚchar_widthsr
   s       r   Údisp_strr@   ,   sè   € ð €EØ €KæØÐ!Ð!ãˆØ�‹;Ø�L‰L˜ŒOØ×Ñ˜qÖ!Ü�‹V�c‹\Ø�L‰L˜ŒOØ×Ñ˜qÖ!Ü×!Ò! !Ó$×/Ñ/°×4Ñ4ØœC ›FÑ"ˆAØ�L‰L˜ŒOØ×Ñœs 1›vÖ&à�L‰L˜ŒOØ×Ñœy¨›|Ö,ñ ô 
Ð
)´$°v³,À%ÒWØÐÐr   )F)Úrer   Ú	functoolsÚtypesr   r   r   Úcompiler(   r1   ÚstrÚ	maketransr4   ÚcacheÚintr   r.   Úboolr5   Útupler@   © r   r   Ú<module>rL      s·   ðÛ 	Û Û ç )Ý à—z’zÐ"6Ó7Ð Ø—Z’Z Ó/Ð Ø—=‘=¨"°bÑ!9Ó:Ð ð ‡�ð�ð ˜ó ó ðð?ˆCð ?�Cô ?ñ)�ð )¨ð )¸#õ )ð!�Sð !˜U :¨zÐ#9Ñ:õ !r   