Ë
    j¦zi7\  ã                   ó’  — d Z dgZddlmZmZmZmZmZmZm	Z	m
Z
mZ ddlmZ ddlmZmZmZmZmZmZ ddlZddlmZmZmZmZmZ ddlmZmZmZ ddl Z dd	l!m"Z" dd
lm#Z#m$Z$m%Z%m&Z& e	rddl'm(Z( ddl)m*Z+  G d„ de«      Z, G d„ de+jZ                  «      Z. G d„ de/«      Z0 G d„ de+jb                  «      Z2 G d„ de2«      Z3 G d„ de2«      Z4y)ÚMITÚHTML5TreeBuilderé    )	ÚAnyÚcastÚDictÚIterableÚOptionalÚSequenceÚTYPE_CHECKINGÚTupleÚUnion)Ú	TypeAlias)Ú_AttributeValueÚ_AttributeValuesÚ	_EncodingÚ
_EncodingsÚ_NamespaceURLÚ
_RawMarkupN)ÚDetectsXMLParsedAsHTMLÚ
PERMISSIVEÚHTMLÚHTML_5ÚHTMLTreeBuilder)ÚNamespacedAttributeÚPageElementÚnonwhitespace_re)Ú
namespaces)ÚCommentÚDoctypeÚNavigableStringÚTag©ÚBeautifulSoup)Úbasec                   óê   — e Zd ZU dZdZeed<   eeee	gZ
ee   ed<   dZeed<   ded<   ee   ed	<   	 	 	 dded	ee   dee   dee   deeeee   ee   ef      f
d„Zdedd
fd„Zdeddfd„Zdedefd„Zy
)r   aj  Use `html5lib <https://github.com/html5lib/html5lib-python>`_ to
    build a tree.

    Note that `HTML5TreeBuilder` does not support some common HTML
    `TreeBuilder` features. Some of these features could theoretically
    be implemented, but at the very least it's quite difficult,
    because html5lib moves the parse tree around as it's being built.

    Specifically:

    * This `TreeBuilder` doesn't use different subclasses of
      `NavigableString` (e.g. `Script`) based on the name of the tag
      in which the string was found.
    * You can't use a `SoupStrainer` to parse only part of a document.
    Úhtml5libÚNAMEÚfeaturesTÚTRACKS_LINE_NUMBERSÚTreeBuilderForHtml5libÚunderlying_builderÚuser_specified_encodingNÚmarkupÚdocument_declared_encodingÚexclude_encodingsÚreturnc              #   óº   K  — || _         |df|dffD ]&  \  }}|sŒ	t        j                  d|› d|› d�d¬«       Œ( t        j                  |d¬«       |d d df–— y ­w)	Nr.   r/   zYou provided a value for z0, but the html5lib tree builder doesn't support ú.é   ©Ú
stacklevelF)r,   ÚwarningsÚwarnr   Úwarn_if_markup_looks_like_xml)Úselfr-   r,   r.   r/   ÚvariableÚnames          úL/home/htdocs/ttos/venv/lib/python3.12/site-packages/bs4/builder/_html5lib.pyÚprepare_markupzHTML5TreeBuilder.prepare_markupW   s…   è ø€ ð (?ˆÔ$ð (Ð)EÐFØÐ 3Ð4ð
ò 	‰NˆH�dò Ü—‘Ø/°¨vÐ5eÐfjÐekÐklÐmØ öð	ô 	×<Ñ<¸VÐPQÕRà�t˜T 5Ð)Ó)ùs   ‚A›A Ac                 ó*  — | j                   �-| j                   j                  �t        j                  dd¬«       t	        j
                  | j                  ¬«      }| j                  €J ‚|| j                  _        t        «       }t        |t        «      s| j                  |d<    |j                  |fi |¤Ž}t        |t        «      rd|_        n6|j                  j                   j"                  d   }|j$                  }||_        d| j                  _        y)z‰Run some incoming markup through some parsing process,
        populating the `BeautifulSoup` object in `HTML5TreeBuilder.soup`.
        Nz‚You provided a value for parse_only, but the html5lib tree builder doesn't support parse_only. The entire document will be parsed.é   r4   )ÚtreeÚoverride_encodingr   )ÚsoupÚ
