Current File : //lib/python3.9/site-packages/pip/_vendor/html5lib/__pycache__/html5parser.cpython-39.pyc
a

[��f���@sddlmZmZmZddlmZmZddlZddlm	Z	ddlm
Z
ddlmZddlm
Z
dd	lmZdd
lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z d d
d�Z!d!dd�Z"dd�Z#Gdd�de$�Z%ej&dd��Z'dd�Z(d"dd�Z)Gdd�de*�Z+dS)#�)�absolute_import�division�unicode_literals)�with_metaclass�viewkeysN�)�_inputstream)�
_tokenizer)�treebuilders)�Marker)�_utils)�spaceCharacters�asciiUpper2Lower�specialElements�headingElements�
cdataElements�rcdataElements�
tokenTypes�
tagTokenTypes�
namespaces�htmlIntegrationPointElements�"mathmlTextIntegrationPointElements�adjustForeignAttributes�adjustMathMLAttributes�adjustSVGAttributes�E�_ReparseException�etreeTcKs(t�|�}t||d�}|j|fi|��S)a�Parse an HTML document as a string or file-like object into a tree

    :arg doc: the document to parse as a string or file-like object

    :arg treebuilder: the treebuilder to use when parsing

    :arg namespaceHTMLElements: whether or not to namespace HTML elements

    :returns: parsed tree

    Example:

    >>> from html5lib.html5parser import parse
    >>> parse('<html><body><p>This is a doc</p></body></html>')
    <Element u'{http://www.w3.org/1999/xhtml}html' at 0x7feac4909db0>

    ��namespaceHTMLElements)r
�getTreeBuilder�
HTMLParser�parse)�doc�treebuilderr�kwargs�tb�p�r(�D/usr/lib/python3.9/site-packages/pip/_vendor/html5lib/html5parser.pyr"s
r"�divcKs,t�|�}t||d�}|j|fd|i|��S)a#Parse an HTML fragment as a string or file-like object into a tree

    :arg doc: the fragment to parse as a string or file-like object

    :arg container: the container context to parse the fragment in

    :arg treebuilder: the treebuilder to use when parsing

    :arg namespaceHTMLElements: whether or not to namespace HTML elements

    :returns: parsed tree

    Example:

    >>> from html5lib.html5libparser import parseFragment
    >>> parseFragment('<b>this is a fragment</b>')
    <Element u'DOCUMENT_FRAGMENT' at 0x7feac484b090>

    r�	container)r
r r!�
parseFragment)r#r+r$rr%r&r'r(r(r)r,1s
r,csG�fdd�dt�}|S)NcseZdZ�fdd�ZdS)z-method_decorator_metaclass.<locals>.Decoratedcs>|��D]$\}}t|tj�r$�|�}|||<qt�||||�S�N)�items�
isinstance�types�FunctionType�type�__new__)�metaZ	classname�basesZ	classDictZ
attributeNameZ	attribute��functionr(r)r3Ls

z5method_decorator_metaclass.<locals>.Decorated.__new__N)�__name__�
__module__�__qualname__r3r(r6r(r)�	DecoratedKsr;)r2)r7r;r(r6r)�method_decorator_metaclassJsr<c@s�eZdZdZd'dd�Zd(dd	�Zd
d�Zedd
��Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
d)dd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�ZdS)*r!z]HTML parser

    Generates a tree structure from a stream of (possibly malformed) HTML.

    NFTcsH|�_|durt�d�}||��_g�_�fdd�t|���D��_dS)a�
        :arg tree: a treebuilder class controlling the type of tree that will be
            returned. Built in treebuilders can be accessed through
            html5lib.treebuilders.getTreeBuilder(treeType)

        :arg strict: raise an exception when a parse error is encountered

        :arg namespaceHTMLElements: whether or not to namespace HTML elements

        :arg debug: whether or not to enable debug mode which logs things

        Example:

        >>> from html5lib.html5parser import HTMLParser
        >>> parser = HTMLParser()                     # generates parser with etree builder
        >>> parser = HTMLParser('lxml', strict=True)  # generates parser with lxml builder which is strict

        Nrcsi|]\}}||��j��qSr()�tree)�.0�name�cls��selfr(r)�
<dictcomp>y�z'HTMLParser.__init__.<locals>.<dictcomp>)�strictr
r r=�errors�	getPhasesr.�phases)rBr=rEr�debugr(rAr)�__init__]s



�zHTMLParser.__init__r*cKsf||_||_||_tj|fd|i|��|_|��z|��Wn"ty`|��|��Yn0dS)N�parser)	�
innerHTMLModer+�	scriptingr	Z
HTMLTokenizer�	tokenizer�reset�mainLoopr)rB�stream�	innerHTMLr+rMr%r(r(r)�_parse|szHTMLParser._parsecCs�|j��d|_g|_g|_d|_|jr�|j��|_	|j	t
vrL|jj|j_
n0|j	tvrd|jj|j_
n|j	dkr||jj|j_
n|jd|_|j��|��nd|_	|jd|_d|_d|_d|_dS)NFz	no quirks�	plaintext�
beforeHtml�initialT)r=rO�
firstStartTagrF�log�
compatModerLr+�lowerrRrrN�rcdataState�stater�rawtextState�plaintextStaterH�phase�insertHtmlElement�resetInsertionModeZ	lastPhaseZbeforeRCDataPhase�
framesetOKrAr(r(r)rO�s*





zHTMLParser.resetcCst|d�sdS|jjjdjS)z�Name of the character encoding that was used to decode the input stream, or
        :obj:`None` if that is not determined yet

        rNNr)�hasattrrNrQ�charEncodingr?rAr(r(r)�documentEncoding�s
zHTMLParser.documentEncodingcCsJ|jdkr6|jtdkr6d|jvo4|jd�t�dvS|j|jftvSdS)N�annotation-xml�mathml�encoding)z	text/htmlzapplication/xhtml+xml)r?�	namespacer�
attributes�	translaterr�rB�elementr(r(r)�isHTMLIntegrationPoint�s
�

���z!HTMLParser.isHTMLIntegrationPointcCs|j|jftvSr-)rir?rrlr(r(r)�isMathMLTextIntegrationPoint�sz'HTMLParser.isMathMLTextIntegrationPointcCsftd}td}td}td}td}td}td}|jD�]�}d}	|}
|
du�r�|
}	|jjrn|jjdnd}|r||jnd}|r�|jnd}
|
d	}||kr�|�|
d
|
�di��d}
qLt|jj�dk�sb||jj	k�sb|�
|��r||k�r|d
tddg�v�sb|||fv�sb|tdk�rF|
dk�rF||k�rF|d
dk�sb|�
|��rj||||fv�rj|j}n
|jd}||k�r�|�|
�}
qL||k�r�|�|
�}
qL||k�r�|�|
�}
qL||k�r�|�|
�}
qL||k�r�|�|
�}
qL||krL|�|
�}
qL||kr>|	dr>|	ds>|�dd
|	d
i�q>d}g}|�rb|�|j�|j��}|�r,|j|v�s,J��q,dS)N�
CharactersZSpaceCharacters�StartTag�EndTag�CommentZDoctype�
ParseError���r2�data�datavarsrr?ZmglyphZ
malignmarkrgrf�svg�inForeignContent�selfClosing�selfClosingAcknowledgedz&non-void-element-with-trailing-solidusT)rrNr=�openElementsrir?�
parseError�get�len�defaultNamespacero�	frozensetrrnr_rH�processCharacters�processSpaceCharacters�processStartTag�
processEndTag�processComment�processDoctype�append�
processEOF)rBZCharactersTokenZSpaceCharactersTokenZ
StartTagTokenZEndTagTokenZCommentTokenZDoctypeTokenZParseErrorToken�tokenZ
prev_token�	new_token�currentNodeZcurrentNodeNamespaceZcurrentNodeNamer2r_Z	reprocessrHr(r(r)rP�s�

����
�
���	
�
��





�
�
zHTMLParser.mainLoopcOs&|j|ddg|�Ri|��|j��S)a�Parse a HTML document into a well-formed tree

        :arg stream: a file-like object or string containing the HTML to be parsed

            The optional encoding parameter must be a string that indicates
            the encoding.  If specified, that encoding will be used,
            regardless of any BOM or later declaration (such as in a meta
            element).

        :arg scripting: treat noscript elements as if JavaScript was turned on

        :returns: parsed tree

        Example:

        >>> from html5lib.html5parser import HTMLParser
        >>> parser = HTMLParser()
        >>> parser.parse('<html><body><p>This is a doc</p></body></html>')
        <Element u'{http://www.w3.org/1999/xhtml}html' at 0x7feac4909db0>

        FN)rSr=ZgetDocument�rBrQ�argsr%r(r(r)r"szHTMLParser.parsecOs$|j|dg|�Ri|��|j��S)aZParse a HTML fragment into a well-formed tree fragment

        :arg container: name of the element we're setting the innerHTML
            property if set to None, default to 'div'

        :arg stream: a file-like object or string containing the HTML to be parsed

            The optional encoding parameter must be a string that indicates
            the encoding.  If specified, that encoding will be used,
            regardless of any BOM or later declaration (such as in a meta
            element)

        :arg scripting: treat noscript elements as if JavaScript was turned on

        :returns: parsed tree

        Example:

        >>> from html5lib.html5libparser import HTMLParser
        >>> parser = HTMLParser()
        >>> parser.parseFragment('<b>this is a fragment</b>')
        <Element u'DOCUMENT_FRAGMENT' at 0x7feac484b090>

        T)rSr=ZgetFragmentr�r(r(r)r,szHTMLParser.parseFragment�XXX-undefined-errorcCs@|duri}|j�|jj��||f�|jr<tt||��dSr-)rFr�rNrQZpositionrErtr)rB�	errorcoderwr(r(r)r};s
