§
    Ètºf£‘  ã            
      ó"  — d Z ddlmZ ddlZddlZddlmZmZ ddlm	Z	m
Z
 ddlmZ ddlmZ ddlmZmZ d	                      e
 e	d
ddd¦  «        ¦  «        ¦  «        Z ej        eed¬¦  «         d„ Zd„ Zd„ ZdZ ee¦  «        Ze                     ¦   «          edz   Z ee¦  «        Ze                     ¦   «          efd„Zefd„Z  G d„ de!¦  «        Z" G d„ d¦  «        Z# G d„ de#¦  «        Z$ G d„ de#¦  «        Z% G d„ de#¦  «        Z& G d „ d!e&¦  «        Z' G d"„ d#e&¦  «        Z( G d$„ d%e&¦  «        Z)d&„ Z* e*¦   «         Z+ G d'„ d(e&¦  «        Z, G d)„ d*e#¦  «        Z-d+„ Z.d,„ Z/ G d-„ d.e¦  «        Z0d/„ Z1d0„ Z2d1„ Z3d2„ Z4 G d3„ d4¦  «        Z5dS )5aÂ  
Micro Document Object Model: a partial DOM implementation with SUX.

This is an implementation of what we consider to be the useful subset of the
DOM.  The chief advantage of this library is that, not being burdened with
standards compliance, it can remain very stable between versions.  We can also
implement utility 'pythonic' ways to access and mutate the XML tree.

Since this has not subjected to a serious trial by fire, it is not recommended
to use this outside of Twisted applications.  However, it seems to work just
fine for the documentation generator, which parses a fairly representative
sample of XML.

Microdom mainly focuses on working with HTML and XHTML.

This module is now deprecated.
é    )ÚannotationsN)ÚBytesIOÚStringIO)ÚVersionÚgetVersionString)ÚioType)ÚInsensitiveDict)Ú
ParseErrorÚ	XMLParserz)twisted.web.microdom was deprecated at {}ÚTwistedé   é
   é   )Ú
stacklevelc                óØ   — g }|j         }| g}t          |¦  «        dk    rJ|                     d¦  «        }|j        |k    r ||¦  «         |j        |dd…<   t          |¦  «        dk    °J|S )a3  
    Return a list of all child elements of C{iNode} with a name matching
    C{name}.

    Note that this implementation does not conform to the DOM Level 1 Core
    specification because it may return C{iNode}.

    @param iNode: An element at which to begin searching.  If C{iNode} has a
        name matching C{name}, it will be included in the result.

    @param name: A C{str} giving the name of the elements to return.

    @return: A C{list} of direct or indirect child elements of C{iNode} with
        the name C{name}.  This may include C{iNode}.
    r   N)ÚappendÚlenÚpopÚnodeNameÚ
childNodes©ÚiNodeÚnameÚmatchesÚmatches_appendÚsliceÚcs         úS/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/web/microdom.pyÚgetElementsByTagNamer   )   sy   € ð  €GØ”^€NØˆG€EÝ
ˆe‰*Œ*�qŠ.ˆ.Ø�IŠI�a‰LŒLˆØŒ:˜ÒÐØˆN˜1ÑÔÐØ”Lˆˆbˆqˆb‰	õ	 ˆe‰*Œ*�qŠ.ˆ.ð
 €Nó    c                ó$  — |                      ¦   «         }g }|j        }| g}t          |¦  «        dk    r\|                     d¦  «        }|j                              ¦   «         |k    r ||¦  «         |j        |d d…<   t          |¦  «        dk    °\|S ©Nr   )Úlowerr   r   r   r   r   r   s         r   ÚgetElementsByTagNameNoCaser$   D   s�   € Ø�:Š:‰<Œ<€DØ€GØ”^€NØˆG€EÝ
ˆe‰*Œ*�qŠ.ˆ.Ø�IŠI�a‰LŒLˆØŒ:×ÒÑÔ Ò%Ð%ØˆN˜1ÑÔÐØ”Lˆˆbˆqˆb‰	õ	 ˆe‰*Œ*�qŠ.ˆ.ð
 €Nr    c                óN   ‡ — t          ‰ ¦  «        t          k    rˆ fd„}nˆ fd„}|S )Nc                ó†   •— t          | t          ¦  «        r|                      d¦  «        } ‰                     | ¦  «         d S ©Nzutf-8)Ú
isinstanceÚstrÚencodeÚwrite©ÚsÚstreams    €r   Úwz_streamWriteWrapper.<locals>.wT   s9   ø€ Ý˜!�SÑ!Ô!ð &Ø—H’H˜WÑ%Ô%�Ø�LŠL˜‰OŒOˆOˆOˆOr    c                ó†   •— t          | t          ¦  «        r|                      d¦  «        } ‰                     | ¦  «         d S r'   )r(   ÚbytesÚdecoder+   r,   s    €r   r/   z_streamWriteWrapper.<locals>.w[   s9   ø€ Ý˜!�UÑ#Ô#ð &Ø—H’H˜WÑ%Ô%�Ø�LŠL˜‰OŒOˆOˆOˆOr    )r   r1   )r.   r/   s   ` r   Ú_streamWriteWrapperr3   Q   sR   ø€ Ýˆf�~„~�ÒÐð	ð 	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð
 €Hr    ))ú&z&amp;)ú<z&lt;)ú>z&gt;)ú"z&quot;))ú'z&apos;c                óB   — |D ]\  }}|                       ||¦  «        } Œ| S )z1
    Perform the exact opposite of 'escape'.
    ©Úreplace©ÚtextÚcharsr-   Úhs       r   Úunescaper@   r   ó1   € ð ð "ð "‰ˆˆ1Ø�|Š|˜A˜qÑ!Ô!ˆˆØ€Kr    c                óB   — |D ]\  }}|                       ||¦  «        } Œ| S )z;
    Escape a few XML special chars with XML entities.
    r:   r<   s       r   ÚescaperC   {   rA   r    c                  ó   — e Zd Zd„ Zdd„ZdS )ÚMismatchedTagsc                ón   — |||||||f\  | _         | _        | _        | _        | _        | _        | _        d S ©N)ÚfilenameÚexpectÚgotÚbegLineÚbegColÚendLineÚendCol)ÚselfrH   rI   rJ   rM   rN   rK   rL   s           r   Ú__init__zMismatchedTags.__init__…   sB   € ð �v˜s G¨V°W¸fÐEñ	
ØŒMØŒKØŒHØŒLØŒKØŒLØŒKˆKˆKr    Úreturnr)   c                óf   — d| j         ›d| j        ›d| j        ›d| j        ›d| j        ›d| j        ›�S )Nzexpected </z	>, got </z> line: z col: z, began line: )rI   rJ   rM   rN   rK   rL   ©rO   s    r   Ú__str__zMismatchedTags.__str__�   sD   € € ð
 ”��Ø”��Ø”��Ø”��Ø”��Ø”�ð	ð	
