Ë
    œ.æjTÉ  ã                  óú  — d Z ddlmZ ddlZddlmZ ddlmZ ddlmZ	 ddlm
Z dd	lmZ ddlZdd
lmZmZmZmZmZmZmZ ddlmZ ddlmZ ddlZd	Z ej8                  «       Z ej<                  «       ZdZ dZ!dZ"h d£Z#h d£Z$h d£Z%h d£Z&h d£Z'e#e$z  e%z  e&z  e'z  Z(dZ)de)› d�Z*dZ+de*› de+› d�Z,de*› d�Z-de*› de)› d�Z.dZ/d Z0d!e/› de-› d"e0› de-› d#�	Z1d$e,› d%e,› d&�Z2d'e)› d(e)› d)e1› d*�Z3de,› d+e,› d,e3› d-e,› d.�	Z4d/e1› �Z5d0e1› �Z6d1e1› d2e1› d3�Z7d4e,› d5e1› d6e1› de4› e,› d7�
Z8d8e1› d9e,› d:�Z9d8e1› d9e,› d;�Z:d<e1› d�Z;d=Z<e,› d>�Z=d?e9› �Z>d@e1› �Z?dAe:› dBe2› dCe,› dDe+› dEe*› e,› dFe+› dEe*› e,› dG�Z@dHe:› dIe2› dJe,› dK�ZAe:› dLe3› de,› dMe,› dEe3› dNe,› d>�ZBe:› dOe,› d>�ZCe+› dPe*› dQe,› dRe,› dE�ZDe:› dLe3› de,› dMe,› dEe3› dNe,› d>�ZE ejŒ                  dSe,› dT�ejŽ                  «      ZH ejŒ                  dSe*› dUe)› dV�ejŽ                  «      ZI ejŒ                  dWe,› dXe,› dY�ejŽ                  «      ZJ ejŒ                  dZe3› d[e,› dMe,› d\�ej–                  «      ZL ejŒ                  e*«      ZM ejŒ                  d]e,› dE�«      ZN ejŒ                  d^e+› d_�«      ZO ejŒ                  d]e;› d`�ej–                  «      ZP ejŒ                  e:ejŽ                  ej–                  z  ej¢                  z  «      ZR ejŒ                  e9ej–                  ejŽ                  z  ej¢                  z  «      ZSdaZTdbZUdcZVdZWddZXdeZYdfZZdgZ[dhZ\diZ]djZ^dkZ_dlZ`dmZadnZb eeb¬o«      dde"f	 	 	 	 	 	 	 	 	 	 	 	 	 d‘dp„«       Zcd’dq„Zdd“dr„Zed”ds„Zf G dt„ du«      Zg G dv„ dweg«      Zh G dx„ dy«      Zi G dz„ d{«      Zje G d|„ d}«      «       Zk G d~„ deelekejÚ                  z  f   «      Zn ekd€eWe[z  «      Zo ekd�eWe[z  «      Zp ekd‚eWe[z  eZz  «      Zq ekdƒeWe[z  e\z  «      Zr ekd„eWe[z  «      Zs ekd…eWe[z  «      Zt ekd†eWe[z  «      Zu ekd‡eWe[z  «      Zv ekdˆeWe[z  e`z  «      Zw ekd‰eWe[z  «      Zx ekdŠeWe[z  «      Zy ekd‹eWe[z  e^z  «      Zz ekd‹eWe[z  e_z  «      Z{ ekdŒeWe[z  «      Z| ekd�eWe[z  «      Z} ekdŽeW«      Z~ G d�„ d�«      Zy)•zCSS selector parser.é    )ÚannotationsN)Ú	lru_cacheé   )Úutil)Ú	css_match)Ú	css_types)ÚSelectorSyntaxError)ÚMatchÚAnyÚCallableÚIteratorÚIterableÚMappingÚcast)Ú	dataclass)ÚUserDictéýÿ  ))é·   r   )éÀ   éÖ   )éØ   éö   )éø   i}  )i  iÿ  )i   i   )i?   i@   )ip   i�!  )i ,  iï/  )i0  iÿ×  )i ù  iÏý  )iðý  r   )i   éÿÿ i    >   ú:linkú:openú:rootú:emptyú:mutedú:scopeú:checkedú:defaultú:definedú:enabledú	:any-linkú	:disabledú	:in-rangeú	:optionalú	:requiredú
:read-onlyú:last-childú:only-childú:read-writeú:first-childú:last-of-typeú:only-of-typeú:out-of-rangeú:first-of-typeú:indeterminateú:placeholder-shown>   ú:pastú:focusú:hoverú:activeú:futureú:pausedú:targetú:playingú:seekingú:stalledú:visitedú	:autofillú
:bufferingú:fullscreenú:local-linkú:focus-withinú:popover-openú:user-invalidú:focus-visibleú:target-withinú:volume-lockedú:picture-in-pictureú:hostú:current>   ú:matchesú:isú:hasú:notú:whereú	:containsú:-soup-containsú:-soup-contains-own>   ú:host-contextrK   rL   >   ú:dirú:langú
:nth-childú:nth-of-typeú:nth-last-childú:nth-last-of-typez(?>\r\n|[\n\f\r])z	(?:[ \t]|ú)z(?:/\*(?:[^*]|\*(?!/))*+\*/)z(?:ú|z(?:\\(?:[a-f0-9]{1,6}+z?+|[^\r\n\f]|$))z?+|z|[^\r\n\f]|$))z[A-Za-z_\x80-\U0010ffff]z[-0-9A-Za-z_\x80-\U0010ffff]z
(?:(?:--|-?+(?:z))
(?:z)*+)
z[-+]?+(?:[0-9]++n?+|n)(?:(?<=n)z*+[-+]z*+[0-9]++)?+z
(?:"(?:\\(?:z'|[^\r\n\f])|[^\\"\r\n\f])*+"|
'(?:\\(?:z|[^\r\n\f])|[^\\'\r\n\f])*+'|
z)
z*+(?P<cmp>[!~^|*$]?+=)z*+(?P<value>z)(?:z*+(?P<case>[is]))?+)?+z\#z\.z(?P<tag_ns>(?:z|\*)?+\|)?+(?P<tag_name>z|\*)z\[z*+(?P<attr_ns>(?:z|\*)?+\|(?!=))?+(?P<attr_name>z*+\]z
(?P<name>:z)(?P<open>\(z*+)?+z*+)z(?P<name>:(?=--)ú&z*+\)ú:z@Pz
(?P<pseudo_nth_child>z
(?P<nth_child>z|even|odd))(?:z*+\)|(?P<of>z*+z*+ofz*+))
z
(?P<pseudo_nth_type>z
(?P<nth_type>z|even|odd))z*+\)
z(?P<values>z*+,z)*+)z(?P<dir>ltr|rtl)z*+(?=z|[,+>~])z*+(?P<relation>[,+>~])?+z(?:(\\[a-f0-9]{1,6}+z?+)|(\\[^\r\n\f])|(\\$))z?+)|(\\[^\r\n\f])|(\\$)|(\\z))z*(?P<s1>[-+])?+(?P<a>[0-9]++n?+|n)(?:(?<=n)z*+(?P<s2>[-+])z*+(?P<b>[0-9]++))?+z(?:(?P<value>z)|(?P<split>z*+))ú^z^(?:[ \t]|(?>\n\r|[\n\f\r])|z)*+ú$)ú'ú"ú,ú é   é   é   é   é    é@   é€   é   i   i   iô  )Úmaxsizec           
     ól   — t        j                  | t        | ||||¬«      j                  «       |||«      S )zCached CSS compile.©ÚcustomÚignoreÚflagsÚmax_selectors)ÚcmÚ	SoupSieveÚ	CSSParserÚprocess_selectors)ÚpatternÚ
