
    ̆h1              	      Z   S r SSKJ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  SSKJrJrJrJrJrJr  \R,                  S:  a  SSKJr  OSSKrS	r\" S
5      r\" S5      r\" S5      r\" S5      r\\" S5      -  r \ \-  r!\" S5      r"\" S5      r#\" S5      r$\!\-  \$-  r%\" S5      r&\" S5      r'\" S5      r(Sr)Sr*SSSSSSSSS.r+Sr, " S  S!\-5      r. " S" S#\-5      r/ " S$ S%\\   5      r0 " S& S'\\   5      r1 " S( S)\
Rd                  \\   5      r3S* r4\Rj                  " \3\45        g)+zd
Backrefs Re parser.

Licensed under MIT
Copyright (c) 2011 - 2020 Isaac Muse <isaacmuse@gmail.com>
    )annotationsN   )util)uniprops)GenericAnyStrMatchAnyPatterncast)      )ReplaceTemplate)4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)
0123456789)rD   rE   rF   rG   rH   rI   rJ   rK   )r   r   r   r   r   r   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   )_)r   r   r   r   r!   r#   r%   ){}) -rN   )r   r$   r5   )r   r   r"   r$   r'   ){   }      	
\)z\az\bz\fz\rz\tz\nz\v\\)r   r!   r"   c                      \ rS rSrSrSrg)LoopException@   zLoop exception. N__name__
__module____qualname____firstlineno____doc____static_attributes__rb       K/opt/services/DDDS/venv/lib/python3.13/site-packages/backrefs/_bre_parse.pyr`   r`   @   s    rj   r`   c                      \ rS rSrSrSrg)GlobalRetryExceptionD   zGlobal retry exception.rb   Nrc   rb   rj   rk   rm   rm   D   s    !rj   rm   c                  ~   \ rS rSr% SrSrSrSrSrSr	\
R                  (       a  SOS	rS
rS\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S(S)S jjrS*S jrS+S jrS,S-S jjrS,S.S jjrS/S jrS,S0S jjrS1S jrS,S2S jjrS+S jrS+S  jrS+S! jrS,S3S" jjr  S4         S5S# jjrS6S$ jrS7S% jrS8S& jrS'r g)9_SearchParserH   zSearch Template.)r   r,   r   r.   r   r   r5   r   r6   r7   r   r9   r:   r;   rA   z\x1bz\b(?=\w)z	\b(?<=\w)z+(?:\r\n|(?!\r\n)[\n\v\f\r\x85\u2028\u2029])z(?>\r\n|[\n\v\f\r\x85])z(?:\r\n|(?!\r\n)[\n\v\f\r\x85])z(?:{}{}*(?!{}))boolverboseunicodezdict[str, bool]global_flag_swaptemp_global_flag_swapasciiis_bytesr   searchNc                    [        U[        5      (       a  SU l        OSU l        U R                  (       a  U R                  U l        OU R
                  U l        Xl        X l        X0l        g)Initialize.TFN)	
isinstancebytesrx   _bytes_line_break_re_line_break_line_breakry   
re_verbose
re_unicode)selfry   r   r   s       rk   __init___SearchParser.__init__[   sQ     fe$$ DM!DM=="&"8"8D"&"2"2D$$rj   c                   SnSn/ n/ n[         R                  " U5      nU H  nU(       d
  US:X  a  SnM  U(       a  SnUS:X  aC  U(       a:  UR                  [        R                  " SR                  U5      5      5        / nSnMd  Mf  US:X  a  U(       d  SnMw  U(       a  UR                  SU/5        M  UR                  SU/5        M  U(       a  UR                  U5        M  UR                  U5        M     U(       a  U(       a  UR                  S5        OU(       a  UR                  S5        U(       a4  UR                  [        R                  " SR                  U5      5      5        SR                  U5      $ )zProcess quotes.Fr]   Tr.    r:   )_util
StringIterappend_reescapejoinextend)r   textescaped	in_quotescurrentquotedr   r#   s           rk   process_quotes_SearchParser.process_quotesk   s    	T"AqDy8 szz"''&/'BC!#$)	 ! #Xi $IMM4),NND!9-a q!' * MM$NN4 NN3::bggfo67wwwrj   c                j   / nSn US:w  a  U(       d  US:X  a  SnUR                  U5        OLU(       a4  SnXR                  ;   a  UR                  S5        UR                  U5        OUR                  U5        [        U5      nUS:w  a  M  US:X  a  UR                  U5        U$ ! [         a     N%f = f)zHandle verbose comments.Fr[   r]   T)r   	_new_refsnextStopIteration)r   r#   r   r   r   s        rk   verbose_comment_SearchParser.verbose_comment   s     	t)19"GNN1%#GNN*t,NN1%NN1%G t) 9NN1  		s   BB% %
B21B2c                   SnSU;   d  SU;   a1  U R                   (       a   SU l         U(       d  SU R                  S'   SnOGSU;   aA  U R                   (       d0  U R                  (       d  SU l         U(       d  SU R                  S'   SnSU;   a  U R                  (       a  SU l        O6SU;   a0  U R                  (       d  SU l        U(       d  SU R                  S	'   SnU(       a  [	        S
5      eg)zAnalyze flags.Fr   r5   Trt   r$   z-xr'   rs   zGlobal RetryN)rt   rv   rx   rs   rm   )r   r   scopedglobal_retrys       rk   flags_SearchParser.flags   s     4K3$;DLL DL8<**95#D[dmmDL8<**95#4<DLL DLD[DL8<**95#&~66 rj   c                   UR                   n/ n/ n [        U5      nUR                  5       [        ;   a  UR	                  U5        GOU(       d  US:w  d  U(       a"  US:w  a  [        SUR                   S-
   S35      e[        U5      nUS:X  a  UR	                  U5        [        U5      nUS;  aT  U[        ;  a  [        SUR                   S-
   S35      eU[        ;  a  UR	                  U5        [        U5      nUS;  a  MT  US	;   a  S
nU(       a"  US:H  n[        U5      nU(       a  US:X  a  SnSn	O[        U5      nSn	U(       d  Xi:w  aS  U[        ;  a  [        SUR                   S-
   S35      eU[        ;  a  UR	                  U5        [        U5      nXi:w  a  MS  U(       a3  US:X  a-  [        U5      nUS:w  a  [        SUR                   S-
   S35      eU(       d  [        S5      eSR                  U5      R                  5       SR                  U5      R                  5       4$ ! [         a,  n
U(       a  [        SU S35      U
e[        SU S35      U
eSn
A
ff = f)zGet Unicode property.rO   :z Unicode property missing '{' at r   !^)r   =rP   z&Invalid Unicode property character at )r   r   F]TrP   zInvalid Unicode property!zMissing or unmatched ':]' at zMissing or unmatched '{' at Nr   )indexr   upper_ASCII_LETTERSr   SyntaxError	_PROPERTY_PROPERTY_STRIPr   r   lower)r   r   bracketsr   propvaluer   skipis_colonendr   s              rk   get_unicode_property"_SearchParser.get_unicode_property   sN    3	SQAwwyN*A18a3h!$EaggPQk]RS"TUUG8KKNQA.	)),RSTSZSZ]^S^R__`*abb/AQA . 
? D#$8 G#S#'D! G!  h 	1&14Z[\[b[bef[fZggh2i&j j 7 %Q $QA  h $S $QA Cx&14Z[\[b[bef[fZggh2i&j j$"-.I"JJ wwt}""$bggen&:&:&<<<  	S!$A%"JKQRR!$A%"JKQRR		Ss,   4H, B;H, BH, "AH, ,
I"6'II"c                F   UR                   n/ n [        U5      S:w  a  [        SUR                   S-
   S35      e[        U5      nUS:w  a$  UR                  U5        [        U5      nUS:w  a  M$  SR                  U5      $ ! [         a  n[        SU S35      UeSnAff = f)	zGet Unicode name.rO   zNamed Unicode missing '{' r   r   rP   Unmatched '{' at Nr   )r   r   
ValueErrorr   	Exceptionr   r   r   r   r   r   r   r   s         rk   get_named_unicode_SearchParser.get_named_unicode  s     	DAw#~ #>qww{m1!MNNQAs(QG s( wwu~  	D 25';<!C	D   AB 
B BB c           	        / nU(       d#  US:X  a  UR                  U R                  5        U$ U(       d#  US:X  a  UR                  U R                  5        U$ U(       d#  US:X  a  UR                  U R                  5        U$ U(       d[  US:X  aU  U R	                  SSSS9S	   nU R	                  SSSS9S	   nUR                  U R                  R                  XVU5      5        U$ US
:X  a3  [        R                  " S5        UR                  U R                  5        U$ US:X  aF  [        R                  " S5        UR                  U R	                  SSUS95        U(       a  SU l        U$ US:X  aG  U R                  U5      nUR                  U R	                  US	   US   US95        U(       a  SU l        U$ US:X  aH  U R                  U5      nUR                  U R	                  US	   US   USS95        U(       a  SU l        U$ US:X  aA  U R                  U5      nUR                  U R                  X5      5        U(       a  SU l        U$ UR                  SU/5        U$ )Handle references.r   r6   r;   rA   z^mNFin_groupr   r   z=The \e reference has been deprecated, please use \x1b insteadr   zHThe \h reference has been deprecated, please use \p{Horiz_Space} insteadblankTr   r   r9   )r   negater7   r]   )r   _re_start_wb
_re_end_wbr   unicode_propsr   _grapheme_clusterformatr   warn_deprecated
_re_escapefound_propertyr   r   unicode_namefound_named_unicode)	r   r#   r   r   r   no_markmarkr   r   s	            rk   	reference_SearchParser.reference  sR    AHNN4,,-D C a3hNN4??+@ ? a3hNN4../< ; a3h((te(DQGG%%c4%%@CDNN41188MN4 3 #X!!"bcNN4??+. - #X!!"mnNN4--gth-OP&*#$ # #X,,Q/DNN4--d1gtAw-RS&*#  #X,,Q/DNN4--d1gtAwZ^-_`&*#  #X))!,DNN4,,T<=+/(  NND!9%rj   c                *   UR                   nS/nSn [        U5      nUS:w  a  UR                  S5        gUR                  U5        [        U5      nUS:w  a  UR                  S5        gUR                  U5        [        U5      nUS:w  d  US	L a=  U(       a  SnOUS
:X  a  S	nUR                  U5        [        U5      nUS:w  a  M6  US	L a  M=  UR                  U5        SR                  U5      $ ! [         a  n[        SUS-
   S35      UeSnAff = f)zGet comments.(F?r   N#rU   )Tr]   zUnmatched '(' at r   r   )r   r   rewindr   r   r   r   )r   r   r   r   r   r   r   s          rk   get_comments_SearchParser.get_comments=  s
    	GQACxLLOQACxLLOQAs(go#G$Y"GQG s(go LLO wwu~  	G 1%!)A>?QF	Gs/   "C0 3C0 *AC0 C0 C0 0
D:DDc                   UR                   nS/nSnU(       a  SOSn [        U5      nUS:w  a  UR                  S5        gUR                  U5        [        U5      nXv:w  a  U(       a  U[        ;  a  [        S5      eSnOKU(       a	  US	:X  a  S
nO;U(       a  U[        ;   a  [        S5      eU[        ;  a  U[        ;  a  [        S5      eUR                  U5        [        U5      nXv:w  a  M  UR                  U5        U(       a  SR                  U5      $ S$ ! [         a#    UR                  UR                   U-
  5        / n NFf = f)z
Get flags.r   Fr   r   r   r   Nz	Bad scoperR   TzBad flagr   )	r   r   r   r   _SCOPED_FLAGSr   _GLOBAL_FLAGSr   r   )r   r   r   r   r   toggler   r   s           rk   	get_flags_SearchParser.get_flags\  s    c	QACxLLOQA(-(55"FS!F] 2$Z00m+0F$Z00QG ( LLO
 "'rwwu~0D0	  	HHQWWu_%E	s   "D B,D /D *EEc                :   / nU R                  U5      nU(       a  U R                  USS 5        U/$ U R                  U5      nU(       a  U/$ U R                  nU R                  nU R                  US5      nU(       a  UnU R                  USS SS9  / n US:w  aL  U(       d  UR                  U5        O UR                  U R                  X5      5        [        U5      nUS:w  a  ML  X`l        Xpl        US:X  a  UR                  U5        U$ ! [         a     N1f = f)zHandle parenthesis.rU   T)r   r   )
r   r   r   rs   rt   r   r   normalr   r   )r   r#   r   r   r   commentsrs   unicode_flags           rk   subgroup_SearchParser.subgroup~  s     q!JJuQr{#7N $$Q':,,|| q$'AJJuQr{4J0		s(NN1%NN4;;q#45G s( #8NN1  		s   AD 
DDc                z   / nUR                   S-
  nSnSnSnSnSU l        SU l          U R                  (       aD  US:X  a>  UR                  [        R
                  " U5      5        US-  n[        U5      nSU l        MV  SU l        U(       d
  US:X  a  SnGOU(       al  Sn[        U5      S-
  n	UR                  U R                  XS5      5        U R                  (       a(  U	S:  a   X9   S:X  a  [        R
                  " S5      X9'   SnGOUS:X  a  U(       d  SnUnUR                  U5        OUS:X  a  UR                   n
 U R                  US5      nUb\  U R                  US   US   SS	9nUS
   S:X  a  [        R
                  " S5      US
'   UR                  U5        SnUR                   S-
  nOuUR                  U5        OcUS:X  a#  U(       a  XGS-   :X  a  UnUR                  U5        O:US:X  a#  U(       a  XGS-   :w  a  SnUR                  U5        O$UR                  U5        US-  n[        U5      nGM  U(       a  UR                  U5        U(       d  U R                  (       a  SR                  U5      nUS:X  a8  SU R                   (       a  ["        R$                  O["        R&                   S3/nU$ US:X  a8  SU R                   (       a  ["        R$                  O["        R&                   S3/nU$ U/nU$ ! [         a$    SnUR                  UR                   U
-
  5         GNf = f! [         a     GN f = f)zHandle character groups.r   Fr   TrR   r]   [Nr   r   rU   r   r   r   z[][^z[^])r   r   r   r   r   r   r   lenr   r   r   r   r   r   r   r   rx   	_unipropsASCII_RANGEUNICODE_RANGE)r   r#   r   r   posfoundr   firstr   idxr   r   r   temps                 rk   char_groups_SearchParser.char_groups  s    ggk##( 7	&&18NN3::a=11HCQA*/D'*/D'19"G#Gg,*CNN4>>!#=>**!8(;+.::c?GL)-#Xe EENN1%#XGGE2#88DA ' $ 2 247DGd 2 S"2;#-*-**S/GBKu-)-ggkq)#X%SAI-=ENN1%#X%SAI-=!ENN1%NN1%qGi p NN1 T55777#Dt|  	 5 5ILcLcddefg  y449KbKbccdef   &Y % 2#512.  		s=   DL,  K; CL, $L, ;*L)%L, (L))L, ,
L:9L:c                   / nUS:X  a.   [        U5      nUR                  U R                  X5      5        U$ US:X  a"  UR                  U R                  X5      5        U$ U R                  (       a(  US:X  a"  UR                  U R                  X5      5        U$ US:X  a"  UR                  U R                  X5      5        U$ UR	                  U5        U$ ! [         a    UR	                  U5         U$ f = f)zHandle normal chars.r]   r   r   r   )	r   r   r   r   r   r   rs   r   r   )r   r#   r   r   s       rk   r   _SearchParser.normal  s     9"Gt~~a34  #XNN4==./  \\a3hNN4//56
 	 #XNN4++A12  NN1 ! "q! "s   +C C21C2c                    [        [        R                  " U5      5      nU R                  (       aF  US:  a@  U(       d6  SU R                  (       a  [        R
                  O[        R                   S3/$ S/$ US::  a  SUS 3/$ [        U5      /$ )z!Insert Unicode value by its name.   r   r   r   r]   03o)ord_unicodedatalookuprx   r   r   r   chr)r   namer   r   s       rk   r   _SearchParser.unicode_name  s|     L''-.==UT\dmmY22I`I`aabcddt$)TM"U3K BBs5zBBrj   c                   UR                  S5      (       a  U(       a  USS nOU(       a  SU-   nU(       d  Ub  SnU R                  (       a  [        R                  nO2U R                  (       d  [        R
                  nO[        R                  n[        R                  " XU5      nU(       dA  U(       d4  SU R                  (       a  [        R                  O[        R                   3nSU S3nU/nU$ )zz
Insert Unicode properties.

Unicode properties are very forgiving.
Case doesn't matter and `[ -_]` will be stripped out.
r   r   Nr   r   )

startswithrx   r   
MODE_ASCIIrt   MODE_NORMALMODE_UNICODEr   r   r   )r   props
prop_valuer   r   moder%   
propertiess           rk   r   _SearchParser.unicode_props$  s     C  ab	%KEj4J==''D((D))D**5dC	--ID[D[\]A3aAS
rj   c                    / n  [        U5      nUR                  U R                  X15      5        M-  ! [         a     U$ f = f)zThe main group: group 0.)r   r   r   r   )r   r   r   r#   s       rk   
main_group_SearchParser.main_groupJ  sM     	Gt{{101   		s   .2 
A A c                ~   [        U R                  5      U l        [        U R                  5      U l        SSS.U l        SSS.U l        U R                  SL=(       a    U R                  (       + U l        U R                  (       d  U R                  (       d  SU l        / n[        R                  " U R                  U5      5      nSnU(       a  Sn U R                  U5      nU(       a  M  S	R!                  U5      $ ! [         a  nU R                  S   (       a/  U R
                  S   (       a  [        S5      UeSU R
                  S'   U R                  S   (       a/  U R
                  S   (       a  [        S5      UeSU R
                  S'   SSS.U l        UR                  UR                  5        Sn SnANSnAff = f)
zBegin parsing.F)rt   rs   NTrt   zGlobal unicode flag recursion.rs   zGlobal verbose flag recursion.r   )rr   r   rs   r   rt   ru   rv   rw   r   r   r   r  rm   r`   r   r   r   )r   ry   new_patternr   retryr   s         rk   _parse_SearchParser._parseV  s    DOO,DOO,!

 &
" __D0H5H
||DJJDLT0089E"ooa0 e. ww{##' (  --i8,,Y7+,LMSTT;?--i8--i8,,Y7+,LMSTT;?--i8$$.* !%s   C; ;
F<B-F77F<c                    [        U R                  [        5      (       a9  U R                  U R                  R	                  S5      5      R                  S5      $ U R                  U R                  5      $ )zApply search template.latin-1)r|   ry   r}   r  decodeencoder   s    rk   parse_SearchParser.parse  sQ     dkk5));;t{{11)<=DDYOO;;t{{++rj   )r   rw   r   r   ru   rx   r   r   ry   rv   rt   rs   )FN)ry   r   r   rr   r   zbool | NonereturnNone)r   strr  r  )r#   r  r   _util.StringIterr  	list[str]F)r   r  r   rr   r  r  )r   r  r   rr   r  ztuple[str, str]r   r  r  r  )r#   r  r   r  r   rr   r  r  )r   r  r  
str | None)r   r  r   rr   r  r   )r   r  r   rr   r  r  )FF)
r  r  r  r   r   rr   r   rr   r  r  )r   r  r  r  )ry   r  r  r  r  r   )!rd   re   rf   rg   rh   r   r   r   r   r   r   PY311r~   r   __annotations__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  ri   rb   rj   rk   rp   rp   H   s    [IJLJ@K6;kk2Gi*MM%%**KNN% & P470;=z"(T> 1D+ZWr*	C $$ $ 	$
 $ 
$L
,$\,rj   rp   c                  N   \ rS rSrSrS!S"S j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(S jrS(S jrS!S*S j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-S jrS.S jrS/S jrS0S jrS/S jrS1S jrS2S jr  S3       S4S jjrS5S jrS6S jr S r!g)7_ReplaceParseri  zPre-replace template.c                   Xl         X l        X l        X0l        SU l        / U l        / U l        / U l        / U l        / U l	        / U l
        / U l        SU l        SU l        SU l        SU l        [!        U R                  ["        5      U l        g)r{   Fr   N)pattern	_original	_template
use_format	end_foundgroup_slotsliteral_slotsresult
span_stacksingle_stackliteralsgroupsslotmanualauto
auto_indexr|   r}   rx   )r   r'  templater*  s       rk   r   _ReplaceParser.__init__  s     !!$		"4>>59rj   c                    SnUS   S:X  a  USS OUSS nUSS S:X  a  US	   nUS
:X  a  SnOUS:X  a  SnOUS:X  a  Sn [        X5      nU$ ! [         a    Un U$ f = f)zParse format index.
   r   rR   r   r   NrU   rD   r   r   r      r'      )intr   )r   r   baseprefixcharr   s         rk   parse_format_index!_ReplaceParser.parse_format_index  s     "1gna$r(!A;#":Ds{	d/C 
  	C
	s   A AAc           
        UR                   nSn/ n US:X  aD  UR                  [        R                  S45        UR                  [        R                  S45        GO/ nU[
        ;   a[  UR                  U5        U R                  U5      nU[        ;   a.  UR                  U5        U R                  U5      nU[        ;   a  M.  OdU[        ;   aZ  UR                  U5        U R                  U5      nU[        ;   a.  UR                  U5        U R                  U5      nU[        ;   a  M.  SR                  U5      R                  5       n [        R                  [        [        US5      5      4/nUS:w  a!  UR                  [        R                  S45        US;   Ga0  US:X  a  / nUR                   S-
  nU R                  U5      n US	:w  a*  UR                  U5        U R                  U5      nUS	:w  a  M*  U R!                  SR                  U5      5      n
UR                  [        R                  U
45        U R                  U5      nO{/ nU R                  U5      nU[        ;   a.  UR                  U5        U R                  U5      nU[        ;   a  M.  UR                  [        R"                  SR                  U5      45        US;   a  GM0  US:X  ai  U R                  U5      nU[$        ;  a  [        SUR                   S-
   S35      eUR                  [        R&                  U45        U R                  U5      nUS:X  Ga
  Sn/ nSnSnU R                  U5      nUS;   a/  UnU R                  U5      nUS;   a  UnUnU R                  U5      nOU[        ;   aA  UnU R                  U5      nUS;   a  UnU R                  U5      nOoUR                  U5        SnO[UnU R                  U5      nUS:X  a
  US:X  a  UnSnUb5  US;  a  [        SUR                   S-
   S35      eUnU R                  U5      nU[        ;   a.  UR                  U5        U R                  U5      nU[        ;   a  M.  U(       d$  [)        U5      (       a  US   S:X  a  [        S5      eU(       a"  U(       d  [)        U5      (       a  US   S:X  a  SnUS:X  a  UnU R                  U5      nU(       d  SnUR                  [        R*                  U R,                  (       a  UR/                  S5      OUUU(       a  [        SR                  U5      5      OSU445        US:w  a  [        SUS-
   35      e XE4$ ! [         a    [        R                  U4/n GNf = f! [         a  n	[        S
US-
   35      U	eSn	A	ff = f! [         a  n	[        SUS-
   S35      U	eSn	A	ff = f)zGet format group.r   rP   r   r:  r   N)r   .r   r   zUnmatched '[' at r   zInvalid conversion type at r   )<>r   r"   zInvalid format spec char at r   rD   z'=' alignment is not supported!rQ   r  r   )r   r   r   	FMT_FIELD	FMT_INDEX_LETTERS_UNDERSCOREformat_next_WORD_DIGITr   stripr  r=  r   r   r   rA  FMT_ATTR_FMT_CONV_TYPEFMT_CONVr   FMT_SPECrx   r  )r   r   r   r   fieldr   r   findexsindexr   r   fillwidthalignconverts                  rk   
get_format_ReplaceParser.get_format  sq    E	HCxeoor23eoor23 ++KKN((+Au*A ,,Q/ u* &[KKN((+Av+A ,,Q/ v+
 ++-#oos3ub>/BCDE
 8LL%//4!89 :oCx!#!"1 ,,Q/W"#s( &a 0$($4$4Q$7 #$s(
 #55bggfoFeoos%;< ,,Q/!# ,,Q/5j"MM!, $ 0 0 3A  5j ennbggfo%FG) :o. 8((+A.),GRS}TU*VWWLL%..!!45((+A 8DE E"G((+AO+ ! ,,Q//#(D$%E $ 0 0 3Af  ,,Q//$%E $ 0 0 3A!LL.#'D  ,,Q/3;18&*G#'D+ 7&14PQRQXQX[\Q\P]]^2_&` `$%E $ 0 0 3Av+Q ,,Q/ v+ !SZZE!HO()JKKTc%jjU1X_"Cx"# ,,Q/"LL!NN:>--I 6T %8=RWWU^!41 '	
 Cx!$6uqyk"BCC 
 |[ " #oou56E"  - W"-0A&1*.N"OUVVWr  	H 2519+Q?@aG	Hs   B.V. A#V. 'V. &U& -AV. .V
 4BV. 6V. F V. -C5V. &VV. VV. 

V+V&&V++V. .
W8WWc                   US:X  ah  U R                  U5      nUS:X  a,  U R                  5         U R                  R                  U5        gU R	                  X5      u  p4U R                  X45        gU R                  U5      nUS:X  a,  U R                  5         U R                  R                  U5        g[        SUR                  S-
   S35      e)zHandle format.rO   rP   Unmatched '}' at rU   r   N)rJ  get_single_stackr.  r   rY  handle_format_groupr   r   )r   r#   r   rR  r   s        rk   handle_format_ReplaceParser.handle_formatH  s     8  #ACx%%'""1%"ooa3((5  #ACx%%'""1%!$6qww{m1"EFFrj   c                Z   UR                   n/ nSn US:X  a6  [        S5       H'  nUS:w  a    O UR                  U5        [        U5      nM)     [	        U5      nUS:  a=  [        SU-
  5       H+  nU[
        ;  a    O UR                  U5        [        U5      nM-     UR                  S5        [	        U5      nU R                  (       a  U(       d3  U(       a  US:  d&  US:w  a   UR                  UR                   U-
  5        / nU(       a  SR                  U5      $ S$ ! [         a     N|f = f)z
Get octal.r   rD   r   r   r   N)
r   ranger   r   r   _OCTALr   r   r*  r   )r   r   r   r   r   
zero_countrN   octal_counts           rk   	get_octal_ReplaceParser.get_octal[  s    
	CxqACxLLOQA	 "
 UJA~q:~.ALLOQA	 /
 HHQK %jK*WX^imn^nHHQWWu_%E!&rwwu~0D0  		s   BD 
D*)D*c                   [        US5      nUS:  a  U R                  (       a  [        S5      eU R                  5       nU R                  (       aQ  U R                  [        U5      U R                  S   5      nUb  [        U R                  X5      5      O
[        U5      nO+U(       a$  [        U R                  [        U5      U5      5      nU R                  (       a&  U[        ;   a  U R                  [        U5      U5        gUS::  a   U R                  R                  SUS 35        gU R                  R                  [        U5      5        g)zParse octal value.r;  r   ,octal escape value outside of range 0-0o377!r   Nr]   r   )r=  rx   r   r]  r/  convert_caser   r   r*  _CURLY_BRACKETS_ORDr_  r.  r   )r   r   r   r   singles        rk   parse_octal_ReplaceParser.parse_octalz  s     D!4<DMMKLL**,F((UT__R5HI@F@RD--d;<X[\`XaD--c%j&AB5,?#?""3u:q1$""Rc{#34""3u:.rj   c                F   UR                   n/ n [        U5      S:w  a  [        SUR                   S-
   S35      e[        U5      nUS:w  a$  UR                  U5        [        U5      nUS:w  a  M$  SR                  U5      $ ! [         a  n[        SU S35      UeSnAff = f)	zGet named Unicode.rO   zNamed Unicode missing '{' at r   r   rP   r\  Nr   )r   r   r   r   r   r   r   s         rk   r    _ReplaceParser.get_named_unicode  s     	DAw#~!$B177Q;-q"QRRQAs(QG s( wwu~  	D 25';<!C	Dr   c                   [        [        R                  " U R                  U5      5      5      nU R	                  5       nU R
                  (       aQ  U R                  [        U5      U R
                  S   5      nUb  [        U R                  XC5      5      O
[        U5      nO+U(       a$  [        U R                  [        U5      U5      5      nU R                  (       a&  U[        ;   a  U R                  [        U5      U5        gUS::  a   U R                  R                  SUS 35        gU R                  R                  [        U5      5        g)zParse named Unicode.r   Nr   r]   r   )r   r   r   r   r]  r/  rj  r   r*  rk  r_  r.  r   r   r   r   rl  r   s        rk   parse_named_unicode"_ReplaceParser.parse_named_unicode  s     L''(>(>q(ABC&&(??$$SZ1DED<B<NC))$78TWX\T]E))#e*f=>E??u(;;s5z1-d]KKE#;/0KKs5z*rj   c                
   / n[        S5       HA  n[        U5      nUS:X  a  UR                  U5        M'  [        SUR                  S-
   S35      e   [        U5      nUS;   a  UR                  U5        O[        SUR                  S-
   S35      e[        S5       HS  n[        U5      nUR                  5       [        ;   a  UR                  U5        M9  [        SUR                  S-
   S35      e   SR                  U5      $ )	Get narrow Unicode.r   rD   z"Invalid wide Unicode character at r   r   )rD   rE      r   )rb  r   r   r   r   r   _HEXr   r   r   r   rN   r   s        rk   get_wide_unicode_ReplaceParser.get_wide_unicode  s     qAQACxQ!$FqwwQR{mST"UVV  G
?LLO B177Q;-qQRRqAQAwwyD Q!$FqwwQR{mST"UVV  wwu~rj   c                    / n[        S5       HS  n[        U5      nUR                  5       [        ;   a  UR	                  U5        M9  [        SUR                  S-
   S35      e   SR                  U5      $ )rv  rw  zInvalid Unicode character at r   r   r   rb  r   r   rx  r   r   r   r   ry  s        rk   get_narrow_unicode!_ReplaceParser.get_narrow_unicode  sf     qAQAwwyD Q!$A!''A+a"PQQ  wwu~rj   c                   U(       a  U R                  U5      OU R                  U5      n[        US5      nU R                  5       nU R                  (       aQ  U R                  [        U5      U R                  S   5      nUb  [        U R                  X55      5      O
[        U5      nO+U(       a$  [        U R                  [        U5      U5      5      nU R                  (       a&  U[        ;   a  U R                  [        U5      U5        gUS::  a   U R                  R                  SUS 35        gU R                  R                  [        U5      5        g)zParse Unicode.r<  r   Nr   r]   r   )rz  r~  r=  r]  r/  rj  r   r   r*  rk  r_  r.  r   )r   r   wider   r   rl  s         rk   parse_unicode_ReplaceParser.parse_unicode  s     ,0t$$Q'T5L5LQ5OD"&&(??$$SZ1DED<B<NC))$78TWX\T]E))#e*f=>E??u(;;s5z1-d]KKE#;/0KKs5z*rj   c                    / n[        S5       HS  n[        U5      nUR                  5       [        ;   a  UR	                  U5        M9  [        SUR                  S-
   S35      e   SR                  U5      $ )z	Get byte.rU   zInvalid byte character at r   r   r   r}  )r   r   r   _xr   s        rk   get_byte_ReplaceParser.get_byte  sf     (BQAwwyD Q!$>qww{m1"MNN  wwu~rj   c                    [        U R                  U5      S5      nU R                  5       nU R                  (       aQ  U R	                  [        U5      U R                  S   5      nUb  [        U R	                  XC5      5      O
[        U5      nO+U(       a$  [        U R	                  [        U5      U5      5      nU R                  (       a&  U[        ;   a  U R                  [        U5      U5        gU R                  R                  SUS 35        g)zParse byte.r<  r   Nr]   r   )r=  r  r]  r/  rj  r   r   r*  rk  r_  r.  r   rr  s        rk   parse_bytes_ReplaceParser.parse_bytes  s     DMM!$b)&&(??$$SZ1DED<B<NC))$78TWX\T]E))#e*f=>E??u(;;s5z1-KKE#;/0rj   c                   UR                   nU/n [        U5      nUS:w  a  [        SUR                   S-
   S35      eUR                  U5        [        U5      nU[        ;   ab  UR                  U5        [        U5      nUS:w  a.  U[        ;   a  UR                  U5        [        U5      nUS:w  a  M.  UR                  U5        OU[
        ;   ab  UR                  U5        [        U5      nUS:w  a.  U[        ;   a  UR                  U5        [        U5      nUS:w  a  M.  UR                  U5        O[        SUR                   S-
   S35      eS	R                  U5      $ ! [         a  n[        SU S35      UeSnAff = f)
Get group number.rE  zGroup missing '<' at r   r   rF  zInvalid group character at zUnmatched '<' at Nr   )	r   r   r   r   rL  rI  rK  r   r   )r   r#   r   r   r   r   r   s          rk   get_named_group_ReplaceParser.get_named_group  s[    	CQACx!$9!''A+a"HIILLOQAF{QG3hF{QQA 3h Q))QG3hEzQQA 3h Q!$?!}A"NOO wwu~  	C 1%:;B	Cs1   B!E 4E AE  E 2E 
E>)E99E>c                   / n U[         ;   aO  US:w  aI  UR                  U5        [        U5      nU[         ;   a  UR                  U5        OUR                  S5        U(       a  SR                  U5      $ S$ ! [         a     N&f = f)r  rD   r   r   N)rL  r   r   r   r   r   )r   r#   r   r   s       rk   	get_group_ReplaceParser.get_group%  sw     		F{qCxQG;LLOHHQK "'rwwu~0D0  		s   AA7 A7 7
BBc                ^    [        U5      nUS:X  a  U R                  [        U5      U5      $ U$ )zGet next format char.r]   )r   format_references)r   r   r   s      rk   rJ  _ReplaceParser.format_next5  s/     G56$Yt%%d1gq1EAErj   c                   U R                  X5      nU(       a;  [        US5      nUS:  a  U R                  (       a  [        S5      e[	        U5      nU$ U[
        ;   d  US:X  a  [        SU-      nU$ U R                  (       d,  US:X  a&  [	        [        U R                  U5      S5      5      nU$ U R                  (       d,  US:X  a&  [	        [        U R                  U5      S5      5      nU$ U R                  (       d-  US:X  a'  [        R                  " U R                  U5      5      nU$ US	:X  a&  [	        [        U R                  U5      S5      5      nU$ UR                  S
5        SnU$ )zHandle format references.r;  r   ri  r]   r>   r<  r$   r7   r'   r   )rf  r=  rx   r   r   _STANDARD_ESCAPES_BACK_SLASH_TRANSLATIONrz  r~  r   r   r   r  r   )r   r#   r   octalr   r   s         rk   r   _ReplaceParser.format_references;  sE    q$E1A4xDMM !OPPFE  ##qDy+D1H5E  18D11!4b9:E  18D33A6;<E  18 ''(>(>q(ABE  #XDMM!,b12E  HHQKErj   c                   U R                  X5      nU[        ;   a  U(       a  U R                  X25        gU[        ;   d  US:X  aO  U R                  (       d>  U R                  X5      nU(       d  U R                  X5      nU R                  SU-   5        gU[        ;   a/  U R                  5         U R                  R                  SU-   5        gUS:X  a  U R                  U[        5        gUS:X  a  U R                  U[        5        gUS:X  a  U R                  U[        5        gUS:X  a  U R                  U[        5        gUS:X  a  SU l        gU R"                  (       d  US	:X  a  U R%                  US5        gU R"                  (       d  US
:X  a  U R%                  U5        gU R"                  (       d  US:X  a  U R'                  U5        gUS:X  a  U R)                  U5        gU R                  (       a7  U[*        ;   a-  U R                  R                  S5        U R-                  X5        gU R                  (       a=  US:X  a7  U R                  R                  S5        U R                  R                  U5        gSU-   nU R                  5         U R.                  (       a  U R1                  XPR.                  S   5      nU R                  R                  U5        g)r   r   r]   r   r5   r   r,   r.   Tr>   r$   r7   r'   r^   r   N)rf  rc  rm  rL  r*  r  r  handle_groupr  r]  r.  r   single_case_LOWER	span_case_UPPERr+  rx   r  rs  r  _CURLY_BRACKETSr_  r/  rj  )r   r#   r   r  groupr   s         rk   r   _ReplaceParser.referenceT  s   q$;5U&6kQ#XtNN1(E,,Q2dUl+##!!#KKtax(#XQ'#XNN1f%#XQ'#XNN1f%#X!DN18q$'18q!18$$Q'#XQ__o!5KKv&q$__cKKv&KKq!1HE!!#))%1DEKKu%rj   c                   S/U l         [        R                  " U5      n  [        U5      nU R                  (       a  U[
        ;   a  U R                  X25        O?US:X  a   [        U5      nU R                  X25        OU R                   R                  U5        My  ! [         a    U R                   R                  U5        e f = f! [         a     Of = f[        U R                   5      S:  as  U R                  R                  SR                  U R                   5      5        U R                   SS2	 U R                   R                  S5        U =R                  S-  sl        SR                  U R                  5      $ )Parse template.r   r]   r   N)r.  r   r   r   r*  r  r_  r   r   r   r   r-  r   r3  )r   r7  r   r#   s       rk   _parse_template_ReplaceParser._parse_template  s0    dX&	G??qO';&&q,$Y Gq,
 KK&&q)  ) **1-
  		 t{{a%%bggdkk&:;AKKr"IINIwwt))**s)   ?C  B <C 'CC 
CCc                   [        U R                  [        5      (       a?  U R                  U R                  R	                  S5      5      R                  S5      U l        O U R                  U R                  5      U l        [        R                  (       a  Sn[        R                  " U R                  U R                  5       H  n[        U[        5      (       a8  U R                  R                  X45        U R                  R                  S5        O3U(       a*  U R                  R                  [!        ["        U5      5        OM  US-  nM     g[        R                  " U R                  U R                  5      u  U l        U l        g)r  r  r   Nr   )r|   r(  r}   r  r  r  r)  r   PY312_parserparse_templater'  r=  r2  r   r1  r   r   )r   countparts      rk   r  _ReplaceParser.parse_template  s    dnne,,!11$..2G2G	2RSZZ[deDN!11$..ADN;;E..t~~t||LdC((KK&&}5MM((.MM((fd);<
 M *1)?)?PTP\P\)]&DKrj   c                   U R                   (       a  U R                   R                  5         U R                  (       a  U R                  R                  5         U R                   R                  U5        [	        U R                   5      nSU l         U R
                  (       d  [        U5      nU R                  (       a  U[        ;   a  U R                  XA5        ONUS:X  a   [        U5      nU R                  XA5        O*U R                  R                  U R                  XB5      5        U R
                  (       d  U[	        U R                   5      :  a  SU l        OU R
                  (       d  M  U[	        U R                   5      :X  a  U R                   R                  5         gg! [         a    U R                  R                  U5        e f = f! [         a     Nkf = f)zNUppercase or lowercase the next range of characters until end marker is found.Fr]   N)r/  popr0  r   r   r+  r   r*  r  r_  r   r   r.  rj  )r   r   caser  r#   s        rk   r  _ReplaceParser.span_case  s[    ??OO!!!#t$DOO$	nnG??qO';&&q,$Y Gq,
 KK&&t'8'8'AB>>US-A%A%*DN nnn$ C((OO! ) ) **1-  		s2   AG
 F  ;AG
 G
  'GG
 

GGc                \   U R                   (       ar  / nU HY  nU[        ;   a;  UR                  U[        :X  a  UR	                  5       OUR                  5       5        MH  UR                  U5        M[     SR                  U5      $ U[        :X  a  UR	                  5       $ UR                  5       $ )zConvert case.r   )rx   r   r   r  r   r   r   )r   r   r  casedr   s        rk   rj  _ReplaceParser.convert_case  sz     ==E&LLdfn!'')LLLO	 
 775>!$(FN5;;=EErj   c                ^   U R                   (       a  U R                   R                  5         U R                   R                  U5         [        U5      nU R                  (       a  U[
        ;   a  U R                  X15        gUS:X  a   [        U5      nU R                  X15        gU R                   (       a?  U R                  5       nUb+  U R                  R                  U R                  X45      5        ggg! [         a    U R                  R                  U5        e f = f! [         a     gf = f)z*Uppercase or lowercase the next character.r]   N)r0  r  r   r   r*  r  r_  r   r   r.  r]  rj  )r   r   r  r#   	this_cases        rk   r  _ReplaceParser.single_case  s     !!#  &	QA1#7""1(dQANN1( "" 113	(KK&&t'8'8'FG ) # % KK&&q)  		s1   7D  D C5 $AD 5'DD 
D,+D,c                    SnU R                   (       a-  U R                   R                  5       nU R                   (       a  M-  U$ )z)Get the correct single stack item to use.N)r0  r  )r   rl  s     rk   r]  _ReplaceParser.get_single_stack  s9     &&**,F rj   c                ^   US:X  a  U R                   (       a@  [        U R                  5      n[        R                  U4US'   U =R                  S-  sl        OU R
                  (       dX  U R                   (       dG  SU l         [        U R                  5      n[        R                  U4US'   U =R                  S-  sl        OQ[        S5      eU R
                  (       d  U R                   (       d  SU l        OU R
                  (       d  [        S5      eU R                  U[        U5      S5        g)zHandle format group.r   r   r   Tz2Cannot switch to auto format during manual format!z2Cannot switch to manual format during auto format!N)	r5  r  r6  r   rG  r4  r   r  tuple)r   rR  r   s      rk   r^  "_ReplaceParser.handle_format_group  s     B;yyDOO, ??E2Q1$[[ 	DOO, ??E2Q1$ !UVVTYYDKQRR%td3rj   Nc                ,   [        U R                  5      S:  a  U R                  R                  SR	                  U R                  5      5        U(       a  U R                  R                  SUS/5        OU R                  R                  U5        U R                  SS2	 U R                  R                  S5        U =R                  S-  sl        OAU(       a  U R                  R                  SUS/5        OU R                  R                  U5        U R                  R                  U R                  U R                  (       a  U R                  S   OSU R                  5       Uc  U R                  (       a  SOSOU445        U =R                  S-  sl        g)zHandle groups.r   r   z\g<rF  Nr   rb   )r   r.  r-  r   r   r   r3  r,  r/  r]  rx   )r   r   capture	is_formats       rk   r  _ReplaceParser.handle_group  s)    t{{a%%bggdkk&:;""))64*=>""))$/AKKr"IINI%%vtS&9:%%d+		,0OOT__R())+5<_4==Rb'		
 			Q	rj   c                    U R                   $ )z0Return the unmodified template before expansion.)r(  r  s    rk   get_base_template _ReplaceParser.get_base_template?  s     ~~rj   c                   [        U R                  R                  [        U R                  5      5      (       d  [	        S5      eU R                  5         [        [        U R                  5      [        U R                  5      [        U R                  5      [        U R                  5      U R                  U R                  5      $ )r  z<Pattern string type must match replace template string type!)r|   r'  typer(  	TypeErrorr  r   r  r2  r,  r1  hashr*  rx   r  s    rk   r  _ReplaceParser.parseD  s     $,,..T^^0DEEZ[[$++$""#$-- OOMM
 	
rj   )r(  r)  r5  r6  r+  r,  r2  rx   r-  r1  r4  r'  r.  r0  r3  r/  r*  r  )r'  zPattern[AnyStr]r7  r   r*  rr   r  r  )r   r  r  z	int | str)r   r  r   r  r  z!tuple[str, list[tuple[int, Any]]])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  rr   r  r  )r#   r  r   r  r  r  )r#   r  r   r  r  r   )r7  r  r  r  )r  r  )r   r  r  r=  r  r  )r   r  r  r=  r  r  )r  z
int | None)rR  r  r   zlist[tuple[int, Any]]r  r  )NF)r   r  r  z"tuple[tuple[int, Any], ...] | Noner  rr   r  r  r!  )r  zReplaceTemplate[AnyStr])"rd   re   rf   rg   rh   r   rA  rY  r_  rf  rm  r   rs  rz  r~  r  r  r  r  r  rJ  r  r   r  r  r  rj  r  r]  r^  r  r  r  ri   rb   rj   rk   r%  r%    s    :*&N`G&1>/*"+"2
+$
1 D1 F2*&X+@^,"BF244 7;	   4  	 
 
 D

rj   r%  c                     ^  \ rS rSr% SrSrS\S'   S\S'   S\S	'   S
\S'   S\S'   S
\S'   S\S'                 SU 4S j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S jrSrU =r$ )!r   iV  zReplacement template expander.)r2  r,  r1  pattern_hashr*  _hash_bytestuple[tuple[int, int], ...]r2  :tuple[tuple[int, tuple[int | None, int | None, Any]], ...]r,  tuple[AnyStr | None, ...]r1  r=  r  rr   r*  r  r  c                Z   > [         TU ]  UUUUUU[        [        U 5      XUXEU45      S9  g)r{   )r*  r2  r,  r1  r  r  r  N)superr   r  r  )r   r2  r,  r1  r  r*  rx   	__class__s          rk   r   ReplaceTemplate.__init__c  sG     	!#%J h 	 	
rj   c                $    U R                  U5      $ )zCall.)expand)r   r   s     rk   __call__ReplaceTemplate.__call__~  s     {{1~rj   c                    U R                   $ )zHash.)r  r  s    rk   __hash__ReplaceTemplate.__hash__  s     zzrj   c                   [        U[        5      =(       a    U R                  UR                  :H  =(       a    U R                  UR                  :H  =(       ay    U R                  UR                  :H  =(       aY    U R
                  UR
                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ zEqual.r|   r   r2  r,  r1  r  r*  r  r   others     rk   __eq__ReplaceTemplate.__eq__  s     uo. (KK5<<'( 1 11( MMU^^+( !3!33	(
 OOu///( KK5<<'	
rj   c                   [        U[        5      (       + =(       d    U R                  UR                  :g  =(       d    U R                  UR                  :g  =(       dy    U R                  UR                  :g  =(       dY    U R
                  UR
                  :g  =(       d9    U R                  UR                  :g  =(       d    U R                  U R                  :g  $ r  r  r  s     rk   __ne__ReplaceTemplate.__ne__  s     5/22 'KK5<<'' 1 11' MMU^^+' !3!33	'
 OOu///' KK4;;&	
rj   c           	         SR                  U R                  U R                  R                  U R                  U R
                  U R                  U R                  U R                  5      $ )zRepresentation.z#{}.{}({!r}, {!r}, {!r}, {!r}, {!r}))	r   re   r  rd   r2  r,  r1  r  r*  r  s    rk   __repr__ReplaceTemplate.__repr__  sN     5;;OOT^^44KK))4==t
 	
rj   c                R    SnU R                    H  nUS   U:X  d  M  US   n  U$    U$ )z,Find and return the appropriate group index.r   r   )r2  )r   r   g_indexr  s       rk   _get_group_index ReplaceTemplate._get_group_index  s;     [[EQx5 (	 ! rj   c                R    SnU R                    H  nUS   U:X  d  M  US   n  U$    U$ )z+Find and return the appropriate group case.)NNr   r   r   )r,  )r   r   g_caser  s       rk   _get_group_attributes%ReplaceTemplate._get_group_attributes  s=     "%%EQx5 q	 & rj   c           	     2   Uc  [        S5      eUR                  SS n[        X R                  (       a  [        O[
        5      (       d  [        S5      e/ n[        S[        U R                  5      5       GHJ  nUnU R                  U   nUGc   U R                  U5      nU R                  U5      u  pn
U R                  (       d   UR                  U5      nUc  UnOd UR                  U5      n[        R                   " Uc  / OU/U
[        U[        5      (       a  [        R"                  O[        R$                  U5      nUb+  U[&        :X  a  UR)                  5       nOUR+                  5       nU	b=  U	[&        :X  a  USS R)                  5       USS -   nOUSS R+                  5       USS -   nUR-                  U5        GMM     UR/                  U5      $ ! [         a  n[        SU S35      UeSnAff = f! [         a  n[        SU S35      UeSnAff = f)z&Using the template, expand the string.NzMatch is None!r   z6Match string type does not match expander string type!'z' is out of range!r   )r   stringr|   r  r}   r  r  rb  r   r1  r  r  r*  r  
IndexErrorr   format_captures_to_bstr_to_strr  r   r   r   r   )r   r   sepr   r'   r   r   r  r  r  r  r   objs                rk   r  ReplaceTemplate.expand  s    9-..hhrl#u==TUUq#dmm,-AEa Ay//6262L2LU2S/	QGGG,9 #A
Qggg. --!ku*4S%*@*@emm	A ( F*GGIGGI*"f,aFLLNQqrU2aFLLNQqrU2KKNI .L xx~5 & Q(1WI5G)HIqPQ & Q(1WI5G)HIqPQs0   GG7
G4G//G47
HHHrb   )r2  r  r,  r  r1  r  r  r=  r*  rr   rx   rr   r  r  )r   zMatch[AnyStr] | Noner  r   )r  r=  )r  r
   r  rr   )r  r  )r   r=  r  r=  )r   r=  r  z"tuple[int | None, int | None, Any])rd   re   rf   rg   rh   	__slots__r#  r   r  r  r  r  r  r  r  r  ri   __classcell__)r  s   @rk   r   r   V  s    (fI''KK''JL
+
 P
 ,	

 
 
 
 

6




1 1rj   r   c                    [         U R                  U R                  U R                  U R                  U R
                  U R                  44$ )zPickle.)r   r2  r,  r1  r  r*  r  )r!   s    rk   _pickler    s:     QXXq}}ajj!..RSR^R^`a`h`hiiirj   )6rh   
__future__r   rer   syscopyreg_copyregr   r   r   unicodedatar   r   r   typingr   r   r	   r
   r   r   version_info
re._parserr  	sre_parse__all__	frozensetr   rL  rc  rx  rI  rK  r  r  r   r   r   r   rk  r  r  r  rO  r   r`   rm   rp   r%  	Immutabler   r  picklerb   rj   rk   <module>r     s|   #  
   " # = =w 
 
E	F	;	<ab$y'88 f$AB J'O,FN_,	/*34-  
	
 	  !I "9 "B	,GFO B	,JF
WV_ F
RZeoowv Zzj 	 )rj   