§
    Ï“Ùhù#  ã                   óÈ   — d Z ddlZddlmZ ddlmZ  ed¦  «        Zh d£Zd„ Zd„ Z	 G d	„ d
¦  «        Z
 G d„ de
¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zd„ ZdS )zCompare two HTML documents.é    N)Ú
HTMLParser)Ú_lazy_re_compilez[\t\n\f\r ]+>   údefer ÚloopÚopenÚasyncÚismapÚmutedÚhiddenÚcheckedÚdefaultÚautoplayÚcontrolsÚdisabledÚmultipleÚnomoduleÚreadonlyÚrequiredÚreversedÚselectedÚ	autofocusÚ	itemscopeÚ	truespeedÚ
novalidateÚplaysinlineÚformnovalidateÚallowfullscreenc                 ó8   — t                                d| ¦  «        S )Nú )ÚASCII_WHITESPACEÚsub)Ústrings    úO/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/django/test/html.pyÚnormalize_whitespacer$   +   s   € Ý×Ò  VÑ,Ô,Ð,ó    c           	      ó  — g }| D ]€\  }}|dk    rF|rDd                      t          d„ t                               |¦  «        D ¦   «         ¦  «        ¦  «        }|t          v r|r||k    rd }n|€d}|                     ||f¦  «         Œ�|S )NÚclassr   c              3   ó   K  — | ]}|¯|V — Œ	d S ©N© )Ú.0Úvalues     r#   ú	<genexpr>z'normalize_attributes.<locals>.<genexpr>6   s'   è è € ÐQÐQ È5ÐQ�uÐQÐQÐQÐQÐQÐQr%   Ú )ÚjoinÚsortedr    ÚsplitÚBOOLEAN_ATTRIBUTESÚappend)Ú
attributesÚ
normalizedÚnamer,   s       r#   Únormalize_attributesr7   /   s´   € Ø€JØ!ð )ð )‰ˆˆeØ�7Š?ˆ?˜uˆ?ð —H’HÝÐQÐQÕ*:×*@Ò*@ÀÑ*GÔ*GÐQÑQÔQÑQÔQñô ˆEð Õ%Ð%Ð%Øð ˜E TšM˜MØ�øØˆ]ØˆEØ×Ò˜4 ˜-Ñ(Ô(Ð(Ð(ØÐr%   c                   óR   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Z	d	„ Z
d
„ Zd„ Zd„ ZdS )ÚElementc                 óJ   — || _         t          |¦  «        | _        g | _        d S r)   )r6   r0   r4   Úchildren)Úselfr6   r4   s      r#   Ú__init__zElement.__init__E   s#   € ØˆŒ	Ý  Ñ,Ô,ˆŒØˆŒˆˆr%   c                 ó
  — t          |t          ¦  «        rpt          |¦  «        }| j        rYt          | j        d         t          ¦  «        r9| j        dxx         |z  cc<   t          | j        d         ¦  «        | j        d<   d S n_| j        rXt          | j        d         t          ¦  «        r8| j        d                              ¦   «         r| j                             ¦   «          |r| j                             |¦  «         d S d S ©Néÿÿÿÿ)Ú
