HEX
Server: Apache/2.4.67 (Debian)
System: Linux vps-b2547eb4 6.1.0-41-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.158-1 (2025-11-09) x86_64
User: root (0)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: //lib/python3.11/html/__pycache__/parser.cpython-311.pyc
�

(��itF���dZddlZddlZddlmZdgZejd��Zejd��Zejd��Z	ejd��Z
ejd	��Zejd
��Zejd��Z
ejd��Zejd
��Zejd��Zejdej��Zejd��Zejd��ZGd�dej��ZdS)zA parser for HTML and XHTML.�N)�unescape�
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	<[a-zA-Z]z
</[a-zA-Z]�>z--\s*>z+([a-zA-Z][^\t\n\r\f />\x00]*)(?:\s|/(?!>))*z]((?<=[\'"\s/])[^\s/>][^\s/=>]*)(\s*=+\s*(\'[^\']*\'|"[^"]*"|(?![\'"])[^>\s]*))?(?:\s|/(?!>))*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��eZdZdZdZdd�d�Zd�Zd�Zd�Zd	Z	d
�Z
d�Zd�Zd
�Z
d�Zdd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd	S) raEFind 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�styleT)�convert_charrefsc�<�||_|���dS)z�Initialize and reset this instance.

        If convert_charrefs is True (the default), all character references
        are automatically converted to the corresponding Unicode characters.
        N)r	�reset)�selfr	s  �"/usr/lib/python3.11/html/parser.py�__init__zHTMLParser.__init__Ws��!1����
