JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbro h&^@s gdZddlZddlZddlZddlZddlmZddlmZ e j Z dZ dZ dZ dZd Zd Zd Ze d Ze d ZedejejBZedZedZejjZddZ  dddZGdddZGdddZGddde Z!dS))Header decode_header make_headerN)HeaderParseError)charset   z Nz us-asciizutf-8ai =\? # literal =? (?P[^?]*?) # non-greedy up to the next ? is the charset \? # literal ? (?P[qQbB]) # either a "q" or a "b", case insensitive \? # literal ? (?P.*?) # non-greedy up to the next ?= is the encoded string \?= # literal ?= z[\041-\176]+:$z \n[^ \t]+:c Cs t|drdd|jDSt|s|dfgSg}|D]A}t|}d}|r_|d}|r6|}d}|r@||ddf|r]|d }|d }|d}||||f|s)qg} t |D]%\} } | dkr| dr|| ddr|| dd r| | dqft | D]} || =qg} |D][\}}}|dur| ||fq|d krt j|}| ||fq|d krt|d }|r|d dd |7}zt j|}Wn tjytd w| ||fqtd|g}d}}| D]:\}}t|tr t|d}|dur|}|}q||kr(|||f|}|}q|dur4|t|7}q||7}q|||f|S)N_chunkscSs(g|]\}}t|t|t|fqS)_charsetZ_encodestr).0stringrrr3/opt/alt/python310/lib64/python3.10/email/header.py Msz!decode_header..TrFqbz===zBase64 decoding errorzUnexpected encoding: zraw-unicode-escape)hasattrr ecresearch splitlinessplitpoplstripappendlower enumerateisspacereversedemail quoprimimeZ header_decodelenZ base64mimedecodebinasciiErrorrAssertionError isinstancerbytesBSPACE)headerZwordslinepartsfirstZ unencodedrencodingZencodedZdroplistnwdZ decoded_wordsZencoded_stringZwordZpaderrZ collapsedZ last_word last_charsetrrrr=s       4           rcCsH t|||d}|D]\}}|durt|tst|}|||q |S)N) maxlinelen header_namecontinuation_ws)rr-Charsetr!)Z decoded_seqr9r:r;hsrrrrrs  rc@sPeZdZ   dddZddZdd Zdd d Zd d ZdddZddZ dS)rNrstrictcCs |durt}n t|tst|}||_||_g|_|dur%|||||dur+t}||_|dur7d|_ dSt |d|_ dS)Nrr) USASCIIr-r<r_continuation_wsr r! MAXLINELEN _maxlinelen _headerlenr()selfr>rr9r:r;errorsrrr__init__s   zHeader.__init__c Cs |g}d}d}|jD]O\}}|}|tjkr%|dd}|dd}|rM|o/||d}|dvrB|dvrA|sA|td}n |dvrM|sM|t|oU||d}|}||qt |S)NasciisurrogateescapereplacerNr ) _normalizer r UNKNOWN8BITencoder) _nonctextr!SPACE EMPTYSTRINGjoin) rEZuchunkslastcs lastspacerrZnextcsZoriginal_byteshasspacerrr__str__s.         zHeader.__str__cCs |t|kSN)r)rEotherrrr__eq__s z Header.__eq__cCs |dur |j}n t|tst|}t|ts.|jpd}|tjkr(|dd}n|||}|jp2d}|tjkrQz|||Wnt yP|dkrLt }Ynw|j ||fdS)Nr rI) rr-r<rZ input_codecrNr)Z output_codecrOUnicodeEncodeErrorUTF8r r!)rEr>rrFZ input_charsetZoutput_charsetrrrr! s(        z Header.appendcCs |p|dvS)N)()\)r$)rEr>rrrrP4szHeader._nonctext;, rcCs ||dur |j}|dkrd}t|j||j|}d}d}}|jD]\}} |durN|o4||d}|dvrD|r?| dvrC|n | dvrN|sN||oV||d}| }d}|} | rk| d| d| n| dd| | ddD]/} | | j dur| |jd| | qx| } | dt | t | } | | | | qxt | dkr| q$|jr|||}t|rtd ||S) Nri@BrKrLFr rrz8header value appears to contain an embedded header: {!r})rMrC_ValueFormatterrDrAr rPadd_transitionrfeednewlineheader_encodingr r(_str_embedded_headerrrformat)rE splitcharsr9linesepZ formatterrTrVrUrrlinesr1ZslinefwsvaluerrrrO9s^       z Header.encodecCsxg}d}g}|jD]!\}}||kr||q |dur%|t||f|g}|}q |r7|t||f||_dSrX)r r!rQrS)rEZchunksr8Z last_chunkrrrrrrMs  zHeader._normalize)NNNNrr?)Nr?)r`Nr) __name__ __module__ __qualname__rGrWrZr!rPrOrMrrrrrs / +  Prc@sTeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)racCs0||_||_t||_||_g|_t||_dSrX)_maxlenrAr(_continuation_ws_len _splitchars_lines _Accumulator _current_line)rEZ headerlenmaxlenr;rirrrrGs  z_ValueFormatter.__init__cCs|||jSrX)rdrSrt)rErjrrrrfs z_ValueFormatter._strcCs |tSrX)rfNLrErrrrW z_ValueFormatter.__str__cCsv|j}|dkr|jj|t|jdkr4|jr+|jr+|jdt|j7<n |jt|j|jdS)N)rr rrL) rvrpushr( is_onlywsrtrr!reset)rEZ end_of_linerrrrds  z_ValueFormatter.newlinecCs|jdddS)Nrr )rvr{ryrrrrbz_ValueFormatter.add_transitioncCs|jdur||||jdS|||}z|d}Wn ty(YdSw|dur3|||z|}Wn tyCYdSw||j |j ||D] }|j |j |qRdSNr)re _ascii_splitrsZheader_encode_lines _maxlengthsr IndexError _append_chunkrdrvr{rArtr!)rErlrrZ encoded_linesZ first_line last_liner1rrrrcs*     z_ValueFormatter.feedccs&|jt|jV |j|jVq rX)rqr(rvrrryrrrrs z_ValueFormatter._maxlengthscCsftdtd||}|drdg|dd<n|dtt|gdD] \}}|||q&dS)Nz([z]+)rr r)rerFWSrzipiterr)rErlrrir2partrrrrs z_ValueFormatter._ascii_splitcCs|j||t|j|jkr|jD]:}t|jdddD]*}|r6|j|d}|r6|d|kr6n|j|dd}|rI|d|krInqqn|j\}}|jj dkrb| |sbd}|j||dS|j |}|j t|j|j|dSdS)NrrrLr)rvr{r(rqrsrange part_countr$r _initial_sizerdpop_fromrtr!rr})rErlrZchiZprevpartrZ remainderrrrrs2   z_ValueFormatter._append_chunkN) rnrorprGrfrWrdrbrcrrrrrrrras % racsjeZdZdfdd ZddZdddZfdd Zd d Zd d ZdddZ ddZ fddZ Z S)rurcs||_tdSrX)rsuperrG)rEZ initial_size __class__rrrGsz_Accumulator.__init__cCs|||fdSrX)r!)rErlrrrrr{#r~z_Accumulator.pushcCs||d}g||d<|SrXr)rErZpoppedrrrr&s  z_Accumulator.pop_fromcs|dkrdStS)Nr)r r )rrrryrrrr+s  z_Accumulator.popcCstdd|D|jS)Ncss$|] \}}t|t|VqdSrX)r(rrlrrrr 1s"z'_Accumulator.__len__..)sumrryrrr__len__0sz_Accumulator.__len__cCstdd|DS)Ncss"|] \}}t||fVqdSrXrRrSrrrrr5sz'_Accumulator.__str__..rryrrrrW4s z_Accumulator.__str__NcCs"|durg}||dd<d|_dSr)r)rEZstartvalrrrr}8s  z_Accumulator.resetcCs|jdko | p t|Sr)rrr$ryrrrr|>sz_Accumulator.is_onlywscs tSrX)rrryrrrrArzz_Accumulator.part_count)rrX) rnrorprGr{rrrrWr}r|r __classcell__rrrrrus   ru)NNr)"__all__rr*Zemail.quoprimimer&Zemail.base64mimeZ email.errorsrrrr<rxrQr/ZSPACE8rRrBrr@r\compileVERBOSE MULTILINErZfcrergr'Z _max_appendrrrralistrurrrrsB    _ k