r    N©rQ   r)   )Ú__name__Ú
__module__Ú__qualname__rP   rT   © r    r   rE   rE   „   s:   € € € € € ð	Fð 	Fð 	Fð
ð 
ð 
ð 
ð 
ð 
r    rE   c                  óŠ   — e Zd Zd Zdd„Zd„ Zddddi dfd„Zddddi dfd„Zdd
„Zdd„Z	dd„Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚNodeNc                ó"   — || _         g | _        d S rG   )Ú
parentNoder   )rO   r]   s     r   rP   zNode.__init__¢   s   € Ø$ˆŒØˆŒˆˆr    c                óÎ   — t          | j        ¦  «        t          |j        ¦  «        k    rdS t          | j        |j        ¦  «        D ]\  }}|                     |¦  «        s dS ŒdS )a  
        Compare this node to C{other}.  If the nodes have the same number of
        children and corresponding children are equal to each other, return
        C{True}, otherwise return C{False}.

        @type other: L{Node}
        @rtype: C{bool}
        FT)r   r   ÚzipÚisEqualToNode)rO   ÚotherÚaÚbs       r   r`   zNode.isEqualToNode¦   sp   € õ ˆtŒÑÔ¥3 uÔ'7Ñ#8Ô#8Ò8Ð8Ø�5Ý˜œ¨Ô)9Ñ:Ô:ð 	ð 	‰DˆAˆqØ—?’? 1Ñ%Ô%ð Ø�u�uðàˆtr    Ú r   c                ó   — t          ¦   «         ‚rG   ©ÚNotImplementedError)rO   r.   ÚindentÚ	addindentÚnewlÚstripÚ
nsprefixesÚ	namespaces           r   ÚwritexmlzNode.writexml¶   s   € õ "Ñ#Ô#Ð#r    c           	     ó€   — t          ¦   «         }|                      |||||||¦  «         |                     ¦   «         }|S rG   )r   rn   Úgetvalue)	rO   rh   ri   rj   rk   rl   rm   r-   Úrvs	            r   Útoxmlz
Node.toxmlÂ   s=   € õ ‰JŒJˆØ�Š�a˜ ¨D°%¸ÀYÑOÔOÐOØ�ZŠZ‰\Œ\ˆØˆ	r    ú ú
c                ó4   — |                       |||||¦  «        S rG   )rn   )rO   r.   rh   ri   rj   rk   s         r   ÚwriteprettyxmlzNode.writeprettyxmlÊ   s   € Ø�}Š}˜V V¨Y¸¸eÑDÔDÐDr    c                ó2   — |                       ||||¦  «        S rG   )rr   )rO   rh   ri   rj   rk   s        r   ÚtoprettyxmlzNode.toprettyxmlÍ   s   € Ø�zŠz˜& )¨T°5Ñ9Ô9Ð9r    c                ó   — t          ¦   «         ‚rG   rf   ©rO   ÚdeepÚparents      r   Ú	cloneNodezNode.cloneNodeÐ   s   € Ý!Ñ#Ô#Ð#r    c                ó   — | j         rdS dS )Né   r   ©r   rS   s    r   ÚhasChildNodeszNode.hasChildNodesÓ   s   € ØŒ?ð 	Ø�1à�1r    c                ó�   — t          |t          ¦  «        st          d¦  «        ‚| j                             |¦  «         | |_        dS )zÒ
        Make the given L{Node} the last child of this node.

        @param child: The L{Node} which will become a child of this node.

        @raise TypeError: If C{child} is not a C{Node} instance.
        úexpected Node instanceN)r(   r[   Ú	TypeErrorr   r   r]   ©rO   Úchilds     r   ÚappendChildzNode.appendChildÙ   sI   € õ ˜%¥Ñ&Ô&ð 	6ÝÐ4Ñ5Ô5Ð5ØŒ×Ò˜uÑ%Ô%Ð%ØˆÔÐÐr    c                óð   — t          |t          ¦  «        rt          |t          ¦  «        st          d¦  «        ‚| j                             |¦  «        }| |_        | j                             ||¦  «         |S )a”  
        Make the given L{Node} C{new} a child of this node which comes before
        the L{Node} C{ref}.

        @param new: A L{Node} which will become a child of this node.

        @param ref: A L{Node} which is already a child of this node which
            C{new} will be inserted before.

        @raise TypeError: If C{new} or C{ref} is not a C{Node} instance.

        @return: C{new}
        rƒ   )r(   r[   r„   r   Úindexr]   Úinsert)rO   ÚnewÚrefÚis       r   ÚinsertBeforezNode.insertBeforeæ   so   € õ ˜#�tÑ$Ô$ð 	6­J°s½DÑ,AÔ,Að 	6ÝÐ4Ñ5Ô5Ð5ØŒO×!Ò! #Ñ&Ô&ˆØˆŒØŒ×Ò˜q #Ñ&Ô&Ð&Øˆ
r    c                ó¢   — t          |t          ¦  «        st          d¦  «        ‚|| j        v r!| j                             |¦  «         d|_        |S )a7  
        Remove the given L{Node} from this node's children.

        @param child: A L{Node} which is a child of this node which will no
            longer be a child of this node after this method is called.

        @raise TypeError: If C{child} is not a C{Node} instance.

        @return: C{child}
        rƒ   N)r(   r[   r„   r   Úremover]   r…   s     r   ÚremoveChildzNode.removeChildû   sU   € õ ˜%¥Ñ&Ô&ð 	6ÝÐ4Ñ5Ô5Ð5Ø�D”OÐ#Ð#ØŒO×"Ò" 5Ñ)Ô)Ð)Ø#ˆEÔØˆr    c                ó  — t          |t          ¦  «        rt          |t          ¦  «        st          d¦  «        ‚|j        | urt	          d¦  «        ‚|| j        | j                             |¦  «        <   d|_        | |_        dS )aÞ  
        Replace a L{Node} which is already a child of this node with a
        different node.

        @param newChild: A L{Node} which will be made a child of this node.

        @param oldChild: A L{Node} which is a child of this node which will
            give up its position to C{newChild}.

        @raise TypeError: If C{newChild} or C{oldChild} is not a C{Node}
            instance.

        @raise ValueError: If C{oldChild} is not a child of this C{Node}.
        rƒ   z$oldChild is not a child of this nodeN)r(   r[   r„   r]   Ú
ValueErrorr   r‰   )rO   ÚnewChildÚoldChilds      r   ÚreplaceChildzNode.replaceChild  s…   € õ ˜(¥DÑ)Ô)ð 	6µ¸HÅdÑ1KÔ1Kð 	6ÝÐ4Ñ5Ô5Ð5ØÔ dÐ*Ð*ÝÐCÑDÔDÐDØ;CˆŒ˜œ×-Ò-¨hÑ7Ô7Ñ8Ø"ˆÔØ"ˆÔÐÐr    c                ó   — | j         d         S ©Néÿÿÿÿr€   rS   s    r   Ú	lastChildzNode.lastChild$  s   € ØŒ˜rÔ"Ð"r    c                óH   — t          | j        ¦  «        r| j        d         S d S r"   )r   r   rS   s    r   Ú
firstChildzNode.firstChild'  s&   € ÝˆtŒÑÔð 	&Ø”? 1Ô%Ð%Øˆtr    rG   )rd   rs   rt   r   ©r   N)rV   rW   rX   r   rP   r`   rn   rr   rv   rx   r}   r�   r‡   rŽ   r‘   r–   rš   rœ   rY   r    r   r[   r[   Ÿ   s1  € € € € € Ø€Hðð ð ð ðð ð ð& ØØØØØð
$ð 
$ð 
$ð 
$ð  2¨B°aÀBÐRTðð ð ð ðEð Eð Eð Eð:ð :ð :ð :ð$ð $ð $ð $ðð ð ð ð  ð  ðð ð ð*ð ð ð$#ð #ð #ð.#ð #ð #ðð ð ð ð r    r[   c                  ó†   — e Zd ZU dd„Zdd„ZdZded<   d„ ZeZe	d„ ¦   «         Z
d	„ Zd
d
d
di d
fd„Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚDocumentNc                ól   — t                                | ¦  «         |r|                      |¦  «         d S d S rG   )r[   rP   r‡   )rO   ÚdocumentElements     r   rP   zDocument.__init__:  s@   € Ý�Š�dÑÔÐØð 	.Ø×Ò˜_Ñ-Ô-Ð-Ð-Ð-ð	.ð 	.r    r   c                ó®   — t          ¦   «         }| j        |_        |r| j                             d| ¦  «        }n| j        }|                     |¦  «         |S ©Nr   )rŸ   Údoctyper¡   r}   r‡   )rO   r{   r|   ÚdÚnewEls        r   r}   zDocument.cloneNode?  sU   € Ý‰JŒJˆØ”LˆŒ	Øð 	)ØÔ(×2Ò2°1°dÑ;Ô;ˆEˆEàÔ(ˆEØ	�Š�eÑÔÐØˆr    z
None | strr¤   c                óX   — | j         |j         k    ot                               | |¦  «        S rG   )r¤   r[   r`   ©rO   Úns     r   ÚisEqualToDocumentzDocument.isEqualToDocumentK  s&   € Ø” ¤	Ò)ÐJ­t×/AÒ/AÀ$ÈÑ/JÔ/JÐJr    c                ó   — | j         d         S r"   r€   rS   s    r   r¡   zDocument.documentElementP  s   € àŒ˜qÔ!Ð!r    c                óh   — | j         rt          d¦  «        ‚t                               | |¦  «         dS )a  
        Make the given L{Node} the I{document element} of this L{Document}.

        @param child: The L{Node} to make into this L{Document}'s document
            element.

        @raise ValueError: If this document already has a document element.
        zOnly one element per document.N)r   r“   r[   r‡   r…   s     r   r‡   zDocument.appendChildT  s9   € ð Œ?ð 	?ÝÐ=Ñ>Ô>Ð>Ý×Ò˜˜uÑ%Ô%Ð%Ð%Ð%r    rd   c           	     óº   — t          |¦  «        } |d|z   ¦  «         | j        r |d| j        › d|› �¦  «         | j                             |||||||¦  «         d S )Nz<?xml version="1.0"?>z
<!DOCTYPE r6   )r3   r¤   r¡   rn   ©	rO   r.   rh   ri   rj   rk   rl   rm   r/   s	            r   rn   zDocument.writexmla  sˆ   € õ   Ñ'Ô'ˆà	ˆÐ
! DÑ
(Ñ)Ô)Ð)ØŒ<ð 	2ØˆAÐ0˜4œ<Ð0Ð0¨$Ð0Ð0Ñ1Ô1Ð1ØÔ×%Ò%Ø�F˜I t¨U°JÀ	ñ	
ô 	
ð 	
ð 	
ð 	
r    c                ó   — t          |fi |¤ŽS rG   )ÚElement)rO   r   Úkws      r   ÚcreateElementzDocument.createElementu  s   € Ý�tÐ"Ð"˜rÐ"Ð"Ð"r    c                ó    — t          |¦  «        S rG   )ÚText©rO   r=   s     r   ÚcreateTextNodezDocument.createTextNodex  s   € Ý�D‰zŒzÐr    c                ó    — t          |¦  «        S rG   )ÚCommentrµ   s     r   ÚcreateCommentzDocument.createComment{  s   € Ý�t‰}Œ}Ðr    c                óZ   — | j         j        rt          | |¦  «        S t          | |¦  «        S rG   )r¡   ÚcaseInsensitiver$   r   ©rO   r   s     r   r   zDocument.getElementsByTagName~  s0   € ØÔÔ/ð 	:Ý-¨d°DÑ9Ô9Ð9Ý# D¨$Ñ/Ô/Ð/r    c                óò   — | j         d d …         }|re|                     d¦  «        }|j         r|                     |j         ¦  «         t          |d¦  «        r|                     d¦  «        |k    r|S |°cd S d S )Nr   ÚgetAttributeÚid)r   r   ÚextendÚhasattrr¾   )rO   r¿   r   Únodes       r   ÚgetElementByIdzDocument.getElementByIdƒ  s˜   € Ø”_ Q Q QÔ'ˆ
Øð 	Ø—>’> !Ñ$Ô$ˆDØŒð 3Ø×!Ò! $¤/Ñ2Ô2Ð2Ý�t˜^Ñ,Ô,ð °×1BÒ1BÀ4Ñ1HÔ1HÈBÒ1NÐ1NØ�ð ð 	ð 	ð 	ð 	ð 	r    rG   r�   )rV   rW   rX   rP   r}   r¤   Ú__annotations__rª   r`   Úpropertyr¡   r‡   rn   r²   r¶   r¹   r   rÃ   rY   r    r   rŸ   rŸ   9  s  € € € € € € ð.ð .ð .ð .ð
ð ð ð ð €GÐÐÐÑðKð Kð Kð &€Màð"ð "ñ „Xð"ð&ð &ð &ð  ØØØØØð
ð 
ð 
ð 
ð(#ð #ð #ðð ð ðð ð ð0ð 0ð 0ð
ð ð ð ð r    rŸ   c                  ó<   — e Zd Zdd„Zd„ ZeZddddi dfd„Zd	d„ZdS )
ÚEntityReferenceNc                ór   — t                                | |¦  «         || _        d|z   dz   x| _        | _        d S )Nr4   ú;)r[   rP   ÚerefÚ	nodeValueÚdata)rO   rÊ   r]   s      r   rP   zEntityReference.__init__Ž  s8   € Ý�Š�d˜JÑ'Ô'Ð'ØˆŒ	Ø%(¨4¡Z°#Ñ%5Ð5ˆŒ˜œ˜˜r    c                óp   — t          |t          ¦  «        sdS | j        |j        k    o| j        |j        k    S r"   )r(   rÇ   rÊ   rË   r¨   s     r   ÚisEqualToEntityReferencez(EntityReference.isEqualToEntityReference“  s6   € Ý˜!�_Ñ-Ô-ð 	Ø�1Ø”	˜QœVÒ#ÐH¨$¬.¸A¼KÒ*GÐHr    rd   r   c                óJ   — t          |¦  «        } |d| j        z   ¦  «         d S )Nrd   ©r3   rË   r®   s	            r   rn   zEntityReference.writexmlš  s.   € õ   Ñ'Ô'ˆØ	ˆˆ"ˆtŒ~Ñ
ÑÔÐÐÐr    c                ó,   — t          | j        |¦  «        S rG   )rÇ   rÊ   rz   s      r   r}   zEntityReference.cloneNode§  s   € Ý˜tœy¨&Ñ1Ô1Ð1r    rG   r�   )rV   rW   rX   rP   rÎ   r`   rn   r}   rY   r    r   rÇ   rÇ   �  s}   € € € € € ð6ð 6ð 6ð 6ð
Ið Ið Ið
 -€Mð
 ØØØØØðð ð ð ð2ð 2ð 2ð 2ð 2ð 2r    rÇ   c                  ó    — e Zd Zdd„Zd„ ZeZdS )ÚCharacterDataNc                óf   — t                                | |¦  «         |x| _        x| _        | _        d S rG   )r[   rP   ÚvaluerÌ   rË   )rO   rÌ   r]   s      r   rP   zCharacterData.__init__¬  s/   € Ý�Š�d˜JÑ'Ô'Ð'Ø26Ð6ˆŒ
Ð6�T”Y ¤  r    c                ó"   — | j         |j         k    S rG   )rÕ   r¨   s     r   ÚisEqualToCharacterDataz$CharacterData.isEqualToCharacterData°  s   € ØŒz˜QœWÒ$Ð$r    rG   )rV   rW   rX   rP   r×   r`   rY   r    r   rÓ   rÓ   «  s8   € € € € € ð7ð 7ð 7ð 7ð%ð %ð %ð +€M€M€Mr    rÓ   c                  ó.   — e Zd ZdZddddi dfd„Zdd„ZdS )r¸   z
    A comment node.
    rd   r   c                óP   — t          |¦  «        }| j        }	 |d|	› d�¦  «         d S )Nz<!--z-->)r3   rÌ   )