isinstanceÚstrr$   r;   ÚisspaceÚpopr3   ©r<   Úelements     r#   r3   zElement.appendJ   s  € Ý�g�sÑ#Ô#ð 	$Ý*¨7Ñ3Ô3ˆGØŒ}ð ¥¨D¬M¸"Ô,=½sÑ!CÔ!Cð Ø”˜bÐ!Ð!Ô! WÑ,Ð!Ð!Ñ!Ý$8¸¼ÀrÔ9JÑ$KÔ$K�”˜bÑ!Ø�øØŒ]ð 	$õ ˜$œ-¨Ô+­SÑ1Ô1ð $°d´mÀBÔ6G×6OÒ6OÑ6QÔ6Qð $Ø”×!Ò!Ñ#Ô#Ð#Øð 	*ØŒM× Ò  Ñ)Ô)Ð)Ð)Ð)ð	*ð 	*r%   c                 ó  ‡— ˆfd„Š ‰| j         ¦  «         t          | j         ¦  «        D ][\  }}t          |t          ¦  «        r|                     ¦   «         | j         |<   Œ7t          |d¦  «        r|                     ¦   «          Œ\d S )Nc                 óÊ   •— | r_t          | d         t          ¦  «        rD| d                              ¦   «         | d<   | d         s|                      ¦   «           ‰| ¦  «        } | S r?   )rA   rB   ÚrstriprD   )r;   Úrstrip_last_elements    €r#   rJ   z-Element.finalize.<locals>.rstrip_last_element[   sg   ø€ Øð =�J x°¤|µSÑ9Ô9ð =Ø'¨œ|×2Ò2Ñ4Ô4�˜‘Ø ”|ð =Ø—L’L‘N”N�NØ2Ð2°8Ñ<Ô<�HØˆOr%   Úfinalize)r;   Ú	enumeraterA   rB   ÚstripÚhasattrrK   )r<   ÚiÚchildrJ   s      @r#   rK   zElement.finalizeZ   s¤   ø€ ð	ð 	ð 	ð 	ð 	ð 	Ð˜DœMÑ*Ô*Ð*Ý! $¤-Ñ0Ô0ð 	!ð 	!‰HˆAˆuÝ˜%¥Ñ%Ô%ð !Ø#(§;¢;¡=¤=�”˜aÑ Ð Ý˜ 
Ñ+Ô+ð !Ø—’Ñ Ô Ð øð		!ð 	!r%   c                 óŠ   — t          |d¦  «        r| j        |j        k    rdS | j        |j        k    rdS | j        |j        k    S )Nr6   F)rN   r6   r4   r;   rE   s     r#   Ú__eq__zElement.__eq__j   sL   € Ý�w Ñ'Ô'ð 	¨4¬9¸¼Ò+DÐ+DØ�5ØŒ?˜gÔ0Ò0Ð0Ø�5ØŒ} Ô 0Ò0Ð0r%   c                 ó<   — t          | j        g| j        ¢R ¦  «        S r)   )Úhashr6   r4   ©r<   s    r#   Ú__hash__zElement.__hash__q   s   € Ý�T”YÐ1 ¤Ð1Ð1Ñ2Ô2Ð2r%   Tc                 ó4  — t          |t          ¦  «        s| |k    rdS t          |t          ¦  «        r| j        |j        k    rdS d}d}| j        D ]Ç}t          |t          ¦  «        r8t          |t          ¦  «        r"|r||                     |¦  «        z  }ŒG||v r dS ŒO||                     ||¬¦  «        z  }|s|r|c S t          |t          ¦  «        rA|j        r:|j        |         }||k    r%|dz  }|t          |j        ¦  «        k    r|dz  }d}ŒÅd}ŒÈ|S )Né   r   ©Úcount)rA   rB   ÚRootElementr;   rZ   Ú_countÚlen)r<   rF   rZ   rO   Úelem_child_idxrP   Ú
elem_childs          r#   r\   zElement._countt   sa  € Ý˜'¥3Ñ'Ô'ð 	¨D°GªO¨OØ�1Ý�g�{Ñ+Ô+ð 	°´ÀÔAQÒ0QÐ0QØ�1ØˆØˆØ”]ð 	+ð 	+ˆEõ ˜%¥Ñ%Ô%ð +Ý˜g¥sÑ+Ô+ð !Øð !Ø˜UŸ[š[¨Ñ1Ô1Ñ1˜˜Ø  EÐ)Ð)Ø ˜q˜qøð �U—\’\ '°�\Ñ7Ô7Ñ7�Øð  ð Ø�H�H�Hõ
 ˜g¥{Ñ3Ô3ð +¸Ô8Hð +Ø!(Ô!1°.Ô!A�Jà! UÒ*Ð*Ø&¨!Ñ+˜à)­S°Ô1AÑ-BÔ-BÒBÐBØ ™F˜AØ-.˜Nøð *+˜øØˆr%   c                 ó8   — |                       |d¬¦  «        dk    S )NFrY   r   ©r\   rE   s     r#   Ú__contains__zElement.__contains__›   s   € Ø�{Š{˜7¨%ˆ{Ñ0Ô0°1Ò4Ð4r%   c                 ó0   — |                       |d¬¦  «        S )NTrY   ra   rE   s     r#   rZ   zElement.countž   s   € Ø�{Š{˜7¨$ˆ{Ñ/Ô/Ð/r%   c                 ó   — | j         |         S r)   )r;   )r<   Úkeys     r#   Ú__getitem__zElement.__getitem__¡   s   € ØŒ}˜SÔ!Ð!r%   c                 óî   — d| j         z  }| j        D ]\  }}|�|d|›d|›d�z  }Œ|d|z  z  }Œ| j        r:|dz  }|d                     d„ | j        D ¦   «         ¦  «        z  }|d	| j         z  z  }n|d
