
    =Og#R                        	 d dl Z d dlZd dlZg dZeefZd Zd5dZd6dZ	d Z
d Ze                    d	d
          Ze                    d
d	          Zd Zd ZdZdZdZdZdZi ai ad Zd7dZd Ze                    d          e_        d7dZe                    de          e_        d Ze                    d          e_        d8dZe                    dd          e_        d Z d8dZ!da"da#dZ$d Z%d9d!Z&dd ddd"d#Z'ddd$d%d&Z(d'Z)da*da+da,d8d(Z-d) Z.d*Z/e/d+z  d,z  Z0d- Z1d. Z2d/ Z3d0 Z4d1 Z5d2 Z6d3 Z7e8d4k    r e6             dS dS ):    N)encodedecodeencodebytesdecodebytes	b64encode	b64decode	b32encode	b32decodeb32hexencodeb32hexdecode	b16encode	b16decode	b85encode	b85decode	a85encode	a85decodestandard_b64encodestandard_b64decodeurlsafe_b64encodeurlsafe_b64decodec                 Z   t          | t                    r3	 |                     d          S # t          $ r t	          d          w xY wt          | t
                    r| S 	 t          |                                           S # t          $ r t          d| j	        j
        z            d w xY w)Nasciiz4string argument should contain only ASCII charactersz>argument should be a bytes-like object or ASCII string, not %r)
isinstancestrr   UnicodeEncodeError
ValueErrorbytes_types
memoryviewtobytes	TypeError	__class____name__ss    /usr/lib64/python3.11/base64.py_bytes_from_decode_datar&   "   s    !S U	U88G$$$! 	U 	U 	USTTT	U![!! K!}}$$&&& K K K )+,;+?@ A AFJ	KKs   , A! B (B*c                     	 t          j        | d          }|.|                    t                              d|                    S |S )NF)newline   +/)binascii
b2a_base64	translatebytes	maketrans)r$   altcharsencodeds      r%   r   r   3   sK     !!U333G  !A!ABBBN    Fc                     	 t          |           } |=t          |          }|                     t                              |d                    } t	          j        | |          S )Nr)   )strict_mode)r&   r,   r-   r.   r*   
a2b_base64)r$   r/   validates      r%   r   r   A   s^    " 	 ""A*844KK%8899qh7777r1   c                 "    	 t          |           S N)r   r#   s    r%   r   r   [   s     Q<<r1   c                 "    	 t          |           S r7   )r   r#   s    r%   r   r   b   s     Q<<r1   r)   s   -_c                 R    	 t          |                               t                    S r7   )r   r,   _urlsafe_encode_translationr#   s    r%   r   r   p   s$     Q<<!!"=>>>r1   c                 t    	 t          |           } |                     t                    } t          |           S r7   )r&   r,   _urlsafe_decode_translationr   r#   s    r%   r   r   y   s4    	 	 ""A	/00AQ<<r1   zK
Encode the bytes-like objects using {encoding} and return a bytes object.
a  
Decode the {encoding} encoded bytes-like object or ASCII string s.

Optional casefold is a flag specifying whether a lowercase alphabet is
acceptable as input.  For security purposes, the default is False.
{extra_args}
The result is returned as a bytes object.  A binascii.Error is raised if
the input is incorrectly padded or if there are non-alphabet
characters present in the input.
a  
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.
s    ABCDEFGHIJKLMNOPQRSTUVWXYZ234567s    0123456789ABCDEFGHIJKLMNOPQRSTUVc                    | t           vr$d | D             fdD             t           | <   d t          |t                    s!t          |                                          }t          |          dz  }|r|dd|z
  z  z   }t                      }t          j        }t           |          }t          dt          |          d          D ]P} ||||dz                      }|||dz	           ||dz	  dz           z   ||d	z	  dz           z   ||dz           z   z  }Q|d
k    rd|dd <   n)|dk    rd|dd <   n|dk    rd|dd <   n|dk    rd|dd <   t          |          S )Nc                 .    g | ]}t          |f          S  r-   .0is     r%   
<listcomp>z_b32encode.<locals>.<listcomp>   s     000!%++000r1   c                 $    g | ]}D ]}||z   S r?   r?   )rB   abb32tabs      r%   rD   z_b32encode.<locals>.<listcomp>   s*    DDDVDDa!eDDDDr1          r         i  
      s   ======i   s   ====   s   ===      =)_b32tab2r   r   r   r   len	bytearrayint
