<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]                @   s+  d  d l  Z  d  d l Z d  d l m Z m Z m Z m Z d  d l Td  d l m	 Z	 m
 Z
 e j j j e j j j f Z Gd d   d e j j  Z e e d d d	 e e d
 d d e e d d d d d   Z d d   Z d d   Z d d   Z d d   Z Gd d   d e  Z Gd d   d e  Z e e d d d e e d d d e e d d d  Gd! d"   d" e  Z e e d# d d$ e Z Gd% d&   d& e  Z e d d  Z Gd' d(   d( e  Z e e d) d d* e e d d d+ d, d-   Z Gd. d/   d/  Z Gd0 d1   d1 e e  Z  Gd2 d3   d3 e e  Z! e e! d# d d4 Gd5 d6   d6 e!  Z" e e" d7 d d8 e e" d9 d d: d; d<   Z# d= d>   Z$ Gd? d@   d@ e!  Z% GdA dB   dB e"  Z& GdC dD   dD e  Z' e e' d# d dE GdF dG   dG  Z( GdH dI   dI e( e e  Z) GdJ dK   dK e( e  Z* GdL dM   dM e( e e  Z+ GdN dO   dO e	  Z, GdP dQ   dQ e  Z- dR dS   Z. GdT dU   dU e e
  Z/ e e/ dV d dW dX dY   Z0 dZ d[   Z1 d\ d]   Z2 d d d^ d_  Z3 d d` da  Z4 d db dc  Z5 d S)d    N)EMPTY_NAMESPACEEMPTY_PREFIXXMLNS_NAMESPACEdomreg)*)DOMImplementationLS
DocumentLSc               @   sT  e  Z d  Z d Z d Z d Z d Z d Z e Z	 d d   Z
 d d d  Z d d d d d	  Z d
 d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d  d!   Z d" d#   Z d$ d%   Z d& d'   Z d( d)   Z d* d+   Z d, d-   Z d. d/   Z d0 d1   Z  d S)2NodeNc             C   s   d S)NT )selfr
   r
   ,/opt/alt/python35/lib64/python3.5/minidom.py__bool__+   s    zNode.__bool__c             C   s   |  j  d d |  S)N )toprettyxml)r   encodingr
   r
   r   toxml.   s    z
Node.toxml	
c             C   s   | d  k r t  j   } n' t  j t  j   d | d d d d } |  j t j k rp |  j | d | | |  n |  j | d | |  | d  k r | j   S| j	   j   Sd  S)Nr   errorsxmlcharrefreplacenewliner   r   )
ioStringIOTextIOWrapperBytesIOnodeTyper	   DOCUMENT_NODEwritexmlgetvaluedetach)r   indentnewlr   writerr
   r
   r   r   1   s    	
zNode.toprettyxmlc             C   s   t  |  j  S)N)bool
childNodes)r   r
   r
   r   hasChildNodesC   s    zNode.hasChildNodesc             C   s   |  j  S)N)r$   )r   r
   r
   r   _get_childNodesF   s    zNode._get_childNodesc             C   s   |  j  r |  j  d Sd  S)Nr   )r$   )r   r
   r
   r   _get_firstChildI   s    	zNode._get_firstChildc             C   s   |  j  r |  j  d Sd  S)N   )r$   )r   r
   r
   r   _get_lastChildM   s    	zNode._get_lastChildc             C   so  | j  |  j k r@ x' t | j  D] } |  j | |  q" W| S| j  |  j k rz t j j d t	 |  t	 |   f   | j
 d  k	 r | j
 j |  | d  k r |  j |  n y |  j j |  } Wn! t k
 r t j j    Yn X| j  t k rt |   |  j j | |  | | _ | | _ | rY|  j | d } | | _ | | _ n	 d  | _ |  | _
 | S)Nz%s cannot be child of %sr(   )r   DOCUMENT_FRAGMENT_NODEtupler$   insertBefore_child_node_typesxmldomHierarchyRequestErrrepr
parentNoderemoveChildappendChildindex
ValueErrorNotFoundErr_nodeTypes_with_children_clear_id_cacheinsertnextSiblingpreviousSibling)r   newChildrefChildcr6   noder
   r
   r   r-   Q   s6    	
					zNode.insertBeforec             C   s   | j  |  j k r= x$ t | j  D] } |  j |  q" W| S| j  |  j k rz t j j d t	 |  t	 |   f   n | j  t
 k r t |   | j d  k	 r | j j |  t |  |  d  | _ | S)Nz%s cannot be child of %s)r   r+   r,   r$   r5   r.   r/   r0   r1   r2   r9   r:   r3   r4   _append_childr<   )r   rA   r@   r
   r
   r   r5   q   s    	"
	zNode.appendChildc             C   sz  | j  |  j k r8 | j } |  j |  |  j | |  S| j  |  j k rr t j j d t	 |  t	 |   f   | | k r d  S| j
 d  k	 r | j
 j |  y |  j j |  } Wn! t k
 r t j j    Yn X| |  j | <|  | _
 d  | _
 | j  t k s| j  t k r"t |   | j | _ | j | _ d  | _ d  | _ | j ra| | j _ | j rv| | j _ | S)Nz%s cannot be child of %s)r   r+   r<   r4   r-   r.   r/   r0   r1   r2   r3   r$   r6   r7   r8   r9   r:   r=   )r   r>   oldChildr?   r6   r
   r
   r   replaceChild   s<    				
				zNode.replaceChildc             C   s   y |  j  j |  Wn! t k
 r7 t j j    Yn X| j d  k	 rV | j | j _ | j d  k	 rt | j | j _ d  | _ | _ | j t	 k r t
 |   d  | _ | S)N)r$   remover7   r/   r0   r8   r<   r=   r   r9   r:   r3   )r   rC   r
   r
   r   r4      s    
	zNode.removeChildc             C   s'  g  } x|  j  D] } | j t j k r | j sl | rG | j | d _ | j r_ | j | j _ | j   q| r | d j | j k r | d } | j | j | _ | j | _ | j r | | j _ | j   q| j |  q | j |  | j t j	 k r | j
   q W| |  j  d  d   <d  S)Nr(   r)   r)   r)   )r$   r   r	   	TEXT_NODEdatar<   r=   unlinkappendELEMENT_NODE	normalize)r   LchildrA   r
   r
   r   rK      s*    		
	zNode.normalizec             C   s   t  |  | |  j p |   S)N)_clone_nodeownerDocument)r   deepr
   r
   r   	cloneNode   s    zNode.cloneNodec             C   s   |  j  j j | |  S)N)rO   implementation
hasFeature)r   featureversionr
   r
   r   isSupported   s    zNode.isSupportedc             C   s   d  S)Nr
   )r   r
   r
   r   _get_localName   s    zNode._get_localNamec             C   s
   |  | k S)Nr
   )r   otherr
   r
   r   
isSameNode   s    zNode.isSameNodec             C   s   |  j  | d   r |  Sd  Sd  S)N)rV   )r   rT   r
   r
   r   getInterface   s    zNode.getInterfacec             C   s6   y |  j  | d SWn t t f k
 r1 d  SYn Xd  S)Nr   )
_user_dataAttributeErrorKeyError)r   keyr
   r
   r   getUserData   s    zNode.getUserDatac             C   s   d  } y |  j  } Wn! t k
 r6 i  } | |  _  Yn X| | k rQ | | d } | d  k ry d  } | d  k	 r | | =n | | f | | <| S)Nr   )r[   r\   )r   r^   rG   handlerolddr
   r
   r   setUserData   s    
zNode.setUserDatac             C   sd   t  |  d  r` xN t |  j j    D]7 \ } \ } } | d  k	 r% | j | | | | |  q% Wd  S)Nr[   )hasattrlistr[   itemshandle)r   	operationsrcdstr^   rG   r`   r
   r
   r   _call_user_data_handler   s    (zNode._call_user_data_handlerc             C   sY   d  |  _  |  _ |  j rC x |  j D] } | j   q# Wt   |  _ d  |  _ d  |  _ d  S)N)r3   rO   r$   rH   NodeListr=   r<   )r   rM   r
   r
   r   rH     s    		zNode.unlinkc             C   s   |  S)Nr
   )r   r
   r
   r   	__enter__  s    zNode.__enter__c             C   s   |  j    d  S)N)rH   )r   etZevtbr
   r
   r   __exit__  s    zNode.__exit__)!__name__
__module____qualname__namespaceURIr3   rO   r<   r=   r   prefixr   r   r   r%   r&   r'   r*   r-   r5   rD   r4   rK   rQ   rV   rW   rY   rZ   r_   rc   rk   rH   rm   rp   r
   r
   r
   r   r	   "   s:     
r	   
firstChilddoczFirst child node, or None.	lastChildzLast child node, or None.	localNamez"Namespace-local name of this node.c             C   sE   |  j  } | r+ | d } | | _ | | _ | j |  |  | _ d  S)Nr(   r)   )r$   r=   r<   rI   r3   )r   rA   r$   Zlastr
   r
   r   rB     s    	
		rB   c             C   s6   x/ |  d  k	 r1 |  j  t j k r% d S|  j }  q Wd S)NTF)r   r	   r   r3   )rA   r
   r
   r   _in_document&  s
    rz   c             C   sM   | rI | j  d d  j  d d  j  d d  j  d d  } |  j |  d  S)	N&z&amp;<z&lt;"z&quot;>z&gt;)replacewrite)r"   rG   r
   r
   r   _write_data.  s    r   c             C   sb   x[ |  j  D]P } | j t j k rJ | d k s= | j | k rJ | j |  t | | |  q
 W| S)Nr   )r$   r   r	   rJ   tagNamerI   _get_elements_by_tagName_helper)parentnamercrA   r
   r
   r   r   5  s    r   c             C   s   xy |  j  D]n } | j t j k r
 | d k s= | j | k re | d k sX | j | k re | j |  t | | | |  q
 W| S)Nr   )r$   r   r	   rJ   ry   rt   rI   "_get_elements_by_tagName_ns_helper)r   ZnsURIry   r   rA   r
   r
   r   r   =  s    r   c               @   sm   e  Z d  Z e j Z d Z d Z d Z d Z	 e j
 e j e j e j e j e j e j f Z d d   Z d S)DocumentFragmentz#document-fragmentNc             C   s   t    |  _ d  S)N)rl   r$   )r   r
   r
   r   __init__T  s    zDocumentFragment.__init__)rq   rr   rs   r	   r+   r   nodeName	nodeValue
attributesr3   rJ   rF   CDATA_SECTION_NODEENTITY_REFERENCE_NODEPROCESSING_INSTRUCTION_NODECOMMENT_NODENOTATION_NODEr.   r   r
   r
   r
   r   r   F  s   	r   c               @   s  e  Z d  Z d# Z e j Z d	 Z d
 Z d
 Z	 e j
 e j f Z e d	 d	 d d  Z d d   Z d d   Z d d   Z d d   Z e e e  Z Z d d   Z d d   Z e e e  Z Z d d   Z d d   Z e e e  Z d d   Z d d    Z d! d"   Z d	 S)$Attr_name_valuert   _prefixr$   
_localNamerO   ownerElementNFc             C   sG   d  |  _  | |  _ | |  _ | |  _ t   |  _ |  j j t    d  S)N)r   r   rt   r   rl   r$   rI   Text)r   qNamert   ry   ru   r
   r
   r   r   b  s    				zAttr.__init__c             C   s;   y |  j  SWn) t k
 r6 |  j j d d  d SYn Xd  S)N:r(   r)   )r   r\   r   split)r   r
   r
   r   rW   o  s    zAttr._get_localNamec             C   s   |  j  S)N)	specified)r   r
   r
   r   _get_specifiedu  s    zAttr._get_specifiedc             C   s   |  j  S)N)r   )r   r
   r
   r   	_get_namex  s    zAttr._get_namec             C   s)   | |  _  |  j d  k	 r% t |  j  d  S)N)r   r   r:   )r   valuer
   r
   r   	_set_name{  s    	zAttr._set_namec             C   s   |  j  S)N)r   )r   r
   r
   r   
_get_value  s    zAttr._get_valuec             C   sI   | |  _  | |  j d _ |  j d  k	 r5 t |  j  | |  j d _ d  S)Nr   )r   r$   rG   r   r:   )r   r   r
   r
   r   
_set_value  s
    	zAttr._set_valuec             C   s   |  j  S)N)r   )r   r
   r
   r   _get_prefix  s    zAttr._get_prefixc             C   s   |  j  } | d k r9 | r9 | t k r9 t j j d   | |  _ | d  k rZ |  j } n d | |  j f } |  j r t |  j  | |  _	 d  S)Nxmlnsz5illegal use of 'xmlns' prefix for the wrong namespacez%s:%s)
rt   r   r/   r0   NamespaceErrr   ry   r   r:   r   )r   ru   ZnsuriZnewNamer
   r
   r   _set_prefix  s    					zAttr._set_prefixc             C   s   |  j  } | d  k	 rk | j |  j =| j |  j |  j f =|  j rk d |  _ | j d 8_ |  j j	 d 8_	 x |  j
 D] } | j   qu W|  j
 d  d   =d  S)NFr(   )r   _attrsr   _attrsNSrt   ry   _is_id_magic_id_nodesrO   _magic_id_countr$   rH   )r   elemrM   r
   r
   r   rH     s    			zAttr.unlinkc             C   s   |  j  r d S|  j } |  j } | d  k s7 | d  k r; d S| j |  } | d  k rZ d S|  j ry | j |  j |  j  S| j |  j  Sd  S)NTF)	r   rO   r   _get_elem_infort   isIdNSry   isIdr   )r   rw   r   infor
   r
   r   	_get_isId  s    				zAttr._get_isIdc             C   s   |  j  } |  j } | d  k s* | d  k r. t S| j |  } | d  k rM t S|  j rl | j |  j |  j  S| j |  j  Sd  S)N)	rO   r   _no_typer   rt   getAttributeTypeNSry   getAttributeTyper   )r   rw   r   r   r
   r
   r   _get_schemaType  s    			zAttr._get_schemaType)r   r   rt   r   r$   r   rO   r   ) rq   rr   rs   	__slots__r	   ATTRIBUTE_NODEr   r   r   r   rF   r   r.   r   r   rW   r   r   r   propertyr   r   r   r   r   r   r   r   ru   rH   r   r   r
   r
   r
   r   r   X  s.    	r   r   z True if this attribute is an ID.z'Namespace-local name of this attribute.
schemaTypezSchema type for this attribute.c               @   sc  e  Z d  Z d; Z d d   Z d d   Z d d	   Z d
 d   Z d d   Z d d   Z	 d d   Z
 d d   Z d d   Z d d d  Z e Z d d   Z d d   Z d d   Z d d    Z d! d"   Z d# d$   Z d% d&   Z d' d(   Z d) d*   Z d+ d,   Z d- d.   Z d/ d0   Z d1 d2   Z d3 d4   Z d5 d6   Z d7 d8   Z d9 d:   Z d S)<NamedNodeMapr   r   _ownerElementc             C   s   | |  _  | |  _ | |  _ d  S)N)r   r   r   )r   attrsZattrsNSr   r
   r
   r   r     s    		zNamedNodeMap.__init__c             C   s   t  |  j  S)N)lenr   )r   r
   r
   r   _get_length  s    zNamedNodeMap._get_lengthc             C   s<   y |  t  |  j j    | SWn t k
 r7 d  SYn Xd  S)N)re   r   keys
IndexError)r   r6   r
   r
   r   item  s    zNamedNodeMap.itemc             C   s=   g  } x0 |  j  j   D] } | j | j | j f  q W| S)N)r   valuesrI   r   r   )r   rL   rA   r
   r
   r   rf     s    zNamedNodeMap.itemsc             C   sF   g  } x9 |  j  j   D]( } | j | j | j f | j f  q W| S)N)r   r   rI   rt   ry   r   )r   rL   rA   r
   r
   r   itemsNS  s    &zNamedNodeMap.itemsNSc             C   s-   t  | t  r | |  j k S| |  j k Sd  S)N)
isinstancestrr   r   )r   r^   r
   r
   r   __contains__  s    zNamedNodeMap.__contains__c             C   s   |  j  j   S)N)r   r   )r   r
   r
   r   r     s    zNamedNodeMap.keysc             C   s   |  j  j   S)N)r   r   )r   r
   r
   r   keysNS  s    zNamedNodeMap.keysNSc             C   s   |  j  j   S)N)r   r   )r   r
   r
   r   r     s    zNamedNodeMap.valuesNc             C   s   |  j  j | |  S)N)r   get)r   r   r   r
   r
   r   r   
  s    zNamedNodeMap.getc             C   sO   |  j  t | d d   k r d St |   t |  k t |   t |  k  Sd  S)Nr   r   )r   getattrid)r   rX   r
   r
   r   _cmp  s    zNamedNodeMap._cmpc             C   s   |  j  |  d k S)Nr   )r   )r   rX   r
   r
   r   __eq__  s    zNamedNodeMap.__eq__c             C   s   |  j  |  d k S)Nr   )r   )r   rX   r
   r
   r   __ge__  s    zNamedNodeMap.__ge__c             C   s   |  j  |  d k S)Nr   )r   )r   rX   r
   r
   r   __gt__  s    zNamedNodeMap.__gt__c             C   s   |  j  |  d k S)Nr   )r   )r   rX   r
   r
   r   __le__  s    zNamedNodeMap.__le__c             C   s   |  j  |  d k  S)Nr   )r   )r   rX   r
   r
   r   __lt__!  s    zNamedNodeMap.__lt__c             C   s)   t  | t  r |  j | S|  j | Sd  S)N)r   r,   r   r   )r   attname_or_tupler
   r
   r   __getitem__$  s    zNamedNodeMap.__getitem__c             C   s   t  | t  ri y |  j | } Wn: t k
 r\ t |  } |  j j | _ |  j |  Yn X| | _ n. t  | t  s t	 d   | } |  j |  d  S)Nz%value must be a string or Attr object)
r   r   r   r]   r   r   rO   setNamedItemr   	TypeError)r   attnamer   rA   r
   r
   r   __setitem__+  s    zNamedNodeMap.__setitem__c             C   s,   y |  j  | SWn t k
 r' d  SYn Xd  S)N)r   r]   )r   r   r
   r
   r   getNamedItem:  s    zNamedNodeMap.getNamedItemc             C   s2   y |  j  | | f SWn t k
 r- d  SYn Xd  S)N)r   r]   )r   rt   ry   r
   r
   r   getNamedItemNS@  s    zNamedNodeMap.getNamedItemNSc             C   sz   |  j  |  } | d  k	 rg t |  j  |  j | j =|  j | j | j f =t | d  rc d  | _	 | St
 j j    d  S)Nr   )r   r:   r   r   r   r   rt   ry   rd   r   r/   r0   r8   )r   r   nr
   r
   r   removeNamedItemF  s    	zNamedNodeMap.removeNamedItemc             C   s}   |  j  | |  } | d  k	 rj t |  j  |  j | j | j f =|  j | j =t | d  rf d  | _	 | St
 j j    d  S)Nr   )r   r:   r   r   rt   ry   r   r   rd   r   r/   r0   r8   )r   rt   ry   r   r
   r
   r   removeNamedItemNSR  s    	zNamedNodeMap.removeNamedItemNSc             C   s   t  | t  s7 t j j d t |  t |   f   |  j j | j  } | r\ | j	   | |  j | j <| |  j
 | j | j f <|  j | _ t | j  | S)Nz%s cannot be child of %s)r   r   r/   r0   r1   r2   r   r   r   rH   r   rt   ry   r   r   r:   )r   rA   ra   r
   r
   r   r   ^  s    	
zNamedNodeMap.setNamedItemc             C   s   |  j  |  S)N)r   )r   rA   r
   r
   r   setNamedItemNSk  s    zNamedNodeMap.setNamedItemNSc             C   s%   |  | } t  | j  | j   d  S)N)r:   r   rH   )r   r   rA   r
   r
   r   __delitem__n  s    
zNamedNodeMap.__delitem__c             C   s   |  j  |  j |  j f S)N)r   r   r   )r   r
   r
   r   __getstate__s  s    zNamedNodeMap.__getstate__c             C   s   | \ |  _  |  _ |  _ d  S)N)r   r   r   )r   stater
   r
   r   __setstate__v  s    zNamedNodeMap.__setstate__)r   r   r   ) rq   rr   rs   r   r   r   r   rf   r   r   r   r   r   r   __len__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r
   r
   r   r     s:   	r   lengthz$Number of nodes in the NamedNodeMap.c               @   sF   e  Z d  Z d Z d d   Z d d   Z d d   Z d	 d
   Z d S)TypeInfo	namespacer   c             C   s   | |  _  | |  _ d  S)N)r   r   )r   r   r   r
   r
   r   r     s    	zTypeInfo.__init__c             C   sA   |  j  r& d |  j j |  j |  j  f Sd |  j j |  j f Sd  S)Nz<%s %r (from %r)>z<%s %r>)r   	__class__rq   r   )r   r
   r
   r   __repr__  s    	zTypeInfo.__repr__c             C   s   |  j  S)N)r   )r   r
   r
   r   r     s    zTypeInfo._get_namec             C   s   |  j  S)N)r   )r   r
   r
   r   _get_namespace  s    zTypeInfo._get_namespaceN)r   r   )rq   rr   rs   r   r   r   r   r   r
   r
   r
   r   r     s
   r   c               @   s  e  Z d  Z dD Z e j Z d Z e Z	 d Z
 e j e j e j e j e j e j f Z e d d d d  Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d    Z d! d"   Z d# d$   Z d% d&   Z e Z d' d(   Z d) d*   Z  d+ d,   Z! e! Z" d- d.   Z# d/ d0   Z$ d1 d2   Z% d3 d4   Z& d5 d6   Z' d7 d7 d7 d8 d9  Z( d: d;   Z) d< d=   Z* d> d?   Z+ d@ dA   Z, dB dC   Z- d S)EElementrO   r3   r   r   ru   rt   r   r$   r   r   r<   r=   Nr   c             C   s]   d  |  _  | |  _ |  _ | |  _ | |  _ t   |  _ d  |  _ |  _ d  |  _	 d  |  _
 d  S)N)r3   r   r   ru   rt   rl   r$   r<   r=   r   r   )r   r   rt   ru   ry   r
   r
   r   r     s    			
	zElement.__init__c             C   s%   |  j  d  k r! i  |  _  i  |  _ d  S)N)r   r   )r   r
   r
   r   _ensure_attributes  s    	zElement._ensure_attributesc             C   s;   y |  j  SWn) t k
 r6 |  j j d d  d SYn Xd  S)Nr   r(   r)   )r   r\   r   r   )r   r
   r
   r   rW     s    zElement._get_localNamec             C   s   |  j  S)N)r   )r   r
   r
   r   _get_tagName  s    zElement._get_tagNamec             C   s\   |  j  d  k	 r9 x' t |  j  j    D] } | j   q% Wd  |  _  d  |  _ t j |   d  S)N)r   re   r   rH   r   r	   )r   attrr
   r
   r   rH     s    		zElement.unlinkc             C   sB   |  j  d  k r d Sy |  j  | j SWn t k
 r= d SYn Xd  S)Nr   )r   r   r]   )r   r   r
   r
   r   getAttribute  s    zElement.getAttributec             C   sH   |  j  d  k r d Sy |  j  | | f j SWn t k
 rC d SYn Xd  S)Nr   )r   r   r]   )r   rt   ry   r
   r
   r   getAttributeNS  s    zElement.getAttributeNSc             C   s{   |  j  |  } | d  k rL t |  } | | _ |  j | _ |  j |  n+ | | j k rw | | _ | j rw t |   d  S)N)getAttributeNoder   r   rO   setAttributeNoder   r:   )r   r   r   r   r
   r
   r   setAttribute  s    			zElement.setAttributec             C   s   t  |  \ } } |  j | |  } | d  k rj t | | | |  } | | _ |  j | _ |  j |  nL | | j k r | | _ | j r t |   | j | k r | | _ | | _	 d  S)N)
_nssplitgetAttributeNodeNSr   r   rO   r   r   r:   ru   r   )r   rt   qualifiedNamer   ru   	localnamer   r
   r
   r   setAttributeNS  s    			
	zElement.setAttributeNSc             C   s#   |  j  d  k r d  S|  j  j |  S)N)r   r   )r   Zattrnamer
   r
   r   r     s    zElement.getAttributeNodec             C   s)   |  j  d  k r d  S|  j  j | | f  S)N)r   r   )r   rt   ry   r
   r
   r   r     s    zElement.getAttributeNodeNSc             C   s   | j  d  |  f k r' t j j d   |  j   |  j j | j d   } | d  k	 rb |  j |  |  j	 j | j
 | j f d   } | d  k	 r | | k	 r |  j |  t |  |  | | k	 r | S| | k	 r | Sd  S)Nzattribute node already owned)r   r/   r0   ZInuseAttributeErrr   r   r   r   removeAttributeNoder   rt   ry   _set_attribute_node)r   r   Zold1Zold2r
   r
   r   r     s    
!zElement.setAttributeNodec             C   sd   |  j  d  k r t j j    y |  j | } Wn! t k
 rR t j j    Yn X|  j |  d  S)N)r   r/   r0   r8   r   r]   r   )r   r   r   r
   r
   r   removeAttribute  s    zElement.removeAttributec             C   sj   |  j  d  k r t j j    y |  j  | | f } Wn! t k
 rX t j j    Yn X|  j |  d  S)N)r   r/   r0   r8   r]   r   )r   rt   ry   r   r
   r
   r   removeAttributeNS%  s    zElement.removeAttributeNSc             C   su   | d  k r t  j j    y |  j | j Wn! t k
 rP t  j j    Yn Xt |   | j   |  j | _ d  S)N)	r/   r0   r8   r   r   r]   r:   rH   rO   )r   rA   r
   r
   r   r   .  s    

zElement.removeAttributeNodec             C   s    |  j  d  k r d S| |  j  k S)NF)r   )r   r   r
   r
   r   hasAttribute=  s    zElement.hasAttributec             C   s&   |  j  d  k r d S| | f |  j  k S)NF)r   )r   rt   ry   r
   r
   r   hasAttributeNSB  s    zElement.hasAttributeNSc             C   s   t  |  | t    S)N)r   rl   )r   r   r
   r
   r   getElementsByTagNameG  s    zElement.getElementsByTagNamec             C   s   t  |  | | t    S)N)r   rl   )r   rt   ry   r
   r
   r   getElementsByTagNameNSJ  s    zElement.getElementsByTagNameNSc             C   s   d |  j  t |   f S)Nz<DOM Element: %s at %#x>)r   r   )r   r
   r
   r   r   N  s    zElement.__repr__r   c       	      C   sW  | j  | d |  j  |  j   } t | j    } x@ | D]8 } | j  d |  t | | | j  | j  d  q= W|  j rB| j  d  t |  j  d k r |  j d j	 t
 j k r |  j d j | d d d  nH | j  |  x+ |  j D]  } | j | | | | |  q W| j  |  | j  d |  j | f  n | j  d	 |  d  S)
Nr|   z %s="r}   r~   r(   r   r   z</%s>%sz/>%s)r   r   _get_attributessortedr   r   r   r$   r   r   r	   rF   r   )	r   r"   r    	addindentr!   r   Za_namesZa_namerA   r
   r
   r   r   Q  s$    	 zElement.writexmlc             C   s    |  j    t |  j |  j |   S)N)r   r   r   r   )r   r
   r
   r   r   l  s    
zElement._get_attributesc             C   s   |  j  r d Sd Sd  S)NTF)r   )r   r
   r
   r   hasAttributesp  s    	zElement.hasAttributesc             C   s    |  j  |  } |  j |  d  S)N)r   setIdAttributeNode)r   r   idAttrr
   r
   r   setIdAttributex  s    zElement.setIdAttributec             C   s#   |  j  | |  } |  j |  d  S)N)r   r  )r   rt   ry   r  r
   r
   r   setIdAttributeNS|  s    zElement.setIdAttributeNSc             C   s   | d  k s |  j  | j  r. t j j    t |   d  k	 rO t j j    | j s d | _ |  j d 7_ |  j	 j
 d 7_
 t |   d  S)NTr(   )rY   r   r/   r0   r8   _get_containing_entrefNoModificationAllowedErrr   r   rO   r   r:   )r   r  r
   r
   r   r    s    		zElement.setIdAttributeNode)rO   r3   r   r   ru   rt   r   r$   r   r   r<   r=   ).rq   rr   rs   r   r	   rJ   r   r   r   r   r   r   r   rF   r   r   r.   r   r   r   rW   r   rH   r   r   r   r   r   r   r   ZsetAttributeNodeNSr   r   r   ZremoveAttributeNodeNSr   r   r   r   r   r   r   r  r  r  r  r
   r
   r
   r   r     sT     			r   r   z*NamedNodeMap of attributes on the element.z%Namespace-local name of this element.c             C   sJ   t  |   |  j   | |  j | j <| |  j | j | j f <|  | _ d  S)N)r:   r   r   r   r   rt   ry   r   )elementr   r
   r
   r   r     s
    

r   c               @   s   e  Z d  Z f  Z d Z e   Z d Z d Z d d   Z	 d d   Z
 d d   Z d d	   Z d
 d   Z d d   Z d d   Z d d   Z d S)	ChildlessNc             C   s   d  S)Nr
   )r   r
   r
   r   r'     s    zChildless._get_firstChildc             C   s   d  S)Nr
   )r   r
   r
   r   r*     s    zChildless._get_lastChildc             C   s   t  j j |  j d   d  S)Nz nodes cannot have children)r/   r0   r1   r   )r   rA   r
   r
   r   r5     s    	zChildless.appendChildc             C   s   d S)NFr
   )r   r
   r
   r   r%     s    zChildless.hasChildNodesc             C   s   t  j j |  j d   d  S)Nz nodes do not have children)r/   r0   r1   r   )r   r>   r?   r
   r
   r   r-     s    	zChildless.insertBeforec             C   s   t  j j |  j d   d  S)Nz nodes do not have children)r/   r0   r8   r   )r   rC   r
   r
   r   r4     s    	zChildless.removeChildc             C   s   d  S)Nr
   )r   r
   r
   r   rK     s    zChildless.normalizec             C   s   t  j j |  j d   d  S)Nz nodes do not have children)r/   r0   r1   r   )r   r>   rC   r
   r
   r   rD     s    	zChildless.replaceChild)rq   rr   rs   r   r   ZEmptyNodeListr$   rv   rx   r'   r*   r5   r%   r-   r4   rK   rD   r
   r
   r
   r   r	    s   	r	  c               @   s   e  Z d  Z e j Z d Z d d   Z d d   Z d d   Z	 e
 e e	  Z d	 d
   Z d d   Z e
 e e  Z d d d d d  Z d S)ProcessingInstructiontargetrG   c             C   s   | |  _  | |  _ d  S)N)r  rG   )r   r  rG   r
   r
   r   r     s    	zProcessingInstruction.__init__c             C   s   |  j  S)N)rG   )r   r
   r
   r   _get_nodeValue  s    z$ProcessingInstruction._get_nodeValuec             C   s   | |  _  d  S)N)rG   )r   r   r
   r
   r   _set_nodeValue  s    z$ProcessingInstruction._set_nodeValuec             C   s   |  j  S)N)r  )r   r
   r
   r   _get_nodeName  s    z#ProcessingInstruction._get_nodeNamec             C   s   | |  _  d  S)N)r  )r   r   r
   r
   r   _set_nodeName  s    z#ProcessingInstruction._set_nodeNamer   c             C   s'   | j  d | |  j |  j | f  d  S)Nz%s<?%s %s?>%s)r   r  rG   )r   r"   r    r   r!   r
   r
   r   r     s    zProcessingInstruction.writexmlN)r  rG   )rq   rr   rs   r	   r   r   r   r   r  r  r   r   r  r  r   r   r
   r
   r
   r   r
    s   	r
  c               @   s   e  Z d  Z d Z d d   Z d d	   Z e Z d
 d   Z d d   Z e	 e e  Z
 Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d S)CharacterData_datarO   r3   r=   r<   c             C   s:   d  |  _  |  _ d  |  _ |  _ d |  _ t j |   d  S)Nr   )rO   r3   r=   r<   r  r	   r   )r   r
   r
   r   r     s    	zCharacterData.__init__c             C   s   t  |  j  S)N)r   rG   )r   r
   r
   r   r     s    zCharacterData._get_lengthc             C   s   |  j  S)N)r  )r   r
   r
   r   	_get_data  s    zCharacterData._get_datac             C   s   | |  _  d  S)N)r  )r   rG   r
   r
   r   	_set_data  s    zCharacterData._set_datac             C   sK   |  j  } t |  d k r$ d } n d } d |  j j | d d  | f S)N
   z...r   z<DOM %s node "%r%s">r   )rG   r   r   rq   )r   rG   Z	dotdotdotr
   r
   r   r     s    		zCharacterData.__repr__c             C   sx   | d k  r t  j j d   | t |  j  k rE t  j j d   | d k  rc t  j j d   |  j | | |  S)Nr   zoffset cannot be negativez#offset cannot be beyond end of datazcount cannot be negative)r/   r0   IndexSizeErrr   rG   )r   offsetcountr
   r
   r   substringData  s    zCharacterData.substringDatac             C   s   |  j  | |  _  d  S)N)rG   )r   argr
   r
   r   
appendData  s    zCharacterData.appendDatac             C   s   | d k  r t  j j d   | t |  j  k rE t  j j d   | r{ d |  j d  |  | |  j | d   f |  _ d  S)Nr   zoffset cannot be negativez#offset cannot be beyond end of dataz%s%s%s)r/   r0   r  r   rG   )r   r  r  r
   r
   r   
insertData  s    zCharacterData.insertDatac             C   s   | d k  r t  j j d   | t |  j  k rE t  j j d   | d k  rc t  j j d   | r |  j d  |  |  j | | d   |  _ d  S)Nr   zoffset cannot be negativez#offset cannot be beyond end of datazcount cannot be negative)r/   r0   r  r   rG   )r   r  r  r
   r
   r   
deleteData  s    zCharacterData.deleteDatac             C   s   | d k  r t  j j d   | t |  j  k rE t  j j d   | d k  rc t  j j d   | r d |  j d  |  | |  j | | d   f |  _ d  S)Nr   zoffset cannot be negativez#offset cannot be beyond end of datazcount cannot be negativez%s%s%s)r/   r0   r  r   rG   )r   r  r  r  r
   r
   r   replaceData  s    zCharacterData.replaceDataN)r  rO   r3   r=   r<   )rq   rr   rs   r   r   r   r   r  r  r   rG   r   r   r  r  r  r  r  r
   r
   r
   r   r    s   			
r  zLength of the string data.c               @   sp   e  Z d  Z f  Z e j Z d Z d Z d d   Z	 d d d d d  Z
 d d	   Z d
 d   Z d d   Z d S)r   z#textNc             C   s   | d k  s! | t  |  j  k r3 t j j d   |  j   } |  j | d   | _ |  j | _ |  j } |  j r |  |  j j	 k r | d  k r |  j j
 |  n |  j j | |  |  j d  |  |  _ | S)Nr   zillegal offset value)r   rG   r/   r0   r  r   rO   r<   r3   r$   r5   r-   )r   r  ZnewTextnextr
   r
   r   	splitText0  s    !	zText.splitTextr   c             C   s!   t  | d | |  j | f  d  S)Nz%s%s%s)r   rG   )r   r"   r    r   r!   r
   r
   r   r   ?  s    zText.writexmlc             C   s   |  j  g } |  j } xK | d  k	 rb | j t j t j f k r^ | j d | j   | j } q Pq W|  j } xH | d  k	 r | j t j t j f k r | j | j   | j } qo Pqo Wd j	 |  S)Nr   r   )
rG   r=   r   r	   rF   r   r;   r<   rI   join)r   rL   r   r
   r
   r   _get_wholeTextD  s    		zText._get_wholeTextc             C   s   |  j  } |  j } xK | d  k	 r_ | j t j t j f k r[ | j } | j |  | } q Pq W|  j } | s| | j |   xK | d  k	 r | j t j t j f k r | j } | j |  | } q Pq W| r | |  _ |  Sd  Sd  S)N)	r3   r=   r   r	   rF   r   r4   r<   rG   )r   Zcontentr   r   r  r
   r
   r   replaceWholeTextV  s*    								zText.replaceWholeTextc             C   s_   |  j  j   r d St |   } | d  k r/ d S|  j j |  } | d  k rQ d S| j   Sd  S)NF)rG   strip_get_containing_elementrO   r   isElementContent)r   r   r   r
   r
   r   !_get_isWhitespaceInElementContentr  s    z&Text._get_isWhitespaceInElementContent)rq   rr   rs   r   r	   rF   r   r   r   r  r   r!  r"  r&  r
   r
   r
   r   r   )  s   	r   ZisWhitespaceInElementContentzKTrue iff this text node contains only whitespace and is in element content.Z	wholeTextz.The text of all logically-adjacent text nodes.c             C   s?   |  j  } x/ | d  k	 r: | j t j k r. | S| j  } q Wd  S)N)r3   r   r	   rJ   )rA   r@   r
   r
   r   r$    s    	r$  c             C   s?   |  j  } x/ | d  k	 r: | j t j k r. | S| j  } q Wd  S)N)r3   r   r	   r   )rA   r@   r
   r
   r   r    s    	r  c               @   s@   e  Z d  Z e j Z d Z d d   Z d d d d d  Z d S)Commentz#commentc             C   s   t  j |   | |  _ d  S)N)r  r   r  )r   rG   r
   r
   r   r     s    zComment.__init__r   c             C   s<   d |  j  k r t d   | j d | |  j  | f  d  S)Nz--z%'--' is not allowed in a comment nodez%s<!--%s-->%s)rG   r7   r   )r   r"   r    r   r!   r
   r
   r   r     s    zComment.writexmlN)	rq   rr   rs   r	   r   r   r   r   r   r
   r
   r
   r   r'    s   	r'  c               @   s:   e  Z d  Z f  Z e j Z d Z d d d d d  Z d S)CDATASectionz#cdata-sectionr   c             C   s<   |  j  j d  d k r$ t d   | j d |  j   d  S)Nz]]>r   z$']]>' not allowed in a CDATA sectionz<![CDATA[%s]]>)rG   findr7   r   )r   r"   r    r   r!   r
   r
   r   r     s    zCDATASection.writexmlN)	rq   rr   rs   r   r	   r   r   r   r   r
   r
   r
   r   r(    s   	r(  c               @   s   e  Z d  Z d Z f  d d  Z d d   Z d d   Z d d	   Z d
 d   Z d d   Z	 d d   Z
 d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d S)ReadOnlySequentialNamedNodeMap_seqc             C   s   | |  _  d  S)N)r+  )r   seqr
   r
   r   r     s    z'ReadOnlySequentialNamedNodeMap.__init__c             C   s   t  |  j  S)N)r   r+  )r   r
   r
   r   r     s    z&ReadOnlySequentialNamedNodeMap.__len__c             C   s   t  |  j  S)N)r   r+  )r   r
   r
   r   r     s    z*ReadOnlySequentialNamedNodeMap._get_lengthc             C   s+   x$ |  j  D] } | j | k r
 | Sq
 Wd  S)N)r+  r   )r   r   r   r
   r
   r   r     s    z+ReadOnlySequentialNamedNodeMap.getNamedItemc             C   s:   x3 |  j  D]( } | j | k r
 | j | k r
 | Sq
 Wd  S)N)r+  rt   ry   )r   rt   ry   r   r
   r
   r   r     s    z-ReadOnlySequentialNamedNodeMap.getNamedItemNSc             C   sL   t  | t  r! |  j |   } n |  j |  } | d  k rH t |   | S)N)r   r,   r   r   r]   )r   Zname_or_tuplerA   r
   r
   r   r     s    z*ReadOnlySequentialNamedNodeMap.__getitem__c             C   s<   | d k  r d  Sy |  j  | SWn t k
 r7 d  SYn Xd  S)Nr   )r+  r   )r   r6   r
   r
   r   r     s    z#ReadOnlySequentialNamedNodeMap.itemc             C   s   t  j j d   d  S)Nz"NamedNodeMap instance is read-only)r/   r0   r  )r   r   r
   r
   r   r     s    	z.ReadOnlySequentialNamedNodeMap.removeNamedItemc             C   s   t  j j d   d  S)Nz"NamedNodeMap instance is read-only)r/   r0   r  )r   rt   ry   r
   r
   r   r     s    	z0ReadOnlySequentialNamedNodeMap.removeNamedItemNSc             C   s   t  j j d   d  S)Nz"NamedNodeMap instance is read-only)r/   r0   r  )r   rA   r
   r
   r   r     s    	z+ReadOnlySequentialNamedNodeMap.setNamedItemc             C   s   t  j j d   d  S)Nz"NamedNodeMap instance is read-only)r/   r0   r  )r   rA   r
   r
   r   r     s    	z-ReadOnlySequentialNamedNodeMap.setNamedItemNSc             C   s
   |  j  g S)N)r+  )r   r
   r
   r   r     s    z+ReadOnlySequentialNamedNodeMap.__getstate__c             C   s   | d |  _  d  S)Nr   )r+  )r   r   r
   r
   r   r     s    z+ReadOnlySequentialNamedNodeMap.__setstate__N)r+  )rq   rr   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r
   r
   r   r*    s   	r*  z&Number of entries in the NamedNodeMap.c               @   s:   e  Z d  Z d
 Z d d   Z d d   Z d d   Z d	 S)
IdentifiedpublicIdsystemIdc             C   s   | |  _  | |  _ d  S)N)r.  r/  )r   r.  r/  r
   r
   r   _identified_mixin_init  s    	z!Identified._identified_mixin_initc             C   s   |  j  S)N)r.  )r   r
   r
   r   _get_publicId  s    zIdentified._get_publicIdc             C   s   |  j  S)N)r/  )r   r
   r
   r   _get_systemId  s    zIdentified._get_systemIdN)r.  r/  )rq   rr   rs   r   r0  r1  r2  r
   r
   r
   r   r-    s   r-  c               @   sp   e  Z d  Z e j Z d Z d Z d Z d Z	 d Z
 d d   Z d d   Z d d   Z d d d d	 d
  Z d S)DocumentTypeNc             C   sI   t    |  _ t    |  _ | r9 t |  \ } } | |  _ |  j |  _ d  S)N)r*  entities	notationsr   r   r   )r   r   ru   r   r
   r
   r   r   	  s    	zDocumentType.__init__c             C   s   |  j  S)N)internalSubset)r   r
   r
   r   _get_internalSubset  s    z DocumentType._get_internalSubsetc             C   sY  |  j  d  k rQt d   } |  j | _ |  j | _ t j j j } | r:g  | j _	 g  | j
 _	 xU |  j
 j	 D]G } t | j | j | j  } | j
 j	 j |  | j | | |  qm Wx |  j j	 D]q } t | j | j | j | j  } | j | _ | j | _ | j | _ | j j	 j |  | j | | |  q W|  j | |  |  | Sd  Sd  S)N)rO   r3  r   r   r/   r0   UserDataHandlerNODE_CLONEDr4  r+  r5  Notationr.  r/  rI   rk   EntitynotationNameactualEncodingr   rU   )r   rP   clonerh   r   notationeentityr
   r
   r   rQ     s.    zDocumentType.cloneNoder   c             C   s   | j  d  | j  |  j  |  j rL | j  d | |  j | |  j f  n# |  j ro | j  d | |  j f  |  j d  k	 r | j  d  | j  |  j  | j  d  | j  d |  d  S)Nz
<!DOCTYPE z%s  PUBLIC '%s'%s  '%s'z%s  SYSTEM '%s'z []r~   )r   r   r.  r/  r6  )r   r"   r    r   r!   r
   r
   r   r   /  s    			zDocumentType.writexml)rq   rr   rs   r	   DOCUMENT_TYPE_NODEr   r   r   r.  r/  r6  r   r7  rQ   r   r
   r
   r
   r   r3    s   	r3  c               @   s   e  Z d  Z d Z e j Z d Z d Z d Z	 d Z
 d d   Z d d   Z d d   Z d d	   Z d
 d   Z d d   Z d d   Z d d   Z d S)r;  Nc             C   s2   | |  _  | |  _ t   |  _ |  j | |  d  S)N)r   r<  rl   r$   r0  )r   r   r.  r/  r?  r
   r
   r   r   F  s    		zEntity.__init__c             C   s   |  j  S)N)r=  )r   r
   r
   r   _get_actualEncodingL  s    zEntity._get_actualEncodingc             C   s   |  j  S)N)r   )r   r
   r
   r   _get_encodingO  s    zEntity._get_encodingc             C   s   |  j  S)N)rU   )r   r
   r
   r   _get_versionR  s    zEntity._get_versionc             C   s   t  j j d   d  S)Nz(cannot append children to an entity node)r/   r0   r1   )r   r>   r
   r
   r   r5   U  s    	zEntity.appendChildc             C   s   t  j j d   d  S)Nz+cannot insert children below an entity node)r/   r0   r1   )r   r>   r?   r
   r
   r   r-   Y  s    	zEntity.insertBeforec             C   s   t  j j d   d  S)Nz*cannot remove children from an entity node)r/   r0   r1   )r   rC   r
   r
   r   r4   ]  s    	zEntity.removeChildc             C   s   t  j j d   d  S)Nz)cannot replace children of an entity node)r/   r0   r1   )r   r>   rC   r
   r
   r   rD   a  s    	zEntity.replaceChild)rq   rr   rs   r   r	   ZENTITY_NODEr   r   r=  r   rU   r   rD  rE  rF  r5   r-   r4   rD   r
   r
   r
   r   r;  =  s   	r;  c               @   s+   e  Z d  Z e j Z d Z d d   Z d S)r:  Nc             C   s   | |  _  |  j | |  d  S)N)r   r0  )r   r   r.  r/  r
   r
   r   r   i  s    	zNotation.__init__)rq   rr   rs   r	   r   r   r   r   r
   r
   r
   r   r:  e  s   	r:  c            	   @   sj   e  Z d  Z d d d d d d d d g Z d d	   Z d
 d   Z d d   Z d d   Z d d   Z d S)DOMImplementationcore1.02.0Nr/   ls-load3.0c             C   s+   | d k r d  } | j    | f |  j k S)Nr   )lower	_features)r   rT   rU   r
   r
   r   rS   y  s    zDOMImplementation.hasFeaturec       	      C   s6  | r' | j  d  k	 r' t j j d   |  j   } | d  k oT | d  k oT | d  k } | rw | rw t j j d   | r
t |  \ } } | d k r | d k r t j j d   | r | r t j j d   | j | |  } | r | j	 |  | j	 |  | r | | _  | _
 | | _ |  | _ | S)Nz(doctype object owned by another DOM treezElement with no namer/   z$http://www.w3.org/XML/1998/namespacezillegal use of 'xml' prefixz(illegal use of prefix without namespaces)r3   r/   r0   WrongDocumentErr_create_documentZInvalidCharacterErrr   r   createElementNSr5   rO   doctyperR   )	r   rt   r   rR  rw   Zadd_root_elementru   r   r  r
   r
   r   createDocument~  s4    						z DOMImplementation.createDocumentc             C   s"   t  |  } | | _ | | _ | S)N)r3  r.  r/  )r   r   r.  r/  rR  r
   r
   r   createDocumentType  s    		z$DOMImplementation.createDocumentTypec             C   s   |  j  | d   r |  Sd  Sd  S)N)rS   )r   rT   r
   r
   r   rZ     s    zDOMImplementation.getInterfacec             C   s   t    S)N)Document)r   r
   r
   r   rP    s    z"DOMImplementation._create_document)rH  rI  )rH  rJ  )rH  N)r/   rI  )r/   rJ  )r/   N)rK  rL  )rK  N)	rq   rr   rs   rN  rS   rS  rT  rZ   rP  r
   r
   r
   r   rG  n  s   	-rG  c               @   s   e  Z d  Z d Z d d   Z d d   Z d d   Z d d	   Z d
 d   Z d d   Z	 d d   Z
 d d   Z d d   Z d S)ElementInfor   c             C   s   | |  _  d  S)N)r   )r   r   r
   r
   r   r     s    zElementInfo.__init__c             C   s   t  S)N)r   )r   anamer
   r
   r   r     s    zElementInfo.getAttributeTypec             C   s   t  S)N)r   )r   rt   ry   r
   r
   r   r     s    zElementInfo.getAttributeTypeNSc             C   s   d S)NFr
   )r   r
   r
   r   r%    s    zElementInfo.isElementContentc             C   s   d S)NFr
   )r   r
   r
   r   isEmpty  s    zElementInfo.isEmptyc             C   s   d S)NFr
   )r   rW  r
   r
   r   r     s    zElementInfo.isIdc             C   s   d S)NFr
   )r   rt   ry   r
   r
   r   r     s    zElementInfo.isIdNSc             C   s   |  j  S)N)r   )r   r
   r
   r   r     s    zElementInfo.__getstate__c             C   s   | |  _  d  S)N)r   )r   r   r
   r
   r   r     s    zElementInfo.__setstate__N)r   )rq   rr   rs   r   r   r   r   r%  rX  r   r   r   r   r
   r
   r
   r   rV    s   	rV  c             C   sW   |  j  t j k r+ |  j j   d  |  _ n( t |   rS |  j j j   d  |  j _ d  S)N)r   r	   r   	_id_cacheclear_id_search_stackrz   rO   )rA   r
   r
   r   r:     s    r:   c               @   s0  e  Z d  Z dM Z e j e j e j e j f Z	 e
   Z e j Z d Z d Z d Z d Z d Z Z d Z d Z d Z d Z d Z d Z d Z d	 Z d
 d   Z d d   Z d d   Z d d   Z d d   Z  d d   Z! d d   Z" d d   Z# d d   Z$ d d   Z% d d   Z& d  d!   Z' d" d#   Z( d$ d%   Z) d& d'   Z* d( d)   Z+ d* d+   Z, d, d-   Z- d. d/   Z. d0 d1   Z/ d2 d3   Z0 d4 d5   Z1 d6 d7   Z2 d8 d9   Z3 d: d;   Z4 d< d=   Z5 d> d?   Z6 d@ dA   Z7 dB dC   Z8 dD dE   Z9 dF dG   Z: dH dH dH d dI dJ  Z; dK dL   Z< d S)NrU  
_elem_inforR  r[  r$   rY  z	#documentNFr   c             C   s4   d  |  _  t   |  _ i  |  _ i  |  _ d  |  _ d  S)N)rR  rl   r$   r\  rY  r[  )r   r
   r
   r   r   
  s
    			zDocument.__init__c             C   s7   | j  r | j  | j f } n	 | j } |  j j |  S)N)rt   ry   r   r\  r   )r   r  r^   r
   r
   r   r     s    		zDocument._get_elem_infoc             C   s   |  j  S)N)r=  )r   r
   r
   r   rD    s    zDocument._get_actualEncodingc             C   s   |  j  S)N)rR  )r   r
   r
   r   _get_doctype  s    zDocument._get_doctypec             C   s   |  j  S)N)documentURI)r   r
   r
   r   _get_documentURI   s    zDocument._get_documentURIc             C   s   |  j  S)N)r   )r   r
   r
   r   rE  #  s    zDocument._get_encodingc             C   s   |  j  S)N)errorHandler)r   r
   r
   r   _get_errorHandler&  s    zDocument._get_errorHandlerc             C   s   |  j  S)N)
standalone)r   r
   r
   r   _get_standalone)  s    zDocument._get_standalonec             C   s   |  j  S)N)strictErrorChecking)r   r
   r
   r   _get_strictErrorChecking,  s    z!Document._get_strictErrorCheckingc             C   s   |  j  S)N)rU   )r   r
   r
   r   rF  /  s    zDocument._get_versionc             C   s   | j  |  j k r: t j j d t |  t |   f   | j d  k	 rY | j j |  | j  t j	 k r |  j
   r t j j d   t j |  |  S)Nz%s cannot be child of %sz two document elements disallowed)r   r.   r/   r0   r1   r2   r3   r4   r	   rJ   _get_documentElementr5   )r   rA   r
   r
   r   r5   2  s    			zDocument.appendChildc             C   sm   y |  j  j |  Wn! t k
 r7 t j j    Yn Xd  | _ | _ d  | _ |  j	 | k ri d  |  _	 | S)N)
r$   rE   r7   r/   r0   r8   r<   r=   r3   documentElement)r   rC   r
   r
   r   r4   B  s    		zDocument.removeChildc             C   s.   x' |  j  D] } | j t j k r
 | Sq
 Wd  S)N)r$   r   r	   rJ   )r   rA   r
   r
   r   rf  N  s    zDocument._get_documentElementc             C   s6   |  j  d  k	 r% |  j  j   d  |  _  t j |   d  S)N)rR  rH   r	   )r   r
   r
   r   rH   S  s    	zDocument.unlinkc             C   s   | s
 d  S|  j  j d  d  d   } |  j | _ |  j | _ |  j | _ xl |  j D]a } t | | |  } | j j |  | j t	 j
 k r n | j t	 j k r | | _ | | _ qP W|  j t j j j |  |  | S)N)rR   rS  r   rb  rU   r$   rN   rI   r   r	   r   rC  rR  r3   rk   r/   r0   r8  r9  )r   rP   r>  r   Z
childcloner
   r
   r   rQ   Y  s"    	
zDocument.cloneNodec             C   s   t    } |  | _ | S)N)r   rO   )r   rb   r
   r
   r   createDocumentFragmentn  s    		zDocument.createDocumentFragmentc             C   s   t  |  } |  | _ | S)N)r   rO   )r   r   r@  r
   r
   r   createElements  s    	zDocument.createElementc             C   s:   t  | t  s t d   t   } | | _ |  | _ | S)Nznode contents must be a string)r   r   r   r   rG   rO   )r   rG   tr
   r
   r   createTextNodex  s    			zDocument.createTextNodec             C   s:   t  | t  s t d   t   } | | _ |  | _ | S)Nznode contents must be a string)r   r   r   r(  rG   rO   )r   rG   r@   r
   r
   r   createCDATASection  s    			zDocument.createCDATASectionc             C   s   t  |  } |  | _ | S)N)r'  rO   )r   rG   r@   r
   r
   r   createComment  s    	zDocument.createCommentc             C   s   t  | |  } |  | _ | S)N)r
  rO   )r   r  rG   pr
   r
   r   createProcessingInstruction  s    	z$Document.createProcessingInstructionc             C   s"   t  |  } |  | _ d | _ | S)Nr   )r   rO   r   )r   r   ar
   r
   r   createAttribute  s    		zDocument.createAttributec             C   s1   t  |  \ } } t | | |  } |  | _ | S)N)r   r   rO   )r   rt   r   ru   ry   r@  r
   r
   r   rQ    s    	zDocument.createElementNSc             C   s=   t  |  \ } } t | | | |  } |  | _ d | _ | S)Nr   )r   r   rO   r   )r   rt   r   ru   ry   rp  r
   r
   r   createAttributeNS  s
    		zDocument.createAttributeNSc             C   s"   t  | | | |  } |  | _ | S)N)r;  rO   )r   r   r.  r/  r<  r@  r
   r
   r   _create_entity  s    	zDocument._create_entityc             C   s   t  | | |  } |  | _ | S)N)r:  rO   )r   r   r.  r/  r   r
   r
   r   _create_notation  s    	zDocument._create_notationc             C   s  | |  j  k r |  j  | S|  j p) |  j s0 d  S|  j } | d  k r] |  j g } | |  _ n
 | sg d  Sd  } x| r| j   } | j d d   | j D  |  j |  } | rxI| j	 j
   D] } | j r | j | j | j  r| |  j  | j <| j | k r| } q| j sPq | j | j  rg| |  j  | j <| j | k rZ| } q| j sPq | j r | |  j  | j <| j | k r| } q | j d k r Pq WnQ | j r xE | j	 j
   D]4 } | j r| |  j  | j <| j | k r| } qW| d  k	 rp Pqp W| S)Nc             S   s%   g  |  ] } | j  t k r |  q Sr
   )r   r9   ).0rM   r
   r
   r   
<listcomp>  s   	 z+Document.getElementById.<locals>.<listcomp>r(   )rY  r\  r   r[  rg  popextendr$   r   r   r   rt   r   ry   r   r   r   r   r   )r   r   stackresultrA   r   r   r
   r
   r   getElementById  sZ    											
zDocument.getElementByIdc             C   s   t  |  | t    S)N)r   rl   )r   r   r
   r
   r   r     s    zDocument.getElementsByTagNamec             C   s   t  |  | | t    S)N)r   rl   )r   rt   ry   r
   r
   r   r     s    zDocument.getElementsByTagNameNSc             C   s   |  j  j | |  S)N)rR   rS   )r   rT   rU   r
   r
   r   rV     s    zDocument.isSupportedc             C   s[   | j  t j k r' t j j d   n$ | j  t j k rK t j j d   t | | |   S)Nzcannot import document nodesz!cannot import document type nodes)r   r	   r   r/   r0   NotSupportedErrrC  rN   )r   rA   rP   r
   r
   r   
importNode  s
    zDocument.importNoder   c             C   se   | d  k r  | j  d |  n | j  d | | f  x' |  j D] } | j | | | |  qA Wd  S)Nz<?xml version="1.0" ?>z%<?xml version="1.0" encoding="%s"?>%s)r   r$   r   )r   r"   r    r   r!   r   rA   r
   r
   r   r     s    	zDocument.writexmlc             C   s  | j  |  k	 r. t j j d |  | j  f   | j t j t j f k r[ t j j d   | t	 k rd | k r | j
 d d  \ } } | d k r| t j j k rt j j d   q| d k r | t j j k r | j t j k r t j j d   d  } | } n d  } d  } | j t j k r[| j } | d  k	 ra| j } | j |  n d  } | | _ | | _ | | _ | | _ | j t j k r| | _ n5 | | _ | d  k	 r| j |  | r| j |  | S)Nz?cannot rename nodes from other documents;
expected %s,
found %sz8renameNode() only applies to element and attribute nodesr   r(   r   zillegal use of 'xmlns' prefixz$illegal use of the 'xmlns' attribute)rO   r/   r0   rO  r   r	   rJ   r   r|  r   r   r   r   r   r   r   ru   r   rt   r   r   r   r   r  )r   r   rt   r   ru   ry   r  Zis_idr
   r
   r   
renameNode  sR    														zDocument.renameNode)r\  rR  r[  r$   rY  )=rq   rr   rs   r   r	   rJ   r   r   rC  r.   rG  rR   r   r   r   r   r   r3   r=   r<   r=  r   rb  rU   rd  r`  r^  r   r   r   rD  r]  r_  rE  ra  rc  re  rF  r5   r4   rf  rH   rQ   rh  ri  rk  rl  rm  ro  rq  rQ  rr  rs  rt  r{  r   r   rV   r}  r   r~  r
   r
   r
   r   rU    sh    		
	
