ó
    •JÕiæT  ã                   ó  • S r SSKrSSKrSSKJr  SSKJr  S/r\R                  " S5      r
\R                  " S5      r\R                  " S5      r\R                  " S	5      r\R                  " S
5      r\R                  " S5      r\R                  " S5      r\R                  " S5      r\R                  " S5      r\R                  " S5      r\R                  " S5      r\R                  " S5      r\R                  " S\R,                  5      r\R                  " S\R,                  5      r\R                  " S\R,                  5      r\R                  " S5      r\R                  " S5      rS rS r " S S\R<                  5      rg)zA parser for HTML and XHTML.é    N)Úunescape)Úhtml5Ú
HTMLParserz[&<]z
&[a-zA-Z#]z%&([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]z)&#(?:[0-9]+|[xX][0-9a-fA-F]+)[^0-9a-fA-F]z&#(?:[0-9]|[xX][0-9a-fA-F])z6&(#[0-9]+|#[xX][0-9a-fA-F]+|[a-zA-Z][a-zA-Z0-9]*)[;=]?z	<[a-zA-Z]z
</[a-zA-Z]Ú>z--!?>z-?>z0([a-zA-Z][^\t\n\r\f />]*)(?:[\t\n\r\f ]|/(?!>))*a{  
  (
    (?<=['"\t\n\r\f /])[^\t\n\r\f />][^\t\n\r\f /=>]*  # attribute name
   )
  ([\t\n\r\f ]*=[\t\n\r\f ]*        # value indicator
    ('[^']*'                        # LITA-enclosed value
    |"[^"]*"                        # LIT-enclosed value
    |(?!['"])[^>\t\n\r\f ]*         # bare value
    )
   )?
  (?:[\t\n\r\f ]|/(?!>))*           # possibly followed by a space
a  
  [a-zA-Z][^\t\n\r\f />]*           # tag name
  [\t\n\r\f /]*                     # optional whitespace before attribute name
  (?:(?<=['"\t\n\r\f /])[^\t\n\r\f />][^\t\n\r\f /=>]*  # attribute name
    (?:[\t\n\r\f ]*=[\t\n\r\f ]*    # value indicator
      (?:'[^']*'                    # LITA-enclosed value
        |"[^"]*"                    # LIT-enclosed value
        |(?!['"])[^>\t\n\r\f ]*     # bare value
       )
     )?
    [\t\n\r\f /]*                   # possibly followed by a space
   )*
   >?
aF  
  <[a-zA-Z][^\t\n\r\f />\x00]*       # tag name
  (?:[\s/]*                          # optional whitespace before attribute name
    (?:(?<=['"\s/])[^\s/>][^\s/=>]*  # attribute name
      (?:\s*=+\s*                    # value indicator
        (?:'[^']*'                   # LITA-enclosed value
          |"[^"]*"                   # LIT-enclosed value
          |(?!['"])[^>\s]*           # bare value
         )
        \s*                          # possibly followed by a space
       )?(?:\s|/(?!>))*
     )*
   )?
  \s*                                # trailing whitespace
z#</\s*([a-zA-Z][-.a-zA-Z0-9:_]*)\s*>c                 óÆ   • U R                  S5      nUR                  S5      (       a  [        U5      $ UR                  S5      (       d  USS  [        ;   a  [        U5      $ U$ )Nr   ú&#Ú=é   )ÚgroupÚ
startswithr   ÚendswithÚhtml5_entities)ÚmatchÚrefs     ÚLib\html\parser.pyÚ_replace_attr_charrefr   ]   sU   € Ø
�+‰+�a‹.€Cà
‡~�~�d×ÑÜ˜‹}Ðð �<‰<˜×Ñ  Q R ¬NÓ!:Ü˜‹}Ðà€Jó    c                 ó6   • [         R                  [        U 5      $ ©N)Úattr_charrefÚsubr   )Úss    r   Ú_unescape_attrvaluer   i   s   € Ü×ÑÔ1°1Ó5Ð5r   c                   óò   ^ • \ rS rSrSrSrSrSSS.U 4S jjrU 4S	 jrS
 r	S r
SrS rSS.S jrS rS%S jrS rS rS%S jrS&S jrS rS rS rS rS rS rS rS rS rS rS  rS! rS" r S# r!S$r"U =r#$ )'r   ém   a  Find tags and other markup and call handler functions.

Usage:
    p = HTMLParser()
    p.feed(data)
    ...
    p.close()

Start tags are handled by calling self.handle_starttag() or
self.handle_startendtag(); end tags by self.handle_endtag().  The
data between tags is passed from the parser to the derived class
by calling self.handle_data() with the data as argument (the data
may be split up in arbitrary chunks).  If convert_charrefs is
True the character references are converted automatically to the
corresponding Unicode character (and self.handle_data() is no
longer split in chunks), otherwise they are passed by calling
self.handle_entityref() or self.handle_charref() with the string
containing respectively the named or numeric reference as the
argument.
)ÚscriptÚstyleÚxmpÚiframeÚnoembedÚnoframes)ÚtextareaÚtitleTF)Úconvert_charrefsÚ	scriptingc                óZ   >• [         TU ]  5         Xl        X l        U R	                  5         g)aJ  Initialize and reset this instance.