zHTMLParser.parseErrorcCst|t�dSr-)�adjust_attributesr�rBr�r(r(r)rCsz!HTMLParser.adjustMathMLAttributescCst|t�dSr-)r�rr�r(r(r)rFszHTMLParser.adjustSVGAttributescCst|t�dSr-)r��adjustForeignAttributesMapr�r(r(r)rIsz"HTMLParser.adjustForeignAttributescCs|j��dSr-)rKr_r�r(r(r)�reparseTokenNormalLszHTMLParser.reparseTokenNormalcCs�d}ddddddddddd	d	d
dd�}|jjddd
�D]�}|j}d}||jjdkrj|js`J�d}|j}|dvr||js|J�|s�|j|jjkr�q8||vr�|j||}q�q8|r8|jd	}q�q8||_dS)NF�inSelect�inCell�inRow�inTableBody�	inCaption�
inColumnGroup�inTable�inBody�
inFrameset�
beforeHead)�select�td�th�tr�tbody�thead�tfoot�caption�colgroup�table�head�body�frameset�htmlrurT)r�r�r�r�)r=r|r?rRrir�rHr_)rBZlastZnewModes�nodeZnodeNameZ	new_phaser(r(r)raPsD�


zHTMLParser.resetInsertionModecCsR|dvsJ�|j�|�|dkr.|jj|j_n|jj|j_|j|_|jd|_dS)N)�RAWTEXT�RCDATAr��text)	r=�
insertElementrNr]r\r[r_�
originalPhaserH)rBr�ZcontentTyper(r(r)�parseRCDataRawtext|szHTMLParser.parseRCDataRawtext)NFTF)Fr*F)r�N)r8r9r:�__doc__rJrSrO�propertyrernrorPr"r,r}rrrr�rar�r(r(r(r)r!Vs$

"
	
C
,r!csdd�}dd�}Gdd�dt|||����Gdd�d��}Gd	d
�d
��}Gdd�d��}Gd
d�d��}Gdd�d��}Gdd�d��}G��fdd�d���Gdd�d��}	G�fdd�d��}
G�fdd�d���G�fdd�d��}G�fdd�d��}G�fdd �d ��}
G�fd!d"�d"��}G�fd#d$�d$��}G�fd%d&�d&��}Gd'd(�d(��}G�fd)d*�d*��}Gd+d,�d,��}G�fd-d.�d.��}G�fd/d0�d0��}Gd1d2�d2��}Gd3d4�d4��}||||||�|	|
�|||
||||||||||d5�S)6Ncs$dd�t��D����fdd�}|S)z4Logger that records which phase processes each tokencSsi|]\}}||�qSr(r()r>�key�valuer(r(r)rC�rDz*getPhases.<locals>.log.<locals>.<dictcomp>cs��j�d�r�t|�dkr�|d}d�|di}|dtvrH|d|d<|jj�|jjjj|jj	j
j|j
j�j|f��|g|�Ri|��S�|g|�Ri|��SdS)NZprocessrr2r?)r8�
startswithrrrKrXr�rNr\r_�	__class__)rBr�r%r��info�r7Z
type_namesr(r)�wrapped�s
�z'getPhases.<locals>.log.<locals>.wrapped)rr.)r7r�r(r�r)rX�szgetPhases.<locals>.logcSs|rt|�StSdSr-)r<r2)Z
use_metaclassZmetaclass_funcr(r(r)�getMetaclass�szgetPhases.<locals>.getMetaclassc@s\eZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dS)zgetPhases.<locals>.PhasezNBase class for helper object that implements each phase of processing
        )rKr=Z__startTagCacheZ
__endTagCachecSs||_||_i|_i|_dSr-)rKr=�_Phase__startTagCache�_Phase__endTagCache)rBrKr=r(r(r)rJ�sz!getPhases.<locals>.Phase.__init__cSst�dSr-)�NotImplementedErrorrAr(r(r)r��sz#getPhases.<locals>.Phase.processEOFcSs|j�||jjd�dS)Nru�r=�
insertCommentr|r�r(r(r)r��sz'getPhases.<locals>.Phase.processCommentcSs|j�d�dS)Nzunexpected-doctype�rKr}r�r(r(r)r��sz'getPhases.<locals>.Phase.processDoctypecSs|j�|d�dS�Nrv�r=�
insertTextr�r(r(r)r��sz*getPhases.<locals>.Phase.processCharacterscSs|j�|d�dSr�r�r�r(r(r)r��sz/getPhases.<locals>.Phase.processSpaceCharacterscSsj|d}||jvr|j|}nD|j|}|j|<t|j�t|j�dkrb|j�tt|j���q2||�S�Nr?g�������?)r��startTagHandlerr�pop�next�iter�rBr�r?�funcr(r(r)r��s
z(getPhases.<locals>.Phase.processStartTagcSsf|jjs |ddkr |j�d�|d��D],\}}||jjdjvr,||jjdj|<q,d|j_dS)Nr?r�z
non-html-rootrvrF)rKrWr}r.r=r|rj�rBr��attrr�r(r(r)�startTagHtml�sz%getPhases.<locals>.Phase.startTagHtmlcSsj|d}||jvr|j|}nD|j|}|j|<t|j�t|j�dkrb|j�tt|j���q2||�Sr�)r��
endTagHandlerrr�r�r�r�r(r(r)r��s
z&getPhases.<locals>.Phase.processEndTagN)r8r9r:r��	__slots__rJr�r�r�r�r�r�r�r�r(r(r(r)�Phase�s
r�c@sReZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�ZdS)zgetPhases.<locals>.InitialPhasecSsdSr-r(r�r(r(r)r��sz6getPhases.<locals>.InitialPhase.processSpaceCharacterscSs|j�||jj�dSr-�r=r�Zdocumentr�r(r(r)r��sz.getPhases.<locals>.InitialPhase.processCommentcSs�|d}|d}|d}|d}|dks@|dus@|durL|dkrL|j�d�|durXd}|j�|�|dkrv|�t�}|r�|ddks�|�d	�s�|d
vs�|�d�r�|dus�|r�|��dkr�d
|j_n$|�d�s�|�d�r�|dur�d|j_|jj	d|j_
dS)Nr?�publicId�systemId�correctr�zabout:legacy-compatzunknown-doctype�)7z*+//silmaril//dtd html pro v0r11 19970101//z4-//advasoft ltd//dtd html 3.0 aswedit + extensions//z*-//as//dtd html 3.0 aswedit + extensions//z-//ietf//dtd html 2.0 level 1//z-//ietf//dtd html 2.0 level 2//z&-//ietf//dtd html 2.0 strict level 1//z&-//ietf//dtd html 2.0 strict level 2//z-//ietf//dtd html 2.0 strict//z-//ietf//dtd html 2.0//z-//ietf//dtd html 2.1e//z-//ietf//dtd html 3.0//z-//ietf//dtd html 3.2 final//z-//ietf//dtd html 3.2//z-//ietf//dtd html 3//z-//ietf//dtd html level 0//z-//ietf//dtd html level 1//z-//ietf//dtd html level 2//z-//ietf//dtd html level 3//z"-//ietf//dtd html strict level 0//z"-//ietf//dtd html strict level 1//z"-//ietf//dtd html strict level 2//z"-//ietf//dtd html strict level 3//z-//ietf//dtd html strict//z-//ietf//dtd html//z(-//metrius//dtd metrius presentational//z5-//microsoft//dtd internet explorer 2.0 html strict//z.-//microsoft//dtd internet explorer 2.0 html//z0-//microsoft//dtd internet explorer 2.0 tables//z5-//microsoft//dtd internet explorer 3.0 html strict//z.-//microsoft//dtd internet explorer 3.0 html//z0-//microsoft//dtd internet explorer 3.0 tables//z#-//netscape comm. corp.//dtd html//z*-//netscape comm. corp.//dtd strict html//z*-//o'reilly and associates//dtd html 2.0//z3-//o'reilly and associates//dtd html extended 1.0//z;-//o'reilly and associates//dtd html extended relaxed 1.0//zN-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//zE-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//z$-//spyglass//dtd html 2.0 extended//z+-//sq//dtd html 2.0 hotmetal + extensions//z--//sun microsystems corp.//dtd hotjava html//z4-//sun microsystems corp.//dtd hotjava strict html//z-//w3c//dtd html 3 1995-03-24//z-//w3c//dtd html 3.2 draft//z-//w3c//dtd html 3.2 final//z-//w3c//dtd html 3.2//z-//w3c//dtd html 3.2s draft//z-//w3c//dtd html 4.0 frameset//z#-//w3c//dtd html 4.0 transitional//z(-//w3c//dtd html experimental 19960712//z&-//w3c//dtd html experimental 970421//z-//w3c//dtd w3 html//z-//w3o//dtd w3 html 3.0//z#-//webtechs//dtd mozilla html 2.0//z-//webtechs//dtd mozilla html//)z$-//w3o//dtd w3 html strict 3.0//en//z"-/w3c/dtd html 4.0 transitional/enr�)z -//w3c//dtd html 4.01 frameset//z$-//w3c//dtd html 4.01 transitional//z:http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd�quirks)z -//w3c//dtd xhtml 1.0 frameset//z$-//w3c//dtd xhtml 1.0 transitional//zlimited quirksrU)rKr}r=Z
insertDoctyperkrr�rZrYrHr_)rBr�r?r�r�r�r(r(r)r��sX��
��9�<��?�@�@
�A
����z.getPhases.<locals>.InitialPhase.processDoctypecSsd|j_|jjd|j_dS)Nr�rU)rKrYrHr_rAr(r(r)�anythingElseZsz,getPhases.<locals>.InitialPhase.anythingElsecSs|j�d�|��|S)Nzexpected-doctype-but-got-chars�rKr}r�r�r(r(r)r�^sz1getPhases.<locals>.InitialPhase.processCharacterscSs"|j�dd|di�|��|S)Nz"expected-doctype-but-got-start-tagr?r�r�r(r(r)r�cs

�z/getPhases.<locals>.InitialPhase.processStartTagcSs"|j�dd|di�|��|S)Nz expected-doctype-but-got-end-tagr?r�r�r(r(r)r�is

�z-getPhases.<locals>.InitialPhase.processEndTagcSs|j�d�|��dS)Nzexpected-doctype-but-got-eofTr�rAr(r(r)r�osz*getPhases.<locals>.InitialPhase.processEOFN)
r8r9r:�tupler�r�r�r�r�r�r�r�r�r(r(r(r)�InitialPhase�s_r�c@sJeZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�ZdS)z"getPhases.<locals>.BeforeHtmlPhasecSs&|j�tdd��|jjd|j_dS)Nr�rqr�)r=Z
insertRoot�impliedTagTokenrKrHr_rAr(r(r)r`xsz4getPhases.<locals>.BeforeHtmlPhase.insertHtmlElementcSs|��dS�NT�r`rAr(r(r)r�}sz-getPhases.<locals>.BeforeHtmlPhase.processEOFcSs|j�||jj�dSr-r�r�r(r(r)r��sz1getPhases.<locals>.BeforeHtmlPhase.processCommentcSsdSr-r(r�r(r(r)r��sz9getPhases.<locals>.BeforeHtmlPhase.processSpaceCharacterscSs|��|Sr-r�r�r(r(r)r��sz4getPhases.<locals>.BeforeHtmlPhase.processCharacterscSs |ddkrd|j_|��|S)Nr?r�T)rKrWr`r�r(r(r)r��sz2getPhases.<locals>.BeforeHtmlPhase.processStartTagcSs4|ddvr$|j�dd|di�n|��|SdS)Nr?�r�r�r��brzunexpected-end-tag-before-html)rKr}r`r�r(r(r)r��s
�z0getPhases.<locals>.BeforeHtmlPhase.processEndTagN)r8r9r:r�r�r`r�r�r�r�r�r�r(r(r(r)�BeforeHtmlPhasetsr�c@s�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Ze
�defde	fg�Ze
e_e
�defg�Zee_dS)z"getPhases.<locals>.BeforeHeadPhasecSs|�tdd��dS)Nr�rqT��startTagHeadr�rAr(r(r)r��sz-getPhases.<locals>.BeforeHeadPhase.processEOFcSsdSr-r(r�r(r(r)r��sz9getPhases.<locals>.BeforeHeadPhase.processSpaceCharacterscSs|�tdd��|S�Nr�rqr�r�r(r(r)r��sz4getPhases.<locals>.BeforeHeadPhase.processCharacterscSs|jjd�|�S�Nr��rKrHr�r�r(r(r)r��sz/getPhases.<locals>.BeforeHeadPhase.startTagHtmlcSs0|j�|�|jjd|j_|jjd|j_dS)Nru�inHead)r=r�r|�headPointerrKrHr_r�r(r(r)r��sz/getPhases.<locals>.BeforeHeadPhase.startTagHeadcSs|�tdd��|Sr�r�r�r(r(r)�
startTagOther�sz0getPhases.<locals>.BeforeHeadPhase.startTagOthercSs|�tdd��|Sr�r�r�r(r(r)�endTagImplyHead�sz2getPhases.<locals>.BeforeHeadPhase.endTagImplyHeadcSs|j�dd|di�dS)Nzend-tag-after-implied-rootr?r�r�r(r(r)�endTagOther�s
�z.getPhases.<locals>.BeforeHeadPhase.endTagOtherr�r�r�N)r8r9r:r�r�r�r�r�r�r�r�r�r�r�MethodDispatcherr��defaultr�r(r(r(r)�BeforeHeadPhase�s$��r�c@s�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Ze�defd efd!efd"e
fd#efd$e	fd%e
fd&efg�Zee_e�d&efd'efg�Zee_d(S))zgetPhases.<locals>.InHeadPhasecSs|��dSr��r�rAr(r(r)r��sz)getPhases.<locals>.InHeadPhase.processEOFcSs|��|Sr-r�r�r(r(r)r��sz0getPhases.<locals>.InHeadPhase.processCharacterscSs|jjd�|�Sr�r�r�r(r(r)r��sz+getPhases.<locals>.InHeadPhase.startTagHtmlcSs|j�d�dS)Nz!two-heads-are-not-better-than-oner�r�r(r(r)r��sz+getPhases.<locals>.InHeadPhase.startTagHeadcSs$|j�|�|jj��d|d<dS�NTr{�r=r�r|r�r�r(r(r)�startTagBaseLinkCommand�sz6getPhases.<locals>.InHeadPhase.startTagBaseLinkCommandcSs�|j�|�|jj��d|d<|d}|jjjjddkr�d|vrZ|jjj�|d�nVd|vr�d|vr�|d�	�d	kr�t
�|d�d
��}t
�
|�}|��}|jjj�|�dS)NTr{rvrZ	tentative�charsetZcontentz
http-equivzcontent-typezutf-8)r=r�r|r�rKrNrQrdZchangeEncodingrZrZ
EncodingBytes�encodeZContentAttrParserr")rBr�rjrvrK�codecr(r(r)�startTagMeta�s ��
z+getPhases.<locals>.InHeadPhase.startTagMetacSs|j�|d�dS)Nr��rKr�r�r(r(r)�
startTagTitle�sz,getPhases.<locals>.InHeadPhase.startTagTitlecSs|j�|d�dS)Nr�r�r�r(r(r)�startTagNoFramesStyle�sz4getPhases.<locals>.InHeadPhase.startTagNoFramesStylecSs8|jjr|j�|d�n|j�|�|jjd|j_dS)Nr��inHeadNoscript)rKrMr�r=r�rHr_r�r(r(r)�startTagNoscript�sz/getPhases.<locals>.InHeadPhase.startTagNoscriptcSs<|j�|�|jjj|jj_|jj|j_|jjd|j_dS)Nr�)	r=r�rKrNZscriptDataStater\r_r�rHr�r(r(r)�startTagScriptsz-getPhases.<locals>.InHeadPhase.startTagScriptcSs|��|Sr-r�r�r(r(r)r�sz,getPhases.<locals>.InHeadPhase.startTagOthercSs:|jjj��}|jdks&Jd|j��|jjd|j_dS)Nr�zExpected head got %s�	afterHead�rKr=r|r�r?rHr_�rBr�r�r(r(r)�
endTagHead
sz)getPhases.<locals>.InHeadPhase.endTagHeadcSs|��|Sr-r�r�r(r(r)�endTagHtmlBodyBrsz/getPhases.<locals>.InHeadPhase.endTagHtmlBodyBrcSs|j�dd|di�dS�N�unexpected-end-tagr?r�r�r(r(r)r�sz*getPhases.<locals>.InHeadPhase.endTagOthercSs|�td��dS)Nr�)rr�rAr(r(r)r�sz+getPhases.<locals>.InHeadPhase.anythingElser��title)�noframes�style�noscript�script)�base�basefont�bgsound�command�linkr4r�)r�r�r�N)r8r9r:r�r�r�r�r�r�r�r�r�r�r�r�r�rrr�r�rr�r�r�r�r(r(r(r)�InHeadPhase�sD���rc@s�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Ze�de	fde
fdefg�Zee_e�de
fdefg�Zee_dS)z&getPhases.<locals>.InHeadNoscriptPhasecSs|j�d�|��dS)Nzeof-in-head-noscriptTr�rAr(r(r)r�/sz1getPhases.<locals>.InHeadNoscriptPhase.processEOFcSs|jjd�|�S�Nr�)rKrHr�r�r(r(r)r�4sz5getPhases.<locals>.InHeadNoscriptPhase.processCommentcSs|j�d�|��|S)Nzchar-in-head-noscriptr�r�r(r(r)r�7sz8getPhases.<locals>.InHeadNoscriptPhase.processCharacterscSs|jjd�|�Sr�rKrHr�r�r(r(r)r�<sz=getPhases.<locals>.InHeadNoscriptPhase.processSpaceCharacterscSs|jjd�|�Sr�r�r�r(r(r)r�?sz3getPhases.<locals>.InHeadNoscriptPhase.startTagHtmlcSs|jjd�|�Srr�r�r(r(r)r�Bsz>getPhases.<locals>.InHeadNoscriptPhase.startTagBaseLinkCommandcSs|j�dd|di�dS�N�unexpected-start-tagr?r�r�r(r(r)�startTagHeadNoscriptEsz;getPhases.<locals>.InHeadNoscriptPhase.startTagHeadNoscriptcSs"|j�dd|di�|��|S�Nzunexpected-inhead-noscript-tagr?r�r�r(r(r)r�Hsz4getPhases.<locals>.InHeadNoscriptPhase.startTagOthercSs:|jjj��}|jdks&Jd|j��|jjd|j_dS)Nr	zExpected noscript got %sr�rrr(r(r)�endTagNoscriptMsz5getPhases.<locals>.InHeadNoscriptPhase.endTagNoscriptcSs"|j�dd|di�|��|Srr�r�r(r(r)�endTagBrRsz/getPhases.<locals>.InHeadNoscriptPhase.endTagBrcSs|j�dd|di�dSrr�r�r(r(r)r�Wsz2getPhases.<locals>.InHeadNoscriptPhase.endTagOthercSs|�td��dS)Nr	)rr�rAr(r(r)r�Zsz3getPhases.<locals>.InHeadNoscriptPhase.anythingElser�)rr
rr4rr)r�r	r	r�N)r8r9r:r�r�r�r�r�r�r�r�rr�rrr�r�rr�r�r�r�r(r(r(r)�InHeadNoscriptPhase,s0��rc@s�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Ze�defdefde	fde
fdefg�Zee_e�de
fg�Zee_dS)z!getPhases.<locals>.AfterHeadPhasecSs|��dSr�r�rAr(r(r)r�nsz,getPhases.<locals>.AfterHeadPhase.processEOFcSs|��|Sr-r�r�r(r(r)r�rsz3getPhases.<locals>.AfterHeadPhase.processCharacterscSs|jjd�|�Sr�r�r�r(r(r)r�vsz.getPhases.<locals>.AfterHeadPhase.startTagHtmlcSs(d|j_|j�|�|jjd|j_dS)NFr�)rKrbr=r�rHr_r�r(r(r)�startTagBodyysz.getPhases.<locals>.AfterHeadPhase.startTagBodycSs |j�|�|jjd|j_dS)Nr�)r=r�rKrHr_r�r(r(r)�startTagFrameset~sz2getPhases.<locals>.AfterHeadPhase.startTagFramesetcSsr|j�dd|di�|jj�|jj�|jjd�|�|jjddd�D] }|jdkrL|jj�	|�qnqLdS)Nz#unexpected-start-tag-out-of-my-headr?r�rur�)
rKr}r=r|r�r�rHr�r?�removerr(r(r)�startTagFromHead�s
�
z2getPhases.<locals>.AfterHeadPhase.startTagFromHeadcSs|j�dd|di�dSrr�r�r(r(r)r��sz.getPhases.<locals>.AfterHeadPhase.startTagHeadcSs|��|Sr-r�r�r(r(r)r��sz/getPhases.<locals>.AfterHeadPhase.startTagOthercSs|��|Sr-r�r�r(r(r)r�sz2getPhases.<locals>.AfterHeadPhase.endTagHtmlBodyBrcSs|j�dd|di�dSrr�r�r(r(r)r��sz-getPhases.<locals>.AfterHeadPhase.endTagOthercSs.|j�tdd��|jjd|j_d|j_dS)Nr�rqr�T)r=r�r�rKrHr_rbrAr(r(r)r��sz.getPhases.<locals>.AfterHeadPhase.anythingElser�r�r�)	rrr
rr4rr
rrr�)r�r�r�N)r8r9r:r�r�r�r�r�rrrr�r�rr�r�rr�r�r�r�r(r(r(r)�AfterHeadPhaseks4
��	�rc$s�eZdZdZ��fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Z d<d=�Z!d>d?�Z"d@dA�Z#dBdC�Z$dDdE�Z%dFdG�Z&dHdI�Z'dJdK�Z(dLdM�Z)dNdO�Z*dPdQ�Z+dRdS�Z,dTdU�Z-dVdW�Z.dXdY�Z/dZd[�Z0d\d]�Z1d^d_�Z2d`da�Z3dbdc�Z4ddde�Z5dfdg�Z6e7�8dh�j9fdiefdjefdke
fdlefe:efdmefdnefdoefdpefdqefdrefdsefdtefduefdvefdwefdxefdyefdzefd{efd|efd}e fd~e!fde"fd�e#fd�e$fd�e&fd�e'fd�e%fd�e(fd�e)fd�e*fg!�Z;e+e;_<e7�8dje-fdhe.fd�e/fdne0fd�e,fd�e1fe:e2fd�e3fdue4fd�e5fg
�Z=e6e=_<�Z>S)�zgetPhases.<locals>.InBodyPhase)r�cs"t�|�j|i|��|j|_dSr-)�superrJ�processSpaceCharactersNonPrer��rBr�r%)�InBodyPhaser�r(r)rJ�sz'getPhases.<locals>.InBodyPhase.__init__cSs$|j|jko"|j|jko"|j|jkSr-)r?rirj)rBZnode1Znode2r(r(r)�isMatchingFormattingElement�s

�
�z:getPhases.<locals>.InBodyPhase.isMatchingFormattingElementcSs�|j�|�|jjd}g}|jjddd�D](}|tur@qXq.|�||�r.|�|�q.t|�dkshJ�t|�dkr�|jj�|d�|jj�|�dS)Nru�)	r=r�r|�activeFormattingElementsrr#r�rr)rBr�rmZmatchingElementsr�r(r(r)�addFormattingElement�sz3getPhases.<locals>.InBodyPhase.addFormattingElementcSs>td�}|jjddd�D]}|j|vr|j�d�q:qdS)N)�dd�dt�lir'r�r�r�r�r�r�r�r�ruz expected-closing-tag-but-got-eof)r�r=r|r?rKr})rBZallowed_elementsr�r(r(r)r��s