z  }|S )Nz<%sr   z="ú"z %sz>
r.   c                 ó~   — g | ]:}t          |t          ¦  «        rt          j        |¦  «        nt          |¦  «        ‘Œ;S r*   ©rA   rB   ÚhtmlÚescape©r+   Úcs     r#   ú
<listcomp>z#Element.__str__.<locals>.<listcomp>®   sI   € ð ð ð àõ '1°µCÑ&8Ô&8ÐD•D”K ‘N”N�N½cÀ!¹f¼fðð ð r%   z
</%s>ú>)r6   r4   r;   r/   )r<   Úoutputre   r,   s       r#   Ú__str__zElement.__str__¤   sÂ   € Ø˜œÑ"ˆØœ/ð 	&ð 	&‰JˆC�ØÐ Ø�¨¨¨¨U¨U¨UÐ3Ñ3��à˜% #™+Ñ%��ØŒ=ð 
	Ø�e‰OˆFØ�b—g’gðð à!œ]ðñ ô ñô ñ ˆFð �i $¤)Ñ+Ñ+ˆFˆFà�c‰MˆFØˆr%   c                 ó    — t          | ¦  «        S r)   )rB   rU   s    r#   Ú__repr__zElement.__repr__¸   s   € Ý�4‰yŒyÐr%   N)T)Ú__name__Ú