namespacesrq   rr   rs   rt   s         úW/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/soupsieve/css_parser.pyÚ_cached_css_compiler|   ò   sC   € ô �<‰<ØÜØØØØØ'ô	
÷ Ñ
Ó
ØØØóð ó    c                 ó,   — t         j                  «        y)zPurge the cache.N)r|   Úcache_clear© r}   r{   Ú_purge_cacher�     s   € ô ×#Ñ#Õ%r}   c                ó†   — dd„}| j                  t        «      }|rt        nt        j	                  ||r	| dd «      S | «      S )zs
    Unescape CSS value.

    Strings allow for spanning the value on multiple strings by escaping a new line.
    c                ó6  — | j                  d«      rIt        | j                  d«      dd d«      }|dk(  s|dkD  sd|cxk  rdk  r	n nt        }t        |«      }|S | j                  d«      r| j                  d«      dd }|S | j                  d	«      rd
}|S d}|S )z(Replace with the appropriate substitute.r   Nri   r   r   i Ø  iÿß  rf   é   õ   ï¿½Ú )ÚgroupÚintÚUNICODE_REPLACEMENT_CHARÚchr)ÚmÚ	codepointÚvalues      r{   Úreplacezcss_unescape.<locals>.replace  s¨   € ð �7‰7�1Œ:Ü˜AŸG™G A›J q r˜N¨BÓ/ˆIð ˜Q’Ø˜xÒ'Ø˜YÔ0¨&Õ0ä4�	Ü˜	“NˆEð ˆð �W‰W�QŒZØ—G‘G˜A“J˜q˜r�NˆEð ˆð �W‰W�QŒZØˆEð ˆð ˆEàˆr}   r   éÿÿÿÿ)r‹   ú
Match[str]ÚreturnÚstr)Ú
startswithÚQUOTEDÚRE_CSS_STR_ESCÚ
RE_CSS_ESCÚsub)ÚcontentrŽ   Úquoteds      r{   Úcss_unescaperš     sK   € óð, ×Ñ¤Ó'€FÙ$�N¬*×9Ñ9ØÙˆ��"ˆóð à%,óð r}   c                ó�  ‡— g }t        | «      }|dkD  xr | d   dk(  }|dk(  r|r|j                  d| › �«       nýt        | «      D ]ï  \  }}t        |«      Š‰dk(  r|j                  d«       Œ(d‰cxk  rdk  sn ‰dk(  r|j                  d‰d›d	�«       ŒQ|dk(  s|r*|dk(  r%d
‰cxk  rdk  rn n|j                  d‰d›d	�«       Œ‚‰dv sDd
‰cxk  rdk  s9n d‰cxk  rdk  s,n d‰cxk  rdk  sn ‰dk\  r*t	        ˆfd„t
        D «       «      r|j                  |«       ŒÜ|j                  d|› �«       Œñ dj                  |«      S )zEscape identifier.r   ú-r   ú\r…   é   é   Úxre   é0   é9   )é-   é_   éA   éZ   éa   éz   rl   c              3  óD   •K  — | ]  \  }}|‰cxk  xr |k  nc –— Œ y ­w©Nr€   )Ú.0ÚstartÚendrŒ   s      €r{   ú	<genexpr>zescape.<locals>.<genexpr>K  s#   øè ø€ Ò*nÉÈÐPS¨5°IÖ+DÀ×+DÐ+DÑ*nùs   ƒ r†   )ÚlenÚappendÚ	enumerateÚordÚanyÚNON_ASCII_IDENT_RANGESÚjoin)ÚidentÚstringÚlengthÚ
start_dashÚindexÚcrŒ   s         @r{   Úescaper¼   6  sH  ø€ ð €FÜ�‹Z€FØ˜!‘Ò/  a¡¨C¡€JØ�‚{‘zà�‰˜˜5˜'�lÕ#ä! %Ó(ò 	(‰HˆE�1Ü˜A›ˆIØ˜DÒ Ø—‘˜hÕ'Ø˜)Ô+ tÔ+°	¸TÒ0AØ—‘  9¨Q -¨qÐ1Õ2Ø˜1’*¡°¸²
À$È)ÔB[ÐW[ÕB[Ø—‘  9¨Q -¨qÐ1Õ2à˜\Ñ)¨d°iÔ.GÀ4Ô.GØ˜Ô* dÔ*°¸	Ô0IÀTÔ0IØ˜dÒ"¤sÓ*nÔWmÔ*nÔ'nà—‘˜aÕ à—‘  1 #˜hÕ'ð	(ð  �7‰7�6‹?Ðr}   c                  ó:   — e Zd ZdZdd„Zedd„«       Zd	d„Zd
d„Zy)ÚSelectorPatternúSelector pattern.c                ó.   — || _         || _        d| _        y)úInitialize.N)Únamery   Ú_re_pattern)ÚselfrÂ   ry   s      r{   Ú__init__zSelectorPattern.__init__V  s   € ð ˆŒ	ØˆŒØ37ˆÕr}   c                ó(  — t         5  | j                  €Ut        j                  | j                  t        j
                  t        j                  z  t        j                  z  «      | _        ddd«       | j                  S # 1 sw Y   | j                  S xY w)z1Retrieve the compiled regular expression pattern.N)ÚRE_LOCKrÃ   ÚreÚcompilery   ÚIÚXÚU©rÄ   s    r{   Ú
re_patternzSelectorPattern.re_pattern]  sn   € ô ñ 	PØ×ÑÐ'Ü#%§:¡:¨d¯l©l¼B¿D¹DÄ2Ç4Á4¹KÌ"Ï$É$Ñ<NÓ#O�Ô ÷	Pð ×ÑÐ÷	Pð ×ÑÐús   ‡A"A=Á=Bc                ó   — | j                   S )ú	Get name.)rÂ   rÍ   s    r{   Úget_namezSelectorPattern.get_namef  s   € ð �y‰yÐr}   c                ó:   — | j                   j                  ||«      S )úMatch the selector.)rÎ   Úmatch)rÄ   Úselectorrº   rs   s       r{   rÔ   zSelectorPattern.matchk  s   € ð �‰×$Ñ$ X¨uÓ5Ð5r}   N)rÂ   r’   ry   r’   r‘   ÚNone)r‘   zre.Pattern[str]©r‘   r’   ©rÕ   r’   rº   rˆ   rs   rˆ   r‘   zMatch[str] | None)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__rÅ   ÚpropertyrÎ   rÑ   rÔ   r€   r}   r{   r¾   r¾   S  s(   „ Ùó8ð ò ó ð óô
6r}   r¾   c                  ó(   — e Zd ZdZdd„Zdd„Zdd„Zy)	ÚSpecialPseudoPatternr¿   c                óˆ   — i | _         |D ]/  }|d   } |d   ||d   «      }|d   D ]  }|| j                   |<   Œ Œ1 d| _        y)rÁ   r   r„   rf   r   N)ÚpatternsÚmatched_name)rÄ   rá   ÚprÂ   ry   Úpseudos         r{   rÅ   zSpecialPseudoPattern.__init__t  sd   € ð ˆŒØò 	0ˆAØ�Q‘4ˆDØ�a˜‘d˜4  1¡Ó&ˆGØ˜A™$ò 0�Ø(/�—‘˜fÒ%ñ0ð	0ð 59ˆÕr}   c                óR   — | j                   €dS | j                   j                  «       S )rÐ   r†   )râ   rÑ   rÍ   s    r{   rÑ   zSpecialPseudoPattern.get_name€  s)   € ð ×&Ñ&Ð.ˆrÐP°D×4EÑ4E×4NÑ4NÓ4PÐPr}   c                ó  — d}t         j                  ||«      }|rft        j                  t	        |j                  d«      «      «      }| j                  j                  |«      }|r|j                  |||«      }|r|| _        |S )rÓ   NrÂ   )	ÚRE_PSEUDO_CLASS_SPECIALrÔ   r   Úlowerrš   r‡   rá   Úgetrâ   )rÄ   rÕ   rº   rs   rä   r‹   rÂ   ry   s           r{   rÔ   zSpecialPseudoPattern.match…  sr   € ð ˆÜ#×)Ñ)¨(°EÓ:ˆÙÜ—:‘:œl¨1¯7©7°6«?Ó;Ó<ˆDØ—m‘m×'Ñ'¨Ó-ˆGÙØ Ÿ™ x°¸Ó>�ÙØ(/�DÔ%àˆr}   N)rá   zCtuple[tuple[str, tuple[str, ...], str, type[SelectorPattern]], ...]r‘   rÖ   r×   rØ   )rÙ   rÚ   rÛ   rÜ   rÅ   rÑ   rÔ   r€   r}   r{   rß   rß   q  s   „ Ùó
9óQô
r}   rß   c                  ó4   — e Zd ZdZdd„Zdd„Zd	d„Zd
d„ZeZy)Ú	_Selectorzý
    Intermediate selector class.

    This stores selector data for a compound selector as we are acquiring them.
    Once we are done collecting the data for a compound selector, we freeze
    the data in an object that can be pickled and hashed.
    c                ó,  — |j                  dd«      | _        |j                  dg «      | _        |j                  dg «      | _        |j                  dg «      | _        |j                  dg «      | _        |j                  dg «      | _        |j                  dg «      | _        |j                  d	d«      | _        |j                  d
g «      | _	        |j                  dg «      | _
        |j                  dd«      | _        |j                  dd«      | _        y)rÁ   ÚtagNÚidsÚclassesÚ
