Ë
    ™Ó^j®? ã                   óâ  — d dl Z d dlZd dlZd dlmZ d dlmZ g d¢Z G d„ de«      Z	 G d„ de«      Z
 G d	„ d
e«      Z G d„ de«      Z G d„ de j                  «      Zej                  Zej                   Zej"                  Zej$                  Zej&                  Zej(                  Zej*                  Zej,                  Zej.                  Zej0                  Zej2                  Zej4                  Zej6                  Zej8                  Zej:                  Zej<                  Zej>                  Zej@                  Z ejB                  Z!ejD                  Z"ejF                  Z#ejH                  Z$ejJ                  Z%ejL                  Z&ejN                  Z'ejP                  Z(ejR                  Z)ejT                  Z*ejV                  Z+ejX                  Z,ejZ                  Z-ej\                  Z.ej^                  Z/ej`                  Z0eZ1eez  Z2eez  ez  Z3ed eeiZ4e2ez  ez  ez  ez  ez  Z5eez  ez  ez  ez  ez  e3z  Z6 e7ejp                  «      Z9 e7ejt                  «      Z;e9e;z  Z< e7ejz                  «      Z> e7ej~                  «      Z@ e7d«       e7dg«      z  ZAe< e7d«      z  ZBe< e7d«      z  ZCdZD ejŠ                  «       ZFeFdz  ZGdeGz  dz
  ZHeeeeeeeeeeeeeeedœZIeez  ZJd ZKeez  ZLeeLz  ZMd d ed eeeLeLiZNddddœZOdZP G d„ d«      ZQ eQ«       ZR eSePj©                  «       «      D ]  \  ZUZV eWeReVeU«       Œ dýd„ZXd„ ZYd „ ZZd!„ Z[d"„ Z\d#„ Z]d$„ Z^d%„ Z_dþd'„Z`d(„ Zad)„ Zbd*„ Zcd+„ Zdd,„ Zed-„ Zfd.„ Zgd/„ Zhd0d1d2d3œZid4„ Zjd5„ Zkd6„ Zld7„ Zmd8„ Znd9„ Zod:„ Zpd;„ Zqd<„ Zrd=„ Zsd>„ Ztd?„ Zud@„ ZvdA„ ZwdB„ ZxdC„ ZydD„ ZzdE„ Z{dF„ Z|dG„ Z}dH„ Z~dI„ ZdJ„ Z€dK„ Z�dL„ Z‚dM„ ZƒdN„ Z„dO„ Z…dP„ Z†dÿdQ„Z‡dR„ ZˆdS„ Z‰dT„ ZŠdU„ Z‹dV„ ZŒdW„ Z�dX„ ZŽdY„ Z�dZ„ Z�d[„ Z‘d\„ Z’d]„ Z“d^„ Z”d_„ Z•d`„ Z–da„ Z—db„ Z˜dc„ Z™dd„ Zšde„ Z›df„ Zœdg„ Z�dh„ Zždi„ ZŸ e djj©                  «       «      Z¡ e dkj©                  «       «      Z¢�d dl„Z£dm„ Z¤dn„ Z¥do„ Z¦dp„ Z§dqZ¨dZ©dZªdZ«dZ¬drZ­dZ®dsdtduœZ¯eKdedvedeLdwiZ°dx„ Z± G dy„ dz«      Z² G d{„ d|e²«      Z³ G d}„ d~e²«      Z´ G d„ d€e´«      Zµ G d�„ d‚e´«      Z¶ G dƒ„ d„e²«      Z· G d…„ d†e³«      Z¸ G d‡„ dˆe²«      Z¹ G d‰„ dŠe²«      Zº G d‹„ dŒe²«      Z» G d�„ dŽe²«      Z¼ G d�„ d�e²«      Z½ G d‘„ d’e³«      Z¾ G d“„ d”e³«      Z¿ G d•„ d–e³«      ZÀ G d—„ d˜e³«      ZÁ G d™„ dšeÁ«      ZÂ G d›„ dœe³«      ZÃ G d�„ dže³«      ZÄ G dŸ„ d eÄ«      ZÅ G d¡„ d¢e³«      ZÆ G d£„ d¤e³«      ZÇ G d¥„ d¦e²«      ZÈ G d§„ d¨e²«      ZÉ G d©„ dª«      ZÊ G d«„ d¬e²«      ZË G d­„ d®eË«      ZÌ G d¯„ d°e²«      ZÍ G d±„ d²e³«      ZÎ G d³„ d´eË«      ZÏ G dµ„ d¶e²«      ZÐ G d·„ d¸e²«      ZÑ G d¹„ dºe²«      ZÒ G d»„ d¼e²«      ZÓ G d½„ d¾e³«      ZÔ G d¿„ dÀe²«      ZÕ G dÁ„ dÂe²«      ZÖ G dÃ„ dÄe³«      Z× G dÅ„ dÆe²«      ZØ G dÇ„ dÈe²«      ZÙ G dÉ„ dÊeÙ«      ZÚ G dË„ dÌeÙ«      ZÛ G dÍ„ dÎeÙ«      ZÜ G dÏ„ dÐeÙ«      ZÝ G dÑ„ dÒe³«      ZÞ G dÓ„ dÔe³«      Zß G dÕ„ dÖeß«      Zà G d×„ dØe³«      Zá G dÙ„ dÚe³«      Zâ G dÛ„ dÜe²«      Zã G dÝ„ dÞeã«      Zä G dß„ dàe¹«      Zå G dá„ dâ«      Zæ G dã„ dä«      Zçdå„ Zèdæ„ Zé G dç„ dè«      Zê e�jÖ                  «       Zìi Zíeì�jÝ                  «       D ]j  \  Zï\  ZðZñeí�jå                  eðdi f«      \  ZóZô eõeóeïeö¬é«      Zóeóeôfeíeð<   eñ�jÝ                  «       D ]$  \  Z÷Zø eõeô�jå                  eød«      e÷eö¬é«      eôeø<   Œ& Œl dêdëdìdídîdïdðdñœZùdZúdZû e£ddòdó«       e£ddòd&«       e£ddôdó«       e£ddõdó«       e£ddõd&«       e£ddödó«       e£ddöd&«      d÷œZü eýeü«      Zþeþ�jÿ                   e£ddòdóeú¬ø«       e£ddòd&eú¬ø«       e£ddõdóeú¬ø«       e£ddõd&eú¬ø«       e£ddödóeú¬ø«       e£ddöd&eú¬ø«      dùœ«        eýeü«      �Z �e �jÿ                   e£ddòdóeû¬ø«       e£ddòd&eû¬ø«       e£ddõdóeû¬ø«       e£ddõd&eû¬ø«       e£ddödóeû¬ø«       e£ddöd&eû¬ø«      dùœ«        eá«        e¸«        e¸d&«       eÎ«        eâ«        eÆ«        eÃ«        eÃ«       dúœ�Z eý�e«      �Z�e�jÿ                   e¸eú¬ø«       e¸d&eú¬ø«       eâeú¬ø«       eÆeú¬ø«      dûœ«        eý�e«      �Z�e�jÿ                   e¸eû¬ø«       e¸d&eû¬ø«       eâeû¬ø«       eÆeû¬ø«      dûœ«        eý�e«      �Z�e�jÿ                   e¾«        e¾d&«       eÀ«        e¿«       dûœ«        eÇ«        eÇ«        eÔ«        eÞ«       düœ�Zy(  é    N)Údefaultdict)Ú_regex)%ÚAÚASCIIÚBÚ	BESTMATCHÚDÚDEBUGÚEÚENHANCEMATCHÚFÚFULLCASEÚIÚ
IGNORECASEÚLÚLOCALEÚMÚ	MULTILINEÚPÚPOSIXÚRÚREVERSEÚSÚDOTALLÚTÚTEMPLATEÚUÚUNICODEÚV0ÚVERSION0ÚV1ÚVERSION1ÚWÚWORDÚXÚVERBOSEÚerrorÚScannerÚ	RegexFlagc                   ó   — e Zd ZdZdd„Zy)r'   a‰  Exception raised for invalid regular expressions.

    Attributes:

        msg: The unformatted error message
        pattern: The regular expression pattern
        pos: The position in the pattern where compilation failed, or None
        lineno: The line number where compilation failed, unless pos is None
        colno: The column number where compilation failed, unless pos is None
    Nc                 ót  — t        |t        «      rdnd}|| _        || _        || _        |�w|�u|j                  |d|«      dz   | _        ||j                  |d|«      z
  | _        dj                  ||«      }||v r)|dj                  | j                  | j                  «      z  }t        j                  | |«       y )Nú
ó   
r   é   z{} at position {}z (line {}, column {}))Ú
isinstanceÚstrÚmsgÚpatternÚposÚcountÚlinenoÚrfindÚcolnoÚformatÚ	ExceptionÚ__init__)ÚselfÚmessager2   r3   Únewlines        ú\/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/regex/_regex_core.pyr:   zerror.__init__*   s´   € Ü$ W¬cÔ2‘$¸ˆØˆŒØˆŒØˆŒØÐ 3 ?Ø!Ÿ-™-¨°°CÓ8¸1Ñ<ˆDŒKØ˜wŸ}™}¨W°a¸Ó=Ñ=ˆDŒJà)×0Ñ0°¸#Ó>ˆGà˜'Ñ!ØÐ2×9Ñ9¸$¿+¹+Ø—*‘*óñ �ô 	×Ñ˜4 Õ)ó    )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r:   © r?   r>   r'   r'      s   „ ñ	ô*r?   r'   c                   ó   — e Zd Zy)Ú_UnscopedFlagSetN©r@   rA   rB   rD   r?   r>   rF   rF   =   ó   „ Ør?   rF   c                   ó   — e Zd Zy)Ú
ParseErrorNrG   rD   r?   r>   rJ   rJ   A   rH   r?   rJ   c                   ó   — e Zd Zy)Ú_FirstSetErrorNrG   rD   r?   r>   rL   rL   E   rH   r?   rL   c                   ó²   — e Zd ZdxZZdxZZdxZZdxZ	Z
dxZZdxZZdxZZdxZZd	xZZd
xZZdxZZdxZZdxZZdxZZdxZZ dxZ!Z"dxZ#Z$d„ Z%e&jN                  Z'y)r)   é€   i   i   i €  i @  é   é   é   i   i   é   é    i    é   i   é@   r.   c                 óœ  — | j                   �d| j                   z  S | j                  }g }|dk  }|r| }| j                  D ]@  }||j                  z  sŒ||j                   z  }|j                  d|j                   z  «       ŒB |r|j                  t	        |«      «       dj                  |«      }|rt        |«      dkD  rd|z  }|S d|z  }|S )Nzregex.%sr   ú|r.   z~(%s)z~%s)Ú_name_Ú_value_Ú	__class__ÚappendÚhexÚjoinÚlen)r;   ÚvalueÚmembersÚnegativeÚmÚress         r>   Ú__repr__zRegexFlag.__repr__]   sÒ   € Ø�;‰;Ð"Ø §¡Ñ+Ð+à—‘ˆØˆØ˜1‘9ˆáØ�FˆEà—‘ò 	6ˆAØ�q—y‘yÓ Ø˜!Ÿ)™)˜Ñ#�Ø—‘˜z¨A¯H©HÑ4Õ5ð	6ñ
 Ø�N‰Nœ3˜u›:Ô&à�h‰h�wÓˆáÜ�7‹|˜aÒØ ‘m�ð ˆ
ð ˜c‘k�àˆ
r?   N)(r@   rA   rB   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   rd   ÚobjectÚ__str__rD   r?   r>   r)   r)   I   s¼   „ ØÐ€AˆØÐ€Aˆ	ØÐ€AˆØÐ€AˆàÐ€AˆØÐ€Aˆ
ØÐ€AˆØÐ€Aˆ	ØÐ€AˆØÐ€AˆØÐ€AˆØÐ€AˆØÐ€BˆØÐ€BˆØÐ€AˆØÐ€AˆØÐ€Aˆòð: �n‰n�Gr?   r)   z()|?*+{^$.[\#Ú z -z &_-.)ú||ú~~ú&&ú--rQ   r.   )ÚaÚbÚeÚfÚir   rb   ÚpÚrÚsÚur   r!   ÚwÚxrO   rP   )rv   rt   r   aæ  
FAILURE
SUCCESS
ANY
ANY_ALL
ANY_ALL_REV
ANY_REV
ANY_U
ANY_U_REV
ATOMIC
BOUNDARY
BRANCH
CALL_REF
CHARACTER
CHARACTER_IGN
CHARACTER_IGN_REV
CHARACTER_REV
CONDITIONAL
DEFAULT_BOUNDARY
DEFAULT_END_OF_WORD
DEFAULT_START_OF_WORD
END
END_OF_LINE
END_OF_LINE_U
END_OF_STRING
END_OF_STRING_LINE
END_OF_STRING_LINE_U
END_OF_WORD
FUZZY
GRAPHEME_BOUNDARY
GREEDY_REPEAT
GROUP
GROUP_CALL
GROUP_EXISTS
KEEP
LAZY_REPEAT
LOOKAROUND
NEXT
PROPERTY
PROPERTY_IGN
PROPERTY_IGN_REV
PROPERTY_REV
PRUNE
RANGE
RANGE_IGN
RANGE_IGN_REV
RANGE_REV
REF_GROUP
REF_GROUP_FLD
REF_GROUP_FLD_REV
REF_GROUP_IGN
REF_GROUP_IGN_REV
REF_GROUP_REV
SEARCH_ANCHOR
SET_DIFF
SET_DIFF_IGN
SET_DIFF_IGN_REV
SET_DIFF_REV
SET_INTER
SET_INTER_IGN
SET_INTER_IGN_REV
SET_INTER_REV
SET_SYM_DIFF
SET_SYM_DIFF_IGN
SET_SYM_DIFF_IGN_REV
SET_SYM_DIFF_REV
SET_UNION
SET_UNION_IGN
SET_UNION_IGN_REV
SET_UNION_REV
SKIP
START_OF_LINE
START_OF_LINE_U
START_OF_STRING
START_OF_WORD
STRING
STRING_FLD
STRING_FLD_REV
STRING_IGN
STRING_IGN_REV
STRING_REV
FUZZY_EXT
c                   ó   — e Zd Zy)Ú	NamespaceNrG   rD   r?   r>   rx   rx   )  rH   r?   rx   é   c                 óÄ  — t        | j                  «       «      }t        |«      |z
  }|dk  ry||z  |z   }ddl}t	        |d«      sy|j                  ||«      D ]  }		 | |	= Œ |j                  «        i }
t        | «      D ]   \  }}}}}}|||||||f<   	 |||f   |
||f<   Œ" |j                  «        |j                  |
«       y# t        $ r Y Œvw xY w# t        $ r Y Œ_w xY w)aC  Make room in the given cache.

    Args:
        cache_dict: The cache dictionary to modify.
        args_dict: The dictionary of named list args used by patterns.
        max_length: Maximum # of entries in cache_dict before it is shrunk.
        divisor: Cache will shrink to max_length - 1/divisor*max_length items.
    r   NÚsample)	ÚtupleÚkeysr^   ÚrandomÚhasattrr{   ÚKeyErrorÚclearÚupdate)Ú
cache_dictÚ	args_dictÚlocale_sensitiveÚ
max_lengthÚdivisorÚ
cache_keysÚoverageÚnumber_to_tossr~   Ú
doomed_keyÚsensitivity_dictr2   Úpattern_typeÚflagsÚargsÚdefault_versionÚlocales                    r>   Ú_shrink_cacher’   0  s%  € ô �z—‘Ó(Ó)€JÜ�*‹o 
Ñ*€GØ�‚{ð 	à 7Ñ*¨WÑ4€Nó Ü�6˜8Ô$ð 	à—m‘m J°Ó?ò ˆ
ð	Ø˜:Ñ&ðð ‡O�OÔØÐÜGLÈZÓGXò ÑCˆ�˜u d¨O¸VØKOˆ	�'˜<¨°ÀÐGÑHð	Ø6FÀ|ÐU\ÐG\Ñ6]Ð˜\¨7Ð2Ò3ðð ×ÑÔØ×ÑÐ,Õ-øô ò 	áð	ûô ò 	Ùð	ús$   ÁCÂCÃ	CÃCÃ	CÃCc                 ó|   — | j                   }|t        z  dk(  r|| j                  z  }t        j                  ||«      S )zFolds the case of a string.r   )rŽ   Ú_ALL_ENCODINGSÚguess_encodingr   Ú	fold_case)ÚinfoÚstringrŽ   s      r>   Ú
_fold_caser™   b  s;   € à�J‰J€EØ”Ñ 1Ò$Ø�×$Ñ$Ñ$ˆä×Ñ˜E 6Ó*Ð*r?   c                 óZ   — t        t        j                  | j                  |«      «      dkD  S ©z$Checks whether a character is cased.r.   )r^   r   Úget_all_casesrŽ   )r—   Úchars     r>   Ú
is_cased_irž   j  s#   € äŒv×#Ñ# D§J¡J°Ó5Ó6¸Ñ:Ð:r?   c                 óF   — t        t        j                  | |«      «      dkD  S r›   )r^   r   rœ   )rŽ   r�   s     r>   Ú
is_cased_fr    n  s   € äŒv×#Ñ# E¨4Ó0Ó1°AÑ5Ð5r?   c                 óž   — t        | j                  t        z  «      }t        | ||«      }|rt	        |t
        «      rg S |j                  |«      S )z&Compiles the firstset for the pattern.)ÚboolrŽ   r   Ú_check_firstsetr/   ÚAnyAllÚcompile)r—   ÚfsÚreverses      r>   Ú_compile_firstsetr¨   r  sE   € ä�4—:‘:¤Ñ'Ó(€GÜ	˜˜w¨Ó	+€BÙ”˜B¤Ô'Øˆ	ð �:‰:�gÓÐr?   c                 óp  — |rd|v ryt        «       }t        }|D ]T  }t        |t        «      r|j                  s y||j
                  z  }|j                  |j                  t        ¬«      «       ŒV |t        t        z  k(  ryt        | t        |«      |t         z  d¬«      }|j                  | |d¬«      }|S )z$Checks the firstset for the pattern.N©Ú
