ó
    …~iv¸  ã                  óš  • S r SSKJr  SSKrSSKJr  SSKJr  SSKJr	  SSKJ
r  SS	KJr  SSKrSS
KJrJrJrJr  Sr1 Skr1 Skr1 Skr1 Skr1 Skr\\-  \-  \-  \-  rSrS\ S3rSrS\ S\ S3rS\ S3rS\ S\ S3rS\ S\ S3r S\ S\ S 3r!S!\ S"\ S#\  S3r"S\ S$\ S%\" S&\ S'\ S(3r#S)\  3r$S*\  3r%S+\  S,\  S-3r&S.\ S/\  S0\  S\# S13	r'S2\  S3\ S43r(S2\  S3\ S53r)S6\  S3r*S7r+\ S83r,S9\( 3r-S:\  3r.S;\) S<\! S=\ S>\ S(\ \ S?\ S(\ \ S@3r/SA\) SB\! SC\ SD3r0\) SE\" S\ SF\ S(\" SG\ S83r1\) SH\ S83r2\ SI\ SJ\ S(3r3\) SE\" S\ SF\ S(\" SG\ S83r4\Rj                  " SK\ SL3\Rl                  5      r7\Rj                  " SK\ SM\ S3\Rl                  5      r8\Rj                  " SN\ SO\ SP3\Rl                  5      r9\Rj                  " SQ\" SR\ SF\ SS3\Rt                  5      r;\Rj                  " \5      r<\Rj                  " ST\ S(35      r=\Rj                  " \ SU35      r>\Rj                  " ST\* SV3\Rt                  5      r?SWr@SXrASrBSYrCSZrDS[rES\rFS]rGS^rHS_rIS`rJSarKSbrLScrM\" \MSd9          S‚Se j5       rNSƒSf jrOS„Sg jrPS…S†Sh jjrQS‡Si jrR " Sj Sk5      rS " Sl Sm\S5      rT " Sn So5      rU " Sp Sq5      rV\V" Sr5      R¯                  \B\F-  Ss9rX\V" St5      R¯                  \B\F-  Ss9rY\V" Su5      R¯                  \B\F-  \E-  Ss9rZ\V" Sv5      R¯                  \B\F-  \G-  Ss9r[\V" Sw5      R¯                  \B\F-  Ss9r\\V" Sx5      R¯                  \B\F-  Ss9r]\V" Sy5      R¯                  \B\F-  Ss9r^\V" Sz5      R¯                  \B\F-  Ss9r_\V" S{5      R¯                  \B\F-  \K-  Ss9r`\V" S|5      R¯                  \BSs9ra\V" S}5      R¯                  \B\F-  Ss9rb\V" S~5      R¯                  \B\F-  Ss9rc\V" S5      R¯                  \B\I-  \F-  Ss9rd\V" S5      R¯                  \B\J-  \F-  Ss9re\V" S€5      R¯                  \B\F-  Ss9rf\V" S�5      R¯                  \B\F-  Ss9rgg)ˆzCSS selector parser.é    )ÚannotationsN)Ú	lru_cacheé   )Úutil)Ú	css_match)Ú	css_types)ÚSelectorSyntaxError)ÚMatchÚAnyÚIteratorÚcastiýÿ  >   ú: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>   ú:hostú:pastú:focusú:hoverú:activeú:futureú:pausedú:targetú:currentú:playingú:seekingú:stalledú:visitedú	:autofillú
:bufferingú:fullscreenú:local-linkú:focus-withinú:popover-openú:user-invalidú:focus-visibleú:target-withinú:volume-lockedú:picture-in-picture>   ú:isú:hasú:notú:whereú:matchesú	:containsú:-soup-containsú:-soup-contains-own>   r(   r0   ú:host-context>   ú:dirú:langú
:nth-childú:nth-of-typeú:nth-last-childú:nth-last-of-typez(?:\r\n|(?!\r\n)[\n\f\r])z	(?:[ \t]|Ú)z"(?:/\*[^*]*\*+(?:[^/*][^*]*\*+)*/)z(?:Ú|z(?:\\(?:[a-f0-9]{1,6}z?|[^\r\n\f]|$))z?|[^\r\n\f]|$|z))z8
(?:(?:-?(?:[^\x00-\x2f\x30-\x40\x5B-\x5E\x60\x7B-\x9f]|z>)+|--)
(?:[^\x00-\x2c\x2e\x2f\x3A-\x40\x5B-\x5E\x60\x7B-\x9f]|z)*)
z (?:[-+])?(?:[0-9]+n?|n)(?:(?<=n)z	*(?:[-+])z*(?:[0-9]+))?z(?:"(?:\\(?:.|z)|[^\\"\r\n\f]+)*?"|'(?:\\(?:.|z)|[^\\'\r\n\f]+)*?'|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*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*?(?P<relation>[,+>~]|z(?![,+>~]))z(?:(\\[a-f0-9]{1,6}z?)|(\\[^\r\n\f])|(\\$))z?)|(\\[^\r\n\f])|(\\$)|(\\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*$Ú$Ú,Ú é   é   é   é   é    é@   é€   é   i   i   iô  )Úmaxsizec           	     óz   • [        U5      n[        R                  " U [        U UUS9R	                  5       UUU5      $ )zCached CSS compile.©ÚcustomÚflags)Úprocess_customÚcmÚ	SoupSieveÚ	CSSParserÚprocess_selectors)ÚpatternÚ
namespacesrc   rd   Úcustom_selectorss        ÚQ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/soupsieve/css_parser.pyÚ_cached_css_compilern   Ì   sH   € ô & fÓ-ÐÜ�<Š<ØÜØØ#Øñ	
÷ Ñ
Ó
ØØØó
ð 
ó    c                 ó,   • [         R                  5         g)zPurge the cache.N)rn   Úcache_clear© ro   rm   Ú_purge_cachers   ã   s   € ô ×#Ñ#Õ%ro   c                óú   • 0 nU bu  U R                  5        Ha  u  p#[        R                  " U5      n[        R	                  U5      c  [        SU S35      eXA;   a  [        SU S35      eX1[        U5      '   Mc     U$ )zProcess custom.z
The name 'z)' is not a valid custom pseudo-class namezThe custom selector 'z' has already been registered)Úitemsr   ÚlowerÚ	RE_CUSTOMÚmatchr	   ÚKeyErrorÚcss_unescape)rc   rl   ÚkeyÚvalueÚnames        rm   re   re   é   s„   € ð ÐØÑØ Ÿ,™,ž.‰JˆCÜ—:’:˜c“?ˆDÜ�‰˜tÓ$Ñ,Ü)¨J°t°fÐ<eÐ*fÓgÐgØÓ'ÜÐ!6°t°fÐ<YÐZÓ[Ð[Ø38œ\¨$Ó/Ó0ñ )ð Ðro   c                óP   • SS jnU(       d  [         O[        R                  X 5      $ )zg
Unescape CSS value.

Strings allow for spanning the value on multiple strings by escaping a new line.
c                ó0  • U R                  S5      (       a7  [        U R                  S5      SS S5      nUS:X  a  [        n[        U5      nU$ U R                  S5      (       a  U R                  S5      SS nU$ U R                  S5      (       a  SnU$ SnU$ )	z(Replace with the appropriate substitute.r   Nr[   r   rX   é   õ   ï¿½Ú )ÚgroupÚintÚUNICODE_REPLACEMENT_CHARÚchr)ÚmÚ	codepointr|   s      rm   ÚreplaceÚcss_unescape.<locals>.replaceÿ   s—   € ð �7‰7�1�:‰:Ü˜AŸG™G A›J q r˜N¨BÓ/ˆIØ˜A‹~Ü4�	Ü˜	“NˆEð ˆð �W‰W�Q�Z‰ZØ—G‘G˜A“J˜q˜r�NˆEð ˆð �W‰W�Q�Z‰ZØˆEð ˆð ˆEàˆro   )r‡   ú
Match[str]ÚreturnÚstr)Ú
RE_CSS_ESCÚRE_CSS_STR_ESCÚsub)ÚcontentÚstringr‰   s      rm   rz   rz   ø   s   € ôö" %�J¬.×=Ñ=¸gÓOÐOro   c                óÐ  • / n[        U 5      nUS:„  =(       a    U S   S:H  nUS:X  a  U(       a  UR                  SU  35        GO[        U 5       GH  u  pE[        U5      nUS:X  a  UR                  S5        M*  SUs=::  a  S::  d  O  US:X  a  UR                  SUS S	35        MW  US:X  d  U(       a.  US:X  a(  S
Us=::  a  S::  a  O  OUR                  SUS S	35        M’  US;   dC  US:¼  d=  S
Us=::  a  S::  d0  O  S
Us=::  a  S::  d!  O  SUs=::  a  S::  d  O  SUs=::  a  S::  a  O  OUR                  U5        Mî  UR                  SU 35        GM     SR	                  U5      $ )zEscape identifier.r   Ú-r   Ú\r�   é   é   ÚxrW   é0   é9   )é-   é_   r^   éA   éZ   éa   éz   r‚   )ÚlenÚappendÚ	enumerateÚordÚjoin)Úidentr’   ÚlengthÚ
start_dashÚindexÚcrˆ   s          rm   Úescaper«     s@  € ð €FÜ�‹Z€FØ˜!‘×/  a¡¨C¡€JØ�ƒ{–zà�‰˜˜5˜'�lÖ#ä! %×(‰HˆEÜ˜A›ˆIØ˜DÓ Ø—‘˜hÖ'Ø˜)Õ+ tÕ+°	¸TÓ0AØ—‘  9¨Q -¨qÐ1Ö2Ø˜1“*¦°¸³
À$È)ÕB[ÐW[ÖB[Ø—‘  9¨Q -¨qÐ1Ö2à˜\Ó)¨Y¸$Ó->À4È9ÕC\ÐX\ÕC\Ø˜Õ* dÕ*°¸	Õ0IÀTÕ0IÈtÐW`ÕOhÐdhÖOhà—‘˜aÖ à—‘  1 #˜h×'ñ )ð �7‰7�6‹?Ðro   c                  ó6   • \ rS rSrSrSS jrS	S jrS
S jrSrg)ÚSelectorPatterni/  úSelector pattern.c                ó¨   • Xl         [        R                  " U[        R                  [        R                  -  [        R
                  -  5      U l        g)úInitialize.N)r}   ÚreÚcompileÚIÚXÚUÚ
