
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \ŠK  ã               @   sú   d Z ddlZddlZddlT ejeks.tdƒ‚eehZe	e
ehZeehZeehZdWZd&d'„ eD ƒZd(d)„ ZdXd*d+„Zd,d-„ Zejd. Zd/e> d/ Zd0d1d2  Zeefd3d4„Zd5d6„ Zd7d8„ Zd9d:„ Z d;d<„ Z!d=d>„ Z"d?d@„ Z#dAdB„ Z$dCdD„ Z%dYdEdF„Z&dS )ZzInternal support module for sreé    N)Ú*zSRE module mismatchéi   é1  és   é  éµ   é¼  éE  é¹  é¾  é�  éÓ  é°  éã  é²  éÐ  éµ  éõ  é¸  éÑ  éº  éð  éÀ  éÖ  éÁ  éñ  éÂ  éÃ  éÆ  éÕ  éa  é›  éû  éû  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/lib64/python3.6/sre_compile.pyú	<genexpr>=   s    z<dictcomp>.<genexpr>)Útuple)r%   Útr$   )r'   r(   ú
<dictcomp>=   s   r,   c             C   sr  | j }t}t}t}t}t}|t@ rD|t@  rD|t@ rD|t	@  rDt
}	nd }	�x"|D �]\}
}|
|k�r|t@ �rtj||ƒ}|	rð||	krð|tƒ || ƒ}|dƒ |
tkr®|tƒ x&|f|	|  D ]}|tƒ ||ƒ q¾W |tƒ || ƒ| | |< n|t|
 ƒ ||ƒ n||
ƒ ||ƒ qP|
tk�r„|t@ �rF|t|
 ƒ |fdd„}n||
ƒ d }|| ƒ}|dƒ t||| ||	ƒ || ƒ| | |< qP|
tk�r¬|t@ �r¢|tƒ n|tƒ qP|
|k�rÀ|t@ �rÐtd|
f ƒ‚nît|ƒ�rR|
tk	�rR|
tk�rø|tƒ n|tƒ || ƒ}|dƒ ||d ƒ ||d ƒ t| |d |ƒ |t ƒ || ƒ| | |< nl|tƒ || ƒ}|dƒ ||d ƒ ||d ƒ t| |d |ƒ || ƒ| | |< |
tk�r¶|t!ƒ n|t"ƒ qP|
t#k�r.|\}}}}|�rô|t$ƒ ||d d ƒ t| |||B | @ ƒ |�rj|t$ƒ ||d d d ƒ qP|
|k�rB||
ƒ qP|
|k�rÐ||
ƒ || ƒ}|dƒ |d dk�r||dƒ n*|d j%ƒ \}}||k�ržtdƒ‚||ƒ t| |d |ƒ |t ƒ || ƒ| | |< qP|
t&k�r||
ƒ || ƒ}|dƒ t| ||ƒ |t ƒ || ƒ| | |< qP|
t'k�r„||
ƒ |t(@ �r@t)j*||ƒ}|t@ �rXt+j*||ƒ}n"|t@ �rz|t	@  �rzt,j*||ƒ}||ƒ qP|
t-k�r&||
ƒ g }|j }xZ|d D ]N}|| ƒ}|dƒ t| ||ƒ |t.ƒ ||| ƒƒ |dƒ || ƒ| | |< �qªW |tƒ x|D ]}|| ƒ| | |< �q
W qP|
t/k�rt||
ƒ |t@ �rLt0| }n|t@ �rj|t	@  �rjt1| }||ƒ qP|
t2k�r¬|t@ �r–|t|
 ƒ n||