parse_onlyr6   r7   r&   Ú
HTMLParserÚcreate_treebuilderr+   ÚparserÚdictÚ
isinstanceÚstrr,   ÚparseÚoriginal_encodingÚ	tokenizerÚstreamÚcharEncodingr;   )r9   r-   rF   Úextra_kwargsÚdocrK   s         r<   ÚfeedzHTML5TreeBuilder.feedu   sú   € ð �9‰9Ð  T§Y¡Y×%9Ñ%9Ð%EÜ�M‰Mð UØõô ×$Ñ$¨$×*AÑ*AÔBˆØ×&Ñ&Ð2Ð2Ð2Ø)/ˆ×ÑÔ&Ü“vˆÜ˜&¤#Ô&ð 15×0LÑ0LˆLÐ,Ñ-àˆf�l‰l˜6Ñ2 \Ñ2ˆô �fœcÔ"ð %)ˆCÕ!à &× 0Ñ 0× 7Ñ 7× DÑ DÀQÑ GÐð !2× 6Ñ 6ÐØ$5ˆCÔ!Ø)-ˆ×ÑÕ&ó    ÚnamespaceHTMLElementsc                 óh   — t        || j                  | j                  ¬«      | _        | j                  S )zÈCalled by html5lib to instantiate the kind of class it
        calls a 'TreeBuilder'.

        :param namespaceHTMLElements: Whether or not to namespace HTML elements.

        :meta private:
        )Ústore_line_numbers)r*   rB   rU   r+   )r9   rS   s     r<   rE   z#HTML5TreeBuilder.create_treebuilderš   s0   € ô #9Ø! 4§9¡9À×AXÑAXô#
ˆÔð ×&Ñ&Ð&rR   Úfragmentc                 ó   — d|z  S )zSee `TreeBuilder`.z)<html><head></head><body>%s</body></html>© )r9   rV   s     r<   Útest_fragment_to_documentz*HTML5TreeBuilder.test_fragment_to_document©   s   € à:¸XÑEÐErR   )NNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r'   rI   Ú__annotations__r   r   r   r(   r   r)   Úboolr	   r   r   r   r   r=   rQ   rE   rY   rX   rR   r<   r   r   ;   só   … ñð  €Dˆ#Óà# Z°¸Ð>€Hˆh�s‰mÓ>ð !%Ð˜Ó$à0Ó0Ø% iÑ0Ó0ð
 8<Ø:>Ø26ñ*àð*ð "*¨)Ñ!4ð*ð %-¨YÑ$7ð	*ð
 $ JÑ/ð*ð 
�%˜
 H¨YÑ$7¸À)Ñ9LÈdÐRÑSÑ	Tó*ð<#.˜:ð #.¨$ó #.ðJ'Ø%)ð'à	!ó'ðF°#ð F¸#ô FrR   c            	       óÚ   ‡ — e Zd ZU ded<   eej                     ed<   	 	 ddeded   dedefˆ fd„Z	dd„Z