case_flagsT©r«   Ú	zerowidth©Úin_set)ÚsetÚNOCASEr/   Ú	CharacterÚpositiver«   ÚaddÚ
with_flagsr   r   ÚSetUnionÚlistÚoptimise)r—   r§   r¦   r`   r«   rp   s         r>   r£   r£   |  s°   € á�˜‘Øô ‹e€GÜ€JØò 5ˆÜ�aœÔ#¨A¯JªJÙð 	�a—l‘lÑ"ˆ
Ø�‰�A—L‘L¬F�LÓ3Õ4ð5ð ”h¤Ñ+Ò,Øô 
�$œ˜W›°*Ä¸yÑ2HØô
€Bà	�‰�T˜7¨4ˆÓ	0€Bà€Ir?   c                 ó:   — g }| D ]  }|j                  |«       Œ |S )z(Flattens the code from a list of tuples.)Úextend)ÚcodeÚ	flat_codeÚcs      r>   Ú_flatten_coder¾   ›  s,   € à€IØò ˆØ×Ñ˜Õðð Ðr?   c                 óf   — | j                   t        z  }| j                   t        z  r
|t         z  }|S )zMakes the case flags.)rŽ   Ú
CASE_FLAGSr   r   )r—   rŽ   s     r>   Úmake_case_flagsrÁ   £  s/   € à�J‰JœÑ#€Eð ‡z�z”EÒØ”(�Ñˆà€Lr?   Fc                 óH   — |rt        |«      S t        |t        | «      ¬«      S )zMakes a character literal.rª   )r²   rÁ   )r—   r_   r¯   s      r>   Úmake_characterrÃ   ­  s"   € áä˜ÓÐä�U¤°tÓ'<Ô=Ð=r?   c                 ó2   — t        | ||t        | «      ¬«      S )zMakes a group reference.rª   )ÚRefGrouprÁ   )r—   ÚnameÚpositions      r>   Úmake_ref_grouprÈ   µ  s   € ä�D˜$ ´_ÀTÓ5JÔKÐKr?   c                 ó0   — t        | |t        | «      ¬«      S )zMakes a string set.rª   )Ú	StringSetrÁ   )r—   rÆ   s     r>   Úmake_string_setrË   ¹  s   € ä�T˜4¬O¸DÓ,AÔBÐBr?   c                 ó@   — |r|S |j                  t        | «      ¬«      S )zMakes a property.rª   )rµ   rÁ   )r—   Úpropr¯   s      r>   Úmake_propertyrÎ   ½  s    € áØˆà�?‰?¤o°dÓ&;ˆ?Ó<Ð<r?   c                 óÔ   — t        | |«      g}| j                  d«      r-|j                  t        | |«      «       | j                  d«      rŒ-t        |«      dk(  r|d   S t	        |«      S )zParses a pattern, eg. 'a|b|c'.rW   r.   r   )Úparse_sequenceÚmatchr[   r^   ÚBranch)Úsourcer—   Úbranchess      r>   Ú_parse_patternrÕ   Ä  sa   € ä˜v tÓ,Ð-€HØ
�,‰,�sÔ
Ø�‰œ v¨tÓ4Ô5ð �,‰,�sÕ
ô ˆ8ƒ}˜ÒØ˜‰{ÐÜ�(ÓÐr?   c           	      óÄ  — dg}t        |«      }	 | j                  }| j                  «       }|t        v �rä|dv r	|| _        �nþ|dk(  r|j	                  t        | |d«      «       �nÙ|dk(  r.t        | |«      }|€t        |«      }�n¹|j	                  |«       �n¦|dk(  rw|j                  t        z  r|j	                  t        «       «       �ns|j                  t        z  r|j	                  t        «       «       �nE|j	                  t        «       «       �n*|dk(  r|j	                  t        | |«      «       �n|dk(  rw|j                  t        z  rI|j                  t        z  r|j	                  t        «       «       �nÂ|j	                  t!        «       «       �n§|j	                  t#        «       «       �nŒ|d	k(  r£|j                  t        z  rI|j                  t        z  r|j	                  t%        «       «       �nF|j	                  t'        «       «       �n+|j                  t        z  r|j	                  t)        «       «       nþ|j	                  t+        «       «       nä|d
v r•t-        | ||«      }|r#t/        | ||||||«       |j	                  d«       n®t1        | |||«      }|r-t3        |«      r“t5        | |||||«       |j	                  d«       nq|j	                  t7        t9        |«      |¬«      «       nK|j	                  t7        t9        |«      |¬«      «       n%|j	                  t7        t9        |«      |¬«      «       �Œ0|D �	cg c]  }	|	€Œ|	‘Œ	 }}	t;        |«      S c c}	w )zParses a sequence, eg. 'abc'.Nz)|ú\Fú(ú.ú[ú^ú$z?*+{rª   )rÁ   r3   ÚgetÚSPECIAL_CHARSr[   Úparse_escapeÚparse_parenrŽ   r   r¤   r$   ÚAnyUÚAnyÚ	parse_setr   ÚStartOfLineUÚStartOfLineÚStartOfStringÚ
EndOfLineUÚ	EndOfLineÚEndOfStringLineUÚEndOfStringLineÚparse_quantifierÚapply_quantifierÚparse_fuzzyÚis_actually_fuzzyÚapply_constraintr²   ÚordÚSequence)
rÓ   r—   Úsequencer«   Ú	saved_posÚchÚelementÚcountsÚconstraintsÚitems
             r>   rÐ   rÐ   Î  s™  € àˆv€HÜ  Ó&€JØ
Ø—J‘Jˆ	Ø�Z‰Z‹\ˆØ”ÒØ�T‰zà&�”
ÙØ�t’à—‘¤¨V°T¸5Ó AÖBØ�s’ä% f¨dÓ3�Ø�?Ü!0°Ó!6’Jà—O‘O GÖ,Ø�s’à—:‘:¤Ò&Ø—O‘O¤F£HÖ-Ø—Z‘Z¤$Ò&Ø—O‘O¤D£FÖ+à—O‘O¤C£EÖ*Ø�s’à—‘¤	¨&°$Ó 7Ö8Ø�s’à—:‘:¤	Ò)Ø—z‘z¤DÒ(Ø Ÿ™¬«Ö7à Ÿ™¬«Ö6à—O‘O¤M£OÖ4Ø�s’à—:‘:¤	Ò)Ø—z‘z¤DÒ(Ø Ÿ™¬
«Ö5à Ÿ™¬	«Ö4à—z‘z¤DÒ(Ø Ÿ™Ô(8Ó(:Õ;à Ÿ™¬Ó(9Õ:Ø�v‘ä)¨&°$¸Ó;�Ùä$ V¨T°6¸:ÀrØ ô+à—O‘O DÕ)ô #.¨f°d¸BÀ
Ó"K�Ká"ä,¨[Ô9Ü,¨V°T¸;È
Ø'¨ô3à$ŸO™O¨DÕ1ð !Ÿ™¬	´#°b³'Ø%/ô)1õ 2ð —‘¤	¬#¨b«'¸jÔ IÕJð �O‰OœI¤c¨"£g¸*ÔEÔFñ[ ð^ "*Ö>˜¨TÑ-=’Ð>€HÐ>Ü�HÓÐùò ?s   ÍMÍMc                 óš   — | j                  d«      dk(  ry| j                  d«      | j                  d«      | j                  d«      fdk(  ryy)	z4Checks whether a fuzzy constraint is actually fuzzy.rn   ©r   r   Frs   rp   Úd)rú   rú   rú   T)rÝ   )r÷   s    r>   rî   rî   $  sG   € à‡��sÓ˜vÒ%Øà�‰˜Ó˜kŸo™o¨cÓ2°K·O±OÀCÓ4HÐIÐMeÒeØàr?   c                 óâ  — |j                  «       }|€0|rt        d| j                  |«      ‚t        d| j                  |«      ‚t        |t        t
        t        f«      rt        d| j                  |«      ‚|\  }}	| j                  }| j                  «       }|dk(  rt
        }
n|dk(  rt        }
n|| _        t        }
|j                  «       s|dk7  s|	dk7  r
 |
|||	«      }|j                  |«       y )Nzmultiple repeatznothing to repeatú?ú+r.   )Úpopr'   r˜   r/   ÚGreedyRepeatÚ
LazyRepeatÚPossessiveRepeatr3   rÝ   Úis_emptyr[   )rÓ   r—   rö   r«   rô   ró   rò   rõ   Ú	min_countÚ	max_countÚrepeateds              r>   rì   rì   .  sÛ   € à�l‰l‹n€GØ€ÙÜÐ)¨6¯=©=¸)ÓDÐDÜÐ'¨¯©¸	ÓBÐBä�'œL¬*Ô6FÐGÔHÜÐ% v§}¡}°iÓ@Ð@à!Ñ€IˆyØ—
‘
€IØ	�‰‹€BØ	ˆS‚yä‰Ø	ˆsŠä#‰ð ˆŒ
Üˆð ×ÑÔ 9°¢>°YÀ!²^Ù˜7 I¨yÓ9ˆà‡O�O�GÕr?   c                 ó  — |j                  «       }|€t        d| j                  |«      ‚t        |t        «      r-t        |j                  |«      |_        |j                  |«       y |j                  t        ||«      «       y )Nznothing for fuzzy constraint)rÿ   r'   r˜   r/   ÚGroupÚFuzzyÚ
subpatternr[   )rÓ   r—   r÷   r«   ró   rò   rõ   s          r>   rï   rï   N  sf   € à�l‰l‹n€GØ€ÜÐ2°F·M±MÀ9ÓMÐMô �'œ5Ô!Ü" 7×#5Ñ#5°{ÓCˆÔØ�‰˜Õ à�‰œ˜g {Ó3Õ4r?   )r   r.   ©r   N©r.   N)rý   Ú*rþ   c                 ó^   — t         j                  |«      }|r|S |dk(  rt        | «      }|r|S y)zParses a quantifier.ú{N)Ú_QUANTIFIERSrÝ   Úparse_limited_quantifier)rÓ   r—   rô   Úqrö   s        r>   rë   rë   ^  s6   € ä×Ñ˜Ó€AÙàˆà	ˆS‚yä)¨&Ó1ˆÙØˆMàr?   c                 ó    — | duxr	 | t         k\  S )z,Checks whether a count is above the maximum.N©Ú	UNLIMITED)r4   s    r>   Úis_above_limitr  m  s   € à˜ÐÒ3 ¬)Ñ!3Ð3r?   c                 ó¤  — | j                   }t        | «      }| j                  d«      r*t        | «      }t        |xs d«      }|rt        |«      nd}n|s|| _         yt        |«      x}}| j                  d«      s|| _         yt	        |«      st	        |«      rt        d| j                  |«      ‚|�||kD  rt        d| j                  |«      ‚||fS )zParses a limited quantifier.ú,r   Nú}zrepeat count too bigz"min repeat greater than max repeat)r3   Úparse_countrÑ   Úintr  r'   r˜   )rÓ   ró   r  r  s       r>   r  r  q  sÏ   € à—
‘
€IÜ˜FÓ#€IØ‡|�|�CÔÜ Ó'ˆ	ô ˜	š QÓ'ˆ	Ù&/”C˜	”N°T‰	áØ"ˆFŒJØä # I£Ð.ˆ	�Ià�<‰<˜ÔØˆŒ
Øä�iÔ ¤N°9Ô$=ÜÐ*¨F¯M©M¸9ÓEÐEàÐ ¨YÒ!6ÜÐ8¸&¿-¹-Ø
óð 	ð �iÐÐr?   c                 óx  — | j                   }|dk7  ryi }	 t        | |«       | j                  d«      rt        | |«       | j                  d«      rŒ| j                  d«      rt	        | ||«      |d<   | j                  d«      s!t        d| j                  | j                   «      ‚|S # t        $ r
 || _         Y yw xY w)z#Parses a fuzzy setting, if present.r  Nr  ú:Útestr  z
expected })r3   Úparse_fuzzy_itemrÑ   rJ   Úparse_fuzzy_testr'   r˜   )rÓ   r—   rô   r«   ró   r÷   s         r>   rí   rí   �  s²   € à—
‘
€Ià	ˆS‚yØà€KðÜ˜ Ô-Ø�l‰l˜3ÔÜ˜V [Ô1ð �l‰l˜3Õð ‡|�|�CÔÜ.¨v°t¸ZÓHˆ�FÑà�<‰<˜ÔÜ�L &§-¡-°·±Ó<Ð<àÐøô ò ØˆŒ
Ùðús   –:B& Â&B9Â8B9c                 óz   — | j                   }	 t        | |«       y# t        $ r || _         t        | |«       Y yw xY w)zParses a fuzzy setting item.N)r3   Úparse_cost_constraintrJ   Úparse_cost_equation)rÓ   r÷   ró   s      r>   r  r  §  s:   € à—
‘
€Ið1Ü˜f kÕ2øÜò 1ØˆŒ
ä˜F KÖ0ð1ús   Ž ›:¹:c                 ó¢  — | j                   }| j                  «       }|t        v rbt        | ||«      }t	        | «      }|€d||<   y| j                   }t        | «      }|s|dz  }|dk  rt        d| j                  |«      ‚d|f||<   y|t        v r¸|| _         | j                   }t        | «      }t	        | «      }	|	€
t        «       ‚t        | || j                  «       «      }t	        | «      }|€
t        «       ‚| j                   }t        | «      }|	s|dz  }|s|dz  }d|cxk  r|k  sn t        d| j                  |«      ‚||f||<   yt        «       ‚)zParses a cost constraint.Nr  r.   r   úbad fuzzy cost limit)
r3   rÝ   ÚALPHAÚparse_constraintÚparse_fuzzy_compareÚparse_cost_limitr'   r˜   ÚDIGITSrJ   )
rÓ   r÷   ró   rô   Ú
constraintÚmax_incÚcost_posÚmax_costÚmin_costÚmin_incs
             r>   r"  r"  ±  s\  € à—
‘
€IØ	�‰‹€BØ	ŒU�{ä% f¨k¸2Ó>ˆ
ä% fÓ-ˆàˆ?à&-ˆK˜
Ò#ð —z‘zˆHÜ'¨Ó/ˆHñ Ø˜A‘�à˜!Š|ÜÐ2°F·M±MÀ8ÓLÐLà&'¨ kˆK˜
Ò#Ø	Œv‰àˆŒ
ð —:‘:ˆÜ# FÓ+ˆä% fÓ-ˆØˆ?Ü“,Ðä% f¨k¸6¿:¹:»<ÓHˆ
ä% fÓ-ˆØˆ?Ü“,Ðð —:‘:ˆÜ# FÓ+ˆñ Ø˜‰MˆHÙØ˜‰MˆHà�HÔ( Ô(ÜÐ.°·±¸xÓHÐHà"*¨HÐ"4ˆ�JÒä‹lÐr?   c                 ó”   — | j                   }t        | «      }	 t        |«      S # t        $ r Y nw xY wt	        d| j
                  |«      ‚)zParses a cost limit.r%  )r3   r  r  Ú
ValueErrorr'   r˜   )rÓ   r-  Údigitss      r>   r)  r)  î  sL   € à�z‰z€HÜ˜Ó €FðÜ�6‹{ÐøÜò Ùðúô Ð&¨¯©°xÓ
@Ð@s   ™
$ ¤	0¯0c                 ó>   — |dvr
t        «       ‚||v r
t        «       ‚|S )zParses a constraint.Údeis)rJ   )rÓ   r÷   rô   s      r>   r'  r'  ú  s'   € à	�ÑÜ‹lÐà	ˆ[ÑÜ‹lÐà€Ir?   c                 óL   — | j                  d«      ry| j                  d«      ryy)zParses a cost comparator.z<=Tú<FN©rÑ   ©rÓ   s    r>   r(  r(    s#   € à‡|�|�DÔØØ	�‰�cÔ	Øàr?   c                 óŒ  — d|v r!t        d| j                  | j                  «      ‚i }t        | |«       | j	                  d«      rt        | |«       | j	                  d«      rŒt        | «      }|€
t        «       ‚t        t        | «      «      }|s|dz  }|dk  r!t        d| j                  | j                  «      ‚||d<   ||d<   y)	zParses a cost equation.Úcostzmore than one cost equationrþ   Nr.   r   r%  Úmax)	r'   r˜   r3   Úparse_cost_termrÑ   r(  rJ   r  r  )rÓ   r÷   r;  r,  r.  s        r>   r#  r#    s»   € à�ÑÜÐ1°6·=±=À&Ç*Á*ÓMÐMà€Dä�F˜DÔ!Ø
�,‰,�sÔ
Ü˜ Ô%ð �,‰,�sÕ
ô " &Ó)€GØ€Ü‹lÐä”;˜vÓ&Ó'€HáØ�A‰ˆà�!‚|ÜÐ*¨F¯M©M¸6¿:¹:ÓFÐFà€Dˆ�Kà€K�Òr?   c                 óÄ   — t        | «      }| j                  «       }|dvr
t        «       ‚||v r!t        d| j                  | j
                  «      ‚t        |xs d«      ||<   y)zParses a cost equation term.Údiszrepeated fuzzy costr.   N)r  rÝ   rJ   r'   r˜   r3   r  )rÓ   r;  Úcoeffrô   s       r>   r=  r=  (  sV   € ä˜Ó€EØ	�‰‹€BØ	��Ü‹lÐà	ˆT�zÜÐ)¨6¯=©=¸&¿*¹*ÓEÐEä�5’:˜A‹€Dˆ‚Hr?   c                 ó®  — | j                   }| j                  «       }|t        v rƒ|dk(  rt        | |d«      S |dk(  rD|j                  t
        z  r
t        «       S |j                  t        z  r
t        «       S t        «       S |dk(  rt        | |«      S t        d| j                  |«      ‚|rt        t        |«      |¬«      S t        d| j                  |«      ‚)Nr×   FrÙ   rÚ   zexpected character setrª   )r3   rÝ   rÞ   rß   rŽ   r   r¤   r$   rá   râ   rã   r'   r˜   r²   rð   )rÓ   r—   r«   ró   rô   s        r>   r   r   4  s¸   € Ø—
‘
€IØ	�‰‹€BØ	Œ]ÑØ�Š:ä ¨¨eÓ4Ð4Ø�3ŠYà�z‰zœFÒ"Ü“x�Ø—‘œdÒ"Ü“v�ä“u�Ø�3ŠYä˜V TÓ*Ð*äÐ0°&·-±-ÀÓKÐKÙ	äœ˜R›¨ZÔ8Ð8äÐ,¨f¯m©m¸YÓGÐGr?   c                 ó,   — | j                  t        «      S )z0Parses a quantifier's count, which can be empty.)Ú	get_whiler*  r9  s    r>   r  r  N  s   € à×ÑœFÓ#Ð#r?   c                 ó°  — | j                   }| j                  d«      }|dk(  �rÓ| j                   }| j                  d«      }|dk(  rÔ| j                   }| j                  «       }|dv rt        | |d|dk(  «      S || _         t        | «      }|j	                  |«      }| j                  d«       |j                  }	 t        | |«      }	| j                  d«       ||_        t        |j                  t        z  «      | _
        |j                  «        t        |||	«      S |dv rt        | |d|dk(  «      S |d	k(  rt        | |«      S |d
k(  rt        | «      S |dk(  rt        | |«      S |dk(  rt!        | |«      S |dk(  rt#        | |«      S |dk(  sd|cxk  rdk  rn nt%        | |||«      S |dk(  rt'        | ||«      S |dk(  s|dk(  r$| j)                  «       t*        v rt-        | |||«      S || _         t/        | |«      S |dk(  r|| j                   }| j1                  t3        d«      d¬«      }
|
dd j5                  «       rAt6        j                  |
«      }|st9        d| j:                  |«      ‚| j                  d«       |S || _         |j	                  «       }|j                  }	 t        | |«      }	| j                  d«       ||_        t        |j                  t        z  «      | _
        |j                  «        t        |||	«      S # ||_        t        |j                  t        z  «      | _
        w xY w# ||_        t        |j                  t        z  «      | _
        w xY w)z[Parses a parenthesised subpattern or a flag. Returns FLAGS if it's an
    inline flag.
    Trý   r7  ©ú=ú!rF  ú>ú)Fr   ú#rØ   rW   r   Ú0Ú9ú&rþ   ú-r  ú)>©ÚincludeNr.   zunknown verb)r3   rÝ   Úparse_lookaroundÚ
parse_nameÚ
open_groupÚexpectrŽ   rÕ   r¢   r&   Úignore_spaceÚclose_groupr  Úparse_extensionÚparse_commentÚparse_conditionalÚparse_atomicÚparse_commonÚparse_call_groupÚparse_call_named_groupÚpeekr*  Úparse_rel_call_groupÚparse_flags_subpatternrC  r°   ÚisalphaÚVERBSr'   r˜   )rÓ   r—   ró   rô   Úsaved_pos_2Úsaved_pos_3rÆ   ÚgroupÚsaved_flagsr
  ÚwordÚverbs               r>   rà   rà   R  s  € ð —
‘
€IØ	�‰�DÓ	€BØ	ˆSƒyà—j‘jˆØ�Z‰Z˜ÓˆØ�Š9à Ÿ*™*ˆKØ—‘“ˆBØ�ZÑä'¨°°d¸BÀ#¹IÓFÐFð %ˆFŒJÜ˜fÓ%ˆDØ—O‘O DÓ)ˆEØ�M‰M˜#ÔØŸ*™*ˆKðAÜ+¨F°DÓ9�
Ø—‘˜cÔ"à(�”
Ü&*¨4¯:©:¼Ñ+?Ó&@�Ô#à×ÑÔÜ˜˜u jÓ1Ð1Ø�Ñä# F¨D°%¸¸s¹ÓCÐCØ�Š9ä" 6¨4Ó0Ð0Ø�Š9ä  Ó(Ð(Ø�Š9ä$ V¨TÓ2Ð2Ø�Š9ä ¨Ó-Ð-Ø�Š9ä ¨Ó-Ð-Ø�Š9˜˜rÔ( SÕ(ä# F¨D°"°kÓBÐBØ�Š9ä)¨&°$¸ÓDÐDØ�#ŠI˜˜sš¨¯©«¼Ñ(?Ü'¨°°b¸+ÓFÐFð !ˆŒ
Ü% f¨dÓ3Ð3à	ˆS‚yà—j‘jˆØ×Ñ¤ D£	°5ÐÓ9ˆØ��1ˆ:×ÑÔÜ—9‘9˜T“?ˆDÙÜ˜N¨F¯M©M¸;ÓGÐGà�M‰M˜#ÔàˆKð €F„JØ�O‰OÓ€EØ—*‘*€Kð9Ü# F¨DÓ1ˆ
Ø�‰�cÔà ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÔà×ÑÔä��u˜jÓ)Ð)øð} )�”
Ü&*¨4¯:©:¼Ñ+?Ó&@�Õ#ûðp !ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÕús   Â8K> ÊL+ Ë>*L(Ì+*Mc                 óð  — | j                   }| j                  «       }|dk(  rœt        | «      }|j                  |«      }| j	                  d«       |j
                  }	 t        | |«      }| j	                  d«       ||_        t        |j
                  t        z  «      | _	        |j                  «        t        |||«      S |dk(  rSt        | d¬«      }| j	                  d«       |j                  |«      rt        d| j                  |«      ‚t        |||«      S |dk(  s|dk(  rt!        | ||«      S || _         t        d	| j                  |«      ‚# ||_        t        |j
                  t        z  «      | _	        w xY w)
zParses a Python extension.r7  rH  rI  rF  T)Úallow_numericúcannot refer to an open grouprM  úunknown extension)r3   rÝ   rS  rT  rU  rŽ   rÕ   r¢   r&   rV  rW  r  Úis_open_groupr'   r˜   rÈ   r^  )rÓ   r—   ró   rô   rÆ   rf  rg  r
  s           r>   rX  rX  ®  sN  € à—
‘
€IØ	�‰‹€BØ	ˆS‚yä˜&Ó!ˆØ—‘ Ó%ˆØ�‰�cÔØ—j‘jˆð	=Ü'¨°Ó5ˆJØ�M‰M˜#Ôà$ˆDŒJÜ"& t§z¡z´GÑ';Ó"<ˆFÔà×ÑÔä�T˜5 *Ó-Ð-Ø	ˆS‚yä˜&°Ô5ˆØ�‰�cÔØ×Ñ˜dÔ#ÜÐ7¸¿¹Øóð ô ˜d D¨)Ó4Ð4Ø	ˆS‚y�B˜#’Iä% f¨d°IÓ>Ð>à€F„JÜ
Ð# V§]¡]°IÓ
>Ð>øð) %ˆDŒJÜ"& t§z¡z´GÑ';Ó"<ˆFÕús   ÁE Å*E5c                 ó®   — 	 | j                   }| j                  d«      }|r|dk(  rn|dk(  r| j                  d«      }Œ<|| _         | j                  d«       y)zParses a comment.TrI  r×   N)r3   rÝ   rU  )rÓ   ró   r½   s      r>   rY  rY  Ò  sZ   € à
Ø—J‘Jˆ	Ø�J‰J�tÓˆá�A˜’HØà�Š9Ø—
‘
˜4Ó ˆAð ð €F„JØ
‡M�M�#Ôàr?   c                 ó  — |j                   }	 t        | |«      }| j                  d«       ||_         t        |j                   t        z  «      | _        t        |||«      S # ||_         t        |j                   t        z  «      | _        w xY w)zParses a lookaround.rI  )rŽ   rÕ   rU  r¢   r&   rV  Ú
LookAround)rÓ   r—   Úbehindr³   rg  r
  s         r>   rR  rR  ã  su   € à—*‘*€Kð9Ü# F¨DÓ1ˆ
Ø�‰�cÔà ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÔä�f˜h¨
Ó3Ð3øð !ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÕús   ŽA  Á *B
c                 ó:  — |j                   }| j                  }| j                  «       }|dk(  rw| j                  «       }|dv rt        | |d|dk(  «      S |dk(  r%| j                  «       }|dv rt        | |d|dk(  «      S || _        t	        d| j
                  | j                  «      ‚|| _        	 t        | d«      }| j                  d«       t        | |«      }| j                  d	«      rt        | |«      }n
t        «       }| j                  d«       ||_         t        |j                   t        z  «      | _        |j                  «       r|j                  «       r
t        «       S t        |||||«      S # ||_         t        |j                   t        z  «      | _        w xY w)
z Parses a conditional subpattern.rý   rE  FrF  r7  Tzexpected lookaround conditionalrI  rW   )rŽ   r3   rÝ   Úparse_lookaround_conditionalr'   r˜   rS  rU  rÐ   rÑ   rñ   r¢   r&   rV  r  ÚConditional)rÓ   r—   rg  ró   rô   rf  Ú
yes_branchÚ	no_branchs           r>   rZ  rZ  ï  sy  € à—*‘*€KØ—
‘
€IØ	�‰‹€BØ	ˆS‚yà�Z‰Z‹\ˆØ�Ñä/°¸¸eÀRÈ3ÁYÓOÐOØ�Š9à—‘“ˆBØ�ZÑä3°F¸DÀ$ÈØñIó ð ð ˆŒ
ÜÐ5°v·}±}Ø
�*‰*óð 	ð €F„Jð9Ü˜6 4Ó(ˆØ�‰�cÔÜ# F¨DÓ1ˆ
Ø�<‰<˜ÔÜ& v¨tÓ4‰Iä ›
ˆIà�‰�cÔà ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÔà×ÑÔ ×!3Ñ!3Ô!5Ü‹zÐä�t˜U J°	¸9ÓEÐEøð !ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÕús   Â-A"E0 Å0*Fc                 ó¨  — |j                   }	 t        | |«      }| j                  d«       ||_         t        |j                   t        z  «      | _        t        | |«      }| j                  d«      rt        | |«      }n
t        «       }| j                  d«       t        |||||«      S # ||_         t        |j                   t        z  «      | _        w xY w)NrI  rW   )
rŽ   rÕ   rU  r¢   r&   rV  rÐ   rÑ   rñ   ÚLookAroundConditional)rÓ   r—   rr  r³   rg  r
  rv  rw  s           r>   rt  rt    sµ   € Ø—*‘*€Kð9Ü# F¨DÓ1ˆ
Ø�‰�cÔà ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÔä ¨Ó-€JØ‡|�|�CÔÜ" 6¨4Ó0‰	ä“Jˆ	à
‡M�M�#Ôä  ¨°:¸zØóð øð !ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÕús   ŽB' Â'*Cc                 ó  — |j                   }	 t        | |«      }| j                  d«       ||_         t        |j                   t        z  «      | _        t        |«      S # ||_         t        |j                   t        z  «      | _        w xY w)zParses an atomic subpattern.rI  )rŽ   rÕ   rU  r¢   r&   rV  ÚAtomic)rÓ   r—   rg  r
  s       r>   r[  r[  .  sq   € à—*‘*€Kð9Ü# F¨DÓ1ˆ
Ø�‰�cÔà ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÔä�*ÓÐøð !ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÕús   ŽA Á*Bc                 ón  — |j                   }t        | |«      g}|j                   }| j                  d«      rJ||_         |j                  t        | |«      «       t	        ||j                   «      }| j                  d«      rŒJ||_         | j                  d«       t        |«      dk(  r|d   S t        |«      S )zParses a common groups branch.rW   rI  r.   r   )Úgroup_countrÐ   rÑ   r[   r<  rU  r^   rÒ   )rÓ   r—   Úinitial_group_countrÔ   Úfinal_group_counts        r>   r\  r\  :  s«   € ð ×*Ñ*ÐÜ˜v tÓ,Ð-€HØ×(Ñ(ÐØ
�,‰,�sÔ
Ø.ˆÔØ�‰œ v¨tÓ4Ô5ÜÐ 1°4×3CÑ3CÓDÐð �,‰,�sÕ
ð
 )€DÔØ
‡M�M�#Ôä
ˆ8ƒ}˜ÒØ˜‰{ÐÜ�(ÓÐr?   c                 ó~   — |dk(  rd}n|| j                  t        «      z   }| j                  d«       t        |||«      S )zParses a call to a group.r   rK  rI  )rC  r*  rU  Ú	CallGroup)rÓ   r—   rô   r3   rf  s        r>   r]  r]  L  s>   € à	ˆS‚yØ‰à�V×%Ñ%¤fÓ-Ñ-ˆà
‡M�M�#Ôä�T˜5 #Ó&Ð&r?   c                 ó\  — | j                  t        «      }|s!t        d| j                  | j                  «      ‚t        |«      }|dk(  r|j                  |z   n|j                  |z
  dz   }|dk  r!t        d| j                  | j                  «      ‚| j                  d«       t        |||«      S )z"Parses a relative call to a group.zmissing relative group numberrþ   r.   r   zinvalid relative group numberrI  )	rC  r*  r'   r˜   r3   r  r}  rU  r�  )rÓ   r—   rô   r3   r3  Úoffsetrf  s          r>   r`  r`  W  s™   € à×ÑœfÓ%€FÙÜÐ3°V·]±]ÀFÇJÁJÓOÐOä�‹[€FØ)+¨sªˆD×Ñ˜vÒ%¸×8HÑ8HÈ6Ñ8QÐTUÑ8U€EØ�‚zÜÐ3°V·]±]ÀFÇJÁJÓOÐOà
‡M�M�#Ôä�T˜5 #Ó&Ð&r?   c                 óT   — t        | «      }| j                  d«       t        |||«      S )zParses a call to a named group.rI  )rS  rU  r�  )rÓ   r—   r3   rf  s       r>   r^  r^  f  s'   € ä�vÓ€EØ
‡M�M�#Ôä�T˜5 #Ó&Ð&r?   c                 óº   — d}	 	 | j                   }| j                  «       }|dk(  r|| j                  «       z  }|t        |   z  }ŒA# t        $ r | _         Y |S w xY w)zParses a set of inline flags.r   ÚV)r3   rÝ   ÚREGEX_FLAGSr€   )rÓ   rŽ   ró   rô   s       r>   Úparse_flag_setrˆ  m  sj   € à€EðØØŸ
™
ˆIØ—‘“ˆBØ�SŠyØ�f—j‘j“lÑ"�Ø”[ ‘_Ñ$ˆEð øô ò Øˆ�
à€Lðús   „AA ÁAÁAc                 óÂ   — t        | «      }| j                  d«      r.t        | «      }|s#t        d| j                  | j                  «      ‚d}|t
        z  rd|_        ||fS )z!Parses flags being turned on/off.rN  z$bad inline flags: no flags after '-'r   T)rˆ  rÑ   r'   r˜   r3   r   Úinline_locale©rÓ   r—   Úflags_onÚ	flags_offs       r>   Úparse_flagsrŽ  }  sd   € ä˜fÓ%€HØ‡|�|�CÔÜ" 6Ó*ˆ	ÙÜÐ>ÀÇÁØ�j‰jóð ð ˆ	à”&Òà!ˆÔà�YÐÐr?   c                 óð  — |j                   }|j                   |z  | z  |_         |j                   t        t        z  t        z  z  r|j                   t         z  |z  |_         t        |j                   t        z  «      | _        	 t        | |«      }| j                  d«       ||_         t        |j                   t        z  «      | _        |S # ||_         t        |j                   t        z  «      | _        w xY w)z&Parses a subpattern with scoped flags.rI  )
rŽ   r   r   r   r”   r¢   r&   rV  rÕ   rU  )rÓ   r—   rŒ  r�  rg  r
  s         r>   Úparse_subpatternr�  Ž  sÇ   € à—*‘*€KØ—*‘*˜xÑ'¨I¨:Ñ5€D„Jð ‡z�z”UœV‘^¤gÑ-Ò.Ø—j‘j¤N ?Ñ2°hÑ>ˆŒ
ä˜tŸz™z¬GÑ3Ó4€FÔð9Ü# F¨DÓ1ˆ
Ø�‰�cÔà ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÔàÐøð !ˆŒ
Ü" 4§:¡:´Ñ#7Ó8ˆÕús   ÂC Ã*C5c                 ó  — t        | |«      \  }}|t        z  r!t        d| j                  | j                  «      ‚||z  r!t        d| j                  | j                  «      ‚||j
                   z  t        z  }|r*|xj
                  |z  c_        t        |j
                  «      ‚|t         z  }| j                  d«      rt        | |||«      S | j                  d«      rt        | |||«       yt        d| j                  | j                  «      ‚)zÆParses a flags subpattern. It could be inline flags or a subpattern
    possibly with local flags. If it's a subpattern, then that's returned;
    if it's a inline flags, then None is returned.
    z-bad inline flags: cannot turn off global flagz(bad inline flags: flag turned on and offr  rI  Nrm  )
rŽ  ÚGLOBAL_FLAGSr'   r˜   r3   Úglobal_flagsrF   rÑ   r�  Úparse_positional_flags)rÓ   r—   rŒ  r�  Únew_global_flagss        r>   ra  ra  ¡  s  € ô
 & f¨dÓ3Ñ€Hˆià”<ÒÜÐCØ
�-‰-˜Ÿ™ó%ð 	%ð �)ÒÜÐ>ÀÇÁØ
�*‰*óð 	ð ! D×$5Ñ$5Ð#5Ñ5¼ÑEÐÙØ×ÒÐ-Ñ-Õô ˜t×0Ñ0Ó1Ð1ð ”�Ñ€Hà‡|�|�CÔÜ ¨¨h¸	ÓBÐBà‡|�|�CÔÜ˜v t¨X°yÔAØä
Ð# V§]¡]°F·J±JÓ
?Ð?r?   c                 óv   — |j                   |z  | z  |_         t        |j                   t        z  «      | _        y)zParses positional flags.N)rŽ   r¢   r&   rV  r‹  s       r>   r”  r”  Ä  s/   € à—*‘*˜xÑ'¨I¨:Ñ5€D„JÜ˜tŸz™z¬GÑ3Ó4€FÕr?   c                 óx  — | j                  t        d«      d¬«      }|s!t        d| j                  | j                  «      ‚|j                  «       r9|rdnd}|rt        |«      |k  r!t        d| j                  | j                  «      ‚|S |j                  «       s!t        d| j                  | j                  «      ‚|S )zParses a name.rO  FrP  zmissing group namer   r.   zbad character in group name)rC  r°   r'   r˜   r3   Úisdigitr  Úisidentifier)rÓ   rk  Úallow_group_0rÆ   Ú	min_groups        r>   rS  rS  É  s¬   € à×ÑœC ›I¨uÐÓ5€DáÜÐ(¨&¯-©-¸¿¹ÓDÐDà‡|�|„~Ù&‘A¨Aˆ	Ù¤ D£	¨IÒ 5ÜÐ5°v·}±}Ø�j‰jóð ð €Kð	 × Ñ Ô"ÜÐ5°v·}±}Ø�j‰jóð ð €Kr?   c                 ó&   — t        d„ | D «       «      S )z!Checks whether a string is octal.c              3   ó,   K  — | ]  }|t         v –— Œ y ­w©N)Ú
OCT_DIGITS©Ú.0rô   s     r>   ú	<genexpr>zis_octal.<locals>.<genexpr>Þ  ó   è ø€ Ò1 Bˆr”ZÔÑ1ùó   ‚©Úall©r˜   s    r>   Úis_octalr¨  Ü  ó   € äÑ1¨&Ô1Ó1Ð1r?   c                 ó&   — t        d„ | D «       «      S )z#Checks whether a string is decimal.c              3   ó,   K  — | ]  }|t         v –— Œ y ­wrž  )r*  r   s     r>   r¢  zis_decimal.<locals>.<genexpr>â  s   è ø€ Ò- ˆr”VŒ|Ñ-ùr¤  r¥  r§  s    r>   Ú
is_decimalr¬  à  s   € äÑ- fÔ-Ó-Ð-r?   c                 ó&   — t        d„ | D «       «      S )z'Checks whether a string is hexadecimal.c              3   ó,   K  — | ]  }|t         v –— Œ y ­wrž  )Ú
HEX_DIGITSr   s     r>   r¢  z!is_hexadecimal.<locals>.<genexpr>æ  r£  r¤  r¥  r§  s    r>   Úis_hexadecimalr°  ä  r©  r?   c                 ó$  — | j                   }d| _         | j                  «       }|| _         |s!t        d| j                  | j                  «      ‚|t
        v rt        | ||t
        |   ||«      S |dk(  r|s| j                  }	 t        | |«      S |dk(  r|s
t        «       S |dk(  r|st        | |«      S |dk(  rt        | ||«      S |dv rt        | ||dk(  |«      S |d	k(  rn|slg d
¢}|j                  t        k(  r|j!                  g d¢«       t#        t%        t'        ddg«      t)        ||D �cg c]  }t+        |«      ‘Œ c}«      g«      «      S |dk(  r|s
t-        «       S |t.        v �rP|s”|j0                  t2        z  rt4        j                  |«      }ng|j0                  t6        z  rt8        j                  |«      }n>|j0                  t        z  rt:        j                  |«      }nt<        j                  |«      }|r|S |j0                  t6        z  rt>        j                  |«      }n>|j0                  t        z  rt@        j                  |«      }ntB        j                  |«      }|r|S tD        j                  |«      }|rt+        t        |«      «      S t        d|z  | j                  | j                  «      ‚|tF        v rtI        | |||«      S t        |t        |«      |«      S # t        $ r
 || _        Y nw xY wt        |t        |«      |«      S c c}w )zParses an escape sequence.Fúbad escape (end of pattern)ÚgÚGr   ÚNÚpPrq   r   )é
   é   é   é   )é…   i(   i)   rº  r·  r%   úbad escape \%s)%rV  rÝ   r'   r˜   r3   ÚHEX_ESCAPESÚparse_hex_escapeÚparse_group_refrÃ   rð   ÚSearchAnchorÚparse_string_setÚparse_named_charÚparse_propertyr•   r   rº   r{  rÒ   ÚStringr¶   r²   ÚGraphemer&  rŽ   r$   ÚWORD_POSITION_ESCAPESr   ÚASCII_POSITION_ESCAPESÚUNICODE_POSITION_ESCAPESÚPOSITION_ESCAPESÚASCII_CHARSET_ESCAPESÚUNICODE_CHARSET_ESCAPESÚCHARSET_ESCAPESÚCHARACTER_ESCAPESr*  Úparse_numeric_escape)	rÓ   r—   r¯   Úsaved_ignorerô   ró   Úcharsetr½   r_   s	            r>   rß   rß   è  sÐ  € à×&Ñ&€LØ€FÔØ	�‰‹€BØ&€FÔÙäÐ1°6·=±=À&Ç*Á*ÓMÐMØ	Œ[Ñä ¨¨b´+¸b±/À6È2ÓNÐNØ	ˆsŠ™6à—J‘Jˆ	ð	#Ü" 6¨4Ó0Ð0ð 
ˆsŠ™6ä‹~ÐØ	ˆsŠ™6ä ¨Ó-Ð-Ø	ˆsŠä ¨¨fÓ5Ð5Ø	ˆt‰ä˜f d¨B°#©I°vÓ>Ð>Ø	ˆsŠ™6â*ˆØ×Ñ¤'Ò)Ø�N‰NÒ1Ô2ä”fœf d¨D \Ó2´H¸TØöDØô ENÈaÅLò Dó 5ð ó ó  ð 	 à	ˆsŠ™6ä‹zÐØ	ŒuŠñ Ø�z‰zœDÒ Ü-×1Ñ1°"Ó5‘Ø—‘œeÒ#Ü.×2Ñ2°2Ó6‘Ø—‘œgÒ%Ü0×4Ñ4°RÓ8‘ä(×,Ñ,¨RÓ0�áØ�à�:‰:œÒÜ)×-Ñ-¨bÓ1‰EØ�Z‰Zœ'Ò!Ü+×/Ñ/°Ó3‰Eä#×'Ñ'¨Ó+ˆEáØˆLä!×%Ñ% bÓ)ˆÙÜœS ›ZÓ(Ð(äÐ%¨Ñ*¨F¯M©M¸6¿:¹:ÓFÐFØ	Œv‰ä# F¨D°"°fÓ=Ð=ô ˜d¤C¨£G¨VÓ4Ð4øôA ò 	#à"ˆFŽJð	#úô ˜d¤C¨£G¨VÓ4Ð4ùò&Ds   ÂK! Ä)LË!K4Ë3K4c                 ó  — |s|dk(  rt        | ||g|«      S |}| j                  }| j                  «       }|t        v r|||z  }| j                  }| j                  «       }t	        |«      rP|t
        v rH|j                  t        z  }|t        k(  s	|t        k(  rd}nd}t        ||z   d«      |z  }t        ||«      S || _        |j                  |«      r!t        d| j                  | j                  «      ‚t        ||| j                  «      S )z!Parses a numeric escape sequence.rK  éÿ   éÿ  rQ   rl  )Úparse_octal_escaper3   rÝ   r*  r¨  rŸ  rŽ   r”   r   r   r  rÃ   rn  r'   r˜   rÈ   )	rÓ   r—   rô   r¯   r3  ró   ÚencodingÚ
octal_maskr_   s	            r>   rÎ  rÎ  ;  s÷   € á��s’ä! &¨$°°°fÓ=Ð=ð €FØ—
‘
€IØ	�‰‹€BØ	ŒV�|à�"‰ˆØ—J‘Jˆ	Ø�Z‰Z‹\ˆÜ�FÔ ¤jÑ 0à—z‘z¤NÑ2ˆHØœ5Ò  H´Ò$6Ø!‘
à"�
ä˜ ™ QÓ'¨*Ñ4ˆEÜ! $¨Ó.Ð.ð €F„JØ×Ñ˜&Ô!ÜÐ3°V·]±]ÀFÇJÁJÓOÐOä˜$ ¨¯
©
Ó3Ð3r?   c                 ó2  — | j                   }| j                  «       }t        |«      dk  rL|t        v rD|j	                  |«       | j                   }| j                  «       }t        |«      dk  r	|t        v rŒD|| _         	 t        dj                  |«      d«      }t        |||«      S # t        $ rf |d   t        v r3t        ddj                  |«      z  | j                  | j                   «      ‚t        d|d   z  | j                  | j                   «      ‚w xY w)z Parses an octal escape sequence.é   rg   rQ   r   zincomplete escape \%sr¼  )r3   rÝ   r^   rŸ  r[   r  r]   rÃ   r2  r'   r˜   )rÓ   r—   r3  r¯   ró   rô   r_   s          r>   rÔ  rÔ  \  sú   € à—
‘
€IØ	�‰‹€BÜ
ˆf‹+˜Š/˜b¤JÑ.Ø�‰�bÔØ—J‘Jˆ	Ø�Z‰Z‹\ˆô ˆf‹+˜Š/˜b¤JÒ.ð
 €F„Jð	Ü�B—G‘G˜F“O QÓ'ˆÜ˜d E¨6Ó2Ð2øÜò Ø�!‰9œ
Ñ"ÜÐ0°2·7±7¸6³?ÑBØ�m‰m˜VŸZ™Zó)ð )ô Ð)¨F°1©IÑ5°v·}±}Ø�j‰jóð ðús   Á?'B' Â'A/Dc                 ó¶  — | j                   }g }t        |«      D ]V  }| j                  «       }	|	t        vr+t	        d|›dj                  |«      ›�| j                  |«      ‚|j                  |	«       ŒX 	 t        dj                  |«      d«      }
|
dk  rt        ||
|«      S t	        d|›dj                  |«      ›�| j                  |«      ‚# t        $ r Y Œ6w xY w)zParses a hex escape sequence.úincomplete escape \rg   rR   i   zbad hex escape \)r3   ÚrangerÝ   r¯  r'   r]   r˜   r[   r  rÃ   r2  )rÓ   r—   ÚescÚexpected_lenr¯   Útyperó   r3  rp   rô   r_   s              r>   r¾  r¾  q  sÕ   € à—
‘
€IØ€FÜ�<Ó ò ˆØ�Z‰Z‹\ˆØ”ZÑÝ±d¸B¿G¹GÀF¼OÐLØ�m‰m˜Yó(ð (à�‰�bÕðð7Ü�B—G‘G˜F“O RÓ(ˆð �8ÒÜ! $¨¨vÓ6Ð6õ ©3°·±¸´Ð@Ø‡m�m�Yó ð  øô ò Ùðús   Á4C Ã	CÃCc                 óô   — | j                  d«       | j                  }t        | d«      }| j                  d«       |j                  |«      r!t	        d| j
                  | j                  «      ‚t        |||«      S )zParses a group reference.r7  TrH  rl  )rU  r3   rS  rn  r'   r˜   rÈ   )rÓ   r—   ró   rÆ   s       r>   r¿  r¿  ˆ  sd   € à
‡M�M�#ÔØ—
‘
€IÜ�f˜dÓ#€DØ
‡M�M�#ÔØ×Ñ˜$ÔÜÐ3°V·]±]ÀFÇJÁJÓOÐOä˜$  iÓ0Ð0r?   c                 óØ   — | j                  d«       t        | d«      }| j                  d«       |�||j                  vr!t        d| j                  | j
                  «      ‚t        ||«      S )zParses a string set reference.r7  TrH  zundefined named list)rU  rS  Úkwargsr'   r˜   r3   rË   )rÓ   r—   rÆ   s      r>   rÁ  rÁ  “  s[   € à
‡M�M�#ÔÜ�f˜dÓ#€DØ
‡M�M�#ÔØ€|�t 4§;¡;Ñ.ÜÐ*¨F¯M©M¸6¿:¹:ÓFÐFä˜4 Ó&Ð&r?   c                 óz  — | j                   }| j                  d«      rT| j                  t        d¬«      }| j                  d«      r,	 t	        j
                  |«      }t        |t        |«      |«      S || _         t        |t        d«      |«      S # t        $ r" t        d| j                  | j                   «      ‚w xY w)zParses a named character.r  T)Úkeep_spacesr  úundefined character namerµ  )r3   rÑ   rC  ÚNAMED_CHAR_PARTÚunicodedataÚlookuprÃ   rð   r€   r'   r˜   )rÓ   r—   r¯   ró   rÆ   r_   s         r>   rÂ  rÂ  �  sª   € à—
‘
€IØ‡|�|�CÔØ×Ñ¤¸TÐÓBˆØ�<‰<˜ÔðÜ#×*Ñ*¨4Ó0�Ü% d¬C°«J¸Ó?Ð?ð
 €F„JÜ˜$¤ C£¨&Ó1Ð1øô ò ÜÐ6¸¿¹Ø—*‘*óð ðús   Á*B Â+B:c                 óH  — | j                   }| j                  «       }|dk(  r†| j                  d«      }t        | «      \  }}| j                  d«      r¯|j                  t
        z  rt        }	n|j                  t        z  rt        }	nd}	t        ||||k7  | |	¬«      }
t        ||
|«      S |rW|dv rS|j                  t
        z  rt        }	n|j                  t        z  rt        }	nd}	t        d||| |	¬«      }
t        ||
|«      S || _         |rdnd	}t        |t        |«      |«      S )
zParses a Unicode property.r  rÛ   r  r   ©rÕ  ÚCLMNPSZNrq   r   )r3   rÝ   rÑ   Úparse_property_namerŽ   r   ÚASCII_ENCODINGr   ÚUNICODE_ENCODINGÚlookup_propertyrÎ   rÃ   rð   )rÓ   r—   r³   r¯   ró   rô   ÚnegateÚ	prop_namerÆ   rÕ  rÍ   s              r>   rÃ  rÃ  ­  s  € à—
‘
€IØ	�‰‹€BØ	ˆS‚yØ—‘˜cÓ"ˆÜ-¨fÓ5‰ˆ	�4Ø�<‰<˜Ôà�z‰zœEÒ!Ü)‘Ø—‘œgÒ%Ü+‘à�ä" 9¨d°HÀÑ4FÈØô!ˆDä   t¨VÓ4Ð4Ù	��i‘à�:‰:œÒÜ%‰HØ�Z‰Zœ'Ò!Ü'‰HàˆHä˜t R¨°6ÀHÔMˆÜ˜T 4¨Ó0Ð0ð €F„JÙ‰˜c€BÜ˜$¤ B£¨Ó0Ð0r?   c                 ó  — | j                  t        «      }| j                  }| j                  «       }|rI|dv rE|}| j                  t        t        d«      z  «      j                  «       }|r| j                  }nd|}}nd}|| _        ||fS )z/Parses a property name, which may be qualified.z:=z &_-./N)rC  ÚPROPERTY_NAME_PARTr3   rÝ   ÚALNUMr°   Ústrip)rÓ   rÆ   ró   rô   rð  s        r>   rë  rë  Ñ  s„   € à×ÑÔ.Ó/€DØ—
‘
€Ià	�‰‹€BÙ	ˆb�D‰jØˆ	Ø×Ñ¤¬¨H«Ñ 5Ó6×<Ñ<Ó>ˆáàŸ
™
‰Ið # I�t‰Iàˆ	à€F„JØ�dˆ?Ðr?   c                 óÊ  — |j                   t        z  xs t        }| j                  }d| _        | j	                  d«      }	 |t
        k(  rt        | |«      }nt        | |«      }| j	                  d«      s!t        d| j                  | j                  «      ‚	 || _        |r|j                  |j                   ¬«      }|j                  t        |«      ¬«      }|S # || _        w xY w)zParses a character set.FrÛ   ú]ú	missing ]©r³   rª   )rŽ   Ú_ALL_VERSIONSÚDEFAULT_VERSIONrV  rÑ   r    Úparse_set_imp_unionÚparse_set_unionr'   r˜   r3   rµ   r³   rÁ   )rÓ   r—   ÚversionrÏ  rï  rø   s         r>   rã   rã   ç  sÍ   € à�z‰zœMÑ)Ò=¬o€Gà×&Ñ&€LØ€FÔà�\‰\˜#Ó€Fð	+Ø”hÒÜ& v¨tÓ4‰Dä" 6¨4Ó0ˆDà�|‰|˜CÔ Ü˜ V§]¡]°F·J±JÓ?Ð?ð !ð +ˆÔáØ�‰¨D¯M©MÐ(9ˆÓ:ˆà�?‰?¤o°dÓ&;ˆ?Ó<€Dà€Køð +ˆÕús   ÁAC Ã	C"c                 óÖ   — t        | |«      g}| j                  d«      r-|j                  t        | |«      «       | j                  d«      rŒ-t        |«      dk(  r|d   S t	        ||«      S )zParses a set union ([x||y]).rh   r.   r   )Úparse_set_symm_diffrÑ   r[   r^   r¶   ©rÓ   r—   Úitemss      r>   rü  rü    sb   € ä  ¨Ó.Ð/€EØ
�,‰,�tÔ
Ø�‰Ô(¨°Ó6Ô7ð �,‰,�tÕ
ô ˆ5ƒz�Q‚Ø�Q‰xˆÜ�D˜%Ó Ð r?   c                 óÖ   — t        | |«      g}| j                  d«      r-|j                  t        | |«      «       | j                  d«      rŒ-t        |«      dk(  r|d   S t	        ||«      S )z+Parses a set symmetric difference ([x~~y]).ri   r.   r   )Úparse_set_interrÑ   r[   r^   Ú
SetSymDiffr   s      r>   rÿ  rÿ    sa   € ä˜V TÓ*Ð+€EØ
�,‰,�tÔ
Ø�‰”_ V¨TÓ2Ô3ð �,‰,�tÕ
ô ˆ5ƒz�Q‚Ø�Q‰xˆÜ�d˜EÓ"Ð"r?   c                 óÖ   — t        | |«      g}| j                  d«      r-|j                  t        | |«      «       | j                  d«      rŒ-t        |«      dk(  r|d   S t	        ||«      S )z#Parses a set intersection ([x&&y]).rj   r.   r   )Úparse_set_diffrÑ   r[   r^   ÚSetInterr   s      r>   r  r    sa   € ä˜F DÓ)Ð*€EØ
�,‰,�tÔ
Ø�‰”^ F¨DÓ1Ô2ð �,‰,�tÕ
ô ˆ5ƒz�Q‚Ø�Q‰xˆÜ�D˜%Ó Ð r?   c                 óÖ   — t        | |«      g}| j                  d«      r-|j                  t        | |«      «       | j                  d«      rŒ-t        |«      dk(  r|d   S t	        ||«      S )z!Parses a set difference ([x--y]).rk   r.   r   )rû  rÑ   r[   r^   ÚSetDiffr   s      r>   r  r    sb   € ä  ¨Ó.Ð/€EØ
�,‰,�tÔ
Ø�‰Ô(¨°Ó6Ô7ð �,‰,�tÕ
ô ˆ5ƒz�Q‚Ø�Q‰xˆÜ�4˜ÓÐr?   c                 óh  ‡ — |j                   t        z  xs t        }t        ‰ |«      g}	 ‰ j                  }‰ j                  d«      r|‰ _        nE|t        k(  r t        ˆ fd„t        D «       «      r|‰ _        n|j                  t        ‰ |«      «       Œjt        |«      dk(  r|d   S t        ||«      S )z#Parses a set implicit union ([xy]).rö  c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrž  r8  )r¡  ÚoprÓ   s     €r>   r¢  z&parse_set_imp_union.<locals>.<genexpr>5  s   øè ø€ Ò&J¸B v§|¡|°B×'7Ñ&Jùó   ƒr.   r   )rŽ   rù  rú  Úparse_set_memberr3   rÑ   r"   ÚanyÚSET_OPSr[   r^   r¶   )rÓ   r—   rý  r  ró   s   `    r>   rû  rû  )  s¢   ø€ à�z‰zœMÑ)Ò=¬o€Gä˜f dÓ+Ð,€EØ
Ø—J‘Jˆ	Ø�<‰<˜Ôà"ˆFŒJØà”hÒ¤3Ó&JÄ'Ô&JÔ#Jà"ˆFŒJØà�‰Ô% f¨dÓ3Ô4ð ô ˆ5ƒz�Q‚Ø�Q‰xˆÜ�D˜%Ó Ð r?   c           	      ó  — t        | |«      }| j                  }t        |t        «      r|j                  r| j                  d«      s|S |j                  t        z  xs t        }| j                  }|t        k(  r| j                  d«      r	|| _        |S | j                  d«      r'|| _        t        ||t        t        d«      «      g«      S t        | |«      }t        |t        «      r|j                  s!t        ||t        t        d«      «      |g«      S |j                  |j                  kD  r!t        d| j                  | j                  «      ‚|j                  |j                  k(  r|S t        |j                  |j                  «      S )z#Parses a member in a character set.rN  rö  zbad character range)Úparse_set_itemr3   r/   r²   r³   rÑ   rŽ   rù  rú  r"   r¶   rð   r_   r'   r˜   ÚRange)rÓ   r—   ÚstartÚ
saved_pos1rý  Ú
saved_pos2Úends          r>   r  r  @  s8  € ô ˜6 4Ó(€EØ—‘€JÜ�uœiÔ(°·²Ø‡l�l�3Ôàˆà�z‰zœMÑ)Ò=¬o€Gð —‘€JØ”(Ò˜vŸ|™|¨CÔ0ð  ˆŒ
Øˆà‡|�|�CÔð  ˆŒ
Ü˜˜u¤i´°C³Ó&9Ð:Ó;Ð;ô ˜ Ó
&€CÜ�cœ9Ô%¨S¯\ª\ä˜˜u¤i´°C³Ó&9¸3Ð?Ó@Ð@ð ‡{�{�S—Y‘YÒÜÐ)¨6¯=©=¸&¿*¹*ÓEÐEà‡{�{�c—i‘iÒØˆä�—‘˜cŸi™iÓ(Ð(r?   c                 ó–  — |j                   t        z  xs t        }| j                  d«      rt	        | |d«      S | j
                  }| j                  d«      r	 t        | |«      S |t        k(  r�| j                  d«      rp| j                  d«      }t        | |«      }| j                  d«      s!t        d| j                  | j
                  «      ‚|r|j                  |j                   ¬«      }|S | j                  «       }|s!t        d	| j                  | j
                  «      ‚t        t!        |«      «      S # t        $ r
 || _        Y Œãw xY w)
z"Parses an item in a character set.r×   Tz[:rÚ   rÛ   rö  r÷  rø  zunterminated character set)rŽ   rù  rú  rÑ   rß   r3   Úparse_posix_classrJ   r"   rü  r'   r˜   rµ   r³   rÝ   r²   rð   )rÓ   r—   rý  ró   rï  rø   rô   s          r>   r  r  i  s  € à�z‰zœMÑ)Ò=¬o€Gà‡|�|�DÔä˜F D¨$Ó/Ð/à—
‘
€IØ‡|�|�DÔð	#Ü$ V¨TÓ2Ð2ð
 ”(Ò˜vŸ|™|¨CÔ0ð —‘˜cÓ"ˆÜ˜v tÓ,ˆà�|‰|˜CÔ Ü˜ V§]¡]°F·J±JÓ?Ð?áØ—?‘?°·±Ð,=�?Ó>ˆDàˆà	�‰‹€BÙÜÐ0°&·-±-ÀÇÁÓLÐLä”S˜“WÓÐøô/ ò 	#à"ˆFŽJð	#ús   ÁD5 Ä5EÅEc                 ó˜   — | j                  d«      }t        | «      \  }}| j                  d«      s
t        «       ‚t        ||| | d¬«      S )zParses a POSIX character class.rÛ   z:]T)Úposix)rÑ   rë  rJ   rî  )rÓ   r—   rï  rð  rÆ   s        r>   r  r  �  sG   € à�\‰\˜#Ó€FÜ)¨&Ó1�O€IˆtØ�<‰<˜ÔÜ‹lÐä˜9 d°¨J¸ÀdÔKÐKr?   c                 ó|   — t        | «      }| |z
  }t        |«      dk  r|dfS t        d|z  «      \  }}||z  |z   |fS )z$Converts a float to a rational pair.g-Cëâ6?r.   g      ð?)r  ÚabsÚfloat_to_rational)ÚfltÚint_partr'   ÚdenÚnums        r>   r  r  ˜  sP   € ä�3‹x€HØ�(‰N€EÜ