rO   r.   rh   ri   rj   rk   rl   rm   r/   Úvals
             r   rn   zComment.writexml»  s6   € õ   Ñ'Ô'ˆØŒiˆØ	ˆˆ/�ˆ/ˆ/ˆ/ÑÔÐÐÐr    Nc                ó,   — t          | j        |¦  «        S rG   )r¸   rË   rz   s      r   r}   zComment.cloneNodeÉ  s   € Ý�t”~ vÑ.Ô.Ð.r    r�   )rV   rW   rX   Ú__doc__rn   r}   rY   r    r   r¸   r¸   ¶  sZ   € € € € € ðð ð ØØØØØðð ð ð ð/ð /ð /ð /ð /ð /r    r¸   c                  ó@   — e Zd Zdd„Zd„ Zdd„Zddddi dfd„Zdd
„ZdS )r´   Nr   c                óL   — t                                | ||¦  «         || _        d S rG   )rÓ   rP   Úraw)rO   rÌ   r]   rß   s       r   rP   zText.__init__Î  s%   € Ý×Ò˜t T¨:Ñ6Ô6Ð6ØˆŒˆˆr    c                óX   — t                                | |¦  «        o| j        |j        k    S )zž
        Compare this text to C{text}.  If the underlying values and the C{raw}
        flag are the same, return C{True}, otherwise return C{False}.
        )rÓ   r`   rß   ©rO   ra   s     r   r`   zText.isEqualToNodeÒ  s(   € õ
 ×*Ò*¨4°Ñ7Ô7ÐQ¸D¼HÈÌ	Ò<QÐQr    c                ó8   — t          | j        || j        ¦  «        S rG   )r´   rË   rß   rz   s      r   r}   zText.cloneNodeÙ  s   € Ý�D”N F¨D¬HÑ5Ô5Ð5r    rd   c                óp  — t          |¦  «        }| j        r1| j        }	t          |	t          ¦  «        st	          | j        ¦  «        }	nc| j        }
t          |
t          ¦  «        st	          |
¦  «        }
|r'd                     |
                     ¦   «         ¦  «        }
