§
    ¤”j¥"  ã                   óÔ   — d Z ddlZddlm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)ÚVOID_ELEMENTS)Ú_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    ú_/var/www/finuniver-perm.ru/html/portfolio/venv/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>8   s'   è è € ÐQÐQ È5ÐQ�uÐQÐQÐQÐQÐQÐQr&   Ú )ÚjoinÚsortedr!   ÚsplitÚBOOLEAN_ATTRIBUTESÚappend)Ú
attributesÚ
normalizedÚnamer-   s       r$   Únormalize_attributesr8   1   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*   )r7   r1   r5   Úchildren)Úselfr7   r5   s      r$   Ú__init__zElement.__init__G   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Úpopr4   ©r=   Úelements     r$   r4   zElement.appendL   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@   )rB   rC   ÚrstriprE   )r<   Úrstrip_last_elements    €r$   rK   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<   Ú	enumeraterB   rC   ÚstripÚhasattrrL   )r=   ÚiÚchildrK   s      @r$   rL   zElement.finalize\   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 )Nr7   F)rO   r7   r5   r<   rF   s     r$   Ú__eq__zElement.__eq__l   sL   € Ý�w Ñ'Ô'ð 	¨4¬9¸¼Ò+DÐ+DØ�5ØŒ?˜gÔ0Ò0Ð0Ø�5ØŒ} Ô 0Ò0Ð0r&   c                 ó<   — t          | j        g| j        ¢R ¦  «        S r*   )Úhashr7   r5   ©r=   s    r$   Ú__hash__zElement.__hash__s   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)rB   rC   ÚRootElementr<   r[   Ú_countÚlen)r=   rG   r[   rP   Úelem_child_idxrQ   Ú
elem_childs          r$   r]   zElement._countv   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 )NFrZ   r   ©r]   rF   s     r$   Ú__contains__zElement.__contains__�   s   € Ø�{Š{˜7¨%ˆ{Ñ0Ô0°1Ò4Ð4r&   c                 ó0   — |                       |d¬¦  «        S )NTrZ   rb   rF   s     r$   r[   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+   ©rB   rC   Ú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>ú>)r7   r5   r<   r0   )r=   Úoutputrf   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*   )rC   rV   s    r$   Ú__repr__zElement.__repr__º   s   € Ý�4‰yŒyÐr&   N)T)Ú__name__Ú
__module__Ú__qualname__r>   r4   rL   rS   rW   r]   rc   r[   rg   rs   ru   r+   r&   r$   r:   r:   F   s¿   € € € € € ðð ð ð
*ð *ð *ð !ð !ð !ð 1ð 1ð 1ð3ð 3ð 3ð%ð %ð %ð %ðN5ð 5ð 5ð0ð 0ð 0ð"ð "ð "ðð ð ð(ð ð ð ð r&   r:   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+   rk   rn   s     r$   rp   z'RootElement.__str__.<locals>.<listcomp>Ä   s9   € ÐUÐUÐUÀ!�z¨!­SÑ1Ô1Ð=�TŒ[˜‰^Œ^ˆ^µs¸1±v´vÐUÐUÐUr&   )r0   r<   rV   s    r$   rs   zRootElement.__str__Â   s+   € Ø�wŠwØUÐUÀtÄ}ÐUÑUÔUñ
ô 
ð 	
r&   )rv   rw   rx   r>   rs   Ú__classcell__©r}   s   @r$   r\   r\   ¾   sG   ø€ € € € € ð#ð #ð #ð #ð #ð
ð 
ð 
ð 
ð 
ð 
ð 
r&   r\   c                   ó   — e Zd ZdS )ÚHTMLParseErrorN)rv   rw   rx   r+   r&   r$   rƒ   rƒ   È   s   € € € € € Ø€Dr&   rƒ   c                   óZ   ‡ — e Zd Zˆ fd„Zd„ Zd
d„Zed„ ¦   «         Zd„ Zd„ Z	d„ Z
d	„ Zˆ xZS )ÚParserc                 óŠ   •— t          ¦   «                              ¦   «          t          ¦   «         | _        g | _        i | _        d S r*   )r{   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‹   rO   r�   Úoffset)r=   ÚpositionrG   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‡   rV   s    r$   ÚcurrentzParser.currentß   s!   € àŒ>ð 	Ø”> "Ô%Ð%à”9Ðr&   c                 ór   — |                       ||¦  «         |t          vr|                      |¦  «         d S d S r*   )Úhandle_starttagr   Úhandle_endtag)r=   ÚtagÚattrss      r$   Úhandle_startendtagzParser.handle_startendtagæ   sE   € Ø×Ò˜S %Ñ(Ô(Ð(Ø•mÐ#Ð#Ø×Ò˜sÑ#Ô#Ð#Ð#Ð#ð $Ð#r&   c                 óö   — t          |¦  «        }t          ||¦  «        }| j                             |¦  «         |t          vr| j                             |¦  «         |                      ¦   «         | j        |<   d S r*   )r8   r:   r”   r4   r   rˆ   r‹   r‰   )r=   r˜   r™   rG   s       r$   r–   zParser.handle_starttagë   sp   € Ý$ UÑ+Ô+ˆÝ˜#˜uÑ%Ô%ˆØŒ×Ò˜GÑ$Ô$Ð$Ø•mÐ#Ð#ØŒ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’   rE   r7   )r=   r˜   rG   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”   r4   )r=   Údatas     r$   Úhandle_datazParser.handle_dataþ   s   € ØŒ×Ò˜DÑ!Ô!Ð!Ð!Ð!r&   )NN)rv   rw   rx   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.
    rY   r   )	r…   ÚfeedÚcloser‡   rL   r^   r<   rB   rC   )rl   Ú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__rl   Úhtml.parserr   Údjango.utils.htmlr   Údjango.utils.regex_helperr   r!   r3   r%   r8   r:   r\   Ú	Exceptionrƒ   r…   r§   r+   r&   r$   ú<module>r­      sV  ðØ !Ð !à €€€Ø "Ð "Ð "Ð "Ð "Ð "à +Ð +Ð +Ð +Ð +Ð +Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ð
 $Ð# OÑ4Ô4Ð ðð ð Ð ð<-ð -ð -ðð ð ð*uð uð uð uð uñ uô uð uðp
ð 
ð 
ð 
ð 
�'ñ 
ô 
ð 
ð	ð 	ð 	ð 	ð 	�Yñ 	ô 	ð 	ð3"ð 3"ð 3"ð 3"ð 3"ˆZñ 3"ô 3"ð 3"ðlð ð ð ð r&   