;ò
îŒü?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 d f  d „  ƒ  YZ d „  Z d „  Z 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 oÿd k% Z% d% Z& d Z' e% i% e! i$ d& d' ƒ \ Z( Z) e# e) ƒ d d& d( f j o e& GHe! 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& GHe! i* d& ƒ n x¨ e( D]  \ Z+ Z, e+ d) j o
 e  Z- qËe+ d+ j o
 e Z- qËe+ d- j oB y e. e, ƒ Z Wqke/ e0 f j
 o e& GHe! i* d& ƒ qkXqËe+ d, j o
 d& Z' qËqËWe# e) ƒ d j o e! i1 e! i2 f Z3 n? 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 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           B   s    t  Z d  Z d „  Z d „  Z RS(   s{   A simple fake file object that knows about limited read-ahead and
    boundaries.  The only supported method is readline().c         C   s   | |  _  | |  _ t |  _ d  S(   N(   s   files   selfs   boundarys   Nones   peek(   s   selfs   files   boundary(    (    s#   /mit/python/lib/python2.3/mimify.pys   __init__/   s    		c         C   s—   |  i t j	 o d Sn |  i i ƒ  } | o | Sn |  i oN | |  i d j o | |  _ d Sn | |  i d j o | |  _ d Sq n | Sd  S(   Ns    s   
s   --
(   s   selfs   peeks   Nones   files   readlines   lines   boundary(   s   selfs   line(    (    s#   /mit/python/lib/python2.3/mimify.pys   readline4   s    
		(   s   __name__s
   __module__s   __doc__s   __init__s   readline(    (    (    s#   /mit/python/lib/python2.3/mimify.pys   File+   s    	s
   HeaderFilec           B   s   t  Z d „  Z d „  Z RS(   Nc         C   s   | |  _  t |  _ d  S(   N(   s   files   selfs   Nones   peek(   s   selfs   file(    (    s#   /mit/python/lib/python2.3/mimify.pys   __init__D   s    	c         C   sÞ   |  i t j	 o |  i } t |  _ n |  i i ƒ  } | o | Sn t i | ƒ o | Sn xz n or |  i i ƒ  |  _ t |  i ƒ d j p% |  i d d j o |  i d d j o | Sn | |  i } t |  _ qg Wd  S(   Ni   i    s    s   	(	   s   selfs   peeks   Nones   lines   files   readlines   hes   matchs   len(   s   selfs   line(    (    s#   /mit/python/lib/python2.3/mimify.pys   readlineH   s    	 >(   s   __name__s
   __module__s   __init__s   readline(    (    (    s#   /mit/python/lib/python2.3/mimify.pys
   HeaderFileC   s   	c         C   s”   d } d } xu n om t i |  | ƒ } | t j o Pn | |  | | i d ƒ !t t	 | i
 d ƒ d ƒ ƒ } | i d ƒ } q W| |  | 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#   /mit/python/lib/python2.3/mimify.pys   mime_decodeZ   s      6c         C   s©   d } d } xŠ n o‚ t i |  | ƒ } | t j o Pn | i d ƒ } d i	 | i
 d ƒ ƒ } | |  | | i d ƒ !t | ƒ } | i d ƒ } q W| |  | 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#   /mit/python/lib/python2.3/mimify.pys   mime_decode_headerg   s      $i    c         C   s  t  } d } d }	 d } |  i o |  i d  t j o
 t } n d } t	 |  ƒ } x(n o | i ƒ  } | o d Sn | o | t | ƒ  | j o | t | ƒ } | } n d } t | ƒ } t i | ƒ o d } q\ n | o t i | ƒ o d }	 q\ n | i | | ƒ | o t i | ƒ o
 d } n t i | ƒ } | o d | i d ƒ } n t i | ƒ o PqU q\ W| o | p | o
 d } n xìn oä|  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 oM | i | | ƒ t |  | ƒ } t  | | | ƒ | i! } | o Pqqn PqW| o | ot xa | d
 d j oO | d
  } |  i ƒ  }
 |
 t t ƒ  t j o |
 t t ƒ }
 n | |
 } qÇWt# | ƒ } n | o |	 o | o d k$ } | i% | ƒ } n | o | i | | ƒ qŸ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   is_repls   prefixs   nifiles	   multiparts   mp_ress   quoted_printables	   is_base64s   newlines   base64s   prefs   lines   hfile(    (    s#   /mit/python/lib/python2.3/mimify.pys   unmimify_partv   s–     
 



 
 	 
	c   	      C   sü   t  |  ƒ t  d ƒ j o~ t |  ƒ } t  | ƒ t  d ƒ j o
 |  | j oH d k } | i i |  ƒ \ } } | i
 |  | i i | d | ƒ ƒ q 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   oss   fs   ofiles   d(    (    s#   /mit/python/lib/python2.3/mimify.pys   unmimifyË   s     &	+s   [=-ÿ]s   [=?-ÿ]c         C   s  | o
 t } n t } d } d } t |  ƒ d j o |  d  d j o  d t d ƒ i	 ƒ  } d } n xv n on | i
 |  | ƒ } | t j o Pn | |  | | i d ƒ !d t | i d ƒ ƒ i	 ƒ  } | i d ƒ } qq W| |  | }  d } x| t |  ƒ d j oh d	 } x5 |  | d
 j p |  | d d
 j o | d } qW| d } | |  |  d } |  | }  q÷ 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#   /mit/python/lib/python2.3/mimify.pys   mime_encodeà   s8     
