Ë
    	š„j:M  ã                   óÎ  — d Z ddlmZmZmZmZ ddl­ ddlmZ ddl	Z	ddl
Z
 e	j                  d«      Z e	j                  d«      Z e	j                  d«      Z e	j                  d	«      Z e	j                  d
«      Z e	j                  d«      Z e	j                  d«      Z e	j                  d«      Z e	j                  d«      Z e	j                  d«      Z e	j                  d«      Z e	j                  de	j.                  «      Z e	j                  de	j.                  «      Z e	j                  d«      Z e	j                  d«      Z G d„ de«      Z G d„ dej<                  «      Zy)zLA parser for HTML and XHTML.

Backported for python-future from Python 3.3.
é    )Úabsolute_importÚdivisionÚprint_functionÚunicode_literals)Ú*)Ú_markupbaseNz[&<]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	<[a-zA-Z]ú>z--\s*>z(([a-zA-Z][-.a-zA-Z0-9:_]*)(?:\s|/(?!>))*z[a-zA-Z][^	
 /> ]*zJ\s*([a-zA-Z_][-.:a-zA-Z_0-9]*)(\s*=\s*(\'[^\']*\'|"[^"]*"|[^\s"\'=<>`]*))?z]((?<=[\'"\s/])[^\s/>][^\s/=>]*)(\s*=+\s*(\'[^\']*\'|"[^"]*"|(?![\'"])[^>\s]*))?(?:\s|/(?!>))*aê  
  <[a-zA-Z][-.a-zA-Z0-9:_]*          # tag name
  (?:\s+                             # whitespace before attribute name
    (?:[a-zA-Z_][-.:a-zA-Z0-9_]*     # attribute name
      (?:\s*=\s*                     # value indicator
        (?:'[^']*'                   # LITA-enclosed value
          |\"[^\"]*\"                # LIT-enclosed value
          |[^'\">\s]+                # bare value
         )
       )?
     )
   )*
  \s*                                # trailing whitespace
aF  
  <[a-zA-Z][-.a-zA-Z0-9:_]*          # 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 comma
       )?(?:\s|/(?!>))*
     )*
   )?
  \s*                                # trailing whitespace
z#</\s*([a-zA-Z][-.a-zA-Z0-9:_]*)\s*>c                   ó   — e Zd ZdZdd„Zd„ Zy)ÚHTMLParseErrorz&Exception raised for all parse errors.c                 óB   — |sJ ‚|| _         |d   | _        |d   | _        y )Nr   é   ©ÚmsgÚlinenoÚoffset)Úselfr   Úpositions      úS/var/www/html/GAP/venv/lib/python3.12/site-packages/future/backports/html/parser.pyÚ__init__zHTMLParseError.__init__U   s&   € Ùˆ
ˆsØˆŒØ˜q‘kˆŒØ˜q‘kˆ�ó    c                 óœ   — | j                   }| j                  �|d| j                  z  z   }| j                  �|d| j                  dz   z  z   }|S )Nz, at line %dz, column %dr   r   )r   Úresults     r   Ú__str__zHTMLParseError.__str__[   sN   € Ø—‘ˆØ�;‰;Ð"Ø˜n¨t¯{©{Ñ:Ñ:ˆFØ�;‰;Ð"Ø˜m¨t¯{©{¸Q©Ñ?Ñ?ˆFØˆr   N))NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   © r   r   r   r   R   s   „ Ù0ó"ór   r   c                   ó¸   — e Zd ZdZdZdd„Zd„ Zd„ Zd„ Zd„ Z	dZ
d	„ Zd
„ Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy) Ú
HTMLParseraÇ  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).  Entity references are
    passed by calling self.handle_entityref() with the entity
    reference as the argument.  Numeric character references are
    passed to self.handle_charref() with the string containing the
    reference as the argument.
    )ÚscriptÚstylec                 ón   — |rt        j                  dt        d¬«       || _        | j	                  «        y)zßInitialize and reset this instance.

        If strict is set to False (the default) the parser will parse invalid
        markup, otherwise it will raise an error.  Note that the strict mode
        is deprecated.
        zThe strict mode is deprecated.é   )Ú
stacklevelN)ÚwarningsÚwarnÚDeprecationWarningÚstrictÚreset)r   r)   s     r   r   zHTMLParser.__init__z   s+   € ñ Ü�M‰MÐ:Ü,¸õ<àˆŒØ�
‰
�r   c                 ó‚   — d| _         d| _        t        | _        d| _        t
        j                  j                  | «       y)z1Reset this instance.  Loses all unprocessed data.Ú z???N)ÚrawdataÚlasttagÚinteresting_normalÚinterestingÚ