t          |
¦  «        }	 ||	¦  «         d S )Nrs   )r3   rß   rË   r(   r)   ÚjoinÚsplitrC   )rO   r.   rh   ri   rj   rk   rl   rm   r/   rÚ   Úvs              r   rn   zText.writexmlÜ  s¥   € õ   Ñ'Ô'ˆØŒ8ð 
	Ø”.ˆCÝ˜c¥3Ñ'Ô'ð *Ý˜$œ.Ñ)Ô)�øà”ˆAÝ˜a¥Ñ%Ô%ð Ý˜‘F”F�Øð (Ø—H’H˜QŸWšW™YœYÑ'Ô'�Ý˜‘)”)ˆCØ	ˆˆ#‰Œˆˆˆr    rQ   r)   c                ó6   — dt          | j        ¦  «        z  dz   S )NzText(%sú))ÚreprrË   rS   s    r   Ú__repr__zText.__repr__ô  s   € Ø�4 ¤Ñ/Ô/Ñ/°#Ñ5Ð5r    r"   r�   rU   )rV   rW   rX   rP   r`   r}   rn   rê   rY   r    r   r´   r´   Í  sŠ   € € € € € ðð ð ð ðRð Rð Rð6ð 6ð 6ð 6ð ØØØØØðð ð ð ð06ð 6ð 6ð 6ð 6ð 6r    r´   c                  ó*   — e Zd Zdd„Zddddi dfd„ZdS )ÚCDATASectionr   Nc                ó,   — t          | j        |¦  «        S rG   )rì   rË   rz   s      r   r}   zCDATASection.cloneNodeù  s   € Ý˜DœN¨FÑ3Ô3Ð3r    rd   c                óv   — t          |¦  «        } |d¦  «          |d| j        z   ¦  «          |d¦  «         d S )Nz	<![CDATA[rd   z]]>rÐ   r®   s	            r   rn   zCDATASection.writexmlü  sF   € õ   Ñ'Ô'ˆØ	ˆˆ+‰ŒˆØ	ˆˆ"ˆtŒ~Ñ
ÑÔÐØ	ˆˆ%‰Œˆˆˆr    r�   )rV   rW   rX   r}   rn   rY   r    r   rì   rì   ø  sP   € € € € € ð4ð 4ð 4ð 4ð ØØØØØðð ð ð ð ð r    rì   c               #  ó@   K  — d} 	 dt          | ¦  «        z   V — | dz   } Œ)Nr   TÚpr   )r)   )r�   s    r   Ú
_genprefixrñ     s4   è è € Ø	€AðØ•C˜‘F”F‰lÐÐÐØ�‰Eˆðr    c                  ó   — e Zd ZdZdS )Ú_Attrz#Support class for getAttributeNode.N)rV   rW   rX   rÜ   rY   r    r   ró   ró     s   € € € € € Ø)Ð)Ð)Ð)r    ró   c                  ó¨   — e Zd ZdZdZdZ	 	 	 	 	 	 	 dd„Zd„ Zd„ Zd„ Z	d„ Z
dd	„Zd
„ Zd„ Zdd„Zdd„Zd„ Zd„ Zd„ Zd„ Zddddi dfd„Zdd„Zdd„ZdS )r°   r   r   Nc	                ó¦  — t                                | |¦  «         |p| | _        || _        |s|                     ¦   «         }|€i | _        n=|| _        | j                             ¦   «         D ]\  }	}
t          |
¦  «        | j        |	<   Œ|rt          | j        |¬¦  «        | _        |x| _	        x| _
        | _        || _        || _        || _        d S )N)Úpreserve)r[   rP   ÚpreserveCaser»   r#   Ú
attributesÚitemsr@   r	   Ú
endTagNamer   ÚtagNameÚ	_filenameÚ_markposrm   )rO   rû   rø   r]   rH   Úmarkposr»   r÷   rm   Úkræ   s              r   rP   zElement.__init__  sÞ   € õ 	�Š�d˜JÑ'Ô'Ð'Ø(Ð?°Ð,?ˆÔØ.ˆÔØð 	&Ø—m’m‘o”oˆGØÐØ ˆDŒOˆOà(ˆDŒOØœ×-Ò-Ñ/Ô/ð 1ð 1‘��1Ý%-¨a¡[¤[�” Ñ"Ð"àð 	VÝ-¨d¬oÈÐUÑUÔUˆDŒOà9@Ð@ˆŒÐ@˜$œ-¨$¬,Ø!ˆŒØˆŒØ"ˆŒˆˆr    c                óZ   — | j         €	|| _         d S | j                              |¦  «         d S rG   )rl   Úupdate)rO   Úpfxss     r   ÚaddPrefixeszElement.addPrefixes>  s1   € ØŒ?Ð"Ø"ˆDŒOˆOˆOàŒO×"Ò" 4Ñ(Ô(Ð(Ð(Ð(r    c                óJ   — | j         s|                     ¦   «         }|| _        d S rG   )r÷   r#   rú   )rO   rú   s     r   ÚendTagzElement.endTagD  s)   € ØÔ ð 	,Ø#×)Ò)Ñ+Ô+ˆJØ$ˆŒˆˆr    c                óØ   — | j         rD| j        |j        k    o3| j                             ¦   «         |j                             ¦   «         k    S | j        |j        k    o| j        |j        k    S rG   )r»   rø   r   r#   r¨   s     r   ÚisEqualToElementzElement.isEqualToElementI  sf   € ØÔð 	Ø”O q¤|Ò3ð Ø”×#Ò#Ñ%Ô%¨¬×)9Ò)9Ñ);Ô);Ò;ðð ” 1¤<Ò/ÐR°d´mÀqÄzÒ6QÐRr    c                óà   — | j                              ¦   «         |j                              ¦   «         k    o:| j        |j        k    o*| j        |j        k    ot                               | |¦  «        S )zÄ
        Compare this element to C{other}.  If the C{nodeName}, C{namespace},
        C{attributes}, and C{childNodes} are all the same, return C{True},
        otherwise return C{False}.
        )r   r#   rm   rø   r[   r`   rá   s     r   r`   zElement.isEqualToNodeP  sj   € ð ŒM×ÒÑ!Ô! U¤^×%9Ò%9Ñ%;Ô%;Ò;ð 0Ø” %¤/Ò1ð0à” 5Ô#3Ò3ð0õ ×"Ò" 4¨Ñ/Ô/ð		
r    c                óÚ   ‡— t          | j        || j        | j        | j        ¬¦  «        Š‰j                             | j        ¦  «         |rˆfd„| j        D ¦   «         ‰_        ng ‰_        ‰S )N)r]   rm   r÷   r»   c                ó<   •— g | ]}|                      d ‰¦  «        ‘ŒS )r   )r}   )Ú.0r†   Úclones     €r   ú
<listcomp>z%Element.cloneNode.<locals>.<listcomp>g  s'   ø€ ÐWÐWÐW¸e §¢°°5Ñ 9Ô 9ÐWÐWÐWr    )r°   rû   rm   r÷   r»   rø   r  r   )rO   r{   r|   r  s      @r   r}   zElement.cloneNode]  s�   ø€ ÝØŒLØØ”nØÔ*Ø Ô0ð
ñ 
ô 
ˆð 	Ô×Ò ¤Ñ0Ô0Ð0Øð 	"ØWÐWÐWÐWÀtÄÐWÑWÔWˆEÔÐà!ˆEÔØˆr    c                óP   — | j         rt          | |¦  «        S t          | |¦  «        S rG   )r»   r$   r   r¼   s     r   r   zElement.getElementsByTagNamel  s-   € ØÔð 	:Ý-¨d°DÑ9Ô9Ð9Ý# D¨$Ñ/Ô/Ð/r    c                ó   — dS r£   rY   rS   s    r   ÚhasAttributeszElement.hasAttributesq  s   € Øˆqr    c                ó8   — | j                              ||¦  «        S rG   )rø   Úget)rO   r   Údefaults      r   r¾   zElement.getAttributet  s   € ØŒ×"Ò" 4¨Ñ1Ô1Ð1r    c                ó†   — ||f}|| j         v r| j         |         S || j        k    r| j                              ||¦  «        S |S rG   )rø   rm   r  )rO   Únsr   r  Únsks        r   ÚgetAttributeNSzElement.getAttributeNSw  sO   € Ø�4ˆjˆØ�$”/Ð!Ð!Ø”? 3Ô'Ð'Ø�”ÒÐØ”?×&Ò& t¨WÑ5Ô5Ð5Øˆr    c                óH   — t          |                      |¦  «        | ¦  «        S rG   )ró   r¾   r¼   s     r   ÚgetAttributeNodezElement.getAttributeNode  s    € Ý�T×&Ò& tÑ,Ô,¨dÑ3Ô3Ð3r    c                ó   — || j         |<   d S rG   ©rø   )rO   r   Úattrs      r   ÚsetAttributezElement.setAttribute‚  s   € Ø $ˆŒ˜ÑÐÐr    c                ó,   — || j         v r
| j         |= d S d S rG   r  r¼   s     r   ÚremoveAttributezElement.removeAttribute…  s'   € Ø�4”?Ð"Ð"Ø” Ð%Ð%Ð%ð #Ð"r    c                ó   — || j         v S rG   r  r¼   s     r   ÚhasAttributezElement.hasAttribute‰  s   € Ø�t”Ð&Ð&r    rd   c           
     óÐ  ‡— d}d}	d}