attributesÚnthÚ	selectorsÚ	relationsÚrel_typeÚcontainsÚlangrs   r   Úno_matchF)ré   rí   rî   rï   rð   rñ   rò   ró   rô   rõ   rö   rs   r÷   )rÄ   Úkwargss     r{   rÅ   z_Selector.__init__ž  sÜ   € ð +1¯*©*°U¸DÓ*AˆŒØ$Ÿj™j¨°Ó3ˆŒØ"(§*¡*¨Y¸Ó";ˆŒØ6<·j±jÀÈrÓ6RˆŒØ)/¯©°E¸2Ó)>ˆŒØ06·
±
¸;ÈÓ0KˆŒØ*0¯*©*°[À"Ó*EˆŒØ$*§J¡J¨z¸4Ó$@ˆŒØ39·:±:¸jÈ"Ó3MˆŒØ+1¯:©:°f¸bÓ+AˆŒ	Ø Ÿ*™* W¨aÓ0ˆŒ
Ø$Ÿj™j¨°UÓ;ˆ�r}   c                ó¾  — | j                   rt        j                  S t        j                  | j                  t        | j                  «      t        | j                  «      t        | j                  «      t        | j                  «      t        | j                  «      || j                  t        | j                  «      t        | j                  «      | j                  «      S )z,Freeze self with an already frozen relation.)r÷   ÚctÚNullÚSelectorrí   Útuplerî   rï   rð   rñ   rò   rô   rõ   rö   rs   )rÄ   Úrelations     r{   Ú_freezez_Selector._freeze®  s�   € ð �=Š=Ü—7‘7ˆNä—;‘;Ø—‘Ü�d—h‘h“Ü�d—l‘lÓ#Ü�d—o‘oÓ&Ü�d—h‘h“Ü�d—n‘nÓ%ØØ—‘Ü�d—m‘mÓ$Ü�d—i‘iÓ Ø—
‘
óð r}   c                óT  — g }| g}|rU|j                  «       }|j                  |«       |j                  rn'|j                  t	        |j
                  «      «       |rŒUt        j                  «       }t	        |«      D ])  }|j                  |«      }t        j                  |g«      }Œ+ S )a5  
        Freeze self.

        Relations form a chain where each selector's first relation is the next link and any
        remaining relations are carried down to follow it. As the far end of the chain must be
        frozen first, flatten the chain and then freeze it in reverse to avoid recursion.
        )	Úpopr°   r÷   ÚextendÚreversedró   rú   ÚSelectorListrÿ   )rÄ   ÚchainÚpendingÚselrþ   Úfrozens         r{   Úfreezez_Selector.freezeÂ  s”   € ð "$ˆØ�&ˆÙØ—+‘+“-ˆCØ�L‰L˜ÔØ�|Š|ØØ�N‰Nœ8 C§M¡MÓ2Ô3ò ô —?‘?Ó$ˆÜ˜E“?ò 	1ˆCØ—[‘[ Ó*ˆFÜ—‘¨ xÓ0‰Hð	1ð ˆr}   c                ó@  — d| j                   ›d| j                  ›d| j                  ›d| j                  ›d| j                  ›d| j
                  ›d| j                  ›d| j                  ›d	| j                  ›d
| j                  ›d| j                  ›d| j                  ›d�S )zString representation.z_Selector(tag=z, ids=z
, classes=z, attributes=z, nth=z, selectors=z, relations=z, rel_type=z, contains=z, lang=z, flags=z, no_match=r\   )rí   rî   rï   rð   rñ   rò   ró   rô   rõ   rö   rs   r÷   rÍ   s    r{   Ú__str__z_Selector.__str__Ú  s¨   € ð ˜TŸX™X˜L¨¨t¯x©x¨l¸*ÀTÇ\Á\ÐDTÐTaÐbf×bqÑbqÐatð uØ—8‘8�,˜l¨4¯>©>Ð*<¸LÈÏÉÐHZð [ØŸ™Ð(¨°D·M±MÐ3DÀGÈDÏIÉIÈ=ÐX`Ðae×akÑakÐ`nð oØŸ™Ð(¨ð+ð	
r}   N)rø   r   r‘   rÖ   )rþ   úct.SelectorListr‘   úct.Selector | ct.SelectorNull)r‘   r  r×   )	rÙ   rÚ   rÛ   rÜ   rÅ   rÿ   r	  r  Ú__repr__r€   r}   r{   rë   rë   •  s"   „ ñó<ó ó(ó0
ð �Hr}   rë   c                  ó6   — e Zd ZdZ	 d	 	 	 	 	 	 	 	 	 dd„Zdd„Zy)Ú_SelectorContextzp
    Parsing state for a selector list.

    Context are created for each nesting level to avoid recursion.
    Nc                óì  — t        «       | _        g | _        g | _        d| _        dt
        z   | _        || _        || _        || _	        t        |t        z  «      | _        t        |t        z  «      | _        t        |t        z  «      | _        t        |t"        z  «      | _        t        |t&        z  «      | _        t        |t*        z  «      | _        t        |t.        z  «      | _        t        |t2        z  «      | _        t        |t6        z  «      | _        t        |t:        z  «      | _        t        |t>        z  «      | _         | j                   r$| j                  jC                  t        «       «       yy)rÁ   Fr_   N)"rë   r  rò   ró   Úhas_selectorÚWS_COMBINATORrô   rº   ÚcountÚon_closeÚboolÚFLG_OPENÚis_openÚ
FLG_PSEUDOÚ	is_pseudoÚFLG_RELATIVEÚis_relativeÚFLG_NOTÚis_notÚFLG_HTMLÚis_htmlÚFLG_DEFAULTÚ
is_defaultÚFLG_INDETERMINATEÚis_indeterminateÚFLG_IN_RANGEÚis_in_rangeÚFLG_OUT_OF_RANGEÚis_out_of_rangeÚFLG_PLACEHOLDER_SHOWNÚis_placeholder_shownÚFLG_FORGIVEÚ
is_forgiver°   )rÄ   rs   rº   r  r  s        r{   rÅ   z_SelectorContext.__init__î  s,  € ô “;ˆŒØ*,ˆŒØ*,ˆŒØ!ˆÔØœmÑ+ˆŒØˆŒ
ØˆŒ
à ˆŒô ˜E¤HÑ,Ó-ˆŒÜ˜e¤jÑ0Ó1ˆŒÜ ¬Ñ 4Ó5ˆÔÜ˜5¤7™?Ó+ˆŒÜ˜E¤HÑ,Ó-ˆŒÜ˜u¤{Ñ2Ó3ˆŒÜ $ UÔ->Ñ%>Ó ?ˆÔÜ ¬Ñ 4Ó5ˆÔÜ# EÔ,<Ñ$<Ó=ˆÔÜ$(¨Ô1FÑ)FÓ$GˆÔ!Ü˜u¤{Ñ2Ó3ˆŒð ×ÒØ�N‰N×!Ñ!¤)£+Õ.ð r}   c                óJ   — dD ]  }t        | |«      sŒt        d|› d�«       Œ  y)zPrint out useful debug stuff.)r  r  r  r  r   r"  r$  r&  r(  r*  r,  z    z: TrueN)ÚgetattrÚprint)rÄ   rÂ   s     r{   Údebugz_SelectorContext.debug  s0   € ð
ò 	+ˆDô �t˜TÕ"Ü˜˜T˜F &Ð)Õ*ñ	+r}   rª   )
rs   rˆ   rº   rˆ   r  rˆ   r  ú(Callable[[ct.SelectorList], None] | Noner‘   rÖ   ©r‘   rÖ   )rÙ   rÚ   rÛ   rÜ   rÅ   r0  r€   r}   r{   r  r  ç  sH   „ ñð >Bð"/àð"/ð ð"/ð ð	"/ð
 ;ð"/ð 
ó"/ôH+r}   r  c                  ó&   — e Zd ZU dZded<   ded<   y)Ú
CSSPatternz<A CSS pattern that hasn't been processed by `CSSParser` yet.r’   rÕ   rˆ   rs   N)rÙ   rÚ   rÛ   rÜ   Ú__annotations__r€   r}   r{   r4  r4    s   … áFàƒMØ„Jr}   r4  c                  ó    — e Zd ZdZdd„Zdd„Zy)ÚPseudoSelectorMapzPseudo selector map.c                ó"   — || j                   |<   y)z	Set item.N)Údata©rÄ   Úkeyr�   s      r{   Ú__setitem__zPseudoSelectorMap.__setitem__(  s   € ð ˆ�	‰	�#Šr}   c                óø   — t         5  | j                  |   }t        |t        «      r>t	        |j
                  «      j                  |j                  ¬«      }|| j                  |<   ddd«       |S # 1 sw Y   S xY w)z	Get item.)rs   N)ÚSEL_LOCKr9  Ú
isinstancer4  rw   rÕ   rx   rs   r:  s      r{   Ú__getitem__zPseudoSelectorMap.__getitem__-  si   € ô ñ 	'Ø—I‘I˜c‘NˆEÜ˜%¤Ô,Ü! %§.¡.Ó1×CÑCÈ%Ï+É+ÐCÓV�Ø!&�—	‘	˜#‘÷		'ð ˆ÷	'ð ˆús   ‡AA/Á/A9N)r;  r’   r�   zCSSPattern | ct.SelectorListr‘   rÖ   )r;  r’   r‘   r  )rÙ   rÚ   rÛ   rÜ   r<  r@  r€   r}   r{   r7  r7  %  s   „ Ùóô
	r}   r7  zhtml|*:is(a, area)[href]z\
    html|*:is(input[type=checkbox], input[type=radio])[checked], html|option[selected]
    z°
    :checked,

    /*
    This pattern must be at the end.
    Special logic is applied to the last selector.
    */
    html|form html|*:is(button, input)[type="submit"]
    aF  
    html|input[type="checkbox"][indeterminate],
    html|input[type="radio"]:is(:not([name]), [name=""]):not([checked]),
    html|progress:not([value]),

    /*
    This pattern must be at the end.
    Special logic is applied to the last selector.
    */
    html|input[type="radio"][name]:not([name='']):not([checked])
    aš  
    html|*:is(input:not([type=hidden]), button, select, textarea, fieldset, optgroup, option, fieldset)[disabled],
    html|optgroup[disabled] > html|option,
    html|fieldset[disabled] > html|*:is(input:not([type=hidden]), button, select, textarea, fieldset),
    html|fieldset[disabled] >
        html|*:not(legend:nth-of-type(1)) html|*:is(input:not([type=hidden]), button, select, textarea, fieldset)
    z|
    html|*:is(input:not([type=hidden]), button, select, textarea, fieldset, optgroup, option, fieldset):not(:disabled)
    z,html|*:is(input, textarea, select)[required]z2html|*:is(input, textarea, select):not([required])aW  
    html|input:is(
        :not([type]),
        [type=""],
        [type=text],
        [type=search],
        [type=url],
        [type=tel],
        [type=email],
        [type=password],
        [type=number]
    )[placeholder]:not([placeholder='']):is(:not([value]), [value=""]),
    html|textarea[placeholder]:not([placeholder=''])
    a  
    html|*:is(
        textarea,
        input:is(
            :not([type]),
            [type=""],
            [type=text],
            [type=search],
            [type=url],
            [type=tel],
            [type=email],
            [type=number],
            [type=password],
            [type=date],
            [type=datetime-local],
            [type=month],
            [type=time],
            [type=week]
        )
    ):not([readonly], :disabled),
    html|*:is([contenteditable=""], [contenteditable="true" i])
    zhtml|*:not(:read-write)zó
    html|input:is(
        [type="date"],
        [type="month"],
        [type="week"],
        [type="time"],
        [type="datetime-local"],
        [type="number"],
        [type="range"]
    ):is(
        [min],
        [max]
    )
    z html|*:is(details, dialog)[open]zhtml|*:is(video, audio)[muted]z*|*c                  óÞ  — e Zd ZdZ ede«       eddeefddeefdde	efd	d
e
efddeeff«       ede«       ede«       ede«       ede«       ede«       ede«       ede«       ede«       ede«       ede«      fZ ei de“de“de“de“de“de“de“de“de“d e “d!e!“d"e"“d#e#“d$e$“d%e%“d&e&“d'e'“«      Z(d(d(d)e)d*œ	 	 	 	 	 	 	 	 	 	 	 d>d+„Z*d?d@d,„Z+dAd-„Z,dAd.„Z-dAd/„Z.	 	 	 	 	 	 	 	 	 	 	 	 dBd0„Z/	 	 	 	 	 	 	 	 dCd1„Z0	 	 dD	 	 	 	 	 	 	 	 	 dEd2„Z1	 dF	 	 	 	 	 	 	 dGd3„Z2	 	 	 	 	 	 	 	 	 	 	 	 	 	 dHd4„Z3	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dId5„Z4dAd6„Z5dAd7„Z6dAd8„Z7dAd9„Z8	 	 dJ	 	 	 	 	 	 	 dKd:„Z9dLd;„Z:dMd<„Z;dJdNd=„Z<y()Orw   zParse CSS selectors.Úpseudo_closeÚpseudo_contains)rR   rS   rT   Úpseudo_nth_child)rX   rZ   Úpseudo_nth_type)rY   r[   Úpseudo_lang)rW   Ú
pseudo_dir)rV   Úpseudo_class_customÚpseudo_classÚpseudo_elementÚampÚat_ruleÚidÚclassrí   Ú	attributeÚcombiner   r%   r!   r"   r3   r&   r$   r)   r   r   r(   r*   r-   r'   r1   r4   ú
<nth-of-s>Nr   rp   c               ó  — |j                  dd«      | _        || _        | j                  t        j                  z  | _        | j                  t        j                  z  | _        || _        t        |€g n|«      | _
        d| _        || _        y)rÁ   ú r…   Nr   )rŽ   ry   rs   r   ÚDEBUGr0  ÚNOSTRICTÚnostrictrq   Ú	frozensetrr   r  Úmaxsel)rÄ   rÕ   rq   rr   rs   rt   s         r{   rÅ   zCSSParser.__init__  sn   € ð  ×'Ñ'¨°Ó9ˆŒØˆŒ
Ø—Z‘Z¤$§*¡*Ñ,ˆŒ
ØŸ
™
¤T§]¡]Ñ2ˆŒØˆŒÜ f n¡¸&ÓAˆŒØˆŒ
Ø#ˆ�r}   c                ó�   — | xj                   |z  c_         | j                   | j                  kD  rt        d| j                  › �«      ‚y)z!Check the current selector count.z/Selector exceeds pseudo-class nesting limit of N)r  rX  Ú
ValueError)rÄ   Ú	increments     r{   Úincrement_countzCSSParser.increment_count  s>   € ð 	�
Š
�iÑ�
Ø�:‰:˜Ÿ™Ò#ÜÐNÈtÏ{É{ÈmÐ\Ó]Ð]ð $r}   c                óÂ  — |j                  d«      }|j                  d«      r$t        j                  |j                  d«      «      nd}|j                  d«      rt        |j                  d«      dd «      nd}t        |j                  d«      «      }d}d}	d}
d}|r)|d	k(  rt        j
                  nd
t        j                  z  }nLt        j                  |«      dk(  r$t        j
                  t        j                  z  }d}nt        j                  }|rt        |j                  d«      «      }