$
 7  &
s<   ([ 	(]|^)([-a-zA-Z0-9_+]*[-ÿ][-a-zA-Z0-9_+-ÿ]*)(?=[ 	)]|
)c         C   s¢   d } d } xƒ n 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#   /mit/python/lib/python2.3/mimify.pys   mime_encode_header  s      Ds   ^mime-version:s   ^content-transfer-encoding:s   [-ÿ]c         C   s³  d } } } t } d }
 } } g  } d } g  } d } t |  ƒ } xn oü | i ƒ  } | o Pn | o t i | ƒ o
 d } n t i | ƒ o
 d } n t i | ƒ o> d } t i | ƒ o
 d } qó t i | ƒ o
 d } qó n t i | ƒ }	 |	 o d |	 i d ƒ } n t i | ƒ o | } Pn | i | ƒ qP Wx^n oV|  i ƒ  } | o Pn | o< | | d j o | } Pn | | d j o | } Pq³n | o | i | ƒ qWn | ot xa | d d j oO | d  } |  i ƒ  } | t t  ƒ  t  j o | t t  ƒ } n | | } qØWt! | ƒ } n | i | ƒ | o" t i | ƒ o d } }
 q€n |
 o! t | ƒ t" j o
 d }
 q©qPqWWx| D]ÿ } | o t# | ƒ } n t$ i | ƒ } | oj | oI | i d	 ƒ i& ƒ  d
 j o) d | i d ƒ t' | i d ƒ f } qNqRd | i d d ƒ } n | o t i | ƒ o> d } | o | d } q§|
 o | d } q§| d } n | i) | ƒ qµW| p |
 o | oG | i) d ƒ | i) d ƒ | o | i) d t' ƒ q| i) d ƒ n |
 o | o | i) d ƒ n | i) | ƒ x5 | D]- } |
 o t* | d ƒ } n | i) | ƒ qIW| i) | ƒ | } x| o| | d j oV xS n oG |  i ƒ  } | o d Sn |
 o t* | d ƒ } n | i) | ƒ q²Wn | | d j oI t+ |  | ƒ } t- | | d ƒ | i. } | o Pn | i) | ƒ qn xO n oG |  i ƒ  } | o d Sn |
 o t* | d ƒ } n | i) | ƒ qb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   nifiles   has_ctes   headers   has_iso_charss   messages
   chrset_ress   mp_ress   must_quote_bodys	   is_base64s   newlines   is_qps   lines   must_quote_headers
   header_ends   message_ends   hfiles	   multipart(    (    s#   /mit/python/lib/python2.3/mimify.pys   mimify_part  sö      


 	 
 -   	 c         C   sü   t  |  ƒ t  d ƒ j o~ t |  ƒ } t  | ƒ t  d ƒ j o
 |  | j oH d k } | i i |  ƒ \ } } | i
 |  | i i | d | ƒ ƒ q 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#   /mit/python/lib/python2.3/mimify.pys   mimify›  s     &	+s   __main__s/   Usage: mimify [-l len] -[ed] [infile [outfile]]i   s   l:edbi   s   -es    s   -ds   -bs   -l(4   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_args('   s   CHARSETs	   mime_codes   unmimify_parts	   mime_heads   mime_encodes   mime_decodes   mime_decode_headers   os   __all__s   MAXLENs   QUOTEs
   HeaderFiles   res   mime_headers   mime_encode_headers   usages   getopts   unmimifys   chrsets   mimify_parts   encode_argss	   base64_res   argss   mime_header_chars   syss   encodes   repls   iso_chars   hes   as   qps	   mime_chars   ctes   mvs   mps   Files   mimifys   decode_base64s   opts(    (    s#   /mit/python/lib/python2.3/mimify.pys   ?   s~   			U	 		‡		7	K 