| j         s| j        | _        t          |¦  «        }| j        r8| j                             ¦   «         }|                     ¦   «         D ]	}||v r||= Œ
ni }dg}| j        |	v r||g|z   }|j        Šˆfd„}| j        }|| j        k    rj| j        �c| j        |v r1|| j                 } ‰|dz   | j        z   ¦  «         |dz   | j        z   }n9 ‰| j        ¦  «          |d| j        ¦  «         | j        }n ‰| j        ¦  «         d	j	        }t          | j                             ¦   «         ¦  «        D ]l\  }}t          |t          ¦  «        rB|\  }}||v r	||         }nt          t           ¦  «        }|||<   |€J ‚ ||dz   |z   |¦  «         Œ\|€J ‚ |||¦  «         Œm|rC|                     ¦   «         D ]\  }}|r |d
|z   |¦  «         Œ|                     |¦  «         |}n|} | ||¦  «        ¦  «         | j        r• |d¦  «         ||z   }| j        D ]E}| j        |	v r| j        |
v r | |||f¦  «        ¦  «         |                     |||||||¦  «         ŒF| j        |	v r | |||f¦  «        ¦  «          | |d|df¦  «        ¦  «         dS | j                             ¦   «         |vr | |d|df¦  «        ¦  «         dS  |d¦  «         dS )a*  
        Serialize this L{Element} to the given stream.

        @param stream: A file-like object to which this L{Element} will be
            written.

        @param nsprefixes: A C{dict} mapping namespace URIs as C{str} to
            prefixes as C{str}.  This defines the prefixes which are already in
            scope in the document at the point at which this L{Element} exists.
            This is essentially an implementation detail for namespace support.
            Applications should not try to use it.

        @param namespace: The namespace URI as a C{str} which is the default at
            the point in the document at which this L{Element} exists.  This is
            essentially an implementation detail for namespace support.
            Applications should not try to use it.
        )ÚimgÚbrÚhrÚbaseÚmetaÚlinkÚparamÚareaÚinputÚcolÚbasefontÚisindexÚframe)ÚhtmlÚheadÚbodyÚnoscriptÚinsÚdelÚh1Úh2Úh3Úh4Úh5Úh6ÚscriptÚulÚolÚdlÚprer%  Ú
blockquoteÚaddressrð   ÚdivÚfieldsetÚtableÚtrÚformÚobjectrD  ÚappletÚmap)rF  r=  r>  r1  r5   c                ó>   •—  ‰d| dt          |¦  «        df¦  «        S )Nrs   z="r7   )rC   )Ú_atrÚ_valÚbexts     €r   ú<lambda>z"Element.writexml.<locals>.<lambda>ë  s"   ø€  t t¨S°$¸½fÀT¹l¼lÈCÐ,PÑ'QÔ'Q€ r    Nú:Úxmlnsrd   zxmlns:r6   z</z></ú />)r÷   rû   rú   r3   rl   ÚcopyÚkeysrÀ   rm   rä   Úsortedrø   rù   r(   ÚtupleÚnextÚ	genprefixr  r   rn   r#   )rO   r.   rh   ri   rj   rk   rl   rm   ÚALLOWSINGLETONÚBLOCKELEMENTSÚFORMATNICELYr/   Únewprefixesr  ÚbeginÚ	writeattrrú   ÚprefixÚjr  rÚ   ÚkeyÚdownprefixesÚ	newindentr†   rN  s                            @r   rn   zElement.writexmlŒ  så  ø€ ð8
ˆð
ˆð@ 2ˆð Ô ð 	+Ø"œlˆDŒOå Ñ'Ô'ˆØŒ?ð 	Øœ/×.Ò.Ñ0Ô0ˆKØ —o’oÑ'Ô'ð (ð (�Ø˜Ð$Ð$Ø# B˜øð(ð ˆKà�ˆØŒ<˜=Ð(Ð(Ø˜6�N UÑ*ˆEØŒ|ˆØQÐQÐQÐQˆ	ð
 ”_ˆ
à˜œÒ&Ð&¨4¬>Ð+Eð Œ~ Ð+Ð+ð $ D¤NÔ3�Ø��V˜c‘\ D¤LÑ0Ñ1Ô1Ð1à# c™\¨D¬OÑ;�
�
ð ��T”\Ñ"Ô"Ð"Ø�	˜' 4¤>Ñ2Ô2Ð2ð !œN�	�	ð ˆD�”ÑÔÐàŒGˆÝ ¤× 5Ò 5Ñ 7Ô 7Ñ8Ô8ð 	%ð 	%‰IˆD�#Ý˜$¥Ñ&Ô&ð %Ø‘��CØ˜Ð#Ð#Ø'¨œ^�F�Få!¥)™_œ_�FØ&,�K ‘OØ���Ø�	˜& 3™,¨Ñ,¨cÑ2Ô2Ð2Ð2à���Ø�	˜$ Ñ$Ô$Ð$Ð$Øð 	&Ø)×/Ò/Ñ1Ô1ð 5ð 5‘
��FØð 5Ø�I˜h¨Ñ/°Ñ4Ô4Ð4øØ×Ò˜zÑ*Ô*Ð*Ø&ˆLˆLà%ˆLØ	ˆˆ!ˆ!ˆE‰(Œ(‰ŒˆØŒ?ð 	ØˆAˆc‰FŒFˆFØ Ñ*ˆIØœð ð �Ø”< =Ð0Ð0°T´\À\Ð5QÐ5QØ�A�a�a˜˜yÐ)Ñ*Ô*Ñ+Ô+Ð+Ø—’Ø˜I y°$¸¸|ÈYñô ð ð ð Œ|˜}Ð,Ð,Ø��!�!�T˜6�NÑ#Ô#Ñ$Ô$Ð$ØˆAˆaˆa��z 3Ð'Ñ(Ô(Ñ)Ô)Ð)Ð)Ð)ØŒ\×ÒÑ!Ô!¨Ð7Ð7ØˆAˆaˆa�˜
 CÐ(Ñ)Ô)Ñ*Ô*Ð*Ð*Ð*àˆAˆe‰HŒHˆHˆHˆHr    rQ   r)   c                ó²   — dt          | j        ¦  «        z  }| j        r|d| j        ›�z  }| j        r|d| j        ›�z  }| j        r|d| j        ›�z  }|dz   S )Nz
Element(%sz, attributes=z, filename=z
, markpos=rè   )ré   r   rø   rü   rý   )rO   Úreps     r   rê   zElement.__repr__5  s}   € Ø�T $¤-Ñ0Ô0Ñ0ˆØŒ?ð 	7ØÐ6 4¤?Ð6Ð6Ñ6ˆCØŒ>ð 	4ØÐ3 ¤Ð3Ð3Ñ3ˆCØŒ=ð 	2ØÐ1 ¤Ð1Ð1Ñ1ˆCØ�S‰yÐr    c                ó`  — d| j         z   }| j        s| j        r|dz  }| j        r|t          | j        ¦  «        z  }| j        r|d| j        z  z  }| j        s| j        r|dz  }| j                             ¦   «         D ]
}|d|z  z  }Œ|                      ¦   «         r|d| j         z  z  }n|dz  }|S )Nr5   z (z line %s column %srè   z %s=%rz
 >...</%s>rR  )r   rü   rý   ré   rø   rù   r�   )rO   re  Úitems      r   rT   zElement.__str__?  sâ   € Ø�D”MÑ!ˆØŒ>ð 	˜Tœ]ð 	Ø�4‰KˆCØŒ>ð 	(Ø•4˜œÑ'Ô'Ñ'ˆCØŒ=ð 	8ØÐ'¨$¬-Ñ7Ñ7ˆCØŒ>ð 	˜Tœ]ð 	Ø�3‰JˆCØ”O×)Ò)Ñ+Ô+ð 	#ð 	#ˆDØ�8˜d‘?Ñ"ˆCˆCØ×ÒÑÔð 	Ø�< $¤-Ñ/Ñ/ˆCˆCà�5‰LˆCØˆ
r    )NNNNr   r   Nr�   rG   rU   )rV   rW   rX   r÷   r»   rl   rP   r  r  r  r`   r}   r   r  r¾   r  r  r  r  r!  rn   rê   rT   rY   r    r   r°   r°     sx  € € € € € Ø€LØ€OØ€Jð
 ØØØØØØð#ð #ð #ð #ð>)ð )ð )ð%ð %ð %ð