__module__Ú__qualname__r=   r3   rK   rR   rV   r\   rb   rZ   rf   rr   rt   r*   r%   r#   r9   r9   D   s¿   € € € € € ðð ð ð
*ð *ð *ð !ð !ð !ð 1ð 1ð 1ð3ð 3ð 3ð%ð %ð %ð %ðN5ð 5ð 5ð0ð 0ð 0ð"ð "ð "ðð ð ð(ð ð ð ð r%   r9   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )r[   c                 óL   •— t          ¦   «                              d d¦  «         d S )Nr*   )Úsuperr=   ©r<   Ú	__class__s    €r#   r=   zRootElement.__init__½   s#   ø€ Ý‰Œ×Ò˜˜rÑ"Ô"Ð"Ð"Ð"r%   c                 óJ   — d                      d„ | j        D ¦   «         ¦  «        S )Nr.   c                 ó~   — g | ]:}t          |t          ¦  «        rt          j        |¦  «        nt          |¦  «        ‘Œ;S r*   rj   rm   s     r#   ro   z'RootElement.__str__.<locals>.<listcomp>Â   s9   € ÐUÐUÐUÀ!�z¨!­SÑ1Ô1Ð=�TŒ[˜‰^Œ^ˆ^µs¸1±v´vÐUÐUÐUr%   )r/   r;   rU   s    r#   rr   zRootElement.__str__À   s+   € Ø�wŠwØUÐUÀtÄ}ÐUÑUÔUñ
ô 
ð 	
r%   )ru   rv   rw   r=   rr   Ú__classcell__©r|   s   @r#   r[   r[   ¼   sG   ø€ € € € € ð#ð #ð #ð #ð #ð
ð 
ð 
ð 
ð 
ð 
ð 
r%   r[   c                   ó   — e Zd ZdS )ÚHTMLParseErrorN)ru   rv   rw   r*   r%   r#   r‚   r‚   Æ   s   € € € € € Ø€Dr%   r‚   c                   ób   ‡ — e Zd Zh d£Zˆ fd„Zd„ Zdd„Zed„ ¦   «         Zd„ Z	d„ Z
d	„ Zd
„ Zˆ xZS )ÚParser>   ÚbrÚhrÚcolÚimgÚwbrÚareaÚbaseÚlinkÚmetaÚembedÚframeÚinputÚparamÚtrackÚsourceÚspacerc                 óŠ   •— t          ¦   «                              ¦   «          t          ¦   «         | _        g | _        i | _        d S r)   )rz   r=   r[   ÚrootÚ	open_tagsÚelement_positionsr{   s    €r#   r=   zParser.__init__à   s9   ø€ Ý‰Œ×ÒÑÔÐÝ‘M”MˆŒ	ØˆŒØ!#ˆÔÐÐr%   c                 óF   — t          ||                      ¦   «         ¦  «        ‚r)   )r‚   Úgetpos)r<   Úmsgs     r#   ÚerrorzParser.erroræ   s   € Ý˜S $§+¢+¡-¤-Ñ0Ô0Ð0r%   Nc                 ó–   — |s|r| j         |         }|€|                      ¦   «         }t          |d¦  «        r|j        |j        f}d|z  S )NÚlinenozLine %d, Column %d)r˜   rš   rN   rž   Úoffset)r<   ÚpositionrF   s      r#   Úformat_positionzParser.format_positioné   s\   € Øð 	7˜Gð 	7ØÔ-¨gÔ6ˆHØÐØ—{’{‘}”}ˆHÝ�8˜XÑ&Ô&ð 	8Ø”¨¬Ð7ˆHØ# hÑ.Ð.r%   c                 ó8   — | j         r| j         d         S | j        S r?   )r—   r–   rU   s    r#   ÚcurrentzParser.currentò   s!   € àŒ>ð 	Ø”> "Ô%Ð%à”9Ðr%   c                 ór   — |                       ||¦  «         || j        vr|                      |¦  «         d S d S r)   )Úhandle_starttagÚSELF_CLOSING_TAGSÚhandle_endtag)r<   ÚtagÚattrss      r#   Úhandle_startendtagzParser.handle_startendtagù   sH   € Ø×Ò˜S %Ñ(Ô(Ð(Ø�dÔ,Ð,Ð,Ø×Ò˜sÑ#Ô#Ð#Ð#Ð#ð -Ð,r%   c                 óö   — t          |¦  «        }t          ||¦  «        }| j                             |¦  «         || j        vr| j                             |¦  «         |                      ¦   «         | j        |<   d S r)   )r7   r9   r£   r3   r¦   r—   rš   r˜   )r<   r¨   r©   rF   s       r#   r¥   zParser.handle_starttagþ   ss   € Ý$ UÑ+Ô+ˆÝ˜#˜uÑ%Ô%ˆØŒ×Ò˜GÑ$Ô$Ð$Ø�dÔ,Ð,Ð,ØŒN×!Ò! 'Ñ*Ô*Ð*Ø*.¯+ª+©-¬-ˆÔ˜wÑ'Ð'Ð'r%   c                 ón  — | j         s.|                      d|›d|                      ¦   «         ›d�¦  «         | j                              ¦   «         }|j        |k    r[| j         s.|                      d|›d|                      ¦   «         ›d�¦  «         | j                              ¦   «         }|j        |k    °Yd S d S )NzUnexpected end tag `z` (ú))r—   rœ   r¡   rD   r6   )r<   r¨   rF   s      r#   r§   zParser.handle_endtag  sÌ   € ØŒ~ð 	WØ�JŠJˆJ¸¸¸¸d×>RÒ>RÑ>TÔ>TÐ>TÐ>TÐUÑVÔVÐVØ”.×$Ò$Ñ&Ô&ˆØŒl˜cÒ!Ð!Ø”>ð Ø—
’
�
Ø69°c°c¸4×;OÒ;OÑ;QÔ;QÐ;QÐ;QÐRñô ð ð ”n×(Ò(Ñ*Ô*ˆGð Œl˜cÒ!Ð!Ð!Ð!Ð!Ð!r%   c                 ó:   — | j                              |¦  «         d S r)   )r£   r3   )r<   Údatas     r#   Úhandle_datazParser.handle_data  s   € ØŒ×Ò˜DÑ!Ô!Ð!Ð!Ð!r%   )NN)ru   rv   rw   r¦   r=   rœ   r¡   Úpropertyr£   rª   r¥   r§   r°   r   r€   s   @r#   r„   r„   Ê   sÄ   ø€ € € € € ðð ð Ðð($ð $ð $ð $ð $ð1ð 1ð 1ð/ð /ð /ð /ð ðð ñ „Xðð$ð $ð $ð
8ð 8ð 8ð	+ð 	+ð 	+ð"ð "ð "ð "ð "ð "ð "r%   r„   c                 ó4  — t          ¦   «         }|                     | ¦  «         |                     ¦   «          |j        }|                     ¦   «          t          |j        ¦  «        dk    r-t          |j        d         t          ¦  «        s|j        d         }|S )zü
    Take a string that contains HTML and turn it into a Python object structure
    that can be easily compared against other HTML on semantic equivalence.
    Syntactical differences like which quotation is used on arguments will be
    ignored.
    rX   r   )	r„   ÚfeedÚcloser–   rK   r]   r;   rA   rB   )rk   ÚparserÚdocuments      r#   Ú
parse_htmlr·     s„   € õ ‰XŒX€FØ
‡K‚K�ÑÔÐØ
‡L‚L�N„N€NØŒ{€HØ×ÒÑÔÐå
ˆ8ÔÑÔ Ò"Ð"­:°hÔ6GÈÔ6JÍCÑ+PÔ+PÐ"ØÔ$ QÔ'ˆØ€Or%   )Ú__doc__rk   Úhtml.parserr   Údjango.utils.regex_helperr   r    r2   r$   r7   r9   r[   Ú	Exceptionr‚   r„   r·   r*   r%   r#   ú<module>r¼      sL  ðØ !Ð !Ø €€€Ø "Ð "Ð "Ð "Ð "Ð "à 6Ð 6Ð 6Ð 6Ð 6Ð 6ð
 $Ð# OÑ4Ô4Ð ðð ð Ð ð<-ð -ð -ðð ð ð*uð uð uð uð uñ uô uð uðp
ð 
ð 
ð 
ð 
�'ñ 
ô 
ð 
ð	ð 	ð 	ð 	ð 	�Yñ 	ô 	ð 	ðH"ð H"ð H"ð H"ð H"ˆZñ H"ô H"ð H"ðVð ð ð ð r%   