ˆ5ƒz�FÒØ˜ˆ{Ðä   u¡Ó-�H€Cˆà�c‰>˜CÑ Ð$Ð$r?   c                 óz  — | dd dk(  r| d   | dd } }nd}| j                  d«      }t        |«      dk(  r*t        t        |d   «      t        |d   «      z  «      \  }}n3t        |«      dk(  rt        t        |d   «      «      \  }}n
t	        «       ‚dj                  |||«      }|j                  d	«      r|dd
 S |S )z<Converts a numeric string to a rational string, if possible.Nr.   rN  r   rg   ú/rO   z{}{}/{}z/1éþÿÿÿ)Úsplitr^   r  Úfloatr2  r8   Úendswith)ÚnumericÚsignÚpartsr"  r!  Úresults         r>   Únumeric_to_rationalr-  £  s¾   € à��!€}˜ÒØ ™
 G¨A¨C Mˆg‰àˆà�M‰M˜#Ó€EÜ
ˆ5ƒz�Q‚Ü$¤U¨5°©8£_´u¸UÀ1¹X³Ñ%FÓG‰ˆ‰SÜ	ˆU‹�qŠÜ$¤U¨5°©8£_Ó5‰ˆ‰Sä‹lÐà×Ñ˜d C¨Ó-€FØ‡��tÔØ�t˜ˆ}Ðà€Mr?   c                 ó®   — 	 t        dj                  | «      «      S # t        t        f$ r) dj                  d„ | D «       «      j	                  «       cY S w xY w)z&Standardises a property or value name.rg   c              3   ó*   K  — | ]  }|d vsŒ|–— Œ y­w)z_- NrD   r   s     r>   r¢  z#standardise_name.<locals>.<genexpr>½  s   è ø€ Ò<˜b¨B°eªO”rÑ<ùs   ‚	Œ)r-  r]   r2  ÚZeroDivisionErrorÚupper)rÆ   s    r>   Ústandardise_namer2  ¸  sP   € ðEÜ" 2§7¡7¨4£=Ó1Ð1øÜÔ)Ð*ò EØ�w‰wÑ< DÔ<Ó<×BÑBÓDÒDðEús   ‚ œ5AÁAzALNUM DIGIT PUNCT XDIGITzYES Y NO N TRUE T FALSE Fc                 ó¶  — | rt        | «      nd} t        |«      }| |fdk(  rdd| }}} |r| s|j                  «       t        v rd|z   }| rŸt        j	                  | «      }|s.|st        d«      ‚t        d|j                  |j                  «      ‚|\  }}|j	                  |«      }	|	€.|st        d«      ‚t        d|j                  |j                  «      ‚t        |dz  |	z  ||¬	«      S d
D ]C  } t        j	                  | «      \  }}|j	                  |«      }	|	€Œ/t        |dz  |	z  ||¬	«      c S  t        j	                  |«      }|r=|\  }}t        |«      t        k(  rt        |dz  dz  ||¬	«      S t        |dz  | |¬	«      S |j                  d«      r7t        j	                  |dd «      }|r|\  }}d|v rt        |dz  dz  ||¬	«      S dD ][  \  }
} |j                  |
«      sŒt        j	                  | «      \  }}|j	                  |dd «      }	|	€ŒGt        |dz  |	z  ||¬	«      c S  |st        d«      ‚t        d|j                  |j                  «      ‚)zLooks up a property.N)ÚGENERALCATEGORYÚASSIGNEDr4  Ú
UNASSIGNEDr   zunknown propertyzunknown property valuerR   ré  )ÚGCÚSCRIPTÚBLOCKr.   ÚISrO   ÚYES))r:  r8  )ÚINr9  )r2  r1  Ú_POSIX_CLASSESÚ
PROPERTIESrÝ   r'   r˜   r3   ÚPropertyr°   Ú_BINARY_VALUESÚ
startswith)Úpropertyr_   r³   rÓ   r  rÕ  rÍ   Úprop_idÚ
value_dictÚval_idÚprefixs              r>   rî  rî  Ã  sz  € ñ .6Ô Ô)¸4€HÜ˜UÓ#€Eà�%ÐÐ;Ò;Ø$5°|ÈÀ\˜�%ˆá‘X %§+¡+£-´>Ñ"AØ˜%‘ˆáä�~‰~˜hÓ'ˆÙÙÜÐ.Ó/Ð/äÐ*¨F¯M©M¸6¿:¹:ÓFÐFà"Ñˆ�Ø—‘ Ó&ˆØˆ>ÙÜÐ4Ó5Ð5äÐ0°&·-±-ÀÇÁÓLÐLä˜ B™¨&Ñ0°(ÀXÔNÐNð .ò SˆÜ(Ÿn™n¨XÓ6Ñˆ�Ø—‘ Ó&ˆØÑÜ˜W¨™]¨fÑ4°hÈÔRÒRð	Sô �>‰>˜%Ó €DÙØ"Ñˆ�Üˆz‹?œnÒ,Ü˜W¨™]¨aÑ/°ÀHÔMÐMä˜ 2™¨8 |¸hÔGÐGð ×Ñ˜ÔÜ�~‰~˜e A C˜kÓ*ˆÙØ"&ÑˆG�ZØ˜
Ñ"Ü ¨B¡°!Ñ 3°XÈÔQÐQð @ò WÑˆ�Ø×Ñ˜FÕ#Ü",§.¡.°Ó":ÑˆG�ZØ—^‘^ E¨!¨# KÓ0ˆFØÑ!Ü ¨B¡°&Ñ 8¸(ÈXÔVÒVðWñ ÜÐ&Ó'Ð'ä
Ð" F§M¡M°6·:±:Ó
>Ð>r?   c                 ó$  — | j                  «       }|t        v rœt        j                  |«      }|rdt        |«      gfS |t        v r|dk(  s|rdt        | t        |   |«      gfS |dk(  rdt        | |«      gfS |dk(  r|rt        | «      }|�d|gfS t        d|z  | j                  | j                  «      ‚t        | j                  t        «      rd}nd}|d	k(  rb|}t        |«      d
k  r@| j                  }| j                  «       }|t        vr|| _
        n||z  }t        |«      d
k  rŒ@dt!        |d«      |z  gfS |t"        v r�|}| j                  }| j                  «       }|t"        v rF||z  }| j                  }| j                  «       }|r#t%        ||z   «      rdt!        ||z   d«      |z  gfS || _
        dt!        |«      gfS |dk(  rdt        d«      gfS |s!t        d| j                  | j                  «      ‚dt        d«      t        |«      gfS )z0Compiles a replacement template escape sequence.Frv   r³  Trµ  r¼  rÒ  rÓ  rK  rØ  rQ   r×   r²  )rÝ   r&  rÍ  rð   r½  Úparse_repl_hex_escapeÚcompile_repl_groupÚparse_repl_named_charr'   r˜   r3   r/   ÚsepÚbytesr^   rŸ  r  r*  r¨  )rÓ   r2   Ú
is_unicoderô   r_   rÖ  r3  ró   s           r>   Ú_compile_replacementrN  	  s"  € à	�‰‹€BØ	ŒU�{ä!×%Ñ% bÓ)ˆÙØœ3˜u›:˜,Ð&Ð&à”Ñ "¨¢)©zàÔ0°¼ÀR¹È"ÓMÐNÐNÐNà�Š9àÔ,¨V°WÓ=Ð>Ð>Ð>à�Š9™ä)¨&Ó1ˆEØÐ Ø˜u˜g�~Ð%äÐ%¨Ñ*¨F¯M©M¸6¿:¹:ÓFÐFä�&—*‘*œeÔ$Ø‰
àˆ
à	ˆS‚yàˆÜ�&‹k˜AŠoØŸ
™
ˆIØ—‘“ˆBØœÑ#Ø&�”
ØØ�b‰LˆFô �&‹k˜A‹oð ”s˜6 1“~¨
Ñ2Ð3Ð3Ð3à	ŒV�|ð ˆØ—J‘Jˆ	Ø�Z‰Z‹\ˆØ”‰<Ø�b‰LˆFØŸ
™
ˆIØ—‘“ˆBÙ”h˜v¨™{Ô+àœs 6¨B¡;°Ó2°ZÑ?Ð@Ð@Ð@ð ˆŒ
Ø”c˜&“k�]Ð"Ð"à	ˆT‚zà”s˜4“y�kÐ!Ð!áäÐ1°6·=±=À&Ç*Á*ÓMÐMð ”3�t“9œc "›gÐ&Ð&Ð&r?   c                 ó  — g }t        |«      D ]`  }| j                  «       }|t        vr5t        d|›dj	                  |«      ›�| j
                  | j                  «      ‚|j                  |«       Œb t        dj	                  |«      d«      S )z5Parses a hex escape sequence in a replacement string.rÚ  rg   rR   )	rÛ  rÝ   r¯  r'   r]   r˜   r3   r[   r  )rÓ   rÝ  rÞ  r3  rp   rô   s         r>   rH  rH  Q  sz   € à€FÜ�<Ó ò ˆØ�Z‰Z‹\ˆØ”ZÑÝ±d¸B¿G¹GÀF¼OÐLØ�m‰m˜VŸZ™Zó)ð )à�‰�bÕðô ˆr�w‰w�v‹ Ó#Ð#r?   c                 óN  — | j                   }| j                  d«      rS| j                  t        t	        d«      z  «      }| j                  d«      r!	 t        j                  |«      }t        |«      S || _         y# t        $ r" t        d| j                  | j                   «      ‚w xY w)z1Parses a named character in a replacement string.r  ú r  rä  N)r3   rÑ   rC  r&  r°   ræ  rç  rð   r€   r'   r˜   )rÓ   ró   rÆ   r_   s       r>   rJ  rJ  ]  s•   € à—
‘
€IØ‡|�|�CÔØ×Ñ¤¬¨C«Ñ 0Ó1ˆà�<‰<˜ÔðÜ#×*Ñ*¨4Ó0�Ü˜5“zÐ!ð
 €F„JØøô ò ÜÐ6¸¿¹Ø—*‘*óð ðús   ÁA9 Á9+B$c                 óZ  — | j                  d«       t        | dd«      }| j                  d«       |j                  «       rEt        |«      }d|cxk  r|j                  k  s#n t        d| j                  | j                  «      ‚|S 	 |j                  |   S # t        $ r t        d«      ‚w xY w)z0Compiles a replacement template group reference.r7  TrH  r   úinvalid group referenceúunknown group)rU  rS  r˜  r  Úgroupsr'   r˜   r3   Ú
groupindexr€   Ú
IndexError)rÓ   r2   rÆ   Úindexs       r>   rI  rI  n  s˜   € à
‡M�M�#ÔÜ�f˜d DÓ)€Dà
‡M�M�#ÔØ‡|�|„~Ü�D“	ˆØ�EÔ+˜WŸ^™^Ô+ÜÐ1°6·=±=À&Ç*Á*ÓMÐMàˆð*Ø×!Ñ! $Ñ'Ð'øÜò *Ü˜Ó)Ð)ð*ús   ÂB ÂB*z  rR   z	NON-MATCHÚMATCH©FTz SIMPLE_IGNORE_CASEz FULL_IGNORE_CASEc                 ó>   — t        | «      dk(  r| d   S t        | «      S ©Nr.   r   )r^   rñ   )r  s    r>   Úmake_sequencer]  �  s    € Ü
ˆ5ƒz�Q‚Ø�Q‰xˆÜ�E‹?Ðr?   c                   óv   — e Zd Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú	RegexBasec                 ó&   — | j                   | _        y rž  )rZ   Ú_key©r;   s    r>   r:   zRegexBase.__init__–  s   € Ø—N‘Nˆ�	r?   Nc                 ó,  — |€| j                   }nt        |«      }|€| j                  }nt        |t        z     }|€| j
                  }nt        |«      }|| j                   k(  r || j                  k(  r|| j
                  k(  r| S | j                  |||«      S rž  )r³   r¢   r«   ÚCASE_FLAGS_COMBINATIONSrÀ   r­   Úrebuild©r;   r³   r«   r­   s       r>   rµ   zRegexBase.with_flags™  s‹   € ØÐØ—}‘}‰Hä˜H“~ˆHØÐØŸ™‰Jä0°¼jÑ1HÑIˆJØÐØŸ™‰Iä˜Y›ˆIà˜Ÿ™Ò%¨*¸¿¹Ò*GØ
�t—~‘~Ò
%ØˆKà�|‰|˜H j°)Ó<Ð<r?   c                  ó   — y rž  rD   ©r;   r2   r§   Úfuzzys       r>   Ú
fix_groupszRegexBase.fix_groups­  s   € Ør?   c                 ó   — | S rž  rD   ©r;   r—   r§   s      r>   r¸   zRegexBase.optimise°  ó   € Øˆr?   c                 ó   — | S rž  rD   ©r;   r—   s     r>   Úpack_characterszRegexBase.pack_characters³  rm  r?   c                 ó   — | S rž  rD   rb  s    r>   Úremove_captureszRegexBase.remove_captures¶  rm  r?   c                  ó   — y©NTrD   rb  s    r>   Ú	is_atomiczRegexBase.is_atomic¹  ó   € Ør?   c                  ó   — yrt  rD   rb  s    r>   Úcan_be_affixzRegexBase.can_be_affix¼  rv  r?   c                  ó   — y©NFrD   rb  s    r>   Úcontains_groupzRegexBase.contains_group¿  ó   € Ør?   c                 ó   — t        «       ‚rž  )rL   ©r;   r§   s     r>   Úget_firstsetzRegexBase.get_firstsetÂ  s   € ÜÓÐr?   c                  ó   — yrz  rD   rb  s    r>   Úhas_simple_startzRegexBase.has_simple_startÅ  r|  r?   c                 ó&   — | j                  ||«      S rž  )Ú_compile©r;   r§   ri  s      r>   r¥   zRegexBase.compileÈ  s   € Ø�}‰}˜W eÓ,Ð,r?   c                  ó   — yrz  rD   rb  s    r>   r  zRegexBase.is_emptyË  r|  r?   c                 ó,   — t        | j                  «      S rž  )Úhashra  rb  s    r>   Ú__hash__zRegexBase.__hash__Î  s   € Ü�D—I‘I‹Ðr?   c                 ód   — t        | «      t        |«      u xr | j                  |j                  k(  S rž  )rÞ  ra  ©r;   Úothers     r>   Ú__eq__zRegexBase.__eq__Ñ  s'   € Ü�D‹zœT %›[Ð(ÒD¨T¯Y©Y¸%¿*¹*Ñ-DÐDr?   c                 ó&   — | j                  |«       S rž  )rŒ  rŠ  s     r>   Ú__ne__zRegexBase.__ne__Ô  s   € Ø—;‘;˜uÓ%Ð%Ð%r?   c                 ó&   — | j                  «       d fS rž  ©Ú	max_widthr~  s     r>   Úget_required_stringzRegexBase.get_required_string×  ó   € Ø�~‰~Ó Ð%Ð%r?   )NNN©FF)r@   rA   rB   r:   rµ   rj  r¸   rp  rr  ru  rx  r{  r  r�  r¥   r  rˆ  rŒ  rŽ  r’  rD   r?   r>   r_  r_  •  sX   „ ò#ó=ò(òòòòòòòòó-òòòEò&ó&r?   r_  c                   ó,   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zy)ÚZeroWidthBasec                 ó–   — t         j                  | «       t        |«      | _        || _        | j
                  | j                  f| _        y rž  )r_  r:   r¢   r³   rÕ  rZ   ra  )r;   r³   rÕ  s      r>   r:   zZeroWidthBase.__init__Ü  s6   € Ü×Ñ˜4Ô Ü˜X›ˆŒØ ˆŒà—N‘N D§M¡MÐ1ˆ�	r?   c                 ó   — t        d g«      S rž  ©r°   r~  s     r>   r  zZeroWidthBase.get_firstsetã  ó   € Ü�D�6‹{Ðr?   c                 ó¦   — d}| j                   r	|t        z  }|r	|t        z  }|r	|t        z  }|| j                  t
        z  z  }| j                  |fgS ©Nr   )r³   ÚPOSITIVE_OPÚFUZZY_OPÚ
REVERSE_OPrÕ  ÚENCODING_OP_SHIFTÚ_opcode©r;   r§   ri  rŽ   s       r>   rƒ  zZeroWidthBase._compileæ  sX   € ØˆØ�=Š=Ø”[Ñ ˆEÙØ”XÑˆEÙØ”ZÑˆEØ�—‘Ô"3Ñ3Ñ3ˆØ—‘˜uÐ%Ð&Ð&r?   c           	      ó    — t        dj                  t        |z  | j                  t        | j
                     ddg| j                     «      «       y )Nú	{}{} {}{}rg   ú ASCII)Úprintr8   ÚINDENTÚ_op_nameÚPOS_TEXTr³   rÕ  ©r;   Úindentr§   s      r>   ÚdumpzZeroWidthBase.dumpñ  s@   € Üˆk× Ñ ¤¨&¡°$·-±-Ü
�4—=‘=Ñ
! B¨ >°$·-±-Ñ#@óBõ 	Cr?   c                  ó   — yrœ  rD   rb  s    r>   r‘  zZeroWidthBase.max_widthõ  ó   € Ør?   N)Tr   )r@   rA   rB   r:   r  rƒ  r¬  r‘  rD   r?   r>   r–  r–  Û  s   „ ó2òò	'òCór?   r–  c                   óZ   — e Zd Zej                  ej
                  dœZdZd„ Zd„ Z	d„ Z