ƒ ||d ƒ qP|
t3k�r\||
ƒ ||d d ƒ || ƒ}|dƒ t| |d |ƒ |d �rF|t.ƒ || ƒ}|dƒ || ƒ| d | |< t| |d |ƒ || ƒ| | |< n|| ƒ| d | |< qPtd|
f ƒ‚qPW d S )	Nr   c             S   s   t j| |ƒS )N)Ú_sreÚgetlower)ÚliteralÚflagsr$   r$   r(   Úfixupf   s    z_compile.<locals>.fixupz*internal: unsupported template operator %ré   é   z(look-behind requires fixed-width patternz%internal: unsupported operand type %r)4ÚappendÚlenÚ_LITERAL_CODESÚ_REPEATING_CODESÚ_SUCCESS_CODESÚ_ASSERT_CODESÚSRE_FLAG_IGNORECASEÚSRE_FLAG_LOCALEÚSRE_FLAG_UNICODEÚSRE_FLAG_ASCIIÚ_ignorecase_fixesr-   r.   Ú	IN_IGNOREÚNOT_LITERALÚNEGATEÚLITERALÚFAILUREÚ	OP_IGNOREÚINÚ_compile_charsetÚANYÚSRE_FLAG_DOTALLÚANY_ALLÚSRE_FLAG_TEMPLATEÚerrorÚ_simpleÚREPEATÚ
MAX_REPEATÚ
REPEAT_ONEÚMIN_REPEAT_ONEÚ_compileÚSUCCESSÚ	MAX_UNTILÚ	MIN_UNTILÚ
SUBPATTERNÚMARKÚgetwidthÚCALLÚATÚSRE_FLAG_MULTILINEÚAT_MULTILINEÚgetÚ	AT_LOCALEÚ
AT_UNICODEÚBRANCHÚJUMPÚCATEGORYÚ	CH_LOCALEÚ
CH_UNICODEÚGROUPREFÚGROUPREF_EXISTS)ÚcodeÚpatternr0   ÚemitÚ_lenÚLITERAL_CODESÚREPEATING_CODESÚSUCCESS_CODESÚASSERT_CODESÚfixesÚopÚavÚloÚskipÚkr1   ÚgroupÚ	add_flagsÚ	del_flagsÚpÚhiÚtailÚ
tailappendÚskipyesÚskipnor$   r$   r(   rQ   @   s.   



 



 







  






 


 




  







 
 rQ   c             C   sø   |j }xät| ||ƒD ]Ô\}}||ƒ |tkr.q|tkr@||ƒ q|tksP|tkrj||d ƒ ||d ƒ q|tkr~|j|ƒ q|tkr’|j|ƒ q|t	krÚ|t
@ r°|t| ƒ qè|t@ rÐ|t@  rÐ|t| ƒ qè||ƒ qtd|f ƒ‚qW |tƒ d S )Nr   r2   z%internal: unsupported set operator %r)r4   Ú_optimize_charsetrA   rB   ÚRANGEÚRANGE_IGNOREÚCHARSETÚextendÚ
BIGCHARSETra   r;   rb   r<   r=   rc   rK   rC   )Úcharsetr0   rf   r1   rn   rh   ro   rp   r$   r$   r(   rF   ß   s,    

rF   c             C   sd  g }g }t dƒ}�xt| D �]j\}}�x^�y |tkrx|rn||ƒ}d||< |rv||krvx"|| D ]}	d||	< q\W nd||< n®|tkrþt|d |d d ƒ}
|r¤t||
ƒ}
|ræ|ræxN|
D ].}d||< ||kr²x|| D ]}	d||	< qÐW q²W nx>|
D ]}d||< qìW n(|tk�r|j||fƒ n|j||fƒ W nT tk
�r|   t|ƒdk�rV|dd 7 }w&|�rj|tk�rjt	}|j||fƒ Y nX P q&W qW g }d}xj|j
d|ƒ}|dk �rªP t|ƒdk�r¾d }P |j
d|ƒ}|dk �rè|j|t|ƒfƒ P |j||fƒ �q’W |d k	�rvxF|D ]>\}}|| dk�r2|jt|fƒ n|jt||d ffƒ �qW ||7 }|�snt|ƒt| ƒk �rr|S | S t|ƒdk�r¦t|ƒ}|jt|fƒ ||7 }|S t|ƒ}i }t dƒ}d}t ƒ }xftdddƒD ]V}|||d … }||k�r|| ||d < n$| ||d < ||< |d7 }||7 }�qÒW t|ƒ}|gt|ƒ |dd…< |jt|fƒ ||7 }|S )Né   r2   r   ó    i ÿ  r3   i   )Ú	bytearrayrB   r~   ÚrangeÚmaprA   r4   Ú
IndexErrorr5   r   ÚfindÚ
_mk_bitmapr€   ÚbytesÚ_bytes_to_codesr‚   )rƒ   r1   rn   Úoutry   Úcharmapro   rp   rq   rs   Úrr'   ÚrunsÚqrw   ÚdataÚcompsÚmappingÚblockÚchunkr$   r$   r(   r}   ú   s¤    