cdata_elemr   Ú
ParserBaser*   ©r   s    r   r*   zHTMLParser.reset‡   s3   € àˆŒØˆŒÜ-ˆÔØˆŒÜ×Ñ×$Ñ$ TÕ*r   c                 óN   — | j                   |z   | _         | j                  d«       y)z‘Feed 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   ÚfeedzHTMLParser.feed�   s   € ð —|‘| dÑ*ˆŒØ�‰�Q�r   c                 ó&   — | j                  d«       y)zHandle any buffered data.r   N)r5   r3   s    r   ÚclosezHTMLParser.close˜   s   € à�‰�Q�r   c                 ó6   — t        || j                  «       «      ‚©N)r   Úgetpos)r   Úmessages     r   ÚerrorzHTMLParser.errorœ   s   € Ü˜W d§k¡k£mÓ4Ð4r   Nc                 ó   — | j                   S )z)Return full source of start tag: '<...>'.)Ú_HTMLParser__starttag_textr3   s    r   Úget_starttag_textzHTMLParser.get_starttag_text¡   s   € à×#Ñ#Ð#r   c                 óš   — |j                  «       | _        t        j                  d| j                  z  t        j                  «      | _        y )Nz</\s*%s\s*>)Úlowerr1   ÚreÚcompileÚIr0   )r   Úelems     r   Úset_cdata_modezHTMLParser.set_cdata_mode¥   s/   € ØŸ*™*›,ˆŒÜŸ:™: n°t·±Ñ&FÌÏÉÓMˆÕr   c                 ó(   — t         | _        d | _        y r<   )r/   r0   r1   r3   s    r   Úclear_cdata_modezHTMLParser.clear_cdata_mode©   s   € Ü-ˆÔØˆ�r   c                 ó,  — | j                   }d}t        |«      }||k  �r²| j                  j                  ||«      }|r|j	                  «       }n| j
                  r�nu|}||k  r| j                  ||| «       | j                  ||«      }||k(  r�nA|j                  } |d|«      �r`t        j                  ||«      r| j                  |«      }n« |d|«      r| j                  |«      }n� |d|«      r| j                  |«      }nu |d|«      r| j                  |«      }nZ |d|«      r0| j                  r| j!                  |«      }n3| j#                  |«      }n!|dz   |k  r| j                  d«       |dz   }n�nX|dk  rt|s�nO| j                  r| j%                  d«       |j'                  d	|dz   «      }|dk  r |j'                  d|dz   «      }|dk  r|dz   }n|dz  }| j                  ||| «       | j                  ||«      }�nÄ |d
|«      r t(        j                  ||«      }|rY|j+                  «       dd }	| j-                  |	«       |j/                  «       } |d|dz
  «      s|dz
  }| j                  ||«      }�Œgd||d  v r&| j                  |dd «       | j                  |d«      }�n" |d|«      �r
t0        j                  ||«      }|rW|j+                  d«      }	| j3                  |	«       |j/                  «       } |d|dz
  «      s|dz
  }| j                  ||«      }�Œt4        j                  ||«      }|rS|rP|j+                  «       ||d  k(  r:| j                  r| j%                  d«       n|k  r|}| j                  ||dz   «      }n>|dz   |k  r'| j                  d«       | j                  ||dz   «      }nnJ d«       ‚||k  r�Œ²|r7||k  r2| j
                  s&| j                  ||| «       | j                  ||«      }||d  | _         y )Nr   ú<ú</ú<!--ú<?ú<!r   zEOF in middle of constructr	   ú&#r$   éÿÿÿÿú;ú&z#EOF in middle of entity or char refzinteresting.search() lied)r-   Úlenr0   ÚsearchÚstartr1   Úhandle_dataÚ	updateposÚ
startswithÚstarttagopenÚmatchÚparse_starttagÚparse_endtagÚparse_commentÚparse_pir)   Úparse_declarationÚparse_html_declarationr?   ÚfindÚcharrefÚgroupÚhandle_charrefÚendÚ	entityrefÚhandle_entityrefÚ
incomplete)
r   rh   r-   ÚiÚnr]   Újr[   ÚkÚnames
             r   r5   zHTMLParser.goahead°   sì  € Ø—,‘,ˆØˆÜ�‹LˆØ�!‹eØ×$Ñ$×+Ñ+¨G°QÓ7ˆEÙØ—K‘K“M‘à—?’?ÙØ�Ø�1Šu�d×&Ñ& w¨q° |Ô4Ø—‘˜q !Ó$ˆAØ�AŠv‘uØ ×+Ñ+ˆJÙ˜#˜qÕ!Ü×%Ñ% g¨qÔ1Ø×+Ñ+¨AÓ.‘AÙ  aÔ(Ø×)Ñ)¨!Ó,‘AÙ ¨Ô*Ø×*Ñ*¨1Ó-‘AÙ  aÔ(ØŸ™ aÓ(‘AÙ  aÔ(Ø—{’{Ø ×2Ñ2°1Ó5™à ×7Ñ7¸Ó:™Ø˜!‘e˜q’[Ø×$Ñ$ SÔ)Ø˜A™‘AáØ�q’5ÙÙØ—{’{ØŸ
™
Ð#?Ô@ØŸ™ S¨!¨a©%Ó0�AØ˜1’uØ#ŸL™L¨¨a°!©eÓ4˜Ø˜qš5Ø ! A¡™Aà˜Q™˜Ø×$Ñ$ W¨Q¨q \Ô2Ø—N‘N 1 aÓ(’Ù˜D !Ô$ÜŸ™ g¨qÓ1�ÙØ Ÿ;™;›=¨¨2Ð.�DØ×'Ñ'¨Ô-ØŸ	™	›�AÙ% c¨1¨Q©3Ô/Ø ™E˜ØŸ™ q¨!Ó,�AÙà˜g a b˜kÑ)Ø×(Ñ(¨°°1¨Ô6Ø ŸN™N¨1¨aÓ0˜ÙÙ˜C Õ#Ü!Ÿ™¨°Ó3�ÙØ Ÿ;™; q›>�DØ×)Ñ)¨$Ô/ØŸ	™	›�AÙ% c¨1¨Q©3Ô/Ø ™E˜ØŸ™ q¨!Ó,�AÙÜ"×(Ñ(¨°!Ó4�Ùá˜uŸ{™{›}°¸¸°Ò;ØŸ;š;Ø ŸJ™JÐ'LÕMà  AšvØ$% Ø $§¡¨q°!°a±%Ó 8˜AàØ˜!‘e˜q’[ð ×$Ñ$ SÔ)ØŸ™ q¨!¨a©%Ó0‘Aàà5Ð5Ó5�qðu �!Œeñx �1�q’5 §¢Ø×Ñ˜W Q q˜\Ô*Ø—‘˜q !Ó$ˆAØ˜q˜r�{ˆ�r   c                 óp  — | j                   }|||dz    dk(  sJ d«       ‚|||dz    dk(  r| j                  |«      S |||dz    dk(  r| j                  |«      S |||dz    j                  «       d	k(  r7|j	                  d
|dz   «      }|dk(  ry| j                  ||dz   | «       |dz   S | j                  |«      S )Nr$   rQ   z+unexpected call to parse_html_declaration()é   rO   é   z<![é	   z	<!doctyper	   rS   r   )r-   r`   Úparse_marked_sectionrD   rd   Úhandle_declÚparse_bogus_comment)r   rl   r-   Úgtposs       r   rc   z!HTMLParser.parse_html_declaration  sä   € Ø—,‘,ˆØ�q˜˜1™ˆ~ Ò%ð 	Dð )Có 	DÐ%à�1�Q�q‘Sˆ>˜VÒ#à×%Ñ% aÓ(Ð(Ø�Q�q˜‘sˆ^˜uÒ$Ø×,Ñ,¨QÓ/Ð/Ø�Q�q˜‘sˆ^×!Ñ!Ó# {Ò2à—L‘L  a¨¡cÓ*ˆEØ˜Š{ØØ×Ñ˜W Q q¡S¨Ð/Ô0Ø˜‘7ˆNà×+Ñ+¨AÓ.Ð.r   c                 ó®   — | j                   }|||dz    dv sJ d«       ‚|j                  d|dz   «      }|dk(  ry|r| j                  ||dz   | «       |dz   S )Nr$   )rQ   rN   z"unexpected call to parse_comment()r	   rS   r   )r-   rd   Úhandle_comment)r   rl   Úreportr-   Úposs        r   rw   zHTMLParser.parse_bogus_comment-  su   € Ø—,‘,ˆØ�q˜˜1™ˆ~ Ñ-ð 	Cð 1Bó 	CÐ-à�l‰l˜3  !¡Ó$ˆØ�"Š9ØÙØ×Ñ ¨¨!©¨CÐ 0Ô1Ø�Q‰wˆr   c                 óè   — | j                   }|||dz    dk(  sJ d«       ‚t        j                  ||dz   «      }|sy|j                  «       }| j	                  ||dz   | «       |j                  «       }|S )Nr$   rP   zunexpected call to parse_pi()rS   )r-   ÚpicloserW   rX   Ú	handle_pirh   )r   rl   r-   r]   rn   s        r   ra   zHTMLParser.parse_pi9  st   € Ø—,‘,ˆØ�q˜˜1™ˆ~ Ò%ÐFÐ'FÓFÐ%Ü—‘˜w¨¨!©Ó,ˆÙØØ�K‰K‹MˆØ�‰�w˜q ™s A�Ô'Ø�I‰I‹KˆØˆr   c                 ó.  — d | _         | j                  |«      }|dk  r|S | j                  }||| | _         g }t        j	                  ||dz   «      }|sJ d«       ‚|j                  «       }|j                  d«      j                  «       x| _        }||k  rÎ| j                  rt        j	                  ||«      }nt        j	                  ||«      }|sn’|j                  ddd«      \  }	}
}|
sd }n,|d d dcxk(  r|dd  k(  sn |d d dcxk(  r|dd  k(  rn n|dd }|r| j                  |«      }|j                  |	j                  «       |f«       |j                  «       }||k  rŒÎ||| j                  «       }|d	vrÅ| j                  «       \  }}d
| j                   v rP|| j                   j!                  d
«      z   }t#        | j                   «      | j                   j%                  d
«      z
  }n|t#        | j                   «      z   }| j                  r| j'                  d||| d d ›�«       | j)                  ||| «       |S |j+                  d«      r| j-                  ||«       |S | j/                  ||«       || j0                  v r| j3                  |«       |S )Nr   r   z#unexpected call to parse_starttag()r$   rs   ú'rS   ú")r	   ú/>ú
