o
    …9jEm  ã                   @   s$  d Z ddlZddlZddlT ejeksJ dƒ‚eehZee	e
hZeehZeehZeeehB ZdZdd„ eD ƒZejfdd	„Zd
d„ Zdd„ Zd-dd„Zejd Zde> d ZdZee fdd„Z!dd„ Z"dd„ Z#dd„ Z$dd„ Z%dd„ Z&dd „ Z'd!d"„ Z(d#d$„ Z)d%d&„ Z*d'd(„ Z+d)d*„ Z,d.d+d,„Z-dS )/zInternal support module for sreé    N)Ú*zSRE module mismatch))éi   i1  )és   i  )éµ   i¼  )iE  i¹  i¾  )i�  iÓ  )i°  iã  )i²  iÐ  )iµ  iõ  )i¸  iÑ  )iº  ið  )iÀ  iÖ  )iÁ  iñ  )iÂ  iÃ  )iÆ  iÕ  )i2  i€  )i4  i�  )i>  i‚  )iA  iƒ  )iB  i„  i…  )iJ  i†  )ic  i‡  )iˆ  iK¦  )ia  i›  )iû  iû  c                    s.   i | ]}|D ]‰ ˆ t ‡ fd d„|D ƒƒ“qqS )c                 3   s   � | ]	}ˆ |kr|V  qd S ©N© )Ú.0Új©Úir   ú"/usr/lib/python3.10/sre_compile.pyÚ	<genexpr>N   s   € z<dictcomp>.<genexpr>)Útuple)r   Útr   r
   r   Ú
<dictcomp>N   s
    ÿÿr   c                 C   s    ||@ r	| | M } | |B | @ S r   r   )ÚflagsÚ	add_flagsÚ	del_flagsÚ