deeef   d	dfd„Zdeded	d
fd„Zded	dfd„Zdd„Zdd„Zdd„Zdd„Zdd„Zˆ xZS )r*   r#   rB   rF   NrS   rU   Úkwargsc                 óÀ   •— |r|| _         n2t        j                  dt        d¬«       ddlm}  |	 dd|i|¤Ž| _         t        t        | �#  |«       d | _	        || _
        y )NaK  The optionality of the 'soup' argument to the TreeBuilderForHtml5lib constructor is deprecated as of Beautiful Soup 4.13.0: 'soup' is now required. If you can't pass in a BeautifulSoup object here, or you get this warning and it seems mysterious to you, please contact the Beautiful Soup developer team for possible un-deprecation.é   r4   r   r"   rU   )Ú zhtml.parser)rB   r6   r7   ÚDeprecationWarningÚbs4r#   Úsuperr*   Ú__init__rF   rU   )r9   rS   rB   rU   ra   r#   Ú	__class__s         €r<   rh   zTreeBuilderForHtml5lib.__init__²   sq   ø€ ñ ØˆD�Iä�M‰Mð ^Ü"Øõõ
 *ñ
 &Ø!ñØ6HðØLRñˆDŒIô 	Ô$ dÑ4Ð5JÔKð ˆŒØ"4ˆÕrR   r0   ÚElementc                 óx   — | j                   j                  «        t        | j                   | j                   d «      S ©N)rB   Úresetrj   ©r9   s    r<   ÚdocumentClassz$TreeBuilderForHtml5lib.documentClassÓ   s'   € Ø�	‰	�‰ÔÜ�t—y‘y $§)¡)¨TÓ2Ð2rR   Útokenc                 óö   — t        t        |d   «      }t        t        t           |d   «      }t        t        t           |d   «      }t        j                  |||«      }| j
                  j                  |«       y )Nr;   ÚpublicIdÚsystemId)r   rI   r	   r   Úfor_name_and_idsrB   Úobject_was_parsed)r9   rp   r;   rr   rs   Údoctypes         r<   ÚinsertDoctypez$TreeBuilderForHtml5lib.insertDoctype×   sb   € Üœ˜e F™mÓ,ˆÜ"&¤x´¡}°e¸JÑ6GÓ"HˆÜ"&¤x´¡}°e¸JÑ6GÓ"Hˆä×*Ñ*¨4°¸8ÓDˆØ�	‰	×#Ñ# GÕ,rR   r;   Ú	namespacec                 ó  — d }d }| j                   �F| j                  r:| j                   j                  j                  j	                  «       \  }}|€J ‚|dz
  }| j
                  j                  ||||¬«      }t        || j
                  |«      S )Né   )Ú
sourcelineÚ	sourcepos)rF   rU   rL   rM   ÚpositionrB   Únew_tagrj   )r9   r;   rx   r{   r|   Útags         r<   ÚelementClassz#TreeBuilderForHtml5lib.elementClassß   s�   € Ø$(ˆ
Ø#'ˆ	Ø�;‰;Ð" t×'>Ò'>ð %)§K¡K×$9Ñ$9×$@Ñ$@×$IÑ$IÓ$KÑ!ˆJ˜	ØÐ(Ð(Ð(Ø! A™ˆIØ�i‰i×ÑØ�)¨
¸ið  ó 
ˆô �s˜DŸI™I yÓ1Ð1rR   ÚdataÚTextNodec                 ó@   — t        t        |«      | j                  «      S rl   )r‚   r   rB   )r9   r�   s     r<   ÚcommentClassz#TreeBuilderForHtml5lib.commentClassï   s   € Üœ › t§y¡yÓ1Ð1rR   c                 ó   — t        «       ‚)zôThis is only used by html5lib HTMLParser.parseFragment(),
        which is never used by Beautiful Soup, only by the html5lib
        unit tests. Since we don't currently hook into those tests,
        the implementation is left blank.
        ©ÚNotImplementedErrorrn   s    r<   ÚfragmentClassz$TreeBuilderForHtml5lib.fragmentClassò   s   € ô "Ó#Ð#rR   c                 ó   — t        «       ‚©z˜This is only used by the html5lib unit tests. Since we
        don't currently hook into those tests, the implementation is
        left blank.
        r†   rn   s    r<   ÚgetFragmentz"TreeBuilderForHtml5lib.getFragmentú   ó   € ô
 "Ó#Ð#rR   c                 óN   — | j                   j                  |j                  «       y rl   )rB   ÚappendÚelement©r9   Únodes     r<   ÚappendChildz"TreeBuilderForHtml5lib.appendChild  s   € ð 	�	‰	×Ñ˜Ÿ™Õ&rR   c                 ó   — | j                   S rl   )rB   rn   s    r<   ÚgetDocumentz"TreeBuilderForHtml5lib.getDocument
  s   € Ø�y‰yÐrR   c                 ó   — t        «       ‚rŠ   r†   r�   s     r<   ÚtestSerializerz%TreeBuilderForHtml5lib.testSerializer  rŒ   rR   )NT)r0   rj   ©r‘   rj   r0   N)r0   r#   )rZ   r[   r\   r^   r	   r&   rD   r_   r   rh   ro   r   rI   rw   r€   r„   rˆ   r‹   r’   r”   r–   Ú__classcell__)ri   s   @r<   r*   r*   ®   s¹   ø… Ø