:rU  rg  z#Top-level element of this document.c             C   s  |  j  j |  r$ t j j j } n t j j j } |  j t j	 k r | j
 |  j |  j  } xW |  j j   D]F } | j | j | j | j  | j | j | j  } | j | _ qm W| rx|  j D]% } t | | |  } | j |  q Wn|  j t j k rM| j   } | rx|  j D]% } t | | |  } | j |  q!Wnv|  j t j k rt| j |  j  } nO|  j t j k r| j |  j  } n(|  j t j k r| j |  j  |  j  } n|  j t j! k r| j" |  j  } n|  j t j# k r1| j$ |  j |  j  } d | _ |  j | _ n|  j t j% k rt j j j } | j& j' |  j( |  j) |  j*  } | | _  | rg  | j+ _, g  | j- _, xm |  j- j, D]_ }	 t. |	 j |	 j) |	 j*  }
 | |
 _  | j- j, j/ |
  t0 |	 d  r|	 j1 | |	 |
  qWx |  j+ j, D] } t2 | j | j) | j* | j3  } | j4 | _4 | j5 | _5 | j6 | _6 | | _  | j+ j, j/ |  t0 | d  r| j1 | |	 |  qWn t j j7 d t8 |     t0 |  d  r|  j1 | |  |  | S)NTrk   zCannot clone node %s)9rO   rY   r/   r0   r8  r9  ZNODE_IMPORTEDr   r	   rJ   rQ  rt   r   r   r   r   r   r   ry   r   r$   rN   r5   r+   rh  rF   rk  rG   r   rl  r   ro  r  r   rm  r   rr  rC  rR   rT  r   r.  r/  r4  r+  r5  r:  rI   rd   rk   r;  r<  r=  r   rU   r|  r2   )rA   rP   ZnewOwnerDocumentrh   r>  r   rp  rM   r@   r   r?  r@  rA  r
   r
   r   rN   A  s|    					rN   c             C   s:   |  j  d d  } t |  d k r( | Sd  | d f Sd  S)Nr   r(      r   )r   r   )r   Zfieldsr
   r
   r   r     s    r   c             C   s<   |  | |   } | j    \ } } | j |  | j   | S)N)ZgetEventZ
