;
Éâ"Ic               @   s\  d  Z  d d l Z d d l Z d d l Z d d d d d d d	 d
 d d d d d d g Z e e f Z d „  Z d d „ Z
 d d „ Z d „  Z d „  Z d „  Z d „  Z i  d d 6d d 6d d 6d d 6d d  6d! d" 6d# d$ 6d% d& 6d' d( 6d) d* 6d+ d, 6d- d. 6d/ d0 6d1 d2 6d3 d4 6d5 d6 6d7 d8 6d9 d: 6d; d< 6d= d> 6d? d@ 6dA dB 6dC dD 6dE dF 6dG dH 6dI dJ 6dK dL 6dM dN 6dO dP 6dQ dR 6dS dT 6dU dV 6Z dW „  e e j ƒ  ƒ Dƒ Z e dX „  e j ƒ  Dƒ ƒ Z dY „  Z de d dZ „ Z d[ „  Z de d\ „ Z d] Z e d8 d0 Z d^ „  Z d_ „  Z d` „  Z da „  Z  db „  Z! dc „  Z" e# dd k o e! ƒ  n d S(f   u/   RFC 3548: Base16, Base32, Base64 Data Encodingsi    Nu   encodeu   decodeu   encodestringu   decodestringu	   b64encodeu	   b64decodeu	   b32encodeu	   b32decodeu	   b16encodeu	   b16decodeu   standard_b64encodeu   standard_b64decodeu   urlsafe_b64encodeu   urlsafe_b64decodec             C   sz   t  |  t ƒ p t d |  j j ƒ ‚ n t t d ƒ ƒ } x. | j ƒ  D]  \ } } | d | t | ƒ <qI W|  j	 | ƒ S(   Nu   expected bytes, not %si   i    (
   u
   isinstanceu   bytes_typesu	   TypeErroru	   __class__u   __name__u	   bytearrayu   rangeu   itemsu   ordu	   translate(   u   su   altcharsu   translationu   ku   v(    (    u#   /mit/python/lib/python3.0/base64.pyu
   _translate!   s     c             C   sÔ   t  |  t ƒ p t d |  j j ƒ ‚ n t j |  ƒ d d … } | d k	 o€ t  | t ƒ p t d | j j ƒ } n t | ƒ d k p t	 t
 | ƒ ƒ ‚ t | i | d d … d 6| d d … d 6ƒ S| S(	   uS  Encode a byte string using Base64.

    s is the byte string to encode.  Optional altchars must be a byte
    string of length 2 which specifies an alternative alphabet for the
    '+' and '/' characters.  This allows an application to
    e.g. generate url or filesystem safe Base64 strings.

    The encoded byte string is returned.
    u   expected bytes, not %sNiÿÿÿÿi   i    i   u   +u   /(   u
   isinstanceu   bytes_typesu	   TypeErroru	   __class__u   __name__u   binasciiu
   b2a_base64u   Noneu   lenu   AssertionErroru   repru
   _translate(   u   su   altcharsu   encoded(    (    u#   /mit/python/lib/python3.0/base64.pyu	   b64encode-   s    
&0c             C   sÉ   t  |  t ƒ p t d |  j j ƒ ‚ n | d k	 o… t  | t ƒ p t d | j j ƒ ‚ n t | ƒ d k p t t | ƒ ƒ ‚ t	 |  i d t
 | d ƒ 6d t
 | d ƒ 6ƒ }  n t j |  ƒ S(   uƒ  Decode a Base64 encoded byte string.

    s is the byte string to decode.  Optional altchars must be a
    string of length 2 which specifies the alternative alphabet used
    instead of the '+' and '/' characters.

    The decoded byte string is returned.  binascii.Error is raised if
    s were incorrectly padded or if there are non-alphabet characters
    present in the string.
    u   expected bytes, not %si   s   +i    s   /i   N(   u
   isinstanceu   bytes_typesu	   TypeErroru	   __class__u   __name__u   Noneu   lenu   AssertionErroru   repru
   _translateu   chru   binasciiu
   a2b_base64(   u   su   altchars(    (    u#   /mit/python/lib/python3.0/base64.pyu	   b64decodeD   s    &5c             C   s
   t  |  ƒ S(   uˆ   Encode a byte string using the standard Base64 alphabet.

    s is the byte string to encode.  The encoded byte string is returned.
    (   u	   b64encode(   u   s(    (    u#   /mit/python/lib/python3.0/base64.pyu   standard_b64encodeZ   s    c             C   s
   t  |  ƒ S(   u  Decode a byte string encoded with the standard Base64 alphabet.

    s is the byte string to decode.  The decoded byte string is
    returned.  binascii.Error is raised if the input is incorrectly
    padded or if there are non-alphabet characters present in the
    input.
    (   u	   b64decode(   u   s(    (    u#   /mit/python/lib/python3.0/base64.pyu   standard_b64decodea   s    c             C   s   t  |  d ƒ S(   uÌ   Encode a byte string using a url-safe Base64 alphabet.

    s is the byte string to encode.  The encoded byte string is
    returned.  The alphabet uses '-' instead of '+' and '_' instead of
    '/'.
    s   -_(   u	   b64encode(   u   s(    (    u#   /mit/python/lib/python3.0/base64.pyu   urlsafe_b64encodek   s    c             C   s   t  |  d ƒ S(   uX  Decode a byte string encoded with the standard Base64 alphabet.

    s is the byte string to decode.  The decoded byte string is
    returned.  binascii.Error is raised if the input is incorrectly
    padded or if there are non-alphabet characters present in the
    input.

    The alphabet uses '-' instead of '+' and '_' instead of '/'.
    s   -_(   u	   b64decode(   u   s(    (    u#   /mit/python/lib/python3.0/base64.pyu   urlsafe_b64decodet   s    
s   As   Ji	   s   Si   s   3i   s   Bi   s   Ki
   s   Ti   s   4i   s   Ci   s   Li   s   Ui   s   5i   s   Di   s   Mi   s   Vi   s   6i   s   Ei   s   Ni   s   Wi   s   7i   s   Fi   s   Oi   s   Xi   s   Gi   s   Pi   s   Yi   s   Hi   s   Qi   s   Zi   s   Ii   s   Ri   s   2i   c             C   s%   g  } |  ] \ } } | | d  q
 S(   i    (    (   u   .0u   _[1]u   ku   v(    (    u#   /mit/python/lib/python3.0/base64.pyu
   <listcomp>   s    c             C   s+   g  } |  ] \ } } | | d  | f q
 S(   i    (    (   u   .0u   _[1]u   ku   v(    (    u#   /mit/python/lib/python3.0/base64.pyu
   <listcomp>   s    c             C   sß  t  |  t ƒ p t d |  j j ƒ ‚ n t t |  ƒ d ƒ \ } } | o" |  t d | ƒ }  | d 7} n t ƒ  } xá t | ƒ D]Ó } t	 j
 d |  | d | d d … ƒ \ } } } | | d @d >7} | | d @d >7} | t t | d ?t | d	 ?d
 @t | d ?d
 @t | d ?t | d ?d
 @t | d ?d
 @t | d ?t | d
 @g ƒ 7} q„ W| d k o | d d … d S| d k o | d d … d S| d k o | d d … d S| d k o | d d … d S| S(   ur   Encode a byte string using Base32.

    s is the byte string to encode.  The encoded byte string is returned.
    u   expected bytes, not %si   i   u   !HHBi   i   i   i   i   i   i   i   i   Niúÿÿÿs   ======iüÿÿÿs   ====iýÿÿÿs   ===i   iÿÿÿÿs   =(   u
   isinstanceu   bytes_typesu	   TypeErroru	   __class__u   __name__u   divmodu   lenu   bytesu   rangeu   structu   unpacku   _b32tab(   u   su   quantau   leftoveru   encodedu   iu   c1u   c2u   c3(    (    u#   /mit/python/lib/python3.0/base64.pyu	   b32encode“   s:    	 1c             C   sÐ  t  |  t ƒ p t d |  j j ƒ ‚ n t t |  ƒ d ƒ \ } } | o t j d ƒ ‚ n | d k	 oq t  | t ƒ p t d | j j ƒ ‚ n t | ƒ d k p t
 t | ƒ ƒ ‚ t |  i d d 6| d 6ƒ }  n | o |  j ƒ  }  n d } t j d	 |  ƒ } | o; t | j d
 ƒ ƒ } | d k o |  d | … }  qNn g  } d } d }	 x |  D]… }
 t j |
 ƒ } | d k o t d ƒ ‚ n | t |
 |	 >7} |	 d 8}	 |	 d k  o* | j t j d | ƒ ƒ d } d }	 qgqgWt j t d | d ƒ ƒ } | d k o
 d } n” | d k o | d d … } ns | d k o | d d … } nR | d k o | d d … } n1 | d k o | d d … } n t j d ƒ ‚ | j | ƒ d j | ƒ S(   u]  Decode a Base32 encoded byte string.

    s is the byte string to decode.  Optional casefold is a flag
    specifying whether a lowercase alphabet is acceptable as input.
    For security purposes, the default is False.

    RFC 3548 allows for optional mapping of the digit 0 (zero) to the
    letter O (oh), and for optional mapping of the digit 1 (one) to
    either the letter I (eye) or letter L (el).  The optional argument
    map01 when not None, specifies which letter the digit 1 should be
    mapped to (when map01 is not None, the digit 0 is always mapped to
    the letter O).  For security purposes the default is None, so that
    0 and 1 are not allowed in the input.

    The decoded byte string is returned.  binascii.Error is raised if
    the input is incorrectly padded or if there are non-alphabet
    characters present in the input.
    u   expected bytes, not %si   u   Incorrect paddingi   s   Os   0s   1i    s   (?P<pad>[=]*)$u   padNi#   u   Non-base32 digit foundi   u   %010xu   asciis    iÿÿÿÿi   iþÿÿÿi   iýÿÿÿi   iüÿÿÿ(   u
   isinstanceu   bytes_typesu	   TypeErroru	   __class__u   __name__u   divmodu   lenu   binasciiu   Erroru   Noneu   AssertionErroru   repru
   _translateu   upperu   reu   searchu   groupu   _b32revu   getu   appendu	   unhexlifyu   bytesu   join(   u   su   casefoldu   map01u   quantau   leftoveru   padcharsu   mou   partsu   accu   shiftu   cu   valu   last(    (    u#   /mit/python/lib/python3.0/base64.pyu	   b32decode¾   s\    &! 

c             C   s=   t  |  t ƒ p t d |  j j ƒ ‚ n t j |  ƒ j ƒ  S(   ur   Encode a byte string using Base16.

    s is the byte string to encode.  The encoded byte string is returned.
    u   expected bytes, not %s(   u
   isinstanceu   bytes_typesu	   TypeErroru	   __class__u   __name__u   binasciiu   hexlifyu   upper(   u   s(    (    u#   /mit/python/lib/python3.0/base64.pyu	   b16encode  s    c             C   st   t  |  t ƒ p t d |  j j ƒ ‚ n | o |  j ƒ  }  n t j d |  ƒ o t j	 d ƒ ‚ n t j
 |  ƒ S(   uˆ  Decode a Base16 encoded byte string.

    s is the byte string to decode.  Optional casefold is a flag
    specifying whether a lowercase alphabet is acceptable as input.
    For security purposes, the default is False.

    The decoded byte string is returned.  binascii.Error is raised if
    s were incorrectly padded or if there are non-alphabet characters
    present in the string.
    u   expected bytes, not %ss	   [^0-9A-F]u   Non-base16 digit found(   u
   isinstanceu   bytes_typesu	   TypeErroru	   __class__u   __name__u   upperu   reu   searchu   binasciiu   Erroru	   unhexlify(   u   su   casefold(    (    u#   /mit/python/lib/python3.0/base64.pyu	   b16decode  s    iL   c             C   s‹   x„ |  j  t ƒ } | p Pn xG t | ƒ t k  o3 |  j  t t | ƒ ƒ } | p Pn | | 7} q! Wt j | ƒ } | j | ƒ q d S(   u1   Encode a file; input and output are binary files.N(   u   readu
   MAXBINSIZEu   lenu   binasciiu
   b2a_base64u   write(   u   inputu   outputu   su   nsu   line(    (    u#   /mit/python/lib/python3.0/base64.pyu   encode3  s     c             C   s>   x7 |  j  ƒ  } | p Pn t j | ƒ } | j | ƒ q d S(   u1   Decode a file; input and output are binary files.N(   u   readlineu   binasciiu
   a2b_base64u   write(   u   inputu   outputu   lineu   s(    (    u#   /mit/python/lib/python3.0/base64.pyu   decodeB  s    c             C   sŠ   t  |  t ƒ p t d |  j j ƒ ‚ n g  } xJ t d t |  ƒ t ƒ D]0 } |  | | t … } | j t	 j
 | ƒ ƒ qI Wd j | ƒ S(   uc   Encode a string into multiple lines of base-64 data.

    Argument and return value are bytes.
    u   expected bytes, not %si    s    (   u
   isinstanceu   bytes_typesu	   TypeErroru	   __class__u   __name__u   rangeu   lenu
   MAXBINSIZEu   appendu   binasciiu
   b2a_base64u   join(   u   su   piecesu   iu   chunk(    (    u#   /mit/python/lib/python3.0/base64.pyu   encodestringL  s     c             C   s7   t  |  t ƒ p t d |  j j ƒ ‚ n t j |  ƒ S(   u?   Decode a string.

    Argument and return value are bytes.
    u   expected bytes, not %s(   u
   isinstanceu   bytes_typesu	   TypeErroru	   __class__u   __name__u   binasciiu
   a2b_base64(   u   s(    (    u#   /mit/python/lib/python3.0/base64.pyu   decodestringZ  s    c              C   sq  d d l  }  d d l } y) | j |  j d d … d ƒ \ } } Wnb | j k
 oS } z= |  j |  _ t | ƒ t d |  j d ƒ |  j d ƒ WYd d } ~ Xn Xt } xr | D]j \ } } | d k o
 t } n | d k o
 t	 } n | d	 k o
 t	 } n | d
 k o t
 ƒ  d Sq³ W| o2 | d d k o! | t | d d ƒ |  j ƒ n | |  j |  j ƒ d S(   u   Small main programi    Ni   u   deutu   usage: %s [-d|-e|-u|-t] [file|-]
        -d, -u: decode
        -e: encode (default)
        -t: encode and decode string 'Aladdin:open sesame'i   u   -eu   -du   -uu   -tu   -u   rb(   u   sysu   getoptu   argvu   erroru   stderru   stdoutu   printu   exitu   encodeu   decodeu   testu   openu   stdin(   u   sysu   getoptu   optsu   argsu   msgu   funcu   ou   a(    (    u#   /mit/python/lib/python3.0/base64.pyu   mainf  s0    )
!  
 
 
  	!c              C   sf   d }  t  t |  ƒ ƒ t |  ƒ } t  t | ƒ ƒ t | ƒ } t  t | ƒ ƒ |  | k p t ‚ d  S(   Ns   Aladdin:open sesame(   u   printu   repru   encodestringu   decodestringu   AssertionError(   u   s0u   s1u   s2(    (    u#   /mit/python/lib/python3.0/base64.pyu   test  s    u   __main__F($   u   __doc__u   reu   structu   binasciiu   __all__u   bytesu	   bytearrayu   bytes_typesu
   _translateu   Noneu	   b64encodeu	   b64decodeu   standard_b64encodeu   standard_b64decodeu   urlsafe_b64encodeu   urlsafe_b64decodeu   _b32alphabetu   sortedu   itemsu   _b32tabu   dictu   _b32revu	   b32encodeu   Falseu	   b32decodeu	   b16encodeu	   b16decodeu   MAXLINESIZEu
   MAXBINSIZEu   encodeu   decodeu   encodestringu   decodestringu   mainu   testu   __name__(    (    (    u#   /mit/python/lib/python3.0/base64.pyu   <module>   sT   			
				+O	
		
				