Sð Sð Sð
ð 
ð 
ðð ð ð ð0ð 0ð 0ð
ð ð ð2ð 2ð 2ð 2ðð ð ð ð4ð 4ð 4ð%ð %ð %ð&ð &ð &ð'ð 'ð 'ð ØØØØØðgð gð gð gðRð ð ð ðð ð ð ð ð r    r°   c                ób   — i }|                       ¦   «         D ]\  }}t          |¦  «        ||<   Œ|S rG   )rù   r@   ©r¥   Úddrÿ   ræ   s       r   Ú_unescapeDictrk  R  s8   € Ø	€BØ—’‘	”	ð ð ‰ˆˆ1Ý˜‘”ˆˆ1‰ˆØ€Ir    c                óH   — i }|                       ¦   «         D ]
\  }}|||<   Œ|S rG   )rù   ri  s       r   Ú_reverseDictrm  Y  s2   € Ø	€BØ—’‘	”	ð ð ‰ˆˆ1Øˆˆ1‰ˆØ€Ir    c                  ó   — e Zd Zd                     ¦   «         Zddgddgddgdgg d¢g d¢g d¢dgdgd	gd
gdgdgddgdgdœZdddeefd„Zd„ Zd„ Z e	j
        d¦  «        Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd S )!ÚMicroDOMParserz#area link br img hr input base metarð   Údtrj  Úli)ÚtheadÚtfootÚtbodyÚcolgroupr,  rF  ÚtdÚthr2  r1  Úoption)rð   rp  rj  rq  rt  rr  rs  ru  r,  rF  rv  rw  r1  Útitlerx  r   r   c                óº   — g | _         dd dœ}t          |¦  «        }|d |fg| _        g | _        d | _        || _        || _        |p| | _        || _        || _	        d S )NrQ  )rQ  rd   )
