
    z%i{P                     ^   	 d dl Z d dlZd dlZg dZeefZd Zd4dZd5dZ	d Z
d Zej                  d	d
      Zej                  d
d	      Zd Zd ZdZdZdZdZdZi ai ad Zd6dZd Zej7                  d      e_        d6dZej7                  de      e_        d Zej7                  d      e_        d7dZej7                  dd      e_        d Z d7dZ!da"da#dZ$d Z%d8d!Z&dd ddd"d#Z'ddd$d%d&Z(d'Z)da*da+da,d7d(Z-d) Z.d*Z/e/d+z  d,z  Z0d- Z1d. Z2d/ Z3d0 Z4d1 Z5d2 Z6e7d3k(  r e6        yy)9    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                 .   t        | t              r	 | j                  d      S t        | t
              r| S 	 t        |       j                         S # t        $ r t	        d      w xY w# 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    :/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/base64.py_bytes_from_decode_datar&   "   s    !S	U88G$$ ![!K!}$$&& " 	USTT	U  K )+,;;+?+?@ AFJ	KKs   A A' A$'-Bc                     	 t        j                  | d      }|%|j                  t        j	                  d|            S |S )NF)newline   +/)binascii
b2a_base64	translatebytes	maketrans)r$   altcharsencodeds      r%   r   r   3   sB     !!!U3G  !ABBN    Fc                     	 t        |       } |0t        |      }| j                  t        j                  |d            } t	        j
                  | |      S )Nr)   )strict_mode)r&   r,   r-   r.   r*   
a2b_base64)r$   r/   validates      r%   r   r   A   sO    " 	 "A*84KK%89qh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                 @    	 t        |       j                  t              S r7   )r   r,   _urlsafe_encode_translationr#   s    r%   r   r   p   s     Q<!!"=>>r1   c                 Z    	 t        |       } | j                  t              } t        |       S r7   )r&   r,   _urlsafe_decode_translationr   r#   s    r%   r   r   y   s,    	 	 "A	/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 cg c]  }t        |f       }}|D cg c]  }|D ]  }||z   	  c}}t         | <   d }t        |t              st	        |      j                         }t        |      dz  }|r|dd|z
  z  z   }t               }t        j                  }t         |    }	t        dt        |      d      D ]<  } ||||dz          }
||	|
dz	     |	|
dz	  dz     z   |	|
dz	  dz     z   |	|
dz     z   z  }> |dk(  rd	|d
d  t        |      S |dk(  rd|dd  t        |      S |dk(  rd|dd  t        |      S |dk(  rd|dd  t        |      S c c}w c c}}w )N       r         i  
      s   ======i   s   ====   s   ===      =)_b32tab2r-   r   r   r   r   len	bytearrayint
from_bytesrange)alphabetr$   ib32tabableftoverr0   rO   b32tab2cs              r%   
_b32encoderY      s    x'/0!%+00-3DVDa!eDeDa%qM!!#1vzHX&&kGJx G1c!fa  qAE{#GAG$Q"W-./Q"W-./ AI&' 	 1}  > 
Q
 >	 