re_pattern)Úselfr}   rj   s      rm   Ú__init__ÚSelectorPattern.__init__2  s0   € ð Œ	ÜŸ*š* W¬b¯d©d´R·T±T©k¼B¿D¹DÑ.@ÓAˆ�ro   c                ó   • U R                   $ )ú	Get name.)r}   ©r·   s    rm   Úget_nameÚSelectorPattern.get_name8  s   € ð �y‰yÐro   c                ó8   • U R                   R                  X5      $ )úMatch the selector.)r¶   rx   )r·   Úselectorr©   rd   s       rm   rx   ÚSelectorPattern.match=  s   € ð �‰×$Ñ$ XÓ5Ð5ro   )r}   r¶   N)r}   r�   rj   r�   rŒ   ÚNone©rŒ   r�   ©rÁ   r�   r©   r„   rd   r„   rŒ   zMatch[str] | None©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r¸   r½   rx   Ú__static_attributes__rr   ro   rm   r­   r­   /  s   † ÙôBô÷
6ro   r­   c                  ó6   • \ rS rSrSrSS jrS	S jrS
S jrSrg)ÚSpecialPseudoPatterniC  r®   c                ó,  • 0 U l         U H0  nUS   nUS   " X2S   5      nUS    H  nX@R                   U'   M     M2     SU l        [        R                  " [        [        R
                  [        R                  -  [        R                  -  5      U l        g)r°   r   r€   rX   r   N)	ÚpatternsÚmatched_namer±   r²   ÚPAT_PSEUDO_CLASS_SPECIALr³   r´   rµ   Úre_pseudo_name)r·   rÐ   Úpr}   rj   Úpseudos         rm   r¸   ÚSpecialPseudoPattern.__init__F  s€   € ð ˆŒÛˆAØ�Q‘4ˆDØ˜’d˜4 1¡Ó&ˆGØ˜Aœ$�Ø(/—‘˜fÓ%ó ñ ð !ˆÔÜ ŸjšjÔ)AÄ2Ç4Á4Ì"Ï$É$Á;ÔQS×QUÑQUÑCUÓVˆÕro   c                óT   • U R                   c  S$ U R                   R                  5       $ )r»   r‚   )rÑ   r½   r¼   s    rm   r½   ÚSpecialPseudoPattern.get_nameS  s)   € ð ×&Ñ&Ñ.ˆrÐP°D×4EÑ4E×4NÑ4NÓ4PÐPro   c                ó,  • SnU R                   R                  X5      nU(       ao  [        R                  " [	        UR                  S5      5      5      nU R                  R                  U5      nU(       a  UR                  XU5      nU(       a  Xpl        U$ )rÀ   Nr}   )	rÓ   rx   r   rv   rz   rƒ   rÐ   ÚgetrÑ   )r·   rÁ   r©   rd   rÕ   r‡   r}   rj   s           rm   rx   ÚSpecialPseudoPattern.matchX  sr   € ð ˆØ×Ñ×%Ñ% hÓ6ˆÞÜ—:’:œl¨1¯7©7°6«?Ó;Ó<ˆDØ—m‘m×'Ñ'¨Ó-ˆGÞØ Ÿ™ x¸Ó>�ÞØ(/Ô%àˆro   )rÑ   rÐ   rÓ   N)rÐ   zCtuple[tuple[str, tuple[str, ...], str, type[SelectorPattern]], ...]rŒ   rÃ   rÄ   rÅ   rÆ   rr   ro   rm   rÎ   rÎ   C  s   † ÙôWôQ÷
ro   rÎ   c                  óD   • \ rS rSrSrS	S jrS
S jrSS jrSS jr\r	Sr
g)Ú	_Selectorih  zé
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                ó,  • UR                  SS5      U l        UR                  S/ 5      U l        UR                  S/ 5      U l        UR                  S/ 5      U l        UR                  S/ 5      U l        UR                  S/ 5      U l        UR                  S/ 5      U l        UR                  S	S5      U l        UR                  S
/ 5      U l	        UR                  S/ 5      U l
        UR                  SS5      U l        UR                  SS5      U l        g)r°   ÚtagNÚidsÚclassesÚ