from_bytesranger-   )	alphabetr$   leftoverr0   rZ   b32tab2rC   crH   s	           @r%   
_b32encoder`      s    x00x000DDDDVDDDa%% $qMM!!##1vvzH 'X&&kkGJx G1c!ffa    JqAE{##GAG$Q"W-./Q"W-./ AI&' 	 1}} 	Q	Q	Q>>r1   c                    | t           vr!d t          |           D             t           | <   t          |          }t          |          dz  rt	          j        d          |@t          |          }|                    t                              dd|z                       }|r|	                                }t          |          }|
                    d          }|t          |          z
  }t                      }t           |          }t          dt          |          d          D ]a}|||dz            }	d}
	 |	D ]}|
dz  ||         z   }
n## t          $ r t	          j        d	          d w xY w||
                    d          z  }b|dz  s|d
vrt	          j        d          |r9|r7|
d|z  z  }
|
                    d          }dd|z  z
  dz  }|d |         |dd <   t          |          S )Nc                     i | ]\  }}||	S r?   r?   )rB   kvs      r%   
<dictcomp>z_b32decode.<locals>.<dictcomp>   s    BBBdaQBBBr1      zIncorrect paddings   01   OrT   r   rI   zNon-base32 digit found>   r   rN   rQ   rS      +   )_b32rev	enumerater&   rW   r*   Errorr,   r-   r.   upperrstriprX   r[   KeyErrorto_bytes)r\   r$   casefoldmap01lpadcharsdecodedb32revrC   quantaaccr_   lastr]   s                 r%   
_b32decoder{      s    wBBi.A.ABBB""A
1vvz 2n0111 '..KKte|<<== GGII 	AA	A3q66zHkkGXF1c!ffa   # #1a!e8	E - -ax6!9,- 	E 	E 	E.!9::D	E3<<??"1u 2//n0111 'G 'H||AX%!+IXI>>s   9E E-c                 ,    t          t          |           S r7   )r`   _b32alphabetr#   s    r%   r	   r	      s    lA&&&r1   base32)encodingc                 0    t          t          | ||          S r7   )r{   r}   )r$   rr   rs   s      r%   r
   r
      s    lAx777r1   )r   
extra_argsc                 ,    t          t          |           S r7   )r`   _b32hexalphabetr#   s    r%   r   r     s    oq)))r1   	base32hexc                 .    t          t          | |          S r7   )r{   r   r$   rr   s     r%   r   r     s    oq(333r1    c                 P    	 t          j        |                                           S r7   )r*   hexlifyrn   r#   s    r%   r   r     s$    A$$&&&r1   c                     	 t          |           } |r|                                 } t          j        d|           rt	          j        d          t	          j        |           S )Ns	   [^0-9A-F]zNon-base16 digit found)r&   rn   researchr*   rm   	unhexlifyr   s     r%   r   r     sa     	 ""A GGII	yq!! 7n5666a   r1   s   <~s   ~>c                    t          | t                    s!t          |                                           } t	          |            dz  }|r| d|z  z   } t          j        dt	          |           dz  z                                |           }fd|D             }|r0|s.|d         dk    rd         dz  |d<   |d         d |          |d<   d	                    |          S )
NrS   rJ   z!%dIc                 |    g | ]8}r|sd n/r|dk    rdn%|dz           |dz  dz           z   |dz           z   9S )   zi       yi^	 U   i9  r?   )rB   wordcharschars2foldnuls
foldspacess     r%   rD   z_85encode.<locals>.<listcomp>:  s     ! ! !
   !t !dd  !TZ%7%7dddfn%dbj4'()TBY ! ! !r1   rU   r   r   rI   r1   )	r   r   r   r   rW   structStructunpackjoin)	rG   r   r   padr   r   paddingwordschunkss	    `` ``   r%   	_85encoder   0  s   a%% $qMM!!##Aw!mG  M&CFFaK01188;;E! ! ! ! ! ! !
  ! ! !F  +s +":qAF2JBZ	'	*r
88Fr1   )r   wrapcolr   adobec                   	 t           +d t          dd          D             ad t          D             a t          | t          t           |d|          |r
t          z   rt          |rdnd          fdt          d	t                              D             }|r1t          |d
                   dz   k    r|                    d           d                    |          |r
t          z  S )Nc                 .    g | ]}t          |f          S r?   r@   rA   s     r%   rD   za85encode.<locals>.<listcomp>]  s     999QUA4[[999r1   !   v   c                 ,    g | ]}t           D ]}||z   S r?   )	_a85charsrB   rF   rG   s      r%   rD   za85encode.<locals>.<listcomp>^  )    DDD!)DDQq1uDDDDr1   TrO   rN   c                 *    g | ]}||z            S r?   r?   )rB   rC   resultr   s     r%   rD   za85encode.<locals>.<listcomp>f  s6     ; ; ; AK( ; ; ;r1   r   rU   r1      
)

_a85chars2r[   r   r   	_A85STARTmaxrW   appendr   _A85END)rG   r   r   r   r   r   r   s     `   @r%   r   r   H  s#   & 99%C..999	DDyDDD
q)ZdJGGF $V# $5'aaa11; ; ; ; ; CKK99; ; ; 	#6":"W,,c"""F## 'Mr1   s    	
)r   r   ignorecharsc                   	 t          |           } |rp|                     t                    s't          d                    t                              |                     t                    r| dd         } n
| d d         } t          j        d          j	        }g }|j
        }g }|j
        }|j        }	| dz   D ]}