Q > 
Q>; 1Ds
   EEc                 `   | t         vr&t        |       D ci c]  \  }}||
 c}}t         | <   t        |      }t        |      dz  rt	        j
                  d      |3t        |      }|j                  t        j                  dd|z               }|r|j                         }t        |      }|j                  d      }|t        |      z
  }t               }t         |    }	t        dt        |      d      D ]4  }
||
|
dz    }d}	 |D ]  }|dz  |	|   z   } 	 ||j                  d      z  }6 |dz  s|d	vrt	        j
                  d      |r.|r,d|z  z  }|j                  d      }d
d|z  z
  dz  }|d | |dd  t        |      S c c}}w # t        $ r t	        j
                  d      d w xY w)N   zIncorrect paddings   01   OrI   r   r>   zNon-base32 digit found>   r   rC   rF   rH      +   )_b32rev	enumerater&   rL   r*   Errorr,   r-   r.   upperrstriprM   rP   KeyErrorto_bytes)rQ   r$   casefoldmap01kvlpadcharsdecodedb32revrR   quantaaccrX   lastrV   s                   r%   
_b32decoderr      s    w.7.ABdaQTB"A
1vznn011 '.KKte|<=GGI 	AA	A3q6zHkGXF1c!fa  #1a!e	E -ax6!9,- 	3<<?"# 	1u/nn011GH||AX%!+IX>O C8  	E..!9:D	Es   FF F-c                 "    t        t        |       S r7   )rY   _b32alphabetr#   s    r%   r	   r	      s    lA&&r1   base32)encodingc                 &    t        t        | ||      S r7   )rr   rt   )r$   rg   rh   s      r%   r
   r
      s    lAx77r1   )rv   
extra_argsc                 "    t        t        |       S r7   )rY   _b32hexalphabetr#   s    r%   r   r     s    oq))r1   	base32hexc                 $    t        t        | |      S r7   )rr   rz   r$   rg   s     r%   r   r     s    oq(33r1    c                 J    	 t        j                  |       j                         S r7   )r*   hexlifyrc   r#   s    r%   r   r     s!    A$$&&r1   c                     	 t        |       } |r| j                         } t        j                  d|       rt	        j
                  d      t	        j                  |       S )Ns	   [^0-9A-F]zNon-base16 digit found)r&   rc   researchr*   rb   	unhexlifyr}   s     r%   r   r     sP     	 "AGGI	yyq!nn566a  r1   s   <~s   ~>c                    t        | t              st        |       j                         } t	        |        dz  }|r| d|z  z   } t        j                  dt	        |       dz  z        j                  |       }|D cg c].  }|r|sdn%|r|dk(  rdn||dz     ||dz  d	z     z   ||dz     z   0 }	}|r!|s|	d
   dk(  r|d   dz  |	d
<   |	d
   d |  |	d
<   dj                  |	      S c c}w )NrH   r?   z!%dI   zi       yi^	 U   i9  rJ   r   r>   r1   )	r   r   r   r   rL   structStructunpackjoin)
rU   charschars2padfoldnuls
foldspacespaddingwordswordchunkss
             r%   	_85encoder   0  s   a%qM!!#Aw!mGMM&CFaK0188;E  !
  td TZ%7ddfn%dbj4'()TBY ! !F ! s":qAF2JBZ	'*r
88F!s   :3C#)r   wrapcolr   adobec                   	 t         Ht        dd      D cg c]  }t        |f       c}at        D  cg c]  }t        D ]  } || z   	  c} }a t	         t        t         |d|      }|r	t
        |z   }|rqt        |rdnd|      }t        dt        |      |      D cg c]
  }||||z     }}|r%t        |d         dz   |kD  r|j                  d       d	j                  |      }|r	|t        z  }|S c c}w c c} }w c c}w )
N!   v   TrD   rC   r   rJ   r1      
)
_a85chars2rP   r-   	_a85charsr   	_A85STARTmaxrL   appendr   _A85END)	rU   r   r   r   r   rR   rT   resultr   s	            r%   r   r   H  s   & */C.9QUA4[9	'0D!)DQq1uDuD
q)ZdJGFV#5aa1 CK9; AK( ; ;6":"W,c"F#'M% :D;s   C3C8C>s    	
)r   r   ignorecharsc                2   	 t        |       } |rS| j                  t              st        dj	                  t                    | j                  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  rEn nB ||
       t        |      dk(  s(d	}|D ]  }
d
|z  |
dz
  z   } 	  | ||              |	        S|
dk(  r|rt        d       |d       n|r|
dk(  r|rt        d       |d       |
|v rt        d|
z         dj                  |      }dt        |      z
  }|r|d |  }|S # t        j                  $ r t        d      d w xY w)Nz1Ascii85 encoded byte sequences must end with {!r}rD   !Is   uuuur   u   r>   r   r   zAscii85 overflowz   zz inside Ascii85 5-tuples       y   zy inside Ascii85 5-tuples       zNon-Ascii85 digit found: %cr1   rH   )r&   endswithr   r   format
startswithr   r   r   packr   clearrL   errorr   )rU   r   r   r   packIrm   decoded_appendcurrcurr_append
curr_clearxrp   r   r   s                 r%   r   r   q  s    	 "Azz'""F7O  <<	"!BA#2A
 MM$$$EG^^ND++KJ\ @a"7"N4yA~ .As(a"f-C.C"5:. '\ !;<<;'AL !;<<./+:Q>??1@4 XXgF#d)mG	'"M- || C$%78dBCs   +E66 FsU   0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~c                     	 t         Bt        D cg c]  }t        |f       c}at        D  cg c]  }t        D ]  } || z   	  c} }a t	         t        t         |      S c c}w c c} }w r7   )
_b85chars2_b85alphabetr-   	_b85charsr   )rU   r   rR   rT   s       r%   r   r     s^     *67QUA4[7	'0D!)DQq1uDuD
Q	:s33 8Ds
   A A%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   } 	 	 |j                   ||             > d	j                  |      }	|r|	d |  }	|	S # t        $ r0 t        |      D ]   \  }}t         |   t        d||z   z        d   w xY w# t
        j                  $ r t        d|z        d w xY w)
N   r>      ~r   r   r   z#bad base85 character at position %dz+base85 overflow in hunk starting at byte %dr1   )_b85decra   r   r&   rL   r   r   r   rP   r    r   r   r   r   )
rU   rR   rX   r   outr   chunkrp   jr   s
             r%   r   r     s    &3,l+ 	DAqGAJ	 	 "AAw!mG	D7NA
CMM$$$E1c!fa  ,!AE
	 ,Bh+,	,JJuSz",$ XXc]F	'"M  	!%( 911:%$%J'(1u&. /4899 	 || 	,J ! "'+,	,s   C!-D!#DD#E L   rH   rF   c                    	 | j                  t              x}rt        |      t        k  r^| j                  t        t        |      z
        x}r;||z  }t        |      t        k  r$| j                  t        t        |      z
        x}r;t        j                  |      }|j                  |       | j                  t              x}ry y r7   )read
MAXBINSIZErL   r*   r+   write)inputoutputr$   nslines        r%   r   r     s    ;zz*%
%!
%!fz!UZZ
3q68I-J'Jr'JGA !fz!UZZ
3q68I-J'Jr'J""1%T	 zz*%
%!
%r1   c                     	 | j                         x}r:t        j                  |      }|j                  |       | j                         x}r9y y r7   )readliner*   r4   r   )r   r   r   r$   s       r%   r   r     sF    ;.."
"$
"%Q .."
"$
"r1   c                    	 t        |       }|j                  dvr1d|j                  d| j                  j                  }t        |      |j
                  dk7  r0d|j
                  | j                  j                  fz  }t        |      y # t        $ r*}d| j                  j                  z  }t        |      |d }~ww xY w)Nz"expected bytes-like object, not %s)rX   rU   Bz#expected single byte elements, not z from rC   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    &qM 	xx&+,88Q[[5I5IKnvv{9+,661;;3G3G*HIn   &2Q[[5I5IIn#%&s   B 	B?%B::B?c                     	 t        |        g }t        dt        |       t              D ]2  }| ||t        z    }|j	                  t        j                  |             4 dj                  |      S )Nr   r1   )r   rP   rL   r   r   r*   r+   r   )r$   piecesrR   r   s       r%   r   r     sh    aF1c!fj) 2!a*n%h))%012 88Fr1   c                 D    	 t        |        t        j                  |       S r7   )r   r*   r4   r#   s    r%   r   r   '  s    Baq!!r1   c                     	 dd l } dd l}d| j                  d    d}	 |j                  | j                  dd  d      \  }}t        }D ]8  \  }}|dk(  rt        }|dk(  rt        }|d	k(  rt        }|d
k(  s-t        |        y  r>|d   dk7  r6t        |d   d      5 }	 ||	| j
                  j                         d d d        y  || j                  j                  | j
                  j                         y # |j                  $ rC}| j                  | _        t        |       t        |       | j                  d       Y d }~d }~ww xY w# 1 sw Y   y xY w)Nr   zusage: zx [-h|-d|-e|-u] [file|-]
        -h: print this help message and exit
        -d, -u: decode
        -e: encode (default)rC   hdeurD   z-ez-dz-uz-h-rb)sysgetoptargvr   stderrstdoutprintexitr   r   openbufferstdin)
r   r   usageoptsargsr   funcorT   fs
             r%   mainr   .  s9   } %  E]]388AB<8
d D +19Vd9Vd9Vd9eElF	+
 Q3$q'4  	'ACJJ%%&	' 	' 	SYYszz001 << ZZ
c
e		' 	's#   "C5 E
5E8EE
E__main__r7   )NF)FN)F)FFF)8r   r   r*   __all__r-   rM   r   r&   r   r   r   r   r.   r:   r<   r   r   _B32_ENCODE_DOCSTRING_B32_DECODE_DOCSTRING_B32_DECODE_MAP01_DOCSTRINGrt   rz   rK   r`   rY   rr   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"    r1   r%   <module>r      s   K 
  $ i K"84 $ooeU; #ooeU; ?$ 	   35
"H,^')00(0C	 8)00(3N 1 P	 *,33[3I 4 -33[?A 4 C '!* 	
	
0  %aU% 'R  %E| DPE	

4'Z 1na
 "26 zF r1   