d„ Zy)râ   rZ  ÚANYc                  ó   — yrt  rD   rb  s    r>   r�  zAny.has_simple_startü  rv  r?   c                 ó@   — d}|r	|t         z  }| j                  |   |fgS rœ  )rž  r¡  r¢  s       r>   rƒ  zAny._compileÿ  s+   € ØˆÙØ”XÑˆEØ—‘˜gÑ&¨Ð.Ð/Ð/r?   c                 ó\   — t        dj                  t        |z  | j                  «      «       y )Nú{}{})r¦  r8   r§  r¨  rª  s      r>   r¬  zAny.dump  s   € Üˆf�m‰mœF V™O¨T¯]©]Ó;Õ<r?   c                  ó   — y©Nr.   rD   rb  s    r>   r‘  zAny.max_width  r®  r?   N)r@   rA   rB   ÚOPr°  ÚANY_REVr¡  r¨  r�  rƒ  r¬  r‘  rD   r?   r>   râ   râ   ø  s-   „ Ø—f‘f B§J¡JÑ/€GØ€Hòò0ò=ór?   râ   c                   óH   — e Zd Zej                  ej
                  dœZdZd„ Zy)r¤   rZ  ÚANY_ALLc                 óh   — d| _         d| _        d| _        | j                  | j                   f| _        y )NTFr   )r³   r­   r«   rZ   ra  rb  s    r>   r:   zAnyAll.__init__  s+   € ØˆŒØˆŒØˆŒà—N‘N D§M¡MÐ1ˆ�	r?   N)	r@   rA   rB   r·  rº  ÚANY_ALL_REVr¡  r¨  r:   rD   r?   r>   r¤   r¤     s   „ Ø—j‘j¨¯©Ñ7€GØ€Hó2r?   r¤   c                   óB   — e Zd Zej                  ej
                  dœZdZy)rá   rZ  ÚANY_UN)r@   rA   rB   r·  r¾  Ú	ANY_U_REVr¡  r¨  rD   r?   r>   rá   rá     s   „ Ø—h‘h b§l¡lÑ3€GØ�Hr?   rá   c                   óf   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)r{  c                 ó<   — t         j                  | «       || _        y rž  )r_  r:   r
  )r;   r
  s     r>   r:   zAtomic.__init__  s   € Ü×Ñ˜4Ô Ø$ˆ�r?   c                 ó>   — | j                   j                  |||«       y rž  ©r
  rj  rh  s       r>   rj  zAtomic.fix_groups  ó   € Ø�‰×"Ñ" 7¨G°UÕ;r?   c                 ó”   — | j                   j                  ||«      | _         | j                   j                  «       r| j                   S | S rž  )r
  r¸   r  rl  s      r>   r¸   zAtomic.optimise"  s9   € ØŸ/™/×2Ñ2°4¸ÓAˆŒà�?‰?×#Ñ#Ô%Ø—?‘?Ð"Øˆr?   c                 óF   — | j                   j                  |«      | _         | S rž  ©r
  rp  ro  s     r>   rp  zAtomic.pack_characters)  ó   € ØŸ/™/×9Ñ9¸$Ó?ˆŒØˆr?   c                 óD   — | j                   j                  «       | _         | S rž  ©r
  rr  rb  s    r>   rr  zAtomic.remove_captures-  ó   € ØŸ/™/×9Ñ9Ó;ˆŒØˆr?   c                 ó6   — | j                   j                  «       S rž  ©r
  rx  rb  s    r>   rx  zAtomic.can_be_affix1  ó   € Ø�‰×+Ñ+Ó-Ð-r?   c                 ó6   — | j                   j                  «       S rž  ©r
  r{  rb  s    r>   r{  zAtomic.contains_group4  ó   € Ø�‰×-Ñ-Ó/Ð/r?   c                 ó8   — | j                   j                  |«      S rž  ©r
  r  r~  s     r>   r  zAtomic.get_firstset7  ó   € Ø�‰×+Ñ+¨GÓ4Ð4r?   c                 ó6   — | j                   j                  «       S rž  ©r
  r�  rb  s    r>   r�  zAtomic.has_simple_start:  ó   € Ø�‰×/Ñ/Ó1Ð1r?   c                 ó†   — t         j                  fg| j                  j                  ||«      z   t         j                  fgz   S rž  )r·  ÚATOMICr
  r¥   ÚENDr„  s      r>   rƒ  zAtomic._compile=  s8   € Ü—)‘)�� $§/¡/×"9Ñ"9¸'À5Ó"IÑIÜ�F‰Fˆ:ˆ,ñð 	r?   c                 ó„   — t        dj                  t        |z  «      «       | j                  j	                  |dz   |«       y )Nú{}ATOMICr.   )r¦  r8   r§  r
  r¬  rª  s      r>   r¬  zAtomic.dumpA  s1   € Üˆj×Ñ¤¨¡Ó0Ô1Ø�‰×Ñ˜V a™Z¨Õ1r?   c                 ó6   — | j                   j                  «       S rž  ©r
  r  rb  s    r>   r  zAtomic.is_emptyE  ó   € Ø�‰×'Ñ'Ó)Ð)r?   c                 ód   — t        | «      t        |«      u xr | j                  |j                  k(  S rž  )rÞ  r
  rŠ  s     r>   rŒ  zAtomic.__eq__H  s0   € Ü�T“
œd 5›kÐ)ò ¨d¯o©oØ
×
Ñ
ñ/ð 	r?   c                 ó6   — | j                   j                  «       S rž  ©r
  r‘  rb  s    r>   r‘  zAtomic.max_widthL  ó   € Ø�‰×(Ñ(Ó*Ð*r?   c                 ó8   — | j                   j                  |«      S rž  ©r
  r’  r~  s     r>   r’  zAtomic.get_required_stringO  ó   € Ø�‰×2Ñ2°7Ó;Ð;r?   N)r@   rA   rB   r:   rj  r¸   rp  rr  rx  r{  r  r�  rƒ  r¬  r  rŒ  r‘  r’  rD   r?   r>   r{  r{    sM   „ ò%ò<òòòò.ò0ò5ò2òò2ò*òò+ó<r?   r{  c                   ó(   — e Zd Zej                  ZdZy)ÚBoundaryÚBOUNDARYN)r@   rA   rB   r·  ré  r¡  r¨  rD   r?   r>   rè  rè  R  s   „ Ø�k‰k€GØ�Hr?   rè  c                   ó&  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zy)rÒ   c                 ó<   — t         j                  | «       || _        y rž  )r_  r:   rÔ   )r;   rÔ   s     r>   r:   zBranch.__init__W  s   € Ü×Ñ˜4Ô Ø ˆ�r?   c                 óL   — | j                   D ]  }|j                  |||«       Œ y rž  )rÔ   rj  )r;   r2   r§   ri  rm   s        r>   rj  zBranch.fix_groups[  s%   € Ø—‘ò 	2ˆAØ�L‰L˜ '¨5Õ1ñ	2r?   c                 óì  — | j                   st        g «      S t        j                  ||| j                   «      }|rt        j	                  ||«      \  }}g }nt        j                  ||«      \  }}g }t        j                  |||«      }t        |«      dkD  rLt        |«      g}|r|s>| j                  |||«      }|r)|r|j                  |«       n|j                  d|«       n|}t        ||z   |z   «      S r\  )rÔ   rñ   rÒ   Ú_flatten_branchesÚ_split_common_suffixÚ_split_common_prefixÚ_reduce_to_setr^   Ú_add_precheckr[   Úinsertr]  )r;   r—   r§   rÔ   ÚsuffixrF  rò   Úfirstsets           r>   r¸   zBranch.optimise_  sì   € Ø�}Š}Ü˜B“<Ðô ×+Ñ+¨D°'¸4¿=¹=ÓIˆñ Ü%×:Ñ:¸4ÀÓJÑˆF�HØ‰Fä%×:Ñ:¸4ÀÓJÑˆF�HØˆFô ×(Ñ(¨¨w¸ÓAˆäˆx‹=˜1ÒÜ˜xÓ(Ð)ˆHá¡à×-Ñ-¨d°G¸XÓF�áÙØ Ÿ™¨Õ1à Ÿ™¨¨8Õ4àˆHä˜V hÑ.°Ñ7Ó8Ð8r?   c           
      ó  — t        «       }|rdnd}|D ]F  }t        |«      t        u r2|j                  t        k(  r|j                  |j                  |   «       ŒF y  |sy t        |||D �cg c]  }t        |«      ‘Œ c}«      S c c}w ©Néÿÿÿÿr   )	r°   rÞ  ÚLiteralr«   r±   r´   Ú
charactersr£   r²   )r;   r—   r§   rÔ   rÐ  r3   Úbranchr½   s           r>   rò  zBranch._add_precheck‚  s}   € Ü“%ˆÙ‰b ˆàò 	ˆFÜ�F‹|œwÑ&¨6×+<Ñ+<ÄÒ+FØ—‘˜F×-Ñ-¨cÑ2Õ3áð		ñ Øä˜t WÀWÖ.MÀ¬y¸­|Ò.MÓNÐNùÒ.Ms   Á*Bc                 ól   — | j                   D �cg c]  }|j                  |«      ‘Œ c}| _         | S c c}w rž  )rÔ   rp  )r;   r—   rm   s      r>   rp  zBranch.pack_characters‘  s.   € Ø:>¿-¹-ÖH°Q˜×*Ñ*¨4Õ0ÒHˆŒØˆùò Is   �1c                 ój   — | j                   D �cg c]  }|j                  «       ‘Œ c}| _         | S c c}w rž  )rÔ   rr  )r;   rm   s     r>   rr  zBranch.remove_captures•  s,   € Ø6:·m±mÖD°˜×*Ñ*Õ,ÒDˆŒØˆùò Eó   �0c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrž  ©ru  ©r¡  rm   s     r>   r¢  z#Branch.is_atomic.<locals>.<genexpr>š  ó   è ø€ Ò8 Q�1—;‘;—=Ñ8ùó   ‚©r¦  rÔ   rb  s    r>   ru  zBranch.is_atomic™  ó   € ÜÑ8¨$¯-©-Ô8Ó8Ð8r?   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrž  )rx  r  s     r>   r¢  z&Branch.can_be_affix.<locals>.<genexpr>�  s   è ø€ Ò;¨�1—>‘>×#Ñ;ùr  r  rb  s    r>   rx  zBranch.can_be_affixœ  s   € ÜÑ;¨T¯]©]Ô;Ó;Ð;r?   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrž  ©r{  r  s     r>   r¢  z(Branch.contains_group.<locals>.<genexpr>   s   è ø€ Ò=¨!�1×#Ñ#×%Ñ=ùr  )r  rÔ   rb  s    r>   r{  zBranch.contains_groupŸ  s   € ÜÑ=¨t¯}©}Ô=Ó=Ð=r?   c                 ó€   — t        «       }| j                  D ]  }||j                  |«      z  }Œ |xs t        d g«      S rž  )r°   rÔ   r  )r;   r§   r¦   rm   s       r>   r  zBranch.get_firstset¢  sB   € Ü‹UˆØ—‘ò 	*ˆAØ�!—.‘. Ó)Ñ)‰Bð	*ð Ò ”S˜$˜“[Ð r?   c                 ó  — | j                   sg S t        j                  fg}| j                   D ]C  }|j                  |j	                  ||«      «       |j                  t        j                  f«       ŒE t        j                  f|d<   |S ©Nrø  )rÔ   r·  ÚBRANCHrº   r¥   r[   ÚNEXTrÚ  )r;   r§   ri  r»   rm   s        r>   rƒ  zBranch._compile©  sm   € Ø�}Š}ØˆIä—‘�ˆˆØ—‘ò 	%ˆAØ�K‰K˜Ÿ	™	 '¨5Ó1Ô2Ø�K‰KœŸ™˜Õ$ð	%ô —F‘F�:ˆˆR‰àˆr?   c                 ó  — t        dj                  t        |z  «      «       | j                  d   j	                  |dz   |«       | j                  dd  D ]8  }t        dj                  t        |z  «      «       |j	                  |dz   |«       Œ: y )Nz{}BRANCHr   r.   ú{}OR)r¦  r8   r§  rÔ   r¬  )r;   r«  r§   rm   s       r>   r¬  zBranch.dump¶  sw   € Üˆj×Ñ¤¨¡Ó0Ô1Ø�‰�aÑ×Ñ˜f q™j¨'Ô2Ø—‘˜q˜sÐ$ò 	(ˆAÜ�&—-‘-¤¨¡Ó0Ô1Ø�F‰F�6˜A‘:˜wÕ'ñ	(r?   c                 ó¶   — g }|D ]Q  }|j                  | |«      }t        |t        «      r|j                  |j                  «       ŒA|j                  |«       ŒS |S rž  )r¸   r/   rÒ   rº   rÔ   r[   )r—   r§   rÔ   Únew_branchesrm   s        r>   rî  zBranch._flatten_branches½  sZ   € ð ˆØò 	'ˆAØ—
‘
˜4 Ó)ˆAÜ˜!œVÔ$Ø×#Ñ# A§J¡JÕ/à×#Ñ# AÕ&ð	'ð Ðr?   c                 ó–  ‡‡	‡
— g }|D ]@  }t        |t        «      r|j                  |j                  «       Œ/|j                  |g«       ŒB t	        d„ |D «       «      }|d   Š
dŠ	|}‰	|k  r[‰
‰	   j                  «       rHt        ˆ	ˆ
fd„|D «       «      r3‰	dz  Š	‰	|k  r)‰
‰	   j                  «       rt        ˆ	ˆ
fd„|D «       «      rŒ3‰	Š| j                  t        z  r:‰	Š‰dkD  r3t        ˆfd„|D «       «      s‰dz  Š‰dkD  rt        ˆfd„|D «       «      sŒ‰dk(  rg |fS g }|D ]  }|j                  t        |‰d  «      «       Œ! ‰
d ‰ |fS )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrž  ©r^   ©r¡  rl   s     r>   r¢  z.Branch._split_common_prefix.<locals>.<genexpr>Ö  ó   è ø€ Ò5 1œ˜AŸÑ5ùó   ‚r   c              3   ó4   •K  — | ]  }|‰   ‰‰   k(  –— Œ y ­wrž  rD   )r¡  rl   r3   rF  s     €€r>   r¢  z.Branch._split_common_prefix.<locals>.<genexpr>Ü  ó.   øè ø€ ò C-Øð DEÀSÁ6Ø
�‰+õDñ C-ùó   ƒr.   c              3   óJ   •K  — | ]  }t         j                  |‰«      –— Œ y ­wrž  )rÒ   Ú
_can_split©r¡  rl   r4   s     €r>   r¢  z.Branch._split_common_prefix.<locals>.<genexpr>å  s"   øè ø€ ò (È¬×(9Ñ(9¸!¸U×(Cñ (ùó   ƒ #©
r/   rñ   r[   r  Úminrx  r¦  rŽ   r   r]  )r—   rÔ   Úalternativesrm   r  Úend_posr  rl   r4   r3   rF  s           @@@r>   rð  zBranch._split_common_prefixÊ  s‚  ú€ ð ˆØò 	)ˆAÜ˜!œXÔ&Ø×#Ñ# A§G¡GÕ,à×#Ñ# Q CÕ(ð		)ô Ñ5¨Ô5Ó5ˆ	ð ˜a‘ˆØˆØˆØ�GŠm  s¡× 8Ñ 8Ô :¼sô C-Ø+ôC-ô @-à�1‰HˆCð �GŠm  s¡× 8Ñ 8Ô :¼sô C-Ø+ôC-õ @-ð ˆà�:‰:œÒð ˆEØ˜!’)¤Có (Øô(ô %à˜‘
�ð ˜!’)¤Có (Øô(õ %ð
 �AŠ:Ø�x�<Ðð ˆØò 	<ˆAØ×Ñ¤¨a°°¨kÓ :Õ;ð	<ð �w˜Ð Ð-Ð-r?   c                 ó¢  ‡‡	‡
— g }|D ]@  }t        |t        «      r|j                  |j                  «       Œ/|j                  |g«       ŒB t	        d„ |D «       «      }|d   Š
dŠ	d|z
  }‰	|kD  r[‰
‰	   j                  «       rHt        ˆ	ˆ
fd„|D «       «      r3‰	dz  Š	‰	|kD  r)‰
‰	   j                  «       rt        ˆ	ˆ
fd„|D «       «      rŒ3d‰	z
  Š| j                  t        z  r8‰dkD  r3t        ˆfd„|D «       «      s‰dz  Š‰dkD  rt        ˆfd„|D «       «      sŒ‰dk(  rg |fS g }|D ]   }|j                  t        |d ‰  «      «       Œ" ‰
‰ d  |fS )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrž  r  r  s     r>   r¢  z.Branch._split_common_suffix.<locals>.<genexpr> 	  r  r  r   rø  c              3   ó4   •K  — | ]  }|‰   ‰‰   k(  –— Œ y ­wrž  rD   )r¡  rl   r3   rô  s     €€r>   r¢  z.Branch._split_common_suffix.<locals>.<genexpr>	  r  r  r.   c              3   óJ   •K  — | ]  }t         j                  |‰«      –— Œ y ­wrž  )rÒ   Ú_can_split_revr   s     €r>   r¢  z.Branch._split_common_suffix.<locals>.<genexpr>	  s"   øè ø€ ò (ÈA¬×(=Ñ(=¸aÀ×(Gñ (ùr!  r"  )r—   rÔ   r$  rm   r  r%  r  rl   r4   r3   rô  s           @@@r>   rï  zBranch._split_common_suffixô  s‰  ú€ ð ˆØò 	)ˆAÜ˜!œXÔ&Ø×#Ñ# A§G¡GÕ,à×#Ñ# Q CÕ(ð		)ô Ñ5¨Ô5Ó5ˆ	ð ˜a‘ˆØˆØ�y‘.ˆØ�GŠm  s¡× 8Ñ 8Ô :¼sô C-Ø+ôC-ô @-à�1‰HˆCð �GŠm  s¡× 8Ñ 8Ô :¼sô C-Ø+ôC-õ @-ð �S‘ˆà�:‰:œÒð ˜!’)¤Có (Øô(ô %à˜‘
�ð ˜!’)¤Có (Øô(õ %ð
 �AŠ:Ø�x�<Ðð ˆØò 	=ˆAØ×Ñ¤¨a°°E°6¨lÓ ;Õ<ð	=ð �u�f�hÐ  ,Ð.Ð.r?   c                 ó„  — t         j                  | |dz
  «      syt         j                  | |«      syt         j                  | |dz
  |dz    «      ryt         j                  | |dz   «      rt         j                  | |dz
  |dz    «      ryt         j                  | |dz
  «      rt         j                  | |dz
  |dz    «      ryy)Nr.   TFrO   )rÒ   Ú_is_full_caseÚ
_is_folded)r  r4   s     r>   r  zBranch._can_split	  s¿   € ô ×#Ñ# E¨5°1©9Ô5Øä×#Ñ# E¨5Ô1Øô ×Ñ˜U 5¨1¡9¨u°q©yÐ9Ô:Øô × Ñ  ¨°©	Ô2Ü
×
Ñ
˜E %¨!¡)¨e°a©iÐ8Ô
9Øô × Ñ  ¨°©	Ô2Ü
×
Ñ
˜E %¨!¡)¨e°a©iÐ8Ô
9Øàr?   c                 óÖ  — t        | «      }t        j                  | ||z
  «      syt        j                  | ||z
  dz
  «      syt        j                  | ||z
  dz
  ||z
  dz    «      ryt        j                  | ||z
  dz   «      r%t        j                  | ||z
  dz
  ||z
  dz    «      ryt        j                  | ||z
  dz
  «      r%t        j                  | ||z
  dz
  ||z
  dz    «      ryy)NTr.   FrO   )r^   rÒ   r,  r-  )r  r4   r  s      r>   r*  zBranch._can_split_rev6	  sð   € ä�%‹jˆô ×#Ñ# E¨3°©;Ô7Øä×#Ñ# E¨3°©;¸©?Ô;Øô ×Ñ˜U 3¨¡;°¡?°S¸5±[À1±_ÐEÔFØô × Ñ  ¨¨e©°a©Ô8Ü
×
Ñ
˜E #¨¡+°¡/°C¸%±KÀ!±OÐDÔ
EØô × Ñ  ¨¨e©°a©Ô8Ü
×
Ñ
˜E #¨¡+°¡/°C¸%±KÀ!±OÐDÔ
EØàr?   c                 óÄ  — t        t        «      }i }g }|D �].  }t        j                  |«      rE||j                     j                  |g«       |j                  |j                  t        |«      «       Œ^t        |t        «      r—|j                  r‹t        j                  |j                  d   «      ri||j                  d   j                     j                  |j                  «       |j                  |j                  d   j                  t        |«      «       �Œt        j                  | ||||«       |j                  |«       �Œ1 t        j                  | |||«       |S rœ  )r   r·   rÒ   Ú_is_simple_characterr_   r[   Ú
setdefaultr^   r/   rñ   r  Ú_flush_char_prefix)r—   r§   rÔ   ÚprefixedÚorderr  rm   s          r>   Ú_merge_common_prefixeszBranch._merge_common_prefixesQ	  s  € ô
 œtÓ$ˆØˆØˆØó 	'ˆAÜ×*Ñ*¨1Ô-à˜Ÿ™Ñ!×(Ñ(¨!¨Ô-Ø× Ñ  §¡¬#¨e«*Õ5Ü˜Q¤Ô)¨a¯gªgÜ×)Ñ)¨!¯'©'°!©*Ô5à˜Ÿ™ ™×)Ñ)Ñ*×1Ñ1°!·'±'Ô:Ø× Ñ  §¡¨¡×!1Ñ!1´3°u³:Ö>ä×)Ñ)¨$°¸À5Øô ð ×#Ñ# AÖ&ð	'ô  	×!Ñ! $¨°%¸ÔFàÐr?   c                 ó\   — t        | t        «      xr | j                  xr | j                   S rž  )r/   r²   r³   r«   ©r½   s    r>   r0  zBranch._is_simple_characterm	  s$   € ä˜!œYÓ'ÒK¨A¯J©JÒK¸q¿|¹|Ð;KÐKr?   c                 ó¨  — g }t        «       }t        }|D ]¡  }t        |t        t        t
        f«      rZ|j                  |k7  r%t        j                  | ||||«       |j                  }|j                  |j                  t        ¬«      «       Œxt        j                  | ||||«       |j                  |«       Œ£ t        j                  | ||||«       |S ©Nrª   )r°   r±   r/   r²   r?  ÚSetBaser«   rÒ   Ú_flush_set_membersr´   rµ   r[   )r—   r§   rÔ   r  r  r«   rm   s          r>   rñ  zBranch._reduce_to_setq	  sÈ   € ð ˆÜ“ˆÜˆ
Øò 	'ˆAÜ˜!œi¬´7Ð;Ô<à—<‘< :Ò-ä×-Ñ-¨d°G¸UÀJØ"ô$ð "#§¡�Jà—	‘	˜!Ÿ,™,´&˜,Ó9Õ:ä×)Ñ)¨$°¸À
Øô ð ×#Ñ# AÕ&ð	'ô" 	×!Ñ! $¨°¸
Ø
ô	ð Ðr?   c           	      ó  ‡— |sy t        |j                  «       ˆfd„¬«      D ]Æ  \  }}t        |«      dk(  r|j                  t	        |d   «      «       Œ2g }d}|D ]L  }	t        |	«      dkD  r|j                  t	        |	dd  «      «       Œ/|rŒ2|j                  t        «       «       d}ŒN t        t        |«      t        |«      g«      }
|j                  |
j                  | |«      «       ŒÈ |j                  «        ‰j                  «        y )Nc                 ó   •— ‰| d      S rœ  rD   )Úpairr4  s    €r>   ú<lambda>z+Branch._flush_char_prefix.<locals>.<lambda>“	  s   ø€ Ø
��Q‘‰.ð r?   ©Úkeyr.   r   FT)
Úsortedr  r^   r[   r]  rñ   r²   rÒ   r¸   r�   )r—   r§   r3  r4  r  r_   rÔ   ÚsubbranchesÚoptionalrm   rò   s      `       r>   r2  zBranch._flush_char_prefix�	  sö   ø€ ñ Øä% h§n¡nÓ&6ó =ô  ò 	F‰OˆE�8ä�8‹} Ò!Ø×#Ñ#¤M°(¸1±+Ó$>Õ?à �Ø �Ø!ò (�AÜ˜1“v ’zØ#×*Ñ*¬=¸¸1¸3¸Ó+AÕBÚ%Ø#×*Ñ*¬8«:Ô6Ø#'™ð(ô $¤Y¨uÓ%5´v¸kÓ7JÐ$KÓL�Ø×#Ñ# H×$5Ñ$5°d¸GÓ$DÕEð	Fð" 	�‰ÔØ�‰�r?   c                 óð   — |sy t        |«      dk(  rt        |«      d   }n%t        | t        |«      «      j                  | |«      }|j	                  |j                  |¬«      «       |j                  «        y )Nr.   r   rª   )r^   r·   r¶   r¸   r[   rµ   r�   )r—   r§   r  r«   r  rø   s         r>   r;  zBranch._flush_set_members§	  sa   € ñ Øäˆu‹:˜Š?Ü˜“;˜q‘>‰Dä˜D¤$ u£+Ó.×7Ñ7¸¸gÓFˆDà×Ñ˜DŸO™O°z˜OÓBÔCà�‰�r?   c                 ó®   — d|cxk  rt        | «      k  sy y| |   }t        |t        «      xr( |j                  xr |j                  t
        z  t
        k(  S )Nr   F)r^   r/   r²   r³   r«   ÚFULLIGNORECASE)r  rp   rø   s      r>   r,  zBranch._is_full_case¶	  sX   € à�AÔ"œ˜E›
Ò"Øð #Øà�Q‰xˆÜ˜4¤Ó+ò ?°·±ò ?Ø�?‰?œ^Ñ+´Ñ
>ð	@r?   c                 ó\  — t        | «      dk  ry| D ],  }t        |t        «      r|j                  r|j                  rŒ, y dj                  d„ | D «       «      }t        j                  t        |«      }t        j                  «       }|D ]!  }|t        j                  t        |«      k(  sŒ! y y)NrO   Frg   c              3   óF   K  — | ]  }t        |j                  «      –— Œ y ­wrž  )Úchrr_   ©r¡  rp   s     r>   r¢  z$Branch._is_folded.<locals>.<genexpr>É	  s   è ø€ Ò5¨!œ˜QŸW™WŸÑ5ùs   ‚!T)
r^   r/   r²   r³   r«   r]   r   r–   ÚFULL_CASE_FOLDINGÚget_expand_on_folding)r  rp   ÚfoldedÚexpanding_charsr½   s        r>   r-  zBranch._is_folded¿	  sŸ   € äˆu‹:˜Š>Øàò 	ˆAÜ˜q¤)Ô,°A·J²JØ�l‹lÙð	ð
 —‘Ñ5¨uÔ5Ó5ˆÜ×!Ñ!Ô"3°VÓ<ˆô !×6Ñ6Ó8ˆà ò 	ˆAØœ×)Ñ)Ô*;¸QÓ?Ó?Ùð	ð r?   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrž  ©r  r  s     r>   r¢  z"Branch.is_empty.<locals>.<genexpr>Ö	  s   è ø€ Ò7 A�1—:‘:—<Ñ7ùr  r  rb  s    r>   r  zBranch.is_emptyÕ	  s   € ÜÑ7¨¯©Ô7Ó7Ð7r?   c                 ód   — t        | «      t        |«      u xr | j                  |j                  k(  S rž  )rÞ  rÔ   rŠ  s     r>   rŒ  zBranch.__eq__Ø	  s'   € Ü�D‹zœT %›[Ð(ÒL¨T¯]©]¸e¿n¹nÑ-LÐLr?   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrž  r�  r  s     r>   r¢  z#Branch.max_width.<locals>.<genexpr>Ü	  r  r  )r<  rÔ   rb  s    r>   r‘  zBranch.max_widthÛ	  r  r?   N)r@   rA   rB   r:   rj  r¸   rò  rp  rr  ru  rx  r{  r  rƒ  r¬  Ústaticmethodrî  rð  rï  r  r*  r5  r0  rñ  r2  r;  r,  r-  r  rŒ  r‘  rD   r?   r>   rÒ   rÒ   V  sF  „ ò!ò2ò!9òFOòòò9ò<ò>ò!òò(ð ñ
ó ð
ð ñ'.ó ð'.ðR ñ&/ó ð&/ðP ñó ðð0 ñó ðð4 ñó ðð6 ñLó ðLð ñó ðð6 ñó ðð2 ñó ðð ñ@ó ð@ð ñó ðò*8òMó9r?   rÒ   c                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
r�  c                 ó’   — t         j                  | «       || _        || _        || _        | j
                  | j                  f| _        y rž  )r_  r:   r—   rf  rÇ   rZ   ra  )r;   r—   rf  rÇ   s       r>   r:   zCallGroup.__init__ß	  s9   € Ü×Ñ˜4Ô ØˆŒ	ØˆŒ
Ø ˆŒà—N‘N D§J¡JÐ.ˆ�	r?   c                 óœ  — 	 t        | j                  «      | _        d| j                  cxk  r| j                  j                  k  sn t        d|| j                  «      ‚| j                  dkD  r=| j                  j                  | j                     dkD  rt        d|| j                  «      ‚| j                  j                  j                  | ||f«       | j                  | j                  f| _        y # t        $ rR 	 | j                  j                  | j                     | _        n$# t
        $ r t        d|| j                  «      ‚w xY wY �Œ.w xY w)NrS  r   rT  r.   zambiguous group reference)r  rf  r2  r—   Úgroup_indexr€   r'   rÇ   r}  Úopen_group_countÚgroup_callsr[   rZ   ra  rh  s       r>   rj  zCallGroup.fix_groupsç	  s  € ð	OÜ˜TŸZ™Z›ˆDŒJð �D—J‘JÔ7 $§)¡)×"7Ñ"7Ô7Ü˜¨°$·-±-Ó@Ð@à�:‰:˜Š>˜dŸi™i×8Ñ8¸¿¹ÑDÀqÒHÜÐ3°W¸d¿m¹mÓLÐLà�	‰	×Ñ×$Ñ$ d¨G°UÐ%;Ô<à—N‘N D§J¡JÐ.ˆ�	øô ò 	OðOØ!ŸY™Y×2Ñ2°4·:±:Ñ>�•
øÜò OÜÐ5°wÀÇÁÓNÐNðOúò ð	Oús)   ‚C0 Ã0	EÃ:(D#Ä"EÄ#!EÅEÅ
Ec                 óD   — t        d| j                  | j                  «      ‚©Nzgroup reference not allowed©r'   r2   rÇ   rb  s    r>   rr  zCallGroup.remove_capturesú	  ó   € ÜÐ1°4·<±<ÀÇÁÓOÐOr?   c                 ó<   — t         j                  | j                  fgS rž  )r·  Ú
GROUP_CALLÚcall_refr„  s      r>   rƒ  zCallGroup._compileý	  s   € Ü—‘ §¡Ð.Ð/Ð/r?   c                 ó\   — t        dj                  t        |z  | j                  «      «       y )Nz{}GROUP_CALL {})r¦  r8   r§  rf  rª  s      r>   r¬  zCallGroup.dump 
  s    € ÜÐ×&Ñ&¤v°¡¸¿
¹
ÓCÕDr?   c                 ód   — t        | «      t        |«      u xr | j                  |j                  k(  S rž  )rÞ  rf  rŠ  s     r>   rŒ  zCallGroup.__eq__
  ó'   € Ü�D‹zœT %›[Ð(ÒF¨T¯Z©Z¸5¿;¹;Ñ-FÐFr?   c                 ó   — t         S rž  r  rb  s    r>   r‘  zCallGroup.max_width
  ó   € ÜÐr?   c                 ó   — d | _         y rž  ©r—   rb  s    r>   Ú__del__zCallGroup.__del__	
  ó	   € Øˆ�	r?   N)r@   rA   rB   r:   rj  rr  rƒ  r¬  rŒ  r‘  rk  rD   r?   r>   r�  r�  Þ	  s-   „ ò/ò/ò&Pò0òEòGòór?   r�  c                   ó   — e Zd Zd„ Zd„ Zy)ÚCallRefc                 ó    — || _         || _        y rž  )ÚrefÚparsed)r;   rp  rq  s      r>   r:   zCallRef.__init__
  s   € ØˆŒØˆ�r?   c                 óœ   — t         j                  | j                  fg| j                  j	                  ||«      z   t         j
                  fgz   S rž  )r·  ÚCALL_REFrp  rq  rƒ  rÚ  r„  s      r>   rƒ  zCallRef._compile
  sE   € Ü—+‘+˜tŸx™xÐ(Ð)¨D¯K©K×,@Ñ,@ÀØ
ó-ñ Ü—V‘V�J�<ñ ð 	!r?   N©r@   rA   rB   r:   rƒ  rD   r?   r>   rn  rn  
  s   „ òó!r?   rn  c                   ó6  — e Zd Zedfej
                  edfej                  edfej
                  e	dfej                  edfej                  edfej                  edfej                  e	dfej                  iZdedfd„Zd„ Zdd„Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zy)r²   FTc                 óú  — t         j                  | «       || _        t        |«      | _        t
        |   | _        t        |«      | _        | j                  rM| j                  t        z  t        k(  r3t        j                  t        t        | j                  «      «      | _        nt        | j                  «      | _        | j                  | j                  | j                  | j                  | j                  f| _        y rž  )r_  r:   r_   r¢   r³   rd  r«   r­   rG  r   r–   rL  rJ  rN  rZ   ra  )r;   r_   r³   r«   r­   s        r>   r:   zCharacter.__init__
  s¨   € ä×Ñ˜4Ô ØˆŒ
Ü˜X›ˆŒÜ1°*Ñ=ˆŒÜ˜i›ˆŒà�MŠM˜tŸ™´Ñ?Ü
òä ×*Ñ*Ô+<¼cÀ$Ç*Á*»oÓNˆD�Kä˜dŸj™j›/ˆDŒKà—^‘^ T§Z¡Z°·±Ø
�/‰/˜4Ÿ>™>ð+ˆ�	r?   c                 ó2   — t        | j                  |||«      S rž  )r²   r_   rf  s       r>   re  zCharacter.rebuild-
  s   € Ü˜Ÿ™ X¨z¸9ÓEÐEr?   c                 ó   — | S rž  rD   ©r;   r—   r§   r¯   s       r>   r¸   zCharacter.optimise0
  rm  r?   c                 ó   — t        | g«      S rž  r™  r~  s     r>   r  zCharacter.get_firstset3
  rš  r?   c                  ó   — yrt  rD   rb  s    r>   r�  zCharacter.has_simple_start6
  rv  r?   c                 ó¶  — d}| j                   r	|t        z  }| j                  r	|t        z  }|r	|t        z  }t        | j                  | j                  |f   || j                  g«      }t        | j                  «      dkD  rCt        |t        | j                  D �cg c]  }t        |«      ‘Œ c}| j                  ¬«      g«      }|j                  ||«      S c c}w )Nr   r.   rª   )r³   r�  r­   ÚZEROWIDTH_OPrž  ÚPrecompiledCoder¡  r«   r_   r^   rN  rÒ   rÄ  rð   r¥   )r;   r§   ri  rŽ   r»   r½   s         r>   rƒ  zCharacter._compile9
  sÂ   € ØˆØ�=Š=Ø”[Ñ ˆEØ�>Š>Ø”\Ñ!ˆEÙØ”XÑˆEä §¡¨T¯_©_¸gÐ-EÑ FÈØ
�*‰*ð ó ˆô ˆt�{‰{Ó˜aÒä˜4¤¸¿¹Ö(E°A¬¨Q­Ò(EØŸ™ô"*ð +ó ,ˆDð �|‰|˜G UÓ+Ð+ùò )Fs   ÂCc           	      óê   — t        t        | j                  «      «      j                  d«      }t	        dj                  t        |z  t        | j                     |t        | j                     «      «       y )NÚbuz{}CHARACTER {} {}{})ÚasciirJ  r_   Úlstripr¦  r8   r§  r©  r³   Ú	CASE_TEXTr«   ©r;   r«  r§   Údisplays       r>   r¬  zCharacter.dumpL
  sV   € Üœ˜DŸJ™J›Ó(×/Ñ/°Ó5ˆÜÐ#×*Ñ*¬6°F©?Ü
�4—=‘=Ñ
! 7¬I°d·o±oÑ,FóHõ 	Ir?   c                 ó:   — || j                   k(  | j                  k(  S rž  )r_   r³   ©r;   rô   s     r>   ÚmatcheszCharacter.matchesQ
  s   € Ø�d—j‘jÑ  T§]¡]Ñ2Ð2r?   c                 ó,   — t        | j                  «      S rž  )r^   rN  rb  s    r>   r‘  zCharacter.max_widthT
  s   € Ü�4—;‘;ÓÐr?   c                 óf   — | j                   syt        d„ | j                  D «       «      | _        d| fS )Nr  c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrž  ©rð   ©r¡  r½   s     r>   r¢  z0Character.get_required_string.<locals>.<genexpr>[
  s   è ø€ Ò&C°!¤s¨1§vÑ&Cùr  r   )r³   r|   rN  Úfolded_charactersr~  s     r>   r’  zCharacter.get_required_stringW
  s,   € Ø�}Š}Øä!&Ñ&C°t·{±{Ô&CÓ!CˆÔà�$ˆwˆr?   N©F)r@   rA   rB   r±   r·  Ú	CHARACTERr   ÚCHARACTER_IGNr   rG  ÚCHARACTER_REVÚCHARACTER_IGN_REVr¡  r:   re  r¸   r  r�  rƒ  r¬  rˆ  r‘  r’  rD   r?   r>   r²   r²   
  sÅ   „ Ø˜ˆ §¡¨z¸5Ð.AØ×Ñ˜ 5Ð)¨2¯<©<¸.Øð:Ø×Ñ ¨ °×0@Ñ0@À:Ø
ðCØ×!Ñ! H¨dÐ#3°R×5EÑ5EØ�tÐ˜b×2Ñ2ð	4€Gð (,¸Øó+ò"Fóòòò,ò&Iò
3ò ór?   r²   c                   óf   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ru  c                 ót   — t         j                  | «       || _        || _        || _        || _        || _        y rž  )r_  r:   r—   rf  Úyes_itemÚno_itemrÇ   )r;   r—   rf  r–  r—  rÇ   s         r>   r:   zConditional.__init__`
  s3   € Ü×Ñ˜4Ô ØˆŒ	ØˆŒ