TYPE_FLAGSr   r   r   Ú_combine_flagsQ   s   
r   c                 C   sÐ  | j }t}t}t}t}t}d }	d }
d }|t@ r.|t@ s.|t@ r(t	j
}	t	j}
t}nt	j}	t	j}
|D �]4\}}||v rµ|t@ sF||ƒ ||ƒ q0|t@ rU|t| ƒ ||ƒ q0|	|ƒsb||ƒ ||ƒ q0|
|ƒ}|ss|t| ƒ ||ƒ q0||vr‚|t| ƒ ||ƒ q0|tƒ || ƒ}|dƒ |tu r–|tƒ |f||  D ]
}|tƒ ||ƒ q�|tƒ || ƒ| | |< q0|tu røt||	|
|ƒ\}}|t@ rÏ|t@ rÏ|tƒ n|sÖ|tƒ n|sÝ|tƒ n|tƒ || ƒ}|dƒ t||| ƒ || ƒ| | |< q0|tu �r|t@ �r|tƒ q0|tƒ q0||v �r’|t@ �rt d|f ƒ‚t!|d ƒ�r[|t"u �r.|t#ƒ n|t$ƒ || ƒ}|dƒ ||d ƒ ||d ƒ t%| |d |ƒ |t&ƒ || ƒ| | |< q0|t'ƒ || ƒ}|dƒ ||d ƒ ||d ƒ t%| |d |ƒ || ƒ| | |< |t"u �r�|t(ƒ q0|t)ƒ q0|t*u �rÈ|\}}}}|�r¬|t+ƒ ||d d ƒ t%| |t,|||ƒƒ |�rÇ|t+ƒ ||d d d ƒ q0||v �rÒ||ƒ q0||v �r||ƒ || ƒ}|dƒ |d dk�rï|dƒ n|d  -¡ \}}||k�r t dƒ‚||ƒ t%| |d |ƒ |t&ƒ || ƒ| | |< q0|t.u �r=||ƒ || ƒ}|dƒ t%| ||ƒ |t&ƒ || ƒ| | |< q0|t/u �rm||ƒ |t0@ �rQt1 2||¡}|t@ �r]t3 2||¡}n|t@ �rht4 2||¡}||ƒ q0|t5u �rº||ƒ g }|j }|d D ]'}|| ƒ}|dƒ t%| ||ƒ |t6ƒ ||| ƒƒ |dƒ || ƒ| | |< �q|tƒ |D ]}|| ƒ| | |< �q­q0|t7u �rÛ||ƒ |t@ �rÍt8| }n	|t@ �rÖt9| }||ƒ q0|t:u �r|t@ �sê||ƒ n|t@ �rô|t;ƒ n|�sü|t<ƒ n|t=ƒ ||d ƒ q0|t>u �r_||ƒ ||d d ƒ || ƒ}|dƒ t%| |d |ƒ |d �rT|t6ƒ || ƒ}|dƒ || ƒ| d | |< t%| |d |ƒ || ƒ| | |< q0|| ƒ| d | |< q0t d|f ƒ‚d S )Nr   z*internal: unsupported template operator %ré   é   z(look-behind requires fixed-width patternz%internal: unsupported operand type %r)?ÚappendÚlenÚ_LITERAL_CODESÚ_REPEATING_CODESÚ_SUCCESS_CODESÚ_ASSERT_CODESÚSRE_FLAG_IGNORECASEÚSRE_FLAG_LOCALEÚSRE_FLAG_UNICODEÚ_sreÚunicode_iscasedÚunicode_tolowerÚ_ignorecase_fixesÚascii_iscasedÚascii_tolowerÚOP_LOCALE_IGNOREÚ	OP_IGNOREÚOP_UNICODE_IGNOREÚIN_UNI_IGNOREÚNOT_LITERALÚNEGATEÚLITERALÚFAILUREÚINÚ_optimize_charsetÚIN_LOC_IGNOREÚ	IN_IGNOREÚ_compile_charsetÚANYÚSRE_FLAG_DOTALLÚANY_ALLÚSRE_FLAG_TEMPLATEÚerrorÚ_simpleÚ
MAX_REPEATÚ
REPEAT_ONEÚMIN_REPEAT_ONEÚ_compileÚSUCCESSÚREPEATÚ	MAX_UNTILÚ	MIN_UNTILÚ
SUBPATTERNÚMARKr   ÚgetwidthÚCALLÚATÚSRE_FLAG_MULTILINEÚAT_MULTILINEÚgetÚ	AT_LOCALEÚ
AT_UNICODEÚBRANCHÚJUMPÚCATEGORYÚ	CH_LOCALEÚ
CH_UNICODEÚGROUPREFÚGROUPREF_LOC_IGNOREÚGROUPREF_IGNOREÚGROUPREF_UNI_IGNOREÚGROUPREF_EXISTS)ÚcodeÚpatternr   ÚemitÚ_lenÚLITERAL_CODESÚREPEATING_CODESÚSUCCESS_CODESÚASSERT_CODESÚiscasedÚtolowerÚfixesÚopÚavÚloÚskipÚkÚcharsetÚhascasedÚgroupr   r   ÚpÚhiÚtailÚ
tailappendÚskipyesÚskipnor   r   r   r=   W   sJ  




















€











ÿ












 �âr=   c                 C   sà   |j }| D ]d\}}||ƒ |tu rq|tu r||ƒ q|tu s#|tu r0||d ƒ ||d ƒ q|tu r:| |¡ q|tu rD| |¡ q|tu rc|t	@ rS|t
| ƒ q|t@ r^|t| ƒ q||ƒ qtd|f ƒ‚|tƒ d S )Nr   r   z%internal: unsupported set operator %r)r   r,   r-   ÚRANGEÚRANGE_UNI_IGNOREÚCHARSETÚextendÚ
BIGCHARSETrN   r   rO   r    rP   r8   r.   )rf   r   rV   rX   ra   rb   r   r   r   r3   	  s,   

