f& gdZddlZddlmZmZmZdZdZdZde dDZ e ddZ e ddZ d ej d zej d zD]Zeee e<d e ed <d D]Zeee e<dZdZdZdZddZdZdZddZe ddZdD]Zeeee<[defdZefdZeZeZdZdZdS)) body_decode body_encode body_lengthdecode decodestring header_decode header_encode header_lengthquoteunquoteN) ascii_lettersdigits hexdigits  cg|]}d|zS)z=%02X).0cs 7/opt/alt/python311/lib64/python3.11/email/quoprimime.py r7s///qw{///s-!*+/ascii_ s_ !"#$%&'()*+,-./0123456789:;<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ c@ t|t|kSN)chr_QUOPRI_HEADER_MAPoctets r header_checkr$JsH u::+E2 22rc@ t|t|kSr)r _QUOPRI_BODY_MAPr"s r body_checkr'OsF u::)%0 00rc6 td|DS)Nc3JK|]}tt|VdSr)lenr!rr#s r z header_length..^s0EE%s%e,--EEEEEErsum bytearrays rr r Ts& EE9EEE E EErc6 td|DS)Nc3JK|]}tt|VdSr)r*r&r+s rr,zbody_length..hs0CCs#E*++CCCCCCrr-r/s rrras& CCCCC C CCrcnt|tst|}|s)||dSt |dt |z|kr|dxx||zz cc<dS||dS)N) isinstancestrr appendlstripr*)Lsmaxlenextras r _max_appendr=ks a   FF   QrUc!ff  & & " rcN tt|dddS)N)r intr:s rr r vs#N s1QqS62  rc6tt|Sr) _QUOPRI_MAPord)rs rr r {s s1vv r iso-8859-1cx |sdS|dt}d|d|dS)Nrlatin1z=?z?q?z?=)r translater!) header_bytescharsetencodeds rrrsO  r!!(++556HIIGG$GGWWW --rs LcJ |dkrtd|s|S|t}d|z}|dz }g}|j}|D]}d}t |dz |z } || krv||z} || dz dkr|||| dz | dz }n@|| dz dkr|||| | dz }n|||| dz| }|| kv|rm|ddvrc|| z } | d krt |d} n*| dkr |d|z} n|t |dz} |||d| z|||d|dtvr |d ||S) Nzmaxlinelen must be at least 4=r?r r4z r@r) ValueErrorrJ_QUOPRI_BODY_ENCODE_MAPr7 splitlinesr*r CRLFjoin) body maxlineleneol soft_break maxlinelen1 encoded_bodyr7linestart laststartstoproomqs rrrs"$A~~8999   >>1 2 2DsJq.KL  F!!!!!!IIMJ. y  ;&DD1H~$$tE$(N+,,,qdQh3&&tE$J'(((qtE$J'#-...y    !DH%%9$Dqyy$r(OOHz)tBx0 F4b>A% & & & & F4<  Bx4r 88L ! !!rc  |s|Sd}|D]}|}|s||z }d}t|}||kr||}|dkr ||z }|dz }ni|dz|kr|dz }.|dz|krG||dztvr5||dztvr#|t |||dzz }|dz }n ||z }|dz }||kr||z }||k|ddvr||r |dd}|S) Nrr rQr?rRr@r4r)rUrstripr*rr endswith)rMrZdecodedr^inrs rrrsu G""$${{}}  sNG   II!eeQACxx1 Q1Q1qT!A#Y)33QqS Y8N8N74!A#;///Q1 QAvv3)!ee,r{&  W%5%5c%:%: #2#, NrcL |d}t|S)Nr )groupr )matchr:s r_unquote_matchrms M AA 1::rc~ |dd}tjdt|tjS)Nrrz=[a-fA-F0-9]{2})flags)replaceresubrmASCIIrCs rrr$s8 #sA 6$narx H H HHr)r)rG) __all__rqstringr rrrVNL EMPTYSTRINGrangerEr!r&encoderr rFr$r'r rr=r r rrTrrrrrmrrrrrzsE 0    3333333333   0/EE#JJ///  ^qqq> (M(11 1MFM'4J4J J##ACFFq"33s88 .!!A#a&&Q 333 111 F F FDDD   ....*+111- ((A!$QA!#I"I"I"I"^,,,,`  IIIIIr