ÓØ�X×(Ñ(Ñ)Ó)ð
 +/Ø#'ñ	5à#ð5ð �Ñ'ð5ð !ð	5ð
 õ5óB3ð- 4¨¨S¨¡>ð -°dó -ð2 ð 2°ð 2¸ó 2ð 2 ð 2¨ó 2ó$ó$ó'ó÷$rR   r*   c                   ó¼   — e Zd ZU dZeed<   eed<   defd„Zdee	e
ef      fd„Zde
dedd	fd
„Zdee	e
ef      fd„Zdee
   fd„Zdefd„Zde
defd„Zde
defd„Zy	)ÚAttrListz@Represents a Tag's attributes in a way compatible with html5lib.r�   Úattrsc                 óZ   — || _         t        | j                   j                  «      | _        y rl   )r�   rG   r›   )r9   r�   s     r<   rh   zAttrList.__init__  s   € ØˆŒÜ˜$Ÿ,™,×,Ñ,Ó-ˆ�
rR   r0   c                 ód   — t        | j                  j                  «       «      j                  «       S rl   )Úlistr›   ÚitemsÚ__iter__rn   s    r<   r    zAttrList.__iter__  s#   € Ü�D—J‘J×$Ñ$Ó&Ó'×0Ñ0Ó2Ð2rR   r;   ÚvalueNc                 óž  — | j                   j                  xs i }||j                  dg «      v s@| j                   j                  |v rx||j                  | j                   j                  g «      v rPt	        |t
        «      s@t	        |t        «      sJ ‚| j                   j                  t        j                  |«      «      }|| j                   |<   y )NÚ*)
