]$^ @ sX d d d g Z d d l Z d d l Z d d l Z d d l Z d d l m Z d d l m Z e j
Z
d Z d Z d Z
d Z d Z d Z d
Z e
d Z e
d Z e j d e j e j Be j B Z e j d Z e j d Z e j j Z d d Z d d d d d Z Gd d d Z Gd d d Z Gd d d e! Z" d S)Header
decode_headermake_header N)HeaderParseError)charset
N z zus-asciizutf-8ai
=\? # literal =?
(?P[^?]*?) # non-greedy up to the next ? is the charset
\? # literal ?
(?P[qb]) # 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 C s t | d r# d d | j D St j | s? | d f g Sg } x | j D] } t j | } d } x | r| j d } | r | j } d } | r | j | d d f | rp | j d j } | j d j } | j d } | j | | | f qp WqR Wg } xk t
| D]] \ }
} |
d k r)| d r)| |
d d r)| |
d d j r)| j |
d q)Wx t | D]
} | | =qWg }
x| D] \ } } } | d k r|
j | | f q| d k rt
j j | } |
j | | f q| d
k rt | d } | rT| d d d | 7} y t
j j | } Wn! t j k
rt d
YqX|
j | | f qt d | qWg } d } } x |
D] \ } } t | t rt | d } | d k r| } | } q| | k rB| j | | f | } | } q| d k r_| t | 7} q| | 7} qW| j | | f | S)N_chunksc S s: g | ]0 \ } } t j | t | t | f q S )_charsetZ_encodestr).0stringr r r +/opt/alt/python35/lib64/python3.5/header.py
M s z!decode_header..Tr F qb z===zBase64 decoding errorzUnexpected encoding: zraw-unicode-escape)hasattrr
ecresearch
splitlinessplitpoplstripappendlower enumerateisspacereversedemail
quoprimimeZ
header_decodelenZ
base64mimedecodebinasciiErrorr AssertionError
isinstancer bytesBSPACE)headerZwordslinepartsfirstZ unencodedr encodingencodedZdroplistnwdZ
decoded_wordsZencoded_stringZwordZpaderrZ collapsedZ last_wordlast_charsetr r r r = sz
@
c C sn t d | d | d | } xL | D]D \ } } | d k rV t | t rV t | } | j | | q" W| S)N
maxlinelenheader_namecontinuation_ws)r r- Charsetr! )Zdecoded_seqr: r; r<