™N
þÒ’;c       s¢    d  Z    d Z  d Z  d Z  k Z k 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 B d f  d „  ƒ  YZ Y d „  Z f d „  Z u 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  ²k! Z! ³e" d j p' e# e! i$ ƒ d j o e! i$ d d  j oS´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 Àrµ \ Z+ Z, Áe+ d% j o Âe  Z- n Ãe+ d' j o Äe Z- np Åe+ d) j oB Æy Çe i. e, ƒ Z Wn" ÈÉe& GHÊe! i* d" ƒ n Xn Ëe+ d( j o Ìd" Z' n q9WÍe# e) ƒ d j o Îe! i/ e! i0 f Z1 nH Ïe# e) ƒ d" j o Ðe) d e! i0 f Z1 n Òe) d e) d" f Z1 Óe' o Ôe1 e' f Z1 n Õe2 e- e1 ƒ GHn 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   > s.   ^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&   ) d  Z  , . d „  Z 3 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 t |  _ d  S(   N(   s   files   selfs   boundarys   Nones   peek(   s   selfs   files   boundarys&   /mit/python/share/pmail/pmailmimify.pys   __init__. s   c    sÁ   3 4 |  i t j	 o 5 d Sn 6 |  i i ƒ  } 7 | o 8 | Sn 9 |  i o` : | |  i d j o ; | |  _ < d Sn = | |  i d j o > | |  _ ? d Sn n @ | Sd  S(   Ns    s   
s   --
(   s   selfs   peeks   Nones   files   readlines   lines   boundary(   s   selfs   lines&   /mit/python/share/pmail/pmailmimify.pys   readline3 s   (   s   __doc__s   __init__s   readline(    s&   /mit/python/share/pmail/pmailmimify.pys   File) s   	s
   HeaderFilec      s   B C d „  Z  G d „  Z RS(   Nc    s   C D | |  _  E t |  _ d  S(   N(   s   files   selfs   Nones   peek(   s   selfs   files&   /mit/python/share/pmail/pmailmimify.pys   __init__C s   c    s  G H |  i t j	 o I |  i } J t |  _ n L |  i i ƒ  } M | o N | Sn O t i | ƒ o P | Sn Q xŒ Q d o R |  i i ƒ  |  _ S t |  i ƒ d j p% |  i d d j o |  i d d j o U | Sn V | |  i } W t |  _ q~ Wd  S(   Ni   i    s    s   	(	   s   selfs   peeks   Nones   lines   files   readlines   hes   matchs   len(   s   selfs   lines&   /mit/python/share/pmail/pmailmimify.pys   readlineG s    
A(   s   __init__s   readline(    s&   /mit/python/share/pmail/pmailmimify.pys
   HeaderFileB s   c    s»   Y Z [ d } \ d } ] xŠ ] d o ^ t i |  | ƒ } _ | t j o ` Pn a | |  | | i d ƒ !t t	 i
 | i d ƒ d ƒ ƒ } c | i d ƒ } q Wd | |  | 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   strings   atois   groups   end(   s   lines   newlines   poss   ress&   /mit/python/share/pmail/pmailmimify.pys   mime_decodeY s   		 
<c    sÙ   f g h d } i d } j x¨ j d o k t i |  | ƒ } l | t j o m Pn n | i d ƒ } p t	 i
 t	 i | d ƒ d ƒ } q | |  | | i d ƒ !t | ƒ } r | i d ƒ } q Ws | |  | 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   strings   joins   splits   starts   mime_decodes   end(   s   lines   newlines   poss   ress   matchs&   /mit/python/share/pmail/pmailmimify.pys   mime_decode_headerf s   		 
!'c    sr  u v w t  } x d } y d } z 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 Ÿ x`Ÿ d oU  |  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Ž ½ xu ½ |	 d d
 j o_ ¾ |	 d  }	 ¿ |  i ƒ  } À | t t ƒ  t j o Á | t t ƒ } n Â |	 | }	 q‡WÃ t# |	 ƒ }	 n Ä |	 o | o |
 o Å 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   
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	   multiparts   quoted_printables	   is_base64s   is_repls   prefixs   hfiles   lines   prefs   mp_ress   nifiles   newlines   base64s&   /mit/python/share/pmail/pmailmimify.pys   unmimify_partu s–   				!	 
!		
	

 
!	 
		
	 	
i    c 	   s&  Ê Ë Ì t  |  ƒ t  d ƒ j oŠ Í t |  ƒ } Î t  | ƒ t  d ƒ j o
 |  | j oN Ï 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    s   ,s   wN(   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   oss   ds   fs   ofiles   nifiles&   /mit/python/share/pmail/pmailmimify.pys   unmimifyÊ s   )	.		s   [=-ÿ]s   [=?-ÿ]c    sÜ  ß á â | o ã t } n
 å t } æ d } ç d } è t |  ƒ d j o |  d  d j o) ê t i	 d t
 d ƒ ƒ } ë d } n ì x‹ ì d o€ í | i |  | ƒ } î | t j o ï Pn ð | |  | | i d ƒ !t i	 d t
 | i d ƒ ƒ ƒ } ò | i d ƒ } qŽ Wó | |  | }  õ d } ö x” ö t |  ƒ d j o} ÷ d	 } ø x; ø |  | d
 j p |  | d d
 j o ù | d } q^Wú | d } û | |  |  d } ü |  | }  q9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   strings   uppers   ords   searchs   ress   Nones   starts   groups   ends   i(   s   lines   headers   regs   newlines   poss   ress   is&   /mit/python/share/pmail/pmailmimify.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 ƒ | i 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?=%si   i   N(   s   newlines   poss   mime_headers   searchs   lines   ress   Nones   starts   groups   CHARSETs   mime_encodes   end(   s   lines   newlines   poss   ress&   /mit/python/share/pmail/pmailmimify.pys   mime_encode_headers   		 
Ss   ^mime-version:s   ^content-transfer-encoding:s   [-ÿ]c    s"  d } } } t } d } } }	 g  }
 d } g  } d } t } t } "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 0d } n n 1t i | ƒ } 2| o 3d | i d ƒ } n 4t i | ƒ o 5| } 6Pn 7|
 i | ƒ q| W:xº:d o¯;|  i ƒ  } <| o =Pn >| oN ?| | d j o @| } APn B| | d j o C| } DPn n E| o F| i | ƒ GqÅn H| oŽ Ixu I| d d j o_ J| d  } K|  i ƒ  } L| t! t" ƒ  t" j o M| t! t" ƒ } n N| | } q}WOt# | ƒ } n P| i | ƒ Q|	 o( Rt i | ƒ o Sd }	 } n n T| o' Ut! | ƒ t$ j o Vd } n n qÅWYx?|
 d Yr2} Z| o [t% | ƒ } n \t& i | ƒ } ]| oy ^|	 oR `t( i) | i d ƒ ƒ d	 j o, ad
 | i d ƒ t* | i d ƒ f } n n fd | i d d ƒ } n g| o t i | ƒ oP hd } i| o j| d } n) k| o l| d } n n| d } n o| i, | ƒ q‹Wp| p | o | o$ s|	 o tt* } n
 vd	 } n w| o | o xd } n y| i, | ƒ {xC | d {r6 } || o }t- | d ƒ } n ~| i, | ƒ q<W| i, | ƒ | } ‚xy‚| onƒ| | d j ot …xj …d o_ †|  i ƒ  } ‡| o ˆt t f Sn ‰| o Št- | d ƒ } n ‹| i, | ƒ q¼Wn Œ| | d j o^ t. |  | ƒ } Žt0 | | d ƒ | i1 } | o ’Pn “| i, | ƒ ”q˜n –xj –d o_ —|  i ƒ  } ˜| o ™t t f Sn š| o ›t- | d ƒ } n œ| i, | ƒ q¢Wq˜W| | f Sd S(   s@   Convert an 8bit part of a MIME mail message to quoted-printable.i    s    i   s   --s   --
s   
i   s   =
s   us-asciis   %s%s%si   s   %sus-ascii%ss   Content-Transfer-Encoding: s   base64
s   quoted-printable
s   7bit
s   quoted-printableN(2   s   has_ctes   is_qps	   is_base64s   Nones	   multiparts   must_quote_bodys   must_quote_headers   has_iso_charss   headers
   header_ends   messages   message_ends
   thecharsets   encodings
   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   strings   lowers   CHARSETs   ofiles   writes   mime_encodes   Files   nifiles   mimify_parts   peek(   s   ifiles   ofiles   is_mimes   has_ctes   is_qps	   is_base64s	   multiparts   must_quote_bodys   must_quote_headers   has_iso_charss   headers
   header_ends   messages   message_ends
   thecharsets   encodings   hfiles   lines   mp_ress   newlines
   chrset_ress   nifiles&   /mit/python/share/pmail/pmailmimify.pys   mimify_partsø   							 
	
	 

		


  	


"0	


 	
	 
 


 

c 	   s/  Ÿ ¡t  |  ƒ t  d ƒ j oŠ ¢t |  ƒ } £t  | ƒ t  d ƒ j o
 |  | j oN ¤k } ¥| i i |  ƒ \ } } ¦| i
 |  | i i | d | ƒ ƒ n n
 ¨|  } ©t  | ƒ t  d ƒ j o ªt | d ƒ } n
 ¬| } ­t | t ƒ } ®t | | d ƒ } ¯| i ƒ  °| Sd S(   s>   Convert 8bit parts of a MIME mail message to quoted-printable.s    s   ,s   wi    N(   s   types   infiles   opens   ifiles   outfiles   oss   paths   splits   ds   fs   renames   joins   ofiles   Files   Nones   nifiles   mimify_parts   ress   flush(	   s   infiles   outfiles   ifiles   oss   ds   fs   ofiles   nifiles   ress&   /mit/python/share/pmail/pmailmimify.pys   mimifyŸs   )	.		s   __main__s   mimifys/   Usage: mimify [-l len] -[ed] [infile [outfile]]i   s   l:edbi   s   -es    s   -ds   -bs   -lN(3   s   __doc__s   MAXLENs   CHARSETs   QUOTEs   res   strings   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   atois   stdins   stdouts   encode_argss   apply(    s&   /mit/python/share/pmail/pmailmimify.pys   ? s|   			U Œ	:			"N 