Ø ˆŒØˆŒØ ˆ�r?   c                 ó  — 	 t        | j                  «      | _        d| j                  cxk  r| j                  j                  k  sn t        d|| j                  «      ‚| j                  j                  |||«       | j                  j                  |||«       y # t        $ rj 	 | j                  j                  | j                     | _        n=# t
        $ r1 | j                  dk(  rd| _        nt        d|| j                  «      ‚Y nw xY wY Œïw xY w)NÚDEFINEr   rT  rS  )r  rf  r2  r—   rZ  r€   r'   rÇ   r}  r–  rj  r—  rh  s       r>   rj  zConditional.fix_groupsh
  så   € ð	IÜ˜TŸZ™Z›ˆDŒJð �D—J‘JÔ7 $§)¡)×"7Ñ"7Ô7ÜÐ1°7¸D¿M¹MÓJÐJà�‰× Ñ  ¨'°5Ô9Ø�‰×Ñ ¨°%Õ8øô ò 		IðIØ!ŸY™Y×2Ñ2°4·:±:Ñ>�•
øÜò IØ—:‘: Ò)ð "#�D•Jä °¸$¿-¹-ÓHÐHñ ð	Iüð		Iús5   ‚B Â	DÂ#(CÃDÃ7DÄDÄDÄDÄDc                 ó¸   — | j                   j                  ||«      }| j                  j                  ||«      }t        || j                  ||| j
                  «      S rž  )r–  r¸   r—  ru  rf  rÇ   )r;   r—   r§   r–  r—  s        r>   r¸   zConditional.optimise|
  sI   € Ø—=‘=×)Ñ)¨$°Ó8ˆØ—,‘,×'Ñ'¨¨gÓ6ˆä˜4 §¡¨X°wÀÇÁÓNÐNr?   c                 ó†   — | j                   j                  |«      | _         | j                  j                  |«      | _        | S rž  )r–  rp  r—  ro  s     r>   rp  zConditional.pack_characters‚
  s3   € ØŸ™×5Ñ5°dÓ;ˆŒØ—|‘|×3Ñ3°DÓ9ˆŒØˆr?   c                 ó€   — | j                   j                  «       | _         | j                  j                  «       | _        y rž  )r–  rr  r—  rb  s    r>   rr  zConditional.remove_captures‡
  s*   € ØŸ™×5Ñ5Ó7ˆŒØ—|‘|×3Ñ3Ó5ˆ�r?   c                 ón   — | j                   j                  «       xr | j                  j                  «       S rž  )r–  ru  r—  rb  s    r>   ru  zConditional.is_atomic‹
  s'   € Ø�}‰}×&Ñ&Ó(ÒE¨T¯\©\×-CÑ-CÓ-EÐEr?   c                 ón   — | j                   j                  «       xr | j                  j                  «       S rž  )r–  rx  r—  rb  s    r>   rx  zConditional.can_be_affixŽ
  s'   € Ø�}‰}×)Ñ)Ó+ÒK°·±×0IÑ0IÓ0KÐKr?   c                 ón   — | j                   j                  «       xs | j                  j                  «       S rž  )r–  r{  r—  rb  s    r>   r{  zConditional.contains_group‘
  s'   € Ø�}‰}×+Ñ+Ó-ÒN°·±×1LÑ1LÓ1NÐNr?   c                 óp   — | j                   j                  |«      | j                  j                  |«      z  S rž  )r–  r  r—  r~  s     r>   r  zConditional.get_firstset”
  s0   € Ø—‘×*Ñ*¨7Ó3Ø
�,‰,×
#Ñ
# GÓ
,ñ-ð 	.r?   c                 ót  — t         j                  | j                  fg}|j                  | j                  j                  ||«      «       | j                  j                  ||«      }|r1|j                  t         j                  f«       |j                  |«       |j                  t         j                  f«       |S rž  )
r·  ÚGROUP_EXISTSrf  rº   r–  r¥   r—  r[   r  rÚ  ©r;   r§   ri  r»   Úadd_codes        r>   rƒ  zConditional._compile˜
  s‚   € Ü—‘ $§*¡*Ð-Ð.ˆØ�‰�D—M‘M×)Ñ)¨'°5Ó9Ô:Ø—<‘<×'Ñ'¨°Ó7ˆÙØ�K‰KœŸ™˜Ô$Ø�K‰K˜Ô!à�‰”R—V‘V�JÔàˆr?   c                 óP  — t        dj                  t        |z  | j                  «      «       | j                  j                  |dz   |«       | j                  j                  «       sAt        dj                  t        |z  «      «       | j                  j                  |dz   |«       y y )Nz{}GROUP_EXISTS {}r.   r  )r¦  r8   r§  rf  r–  r¬  r—  r  rª  s      r>   r¬  zConditional.dump¤
  sz   € ÜÐ!×(Ñ(¬°&©¸$¿*¹*ÓEÔFØ�‰×Ñ˜6 A™: wÔ/Ø�|‰|×$Ñ$Ô&Ü�&—-‘-¤¨¡Ó0Ô1Ø�L‰L×Ñ˜f q™j¨'Õ2ð 'r?   c                 ón   — | j                   j                  «       xr | j                  j                  «       S rž  )r–  r  r—  rb  s    r>   r  zConditional.is_empty«
  s'   € Ø�}‰}×%Ñ%Ó'ÒC¨D¯L©L×,AÑ,AÓ,CÐCr?   c                 óÀ   — t        | «      t        |«      u xrG | j                  | j                  | j                  f|j                  |j                  |j                  fk(  S rž  )rÞ  rf  r–  r—  rŠ  s     r>   rŒ  zConditional.__eq__®
  sR   € Ü�D‹zœT %›[Ð(ò H¨d¯j©j¸$¿-¹-Ø
�,‰,ð.Ø!ŸK™K¨¯©¸¿¹ÐGñ.Hð 	Hr?   c                 óz   — t        | j                  j                  «       | j                  j                  «       «      S rž  ©r<  r–  r‘  r—  rb  s    r>   r‘  zConditional.max_width²
  ó)   € Ü�4—=‘=×*Ñ*Ó,¨d¯l©l×.DÑ.DÓ.FÓGÐGr?   c                 ó   — d | _         y rž  rj  rb  s    r>   rk  zConditional.__del__µ
  rl  r?   N)r@   rA   rB   r:   rj  r¸   rp  rr  ru  rx  r{  r  rƒ  r¬  r  rŒ  r‘  rk  rD   r?   r>   ru  ru  _
  sT   „ ò!ò9ò(Oòò
6òFòLòOò.ò
ò3òDòHòHór?   ru  c                   ó(   — e Zd Zej                  ZdZy)ÚDefaultBoundaryÚDEFAULT_BOUNDARYN)r@   rA   rB   r·  r®  r¡  r¨  rD   r?   r>   r­  r­  ¸
  s   „ Ø×!Ñ!€GØ!�Hr?   r­  c                   ó(   — e Zd Zej                  ZdZy)ÚDefaultEndOfWordÚDEFAULT_END_OF_WORDN)r@   rA   rB   r·  r±  r¡  r¨  rD   r?   r>   r°  r°  ¼
  s   „ Ø×$Ñ$€GØ$�Hr?   r°  c                   ó(   — e Zd Zej                  ZdZy)ÚDefaultStartOfWordÚDEFAULT_START_OF_WORDN)r@   rA   rB   r·  r´  r¡  r¨  rD   r?   r>   r³  r³  À
  s   „ Ø×&Ñ&€GØ&�Hr?   r³  c                   ó(   — e Zd Zej                  ZdZy)rè   ÚEND_OF_LINEN)r@   rA   rB   r·  r¶  r¡  r¨  rD   r?   r>   rè   rè   Ä
  ó   „ Ø�n‰n€GØ�Hr?   rè   c                   ó(   — e Zd Zej                  ZdZy)rç   ÚEND_OF_LINE_UN)r@   rA   rB   r·  r¹  r¡  r¨  rD   r?   r>   rç   rç   È
  ó   „ Ø×Ñ€GØ�Hr?   rç   c                   ó(   — e Zd Zej                  ZdZy)ÚEndOfStringÚEND_OF_STRINGN)r@   rA   rB   r·  r½  r¡  r¨  rD   r?   r>   r¼  r¼  Ì
  rº  r?   r¼  c                   ó(   — e Zd Zej                  ZdZy)rê   ÚEND_OF_STRING_LINEN)r@   rA   rB   r·  r¿  r¡  r¨  rD   r?   r>   rê   rê   Ð
  s   „ Ø×#Ñ#€GØ#�Hr?   rê   c                   ó(   — e Zd Zej                  ZdZy)ré   ÚEND_OF_STRING_LINE_UN)r@   rA   rB   r·  rÁ  r¡  r¨  rD   r?   r>   ré   ré   Ô
  s   „ Ø×%Ñ%€GØ%�Hr?   ré   c                   ó(   — e Zd Zej                  ZdZy)Ú	EndOfWordÚEND_OF_WORDN)r@   rA   rB   r·  rÄ  r¡  r¨  rD   r?   r>   rÃ  rÃ  Ø
  r·  r?   rÃ  c                   ó   — e Zd ZdZd„ Zy)ÚFailureÚFAILUREc                 ó&   — t         j                  fgS rž  )r·  rÇ  r„  s      r>   rƒ  zFailure._compileß
  s   € Ü—‘�ÐÐr?   N©r@   rA   rB   r¨  rƒ  rD   r?   r>   rÆ  rÆ  Ü
  s   „ Ø€Hó r?   rÆ  c                   óV   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zy)r	  Nc                 ó¶  — t         j                  | «       |€i }|| _        || _        d|v r!dD ]  }||d   v sŒ|j	                  |d«       Œ t        |«      t        d«      z  rdD ]  }|j	                  |d«       Œ ndD ]  }|j	                  |d«       Œ |j	                  dd«       d|v rdD ]  }|d   j	                  |d«       Œ y ddd|d   d   dœ|d<   y )	Nr;  r?  r  rú   rn   r   r.   )rû   rp   rs   r<  )r_  r:   r
  r÷   r1  r°   )r;   r
  r÷   rn   s       r>   r:   zFuzzy.__init__ã
  s  € Ü×Ñ˜4Ô ØÐØˆKØ$ˆŒØ&ˆÔð �[Ñ Øò 9�Ø˜ FÑ+Ò+Ø×*Ñ*¨1¨iÕ8ð9ô ˆ{Óœc %›jÒ(Øò 2�Ø×&Ñ& q¨&Õ1ñ2ð ò 5�Ø×&Ñ& q¨)Õ4ð5ð 	×Ñ˜s IÔ.ð �[Ñ Øò 5�Ø˜FÑ#×.Ñ.¨q°!Õ4ñ5ð )*°¸Ø˜#Ñ˜qÑ!ñ##ˆK˜Òr?   c                 ó>   — | j                   j                  ||d«       y rt  rÃ  rh  s       r>   rj  zFuzzy.fix_groups  s   € Ø�‰×"Ñ" 7¨G°TÕ:r?   c                 óF   — | j                   j                  |«      | _         | S rž  rÇ  ro  s     r>   rp  zFuzzy.pack_characters	  rÈ  r?   c                 óD   — | j                   j                  «       | _         | S rž  rÊ  rb  s    r>   rr  zFuzzy.remove_captures  rË  r?   c                 ó6   — | j                   j                  «       S rž  ©r
  ru  rb  s    r>   ru  zFuzzy.is_atomic  rã  r?   c                 ó6   — | j                   j                  «       S rž  rÐ  rb  s    r>   r{  zFuzzy.contains_group  rÑ  r?   c                 ó  — g }dD ]D  }| j                   |   }|j                  |d   «       |j                  |d   €t        n|d   «       ŒF dD ]#  }|j                  | j                   d   |   «       Œ% | j                   d   d   }|j                  |€t        n|«       d}|r	|t        z  }| j                   j	                  d«      }|rut
        j                  |ft        |«      z   g|j                  |d«      z   t
        j                  fgz   | j                  j                  |d«      z   t
        j                  fgz   S t
        j                  |ft        |«      z   g| j                  j                  |d«      z   t
        j                  fgz   S )	NÚdiser   r.   r?  r;  r<  r  T)r÷   r[   r  rŸ  rÝ   r·  Ú	FUZZY_EXTr|   r¥   r  r
  rÚ  ÚFUZZY)r;   r§   ri  Ú	argumentsrn   ÚvrŽ   r  s           r>   rƒ  zFuzzy._compile  s‘  € àˆ	Øò 	BˆAØ× Ñ  Ñ#ˆAØ×Ñ˜Q˜q™TÔ"Ø×Ñ¨!¨A©$¨,�Y¸A¸a¹DÕAð	Bð ò 	:ˆAØ×Ñ˜T×-Ñ-¨fÑ5°aÑ8Õ9ð	:ð ×Ñ˜VÑ$ UÑ+ˆØ×Ñ a i�°QÔ7àˆÙØ”ZÑˆEà×Ñ×#Ñ# FÓ+ˆáÜ—l‘l EÐ*¬U°9Ó-=Ñ=Ð>Ø�l‰l˜7 DÓ)ñ*Ü.0¯g©g¨Z¨Lñ9à�o‰o×%Ñ% g¨tÓ4ñ5ä9;¿¹¸	°{ñCð Dô —(‘(˜EÐ"¤U¨9Ó%5Ñ5Ð6Ø
�/‰/×
!Ñ
! '¨4Ó
0ñ1Ü57·V±V°I°;ñ?ð 	@r?   c                 ó´   — | j                  «       }|rd|z   }t        dj                  t        |z  |«      «       | j                  j                  |dz   |«       y )NrQ  z	{}FUZZY{}r.   )Ú_constraints_to_stringr¦  r8   r§  r
  r¬  )r;   r«  r§   r÷   s       r>   r¬  z
Fuzzy.dump5  sN   € Ø×1Ñ1Ó3ˆÙØ Ñ+ˆKÜˆk× Ñ ¤¨&¡°+Ó>Ô?Ø�‰×Ñ˜V a™Z¨Õ1r?   c                 ó6   — | j                   j                  «       S rž  rÞ  rb  s    r>   r  zFuzzy.is_empty<  rß  r?   c                 óš   — t        | «      t        |«      u xr4 | j                  |j                  k(  xr | j                  |j                  k(  S rž  )rÞ  r
  r÷   rŠ  s     r>   rŒ  zFuzzy.__eq__?  sL   € Ü�T“
œd 5›kÐ)ò E¨d¯o©oØ
×
Ñ
ñ/ò EØ#×/Ñ/°5×3DÑ3DÑDð	Fr?   c                 ó   — t         S rž  r  rb  s    r>   r‘  zFuzzy.max_widthC  rh  r?   c                 ó  — g }dD ]^  }| j                   |   \  }}|dk(  rŒd}|dkD  rdj                  |«      }||z  }|�|dj                  |«      z  }|j                  |«       Œ` g }dD ];  }| j                   d   |   }|dkD  sŒ|j                  dj                  ||«      «       Œ= | j                   d   d   }|�7|dkD  r2d	j                  d
j                  |«      |«      }|j                  |«       dj                  |«      S )NÚidsr   rg   z{}<=z<={}r;  r´  r<  z{}<={}rþ   r  )r÷   r8   r[   r]   )	r;   r÷   rÆ   r#  r<  Úconr;  r@  Úlimits	            r>   rÙ  zFuzzy._constraints_to_stringF  s  € Øˆàò 	$ˆDØ×'Ñ'¨Ñ-‰HˆC�Ø�aŠxØàˆCà�QŠwØ—m‘m CÓ(�à�4‰KˆCàˆØ�v—}‘} SÓ)Ñ)�à×Ñ˜sÕ#ð	$ð" ˆØò 	8ˆDØ×$Ñ$ VÑ,¨TÑ2ˆEØ�q‹yØ—‘˜FŸM™M¨%°Ó6Õ7ð	8ð
 × Ñ  Ñ(¨Ñ/ˆØÐ ¨¢Ø—?‘? 3§8¡8¨D£>°5Ó9ˆDØ×Ñ˜tÔ$à�x‰x˜Ó$Ð$r?   rž  )r@   rA   rB   r:   rj  rp  rr  ru  r{  rƒ  r¬  r  rŒ  r‘  rÙ  rD   r?   r>   r	  r	  â
  sA   „ ó!#òF;òòò+ò0ò@ò<2ò*òFòó%r?   r	  c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)rÅ  c           	      óˆ   — t        t        t        t        «       dd «      t	        «       g«      «      }|j                  ||«      S r¶  )r{  rñ   r  r¤   ÚGraphemeBoundaryr¥   )r;   r§   ri  Úgrapheme_matchers       r>   rƒ  zGrapheme._compileh  sC   € ô "¤(¬J´v³xÀÀDÓ,IÜ
Ó
ð,ó #ó  Ðð  ×'Ñ'¨°Ó7Ð7r?   c                 óF   — t        dj                  t        |z  «      «       y )Nz
{}GRAPHEME)r¦  r8   r§  rª  s      r>   r¬  zGrapheme.dumpp  s   € Üˆl×!Ñ!¤&¨6¡/Ó2Õ3r?   c                 ó   — t         S rž  r  rb  s    r>   r‘  zGrapheme.max_widths  rh  r?   N)r@   rA   rB   rƒ  r¬  r‘  rD   r?   r>   rÅ  rÅ  g  s   „ ò8ò4ór?   rÅ  c                   ó   — e Zd Zd„ Zy)rã  c                 ó(   — t         j                  dfgS r¶  )r·  ÚGRAPHEME_BOUNDARYr„  s      r>   r¥   zGraphemeBoundary.compilew  s   € Ü×%Ñ% qÐ)Ð*Ð*r?   N)r@   rA   rB   r¥   rD   r?   r>   rã  rã  v  s   „ ó+r?   rã  c                   ó‚   — e Zd Zej                  ZdZd„ Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)r   ÚGREEDY_REPEATc                 óX   — t         j                  | «       || _        || _        || _        y rž  )r_  r:   r
  r  r  )r;   r
  r  r  s       r>   r:   zGreedyRepeat.__init__~  s%   € Ü×Ñ˜4Ô Ø$ˆŒØ"ˆŒØ"ˆ�r?   c                 ó>   — | j                   j                  |||«       y rž  rÃ  rh  s       r>   rj  zGreedyRepeat.fix_groups„  rÄ  r?   c                 óˆ   — | j                   j                  ||«      } t        | «      || j                  | j                  «      S rž  )r
  r¸   rÞ  r  r  ©r;   r—   r§   r
  s       r>   r¸   zGreedyRepeat.optimise‡  s5   € Ø—_‘_×-Ñ-¨d°GÓ<ˆ
àŒt�D‹z˜* d§n¡n°d·n±nÓEÐEr?   c                 óF   — | j                   j                  |«      | _         | S rž  rÇ  ro  s     r>   rp  zGreedyRepeat.pack_charactersŒ  rÈ  r?   c                 óD   — | j                   j                  «       | _         | S rž  rÊ  rb  s    r>   rr  zGreedyRepeat.remove_captures�  rË  r?   c                 ól   — | j                   | j                  k(  xr | j                  j                  «       S rž  )r  r  r
  ru  rb  s    r>   ru  zGreedyRepeat.is_atomic”  s'   € Ø�~‰~ §¡Ñ/ÒO°D·O±O×4MÑ4MÓ4OÐOr?   c                  ó   — yrz  rD   rb  s    r>   rx  zGreedyRepeat.can_be_affix—  r|  r?   c                 ó6   — | j                   j                  «       S rž  rÐ  rb  s    r>   r{  zGreedyRepeat.contains_groupš  rÑ  r?   c                 ó|   — | j                   j                  |«      }| j                  dk(  r|j                  d «       |S rœ  )r
  r  r  r´   )r;   r§   r¦   s      r>   r  zGreedyRepeat.get_firstset�  s2   € Ø�_‰_×)Ñ)¨'Ó2ˆØ�>‰>˜QÒØ�F‰F�4ŒLàˆ	r?   c                 ó0  — | j                   | j                  g}| j                  €|j                  t        «       n|j                  | j                  «       | j
                  j                  ||«      }|sg S t        |«      g|z   t        j                  fgz   S rž  )
r¡  r  r  r[   r  r
  r¥   r|   r·  rÚ  )r;   r§   ri  Úrepeatr
  s        r>   rƒ  zGreedyRepeat._compile¤  sv   € Ø—,‘, §¡Ð/ˆØ�>‰>Ð!Ø�M‰Mœ)Õ$à�M‰M˜$Ÿ.™.Ô)à—_‘_×,Ñ,¨W°eÓ<ˆ
ÙØˆIä�v“� *Ñ,´·±°
¨|Ñ;Ð<r?   c                 óè   — | j                   €d}n| j                   }t        dj                  t        |z  | j                  | j
                  |«      «       | j                  j                  |dz   |«       y )NÚINFú
{}{} {} {}r.   )r  r¦  r8   r§  r¨  r  r
  r¬  ©r;   r«  r§   rà  s       r>   r¬  zGreedyRepeat.dump±  s^   € Ø�>‰>Ð!Ø‰Eà—N‘NˆEÜˆl×!Ñ!¤&¨6¡/°4·=±=Ø