r�   Úcdata_list_attributesÚgetr;   rH   rž   rI   Úattribute_value_list_classr   Úfindall)r9   r;   r¡   Ú	list_attrs       r<   Ú__setitem__zAttrList.__setitem__"  s¨   € ð —L‘L×6Ñ6Ò<¸"ˆ	Ø�9—=‘=  bÓ)Ñ)Ø�L‰L×Ñ Ñ*Ø˜	Ÿ™ d§l¡l×&7Ñ&7¸Ó<Ñ<ô ˜e¤TÔ*Ü! %¬Ô-Ð-Ð-ØŸ™×?Ñ?Ü$×,Ñ,¨UÓ3ó�ð #ˆ�‰�TÒrR   c                 óH   — t        | j                  j                  «       «      S rl   )rž   r›   rŸ   rn   s    r<   rŸ   zAttrList.items3  s   € Ü�D—J‘J×$Ñ$Ó&Ó'Ð'rR   c                 óH   — t        | j                  j                  «       «      S rl   ©rž   r›   Úkeysrn   s    r<   r­   zAttrList.keys6  s   € Ü�D—J‘J—O‘OÓ%Ó&Ð&rR   c                 ó,   — t        | j                  «      S rl   )Úlenr›   rn   s    r<   Ú__len__zAttrList.__len__9  s   € Ü�4—:‘:‹ÐrR   c                 ó    — | j                   |   S rl   )r›   ©r9   r;   s     r<   Ú__getitem__zAttrList.__getitem__<  s   € Ø�z‰z˜$ÑÐrR   c                 óL   — |t        | j                  j                  «       «      v S rl   r¬   r²   s     r<   Ú__contains__zAttrList.__contains__?  s   € Ø”t˜DŸJ™JŸO™OÓ-Ó.Ð.Ð.rR   )rZ   r[   r\   r]   r!   r^   r   rh   r   r   rI   r   r    r©   rŸ   r­   Úintr°   r³   r_   rµ   rX   rR   r<   rš   rš     s®   … ÙJàƒLØÓð. ó .ð3˜( 5¨¨oÐ)=Ñ#>Ñ?ó 3ð# ð #¨Oð #Àó #ð"(�x  c¨?Ð&:Ñ ;Ñ<ó (ð'�h˜s‘mó 'ð˜ó ð  ð  ¨ó  ð/ ð /¨ô /rR   rš   c                   ó”   — e Zd ZU ee   ed<   ee   ed<   ded<   ee   ed<   ede	fd„«       Z
edefd„«       Zdej                  fd	„Zy
)ÚBeautifulSoupNoder   Ústringr#   rB   rx   r0   c                 óš   — | j                   €| j                  €J ‚| j                   �| j                   S | j                  €J ‚| j                  S rl   )r   r¹   rn   s    r<   r�   zBeautifulSoupNode.elementJ  sH   € à�x‰xÐ# t§{¡{Ð'>Ð>Ð>Ø�8‰8ÐØ—8‘8ˆOà—;‘;Ð*Ð*Ð*Ø—;‘;ÐrR   c                 ó   — t        «       ‚)zÕReturn the html5lib constant corresponding to the type of
        the underlying DOM object.

        NOTE: This property is only accessed by the html5lib test
        suite, not by Beautiful Soup proper.
        r†   rn   s    r<   ÚnodeTypezBeautifulSoupNode.nodeTypeS  s   € ô "Ó#Ð#rR   c                 ó   — t        «       ‚rl   r†   rn   s    r<   Ú	cloneNodezBeautifulSoupNode.cloneNode_  s   € Ü!Ó#Ð#rR   N)rZ   r[   r\   r	   r!   r^   r    r   Úpropertyr   r�   r¶   r¼   Útreebuilder_baseÚNoder¾   rX   rR   r<   r¸   r¸   C  so   … à	�#‰ÓØ�_Ñ%Ó%Ø
ÓØ˜Ñ&Ó&àð˜ò ó ðð ð$˜#ò $ó ð$ð$Ð+×0Ñ0ô $rR   r¸   c                   óH  — e Zd ZU ee   ed<   dedddee   fd„Zdd	„Zde	fd
„Z
eeeeef   f   Zeed<   eeef   Zeed<   dee   ddfd„Z ee
e«      Z	 ddeded   ddfd„Z	 	 	 	 	 	 dd„Zdd„Zdd„Zdefd„Zdej8                  fd„Zdeee   ef   fd„Z ee«      Zy)rj   rx   r�   rB   r#   c                 ó�   — || _         d | _        || _        || _        t        j
                  j                  | |j                  «       y rl   )r   r¹   rB   rx   rÀ   rÁ   rh   r;   )r9   r�   rB   rx   s       r<   rh   zElement.__init__f  s:   € ð ˆŒØˆŒØˆŒ	Ø"ˆŒÜ×Ñ×&Ñ& t¨W¯\©\Õ:rR   r¸   r0   Nc                 óÚ  — d }t        |j                  «      t        u r|j                  x}}n|j                  }| |_        |�6|j                  �*t        |t        «      s|j                  j                  «        |�¤| j                  �˜| j                  j                  r‚t        | j                  j                  d   «      t        u rZ| j                  j                  d   }| j                  j                  ||z   «      }|j                  |«       || j                  _        y t        |t        «      r| j                  j                  |«      }| j                  �2| j                  j                  r| j                  j                  d«      }n=| j                  j                  �| j                  j                  «       }n| j                  }| j                  j!                  || j                  |¬«       y )NéÿÿÿÿF)ÚparentÚmost_recent_element)Útyper¹   r    r�   rÆ   rH   rI   Úextractr   ÚcontentsrB   Ú