|sd}�nÒ|j                  d«      r4|
sdnt	        j                  |
«      }
t	        j                  d|
z  |«      }�n�|j                  d«      r4|
sdnt	        j                  |
«      }
t	        j                  d|
z  |«      }�nH|j                  d«      r4|
sdnt	        j                  |
«      }
t	        j                  d|
z  |«      }�n|j                  d«      rH|
rt        j                  |
«      rdnt	        j                  |
«      }
t	        j                  d|
z  |«      }nª|j                  d«      r-t	        j                  dt	        j                  |
«      z  |«      }nl|j                  d«      r/t	        j                  dt	        j                  |
«      z  |«      }d}n,t	        j                  dt	        j                  |
«      z  |«      }|r!|rt	        j                  |j                  «      }	t        j                  ||||	|«      }|j                  j!                  |«       d}|S )z8Create attribute selector from the returned regex match.ÚcmpÚcaseNÚattr_nsr�   r†   Ú	attr_nameFÚir   ÚtypeTr�   r`   z(?!)z^%s.*ra   z.*?%s$Ú*z.*?%s.*ú~z7.*?(?:(?<=^)|(?<=[ \t\r\n\f]))%s(?=(?:[ \t\r\n\f]|$)).*r]   z^%s(?:-.*)?$ú!z
^(?!%s).*$z^%s$)r‡   r   rè   rš   rÈ   rÊ   ÚDOTALLr“   r¼   rÉ   ÚRE_WSÚsearchry   rú   ÚSelectorAttributerð   r°   )rÄ   r  r‹   r  Úopr_  ÚnsÚattrÚis_typeÚpattern2r�   Úinversers   ry   Úsel_attrs                  r{   Úparse_attribute_selectorz"CSSParser.parse_attribute_selector  s–  € ð �W‰W�U‹^ˆØ./¯g©g°f¬oŒt�z‰z˜!Ÿ'™' &›/Ô*À4ˆØ67·g±g¸iÔ6HŒ\˜!Ÿ'™' )Ó,¨S¨bÐ1Ô2ÈbˆÜ˜AŸG™G KÓ0Ó1ˆØˆØˆØˆØˆáØ! Sš[”R—T’T¨a´2·9±9Ñ<‰EÜ�Z‰Z˜Ó Ò'Ü—D‘Dœ2Ÿ9™9Ñ$ˆEØ‰Gä—I‘IˆEáÜ  §¡¨Ó!1Ó2ˆEáàŠGØ�]‰]˜3Ôñ $)‘G¬b¯i©i¸Ó.>ˆEÜ—j‘j ¨EÑ!1°5Ó9ŠGØ�]‰]˜3Ôñ $)‘G¬b¯i©i¸Ó.>ˆEÜ—j‘j ¨UÑ!2°EÓ:ŠGØ�]‰]˜3Ôñ $)‘G¬b¯i©i¸Ó.>ˆEÜ—j‘j ¨eÑ!3°UÓ;ŠGØ�]‰]˜3Ôñ $)¬E¯L©L¸Ô,?‘GÄRÇYÁYÈuÓEUˆEÜ—j‘jÐ![Ð^cÑ!cÐejÓk‰GØ�]‰]˜3Ôä—j‘j ´2·9±9¸UÓ3CÑ!CÀUÓK‰GØ�]‰]˜3Ôä—j‘j ´·±¸5Ó1AÑ!AÀ5ÓIˆGØ‰Gô —j‘j ¬2¯9©9°UÓ+;Ñ!;¸UÓCˆGá‘wÜ—z‘z '§/¡/Ó2ˆHô ×'Ñ'¨¨b°'¸8ÀWÓMˆØ�‰×Ñ˜hÔ'àˆØÐr}   c                óÔ   — |j                  d«      rt        |j                  d«      dd «      nd}t        |j                  d«      «      }t        j                  ||«      |_        d}|S )z#Parse tag pattern from regex match.Útag_nsNr�   Útag_nameT)r‡   rš   rú   ÚSelectorTagrí   )rÄ   r  r‹   r  Úprefixrí   s         r{   Úparse_tag_patternzCSSParser.parse_tag_patternb  s\   € ð :;¿¹ÀÔ9J”˜aŸg™g hÓ/°°Ð4Ô5ÐPTˆÜ˜1Ÿ7™7 :Ó.Ó/ˆÜ—.‘.  fÓ-ˆŒØˆØÐr}   c                óœ  — t        j                  t        |j                  d«      «      «      }| j                  �| j                  j                  |«      nd}|€;t        d|› d|j                  d«      › �| j                  |j                  d«      «      ‚| j                  |j                  «       |j                  j                  |«       d}|S )zÔ
        Parse custom pseudo class alias.

        Compile custom selectors as we need them. When compiling a custom selector,
        set it to `None` in the dictionary so we can avoid an infinite loop.
        rÂ   NzUndefined custom selector 'z' found at position r   T)r   rè   rš   r‡   rq   ré   r	   r­   ry   r\  r  rò   r°   )rÄ   r  r‹   r  rä   rÕ   s         r{   Úparse_pseudo_class_customz#CSSParser.parse_pseudo_class_customk  s¬   € ô —‘œL¨¯©°«Ó9Ó:ˆØ.2¯k©kÐ.E�4—;‘;—?‘? 6Ô*È4ˆØÐÜ%Ø-¨f¨XÐ5IÈ!Ï%É%ÐPQË(ÈÐTØ—‘Ø—‘�a“óð ð 	×Ñ˜XŸ^™^Ô,Ø�‰×Ñ˜XÔ&ØˆØÐr}   c                ó¼  — d}d}t        j                  t        |j                  d«      «      «      }|j                  d«      rd}|rC|t        v r;| j                  ||j                  d«      |j                  j                  |«      }d}�nÏ|�s'|t        v �r|dk(  r%|xj                  t        j                  z  c_
        �nñ|dk(  r'|xj                  t        j                  z  c_
        d}�nÅ|d	k(  r%|xj                  t        j                  z  c_
        �n›|d
k(  r%|xj                  t        j                  z  c_
        �nq|| j                   v rG| j                   |   }	| j#                  |	j$                  «       |j                  j                  |	«       �n|dk(  rG|j&                  j                  t        j(                  dddddt        j*                  «       «      «       �nÐ|dk(  rG|j&                  j                  t        j(                  dddddt        j*                  «       «      «       �n„|dk(  rG|j&                  j                  t        j(                  dddddt        j*                  «       «      «       �n8|dk(  rF|j&                  j                  t        j(                  dddddt        j*                  «       «      «       ní|dk(  rr|j&                  j-                  t        j(                  dddddt        j*                  «       «      t        j(                  dddddt        j*                  «       «      g«       nv|dk(  rq|j&                  j-                  t        j(                  dddddt        j*                  «       «      t        j(                  dddddt        j*                  «       «      g«       d}n¥|r3|t.        v r+| j                  ||j                  d«      «      }d|_        d}np|s|t2        v r
d|_        d}n\|t4        v r*t7        d|› d�| j8                  |j;                  d«      «      ‚t7        d|› d�| j8                  |j;                  d«      «      ‚|||fS )zŠ
        Parse pseudo class.

        If the pseudo-class opens a selector list, a new context is returned to parse its contents.
        NFrÂ   ÚopenTr   r   r#   r    r   r.   r   r+   r2   r/   r,   r0   z!Invalid syntax for pseudo class 'rb   z¢' was detected as a pseudo-class and is either unsupported or invalid. If the syntax was not intended to be recognized as a pseudo-class, please escape the colon.)r   rè   rš   r‡   ÚPSEUDO_COMPLEXÚparse_pseudo_openr­   rò   r°   ÚPSEUDO_SIMPLErs   rú   ÚSEL_ROOTÚSEL_DEFINEDÚ	SEL_SCOPEÚ	SEL_EMPTYÚPSEUDO_SELECTORSr\  r  rñ   ÚSelectorNthr  r  ÚPSEUDO_COMPLEX_NO_MATCHr÷   ÚPSEUDO_SIMPLE_NO_MATCHÚPSEUDO_SUPPORTEDr	   ry   r¬   )
rÄ   r  r‹   r  r   r  ÚcontextÚcomplex_pseudorä   Úpseudo_selectors
             r{   Úparse_pseudo_classzCSSParser.parse_pseudo_class�  sk  € ð ˆØˆÜ—‘œL¨¯©°«Ó9Ó:ˆØ�7‰7�6Œ?Ø!ˆNÙ˜f¬Ñ6Ø×,Ñ,¨V°Q·U±U¸1³X¸s¿}¹}×?SÑ?SÐU`ÓaˆGØŠLÚ F¬mÒ$;Ø˜Ò Ø—	’	œRŸ[™[Ñ(—	Ø˜:Ò%Ø—	’	œRŸ^™^Ñ+•	Ø’Ø˜8Ò#Ø—	’	œRŸ\™\Ñ)—	Ø˜8Ò#Ø—	’	œRŸ\™\Ñ)—	Ø˜4×0Ñ0Ñ0Ø"&×"7Ñ"7¸Ñ"?�Ø×$Ñ$ _×%:Ñ%:Ô;Ø—‘×$Ñ$ _Ö5Ø˜>Ò)Ø—‘—‘œrŸ~™~¨a°¸¸5À%ÌÏÉÓIZÓ[Ö\Ø˜=Ò(Ø—‘—‘œrŸ~™~¨a°¸¸5À$ÌÏÉÓHYÓZÖ[ØÐ+Ò+Ø—‘—‘œrŸ~™~¨a°¸¸4ÀÌÏÉÓHYÓZÖ[Ø˜?Ò*Ø—‘—‘œrŸ~™~¨a°¸¸4ÀÄrÇÁÓGXÓYÕZØ˜=Ò(Ø—‘—‘äŸ™ q¨%°°E¸5Ä"Ç/Á/ÓBSÓTÜŸ™ q¨%°°E¸4ÄÇÁÓARÓSðõð ˜?Ò*Ø—‘—‘äŸ™ q¨%°°D¸%ÄÇÁÓARÓSÜŸ™ q¨%°°D¸$ÄÇÁÓ@QÓRðôð  ‰LÙ Ô*AÑ AØ×,Ñ,¨V°Q·U±U¸1³XÓ>ˆGØˆCŒLØ‰LÙ FÔ.DÑ$DØˆCŒLØ‰LØÔ'Ñ'Ü%Ø3°F°8¸1Ð=Ø—‘Ø—‘˜“
óð ô &Ø�F�8ð nð nà—‘Ø—‘˜“
ó	ð ð ˜W gÐ-Ð-r}   c                ót  ‡‡‡‡‡— d}|j                  «       }|j                  d«      rd}nd}t        j                  t	        |d   «      «      |d<   t        j                  |j                  d|z   «      «      }|dk(  rdŠd	Šd
Š�n|dk(  rdŠdŠd
Š�nt        t        t           t        j                  |«      «      }|j                  d«      r|j                  d«      dk(  rdnd}	d}
|j                  d«      }|j                  d«      Š|j                  d«      r|	dz  }	n‰r	|	|dd z  }	n|	|z   }
d}	|j                  d«      r|j                  d«      dk(  rd}
|j                  d«      r|
|j                  d«      z  }
|	rt        |	d«      nd	Š|
rt        |
d«      nd	Š|d   }|dk(  rv|dk(  Šdˆˆˆˆˆfd„}|j                  d«      r#| j                  ||j                  d	«      |«      }nÈ| j                   d   }| j#                  |j$                  «        ||«       n•|dk(  rF‰j&                  j)                  t+        j,                  ‰‰‰d
dt+        j.                  «       «      «       nJ|dk(  rE‰j&                  j)                  t+        j,                  ‰‰‰d
d
t+        j.                  «       «      «       d
}||fS )zn
        Parse `nth` pseudo.

        If `of S` is specified, a new context is returned to parse `S`.
        NrD  Ú_childÚ_typerÂ   rñ   Úevenrf   r   TÚoddr   Ús1rœ   r†   ÚaÚnÚ1r�   Ús2Úbé
   rZ   c           
     ól   •— ‰j                   j                  t        j                  ‰‰‰d‰| «      «       y)z*Append to this selector's `nth` attribute.FN)rñ   r°   rú   r…  )Únth_selÚlastr’  r–  r  Úvars    €€€€€r{   Ú