�.‰.˜%ó!ô 	"ð 	�‰×Ñ˜V a™Z¨Õ1r?   c                 ó6   — | j                   j                  «       S rž  rÞ  rb  s    r>   r  zGreedyRepeat.is_empty»  rß  r?   c                 óÀ   — t        | «      t        |«      u xrG | j                  | j                  | j                  f|j                  |j                  |j                  fk(  S rž  )rÞ  r
  r  r  rŠ  s     r>   rŒ  zGreedyRepeat.__eq__¾  sT   € Ü�D‹zœT %›[Ð(ò ¨d¯o©o¸t¿~¹~Ø
�.‰.ð.Ø#×.Ñ.°·±Ø
�/‰/ðñ.ð 	r?   c                 ót   — | j                   €t        S | j                  j                  «       | j                   z  S rž  )r  r  r
  r‘  rb  s    r>   r‘  zGreedyRepeat.max_widthÃ  s.   € Ø�>‰>Ð!ÜÐà�‰×(Ñ(Ó*¨T¯^©^Ñ;Ð;r?   c                 ó`  — | j                   €t        n| j                   }| j                  dk(  r/| j                  j	                  «       |z  }t        |t        «      d fS | j                  j                  |«      \  }}|r||fS | j                  j	                  «       |z  }t        |t        «      d fS rœ  )r  r  r  r
  r‘  r#  r’  )r;   r§   r  ru   ÚofsÚreqs         r>   r’  z GreedyRepeat.get_required_stringÉ  s˜   € Ø!%§¡Ð!7•I¸T¿^¹^ˆ	Ø�>‰>˜QÒØ—‘×)Ñ)Ó+¨iÑ7ˆAÜ�qœ)Ó$ dÐ*Ð*à—?‘?×6Ñ6°wÓ?‰ˆˆSÙØ˜�8ˆOà�O‰O×%Ñ%Ó'¨)Ñ3ˆÜ�1”iÓ  $Ð&Ð&r?   N)r@   rA   rB   r·  rë  r¡  r¨  r:   rj  r¸   rp  rr  ru  rx  r{  r  rƒ  r¬  r  rŒ  r‘  r’  rD   r?   r>   r   r   z  s_   „ Ø×Ñ€GØ€Hò#ò<òFò
òòPòò0òò=ò2ò*òò
<ó'r?   r   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)r  c                  ó   — yrt  rD   rb  s    r>   ru  zPossessiveRepeat.is_atomic×  rv  r?   c                 óp  — | j                   j                  ||«      }|sg S | j                  | j                  g}| j                  €|j                  t        «       n|j                  | j                  «       t        j                  ft        |«      g|z   t        j                  ft        j                  fgz   S rž  )r
  r¥   r¡  r  r  r[   r  r·  rÙ  r|   rÚ  )r;   r§   ri  r
  r÷  s        r>   rƒ  zPossessiveRepeat._compileÚ  s�   € Ø—_‘_×,Ñ,¨W°eÓ<ˆ
ÙØˆIà—,‘, §¡Ð/ˆØ�>‰>Ð!Ø�M‰Mœ)Õ$à�M‰M˜$Ÿ.™.Ô)ä—)‘)�¤ f£Ð.°Ñ;ÄÇÁ¸zÜ�6‰6ˆ*ð?ñ ð 	r?   c                 ó0  — t        dj                  t        |z  «      «       | j                  €d}n| j                  }t        dj                  t        |dz   z  | j                  | j
                  |«      «       | j                  j                  |dz   |«       y )NrÜ  rù  rú  r.   rO   )r¦  r8   r§  r  r¨  r  r
  r¬  rû  s       r>   r¬  zPossessiveRepeat.dumpè  sz   € Üˆj×Ñ¤¨¡Ó0Ô1à�>‰>Ð!Ø‰Eà—N‘NˆEÜˆl×!Ñ!¤&¨F°Q©JÑ"7¸¿¹Ø
�.‰.˜%ó!ô 	"ð 	�‰×Ñ˜V a™Z¨Õ1r?   N)r@   rA   rB   ru  rƒ  r¬  rD   r?   r>   r  r  Ö  s   „ òòó
2r?   r  c                   ól   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)r  c                 óf   — t         j                  | «       || _        || _        || _        d | _        y rž  )r_  r:   r—   rf  r
  rc  )r;   r—   rf  r
  s       r>   r:   zGroup.__init__õ  s,   € Ü×Ñ˜4Ô ØˆŒ	ØˆŒ
Ø$ˆŒàˆ�r?   c                 óŠ   — | ||f| j                   j                  | j                  <   | j                  j	                  |||«       y rž  )r—   Údefined_groupsrf  r
  rj  rh  s       r>   rj  zGroup.fix_groupsý  s7   € Ø04°g¸uÐ/Eˆ�	‰	× Ñ  §¡Ñ,Ø�‰×"Ñ" 7¨G°UÕ;r?   c                 ó|   — | j                   j                  ||«      }t        | j                  | j                  |«      S rž  )r
  r¸   r  r—   rf  rï  s       r>   r¸   zGroup.optimise  s/   € Ø—_‘_×-Ñ-¨d°GÓ<ˆ
ä�T—Y‘Y §
¡
¨JÓ7Ð7r?   c                 óF   — | j                   j                  |«      | _         | S rž  rÇ  ro  s     r>   rp  zGroup.pack_characters  rÈ  r?   c                 ó6   — | j                   j                  «       S rž  rÊ  rb  s    r>   rr  zGroup.remove_captures
  ó   € Ø�‰×.Ñ.Ó0Ð0r?   c                 ó6   — | j                   j                  «       S rž  rÐ  rb  s    r>   ru  zGroup.is_atomic  rã  r?   c                  ó   — yrz  rD   rb  s    r>   rx  zGroup.can_be_affix  r|  r?   c                  ó   — yrt  rD   rb  s    r>   r{  zGroup.contains_group  rv  r?   c                 ó8   — | j                   j                  |«      S rž  rÓ  r~  s     r>   r  zGroup.get_firstset  rÔ  r?   c                 ó6   — | j                   j                  «       S rž  rÖ  rb  s    r>   r�  zGroup.has_simple_start  r×  r?   c                 ó  — g }| j                   x}}|dk  r2| j                  j                  |   }| j                  j                  |z
  }| j                   ||f}| j                  j                  j                  |«      }|�|t        j                  |fgz  }|t        j                  t        | «      ||fgz  }|| j                  j                  ||«      z  }|t        j                  fgz  }|�|t        j                  fgz  }|S rœ  )rf  r—   Úprivate_groupsr}  Ú	call_refsrÝ   r·  rs  ÚGROUPr  r
  r¥   rÚ  )r;   r§   ri  r»   Úpublic_groupÚprivate_grouprA  rp  s           r>   rƒ  zGroup._compile  sô   € Øˆà'+§z¡zÐ1ˆ�}Ø˜1ÒØŸ9™9×3Ñ3°MÑBˆLØ ŸI™I×1Ñ1°MÑAˆMà�j‰j˜' 5Ð(ˆØ�i‰i×!Ñ!×%Ñ% cÓ*ˆØˆ?Ø”b—k‘k 3Ð'Ð(Ñ(ˆDà”"—(‘(œC G Ó,¨m¸\ÐJÐKÑKˆØ�—‘×'Ñ'¨°Ó7Ñ7ˆØ”"—&‘&��Ñˆàˆ?Ø”b—f‘f�Z�LÑ ˆDàˆr?   c                 óÚ   — | j                   }|dk  r| j                  j                  |   }t        dj	                  t
        |z  |«      «       | j                  j                  |dz   |«       y )Nr   z
{}GROUP {}r.   )rf  r—   r  r¦  r8   r§  r
  r¬  )r;   r«  r§   rf  s       r>   r¬  z
Group.dump2  sW   € Ø—
‘
ˆØ�1Š9Ø—I‘I×,Ñ,¨UÑ3ˆEÜˆl×!Ñ!¤&¨6¡/°5Ó9Ô:Ø�‰×Ñ˜V a™Z¨Õ1r?   c                 ó”   — t        | «      t        |«      u xr1 | j                  | j                  f|j                  |j                  fk(  S rž  )rÞ  rf  r
  rŠ  s     r>   rŒ  zGroup.__eq__9  sB   € Ü�T“
œd 5›kÐ)ò *¨t¯z©z¸4¿?¹?Ð.KØ�;‰;˜×(Ñ(Ð
)ñ/*ð 	+r?   c                 ó6   — | j                   j                  «       S rž  râ  rb  s    r>   r‘  zGroup.max_width=  rã  r?   c                 ó8   — | j                   j                  |«      S rž  rå  r~  s     r>   r’  zGroup.get_required_string@  ræ  r?   c                 ó   — d | _         y rž  rj  rb  s    r>   rk  zGroup.__del__C  rl  r?   N)r@   rA   rB   r:   rj  r¸   rp  rr  ru  rx  r{  r  r�  rƒ  r¬  rŒ  r‘  r’  rk  rD   r?   r>   r  r  ô  sR   „ òò<ò8ò
ò1ò+òòò5ò2òò,2ò+ò+ò<ór?   r  c                   ó(   — e Zd Zej                  ZdZy)ÚKeepÚKEEPN)r@   rA   rB   r·  r   r¡  r¨  rD   r?   r>   r  r  F  s   „ Ø�g‰g€GØ�Hr?   r  c                   ó(   — e Zd Zej                  ZdZy)r  ÚLAZY_REPEATN)r@   rA   rB   r·  r"  r¡  r¨  rD   r?   r>   r  r  J  r·  r?   r  c                   ój   — e Zd ZdddœZd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)rq  ÚAHEADÚBEHINDrZ  c                 ó|   — t         j                  | «       t        |«      | _        t        |«      | _        || _        y rž  )r_  r:   r¢   rr  r³   r
  )r;   rr  r³   r
  s       r>   r:   zLookAround.__init__Q  s-   € Ü×Ñ˜4Ô Ü˜6“lˆŒÜ˜X›ˆŒØ$ˆ�r?   c                 óR   — | j                   j                  || j                  |«       y rž  )r
  rj  rr  rh  s       r>   rj  zLookAround.fix_groupsW  s   € Ø�‰×"Ñ" 7¨D¯K©K¸Õ?r?   c                 óÌ   — | j                   j                  || j                  «      }| j                  r|j	                  «       r|S t        | j                  | j                  |«      S rž  )r
  r¸   rr  r³   r  rq  rï  s       r>   r¸   zLookAround.optimiseZ  sK   € Ø—_‘_×-Ñ-¨d°D·K±KÓ@ˆ
Ø�=Š=˜Z×0Ñ0Ô2ØÐä˜$Ÿ+™+ t§}¡}°jÓAÐAr?   c                 óF   — | j                   j                  |«      | _         | S rž  rÇ  ro  s     r>   rp  zLookAround.pack_charactersa  rÈ  r?   c                 ó6   — | j                   j                  «       S rž  rÊ  rb  s    r>   rr  zLookAround.remove_capturese  r  r?   c                 ó6   — | j                   j                  «       S rž  rÐ  rb  s    r>   ru  zLookAround.is_atomich  rã  r?   c                 ó6   — | j                   j                  «       S rž  rÍ  rb  s    r>   rx  zLookAround.can_be_affixk  rÎ  r?   c                 ó6   — | j                   j                  «       S rž  rÐ  rb  s    r>   r{  zLookAround.contains_groupn  rÑ  r?   c                 ó†   — | j                   r*| j                  |k(  r| j                  j                  |«      S t	        d g«      S rž  )r³   rr  r
  r  r°   r~  s     r>   r  zLookAround.get_firstsetq  s5   € Ø�=Š=˜TŸ[™[¨GÒ3Ø—?‘?×/Ñ/°Ó8Ð8ä�D�6‹{Ðr?   c                 ó  — d}| j                   r	|t        z  }|r	|t        z  }|r	|t        z  }t        j
                  |t        | j                   «      fg| j                  j                  | j                  «      z   t        j                  fgz   S rœ  )r³   r�  rž  rŸ  r·  Ú
LOOKAROUNDr  rr  r
  r¥   rÚ  r¢  s       r>   rƒ  zLookAround._compilew  s~   € ØˆØ�=Š=Ø”[Ñ ˆEÙØ”XÑˆEÙØ”ZÑˆEä—-‘- ¬°·±¨OÓ(<Ð=Ð>Ø
�/‰/×
!Ñ
! $§+¡+Ó
.ñ/Ü35·6±6°*°ñ>ð 	?r?   c                 óì   — t        dj                  t        |z  | j                  | j                     t
        | j                     «      «       | j                  j                  |dz   | j                  «       y )Nz{}LOOK{} {}r.   )	r¦  r8   r§  Ú	_dir_textrr  r©  r³   r
  r¬  rª  s      r>   r¬  zLookAround.dumpƒ  sV   € Üˆm×"Ñ"¤6¨F¡?Ø
�.‰.˜Ÿ™Ñ
%¤x°·±Ñ'>ó@ô 	Aà�‰×Ñ˜V a™Z¨¯©Õ5r?   c                 óR   — | j                   xr | j                  j                  «       S rž  )r³   r
  r  rb  s    r>   r  zLookAround.is_emptyˆ  s   € Ø�}‰}Ò; §¡×!9Ñ!9Ó!;Ð;r?   c                 óÀ   — t        | «      t        |«      u xrG | j                  | j                  | j                  f|j                  |j                  |j                  fk(  S rž  )rÞ  rr  r³   r
  rŠ  s     r>   rŒ  zLookAround.__eq__‹  sT   € Ü�D‹zœT %›[Ð(ò O¨d¯k©k¸4¿=¹=Ø
�/‰/ð.Ø$Ÿ|™|¨U¯^©^¸U×=MÑ=MÐNñ.Oð 	Or?   c                  ó   — yrœ  rD   rb  s    r>   r‘  zLookAround.max_width�  r®  r?   N)r@   rA   rB   r2  r:   rj  r¸   rp  rr  ru  rx  r{  r  rƒ  r¬  r  rŒ  r‘  rD   r?   r>   rq  rq  N  sU   „ Ø xÑ0€Iò%ò@òBòò1ò+ò.ò0òò
?ò6ò
<òOór?   rq  c                   ój   — e Zd ZdddœZd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ry  r$  r%  rZ  c                 ó˜   — t         j                  | «       t        |«      | _        t        |«      | _        || _        || _        || _        y rž  )r_  r:   r¢   rr  r³   r
  r–  r—  )r;   rr  r³   r
  r–  r—  s         r>   r:   zLookAroundConditional.__init__•  s;   € Ü×Ñ˜4Ô Ü˜6“lˆŒÜ˜X›ˆŒØ$ˆŒØ ˆŒØˆ�r?   c                 ó²   — | j                   j                  |||«       | j                  j                  |||«       | j                  j                  |||«       y rž  )r
  rj  r–  r—  rh  s       r>   rj  z LookAroundConditional.fix_groups�  sD   € Ø�‰×"Ñ" 7¨G°UÔ;Ø�‰× Ñ  ¨'°5Ô9Ø�‰×Ñ ¨°%Õ8r?   c                 ó,  — | j                   j                  || j                  «      }| j                  j                  || j                  «      }| j                  j                  || j                  «      }t        | j                  | j                  |||«      S rž  )r
  r¸   rr  r–  r—  ry  r³   )r;   r—   r§   r
  r–  r—  s         r>   r¸   zLookAroundConditional.optimise¢  sp   € Ø—_‘_×-Ñ-¨d°D·K±KÓ@ˆ
Ø—=‘=×)Ñ)¨$°·±Ó<ˆØ—,‘,×'Ñ'¨¨d¯k©kÓ:ˆä$ T§[¡[°$·-±-ÀØ
�Góð 	r?   c                 óÆ   — | j                   j                  |«      | _         | j                  j                  |«      | _        | j                  j                  |«      | _        | S rž  )r
  rp  r–  r—  ro  s     r>   rp  z%LookAroundConditional.pack_charactersª  sI   € ØŸ/™/×9Ñ9¸$Ó?ˆŒØŸ™×5Ñ5°dÓ;ˆŒØ—|‘|×3Ñ3°DÓ9ˆŒØˆr?   c                 ó¾   — | j                   j                  «       | _         | j                  j                  «       | _        | j                  j                  «       | _        y rž  )r
  rr  r–  r—  rb  s    r>   rr  z%LookAroundConditional.remove_captures°  s>   € ØŸ/™/×9Ñ9Ó;ˆŒØŸ™×5Ñ5Ó7ˆŒØ—|‘|×3Ñ3Ó5ˆ�r?   c                 ó¦   — | j                   j                  «       xr6 | j                  j                  «       xr | j                  j                  «       S rž  )r
  ru  r–  r—  rb  s    r>   ru  zLookAroundConditional.is_atomicµ  s@   € Ø—‘×)Ñ)Ó+ò #°·±×0GÑ0GÓ0Iò #Ø
�,‰,×
 Ñ
 Ó
"ð	$r?   c                 ó¦   — | j                   j                  «       xr6 | j                  j                  «       xr | j                  j                  «       S rž  )r
  rx  r–  r—  rb  s    r>   rx  z"LookAroundConditional.can_be_affix¹  s@   € Ø—‘×,Ñ,Ó.ò *°4·=±=×3MÑ3MÓ3Oò *Ø�l‰l×'Ñ'Ó)ð	+r?   c                 ó¦   — | j                   j                  «       xs6 | j                  j                  «       xs | j                  j                  «       S rž  )r
  r{  r–  r—  rb  s    r>   r{  z$LookAroundConditional.contains_group½  sD   € Ø—‘×.Ñ.Ó0ò JØ
�-‰-×
&Ñ
&Ó
(òJØ,0¯L©L×,GÑ,GÓ,Ið	Kr?   c                 óZ  — t         j                  t        | j                  «      t        | j                   «      fg}|j                  | j                  j                  | j                  |«      «       |j                  t         j                  f«       |j                  | j                  j                  ||«      «       | j                  j                  ||«      }|r1|j                  t         j                  f«       |j                  |«       |j                  t         j                  f«       |S rž  )r·  ÚCONDITIONALr  r³   rr  rº   r
  r¥   r[   r  r–  r—  rÚ  r£  s        r>   rƒ  zLookAroundConditional._compileÁ  sÇ   € Ü—‘¤ T§]¡]Ó!3´S¸T¿[¹[¸Ó5IÐJÐKˆØ�‰�D—O‘O×+Ñ+¨D¯K©K¸Ó?Ô@Ø�‰”R—W‘W�KÔ Ø�‰�D—M‘M×)Ñ)¨'°5Ó9Ô:Ø—<‘<×'Ñ'¨°Ó7ˆÙØ�K‰KœŸ™˜Ô$Ø�K‰K˜Ô!à�‰”R—V‘V�JÔàˆr?   c                 ó"  — t        dj                  t        |z  | j                  | j                     t
        | j                     «      «       | j                  j                  |dz   | j                  «       t        dj                  t        |z  «      «       | j                  j                  |dz   |«       | j                  j                  «       sAt        dj                  t        |z  «      «       | j                  j                  |dz   |«       y y )Nz{}CONDITIONAL {} {}r.   z{}EITHERr  )r¦  r8   r§  r2  rr  r©  r³   r
  r¬  r–  r—  r  rª  s      r>   r¬  zLookAroundConditional.dumpÏ  sÈ   € ÜÐ#×*Ñ*¬6°F©?Ø
�.‰.˜Ÿ™Ñ
%¤x°·±Ñ'>ó@ô 	Aà�‰×Ñ˜V a™Z¨¯©Ô5Üˆj×Ñ¤¨¡Ó0Ô1Ø�‰×Ñ˜6 A™: wÔ/Ø�|‰|×$Ñ$Ô&Ü�&—-‘-¤¨¡Ó0Ô1Ø�L‰L×Ñ˜f q™j¨'Õ2ð 'r?   c                 ó¦   — | j                   j                  «       xr | j                  j                  «       xs | j                  j                  «       S rž  )r
  r  r–  r—  rb  s    r>   r  zLookAroundConditional.is_emptyÙ  s>   € Ø—‘×(Ñ(Ó*ÒG¨t¯}©}×/EÑ/EÓ/Gò "Ø
�,‰,×
Ñ
Ó
!ð	#r?   c                 óÀ   — t        | «      t        |«      u xrG | j                  | j                  | j                  f|j                  |j                  |j                  fk(  S rž  )rÞ  r
  r–  r—  rŠ  s     r>   rŒ  zLookAroundConditional.__eq__Ý  sT   € Ü�D‹zœT %›[Ð(ò M¨d¯o©o¸t¿}¹}Ø
�,‰,ð.Ø!×,Ñ,¨e¯n©n¸e¿m¹mÐLñ.Mð 	Mr?   c                 óz   — t        | j                  j                  «       | j                  j                  «       «      S rž  r©  rb  s    r>   r‘  zLookAroundConditional.max_widthá  rª  r?   c                 ó&   — | j                  «       d fS rž  r�  r~  s     r>   r’  z)LookAroundConditional.get_required_stringä  r“  r?   N)r@   rA   rB   r2  r:   rj  r¸   rp  rr  ru  rx  r{  rƒ  r¬  r  rŒ  r‘  r’  rD   r?   r>   ry  ry  ’  sU   „ Ø xÑ0€Iòò9ò
òò6ò
$ò+òKòò3ò#òMòHó&r?   ry  c                   ó   — e Zd Zd„ Zd„ Zy)r~  c                 ó   — || _         y rž  )r»   )r;   r»   s     r>   r:   zPrecompiledCode.__init__è  rl  r?   c                 ó.   — t        | j                  «      gS rž  )r|   r»   r„  s      r>   rƒ  zPrecompiledCode._compileë  s   € Ü�d—i‘iÓ Ð!Ð!r?   Nrt  rD   r?   r>   r~  r~  ç  s   „ òó"r?   r~  c                   ó2  — e Zd Zedfej
                  edfej                  edfej
                  e	dfej                  edfej                  edfej                  edfej                  e	dfej                  iZdeddfd„Zd„ Zdd„Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zy)r?  FTr   c                 ó"  — t         j                  | «       || _        t        |«      | _        t
        |   | _        t        |«      | _        || _        | j                  | j                  | j                  | j                  | j                  f| _
        y rž  )r_  r:   r_   r¢   r³   rd  r«   r­   rÕ  rZ   ra  )r;   r_   r³   r«   r­   rÕ  s         r>   r:   zProperty.__init__õ  si   € ä×Ñ˜4Ô ØˆŒ
Ü˜X›ˆŒÜ1°*Ñ=ˆŒÜ˜i›ˆŒØ ˆŒà—^‘^ T§Z¡Z°·±Ø
�/‰/˜4Ÿ>™>ð+ˆ�	r?   c                 óH   — t        | j                  |||| j                  «      S rž  )r?  r_   rÕ  rf  s       r>   re  zProperty.rebuild  s"   € Ü˜Ÿ
™
 H¨j¸)Ø
�-‰-óð 	r?   c                 ó   — | S rž  rD   ry  s       r>   r¸   zProperty.optimise  rm  r?   c                 ó   — t        | g«      S rž  r™  r~  s     r>   r  zProperty.get_firstset  rš  r?   c                  ó   — yrt  rD   rb  s    r>   r�  zProperty.has_simple_start  rv  r?   c                 óî   — d}| j                   r	|t        z  }| j                  r	|t        z  }|r	|t        z  }|| j
                  t        z  z  }| j                  | j                  |f   || j                  fgS rœ  )
r³   r�  r­   r}  rž  rÕ  r   r¡  r«   r_   r¢  s       r>   rƒ  zProperty._compile  sp   € ØˆØ�=Š=Ø”[Ñ ˆEØ�>Š>Ø”\Ñ!ˆEÙØ”XÑˆEØ�—‘Ô"3Ñ3Ñ3ˆØ—‘˜dŸo™o¨wÐ6Ñ7¸ÀÇ
Á
ÐKÐLÐLr?   c                 ó  — t         | j                  dz	     }|d   |d   | j                  dz     }}t        dj                  t        |z  t
        | j                     ||t        | j                     ddg| j                     «      «       y )NrR   r   r.   iÿÿ  z{}PROPERTY {} {}:{}{}{}rg   r¥  )
ÚPROPERTY_NAMESr_   r¦  r8   r§  r©  r³   rƒ  r«   rÕ  )r;   r«  r§   rÍ   rÆ   r_   s         r>   r¬  zProperty.dump  s{   € Ü˜dŸj™j¨BÑ.Ñ/ˆØ˜1‘g˜t A™w t§z¡z°FÑ':Ñ;ˆeˆÜÐ'×.Ñ.¬v¸©Ü
�4—=‘=Ñ
! 4¨´	¸$¿/¹/Ñ0JØˆxˆ.˜Ÿ™Ñ
'ó)õ 	*r?   c                 ó\   — t        j                  | j                  |«      | j                  k(  S rž  )r   Úhas_property_valuer_   r³   r‡  s     r>   rˆ  zProperty.matches   s"   € Ü×(Ñ(¨¯©°RÓ8¸D¿M¹MÑIÐIr?   c                  ó   — yr¶  rD   rb  s    r>   r‘  zProperty.max_width#  r®  r?   Nr�  )r@   rA   rB   r±   r·  ÚPROPERTYr   ÚPROPERTY_IGNr   rG  ÚPROPERTY_REVÚPROPERTY_IGN_REVr¡  r:   re  r¸   r  r�  rƒ  r¬  rˆ  r‘  rD   r?   r>   r?  r?  î  s¶   „ Ø˜ˆ §¡¨j¸%Ð-@Ø‡o�o˜ %Ð(¨"¯+©+¸ÈÐ7NØ‡o�o˜ �~ r§¡¸ÀTÐ8JØ×Ñ˜H dÐ+¨R¯_©_¸~Ø
ð?Ø× Ñ ð	"€Gð (,¸Ø ó
+òóòòò	Mò*òJór?   r?  c                   ó   — e Zd ZdZd„ Zy)ÚPruneÚPRUNEc                 ó&   — t         j                  fgS rž  )r·  r[  r„  s      r>   rƒ  zPrune._compile)  s   € Ü—‘�ˆ~Ðr?   NrÉ  rD   r?   r>   rZ  rZ  &  s   „ Ø€Hór?   rZ  c                   ó(  — e Zd Zedfej
                  edfej                  edfej
                  e	dfej                  edfej                  edfej                  edfej                  e	dfej                  iZdZdedfd„Zd„ Zdd„Zd„ Zd„ Zd	„ Zd
„ Zy)r  FTÚRANGEc                 ó8  — t         j                  | «       || _        || _        t	        |«      | _        t        |   | _        t	        |«      | _        | j                  | j                  | j                  | j
                  | j                  | j                  f| _
        y rž  )r_  r:   Úlowerr1  r¢   r³   rd  r«   r­   rZ   ra  )r;   r`  r1  r³   r«   r­   s         r>   r:   zRange.__init__3  so   € ä×Ñ˜4Ô ØˆŒ
ØˆŒ
Ü˜X›ˆŒÜ1°*Ñ=ˆŒÜ˜i›ˆŒà—^‘^ T§Z¡Z°·±¸T¿]¹]Ø
�/‰/˜4Ÿ>™>ð+ˆ�	r?   c                 óH   — t        | j                  | j                  |||«      S rž  )r  r`  r1  rf  s       r>   re  zRange.rebuild?  s   € Ü�T—Z‘Z §¡¨X°zÀ9ÓMÐMr?   c                 ó‚  — | j                   r| j                  t        z  r|r| S |j                  t        z  r| j                  t
        z  t
        k7  r| S t        j                  «       }g }|D ]…  }| j                  t        |«      cxk  r| j                  k  sŒ,n Œ/t        j                  t        |«      }|j                  t        |D �cg c]  }t        |«      ‘Œ c}| j                  ¬«      «       Œ‡ |s| S t        |«      | j                  | j                  z
  dz   k  r|j!                  d| «       t#        |«      S c c}w )Nrª   r.   r   )r³   r«   r   rŽ   r   rG  r   rM  r`  rð   r1  r–   rL  r[   rÄ  r^   ró  rÒ   )	r;   r—   r§   r¯   rO  r  rô   rN  r½   s	            r>   r¸   zRange.optimiseB  s  € à�}Š} T§_¡_´zÒ%AÁfØˆKð —‘œgÒ%¨4¯?©?¼^Ñ+KÜ
ò+àˆKô !×6Ñ6Ó8ˆð ˆØ!ò 	/ˆBØ�z‰zœS ›WÔ2¨¯
©
Ö2Ü×)Ñ)Ô*;¸RÓ@�Ø—‘œV°VÖ$<°¤S¨¥VÒ$<Ø!Ÿ_™_ô.õ /ð	/ñ àˆKäˆu‹:˜Ÿ
™
 T§Z¡ZÑ/°!Ñ3Ò3à�L‰L˜˜DÔ!ä�e‹}Ðùò %=s   ÃD<c                 óØ   — d}| j                   r	|t        z  }| j                  r	|t        z  }|r	|t        z  }| j
                  | j                  |f   || j                  | j                  fgS rœ  )	r³   r�  r­   r}  rž  r¡  r«   r`  r1  r¢  s       r>   rƒ  zRange._compilea  si   € ØˆØ�=Š=Ø”[Ñ ˆEØ�>Š>Ø”\Ñ!ˆEÙØ”XÑˆEØ—‘˜dŸo™o¨wÐ6Ñ7¸ÀÇ
Á
Ø
�*‰*ðð ð 	r?   c           
      óF  — t        t        | j                  «      «      j                  d«      }t        t        | j                  «      «      j                  d«      }t        dj                  t        |z  t        | j                     ||t        | j                     «      «       y )Nr€  z{}RANGE {} {} {}{})r�  rJ  r`  r‚  r1  r¦  r8   r§  r©  r³   rƒ  r«   )r;   r«  r§   Údisplay_lowerÚdisplay_uppers        r>   r¬  z
Range.dumpl  st   € Üœc $§*¡*›oÓ.×5Ñ5°dÓ;ˆÜœc $§*¡*›oÓ.×5Ñ5°dÓ;ˆÜÐ"×)Ñ)¬&°6©/Ü
�4—=‘=Ñ
! =°-Ü
�D—O‘OÑ
$ó&õ 	'r?   c                 ó~   — | j                   |cxk  xr | j                  k  | j                  k(  S c | j                  k(  S rž  )r`  r1  r³   r‡  s     r>   rˆ  zRange.matchess  s2   € Ø—
‘
˜bÖ. D§J¡JÑ.°4·=±=Ñ@Ð@Ñ.°4·=±=Ñ@Ð@r?   c                  ó   — yr¶  rD   rb  s    r>   r‘  zRange.max_widthv  r®  r?   Nr�  )r@   rA   rB   r±   r·  r^  r   Ú	RANGE_IGNr   rG  Ú	RANGE_REVÚRANGE_IGN_REVr¡  r¨  r:   re  r¸   rƒ  r¬  rˆ  r‘  rD   r?   r>   r  r  ,  s¬   „ Ø˜ˆ §¡¨:°uÐ*=¸r¿|¹|Ø�Ð˜Ÿ™ N°EÐ#:¸B¿L¹LØˆt€n�b—l‘l Z°Ð$6¸×8HÑ8HØ�Ð˜Ÿ™ ~°tÐ&<¸b×>NÑ>NðP€Gð €Hà.2¸vØó
+òNóò>	ò'òAór?   r  c                   ó  — e Zd Zedfej
                  edfej                  edfej
                  e	dfej                  edfej                  edfej                  edfej                  e	dfej                  iZefd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Zy
)rÅ   FTc                 óÄ   — t         j                  | «       || _        || _        || _        t
        |   | _        | j                  | j                  | j                  f| _        y rž  )	r_  r:   r—   rf  rÇ   rd  r«   rZ   ra  )r;   r—   rf  rÇ   r«   s        r>   r:   zRefGroup.__init__€  sK   € Ü×Ñ˜4Ô ØˆŒ	ØˆŒ
Ø ˆŒÜ1°*Ñ=ˆŒà—N‘N D§J¡J°·±Ð?ˆ�	r?   c                 óÈ  — 	 t        | j                  «      | _        d| j                  cxk  r| j                  j                  k  sn t        d|| j                  «      ‚| j                  | j                  | j                  f| _        y # t        $ rQ 	 | j                  j                  | j                     | _        n$# t
        $ r t        d|| j                  «      ‚w xY wY ŒÄw xY w)NrT  r.   rS  )r  rf  r2  r—   rZ  r€   r'   rÇ   r}  rZ   r«   ra  rh  s       r>   rj  zRefGroup.fix_groups‰  s¾   € ð	EÜ˜TŸZ™Z›ˆDŒJð �D—J‘JÔ7 $§)¡)×"7Ñ"7Ô7ÜÐ1°7¸D¿M¹MÓJÐJà—N‘N D§J¡J°·±Ð?ˆ�	øô ò 	EðEØ!ŸY™Y×2Ñ2°4·:±:Ñ>�•