new_stringÚreplace_withÚ_most_recent_elementÚ_last_descendantÚnext_elementru   )r9   r‘   Ústring_childÚchildÚold_elementÚnew_elementrÇ   s          r<   r’   zElement.appendChildo  s„  € Ø26ˆä�—‘Ó¤Ñ/ð $(§;¡;Ð.ˆL™5à—L‘LˆEØˆŒð ÐØ—‘Ð(Ü˜u¤cÔ*à�L‰L× Ñ Ô"ð Ð$Ø—‘Ð$¨¯©×):Ò):Ü�T—X‘X×&Ñ& rÑ*Ó+¬Ñ>ð
 Ÿ(™(×+Ñ+¨BÑ/ˆKØŸ)™)×.Ñ.¨{¸\Ñ/IÓJˆKØ×$Ñ$ [Ô1Ø-8ˆD�I‰IÕ*ä˜$¤Ô$àŸ	™	×,Ñ,¨TÓ2�ð
 �x‰xÐ#¨¯©×(9Ò(9Ø&*§h¡h×&?Ñ&?ÀÓ&FÑ#Ø—‘×*Ñ*Ð6ð
 '+§i¡i×&@Ñ&@Ó&BÑ#à&*§l¡lÐ#à�I‰I×'Ñ'Ø˜dŸh™hÐ<Oð (õ rR   c                 óH   — | j                   €J ‚t        | j                   «      S rl   )r   rš   rn   s    r<   ÚgetAttributeszElement.getAttributes¤  s!   € Ø�x‰xÐ#Ð#Ð#Ü˜Ÿ™Ó!Ð!rR   Ú_Html5libAttributeNameÚ_Html5libAttributesÚ
attributesc                 ó  — | j                   €J ‚|�ñt        |«      dkD  rât        |j                  «       «      D ]&  \  }}t	        |t
        «      sŒt        |Ž }||= |||<   Œ( t        t        |«      }| j                  j                  j                  | j                  |«       t        |j                  «       «      D ]  \  }}|| j                   |<   Œ | j                  j                  j                  | j                   «       y y y ©Nr   )r   r¯   rž   rŸ   rH   Útupler   r   r   rB   ÚbuilderÚ$_replace_cdata_list_attribute_valuesr;   Úset_up_substitutions)r9   rØ   r;   r¡   Únew_nameÚnormalized_attributesÚvalue_or_valuess          r<   ÚsetAttributeszElement.setAttributes¯  sø   € Ø�x‰xÐ#Ð#Ð#ØÐ!¤c¨*£o¸Ò&9ô  $ J×$4Ñ$4Ó$6Ó7ò 1‘��eÜ˜d¤EÕ*Ü2°DÐ9�HØ" 4Ð(Ø+0�J˜xÒ(ð	1ô %)Ô)9¸:Ó$FÐ!ð �I‰I×Ñ×BÑBØ—	‘	Ð0ôô *.Ð.C×.IÑ.IÓ.KÓ)Lò 1Ñ%��oØ!0�—‘˜’ð1ð �I‰I×Ñ×2Ñ2°4·8±8Õ<ð; ':Ð!rR   r�   ÚinsertBeforec                 ó®   — t        | j                  j                  |«      | j                  «      }|r| j                  ||«       y | j	                  |«       y rl   )r‚   rB   rË   rã   r’   )r9   r�   rã   Útexts       r<   Ú