Úelementstackrm  ÚnsstackÚ	documentsÚ
_mddoctypeÚbeExtremelyLenientr»   r÷   ÚsoonClosersÚlaterClosers)rO   r  r»   r÷   r€  r�  r¥   Údrs           r   rP   zMicroDOMParser.__init__x  sw   € ð ˆÔØ 4Ð(Ð(ˆÝ˜!‰_Œ_ˆØ˜D "˜�ˆŒØˆŒØˆŒØ"4ˆÔØ.ˆÔØ(Ð?°Ð,?ˆÔØ&ˆÔØ(ˆÔÐÐr    c                óº   — t          t          | j        ¦  «        ¦  «        D ]8}| j        |          }|j        dk    s|                     dd¦  «        dk    r dS Œ9dS )Nr@  z	xml:spacerd   rö   r   r   )Úranger   r{  rû   r¾   )rO   ÚedxÚels      r   ÚshouldPreserveSpacez"MicroDOMParser.shouldPreserveSpace�  sj   € Ý�˜TÔ.Ñ/Ô/Ñ0Ô0ð 	ð 	ˆCØÔ" C 4Ô(ˆBØŒz˜UÒ"Ð" b§o¢o°kÀ2Ñ&FÔ&FÈ*Ò&TÐ&TØ�q�qð 'Uàˆqr    c                ó.   — | j         r| j         d         S d S r˜   )r{  rS   s    r   Ú
_getparentzMicroDOMParser._getparent”  s    € ØÔð 	ØÔ$ RÔ(Ð(à�4r    z\s*/[/*]\s*c                óÚ  — | j         rt          |j        ¦  «        dk    sd S |                     ¦   «         }t	          |t
          ¦  «        �rd}|j        }| j                             |¦  «        }|r+| 	                    ¦   «         }|t          |¦  «        d …         }	 t          d|z  ¦  «        j        d         }n# t          t          f$ r Y d S w xY wt          |j        ¦  «        dk    rd S |                     ¦   «         }t	          |t          t          f¦  «        rNg |_        |r'|j                             t          |¦  «        ¦  «         |j                             |¦  «         d S d S d S )Nr   rd   z	<a>%s</a>r   )r  r   r   rœ   r(   r´   rÕ   ÚCOMMENTÚmatchÚgroupÚparseStringr
   rE   rì   r¸   r   )rO   r†  r   r_  ÚoldvaluerŒ  Úes          r   Ú_fixScriptElementz MicroDOMParser._fixScriptElementœ  st  € ð Ô&ð 	­c°"´-Ñ.@Ô.@ÀAÒ.EÐ.EØˆFØ�MŠM‰OŒOˆÝ�a�ÑÔñ 	(ð ˆFØ”wˆHØ”L×&Ò& xÑ0Ô0ˆEØð 3ØŸš™œ�Ø#¥C¨¡K¤K M MÔ2�ðÝ ¨hÑ 6Ñ7Ô7ÔBÀ1ÔE��øÝ¥Ð/ð ð ð Ø��ðøøøå�1”<Ñ Ô  AÒ%Ð%Ø�Ø—’‘”ˆAÝ˜!�l­GÐ4Ñ5Ô5ð (Ø "�”Øð 7Ø”M×(Ò(­¨f©¬Ñ6Ô6Ð6Ø”×$Ò$ QÑ'Ô'Ð'Ð'Ð'ð3	(ð 	(ð*(ð (s   ÂB; Â;CÃCc                ó   — || _         d S rG   )r~  )rO   r¤   s     r   Ú
gotDoctypezMicroDOMParser.gotDoctype½  s   € Ø!ˆŒˆˆr    c                ód  — |                       ¦   «         }| j        r˜t          |t          ¦  «        rƒ|j        }|}| j        r(|                     ¦   «         }|                     ¦   «         }|| j                             |g ¦  «        v r.|  	                    |j        ¦  «         |                       ¦   «         }t          |¦  «        }| j        d         d         }i }g }|                     ¦   «         D ]i\  }	}
|	                     d¦  «        rO|	                     dd¦  «        }t          |¦  «        dk    r|
||d         <   n|
|d<   |                     |	¦  «         Œj|D ]}	||	= Œ|r)|                     ¦   «         }|                     |¦  «         g }|                     ¦   «         D ]_\  }	}
|	                     dd¦  «        }t          |¦  «        dk    r1|\  }}|dk    r&||v r"|
|||         |f<   |                     |	¦  «         Œ`|D ]}	||	= Œt          |||| j        |                      ¦   «         | j        | j        |                     d¦  «        ¬	¦  «        }t-          |¦  «        }|                     |¦  «         |rW| j        d         d                              ¦   «         }|                     |¦  «         | j                             |||f¦  «         | j                             |¦  «         |r|                     |¦  «         | j        r%|j        | j        v r|  	                    |¦  «         d S d S d S )
Nr™   r   rQ  rP  r   é   rd   Úxml)r»   r÷   rm   )r‰  r  r(   r°   rû   r»   r#   r�  r  Ú	gotTagEndrk  r|  rù   Ú
startswithrå   r   r   rS  r  rH   ÚsaveMarkr÷   rm  r  r{  r‡   r€  )rO   r   rø   r|   Ú
parentNameÚmyNameÚ
namespacesÚ	newspacesÚkeysToDeleterÿ   ræ   Ú
spacenamesÚksplitÚpfxÚtvr†  Ú	revspacesÚrscopys                     r   ÚgotTagStartzMicroDOMParser.gotTagStartÀ  sh  € ð —’Ñ"Ô"ˆØÔ"ð 	+¥z°&½'Ñ'BÔ'Bð 	+ØœˆJØˆFØÔ#ð (Ø'×-Ò-Ñ/Ô/�
ØŸš™œ�Ø˜Ô*×.Ò.¨z¸2Ñ>Ô>Ð>Ð>Ø—’˜vœ~Ñ.Ô.Ð.ØŸšÑ*Ô*�Ý" :Ñ.Ô.ˆ
Ø”\ "Ô% aÔ(ˆ
Øˆ	ØˆØ×$Ò$Ñ&Ô&ð 	'ð 	'‰DˆAˆqØ�|Š|˜GÑ$Ô$ð 'ØŸWšW S¨!™_œ_�
Ý�z‘?”? aÒ'Ð'Ø/0�I˜j¨œmÑ,Ð,à$%�I˜b‘MØ×#Ò# AÑ&Ô&Ð&øØð 	ð 	ˆAØ˜1��Øð 	)Ø#ŸšÑ*Ô*ˆJØ×Ò˜iÑ(Ô(Ð(ØˆØ×$Ò$Ñ&Ô&ð 	+ð 	+‰DˆAˆqØ—W’W˜S !‘_”_ˆFÝ�6‰{Œ{˜aÒÐØ ‘��RØ˜%’<�< C¨:Ð$5Ð$5Ø67�J˜z¨#œ°Ð2Ñ3Ø ×'Ò'¨Ñ*Ô*Ð*øØð 	ð 	ˆAØ˜1��ÝØØØØŒMØ�MŠM‰OŒOØ Ô0ØÔ*Ø —n’n RÑ(Ô(ð	
ñ 	
ô 	
ˆõ ! Ñ+Ô+ˆ	Ø
�Š�yÑ!Ô!Ð!àð 	:Ø”\ "Ô% aÔ(×-Ò-Ñ/Ô/ˆFØ�MŠM˜)Ñ$Ô$Ð$ØŒL×Ò ¨R°Ð 8Ñ9Ô9Ð9ØÔ× Ò  Ñ$Ô$Ð$Øð 	#Ø×Ò˜rÑ"Ô"Ð"ØÔ"ð 	! r¤z°TÔ5EÐ'EÐ'EØ�NŠN˜4Ñ Ô Ð Ð Ð ð	!ð 	!Ð'EÐ'Er    c                ó¾   — |                       ¦   «         } |||¦  «        }|r|                     |¦  «         d S | j        r| j                             |¦  «         d S d S rG   )r‰  r‡   r  r}  r   )rO   ÚfactoryrÌ   r|   Útes        r   Ú_gotStandalonezMicroDOMParser._gotStandaloneÿ  su   € Ø—’Ñ"Ô"ˆØˆW�T˜6Ñ"Ô"ˆØð 	&Ø×Ò˜rÑ"Ô"Ð"Ð"Ð"ØÔ$ð 	&ØŒN×!Ò! "Ñ%Ô%Ð%Ð%Ð%ð	&ð 	&r    c                ó�   — |                      ¦   «         s|                      ¦   «         r|                      t          |¦  «         d S d S rG   )rk   r‡  r©  r´   ©rO   rÌ   s     r   ÚgotTextzMicroDOMParser.gotText  sK   € Ø�:Š:‰<Œ<ð 	,˜4×3Ò3Ñ5Ô5ð 	,Ø×Ò¥ dÑ+Ô+Ð+Ð+Ð+ð	,ð 	,r    c                ó<   — |                       t          |¦  «         d S rG   )r©  r¸   r«  s     r   Ú
gotCommentzMicroDOMParser.gotComment  s   € Ø×Ò�G TÑ*Ô*Ð*Ð*Ð*r    c                ó<   — |                       t          |¦  «         d S rG   )r©  rÇ   )rO   Ú	entityRefs     r   ÚgotEntityReferencez!MicroDOMParser.gotEntityReference  s   € Ø×Ò�O¨YÑ7Ô7Ð7Ð7Ð7r    c                ó<   — |                       t          |¦  «         d S rG   )r©  rì   )rO   Úcdatas     r   ÚgotCDatazMicroDOMParser.gotCData  s   € Ø×Ò�L¨%Ñ0Ô0Ð0Ð0Ð0r    c                óÌ  — | j         s2| j        rd S t          | j        d|f|                      ¦   «         z   dz   Ž ‚| j                              ¦   «         }| j        d         d         }| j        d         d         |u r| j                             ¦   «         }nd }| j        r.|j         	                    ¦   «         }| 	                    ¦   «         }n	|j        }|}| 
                    dd¦  «        }t          |¦  «        dk    rb|\  }}	|                     |d ¦  «        }
|
�E|j        |
k    r:| j        s3t          | j        |j        |f|                      ¦   «         z   |j        z   Ž ‚||k    �s| j        râ| j         rÚ| j         d         }t          t          | j         ¦  «        ¦  «        D ]B}| j         |dz             j        |k    r&| j         |dz                                  |¦  «          n9ŒC| j                              |¦  «         |�| j                             |¦  «         d S | j         |dz    d …= | j         s| j                             |¦  «         d S n3t          | j        |j        |f|                      ¦   «         z   |j        z   Ž ‚|                     |¦  «         | j         s| j                             |¦  «         | j        r"|j        dk    r|                      |¦  «         d S d S d S )	NÚNOTHING)r   r   r™   r•  r   rP  r   r<  )r{  r  rE   rH   r™  r   r|  r»   rû   r#   rå   r   r  rm   rý   r„  r  r   r}  r‘  )rO   r   r†  ÚpfxdixÚnstupleÚtnÚcnameÚnsplitr¡  Únewnamer  ÚlastElÚidxs                r   r—  zMicroDOMParser.gotTagEnd  s  € ð Ô ð 	ØÔ&ð Ø�Ý Ø”= )¨TÐ2°T·]²]±_´_ÑDÀvÑMðð ð Ô×"Ò"Ñ$Ô$ˆØ”˜bÔ! !Ô$ˆØŒ<˜Ô˜AÔ "Ð$Ð$Ø”l×&Ò&Ñ(Ô(ˆGˆGàˆGØÔð 	Ø”×!Ò!Ñ#Ô#ˆBØ—J’J‘L”LˆEˆEà”ˆBØˆEà—’˜C Ñ#Ô#ˆÝˆv‰;Œ;˜!ÒÐØ!‰LˆC�Ø—’˜C Ñ&Ô&ˆBØˆ~Ø”< 2Ò%Ð%ØÔ2ð Ý,à!%¤°´
¸DÐ AØ"&§-¢-¡/¤/ñ!2à"$¤+ñ!.ðð ð �e’‘ØÔ&ð ØÔ$ð Ø!Ô.¨qÔ1�FÝ$¥S¨Ô):Ñ%;Ô%;Ñ<Ô<ð 	ð 	˜ØÔ,¨s°Q©w¨ZÔ8Ô@ÀEÒIÐIØ Ô-°°a±¨jÔ9×@Ò@ÀÑFÔFÐFØ!˜Eð Jð
 Ô)×0Ò0°Ñ4Ô4Ð4Ø"Ð.Ø œL×/Ò/°Ñ8Ô8Ð8Ø˜ØÔ)¨C°!©G¨*¨,¨,Ð7ØÔ,ð Øœ×-Ò-¨fÑ5Ô5Ð5Ø˜øå$Ø”} b¤j°$Ð7¸$¿-º-¹/¼/ÑIÈBÌKÑWðð ð 	�	Š	�$‰ŒˆØÔ ð 	&ØŒN×!Ò! "Ñ%Ô%Ð%ØÔ"ð 	' r¤z°XÒ'=Ð'=Ø×"Ò" 2Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'Ð'=Ð'=r    c                ó"  — t          j        | |¦  «         | j        rr| j        r'| j                             | j        d         ¦  «         d S t          | j        | j        d         df|                      ¦   «         z   | j        d         j	        z   Ž ‚d S )Nr   r™   ÚEND_OF_FILE)
r   ÚconnectionLostr{  r  r}  r   rE   rH   r™  rý   )rO   Úreasons     r   rÁ  zMicroDOMParser.connectionLostT  s�   € ÝÔ   vÑ.Ô.Ð.ØÔð 
	ØÔ&ð 	Ø”×%Ò% dÔ&7¸Ô&:Ñ;Ô;Ð;Ð;Ð;å$àœ¨Ô(9¸"Ô(=¸}ÐMØŸ-š-™/œ/ñ*àÔ+¨BÔ/Ô8ñ9ðð ð	
	ð 
	r    N)rV   rW   rX   rå   r€  r�  rP   r‡  r‰  ÚreÚcompiler‹  r‘  r“  r¥  r©  r¬  r®  r±  r´  r—  rÁ  rY   r    r   ro  ro  `  s‚  € € € € € ð
 8×=Ò=Ñ?Ô?€Kà�4ˆ[Ø�TˆlØ�TˆlØˆfØ,Ð,Ð,Ø,Ð,Ð,Ø,Ð,Ð,Ø�LØˆwØˆfØˆfØˆfØ�Ø˜&Ð!Ø�*ðð €Lð( ØØØØ!ð)ð )ð )ð )ð*ð ð ðð ð ð ˆbŒj˜Ñ(Ô(€Gð(ð (ð (ðB"ð "ð "ð=!ð =!ð =!ð~&ð &ð &ð,ð ,ð ,ð+ð +ð +ð8ð 8ð 8ð1ð 1ð 1ð>'ð >'ð >'ð@ð ð ð ð r    ro  c                óŽ  — t          | d¦  «        st          | d¦  «        } t          |i |¤Ž}t          | dd¦  «        |_        |                     d¦  «         t          | d¦  «        r(|                     |                      ¦   «         ¦  «         nC|                      d¦  «        }|r,|                     |¦  «         |                      d¦  «        }|°,| 	                    d¦  «         |j
        st          |j        ddd	¦  «        ‚|j        r�t          |j
        ¦  «        d
k    rI|j
        d         }t          |t          ¦  «        s&t          d¦  «        }|                     |¦  «         |}n<t          d¦  «        }|j
        D ]}|                     |¦  «         Œn|j
        d         }t#          |¦  «        }|j        |_        |S )z%
    Parse HTML or XML readable.
    ÚreadÚrbr   z<xmlfile />Nrp   i   r   zNo top-level Nodes in documentr   r0  )rÁ   Úopenro  ÚgetattrrH   ÚmakeConnectionÚdataReceivedrp   rÆ  rÁ  r}  r
   r  r   r(   r°   r‡   rŸ   r~  r¤   )	ÚreadableÚargsÚkwargsÚmdpÚrr¥   r†  r†   Údocs	            r   ÚparserÒ  c  sÑ  € õ �8˜VÑ$Ô$ð (Ý˜ $Ñ'Ô'ˆÝ
˜$Ð
) &Ð
)Ð
)€CÝ˜8 V¨]Ñ;Ô;€C„LØ×Ò�tÑÔÐÝˆx˜Ñ$Ô$ð $Ø×Ò˜×*Ò*Ñ,Ô,Ñ-Ô-Ð-Ð-à�MŠM˜$ÑÔˆØð 	$Ø×Ò˜QÑÔÐØ—’˜dÑ#Ô#ˆAð ð 	$ð ×Ò�tÑÔÐàŒ=ð OÝ˜œ q¨!Ð-MÑNÔNÐNà
Ôð ÝˆsŒ}ÑÔ Ò"Ð"Ø”˜aÔ ˆAÝ˜a¥Ñ)Ô)ð Ý˜V‘_”_�Ø—’˜qÑ!Ô!Ð!Ø�øå˜‘”ˆAØœð %ð %�Ø—’˜eÑ$Ô$Ð$Ð$ð%ð ŒM˜!ÔˆÝ
�1‰+Œ+€CØ”.€C„KØ€Jr    c                óÆ   — t          | t          ¦  «        r0t          t          |                      d¦  «        ¦  «        g|¢R i |¤ŽS t          t          | ¦  «        g|¢R i |¤ŽS )NzUTF-16)r(   r)   rÒ  r   r*   )ÚstrÍ  r±   s      r   rŽ  rŽ  Š  sk   € Ý�"•cÑÔð @å•W˜RŸYšY xÑ0Ô0Ñ1Ô1Ð?°DÐ?Ð?Ð?¸BÐ?Ð?Ð?Ý•˜‘”Ð*˜tÐ*Ð*Ð* rÐ*Ð*Ð*r    c                ó&   — t          | dd¬¦  «        S ©z'
    Parse an XML readable object.
    r   r   ©r»   r÷   )rÒ  )rÌ  s    r   ÚparseXMLrØ  ‘  s   € õ �¨1¸1Ð=Ñ=Ô=Ð=r    c                ó&   — t          | dd¬¦  «        S rÖ  )rŽ  )rÔ  s    r   ÚparseXMLStringrÚ  ˜  s   € õ �r¨1¸1Ð=Ñ=Ô=Ð=r    c                  ó:   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zdd„Zd	„ Z	d
S )Úlmxz
    Easy creation of XML.
    rC  c                ó\   — t          |t          ¦  «        rt          |¦  «        }|| _        d S rG   )r(   r)   r°   rÂ   )rO   rÂ   s     r   rP   zlmx.__init__¤  s*   € Ý�d�CÑ Ô ð 	!Ý˜4‘=”=ˆDØˆŒ	ˆ	ˆ	r    c                óH   ‡ ‡— ‰d         dk    rt          d¦  «        ‚ˆˆ fd„S )Nr   Ú_zno private attrsc                 ó    •—  ‰j         ‰fi | ¤ŽS rG   )Úadd)r±   r   rO   s    €€r   rO  z!lmx.__getattr__.<locals>.<lambda>¬  s   ø€ ˜H˜DœH TÐ0Ð0¨RÐ0Ð0€ r    )ÚAttributeErrorr¼   s   ``r   Ú__getattr__zlmx.__getattr__©  s2   øø€ Ø�Œ7�cŠ>ˆ>Ý Ð!3Ñ4Ô4Ð4Ø0Ð0Ð0Ð0Ð0Ð0r    c                ó<   — | j                              ||¦  «         d S rG   )rÂ   r  )rO   ra  rÚ   s      r   Ú__setitem__zlmx.__setitem__®  s    € ØŒ	×Ò˜s CÑ(Ô(Ð(Ð(Ð(r    c                ó6   — | j                              |¦  «        S rG   )rÂ   r¾   )rO   ra  s     r   Ú__getitem__zlmx.__getitem__±  s   € ØŒy×%Ò% cÑ*Ô*Ð*r    r   c                ó\   — t          ||¬¦  «        }| j                             |¦  «         | S )N)rß   )r´   rÂ   r‡   )rO   Útxtrß   Únns       r   r=   zlmx.text´  s/   € Ý�#˜3ÐÑÔˆØŒ	×Ò˜bÑ!Ô!Ð!Øˆr    c                óæ   — t          |dd¬¦  «        }| j                             |¦  «         t          |¦  «        }|                     ¦   «         D ] \  }}|d         dk    r
|dd …         }|||<   Œ!|S )Nr   r×  rß  r   )r°   rÂ   r‡   rÜ  rù   )rO   rû   r±   ÚnewNodeÚxfrÿ   ræ   s          r   rá  zlmx.add¹  s|   € Ý˜'°1À1ÐEÑEÔEˆØŒ	×Ò˜gÑ&Ô&Ð&Ý�‰\Œ\ˆØ—H’H‘J”Jð 	ð 	‰DˆAˆqØ�Œt�sŠ{ˆ{Ø�a�b�b”E�ØˆBˆq‰EˆEØˆ	r    N)rC  )r   )
rV   rW   rX   rÜ   rP   rã  rå  rç  r=   rá  rY   r    r   rÜ  rÜ  Ÿ  s‚   € € € € € ðð ðð ð ð ð
1ð 1ð 1ð
)ð )ð )ð+ð +ð +ðð ð ð ð
ð ð ð ð r    rÜ  )6rÜ   Ú
__future__r   rÃ  ÚwarningsÚior   r   Úincrementalr   r   Útwisted.python.compatr   Útwisted.python.utilr	   Útwisted.web.suxr
   r   ÚformatÚwarningStringÚwarnÚDeprecationWarningr   r$   r3   ÚHTML_ESCAPE_CHARSÚlistÚREV_HTML_ESCAPE_CHARSÚreverseÚXML_ESCAPE_CHARSÚREV_XML_ESCAPE_CHARSr@   rC   Ú	ExceptionrE   r[   rŸ   rÇ   rÓ   r¸   r´   rì   rñ   rX  ró   r°   rk  rm  ro  rÒ  rŽ  rØ  rÚ  rÜ  rY   r    r   ú<module>r      sI  ððð ð" #Ð "Ð "Ð "Ð "Ð "ð 
€	€	€	Ø €€€Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1ð )Ð (Ð (Ð (Ð (Ð (Ø /Ð /Ð /Ð /Ð /Ð /Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1à;×BÒBØÐ�W�W˜Y¨¨B°Ñ2Ô2Ñ3Ô3ñô €ð €„ˆmÐ/¸AÐ >Ñ >Ô >Ð >ðð ð ð6
ð 
ð 
ðð ð ð&Ð ð ˜Ð.Ñ/Ô/Ð Ø × Ò Ñ Ô Ð à$Ð'9Ñ9Ð Ø�tÐ,Ñ-Ô-Ð Ø × Ò Ñ Ô Ð ð /ð ð ð ð ð )ð ð ð ð ð
ð 
ð 
ð 
ð 
�Yñ 
ô 
ð 
ð6Kð Kð Kð Kð Kñ Kô Kð KðtQð Qð Qð Qð Qˆtñ Qô Qð Qðh2ð 2ð 2ð 2ð 2�dñ 2ô 2ð 2ð<+ð +ð +ð +ð +�Dñ +ô +ð +ð/ð /ð /ð /ð /ˆmñ /ô /ð /ð.(6ð (6ð (6ð (6ð (6ˆ=ñ (6ô (6ð (6ðVð ð ð ð �=ñ ô ð ð(ð ð ð ˆJ‰LŒL€	ð*ð *ð *ð *ð *ˆMñ *ô *ð *ðuð uð uð uð uˆdñ uô uð uðp	ð ð ðð ð ð@ð @ð @ð @ð @�Yñ @ô @ð @ðF$ð $ð $ðN+ð +ð +ð>ð >ð >ð>ð >ð >ð"ð "ð "ð "ð "ñ "ô "ð "ð "ð "r    