append_nthz.CSSParser.parse_pseudo_nth.<locals>.append_nth	  s(   ø€ ð —‘—‘œrŸ~™~¨b°#°r¸5À$ÈÓPÕQr}   ÚofrQ  rY   Fr[   )rš  r  r‘   rÖ   )Ú	groupdictré   r   rè   rš   r   r
   r’   ÚRE_NTHrÔ   r‡   Úendswithr“   rˆ   r~  r­   r„  r\  r  rñ   r°   rú   r…  r  )rÄ   r  r‹   r  r‰  ÚmdictÚpostfixr˜   Ú	nth_partsÚ_s1Ú_s2r“  Ú
pseudo_selr�  rš  r›  r’  r–  rœ  s    `             @@@@r{   Úparse_pseudo_nthzCSSParser.parse_pseudo_nthÓ  sq  ü€ ð ˆØ—‘“ˆØ�9‰9Ð'Ô(Ø‰GàˆGÜŸ
™
¤<°°f±Ó#>Ó?ˆˆf‰Ü—*‘*˜UŸY™Y u¨w¡Ó7Ó8ˆØ�fÒàˆBØˆBØŠCØ˜ÒàˆBØˆBØŠCäœU¤3™Z¬¯©°gÓ)>Ó?ˆIØ"Ÿ™¨Ô.°9·?±?À4Ó3HÈCÒ3O‘#ÐUWˆCØˆCØ—‘ Ó$ˆAØ—*‘*˜S“/ˆCØ�|‰|˜CÔ Ø�s‘
‘ÙØ�q˜˜"�v‘‘à˜A‘g�Ø�Ø�‰˜tÔ$¨¯©¸Ó)>À#Ò)EØ�Ø�‰˜sÔ#Ø�y—‘ sÓ+Ñ+�Ù!$”�S˜"”¨!ˆBÙ!$”�S˜"”¨!ˆBà˜6‘]ˆ
Ø�hÒØÐ!2Ñ2ˆD÷Rñ Rð
 �w‰w�tŒ}à×0Ñ0°¸Q¿U¹UÀ1»XÀzÓR‘ð ×/Ñ/°Ñ=�Ø×$Ñ$ W§]¡]Ô3Ù˜7Õ#à˜^Ò+Ø—‘—‘œrŸ~™~¨b°#°r¸4ÀÌÏÉÓHYÓZÕ[ØÐ2Ò2Ø—‘—‘œrŸ~™~¨b°#°r¸4ÀÄrÇÁÓGXÓYÔZØˆØ˜WÐ$Ð$r}   c                óè   — t         t        z  }|dk(  r
|t        z  }nD|dk(  r2|r&| j                  st	        d|› �| j
                  |«      ‚|t        z  }n|dv r	|t        z  }| j                  |||«      S )z7Create a new context for nested pseudo-class selectors.rP   rO   z7:has() was found to be nested under :has() at position )rQ   rN   )	r  r  r  rV  r	   ry   r  r+  Úcreate_context)rÄ   rÂ   rº   r  r  rs   s         r{   r~  zCSSParser.parse_pseudo_open  s„   € ô œXÑ%ˆØ�6Š>Ø”WÑ‰EØ�VŠ^Ù 4§=¢=Ü)ØMÈeÈWÐUØ—L‘LØóð ð
 ”\Ñ!‰EØÐ&Ñ&Ø”[Ñ ˆEà×"Ñ" 5¨%°Ó:Ð:r}   c                ón   — t        ||| j                  |«      }| j                  r|j                  «        |S )zCreate a new selector context.)r  r  r0  )rÄ   rs   rº   r  r‰  s        r{   rª  zCSSParser.create_context7  s-   € ô # 5¨%°·±¸XÓFˆØ�:Š:Ø�M‰MŒOØˆr}   c                ó0  — |j                  d«      }|st        }|t        k(  rh|st        d|› d|› d�| j                  |«      ‚||_        |d   j                  j                  |«       dt        z   }|j                  t        «       «       n||r2| j                  r&||_        |d   j                  j                  |«       nC|rt        d|› d�| j                  |«      ‚|d	d
 t        k7  rt        d|› �| j                  |«      ‚d|z   }t        «       }d}|||fS )úParse combinator tokens.rþ   úThe combinator 'ú' at position ú , must have a selector before itr�   r_   zJUsing strict rules as proposed by CSS, the complex selectors at postition z is not allowedr   Nz%The multiple combinators at position F)
r‡   r  ÚCOMMA_COMBINATORr	   ry   rô   ró   r°   rë   rV  )rÄ   r  r‹   r  rò   rô   rº   Ú
combinators           r{   Úparse_has_combinatorzCSSParser.parse_has_combinatorD  s4  € ð —W‘W˜ZÓ(ˆ
ÙÜ&ˆJØÔ)Ò)ÙÜ)Ø& z l°.ÀÀÐGgÐhØ—L‘LØóð ð
 $ˆCŒLØ�b‰M×#Ñ#×*Ñ*¨3Ô/Øœ]Ñ*ˆHØ×ÑœY›[Õ)á §¢à'�”Ø˜"‘×'Ñ'×.Ñ.¨sÕ3ÙÜ)Ø`ÐafÐ`gÐgvÐwØ—L‘LØóð ð
 ˜!˜"�¤Ò.ô *Ø;¸E¸7ÐCØ—L‘LØóð ð ˜ZÑ'ˆHä‹kˆØˆØ˜S (Ð*Ð*r}   c	                ó   — |j                  d«      }	|	st        }	|sH|r	|	t        k7  rt        d|	› d|› d�| j                  |«      ‚|	t        k(  r²| j                  «        |dd…= nœ|	t        k(  r[|j                  s|st        j                  dd«      |_        |j                  j                  |«       |j                  |«       |dd…= n8|j                  j                  |«       |	|_        |dd…= |j                  |«       t        «       }d}||fS )r­  rþ   r®  r¯  r°  Nrd  F)r‡   r  r±  r	   ry   r\  rí   rú   rv  ró   r  r°   rô   rë   )
rÄ   r  r‹   r  rò   ró   r  r,  rº   r²  s
             r{   Úparse_combinatorzCSSParser.parse_combinator{  s   € ð —W‘W˜ZÓ(ˆ
ÙÜ&ˆJÙÙ Ô/?Ò!?Ü)Ø& z l°.ÀÀÐGgÐhØ—L‘LØóð ð Ô-Ò-Ø×$Ñ$Ô&Øša‘LàÔ-Ò-Ø—w’w¡yä Ÿn™n¨S°$Ó7�C”GØ—‘×$Ñ$ YÔ/Ø× Ñ  Ô%Øša‘Là—‘×$Ñ$ YÔ/Ø)�”Øša�LØ× Ñ  Ô%ä‹kˆØˆà˜SÐ Ð r}   c                óò   — |j                  d«      }|j                  d«      r+|j                  j                  t	        |dd «      «       d}|S |j
                  j                  t	        |dd «      «       d}|S )zParse HTML classes and ids.r   ú.r   NT)r‡   r“   rï   r°   rš   rî   )rÄ   r  r‹   r  rÕ   s        r{   Úparse_class_idzCSSParser.parse_class_idª  sq   € ð —7‘7˜1“:ˆØ×Ñ˜sÔ#Ø�K‰K×Ñœ|¨H°Q°R¨LÓ9Ô:ð ˆØÐð �G‰G�N‰Nœ<¨°°¨Ó5Ô6ØˆØÐr}   c                óÈ  — t        j                  t        |j                  d«      «      «      }|dk(  rt	        j
                  dt        «       |dk(  }t        j                  |j                  d«      «      D �cg c]-  }|j                  d«      st        |j                  d«      «      ‘Œ/ }}|j                  j                  t        j                  ||«      «       d}|S c c}w )	zParse contains.rÂ   rR   z\The pseudo class ':contains' is deprecated, ':-soup-contains' should be used moving forward.rT   ÚvaluesÚsplitr�   T)r   rè   rš   r‡   ÚwarningsÚwarnÚFutureWarningÚ	RE_VALUESÚfinditerrõ   r°   rú   ÚSelectorContains)rÄ   r  r‹   r  rä   Úcontains_ownÚtokenrá   s           r{   Úparse_pseudo_containszCSSParser.parse_pseudo_containsµ  sÄ   € ô —‘œL¨¯©°«Ó9Ó:ˆØ�[Ò Ü�M‰MØnÜôð Ð!6Ñ6ˆô #×+Ñ+¨A¯G©G°HÓ,=Ó>ö
àØ—;‘;˜wÔ'ô ˜Ÿ™ WÓ-Õ.ð
ˆð 
ð
 	�‰×ÑœB×/Ñ/°¸,ÓGÔHØˆØÐùò
s   Á82Cc                ó$  — t         j                  |j                  d«      «      D �cg c]-  }|j                  d«      st        |j                  d«      «      ‘Œ/ }}|j                  j                  t        j                  |«      «       d}|S c c}w )zParse pseudo language.rº  r»  r�   T)r¿  rÀ  r‡   rš   rö   r°   rú   ÚSelectorLang)rÄ   r  r‹   r  rÃ  rá   s         r{   Úparse_pseudo_langzCSSParser.parse_pseudo_langÈ  sz   € ô
 #×+Ñ+¨A¯G©G°HÓ,=Ó>ö
àØ—;‘;˜wÔ'ô ˜Ÿ™ WÓ-Õ.ð
ˆð 
ð
 	�‰�‰œŸ™¨Ó1Ô2ØˆàÐùò
s   §2Bc                óÂ   — t        j                  |j                  d«      «      dk(  rt        j                  nt        j
                  }|xj                  |z  c_        d}|S )zParse pseudo direction.ÚdirÚltrT)r   rè   r‡   rú   ÚSEL_DIR_LTRÚSEL_DIR_RTLrs   )rÄ   r  r‹   r  r�   s        r{   Úparse_pseudo_dirzCSSParser.parse_pseudo_dirÕ  sD   € ô #'§*¡*¨Q¯W©W°U«^Ó"<ÀÒ"E”—’Ì2Ï>É>ˆØ�	Š	�UÑ�	ØˆØÐr}   c                óš  — | j                  ||«      }g }|D �]g  \  }}d}|dvr| j                  «        | j                  rœt        j	                  |j                  d«      «      }	|	�v|	j                  d«      j                  «       | j                  v rKt        d|	j                  d«      › d|j                  d«      › d�| j                  |j                  d«      «      ‚|dk(  rt        d	|j                  d«      › �«      ‚|d
k(  r6|j                  xj                  t        j                  z  c_        d|_        �n|dk(  r.| j!                  |j                  ||j                  «      |_        �næ|dk(  rM| j#                  |j                  ||j                  |j$                  |j&                  «      \  |_        |_        }�n”|dk(  rt        d|j                  d«      › �«      ‚|dk(  r.| j)                  |j                  ||j                  «      |_        �n?|dv r1| j+                  |j                  ||j                  «      \  |_        }�n
|dk(  r.| j-                  |j                  ||j                  «      |_        �n×|dk(  r5| j/                  |j                  ||j                  «      |_        d|_        �n�|dk(  rå|j                  sU|j0                  s8t        d|j                  d«      › �| j                  |j                  d«      «      ‚d|j                  _        |j4                  s8t        d|j                  d«      › �| j                  |j                  d«      «      ‚| j7                  |«      }
|j8                  �|j9                  |
«       |j;                  «       }�Œˆ|dk(  rÕ|j&                  r]| j=                  |j                  ||j                  |j>                  |j@                  |jB                  «      \  |_        |_        |_         �nE| jE                  |j                  ||j                  |j>                  |jF                  |jH                  |j0                  |jB                  «      \  |_        |_        nÙ|dk(  r-| jK                  |j                  ||j                  «      |_        n§|dk(  rr|j                  r9t        d|j                  d«      › d�| j                  |j                  d«      «      ‚| jM                  |j                  ||j                  «      |_        n0|dv r,| jO                  |j                  ||j                  «      |_        |jQ                  d«      |_!        |€�ŒU|jS                  |«       |}�Œj |j4                  r.t        d|jB                  › �| j                  |jB                  «      ‚| j7                  |«      S )zÓ
        Parse selectors.

        Pseudo-classes that open a nested selector list push a new context onto a stack,
        and closing them pops back to the parent context, so nesting does not recurse.
        N)rP  rB  r   rÂ   zThe selector 'r¯  z, has been disallowedrL  zAt-rules found at position rK  TrH  rI  rJ  z!Pseudo-element found at position rC  )rE  rD  rF  rG  rB  ú Expected a selector at position z)Unmatched pseudo-class close at position rP  rO  rí   zTag name found at position z instead of at the start)rN  rM  z"Unclosed pseudo-class at position )*rª  r\  rr   ÚRE_PSEUDO_IGNORErÔ   r‡   rè   r	   r¬   ry   ÚNotImplementedErrorr  rs   rú   r‚  r  rz  rŒ  r   r  rÄ  r¨  rÇ  rÍ  r,  r÷   r  Úfinalize_selectorsr  r  r³  rò   rô   rº   rµ  ró   r  rr  rx  r¸  r­   r°   )rÄ   Ú	iselectorrº   rs   ÚctxÚstackr;  r‹   ÚchildÚmirò   s              r{   Úparse_selectorszCSSParser.parse_selectorsÝ  sï  € ð ×!Ñ! %¨Ó/ˆØ(*ˆàó X	‰FˆC�Ø-1ˆEàÐ5Ñ5Ø×$Ñ$Ô&ð �{Š{Ü%×+Ñ+¨A¯G©G°A«JÓ7�Ø�> b§h¡h¨vÓ&6×&<Ñ&<Ó&>À$Ç+Á+Ñ&MÜ-Ø(¨¯©°&Ó)9Ð(:¸.ÈÏÉÐQRËÈÐTiÐjØŸ™ØŸ™ ›
óð ð
 �iÒÜ)Ð,GÈÏÉÐPQË
À|Ð*TÓUÐUØ˜’Ø—‘—’¤§¡Ñ-•Ø#'�Ö ØÐ-Ò-Ø#'×#AÑ#AÀ#Ç'Á'È1Èc×N^ÑN^Ó#_�Ö Ø˜Ò&Ø7;×7NÑ7NØ—G‘G˜Q × 0Ñ 0°#·+±+¸s¿¹ó8Ñ4�Ô  #¤+ªuð Ð(Ò(Ü)Ð,MÈaÏgÉgÐVWËjÈ\Ð*ZÓ[Ð[ØÐ)Ò)Ø#'×#=Ñ#=¸c¿g¹gÀqÈ#×JZÑJZÓ#[�Ö ØÐ?Ñ?Ø*.×*?Ñ*?ÀÇÁÈÈC×L\ÑL\Ó*]Ñ'�Ô ¢%Ø˜Ò%Ø#'×#9Ñ#9¸#¿'¹'À1Àc×FVÑFVÓ#W�Ö Ø˜Ò$Ø#'×#8Ñ#8¸¿¹À!ÀS×EUÑEUÓ#V�Ô à"�–Ø˜Ò&Ø×'Ò'ØŸ>š>Ü1Ø>¸q¿w¹wÀq»z¸lÐKØ ŸL™LØŸG™G A›Jóð ð
 (,�C—G‘GÔ$Ø—{’{Ü-ØCÀAÇGÁGÈAÃJÀ<ÐPØŸ™ØŸ™ ›
óð ð !×3Ñ3°CÓ8�	Ø—<‘<Ð+Ø—L‘L Ô+Ø—i‘i“k�ÙØ˜	Ò!Ø—?’?Ø>B×>WÑ>WØŸ™  C×$4Ñ$4°c·m±mÀSÇ\Á\ÐSV×S\ÑS\ó?Ñ;�CÔ$ c¤g¨s®|ð 15×0EÑ0EØŸ™  C×$4Ñ$4°c·m±mÀSÇ]Á]ØŸ™ s§~¡~°s·y±yó1Ñ-�CÔ$ c¥gð ˜Ò#Ø#'×#@Ñ#@ÀÇÁÈ!ÈS×M]ÑM]Ó#^�Õ Ø˜’Ø×#Ò#Ü-Ø5°a·g±g¸a³j°\ÐAYÐZØŸ™ØŸ™ ›
óð ð
 $(×#9Ñ#9¸#¿'¹'À1Àc×FVÑFVÓ#W�Õ Ø˜Ñ'Ø#'×#6Ñ#6°s·w±wÀÀ3×CSÑCSÓ#T�Ô àŸ™˜a›ˆCŒIð Ò Ø—‘˜SÔ!Ø’ðqX	ðv �;Š;Ü%Ø4°S·Y±Y°KÐ@Ø—‘Ø—	‘	óð ð ×&Ñ& sÓ+Ð+r}   c                ó¶  — |j                   }|j                  }|j                  }|j                  }|r¡|j                  s'|j
                  st        j                  dd«      |_        |j                  r0|j                  |_	        |d   j                  j                  |«       nq|j                  j                  |«       |dd…= |j                  |«       n?|j                  r3|r|s/| j                  «        d|_        |dd…= |j                  |«       d}|s.t        d|j                   › �| j"                  |j                   «      ‚|j$                  rt        j&                  |d   _        |j*                  rt        j,                  |d   _        |j.                  rt        j0                  |d   _        |j2                  rt        j4                  |d   _        |j6                  rt        j8                  |d   _        t        j:                  |D �cg c]  }|j=                  «       ‘Œ c}|j>                  |j@                  | jB                  |jB                  z
  «      S c c}w )z6Complete the selector list of a context and freeze it.rd  Nr�   TrÏ  )"r  rò   ró   r  rí   r  rú   rv  r  rô   r°   r  r,  r\  r÷   r	   rº   ry   r"  ÚSEL_DEFAULTrs   r$  ÚSEL_INDETERMINATEr&  ÚSEL_IN_RANGEr(  ÚSEL_OUT_OF_RANGEr*  ÚSEL_PLACEHOLDER_SHOWNr  r	  r  r   r  )rÄ   rÔ  r  rò   ró   r  Úss          r{   rÒ  zCSSParser.finalize_selectorsQ  sÎ  € ð �g‰gˆØ—M‘Mˆ	Ø—M‘Mˆ	Ø×'Ñ'ˆñ Ø—7’7 3§=¢=äŸ.™.¨¨dÓ3�”Ø�ŠØ"Ÿ|™|�”Ø˜"‘×'Ñ'×.Ñ.¨sÕ3à—‘×$Ñ$ YÔ/Øša�LØ× Ñ  Õ%ð �^Š^¡Y±ià× Ñ Ô"ØˆCŒLØš!�Ø×Ñ˜SÔ!ØˆLáô &Ø2°3·9±9°+Ð>Ø—‘Ø—	‘	óð ð �>Š>Ü"$§.¡.ˆI�b‰MÔØ×ÒÜ"$×"6Ñ"6ˆI�b‰MÔØ�?Š?Ü"$§/¡/ˆI�b‰MÔØ×ÒÜ"$×"5Ñ"5ˆI�b‰MÔØ×#Ò#Ü"$×":Ñ":ˆI�b‰MÔô �‰°IÖ>¨q §¡¥
Ò>ÀÇ
Á
ÈCÏKÉKÐY]×YcÑYcÐfi×foÑfoÑYoÓpÐpùÒ>s   È
Ic              #  ó2  K  — t         j                  |«      }|r|j                  d«      nd}t        j                  |ddd…   «      }|r|j                  d«      nd}t	        |«      d|z   z
  }| j
                  rt        d|›�«       ||k  rñd}| j                  D ]ˆ  }|j                  ||| j                  «      }|sŒ#|j                  «       }| j
                  r2t        d|› d|j                  d«      ›d|j                  d«      › �«       |j                  d«      }||f–—  n |€P||   }|d	k(  rd
|› �}	n)|dk(  rd|› �}	n|dk(  rd|› �}	n|dk(  rd|› �}	nd|›d|› �}	t        |	| j                  |«      ‚||k  rŒñ| j
                  rt        d«       yy­w)zIterate selector tokens.r   Nr�   r   z## PARSING: zTOKEN: 'z' --> z at position ú[z)Malformed attribute selector at position r·  z%Malformed class selector at position ú#z"Malformed id selector at position r_   z,Malformed pseudo-class selector at position zInvalid character z
 position z## END PARSING)ÚRE_WS_BEGINri  r­   Ú	RE_WS_ENDr¯   r0  r/  Ú
CSS_TOKENSrÔ   rs   rÑ   r‡   r¬   r	   ry   )
rÄ   ry   r‹   rº   Úoffsetr­   ÚvrÂ   r»   Úmsgs
             r{   Úselector_iterzCSSParser.selector_iter‰  s°  è ø€ ô ×Ñ˜wÓ'ˆÙ�—‘�a” 1ˆÜ×Ñ˜W¡T r T™]Ó+ˆÙ�—‘�q” AˆÜ�'‹l˜a &™jÑ)ˆà�:Š:Ü�L  Ð,Ô-Ø�sŠlØˆAØ—_‘_ò �Ø—G‘G˜G U¨D¯J©JÓ7�ÚØŸ:™:›<�DØ—z’zÜ ¨¨¨f°Q·W±W¸Q³Z°NÀ-ÐPQ×PWÑPWÐXYÓPZÈ|Ð\Ô]ØŸE™E !›H�EØ ˜'’MÙðð ˆyØ˜E‘N�ð ˜’8ØEÀeÀWÐM‘CØ˜#’XØAÀ%ÀÐI‘CØ˜#’XØ>¸u¸gÐF‘CØ˜#’XØHÈÈÐP‘Cà.¨q¨e°:¸e¸WÐE�CÜ)¨#¨t¯|©|¸UÓCÐCð5 �s‹lð6 �:Š:ÜÐ"Õ#ð ùs   ‚B;FÂ>B?FÅ>Fc                óZ   — | j                  | j                  | j                  «      ||«      S )zProcess selectors.)rØ  ré  ry   )rÄ   rº   rs   s      r{   rx   zCSSParser.process_selectors³  s(   € ð ×#Ñ# D×$6Ñ$6°t·|±|Ó$DÀeÈUÓSÐSr}   )rÕ   r’   rq   z$Mapping[str, ct.SelectorList] | Nonerr   zIterable[str] | Noners   rˆ   rt   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‘   z*tuple[bool, bool, _SelectorContext | None])r  rë   r‹   r�   r  r  r‘   z$tuple[bool, _SelectorContext | None])NF)
rÂ   r’   rº   rˆ   r  r1  r  r  r‘   r  rª   )rs   rˆ   rº   rˆ   r  r1  r‘   r  )r  rë   r‹   r�   r  r  rò   úlist[_Selector]rô   r’   rº   rˆ   r‘   ztuple[bool, _Selector, str])r  rë   r‹   r�   r  r  rò   rë  ró   rë  r  r  r,  r  rº   rˆ   r‘   ztuple[bool, _Selector])r   r   )rÓ  ú Iterator[tuple[str, Match[str]]]rº   rˆ   rs   rˆ   r‘   r  )rÔ  r  r‘   r  )ry   r’   r‘   rì  )rº   rˆ   rs   rˆ   r‘   r  )=rÙ   rÚ   rÛ   rÜ   r¾   ÚPAT_PSEUDO_CLOSErß   ÚPAT_PSEUDO_CONTAINSÚPAT_PSEUDO_NTH_CHILDÚPAT_PSEUDO_NTH_TYPEÚPAT_PSEUDO_LANGÚPAT_PSEUDO_DIRÚPAT_PSEUDO_CLASS_CUSTOMÚPAT_PSEUDO_CLASSÚPAT_PSEUDO_ELEMENTÚPAT_AMPÚPAT_AT_RULEÚPAT_IDÚ	PAT_CLASSÚPAT_TAGÚPAT_ATTRÚPAT_COMBINErå  r7  ÚCSS_LINKÚCSS_CHECKEDÚCSS_DEFAULTÚCSS_INDETERMINATEÚCSS_DISABLEDÚCSS_ENABLEDÚCSS_REQUIREDÚ	CSS_MUTEDÚCSS_OPENÚCSS_OPTIONALÚCSS_READ_ONLYÚCSS_READ_WRITEÚCSS_IN_RANGEÚCSS_OUT_OF_RANGEÚCSS_PLACEHOLDER_SHOWNÚCSS_NTH_OF_S_DEFAULTr„  ÚSELECTOR_LIMITrÅ   r\  rr  rx  rz  rŒ  r¨  r~  rª  r³  rµ  r¸  rÄ  rÇ  rÍ  rØ  rÒ  ré  rx   r€   r}   r{   rw   rw   Î  s  „ Ùñ 	˜Ð(8Ó9Ùð &ØKØ'Ø#ð	ð $Ð%FÐH\Ð^mÐnØ"Ð$IÐK^Ð`oÐpØ 
¨O¸_ÐMØ˜y¨.¸/ÐJðó	
ñ 	Ð-Ð/FÓGÙ˜Ð(8Ó9ÙÐ(Ð*<Ó=Ù˜˜wÓ'Ù˜	 ;Ó/Ù˜˜fÓ%Ù˜ Ó+Ù˜˜wÓ'Ù˜ XÓ.Ù˜	 ;Ó/ð3€Jñ: )ð	
Ø�Xð	
à˜ð	
ð ˜ð	
ð ˜ð		
ð
 Ð/ð	
ð ˜ð	
ð ˜ð	
ð ˜ð	
ð �ið	
ð �Xð	
ð ˜ð	
ð ˜-ð	
ð ˜>ð	
ð ˜ð	
ð Ð-ð	
ð  !Ð"7ð!	
ð" Ð.ð#	
óÐð4 8<Ø'+ØØ+ñ$àð$ð 5ð	$ð
 %ð$ð ð$ð ð$ð 
ó$ô(^óAóFóð,P.àðP.ð ðP.ð ð	P.ð
 ðP.ð ðP.ð 
4óP.ðdI%àðI%ð ðI%ð ð	I%ð
 
.óI%ð^ >BØ!ð;àð;ð ð;ð ;ð	;ð
 ð;ð 
ó;ð: >Bð	àðð ðð ;ð	ð
 
óð5+àð5+ð ð5+ð ð	5+ð
 #ð5+ð ð5+ð ð5+ð 
%ó5+ðn-!àð-!ð ð-!ð ð	-!ð
 #ð-!ð #ð-!ð ð-!ð ð-!ð ð-!ð 
 ó-!ó^	óó&óð Øð	r,à3ðr,ð ðr,ð ð	r,ð
 
ór,óh6qóp($õTTr}   rw   )ry   r’   rz   zct.Namespaces | Nonerq   zct.CustomSelectors | Nonerr   ztuple[str] | Noners   rˆ   rt   rˆ   r‘   zcm.SoupSiever2  )r˜   r’   r‘   r’   )r¶   r’   r‘   r’   )€rÜ   Ú
__future__r   rÈ   Ú	functoolsr   r†   r   r   ru   r   rú   r	   r¼  Útypingr
   r   r   r   r   r   r   Údataclassesr   Úcollectionsr   Ú	threadingÚ__all__ÚLockrÇ   ÚRLockr>  r‰   r´   r  r  r‡  r}  r†  ÚPSEUDO_SPECIALrˆ  ÚNEWLINEÚWSÚCOMMENTSÚWSCÚCSS_ESCAPESÚCSS_STRING_ESCAPESÚIDENT_STARTÚ