insertTextzElement.insertTextÒ  sD   € ô ˜Ÿ	™	×,Ñ,¨TÓ2°D·I±IÓ>ˆÙØ×Ñ˜d LÕ1à×Ñ˜TÕ"rR   c                 óN  — | j                   €J ‚| j                   j                  |j                  «      }t        |j                  «      t        u rª| j                   j
                  r”t        | j                   j
                  |dz
     «      t        u ri| j                   j
                  |dz
     }t        |«      t        u sJ ‚| j                  j                  ||j                  z   «      }|j                  |«       y | j                   j                  ||j                  «       | |_
        y )Nrz   )r   Úindexr�   rÈ   r    rÊ   rB   rË   rÌ   ÚinsertrÆ   )r9   r‘   ÚrefNoderè   Úold_nodeÚnew_strs         r<   rã   zElement.insertBeforeÛ  sÜ   € ð �x‰xÐ#Ð#Ð#Ø—‘—‘˜wŸ™Ó/ˆä�—‘Ó¤/Ñ1Ø—‘×!Ò!Ü�T—X‘X×&Ñ& u¨q¡yÑ1Ó2´oÑEð —x‘x×(Ñ(¨°©Ñ3ˆHÜ˜“>¤_Ñ4Ð4Ð4Ø—i‘i×*Ñ*¨8°d·l±lÑ+BÓCˆGØ×!Ñ! 'Õ*à�H‰H�O‰O˜E 4§<¡<Ô0ØˆD�KrR   c                 ó8   — |j                   j                  «        y rl   )r�   rÉ   r�   s     r<   ÚremoveChildzElement.removeChildî  s   € Ø�‰×ÑÕrR   c                 ó~  — | j                   }|€J ‚|j                   }|€J ‚|j                  }|j                  dd«      }t        |j                  «      dkD  r |€J ‚|j                  d   }|j
                  }nd}|j
                  }|j                  }t        |«      dkD  rh|d   }	|�||	_        n||	_        ||	_        |�|	|_        n|	|_        |�|	|_        |d   j                  dd¬«      }