zjunk characters in start tag: é   rƒ   )rA   Úcheck_for_whole_start_tagr-   Útagfindr]   rh   rf   rD   r.   r)   ÚattrfindÚattrfind_tolerantÚunescapeÚappendÚstripr=   ÚcountrV   Úrfindr?   rY   ÚendswithÚhandle_startendtagÚhandle_starttagÚCDATA_CONTENT_ELEMENTSrI   )r   rl   Úendposr-   Úattrsr]   ro   ÚtagÚmÚattrnameÚrestÚ	attrvaluerh   r   r   s                  r   r^   zHTMLParser.parse_starttagE  s�  € Ø#ˆÔØ×/Ñ/°Ó2ˆØ�AŠ:ØˆMØ—,‘,ˆØ& q¨Ð0ˆÔð ˆÜ—‘˜g q¨¡sÓ+ˆÙÐ;Ð;Ó;ˆuØ�I‰I‹KˆØ"Ÿ[™[¨›^×1Ñ1Ó3Ð3ˆŒ�sØ�&ŠjØ�{Š{Ü—N‘N 7¨AÓ.‘ä%×+Ñ+¨G°QÓ7�ÙØØ()¯©°°1°aÓ(8Ñ%ˆH�d˜IÙØ ‘	Ø˜2˜A� $Ô8¨)°B°C¨.Ô8Ø˜2˜A� #Ô7¨°2°3¨Õ7Ø% a¨˜O�	ÙØ ŸM™M¨)Ó4�	Ø�L‰L˜(Ÿ.™.Ó*¨IÐ6Ô7Ø—‘“ˆAð! �&‹jð$ �a˜Ð×%Ñ%Ó'ˆØ�kÑ!Ø!Ÿ[™[›]‰NˆF�FØ�t×+Ñ+Ñ+Ø $×"6Ñ"6×"<Ñ"<¸TÓ"BÑB�Ü˜T×1Ñ1Ó2Ø×/Ñ/×5Ñ5°dÓ;ñ<‘ð  ¤# d×&:Ñ&:Ó";Ñ;�Ø�{Š{Ø—
’
Ø% a¨Ð/°°Ñ4ð7ô 8à×Ñ˜W Q vÐ.Ô/ØˆMØ�<‰<˜Ôà×#Ñ# C¨Ô/ð
 ˆð × Ñ   eÔ,Ø�d×1Ñ1Ñ1Ø×#Ñ# CÔ(Øˆr   c                 óP  — | j                   }| j                  rt        j                  ||«      }nt        j                  ||«      }|rÕ|j                  «       }|||dz    }|dk(  r|dz   S |dk(  rh|j                  d|«      r|dz   S |j                  d|«      ry| j                  r&| j                  ||dz   «       | j                  d«       ||kD  r|S |dz   S |dk(  ry|d	v ry| j                  r#| j                  ||«       | j                  d