r}   é   r2   ó   0ó   1éÿ   c                s8   | j tƒd d d… ‰‡ ‡‡fdd„ttˆƒdˆ  ƒD ƒS )Nr2   c                s"   g | ]}ˆˆ|ˆ  |… d ƒ‘qS )r3   r$   )r%   r'   )Ú	_CODEBITSÚ_intÚsr$   r(   ú
<listcomp>z  s   z_mk_bitmap.<locals>.<listcomp>r   éÿÿÿÿ)Ú	translateÚ_BITS_TRANSr‡   r5   )Úbitsrœ   r�   r$   )rœ   r�   rž   r(   r‹   x  s    r‹   c             C   s@   t | ƒjdƒ}|jtjkst‚t|ƒ|j t| ƒks8t‚|jƒ S )NÚI)Ú
memoryviewÚcastÚitemsizer-   ÚCODESIZEÚAssertionErrorr5   Útolist)ÚbÚar$   r$   r(   r�   }  s    r�   c             C   s<   | d j ƒ \}}||  ko"dkn  o:| d d d tkS )Nr3   r2   r   )rW   rU   )rp   rq   rx   r$   r$   r(   rL   „  s    rL   c             C   sv   dgt | ƒ }xbtdt | ƒƒD ]P}||d  }x>| | | | kr`|dkrRd||< P ||d  }q0W |d ||< qW |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   r2   )r5   r‡   )ÚprefixÚtabler'   Úidxr$   r$   r(   Ú_generate_overlap_table‰  s    	r°   c             C   s¶   g }|j }d }xœ| jD ]ˆ\}}|tkr0||ƒ q|tkrœ|\}}}}	|t@ rNP t|	ƒ\}
}}|d krŠ|d k	rvt|ƒ}n|d k	rŠt|ƒ| }|j|
ƒ |sžP qP qW ||dfS ||dfS )NTF)r4   r“   rB   rU   r:   Ú_get_literal_prefixr5   r�   )rg   r­   ÚprefixappendÚprefix_skipro   rp   rt   ru   rv   rw   Úprefix1Úprefix_skip1Úgot_allr$   r$   r(   r±   ž  s,    



r±   c             C   s"  g }|j }| j�r| jd \}}|tkr¸|\}}}}|r¶|t@  r¶|d \}}|tkrd|||fƒ nR|tkr¶g }	|	j }
x¦|d D ].}|sŠP |d \}}|tkr¬|
||fƒ q€P q€W |	}nf|tk�rg }	|	j }
xP|d D ]0}|sàP |d \}}|tk�r|
||fƒ qÖP qÖW |	}n|tk�r|}|S )Nr   r2   )r4   r“   rU   r:   rB   r_   rE   )rg   rƒ   Úcharsetappendro   rp   rt   ru   rv   rw   ÚcÚcappendr$   r$   r(   Ú_get_charset_prefix¹  sF    


rº   c             C   sZ  |j ƒ \}}|tkrt}|dkr8| jtdd||gƒ d S g }d}g }|t@ sft|ƒ\}}}|sft|ƒ}| j}	|	tƒ t| ƒ}
|	dƒ d}|r¦t	}|d kr²|r²|t
B }n|r²|tB }|	|ƒ |tk rÌ|	|ƒ n|	tƒ |d t… }|	t|tƒƒ |�r4|	t|ƒƒ |d k�rt|ƒ}|	|ƒ | j|ƒ | jt|ƒƒ n|�rFt||| ƒ t| ƒ|
 | |
< d S )Nr   é   )rW   ÚMAXCODEr�   ÚINFOr:   r±   rº   r4   r5   ÚSRE_INFO_PREFIXÚSRE_INFO_LITERALÚSRE_INFO_CHARSETÚminr°   rF   )rf   rg   r0   rq   rx   r­   r³   rƒ   r¶   rh   rr   Úmaskr$   r$   r(   Ú_compile_infoâ  sP     



rÃ   c             C   s   t | ttfƒS )N)Ú
isinstanceÚstrrŒ   )Úobjr$   r$   r(   Úisstring  s    rÇ   c             C   s8   | j j|B }g }t|| |ƒ t|| j|ƒ |jtƒ |S )N)rg   r0   rÃ   rQ   r“   r4   rR   )rw   r0   rf   r$   r$   r(   Ú_code  s    
rÈ   c             C   s€   t | ƒr| }tj| |ƒ} nd }t| |ƒ}| jj}d g| jj }x|jƒ D ]\}}|||< qHW tj	||| jj
B || jjd ||ƒS )Nr2   )rÇ   Ú	sre_parseÚparserÈ   rg   Ú	groupdictÚgroupsÚitemsr-   Úcompiler0   )rw   r0   rg   rf   Ú
groupindexÚ
indexgrouprs   r'   r$   r$   r(   rÎ   -  s    

rÎ   ©r   r   ©r   r   ©r   r   ©r	   r
   r   ©r   r   ©r   r   ©r   r   ©r   r   ©r   r   ©r   r   ©r   r   ©r   r   ©r   r   ©r   r   ©r    r!   ©r"   r#   )rÑ   rÒ   rÓ   rÔ   rÕ   rÖ   r×   rØ   rÙ   rÚ   rÛ   rÜ   rÝ   rÞ   rß   rà   )NN)r   )'Ú__doc__r-   rÉ   Úsre_constantsÚMAGICr©   rB   r@   r6   rM   Ú
MIN_REPEATrN   r7   rR   rC   r8   ÚASSERTÚ
ASSERT_NOTr9   Ú_equivalencesr>   rQ   rF   r}   r¨   rœ   r¼   r¢   Úintr‹   r�   rL   r°   r±   rº   rÃ   rÇ   rÈ   rÎ   r$   r$   r$   r(   Ú<module>   sV   
                 
{
)9