ó
    F\hm‹  ã                   ó  • S r SSKJrJrJr  SSKJrJrJr  SSKJ	r	  SSK
JrJr  SSKJr  \R                  r\R                   r\R"                  r\R$                  R&                  r\R$                  R(                  r\R$                  R*                  r\R$                  R,                  r\R.                  " 5       r\R2                  " SS5      \R2                  " SS	5      \R2                  " SS
5      \R2                  " SS5      \R2                  " SS5      \R2                  " SS5      \R2                  " SS5      \R2                  " SS5      \R2                  " SS5      S.	r " S S\5      rS rS r " S S5      r\\\4r  " S S\5      r! " S S\5      r" " S S\"5      r# " S S\"5      r$S r%S!\%-  r& " S" S#\5      r' " S$ S%5      r( " S& S'\(\5      r) " S( S)\(\'5      r* " S* S+\+5      r, " S, S-\5      r-S3S. jr.S3S/ jr/S3S0 jr0S3S1 jr1S2 r2g)4z™Facility to use the Expat parser to load a minidom instance
from a string or file.

This avoids all the overhead of SAX and pulldom to gain performance.
é    )Ú
xmlbuilderÚminidomÚNode)ÚEMPTY_NAMESPACEÚEMPTY_PREFIXÚXMLNS_NAMESPACE)Úexpat)Ú_append_childÚ_set_attribute_node)Ú
NodeFilterNÚcdataÚenumerationÚentityÚentitiesÚidÚidrefÚidrefsÚnmtokenÚnmtokens)	ÚCDATAÚENUMÚENTITYÚENTITIESÚIDÚIDREFÚIDREFSÚNMTOKENÚNMTOKENSc                   óR   • \ rS rSrSrSS jrS rS rS rS r	S	 r
S
 rS rS rSrg)ÚElementInfoé<   ©Ú