«       ||kD  r|S |dz   S t        d«      ‚)Nr   r	   ú/rƒ   r$   rS   zmalformed empty start tagr,   z6abcdefghijklmnopqrstuvwxyz=/ABCDEFGHIJKLMNOPQRSTUVWXYZzmalformed start tagzwe should not get here!)
r-   r)   Úlocatestarttagendr]   Úlocatestarttagend_tolerantrh   r[   rZ   r?   ÚAssertionError)r   rl   r-   r–   rn   Únexts         r   r†   z$HTMLParser.check_for_whole_start_tag~  s0  € Ø—,‘,ˆØ�;Š;Ü!×'Ñ'¨°Ó3‰Aä*×0Ñ0°¸!Ó<ˆAÙØ—‘“ˆAØ˜1˜Q˜q™S�>ˆDØ�sŠ{Ø˜1‘u�Ø�sŠ{Ø×%Ñ% d¨AÔ.Ø˜q™5�LØ×%Ñ% c¨1Ô-àà—;’;Ø—N‘N 1 a¨!¡eÔ,Ø—J‘JÐ:Ô;Ø�q’5Ø�Hà˜q™5�LØ�rŠzàØð 5ñ 6ð Ø�{Š{Ø—‘˜q !Ô$Ø—
‘
Ð0Ô1Ø�1ŠuØ�à˜1‘u�ÜÐ6Ó7Ð7r   c                 ór  — | j                   }|||dz    dk(  sJ d«       ‚t        j                  ||dz   «      }|sy|j                  «       }t        j                  ||«      }|sÕ| j                  �| j                  ||| «       |S | j                  r| j                  d||| ›�«       t        j                  ||dz   «      }|s!|||dz    dk(  r|dz   S | j                  |«      S |j                  «       j                  «       }|j                  d	|j                  «       «      }| j                  |«       |dz   S |j                  d«      j                  «       }| j                  �%|| j                  k7  r| j                  ||| «       |S | j                  |j                  «       «       | j!                  «        |S )
Nr$   rN   zunexpected call to parse_endtagr   rS   zbad end tag: rs   z</>r	   )r-   Ú	endendtagrW   rh   Ú
endtagfindr]   r1   rY   r)   r?   Útagfind_tolerantrw   rf   rD   rd   Úhandle_endtagrK   )r   rl   r-   r]   rx   Ú	namematchÚtagnamerH   s           r   r_   zHTMLParser.parse_endtag©  sš  € Ø—,‘,ˆØ�q˜˜1™ˆ~ Ò%ÐHÐ'HÓHÐ%Ü× Ñ  ¨!¨A©#Ó.ˆÙØØ—	‘	“ˆÜ× Ñ  ¨!Ó,ˆÙØ�‰Ð*Ø× Ñ  ¨¨5Ð!1Ô2Ø�Ø�{Š{Ø—
’
°¸¸%Ñ0@ÐBÔCä(×.Ñ.¨w¸¸!¹Ó<ˆIÙà˜1˜Q˜q™S�> UÒ*Ø˜Q™3�Jà×3Ñ3°AÓ6Ð6Ø—o‘oÓ'×-Ñ-Ó/ˆGð
 —L‘L  i§m¡m£oÓ6ˆEØ×Ñ˜wÔ'Ø˜‘7ˆNà�{‰{˜1‹~×#Ñ#Ó%ˆØ�?‰?Ð&Ø�t—‘Ò&Ø× Ñ  ¨¨5Ð!1Ô2Ø�à×Ñ˜4Ÿ:™:›<Ô(Ø×ÑÔØˆr   c                 óJ   — | j                  ||«       | j                  |«       y r<   )r‘   r¤   ©r   r•   r”   s      r   r�   zHTMLParser.handle_startendtagÓ  s    € Ø×Ñ˜S %Ô(Ø×Ñ˜3Õr   c                  ó   — y r<   r   r¨   s      r   r‘   zHTMLParser.handle_starttagØ  ó   € Ør   c                  ó   — y r<   r   )r   r•   s     r   r¤   zHTMLParser.handle_endtagÜ  rª   r   c                  ó   — y r<   r   ©r   rp   s     r   rg   zHTMLParser.handle_charrefà  rª   r   c                  ó   — y r<   r   r­   s     r   rj   zHTMLParser.handle_entityrefä  rª   r   c                  ó   — y r<   r   r6   s     r   rY   zHTMLParser.handle_dataè  rª   r   c                  ó   — y r<   r   r6   s     r   rz   zHTMLParser.handle_commentì  rª   r   c                  ó   — y r<   r   )r   Údecls     r   rv   zHTMLParser.handle_declð  rª   r   c                  ó   — y r<   r   r6   s     r   r   zHTMLParser.handle_piô  rª   r   c                 óF   — | j                   r| j                  d|›�«       y y )Nzunknown declaration: )r)   r?   r6   s     r   Úunknown_declzHTMLParser.unknown_decl÷  s   € Ø�;Š;Ø�JŠJ±DÐ:Õ;ð r   c                 óB   — d|vr|S d„ }t        j                  d||«      S )NrU   c                 óº  — | j                  «       d   } 	 | d   dk(  rP| dd  } | d   dv rt        | dd  j                  d«      d«      }nt        | j                  d«      «      }t        |«      S 	 ddlm} | |v r||    S | j                  d«      rd| z   S t        d	t        | «      «      D ]  }| d | |v sŒ|| d |    | |d  z   c S  d| z   S # t        $ r d
| z   cY S w xY w)Nr   ú#r   )ÚxÚXrT   é   )Úhtml5rU   r$   rR   )
ÚgroupsÚintÚrstripÚchrÚfuture.backports.html.entitiesr¼   r�   ÚrangerV   Ú
ValueError)ÚsÚcr¼   r¹   s       r   ÚreplaceEntitiesz,HTMLParser.unescape.<locals>.replaceEntitiesÿ  s  € Ø—‘“
˜1‘ˆAð#Ø�Q‘4˜3’;Ø˜!˜"˜�AØ˜‘t˜yÑ(Ü  ! " §¡¨SÓ 1°2Ó6™ä §¡¨£Ó.˜Ü˜q›6�Mð õ AØ˜‘:Ø  ™8�OØ—Z‘Z ”_Ø ™7�NÜ˜q¤# a£&Ó)ò #�AØ˜˜!�u ’~Ø$ Q r¨ U™|¨a°°¨eÑ3Ò3ð#ð  ™7�Nøô ò  Ø˜a‘x’ð ús   •AC	 Ã	CÃCz&&(#?[xX]?(?:[0-9a-fA-F]+;|\w{1,32};?)))rE   Úsub)r   rÄ   rÆ   s      r   rŠ   zHTMLParser.unescapeü  s.   € Ø�a‰<ØˆHò	#ô0 �v‰vÐ?Ø% qó*ð 	*r   )F)r   ) r   r   r   r   r’   r   r*   r8   r:   r?   rA   rB   rI   rK   r5   rc   rw   ra   r^   r†   r_   r�   r‘   r¤   rg   rj   rY   rz   rv   r   rµ   rŠ   r   r   r   r    r    d   sž   „ ñð& 1Ðóò+òòò5ð €Oò$òNòòc#òP/ó*	ò	ò5òr(8òV'òT ò
òòòòòòòò<ó
*r   r    ) r   Ú
__future__r   r   r   r   Úfuture.builtinsÚfuture.backportsr   rE   r&   rF   r/   rk   ri   re   r\   r~   Úcommentcloser‡   r£   rˆ   r‰   ÚVERBOSErœ   r�   r¡   r¢   Ú	Exceptionr   r2   r    r   r   r   ú<module>rÎ      sn  ðñ÷:ó :ä Ý (Û 	Û ð  �R—Z‘Z Ó'Ð ØˆR�Z‰Z˜Ó%€
àˆB�J‰JÐ>Ó?€	Ø
ˆ"�*‰*Ð@Ó
A€àˆr�z‰z˜+Ó&€Ø
ˆ"�*‰*�S‹/€Øˆr�z‰z˜)Ó$€Ø
ˆ"�*‰*Ð?Ó
@€ð �2—:‘:Ð;Ó<Ð ð ˆ2�:‰:ð,ó-€ð �B—J‘Jð=ó>Ð ð �B—J‘Jð  ð ‡Z�ZóÐ ð (˜RŸZ™Zð )ð ‡Z�ZóÐ ð ˆB�J‰J�s‹O€	ð ˆR�Z‰ZÐ=Ó>€
ô�Yô ô$t*�×'Ñ'õ t*r   