JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr j f-@sddlZddlZdZdZdZdZdZdZdZ d Z Gd d d ej j Z Gd d d ZGdddZGddde ZdZddddZdddZdS)N START_ELEMENT END_ELEMENTCOMMENTSTART_DOCUMENT END_DOCUMENTPROCESSING_INSTRUCTIONIGNORABLE_WHITESPACE CHARACTERSc@seZdZdZdZdddZddZddZdd Zd d Z d d Z ddZ ddZ ddZ ddZddZddZddZddZddZd d!Zd"d#ZdS)$PullDOMNc Csddlm}||_ddg|_|j|_g|_|jj|_y|jj|_Wnt k rsYnXid|6g|_ |j d|_ g|_ dS)Nr) XML_NAMESPACExml) Zxml.domr documentFactory firstEvent lastEvent elementStackappendpushpopAttributeError _ns_contexts_current_contextpending_events)selfrr r4/opt/alt/python34/lib64/python3.4/xml/dom/pulldom.py__init__s    zPullDOM.__init__cCs|jd}|jd=|S)Nr rr)r)rresultrrrr!s  z PullDOM.popcCs ||_dS)N)_locator)rZlocatorrrrsetDocumentLocator&szPullDOM.setDocumentLocatorcCsgt|dsg|_n|jj|p-d|f|jj|jj|pYd|j|rrrprocessingInstructions  zPullDOM.processingInstructioncCs?|jj|}t|fdg|jd<|jd|_dS)Nr )r+createTextNoderr)rcharsr6rrrignorableWhitespaceszPullDOM.ignorableWhitespacecCs?|jj|}t|fdg|jd<|jd|_dS)Nr )r+rDr r)rrEr6rrr charactersszPullDOM.characterscCs7|jdkr3ddl}|jjjj|_ndS)Nr)rZxml.dom.minidomZdomZminidomZDocumentimplementation)rr rrr startDocuments zPullDOM.startDocumentc Cs8|jj||d}||_t|fdg|jd<|jd|_|j|x|jD]}|ddtkr|d\}}}|jj||}t|f|dparentstokenZcur_noderrr expandNodes         zDOMEventStream.expandNodecCs|jjds%|jj|j_nxP|jjdsw|jj|j}|sd|jjdS|jj|q(W|jjdd}|jjdd|jjd<|S)Nr r) rarrr[readr]r\closerZ)rbufrerrrr_s zDOMEventStream.getEventcCs)|jj|j|j|_|jS)z Fallback replacement for getEvent() using the standard SAX2 interface, which means we slurp the SAX events into memory (no performance gain, but we are compatible to all SAX parsers). )r\parser[_emitr_)rrrrr^s zDOMEventStream._slurpcCs6|jjdd}|jjdd|jjd<|S)zn Fallback replacement for getEvent() that emits the events that _slurp() read previously. r r)rar)rrerrrrrszDOMEventStream._emitcCs)|jj|`d|_d|_dS)z+clear(): Explicitly release parsing objectsN)rarOr\r[)rrrrrOs  zDOMEventStream.clearN) rPrQrRrr`rfrhrirmr_r^rrrOrrrrrYs         rYc@sLeZdZddZddZddZddZd d Zd S) SAX2DOMcCsAtj|||||jd}|jd}|j|dS)Nr r)r r8rrj)rr2r3r4curNode parentNoderrrr8#s  zSAX2DOM.startElementNScCs>tj||||jd}|jd}|j|dS)Nr rtrru)r r:rrj)rr2r4rvrwrrrr:)s  zSAX2DOM.startElementcCsBtj||||jdd}|jd}|j|dS)Nrr r)r rCrrrj)rrArBr6rwrrrrC/s zSAX2DOM.processingInstructioncCs?tj|||jdd}|jd}|j|dS)Nrr r)r rFrrrj)rrEr6rwrrrrF5s zSAX2DOM.ignorableWhitespacecCs?tj|||jdd}|jd}|j|dS)Nrr r)r rGrrrj)rrEr6rwrrrrG;s zSAX2DOM.charactersN)rPrQrRr8r:rCrFrGrrrrrs!s     rsrtcCsd|dkrt}nt|tr6t|d}n|}|sTtjj}nt|||S)Nrb)default_bufsize isinstancestropenr rb make_parserrY)Zstream_or_stringr\r]r[rrrrqDs  rqcCsPddlm}t|}||}|s@tjj}nt|||S)Nr)StringIO)iorlenr rbrrY)stringr\rr]rprrr parseStringOs   ri@i?)Zxml.saxr Zxml.sax.handlerrrrrrrrr rbZContentHandlerr rSrYrsr{rqrrrrrs  U!