IDENT_CHARÚ
IDENTIFIERÚNTHÚVALUEÚATTRrø  rù  rú  rû  rô  ÚPAT_PSEUDO_CLASS_SPECIALró  rö  rí  rõ  r÷  rï  rð  rñ  rò  rü  rî  rÉ   rÊ   r–   r•   r   rË   r¿  rh  rã  rä  Ú	RE_CUSTOMrÌ   rç   rÐ  r”   r±  r  r  r  r  r!  r  r#  r  r%  r'  r)  r+  Ú	_MAXCACHEr|   r�   rš   r¼   r¾   rß   rë   r  r4  r’   r  r7  rý  rþ  rÿ  r   r  r  r  r  r  r  r  r	  r
  r  r  r  rw   r€   r}   r{   ú<module>r'     sš  ðÙ Ý "Û 	Ý Ý Ý Ý Ý %Û ß J× JÑ JÝ !Ý  Û à
"€à
ˆ)�.‰.Ó
€Øˆ9�?‰?Ó€à!Ð ðÐ ð  €ò€ò<Ð ò8	€òÐ ò€ð !Ð#9Ñ9¸NÑJÐMdÑdÐguÑuÐ ð €Ø�'�˜!Ð€à*€à	ˆRˆD��(�˜1Ð€à)¨"¨Ð-=Ð>€Ø0°°°C¸°yÀÐOÐ à)€Ø,€
ðØˆ}˜A˜k˜]ð +Ø€<ˆq��ð ð€
ð
 
)¨¨¨V°C°5¸ÐE€ðØˆIð 
Ø
ˆð Ø€ð ð	€ð ˆcˆUÐ(¨¨¨\¸%¸ÀÀSÀEÐI_Ð`€ð ˆzˆlÐ	€à�*�Ð€	à˜J˜<Ð'?À
¸|È4Ð
P€à��Ð& z lÐ2PÐQ[ÐP\Ð\]Ð^bÐ]cÐdgÐchÐhlÐm€à   ¨L¸¸¸UÐCÐ à(¨¨°LÀÀÀSÐIÐ à-¨j¨\¸Ð;Ð à
€à�e˜4�=Ð àÐ*Ð+Ð,Ð à�J�<Ð €ðØ.Ð/ð 0Øˆe�> #  l°8°*¸B¸r¸dÀ3À%ÀtÈHÈ:ÐUWÐXZÐW[Ð\_Ð[`ð aðÐ ð
Ø-Ð.ð /ØˆU�+˜c˜Uð #ðÐ ð
 /Ð/¨{¸5¸'ÀÀSÀEÈÈSÈEÐQSÐTYÐSZÐZ^Ð_bÐ^cÐcgÐh€à-Ð.Ð.>¸s¸eÀ4ÐH€à�˜5   H¨S¨EÐ1IÈ#ÈÈbÐQ€à2Ð3°;¸u¸gÀSÈÈÈSÐQTÐPUÐUWÐX]ÐW^Ð^bÐcfÐbgÐgkÐlÐ ð ˆR�Z‰ZÐ1°#°Ð6NÐOÐQS×QUÑQUÓV€
Ø�—‘Ð5°b°TÐ9TÐU\ÐT]Ð]_Ð`Ðbd×bfÑbfÓg€à	ˆ�‰ÐAÀ#ÀÀnÐUXÐTYÐYlÐmÐoq×osÑosÓ	t€àˆB�J‰J˜-¨ w¨l¸3¸%¸sÀ3À%ÀtÐLÈbÏdÉdÓS€	àˆ�
‰
�2‹€Øˆb�j‰j˜A˜c˜U "˜Ó&€ØˆB�J‰JÐ6°x°jÀÐDÓE€	ØˆB�J‰J˜!Ð3Ð4°AÐ6¸¿¹Ó=€	Ø$˜"Ÿ*™*Ð%=¸r¿t¹tÀbÇdÁd¹{ÈRÏTÉTÑ?QÓRÐ Ø�2—:‘:Ð.°·±°r·t±t±¸b¿d¹dÑ0BÓCÐ à	€ð Ð à€ð €
Ø
€Ø€Ø€Ø€ØÐ Ø€Ø€ØÐ ØÐ Ø€ð €	ñ �9Ôð
 !%ØØ'ðØðà$ðð &ðð ð	ð
 ðð ðð òó ðó2&ó!óH÷:6ñ 6ô<!˜?ô !÷HOñ O÷d3+ñ 3+ðl ÷ð ó ðô˜  j°2·?±?Ñ&BÐ!BÑCô ñ* Ð0°*¸xÑ2GÓH€áðð �Ñó	€ñ ðð �Ñ˜KÑ'ó€ñ ð
ð �ÑÐ-Ñ-óÐ ñ ðð �Ñó	€ñ ðð �Ñó	€ñ ÐHÈ*ÐW_ÑJ_Ó`€áÐNÐPZÐ]eÑPeÓf€á"ðð �ÑÐ1Ñ1óÐ ñ$ ðð, �Ñó/€ñ4 Ð4°jÀ8Ñ6KÓL€áðð �Ñ˜LÑ(ó€ñ$ ðð �ÑÐ,Ñ,óÐ ñ$ Ð8¸*ÀxÑ:OÓP€áÐ7¸ÀhÑ9NÓO€	á! %¨Ó4Ð ÷hTò hTr}   