attributesÚnthÚ	selectorsÚ	relationsÚrel_typeÚcontainsÚlangrd   r   Úno_matchF)rÚ   rß   rà   rá   râ   rã   rä   rå   ræ   rç   rè   rd   ré   )r·   Úkwargss     rm   r¸   Ú_Selector.__init__q  sÜ   € ð —:‘:˜e TÓ*ˆŒØ—:‘:˜e RÓ(ˆŒØ—z‘z )¨RÓ0ˆŒØ Ÿ*™* \°2Ó6ˆŒØ—:‘:˜e RÓ(ˆŒØŸ™ K°Ó4ˆŒØŸ™ K°Ó4ˆŒØŸ
™
 :¨tÓ4ˆŒØŸ
™
 :¨rÓ2ˆŒØ—J‘J˜v rÓ*ˆŒ	Ø—Z‘Z ¨Ó+ˆŒ
ØŸ
™
 :¨uÓ5ˆ�ro   c                óÊ   • U(       aH  US   nUR                   R                  USS 5        [        R                  " UR	                  5       /5      $ [        R                  " 5       $ )zFreeze relation.r   r   N)rå   ÚextendÚctÚSelectorListÚfreeze)r·   rå   Úsels      rm   Ú_freeze_relationsÚ_Selector._freeze_relations�  sL   € ö Ø˜A‘,ˆCØ�M‰M× Ñ  ¨1¨2 Ô/Ü—?’? C§J¡J£L >Ó2Ð2ä—?’?Ó$Ð$ro   c                ó  • U R                   (       a  [        R                  " 5       $ [        R                  " U R                  [        U R                  5      [        U R                  5      [        U R                  5      [        U R                  5      [        U R                  5      U R                  U R                  5      U R                  [        U R                  5      [        U R                  5      U R                   5      $ )zFreeze self.)ré   rî   ÚSelectorNullÚSelectorrß   Útuplerà   rá   râ   rã   rä   rò   rå   ræ   rç   rè   rd   r¼   s    rm   rð   Ú_Selector.freeze‹  s¢   € ð �=�=Ü—?’?Ó$Ð$ä—;’;Ø—‘Ü�d—h‘h“Ü�d—l‘lÓ#Ü�d—o‘oÓ&Ü�d—h‘h“Ü�d—n‘nÓ%Ø×&Ñ& t§~¡~Ó6Ø—‘Ü�d—m‘mÓ$Ü�d—i‘iÓ Ø—
‘
óð ro   c                óX  • SU R                   < SU R                  < SU R                  < SU R                  < SU R                  < SU R
                  < SU R                  < SU R                  < S	U R                  < S
U R                  < SU R                  < SU R                  < S3$ )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=rO   )rß   rà   rá   râ   rã   rä   rå   ræ   rç   rè   rd   ré   r¼   s    rm   Ú__str__Ú_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ØŸ™Ñ(¨ð+ð	
ro   )râ   rá   rç   rd   rà   rè   ré   rã   ræ   rå   rä   rß   N)rê   r   rŒ   rÃ   )rå   úlist[_Selector]rŒ   úct.SelectorList)rŒ   zct.Selector | ct.SelectorNullrÄ   )rÇ   rÈ   rÉ   rÊ   rË   r¸   rò   rð   rú   Ú__repr__rÌ   rr   ro   rm   rÝ   rÝ   h  s"   † ñô6ô %ôô(
ð ƒHro   rÝ   c                  ó`  • \ rS rSrSr\" S\5      \" SS\\4SS\	\4SS	\
\4S
S\\4SS\\445      \" S\5      \" S\5      \" S\5      \" S\5      \" S\5      \" S\5      \" S\5      \" S\5      \" S\5      \" S\5      4r  S*       S+S jjrS,S jrS,S jrS,S jr            S-S jr          S.S jr            S/S jr              S0S  jr                  S1S! jr S,S" jr!S,S# jr"S,S$ jr#S,S% jr$  S2       S3S& jjr%S4S' jr&S2S5S( jjr'S)r(g)6rh   i¬  zParse CSS selectors.Úpseudo_closeÚpseudo_contains)rE   rF   rG   Úpseudo_nth_child)rK   rM   Úpseudo_nth_type)rL   rN   Úpseudo_lang)rJ   Ú
pseudo_dir)rI   Úpseudo_class_customÚpseudo_classÚpseudo_elementÚampÚat_ruleÚidÚclassrß   Ú	attributeÚcombineNc                ó¦   • UR                  SS5      U l        X0l        U R                  [        R                  -  U l        Uc  0 U l        gUU l        g)r°   Ú r�   N)r‰   rj   rd   r   ÚDEBUGÚdebugrc   )r·   rÁ   rc   rd   s       rm   r¸   ÚCSSParser.__init__Ë  sB   € ð  ×'Ñ'¨°Ó9ˆŒØŒ
Ø—Z‘Z¤$§*¡*Ñ,ˆŒ
Ø"™N�bˆ�°ˆ�ro   c                ób  • SnUR                  S5      nUR                  S5      (       a%  [        R                  " UR                  S5      5      OSnUR                  S5      (       a  [        UR                  S5      SS 5      OSn[        UR                  S5      5      nSn	Sn
SnU(       a*  US	:X  a  [        R
                  OS
[        R                  -  nON[        R                  " U5      S:X  a$  [        R
                  [        R                  -  nSn	O[        R                  nU(       a^  UR                  S5      R                  S5      (       a  [        UR                  S5      SS S5      nO[        UR                  S5      5      nU(       d  SnGOÆUR                  S5      (       a0  [        R                  " S[        R                  " U5      -  U5      nGO€UR                  S5      (       a0  [        R                  " S[        R                  " U5      -  U5      nGO:UR                  S5      (       a/  [        R                  " S[        R                  " U5      -  U5      nOõUR                  S5      (       aT  U(       a  [        R                  U5      (       a  SO[        R                  " U5      n[        R                  " SU-  U5      nO‹UR                  S5      (       a/  [        R                  " S[        R                  " U5      -  U5      nOF[        R                  " S[        R                  " U5      -  U5      nUR                  S5      (       a  SnU	(       a'  U(       a   [        R                  " UR                  5      n
[        R                  " X‡XÚ5      nU(       ak  [        5       nUR                   R#                  U5        [        R$                  " UR'                  5       /SS5      nUR(                  R#                  U5        SnU$ UR                   R#                  U5        SnU$ )z8Create attribute selector from the returned regex match.FÚcmpÚcaseNÚattr_nséÿÿÿÿr‚   Ú	attr_nameÚir   ÚtypeTr|   ©Ú"Ú'r   rT   z^%s.*rU   z.*?%s$rQ   z.*?%s.*Ú~z[^\s\S]z7.*?(?:(?<=^)|(?<=[ \t\r\n\f]))%s(?=(?:[ \t\r\n\f]|$)).*rP   z^%s(?:-.*)?$z^%s$Ú!)rƒ   r   rv   rz   r±   r³   ÚDOTALLÚ
startswithr²   r«   ÚRE_WSÚsearchrj   rî   ÚSelectorAttributerÝ   râ   r¢   rï   rð   rä   )r·   rñ   r‡   Úhas_selectorÚinverseÚopr  ÚnsÚattrÚis_typeÚpattern2r|   rd   rj   Úsel_attrÚsub_selÚnot_lists                    rm   Úparse_attribute_selectorÚ"CSSParser.parse_attribute_selectorØ  sý  € ð ˆØ�W‰W�U‹^ˆØ./¯g©g°f¯o©oŒt�zŠz˜!Ÿ'™' &›/Ô*À4ˆØ67·g±g¸i×6HÑ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æØ�w‰w�wÓ×*Ñ*¨:×6Ñ6Ü$ Q§W¡W¨WÓ%5°a¸Ð%;¸TÓB‘ä$ Q§W¡W¨WÓ%5Ó6�æàŠGØ�]‰]˜3×Ñä—j’j ¬B¯IªI°eÓ,<Ñ!<¸eÓDŠGØ�]‰]˜3×Ñä—j’j ¬R¯YªY°uÓ-=Ñ!=¸uÓEŠGØ�]‰]˜3×Ñä—j’j ¬b¯iªi¸Ó.>Ñ!>ÀÓF‰GØ�]‰]˜3×Ñö ',¬u¯|©|¸E×/BÑ/B‘JÌÏ	Ê	ÐRWÓHXˆEÜ—j’jÐ![Ð^cÑ!cÐejÓk‰GØ�]‰]˜3×Ñä—j’j ´2·9²9¸UÓ3CÑ!CÀUÓK‰Gô —j’j ¬2¯9ª9°UÓ+;Ñ!;¸UÓCˆGØ�}‰}˜S×!Ñ!à�Þ–wÜ—z’z '§/¡/Ó2ˆHô ×'Ò'¨°'ÓDˆÞä“kˆGØ×Ñ×%Ñ% hÔ/Ü—’¨¯©Ó(8Ð'9¸4ÀÓGˆHØ�M‰M× Ñ  Ô*ð ˆØÐð �N‰N×!Ñ! (Ô+àˆØÐro   c                óÞ   • UR                  S5      (       a  [        UR                  S5      SS 5      OSn[        UR                  S5      5      n[        R                  " XT5      Ul        SnU$ )z#Parse tag pattern from regex match.Útag_nsNr  Útag_nameT)rƒ   rz   rî   ÚSelectorTagrß   )r·   rñ   r‡   r&  Úprefixrß   s         rm   Úparse_tag_patternÚCSSParser.parse_tag_pattern  s]   € ð :;¿¹À×9JÑ9J”˜aŸg™g hÓ/°°Ð4Ô5ÐPTˆÜ˜1Ÿ7™7 :Ó.Ó/ˆÜ—.’. Ó-ˆŒØˆØÐro   c                ó   • [         R                  " [        UR                  S5      5      5      nU R                  R                  U5      nUc;  [        SU SUR                  S5       3U R                  UR                  S5      5      e[        U[        R                  5      (       dJ  U R                  U	 [        XPR                  U R                  S9R                  [        S9nXPR                  U'   UR                   R#                  U5        SnU$ )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}   zUndefined custom selector 'z' found at position r   rb   ©rd   T)r   rv   rz   rƒ   rc   rÚ   r	   Úendrj   Ú
isinstancerî   rï   rh   rd   ri   Ú
FLG_PSEUDOrä   r¢   )r·   rñ   r‡   r&  rÕ   rÁ   s         rm   Úparse_pseudo_class_customÚ#CSSParser.parse_pseudo_class_custom'  sâ   € ô —’œL¨¯©°«Ó9Ó:ˆØ—;‘;—?‘? 6Ó*ˆØÑÜ%Ø-¨f¨XÐ5IÈ!Ï%É%ÐPQË(ÈÐTØ—‘Ø—‘�a“óð ô ˜(¤B§O¡O×4Ñ4Ø—‘˜FÐ#Ü Ø§¡°D·J±JñçÑ¤jÐÐ1ð ð #+�K‰K˜Ñà�‰×Ñ˜XÔ&ØˆØÐro   c                ó  • Sn[         R                  " [        UR                  S5      5      5      nUR                  S5      (       a  SnU(       a/  U[        ;   a%  U R                  XX4UR                  S5      5      nX54$ U(       Gd9  U[        ;   Ga.  US:X  a%  U=R                  [        R                  -  sl        GOþUS:X  a'  U=R                  [        R                  -  sl        SnGOÑUS:X  a%  U=R                  [        R                  -  sl        GO¦US	:X  a%  U=R                  [        R                  -  sl        GO{US
;   a!  UR                  R                  [         5        GOTUS:X  a!  UR                  R                  ["        5        GO-US:X  a!  UR                  R                  [$        5        GOUS:X  a!  UR                  R                  [&        5        GOßUS:X  a!  UR                  R                  [(        5        GO¸US:X  a!  UR                  R                  [*        5        GO‘US:X  a!  UR                  R                  [,        5        GOjUS:X  a!  UR                  R                  [.        5        GOCUS:X  a!  UR                  R                  [0        5        GOUS:X  a!  UR                  R                  [2        5        GOõUS:X  a!  UR                  R                  [4        5        GOÎUS:X  a!  UR                  R                  [6        5        GO§US:X  a!  UR                  R                  [8        5        GO€US:X  a!  UR                  R                  [:        5        GOYUS:X  a!  UR                  R                  [<        5        GO2US:X  aI  UR>                  R                  [        R@                  " SSSSS[        RB                  " 5       5      5        GOãUS:X  aI  UR>                  R                  [        R@                  " SSSSS[        RB                  " 5       5      5        GO”US:X  aI  UR>                  R                  [        R@                  " SSSSS[        RB                  " 5       5      5        GOEUS:X  aH  UR>                  R                  [        R@                  " SSSSS[        RB                  " 5       5      5        O÷US:X  av  UR>                  RE                  [        R@                  " SSSSS[        RB                  " 5       5      [        R@                  " SSSSS[        RB                  " 5       5      /5        O{US:X  au  UR>                  RE                  [        R@                  " SSSSS[        RB                  " 5       5      [        R@                  " SSSSS[        RB                  " 5       5      /5        SnX54$ U(       aB  U[F        ;   a8  U RI                  XBR                  S5      [J        [L        -  5        SUl'        SnX54$ U(       d  U[P        ;   a  SUl'        SnX54$ U[R        ;   a*  [U        S U S!3U RV                  URY                  S5      5      e[U        S!U S"3U RV                  URY                  S5      5      e)#zParse pseudo class.Fr}   ÚopenTr   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!Invalid syntax for pseudo class 'r  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   rv   rz   rƒ   ÚPSEUDO_COMPLEXÚparse_pseudo_openr;  ÚPSEUDO_SIMPLErd   rî   ÚSEL_ROOTÚSEL_DEFINEDÚ	SEL_SCOPEÚ	SEL_EMPTYrä   r¢   Ú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_SHOWNrã   ÚSelectorNthrï   rí   ÚPSEUDO_COMPLEX_NO_MATCHÚparse_selectorsr=  ÚFLG_OPENré   ÚPSEUDO_SIMPLE_NO_MATCHÚPSEUDO_SUPPORTEDr	   rj   Ústart)r·   rñ   r‡   r&  Ú	iselectorÚis_htmlÚcomplex_pseudorÕ   s           rm   Úparse_pseudo_classÚCSSParser.parse_pseudo_classC  sÍ  € ð ˆÜ—’œL¨¯©°«Ó9Ó:ˆØ�7‰7�6�?‰?Ø!ˆNÞ˜f¬Ó6Ø×1Ñ1°#¸|ÐXY×X]ÑX]Ð^_ÓX`ÓaˆLðj Ð$Ð$÷i   F¬mÔ$;Ø˜Ó Ø—	’	œRŸ[™[Ñ(—	Ø˜:Ó%Ø—	’	œRŸ^™^Ñ+•	Ø’Ø˜8Ó#Ø—	’	œRŸ\™\Ñ)—	Ø˜8Ó#Ø—	’	œRŸ\™\Ñ)—	ØÐ1Ó1Ø—‘×$Ñ$¤XÖ.Ø˜:Ó%Ø—‘×$Ñ$¤[Ö1Ø˜:Ó%Ø—‘×$Ñ$¤[Ö1ØÐ+Ó+Ø—‘×$Ñ$Ô%6Ö7Ø˜;Ó&Ø—‘×$Ñ$¤\Ö2Ø˜:Ó%Ø—‘×$Ñ$¤[Ö1Ø˜;Ó&Ø—‘×$Ñ$¤\Ö2Ø˜8Ó#Ø—‘×$Ñ$¤YÖ/Ø˜7Ó"Ø—‘×$Ñ$¤XÖ.Ø˜;Ó&Ø—‘×$Ñ$¤\Ö2Ø˜<Ó'Ø—‘×$Ñ$¤]Ö3Ø˜=Ó(Ø—‘×$Ñ$¤^Ö4Ø˜;Ó&Ø—‘×$Ñ$¤\Ö2Ø˜?Ó*Ø—‘×$Ñ$Ô%5Ö6ØÐ/Ó/Ø—‘×$Ñ$Ô%:Ö;Ø˜>Ó)Ø—‘—‘œ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Ø× Ñ  ¯E©E°!«H´jÄ8Ñ6KÔLØˆCŒLØˆLð$ Ð$Ð$ö#   FÔ.DÓ$DØˆCŒLØˆLð Ð$Ð$ð Ô'Ó'Ü%Ø3°F°8¸1Ð=Ø—‘Ø—‘˜“
óð ô &Ø�F�8ð nð nà—‘Ø—‘˜“
ó	ð ro   c                ó@  • UR                  5       nUR                  S5      (       a  SnOSn[        R                  " [	        US   5      5      US'   [        R                  " UR                  SU-   5      5      nUS:X  a  SnSn	S	n
GO+US
:X  a  SnSn	S	n
GO[        [        [           [        R                  U5      5      nUR                  S5      (       a  UR                  S5      S:X  a  SOSnUR                  S5      nUR                  S5      n
UR                  S5      (       a  US-  nOU
(       a  XÍSS -  nOXÍ-  nUR                  S5      (       a  UR                  S5      S:X  a  SOSnUR                  S5      (       a  XëR                  S5      -  nOSn[        US5      n[        US5      n	US   nUS:X  aÃ  UR                  S5      (       a-  U R                  XBR                  S5      [         ["        -  5      nO[$        nUS:X  a7  UR&                  R)                  [*        R,                  " XŠU	SSU5      5        S	nU$ US:X  a3  UR&                  R)                  [*        R,                  " XŠU	SS	U5      5        S	nU$ US:X  aJ  UR&                  R)                  [*        R,                  " XŠU	S	S[*        R.                  " 5       5      5        S	nU$ US:X  aF  UR&                  R)                  [*        R,                  " XŠU	S	S	[*        R.                  " 5       5      5        S	nU$ )zParse `nth` pseudo.r  Ú_childÚ_typer}   rã   ÚevenrX   r   TÚoddr   Ús1r”   r‚   ÚaÚnÚ1Nr  Ús2ÚbÚ0é
   ÚofrK   FrM   rL   rN   )Ú	groupdictrÚ   r   rv   rz   r   r
   r�   ÚRE_NTHrx   rƒ   Úendswithr"  r„   rZ  r;  r=  r[  ÚCSS_NTH_OF_S_DEFAULTrã   r¢   rî   rX  rï   )r·   rñ   r‡   r&  r_  ÚmdictÚpostfixr‘   ri  rm  ÚvarÚ	nth_partsÚ_s1rj  Ú_s2Ú
pseudo_selÚnth_sels                    rm   Úparse_pseudo_nthÚCSSParser.parse_pseudo_nth©  s¨  € ð —‘“ˆØ�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Ø—‘ Ó$ˆAØ—*‘*˜S“/ˆCØ�|‰|˜C× Ñ Ø�s‘
‘ÞØ˜˜"�v‘‘à‘�Ø"Ÿ™¨×.Ñ.°9·?±?À4Ó3HÈCÓ3O‘#ÐUWˆCØ�‰˜s×#Ñ#Ø—‘ sÓ+Ñ+‘à�Ü�S˜"“ˆBÜ�S˜"“ˆBà˜6‘]ˆ
Ø�hÓØ�w‰w�t�}‰}à×.Ñ.¨y¿%¹%À»(ÄJÔQYÑDYÓZ‘ô /�Ø˜\Ó)Ø—‘—‘œrŸ~š~¨b°r¸5À%ÈÓQÔRð ˆØÐð Ð0Ó0Ø—‘—‘œrŸ~š~¨b°r¸5À$ÈÓPÔQð ˆØÐð ˜^Ó+Ø—‘—‘œrŸ~š~¨b°r¸4ÀÌÏÊÓHYÓZÔ[ð ˆØÐð Ð2Ó2Ø—‘—‘œrŸ~š~¨b°r¸4ÀÄrÇÂÓGXÓYÔZØˆØÐro   c                óØ   • [         [        -  nUS:X  a
  U[        -  nOUS:X  a
  U[        -  nOUS;   a	  U[        -  nUR
                  R                  U R                  XEU5      5        SnU$ )z"Parse pseudo with opening bracket.rB   rA   )rC   r@   T)r=  r[  ÚFLG_NOTÚFLG_RELATIVEÚFLG_FORGIVErä   r¢   rZ  )r·   rñ   r}   r&  r_  r©   rd   s          rm   rC  ÚCSSParser.parse_pseudo_openê  sm   € ô œXÑ%ˆØ�6‹>Ø”WÑ‰EØ�V‹^Ø”\Ñ!‰EØÐ&Ó&Ø”[Ñ ˆEà�‰×Ñ˜T×1Ñ1°)ÀEÓJÔKØˆàÐro   c                óÌ  • UR                  S5      R                  5       nU(       d  [        nU[        :X  aG  XQl        US   R
                  R                  U5        S[        -   nUR                  [        5       5        OXU(       a%  XQl        US   R
                  R                  U5        O'USS [        :w  a  [        SU 3U R                  U5      eSU-   n[        5       nSnX1U4$ )úParse combinator tokens.Úrelationr  rS   r   Nz%The multiple combinators at position F)
rƒ   ÚstripÚWS_COMBINATORÚCOMMA_COMBINATORræ   rå   r¢   rÝ   r	   rj   )r·   rñ   r‡   r&  rä   ræ   r©   Ú
combinators           rm   Úparse_has_combinatorÚCSSParser.parse_has_combinator  s×   € ð —W‘W˜ZÓ(×.Ñ.Ó0ˆ
ÞÜ&ˆJØÔ)Ó)Ø#ŒLØ�b‰M×#Ñ#×*Ñ*¨3Ô/Øœ]Ñ*ˆHØ×ÑœY›[Õ)æà'”Ø˜"‘×'Ñ'×.Ñ.¨sÕ3Ø˜!˜"�¤Ó.ô *Ø;¸E¸7ÐCØ—L‘LØóð ð ˜ZÑ'ˆHä‹kˆØˆØ (Ð*Ð*ro   c	                ó‚  • UR                  S5      R                  5       n	U	(       d  [        n	U(       dW  U(       a
  U	[        :w  a  [	        SU	 SU S3U R
                  U5      eU	[        :X  a  SUl        USS2	 UR                  U5        O§U	[        :X  af  UR                  (       d#  U(       d  [        R                  " SS5      Ul        UR                  R                  U5        UR                  U5        USS2	 O7UR                  R                  U5        X‘l        USS2	 UR                  U5        [        5       nSnX14$ )	r†  r‡  zThe combinator 'z' at position z , must have a selector before itTNrQ   F)rƒ   rˆ  r‰  rŠ  r	   rj   ré   r¢   rß   rî   r5  rå   rí   ræ   rÝ   )
r·   rñ   r‡   r&  rä   rå   Ú	is_pseudoÚ
is_forgiver©   r‹  s
             rm   Úparse_combinatorÚCSSParser.parse_combinator,  s  € ð —W‘W˜ZÓ(×.Ñ.Ó0ˆ
ÞÜ&ˆ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ˆØˆàÐ Ð ro   c                óü   • UR                  S5      nUR                  S5      (       a+  UR                  R                  [	        USS 5      5        SnU$ UR
                  R                  [	        USS 5      5        SnU$ )zParse HTML classes and ids.r   Ú.r   NT)rƒ   r"  rá   r¢   rz   rà   )r·   rñ   r‡   r&  rÁ   s        rm   Úparse_class_idÚCSSParser.parse_class_id\  st   € ð —7‘7˜1“:ˆØ×Ñ˜s×#Ñ#Ø�K‰K×Ñœ|¨H°Q°R¨LÓ9Ô:ð ˆØÐð �G‰G�N‰Nœ<¨°°¨Ó5Ô6ØˆØÐro   c                óV  • [         R                  " [        UR                  S5      5      5      nUS:X  a  [        R
                  " S[        5        US:H  n[        UR                  S5      5      n/ n[        R                  U5       Hn  nUR                  S5      (       a  M  UR                  S5      n	U	R                  S5      (       a  [        U	S	S
 S5      n	O[        U	5      n	UR                  U	5        Mp     UR                  R                  [        R                  " Xu5      5        SnU$ )zParse contains.r}   rE   z\The pseudo class ':contains' is deprecated, ':-soup-contains' should be used moving forward.rG   ÚvaluesÚsplitr|   )r  r  r   r  T)r   rv   rz   rƒ   ÚwarningsÚwarnÚFutureWarningÚ	RE_VALUESÚfinditerr"  r¢   rç   rî   ÚSelectorContains)
r·   rñ   r‡   r&  rÕ   Úcontains_ownr˜  rÐ   Útokenr|   s
             rm   Úparse_pseudo_containsÚCSSParser.parse_pseudo_containsg  sö   € ô —’œL¨¯©°«Ó9Ó:ˆØ�[Ó Ü�MŠMØnÜôð Ð!6Ñ6ˆÜ˜aŸg™g hÓ/Ó0ˆØˆÜ×'Ñ'¨Ö/ˆEØ�{‰{˜7×#Ñ#ÙØ—K‘K Ó(ˆEØ×Ñ 
×+Ñ+Ü$ U¨1¨R [°$Ó7‘ä$ UÓ+�Ø�O‰O˜EÖ"ñ 0ð 	�‰×ÑœB×/Ò/°ÓGÔHØˆØÐro   c                óœ  • UR                  S5      n/ n[        R                  U5       Hn  nUR                  S5      (       a  M  UR                  S5      nUR                  S5      (       a  [	        USS S5      nO[	        U5      nUR                  U5        Mp     UR                  R                  [        R                  " U5      5        SnU$ )zParse pseudo language.r˜  r™  r|   r  r   r  T)	rƒ   r�  rž  r"  rz   r¢   rè   rî   ÚSelectorLang)r·   rñ   r‡   r&  r˜  rÐ   r¡  r|   s           rm   Úparse_pseudo_langÚCSSParser.parse_pseudo_lang€  s«   € ð —‘˜Ó"ˆØˆÜ×'Ñ'¨Ö/ˆEØ�{‰{˜7×#Ñ#ÙØ—K‘K Ó(ˆEØ×Ñ 
×+Ñ+Ü$ U¨1¨R [°$Ó7‘ä$ UÓ+�à�O‰O˜EÖ"ñ 0ð 	�‰�‰œŸš¨Ó1Ô2ØˆàÐro   c                óÆ   • [         R                  " UR                  S5      5      S:X  a  [        R                  O[        R
                  nU=R                  U-  sl        SnU$ )zParse pseudo direction.ÚdirÚltrT)r   rv   rƒ   rî   ÚSEL_DIR_LTRÚSEL_DIR_RTLrd   )r·   rñ   r‡   r&  r|   s        rm   Úparse_pseudo_dirÚCSSParser.parse_pseudo_dir•  sD   € ô #'§*¢*¨Q¯W©W°U«^Ó"<ÀÓ"E”—’Ì2Ï>É>ˆØ�	Š	�UÑ�	ØˆØÐro   c           
     óê  • [        5       n/ nSnSn/ nS[        -   n	[        U[        -  5      n
[        U[        -  5      n[        U[
        -  5      n[        U[        -  5      n[        U[        -  5      n[        U[        -  5      n[        U[        -  5      n[        U[        -  5      n[        U[        -  5      n[        U[        -  5      n[        U[        -  5      nU R                  (       aÆ  U(       a  [        S5        U
(       a  [        S5        U(       a  [        S5        U(       a  [        S5        U(       a  [        S5        U(       a  [        S5        U(       a  [        S	5        U(       a  [        S
5        U(       a  [        S5        U(       a  [        S5        U(       a  [        S5        U(       a  UR!                  [        5       5          [#        U5      u  nnUS:X  a  [%        SUR'                  S5       35      eUS:X  a'  U=R(                  [*        R,                  -  sl        SnGO+US:X  a  U R/                  UUU5      nGOUS:X  a  U R1                  UUXaU5      u  pnGOòUS:X  a  [%        SUR'                  S5       35      eUS:X  a  U R3                  UUU5      nGO´US;   a  U R5                  UUXa5      nGO™US:X  a  U R7                  UUU5      nGO~US:X  a  U R9                  UUU5      nSnGOaUS:X  a�  U(       dF  U(       d8  [;        SUR'                  S5       3U R<                  UR'                  S5      5      eSUl        U
(       a  SnGO[;        SUR'                  S5       3U R<                  UR'                  S5      5      eUS:X  a8  U(       a  U RA                  UUXeX’5      u  pdn	O¦U RC                  UUXeX‹UU5      u  pdO�US:X  a  U RE                  UUU5      nOsUS :X  aT  U(       a9  [;        S!UR'                  S5       S"3U R<                  UR'                  S5      5      eU RG                  UUU5      nOUS#;   a  U RI                  UUU5      nURK                  S5      nGM�  U
(       a!  U(       d  [;        S$U 3U R<                  U5      eU(       a’  URN                  (       d#  U(       d  [*        RP                  " S%S&5      Ul'        U(       a%  X”l)        US'   RT                  R!                  U5        OfURT                  RW                  U5        US&S&2	 UR!                  U5        O4U(       a-  U(       a  U(       d  SUl        US&S&2	 UR!                  U5        SnU(       d  [;        SU 3U R<                  U5      eU(       a  [*        RX                  US'   l        U(       a  [*        RZ                  US'   l        U(       a  [*        R\                  US'   l        U(       a  [*        R^                  US'   l        U(       a  [*        R`                  US'   l        [*        Rb                  " U Vs/ s H  nURe                  5       PM     snXÞ5      $ ! [L         a     GNôf = fs  snf )(zParse selectors.FrS   z    is_pseudo: Truez    is_open: Truez    is_relative: Truez    is_not: Truez    is_html: Truez    is_default: Truez    is_indeterminate: Truez    is_in_range: Truez    is_out_of_range: Truez    is_placeholder_shown: Truez    is_forgive: TrueTr
  zAt-rules found at position r   r	  r  r  r  z!Pseudo-element found at position r  )r  r  r  r  r   z Expected a selector at position z)Unmatched pseudo-class close at position r  r  rß   zTag name found at position z instead of at the start)r  r  z"Unclosed pseudo-class at position rQ   Nr  )3rÝ   r‰  Úboolr[  r=  r‚  r�  ÚFLG_HTMLÚFLG_DEFAULTÚFLG_INDETERMINATEÚFLG_IN_RANGEÚFLG_OUT_OF_RANGEÚFLG_PLACEHOLDER_SHOWNrƒ  r  Úprintr¢   ÚnextÚNotImplementedErrorr^  rd   rî   rG  r>  rb  r¢  r~  r¦  r­  r	   rj   ré   rŒ  r‘  r0  r7  r•  r;  ÚStopIterationrß   r5  ræ   rå   rí   ÚSEL_DEFAULTÚSEL_INDETERMINATEÚSEL_IN_RANGEÚSEL_OUT_OF_RANGEÚSEL_PLACEHOLDER_SHOWNrï   rð   )r·   r_  r©   rd   rñ   rä   r&  Úclosedrå   ræ   Úis_openr�  Úis_relativeÚis_notr`  Ú
is_defaultÚis_indeterminateÚis_in_rangeÚis_out_of_rangeÚis_placeholder_shownr�  r{   r‡   Úss                           rm   rZ  ÚCSSParser.parse_selectors�  s²  € ô ‹kˆØˆ	ØˆØˆØˆ	ØœÑ&ˆô �uœxÑ'Ó(ˆÜ˜¤Ñ+Ó,ˆ	Ü˜5¤<Ñ/Ó0ˆÜ�eœg‘oÓ&ˆÜ�uœxÑ'Ó(ˆÜ˜%¤+Ñ-Ó.ˆ
Ü Ô(9Ñ 9Ó:ÐÜ˜5¤<Ñ/Ó0ˆÜ˜uÔ'7Ñ7Ó8ˆÜ# EÔ,AÑ$AÓBÐÜ˜%¤+Ñ-Ó.ˆ
ð �:�:ÞÜÐ+Ô,ÞÜÐ)Ô*ÞÜÐ-Ô.ÞÜÐ(Ô)ÞÜÐ)Ô*ÞÜÐ,Ô-ÞÜÐ2Ô3ÞÜÐ-Ô.ÞÜÐ1Ô2Þ#ÜÐ6Ô7ÞÜÐ,Ô-ö Ø×ÑœY›[Ô)ðD	ØÜ˜i›‘��Qð ˜)Ó#Ü-Ð0KÈAÏGÉGÐTUËJÈ<Ð.XÓYÐYØ˜E“\Ø—I’I¤§¡Ñ-•IØ#'’LØÐ1Ó1Ø#'×#AÑ#AÀ#ÀqÈ,Ó#W’LØ˜NÓ*Ø,0×,CÑ,CÀCÈÈLÐelÓ,mÑ)�L¡'ØÐ,Ó,Ü-Ð0QÐRS×RYÑRYÐZ[ÓR\ÐQ]Ð.^Ó_Ð_ØÐ-Ó-Ø#'×#=Ñ#=¸cÀ1ÀlÓ#S’LØÐCÓCØ#'×#8Ñ#8¸¸aÀÓ#Y’LØ˜MÓ)Ø#'×#9Ñ#9¸#¸qÀ,Ó#O’LØ˜LÓ(Ø#'×#8Ñ#8¸¸aÀÓ#N�Là"’GØ˜NÓ*Þ'Þ)Ü"5Ø"BÀ1Ç7Á7È1Ã:À,Ð OØ $§¡Ø !§¡¨£
ó#ð ð
 (,˜œÞØ!%˜Ùä1ØGÈÏÉÐPQË
À|ÐTØ ŸL™LØŸG™G A›Jóð ð
 ˜IÓ%Þ"Ø6:×6OÑ6OØ  L¸Xó7Ñ3˜©8ð -1×,AÑ,AØ  L¸YÐS]Ð_dó-Ñ)˜ cð ˜KÓ'Ø#'×#@Ñ#@ÀÀaÈÓ#V‘LØ˜E“\Þ#Ü1Ø9¸!¿'¹'À!»*¸ÐE]Ð^Ø ŸL™LØŸG™G A›Jóð ð
 $(×#9Ñ#9¸#¸qÀ,Ó#O‘LØ˜OÓ+Ø#'×#6Ñ#6°s¸A¸|Ó#L�LàŸ™˜a›�òC öL ž6Ü%Ø4°U°GÐ<Ø—‘Øóð ö Ø—7—7¦9äŸ.š.¨¨dÓ3�”ÞØ'”Ø˜"‘×'Ñ'×.Ñ.¨sÕ3à—‘×$Ñ$ YÔ/Øša�LØ× Ñ  Õ%ö ¦¶)àˆCŒLØš!�Ø×Ñ˜SÔ!ØˆLæô &Ø2°5°'Ð:Ø—‘Øóð ö Ü"$§.¡.ˆI�b‰MÔÞÜ"$×"6Ñ"6ˆI�b‰MÔÞÜ"$§/¡/ˆI�b‰MÔÞÜ"$×"5Ñ"5ˆI�b‰MÔÞÜ"$×":Ñ":ˆI�b‰MÔô �Š±IÓ>²I¨q §¡¦
±IÑ>ÀÓPÐPøôq ó 	Úð	üòp  ?s    ÇFY Í!DY Ø=Y0Ù
Y-Ù,Y-c              #  óp  #   • [         R                  U5      nU(       a  UR                  S5      OSn[        R                  U5      nU(       a  UR	                  S5      S-
  O[        U5      S-
  nU R                  (       a  [        SU< 35        X4::  Ga  SnU R                   H’  nUR                  XU R                  5      nU(       d  M(  UR                  5       nU R                  (       a3  [        SU SUR                  S5      < SUR	                  S5       35        UR                  S5      nXb4v •    O   UcS  X   nUS:X  a  S	U 3nO-US
:X  a  SU 3nO!US:X  a  SU 3nOUS:X  a  SU 3nO	SU< SU 3n[        X€R                  U5      eX4::  a  GM  U R                  (       a  [        S5        gg7f)zIterate selector tokens.r   r   z## PARSING: NzTOKEN: 'z' --> z at position Ú[z)Malformed attribute selector at position r”  z%Malformed class selector at position Ú#z"Malformed id selector at position rS   z,Malformed pseudo-class selector at position zInvalid character z
 position z## END PARSING)ÚRE_WS_BEGINr$  r;  Ú	RE_WS_ENDr^  r¡   r  r·  Ú
css_tokensrx   rd   r½   rƒ   r	   rj   )	r·   rj   r‡   r©   r;  Úvr}   rª   Úmsgs	            rm   Úselector_iterÚCSSParser.selector_iterT  s“  é € ô ×Ñ˜wÓ'ˆÞ�—‘�a” 1ˆÜ×Ñ˜WÓ%ˆÞ"#ˆq�w‰w�q‹z˜AŠ~¬#¨g«,¸Ñ*:ˆà�:�:Ü�L ¡Ð,Ô-ØŒlØˆAØ—_”_�Ø—G‘G˜G¨D¯J©JÓ7�ß�1ØŸ:™:›<�DØ—z—zÜ ¨¨¨f°Q·W±W¸Q³Z±NÀ-ÐPQ×PWÑPWÐXYÓPZÈ|Ð\Ô]ØŸE™E !›H�EØ˜'’MÙñ %ð ‰yØ‘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Ü)¨#¯|©|¸UÓCÐCð5 Žlð6 �:�:ÜÐ"Õ#ð ùs   ‚CF6ÃC	F6ÆF6c                óX   • U R                  U R                  U R                  5      X5      $ )zProcess selectors.)rZ  rÓ  rj   )r·   r©   rd   s      rm   ri   ÚCSSParser.process_selectors}  s&   € ð ×#Ñ# D×$6Ñ$6°t·|±|Ó$DÀeÓSÐSro   )rc   r  rd   rj   )Nr   )rÁ   r�   rc   z'dict[str, str | ct.SelectorList] | Nonerd   r„   rŒ   rÃ   )rñ   rÝ   r‡   r‹   r&  r°  rŒ   r°  )rñ   rÝ   r‡   r‹   r&  r°  r_  ú Iterator[tuple[str, Match[str]]]r`  r°  rŒ   ztuple[bool, bool])
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Œ   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_  r×  r©   r„   rd   r„   rŒ   rý   )rj   r�   rŒ   r×  )r©   r„   rd   r„   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Ð  r¸   r0  r7  r>  rb  r~  rC  rŒ  r‘  r•  r¢  r¦  r­  rZ  rÓ  ri   rÌ   rr   ro   rm   rh   rh   ¬  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ð> ;?Øð	7àð7ð 8ð7ð ð	7ð
 
õ7ôDôLôð8d%àðd%ð ðd%ð ð	d%ð
 4ðd%ð ðd%ð 
ôd%ðL?àð?ð ð?ð ð	?ð
 4ð?ð 
ô?ðBàðð ðð ð	ð
 4ðð ðð 
ôð.)+àð)+ð ð)+ð ð	)+ð
 #ð)+ð ð)+ð ð)+ð 
%ô)+ðV.!àð.!ð ð.!ð ð	.!ð
 #ð.!ð #ð.!ð ð.!ð ð.!ð ð.!ð 
 ô.!ô`	ôô2ô*ð Øð	uQà3ðuQð ðuQð ð	uQð
 
õuQôn'$÷RTñ Tro   rh   zhtml|*:is(a, area)[href]r:  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=''])
    z*|*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]
    )
rj   r�   rk   zct.Namespaces | Nonerc   úct.CustomSelectors | Nonerd   r„   rŒ   zcm.SoupSieve)rŒ   rÃ   )rc   rè  rŒ   z dict[str, str | ct.SelectorList])F)r‘   r�   r’   r°  rŒ   r�   )r¦   r�   rŒ   r�   )hrË   Ú
__future__r   r±   Ú	functoolsr   r‚   r   r   rf   r   rî   r	   rš  Útypingr
   r   r   r   r…   rD  r\  rB  rY  ÚPSEUDO_SPECIALr]  ÚNEWLINEÚWSÚCOMMENTSÚWSCÚCSS_ESCAPESÚCSS_STRING_ESCAPESÚ
IDENTIFIERÚNTHÚVALUEÚATTRrã  rä  rå  ræ  rß  rÒ   rÞ  rá  rØ  rà  râ  rÚ  rÛ  rÜ  rÝ  rç  rÙ  r²   r³   rŽ   r�   rs  r´   r�  r#  rÎ  rÏ  rw   rŠ  r‰  r=  r�  r‚  r²  r±  r³  r[  r´  rµ  r¶  rƒ  Ú	_MAXCACHErn   rs   re   rz   r«   r­   rÎ   rÝ   rh   ri   rI  rJ  rK  rL  rM  rN  rO  rR  rW  ru  rT  rS  rU  rV  rQ  rP  rr   ro   rm   Ú<module>rø     ss  ðÙ Ý "Û 	Ý Ý Ý Ý Ý %Û ß -Ó -à!Ð ò€ò<Ð ò8	€òÐ ò€ð !Ð#9Ñ9¸NÑJÐMdÑdÐguÑuÐ ð '€Ø�'�˜!Ð€à0€à	ˆRˆD��(�˜1Ð€à(¨¨¨OÐ<€Ø/°¨t°>À'ÀÈ"ÐMÐ ð8Ø8C°}ð E8Ø8C°}ð Eð€
ð
 
*¨#¨¨i¸°u¸MÐJ€à˜G˜9Ð$CÀGÀ9ÐL`ÐakÐ`lÐlmÐp€à
ˆcˆUÐ& s e¨;°u°g¸TÀ#ÀÐFYÐZ]ÐY^Ð^_Ð`€ð ˆzˆlÐ	€à�*�Ð€	à˜J˜<Ð'=¸j¸\ÈÐ
N€à��Ð% j \Ð1HÈÈÐTUÐVZÐU[Ð[]Ð^€à   ¨L¸¸¸SÐAÐ à(¨¨°LÀÀÀRÐHÐ à-¨j¨\¸Ð;Ð à
€à�e˜3�<Ð àÐ*Ð+Ð,Ð à�J�<Ð €ðØ.Ð/ð 0Øˆe�> #  k°(°¸1¸R¸DÀÀÀSÈÈ
ÐRSÐTVÐSWÐX[ÐW\ð ]ðÐ ð
Ø-Ð.ð /ØˆU�+˜c˜Uð #ðÐ ð
 /Ð/¨{¸5¸'ÀÀSÀEÈÈCÈ5ÐPQÐRWÐQXÐX[Ð\_Ð[`Ð`cÐd€à-Ð.Ð.>¸s¸eÀ3ÐG€à�Ð,¨R¨D°¸C¸5ÀÐB€à2Ð3°;¸u¸gÀSÈÈÈRÐPSÈuÐTUÐV[ÐU\Ð\_Ð`cÐ_dÐdgÐhÐ ð �ZŠZÐ0°°Ð5LÐMÈrÏtÉtÓT€
Ø—’Ð4°R°DÐ8RÐSZÐR[Ð[]Ð^Ð`b×`dÑ`dÓe€à	�ŠÐ>¸s¸eÀ=ÐQTÐPUÐUeÐfÐhj×hlÑhlÓ	m€à�JŠJ˜-¨ w¨l¸3¸%¸rÀ#ÀÀcÐJÈBÏDÉDÓQ€	à
�
Š
�2‹€Ø�jŠj˜A˜c˜U !˜Ó%€Ø�JŠJ˜3˜%˜r�{Ó#€	Ø�JŠJ˜!Ð3Ð4°AÐ6¸¿¹Ó=€	ð Ð à€ð €
Ø
€Ø€Ø€Ø€ØÐ Ø€Ø€ØÐ ØÐ Ø€ð €	ñ �9ÑðØðà$ðð &ðð ð	ð
 óó ðô,&ôöPô6÷86ñ 6ô("˜?ô "÷JAñ A÷HTTñ TTñv ØóçÑ˜* xÑ/ÐÐ0ð 	ñ ðó÷ Ñ˜* xÑ/ÐÐ0ð	 ñ ðó
÷ Ñ˜* xÑ/°+Ñ=ÐÐ>ð ñ ð
ó÷ Ñ˜* xÑ/Ð2CÑCÐÐDð ñ ðó÷ Ñ˜* xÑ/ÐÐ0ð ñ ðó÷ Ñ˜* xÑ/ÐÐ0ð	 ñ Ø2óçÑ˜* xÑ/ÐÐ0ð ñ Ø8óçÑ˜* xÑ/ÐÐ0ð ñ "ðó÷ Ñ˜* xÑ/Ð2GÑGÐÐHð ñ" !Ø	óçÑ˜*ÐÐ%ð ñ ðó÷. Ñ˜* xÑ/ÐÐ0ð/ ñ2 ðó÷ Ñ˜* xÑ/ÐÐ0ð	 ñ ðó÷ Ñ˜* |Ñ3°hÑ>ÐÐ?ð ñ" ðó÷ Ñ˜*Ð'7Ñ7¸(ÑBÐÐCð ñ$ ðó÷ Ñ˜* xÑ/ÐÐ0ð	 	ñ ðó÷ Ñ˜* xÑ/ÐÐ0ñ	 
ro   