§
    Étºf*©  ã                  ó´  — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZmZmZ  G d„ d	ej        ¦  «        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 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 S )!z;
Some fairly inadequate testcases for Twisted XML support.
é    )Úannotations)Úreload)ÚBytesIO)ÚLiteral)ÚTestCase)Ú
domhelpersÚmicrodomÚsuxc                  ó.   — e Zd Zdd„Zdd„Zdd
„Zdd„ZdS )ÚSux0rÚreturnÚNonec                ó   — g | _         d S )N©Útokens©Úselfs    úX/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/web/test/test_xml.pyÚ__init__zSux0r.__init__   s   € ð ð 	Œˆˆó    ú2list[tuple[Literal['start'], str, dict[str, str]]]c                ó$   — d„ | j         D ¦   «         S )Nc                ó*   — g | ]}|d          dk    ¯|‘ŒS )r   Ústart© )Ú.0Útokens     r   ú
<listcomp>z&Sux0r.getTagStarts.<locals>.<listcomp>   s&   € ÐFÐFÐF˜%°%¸´(¸gÒ2EÐ2E�Ð2EÐ2EÐ2Er   r   r   s    r   ÚgetTagStartszSux0r.getTagStarts   s   € ØFÐF 4¤;ÐFÑFÔFÐFr   ÚnameÚstrÚattrsúdict[str, str]c                ó@   — | j                              d||f¦  «         d S )Nr   ©r   Úappend)r   r    r"   s      r   ÚgotTagStartzSux0r.gotTagStart   s%   € ØŒ×Ò˜G T¨5Ð1Ñ2Ô2Ð2Ð2Ð2r   Útextc                ó>   — | j                              d|f¦  «         d S )Nr(   r%   )r   r(   s     r   ÚgotTextzSux0r.gotText   s"   € ØŒ×Ò˜F D˜>Ñ*Ô*Ð*Ð*Ð*r   N©r   r   )r   r   )r    r!   r"   r#   r   r   )r(   r!   r   r   )Ú__name__Ú
__module__Ú__qualname__r   r   r'   r*   r   r   r   r   r      sh   € € € € € ðð ð ð ð
Gð Gð Gð Gð3ð 3ð 3ð 3ð+ð +ð +ð +ð +ð +r   r   c                  ó   — e Zd Zdd„ZdS )ÚSUXTestsr   r   c                óâ   — d}t          ¦   «         }|                     ¦   «          |                     |¦  «         |                      t	          |                     ¦   «         ¦  «        d¦  «         d S )Ns   <bork><bork><bork>é   )r   ÚconnectionMadeÚdataReceivedÚassertEqualÚlenr   )r   ÚsÚmss      r   Ú	test_borkzSUXTests.test_bork$   sb   € Ø!ˆÝ‰WŒWˆØ
×ÒÑÔÐØ
�Š˜ÑÔÐØ×Ò�˜RŸ_š_Ñ.Ô.Ñ/Ô/°Ñ3Ô3Ð3Ð3Ð3r   Nr+   )r,   r-   r.   r9   r   r   r   r0   r0   #   s(   € € € € € ð4ð 4ð 4ð 4ð 4ð 4r   r0   c                  ó¦  — e Zd Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d	„Z	d7d
„Z
d7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Zd7d„Zg d¢Zd7d „Z d7d!„Z!d7d"„Z"d7d#„Z#d7d$„Z$d7d%„Z%d7d&„Z&d7d'„Z'd7d(„Z(d7d)„Z)d7d*„Z*d7d+„Z+d7d,„Z,d7d-„Z-d7d.„Z.d7d/„Z/d7d0„Z0d7d1„Z1d7d2„Z2d7d3„Z3d7d4„Z4d7d5„Z5d6S )8ÚMicroDOMTestsr   r   c           	     óp  — d}t          j        |d¬¦  «        }|                      |                     ¦   «                              ¦   «         d¦  «         t          ¦   «         }|                     ¦   «                              |ddddi d¦  «         |                      |                     ¦   «         d¦  «         dS )zŠ
        Make sure that if there's no top-level node lenient-mode won't
        drop leading text that's outside of any elements.
        zHi orders! <br>Well. <br>T©ÚbeExtremelyLenientz*<html>Hi orders! <br />Well. <br /></html>Ú s*   <html>Hi orders! <br />Well. <br /></html>N©r	   ÚparseStringr5   Ú
firstChildÚtoxmlr   ÚwritexmlÚgetvalue©r   r7   ÚdÚ
byteStreams       r   Útest_leadingTextDroppingz&MicroDOMTests.test_leadingTextDropping-   s·   € ð
 (ˆÝÔ  °tÐ<Ñ<Ô<ˆØ×ÒØ�LŠL‰NŒN× Ò Ñ"Ô"Ð$Pñ	
ô 	
ð 	
õ ‘Y”Yˆ
Ø	�Š‰Œ×Ò 
¨B°°B¸¸BÀÑCÔCÐCØ×ÒØ×ÒÑ!Ô!Ð#Pñ	
ô 	
ð 	
ð 	
ð 	
r   c           	     óp  — d}t          j        |d¬¦  «        }|                      |                     ¦   «                              ¦   «         d¦  «         t          ¦   «         }|                     ¦   «                              |ddddi d¦  «         |                      |                     ¦   «         d¦  «         dS )z~
        Ensure that no *trailing* text in a mal-formed
        no-top-level-element document(s) will not be dropped.
        z<br>Hi orders!Tr=   z<html><br />Hi orders!</html>r?   s   <html><br />Hi orders!</html>Nr@   rF   s       r   Útest_trailingTextDroppingz'MicroDOMTests.test_trailingTextDropping=   s£   € ð
 ˆÝÔ  °tÐ<Ñ<Ô<ˆØ×Ò˜Ÿš™œ×-Ò-Ñ/Ô/Ð1PÑQÔQÐQÝ‘Y”Yˆ
Ø	�Š‰Œ×Ò 
¨B°°B¸¸BÀÑCÔCÐCØ×Ò˜×,Ò,Ñ.Ô.Ð0PÑQÔQÐQÐQÐQr   c                óª   — d}t          j        |d¬¦  «        }|                      |                     ¦   «                              ¦   «         d¦  «         dS )zp
        A string with nothing that looks like a tag at all should just
        be parsed as body text.
        z
Hi orders!Tr=   z<html>Hi orders!</html>N©r	   rA   r5   rB   rC   ©r   r7   rG   s      r   Útest_noTagszMicroDOMTests.test_noTagsI   sO   € ð
 ˆÝÔ  °tÐ<Ñ<Ô<ˆØ×Ò˜Ÿš™œ×-Ò-Ñ/Ô/Ð1JÑKÔKÐKÐKÐKr   c                óª   — d}t          j        |d¬¦  «        }|                      |                     ¦   «                              ¦   «         d¦  «         dS )zl
        If a document is surrounded by non-xml text, the text should
        be remain in the XML.
        zHi<br> orders!Tr=   z<html>Hi<br /> orders!</html>NrM   rN   s      r   Útest_surroundingCrapz"MicroDOMTests.test_surroundingCrapR   sO   € ð
 ˆÝÔ  °tÐ<Ñ<Ô<ˆØ×Ò˜Ÿš™œ×-Ò-Ñ/Ô/Ð1PÑQÔQÐQÐQÐQr   c                ó  — d}t          j        |d¬¦  «        }t          j        |j        d¦  «        }t          j        |d         d¦  «                             dd¦  «        }|                      |                     d¦  «        d	¦  «         d S )
Nal  
              <HTML><BODY>
              <P ALIGN="CENTER">
                <A HREF="http://www.apache.org/"><IMG SRC="/icons/apache_pb.gif"></A>
              </P>

              <P>
                This is an insane set of text nodes that should NOT be gathered under
                the A tag above.
              </P>
              </BODY></HTML>
            é   r=   Úar   z&nbsp;ú Úinsaneéÿÿÿÿ)	r	   rA   r   ÚfindNodesNamedÚdocumentElementÚgatherTextNodesÚreplacer5   Úfind)r   r7   rG   ÚlÚns        r   Útest_caseSensitiveSoonCloserz*MicroDOMTests.test_caseSensitiveSoonCloser[   sƒ   € ðˆõ Ô  °qÐ9Ñ9Ô9ˆÝÔ% aÔ&7¸Ñ=Ô=ˆÝÔ& q¨¤t¨QÑ/Ô/×7Ò7¸À#ÑFÔFˆØ×Ò˜Ÿš Ñ)Ô)¨2Ñ.Ô.Ð.Ð.Ð.r   c                ó¤   — d}t          j        |d¬¦  «        }|                      |j        |j                             ¦   «         j        ¦  «         dS )zŠ
        Test that C{parentNode} attributes are set to meaningful values when
        we are parsing HTML that lacks a root node.
        z
<br/><br/>rS   r=   N©r	   rA   ÚassertIdenticalrY   rB   Ú
parentNoderN   s      r   Útest_lenientParentingz#MicroDOMTests.test_lenientParentingm   sZ   € ð ˆÝÔ  °qÐ9Ñ9Ô9ˆØ×ÒØÔ˜qÔ0×;Ò;Ñ=Ô=ÔHñ	
ô 	
ð 	
ð 	
ð 	
r   c                ó¤   — d}t          j        |d¬¦  «        }|                      |j        |j                             ¦   «         j        ¦  «         dS )z�
        Test that the C{parentNode} attribute is set to a meaningful value
        when we parse an HTML document that has a non-Element root node.
        ÚHellorS   r=   Nra   rN   s      r   Útest_lenientParentSinglez&MicroDOMTests.test_lenientParentSingley   sZ   € ð
 ˆÝÔ  °qÐ9Ñ9Ô9ˆØ×ÒØÔ˜qÔ0×;Ò;Ñ=Ô=ÔHñ	
ô 	
ð 	
ð 	
ð 	
r   c                ó°   — d}t          j        |d¬¦  «        }t          j        |¦  «        }|                      |                     d¦  «        d¦  «         d S )Nz
                <HTML>
                    This HTML goes between Stupid <=CrAzY!=> Dumb.
                </HTML>
            rS   r=   ú>rW   )r	   rA   r   rZ   ÚassertNotEqualr\   )r   r7   rG   r^   s       r   Útest_unEntitieszMicroDOMTests.test_unEntities„   sV   € ðˆõ
 Ô  °qÐ9Ñ9Ô9ˆÝÔ& qÑ)Ô)ˆØ×Ò˜AŸFšF 3™KœK¨Ñ,Ô,Ð,Ð,Ð,r   c                ó\   — |                       t          j        t          j        d¦  «         d S )Nr?   )ÚassertRaisesr
   Ú