�
������c��d|_d|_t|_d|_t
j�|��dS)z1Reset this instance.  Loses all unprocessed data.�z???N)�rawdata�lasttag�interesting_normal�interesting�
cdata_elem�_markupbase�
ParserBaser�rs r
rzHTMLParser.reset`s<��������-��������$�$�T�*�*�*�*�*rc�N�|j|z|_|�d��dS)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').
        rN)r�goahead�r�datas  r
�feedzHTMLParser.feedhs%���|�d�*������Q�����rc�0�|�d��dS)zHandle any buffered data.�N)rrs r
�closezHTMLParser.closeqs�����Q�����rNc��|jS)z)Return full source of start tag: '<...>'.)�_HTMLParser__starttag_textrs r
�get_starttag_textzHTMLParser.get_starttag_textws���#�#rc��|���|_tjd|jztj��|_dS)Nz</\s*%s\s*>)�lowerr�re�compile�Ir)r�elems  r
�set_cdata_modezHTMLParser.set_cdata_mode{s4���*�*�,�,����:�n�t��&F���M�M����rc�,�t|_d|_dS�N)rrrrs r
�clear_cdata_modezHTMLParser.clear_cdata_modes��-�������rc��
�|j}d}t|��}||k�rL|jr}|jsv|�d|��}|dkrY|�dt
||dz
����}|dkr*tjd���	||��s�n�|}n=|j
�	||��}|r|���}n|jr�n�|}||krV|jr2|js+|�t|||�����n|�|||���|�||��}||kr�n|j}|d|���r�t �||��r|�|��}	n�|d|��r|�|��}	n�|d|��r|�|��}	nl|d|��r|�|��}	nJ|d	|��r|�|��}	n(|d
z|ks|r|�d��|d
z}	n�n|	dk�r�|s�nt �||��r�n�|d|��r_|dz|kr|�d���nzt.�||��r�n]|�||dzd����n;|d|��rU|}dD]/}
|�|
|d
z��r|t|
��z}n�0|�||d
z|���n�|d|��r!|�||dzd���n�|||dz����dkr!|�||dzd���ni|d	|��r!|�||dzd���n<|d|��r!|�||dzd���nt=d���|}	|�||	��}�n-|d|��r�t>�||��}|rq|� ��dd�}|�!|��|�"��}	|d|	d
z
��s|	d
z
}	|�||	��}���d||d�vr9|�|||dz���|�||dz��}�nS|d|���r5tF�||��}|rj|� d
��}|�$|��|�"��}	|d|	d
z
��s|	d
z
}	|�||	��}���tJ�||��}|rX|rU|� ��||d�kr5|�"��}	|	|kr|}	|�||d
z��}nJ|d
z|kr/|�d��|�||d
z��}nnJd���||k��L|ry||krs|jsl|jr2|js+|�t|||�����n|�|||���|�||��}||d�|_dS)Nr�<�&�"z[\s;]�</�<!--�<?�<!r �)z--!z--�-�z	<![CDATA[��	�	<!doctype�we should not get here!z&#����;zinteresting.search() lied)&r�lenr	r�find�rfind�maxr'r(�searchr�start�handle_datar�	updatepos�
startswith�starttagopen�match�parse_starttag�parse_endtag�
parse_comment�parse_pi�parse_html_declaration�
endtagopen�handle_comment�endswith�unknown_declr&�handle_decl�	handle_pi�AssertionError�charref�group�handle_charref�end�	entityref�handle_entityref�
incomplete)rrZr�i�n�j�ampposrJrH�k�suffix�names            r
rzHTMLParser.goahead�s����,��
����L�L���!�e�e��$�
�T�_�
��L�L��a�(�(���q�5�5�%�]�]�3��A�q��t���=�=�F��!����J�x�0�0�7�7���H�H�$���A���(�/�/���;�;�������
�
�A�A������A��1�u�u��(�3���3��$�$�X�g�a��c�l�%;�%;�<�<�<�<��$�$�W�Q�q�S�\�2�2�2����q�!�$�$�A��A�v�v�u� �+�J��z�#�q�!�!�\
6��%�%�g�q�1�1���+�+�A�.�.�A�A��Z��a�(�(���)�)�!�,�,�A�A��Z���*�*�
��*�*�1�-�-�A�A��Z��a�(�(���
�
�a�(�(�A�A��Z��a�(�(���3�3�A�6�6�A�A��!�e�q�[�[�C�[��$�$�S�)�)�)��A��A�A���q�5�5����#�)�)�'�1�5�5�H��#��D�!�,�,�H��q�5�A�:�:� �,�,�T�2�2�2�2�'�-�-�g�q�9�9�?� �!�/�/���!����
�>�>�>�>�#��F�A�.�.�H���&8�&�&�F�&�/�/���!��<�<�&� !�S��[�[� 0�� %��&��+�+�G�A�a�C��E�N�;�;�;�;�#��K��3�3�
H��)�)�'�!�A�#�$�$�-�8�8�8�8� ��1�Q�3���-�-�/�/�;�>�>��(�(���1�����7�7�7�7�#��D�!�,�,�H��+�+�G�A�a�C�D�D�M�:�:�:�:�#��D�!�,�,�H����w�q��s�t�t�}�5�5�5�5�,�-F�G�G�G��A��N�N�1�a�(�(�����D�!�$�$�+
6��
�
�g�q�1�1���� �;�;�=�=��2��.�D��'�'��-�-�-��	�	���A�%�:�c�1�Q�3�/�/�"���E�����q�!�,�,�A���g�a�b�b�k�)�)��(�(���1�Q�3���8�8�8� �N�N�1�a��c�2�2�����C��#�#�
6�!�����3�3���� �;�;�q�>�>�D��)�)�$�/�/�/��	�	���A�%�:�c�1�Q�3�/�/�"���E�����q�!�,�,�A��"�(�(��!�4�4�����5�u�{�{�}�}������;�;�!�I�I�K�K����6�6� !�A� �N�N�1�a�!�e�4�4����!�e�q�[�[��$�$�S�)�)�)����q�!�a�%�0�0�A�A��5�5�5�5�5�w�!�e�e�z�	%�1�q�5�5���5��$�
/�T�_�
/�� � ��'�!�A�#�,�!7�!7�8�8�8�8�� � ���1���.�.�.����q�!�$�$�A��q�r�r�{����rc���|j}|||dz�dks
Jd���|||dz�dkr|�|��S|||dz�dkr|�|��S|||dz����d	krF|�d
|dz��}|dkrdS|�||dz|���|dzS|�|��S)
Nr7r6z+unexpected call to parse_html_declaration()r9r4r:z<![r;r<rr>r )rrM�parse_marked_sectionr&rArT�parse_bogus_comment)rr^r�gtposs    r
rOz!HTMLParser.parse_html_declarations���,���q��1��u�~��%�%�%�)C�%�%�%��1�Q�q�S�5�>�V�#�#��%�%�a�(�(�(�
�Q�q��s�U�^�u�
$�
$��,�,�Q�/�/�/�
�Q�q��s�U�^�
!�
!�
#�
#�{�
2�
2��L�L��a��c�*�*�E���{�{��r����W�Q�q�S��Y�/�0�0�0���7�N��+�+�A�.�.�.rr c���|j}|||dz�dvs
Jd���|�d|dz��}|dkrdS|r |�||dz|���|dzS)Nr7)r6r3z"unexpected call to parse_comment()rr>r )rrArQ)rr^�reportr�poss     r
rgzHTMLParser.parse_bogus_comment's����,���q��1��u�~��-�-�-�1B�-�-�-��l�l�3��!��$�$���"�9�9��2��	2������!��C�� 0�1�1�1��Q�w�rc��|j}|||dz�dks
Jd���t�||dz��}|sdS|���}|�||dz|���|���}|S)Nr7r5zunexpected call to parse_pi()r>)r�picloserDrErUrZ)rr^rrJr`s     r
rNzHTMLParser.parse_pi3s����,���q��1��u�~��%�%�%�'F�%�%�%����w��!��,�,���	��2��K�K�M�M�����w�q��s�A�v��'�'�'��I�I�K�K���rc�V�d|_|�|��}|dkr|S|j}|||�|_g}t�||dz��}|s
Jd���|���}|�d�����x|_}||kr�t�||��}|sn�|�ddd��\}	}
}|
sd}nI|dd�dcxkr|dd�ks"n|dd�dcxkr|dd�kr
nn
|dd�}|rt|��}|�|	���|f��|���}||k��|||����}|d	vr|�
|||���|S|�d
��r|�||��n4|�||��||jvr|�|��|S)Nrr z#unexpected call to parse_starttag()r7r:�'r>�")r�/>rq)r#�check_for_whole_start_tagr�tagfind_tolerantrJrZrXr&r�attrfind_tolerantr�append�striprFrR�handle_startendtag�handle_starttag�CDATA_CONTENT_ELEMENTSr+)
rr^�endposr�attrsrJrb�tag�m�attrname�rest�	attrvaluerZs
             r