If convert_charrefs is true (the default), all character references
are automatically converted to the corresponding Unicode characters.

If *scripting* is false (the default), the content of the
``noscript`` element is parsed normally; if it's true,
it's returned as is without being parsed.
N)ÚsuperÚ__init__r$   r%   Úreset)Úselfr$   r%   Ú	__class__s      €r   r(   ÚHTMLParser.__init__‰   s$   ø€ ô 	‰ÑÔØ 0ÔØ"ŒØ�
‰
�r   c                 ó~   >• SU l         SU l        [        U l        SU l        SU l        SU l        [        TU ]!  5         g)z1Reset this instance.  Loses all unprocessed data.Ú z???NT)	ÚrawdataÚlasttagÚinteresting_normalÚinterestingÚ
cdata_elemÚ_support_cdataÚ
_escapabler'   r)   )r*   r+   s    €r   r)   ÚHTMLParser.reset˜   s8   ø€ àˆŒØˆŒÜ-ˆÔØˆŒØ"ˆÔØˆŒÜ‰‰�r   c                 óN   • U R                   U-   U l         U R                  S5        g)zyFeed data to the parser.

Call this as often as you want, with as little or as much text
as you want (may include '\n').
r   N)r/   Úgoahead©r*   Údatas     r   ÚfeedÚHTMLParser.feed¢   s   € ð —|‘| dÑ*ˆŒØ�‰�Q�r   c                 ó&   • U R                  S5        g)zHandle any buffered data.r
   N)r8   ©r*   s    r   ÚcloseÚHTMLParser.close«   s   € à�‰�Q�r   Nc                 ó   • U R                   $ )z)Return full source of start tag: '<...>'.)Ú_HTMLParser__starttag_textr>   s    r   Úget_starttag_textÚHTMLParser.get_starttag_text±   s   € à×#Ñ#Ð#r   ©Ú	escapablec                óä  • UR                  5       U l        X l        U R                  S:X  a  [        R                  " S5      U l        g U(       aZ  U R                  (       dI  [        R                  " SU R                  -  [        R                  [        R                  -  5      U l        g [        R                  " SU R                  -  [        R                  [        R                  -  5      U l        g )NÚ	plaintextz\Zz&|</%s(?=[\t\n\r\f />])z</%s(?=[\t\n\r\f />]))	Úlowerr3   r5   ÚreÚcompiler2   r$   Ú
IGNORECASEÚASCII)r*   ÚelemrF   s      r   Úset_cdata_modeÚHTMLParser.set_cdata_modeµ   sš   € ØŸ*™*›,ˆŒØ#ŒØ�?‰?˜kÓ)Ü!Ÿzšz¨%Ó0ˆDÕÞ˜t×4×4Ü!ŸzšzÐ*DÀtÇÁÑ*VÜ*,¯-©-¼¿¹Ñ*@ó BˆDÕô  "ŸzšzÐ*BÀTÇ_Á_Ñ*TÜ*,¯-©-¼¿¹Ñ*@ó BˆDÕr   c                 ó6   • [         U l        S U l        SU l        g )NT)r1   r2   r3   r5   r>   s    r   Úclear_cdata_modeÚHTMLParser.clear_cdata_modeÁ   s   € Ü-ˆÔØˆŒØˆ�r   c                 ó   • Xl         g)aÐ  Enable or disable support of the CDATA sections.
If enabled, "<[CDATA[" starts a CDATA section which ends with "]]>".
If disabled, "<[CDATA[" starts a bogus comments which ends with ">".