d|
cxk    rdk    rwn nt ||
           t          |          dk    rUd	}|D ]}
d
|z  |
dz
  z   }	  | ||                     n## t          j        $ r t          d          d w xY w |	             |
dk    r|rt          d           |d           |r#|
dk    r|rt          d           |d           |
|v rt          d|
z            d                    |          }dt          |          z
  }|r|d |          }|S )Nz1Ascii85 encoded byte sequences must end with {!r}rO   !Is   uuuur   u   rI   r   r   zAscii85 overflowz   zz inside Ascii85 5-tuples       y   zy inside Ascii85 5-tuples       zNon-Ascii85 digit found: %cr1   rS   )r&   endswithr   r   format
startswithr   r   r   packr   clearrW   errorr   )rG   r   r   r   packIrv   decoded_appendcurrcurr_append
curr_clearxry   r   r   s                 r%   r   r   q  sa    	 ""A 	zz'"" 	"F7OO   <<	"" 	!B$AA#2#A
 M$$EG^ND+KJ\ @ @a""""7"""""KNNN4yyA~~ . .As(a"f-CCC"N55::....| C C C$%788dBC
'\\ = !;<<<N;'''' 	@ALL = !;<<<N.////+:Q>???XXgF#d))mG #	'	"Ms   =D D2sU   0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~c                     	 t           "d t          D             ad t          D             a t          | t          t           |          S )Nc                 .    g | ]}t          |f          S r?   r@   rA   s     r%   rD   zb85encode.<locals>.<listcomp>  s     777QUA4[[777r1   c                 ,    g | ]}t           D ]}||z   S r?   )	_b85charsr   s      r%   rD   zb85encode.<locals>.<listcomp>  r   r1   )
_b85chars2_b85alphabetr   r   )rG   r   s     r%   r   r     sI     77,777	DDyDDD
Q	:s333r1   c                    	 t           *d gdz  a t          t                    D ]\  }}|t           |<   t          |           } t	          |            dz  }| d|z  z   } g }t          j        d          j        }t          dt	          |           d          D ]}| ||dz            }d}	 |D ]}|dz  t           |         z   }nG# t          $ r: t          |          D ](\  }}t           |         t          d||z   z            d ) w xY w	 |                     ||                     # t
          j        $ r t          d|z            d w xY wd	                    |          }	|r|	d |          }	|	S )
N   rI      ~r   r   r   z#bad base85 character at position %dz+base85 overflow in hunk starting at byte %dr1   )_b85decrl   r   r&   rW   r   r   r   r[   r    r   r   r   r   )
rG   rC   r_   r   outr   chunkry   jr   s
             r%   r   r     s    &3,l++ 	 	DAqGAJJ""AAw!mG	D7NA
CM$$E1c!ffa   , ,!AE'
	 , ,Bh+, 	 	 	!%(( 9 911:%$%J'(1u&. / /489 & 		,JJuuSzz""""| 	, 	, 	,J ! " "'+,	, XXc]]F #	'	"Ms   (CAD	D((#EL   rS   rQ   c                 Z   	 	 |                      t                    }|sd S t          |          t          k     rJ|                      t          t          |          z
            }|sn||z  }t          |          t          k     Jt          j        |          }|                    |           r7   )read
MAXBINSIZErW   r*   r+   write)inputoutputr$   nslines        r%   r   r     s    ;
JJz"" 	E!ffz!!Js1vv-..B GA	 !ffz!!
 "1%%T
r1   c                     	 	 |                                  }|sd S t          j        |          }|                    |           Br7   )readliner*   r4   r   )r   r   r   r$   s       r%   r   r     sJ    ;~~ 	E%%Qr1   c                 H   	 t          |           }n1# t          $ r$}d| j        j        z  }t          |          |d }~ww xY w|j        dvr&d|j        d| j        j        }t          |          |j        dk    r%d|j        | j        j        fz  }t          |          d S )Nz"expected bytes-like object, not %s)r_   rG   Bz#expected single byte elements, not z from rN   z(expected 1-D data, not %d-D data from %s)r   r    r!   r"   r   ndim)r$   merrmsgs       r%   _input_type_checkr     s    &qMM & & &2Q[5IInn#%& 	x&&&+,888Q[5I5IKnnv{{9+,61;3G*HInn {s    
A ;A c                    	 t          |            g }t          dt          |           t                    D ];}| ||t          z            }|                    t          j        |                     <d                    |          S )Nr   r1   )r   r[   rW   r   r   r*   r+   r   )r$   piecesrC   r   s       r%   r   r   %  s    aF1c!ffj)) 2 2!a*n$%h)%00111188Fr1   c                 J    	 t          |            t          j        |           S r7   )r   r*   r4   r#   s    r%   r   r   0  s$    Baq!!!r1   c                     	 dd l } dd l}d| j        d         z  }	 |                    | j        dd          d          \  }}nV# |j        $ rI}| j        | _        t          |           t          |           |                     d           Y d }~nd }~ww xY wt          }|D ][\  }}|dk    rt          }|dk    rt          }|dk    rt          }|d	k    rt                        d S |d
k    rt          |            d S \|rS|d         dk    rGt          |d         d          5 }	 ||	| j        j                   d d d            d S # 1 swxY w Y   d S  || j        j        | j        j                   d S )Nr   zusage: %s [-h|-d|-e|-u|-t] [file|-]
        -h: print this help message and exit
        -d, -u: decode
        -e: encode (default)
        -t: encode and decode string 'Aladdin:open sesame'rN   hdeutrO   z-ez-dz-uz-tz-h-rb)sysgetoptargvr   stderrstdoutprintexitr   r   testopenbufferstdin)
r   r   usageoptsargsr   funcorF   fs
             r%   mainr   7  s   > ?Bhqk	JE
]]38ABB<99
dd<   Z
c


e	
 D + +199Vd99Vd99Vd99dffffff99eElllFFF9 2Q3$q'4   	'ADCJ%&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	SYsz011111s)   &A 
B?BB!EE	E	c                      d} t          t          |                      t          |           }t          t          |                     t          |          }t          t          |                     d S )Ns   Aladdin:open sesame)r   reprr   r   )s0s1s2s      r%   r   r   T  sT    	B	$r((OOO	RB	$r((OOO	RB	$r((OOOOOr1   __main__r7   )NF)FN)F)FFF)9r   r   r*   __all__r-   rX   r   r&   r   r   r   r   r.   r:   r<   r   r   _B32_ENCODE_DOCSTRING_B32_DECODE_DOCSTRING_B32_DECODE_MAP01_DOCSTRINGr}   r   rV   rk   r`   r{   r	   r   __doc__r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   MAXLINESIZEr   r   r   r   r   r   r   r   r"   r?   r1   r%   <module>r
     sq   K 
			    $ i K K K"   8 8 8 84     $ooeU;; #ooeU;; ? ? ?  $ 	   35
" " "H, , , ,^' ' ')00(0CC	 8 8 8 8)00(3N 1 P P	 * * *,33[3II 4 4 4 4 -33[?A 4 C C ' ' '! ! ! !* 	
	
   0  %aU% ' ' ' ' 'R  %E| D D D D DPE	

4 4 4 4' ' 'Z 1na
         " " "2 2 2:   zDFFFFF r1   