|
€J ‚||
_        |�|
|_        d|
_        |D ]$  }||_        |j                  j                  |«       Œ& g |_        ||_        y)z1Move all of this tag's children into another tag.NFr   rÅ   T)Úis_initializedÚaccept_self)
r   Únext_siblingrÎ   r¯   rÊ   rÏ   Úprevious_elementÚprevious_siblingrÆ   rŽ   )r9   Ú	newParentr�   Únew_parent_elementÚfinal_next_elementÚnew_parents_last_descendantÚnew_parents_last_childÚ(new_parents_last_descendant_next_elementÚ	to_appendÚfirst_childÚlast_childs_last_descendantrÑ   s               r<   ÚreparentChildrenzElement.reparentChildrenñ  s¤  € ð —(‘(ˆØÐ"Ð"Ð"Ø&Ÿ]™]ÐØ!Ð-Ð-Ð-ð %×1Ñ1Ðà&8×&IÑ&IÈ%ÐQVÓ&WÐ#ÜÐ!×*Ñ*Ó+¨aÒ/ð /Ð:Ð:Ð:Ø%7×%@Ñ%@ÀÑ%DÐ"à+×8Ñ8ñ 5ð
 &*Ð"Ø7I×7VÑ7VÐ4à×$Ñ$ˆ	Üˆy‹>˜AÒð $ A™,ˆKØ*Ð6Ø/J�Õ,à/A�Ô,Ø+AˆKÔ(Ø*Ð6Ø;FÐ+Õ8à2=Ð"Ô/Ø%Ð1Ø6AÐ&Ô3ð +4°B©-×*HÑ*HØ$°$ð +Ió +Ð'ð /Ð:Ð:Ð:à8ð (Ô4ð 8ÐCð 0ð 9ÔIð 8<Ð'Ô4àò 	6ˆEØ-ˆEŒLØ×'Ñ'×.Ñ.¨uÕ5ð	6ð
 ˆÔØ1ˆÕrR   c                 óf   — | j                   d u xs" t        | j                   j                  «      dkD  S rÚ   )r   r¯   rÊ   rn   s    r<   Ú
hasContentzElement.hasContentG  s*   € Ø�x‰x˜4ÐÒ=¤3 t§x¡x×'8Ñ'8Ó#9¸AÑ#=Ð=rR   c                 ó  — | j                   €J ‚| j                  j                  | j                   j                  | j                  «      }t        || j                  | j                  «      }| j                  D ]  \  }}||j                  |<   Œ |S rl   )r   rB   r~   r;   rx   rj   rØ   )r9   r   r‘   Úkeyr¡   s        r<   r¾   zElement.cloneNodeL  st   € Ø�x‰xÐ#Ð#Ð#Ø�i‰i×Ñ §¡§¡¨t¯~©~Ó>ˆÜ�s˜DŸI™I t§~¡~Ó6ˆØŸ/™/ò 	)‰JˆC�Ø#(ˆD�O‰O˜CÒ ð	)àˆrR   c                 ót   — | j                   €t        d   | j                  fS | j                   | j                  fS )NÚhtml)rx   r   r;   rn   s    r<   ÚgetNameTuplezElement.getNameTupleT  s3   € Ø�>‰>Ð!Ü˜fÑ% t§y¡yÐ0Ð0à—>‘> 4§9¡9Ð,Ð,rR   )r‘   r¸   r0   Nrl   )r‘   r¸   rê   r¸   r0   Nr—   )rõ   rj   r0   N) rZ   r[   r\   r	   r   r^   r!   rh   r’   rš   rÕ   r   rI   r   rÖ   r   r   r×   râ   r¿   rØ   ræ   rã   rî   rþ   r_   r   rÀ   rÁ   r¾   r  Ú	nameTuplerX   rR   r<   rj   rj   c  s9  … Ø˜Ñ&Ó&ð;Øð;Ø"1ð;Ø>FÀ}Ñ>Uó;ó3ðj"˜xó "ð ).¨c°5¸¸c¸±?Ð.BÑ(CÐ˜IÓCð &*Ð*@À#Ð*EÑ%FÐ˜ÓFð=¨Ð1DÑ(Eð =È$ó =ñB ˜-¨Ó7€Jð HLñ#Øð#Ø'/Ð0CÑ'Dð#à	ó#ðØ'ðØ2Eðà	óó&óN2ðl>˜Dó >ð
Ð+×0Ñ0ó ð-˜e H¨]Ñ$;¸SÐ$@ÑAó -ñ ˜Ó&�IrR   rj   c                   ó   — e Zd Zdeddfd„Zy)r‚   r�   rB   r#   c                 ón   — t         j                  j                  | d «       d | _        || _        || _        y rl   )rÀ   rÁ   rh   r   r¹   rB   )r9   r�   rB   s      r<   rh   zTextNode.__init___  s-   € Ü×Ñ×&Ñ& t¨TÔ2ØˆŒØˆŒØˆ�	rR   N)rZ   r[   r\   r    rh   rX   rR   r<   r‚   r‚   ]  s   „ ð ð °ô rR   r‚   )5Ú__license__Ú__all__Útypingr   r   r   r   r	   r
   r   r   r   Útyping_extensionsr   Úbs4._typingr   r   r   r   r   r   r6   Úbs4.builderr   r   r   r   r   Úbs4.elementr   r   r   r&   Úhtml5lib.constantsr   r   r   r    r!   rf   r#   Úhtml5lib.treebuildersr$   rÀ   r   ÚTreeBuilderr*   Úobjectrš   rÁ   r¸   rj   r‚   rX   rR   r<   ú<module>r     sÑ   ðà€ð ð€÷
÷ 
õ 
õ (÷÷ ó ÷õ ÷ñ ó
 õ÷ó ñ Ý!å :ôpF�ô pFôfd$Ð-×9Ñ9ô d$ôN+/ˆvô +/ô\$Ð(×-Ñ-ô $ô@w'Ðô w'ôtÐ õ rR   