f^ gdZddlZddlZddlZddlZddlmZddlmZ e j Z dZ dZ dZ dZd Zd Zd Ze d Ze d ZejdejejzZejdZejdZejjZdZ ddZGddZGddZGdde 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 t|drd|jDSt|s|dfgSg}|D]}t|}d}|r|d}|r|}d}|r||ddf|r{|d }|d }|d}||||f|ƌg} t|D]_\} } | dkrT| drL|| dz dr;|| dz d r| | dz `t| D]} || =g} |D]\}}}|| ||f |dkr7tj|}| ||f]|d kr~t!|d z}|r|d dd |z z } tj|}| ||f#t&j$rt+d wxYwt-d |zg}dx}}| D]h\}}t/|t0rt3|d}||}|}1||kr|||f|}|}S||t4|zz }c||z }i|||f|S)N_chunkscvg|]6\}}tj|t|t|f7S)_charset_encodestr).0stringrs 3/opt/alt/python311/lib64/python3.11/email/header.py z!decode_header..KsJ;;;'!&#g,,77WF;;;TrFqbz===zBase64 decoding errorzUnexpected encoding: zraw-unicode-escape)hasattrrecresearch splitlinessplitpoplstripappendlower enumerateisspacereversedemail quoprimime header_decodelen base64mimedecodebinasciiErrorrAssertionError isinstancerbytesBSPACE)headerwordslinepartsfirst unencodedrencodingencodeddroplistnwd decoded_wordsencoded_stringwordpaderr collapsed last_word last_charsets rrr;s vy!!;;;+1>;;; ; ;;v    E!!##;; 4   ; ! I %,,..  6 it4555 ;))A,,,,.. 99Q<<--//))A,, gx9::: ;H%  !!1 Q331Q43E!A#JqM3eAaCjm.C.C.E.E3 OOAaC h   !HH M-2EE)'    .'!: ; ; ; ; __#11.AAD  $ 1 1 1 1 __((1,F 5% V "44 6'..~>>$$dG_5555> @ @ @&'>??? @ !!88!CDD DI##I &   g dC  5344D  I"LL  $ $   i6 7 7 7I"LL  ! $ &II  II i./// s JJ'c t|||}|D]A\}}|$t|tst|}|||B|S)N) maxlinelen header_namecontinuation_ws)rr4Charsetr&) decoded_seqrKrLrMhsrs rrrsu  *+. 0 0 0A! 7  z'7'C'C g&&G G HrcDeZdZ d dZdZdZddZdZdd Zd Z dS)rNr strictc$ |t}n$t|tst|}||_||_g|_||||||t}||_| d|_ dSt|dz|_ dS)Nrr) USASCIIr4rNr_continuation_wsrr& MAXLINELEN _maxlinelen _headerlenr.)selfrQrrKrLrMerrorss r__init__zHeader.__init__s 4 ?GGGW-- 'g&&G / = KK7F + + +  #J%  DOOO"+..2DOOOrc6 |g}d}d}|jD]\}}|}|tjkr,|dd}|dd}|rd|o||d}|dvr#|dvr|s|td}n |dvr|s|t|o||d}|}||t |S)NasciisurrogateescapereplacerNr ) _normalizerr UNKNOWN8BITencoder0 _nonctextr&SPACE EMPTYSTRINGjoin) rZuchunkslastcs lastspacerrnextcsoriginal_byteshasspaces r__str__zHeader.__str__s94  #| # #OFGF---!'w8I!J!J'..w BB *!?dnnVAY&?&?!333!333H3u---!%#555i5NN5)))=4>>&*#=#=IF NN6 " " " "(((rc(|t|kSN)r)rZothers r__eq__z Header.__eq__sD !!rc ||j}n$t|tst|}t|tsF|jpd}|tjkr|dd}n|||}|jpd}|tjkr6 |||n#t$r|dkrt}YnwxYw|j ||fdS)Nr r_) rr4rNr input_codecrdr0 output_codecreUnicodeEncodeErrorUTF8rr&)rZrQrr[ input_charsetoutput_charsets rr&z Header.appends ( ?mGGGW-- 'g&&G!S!! 4#/=:M 444HHZ):;;HH]F33!-; X1 1 1 0000%   !:--  QL)))))s%B<<CCc4 |p|dvS)N)()\)r))rZrQs rrfzHeader._nonctext0s  yy{{3a#333r;, rc |||j}|dkrd}t|j||j|}d}dx}}|jD]\}} |V|o||d}|dvr|r| dvr|n| dvr|s||o||d}| }d}|} | r| d| d| n| dd| | ddD]} | | j 2| |jd| z| O| } | dt| t| z } | | | | t| dkr| |jr|||}t|r"t#d ||S) Nri@BrarbFr rr z8header value appears to contain an embedded header: {!r})rcrX_ValueFormatterrYrVrrfadd_transitionr"feednewlineheader_encodingr%r._str_embedded_headerr!rformat)rZ splitcharsrKlinesep formatterrkrorlrrlinesr9slinefwsvalues rrez Header.encode5s @   )J ?? J#DOZ$($9:GG ##9#| $ $OFG#!?dnnVAY&?&?!333#3w6H'H'H!00222$666y6,,...=4>>&*#=#=IFH%%''E 0r58W5555r2w///abb  8 8!!###*6NN4#8# :M#*,,,,!KKMME4D #e** 445CNN3w77775zzA~~!!### < '  $ $ & & &w''  " "5 ) ) :"$++16%==:: : rc@g}d}g}|jD]W\}}||kr||!|/|t||f|g}|}X|r/|t||f||_dSrr)rr&rgri)rZchunksrI last_chunkrrs rrczHeader._normalizes  #| ' 'OFG,&&!!&))))+MM5::j#9#9<"HIII$X &  B MM5::j11<@ A A A r)NNNNr rS)NrS)rNr) __name__ __module__ __qualname__r\rprtr&rfrercrrrrrs'+.2-5-3-3-3-3^)))@""" )*)*)*)*V444 NNNN`rrcDeZdZdZdZdZdZdZdZdZ dZ d Z d S) rc||_||_t||_||_g|_t ||_dSrr)_maxlenrVr._continuation_ws_len _splitchars_lines _Accumulator _current_line)rZ headerlenmaxlenrMrs rr\z_ValueFormatter.__init__sF /$'$8$8!% ))44rc^|||jSrr)rrir)rZrs rrz_ValueFormatter._strs# ||DK(((rc6|tSrr)rNLrZs rrpz_ValueFormatter.__str__syy}}rc|j}|dkr|jj|t|jdkrt|jr/|jr(|jdxxt |jz cc<n,|jt |j|jdS)N)r r rrb) rr$pushr. is_onlywsrrr&reset)rZ end_of_lines rrz_ValueFormatter.newlines(,,.. ) # # #D  #[ 1 1 t! " "Q & &!++-- <$+ < B3t'9#:#:: ""3t'9#:#:;;;   """""rc<|jdddS)Nr r )rrrs rrz_ValueFormatter.add_transitions! R(((((rc$|j||||jdS|||} |d}n#t $rYdSwxYw|||| |}n#t $rYdSwxYw||j |j ||D]$}|j |j |z%dSNr)r _ascii_splitrheader_encode_lines _maxlengthsr$ IndexError _append_chunkrrrrVrr&)rZrrr encoded_lines first_line last_liner9s rrz_ValueFormatter.feedsI  " *   c64+; < < < F 33FD>q@!RHH  Azz||""03A6"3q62::!E#1!A#6q9HHRL"$4$4 .2244 T%3a77LLNNN"""''T222*33A66I K  s4#566 7 7 7   $ $Y / / / / /9 2 1rN) rrrr\rrprrrrrrrrrrrs555))) # # #)))#=#=#=J;;; ***,00000rrc\eZdZd fd ZdZd dZfdZdZdZd d Z d Z fd Z xZ S)rrcV||_tdSrr)rsuperr\)rZ initial_size __class__s rr\z_Accumulator.__init__s') rc4|||fdSrr)r&)rZrrs rrz_Accumulator.pushs S&M"""""rc(||d}g||d<|Srrr)rZrpoppeds rrz_Accumulator.pop_from!s!abbQRR rcx|dkrdStS)Nr)r r )rrr$rZrs rr$z_Accumulator.pop&s/ ??  a  8ww{{}}rc@td|D|jS)Nc3ZK|]&\}}t|t|zV'dSrr)r.rrrs r z'_Accumulator.__len__..,s7==93CHHSYY&======r)sumrrs r__len__z_Accumulator.__len__+s+=====%'' 'rcJtd|DS)Nc3TK|]#\}}t||fV$dSrrrhrirs rrz'_Accumulator.__str__..0sL!7!7$-C"-!1!13+!>!>!7!7!7!7!7!7rrrs rrpz_Accumulator.__str__/s6!7!715!7!7!788 8rNc*|g}||dd<d|_dSr)r)rZstartvals rrz_Accumulator.reset3s(  HQQQrc`|jdko#| p t|Sr)rrr)rs rrz_Accumulator.is_onlyws9s.!1$Jd(*Ic$ii6G6G6I6IJrcDtSrr)rrrs rrz_Accumulator.part_count<sww   r)rrr) rrrr\rrr$rrprrr __classcell__)rs@rrrs###  '''888 KKK!!!!!!!!!rr)NNr )"__all__rr1email.quoprimimer+email.base64mime email.errorsrrrrNrrgr6SPACE8rhrWrrUrycompileVERBOSE MULTILINEr fcrerr, _max_appendrrrrlistrrrrrs 2     ))))))%%%%%%          '*  wwrz zBL ""rz#$$2:m,,* [[[|;? #    ,ffffffffR}0}0}0}0}0}0}0}0@%!%!%!%!%!4%!%!%!%!%!r