-í
ç¶<c       sÆ    d  Z    d Z  d Z  d Z  d k Z   d d d d g Z " e i d	 e i ƒ Z # e i d
 e i ƒ Z	 $ e i d e i e i
 Bƒ Z % e i d e i e i
 Bƒ Z & e i d ƒ Z ' e i d e i ƒ Z ( e i d e i ƒ Z ) e i d e i ƒ Z + d f  d „  ƒ  YZ C d f  d „  ƒ  YZ Z d „  Z g d „  Z v d d „ Z Ë d d „ Z Ý e i d ƒ Z Þ e i d ƒ Z à d „  Z  e i d ƒ Z d „  Z e i d e i ƒ Z e i d  e i ƒ Z e i d! ƒ Z d" „  Z ›d# „  Z  ­d k! Z! ®e" d$ j p' e# e! i$ ƒ d j o e! i$ d d j ob¯d k% Z% °d% Z& ²d Z' ³e% i% e! i$ d& d' ƒ \ Z( Z) ´e# e) ƒ d d& d( f j o µe& GH¶e! i* d& ƒ n ·d) d* f e( j d+ d* f e( j j p# d, d* f e( j o d+ d* f e( j o ¹e& GHºe! i* d& ƒ n »xÏ e( D»]Ä \ Z+ Z, ¼e+ d) j o ½e  Z- nœ ¾e+ d+ j o ¿e Z- n Àe+ d- j oQ Áy Âe. e, ƒ Z Wn4 Ãe/ e0 f j
 o Äe& GHÅe! i* d& ƒ n Xn Æe+ d, j o Çd& Z' n qOWÈe# e) ƒ d j o Ée! i1 e! i2 f Z3 nH Êe# e) ƒ d& j o Ëe) d e! i2 f Z3 n Íe) d e) d& f Z3 Îe' o Ïe3 e' f Z3 n Ðe4 e- e3 ƒ n d S(.   s¾  Mimification and unmimification of mail messages.

Decode quoted-printable parts of a mail message or encode using
quoted-printable.

Usage:
        mimify(input, output)
        unmimify(input, output, decode_base64 = 0)
to encode and decode respectively.  Input and output may be the name
of a file or an open file object.  Only a readline() method is used
on the input file, only a write() method is used on the output file.
When using file names, the input and output file names may be the
same.

Interactive usage:
        mimify.py -e [infile [outfile]]
        mimify.py -d [infile [outfile]]