expandNoderZ  )funcargskwargseventsZtoktypeZrootNoder
   r
   r   _do_pulldom_parse  s
    
r  c             C   sf   | d  k r0 | r0 d d l  m } | j |   Sd d l  m } t | j |  f d | d | i  Sd  S)Nr   )expatbuilder)pulldomparserbufsize)xml.domr  parser  r  )filer  r  r  r  r
   r
   r   r    s    r  c             C   sY   | d  k r) d d l  m } | j |   Sd d l  m } t | j |  f d | i  Sd  S)Nr   )r  )r  r  )r  r  parseStringr  r  )stringr  r  r  r
   r
   r   r    s    r  c             C   s[   |  rT t  |  t  r$ t j |   }  x- |  D]% \ } } t j j | |  s+ d  Sq+ Wt j S)N)r   r   r   Z_parse_feature_stringrU  rR   rS   )Zfeaturesfvr
   r
   r   getDOMImplementation  s    r  )6r   r  r/   r   r   r   r   Zxml.dom.minicompatZxml.dom.xmlbuilderr   r   r0   r	   rJ   r   r9   ZdefpropertyrB   rz   r   r   r   r   r   objectr   ZAttributeListr   r   r   r   r	  r
  r  r   r$  r  r'  r(  r*  r-  r3  r;  r:  rG  rV  r:   rU  rN   r   r  r  r  r  r
   r
   r
   r   <module>   s   "

	y)GU	><(	O* OR