ParseErrorr	   rA   r   s    r   Útest_emptyErrorzMicroDOMTests.test_emptyErrorŽ   s%   € Ø×Ò�#œ.­(Ô*>ÀÑCÔCÐCÐCÐCr   c                ó°   — d}t          j        |¦  «        }|                      t          j        |j        ¦  «                             ¦   «         d¦  «         d S )Nz”
        <test>
         <it>
          <is>
           <a>
            test
           </a>
          </is>
         </it>
        </test>
        Útest)r	   rA   r5   r   rZ   rY   ÚstriprN   s      r   Útest_tameDocumentzMicroDOMTests.test_tameDocument‘   sR   € ð
ˆõ Ô  Ñ#Ô#ˆØ×Ò�Ô3°AÔ4EÑFÔF×LÒLÑNÔNÐPVÑWÔWÐWÐWÐWr   c                ó°   — d}t          j        |d¬¦  «        }t          j        |j        d¦  «        }|                      t          |¦  «        d¦  «         d S )Na  
        <html>
        <head><title> I send you this message to have your advice!!!!</titl e
        </headd>

        <body bgcolor alink hlink vlink>

        <h1><BLINK>SALE</blINK> TWENTY MILLION EMAILS & FUR COAT NOW
        FREE WITH `ENLARGER'</h1>

        YES THIS WONDERFUL AWFER IS NOW HERER!!!

        <script LANGUAGE="javascript">
function give_answers() {
if (score < 70) {
alert("I hate you");
}}
        </script><a href=/foo.com/lalal name=foo>lalal</a>
        </body>
        </HTML>
        rS   r=   Úblink)r	   rA   r   rX   rY   r5   r6   )r   r7   rG   r]   s       r   Útest_awfulTagSoupzMicroDOMTests.test_awfulTagSoup    sW   € ðˆõ* Ô  °qÐ9Ñ9Ô9ˆÝÔ% aÔ&7¸ÑAÔAˆØ×Ò�˜Q™œ Ñ#Ô#Ð#Ð#Ð#r   c                óˆ  — d}t          j        |d¬¦  «        }|                      |                     ¦   «                              ¦   «                              ¦   «         j        d¦  «         |                      |                     ¦   «                              d¦  «        d                              ¦   «         j        d¦  «         d S )Nzä
        <script>(foo < bar) and (bar > foo)</script>
        <script language="javascript">foo </scrip bar </script>
        <script src="foo">
        <script src="foo">baz</script>
        <script /><script></script>
        rS   r=   z(foo < bar) and (bar > foo)Úscriptzfoo </scrip bar )r	   rA   r5   rB   ÚdataÚgetElementsByTagNamerN   s      r   Útest_scriptLeniencyz!MicroDOMTests.test_scriptLeniencyº   sµ   € ðˆõ Ô  °qÐ9Ñ9Ô9ˆØ×ÒØ�LŠL‰NŒN×%Ò%Ñ'Ô'×2Ò2Ñ4Ô4Ô9Ð;Xñ	
ô 	
ð 	
ð 	×ÒØ�LŠL‰NŒN×/Ò/°Ñ9Ô9¸!Ô<×GÒGÑIÔIÔNØñ	
ô 	
ð 	
ð 	
ð 	
r   c                óæ  — d}|                       t          j        |d¬¦  «                             ¦   «                              ¦   «         |¦  «         d}|                       t          j        |d¬¦  «                             ¦   «                              ¦   «         |¦  «         d}|                       t          j        |d¬¦  «                             ¦   «                              ¦   «         |¦  «         d S )Nz<script><!-- lalal --></script>rS   r=   z"<script><![CDATA[lalal]]></script>z:<script> // <![CDATA[
        lalal
        //]]></script>)r5   r	   rA   rB   rC   ©r   r7   s     r   Útest_scriptLeniencyIntelligencez-MicroDOMTests.test_scriptLeniencyIntelligenceË   sõ   € ð 2ˆØ×ÒÝÔ  °qÐ9Ñ9Ô9×DÒDÑFÔF×LÒLÑNÔNÐPQñ	
ô 	
ð 	
ð 5ˆØ×ÒÝÔ  °qÐ9Ñ9Ô9×DÒDÑFÔF×LÒLÑNÔNÐPQñ	
ô 	
ð 	
ðˆð 	×ÒÝÔ  °qÐ9Ñ9Ô9×DÒDÑFÔF×LÒLÑNÔNÐPQñ	
ô 	
ð 	
ð 	
ð 	
r   c                ó*  — d}|                      ¦   «                              dd¦  «        }t          j        |dd¬¦  «        }t          j        |dd¬¦  «        }t          j        |dd¬¦  «        }t          j        |dd¬¦  «        }t          j        |dd¬¦  «        }|                      |j                             ¦   «         |¦  «         |                      |                     |¦  «        |                     ¦   «         ›d|                     ¦   «         ›�¦  «         |                      |                     |¦  «        |                     ¦   «         ›d|                     ¦   «         ›�¦  «         |                      |                     |¦  «        |                     ¦   «         ›d|                     ¦   «         ›�¦  «         |                      |                     |¦  «        |                     ¦   «         ›d|                     ¦   «         ›�¦  «         d S )NzH<eNcApSuLaTe><sUxor></sUxor><bOrk><w00T>TeXt</W00t></BoRk></EnCaPsUlAtE>r(   ÚTeXtrS   ©ÚcaseInsensitiveÚpreserveCaser   z != )	Úlowerr[   r	   rA   r5   rY   rC   Ú
assertTrueÚisEqualToDocument)r   r7   Ús2rG   Úd2Úd3Úd4Úd5s           r   Útest_preserveCasezMicroDOMTests.test_preserveCaseÝ   sÈ  € ØVˆØ�WŠW‰YŒY×Ò˜v vÑ.Ô.ˆåÔ  °AÀAÐFÑFÔFˆÝÔ! !°QÀQÐGÑGÔGˆõ Ô! "°aÀaÐHÑHÔHˆÝÔ! "°aÀaÐHÑHÔHˆÝÔ! "°aÀaÐHÑHÔHˆð
 	×Ò˜Ô*×0Ò0Ñ2Ô2°AÑ6Ô6Ð6Ø�Š˜×+Ò+¨BÑ/Ô/°A·G²G±I´IÐ1SÐ1SÀRÇXÂXÁZÄZÐ1SÐ1SÑTÔTÐTØ�Š˜×,Ò,¨RÑ0Ô0°R·X²X±Z´ZÐ2UÐ2UÀrÇxÂxÁzÄzÐ2UÐ2UÑVÔVÐVð 	�Š˜×,Ò,¨RÑ0Ô0°R·X²X±Z´ZÐ2UÐ2UÀrÇxÂxÁzÄzÐ2UÐ2UÑVÔVÐVØ�Š˜×,Ò,¨RÑ0Ô0°R·X²X±Z´ZÐ2UÐ2UÀrÇxÂxÁzÄzÐ2UÐ2UÑVÔVÐVÐVÐVr   c                óä   — d}t          j        |¦  «        }|j        }|                      |                     d¦  «        d¦  «         |                      |                     d¦  «        d¦  «         d S )Nz<test a="a" b='b' />rT   Úb©r	   rA   rY   r5   ÚgetAttribute©r   r7   rG   Úes       r   Útest_differentQuotesz"MicroDOMTests.test_differentQuotesõ   si   € Ø$ˆÝÔ  Ñ#Ô#ˆØÔˆØ×Ò˜Ÿš¨Ñ,Ô,¨cÑ2Ô2Ð2Ø×Ò˜Ÿš¨Ñ,Ô,¨cÑ2Ô2Ð2Ð2Ð2r   c                óä   — d}t          j        |¦  «        }|j        }|                      |                     d¦  «        d¦  «         |                      |                     d¦  «        d¦  «         d S )Nz<test 
a="a"
	b="#b" />rT   rŽ   z#br�   r‘   s       r   Útest_LinebreakszMicroDOMTests.test_Linebreaksü   si   € Ø(ˆÝÔ  Ñ#Ô#ˆØÔˆØ×Ò˜Ÿš¨Ñ,Ô,¨cÑ2Ô2Ð2Ø×Ò˜Ÿš¨Ñ,Ô,¨dÑ3Ô3Ð3Ð3Ð3r   c                óf   — dD ]-}|                       t          j        t          j        |¦  «         Œ.d S )N)z<test>z<test> </tset>z</test>)rm   r	   ÚMismatchedTagsrA   r}   s     r   Útest_mismatchedTagsz!MicroDOMTests.test_mismatchedTags  s@   € Ø6ð 	Pð 	PˆAØ×Ò�hÔ5µxÔ7KÈQÑOÔOÐOÐOð	Pð 	Pr   c                óÆ  — d}t          j        |¦  «        }|j        }|                      |j        d¦  «         |j        d         }|                      t          |t           j        ¦  «        ¦  «         |                      |j	        d¦  «         | 
                    ¦   «         }|                      ||u¦  «         |                      |                     ¦   «         d¦  «         d S )Nz<bar><!--<foo />--></bar>Úbarr   ú<foo />z<!--<foo />-->)r	   rA   rY   r5   ÚnodeNameÚ
childNodesr…   Ú
isinstanceÚCommentÚvalueÚ	cloneNoderC   )r   r7   rG   r’   ÚcÚc2s         r   Útest_commentzMicroDOMTests.test_comment  sÁ   € Ø'ˆÝÔ  Ñ#Ô#ˆØÔˆØ×Ò˜œ UÑ+Ô+Ð+ØŒL˜ŒOˆØ�Š�
 1¥hÔ&6Ñ7Ô7Ñ8Ô8Ð8Ø×Ò˜œ )Ñ,Ô,Ð,Ø�[Š[‰]Œ]ˆØ�Š˜ ˜Ñ$Ô$Ð$Ø×Ò˜Ÿš™œÐ%5Ñ6Ô6Ð6Ð6Ð6r   c                óˆ  — t          j        d¦  «        j        }|j        d         }|                      t          |t           j        ¦  «        ¦  «         |                      |j        d¦  «         | 	                    ¦   «         }|                      ||u¦  «         |                      | 
                    ¦   «         d¦  «         d S )Nz<bar>xxxx</bar>r   Úxxxx)r	   rA   rY   r�   r…   rž   ÚTextr5   r    r¡   rC   )r   rG   r(   Úclones       r   Ú	test_textzMicroDOMTests.test_text  s¡   € ÝÔ Ð!2Ñ3Ô3ÔCˆØŒ|˜AŒˆØ�Š�
 4­¬Ñ7Ô7Ñ8Ô8Ð8Ø×Ò˜œ VÑ,Ô,Ð,Ø—’Ñ Ô ˆØ�Š˜ TÐ)Ñ*Ô*Ð*Ø×Ò˜Ÿš™œ¨Ñ/Ô/Ð/Ð/Ð/r   c                óð  — t          j        d¦  «        j        j        }|                      t          |¦  «        d¦  «         |                      |d         j        d¦  «         |                      |d         j        d¦  «         |                      |d                              ¦   «                              ¦   «         d¦  «         |D ]/}|  	                    t          |t           j        ¦  «        ¦  «         Œ0d S )Nz<b>&amp;&#12AB;</b>é   r   ú&amp;rS   z&#12AB;)r	   rA   rY   r�   r5   r6   ry   r¡   rC   r…   rž   ÚEntityReference)r   Únodesr^   s      r   Útest_entitieszMicroDOMTests.test_entities  sÞ   € ÝÔ$Ð%:Ñ;Ô;ÔKÔVˆØ×Ò�˜U™œ QÑ'Ô'Ð'Ø×Ò˜˜qœœ¨Ñ0Ô0Ð0Ø×Ò˜˜qœœ¨	Ñ2Ô2Ð2Ø×Ò˜˜qœ×+Ò+Ñ-Ô-×3Ò3Ñ5Ô5°wÑ?Ô?Ð?Øð 	Eð 	EˆAØ�OŠO�J q­(Ô*BÑCÔCÑDÔDÐDÐDð	Eð 	Er   c                óV  — d}t          j        |¦  «        j        j        d         }|                      t          |t           j        ¦  «        ¦  «         |                      |j        d¦  «         |                      | 	                    ¦   «          
                    ¦   «         d¦  «         d S )Nz<x><![CDATA[</x>
 & foo]]></x>r   z</x>
 & fooz<![CDATA[</x>
 & foo]]>)r	   rA   rY   r�   r…   rž   ÚCDATASectionr5   ry   r¡   rC   )r   r7   Úcdatas      r   Ú
test_CDatazMicroDOMTests.test_CData%  s�   € Ø/ˆÝÔ$ QÑ'Ô'Ô7ÔBÀ1ÔEˆØ�Š�
 5­(Ô*?Ñ@Ô@ÑAÔAÐAØ×Ò˜œÐ%5Ñ6Ô6Ð6Ø×Ò˜ŸšÑ*Ô*×0Ò0Ñ2Ô2Ð4PÑQÔQÐQÐQÐQr   c                óØ  — d}d}t          j        |¦  «        j        j        }t          j        |¦  «        j        j        }|                      t          |¦  «        d¦  «         t          ||¦  «        D ]u\  }}|                      t          |t           j	        ¦  «        ¦  «         |                      |j
        d¦  «         |                      |                     |¦  «        ¦  «         Œvd S )Nz<foo><b/><b /><b
/></foo>z<foo><b/><b/><b/></foo>r2   rŽ   )r	   rA   rY   r�   r5   r6   Úzipr…   rž   ÚElementrœ   ÚisEqualToNode)r   r7   r‡   r®   Únodes2r^   Ún2s          r   Útest_singletonszMicroDOMTests.test_singletons,  sÓ   € Ø(ˆØ&ˆÝÔ$ QÑ'Ô'Ô7ÔBˆÝÔ% bÑ)Ô)Ô9ÔDˆØ×Ò�˜U™œ QÑ'Ô'Ð'Ý˜ Ñ'Ô'ð 	1ð 	1‰EˆAˆrØ�OŠO�J q­(Ô*:Ñ;Ô;Ñ<Ô<Ð<Ø×Ò˜QœZ¨Ñ-Ô-Ð-Ø�OŠO˜AŸOšO¨BÑ/Ô/Ñ0Ô0Ð0Ð0ð	1ð 	1r   c                ó`  — d}t          j        |¦  «        j        }|                      |                     d¦  «        d¦  «         |                      |                     d¦  «        d ¦  «         |                      |                     d¦  «        ¦  «         |                      |                     d¦  «         ¦  «         |                     d¦  «        }|                      |j        d¦  «         | 	                    dd¦  «         |                      |                     d¦  «        d¦  «         d S )Nz<foo a="b" />rT   rŽ   r¢   Úfoorš   )
r	   rA   rY   r5   r�   r…   ÚhasAttributeÚgetAttributeNoder    ÚsetAttribute)r   r7   ÚnoderT   s       r   Útest_attributeszMicroDOMTests.test_attributes7  s  € ØˆÝÔ# AÑ&Ô&Ô6ˆà×Ò˜×*Ò*¨3Ñ/Ô/°Ñ5Ô5Ð5Ø×Ò˜×*Ò*¨3Ñ/Ô/°Ñ6Ô6Ð6Ø�Š˜×)Ò)¨#Ñ.Ô.Ñ/Ô/Ð/Ø�Š˜D×-Ò-¨cÑ2Ô2Ð2Ñ3Ô3Ð3Ø×!Ò! #Ñ&Ô&ˆØ×Ò˜œ #Ñ&Ô&Ð&à×Ò˜% Ñ'Ô'Ð'Ø×Ò˜×*Ò*¨5Ñ1Ô1°5Ñ9Ô9Ð9Ð9Ð9r   c                ó   — d}t          j        |¦  «        j        }|                      d„ |j        D ¦   «         g d¢¦  «         |                      |                     ¦   «         j        d¦  «         |                      |                     ¦   «         j        d¦  «         |                      | 	                    ¦   «         ¦  «         |                      |                     ¦   «          	                    ¦   «          ¦  «         d S )Nz'<foo><bar /><baz /><bax>foo</bax></foo>c                ó   — g | ]	}|j         ‘Œ
S r   )rœ   )r   r^   s     r   r   z/MicroDOMTests.test_children.<locals>.<listcomp>H  s   € Ð;Ð;Ð;¨˜!œ*Ð;Ð;Ð;r   )rš   ÚbazÚbaxrÅ   rš   )
r	   rA   rY   r5   r�   Ú	lastChildrœ   rB   r…   ÚhasChildNodesrN   s      r   Útest_childrenzMicroDOMTests.test_childrenE  sÕ   € Ø5ˆÝÔ  Ñ#Ô#Ô3ˆØ×ÒÐ;Ð;¨a¬lÐ;Ñ;Ô;Ð=RÐ=RÐ=RÑSÔSÐSØ×Ò˜Ÿš™œÔ/°Ñ7Ô7Ð7Ø×Ò˜Ÿš™œÔ0°%Ñ8Ô8Ð8Ø�Š˜ŸšÑ)Ô)Ñ*Ô*Ð*Ø�Š˜AŸLšL™NœN×8Ò8Ñ:Ô:Ð:Ñ;Ô;Ð;Ð;Ð;r   c                ó  — d}d}d}t          j        |¦  «        j        }t          j        |¦  «        j        }t          j        |¦  «        j        }|                     |                     ¦   «         ¦  «         |                     dd¦  «         |j        d         }|                      |                     d¦  «        d ¦  «         |                      |j	        d¦  «         | 
                    t          j        d¦  «        |¦  «         |                      |j        d         j	        d¦  «         |                      |j        d	         |¦  «         |j        D ]}|                      |j        |¦  «         Œ|                      |                     |¦  «        ¦  «         |                     |¦  «         |                      t!          |j        ¦  «        d	¦  «         |                      |j        d         j	        d¦  «         t          j        d¦  «        }	|                     |	|                     ¦   «         ¦  «         |                      |                     ¦   «         |	¦  «         |                      |                     |¦  «        ¦  «         d S )