This method is not called by default. Its purpose is to be called
in custom handle_starttag() and handle_endtag() methods, with
value that depends on the adjusted current node.
See https://html.spec.whatwg.org/multipage/parsing.html#markup-declaration-open-state
for details.
N)r4   )r*   Úflags     r   Ú_set_support_cdataÚHTMLParser._set_support_cdataÆ   s
   € ð #Õr   c                 ó2  • U R                   nSn[        U5      nX4:  Ga   U R                  (       a|  U R                  (       dk  UR	                  SU5      nUS:  aR  UR                  S[        X4S-
  5      5      nUS:¼  a,  [        R                  " S5      R                  X&5      (       d  GOvUnOHU R                  R                  X#5      nU(       a  UR                  5       nOU R                  (       a  GO-UnX5:  aR  U R                  (       a.  U R                  (       a  U R                  [        X#U 5      5        OU R                  X#U 5        U R                  X55      nX4:X  a  GO¼UR                   nU" SU5      (       Gaˆ  ["        R%                  X#5      (       a  U R'                  U5      n	O©U" SU5      (       a  U R)                  U5      n	O‰U" SU5      (       a  U R+                  U5      n	OiU" SU5      (       a  U R-                  U5      n	OIU" S	U5      (       a  U R/                  U5      n	O)US
-   U:  d  U(       a  U R                  S5        US
-   n	OGOÌU	S:  Ga™  U(       d  GO¼["        R%                  X#5      (       a  GOrU" SU5      (       aP  US-   U:X  a  U R                  S5        GOH[0        R%                  X#5      (       a  GO,U R3                  X#S-   S  5        GOU" SU5      (       aK  UnS H,  n
UR5                  X£S-   5      (       d  M  U[        U
5      -  n  O   U R3                  X#S-   U 5        O»U" SU5      (       a(  U R6                  (       a  U R9                  X#S-   S  5        O…X#US-    R;                  5       S:X  a  U R=                  X#S-   S  5        OUU" S	U5      (       a  U R3                  X#S-   S  5        O0U" SU5      (       a  U R?                  X#S-   S  5        O[A        S5      eUn	U R                  X95      nGOU" SU5      (       aú  [B        R%                  X#5      nU(       a^  URE                  5       SS nU RG                  U5        URI                  5       n	U" SU	S
-
  5      (       d  U	S
-
  n	U R                  X95      nGMu  [J        R%                  X#5      nU(       a2  U(       a)  U RG                  X#S-   S  5        U R                  X45      nGOEGOCUS-   U:  a'  U R                  S5        U R                  X3S-   5      nGOGOU" SU5      (       aô  [L        R%                  X#5      nU(       a\  URE                  S
5      nU RO                  U5        URI                  5       n	U" SU	S
-
  5      (       d  U	S
-
  n	U R                  X95      nGM{  [P        R%                  X#5      nU(       a0  U(       a(  U RO                  X#S
-   S  5        U R                  X45      nO@O?US
-   U:  a&  U R                  S5        U R                  X3S
-   5      nOO S5       eX4:  a  GM   U(       ah  X4:  ac  U R                  (       a.  U R                  (       a  U R                  [        X#U 5      5        OU R                  X#U 5        U R                  X45      nX#S  U l         g )Nr   Ú<Ú&é"   z[\t\n\r\f ;]ú</ú<!--ú<?ú<!r
   é   )z--!z--Ú-é   ú	<![CDATA[é   é	   ú	<!doctypezwe should not get here!r   éÿÿÿÿÚ;zinteresting.search() lied))r/   Úlenr$   r3   ÚfindÚrfindÚmaxrJ   rK   Úsearchr2   Ústartr5   Úhandle_datar   Ú	updateposr   Ústarttagopenr   Úparse_starttagÚparse_endtagÚparse_commentÚparse_piÚparse_html_declarationÚ
endtagopenÚhandle_commentr   r4   Úunknown_declrI   Úhandle_declÚ	handle_piÚAssertionErrorÚcharrefr   Úhandle_charrefÚendÚincomplete_charrefÚ	entityrefÚhandle_entityrefÚ
incomplete)r*   r   r/   ÚiÚnÚjÚampposr   r   ÚkÚsuffixÚnames               r   r8   ÚHTMLParser.goaheadÖ   sš  € Ø—,‘,ˆØˆÜ�‹LˆØŒeØ×$×$¨T¯_¯_Ø—L‘L  aÓ(�Ø�q“5ð %Ÿ]™]¨3´°A¸±t³Ó=�FØ !›ÜŸJšJ Ó7×>Ñ>¸w×OÑOÙØ�Aøà×(Ñ(×/Ñ/°Ó;�ÞØŸ™›‘Aà——ÙØ�AØ‹uØ×(×(¨T¯_¯_Ø×$Ñ$¤X¨g¸¨lÓ%;Õ<à×$Ñ$ W¨q \Ô2Ø—‘˜qÓ$ˆAØ‹v‘uØ ×+Ñ+ˆJÙ˜#˜q×!Ò!Ü×%Ñ% g×1Ñ1Ø×+Ñ+¨AÓ.‘AÙ  a×(Ñ(Ø×)Ñ)¨!Ó,‘AÙ ¨×*Ñ*Ø×*Ñ*¨1Ó-‘AÙ  a×(Ñ(ØŸ™ aÓ(‘AÙ  a×(Ñ(Ø×3Ñ3°AÓ6‘AØ˜!‘e˜q“[¦CØ×$Ñ$ SÔ)Ø˜A™‘AáØ�q”5ÞÙÜ#×)Ñ)¨'×5Ñ5ÙÙ# D¨!×,Ñ,Ø˜q™5 A›:Ø ×,Ñ,¨TÖ2Ü'×-Ñ-¨g×9Ñ9Ù ð !×/Ñ/°¸!¹¸°Ö>Ù# F¨A×.Ñ.Ø˜Û&8˜FØ&×/Ñ/°¸!¹×<Ó<Ø !¤S¨£[Ñ 0 Ù %ñ '9ð ×+Ñ+¨G°a±C¸¨NÕ;Ù# K°×3Ñ3¸×8K×8KØ×)Ñ)¨'°A±#°$¨-Õ8Ø  1 Q¡3˜×-Ñ-Ó/°;Ó>Ø×(Ñ(¨°1±°¨Õ7Ù# D¨!×,Ñ,à×+Ñ+¨G°a±C°D¨MÕ:Ù# D¨!×,Ñ,ØŸ™ w°©s¨t }Õ5ä,Ð-FÓGÐGØ�AØ—N‘N 1Ó(’Ù˜D !×$Ñ$ÜŸ™ gÓ1�ÞØ Ÿ;™;›=¨¨2Ð.�DØ×'Ñ'¨Ô-ØŸ	™	›�AÙ% c¨1¨Q©3×/Ñ/Ø ™E˜ØŸ™ qÓ,�AÚÜ*×0Ñ0°Ó<�ÞÞØ×+Ñ+¨G°a±C°D¨MÔ:Ø ŸN™N¨1Ó0˜ÙáØ˜‘U˜Q“Yð ×$Ñ$ TÔ*ØŸ™ q¨a©%Ó0’AáÙ˜C ×#Ñ#Ü!Ÿ™¨Ó3�ÞØ Ÿ;™; q›>�DØ×)Ñ)¨$Ô/ØŸ	™	›�AÙ% c¨1¨Q©3×/Ñ/Ø ™E˜ØŸ™ qÓ,�AÚÜ"×(Ñ(¨Ó4�ÞÞØ×-Ñ-¨g¸±c°d¨mÔ<Ø ŸN™N¨1Ó0˜ØàØ˜‘U˜Q“Yð ×$Ñ$ SÔ)ØŸ™ q¨a©%Ó0‘Aàà5Ð5Ó5�qðG ŽeöJ �1“5Ø×$×$¨¯¯Ø× Ñ ¤¨'°A¨,Ó!7Õ8à× Ñ  ¨1 Ô.Ø—‘˜qÓ$ˆAØ˜r�{ˆ�r   c                 óÞ  • U R                   nX!US-    S:X  d   S5       eX!US-    S:X  a  U R                  U5      $ X!US-    S:X  aH  U R                  (       a7  UR                  SUS-   5      nUS	:  a  g
U R	                  X!S-   U 5        US-   $ X!US-    R                  5       S:X  a7  UR                  SUS-   5      nUS
:X  a  g
U R                  X!S-   U 5        US-   $ U R                  U5      $ )Nr`   r_   z+unexpected call to parse_html_declaration()rb   r]   re   rc   z]]>r   rg   rd   rf   r   r
   )r/   rt   r4   rj   ry   rI   rz   Úparse_bogus_comment)r*   r„   r/   r†   Úgtposs        r   rv   Ú!HTMLParser.parse_html_declarationj  s  € Ø—,‘,ˆØ˜˜1™ˆ~ Ó%ð 	Dð )Có 	DÐ%à�Q�q‘Sˆ>˜VÓ#à×%Ñ% aÓ(Ð(Ø�q˜‘sˆ^˜{Ó*¨t×/B×/BØ—‘˜U A a¡CÓ(ˆAØ�1‹uØØ×Ñ˜g¨¡c¨1˜oÔ.Ø�q‘5ˆLØ�q˜‘sˆ^×!Ñ!Ó# {Ó2à—L‘L  a¨¡cÓ*ˆEØ˜‹{ØØ×Ñ˜W q¡S¨Ð/Ô0Ø˜‘7ˆNà×+Ñ+¨AÓ.Ð.r   c                 óN  • U R                   nUR                  SU5      (       d   S5       e[        R                  X1S-   5      nU(       d   [        R                  X1S-   5      nU(       d  gU(       a&  UR                  5       nU R                  X1S-   U 5        UR                  5       $ )Nr]   z"unexpected call to parse_comment()rb   rg   )	r/   r   Úcommentcloserm   Úcommentabruptcloser   rn   rx   r   )r*   r„   Úreportr/   r   r†   s         r   rt   ÚHTMLParser.parse_commentƒ  s‹   € Ø—,‘,ˆØ×!Ñ! &¨!×,Ñ,ÐRÐ.RÓRÐ,Ü×#Ñ# G¨q©SÓ1ˆÞÜ&×,Ñ,¨W¸±cÓ:ˆEÞØÞØ—‘“ˆAØ×Ñ ¨!©¨Q Ô0Ø�y‰y‹{Ðr   c                 óº   • U R                   nX1US-    S;   d   S5       eUR                  SUS-   5      nUS:X  a  gU(       a  U R                  X1S-   U 5        US-   $ )Nr`   )r_   r\   z(unexpected call to parse_bogus_comment()r   rg   r
   )r/   rj   rx   )r*   r„   r“   r/   Úposs        r   r�   ÚHTMLParser.parse_bogus_comment’  sq   € Ø—,‘,ˆØ˜˜1™ˆ~ Ó-ð 	Ið 1Hó 	IÐ-à�l‰l˜3  !¡Ó$ˆØ�"‹9ØÞØ×Ñ ¨!©¨CÐ 0Ô1Ø�Q‰wˆr   c                 óî   • U R                   nX!US-    S:X  d   S5       e[        R                  X!S-   5      nU(       d  gUR                  5       nU R	                  X!S-   U 5        UR                  5       nU$ )Nr`   r^   zunexpected call to parse_pi()rg   )r/   Úpicloserm   rn   r{   r   ©r*   r„   r/   r   r†   s        r   ru   ÚHTMLParser.parse_piž  sn   € Ø—,‘,ˆØ˜˜1™ˆ~ Ó%ÐFÐ'FÓFÐ%Ü—‘˜w¨!©Ó,ˆÞØØ�K‰K‹MˆØ�‰�w ™s A�Ô'Ø�I‰I‹KˆØˆr   c                 ó,  • S U l         U R                  U5      nUS:  a  U$ U R                  nX1U U l         / n[        R	                  X1S-   5      nU(       d   S5       eUR                  5       nUR                  S5      R                  5       =U l        nXb:  a·  [        R	                  X65      nU(       d  OšUR                  SSS5      u  pšnU
(       d  S nO0US S Ss=:X  a	  USS  :X  d  O  US S Ss=:X  a	  USS  :X  a  O  OUSS nU(       a  [        U5      nUR                  U	R                  5       U45        UR                  5       nXb:  a  M·  X6U R                  5       nUS	;  a  U R                  X1U 5        U$ UR                  S
5      (       a  U R                  Xt5        U$ U R!                  Xt5        XpR"                  ;   d  U R$                  (       a  US:X  d  US:X  a  U R'                  USS9  U$ XpR(                  ;   a  U R'                  USS9  U$ )Nr   r
   z#unexpected call to parse_starttag()r`   rd   Ú'rg   Ú")r   ú/>rŸ   ÚnoscriptrH   FrE   T)rB   Úcheck_for_whole_start_tagr/   Útagfind_tolerantr   r   r   rI   r0   Úattrfind_tolerantr   ÚappendÚstripro   r   Úhandle_startendtagÚhandle_starttagÚCDATA_CONTENT_ELEMENTSr%   rO   ÚRCDATA_CONTENT_ELEMENTS)r*   r„   Úendposr/   Úattrsr   rˆ   ÚtagÚmÚattrnameÚrestÚ	attrvaluer   s                r   rr   ÚHTMLParser.parse_starttagª  s  € ð  $ˆÔØ×/Ñ/°Ó2ˆØ�A‹:ØˆMØ—,‘,ˆØ&¨Ð0ˆÔð ˆÜ ×&Ñ& w°!±Ó4ˆÞÐ;Ð;Ó;ˆuØ�I‰I‹KˆØ"Ÿ[™[¨›^×1Ñ1Ó3Ð3ˆŒ�sØ‹jÜ!×'Ñ'¨Ó3ˆAÞØØ()¯©°°1°aÓ(8Ñ%ˆH˜IÞØ ‘	Ø˜2˜A� $Õ8¨)°B°C¨.Õ8Ø˜2˜A� #Õ7¨°2°3¨Ö7Ø% a¨˜O�	ÞÜ/°	Ó:�	Ø�L‰L˜(Ÿ.™.Ó*¨IÐ6Ô7Ø—‘“ˆAð �jð ˜Ð×%Ñ%Ó'ˆØ�kÓ!Ø×Ñ˜W vÐ.Ô/ØˆMØ�<‰<˜×Ñà×#Ñ# CÔ/ð ˆð × Ñ  Ô,Ø×2Ñ2Ó2Ø—— C¨:Ó$5Ø�{Ó"Ø×#Ñ# C°5Ð#Ñ9ð ˆð ×4Ñ4Ó4Ø×#Ñ# C°4Ð#Ñ8Øˆr   c                 ó˜   • U R                   n[        R                  X!S-   5      nU(       d   eUR                  5       nX$S-
     S:w  a  gU$ )Nr
   r   rg   )r/   Úlocatetagendr   r   rš   s        r   r¡   Ú$HTMLParser.check_for_whole_start_tagÜ  sG   € Ø—,‘,ˆÜ×"Ñ" 7¨a©CÓ0ˆÞˆˆuØ�I‰I‹KˆØ�Q‘3‰<˜3ÓØØˆr   c                 ó.  • U R                   nX!US-    S:X  d   S5       eUR                  SUS-   5      S:  a  g[        R                  X!5      (       d$  X!S-   US-    S:X  a  US-   $ U R	                  U5      $ [
        R                  X!S-   5      nU(       d   eUR                  5       nX$S-
     S:w  a  g[        R                  X!S-   5      nU(       d   eUR                  S5      R                  5       nU R                  U5        U R                  5         U$ )	Nr`   r\   zunexpected call to parse_endtagr   r   rg   rd   r
   )r/   rj   rw   r   r�   r³   r   r¢   r   rI   Úhandle_endtagrR   )r*   r„   r/   r   r†   r¬   s         r   rs   ÚHTMLParser.parse_endtagæ  s  € ð —,‘,ˆØ˜˜1™ˆ~ Ó%ÐHÐ'HÓHÐ%Ø�<‰<˜˜Q˜q™SÓ! AÓ%ØÜ×Ñ ×+Ñ+Ø˜‘s˜1˜Q™3Ð 3Ó&à˜‘s�
à×/Ñ/°Ó2Ð2ä×"Ñ" 7¨a©CÓ0ˆÞˆˆuØ�I‰I‹KˆØ�Q‘3‰<˜3ÓØô !×&Ñ& w°!±Ó4ˆÞˆˆuØ�k‰k˜!‹n×"Ñ"Ó$ˆØ×Ñ˜3ÔØ×ÑÔØˆr   c                 óH   • U R                  X5        U R                  U5        g r   )r§   r¶   ©r*   r¬   r«   s      r   r¦   ÚHTMLParser.handle_startendtag  s   € Ø×Ñ˜SÔ(Ø×Ñ˜3Õr   c                 ó   • g r   © r¹   s      r   r§   ÚHTMLParser.handle_starttag	  ó   € Ør   c                 ó   • g r   r¼   )r*   r¬   s     r   r¶   ÚHTMLParser.handle_endtag  r¾   r   c                 ó   • g r   r¼   ©r*   rŠ   s     r   r~   ÚHTMLParser.handle_charref  r¾   r   c                 ó   • g r   r¼   rÂ   s     r   r‚   ÚHTMLParser.handle_entityref  r¾   r   c                 ó   • g r   r¼   r9   s     r   ro   ÚHTMLParser.handle_data  r¾   r   c                 ó   • g r   r¼   r9   s     r   rx   ÚHTMLParser.handle_comment  r¾   r   c                 ó   • g r   r¼   )r*   Údecls     r   rz   ÚHTMLParser.handle_decl!  r¾   r   c                 ó   • g r   r¼   r9   s     r   r{   ÚHTMLParser.handle_pi%  r¾   r   c                 ó   • g r   r¼   r9   s     r   ry   ÚHTMLParser.unknown_decl(  r¾   r   )	Ú__starttag_textr5   r4   r3   r$   r2   r0   r/   r%   )T)r
   )$Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r¨   r©   r(   r)   r;   r?   rB   rC   rO   rR   rV   r8   rv   rt   r�   ru   rr   r¡   rs   r¦   r§   r¶   r~   r‚   ro   rx   rz   r{   ry   Ú__static_attributes__Ú__classcell__)r+   s   @r   r   r   m   s¸   ø† ñð0 YÐØ3Ðà+/¸5÷ ð õòòð €Oò$ð 16õ 
Bòô
#ò O#òh/ô2ô	ò	ò.òdòò< ò
òòòòòòò÷ð r   ) rÖ   rJ   Ú_markupbaseÚhtmlr   Úhtml.entitiesr   r   Ú__all__rK   r1   rƒ   r�   r}   r€   r   rq   rw   r™   r‘   r’   r¢   ÚVERBOSEr£   r³   Úlocatestarttagend_tolerantÚ	endendtagÚ
endtagfindr   r   Ú
ParserBaser   r¼   r   r   Ú<module>râ      si  ðÙ "ó 
Û å Ý 1ð ˆ.€ð —Z’Z Ó'Ð Ø�ZŠZ˜Ó%€
à�JŠJÐ>Ó?€	Ø
�*Š*Ð@Ó
A€Ø—Z’ZÐ =Ó>Ð Ø�zŠzÐSÓT€à�zŠz˜+Ó&€Ø�ZŠZ˜Ó%€
Ø
�*Š*�S‹/€Ø�zŠz˜(Ó#€Ø—Z’Z Ó'Ð ð —:’:ÐQÓRÐ Ø—J’Jð  ð ‡Z�ZóÐ ð �zŠzð ð ‡Z�Zó€ð   ŸZšZð )ð ‡Z�ZóÐ ð �JŠJ�s‹O€	Ø�ZŠZÐ>Ó?€
ò
ò6ô|�×'Ñ'õ |r   