to encode and decode respectively.  Infile defaults to standard
input and outfile to standard output.
iÈ   s
   ISO-8859-1s   > Ns   mimifys   unmimifys   mime_encode_headers   mime_decode_headers.   ^content-transfer-encoding:\s*quoted-printables$   ^content-transfer-encoding:\s*base64s0   ^content-type:.*multipart/.*boundary="?([^;"
]*)s:   ^(content-type:.*charset=")(us-ascii|iso-8859-[0-9]+)(".*)s   ^-*
s   =([0-9a-f][0-9a-f])s   =\?iso-8859-1\?q\?([^? 	
]+)\?=s   ^subject:\s+re: s   Filec      s,   + t  Z d  Z - / d „  Z 4 d „  Z RS(   s{   A simple fake file object that knows about limited read-ahead and
    boundaries.  The only supported method is readline().c    s+   / 0 | |  _  1 | |  _ 2 t |  _ d  S(   N(   s   files   selfs   boundarys   Nones   peek(   s   selfs   files   boundary(    (    s   /usr/lib/python2.2/mimify.pys   __init__/ s   c    sÁ   4 5 |  i t j	 o 6 d Sn 7 |  i i ƒ  } 8 | o 9 | Sn : |  i o` ; | |  i d j o < | |  _ = d Sn > | |  i d j o ? | |  _ @ d Sn n A | Sd  S(   Ns    s   
s   --
(   s   selfs   peeks   Nones   files   readlines   lines   boundary(   s   selfs   line(    (    s   /usr/lib/python2.2/mimify.pys   readline4 s   (   s   __name__s
   __module__s   __doc__s   __init__s   readline(    (    (    s   /usr/lib/python2.2/mimify.pys   File+ s   s
   HeaderFilec      s#   C t  Z D d „  Z H d „  Z RS(   Nc    s   D E | |  _  F t |  _ d  S(   N(   s   files   selfs   Nones   peek(   s   selfs   file(    (    s   /usr/lib/python2.2/mimify.pys   __init__D s   c    s  H I |  i t j	 o J |  i } K t |  _ n M |  i i ƒ  } N | o O | Sn P t i | ƒ o Q | Sn R xŒ R d o S |  i i ƒ  |  _ T t |  i ƒ d j p% |  i d d j o |  i d d j o V | Sn W | |  i } X t |  _ q~ Wd  S(   Ni   i    s    s   	(	   s   selfs   peeks   Nones   lines   files   readlines   hes   matchs   len(   s   selfs   line(    (    s   /usr/lib/python2.2/mimify.pys   readlineH s    
A(   s   __name__s
   __module__s   __init__s   readline(    (    (    s   /usr/lib/python2.2/mimify.pys
   HeaderFileC s   	c    s¸   Z [ \ d } ] d } ^ x‡ ^ d o| _ t i |  | ƒ } ` | t j o a Pn b | |  | | i d ƒ !t t	 | i
 d ƒ d ƒ ƒ } d | i d ƒ } q We | |  | Sd S(   s6   Decode a single line of quoted-printable text to 8bit.s    i    i   i   N(   s   newlines   poss	   mime_codes   searchs   lines   ress   Nones   starts   chrs   ints   groups   end(   s   lines   ress   newlines   pos(    (    s   /usr/lib/python2.2/mimify.pys   mime_decodeZ s   		 
9c    sÓ   g h i d } j d } k x¢ k d o— l t i |  | ƒ } m | t j o n Pn o | i d ƒ } q d i	 | i
 d ƒ ƒ } r | |  | | i d ƒ !t | ƒ } s | i d ƒ } q Wt | |  | Sd S(   s   Decode a header line to 8bit.s    i    i   s    s   _N(   s   newlines   poss	   mime_heads   searchs   lines   ress   Nones   groups   matchs   joins   splits   starts   mime_decodes   end(   s   lines   ress   newlines   poss   match(    (    s   /usr/lib/python2.2/mimify.pys   mime_decode_headerg s   		 
'i    c    ss  v w x t  }	 y d } z d } { d } | |  i o |  i d  t j o } t } n
  d } ‚ t	 |  ƒ } ƒ xmƒ d ob„ | i ƒ  } … | o † d Sn ‡ | o | t | ƒ  | j o  ˆ | t | ƒ } ‰ | }
 n
 ‹ d }
 Œ t | ƒ }  t i | ƒ o Ž d }  qv n  | o t i | ƒ o ‘ d } ’ qv n “ | i |
 | ƒ ” | o t i | ƒ o – d } n — t i | ƒ } ˜ | o ™ d | i d ƒ }	 n š t i | ƒ o › Pn qv Wœ | o | p |	 o  d } n   xa  d oV¡ |  i ƒ  } ¢ | o £ d Sn ¤ t i t d | ƒ } ¥ | o | t | ƒ  | j o  ¦ | t | ƒ } § | }
 n
 © d }
 ¬ xË ¬ |	 oÀ ­ | |	 d j o. ® | i |
 | ƒ ¯ t  }	 ° t  } ± Pn ² | |	 d	 j ob ³ | i |
 | ƒ ´ t |  |	 ƒ } µ t  | | | ƒ ¶ | i! } · | o ¹ Pn º q¥n ¼ Pq¥W½ | o | oŒ ¾ xs ¾ | d
 d j o^ ¿ | d
  } À |  i ƒ  } Á | t t ƒ  t j o Â | t t ƒ } n Ã | | } q‡WÄ t# | ƒ } n Å | o | o |
 o" Æ d k$ } Ç | i% | ƒ } n È | o É | i |
 | ƒ n qWd S(   s?   Convert a quoted-printable part of a MIME mail message to 8bit.i    i   s    i   Ns   --s   \1s   --
s   
iþÿÿÿs   =
(&   s   Nones	   multiparts   quoted_printables	   is_base64s   is_repls   ifiles   boundarys   QUOTEs   prefixs
   HeaderFiles   hfiles   readlines   lines   lens   prefs   mime_decode_headers   qps   matchs   decode_base64s	   base64_res   ofiles   writes   repls   mps   mp_ress   groups   hes   res   subs	   mime_heads   Files   nifiles   unmimify_parts   peeks   newlines   mime_decodes   base64s   decodestring(   s   ifiles   ofiles   decode_base64s   nifiles   is_repls	   is_base64s   newlines   base64s   prefixs	   multiparts   prefs   lines   mp_ress   quoted_printables   hfile(    (    s   /usr/lib/python2.2/mimify.pys   unmimify_partv s–   				!	 
!		
	

 
!	 
		
	 
c 	   s)  Ë Ì Í t  |  ƒ t  d ƒ j o Î t |  ƒ } Ï t  | ƒ t  d ƒ j o
 |  | j oQ Ð d k } Ñ | i i |  ƒ \ } } Ò | i
 |  | i i | d | ƒ ƒ n n
 Ô |  } Õ t  | ƒ t  d ƒ j o Ö t | d ƒ } n
 Ø | } Ù t | t ƒ } Ú t | | | ƒ Û | i ƒ  d S(   s>   Convert quoted-printable parts of a MIME mail message to 8bit.s    Ns   ,s   w(   s   types   infiles   opens   ifiles   outfiles   oss   paths   splits   ds   fs   renames   joins   ofiles   Files   Nones   nifiles   unmimify_parts   decode_base64s   flush(	   s   infiles   outfiles   decode_base64s   ifiles   nifiles   ds   fs   ofiles   os(    (    s   /usr/lib/python2.2/mimify.pys   unmimifyË s   ).		s   [=-ÿ]s   [=?-ÿ]c    sÖ  à â ã | o ä t } n
 æ t } ç d } è d } é t |  ƒ d j o |  d  d j o& ë d t d ƒ i	 ƒ  } ì d } n í xˆ í d o} î | i
 |  | ƒ } ï | t j o ð Pn ñ | |  | | i d ƒ !d t | i d ƒ ƒ i	 ƒ  } ó | i d ƒ } q‹ Wô | |  | }  ö d } ÷ x” ÷ t |  ƒ d j o} ø d	 } ù x; ù |  | d
 j p |  | d d
 j o ú | d } qXWû | d } ü | |  |  d } ý |  | }  q3Wþ | |  Sd S(   sZ   Code a single line as quoted-printable.
    If header is set, quote some extra characters.s    i    i   s   From s   =%02xs   Fi   iK   iI   s   =s   =
N(   s   headers   mime_header_chars   regs	   mime_chars   newlines   poss   lens   lines   ords   uppers   searchs   ress   Nones   starts   groups   ends   i(   s   lines   headers   is   ress   newlines   poss   reg(    (    s   /usr/lib/python2.2/mimify.pys   mime_encodeà s8   
			' 
:	 	 )s<   ([ 	(]|^)([-a-zA-Z0-9_+]*[-ÿ][-a-zA-Z0-9_+-ÿ]*)(?=[ 	)]|
)c    sÆ   d } d } x• d oŠ t i |  | ƒ } | t j o 	Pn 
d | |  | | i d ƒ !| i d ƒ t	 t
 | i d ƒ d ƒ f } | i d ƒ } q W| |  | Sd S(   s.   Code a single header line as quoted-printable.s    i    i   s   %s%s%s=?%s?Q?%s?=i   N(   s   newlines   poss   mime_headers   searchs   lines   ress   Nones   starts   groups   CHARSETs   mime_encodes   end(   s   lines   ress   newlines   pos(    (    s   /usr/lib/python2.2/mimify.pys   mime_encode_headers   		 
Gs   ^mime-version:s   ^content-transfer-encoding:s   [-ÿ]c    s'  d } }
 } t } d } } }	 g  } d } g  } d } t |  ƒ }  xC d o8!| i ƒ  } "| o #Pn $| o t i | ƒ o %d } n &t i | ƒ o 'd } n (t i | ƒ oM )d } *t i | ƒ o +d }
 n! ,t i | ƒ o -d } n n .t i | ƒ } /| o 0d | i d ƒ } n 1t i | ƒ o 2| } 3Pn 4| i | ƒ qj W7x¸7d o­8|  i ƒ  } 9| o :Pn ;| oN <| | d j o =| } >Pn ?| | d j o @| } APn n B| o C| i | ƒ Dq³n E|
 oŒ Fxs F| d d j o^ G| d  } H|  i ƒ  } I| t t  ƒ  t  j o J| t t  ƒ } n K| | } qkWLt! | ƒ } n M| i | ƒ N|	 o( Ot i | ƒ o Pd }	 } n n Q| o' Rt | ƒ t" j o Sd } n n q³WVx:| DV]/} W| o Xt# | ƒ } n Yt$ i | ƒ } Z| ov [|	 oO ]| i d	 ƒ i& ƒ  d
 j o, ^d | i d ƒ t' | i d ƒ f } n n cd | i d d ƒ } n d| o t i | ƒ oP ed } f| o g| d } n) h| o i| d } n k| d } n l| i) | ƒ quWm| p | o | oV n| i) d ƒ o| i) d ƒ p|	 o q| i) d t' ƒ n s| i) d ƒ n t| o | o u| i) d ƒ n v| i) | ƒ xxA | Dx]6 } y| o zt* | d ƒ } n {| i) | ƒ qZW|| i) | ƒ ~| } xm| ob€| | d j on ‚xd ‚d oY ƒ|  i ƒ  } „| o …d Sn †| o ‡t* | d ƒ } n ˆ| i) | ƒ qÚWn ‰| | d j o^ Št+ |  | ƒ } ‹t- | | d ƒ Œ| i. } | o Pn | i) | ƒ ‘q¶n “xd “d oY ”|  i ƒ  } •| o –d Sn —| o ˜t* | d ƒ } n ™| i) | ƒ qºWq¶Wd S(   s@   Convert an 8bit part of a MIME mail message to quoted-printable.i    s    i   s   --s   --
s   
iþÿÿÿs   =
i   s   us-asciis   %s%s%si   s   %sus-ascii%ss   Content-Transfer-Encoding: s   base64
s   quoted-printable
s   7bit
s   Mime-Version: 1.0
s   Content-Type: text/plain; s   charset="%s"
s   charset="us-ascii"
s,   Content-Transfer-Encoding: quoted-printable
N(/   s   has_ctes   is_qps	   is_base64s   Nones	   multiparts   must_quote_bodys   must_quote_headers   has_iso_charss   headers
   header_ends   messages   message_ends
   HeaderFiles   ifiles   hfiles   readlines   lines   iso_chars   searchs   mvs   matchs   is_mimes   ctes   qps	   base64_res   mps   mp_ress   groups   hes   appends   newlines   lens   QUOTEs   mime_decodes   MAXLENs   mime_encode_headers   chrsets
   chrset_ress   lowers   CHARSETs   ofiles   writes   mime_encodes   Files   nifiles   mimify_parts   peek(   s   ifiles   ofiles   is_mimes
   chrset_ress	   is_base64s   newlines   has_ctes   headers   nifiles   has_iso_charss   is_qps   messages   lines   must_quote_headers	   multiparts
   header_ends   message_ends   mp_ress   must_quote_bodys   hfile(    (    s   /usr/lib/python2.2/mimify.pys   mimify_partsö   					 
	
	 

		


 
 	


0	



 	
	 
 


 

c    s)  ›œt  |  ƒ t  d ƒ j o žt |  ƒ } Ÿt  | ƒ t  d ƒ j o
 |  | j oQ  d k } ¡| i i |  ƒ \ } } ¢| i
 |  | i i | d | ƒ ƒ n n
 ¤|  } ¥t  | ƒ t  d ƒ j o ¦t | d ƒ } n
 ¨| } ©t | t ƒ } ªt | | d ƒ «| i ƒ  d S(   s>   Convert 8bit parts of a MIME mail message to quoted-printable.s    Ns   ,s   wi    (   s   types   infiles   opens   ifiles   outfiles   oss   paths   splits   ds   fs   renames   joins   ofiles   Files   Nones   nifiles   mimify_parts   flush(   s   infiles   outfiles   ifiles   nifiles   ds   fs   ofiles   os(    (    s   /usr/lib/python2.2/mimify.pys   mimify›s   ).		s   __main__s/   Usage: mimify [-l len] -[ed] [infile [outfile]]i   s   l:edbi   s   -es    s   -ds   -bs   -l(5   s   __doc__s   MAXLENs   CHARSETs   QUOTEs   res   __all__s   compiles   Is   qps	   base64_res   Ss   mps   chrsets   hes	   mime_codes	   mime_heads   repls   Files
   HeaderFiles   mime_decodes   mime_decode_headers   unmimify_parts   unmimifys	   mime_chars   mime_header_chars   mime_encodes   mime_headers   mime_encode_headers   mvs   ctes   iso_chars   mimify_parts   mimifys   syss   __name__s   lens   argvs   getopts   usages   decode_base64s   optss   argss   exits   os   as   encodes   ints
   ValueErrors   OverflowErrors   stdins   stdouts   encode_argss   apply('   s	   mime_chars   CHARSETs	   mime_codes   unmimify_parts	   mime_heads   mime_encodes   mime_decodes   mime_decode_headers   __all__s   res   QUOTEs
   HeaderFiles   MAXLENs   mime_headers   mime_encode_headers   encodes   getopts   unmimifys   mimify_parts   encode_argss   chrsets	   base64_res   argss   mime_header_chars   syss   usages   repls   iso_chars   hes   as   qps   os   ctes   mvs   mps   Files   mimifys   decode_base64s   opts(    (    s   /usr/lib/python2.2/mimify.pys   ? s~   			U ‡:		"N
 