øÜò EÜ˜O¨W°d·m±mÓDÐDðEúñ ð	Eús)   ‚B Â	C!Â(B:Â9C!Â:!CÃC!Ã C!c                 óD   — t        d| j                  | j                  «      ‚r^  r_  rb  s    r>   rr  zRefGroup.remove_captures—  r`  r?   c                 ón   — d}|r	|t         z  }| j                  | j                  |f   || j                  fgS rœ  )rž  r¡  r«   rf  r¢  s       r>   rƒ  zRefGroup._compileš  s:   € ØˆÙØ”XÑˆEØ—‘˜dŸo™o¨wÐ6Ñ7¸ÀÇ
Á
ÐKÐLÐLr?   c                 ó€   — t        dj                  t        |z  | j                  t        | j
                     «      «       y )Nz{}REF_GROUP {}{})r¦  r8   r§  rf  rƒ  r«   rª  s      r>   r¬  zRefGroup.dump   s0   € ÜÐ ×'Ñ'¬°©¸¿¹Ü
�D—O‘OÑ
$ó&õ 	'r?   c                 ó   — t         S rž  r  rb  s    r>   r‘  zRefGroup.max_width¤  rh  r?   c                 ó   — d | _         y rž  rj  rb  s    r>   rk  zRefGroup.__del__§  rl  r?   N)r@   rA   rB   r±   r·  Ú	REF_GROUPr   ÚREF_GROUP_IGNr   rG  ÚREF_GROUP_FLDÚREF_GROUP_REVÚREF_GROUP_IGN_REVÚREF_GROUP_FLD_REVr¡  r:   rj  rr  rƒ  r¬  r‘  rk  rD   r?   r>   rÅ   rÅ   y  s´   „ Ø˜ˆ §¡¨z¸5Ð.AØ×Ñ˜ 5Ð)¨2¯<©<¸.Øð:Ø×Ñ ¨ °×0@Ñ0@À:Ø
ðCØ×!Ñ! H¨dÐ#3°R×5EÑ5EØ�tÐ˜b×2Ñ2ð	4€Gð :@ó @ò@òPòMò'òór?   rÅ   c                   ó(   — e Zd Zej                  ZdZy)rÀ  ÚSEARCH_ANCHORN)r@   rA   rB   r·  r{  r¡  r¨  rD   r?   r>   rÀ  rÀ  ª  rº  r?   rÀ  c                   óž   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zed„ «       Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Zy)rñ   Nc                 óD   — t         j                  | «       |€g }|| _        y rž  )r_  r:   r  )r;   r  s     r>   r:   zSequence.__init__¯  s!   € Ü×Ñ˜4Ô Øˆ=ØˆEàˆ�
r?   c                 óL   — | j                   D ]  }|j                  |||«       Œ y rž  )r  rj  )r;   r2   r§   ri  rs   s        r>   rj  zSequence.fix_groups¶  s%   € Ø—‘ò 	2ˆAØ�L‰L˜ '¨5Õ1ñ	2r?   c                 óÜ   — g }| j                   D ]Q  }|j                  ||«      }t        |t        «      r|j	                  |j                   «       ŒA|j                  |«       ŒS t        |«      S rž  )r  r¸   r/   rñ   rº   r[   r]  )r;   r—   r§   r  rs   s        r>   r¸   zSequence.optimiseº  s\   € àˆØ—‘ò 	 ˆAØ—
‘
˜4 Ó)ˆAÜ˜!œXÔ&Ø—‘˜QŸW™WÕ%à—‘˜Q•ð	 ô ˜UÓ#Ð#r?   c                 óL  ‡— g }g }t         }| j                  D �]g  }t        |«      t        u r‰|j                  r}|j
                  sq|j                  |k7  rF|j                  st        ‰|j                  «      r$t        j                  ‰|||«       |j                  }|j                  |j                  «       Œžt        |«      t        u st        |«      t        u rp|j                  |k7  rD|j                  st        ˆfd„|D «       «      r$t        j                  ‰|||«       |j                  }|j                  |j                   «       �Œ0t        j                  ‰|||«       |j                  |j#                  ‰«      «       �Œj t        j                  ‰|||«       t%        |«      S )z+Packs sequences of characters into strings.c              3   ó6   •K  — | ]  }t        ‰|«      –— Œ y ­wrž  ©rž   ©r¡  r½   r—   s     €r>   r¢  z+Sequence.pack_characters.<locals>.<genexpr>Û  s   øè ø€ ò +"À1¬:°d¸A×+>ñ +"ùó   ƒ)r±   r  rÞ  r²   r³   r­   r«   rž   r_   rñ   Ú_flush_charactersr[   rÄ  rù  r  rº   rú  rp  r]  )r;   r—   r  rú  r«   rs   s    `    r>   rp  zSequence.pack_charactersÆ  sS  ø€ àˆØˆ
Üˆ
Ø—‘ó 	6ˆAÜ�A‹wœ)Ñ#¨¯
ª
¸1¿;º;Ø—<‘< :Ò-ð —|’|¤z°$¸¿¹Ô'@Ü ×2Ñ2°4¸Ø$ eô-ð &'§\¡\˜
à×!Ñ! !§'¡'Õ*Ü�a“œFÑ"¤d¨1£g´Ñ&8Ø—<‘< :Ò-ð —|’|¤só +"Ø ô+"ô ("ä ×2Ñ2°4¸Ø$ eô-ð &'§\¡\˜
à×!Ñ! !§,¡,Ö/ä×*Ñ*¨4°¸ZÈÔOà—‘˜Q×.Ñ.¨tÓ4Ö5ð7	6ô: 	×"Ñ" 4¨°ZÀÔGä˜UÓ#Ð#r?   c                 ój   — | j                   D �cg c]  }|j                  «       ‘Œ c}| _         | S c c}w rž  )r  rr  )r;   rs   s     r>   rr  zSequence.remove_capturesì  s+   € Ø37·:±:Ö>¨a�a×'Ñ'Õ)Ò>ˆŒ
Øˆùò ?rþ  c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrž  r  ©r¡  rs   s     r>   r¢  z%Sequence.is_atomic.<locals>.<genexpr>ñ  ó   è ø€ Ò5 Q�1—;‘;—=Ñ5ùr  ©r¦  r  rb  s    r>   ru  zSequence.is_atomicð  ó   € ÜÑ5¨$¯*©*Ô5Ó5Ð5r?   c                  ó   — yrz  rD   rb  s    r>   rx  zSequence.can_be_affixó  r|  r?   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrž  r  r‰  s     r>   r¢  z*Sequence.contains_group.<locals>.<genexpr>÷  s   è ø€ Ò:¨!�1×#Ñ#×%Ñ:ùr  )r  r  rb  s    r>   r{  zSequence.contains_groupö  s   € ÜÑ:¨t¯z©zÔ:Ó:Ð:r?   c                 óØ   — t        «       }| j                  }|r|j                  «        |D ]/  }||j                  |«      z  }d |vr|c S |j	                  d «       Œ1 |t        d g«      z  S rž  )r°   r  r§   r  Údiscard)r;   r§   r¦   r  rs   s        r>   r  zSequence.get_firstsetù  sk   € Ü‹UˆØ—
‘
ˆÙØ�M‰MŒOØò 	ˆAØ�!—.‘. Ó)Ñ)ˆBØ˜2‰~Ø’	Ø�J‰J�tÕð		ð ”C˜˜“KÑÐr?   c                 ój   — t        | j                  «      xr | j                  d   j                  «       S rœ  )r¢   r  r�  rb  s    r>   r�  zSequence.has_simple_start  s'   € Ü�D—J‘JÓÒD D§J¡J¨q¡M×$BÑ$BÓ$DÐDr?   c                 ó†   — | j                   }|r|d d d…   }g }|D ]#  }|j                  |j                  ||«      «       Œ% |S r  )r  rº   r¥   )r;   r§   ri  Úseqr»   rs   s         r>   rƒ  zSequence._compile	  sM   € Ø�j‰jˆÙØ‘d˜�d‘)ˆCàˆØò 	3ˆAØ�K‰K˜Ÿ	™	 '¨5Ó1Õ2ð	3ð ˆr?   c                 óJ   — | j                   D ]  }|j                  ||«       Œ y rž  )r  r¬  )r;   r«  r§   rs   s       r>   r¬  zSequence.dump  s#   € Ø—‘ò 	$ˆAØ�F‰F�6˜7Õ#ñ	$r?   c                 ó  ‡ — |sy |t         z  rt        ˆ fd„|D «       «      st        }|t        z  t        k(  r‡t        j                  |«      }|D ]l  }|j                  }t        |«      dk(  r*|j                  t        |d   |j                  ¬«      «       ŒG|j                  t        ||j                  ¬«      «       Œn nJt        |«      dk(  r |j                  t        |d   |¬«      «       n|j                  t        ||¬«      «       g |d d  y )Nc              3   ó6   •K  — | ]  }t        ‰|«      –— Œ y ­wrž  r‚  rƒ  s     €r>   r¢  z-Sequence._flush_characters.<locals>.<genexpr>  s   øè ø€ Ò?¨q”z $¨×*Ñ?ùr„  r.   r   rª   )r   r  r±   rG  rñ   Ú_fix_full_casefoldrú  r^   r[   r²   r«   rÄ  )r—   rú  r«   r  Úliteralsrø   Úcharss   `      r>   r…  zSequence._flush_characters  sÛ   ø€ áØð œ
Ò"ÜÓ?°JÔ?Ô?Ü#�
àœÑ'¬NÒ:Ü×2Ñ2°:Ó>ˆHà ò L�ØŸ™�ä�u“: ’?Ø—L‘L¤¨5°©8ÀÇÁÔ!PÕQà—L‘L¤¨¸$¿/¹/Ô!JÕKñLô �:‹ !Ò#Ø—‘œY z°!¡}ÀÔLÕMà—‘œV J¸:ÔFÔGàˆ
‘1‰r?   c                 óô  — t        j                  «       D �cg c]  }t        j                  t        |«      ‘Œ }}t        j                  t        dj	                  d„ | D «       «      «      j                  «       }g }|D ]U  } |j                  |«      }|dk\  sŒ|j                  ||t        |«      z   f«        |j                  ||dz   «      }|dk\  rŒ;ŒW d}g }t        j                  |«      D ]R  \  }	}
||	k  r#|j                  t        | ||	 t        ¬«      «       |j                  t        | |	|
 t        ¬«      «       |
}ŒT |t        | «      k  r#|j                  t        | |d  t        ¬«      «       |S c c}w )Nrg   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrž  ©rJ  r�  s     r>   r¢  z.Sequence._fix_full_casefold.<locals>.<genexpr>:  s   è ø€ ò =Øô >AÀ¿Vñ =ùr  r   r.   rª   )r   rM  r–   rL  r]   r`  Úfindr[   r^   rñ   Ú_merge_chunksrù  r   rG  )rú  r½   Úexpandedr˜   Úchunksrn   Úfoundr3   r™  r  r  s              r>   r˜  zSequence._fix_full_casefold4  ss  € ô
 ×
&Ñ
&Ó
(ö*¸q”F×$Ñ$Ô%6¸Õ:ð *ˆð *ä×!Ñ!Ô"3°R·W±Wñ =Øô=ó 6ó  ß %¡£ð 	àˆàò 	2ˆAØ�F—K‘K “NˆEà˜1“*Ø—‘˜u e¬c°!«f¡nÐ5Ô6Ø#˜Ÿ™ A u¨q¡yÓ1�ð ˜1”*ð	2ð ˆØˆä"×0Ñ0°Ó8ò 	‰JˆE�3Ø�UŠ{Ø—‘¤¨
°3¸Ð(?Ü'ô!)ô *ð �O‰OœG J¨u°sÐ$;Ü'ô)ô *à‰Cð	ð ”�Z“Ò Ø�O‰OœG J¨s¨uÐ$6Ä:ÔNÔOàˆùò9*s   —!E5c                 óì   — t        | «      dk  r| S | j                  «        | d   \  }}g }| dd  D ].  \  }}||k  rt        ||«      }Œ|j                  ||f«       ||}}Œ0 |j                  ||f«       |S )NrO   r   r.   )r^   Úsortr<  r[   )r¡  r  r  Ú
new_chunksrs   rn   s         r>   rŸ  zSequence._merge_chunksV  s�   € äˆv‹;˜Š?ØˆMà�‰Œà˜A‘Y‰
ˆˆsØˆ
à˜1˜3�Lò 	"‰DˆAˆqØ�CŠxÜ˜#˜q“k‘à×!Ñ! 5¨# ,Ô/Ø �s‘ð	"ð 	×Ñ˜5 #˜,Ô'àÐr?   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrž  rR  rK  s     r>   r¢  z$Sequence.is_empty.<locals>.<genexpr>l  s   è ø€ Ò4 A�1—:‘:—<Ñ4ùr  r‹  rb  s    r>   r  zSequence.is_emptyk  s   € ÜÑ4¨¯©Ô4Ó4Ð4r?   c                 ód   — t        | «      t        |«      u xr | j                  |j                  k(  S rž  )rÞ  r  rŠ  s     r>   rŒ  zSequence.__eq__n  rf  r?   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrž  r�  r‰  s     r>   r¢  z%Sequence.max_width.<locals>.<genexpr>r  rŠ  r  )Úsumr  rb  s    r>   r‘  zSequence.max_widthq  rŒ  r?   c                 óŠ   — | j                   }|r|d d d…   }d}|D ]#  }|j                  |«      \  }}||z  }|sŒ||fc S  |d fS r÷  )r  r’  )r;   r§   r”  rƒ  rs   r   r  s          r>   r’  zSequence.get_required_stringt  se   € Ø�j‰jˆÙØ‘d˜�d‘)ˆCàˆàò 	#ˆAØ×,Ñ,¨WÓ5‰HˆC�Ø�c‰MˆFÚØ˜s�{Ò"ð		#ð �tˆ|Ðr?   rž  )r@   rA   rB   r:   rj  r¸   rp  rr  ru  rx  r{  r  r�  rƒ  r¬  rV  r…  r˜  rŸ  r  rŒ  r‘  r’  rD   r?   r>   rñ   rñ   ®  s’   „ óò2ò
$ò$$òLò6òò;ò òEò	ò$ð ñó ðð6 ñó ððB ñó ðò(5òGò6ór?   rñ   c                   óJ   — e Zd Zdedfd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zy)r:  TFc                 óB  — t         j                  | «       || _        t        |«      | _        t        |«      | _        t        |   | _        t        |«      | _	        d| _
        | j                  | j                  | j                  | j                  | j                  f| _        y r¶  )r_  r:   r—   r|   r  r¢   r³   rd  r«   r­   Ú
char_widthrZ   ra  )r;   r—   r  r³   r«   r­   s         r>   r:   zSetBase.__init__„  st   € ä×Ñ˜4Ô ØˆŒ	Ü˜5“\ˆŒ
Ü˜X›ˆŒÜ1°*Ñ=ˆŒÜ˜i›ˆŒàˆŒà—^‘^ T§Z¡Z°·±Ø
�/‰/˜4Ÿ>™>ð+ˆ�	r?   c                 óˆ   —  t        | «      | j                  | j                  |||«      j                  | j                  d«      S rz  )rÞ  r—   r  r¸   rf  s       r>   re  zSetBase.rebuild’  s8   € ØŒt�D‹z˜$Ÿ)™) T§Z¡Z°¸:Ø
óß‘X˜dŸi™i¨Ó/ð	0r?   c                 ó   — t        | g«      S rž  r™  r~  s     r>   r  zSetBase.get_firstset–  rš  r?   c                  ó   — yrt  rD   rb  s    r>   r�  zSetBase.has_simple_start™  rv  r?   c                 óP  — d}| j                   r	|t        z  }| j                  r	|t        z  }|r	|t        z  }| j
                  | j                  |f   |fg}| j                  D ]!  }|j                  |j                  «       «       Œ# |j                  t        j                  f«       |S rœ  )r³   r�  r­   r}  rž  r¡  r«   r  rº   r¥   r[   r·  rÚ  )r;   r§   ri  rŽ   r»   rb   s         r>   rƒ  zSetBase._compileœ  s“   € ØˆØ�=Š=Ø”[Ñ ˆEØ�>Š>Ø”\Ñ!ˆEÙØ”XÑˆEØ—‘˜dŸo™o¨wÐ6Ñ7¸Ð?Ð@ˆØ—‘ò 	%ˆAØ�K‰K˜Ÿ	™	›Õ$ð	%ð 	�‰”R—V‘V�JÔàˆr?   c           	      óð   — t        dj                  t        |z  | j                  t        | j
                     t        | j                     «      «       | j                  D ]  }|j                  |dz   |«       Œ y )Nr¤  r.   )
r¦  r8   r§  r¨  r©  r³   rƒ  r«   r  r¬  )r;   r«  r§   rp   s       r>   r¬  zSetBase.dump¬  s`   € Üˆk× Ñ ¤¨&¡°$·-±-Ü
�4—=‘=Ñ
!¤9¨T¯_©_Ñ#=ó?ô 	@à—‘ò 	(ˆAØ�F‰F�6˜A‘:˜wÕ'ñ	(r?   c                 óH  — | j                   r| j                  t        z  r|r| S | j                  j                  t
        z  r| j                  t        z  t        k7  r| S t        j                  «       }g }t        «       }|D ]Š  }| j                  t        |«      «      sŒt        j                  t        |«      }||vsŒ=|j                  t        |D �cg c]  }t        |«      ‘Œ c}| j                  ¬«      «       |j!                  |«       ŒŒ |s| S t#        | g|z   «      S c c}w r9  )r³   r«   r   r—   rŽ   r   rG  r   rM  r°   rˆ  rð   r–   rL  r[   rÄ  r´   rÒ   )	r;   r—   r¯   rO  r  Úseenrô   rN  r½   s	            r>   Ú_handle_case_foldingzSetBase._handle_case_folding²  sø   € à�}Š} T§_¡_´zÒ%AÁfØˆKð —‘—‘¤7Ò*°·±Ü
ñ1Ü+ò0,àˆKô !×6Ñ6Ó8ˆð ˆÜ‹uˆØ!ò 	%ˆBØ�|‰|œC ›GÕ$Ü×)Ñ)Ô*;¸RÓ@�Ø Ò%Ø—L‘L¤¸Ö(@°A¬¨Q­Ò(@Ø!%§¡ô"2ô 3à—H‘H˜VÕ$ð	%ñ àˆKä�t�f˜u‘nÓ%Ð%ùò )As   ÃDc                 ó²  — | j                   r| j                  t        z  sy| j                  j                  t
        z  r| j                  t        z  t        k7  ryt        j                  «       }t        «       }|D ]H  }| j                  t        |«      «      sŒt        j                  t        |«      }|j                  |«       ŒJ |syt        d„ |D «       «      S )Nr.   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrž  r  )r¡  rN  s     r>   r¢  z$SetBase.max_width.<locals>.<genexpr>ç  s   è ø€ Ò2 6”3�v—;Ñ2ùr  )r³   r«   r   r—   rŽ   r   rG  r   rM  r°   rˆ  rð   r–   rL  r´   r<  )r;   rO  r¶  rô   rN  s        r>   r‘  zSetBase.max_widthÐ  s²   € à�}Š} T§_¡_´zÒ%AØð —‘—‘¤7Ò*°·±Ü
ñ1Ü+ò0,àô !×6Ñ6Ó8ˆô ‹uˆØ!ò 	!ˆBØ�|‰|œC ›GÕ$Ü×)Ñ)Ô*;¸RÓ@�Ø—‘˜Õ ð	!ñ
 ØäÑ2¨TÔ2Ó2Ð2r?   c                 ó   — d | _         y rž  rj  rb  s    r>   rk  zSetBase.__del__é  rl  r?   N)r@   rA   rB   r±   r:   re  r  r�  rƒ  r¬  r·  r‘  rk  rD   r?   r>   r:  r:  ƒ  s7   „ Ø-1¸fØó+ò0òòòò (ò&ò<3ó2r?   r:  c                   ó  — e Zd Zedfej
                  edfej                  edfej
                  e	dfej                  edfej                  edfej                  edfej                  e	dfej                  iZdZdd„Zd„ Zy)r	  FTÚSET_DIFFc                 óL  ‡‡— | j                   }t        |«      dkD  r|d   t        ‰|dd  «      g}t        |«      dk(  r;|d   j                  | j                  | j
                  ¬«      j                  ‰‰|«      S t        ˆˆfd„|D «       «      | _         | j                  ‰|«      S )NrO   r   r.   r¬   c              3   óF   •K  — | ]  }|j                  ‰‰d ¬«      –— Œ y­w)Tr®   N)r¸   )r¡  rb   r—   r§   s     €€r>   r¢  z#SetDiff.optimise.<locals>.<genexpr>ý  s$   øè ø€ ò Àa˜1Ÿ:™: d¨G¸D˜:×Añ ùs   ƒ!)	r  r^   r¶   rµ   r«   r­   r¸   r|   r·  )r;   r—   r§   r¯   r  s    ``  r>   r¸   zSetDiff.optimiseô  s¥   ù€ Ø—
‘
ˆÜˆu‹:˜Š>Ø˜1‘Xœx¨¨e°A°C¨kÓ:Ð;ˆEäˆu‹:˜Š?Ø˜‘8×&Ñ&°$·/±/ØŸ™ð 'ó (ß(0©°°wÀÓ(GðHô ô Ø
ôó ˆŒ
ð ×(Ñ(¨¨vÓ6Ð6r?   c                 óž   — | j                   d   j                  |«      xr | j                   d   j                  |«       }|| j                  k(  S ©Nr   r.   ©r  rˆ  r³   ©r;   rô   rb   s      r>   rˆ  zSetDiff.matches  sD   € Ø�J‰J�q‰M×!Ñ! "Ó%ÒG¨d¯j©j¸©m×.CÑ.CÀBÓ.GÐ*GˆØ�D—M‘MÑ!Ð!r?   Nr�  )r@   rA   rB   r±   r·  r¼  r   ÚSET_DIFF_IGNr   rG  ÚSET_DIFF_REVÚSET_DIFF_IGN_REVr¡  r¨  r¸   rˆ  rD   r?   r>   r	  r	  ì  sŒ   „ Ø˜ˆ §¡¨j¸%Ð-@Ø‡o�o˜ %Ð(¨"¯+©+¸ÈÐ7NØ‡o�o˜ �~ r§¡¸ÀTÐ8JØ×Ñ˜H dÐ+¨R¯_©_¸~Ø
ð?Ø× Ñ ð	"€Gð
 €Hó7ó"r?   r	  c                   ó  — e Zd Zedfej
                  edfej                  edfej
                  e	dfej                  edfej                  edfej                  edfej                  e	dfej                  iZdZdd„Zd„ Zy)r  FTÚ	SET_INTERc                 ó¸  — g }| j                   D ]_  }|j                  ||d¬«      }t        |t        «      r(|j                  r|j                  |j                   «       ŒO|j                  |«       Œa t        |«      dk(  r;|d   j                  | j                  | j                  ¬«      j                  |||«      S t        |«      | _         | j                  ||«      S ©NTr®   r.   r   r¬   )r  r¸   r/   r  r³   rº   r[   r^   rµ   r«   r­   r|   r·  ©r;   r—   r§   r¯   r  rb   s         r>   r¸   zSetInter.optimise  s¾   € ØˆØ—‘ò 	 ˆAØ—
‘
˜4 °�
Ó6ˆAÜ˜!œXÔ&¨1¯:ª:à—‘˜QŸW™WÕ%à—‘˜Q•ð	 ô ˆu‹:˜Š?Ø˜‘8×&Ñ&°$·/±/ØŸ™ð 'ó (ß(0©°°wÀÓ(GðHô ˜5“\ˆŒ
à×(Ñ(¨¨vÓ6Ð6r?   c                 ó^   ‡— t        ˆfd„| j                  D «       «      }|| j                  k(  S )Nc              3   ó@   •K  — | ]  }|j                  ‰«      –— Œ y ­wrž  ©rˆ  ©r¡  rp   rô   s     €r>   r¢  z#SetInter.matches.<locals>.<genexpr>!  ó   øè ø€ Ò2 !�—	‘	˜"—Ñ2ùr  )r¦  r  r³   rÂ  s    ` r>   rˆ  zSetInter.matches   ó&   ø€ ÜÓ2 t§z¡zÔ2Ó2ˆØ�D—M‘MÑ!Ð!r?   Nr�  )r@   rA   rB   r±   r·  rÇ  r   ÚSET_INTER_IGNr   rG  ÚSET_INTER_REVÚSET_INTER_IGN_REVr¡  r¨  r¸   rˆ  rD   r?   r>   r  r    s˜   „ Ø˜ˆ §¡¨z¸5Ð.AØ×Ñ˜ 5Ð)¨2¯<©<¸.Øð:Ø×Ñ ¨ °×0@Ñ0@À:Ø
ðCØ×!Ñ! H¨dÐ#3°R×5EÑ5EØ�tÐ˜b×2Ñ2ð	4€Gð
 €Hó7ó$"r?   r  c                   ó  — e Zd Zedfej
                  edfej                  edfej
                  e	dfej                  edfej                  edfej                  edfej                  e	dfej                  iZdZdd„Zd„ Zy)r  FTÚSET_SYM_DIFFc                 ó¸  — g }| j                   D ]_  }|j                  ||d¬«      }t        |t        «      r(|j                  r|j                  |j                   «       ŒO|j                  |«       Œa t        |«      dk(  r;|d   j                  | j                  | j                  ¬«      j                  |||«      S t        |«      | _         | j                  ||«      S rÉ  )r  r¸   r/   r  r³   rº   r[   r^   rµ   r«   r­   r|   r·  rÊ  s         r>   r¸   zSetSymDiff.optimise,  s¾   € ØˆØ—‘ò 	 ˆAØ—
‘
˜4 °�
Ó6ˆAÜ˜!œZÔ(¨Q¯ZªZà—‘˜QŸW™WÕ%à—‘˜Q•ð	 ô ˆu‹:˜Š?Ø˜‘8×&Ñ&°$·/±/ØŸ™ð 'ó (ß(0©°°wÀÓ(GðHô ˜5“\ˆŒ
à×(Ñ(¨¨vÓ6Ð6r?   c                 ón   — d}| j                   D ]  }||j                  |«      k7  }Œ || j                  k(  S rz  rÁ  )r;   rô   rb   rp   s       r>   rˆ  zSetSymDiff.matches>  s=   € ØˆØ—‘ò 	#ˆAØ�Q—Y‘Y˜r“]Ñ"‰Að	#ð �D—M‘MÑ!Ð!r?   Nr�  )r@   rA   rB   r±   r·  rÕ  r   ÚSET_SYM_DIFF_IGNr   rG  ÚSET_SYM_DIFF_REVÚSET_SYM_DIFF_IGN_REVr¡  r¨  r¸   rˆ  rD   r?   r>   r  r  $  s–   „ Ø˜ˆ §¡°*¸eÐ1DØ×Ñ˜H eÐ,¨b¯o©oÀØð@Ø×!Ñ! F¨D >°2×3FÑ3FØ�4Ð˜"×1Ñ1°H¸dÐ3CØ×Ñ˜N¨DÐ1°2×3JÑ3Jð	L€Gð
 €Hó7ó$"r?   r  c                   ó  — e Zd Zedfej
                  edfej                  edfej
                  e	dfej                  edfej                  edfej                  edfej                  e	dfej                  iZdZdd„Zd„ Zd„ Zy)	r¶   FTÚ	SET_UNIONc                 ó$  — g }| j                   D ]{  }|j                  ||d¬«      }t        |t        «      r(|j                  r|j                  |j                   «       ŒOt        |t        «      rt        «       c S |j                  |«       Œ} t        «       t        «       f}|D ]R  }t        |t        «      sŒ||j                     j                  |j                  |j                  |j                  f«       ŒT |d   |d   z  r
t        «       S t        |«      dk(  rU|d   }|j                  |j                  | j                  k(  | j                  | j                  ¬«      j                  |||«      S t!        |«      | _         | j#                  ||«      S )NTr®   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  rb   Ú
propertiesrp   s           r>   r¸   zSetUnion.optimiseM  sM  € ØˆØ—‘ò 	 ˆAØ—
‘
˜4 °�
Ó6ˆAÜ˜!œXÔ&¨1¯:ª:à—‘˜QŸW™WÕ%Ü˜AœvÔ&Ü“x’à—‘˜Q•ð	 ô “eœS›U�^ˆ
àò 	QˆAÜ˜!œXÕ&Ø˜1Ÿ:™:Ñ&×*Ñ*¨A¯G©G°Q·\±\À1Ç;Á;Ð+OÕPð	Qð �a‰=˜: a™=Ò(Ü“8ˆOäˆu‹:˜Š?Ø�a‘ˆAØ—<‘<¨¯©°t·}±}Ñ)DØŸ™ØŸ™ð  ó (ç(0©°°wÀÓ(GðHô ˜5“\ˆŒ
à×(Ñ(¨¨vÓ6Ð6r?   c                 ó4  — d}| j                   r	|t        z  }| j                  r	|t        z  }|r	|t        z  }t        t        «      g }}| j                  D ]L  }t        |t        «      r)||j                      j                  |j                  «       Œ<|j                  |«       ŒN | j                  | j                  |f   |fg}|j                  «       D ]}  \  }}	d}|r	|t        z  }t        |	«      dk(  r&|j                  t        j                   ||	d   f«       ŒG|j                  t        j"                  |t        |	«      ft%        |	«      z   «       Œ |D ]!  }|j'                  |j)                  «       «       Œ# |j                  t        j*                  f«       |S rÀ  )r³   r�  r­   r}  rž  r   r·   r  r/   r²   r[   r_   r¡  r«   r^   r·  r�  ÚSTRINGr|   rº   r¥   rÚ  )
r;   r§   ri  rŽ   rú  Úothersrb   r»   r³   Úvaluess
             r>   rƒ  zSetUnion._compilem  sa  € ØˆØ�=Š=Ø”[Ñ ˆEØ�>Š>Ø”\Ñ!ˆEÙØ”XÑˆEä(¬Ó.°�Fˆ
Ø—‘ò 	!ˆAÜ˜!œYÔ'Ø˜1Ÿ:™:Ñ&×-Ñ-¨a¯g©gÕ6à—‘˜aÕ ð		!ð —‘˜dŸo™o¨wÐ6Ñ7¸Ð?Ð@ˆà *× 0Ñ 0Ó 2ò 	MÑˆH�fØˆEÙØœÑ$�Ü�6‹{˜aÒØ—‘œRŸ\™\¨5°&¸±)Ð<Õ=à—‘œRŸY™Y¨¬s°6«{Ð;¼eÀF»mÑKÕLð	Mð ò 	%ˆAØ�K‰K˜Ÿ	™	›Õ$ð	%ð 	�‰”R—V‘V�JÔàˆr?   c                 ó^   ‡— t        ˆfd„| j                  D «       «      }|| j                  k(  S )Nc              3   ó@   •K  — | ]  }|j                  ‰«      –— Œ y ­wrž  rÍ  rÎ  s     €r>   r¢  z#SetUnion.matches.<locals>.<genexpr>�  rÏ  r  )r  r  r³   rÂ  s    ` r>   rˆ  zSetUnion.matches�  rÐ  r?   Nr�  )r@   rA   rB   r±   r·  rÜ  r   ÚSET_UNION_IGNr   rG  ÚSET_UNION_REVÚSET_UNION_IGN_REVr¡  r¨  r¸   rƒ  rˆ  rD   r?   r>   r¶   r¶   E  sŸ   „ Ø˜ˆ §¡¨z¸5Ð.AØ×Ñ˜ 5Ð)¨2¯<©<¸.Øð:Ø×Ñ ¨ °×0@Ñ0@À:Ø
ðCØ×!Ñ! H¨dÐ#3°R×5EÑ5EØ�tÐ˜b×2Ñ2ð	4€Gð
 €Hó7ò@ óD"r?   r¶   c                   ó(   — e Zd ZdZej
                  Zy)ÚSkipÚSKIPN)r@   rA   rB   r¨  r·  rê  r¡  rD   r?   r>   ré  ré  “  s   „ Ø€HØ�g‰g�Gr?   ré  c                   ó(   — e Zd Zej                  ZdZy)rå   ÚSTART_OF_LINEN)r@   rA   rB   r·  rì  r¡  r¨  rD   r?   r>   rå   rå   —  rº  r?   rå   c                   ó(   — e Zd Zej                  ZdZy)rä   ÚSTART_OF_LINE_UN)r@   rA   rB   r·  rî  r¡  r¨  rD   r?   r>   rä   rä   ›  ó   „ Ø× Ñ €GØ �Hr?   rä   c                   ó(   — e Zd Zej                  ZdZy)ræ   ÚSTART_OF_STRINGN)r@   rA   rB   r·  rñ  r¡  r¨  rD   r?   r>   ræ   ræ   Ÿ  rï  r?   ræ   c                   ó(   — e Zd Zej                  ZdZy)ÚStartOfWordÚSTART_OF_WORDN)r@   rA   rB   r·  rô  r¡  r¨  rD   r?   r>   ró  ró  £  rº  r?   ró  c                   ó  — e Zd Zedfej
                  edfej                  edfej
                  e	dfej                  edfej                  edfej                  edfej                  e	dfej                  iZefd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Zy
)rÄ  FTc                 ó¨  — t        |«      | _        t        |   | _        | j                  t        z  t        k(  rOg }| j                  D ]=  }t        j                  t        t        |«      «      }|j                  d„ |D «       «       Œ? n| j                  }t        |«      | _
        d| _        | j                  | j                  | j                  f| _        y )Nc              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrž  rŒ  r�  s     r>   r¢  z"String.__init__.<locals>.<genexpr>¶  s   è ø€ Ò(@°A¬¨Q¯Ñ(@ùr  F)r|   rú  rd  r«   rG  r   r–   rL  rJ  rº   rŽ  ÚrequiredrZ   ra  )r;   rú  r«   rŽ  r�   rN  s         r>   r:   zString.__init__®  s¬   € Ü 
Ó+ˆŒÜ1°*Ñ=ˆŒà�O‰OœnÑ,´Ò?Ø "ÐØŸ™ò A�Ü×)Ñ)Ô*;¼SÀ»YÓG�Ø!×(Ñ(Ñ(@¸Ô(@Õ@ñAð !%§¡Ðä!&Ð'8Ó!9ˆÔØˆŒà—N‘N D§O¡O°T·_±_ÐDˆ�	r?   c                 ól   — |rd}nd}t        t        | j                  |   | j                  ¬«      g«      S )Nrø  r   rª   )r°   r²   rú  r«   )r;   r§   r3   s      r>   r  zString.get_firstset¿  s:   € ÙØ‰CàˆCÜ”I˜dŸo™o¨cÑ2Ø—_‘_ô&ð 'ó (ð 	(r?   c                  ó   — yrt  rD   rb  s    r>   r�  zString.has_simple_startÇ  rv  r?   c                 óÄ   — d}|r	|t         z  }| j                  r	|t        z  }| j                  | j                  |f   |t        | j                  «      f| j                  z   gS rœ  )rž  rø  ÚREQUIRED_OPr¡  r«   r^   rŽ  r¢  s       r>   rƒ  zString._compileÊ  sj   € ØˆÙØ”XÑˆEØ�=Š=Ø”[Ñ ˆEØ—‘˜dŸo™o¨wÐ6Ñ7¸Ü
ˆd×$Ñ$Ó
%ð'Ø)-×)?Ñ)?ñ@ð Að 	Ar?   c                 óà   — t        dj                  d„ | j                  D «       «      «      j                  d«      }t	        dj                  t        |z  |t        | j                     «      «       y )Nrg   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrž  r�  r�  s     r>   r¢  zString.dump.<locals>.<genexpr>Ô  s   è ø€ Ò@¨1¤ A§Ñ@ùr  r€  z{}STRING {}{})	r�  r]   rú  r‚  r¦  r8   r§  rƒ  r«   r„  s       r>   r¬  zString.dumpÓ  sS   € Ü˜Ÿ™Ñ@°·±Ô@Ó@ÓA×HÑHÈÓNˆÜˆo×$Ñ$¤V¨f¡_°gÜ
�D—O‘OÑ
$ó&õ 	'r?   c                 ó,   — t        | j                  «      S rž  )r^   rŽ  rb  s    r>   r‘  zString.max_widthØ  s   € Ü�4×)Ñ)Ó*Ð*r?   c                 ó
   — d| fS rœ  rD   r~  s     r>   r’  zString.get_required_stringÛ  s   € Ø�$ˆwˆr?   N)r@   rA   rB   r±   r·  rà  r   Ú