rKzHTMLParser.parse_starttag?sj��#����/�/��2�2���A�:�:��M��,��&�q��x�0����� �&�&�w��!��4�4���;�;�;�;�;�;��I�I�K�K��"�[�[��^�^�1�1�3�3�3���s��&�j�j�!�'�'���3�3�A��
��()����1�a�(8�(8�%�H�d�I��
,� �	�	��2�A�2��$�8�8�8�8�)�B�C�C�.�8�8�8�8��2�A�2��#�7�7�7�7��2�3�3��7�7�7�7�7�%�a��d�O�	��
0�$�Y�/�/�	��L�L�(�.�.�*�*�I�6�7�7�7������A��&�j�j��a��h��%�%�'�'���k�!�!����W�Q�v�X�.�/�/�/��M��<�<����	)��#�#�C��/�/�/�/�� � ��e�,�,�,��d�1�1�1��#�#�C�(�(�(��
rc��|j}t�||��}|r�|���}|||dz�}|dkr|dzS|dkr@|�d|��r|dzS|�d|��rdS||kr|S|dzS|dkrdS|dvrdS||kr|S|dzStd	���)
Nr r�/rqr7r>rz6abcdefghijklmnopqrstuvwxyz=/ABCDEFGHIJKLMNOPQRSTUVWXYZr=)r�locatestarttagend_tolerantrJrZrHrV)rr^rr}r`�nexts      r
rrz$HTMLParser.check_for_whole_start_tagks���,��&�,�,�W�a�8�8���	������A��1�Q�q�S�5�>�D��s�{�{��1�u���s�{�{��%�%�d�A�.�.�!��q�5�L��%�%�c�1�-�-���2��q�5�5��H��q�5�L��r�z�z��r��5�6�6��r��1�u�u����1�u���6�7�7�7rc��|j}|||dz�dks
Jd���t�||dz��}|sdS|���}t�||��}|s�|j�|�|||���|St�||dz��}|s+|||dz�dkr|dzS|�	|��S|�
d�����}|�d|�����}|�
|��|dzS|�
d�����}|j�*||jkr|�|||���|S|�
|��|���|S)	Nr7r3zunexpected call to parse_endtagr r>r:z</>r)r�	endendtagrDrZ�
endtagfindrJrrFrsrgrXr&rA�
handle_endtagr.)rr^rrJrh�	namematch�tagnamer*s        r
rLzHTMLParser.parse_endtag�s����,���q��1��u�~��%�%�%�'H�%�%�%�� � ��!�A�#�.�.���	��2��	�	����� � ��!�,�,���	���*�� � ���5��!1�2�2�2���(�.�.�w��!��<�<�I��
7��1�Q�q�S�5�>�U�*�*��Q�3�J��3�3�A�6�6�6��o�o�a�(�(�.�.�0�0�G�
�L�L��i�m�m�o�o�6�6�E����w�'�'�'���7�N��{�{�1�~�~�#�#�%�%���?�&��t��&�&�� � ���5��!1�2�2�2������4� � � ��������rc�\�|�||��|�|��dSr-)rxr��rr|r{s   r
rwzHTMLParser.handle_startendtag�s2�����S�%�(�(�(����3�����rc��dSr-�r�s   r
rxzHTMLParser.handle_starttag�����rc��dSr-r�)rr|s  r
r�zHTMLParser.handle_endtag�r�rc��dSr-r��rrds  r
rYzHTMLParser.handle_charref�r�rc��dSr-r�r�s  r
r\zHTMLParser.handle_entityref�r�rc��dSr-r�rs  r
rFzHTMLParser.handle_data�r�rc��dSr-r�rs  r
rQzHTMLParser.handle_comment�r�rc��dSr-r�)r�decls  r
rTzHTMLParser.handle_decl�r�rc��dSr-r�rs  r
rUzHTMLParser.handle_pi�r�rc��dSr-r�rs  r
rSzHTMLParser.unknown_decl�r�r)r )�__name__�
__module__�__qualname__�__doc__ryrrrr!r#r$r+r.rrOrgrNrKrrrLrwrxr�rYr\rFrQrTrUrSr�rr
rr?s���������*1��+/������+�+�+��������O�$�$�$�N�N�N����G#�G#�G#�X/�/�/�*	�	�	�	�	�	�	�(�(�(�X8�8�8�D%�%�%�P � � �

�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
r)r�r'r�htmlr�__all__r(rr]r[rWrIrPrm�commentclosersrt�VERBOSEr�r�r�rrr�rr
�<module>r�s~��"�"�
�	�	�	������������.�� �R�Z��'�'��
�R�Z��
%�
%�
��B�J�>�?�?�	�
�"�*�@�
A�
A���r�z�+�&�&��
�R�Z��
%�
%�
�
�"�*�S�/�/���r�z�)�$�$���2�:�L�M�M���B�J�=�>�>��(�R�Z�)��Z����
�B�J�s�O�O�	��R�Z�>�
?�
?�
�[
�[
�[
�[
�[
��'�[
�[
�[
�[
�[
r