z)getPhases.<locals>.InBodyPhase.processEOFcSsf|d}|j|_|�d�rH|jjdjdvrH|jjd��sH|dd�}|rb|j��|j�|�dS)Nrv�
ru)�pre�listing�textarear)	r r�r�r=r|r?Z
hasContent�#reconstructActiveFormattingElementsr�)rBr�rvr(r(r)�!processSpaceCharactersDropNewline�s
��
z@getPhases.<locals>.InBodyPhase.processSpaceCharactersDropNewlinecSsT|ddkrdS|j��|j�|d�|jjrPtdd�|dD��rPd|j_dS)Nrv�cSsg|]}|tv�qSr(�r
�r>�charr(r(r)�
<listcomp>�s�zDgetPhases.<locals>.InBodyPhase.processCharacters.<locals>.<listcomp>F)r=r.r�rKrb�anyr�r(r(r)r��s
��z0getPhases.<locals>.InBodyPhase.processCharacterscSs|j��|j�|d�dSr�)r=r.r�r�r(r(r)r �s
z;getPhases.<locals>.InBodyPhase.processSpaceCharactersNonPrecSs|jjd�|�Srr�r�r(r(r)�startTagProcessInHead�sz4getPhases.<locals>.InBodyPhase.startTagProcessInHeadcSs�|j�dddi�t|jj�dks4|jjdjdkrB|jjs�J�nBd|j_|d��D],\}}||jjdj	vrV||jjdj	|<qVdS)Nrr?r�rFrv)
rKr}rr=r|r?rRrbr.rjr�r(r(r)r�s�z+getPhases.<locals>.InBodyPhase.startTagBodycSs�|j�dddi�t|jj�dks4|jjdjdkrB|jjs�J�np|jjsLnf|jjdjrv|jjdj�	|jjd�|jjdjdkr�|jj�
�qv|j�|�|jjd|j_
dS)	Nrr?r�rr�rur�r�)rKr}rr=r|r?rRrb�parent�removeChildr�r�rHr_r�r(r(r)rs"z/getPhases.<locals>.InBodyPhase.startTagFramesetcSs.|jjddd�r|�td��|j�|�dS�Nr'�button��variant)r=�elementInScope�endTagPr�r�r�r(r(r)�startTagClosePsz-getPhases.<locals>.InBodyPhase.startTagClosePcSs>|jjddd�r|�td��|j�|�d|j_|j|_dS)Nr'r:r;F)	r=r=r>r�r�rKrbr/r�r�r(r(r)�startTagPreListings
z1getPhases.<locals>.InBodyPhase.startTagPreListingcSsZ|jjr|j�dddi�n:|jjddd�r:|�td��|j�|�|jjd|j_dS)Nrr?�formr'r:r;ru)	r=�formPointerrKr}r=r>r�r�r|r�r(r(r)�startTagFormsz+getPhases.<locals>.InBodyPhase.startTagFormcSs�d|j_dgddgddgd�}||d}t|jj�D]@}|j|vr^|jj�t|jd��qx|j	t
vr6|jdvr6qxq6|jjd	d
d�r�|jj�td	d��|j�|�dS)NFr)r(r')r)r(r'r?rr)�addressr*r'r'r:r;)
rKrb�reversedr=r|r?r_r�r��	nameTuplerr=r�)rBr�ZstopNamesMapZ	stopNamesr�r(r(r)�startTagListItem&s*�

�
��z/getPhases.<locals>.InBodyPhase.startTagListItemcSs>|jjddd�r|�td��|j�|�|jjj|jj_dSr9)	r=r=r>r�r�rKrNr^r\r�r(r(r)�startTagPlaintext<sz0getPhases.<locals>.InBodyPhase.startTagPlaintextcSsb|jjddd�r|�td��|jjdjtvrR|j�dd|di�|jj�	�|j�
|�dS)Nr'r:r;rurr?)r=r=r>r�r|r?rrKr}r�r�r�r(r(r)�startTagHeadingBsz.getPhases.<locals>.InBodyPhase.startTagHeadingcSs~|j�d�}|rf|j�dddd��|�td��||jjvrL|jj�|�||jjvrf|jj�|�|j�	�|�
|�dS)N�a�$unexpected-start-tag-implies-end-tag�Z	startNameZendName)r=�!elementInActiveFormattingElementsrKr}�endTagFormattingr�r|rr%r.r&)rBr�ZafeAElementr(r(r)�	startTagAJs�
z(getPhases.<locals>.InBodyPhase.startTagAcSs|j��|�|�dSr-)r=r.r&r�r(r(r)�startTagFormattingWs
z1getPhases.<locals>.InBodyPhase.startTagFormattingcSsP|j��|j�d�rB|j�dddd��|�td��|j��|�|�dS)N�nobrrKrL)r=r.r=rKr}r�r�r&r�r(r(r)�startTagNobr[s
�
z+getPhases.<locals>.InBodyPhase.startTagNobrcSsT|j�d�r2|j�dddd��|�td��|S|j��|j�|�d|j_dS)Nr:rKrLF)	r=r=rKr}r�r�r.r�rbr�r(r(r)�startTagButtones�
z-getPhases.<locals>.InBodyPhase.startTagButtoncSs0|j��|j�|�|jj�t�d|j_dS�NF)r=r.r�r%r�rrKrbr�r(r(r)�startTagAppletMarqueeObjectps
z:getPhases.<locals>.InBodyPhase.startTagAppletMarqueeObjectcSsB|jjddd�r|�td��|j��d|j_|j�|d�dS)Nr'r:r;Fr�)r=r=r>r�r.rKrbr�r�r(r(r)�startTagXmpvs