Nr›   z<foo a="b"><bar/><foo/></foo>z<foo a="b">foo</foo>rT   rŽ   r   r¼   rš   rS   )r	   rA   rY   ÚappendChildr¡   r¿   r�   r5   r�   rœ   ÚinsertBeforer¶   rc   r…   r·   ÚremoveChildr6   r§   ÚreplaceChildrB   )
r   r7   Ús1r‡   rG   Úd1rˆ   Úchildr^   Úts
             r   Útest_mutatezMicroDOMTests.test_mutateN  s!  € ØˆØ,ˆØ#ˆÝÔ  Ñ#Ô#Ô3ˆÝÔ! "Ñ%Ô%Ô5ˆÝÔ! "Ñ%Ô%Ô5ˆà	�Š�a—k’k‘m”mÑ$Ô$Ð$Ø	�Š�s˜CÑ Ô Ð Ø”˜Q”ˆØ×Ò˜×+Ò+¨CÑ0Ô0°$Ñ7Ô7Ð7Ø×Ò˜œ¨Ñ/Ô/Ð/à	�Š•xÔ'¨Ñ.Ô.°Ñ6Ô6Ð6Ø×Ò˜œ aœÔ1°5Ñ9Ô9Ð9Ø×Ò˜œ aœ¨%Ñ0Ô0Ð0Ø”ð 	.ð 	.ˆAØ×Ò˜Qœ\¨1Ñ-Ô-Ð-Ð-Ø�Š˜Ÿš¨Ñ+Ô+Ñ,Ô,Ð,à	�Š�eÑÔÐØ×Ò�˜Qœ\Ñ*Ô*¨AÑ.Ô.Ð.Ø×Ò˜œ aœÔ1°5Ñ9Ô9Ð9åŒM˜%Ñ Ô ˆØ	�Š�q˜!Ÿ,š,™.œ.Ñ)Ô)Ð)Ø×Ò˜Ÿš™œ¨Ñ+Ô+Ð+Ø�Š˜Ÿš¨Ñ+Ô+Ñ,Ô,Ð,Ð,Ð,r   c                óÂ   — t          j        d¦  «        }t          j        d¦  «        }t          j        d¦  «        }|                      t          |j        ||¦  «         dS )z�
        L{Node.replaceChild} raises L{ValueError} if the node given to be
        replaced is not a child of the node C{replaceChild} is called on.
        r›   z<bar />z<baz />N)r	   rA   rm   Ú
ValueErrorrÍ   )r   ÚparentÚorphanÚreplacements       r   Útest_replaceNonChildz"MicroDOMTests.test_replaceNonChildl  sW   € õ
 Ô% iÑ0Ô0ˆÝÔ% iÑ0Ô0ˆÝÔ*¨9Ñ5Ô5ˆà×Ò�* fÔ&9¸;ÈÑOÔOÐOÐOÐOr   c                ó:  — d}d}t          j        |¦  «        }t          j        |dd¬¦  «        }t          j        |dd¬¦  «        }|j        }|                      |                     ¦   «         |                     d¦  «        ¦  «         |                      |                     d¦  «        ||                     ¦   «                              ¦   «         g¦  «         |j        }|                      |                     ¦   «         |                     d¦  «        ¦  «         |                      |                     d¦  «        |g¦  «         |                      |                     d	¦  «        |                     ¦   «                              ¦   «         g¦  «         |                      |                     d¦  «        g ¦  «         |j        }|                      |                     ¦   «         |                     d¦  «        ¦  «         |                      |                     d