r3   c              	   C   sx  g }g }t dƒ}d}| D ]À\}}		 z‘|tu r?|r:||	ƒ}
d||
< |r1|
|v r1||
 D ]}d||< q*|s9||	ƒr9d}ngd||	< nb|tu rŽt|	d |	d d ƒ}|r„|rnt||ƒD ]}d||< ||v rl|| D ]}d||< qeqWnt||ƒD ]}d||< qs|sƒtt||ƒƒ}n|D ]}d||< q†n|tu rš| ||	f¡ n| ||	f¡ W n( tyÊ   t	|ƒdkr·|dd 7 }Y q|rÁd}|tu rÁt
}| ||	f¡ Y nw 	 qg }d}	 | d|¡}|dk rÝn%t	|ƒdkræd }n| d|¡}|dk rú| |t	|ƒf¡ n| ||f¡ qÒ|d u�rB|D ] \}}|| dk�r| t|f¡ �q	| t||d ff¡ �q	||7 }|�s:t	|ƒt	| ƒk �r>||fS | |fS t	|ƒdk�r\t|ƒ}| t|f¡ ||7 }||fS t|ƒ}i }t dƒ}d}t ƒ }tdd	dƒD ],}|||d … }||v �rŠ|| ||d < �qq| ||d < ||< |d7 }||7 }�qqt|ƒ}|gt|ƒ |dd…< | t|f¡ ||7 }||fS )
Né   FTr   r   ó    i ÿ  r   i   )Ú	bytearrayr-   ro   ÚrangeÚmapÚanyr,   r   Ú
IndexErrorr   rp   ÚfindÚ
_mk_bitmaprq   ÚbytesÚ_bytes_to_codesrs   )rf   r^   Úfixupr`   Úoutrk   Úcharmaprg   ra   rb   rc   re   Úrr   ÚrunsÚqri   ÚdataÚcompsÚmappingÚblockÚchunkr   r   r   r0   $  sÄ   
€

€ü
€
ÿ€
ëõ

r0   é   r   s   0111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111c                    s8   |   t¡d d d… ‰‡ ‡‡fdd„ttˆƒdˆ  ƒD ƒS )Néÿÿÿÿc                    s"   g | ]}ˆˆ|ˆ  |… d ƒ‘qS )r   r   )r   r   ©Ú	_CODEBITSÚ_intÚsr   r   Ú
<listcomp>µ  s    ÿz_mk_bitmap.<locals>.<listcomp>r   )Ú	translateÚ_BITS_TRANSrw   r   )Úbitsr�   rŽ   r   rŒ   r   r|   ³  s   ÿr|   c                 C   s@   t | ƒ d¡}|jtjksJ ‚t|ƒ|j t| ƒksJ ‚| ¡ S )NÚI)Ú
memoryviewÚcastÚitemsizer!   ÚCODESIZEr   Útolist)ÚbÚar   r   r   r~   ¸  s   r~   c                 C   sD   t | ƒdkrdS | d \}}|tu r|d d u ot|d ƒS |tv S )Nr   Fr   r‹   )r   rB   r9   Ú_UNIT_CODES)ri   ra   rb   r   r   r   r9   ¿  s   r9   c                 C   s|   dgt | ƒ }tdt | ƒƒD ]-}||d  }| | | | kr5|dkr'd||< n||d  }| | | | ks|d ||< q|S )aj  
    Generate an overlap table for the following prefix.
    An overlap table is a table of the same size as the prefix which
    informs about the potential self-overlap for each index in the prefix:
    - if overlap[i] == 0, prefix[i:] can't overlap prefix[0:...]
    - if overlap[i] == k with 0 < k <= i, prefix[i-k+1:i+1] overlaps with
      prefix[0:k]
    r   r   )r   rw   )ÚprefixÚtabler   Úidxr   r   r   Ú_generate_overlap_tableÈ  s   	ü€r    c                 C   s    | t @ sd S | t@ rtjS tjS r   )r   r    r!   r"   r%   )r   r   r   r   Ú_get_iscasedÝ  s
   r¡   c                 C   sä   g }|j }d }t|ƒ}| jD ]Y\}}|tu r#|r||ƒr nO||ƒ q|tu rf|\}}	}
}t||	|
ƒ}|t@ r=|t@ r= n0t||ƒ\}}}|d u r\|d urRt	|ƒ}n
|d ur\t	|ƒ| }| 
|¡ |se nq n||dfS ||dfS )NTF)r   r¡   r…   r-   rB   r   r   r   Ú_get_literal_prefixr   rr   )rW   r   r�   ÚprefixappendÚprefix_skipr^   ra   rb   rh   r   r   ri   Úflags1Úprefix1Úprefix_skip1Úgot_allr   r   r   r¢   å  s6   


ÿ

r¢   c                 C   sZ  	 | j sd S | j d \}}|turn|\}}}} t|||ƒ}|t@ r(|t@ r(d S qt|ƒ}|tu r>|r9||ƒr9d S ||fgS |tu rng }|j}	|d D ] }
|
sR d S |
d \}}|tu ri|rb||ƒsi|	||fƒ qK d S |S |t	u r«|}|r©|D ]0\}}|tu rˆ||ƒr‡ d S qx|t
u r¨|d dkr• d S tt|t|d |d d ƒƒƒr¨ d S qx|S d S )NTr   r   iÿÿ  )r…   rB   r   r   r   r¡   r-   rL   r   r/   ro   ry   rx   rw   )rW   r   ra   rb   rh   r   r   r^   rf   Úcharsetappendri   r   r   r   Ú_get_charset_prefix  sV   ÷
ÿ €rª   c                 C   st  |  ¡ \}}|tkrt}|dkr|  tdd||g¡ d S g }d}g }|t@ r*|t@ s9t||ƒ\}}}|s9t||ƒ}| j}	|	tƒ t	| ƒ}
|	dƒ d}|rYt
}|d u rX|rX|tB }n|r_|tB }|	|ƒ |tk rl|	|ƒ n
|	tƒ |d t… }|	t|tƒƒ |rž|	t	|ƒƒ |d u r�t	|ƒ}|	|ƒ |  |¡ |  t|ƒ¡ n|r°t|ƒ\}}|rªJ ‚t||| ƒ t	| ƒ|
 | |
< d S )Nr   é   )rD   ÚMAXCODErr   ÚINFOr   r   r¢   rª   r   r   ÚSRE_INFO_PREFIXÚSRE_INFO_LITERALÚSRE_INFO_CHARSETÚminr    r0   r3   )rV   rW   r   rc   rj   r�   r¤   rf   r¨   rX   rd   Úmaskrg   r   r   r   Ú_compile_info0  sT   
€

r³   c                 C   s   t | ttfƒS r   )Ú
isinstanceÚstrr}   )Úobjr   r   r   Úisstringk  s   r·   c                 C   s8   | j j|B }g }t|| |ƒ t|| j|ƒ | t¡ |S r   )Ústater   r³   r=   r…   r   r>   )ri   r   rV   r   r   r   Ú_coden  s   
r¹   c                 C   s   dd  dd„ | D ƒ¡ S )Nú[%s]ú, c                 s   s&   � | ]}d t jd d |f V  qdS )z%#0*xr   N)r!   r˜   ©r   Úxr   r   r   r   ~  s   €$ z_hex_code.<locals>.<genexpr>)Újoin©rV   r   r   r   Ú	_hex_code}  s   rÀ   c                    sN   dd l ‰tƒ ‰d‰tttˆ ƒd ƒƒ‰‡ ‡‡‡‡‡fdd„‰ˆdtˆ ƒƒ d S )Nr   r   c              	      sî  d dœ‡‡‡‡ fdd„
}‡‡fdd„}ˆd7 ‰ˆ }||k �rñ|‰ ˆ| }|d7 }t | }|tttttttfv r=||ƒ �n°|tt	t
tttttfv r^ˆ| }|d7 }||d|t|ƒf ƒ �n�|tu r…ˆ| }|d7 }tt| ƒ}|d d… d	kszJ ‚|||dd … ƒ �nh|tu r¬ˆ| }|d7 }tt| ƒ}|d d
… dks¡J ‚|||d
d … ƒ �nA|ttttfv rÐˆ| }||||| d� ˆ|d || ƒ ||7 }�n|ttfv rõˆ||d … \}}	|d7 }||d||	t|ƒt|	ƒf ƒ �nø|tu �r||tˆ||dt  … ƒƒ |dt 7 }�nÜ|tu �rhˆ| }|d7 }t d !‡fdd„ˆ||dt"j#  … D ƒ¡ƒ}
||||
ƒ |dt"j# 7 }ˆd7 ‰t$|ƒD ]}|tˆ||dt  … ƒƒ |dt 7 }�qJˆd8 ‰�n…|t%t&t't(t)fv �r�ˆ| }|d7 }|||ƒ �nl|t*u �r™ˆ| }||||| d� |d7 }�nT|t+u �rÛˆ| }||||| d� |�rÕˆ|d || ƒ ||7 }|‰ ˆ| }|�rÎ|d||| d� n|tƒ |�s®|d7 }�n|t,t-t.fv �rˆ||d … \}}}|t/k�rõd}||||||| d� ˆ|d || ƒ ||7 }nß|t0u �r,ˆ||d … \}}|||||| d� |d7 }nÁ|t1t2fv �rUˆ||d … \}}|||||| d� ˆ|d || ƒ ||7 }n˜|t3u �réˆ||d … \}}}}|t/k�rmd}|||t4|ƒ|||| d� |d ‰ |t5@ �rÌˆ|d |d … \}}|d|ƒ |d ‰ ˆˆ ˆ | … }|ddd !dd„ |D ƒ¡ dd !t6t|ƒ¡ ƒ ˆ |7 ‰ |dˆˆ ˆ | … ƒ ˆ |7 ‰ |t7@ �räˆd7 ‰|dƒ ˆˆ || ƒ ˆd8 ‰||7 }nt8|ƒ‚||k sˆd8 ‰d S )N)Útoc                    sX   | d urˆ   | ¡ |d| f f7 }tdˆˆˆˆ v rdndf dˆd  d� t|Ž  d S )Nz(to %d)z%*d%s ú:Ú.z  r   ©Úend)ÚaddÚprint)rÁ   Úargs)ÚlabelsÚlevelÚoffset_widthÚstartr   r   Úprint_ˆ  s   

ÿz!dis.<locals>.dis_.<locals>.print_c                     s"   t dˆdˆ    d� t | Ž  d S )Nú r   rÄ   )rÇ   )rÈ   )rÊ   rË   r   r   Úprint_2�  s   z"dis.<locals>.dis_.<locals>.print_2r   z
%#02x (%r)é   ÚAT_é	   Ú	CATEGORY_r   z%#02x %#02x (%r-%r)rt   ó    c                 3   s    � | ]}|  tjˆ j¡V  qd S r   )Úto_bytesr!   r˜   Ú	byteorderr¼   )Úsysr   r   r   Á  s   € ÿz$dis.<locals>.dis_.<locals>.<genexpr>ÚbranchÚ	MAXREPEATr«   é   z  prefix_skipz  prefixrº   r»   c                 s   s   � | ]}d | V  qdS )z%#02xNr   r¼   r   r   r   r   ü  s   € z(%r)Ú z	  overlapÚin)9ÚOPCODESr>   r.   r4   r6   r@   rA   r,   r-   r+   ÚLITERAL_IGNOREÚNOT_LITERAL_IGNOREÚLITERAL_UNI_IGNOREÚNOT_LITERAL_UNI_IGNOREÚLITERAL_LOC_IGNOREÚNOT_LITERAL_LOC_IGNOREÚchrrF   rµ   ÚATCODESrN   ÚCHCODESr/   r2   r*   r1   ro   rp   rq   rÀ   r�   rs   Úlistr¾   r!   r˜   rw   rC   rQ   rS   rT   rR   rM   rL   r?   r;   r<   rÙ   rU   ÚASSERTÚ
ASSERT_NOTr­   Úbinr®   rx   r°   Ú
ValueError)rÌ   rÅ   rÍ   rÏ   r   ra   Úargrd   rc   rj   r‡   r	   r±   Úmaxr   Ú
prefix_lenr¤   r�   ©rV   Údis_rÉ   rÊ   rË   r×   )rÌ   r   rð   ‡  sø   

ÿý"


ÿ
ÿ

ø	








þ

�szdis.<locals>.dis_)r×   Úsetr   rµ   r¿   r   rï   r   Údis€  s    rò   c              	   C   s–   t | ƒr| }t | |¡} nd }t| |ƒ}|t@ rtƒ  t|ƒ | jj}d g| jj	 }| 
¡ D ]\}}|||< q.t ||| jjB || jj	d |t|ƒ¡S )Nr   )r·   Ú	sre_parseÚparser¹   ÚSRE_FLAG_DEBUGrÇ   rò   r¸   Ú	groupdictÚgroupsÚitemsr!   Úcompiler   r   )ri   r   rW   rV   Ú
groupindexÚ
indexgroupre   r   r   r   r   rù     s"   


ýrù   )NNN)r   ).Ú__doc__r!   ró   Úsre_constantsÚMAGICr-   r+   r   r?   Ú
MIN_REPEATr:   r   r>   r.   r   rè   ré   r   r4   r/   rœ   Ú_equivalencesr$   r   r   r=   r3   r0   r˜   r�   r¬   r’   Úintr|   r~   r9   r    r¡   r¢   rª   r³   r·   r¹   rÀ   rò   rù   r   r   r   r   Ú<module>   sL   

4ÿ
ÿ 3
 
	,; 