STRING_IGNr   rG  Ú
STRING_FLDÚ
STRING_REVÚSTRING_IGN_REVÚSTRING_FLD_REVr¡  r:   r  r�  rƒ  r¬  r‘  r’  rD   r?   r>   rÄ  rÄ  §  s¢   „ Ø˜ˆ §	¡	¨J¸Ð+>ÀÇÁØ�Ð˜Ÿ™ ^°UÐ$;¸R¿]¹]Øˆt€n�b—m‘m j°$Ð%7¸×9JÑ9JØ�Ð˜Ÿ™¨¸Ð'=Ø×Ñð	€Gð /5ó Eò"(òòAò'ò
+ór?   rÄ  c                   ó   — e Zd Zd„ Zy)rù  c                 óä   — dj                  d„ | j                  D «       «      }t        |«      j                  d«      }t	        dj                  t        |z  |t        | j                     «      «       y )Nrg   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrž  r�  r�  s     r>   r¢  zLiteral.dump.<locals>.<genexpr>à  s   è ø€ Ò: Qœ#˜aŸ&Ñ:ùr  r€  z{}LITERAL MATCH {}{})	r]   rú  r�  r‚  r¦  r8   r§  rƒ  r«   )r;   r«  r§   Úliteralr…  s        r>   r¬  zLiteral.dumpß  sX   € Ø—'‘'Ñ:¨$¯/©/Ô:Ó:ˆÜ˜“.×'Ñ'¨Ó-ˆÜÐ$×+Ñ+¬F°V©O¸WÜ
�D—O‘OÑ
$ó&õ 	'r?   N)r@   rA   rB   r¬  rD   r?   r>   rù  rù  Þ  s   „ ó'r?   rù  c                   ó"   — e Zd Zefd„Zd„ Zd„ Zy)rÊ   c           
      ó`  — || _         || _        t        |   | _        | j                  | j                  | j                  f| _        || j                  f| _        | j                  |j                  vr,t        |j                  «      |j                  | j                  <   | j                   j                  | j                     }| j                   j                  | j                     }| j                  }| j                   j                  t        z  }||z  }g }|D ]T  }	t        |	t        «      r|	D �
cg c]  }
t        |
«      ‘Œ }	}
|j                  |	D �
cg c]  }
t!        |
|¬«      ‘Œ c}
«       ŒV |j#                  t        d¬«       |D �cg c]  }t%        |«      ‘Œ c}| _        y c c}
w c c}
w c c}w )Nrª   T)rA  r§   )r—   rÆ   rd  r«   rZ   ra  Úset_keyÚnamed_lists_usedr^   rá  rŽ   r”   r/   r0   rð   r[   r²   r¤  rñ   rÔ   )r;   r—   rÆ   r«   rX  r  rÕ  Ú
fold_flagsÚchoicesr˜   r½   Úchoices               r>   r:   zStringSet.__init__æ  s_  € ØˆŒ	ØˆŒ	Ü1°*Ñ=ˆŒà—N‘N D§I¡I¨t¯©Ð>ˆŒ	à˜dŸo™oÐ.ˆŒØ�<‰<˜t×4Ñ4Ñ4Ü25°d×6KÑ6KÓ2LˆD×!Ñ! $§,¡,Ñ/à—	‘	×*Ñ*¨4¯<©<Ñ8ˆØ—	‘	× Ñ  §¡Ñ+ˆà—_‘_ˆ
à—9‘9—?‘?¤^Ñ3ˆØ 
Ñ*ˆ
àˆàò 	ˆFÜ˜&¤#Ô&Ø*0Ö1 Qœ#˜a�&Ð1�Ð1à�N‰NØöÀAœI a°JÖ?ò õ ð		ð 	�‰œ dˆÔ+à8?Ö@¨fœ &Õ)Ò@ˆ�ùò 2ùòùò As   Ä+F!ÅF&
ÆF+c                 ó€   — t        dj                  t        |z  | j                  t        | j
                     «      «       y )Nz{}STRING_SET {}{})r¦  r8   r§  rÆ   rƒ  r«   rª  s      r>   r¬  zStringSet.dump  s0   € ÜÐ!×(Ñ(¬°&©¸$¿)¹)Ü
�D—O‘OÑ
$ó&õ 	'r?   c                 ó   — d | _         y rž  rj  rb  s    r>   rk  zStringSet.__del__  rl  r?   N)r@   rA   rB   r±   r:   r¬  rk  rD   r?   r>   rÊ   rÊ   å  s   „ Ø.4ó AòB'ór?   rÊ   c                   óP   — e Zd ZdZd„ Zdd„Zdd„Zdd„Zdd„Zdd„Z	d„ Z
d	„ Zd
„ Zy)ÚSourcez1Scanner for the regular expression source string.c                 ó¸   — t        |t        «      r|| _        t        | _        n |j
                  d«      | _        d„ | _        d| _        d| _        |d d | _        y )Nzlatin-1c                 ó   — t        | g«      S rž  )rL  r7  s    r>   r?  z!Source.__init__.<locals>.<lambda>  s   € ¤u¨a¨S£z€ r?   r   F)	r/   r0   r˜   rJ  Ú	char_typeÚdecoder3   rV  rK  )r;   r˜   s     r>   r:   zSource.__init__  sO   € Ü�fœcÔ"Ø ˆDŒKÜ ˆD�Nà'˜&Ÿ-™-¨	Ó2ˆDŒKÙ1ˆDŒNàˆŒØ!ˆÔØ˜3˜Q�<ˆ�r?   c                 ó  — | j                   }| j                  }	 | j                  r:|s8	 ||   j                  «       r|dz  }n||   dk(  r |j                  d|«      }nnŒ7||   S # t
        $ r |d d cY S t        $ r |d d cY S w xY w©Nr.   rJ  r,   r   )r˜   r3   rV  ÚisspacerX  rW  r2  )r;   Úoverride_ignorer˜   r3   s       r>   r_  zSource.peek  s¡   € Ø—‘ˆØ�h‰hˆð	 Ø× Ò ©ØØ˜c‘{×*Ñ*Ô,à˜q™™Ø ™¨Ò+à*˜fŸl™l¨4°Ó5™àð ð ˜#‘;ÐøÜò 	 à˜3˜Q�<ÒÜò 	 à˜3˜Q�<Òð	 ús   šA
A% Á%BÁ5BÂBc                 óV  — | j                   }| j                  }	 | j                  r:|s8	 ||   j                  «       r|dz  }n||   dk(  r |j                  d|«      }nnŒ7||   }|dz   | _        |S # t
        $ r || _        |d d cY S t        $ r t        |«      | _        |d d cY S w xY wr  )r˜   r3   rV  r  rX  rW  r2  r^   )r;   r  r˜   r3   rô   s        r>   rÝ   z
Source.get4  sÂ   € Ø—‘ˆØ�h‰hˆð	 Ø× Ò ©ØØ˜c‘{×*Ñ*Ô,à˜q™™Ø ™¨Ò+à*˜fŸl™l¨4°Ó5™àð ð ˜‘ˆBØ˜Q‘wˆDŒHØˆIøÜò 	 àˆDŒHØ˜3˜Q�<ÒÜò 	 ä˜6“{ˆDŒHØ˜3˜Q�<Òð	 ús   šAA1 Á1B(ÂB(Â'B(c                 óD  — | j                   }| j                  }	 | j                  r‚g }t        |«      |k  r`	 ||   j	                  «       r|dz  }n||   dk(  r |j
                  d|«      }nnŒ7|j                  ||   «       |dz  }t        |«      |k  rŒ`dj                  |«      }n||||z    }|t        |«      z  }|| _        |S # t        $ r$ t        |«      | _        dj                  «      cY S t        $ r$ t        |«      | _        dj                  «      cY S w xY w©Nr.   rJ  r,   rg   )
r˜   r3   rV  r^   r  rX  r[   r]   rW  r2  )r;   r4   r˜   r3   Ú	substrings        r>   Úget_manyzSource.get_manyP  s&  € Ø—‘ˆØ�h‰hˆð 	&Ø× Ò Ø�	ä˜)“n uÒ,ØØ! #™;×.Ñ.Ô0à 1™H™CØ# C™[¨CÒ/à". &§,¡,¨t°SÓ"9™Cà!ð ð ×$Ñ$ V¨C¡[Ô1Ø˜1‘H�Cô ˜)“n uÓ,ð ŸG™G IÓ.‘	à" 3¨¨u©Ð5�	Ø”s˜9“~Ñ%�àˆDŒHØÐøÜò 	&ä˜6“{ˆDŒHØ—7‘7˜9Ó%Ò%Üò 	&ä˜6“{ˆDŒHØ—7‘7˜9Ó%Ò%ð	&ús   šA;C Â0C Ã*DÃ3)DÄDc                 ób  — | j                   }| j                  }| j                  ry|sw	 g }	 ||   j                  «       r|dz  }nA||   dk(  r |j                  d|«      }n%||   |v |k(  r|j                  ||   «       |dz  }nnŒ[|| _        dj                  «      S 	 ||   |v |k(  r|dz  }||   |v |k(  rŒ|| j                  | }|| _        |S # t        $ r t        |«      | _        Y Œ_t        $ r t        |«      | _        Y Œyw xY w# t        $ r || j                  | }|| _        |cY S w xY wr  )
r˜   r3   rV  r  rX  r[   rW  r^   r2  r]   )r;   Útest_setrQ  rã  r˜   r3   r   s          r>   rC  zSource.get_whilev  s^  € Ø—‘ˆØ�h‰hˆà×Ò¡[ð'Ø�	àØ˜c‘{×*Ñ*Ô,à˜q™™Ø ™¨Ò+à*˜fŸl™l¨4°Ó5™Ø  ™+¨Ð1°gÒ=Ø!×(Ñ(¨°©Ô5Ø˜q™™àð ð �”ð —7‘7˜9Ó%Ð%ð!Ø˜c‘{ hÐ.°7Ò:Ø˜1‘H�Cð ˜c‘{ hÐ.°7Ó:ð # 4§8¡8¨cÐ2�	à�”à Ð øô# ò 'ä˜v›;�–Üò 'ä˜v›;�–ð'ûô ò !à" 4§8¡8¨cÐ2�	à�”à Ò ð!ús0   ¨A%C ÂD
 Â9D
 ÃDÃ,DÄDÄ
!D.Ä-D.c                 ó’  — | j                   }| j                  }	 | j                  rH	 ||   j                  «       r|dz  }n-||   dk(  r |j                  d|«      }n||   |v |k(  r|dz  }nnŒG||   |v |k(  r|dz  }||   |v |k(  rŒ|| _        y # t
        $ r t        |«      | _        Y y t        $ r t        |«      | _        Y y w xY w)Nr.   rJ  r,   )r˜   r3   rV  r  rX  rW  r^   r2  )r;   r#  rQ  r˜   r3   s        r>   Ú
skip_whilezSource.skip_while¦  sã   € Ø—‘ˆØ�h‰hˆð	#Ø× Ò ØØ˜c‘{×*Ñ*Ô,à˜q™™Ø ™¨Ò+à*˜fŸl™l¨4°Ó5™Ø  ™+¨Ð1°gÒ=Ø˜q™™àð ð ˜c‘{ hÐ.°7Ò:Ø˜1‘H�Cð ˜c‘{ hÐ.°7Ó:ð ˆD�HøÜò 	#ä˜6“{ˆDŽHÜò 	#ä˜6“{ˆDŽHð	#ús   šA-B ÂB ÂCÂ+CÃCc                 óz  — | j                   }| j                  }| j                  rW	 |D ]I  }	 ||   j                  «       r|dz  }n||   dk(  r |j                  d|«      }nnŒ7||   |k7  r y|dz  }ŒK || _        y |j                  ||«      sy|t        |«      z   | _        y# t
        $ r Y yt        $ r Y yw xY w)NTr.   rJ  r,   F)	r˜   r3   rV  r  rX  rW  r2  rA  r^   )r;   r   r˜   r3   r½   s        r>   rÑ   zSource.matchÃ  sâ   € Ø—‘ˆØ�h‰hˆà×ÒðØ"ò �AØØ! #™;×.Ñ.Ô0à 1™H™CØ# C™[¨CÒ/à". &§,¡,¨t°SÓ"9™Cà!ð ð ˜c‘{ aÒ'Ù$à˜1‘H‘Cðð  �”àð %�6×$Ñ$ Y°Ô4ØàœS ›^Ñ+ˆDŒHàøô ò áÜò áðús   ¦AB$ Á-B$ Â$	B:Â/B:Â9B:c                 ó†   — | j                  |«      s0t        dj                  |«      | j                  | j                  «      ‚y )Nz
missing {})rÑ   r'   r8   r˜   r3   )r;   r   s     r>   rU  zSource.expectê  s5   € Ø�z‰z˜)Ô$Ü˜×+Ñ+¨IÓ6¸¿¹ÀTÇXÁXÓNÐNð %r?   c                 ó
  — | j                   }| j                  }	 | j                  r8	 ||   j                  «       r|dz  }n||   dk(  r |j                  d|«      }nnŒ7|t        |«      k\  S # t        $ r Y yt        $ r Y yw xY w)NTr.   rJ  r,   )r˜   r3   rV  r  rX  r^   rW  r2  )r;   r˜   r3   s      r>   Úat_endzSource.at_endî  s’   € Ø—‘ˆØ�h‰hˆð	Ø× Ò ØØ˜c‘{×*Ñ*Ô,Ø˜q™™Ø ™¨Ò+Ø*˜fŸl™l¨4°Ó5™àð ð œ#˜f›+Ñ%Ð%øÜò 	áÜò 	áð	ús   šAA, Á,	BÁ7BÂBNr�  )r.   )TF)T)r@   rA   rB   rC   r:   r_  rÝ   r!  rC  r%  rÑ   rU  r)  rD   r?   r>   r  r    s6   „ Ù7ò
 ó ó0 ó8$&óL.!ó`#ò:%òNOór?   r  c                   ó2   — e Zd ZdZddi fd„Zdd„Zd„ Zd„ Zy)	ÚInfoz"Info about the regular expression.r   Nc                 óþ   — |t         |t        z  xs t           z  }|| _        || _        d| _        || _        d| _        i | _        i | _	        || _
        i | _        g | _        i | _        i | _        g | _        i | _        y ©NFr   )ÚDEFAULT_FLAGSrù  rú  rŽ   r“  rŠ  rá  r}  rZ  Ú
group_namer  r  Úopen_groupsr[  r	  r\  r  )r;   rŽ   r  rá  s       r>   r:   zInfo.__init__  s‡   € Ø” ¬Ñ 5ÒI¼/ÑJÑJˆØˆŒ
Ø!ˆÔØ"ˆÔàˆŒàˆÔØˆÔØˆŒØ"ˆŒØ "ˆÔØˆÔØ "ˆÔØ ˆÔØˆÔØ ˆÕr?   c                 óú  — | j                   j                  |«      }|€^	 | xj                  dz  c_        |�| j                  | j                  vrnŒ1| j                  }|r|| j                   |<   || j                  |<   || j                  v r*t        | j                  «      dz    }|| j                  |<   |}| j                  j                  |«       | j                  j                  |d«      dz   | j                  |<   |S r\  )	rZ  rÝ   r}  r/  r0  r^   r  r[   r[  )r;   rÆ   rf  Úgroup_aliass       r>   rT  zInfo.open_group  sû   € Ø× Ñ ×$Ñ$ TÓ*ˆØˆ=ØØ× Ò  AÑ%Õ Ø�< 4×#3Ñ#3¸4¿?¹?Ñ#JØð ð
 ×$Ñ$ˆEÙØ).�× Ñ  Ñ&Ø)-�—‘ Ñ&à�D×$Ñ$Ñ$ô   × 3Ñ 3Ó4°qÑ8Ð9ˆKØ/4ˆD×Ñ Ñ,ØˆEà×Ñ×Ñ Ô&Ø'+×'<Ñ'<×'@Ñ'@ÀÈÓ'JÈQÑ'Nˆ×Ñ˜eÑ$àˆr?   c                 ó8   — | j                   j                  «        y rž  )r0  rÿ   rb  s    r>   rW  zInfo.close_group4  s   € Ø×Ñ×ÑÕr?   c                 óÖ   — | j                   t        z  xs t        }|t        k(  ry|j	                  «       rt        |«      }n| j                  j                  |«      }|| j                  v S rz  )	rŽ   rù  rú  r"   r˜  r  rZ  rÝ   r0  )r;   rÆ   rý  rf  s       r>   rn  zInfo.is_open_group7  s[   € ð —:‘:¤Ñ-ÒA´/ˆØ”hÒØà�<‰<Œ>Ü˜“I‰Eà×$Ñ$×(Ñ(¨Ó.ˆEà˜×(Ñ(Ð(Ð(r?   rž  )r@   rA   rB   rC   r:   rT  rW  rn  rD   r?   r>   r+  r+    s    „ Ù(à¨$°ró !ó&ò4ó)r?   r+  c                 ó  — i }g }| j                   D ]ç  \  }}}|j                  ||f}|j                  |«      }|€¸|j                  dk(  r]t        | j                  t
        z  «      }	t        |t        «      }
|	|
f||fk7  rd|j                  t        t        |«      |«      ||f«       n<| j                  |j                     }|d   }|dd ||fk7  r|j                  |||f«       t        |«      }|||<   ||_        Œé || _        || _        y)zkChecks whether the reverse and fuzzy features of the group calls match
    the groups which they call.
    Nr   r.   )r\  rf  rÝ   r¢   rŽ   r   r/   r	  r[   rn  r^   r	  rc  r  Úadditional_groups)r—   rq  r  r6  Úcallr§   ri  rA  rp  ÚrevÚfuzÚdef_inforf  s                r>   Ú_check_group_featuresr;  E  s#  € ð €IØÐØ $× 0Ñ 0ò Ñˆˆg�uà�z‰z˜7 EÐ*ˆØ�m‰m˜CÓ ˆØˆ;à�z‰z˜QŠä˜4Ÿ:™:¬Ñ/Ó0�Ü  ¬Ó/�Ø˜�: '¨5Ð!1Ò1ð &×,Ñ,¬g´c¸)³nÀfÓ.MØ˜uð.&õ 'ð  ×.Ñ.¨t¯z©zÑ:�Ø  ™�Ø˜A˜C�> g¨uÐ%5Ò5ð &×,Ñ,¨e°W¸eÐ-DÔEä�i“.ˆCØ ˆI�c‰Nàˆ�ð9ð< €D„NØ.€DÕr?   c                 óà   — | j                  t        |t        z  «      «      \  }}|r>d|_        |t        k\  rd}|j
                  }|t        z  s
|t         z  }|j                  }nd}d}d}|||fS )z>Gets the required string and related info of a parsed pattern.Trø  r   rD   )r’  r¢   r   rø  r  r«   r   rŽ  )rq  rŽ   Ú
req_offsetrø  Ú	req_flagsÚ	req_charss         r>   Ú_get_required_stringr@  l  s   € ð "×5Ñ5´d¸5Ä7¹?Ó6KÓLÑ€J�ÙØ ˆÔØœÒ"ØˆJà×'Ñ'ˆ	Øœ’Øœ'˜Ñ!ˆIà×.Ñ.‰	àˆ
Øˆ	Øˆ	à�y )Ð+Ð+r?   c                   ó   — e Zd Zdd„Zd„ Zy)r(   c                 ó  — || _         g }|D ]£  \  }}t        |«      }t        ||j                  «      }t	        |j
                  t        z  «      |_        t        ||«      }|j                  «       s!t        d|j                  |j                  «      ‚|j                  |j                  «       «       Œ¥ t        |«      }t        |«      D �	�
cg c]  \  }	}
t!        ||	dz   |
«      ‘Œ }}	}
t#        |«      }t	        |j
                  t$        z  «      }|j'                  ||«      }|j)                  |«      }t+        ||j
                  «      \  }}}t-        ||«       |j.                  r!t        dj                  |j                  «      ‚t	        |j
                  t$        z  «      }|j1                  |«      t2        j4                  fgz   }t7        |«      }|j9                  «       s,	 t;        ||j=                  |«      «      }t7        |«      }||z   }|j
                  t@        z  xs tB        }|dtD        tF        fvrtI        d«      ‚tK        j0                  d |tL        z  |z  |i i i g |||tO        |«      «      | _(        y c c}
}	w # t>        $ r Y Œ~w xY w)Nzunbalanced parenthesisr.   z(recursive regex not supported by Scannerr   z5VERSION0 and VERSION1 flags are mutually incompatible))Úlexiconr  r+  r  r¢   rŽ   r&   rV  rÕ   r)  r'   r˜   r3   r[   rr  Ú	enumerater  rÒ   r   r¸   rp  r@  r;  r  r¥   r·  ÚSUCCESSr¾   r�  r¨   r  rL   rù  rú  r    r"   r2  r   r’  r^   Úscanner)r;   rC  rŽ   ÚpatternsÚphraseÚactionrÓ   r—   rq  r³  rq   r§   r=  r?  r>  r»   Úfs_coderý  s                     r>   r:   zScanner.__init__‚  s]  € ØˆŒð ˆØ%ò 	6‰NˆF�Fä˜F“^ˆFÜ˜˜v×/Ñ/Ó0ˆDÜ"& t§z¡z´GÑ';Ó"<ˆFÔÜ# F¨DÓ1ˆFØ—=‘=”?ÜÐ4°f·m±mØ—*‘*óð ð �O‰O˜F×2Ñ2Ó4Õ5ð	6ô �E‹{ˆÜ6?ÀÓ6I×J©d¨a°”E˜$  A¡ qÕ)ÐJˆÑJÜ˜Ó!ˆô �t—z‘z¤GÑ+Ó,ˆØ—‘  wÓ/ˆØ×'Ñ'¨Ó-ˆô ,@ÀØ
�*‰*ó,Ñ(ˆ
�I˜yô 	˜d FÔ+ð �>Š>ÜÐBØ�m‰m˜VŸZ™Zó)ð )ô �t—z‘z¤GÑ+Ó,ˆð �~‰~˜gÓ&¬2¯:©:¨.Ð)9Ñ9ˆô ˜TÓ"ˆà×&Ñ&Ô(ðÜ+¨D°&×2EÑ2EÀgÓ2NÓO�Ü'¨Ó0�Ø ‘~�ð
 —:‘:¤Ñ-ÒA´/ˆØ˜1œh¬Ð1Ñ1ÜÐTÓUÐUô —~‘~ d¨U´\Ñ-AÀWÑ,LØ
��B˜˜B 
¨I°yÜ
ˆh‹-óˆ�ùóc KøôF "ò Ùðús   ÃI9Ç!+I? É?	JÊ
Jc                 óh  — g }|j                   }| j                  j                  |«      j                  }d}	  |«       }|snl|j                  «       }||k(  rnV| j                  |j
                  dz
     d   }t        |d«      r|| _         || |j                  «       «      }|� ||«       |}Œv|||d  fS )Nr   r.   Ú__call__)r[   rF  rÑ   r  rC  Ú	lastindexr   rf  )	r;   r˜   r,  r[   rÑ   rp   rb   ÚjrI  s	            r>   ÚscanzScanner.scanË  s¼   € ØˆØ—‘ˆØ—‘×$Ñ$ VÓ,×2Ñ2ˆØˆØÙ“ˆAÙØØ—‘“ˆAØ�AŠvØØ—\‘\ !§+¡+°¡/Ñ2°1Ñ5ˆFÜ�v˜zÔ*Ø�”
Ù  a§g¡g£iÓ0�ØÐ!Ù�v”ØˆAð ð �v˜a˜c�|Ð#Ð#r?   N)r   )r@   rA   rB   r:   rO  rD   r?   r>   r(   r(   �  s   „ óGóR$r?   r(   r@  úúúr,   úú	ú)rl   rm   ro   Únrr   Útr×  ÚDigitTÚBlankÚSpaceÚWord)rû   r	   Úhrs   r   ru   r#   ré  )rû   r	   rs   r   ru   r#   )r   rm   r   ÚKrb   r   ÚZÚz)rm   r   rb   r   )ÚFAILr   r[  rê  )ry   r�  r”  r-  (  Úenumr˜   ræ  Úcollectionsr   Úregexr   Ú__all__r9   r'   rF   rJ   rL   ÚIntFlagr)   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’  ÚSCOPED_FLAGSÚ	frozensetÚascii_lettersr&  r3  r*  ró  Ú	octdigitsrŸ  Ú	hexdigitsr¯  rÞ   rå  rò  r  Úget_code_sizeÚBYTES_PER_CODEÚBITS_PER_CODEr  r‡  rÀ   r±   rG  rL  rd  r½  ÚOPCODESrx   r·  rD  r&  rp   r  Úsetattrr’   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à   rX  rY  rR  rZ  rt  r[  r\  r]  r`  r^  rˆ  rŽ  r�  ra  r”  rS  r¨  r¬  r°  rß   rÎ  rÔ  r¾  r¿  rÁ  rÂ  rÃ  rë  rã   rü  rÿ  r  r  rû  r  r  r  r  r-  r2  r°   r=  r@  rî  rN  rH  rJ  rI  r§  r�  r}  rž  rŸ  rü  r   r©  rƒ  r]  r_  r–  râ   r¤   rá   r{  rè  rÒ   r�  rn  r²   ru  r­  r°  r³  rè   rç   r¼  rê   ré   rÃ  rÆ  r	  rÅ  rã  r   r  r  r  r  rq  ry  r~  r?  rZ  r  rÅ   rÀ  rñ   r:  r	  r  r  r¶   ré  rå   rä   ræ   ró  rÄ  rù  rÊ   r  r+  r;  r@  r(   Úget_propertiesr>  rQ  r  rð  rC  râ  rÝ   rÆ   Úprop_valuesr<  r^   Úval_namerE  rÍ  rì  rí  rÌ  ÚdictrÊ  r‚   rË  rÉ  rÇ  rÈ  rÆ  rc  rD   r?   r>   ú<module>rt     sµ  ðó  Û Û Ý #å ò€ô*ˆIô *ô>	�yô 	ô	�ô 	ô	�Yô 	ô1�—‘ô 1ðj 	�‰€Ø×Ñ€	Ø�‰€Ø	×	Ñ	€Ø×%Ñ%€Ø×Ñ€Ø×!Ñ!€
Ø	×	Ñ	€Ø×Ñ€	Ø�‰€Ø
×
Ñ
€Ø×Ñ€Ø
×
Ñ
€Ø
×
Ñ
€Ø×Ñ€Ø×Ñ€Ø‡~�~€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡K�K€Ø‡\�\€Ø‡\�\€Ø‡K�K€Ø‡K�K€Ø‡K�K€à€à˜8Ñ#€Ø˜‘ 'Ñ)€ð ˜1˜h¨Ð1€ð  	Ñ)¨EÑ1°LÑ@À5ÑHØ	ñ
€à˜:Ñ%¨	Ñ1°FÑ:¸TÑAÀGÑKØñ€ñ 	�&×&Ñ&Ó'€Ù	�6—=‘=Ó	!€Ø�‰€Ù�v×'Ñ'Ó(€
Ù�v×'Ñ'Ó(€
ÙÐ*Ó+©i¸¸«oÑ=€Ø™) D›/Ñ)€Ø™Y wÓ/Ñ/Ð Ø
"€ð &�×%Ñ%Ó'€Ø Ñ"€ð �-Ñ 1Ñ$€	ð  	°À8Ø˜ Y°UÀØ�G 8°8À$Ø	ñ€ð ˜
Ñ"€
Ø	
€Ø˜JÑ&€à˜nÑ,Ð à˜a ¨1¨j¸*Ø�.ð"Ð ð ˜A AÑ&€ðR€÷j	ñ 	ñ ƒ[€Ù�w—}‘}“Ó'ò �E€A€rÙˆB��AÕðó0.òd+ò;ò6òòò>òó>òLòCò=òòTòlòò@5ð  )°)Ñ<€òò4ò ò<ò01ò;òz
Aòòòò6
òHò4$òZ*òx"?òHò"
4ò)FòVò(
òò$	'ò'ò'òò ò"ò&!@òF5ó
ò&2ò.ò2òQ5òf4òBò* ò.	1ò'ò2ò "1òHò,ò4!ò#ò!ò ò!ò.')òR$òLLò	%òò*Eñ Ð/×5Ñ5Ó7Ó8€áÐ0×6Ñ6Ó8Ó9€ôD?òLF'òP
$òò"*ð* 
€Ø€Ø€Ø€Ø€
Ø€ØÐ à gÑ.€Ø�R˜Ð%:¸HÀbØÐ%ð'€	ò÷C&ñ C&ôL�Iô ô:ˆ)ô ô&	2ˆSô 	2ôˆ3ô ô6<ˆYô 6<ôpˆ}ô ôF9ˆYô F9ôP,�	ô ,ô\!ˆiô !ôH�	ô HôTW�)ô Wôr"�mô "ô%�}ô %ô'˜ô 'ô�ô ô�ô ô�-ô ô$�mô $ô&�ô &ô�ô ô ˆmô  ôC%ˆIô C%ôJˆyô ÷+ñ +ôZ'�9ô Z'ôx2�|ô 2ô<PˆIô Pôdˆ=ô ô�ô ôB�ô BôHS&˜Iô S&ôj"�iô "ô6ˆyô 6ôpˆMô ôKˆIô KôZ/ˆyô /ôb�=ô ôSˆyô Sôjgˆiô gôR"ˆgô "ô4"ˆwô "ô<"�ô "ôBL"ˆwô L"ô\ˆ=ô ô�-ô ô!�;ô !ô!�Mô !ô�-ô ô5ˆYô 5ôn'ˆfô 'ô'�ô '÷Rtñ t÷l?)ñ ?)òB%/òN,÷*^$ñ ^$ðB #ˆV×"Ò"Ó$€
ð €Ø$.×$4Ò$4Ó$6ò Ñ €IÑ �˜Ø&×*Ò*¨7°R¸°HÓ=Ñ€Dˆ+Ùˆt�Y CÔ(€DØ" KÐ/€N�7Ñà"ŸLšL›Nò Ñˆ�&Ù! +§/¢/°&¸"Ó"=¸xØôˆ�FÒñðð 
Ø	Ø	Ø	Ø	Ø	Ø	ñÐ ð €ØÐ ñ 
˜˜w¨Ó	-Ù	˜˜w¨Ó	.Ù	˜˜w¨Ó	-Ù	˜˜w¨Ó	-Ù	˜˜w¨Ó	.Ù	˜˜v tÓ	,Ù	˜˜v uÓ	-ñ€ñ ˜_Ó-Ð Ø × Ò Ù	˜˜w¨°~Ô	FÙ	˜˜w¨¸Ô	GÙ	˜˜w¨°~Ô	FÙ	˜˜w¨¸Ô	GÙ	˜˜v t°nÔ	EÙ	˜˜v u°~Ô	Fñô ñ ˜Ó/Ñ Ù × Ò Ù	˜˜w¨Ð7GÔ	HÙ	˜˜w¨Ð8HÔ	IÙ	˜˜w¨Ð7GÔ	HÙ	˜˜w¨Ð8HÔ	IÙ	˜˜v tÐ6FÔ	GÙ	˜˜v uÐ7GÔ	Hñ ô ñ 
‹Ù	‹Ù	�%‹Ù	‹Ù	‹Ù	‹Ù	‹Ù	‹ñ	Ñ ñ Ñ.Ó/Ñ Ù × Ò Ù	˜>Ô	*Ù	�% .Ô	1Ù	˜nÔ	-Ù	˜NÔ	+ñ	ô ñ  Ñ 0Ó1Ñ Ù × Ò Ù	Ð+Ô	,Ù	�%Ð"2Ô	3Ù	Ð.Ô	/Ù	Ð,Ô	-ñ	!ô ñ Ñ-Ó.Ñ Ù × Ò Ù	Ó	Ù	˜Ó	Ù	Ó	Ù	Ó	ñ	ô ñ ‹IÙ	‹Ù‹WÙ‹Fñ		‚r?   