¦  «        ||                     ¦   «                              ¦   «         g¦  «         |                      |                     d¦  «        ||                     ¦   «                              ¦   «         g¦  «         d S )Nz,<foo><bar id='me' /><baz><foo /></baz></foo>z,<fOo><bAr id='me' /><bAz><fOO /></bAz></fOo>r   rS   r�   Úmer¼   ÚfOoÚfOOÚFOO)r	   rA   rY   r5   rB   ÚgetElementByIdrz   rÆ   )r   r7   r‡   rG   rˆ   r‰   Úroots          r   Útest_searchzMicroDOMTests.test_searchw  s\  € Ø:ˆØ;ˆÝÔ  Ñ#Ô#ˆÝÔ! "°aÀaÐHÑHÔHˆÝÔ! "°aÀaÐHÑHÔHˆàÔ ˆØ×Ò˜ŸšÑ*Ô*¨A×,<Ò,<¸TÑ,BÔ,BÑCÔCÐCØ×ÒØ×"Ò" 5Ñ)Ô)¨D°$·.².Ñ2BÔ2B×2MÒ2MÑ2OÔ2OÐ+Pñ	
ô 	
ð 	
ð Ô!ˆØ×Ò˜ŸšÑ*Ô*¨B×,=Ò,=¸dÑ,CÔ,CÑDÔDÐDØ×Ò˜×0Ò0°Ñ7Ô7¸$¸Ñ@Ô@Ð@Ø×ÒØ×#Ò# EÑ*Ô*¨T¯^ª^Ñ-=Ô-=×-HÒ-HÑ-JÔ-JÐ,Kñ	
ô 	
ð 	
ð 	×Ò˜×0Ò0°Ñ7Ô7¸Ñ<Ô<Ð<àÔ!ˆØ×Ò˜ŸšÑ*Ô*¨B×,=Ò,=¸dÑ,CÔ,CÑDÔDÐDØ×ÒØ×#Ò# EÑ*Ô*¨T°4·>²>Ñ3CÔ3C×3NÒ3NÑ3PÔ3PÐ,Qñ	
ô 	
ð 	
ð 	×ÒØ×#Ò# EÑ*Ô*¨T°4·>²>Ñ3CÔ3C×3NÒ3NÑ3PÔ3PÐ,Qñ	
ô 	
ð 	
ð 	
ð 	
r   c                ó˜  — d}d}t          j        |¦  «        }t          j        |¦  «        }|                      |j        d¦  «         |                      |                     ¦   «         |¦  «         |                      |                     |¦  «        ¦  «         |                      |j         	                    |j        ¦  «        ¦  «         d S )Nz`<?xml version="1.0"?><!DOCTYPE foo PUBLIC "baz" "http://www.example.com/example.dtd"><foo></foo>ú<foo/>ú5foo PUBLIC "baz" "http://www.example.com/example.dtd")
r	   rA   r5   ÚdoctyperC   ÚassertFalser†   r…   rY   r·   )r   r7   r‡   rG   rˆ   s        r   Útest_doctypezMicroDOMTests.test_doctype•  sÁ   € ðð 	
ð
 ˆÝÔ  Ñ#Ô#ˆÝÔ! "Ñ%Ô%ˆØ×ÒØŒIÐNñ	
ô 	
ð 	
ð 	×Ò˜Ÿš™œ AÑ&Ô&Ð&Ø×Ò˜×,Ò,¨RÑ0Ô0Ñ1Ô1Ð1Ø�Š˜Ô)×7Ò7¸Ô8JÑKÔKÑLÔLÐLÐLÐLr   ))z<img/>z<img />)ú<foo A='b'>x</foo>ú<foo A="b">x</foo>)z<foo><BAR /></foo>z<foo><BAR></BAR></foo>)ú"<foo>hello there &amp; yoyoy</foo>ré   c                ó&  — | j         D ]ˆ\  }}t          j        |d¬¦  «        }t          j        |d¬¦  «        }|j                             ¦   «         }|                      ||¦  «         |                      |                     |¦  «        ¦  «         Œ‰d S )Nr   ©r‚   )Úsamplesr	   rA   rY   rC   r5   r…   r†   )r   r7   ÚoutrG   rˆ   ÚtestOuts         r   Útest_outputzMicroDOMTests.test_output¬  s˜   € Ø”lð 	5ð 	5‰FˆAˆsÝÔ$ Q¸Ð:Ñ:Ô:ˆAÝÔ% c¸1Ð=Ñ=Ô=ˆBØÔ'×-Ò-Ñ/Ô/ˆGØ×Ò˜S 'Ñ*Ô*Ð*Ø�OŠO˜A×/Ò/°Ñ3Ô3Ñ4Ô4Ð4Ð4ð	5ð 	5r   c                ó\   — dD ](}|                       t          t          j        |¦  «         Œ)d S )N)z<foo>&am</foo>z<fooz<f>&</f>z<() />)rm   Ú	Exceptionr	   rA   r}   s     r   Útest_errorszMicroDOMTests.test_errors´  s=   € ØAð 	Bð 	BˆAØ×Ò�i­Ô)=¸qÑAÔAÐAÐAð	Bð 	Br   c                ó   — d}d}d}d}t          j        |¦  «        }t          j        |¦  «        }t          j        |d¬¦  «        }t          j        |dd¬¦  «        }t          j        |dd¬¦  «        }	t          j        |dd¬¦  «        }
t          j        |¦  «        j                             ¦   «         }|                      t           j        t           j        |d¬¦  «         |                      ||¦  «         |                      |                     |¦  «        ¦  «         |                      |                     |¦  «        ¦  «         |                      |j         	                    d	¦  «        ¦  «         |  
                    |
j         	                    d	¦  «        ¦  «         |                      |j                             ¦   «         d
¦  «         |                      |	j                             ¦   «         d¦  «         d S )Nz<foo a='b'><BAx>x</bax></FOO>ú<foo a="b"><bax>x</bax></foo>z<FOO a='b'><BAx>x</BAx></FOO>rç   rS   rë   r�   r   rT   rè   z<foo a="b">x</foo>)r	   rA   rY   rC   rm   r—   r5   r…   r†   r½   rå   )r   r7   r‡   Ús3Ús4rG   rˆ   r‰   rŠ   r‹   Úd6rí   s               r   Útest_caseInsensitivez"MicroDOMTests.test_caseInsensitive¸  sÍ  € Ø+ˆØ,ˆØ,ˆØ!ˆÝÔ  Ñ#Ô#ˆÝÔ! "Ñ%Ô%ˆÝÔ! "°aÐ8Ñ8Ô8ˆÝÔ! "°aÀaÐHÑHÔHˆÝÔ! "°aÀaÐHÑHÔHˆÝÔ! "°aÀaÐHÑHÔHˆÝÔ" 1Ñ%Ô%Ô5×;Ò;Ñ=Ô=ˆØ×ÒÝÔ#¥XÔ%9¸1Èað 	ñ 	
ô 	
ð 	
ð 	×Ò˜˜bÑ!Ô!Ð!Ø�Š˜×+Ò+¨BÑ/Ô/Ñ0Ô0Ð0Ø�Š˜×+Ò+¨BÑ/Ô/Ñ0Ô0Ð0Ø�Š˜Ô*×7Ò7¸Ñ<Ô<Ñ=Ô=Ð=Ø×Ò˜Ô+×8Ò8¸Ñ=Ô=Ñ>Ô>Ð>Ø×Ò˜Ô+×1Ò1Ñ3Ô3Ð5IÑJÔJÐJØ×Ò˜Ô+×1Ò1Ñ3Ô3Ð5IÑJÔJÐJÐJÐJr   c                ó  — d}t          j        |¦  «        }|                      |j                             ¦   «          |j        j        ¦  «         |                      |                     t          j        d¦  «        ¦  «        ¦  «         d S )Nz<hello>
        </hello>z<hello></hello>)r	   rA   r…   rY   rÇ   r�   r†   rN   s      r   Útest_eatingWhitespacez#MicroDOMTests.test_eatingWhitespaceÏ  s€   € ðˆåÔ  Ñ#Ô#ˆØ�ŠØÔ!×/Ò/Ñ1Ô1Ð1°1Ô3DÔ3Oñ	
ô 	
ð 	
ð 	�Š˜×+Ò+­HÔ,@ÐARÑ,SÔ,SÑTÔTÑUÔUÐUÐUÐUr   c                ó8  — d}dD ]Q\  }}t          j        |› d|› d�d¬¦  «        }|                      |j                             ¦   «         d|z  ¦  «         ŒRt          j        dd¬¦  «        }|                      |j                             ¦   «         d	¦  «         d S )
Nz<?xml version='1.0'?>))ú&r¬   )z& z&amp; )r¬   r¬   )z&hello monkeyz&amp;hello monkeyz<pre>z</pre>rS   r=   z<pre>%s</pre>z<t>hello & there</t>z<t>hello &amp; there</t>©r	   rA   r5   rY   rC   )r   ÚprefixÚiÚorG   s        r   Útest_lenientAmpersandz#MicroDOMTests.test_lenientAmpersandØ  s¶   € Ø(ˆð
ð 	Mð 	M‰DˆAˆqõ Ô$¨Ð%>Ð%>°QÐ%>Ð%>Ð%>ÐSTÐUÑUÔUˆAØ×Ò˜QÔ.×4Ò4Ñ6Ô6¸È!Ñ8KÑLÔLÐLÐLåÔ Ð!7ÈAÐNÑNÔNˆØ×Ò˜Ô*×0Ò0Ñ2Ô2Ð4NÑOÔOÐOÐOÐOr   c                ó°   — t          j        dd¬¦  «        }|                      |j                             ¦   «                              ¦   «         d¦  «         d S )Nz3<?xml version='1.0'?><bar><xA><y>c</Xa> <foo></bar>rS   r=   z<xa><y>c</y></xa>)r	   rA   r5   rY   rB   rC   )r   rG   s     r   Útest_insensitiveLenientz%MicroDOMTests.test_insensitiveLenientç  sY   € åÔ ØAÐVWð
ñ 
ô 
ˆð 	×Ò˜Ô*×5Ò5Ñ7Ô7×=Ò=Ñ?Ô?ÐATÑUÔUÐUÐUÐUr   c                ó˜   — d}t          j        |d¬¦  «        }d}|j                             ¦   «         }|                      ||¦  «         d S )Nz<ul><li>foo<li>bar<li>baz</ul>rS   r=   z-<ul><li>foo</li><li>bar</li><li>baz</li></ul>©r	   rA   rY   rC   r5   ©r   r7   rG   ÚexpectedÚactuals        r   Útest_laterCloserSimplez$MicroDOMTests.test_laterCloserSimpleî  sQ   € Ø,ˆÝÔ  °qÐ9Ñ9Ô9ˆØBˆØÔ"×(Ò(Ñ*Ô*ˆØ×Ò˜ 6Ñ*Ô*Ð*Ð*Ð*r   c                ó˜   — d}t          j        |d¬¦  «        }d}|j                             ¦   «         }|                      ||¦  «         d S )Nz<DL><p><DT>foo<DD>bar</DL>rS   r=   z(<dl><p></p><dt>foo</dt><dd>bar</dd></dl>r  r  s        r   Útest_laterCloserCaseInsensitivez-MicroDOMTests.test_laterCloserCaseInsensitiveõ  sQ   € Ø(ˆÝÔ  °qÐ9Ñ9Ô9ˆØ=ˆØÔ"×(Ò(Ñ*Ô*ˆØ×Ò˜ 6Ñ*Ô*Ð*Ð*Ð*r   c                ó˜   — d}d}t          j        |d¬¦  «        }|j                             ¦   «         }|                      ||¦  «         d S )NzK<dl><dt>word<dd>definition<dt>word<dt>word<dd>definition<dd>definition</dl>zi<dl><dt>word</dt><dd>definition</dd><dt>word</dt><dt>word</dt><dd>definition</dd><dd>definition</dd></dl>rS   r=   r  )r   r7   r  rG   r  s        r   Útest_laterCloserDLz MicroDOMTests.test_laterCloserDLü  s]   € ðð 	
ðð 	õ Ô  °qÐ9Ñ9Ô9ˆØÔ"×(Ò(Ñ*Ô*ˆØ×Ò˜ 6Ñ*Ô*Ð*Ð*Ð*r   c                ó,  ‡— dd l Šd}d}d}dˆfd„}t          j         ||                     d	¦  «        ¦  «        ¦  «        }t          j        |                     d	¦  «        ¦  «        }t          j        |¦  «        }|                      |                     |¦  «        ¦  «         |                      |                     |¦  «        ¦  «         t          j        |¦  «        }t          j         ||¦  «        ¦  «        }t          j        |¦  «        }|                      |                     |¦  «        ¦  «         |                      |                     |¦  «        ¦  «         t          j        d
¦  «        }d}	t          j        ¦   «                              dd¬¦  «        j        }
|j	        }| 
                    |
¦  «         | 
                    |                     d¦  «        ¦  «         |                      |                     ¦   «         |	dz   ¦  «         d S )Nr   z<foo><bar><baz /></bar></foo>ub   <?xml version="1.0" encoding="UCS-2" ?>
<JAPANESE>
<TITLE>å°‚é–€å®¶ãƒªã‚¹ãƒˆ </TITLE></JAPANESE>s®   ÿþ< ? x m l   v e r s i o n = " 1 . 0 "   e n c o d i n g = " U C S - 2 "   ? >  
 < J A P A N E S E >  
 < T I T L E > \€•¶[ê0¹0È0  < / T I T L E > < / J A P A N E S E > r7   Úbytesr   c                ó˜   •— t          t          | ¦  «        dz  ¦  «        dz   } ‰j        d|z   g‰                     d|z   | ¦  «        ¢R Ž S )Nr«   ÚHú<ri   )r!   r6   ÚpackÚunpack)r7   ÚfmtÚstructs     €r   ÚreverseBytesz9MicroDOMTests.test_unicodeTolerance.<locals>.reverseBytes  sO   ø€ Ý•c˜!‘f”f ‘kÑ"Ô" SÑ(ˆCØ�6”;˜s S™yÐG¨6¯=ª=¸¸s¹ÀAÑ+FÔ+FÐGÐGÐGÐGr   zUTF-16râ   z<?xml version="1.0"?>u   âˆšrS   ©Úrawu#   <foo><div>âˆš</div><!--âˆš--></foo>)r7   r  r   r  )r  r	   rA   Úencoder…   r†   Úlmxr(   rÀ   rY   rÊ   ÚcreateCommentr5   rC   )r   r7   ÚjÚj2r  ÚurdÚudÚsdÚj3ÚhdrÚdivÚder  s               @r   Útest_unicodeTolerancez#MicroDOMTests.test_unicodeTolerance  s   ø€ Øˆˆˆà+ˆðNð 	
ð
Pð 	ð	Hð 	Hð 	Hð 	Hð 	Hð 	Hõ Ô" < <°·²¸Ñ0BÔ0BÑ#CÔ#CÑDÔDˆÝÔ! !§(¢(¨8Ñ"4Ô"4Ñ5Ô5ˆÝÔ! !Ñ$Ô$ˆØ�Š˜×,Ò,¨RÑ0Ô0Ñ1Ô1Ð1Ø�Š˜×,Ò,¨SÑ1Ô1Ñ2Ô2Ð2ÝÔ! !Ñ$Ô$ˆÝÔ" < <°Ñ#3Ô#3Ñ4Ô4ˆÝÔ! "Ñ%Ô%ˆØ�Š˜×,Ò,¨RÑ0Ô0Ñ1Ô1Ð1Ø�Š˜×,Ò,¨SÑ1Ô1Ñ2Ô2Ð2õ Ô! (Ñ+Ô+ˆØ%ˆÝŒl‰nŒn×!Ò! (°Ð!Ñ2Ô2Ô7ˆØÔˆØ
�Š�sÑÔÐØ
�Š�r×'Ò'¨Ñ1Ô1Ñ2Ô2Ð2Ø×ÒØ�HŠH‰JŒJ˜ÐJÑJñ	
ô 	
ð 	
ð 	
ð 	
r   c                óD  — ddddœ}|                      ¦   «         D ]„}t          j        |¦  «        j        }t	          j        |d¦  «        }|                      t          |¦  «        ||         ¦  «         |r)|                      t          |d         d¦  «        ¦  «         Œ…d S )Nr2   r   rS   )z:<foo><bar /><bar unf='1' /><bar>asdfadsf</bar><bam/></foo>z<foo>asdf</foo>z!<foo><bar><bar></bar></bar></foo>rš   ÚtagName)
Úkeysr	   rA   rY   r   ÚnamedChildrenr5   r6   r…   Úhasattr)r   ÚtestsrÑ   rÀ   Úresults        r   Útest_namedChildrenz MicroDOMTests.test_namedChildren:  s¨   € àMNØ Ø12ð
ð 
ˆð
 —’‘”ð 	?ð 	?ˆAÝÔ'¨Ñ*Ô*Ô:ˆDÝÔ-¨d°EÑ:Ô:ˆFØ×Ò�S ™[œ[¨%°¬(Ñ3Ô3Ð3Øð ?Ø—’¥¨¨q¬	°9Ñ =Ô =Ñ>Ô>Ð>øð	?ð 	?r   c                óü  — d}t          j        |¦  «        j        }|                     d¬¦  «        }|                      ||¦  «         |                      t          |j        ¦  «        t          |j        ¦  «        ¦  «         |                     ¦   «         |                     ¦   «         }}|                      ||¦  «         |                      t          |j        ¦  «        t          |j        ¦  «        ¦  «         |                      |                     ¦   «         |                     ¦   «         ¦  «         |                      || 	                    ¦   «         ¦  «         |                      |j
        |j
        ¦  «         d S )Nrô   rS   ©Údeep)r	   rA   rY   r¡   ÚfailIfEqualsr5   r6   r�   rB   rC   Ú	namespace)r   r7   rÀ   r¨   Úc1r£   s         r   Útest_cloneNodezMicroDOMTests.test_cloneNodeG  s1  € Ø+ˆÝÔ# AÑ&Ô&Ô6ˆØ—’ A�Ñ&Ô&ˆØ×Ò˜$ Ñ&Ô&Ð&Ø×Ò�˜Tœ_Ñ-Ô-­s°5Ô3CÑ/DÔ/DÑEÔEÐEØ—’Ñ"Ô" E×$4Ò$4Ñ$6Ô$6ˆBˆØ×Ò˜"˜bÑ!Ô!Ð!Ø×Ò�˜Rœ]Ñ+Ô+­S°´Ñ-?Ô-?Ñ@Ô@Ð@Ø×Ò˜"Ÿ-š-™/œ/¨2¯=ª=©?¬?Ñ;Ô;Ð;Ø×Ò˜˜EŸKšK™MœMÑ*Ô*Ð*Ø×Ò˜œ¨¬Ñ9Ô9Ð9Ð9Ð9r   c                óî  — d}t          j        |¦  «        }|                     d¬¦  «        }|                      ||¦  «         |                      t          |j        ¦  «        t          |j        ¦  «        ¦  «         |                      ||                     ¦   «         ¦  «         |                      | 	                    |¦  «        ¦  «         |                      | 	                    |¦  «        ¦  «         d S )Nz˜<?xml version="1.0"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><foo></foo>rS   r0  )
r	   rA   r¡   r2  r5   r6   r�   rC   r…   r†   )r   r7   rÀ   r¨   s       r   Útest_cloneDocumentz MicroDOMTests.test_cloneDocumentT  s×   € ðTð 	
õ Ô# AÑ&Ô&ˆØ—’ A�Ñ&Ô&ˆØ×Ò˜$ Ñ&Ô&Ð&Ø×Ò�˜Tœ_Ñ-Ô-­s°5Ô3CÑ/DÔ/DÑEÔEÐEØ×Ò˜˜EŸKšK™MœMÑ*Ô*Ð*à�Š˜×/Ò/°Ñ5Ô5Ñ6Ô6Ð6Ø�Š˜×.Ò.¨uÑ5Ô5Ñ6Ô6Ð6Ð6Ð6r   c                ó„  — t          j        d¦  «        }t          j        |¦  «        }|                     d¦  «         |                     d¬¦  «        }d|                     ¦   «         d<   |                     ¦   «          |                     dd¬¦  «         d	}|                      ||                     ¦   «         ¦  «         d S )
NÚpr¼   r¢   )rT   Úzrš   Úy)r¢   zF<p>foo<b a="c"><foo z="foo"></foo><foo></foo><bar c="y"></bar></b></p>)	r	   r¶   r  r(   rŽ   r¼   Úaddr5   rC   )r   r^   r  rŽ   r7   s        r   Útest_LMXzMicroDOMTests.test_LMXd  sœ   € ÝÔ˜SÑ!Ô!ˆÝŒl˜1‰oŒoˆØ�Š�‰ŒˆØ�EŠE�CˆE‰LŒLˆØˆ�Š‰Œ�‰Ø	�Š‰ŒˆØ	�Šˆe�sˆÑÔÐàTˆØ×Ò˜˜AŸGšG™IœIÑ&Ô&Ð&Ð&Ð&r   c                óL   — t          j        d¦  «        }t          |¦  «         dS )z9
        Returns a dictionary which is hashable.
        r9  N)r	   r¶   Úhash)r   r^   s     r   Ú	test_dictzMicroDOMTests.test_dictp  s#   € õ Ô˜SÑ!Ô!ˆÝˆQ‰Œˆˆˆr   c                ó²   — d}d}t          j        |¦  «        }|                      ||¦  «         |                      t          j        |¦  «        |¦  «         d S )Nz&'some "stuff"', <what up?>z/&amp;'some &quot;stuff&quot;', &lt;what up?&gt;)r	   Úescaper5   Úunescape)r   r  ÚcookedÚesc1s       r   Útest_escapingzMicroDOMTests.test_escapingw  sX   € à-ˆØBˆÝŒ˜sÑ#Ô#ˆØ×Ò˜˜vÑ&Ô&Ð&Ø×Ò�Ô*¨4Ñ0Ô0°#Ñ6Ô6Ð6Ð6Ð6r   c                ó  — d}t          j        |¦  «        }|                     ¦   «         }|                      |j        j        d¦  «         |                      |j                             d¦  «        d         j        d¦  «         |                      |j                             d¦  «        d                              dd¦  «        d¦  «         t          j        |¦  «        }|                      |j        j        d¦  «         |                      |j                             d¦  «        d         j        d¦  «         |                      |j                             d¦  «        d                              dd¦  «        d¦  «         d S )Nz¹
        <x xmlns="base">
        <y />
        <y q="1" x:q="2" y:q="3" />
        <y:y xml:space="1">here is    some space </y:y>
        <y:y />
        <x:y />
        </x>
        Úbaser;  r   rS   ÚqÚ1)r	   rA   Útoprettyxmlr5   rY   r3  rz   ÚgetAttributeNS)r   r7   rG   r‡   rˆ   s        r   Útest_namespaceszMicroDOMTests.test_namespaces  sv  € ðˆõ Ô  Ñ#Ô#ˆà�]Š]‰_Œ_ˆØ×Ò˜Ô*Ô4°fÑ=Ô=Ð=Ø×ÒØÔ×2Ò2°3Ñ7Ô7¸Ô:ÔDÀfñ	
ô 	
ð 	
ð 	×ÒØÔ×2Ò2°3Ñ7Ô7¸Ô:×IÒIÈ&ÐRUÑVÔVØñ	
ô 	
ð 	
õ
 Ô! "Ñ%Ô%ˆØ×Ò˜Ô+Ô5°vÑ>Ô>Ð>Ø×ÒØÔ×3Ò3°CÑ8Ô8¸Ô;ÔEÀvñ	
ô 	
ð 	
ð 	×ÒØÔ×3Ò3°CÑ8Ô8¸Ô;×JÒJÈ6ÐSVÑWÔWØñ	
ô 	
ð 	
ð 	
ð 	
r   c                ó‚   — d}t          j        |¦  «                             ¦   «         }|                      ||¦  «         dS )zW
        Test that C{toxml} can support xml structures that remove namespaces.
        z`<?xml version="1.0"?><html xmlns="http://www.w3.org/TR/REC-html40"><body xmlns=""></body></html>N)r	   rA   rC   r5   )r   rÎ   r‡   s      r   Útest_namespaceDeletez"MicroDOMTests.test_namespaceDeleteŸ  sF   € ð