_attr_infoÚ_modelÚtagNameNc                 ó*   • Xl         / U l        X l        g ©N)r%   r#   r$   )Úselfr%   Úmodels      Ú+/usr/lib/python3.13/xml/dom/expatbuilder.pyÚ__init__ÚElementInfo.__init__?   s   € ØŒØˆŒØ�ó    c                 óH   • U R                   U R                  U R                  4$ r'   r"   ©r(   s    r*   Ú__getstate__ÚElementInfo.__getstate__D   s   € Ø�‰ §¡¨T¯\©\Ð9Ð9r-   c                 ó.   • Uu  U l         U l        U l        g r'   r"   )r(   Ústates     r*   Ú__setstate__ÚElementInfo.__setstate__G   s   € Ø5:Ñ2ˆŒ˜œ d¥lr-   c                 ó¨   • U R                    H3  nUS   U:X  d  M  US   nUS   S:X  a  [        S   s  $ [        US      s  $    [        R                  $ )Né   éþÿÿÿr   Ú(r   )r#   Ú_typeinfo_mapr   Ú_no_type)r(   ÚanameÚinfoÚts       r*   ÚgetAttributeTypeÚElementInfo.getAttributeTypeJ   sX   € Ø—O”OˆDØ�A‰w˜%ÕØ˜‘H�Ø�Q‘4˜3“;Ü(¨Ñ0Ò0ä(¨¨b©Ñ2Ò2ñ $ô ×ÑÐr-   c                 ó"   • [         R                  $ r'   )r   r;   )r(   ÚnamespaceURIÚ	localNames      r*   ÚgetAttributeTypeNSÚElementInfo.getAttributeTypeNST   s   € Ü×ÑÐr-   c                 ó²   • U R                   (       aF  U R                   S   nU[        R                  R                  [        R                  R                  4;  $ g©Nr   F)r$   r	   r)   ÚXML_CTYPE_ANYÚXML_CTYPE_MIXED)r(   Útypes     r*   ÚisElementContentÚElementInfo.isElementContentW   sF   € Ø�;�;Ø—;‘;˜q‘>ˆDØ¤§¡× 9Ñ 9Ü %§¡× ;Ñ ;ð =ñ =ð =ð r-   c                 óz   • U R                   (       a*  U R                   S   [        R                  R                  :H  $ grG   )r$   r	   r)   ÚXML_CTYPE_EMPTYr/   s    r*   ÚisEmptyÚElementInfo.isEmpty_   s)   € Ø�;�;Ø—;‘;˜q‘>¤U§[¡[×%@Ñ%@Ñ@Ð@àr-   c                 óP   • U R                    H  nUS   U:X  d  M  US   S:H  s  $    g)Nr7   r8   r   F)r#   )r(   r<   r=   s      r*   ÚisIdÚElementInfo.isIde   s0   € Ø—O”OˆDØ�A‰w˜%ÕØ˜B‘x 4Ñ'Ò'ñ $ð r-   c                 ó&   • U R                  X445      $ r'   )rR   )r(   ÚeuriÚenameÚaurir<   s        r*   ÚisIdNSÚElementInfo.isIdNSk   s   € à�y‰y˜$˜Ó'Ð'r-   r'   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú	__slots__r+   r0   r4   r?   rD   rK   rO   rR   rX   Ú__static_attributes__© r-   r*   r    r    <   s4   † Ø1€Iôò
:ò;ò ò òòòõ(r-   r    c                 ó$   • U R                  X5      $ r'   )Ú_intern_setdefault)ÚbuilderÚss     r*   Ú_internre   o   s   € Ø×%Ñ% aÓ+Ð+r-   c                 ó0  • SU;   d   eUR                  S5      nU R                  n[        U5      S:X  a'  Uu  pEnU" Xf5      nU< SU< 3nU" Xw5      nU" XU5      nO1[        U5      S:X  a  Uu  pE[        nU" XU5      =puO[	        SU-  5      eU" XD5      XVU4$ )NÚ é   Ú:é   z4Unsupported syntax: spaces in URIs not supported: %r)Úsplitrb   Úlenr   Ú
ValueError)rc   ÚnameÚpartsÚinternÚuriÚ	localnameÚprefixÚqnames           r*   Ú_parse_ns_nameru   r   s­   € Ø�$‹;Ðˆ;Ø�J‰J�s‹O€EØ×'Ñ'€FÜ
ˆ5ƒz�QƒØ!&Ñˆ˜Ù˜Ó'ˆÛ!¢9Ð-ˆÙ�uÓ$ˆÙ˜9Ó0‰	Ü	ˆU‹�q‹Ø‰ˆÜˆÙ" 9Ó8Ð8ˆ�	äÐOÐRVÑVÓWÐWÙ�#Ó˜Y°Ð5Ð5r-   c                   óÄ   • \ rS rSrSrS!S jrS rS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!g)"ÚExpatBuilderé…   zLDocument builder that uses Expat to build a ParsedXML.DOM document
instance.Nc                 ó
  • Uc  [         R                  " 5       nXl        U R                  R                  b%  [	        U R                  R                  5      U l        OS U l        [        U l        S U l        U R                  5         g r'   )
r   ÚOptionsÚ_optionsÚfilterÚFilterVisibilityControllerÚ_filterr   Ú_finish_start_elementÚ_parserÚreset)r(   Úoptionss     r*   r+   ÚExpatBuilder.__init__‰   sa   € Ø‰?Ü ×(Ò(Ó*ˆGØŒØ�=‰=×ÑÑ+Ü5°d·m±m×6JÑ6JÓKˆD�LàˆDŒLô *,ˆDÔ&ØˆŒØ�
‰
�r-   c                 ó,   • [         R                  " 5       $ )zCreate a new parser object.)r	   ÚParserCreater/   s    r*   ÚcreateParserÚExpatBuilder.createParser—   s   € ä×!Ò!Ó#Ð#r-   c                 óL  • U R                   (       dˆ  U R                  5       U l         U R                   R                  R                  U l        SU R                   l        SU R                   l        SU R                   l        U R                  U R                   5        U R                   $ )z7Return the parser object, creating a new one if needed.T)	r€   r†   rp   Ú
setdefaultrb   Úbuffer_textÚordered_attributesÚspecified_attributesÚinstallr/   s    r*   Ú	getParserÚExpatBuilder.getParser›   so   € à�|�|Ø×,Ñ,Ó.ˆDŒLØ&*§l¡l×&9Ñ&9×&DÑ&DˆDÔ#Ø'+ˆD�L‰LÔ$Ø.2ˆD�L‰LÔ+Ø04ˆD�L‰LÔ-Ø�L‰L˜Ÿ™Ô&Ø�|‰|Ðr-   c                 óª   • [         R                  [        SS5      U l        U R                  U l        U R                  R
                  U l        SU l        g)z6Free all data structures used during DOM construction.NF)ÚtheDOMImplementationÚcreateDocumentr   ÚdocumentÚcurNodeÚ
_elem_infoÚ_cdatar/   s    r*   r�   ÚExpatBuilder.reset¦   s>   € ä,×;Ñ;Ü˜T 4ó)ˆŒà—}‘}ˆŒØŸ-™-×2Ñ2ˆŒØˆ�r-   c                 ó¦  • U R                   Ul        U R                  Ul        U R                  Ul        U R                  Ul        U R                  R                  (       a  U R                  Ul        U R                  Ul        U R                  R                  (       a  U R                  Ul        U R                  R"                  (       a4  U R$                  Ul        U R(                  Ul        U R,                  Ul        OU R0                  Ul        U R2                  Ul        U R6                  Ul        U R:                  Ul        U R>                  Ul         g)z>Install the callbacks needed to build the DOM into the parser.N)!Ústart_doctype_decl_handlerÚStartDoctypeDeclHandlerÚfirst_element_handlerÚStartElementHandlerÚend_element_handlerÚEndElementHandlerÚ
pi_handlerÚProcessingInstructionHandlerr{   r   Úentity_decl_handlerÚEntityDeclHandlerÚnotation_decl_handlerÚNotationDeclHandlerÚcommentsÚcomment_handlerÚCommentHandlerÚcdata_sectionsÚstart_cdata_section_handlerÚStartCdataSectionHandlerÚend_cdata_section_handlerÚEndCdataSectionHandlerÚcharacter_data_handler_cdataÚCharacterDataHandlerÚcharacter_data_handlerÚexternal_entity_ref_handlerÚExternalEntityRefHandlerÚxml_decl_handlerÚXmlDeclHandlerÚelement_decl_handlerÚElementDeclHandlerÚattlist_decl_handlerÚAttlistDeclHandler©r(   Úparsers     r*   r�   ÚExpatBuilder.install®   sû   € ð *.×)HÑ)HˆÔ&Ø%)×%?Ñ%?ˆÔ"Ø#'×#;Ñ#;ˆÔ Ø.2¯o©oˆÔ+Ø�=‰=×!×!Ø'+×'?Ñ'?ˆFÔ$Ø%)×%?Ñ%?ˆÔ"Ø�=‰=×!×!Ø$(×$8Ñ$8ˆFÔ!Ø�=‰=×'×'Ø.2×.NÑ.NˆFÔ+Ø,0×,JÑ,JˆFÔ)Ø*.×*KÑ*KˆFÕ'à*.×*EÑ*EˆFÔ'Ø*.×*JÑ*JˆÔ'Ø $× 5Ñ 5ˆÔØ$(×$=Ñ$=ˆÔ!Ø$(×$=Ñ$=ˆÕ!r-   c                 ó¨  • U R                  5       nSn UR                  S5      =n(       aa  UR                  US5        U(       a,  U R                  R                  (       a  U R                  U5        SnUR                  S5      =n(       a  Ma  UR                  SS5        U R                  nU R                  5         SU l        U$ ! [         a     N1f = f)zAParse a document from a file object, returning the document
node.Ti @  Fr-   N)	rŽ   ÚreadÚParser“   ÚdocumentElementÚ_setup_subsetÚParseEscaper�   r€   )r(   Úfiler¹   Úfirst_bufferÚbufferÚdocs         r*   Ú	parseFileÚExpatBuilder.parseFileÅ   s¸   € ð —‘Ó!ˆØˆð	Ø ŸI™I gÓ.Ð.�&Õ.Ø—‘˜V UÔ+Þ D§M¡M×$A×$AØ×&Ñ& vÔ.Ø$�ð	 !ŸI™I gÓ.Ð.�&×.ð
 �L‰L˜˜dÔ#ð �m‰mˆØ�
‰
ŒØˆŒØˆ
øô ó 	Ùð	ús   ”A7C ÂC Ã
CÃCc                 óÔ   • U R                  5       n UR                  US5        U R                  U5        U R                  nU R                  5         SU l        U$ ! [         a     N1f = f)z<Parse a document from a string, returning the document node.TN)rŽ   r½   r¿   rÀ   r“   r�   r€   )r(   Ústringr¹   rÄ   s       r*   ÚparseStringÚExpatBuilder.parseStringØ   sc   € à—‘Ó!ˆð	Ø�L‰L˜ Ô&Ø×Ñ˜vÔ&ð �m‰mˆØ�
‰
ŒØˆŒØˆ
øô ó 	Ùð	ús   ’#A Á
A'Á&A'c                 óÆ   • U R                   R                  (       aF  [        5       nUR                  U5        UR	                  5       nX0R                   R                  l        gg)z/Load the internal subset if there might be one.N)r“   ÚdoctypeÚInternalSubsetExtractorrÉ   Ú	getSubsetÚinternalSubset)r(   rÃ   Ú	extractorÚsubsets       r*   r¿   ÚExpatBuilder._setup_subsetå   sH   € à�=‰=× × Ü/Ó1ˆIØ×!Ñ! &Ô)Ø×(Ñ(Ó*ˆFØ39�M‰M×!Ñ!Õ0ð	 !r-   c                 ó’  • U R                   R                  R                  XU5      nU R                   Ul        [	        U R                   U5        XPR                   l        U R                  (       ao  U R                  R                  U5      [        :X  aL  S U R                   l        U R                   R                  S	 S nS U R                  l        S U R                  l        U(       ac  Ub"  / UR                  l        / UR                  l        S U R                  l        S U R                  l        U R$                  U R                  l        g g ©Néÿÿÿÿ)r“   ÚimplementationÚcreateDocumentTypeÚownerDocumentr
   rÌ   r~   Ú
acceptNodeÚFILTER_REJECTÚ
childNodesr€   r¢   r¤   r   Ú_seqÚ	notationsr§   r    Úend_doctype_decl_handlerÚEndDoctypeDeclHandler)r(   ÚdoctypeNameÚsystemIdÚpublicIdÚhas_internal_subsetrÌ   s         r*   r™   Ú'ExpatBuilder.start_doctype_decl_handlerí   sñ   € à—-‘-×.Ñ.×AÑAØ 8ó-ˆà $§¡ˆÔÜ�d—m‘m WÔ-Ø '�‰ÔØ�<�<˜DŸL™L×3Ñ3°GÓ<ÄÓMØ$(ˆD�M‰MÔ!Ø—‘×(Ñ(¨Ð,ØˆGØ-1ˆD�L‰LÔ*Ø/3ˆD�L‰LÔ,ÞØÑ"Ø(*�× Ñ Ô%Ø)+�×!Ñ!Ô&Ø*.ˆD�L‰LÔ'Ø8<ˆD�L‰LÔ5Ø15×1NÑ1NˆD�L‰LÕ.ð r-   c                 ó  • U R                   R                  (       a  U R                  U R                  l        U R
                  U R                  l        U R                  (       d  U R                  (       d  [        U l
        g g g r'   )r{   r¥   r¦   r€   r§   rŸ   r    r•   r~   r   Ú_finish_end_elementr/   s    r*   rÞ   Ú%ExpatBuilder.end_doctype_decl_handler  sM   € Ø�=‰=×!×!Ø*.×*>Ñ*>ˆD�L‰LÔ'Ø48·O±Oˆ�‰Ô1Ø—— 4§<§<Ü')ˆDÕ$ð $0�r-   c                 ó  • U R                   R                  X5      n[        U R                  U5        U R                  (       a@  U R                  R                  U5      [        :X  a  U R                  R                  U5        g g g r'   )r“   ÚcreateProcessingInstructionr
   r”   r~   rÙ   rÚ   ÚremoveChild)r(   ÚtargetÚdataÚnodes       r*   rŸ   ÚExpatBuilder.pi_handler	  s[   € Ø�}‰}×8Ñ8¸ÓFˆÜ�d—l‘l DÔ)Ø�<�<˜DŸL™L×3Ñ3°DÓ9¼]ÓJØ�L‰L×$Ñ$ TÕ*ð Kˆ<r-   c                 ó  • U R                   R                  nU R                  (       a`  U R                  (       a,  US   R                  [
        :X  a  US   R                  U5        g U R                  R                  U5      nSU l        OeU(       a2  US   R                  [        :X  a  US   nUR                  U-   nXCl
        g [        R                  " 5       nXl
        U R                  Ul        [        U R                   U5        g )NrÕ   T)r”   rÛ   r–   Ú_cdata_continueÚnodeTypeÚCDATA_SECTION_NODEÚ
appendDatar“   ÚcreateCDATASectionÚ	TEXT_NODErì   r   ÚTextrØ   r
   )r(   rì   rÛ   rí   Úvalues        r*   r­   Ú)ExpatBuilder.character_data_handler_cdata  sÂ   € Ø—\‘\×,Ñ,ˆ
Ø�;�;Ø×&×&Ø  ‘n×-Ñ-Ô1CÓCØ˜2‘×)Ñ)¨$Ô/ØØ—=‘=×3Ñ3°DÓ9ˆDØ#'ˆDÕ Þ˜J r™N×3Ñ3´yÓ@Ø˜b‘>ˆDØ—I‘I Ñ$ˆEØŒIØä—<’<“>ˆDØŒIØ!%§¡ˆDÔÜ�d—l‘l DÕ)r-   c                 ó@  • U R                   R                  nU(       a1  US   R                  [        :X  a  US   nUR                  U-   Ul        g [
        R                  " 5       nUR                  U-   Ul        U R                  Ul        [        U R                   U5        g rÔ   )
r”   rÛ   rñ   rõ   rì   r   rö   r“   rØ   r
   )r(   rì   rÛ   rí   s       r*   r¯   Ú#ExpatBuilder.character_data_handler#  sv   € Ø—\‘\×,Ñ,ˆ
Þ˜* R™.×1Ñ1´YÓ>Ø˜b‘>ˆDØŸ	™	 DÑ(ˆDŒIØÜ�|Š|‹~ˆØ—I‘I Ñ$ˆŒ	Ø!Ÿ]™]ˆÔÜ�d—l‘l DÕ)r-   c                 ó*  • U(       a  g U R                   R                  (       d  g U R                  R                  XXW5      nUb6  U R                  R	                  U5      n	UR
                  R                  U	5        U R                  R                  R                  R                  R                  U5        U R                  (       aP  U R                  R                  U5      [        :X  a,  U R                  R                  R                  R                  S	 g g g rÔ   )r{   r   r“   Ú_create_entityÚcreateTextNoderÛ   ÚappendrÌ   rÜ   r~   rÙ   rÚ   )
r(   Ú
entityNameÚis_parameter_entityr÷   Úbaserá   râ   ÚnotationNamerí   Úchilds
             r*   r¡   Ú ExpatBuilder.entity_decl_handler.  sÇ   € æàØ�}‰}×%×%ØØ�}‰}×+Ñ+¨JØ,4óDˆàÑð —M‘M×0Ñ0°Ó7ˆEØ�O‰O×"Ñ" 5Ô)Ø�‰×Ñ×&Ñ&×+Ñ+×2Ñ2°4Ô8Ø�<�<˜DŸL™L×3Ñ3°DÓ9¼]ÓJØ—‘×%Ñ%×.Ñ.×3Ñ3°BÑ7ð Kˆ<r-   c                 óp  • U R                   R                  XU5      nU R                   R                  R                  R                  R                  U5        U R                  (       aP  U R                  R                  U5      [        :X  a,  U R                   R                  R                  R                  S	 g g g rÔ   )	r“   Ú_create_notationrÌ   rÝ   rÜ   rþ   r~   rÙ   ÚFILTER_ACCEPT)r(   r  r  rá   râ   rí   s         r*   r£   Ú"ExpatBuilder.notation_decl_handler@  s   € Ø�}‰}×-Ñ-¨lÀhÓOˆØ�‰×Ñ×'Ñ'×,Ñ,×3Ñ3°DÔ9Ø�<�<˜DŸL™L×3Ñ3°DÓ9¼]ÓJØ—‘×%Ñ%×/Ñ/×4Ñ4°RÑ8ð Kˆ<r-   c                 ó  • U R                   R                  U5      n[        U R                  U5        U R                  (       a@  U R                  R                  U5      [        :X  a  U R                  R                  U5        g g g r'   )r“   ÚcreateCommentr
   r”   r~   rÙ   rÚ   rê   )r(   rì   rí   s      r*   r¦   ÚExpatBuilder.comment_handlerF  s[   € Ø�}‰}×*Ñ*¨4Ó0ˆÜ�d—l‘l DÔ)Ø�<�<˜DŸL™L×3Ñ3°DÓ9¼]ÓJØ�L‰L×$Ñ$ TÕ*ð Kˆ<r-   c                 ó    • SU l         SU l        g )NTF©r–   rð   r/   s    r*   r©   Ú(ExpatBuilder.start_cdata_section_handlerL  s   € ØˆŒØ$ˆÕr-   c                 ó    • SU l         SU l        g )NFr  r/   s    r*   r«   Ú&ExpatBuilder.end_cdata_section_handlerP  s   € ØˆŒØ$ˆÕr-   c                 ó   • g©Nr7   r`   )r(   Úcontextr  rá   râ   s        r*   r°   Ú(ExpatBuilder.external_entity_ref_handlerT  s   € Ør-   c                 ó¶   • U R                   c  U R                  (       d  [        U l        U R                  U R                  5       l        U R	                  X5        g r'   )r~   r•   r   ræ   Ústart_element_handlerrŽ   rœ   )r(   rn   Ú
attributess      r*   r›   Ú"ExpatBuilder.first_element_handlerW  s=   € Ø�<‰<Ñ¨¯¯Ü')ˆDÔ$Ø/3×/IÑ/Iˆ�‰ÓÔ,Ø×"Ñ" 4Õ4r-   c                 ó¦  • U R                   R                  U5      n[        U R                  U5        X0l        U(       ai  [	        S[        U5      S5       HO  n[        R                  " X$   [        S [        5      nX$S-      nXel
        U R                   Ul        [        X55        MQ     X0R                   R                  La  U R                  U5        g g )Nr   rj   r7   )r“   ÚcreateElementr
   r”   Úrangerl   r   ÚAttrr   r   r÷   rØ   r   r¾   r   )r(   rn   r  rí   ÚiÚar÷   s          r*   r  Ú"ExpatBuilder.start_element_handler]  s¤   € Ø�}‰}×*Ñ*¨4Ó0ˆÜ�d—l‘l DÔ)ØŒæÜ˜1œc *›o¨qÖ1�Ü—L’L ¡´Ø!%¤|ó5�à" Q¡3™�Ø”Ø"&§-¡-�”Ü# DÖ,ñ 2ð —}‘}×4Ñ4Ò4Ø×&Ñ& tÕ,ð 5r-   c                 ób  • U R                   (       až  XR                  R                  L a  g U R                   R                  U5      nU[        :X  a  [        U 5        OU[        :X  a  [        U 5        Og UR                  U l	        UR                  R                  U5        UR                  5         g g r'   )r~   r“   r¾   ÚstartContainerrÚ   ÚRejecterÚFILTER_SKIPÚSkipperÚ
parentNoder”   rê   Úunlink)r(   rí   Úfilts      r*   r   Ú"ExpatBuilder._finish_start_elementn  s€   € Ø�<�<ð —}‘}×4Ñ4Ò4ØØ—<‘<×.Ñ.¨tÓ4ˆDØ”}Ó$ä˜•ØœÓ$ô ˜•àØŸ?™?ˆDŒLØ�O‰O×'Ñ'¨Ô-Ø�K‰K�Mð# r-   c                 ó`   • U R                   nUR                  U l         U R                  U5        g r'   )r”   r%  ræ   )r(   rn   r”   s      r*   r�   Ú ExpatBuilder.end_element_handler…  s&   € Ø—,‘,ˆØ×)Ñ)ˆŒØ× Ñ  Õ)r-   c                 ór  • U R                   R                  UR                  5      nU(       a  U R                  X5        U R                  (       ai  XR
                  R                  L a  g U R                  R                  U5      [        :X  a,  U R                  R                  U5        UR                  5         g g g r'   )r•   Úgetr%   Ú_handle_white_text_nodesr~   r“   r¾   rÙ   rÚ   r”   rê   r&  )r(   r”   r=   s      r*   ræ   Ú ExpatBuilder._finish_end_elementŠ  sƒ   € Ø�‰×"Ñ" 7§?¡?Ó3ˆÞØ×)Ñ)¨'Ô8Ø�<�<ØŸ-™-×7Ñ7Ò7ØØ�|‰|×&Ñ& wÓ/´=Ó@Ø—‘×(Ñ(¨Ô1Ø—‘Õ ð Að r-   c                 óT  • U R                   R                  (       d  UR                  5       (       d  g / nUR                   HK  nUR                  [
        :X  d  M  UR                  R                  5       (       a  M:  UR                  U5        MM     U H  nUR                  U5        M     g r'   )
r{   Úwhitespace_in_element_contentrK   rÛ   rñ   rõ   rì   Ústriprþ   rê   )r(   rí   r=   ÚLr  s        r*   r-  Ú%ExpatBuilder._handle_white_text_nodes•  sy   € Ø�M‰M×7×7Ø×(Ñ(×*Ñ*Øð
 ˆØ—_”_ˆEØ�~‰~¤Õ*°5·:±:×3CÑ3C×3EÓ3EØ—‘˜–ñ %ó
 ˆEØ×Ñ˜UÖ#ò r-   c                 óœ   • U R                   R                  U5      nUc  [        X5      U R                   U'   g UR                  b   eX#l        g r'   )r•   r,  r    r$   )r(   rn   r)   r=   s       r*   r´   Ú!ExpatBuilder.element_decl_handler¦  sC   € Ø�‰×"Ñ" 4Ó(ˆØ‰<Ü$/°Ó$<ˆD�O‰O˜DÒ!à—;‘;Ñ&Ð&Ð&Ø�Kr-   c           
      ó¶   • U R                   R                  U5      nUc  [        U5      nX`R                   U'   UR                  R	                  S US S USX5/5        g ©Nr   )r•   r,  r    r#   rþ   )r(   Úelemrn   rJ   ÚdefaultÚrequiredr=   s          r*   r¶   Ú!ExpatBuilder.attlist_decl_handler®  sV   € Ø�‰×"Ñ" 4Ó(ˆØ‰<Ü˜tÓ$ˆDØ$(�O‰O˜DÑ!Ø�‰×ÑØ�4˜˜t W¨a°Ð@õ	Br-   c                 ó¦   • XR                   l        X R                   l        US:¼  a+  U(       a  SU R                   l        g SU R                   l        g g )Nr   TF)r“   ÚversionÚencodingÚ
standalone)r(   r=  r>  r?  s       r*   r²   ÚExpatBuilder.xml_decl_handler¶  s=   € Ø '�‰ÔØ!)�‰Ôà˜‹?ÞØ+/�—‘Õ(à+0�—‘Õ(ð	 r-   )r–   rð   r•   r~   ræ   r   rb   r{   r€   r”   r“   r'   )"rZ   r[   r\   r]   Ú__doc__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_   r`   r-   r*   rw   rw   …   s•   † ñôò$ò	òò>ò.ò&ò:òOò**ò+ò*ò(	*ò8ò$9ò+ò%ò%òò5ò-ò"ò.*ò
	!ò$ò" òBõ1r-   rw   c                   óB  • \ rS rSrSrSrS rS rS r\	R                  \R                  \	R                  \R                  \	R                  \R                   \	R"                  \R$                  \	R&                  \R(                  \	R*                  \R,                  \	R.                  \R0                  \	R2                  \R4                  \	R6                  \R8                  \	R:                  \R<                  \	R>                  \R@                  \	RB                  \RD                  0r#Sr$g)r}   iÅ  zkWrapper around a DOMBuilderFilter which implements the checks
to make the whatToShow filter attribute work.©r|   c                 ó   • Xl         g r'   rC  )r(   r|   s     r*   r+   Ú#FilterVisibilityController.__init__Ë  s   € Ø�r-   c                 ó  • U R                   UR                     nU R                  R                  U-  (       aN  U R                  R	                  U5      nU[
        :X  a  [        eU[        ;  a  [        S[        U5      -   5      eU$ [        $ )Nz)startContainer() returned illegal value: )Ú_nodetype_maskrñ   r|   Ú
whatToShowr!  ÚFILTER_INTERRUPTrÀ   Ú_ALLOWED_FILTER_RETURNSrm   Úreprr  )r(   rí   ÚmaskÚvals       r*   r!  Ú)FilterVisibilityController.startContainerÎ  sz   € Ø×"Ñ" 4§=¡=Ñ1ˆØ�;‰;×!Ñ! D×(Ø—+‘+×,Ñ,¨TÓ2ˆCØÔ&Ó&Ü!Ð!ØÔ1Ó1Ü ØAÄDÈÃIÑMóOð OàˆJä Ð r-   c                 óž  • U R                   UR                     nU R                  R                  U-  (       a‘  U R                  R	                  U5      nU[
        :X  a  [        eU[        :X  a9  UR                  nUR                  S S   H  nUR                  U5        M     [        $ U[        ;  a  [        S[        U5      -   5      eU$ [        $ )Nz%acceptNode() returned illegal value: )rG  rñ   r|   rH  rÙ   rI  rÀ   r#  r%  rÛ   ÚappendChildrÚ   rJ  rm   rK  r  )r(   rí   rL  rM  Úparentr  s         r*   rÙ   Ú%FilterVisibilityController.acceptNodeÛ  s´   € Ø×"Ñ" 4§=¡=Ñ1ˆØ�;‰;×!Ñ! D×(Ø—+‘+×(Ñ(¨Ó.ˆCØÔ&Ó&Ü!Ð!Ø”kÓ!àŸ™�Ø!Ÿ_™_©QÓ/�EØ×&Ñ& uÖ-ñ 0ô %Ð$ØÔ1Ó1Ü Ø=ÄÀSÃ	ÑIóKð KàˆJä Ð r-   N)%rZ   r[   r\   r]   rA  r^   r+   r!  rÙ   r   ÚELEMENT_NODEr   ÚSHOW_ELEMENTÚATTRIBUTE_NODEÚSHOW_ATTRIBUTErõ   Ú	SHOW_TEXTrò   ÚSHOW_CDATA_SECTIONÚENTITY_REFERENCE_NODEÚSHOW_ENTITY_REFERENCEÚENTITY_NODEÚSHOW_ENTITYÚPROCESSING_INSTRUCTION_NODEÚSHOW_PROCESSING_INSTRUCTIONÚCOMMENT_NODEÚSHOW_COMMENTÚDOCUMENT_NODEÚSHOW_DOCUMENTÚDOCUMENT_TYPE_NODEÚSHOW_DOCUMENT_TYPEÚDOCUMENT_FRAGMENT_NODEÚSHOW_DOCUMENT_FRAGMENTÚNOTATION_NODEÚSHOW_NOTATIONrG  r_   r`   r-   r*   r}   r}   Å  sð   † ñ5ð €Iòò!ò!ð* 	×Ñ¨*×*AÑ*AØ×Ñ¨*×*CÑ*CØ�‰¨*×*>Ñ*>Ø×Ñ¨*×*GÑ*GØ×"Ñ"¨*×*JÑ*JØ×Ñ¨*×*@Ñ*@Ø×(Ñ(¨*×*PÑ*PØ×Ñ¨*×*AÑ*AØ×Ñ¨*×*BÑ*BØ×Ñ¨*×*GÑ*GØ×#Ñ#¨*×*KÑ*KØ×Ñ¨*×*BÑ*Bð
ƒNr-   r}   c                   ó   • \ rS rSrSrS rSrg)ÚFilterCrutchiÿ  )Ú_builderÚ_levelÚ
_old_startÚ_old_endc                 ó¾   • SU l         Xl        UR                  nUR                  U l        UR
                  U l        U R                  Ul        U R                  Ul        g r7  )	rl  rk  r€   rœ   rm  rž   rn  r  r�   )r(   rc   r¹   s      r*   r+   ÚFilterCrutch.__init__  sM   € ØˆŒØŒØ—‘ˆØ ×4Ñ4ˆŒØ×0Ñ0ˆŒØ%)×%?Ñ%?ˆÔ"Ø#'×#;Ñ#;ˆÕ r-   )rk  rl  rn  rm  N)rZ   r[   r\   r]   r^   r+   r_   r`   r-   r*   rj  rj  ÿ  s   † Ø>€Iõ<r-   rj  c                   ó*   • \ rS rSrSrS rS rS rSrg)r"  i  r`   c                 óp   • [         R                  X5        UR                  nS H  n[        X#S 5        M     g )N)r    r§   r®   rª   r¬   r±   )rj  r+   r€   Úsetattr)r(   rc   r¹   rn   s       r*   r+   ÚRejecter.__init__  s1   € Ü×Ñ˜dÔ,Ø—‘ˆóˆDô �F $Ö'òr-   c                 ó,   • U R                   S-   U l         g r  ©rl  ©r(   Úargss     r*   r  ÚRejecter.start_element_handler  s   € Ø—k‘k A‘oˆ�r-   c                 óô   • U R                   S:X  aT  U R                  R                  nU R                  R                  U5        U R                  Ul        U R                  Ul        g U R                   S-
  U l         g ©Nr   r7   )rl  rk  r€   r�   rm  rœ   rn  rž   )r(   rx  r¹   s      r*   r�   ÚRejecter.end_element_handler  sV   € Ø�;‰;˜!Óà—]‘]×*Ñ*ˆFØ�M‰M×!Ñ! &Ô)Ø)-¯©ˆFÔ&Ø'+§}¡}ˆFÕ$àŸ+™+¨™/ˆD�Kr-   rv  N)	rZ   r[   r\   r]   r^   r+   r  r�   r_   r`   r-   r*   r"  r"    s   † Ø€Iò
(ò&õ*r-   r"  c                   ó$   • \ rS rSrSrS rS rSrg)r$  i'  r`   c                 óª   • U R                   R                  nU R                  " U6   U R                   R                  ULa  U R                  S-   U l        g g r  )rk  r”   rm  rl  )r(   rx  rí   s      r*   r  ÚSkipper.start_element_handler*  sC   € Ø�}‰}×$Ñ$ˆØ�Š˜ÑØ�=‰=× Ñ ¨Ò,ØŸ+™+¨™/ˆD�Kð -r-   c                 ó  • U R                   S:X  aR  U R                  U R                  R                  l        U R
                  U R                  R                  l        S U l        g U R                   S-
  U l         U R
                  " U6   g r{  )rl  rm  rk  r€   rœ   rn  rž   rw  s     r*   r�   ÚSkipper.end_element_handler0  s^   € Ø�;‰;˜!Óð 9=¿¹ˆD�M‰M×!Ñ!Ô5Ø6:·m±mˆD�M‰M×!Ñ!Ô3Ø ˆD�MàŸ+™+¨™/ˆDŒKØ�MŠM˜4Ò r-   )rk  rl  N)rZ   r[   r\   r]   r^   r  r�   r_   r`   r-   r*   r$  r$  '  s   † Ø€Iò*õ	!r-   r$  z8http://xml.python.org/entities/fragment-builder/internalzŠ<!DOCTYPE wrapper
  %%s [
  <!ENTITY fragment-builder-internal
    SYSTEM "%s">
%%s
]>
<wrapper %%s
>&fragment-builder-internal;</wrapper>c                   óF   • \ rS rSrSrSS jrS rS rS rS r	S	 r
S
 rSrg)ÚFragmentBuilderiO  zÝBuilder which constructs document fragments given XML source
text and a context node.

The context node is expected to provide information about the
namespace declarations which are in scope at the start of the
fragment.
Nc                 óž   • UR                   [        :X  a  Xl        Xl        OUR                  U l        Xl        [
        R                  X5        g r'   )rñ   ra  ÚoriginalDocumentr  rØ   rw   r+   )r(   r  r‚   s      r*   r+   ÚFragmentBuilder.__init__X  s<   € Ø×Ñœ}Ó,Ø$+Ô!Ø"�Là$+×$9Ñ$9ˆDÔ!Ø"ŒLÜ×Ñ˜dÕ,r-   c                 ó<   • [         R                  U 5        S U l        g r'   )rw   r�   Úfragmentr/   s    r*   r�   ÚFragmentBuilder.reseta  s   € Ü×Ñ˜4Ô Øˆ�r-   c                 ó@   • U R                  UR                  5       5      $ )zJParse a document fragment from a file object, returning the
fragment node.)rÉ   r¼   ©r(   rÁ   s     r*   rÅ   ÚFragmentBuilder.parseFilee  s   € ð ×Ñ §	¡	£Ó,Ð,r-   c                 ó  • Xl         U R                  5       nU R                  R                  nSnU(       au  UR                  =(       d    U R                  5       nUR                  (       a   SUR                  < SUR                  < S3nO#UR                  (       a  SUR                  -  nOSnU R                  5       n[        XEU4-  n UR                  US5        U R                  nU R                  5         U$ !   U R                  5         e = f)zEParse a document fragment from a string, returning the
fragment node.Ú zPUBLIC "z" "Ú"zSYSTEM "%s"T)Ú_sourcerŽ   r…  rÌ   rÏ   Ú_getDeclarationsrâ   rá   Ú_getNSattrsÚ_FRAGMENT_BUILDER_TEMPLATEr½   r�   rˆ  )	r(   rÈ   r¹   rÌ   ÚidentrÑ   Únsattrsr“   rˆ  s	            r*   rÉ   ÚFragmentBuilder.parseStringj  sç   € ð ŒØ—‘Ó!ˆØ×'Ñ'×/Ñ/ˆØˆÞØ×+Ñ+×F¨t×/DÑ/DÓ/FˆFØ××Ðà#×,Ô,¨g×.>Ô.>ð@‘à×!×!Ø%¨×(8Ñ(8Ñ8�øàˆFØ×"Ñ"Ó$ˆÜ-°ÀÐ0HÑHˆð	Ø�L‰L˜ 4Ô(ð —=‘=ˆØ�
‰
Œàˆøð	Ø�J‰JŒLØús   Ã	C9 Ã9Dc                 ó®  • U R                   R                  R                  nSnU(       Gaª  [        UR                  R
                  5       H†  nUR                  R                  U5      nU(       a  US-   nU< SUR                  < 3nUR                  (       a$  U< SUR                  < SUR                  < S3nMr  U< SUR                  < S3nMˆ     [        UR                  R
                  5       HÞ  nUR                  R                  U5      nU(       a  US-   nU< SUR                  < 3nUR                  (       a#  U< SUR                  < SUR                  < S	3nODUR                  (       a  U< SUR                  < S	3nOU< S
UR                  R                  < S	3nUR                  (       a  U< SUR                  < 3nUS-   nMà     U$ )zˆRe-create the internal subset from the DocumentType node.

This is only needed if we don't already have the
internalSubset as a string.
rŽ  z
  z<!NOTATION z	 PUBLIC "z"
             "z">z	 SYSTEM "z	<!ENTITY r�  z "z
 NOTATION Ú>)r  rØ   rÌ   r  rÝ   ÚlengthÚitemÚnodeNamerâ   rá   r   Ú
firstChildrì   r  )r(   rÌ   rd   r  Únotationr   s         r*   r‘  Ú FragmentBuilder._getDeclarations†  sc  € ð —,‘,×,Ñ,×4Ñ4ˆØˆßÜ˜7×,Ñ,×3Ñ3Ö4�Ø"×,Ñ,×1Ñ1°!Ó4�ÞØ˜F™
�AÛ)*¨H×,=Ó,=Ð>�Ø×$×$ã˜h×/Ô/°×1BÔ1BðD’Aó ./°×0AÔ0AÐB’Añ 5ô ˜7×+Ñ+×2Ñ2Ö3�Ø ×)Ñ)×.Ñ.¨qÓ1�ÞØ˜F™
�AÛ'(¨&¯/«/Ð:�Ø—?—?ã˜fŸoœo¨v¯¬ð@‘Aà—_—_Û,-¨v¯¬Ð?‘Aã%&¨×(9Ñ(9×(>Ô(>Ð?�AØ×&×&Û,-¨v×/BÓ/BÐC�AØ˜‘G’ñ 4ð ˆr-   c                 ó   • g)NrŽ  r`   r/   s    r*   r’  ÚFragmentBuilder._getNSattrsª  s   € Ør-   c                 ó¾  • U[         :X  a¥  U R                  nU R                  nU R                  R	                  U5      nU R
                  U l        U R                  R                  5       U l        U R                  U l         UR                  U R                  S5        X`l        XPl        S U l	        g[        R                  XX#U5      $ ! X`l        XPl        S U l	        f = f)NTrÕ   )Ú$_FRAGMENT_BUILDER_INTERNAL_SYSTEM_IDr“   r”   r€   ÚExternalEntityParserCreater…  ÚcreateDocumentFragmentrˆ  r½   r�  rw   r°   )r(   r  r  rá   râ   Úold_documentÚold_cur_noder¹   s           r*   r°   Ú+FragmentBuilder.external_entity_ref_handler­  s¹   € ØÔ;Ó;ð  Ÿ=™=ˆLØŸ<™<ˆLØ—\‘\×<Ñ<¸WÓEˆFà ×1Ñ1ˆDŒMØ ŸM™M×@Ñ@ÓBˆDŒMØŸ=™=ˆDŒLð$Ø—‘˜TŸ\™\¨4Ô0à+”Ø ,”Ø#�”Øä×;Ñ;Ø˜t¨xó9ð 9øð  ,”Ø ,”Ø#�•ús   Â C ÃC)r�  r  r”   r“   rˆ  r…  r'   )rZ   r[   r\   r]   rA  r+   r�   rÅ   rÉ   r‘  r’  r°   r_   r`   r-   r*   rƒ  rƒ  O  s+   † ñô-òò-ò
ò8"òHõ9r-   rƒ  c                   ó>   • \ rS rSrSrS rS rS rS rS r	 S r
S	rg
)Ú
NamespacesiÄ  z7Mix-in class for builders; adds support for namespaces.c                 ó   • / U l         g r'   )Ú_ns_ordered_prefixesr/   s    r*   Ú_initNamespacesÚNamespaces._initNamespacesÇ  s   € ð %'ˆÕ!r-   c                 ó<   • [         R                  " SS9nSUl        U$ )z'Create a new namespace-handling parser.rg   )Únamespace_separatorT)r	   r…   Únamespace_prefixesr¸   s     r*   r†   ÚNamespaces.createParserÌ  s   € ä×#Ò#¸Ñ<ˆØ$(ˆÔ!Øˆr-   c                 óˆ   • [         R                  X5        U R                  R                  (       a  U R                  Ul        gg)z.Insert the namespace-handlers onto the parser.N)rw   r�   r{   Únamespace_declarationsÚstart_namespace_decl_handlerÚStartNamespaceDeclHandlerr¸   s     r*   r�   ÚNamespaces.installÒ  s3   € ä×Ñ˜TÔ*Ø�=‰=×/×/à×1Ñ1ð Õ,ð 0r-   c                 ó<   • U R                   R                  X45        g)z/Push this namespace declaration on our storage.N)r«  rþ   )r(   rs   rq   s      r*   r´  Ú'Namespaces.start_namespace_decl_handlerÙ  s   € à×!Ñ!×(Ñ(¨&¨Õ7r-   c                 óÜ  • SU;   a  [        X5      u  p4pVO[        nUnS n[        n[        R                  " XcXT5      nU R
                  Ul        [        U R                  U5        Xpl        U R                  (       a™  U R                   Hz  u  pSU(       a+  [        R                  " [        U SU-   5      [        US5      nO![        R                  " S[        S[        5      nX8l        U R
                  Ul        [        Xx5        M|     U R                  S S 2	 U(       aÒ  UR                  5         UR                   n	UR"                  n
[%        S['        U5      S5       H�  nX+   nX+S-      nSU;   a/  [        X5      u  p4pV[        R                  " XcXE5      nX‰U'   XŠX44'   O/[        R                  " U[        U[        5      nX‰U'   XŠ[        U4'   U R
                  Ul        XØl        Xxl        M‘     g g )Nrg   úxmlns:Úxmlnsr   rj   r7   )ru   r   r   r   ÚElementr“   rØ   r
   r”   r«  r  re   r   r÷   r   Ú_ensure_attributesÚ_attrsÚ_attrsNSr  rl   ÚownerElement)r(   rn   r  rq   rr   rs   rt   rí   r  r¾  r¿  r  r<   r÷   s                 r*   r  Ú Namespaces.start_element_handlerÝ  s§  € Ø�$‹;Ü,:¸4Ó,FÑ)ˆC˜F Eä!ˆCØˆEØˆIÜ!ˆFÜ�Š˜u¨6Ó=ˆØ!Ÿ]™]ˆÔÜ�d—l‘l DÔ)ØŒà×$×$Ø#×8Ô8‘�ÞÜŸš¤W¨T°8¸fÑ3DÓ%EÜ%4°f¸góG‘Aô  Ÿš W¬oØ%,¬ló<�Aà”Ø"&§-¡-�”Ü# DÖ,ñ  9ð ×)Ñ)ª!Ð,æØ×#Ñ#Ô%Ø—[‘[ˆFØ—}‘}ˆHÜ˜1œc *›o¨qÖ1�Ø"™�Ø" Q¡3™�Ø˜%“<Ü4BÀ4Ó4OÑ1�C FÜŸš U°ÓC�AØ$%˜5‘MØ12˜cÐ-Ò.äŸš U¬OØ%*¬Ló:�Aà$%˜5‘MØ9:œo¨uÐ5Ñ6Ø"&§-¡-�”Ø”Ø!%–ò 2ð	 r-   c                 ó\  • U R                   nSU;   aF  [        X5      u  p4pVUR                  U:X  a   UR                  U:X  a  UR                  U:X  d   S5       eO2UR
                  U:X  d   S5       eUR                  [        :X  d   S5       eUR                  U l         U R                  U5        g )Nrg   z$element stack messed up! (namespace)z&element stack messed up - bad nodeNamez*element stack messed up - bad namespaceURI)	r”   ru   rB   rC   rs   r›  r   r%  ræ   )r(   rn   r”   rq   rr   rs   rt   s          r*   r�   ÚNamespaces.end_element_handler  s½   € Ø—l‘lˆGØ�d‹{Ü0>¸tÓ0JÑ-� Ø×,Ñ,°Ó3Ø#×-Ñ-°Ó:Ø#ŸN™N¨fÓ4ð?ð ?ó?ð 5à4ð ×'Ñ'¨4Ó/ð @Ø?ó@Ð/à×+Ñ+¬Ó>ð DØCóDÐ>à"×-Ñ-ˆDŒLØ×$Ñ$ WÕ-r-   )r«  r”   N)rZ   r[   r\   r]   rA  r¬  r†   r�   r´  r  r�   r_   r`   r-   r*   r©  r©  Ä  s)   † ÙAò'ò
ò3ò8ò-&ð^ õ	.r-   r©  c                   ó   • \ rS rSrSrS rSrg)ÚExpatBuilderNSi#  z*Document builder that supports namespaces.c                 óN   • [         R                  U 5        U R                  5         g r'   )rw   r�   r¬  r/   s    r*   r�   ÚExpatBuilderNS.reset&  s   € Ü×Ñ˜4Ô Ø×ÑÕr-   r`   N)rZ   r[   r\   r]   rA  r�   r_   r`   r-   r*   rÅ  rÅ  #  s
   † Ù4õr-   rÅ  c                   ó$   • \ rS rSrSrS rS rSrg)ÚFragmentBuilderNSi+  z*Fragment builder that supports namespaces.c                 óN   • [         R                  U 5        U R                  5         g r'   )rƒ  r�   r¬  r/   s    r*   r�   ÚFragmentBuilderNS.reset.  s   € Ü×Ñ˜dÔ#Ø×ÑÕr-   c                 óX  • SnU R                   n/ nU(       a’  [        US5      (       al  UR                  R                  5        HN  u  pEXC;   a  M  UR	                  U5        U(       a  SU-   nOSnU(       a  U< SU< SU< S3nMC  SU< SU< S3nMP     UR
                  nU(       a  M’  U$ )	zFReturn string of namespace attributes from this element and
ancestors.rŽ  Ú_ns_prefix_urirº  r»  z
    z='Ú'rg   )r  ÚhasattrrÍ  Úitemsrþ   r%  )r(   Úattrsr  r2  rs   rq   Údeclnames          r*   r’  ÚFragmentBuilderNS._getNSattrs2  s¥   € ð ˆØ—,‘,ˆØˆÞÜ�wÐ 0×1Ñ1Ø#*×#9Ñ#9×#?Ñ#?Ö#A‘K�Fà“{Ù Ø—H‘H˜VÔ$ÞØ#+¨fÑ#4™à#*˜ÞÛ5:»HÃcÐ Jšð ó /7»Ð <šñ $Bð ×(Ñ(ˆG÷ ˆgð  ˆr-   r`   N)rZ   r[   r\   r]   rA  r�   r’  r_   r`   r-   r*   rÉ  rÉ  +  s   † Ù4òõr-   rÉ  c                   ó   • \ rS rSrSrSrg)rÀ   iP  zEException raised to short-circuit parsing in InternalSubsetExtractor.r`   N)rZ   r[   r\   r]   rA  r_   r`   r-   r*   rÀ   rÀ   P  s   † ÙOÚr-   rÀ   c                   óF   • \ rS rSrSrSrS rS rS rS r	S r
S	 rS
 rSrg)rÍ   iT  zBXML processor which can rip out the internal document type subset.Nc                 ó   • U R                   $ )z'Return the internal subset as a string.©rÑ   r/   s    r*   rÎ   Ú!InternalSubsetExtractor.getSubsetY  s   € à�{‰{Ðr-   c                 óP   •  [         R                  X5        g ! [         a     g f = fr'   )rw   rÅ   rÀ   r‹  s     r*   rÅ   Ú!InternalSubsetExtractor.parseFile]  s'   € ð	Ü×"Ñ" 4Õ.øÜó 	Ùð	úó   ‚ ˜
%¤%c                 óP   •  [         R                  X5        g ! [         a     g f = fr'   )rw   rÉ   rÀ   )r(   rÈ   s     r*   rÉ   Ú#InternalSubsetExtractor.parseStringc  s'   € ð	Ü×$Ñ$ TÕ2øÜó 	Ùð	úrÛ  c                 óH   • U R                   Ul        U R                  Ul        g r'   )r™   rš   r  rœ   r¸   s     r*   r�   ÚInternalSubsetExtractor.installi  s   € Ø)-×)HÑ)HˆÔ&Ø%)×%?Ñ%?ˆÕ"r-   c                 ó¬   • U(       aD  U R                  5       n/ U l        U R                  R                  Ul        U R                  Ul        g [        5       er'   )rŽ   rÑ   rþ   ÚDefaultHandlerrÞ   rß   rÀ   )r(   rn   râ   rá   rã   r¹   s         r*   r™   Ú2InternalSubsetExtractor.start_doctype_decl_handlerm  s@   € æØ—^‘^Ó%ˆFØˆDŒKØ$(§K¡K×$6Ñ$6ˆFÔ!Ø+/×+HÑ+HˆFÕ(ä“-Ðr-   c                 ó˜   • SR                  U R                  5      R                  SS5      R                  SS5      nXl        [        5       e)NrŽ  z
Ú
Ú)ÚjoinrÑ   ÚreplacerÀ   )r(   rd   s     r*   rÞ   Ú0InternalSubsetExtractor.end_doctype_decl_handlerw  s;   € Ø�G‰G�D—K‘KÓ ×(Ñ(¨°Ó6×>Ñ>¸tÀTÓJˆØŒÜ‹mÐr-   c                 ó   • [        5       er'   )rÀ   )r(   rn   rÑ  s      r*   r  Ú-InternalSubsetExtractor.start_element_handler|  s
   € Ü‹mÐr-   r×  )rZ   r[   r\   r]   rA  rÑ   rÎ   rÅ   rÉ   r�   r™   rÞ   r  r_   r`   r-   r*   rÍ   rÍ   T  s.   † ÙLà€Fòòòò@ò òõ
r-   rÍ   c                 óþ   • U(       a  [        5       nO
[        5       n[        U [        5      (       a(  [	        U S5       nUR                  U5      nSSS5        U$ UR                  U 5      nU$ ! , (       d  f       W$ = f)zsParse a document, returning the resulting Document node.

'file' may be either a file name or an open file object.
ÚrbN)rÅ  rw   Ú
isinstanceÚstrÚopenrÅ   )rÁ   Ú
namespacesrc   ÚfpÚresults        r*   Úparseró  €  sr   € ö
 Ü Ó"‰ä“.ˆä�$œ×ÑÜ�$˜Ô Ø×&Ñ& rÓ*ˆF÷ ð €Mð ×"Ñ" 4Ó(ˆØ€M÷	 Ôð €Mús   ¾A-Á-
A<c                 ó\   • U(       a  [        5       nO
[        5       nUR                  U 5      $ )zGParse a document from a string, returning the resulting
Document node.
)rÅ  rw   rÉ   )rÈ   rð  rc   s      r*   rÉ   rÉ   ’  s'   € ö Ü Ó"‰ä“.ˆØ×Ñ˜vÓ&Ð&r-   c                 ó  • U(       a  [        U5      nO[        U5      n[        U [        5      (       a(  [	        U S5       nUR                  U5      nSSS5        U$ UR                  U 5      nU$ ! , (       d  f       W$ = f)zÜParse a fragment of a document, given the context from which it
was originally extracted.  context should be the parent of the
node(s) which are in the fragment.

'file' may be either a file name or an open file object.
rì  N)rÉ  rƒ  rí  rî  rï  rÅ   )rÁ   r  rð  rc   rñ  rò  s         r*   ÚparseFragmentrö  �  sw   € ö Ü# GÓ,‰ä! 'Ó*ˆä�$œ×ÑÜ�$˜Ô Ø×&Ñ& rÓ*ˆF÷ ð €Mð ×"Ñ" 4Ó(ˆØ€M÷	 Ôð €Mús   Á A/Á/
A>c                 ó`   • U(       a  [        U5      nO[        U5      nUR                  U 5      $ )z°Parse a fragment of a document from a string, given the context
from which it was originally extracted.  context should be the
parent of the node(s) which are in the fragment.
)rÉ  rƒ  rÉ   )rÈ   r  rð  rc   s       r*   ÚparseFragmentStringrø  ±  s,   € ö
 Ü# GÓ,‰ä! 'Ó*ˆØ×Ñ˜vÓ&Ð&r-   c                 óP   • U R                   (       a  [        U 5      $ [        U 5      $ )z,Create a builder based on an Options object.)rð  rÅ  rw   )r‚   s    r*   ÚmakeBuilderrú  ½  s!   € à××Ü˜gÓ&Ð&ä˜GÓ$Ð$r-   )T)3rA  Úxml.domr   r   r   r   r   r   Úxml.parsersr	   Úxml.dom.minidomr
   r   Úxml.dom.NodeFilterr   rõ   rò   ra  ÚDOMBuilderFilterr  rÚ   r#  rI  ÚgetDOMImplementationr‘   ÚTypeInfor:   Úobjectr    re   ru   rw   rJ  r}   rj  r"  r$  r¢  r“  rƒ  r©  rÅ  rÉ  Ú	ExceptionrÀ   rÍ   ró  rÉ   rö  rø  rú  r`   r-   r*   Ú<module>r     s  ðñ÷: .Ñ -ß BÑ BÝ ß >Ý )à�N‰N€	Ø×,Ñ,Ð Ø×"Ñ"€à×+Ñ+×9Ñ9€Ø×+Ñ+×9Ñ9€Ø×)Ñ)×5Ñ5€Ø×.Ñ.×?Ñ?Ð à×3Ò3Ó5Ð ð × Ò   wÓ/Ø× Ò   }Ó5Ø× Ò   xÓ0Ø× Ò   zÓ2Ø× Ò   tÓ,Ø× Ò   wÓ/Ø× Ò   xÓ0Ø× Ò   yÓ1Ø× Ò   zÓ2ñ
€ô1(�&ô 1(òf,ò6÷&y1ñ y1ð|	 )¨-¸ÐEÐ ô7
 ô 7
ôt
<�6ô 
<ô*ˆ|ô *ô8!ˆlô !ð2 ?ð %ð*ð +ñ	+ð ôr9�lô r9÷j\.ñ \.ô~�Z ô ô"˜
 Oô "ôJ	�)ô 	ô)˜lô )ôXô$'ôô(	'ó%r-   