z*getPhases.<locals>.InBodyPhase.startTagXmpcSsR|jjdkr*|jjddd�r*|�td��|j�|�d|j_|jjd|j_	dS)Nr�r'r:r;Fr�)
rKrYr=r=r�r�r�rbrHr_r�r(r(r)�
startTagTable}sz,getPhases.<locals>.InBodyPhase.startTagTablecSs6|j��|j�|�|jj��d|d<d|j_dS)NTr{F)r=r.r�r|r�rKrbr�r(r(r)�startTagVoidFormatting�s

z5getPhases.<locals>.InBodyPhase.startTagVoidFormattingcSs@|jj}|�|�d|dvr<|dd�t�dkr<||j_dS)Nr2rv�hidden)rKrbrXrkr)rBr�rbr(r(r)�
startTagInput�s
�z,getPhases.<locals>.InBodyPhase.startTagInputcSs$|j�|�|jj��d|d<dSr�r�r�r(r(r)�startTagParamSource�sz2getPhases.<locals>.InBodyPhase.startTagParamSourcecSsJ|jjddd�r|�td��|j�|�|jj��d|d<d|j_dS)Nr'r:r;Tr{F)	r=r=r>r�r�r|r�rKrbr�r(r(r)�
startTagHr�sz)getPhases.<locals>.InBodyPhase.startTagHrcSs6|j�dddd��|�tdd|d|dd��dS)	Nzunexpected-start-tag-treated-as�image�img�ZoriginalNameZnewNamerqrvrz�rjrz)rKr}r�r�r�r(r(r)�
startTagImage�s�
�z,getPhases.<locals>.InBodyPhase.startTagImagecSs|j�dddi�|jjrdSi}d|dvr>|dd|d<|�tdd|d��|�td	d��|�td
d��d|dvr�|dd}nd}|�td
|d��|d��}d|vr�|d=d|vr�|d=d|d<|�tdd||dd��|�	td
��|�td	d��|�	td��dS)Nzdeprecated-tagr?�isindex�actionrvrArq)rj�hrZlabel�promptz3This is a searchable index. Enter search keywords: rp�r2rv�inputrzr`)
rKr}r=rBr�r�r�r�copyr�)rBr�Z
form_attrsrerjr(r(r)�startTagIsIndex�s<
��
�z.getPhases.<locals>.InBodyPhase.startTagIsIndexcSs0|j�|�|jjj|jj_|j|_d|j_dSrT)	r=r�rKrNr[r\r/r�rbr�r(r(r)�startTagTextarea�sz/getPhases.<locals>.InBodyPhase.startTagTextareacSsd|j_|�|�dSrT)rKrb�startTagRawtextr�r(r(r)�startTagIFrame�sz-getPhases.<locals>.InBodyPhase.startTagIFramecSs"|jjr|�|�n
|�|�dSr-)rKrMrkr�r�r(r(r)r��sz/getPhases.<locals>.InBodyPhase.startTagNoscriptcSs|j�|d�dS)z8iframe, noembed noframes, noscript(if scripting enabled)r�Nr�r�r(r(r)rk�sz.getPhases.<locals>.InBodyPhase.startTagRawtextcSs@|jjdjdkr$|jj�td��|j��|jj�|�dS�Nru�option)	r=r|r?rKr_r�r�r.r�r�r(r(r)�startTagOpt�s
z*getPhases.<locals>.InBodyPhase.startTagOptcSs�|j��|j�|�d|j_|jj|jjd|jjd|jjd|jjd|jjd|jjdfvrx|jjd|j_n|jjd	|j_dS)
NFr�r�r�r�r�r��inSelectInTabler�)r=r.r�rKrbr_rHr�r(r(r)�startTagSelect�s





�z-getPhases.<locals>.InBodyPhase.startTagSelectcSsB|j�d�r2|j��|jjdjdkr2|j��|j�|�dS)N�rubyru)r=r=�generateImpliedEndTagsr|r?rKr}r�r�r(r(r)�startTagRpRt�s


z+getPhases.<locals>.InBodyPhase.startTagRpRtcSsZ|j��|j�|�|j�|�td|d<|j�|�|drV|jj��d|d<dS)NrgrirzTr{)	r=r.rKrrrr�r|r�r�r(r(r)�startTagMath�s
z+getPhases.<locals>.InBodyPhase.startTagMathcSsZ|j��|j�|�|j�|�td|d<|j�|�|drV|jj��d|d<dS)NrxrirzTr{)	r=r.rKrrrr�r|r�r�r(r(r)�startTagSvgs
z*getPhases.<locals>.InBodyPhase.startTagSvgcSs|j�dd|di�dS)a5 Elements that should be children of other elements that have a
            different insertion mode; here they are ignored
            "caption", "col", "colgroup", "frame", "frameset", "head",
            "option", "optgroup", "tbody", "td", "tfoot", "th", "thead",
            "tr", "noscript"
            zunexpected-start-tag-ignoredr?Nr�r�r(r(r)�startTagMisplacedsz0getPhases.<locals>.InBodyPhase.startTagMisplacedcSs|j��|j�|�dSr-)r=r.r�r�r(r(r)r�s
z,getPhases.<locals>.InBodyPhase.startTagOthercSs�|jjddd�sD|�tdd��|j�dddi�|�tdd��nT|j�d�|jjdj	dkrt|j�dddi�|jj�
�}|j	dkr�|jj�
�}q�dS)	Nr'r:r;rqrr?rrru)r=r=r?r�rKr}r>rsr|r?r�rr(r(r)r>s
z&getPhases.<locals>.InBodyPhase.endTagPcSs~|j�d�s|j��dS|jjdjdkrj|jjdd�D],}|jtd�vr<|j�dd|jd��qjq<|jjd|j_dS)Nr�ru�)r'r(r)�optgrouprnr'�rp�rtr�r�r�r�r�r�r�r��$expected-one-end-tag-but-got-another�ZgotNameZexpectedName�	afterBody)	r=r=rKr}r|r?r�rHr_rr(r(r)�
endTagBody)s

�z)getPhases.<locals>.InBodyPhase.endTagBodycSs"|j�d�r|�td��|SdS)Nr�)r=r=rr�r�r(r(r)�
endTagHtml;sz)getPhases.<locals>.InBodyPhase.endTagHtmlcSs�|ddkr|j|_|j�|d�}|r2|j��|jjdj|dkr^|j�dd|di�|r�|jj�	�}|j|dkr�|jj�	�}qndS)Nr?r+ru�end-tag-too-early)
r r�r=r=rsr|r?rKr}r�)rBr�ZinScoper�r(r(r)�endTagBlockAs
z*getPhases.<locals>.InBodyPhase.endTagBlockcSsv|jj}d|j_|dus$|j�|�s8|j�dddi�n:|j��|jjd|krd|j�dddi�|jj�|�dS)Nrr?rAruzend-tag-too-early-ignored)r=rBr=rKr}rsr|rrr(r(r)�
endTagFormOs�
�z)getPhases.<locals>.InBodyPhase.endTagFormcSs�|ddkrd}nd}|jj|d|d�sB|j�dd|di�nf|jj|dd�|jjdj|dkr�|j�dd|di�|jj��}|j|dkr�|jj��}q�dS)	Nr?r)�listr;r�Zexcluderur�)r=r=rKr}rsr|r?r�)rBr�r<r�r(r(r)�endTagListItem\s
�z-getPhases.<locals>.InBodyPhase.endTagListItemcSs�tD]}|j�|�r|j��q$q|jjdj|dkrP|j�dd|di�tD]8}|j�|�rT|jj��}|jtvr�|jj��}qpq�qTdS)Nrur?r�)	rr=r=rsr|r?rKr}r�)rBr��itemr(r(r)�
endTagHeadingms

z,getPhases.<locals>.InBodyPhase.endTagHeadingcSsd}|dk�r
|d7}|j�|d�}|rD||jjvrR|j�|j�sR|�|�dS||jjvr�|j�dd|di�|jj�	|�dS|j�|j�s�|j�dd|di�dS||jjdkr�|j�d	d|di�|jj�
|�}d}|jj|d�D]}|jtvr�|}�qq�|du�rR|jj�
�}||k�r@|jj�
�}�q&|jj�	|�dS|jj|d}|jj�
|�}|}	}
d}|jj�
|
�}|d
k�rX|d7}|d8}|jj|}
|
|jjv�r�|jj�	|
��q�|
|k�rސqX|	|k�r�|jj�
|
�d}|
��}
|
|jj|jj�
|
�<|
|jj|jj�
|
�<|
}
|	j�rF|	j�|	�|
�|	�|
}	�q�|	j�rl|	j�|	�|jtd�v�r�|j��\}}|�|	|�n
|�|	�|��}
|�|
�|�|
�|jj�	|�|jj�||
�|jj�	|�|jj�|jj�
|�d|
�qdS)z)The much-feared adoption agency algorithmr�rr?Nzadoption-agency-1.2zadoption-agency-4.4ruzadoption-agency-1.3r$�r�r�r�r�r�)r=rMr|r=r?r�rKr}r%r�indexrFrr�Z	cloneNoder7r8ZappendChildr�ZgetTableMisnestedNodePosition�insertBeforeZreparentChildren�insert)rBr�ZouterLoopCounterZformattingElementZafeIndexZ
furthestBlockrmZcommonAncestorZbookmarkZlastNoder�ZinnerLoopCounterr�Zcloner7r�r(r(r)rN|s�

�
��







����



�z/getPhases.<locals>.InBodyPhase.endTagFormattingcSs�|j�|d�r|j��|jjdj|dkrF|j�dd|di�|j�|d�r�|jj��}|j|dkr~|jj��}qb|j��dS)Nr?rur�)	r=r=rsr|r?rKr}r��clearActiveFormattingElements)rBr�rmr(r(r)�endTagAppletMarqueeObjects
z8getPhases.<locals>.InBodyPhase.endTagAppletMarqueeObjectcSs@|j�dddd��|j��|j�tdd��|jj��dS)Nzunexpected-end-tag-treated-asr�z
br elementr_rq)rKr}r=r.r�r�r|r�r�r(r(r)r+s�
z'getPhases.<locals>.InBodyPhase.endTagBrcSs�|jjddd�D]�}|j|dkrz|jj|dd�|jjdj|dkrb|j�dd|di�|jj��|krtqbq�q|jtvr|j�dd|di�q�qdS)Nrur?r�r)	r=r|r?rsrKr}r�rFrrr(r(r)r�2s
z*getPhases.<locals>.InBodyPhase.endTagOtherr�)	rrr
rrr4r
rrr�r�)rD�article�aside�
blockquote�center�details�dirr*�dl�fieldset�
figcaption�figure�footer�header�hgroup�main�menu�nav�olr'�section�summary�ul)r+r,rA)r)r'r(rTrJ)�b�big�code�em�font�i�s�small�strike�strong�tt�urQr:)ZappletZmarquee�objectZxmpr�)Zarear��embedr^�keygenZwbr)Zparam�sourceZtrackrgrdr]rbr-Ziframer	)Znoembedrr�)rzr{)rnryZmathrx)r��colr��framer�r�r�r�r�r�r�)rDr�r�r�r:r�r�Zdialogr�r*r�r�r�r�r�r�r�r,r�r�r�r�r+r�r�r�r')r'r(r))rJr�r�r�r�r�r�rQr�r�r�r�r�r�r�)?r8r9r:r�rJr#r&r�r/r�r r6rrr?r@rCrGrHrIrOrPrRrSrUrVrWrXrZr[r\rarirjrlr�rkrorqrtrurvrwr�r>rr�r�r�r�r�rNr�rr�rr�r�rr�r�r��
__classcell__r()r"r��r�r)r"�s�

	

	

$������-���r"c@s`eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	e
�g�Zee_
e
�defg�Ze	e_
dS)
zgetPhases.<locals>.TextPhasecSs|j�|d�dSr�r�r�r(r(r)r��sz.getPhases.<locals>.TextPhase.processCharacterscSs8|j�dd|jjdji�|jj��|jj|j_dS)Nz&expected-named-closing-tag-but-got-eofr?ruT)rKr}r=r|r?r�r�r_rAr(r(r)r��s�z'getPhases.<locals>.TextPhase.processEOFcSsdsJd|d��dS)NFz4Tried to process start tag %s in RCDATA/RAWTEXT moder?r(r�r(r(r)r��sz*getPhases.<locals>.TextPhase.startTagOthercSs*|jj��}|jdksJ�|jj|j_dS)Nr
)r=r|r�r?rKr�r_rr(r(r)�endTagScript�sz)getPhases.<locals>.TextPhase.endTagScriptcSs|jj��|jj|j_dSr-)r=r|r�rKr�r_r�r(r(r)r��sz(getPhases.<locals>.TextPhase.endTagOtherr
N)r8r9r:r�r�r�r�r�r�r�rr�r�r�r�r(r(r(r)�	TextPhase�s
�r�c
seZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Ze�d%�jfd&e
fd'efd(efd)e
fd*efd+efd,efd-efd.efg
�Zee_e�d+efd/efg�Zee_d0S)1zgetPhases.<locals>.InTablePhasecSs$|jjdjdvr |jj��qdS)Nru)r�r�)r=r|r?r�rAr(r(r)�clearStackToTableContext�sz8getPhases.<locals>.InTablePhase.clearStackToTableContextcSs0|jjdjdkr |j�d�n|jjs,J�dS)Nrur�zeof-in-table�r=r|r?rKr}rRrAr(r(r)r��sz*getPhases.<locals>.InTablePhase.processEOFcSs4|jj}|jjd|j_||jj_|jj�|�dS�N�inTableText)rKr_rHr�r��rBr�r�r(r(r)r��s
z6getPhases.<locals>.InTablePhase.processSpaceCharacterscSs4|jj}|jjd|j_||jj_|jj�|�dSr�)rKr_rHr�r�r�r(r(r)r��s
z1getPhases.<locals>.InTablePhase.processCharacterscSs&d|j_|jjd�|�d|j_dS)NTr�F)r=�insertFromTablerKrHr�r�r(r(r)r��sz*getPhases.<locals>.InTablePhase.insertTextcSs6|��|jj�t�|j�|�|jjd|j_dS)Nr�)	r�r=r%r�rr�rKrHr_r�r(r(r)�startTagCaption�sz/getPhases.<locals>.InTablePhase.startTagCaptioncSs(|��|j�|�|jjd|j_dS)Nr��r�r=r�rKrHr_r�r(r(r)�startTagColgroup�sz0getPhases.<locals>.InTablePhase.startTagColgroupcSs|�tdd��|S)Nr�rq)r�r�r�r(r(r)�startTagCol�sz+getPhases.<locals>.InTablePhase.startTagColcSs(|��|j�|�|jjd|j_dS�Nr�r�r�r(r(r)�startTagRowGroup�sz0getPhases.<locals>.InTablePhase.startTagRowGroupcSs|�tdd��|S)Nr�rq)r�r�r�r(r(r)�startTagImplyTbody�sz2getPhases.<locals>.InTablePhase.startTagImplyTbodycSs6|j�dddd��|jj�td��|jjs2|SdS)NrKr�rL)rKr}r_r�r�rRr�r(r(r)rW�s�z-getPhases.<locals>.InTablePhase.startTagTablecSs|jjd�|�Srr�r�r(r(r)�startTagStyleScript�sz3getPhases.<locals>.InTablePhase.startTagStyleScriptcSsVd|dvrH|dd�t�dkrH|j�d�|j�|�|jj��n
|�|�dS)Nr2rvrYz unexpected-hidden-input-in-table)	rkrrKr}r=r�r|r�r�r�r(r(r)rZ�s�z-getPhases.<locals>.InTablePhase.startTagInputcSsD|j�d�|jjdur@|j�|�|jjd|j_|jj��dS)Nzunexpected-form-in-tableru)rKr}r=rBr�r|r�r�r(r(r)rC�s
z,getPhases.<locals>.InTablePhase.startTagFormcSs<|j�dd|di�d|j_|jjd�|�d|j_dS)Nz)unexpected-start-tag-implies-table-voodoor?Tr�F)rKr}r=r�rHr�r�r(r(r)r��sz-getPhases.<locals>.InTablePhase.startTagOthercSs�|jjddd�r�|j��|jjdjdkrJ|j�dd|jjdjd��|jjdjdkrj|jj��qJ|jj��|j��n|jj	s�J�|j��dS)Nr�r;ruzend-tag-too-early-namedr})
r=r=rsr|r?rKr}r�rarRr�r(r(r)�endTagTables
��z+getPhases.<locals>.InTablePhase.endTagTablecSs|j�dd|di�dSrr�r�r(r(r)�endTagIgnoresz,getPhases.<locals>.InTablePhase.endTagIgnorecSs<|j�dd|di�d|j_|jjd�|�d|j_dS)Nz'unexpected-end-tag-implies-table-voodoor?Tr�F)rKr}r=r�rHr�r�r(r(r)r�sz+getPhases.<locals>.InTablePhase.endTagOtherr�r�r�r��r�r�r�)r�r�r�r�)rr
rgrA)r�r�r�r�r�r�r�r�r�r�r�N)r8r9r:r�r�r�r�r�r�r�r�r�r�r�r�rWr�rZrCr�r�r�r�rr�r�r�r�r�r(�r�r(r)�InTablePhase�sN	
���r�csZeZdZdZ��fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Z�ZS)z#getPhases.<locals>.InTableTextPhase)r��characterTokenscs&t�|�j|i|��d|_g|_dSr-)rrJr�r�r!)�InTableTextPhaser�r(r)rJ6sz,getPhases.<locals>.InTableTextPhase.__init__cSsdd�dd�|jD��}tdd�|D��rJtd|d�}|jjd�|�n|rZ|j�|�g|_dS)Nr�cSsg|]}|d�qS)rvr(�r>r�r(r(r)r4<rDzGgetPhases.<locals>.InTableTextPhase.flushCharacters.<locals>.<listcomp>cSsg|]}|tv�qSr(r1r�r(r(r)r4=rDrprfr�)�joinr�r5rrKrHr�r=)rBrvr�r(r(r)�flushCharacters;sz3getPhases.<locals>.InTableTextPhase.flushCharacterscSs|��|j|j_|Sr-�r�r�rKr_r�r(r(r)r�Ds
z2getPhases.<locals>.InTableTextPhase.processCommentcSs|��|j|j_dSr�r�rAr(r(r)r�Is
z.getPhases.<locals>.InTableTextPhase.processEOFcSs |ddkrdS|j�|�dS�Nrvr0�r�r�r�r(r(r)r�Nsz5getPhases.<locals>.InTableTextPhase.processCharacterscSs|j�|�dSr-r�r�r(r(r)r�Ssz:getPhases.<locals>.InTableTextPhase.processSpaceCharacterscSs|��|j|j_|Sr-r�r�r(r(r)r�Xs
z3getPhases.<locals>.InTableTextPhase.processStartTagcSs|��|j|j_|Sr-r�r�r(r(r)r�]s
z1getPhases.<locals>.InTableTextPhase.processEndTag)
r8r9r:r�rJr�r�r�r�r�r�r�r�r()r�r�r)r�3s	r�cs�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
e�d�jfdefg�Ze	e_e�de
fdefdefg�Ze
e_dS)z!getPhases.<locals>.InCaptionPhasecSs|jjddd�S)Nr�r�r;�r=r=rAr(r(r)�ignoreEndTagCaptionfsz5getPhases.<locals>.InCaptionPhase.ignoreEndTagCaptioncSs|jjd��dSr��rKrHr�rAr(r(r)r�isz,getPhases.<locals>.InCaptionPhase.processEOFcSs|jjd�|�Sr��rKrHr�r�r(r(r)r�lsz3getPhases.<locals>.InCaptionPhase.processCharacterscSs0|j��|��}|jj�td��|s,|SdS�Nr��rKr}r�r_r�r��rBr��ignoreEndTagr(r(r)�startTagTableElementos

z6getPhases.<locals>.InCaptionPhase.startTagTableElementcSs|jjd�|�Sr�r�r�r(r(r)r�wsz/getPhases.<locals>.InCaptionPhase.startTagOthercSs�|��s�|j��|jjdjdkrB|j�dd|jjdjd��|jjdjdkrb|jj��qB|jj��|j��|jj	d|j_
n|jjs�J�|j��dS)Nrur�r|r}r�)r�r=rsr|r?rKr}r�r�rHr_rRr�r(r(r)�
endTagCaptionzs
��
z/getPhases.<locals>.InCaptionPhase.endTagCaptioncSs0|j��|��}|jj�td��|s,|SdSr�r�r�r(r(r)r��s

z-getPhases.<locals>.InCaptionPhase.endTagTablecSs|j�dd|di�dSrr�r�r(r(r)r��sz.getPhases.<locals>.InCaptionPhase.endTagIgnorecSs|jjd�|�Sr��rKrHr�r�r(r(r)r��sz-getPhases.<locals>.InCaptionPhase.endTagOtherr��	r�r�r�r�r�r�r�r�r�r�r�)
r�r�r�r�r�r�r�r�r�r�N)r8r9r:r�r�r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r(r�r(r)�InCaptionPhasebs2����r�cs�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Ze
�d�jfdefg�Ze	e_e
�de
fdefg�Zee_dS)z%getPhases.<locals>.InColumnGroupPhasecSs|jjdjdkS)Nrur�)r=r|r?rAr(r(r)�ignoreEndTagColgroup�sz:getPhases.<locals>.InColumnGroupPhase.ignoreEndTagColgroupcSsD|jjdjdkr"|jjsJ�dS|��}|�td��|s@dSdS)Nrur�r�T)r=r|r?rKrRr��endTagColgroupr�)rBr�r(r(r)r��sz0getPhases.<locals>.InColumnGroupPhase.processEOFcSs"|��}|�td��|s|SdS�Nr��r�r�r�r�r(r(r)r��sz7getPhases.<locals>.InColumnGroupPhase.processCharacterscSs$|j�|�|jj��d|d<dSr�r�r�r(r(r)r��sz1getPhases.<locals>.InColumnGroupPhase.startTagColcSs"|��}|�td��|s|SdSr�r�r�r(r(r)r��sz3getPhases.<locals>.InColumnGroupPhase.startTagOthercSs@|��r |jjsJ�|j��n|jj��|jjd|j_dS�Nr�)	r�rKrRr}r=r|r�rHr_r�r(r(r)r��s
z4getPhases.<locals>.InColumnGroupPhase.endTagColgroupcSs|j�dddi�dS)Nz
no-end-tagr?r�r�r�r(r(r)�	endTagCol�sz/getPhases.<locals>.InColumnGroupPhase.endTagColcSs"|��}|�td��|s|SdSr�r�r�r(r(r)r��sz1getPhases.<locals>.InColumnGroupPhase.endTagOtherr�r�r�N)r8r9r:r�r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r(r�r(r)�InColumnGroupPhase�s&
	��r�cs�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Ze�d�jfde	fde
fdefg�Zee_e�de
fdefdefg�Zee_d S)!z#getPhases.<locals>.InTableBodyPhasecSsB|jjdjdvr |jj��q|jjdjdkr>|jjs>J�dS)Nru)r�r�r�r�r�)r=r|r?r�rKrRrAr(r(r)�clearStackToTableBodyContext�sz@getPhases.<locals>.InTableBodyPhase.clearStackToTableBodyContextcSs|jjd��dSr�r�rAr(r(r)r��sz.getPhases.<locals>.InTableBodyPhase.processEOFcSs|jjd�|�Sr�rr�r(r(r)r��sz:getPhases.<locals>.InTableBodyPhase.processSpaceCharacterscSs|jjd�|�Sr�r�r�r(r(r)r��sz5getPhases.<locals>.InTableBodyPhase.processCharacterscSs(|��|j�|�|jjd|j_dS)Nr�)r�r=r�rKrHr_r�r(r(r)�
startTagTrsz.getPhases.<locals>.InTableBodyPhase.startTagTrcSs*|j�dd|di�|�tdd��|S)Nzunexpected-cell-in-table-bodyr?r�rq)rKr}r�r�r�r(r(r)�startTagTableCells

�z5getPhases.<locals>.InTableBodyPhase.startTagTableCellcSsn|jjddd�s0|jjddd�s0|jjddd�rT|��|�t|jjdj��|S|jjs`J�|j�	�dS�Nr�r�r;r�r�ru�
r=r=r��endTagTableRowGroupr�r|r?rKrRr}r�r(r(r)�startTagTableOthers���z6getPhases.<locals>.InTableBodyPhase.startTagTableOthercSs|jjd�|�Sr�r�r�r(r(r)r�sz1getPhases.<locals>.InTableBodyPhase.startTagOthercSsT|jj|ddd�r:|��|jj��|jjd|j_n|j�dd|di�dS)Nr?r�r;r�� unexpected-end-tag-in-table-body)	r=r=r�r|r�rKrHr_r}r�r(r(r)r�s
�z7getPhases.<locals>.InTableBodyPhase.endTagTableRowGroupcSsn|jjddd�s0|jjddd�s0|jjddd�rT|��|�t|jjdj��|S|jjs`J�|j�	�dSr�r�r�r(r(r)r�%s���z/getPhases.<locals>.InTableBodyPhase.endTagTablecSs|j�dd|di�dS)Nr�r?r�r�r(r(r)r�2s
�z0getPhases.<locals>.InTableBodyPhase.endTagIgnorecSs|jjd�|�Sr�r�r�r(r(r)r�6sz/getPhases.<locals>.InTableBodyPhase.endTagOtherr�r��r�r�)r�r�r�r�r�r�r�r�)r�r�r�r�r�r�r�r�N)r8r9r:r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r(r�r(r)�InTableBodyPhase�s<
	
����r�cs�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Ze�d�jfde
fdefg�Zee_e�de
fdefd efd!efg�Zee_d"S)#zgetPhases.<locals>.InRowPhasecSs@|jjdjdvr<|j�dd|jjdji�|jj��qdS)Nru)r�r�z'unexpected-implied-end-tag-in-table-rowr?)r=r|r?rKr}r�rAr(r(r)�clearStackToTableRowContextOs
�z9getPhases.<locals>.InRowPhase.clearStackToTableRowContextcSs|jjddd�S)Nr�r�r;r�rAr(r(r)�ignoreEndTagTrUsz,getPhases.<locals>.InRowPhase.ignoreEndTagTrcSs|jjd��dSr�r�rAr(r(r)r�Ysz(getPhases.<locals>.InRowPhase.processEOFcSs|jjd�|�Sr�rr�r(r(r)r�\sz4getPhases.<locals>.InRowPhase.processSpaceCharacterscSs|jjd�|�Sr�r�r�r(r(r)r�_sz/getPhases.<locals>.InRowPhase.processCharacterscSs6|��|j�|�|jjd|j_|jj�t�dS)Nr�)	r�r=r�rKrHr_r%r�rr�r(r(r)r�bsz/getPhases.<locals>.InRowPhase.startTagTableCellcSs"|��}|�td��|s|SdS�Nr��r��endTagTrr�r�r(r(r)r�hsz0getPhases.<locals>.InRowPhase.startTagTableOthercSs|jjd�|�Sr�r�r�r(r(r)r�osz+getPhases.<locals>.InRowPhase.startTagOthercSsH|��s.|��|jj��|jjd|j_n|jjs:J�|j�	�dSr�)
r�r�r=r|r�rKrHr_rRr}r�r(r(r)r�rsz&getPhases.<locals>.InRowPhase.endTagTrcSs"|��}|�td��|s|SdSr�r�r�r(r(r)r�|sz)getPhases.<locals>.InRowPhase.endTagTablecSs4|jj|ddd�r&|�td��|S|j��dS)Nr?r�r;r�)r=r=r�r�rKr}r�r(r(r)r��sz1getPhases.<locals>.InRowPhase.endTagTableRowGroupcSs|j�dd|di�dS)Nzunexpected-end-tag-in-table-rowr?r�r�r(r(r)r��s
�z*getPhases.<locals>.InRowPhase.endTagIgnorecSs|jjd�|�Sr�r�r�r(r(r)r��sz)getPhases.<locals>.InRowPhase.endTagOtherr�r�)r�r�r�r�r�r�r�r�r�r�)r�r�r�r�r�r�r�N)r8r9r: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)�
InRowPhaseJs>
����r�cs�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
e�d�jfdefg�Ze	e_e�de
fdefdefg�Ze
e_dS)zgetPhases.<locals>.InCellPhasecSsB|jjddd�r |�td��n|jjddd�r>|�td��dS�Nr�r�r;r�)r=r=�endTagTableCellr�rAr(r(r)�	closeCell�sz(getPhases.<locals>.InCellPhase.closeCellcSs|jjd��dSr�r�rAr(r(r)r��sz)getPhases.<locals>.InCellPhase.processEOFcSs|jjd�|�Sr�r�r�r(r(r)r��sz0getPhases.<locals>.InCellPhase.processCharacterscSsF|jjddd�s |jjddd�r,|��|S|jjs8J�|j��dSr�)r=r=r�rKrRr}r�r(r(r)r��s�z1getPhases.<locals>.InCellPhase.startTagTableOthercSs|jjd�|�Sr�r�r�r(r(r)r��sz,getPhases.<locals>.InCellPhase.startTagOthercSs�|jj|ddd�r�|j�|d�|jjdj|dkrp|j�dd|di�|jj��}|j|dkrPq|qPn|jj��|j��|jj	d|j_
n|j�dd|di�dS)Nr?r�r;ruzunexpected-cell-end-tagr�r)r=r=rsr|r?rKr}r�r�rHr_rr(r(r)r��s
�
z.getPhases.<locals>.InCellPhase.endTagTableCellcSs|j�dd|di�dSrr�r�r(r(r)r��sz+getPhases.<locals>.InCellPhase.endTagIgnorecSs.|jj|ddd�r |��|S|j��dS)Nr?r�r;)r=r=r�rKr}r�r(r(r)�endTagImply�sz*getPhases.<locals>.InCellPhase.endTagImplycSs|jjd�|�Sr�r�r�r(r(r)r��sz*getPhases.<locals>.InCellPhase.endTagOtherr�r�r�)r�r�r�r�r�r�N)r8r9r:r�r�r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r(r�r(r)�InCellPhase�s.
���r�c	s�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Ze�d�jfdefdefde	fde
fdefg�Zee_e�de
fdefdefg�Zee_dS) z getPhases.<locals>.InSelectPhasecSs0|jjdjdkr |j�d�n|jjs,J�dS)Nrur�z
eof-in-selectr�rAr(r(r)r��sz+getPhases.<locals>.InSelectPhase.processEOFcSs$|ddkrdS|j�|d�dSr�r�r�r(r(r)r��sz2getPhases.<locals>.InSelectPhase.processCharacterscSs.|jjdjdkr|jj��|j�|�dSrm�r=r|r?r�r�r�r(r(r)�startTagOption�sz/getPhases.<locals>.InSelectPhase.startTagOptioncSsL|jjdjdkr|jj��|jjdjdkr<|jj��|j�|�dS)Nrurnryr�r�r(r(r)�startTagOptgroup	s
z1getPhases.<locals>.InSelectPhase.startTagOptgroupcSs|j�d�|�td��dS)Nzunexpected-select-in-selectr�)rKr}�endTagSelectr�r�r(r(r)rq	sz/getPhases.<locals>.InSelectPhase.startTagSelectcSs>|j�d�|jjddd�r.|�td��|S|jjs:J�dS)Nzunexpected-input-in-selectr�r;)rKr}r=r=rr�rRr�r(r(r)rZ	s
z.getPhases.<locals>.InSelectPhase.startTagInputcSs|jjd�|�Srr�r�r(r(r)r�	sz/getPhases.<locals>.InSelectPhase.startTagScriptcSs|j�dd|di�dS)Nzunexpected-start-tag-in-selectr?r�r�r(r(r)r�	s
�z.getPhases.<locals>.InSelectPhase.startTagOthercSs6|jjdjdkr |jj��n|j�dddi�dS)Nrurn�unexpected-end-tag-in-selectr?�r=r|r?r�rKr}r�r(r(r)�endTagOption	s
�z-getPhases.<locals>.InSelectPhase.endTagOptioncSsf|jjdjdkr0|jjdjdkr0|jj��|jjdjdkrP|jj��n|j�dddi�dS)Nrurn���ryrr?rr�r(r(r)�endTagOptgroup%	s��z/getPhases.<locals>.InSelectPhase.endTagOptgroupcSsZ|jjddd�r@|jj��}|jdkr4|jj��}q|j��n|jjsLJ�|j��dS)Nr�r;)	r=r=r|r�r?rKrarRr}rr(r(r)r2	s
z-getPhases.<locals>.InSelectPhase.endTagSelectcSs|j�dd|di�dS)Nrr?r�r�r(r(r)r�=	s
�z,getPhases.<locals>.InSelectPhase.endTagOtherr�rnryr�)rgr�r-r
N)r8r9r:r�r�r�r�r�rrqrZr�r�rrrr�rr�r�r�r�r�r(r�r(r)�
InSelectPhase�s8
��rc@sneZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
e�d
efg�Z
ee
_e�d
e	fg�Ze
e_dS)z'getPhases.<locals>.InSelectInTablePhasecSs|jjd��dS�Nr�r�rAr(r(r)r�U	sz2getPhases.<locals>.InSelectInTablePhase.processEOFcSs|jjd�|�Srr�r�r(r(r)r�X	sz9getPhases.<locals>.InSelectInTablePhase.processCharacterscSs(|j�dd|di�|�td��|S)Nz5unexpected-table-element-start-tag-in-select-in-tabler?r�)rKr}r�r�r�r(r(r)rW[	sz5getPhases.<locals>.InSelectInTablePhase.startTagTablecSs|jjd�|�Srr�r�r(r(r)r�`	sz5getPhases.<locals>.InSelectInTablePhase.startTagOthercSs@|j�dd|di�|jj|ddd�r<|�td��|SdS)Nz3unexpected-table-element-end-tag-in-select-in-tabler?r�r;r�)rKr}r=r=r�r�r�r(r(r)r�c	sz3getPhases.<locals>.InSelectInTablePhase.endTagTablecSs|jjd�|�Srr�r�r(r(r)r�i	sz3getPhases.<locals>.InSelectInTablePhase.endTagOther)r�r�r�r�r�r�r�r�N)r8r9r:r�r�r�r�rWr�r�r�rr�r�r�r�r(r(r(r)�InSelectInTablePhaseR	s&����r	csBeZdZe�Zegd��Zdd�Z�fdd�Zdd�Z	dd	�Z
d
S)z(getPhases.<locals>.InForeignContentPhase),r�r�r�r�r�r�r�r'r*r�r(r�r�Zh1Zh2Zh3Zh4Zh5Zh6r�rdr�r^r)r,r�r4rQr�r'r+rrr�r��spanr�r��sub�supr�r�r�r��varc%Ssnddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%�$}|d&|vrj||d&|d&<dS)'NZaltGlyphZaltGlyphDefZaltGlyphItemZanimateColorZ
animateMotionZanimateTransformZclipPathZfeBlendZ
feColorMatrixZfeComponentTransferZfeCompositeZfeConvolveMatrixZfeDiffuseLightingZfeDisplacementMapZfeDistantLightZfeFloodZfeFuncAZfeFuncBZfeFuncGZfeFuncRZfeGaussianBlurZfeImageZfeMergeZfeMergeNodeZfeMorphologyZfeOffsetZfePointLightZfeSpecularLightingZfeSpotLightZfeTileZfeTurbulenceZ
foreignObjectZglyphRefZlinearGradientZradialGradientZtextPath)$ZaltglyphZaltglyphdefZaltglyphitemZanimatecolorZ
animatemotionZanimatetransformZclippathZfeblendZ
fecolormatrixZfecomponenttransferZfecompositeZfeconvolvematrixZfediffuselightingZfedisplacementmapZfedistantlightZfefloodZfefuncaZfefuncbZfefuncgZfefuncrZfegaussianblurZfeimageZfemergeZfemergenodeZfemorphologyZfeoffsetZfepointlightZfespecularlightingZfespotlightZfetileZfeturbulenceZ
foreignobjectZglyphrefZlineargradientZradialgradientZtextpathr?r()rBr��replacementsr(r(r)�adjustSVGTagNames�	sN�%z:getPhases.<locals>.InForeignContentPhase.adjustSVGTagNamescsL|ddkrd|d<n&|jjr<tdd�|dD��r<d|j_��||�dS)Nrvr0u�css|]}|tvVqdSr-r1r2r(r(r)�	<genexpr>�	rDzMgetPhases.<locals>.InForeignContentPhase.processCharacters.<locals>.<genexpr>F)rKrbr5r�r�r�r(r)r��	s
�z:getPhases.<locals>.InForeignContentPhase.processCharacterscSs(|jjd}|d|jvs>|ddkr�t|d���hd�@r�|j�dd|di�|jjdj|jjkr�|j�	|jjd�s�|j�
|jjd�s�|jj��qT|S|jtdkr�|j�
|�n$|jtdkr�|�|�|j�|�|j�|�|j|d	<|j�|�|d
�r$|jj��d|d<dS)
Nrur?r�rv>ZcolorZface�sizez*unexpected-html-element-in-foreign-contentrgrxrirzTr{)r=r|�breakoutElements�set�keysrKr}rir�rnror�rrrrrr�)rBr�r�r(r(r)r��	s:
��
����


z8getPhases.<locals>.InForeignContentPhase.processStartTagcSs�t|jj�d}|jjd}|j�t�|dkrF|j�dd|di�|j�t�|dkr�|jj|jj	dkr�|jj�
�|jjj|j_|jj��|kr�|jjs�J�q�d}q�|d8}|jj|}|j
|jjkr�qFqF|jj�|�}q�qF|S)Nrrur?rr�)rr=r|r?rkrrKr}r_rHr�r�r�rir�r�)rBr�Z	nodeIndexr�r�r(r(r)r��	s&z6getPhases.<locals>.InForeignContentPhase.processEndTagN)r8r9r:r�r�r�rrr�r�r�r(r�r(r)�InForeignContentPhasex	s	)rc@sveZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Ze�
defg�Ze	e_e�
de
fg�Zee_dS)z!getPhases.<locals>.AfterBodyPhasecSsdSr-r(rAr(r(r)r��	sz,getPhases.<locals>.AfterBodyPhase.processEOFcSs|j�||jjd�dS)Nrr�r�r(r(r)r��	sz0getPhases.<locals>.AfterBodyPhase.processCommentcSs |j�d�|jjd|j_|S)Nzunexpected-char-after-bodyr��rKr}rHr_r�r(r(r)r��	sz3getPhases.<locals>.AfterBodyPhase.processCharacterscSs|jjd�|�Sr�r�r�r(r(r)r��	sz.getPhases.<locals>.AfterBodyPhase.startTagHtmlcSs*|j�dd|di�|jjd|j_|S)Nzunexpected-start-tag-after-bodyr?r�rr�r(r(r)r��	s

�z/getPhases.<locals>.AfterBodyPhase.startTagOthercSs*|jjr|j�d�n|jjd|j_dS)Nz'unexpected-end-tag-after-body-innerhtml�afterAfterBody)rKrRr}rHr_)rBr?r(r(r)r�
sz,getPhases.<locals>.AfterBodyPhase.endTagHtmlcSs*|j�dd|di�|jjd|j_|S)Nzunexpected-end-tag-after-bodyr?r�rr�r(r(r)r�

s

�z-getPhases.<locals>.AfterBodyPhase.endTagOtherr�N)r8r9r:r�r�r�r�r�r�r�r�r�rr�r�r�r�r(r(r(r)�AfterBodyPhase�	s�rcs�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Ze
�d�jfdefdefde	fg�Ze
e_e
�defg�Zee_dS)z"getPhases.<locals>.InFramesetPhasecSs0|jjdjdkr |j�d�n|jjs,J�dS)Nrur�zeof-in-framesetr�rAr(r(r)r�
sz-getPhases.<locals>.InFramesetPhase.processEOFcSs|j�d�dS)Nzunexpected-char-in-framesetr�r�r(r(r)r�"
sz4getPhases.<locals>.InFramesetPhase.processCharacterscSs|j�|�dSr-)r=r�r�r(r(r)r%
sz3getPhases.<locals>.InFramesetPhase.startTagFramesetcSs|j�|�|jj��dSr-r�r�r(r(r)�
startTagFrame(
sz0getPhases.<locals>.InFramesetPhase.startTagFramecSs|jjd�|�Sr�r�r�r(r(r)�startTagNoframes,
sz3getPhases.<locals>.InFramesetPhase.startTagNoframescSs|j�dd|di�dS)Nz unexpected-start-tag-in-framesetr?r�r�r(r(r)r�/
s
�z0getPhases.<locals>.InFramesetPhase.startTagOthercSsZ|jjdjdkr |j�d�n|jj��|jjsV|jjdjdkrV|jjd|j_dS)Nrur�z)unexpected-frameset-in-frameset-innerhtmlr��
afterFrameset)	r=r|r?rKr}r�rRrHr_r�r(r(r)�endTagFrameset3
s�z1getPhases.<locals>.InFramesetPhase.endTagFramesetcSs|j�dd|di�dS)Nzunexpected-end-tag-in-framesetr?r�r�r(r(r)r�?
s
�z.getPhases.<locals>.InFramesetPhase.endTagOtherr�r�r�rN)r8r9r:r�r�r�r�rrrr�rr�rr�r�r�r�r�r(r�r(r)�InFramesetPhase
s(��rcsveZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
e�d
�j
fdefg�Zee_e�d
e	fg�Ze
e_dS)z%getPhases.<locals>.AfterFramesetPhasecSsdSr-r(rAr(r(r)r�T
sz0getPhases.<locals>.AfterFramesetPhase.processEOFcSs|j�d�dS)Nzunexpected-char-after-framesetr�r�r(r(r)r�X
sz7getPhases.<locals>.AfterFramesetPhase.processCharacterscSs|jjd�|�Srr�r�r(r(r)r[
sz6getPhases.<locals>.AfterFramesetPhase.startTagNoframescSs|j�dd|di�dS)Nz#unexpected-start-tag-after-framesetr?r�r�r(r(r)r�^
s
�z3getPhases.<locals>.AfterFramesetPhase.startTagOthercSs|jjd|j_dS)N�afterAfterFrameset)rKrHr_r�r(r(r)r�b
sz0getPhases.<locals>.AfterFramesetPhase.endTagHtmlcSs|j�dd|di�dS)Nz!unexpected-end-tag-after-framesetr?r�r�r(r(r)r�e
s
�z1getPhases.<locals>.AfterFramesetPhase.endTagOtherr�rN)r8r9r:r�r�r�r�rr�r�r�rr�r�r�r�r�r(r�r(r)�AfterFramesetPhaseP
s ��rc@s`eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Ze�
de	fg�Ze
e_dS)z&getPhases.<locals>.AfterAfterBodyPhasecSsdSr-r(rAr(r(r)r�w
sz1getPhases.<locals>.AfterAfterBodyPhase.processEOFcSs|j�||jj�dSr-r�r�r(r(r)r�z
sz5getPhases.<locals>.AfterAfterBodyPhase.processCommentcSs|jjd�|�Sr�rr�r(r(r)r�}
sz=getPhases.<locals>.AfterAfterBodyPhase.processSpaceCharacterscSs |j�d�|jjd|j_|S)N�expected-eof-but-got-charr�rr�r(r(r)r��
sz8getPhases.<locals>.AfterAfterBodyPhase.processCharacterscSs|jjd�|�Sr�r�r�r(r(r)r��
sz3getPhases.<locals>.AfterAfterBodyPhase.startTagHtmlcSs*|j�dd|di�|jjd|j_|S)N�expected-eof-but-got-start-tagr?r�rr�r(r(r)r��
s

�z4getPhases.<locals>.AfterAfterBodyPhase.startTagOthercSs*|j�dd|di�|jjd|j_|S)N�expected-eof-but-got-end-tagr?r�rr�r(r(r)r��
s

�z4getPhases.<locals>.AfterAfterBodyPhase.processEndTagr�N)r8r9r:r�r�r�r�r�r�r�r�r�rr�r�r�r(r(r(r)�AfterAfterBodyPhaset
s�r#c@sneZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Ze
�de	fde
fg�Zee_dS)z*getPhases.<locals>.AfterAfterFramesetPhasecSsdSr-r(rAr(r(r)r��
sz5getPhases.<locals>.AfterAfterFramesetPhase.processEOFcSs|j�||jj�dSr-r�r�r(r(r)r��
sz9getPhases.<locals>.AfterAfterFramesetPhase.processCommentcSs|jjd�|�Sr�rr�r(r(r)r��
szAgetPhases.<locals>.AfterAfterFramesetPhase.processSpaceCharacterscSs|j�d�dS)Nr r�r�r(r(r)r��
sz<getPhases.<locals>.AfterAfterFramesetPhase.processCharacterscSs|jjd�|�Sr�r�r�r(r(r)r��
sz7getPhases.<locals>.AfterAfterFramesetPhase.startTagHtmlcSs|jjd�|�Srr�r�r(r(r)�startTagNoFrames�
sz;getPhases.<locals>.AfterAfterFramesetPhase.startTagNoFramescSs|j�dd|di�dS)Nr!r?r�r�r(r(r)r��
s
�z8getPhases.<locals>.AfterAfterFramesetPhase.startTagOthercSs|j�dd|di�dS)Nr"r?r�r�r(r(r)r��
s
�z8getPhases.<locals>.AfterAfterFramesetPhase.processEndTagr�rN)r8r9r:r�r�r�r�r�r�r�r$r�r�rr�r�r�r(r(r(r)�AfterAfterFramesetPhase�
s�r%)rVrUr�r�r�r�r�r�r�r�r�r�r�r�r�r�rpryr~r�rrr)r)rIrXr�r�r�r�rrrr�r�r�r�r�r�r�rr	rrrrr#r%r()r"r�r�r)rG�srH%-f?BY!/F@bYLc&r.8$%&�rGcsFt|d�t��@}|rBt|d��fdd�|d��D��|d<dS)Nrvc3s"|]\}}��||�|fVqdSr-)r~)r>�k�v�rr(r)r�
s�z$adjust_attributes.<locals>.<genexpr>)rr2r.)r�rZneeds_adjustmentr(r(r)r��
s

�r�rrFcCs|duri}t||||d�S)N)r2r?rvrz)r)r?r2rjrzr(r(r)r��
s

�r�c@seZdZdZdS)rtzError in parsed documentN)r8r9r:r�r(r(r(r)rt�
srt)rT)r*rT)rrNF),Z
__future__rrrZpip._vendor.sixrrr0r�rr	r
Ztreebuilders.baserrZ	constantsr
rrrrrrrrrrrr�rrrrr"r,r<r�r!ZmemoizerGr�r��	Exceptionrtr(r(r(r)�<module>sNH

8
_