,ð 	õ Ô! "Ñ%Ô%×+Ò+Ñ-Ô-ˆØ×Ò˜˜RÑ Ô Ð Ð Ð r   c                óº   — t          j        d¦  «        }t          j        dd¬¦  «        }|g|_        |                      |                     ¦   «         d¦  «         dS )z¢
        Check that unspecified namespace is a thing separate from undefined
        namespace. This test added after discovering some weirdness in Lore.
        Úolr$  zhttp://www.w3.org/1999/xhtml©r3  z9<div xmlns="http://www.w3.org/1999/xhtml"><ol></ol></div>N)r	   r¶   r�   r5   rC   )r   rÐ   rÕ   s      r   Útest_namespaceInheritancez'MicroDOMTests.test_namespaceInheritanceª  sd   € õ Ô  Ñ&Ô&ˆÝÔ! %Ð3QÐRÑRÔRˆØ"˜GˆÔØ×ÒØ�LŠL‰NŒNÐWñ	
ô 	
ð 	
ð 	
ð 	
r   c                óÂ  — d}d}t          j        ¦   «         }|                     d|¬¦  «        }|                     |di¦  «         |                     d|¬¦  «        }|                     d|¬¦  «        }|                     |¦  «         |                     |¦  «         |                     |¦  «         d}|                     ¦   «         }|                      ||¦  «         d	S )
zü
        XML elements with a prefixed name as per upper level tag definition
        have a start-tag of C{"<prefix:tag>"} and an end-tag of
        C{"</prefix:tag>"}.

        Refer to U{http://www.w3.org/TR/xml-names/#ns-using} for details.
        úhttp://example.com/outerúhttp://example.com/innerrß   rR  ÚinnerÚtagrÐ   zœ<?xml version="1.0"?><root xmlns="http://example.com/outer" xmlns:inner="http://example.com/inner"><inner:tag><inner:child></inner:child></inner:tag></root>N)r	   ÚDocumentÚcreateElementÚaddPrefixesrÊ   rC   r5   )	r   ÚouterNamespaceÚinnerNamespaceÚdocumentrß   rX  rÐ   ÚxmlOkÚxmlOuts	            r   Útest_prefixedTagszMicroDOMTests.test_prefixedTags·  sö   € ð 4ˆØ3ˆåÔ$Ñ&Ô&ˆð ×%Ò% f¸Ð%ÑGÔGˆð 	×Ò˜.¨'Ð2Ñ3Ô3Ð3ð ×$Ò$ U°nÐ$ÑEÔEˆð ×&Ò& w¸.Ð&ÑIÔIˆà�Š˜ÑÔÐØ×Ò˜ÑÔÐØ×Ò˜TÑ"Ô"Ð"ðð 	ð —’Ñ!Ô!ˆØ×Ò˜ Ñ'Ô'Ð'Ð'Ð'r   c                óÂ  — d}d}t          j        ¦   «         }|                     d|¬¦  «        }|                     |¦  «         |                     |di¦  «         |                     d|¬¦  «        }|                     |¦  «         |                     d|¬¦  «        }|                     |¦  «         d}|                     ¦   «         }|                      ||¦  «         d	S )
a^  
        Children of prefixed tags respect the default namespace at the point
        where they are rendered.  Specifically, they are not influenced by the
        prefix of their parent as that prefix has no bearing on them.

        See U{http://www.w3.org/TR/xml-names/#scoping} for details.

        To further clarify the matter, the following::

            <root xmlns="http://example.com/ns/test">
                <mytag xmlns="http://example.com/ns/mytags">
                    <mysubtag xmlns="http://example.com/ns/mytags">
                        <element xmlns="http://example.com/ns/test"></element>
                    </mysubtag>
                </mytag>
            </root>

        Should become this after all the namespace declarations have been
        I{moved up}::

            <root xmlns="http://example.com/ns/test"
                  xmlns:mytags="http://example.com/ns/mytags">
                <mytags:mytag>
                    <mytags:mysubtag>
                        <element></element>
                    </mytags:mysubtag>
                </mytags:mytag>
            </root>
        rU  rV  rß   rR  rW  ÚmytagÚmysubtagzš<?xml version="1.0"?><root xmlns="http://example.com/outer" xmlns:inner="http://example.com/inner"><inner:mytag><mysubtag></mysubtag></inner:mytag></root>N)r	   rY  rZ  rÊ   r[  rC   r5   )	r   r\  r]  r^  rß   rc  rd  r_  r`  s	            r   Útest_prefixPropagationz$MicroDOMTests.test_prefixPropagationâ  sô   € ð< 4ˆØ3ˆåÔ$Ñ&Ô&ˆà×%Ò% f¸Ð%ÑGÔGˆØ×Ò˜TÑ"Ô"Ð"ð 	×Ò˜.¨'Ð2Ñ3Ô3Ð3Ø×&Ò& w¸.Ð&ÑIÔIˆØ×Ò˜ÑÔÐð ×)Ò)¨*ÀÐ)ÑOÔOˆØ×Ò˜(Ñ#Ô#Ð#ðð 	ð —’Ñ!Ô!ˆØ×Ò˜ Ñ'Ô'Ð'Ð'Ð'r   c                óî   — t          t          ¦  «         |                      | j        g¦  «        }|                      dt          |¦  «        ¦  «         |                      d|d         d         ¦  «         dS )z?
        An import will raise the deprecation warning.
        rS   z6twisted.web.microdom was deprecated at Twisted 23.10.0r   ÚmessageN)r   r	   ÚflushWarningsÚtest_deprecationr5   r6   )r   Úwarningss     r   ri  zMicroDOMTests.test_deprecation  sx   € õ 	�xÑÔÐØ×%Ò% tÔ'<Ð&=Ñ>Ô>ˆØ×Ò˜�C ™MœMÑ*Ô*Ð*Ø×ÒØDØ�QŒK˜	Ô"ñ	
ô 	
ð 	
ð 	
ð 	
r   Nr+   )6r,   r-   r.   rI   rK   rO   rQ   r_   rd   rg   rk   ro   rs   rv   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	  r  r  r&  r.  r5  r7  r=  r@  rF  rM  rO  rS  ra  re  ri  r   r   r   r;   r;   ,   sQ  € € € € € ð
ð 
ð 
ð 
ð 
Rð 
Rð 
Rð 
RðLð Lð Lð LðRð Rð Rð Rð/ð /ð /ð /ð$

ð 

ð 

ð 

ð	
ð 	
ð 	
ð 	
ð-ð -ð -ð -ðDð Dð Dð DðXð Xð Xð Xð$ð $ð $ð $ð4
ð 
ð 
ð 
ð"
ð 
ð 
ð 
ð$Wð Wð Wð Wð03ð 3ð 3ð 3ð4ð 4ð 4ð 4ðPð Pð Pð Pð
7ð 
7ð 
7ð 
7ð0ð 0ð 0ð 0ðEð Eð Eð EðRð Rð Rð Rð	1ð 	1ð 	1ð 	1ð:ð :ð :ð :ð<ð <ð <ð <ð-ð -ð -ð -ð<	Pð 	Pð 	Pð 	Pð
ð 
ð 
ð 
ð<Mð Mð Mð Mð ð ð €Gð5ð 5ð 5ð 5ðBð Bð Bð BðKð Kð Kð Kð.Vð Vð Vð VðPð Pð Pð PðVð Vð Vð Vð+ð +ð +ð +ð+ð +ð +ð +ð+ð +ð +ð +ð"+
ð +
ð +
ð +
ðZ?ð ?ð ?ð ?ð:ð :ð :ð :ð7ð 7ð 7ð 7ð 
'ð 
'ð 
'ð 
'ðð ð ð ð7ð 7ð 7ð 7ð
ð 
ð 
ð 
ð@	!ð 	!ð 	!ð 	!ð
ð 
ð 
ð 
ð)(ð )(ð )(ð )(ðV9(ð 9(ð 9(ð 9(ðv

ð 

ð 

ð 

ð 

ð 

r   r;   c                  óF   — e Zd ZdZ	 ddd
„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dS )ÚBrokenHTMLTestsaC  
    Tests for when microdom encounters very bad HTML and C{beExtremelyLenient}
    is enabled. These tests are inspired by some HTML generated in by a mailer,
    which breaks up very long lines by splitting them with '!\n '.
    The expected behaviour is loosely modelled on the way Firefox treats very
    bad HTML.
    rS   Úinputr!   r  r>   Úintr   r   c                óŒ   — t          j        ||¬¦  «        }|                      |j                             ¦   «         |¦  «         dS )z‰
        Check that C{input}, when parsed, produces a DOM where the XML
        of the document element is equal to C{expected}.
        r=   Nrý   )r   rm  r  r>   Úoutputs        r   ÚcheckParsedzBrokenHTMLTests.checkParsed3  sE   € õ Ô% eÐ@RÐSÑSÔSˆØ×Ò˜Ô/×5Ò5Ñ7Ô7¸ÑBÔBÐBÐBÐBr   c                ó:   — d}d}|                       ||¦  «         dS )z˜
        Check that microdom does its best to handle broken attribute names.
        The important thing is that it doesn't raise an exception.
        z6<body><h1><div al!
 ign="center">Foo</div></h1></body>z;<body><h1><div al="True" ign="center">Foo</div></h1></body>N©rq  ©r   rm  r  s      r   Útest_brokenAttributeNamez(BrokenHTMLTests.test_brokenAttributeName=  s+   € ð
 JˆØSˆØ×Ò˜ Ñ)Ô)Ð)Ð)Ð)r   c                ó:   — d}d}|                       ||¦  «         dS )zJ
        Check that microdom encompasses broken attribute values.
        z6<body><h1><div align="cen!
 ter">Foo</div></h1></body>Nrs  rt  s      r   Útest_brokenAttributeValuez)BrokenHTMLTests.test_brokenAttributeValueF  s+   € ð JˆØLˆØ×Ò˜ Ñ)Ô)Ð)Ð)Ð)r   c                ó:   — d}d}|                       ||¦  «         dS )z•
        Check that microdom does its best to handle broken opening tags.
        The important thing is that it doesn't raise an exception.
        z2<body><h1><sp!
 an>Hello World!</span></h1></body>z5<body><h1><sp an="True">Hello World!</sp></h1></body>Nrs  rt  s      r   Útest_brokenOpeningTagz%BrokenHTMLTests.test_brokenOpeningTagN  s+   € ð
 FˆØJˆØ×Ò˜ Ñ)Ô)Ð)Ð)Ð)r   c                ó^   — |                       dd¦  «         |                       dd¦  «         dS )z™
        Check that microdom does its best to handle broken self-closing tags
        The important thing is that it doesn't raise an exception.
        z<body><span /!
></body>z<body><span></span></body>z
<span!
 />z<span></span>Nrs  r   s    r   Útest_brokenSelfClosingTagz)BrokenHTMLTests.test_brokenSelfClosingTagW  s8   € ð
 	×ÒÐ3Ð5QÑRÔRÐRØ×Ò˜¨Ñ8Ô8Ð8Ð8Ð8r   c                óÎ   — d}d}|                       ||¦  «         d}|                       ||¦  «         d}|                       ||¦  «         d}d}|                       ||¦  «         dS )z•
        Check that microdom does its best to handle broken closing tags.
        The important thing is that it doesn't raise an exception.
        z1<body><h1><span>Hello World!</sp!
an></h1></body>z/<body><h1><span>Hello World!</span></h1></body>z1<body><h1><span>Hello World!</!
span></h1></body>z1<body><h1><span>Hello World!</span!
></h1></body>z1<body><h1><span>Hello World!<!
/span></h1></body>z6<body><h1><span>Hello World!<!></!></span></h1></body>Nrs  rt  s      r   Útest_brokenClosingTagz%BrokenHTMLTests.test_brokenClosingTag_  s�   € ð
 EˆØDˆØ×Ò˜ Ñ)Ô)Ð)ØDˆØ×Ò˜ Ñ)Ô)Ð)ØDˆØ×Ò˜ Ñ)Ô)Ð)ØDˆØKˆØ×Ò˜ Ñ)Ô)Ð)Ð)Ð)r   N)rS   )rm  r!   r  r!   r>   rn  r   r   r+   )
r,   r-   r.   Ú__doc__rq  ru  rw  ry  r{  r}  r   r   r   rl  rl  *  s§   € € € € € ðð ð DEðCð Cð Cð Cð Cð*ð *ð *ð *ð*ð *ð *ð *ð*ð *ð *ð *ð9ð 9ð 9ð 9ð*ð *ð *ð *ð *ð *r   rl  c                  ó"   — e Zd ZdZdd„Zdd„ZdS )Ú	NodeTestsz
    Tests for L{Node}.
    r   r   c                óF  — t          j        t          ¦   «         ¦  «        }|                      |                     |¦  «        ¦  «         t          j        t          ¦   «         ¦  «        }|                      |                     |¦  «        ¦  «         |                     t          j        t          ¦   «         ¦  «        ¦  «         |                      |                     |¦  «        ¦  «         |                     t          j        t          ¦   «         ¦  «        ¦  «         |                      |                     |¦  «        ¦  «         |                     ¦   «                              t          j        t          ¦   «         ¦  «        ¦  «         |                      |                     |¦  «        ¦  «         |                     ¦   «                              t          j        t          ¦   «         ¦  «        ¦  «         |                      |                     |¦  «        ¦  «         dS )zw
        L{Node.isEqualToNode} returns C{True} if and only if passed a L{Node}
        with the same children.
        N)r	   ÚNodeÚobjectr…   r·   rÊ   rå   rB   )r   rÀ   Úanothers      r   Útest_isNodeEqualTozNodeTests.test_isNodeEqualTou  s˜  € õ Œ}�V™XœXÑ&Ô&ˆØ�Š˜×*Ò*¨4Ñ0Ô0Ñ1Ô1Ð1Ý”-¥¡¤Ñ)Ô)ˆà�Š˜×*Ò*¨7Ñ3Ô3Ñ4Ô4Ð4Ø×Ò�œ¥v¡x¤xÑ0Ô0Ñ1Ô1Ð1à×Ò˜×+Ò+¨GÑ4Ô4Ñ5Ô5Ð5Ø×Ò�HœM­&©(¬(Ñ3Ô3Ñ4Ô4Ð4ð 	�Š˜×*Ò*¨7Ñ3Ô3Ñ4Ô4Ð4ð 	�ŠÑÔ×%Ò%¥h¤mµF±H´HÑ&=Ô&=Ñ>Ô>Ð>Ø×Ò˜×+Ò+¨GÑ4Ô4Ñ5Ô5Ð5ð 	×ÒÑÔ×(Ò(­¬µv±x´xÑ)@Ô)@ÑAÔAÐAØ�Š˜×*Ò*¨7Ñ3Ô3Ñ4Ô4Ð4Ð4Ð4r   c                óÂ  — t          j        ¦   «         }t          j        ¦   «         }|                     |¦  «         |                      t          |j        d¦  «         |                      t          |j        |d¦  «         |                      t          |j        d|¦  «         |                      t          |j        dd¦  «         |                     |¦  «         |                      t          |j        d¦  «         |                      t          |j        |d¦  «         |                      t          |j        d|¦  «         |                      t          |j        dd¦  «         dS )zO
        Children of L{Node} instances must also be L{Node} instances.
        N)r	   r‚  rÊ   rm   Ú	TypeErrorrË   rÌ   rÍ   )r   rÀ   rÐ   s      r   Útest_validChildInstancez!NodeTests.test_validChildInstance�  s,  € õ Œ}‰ŒˆÝ”‘”ˆà×Ò˜ÑÔÐØ×Ò�) TÔ%5°tÑ<Ô<Ð<à×Ò�) TÔ%6¸¸tÑDÔDÐDØ×Ò�) TÔ%6¸¸eÑDÔDÐDØ×Ò�) TÔ%6¸¸dÑCÔCÐCà×Ò˜ÑÔÐØ×Ò�) TÔ%5°tÑ<Ô<Ð<à×Ò�) TÔ%6¸¸tÑDÔDÐDØ×Ò�) TÔ%6¸¸eÑDÔDÐDØ×Ò�) TÔ%6¸¸dÑCÔCÐCÐCÐCr   Nr+   )r,   r-   r.   r~  r…  rˆ  r   r   r   r€  r€  p  sL   € € € € € ðð ð5ð 5ð 5ð 5ð6Dð Dð Dð Dð Dð Dr   r€  c                  ó&   — e Zd ZdZdZdd„Zdd„ZdS )	ÚDocumentTestsz 
    Tests for L{Document}.
    rã   r   r   c                óî  — t          j        ¦   «         }|                      |                     |¦  «        ¦  «         t          j        ¦   «         }|                      |                     |¦  «        ¦  «         | j        |_        |                      |                     |¦  «        ¦  «         | j        |_        |                      |                     |¦  «        ¦  «         |                     t          j        t          ¦   «         ¦  «        ¦  «         |                      |                     |¦  «        ¦  «         |                     t          j        t          ¦   «         ¦  «        ¦  «         |                      |                     |¦  «        ¦  «         |j	                             t          j        t          ¦   «         ¦  «        ¦  «         |                      |                     |¦  «        ¦  «         dS )z˜
        L{Document.isEqualToNode} returns C{True} if and only if passed a
        L{Document} with the same C{doctype} and C{documentElement}.
        N)
r	   rY  r…   r·   rä   rå   rÊ   r‚  rƒ  rY   )r   r^  r„  s      r   Útest_isEqualToNodez DocumentTests.test_isEqualToNode­  s�  € õ Ô$Ñ&Ô&ˆØ�Š˜×.Ò.¨xÑ8Ô8Ñ9Ô9Ð9õ Ô#Ñ%Ô%ˆØ�Š˜×.Ò.¨wÑ7Ô7Ñ8Ô8Ð8ð  œ<ˆÔØ×Ò˜×/Ò/°Ñ8Ô8Ñ9Ô9Ð9àœ,ˆŒØ�Š˜×.Ò.¨wÑ7Ô7Ñ8Ô8Ð8ð 	×Ò�Xœ]­6©8¬8Ñ4Ô4Ñ5Ô5Ð5Ø×Ò˜×/Ò/°Ñ8Ô8Ñ9Ô9Ð9à×Ò�HœM­&©(¬(Ñ3Ô3Ñ4Ô4Ð4Ø�Š˜×.Ò.¨wÑ7Ô7Ñ8Ô8Ð8ð 	Ô ×,Ò,­X¬]½6¹8¼8Ñ-DÔ-DÑEÔEÐEØ×Ò˜×/Ò/°Ñ8Ô8Ñ9Ô9Ð9Ð9Ð9r   c                óä   — t          j        ¦   «         }t          j        ¦   «         }t          j        ¦   «         }|                     |¦  «         |                      t
          |j        |¦  «         dS )zk
        L{Document.appendChild} raises L{ValueError} if the document already
        has a child.
        N)r	   rY  r‚  rÊ   rm   rÔ   )r   r^  rÐ   r„  s       r   Útest_childRestrictionz#DocumentTests.test_childRestrictionÌ  s]   € õ
 Ô$Ñ&Ô&ˆÝ”‘”ˆÝ”-‘/”/ˆØ×Ò˜UÑ#Ô#Ð#Ø×Ò�* hÔ&:¸GÑDÔDÐDÐDÐDr   Nr+   )r,   r-   r.   r~  rä   rŒ  rŽ  r   r   r   rŠ  rŠ  ¦  sT   € € € € € ðð ð F€Gð:ð :ð :ð :ð>	Eð 	Eð 	Eð 	Eð 	Eð 	Er   rŠ  c                  ó   — e Zd ZdZdd„ZdS )ÚEntityReferenceTestsz'
    Tests for L{EntityReference}.
    r   r   c                ó6  — |                       t          j        d¦  «                             t          j        d¦  «        ¦  «        ¦  «         |                      t          j        d¦  «                             t          j        d¦  «        ¦  «        ¦  «         dS )zŒ
        L{EntityReference.isEqualToNode} returns C{True} if and only if passed
        a L{EntityReference} with the same C{eref}.
        ÚquotÚaposN)r…   r	   r­   r·   rå   r   s    r   rŒ  z'EntityReferenceTests.test_isEqualToNodeÝ  s–   € ð
 	�ŠÝÔ$ VÑ,Ô,×:Ò:ÝÔ(¨Ñ0Ô0ñô ñ	
ô 	
ð 	
ð
 	×ÒÝÔ$ VÑ,Ô,×:Ò:ÝÔ(¨Ñ0Ô0ñô ñ	
ô 	
ð 	
ð 	
ð 	
r   Nr+   ©r,   r-   r.   r~  rŒ  r   r   r   r�  r�  Ø  s2   € € € € € ðð ð
ð 
ð 
ð 
ð 
ð 
r   r�  c                  ó   — e Zd ZdZdd„ZdS )ÚCharacterDataTestsz%
    Tests for L{CharacterData}.
    r   r   c                ó6  — |                       t          j        d¦  «                             t          j        d¦  «        ¦  «        ¦  «         |                      t          j        d¦  «                             t          j        d¦  «        ¦  «        ¦  «         dS )z†
        L{CharacterData.isEqualToNode} returns C{True} if and only if passed a
        L{CharacterData} with the same value.
        r¼   rš   N)r…   r	   ÚCharacterDatar·   rå   r   s    r   rŒ  z%CharacterDataTests.test_isEqualToNodeó  sŒ   € ð
 	�ŠÝÔ" 5Ñ)Ô)×7Ò7½Ô8NÈuÑ8UÔ8UÑVÔVñ	
ô 	
ð 	
ð 	×ÒÝÔ" 5Ñ)Ô)×7Ò7½Ô8NÈuÑ8UÔ8UÑVÔVñ	
ô 	
ð 	
ð 	
ð 	
r   Nr+   r”  r   r   r   r–  r–  î  ó2   € € € € € ðð ð

ð 

ð 

ð 

ð 

ð 

r   r–  c                  ó   — e Zd ZdZdd„ZdS )ÚCommentTestsz
    Tests for L{Comment}.
    r   r   c                ó6  — |                       t          j        d¦  «                             t          j        d¦  «        ¦  «        ¦  «         |                      t          j        d¦  «                             t          j        d¦  «        ¦  «        ¦  «         dS )zz
        L{Comment.isEqualToNode} returns C{True} if and only if passed a
        L{Comment} with the same value.
        r¼   rš   N)r…   r	   rŸ   r·   rå   r   s    r   rŒ  zCommentTests.test_isEqualToNode  sy   € ð
 	�Š�Ô(¨Ñ/Ô/×=Ò=½hÔ>NÈuÑ>UÔ>UÑVÔVÑWÔWÐWØ×Ò�Ô)¨%Ñ0Ô0×>Ò>½xÔ?OÐPUÑ?VÔ?VÑWÔWÑXÔXÐXÐXÐXr   Nr+   r”  r   r   r   r›  r›     s8   € € € € € ðð ðYð Yð Yð Yð Yð Yr   r›  c                  ó   — e Zd ZdZdd„ZdS )Ú	TextTestsz
    Tests for L{Text}.
    r   r   c                óæ  — |                       t          j        dd¬¦  «                             t          j        dd¬¦  «        ¦  «        ¦  «         |                      t          j        dd¬¦  «                             t          j        dd¬¦  «        ¦  «        ¦  «         |                      t          j        dd¬¦  «                             t          j        dd¬¦  «        ¦  «        ¦  «         dS )z
        L{Text.isEqualToNode} returns C{True} if and only if passed a L{Text}
        which represents the same data.
        r¼   Tr  Frš   N)r…   r	   r§   r·   rå   r   s    r   rŒ  zTextTests.test_isEqualToNode  sì   € ð
 	�ŠÝŒM˜% TÐ*Ñ*Ô*×8Ò8½¼ÀuÐRVÐ9WÑ9WÔ9WÑXÔXñ	
ô 	
ð 	
ð 	×ÒÝŒM˜% TÐ*Ñ*Ô*×8Ò8Ý”˜e¨Ð/Ñ/Ô/ñô ñ	
ô 	
ð 	
ð
 	×ÒÝŒM˜% TÐ*Ñ*Ô*×8Ò8½¼ÀuÐRVÐ9WÑ9WÔ9WÑXÔXñ	
ô 	
ð 	
ð 	
ð 	
r   Nr+   r”  r   r   r   rž  rž    s2   € € € € € ðð ð
ð 
ð 
ð 
ð 
ð 
r   rž  c                  ó   — e Zd ZdZdd„ZdS )ÚCDATASectionTestsz$
    Tests for L{CDATASection}.
    r   r   c                ó6  — |                       t          j        d¦  «                             t          j        d¦  «        ¦  «        ¦  «         |                      t          j        d¦  «                             t          j        d¦  «        ¦  «        ¦  «         dS )z�
        L{CDATASection.isEqualToNode} returns C{True} if and only if passed a
        L{CDATASection} which represents the same data.
        r¼   rš   N)r…   r	   r±   r·   rå   r   s    r   rŒ  z$CDATASectionTests.test_isEqualToNode*  sŒ   € ð
 	�ŠÝÔ! %Ñ(Ô(×6Ò6µxÔ7LÈUÑ7SÔ7SÑTÔTñ	
ô 	
ð 	
ð 	×ÒÝÔ! %Ñ(Ô(×6Ò6µxÔ7LÈUÑ7SÔ7SÑTÔTñ	
ô 	
ð 	
ð 	
ð 	
r   Nr+   r”  r   r   r   r¡  r¡  %  r™  r   r¡  c                  ó   — e Zd ZdZdd„ZdS )ÚElementTestsz
    Tests for L{Element}.
    r   r   c           
     óÔ  — |                       t          j        dddit          ¦   «         d¬¦  «                             t          j        dddit          ¦   «         d¬¦  «        ¦  «        ¦  «         |                      t          j        dddit          ¦   «         d¬¦  «                             t          j        dddit          ¦   «         d¬¦  «        ¦  «        ¦  «         |                      t          j        dddit          ¦   «         d¬¦  «                             t          j        dddit          ¦   «         d¬¦  «        ¦  «        ¦  «         t          j        dddit          ¦   «         d¬¦  «        }t          j        dddit          ¦   «         d¬¦  «        }|                     t          j        t          ¦   «         ¦  «        ¦  «         |                      |                     |¦  «        ¦  «         |                      t          j        dddit          ¦   «         d¬¦  «                             t          j        dddit          ¦   «         d¬¦  «        ¦  «        ¦  «         dS )	z¸
        L{Element.isEqualToNode} returns C{True} if and only if passed a
        L{Element} with the same C{nodeName}, C{namespace}, C{childNodes}, and
        C{attributes}.
        r¼   rT   rŽ   rš   rR  rÄ   r¢   N)r…   r	   r¶   rƒ  r·   rå   rÊ   r‚  )r   ÚoneÚtwos      r   rŒ  zElementTests.test_isEqualToNode<  sH  € ð 	�ŠÝÔØ˜˜S�z¥6¡8¤8°uðñ ô çŠmÝÔ  ¨¨c¨
µF±H´HÈÐNÑNÔNñô ñ	
ô 	
ð 	
ð 	×ÒÝÔØ˜˜S�z¥6¡8¤8°uðñ ô çŠmÝÔ  ¨¨c¨
µF±H´HÈÐNÑNÔNñô ñ	
ô 	
ð 	
ð 	×ÒÝÔØ˜˜S�z¥6¡8¤8°uðñ ô çŠmÝÔ  ¨¨c¨
µF±H´HÈÐNÑNÔNñô ñ	
ô 	
ð 	
õ Ô˜u s¨C jµ&±(´(ÀeÐLÑLÔLˆÝÔ˜u s¨C jµ&±(´(ÀeÐLÑLÔLˆØ�Š�œ¥f¡h¤hÑ/Ô/Ñ0Ô0Ð0Ø×Ò˜×*Ò*¨3Ñ/Ô/Ñ0Ô0Ð0ð 	×ÒÝÔØ˜˜S�z¥6¡8¤8°uðñ ô çŠmÝÔ  ¨¨c¨
µF±H´HÈÐNÑNÔNñô ñ	
ô 	
ð 	
ð 	
ð 	
r   Nr+   r”  r   r   r   r¤  r¤  7  s2   € € € € € ðð ð-
ð -
ð -
ð -
ð -
ð -
r   r¤  N)r~  Ú
__future__r   Ú	importlibr   Úior   Útyping_extensionsr   Útwisted.trial.unittestr   Útwisted.webr   r	   r
   Ú	XMLParserr   r0   r;   rl  r€  rŠ  r�  r–  r›  rž  r¡  r¤  r   r   r   ú<module>r¯     s¹  ðð
ð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à %Ð %Ð %Ð %Ð %Ð %à +Ð +Ð +Ð +Ð +Ð +Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1ð+ð +ð +ð +ð +ˆCŒMñ +ô +ð +ð 4ð 4ð 4ð 4ð 4ˆxñ 4ô 4ð 4ð{
ð {
ð {
ð {
ð {
�Hñ {
ô {
ð {
ð|C*ð C*ð C*ð C*ð C*�hñ C*ô C*ð C*ðL3Dð 3Dð 3Dð 3Dð 3D�ñ 3Dô 3Dð 3Dðl/Eð /Eð /Eð /Eð /E�Hñ /Eô /Eð /Eðd
ð 
ð 
ð 
ð 
˜8ñ 
ô 
ð 
ð,
ð 
ð 
ð 
ð 
˜ñ 
ô 
ð 
ð$Yð Yð Yð Yð Y�8ñ Yô Yð Yð
ð 
ð 
ð 
ð 
�ñ 
ô 
ð 
ð.
ð 
ð 
ð 
ð 
˜ñ 
ô 
ð 
ð$2
ð 2
ð 2
ð 2
ð 2
�8ñ 2
ô 2
ð 2
ð 2
ð 2
r   