a DOgM@sjddlZddlZddlZgdZeefZddZd?ddZd@dd Z d d Z d d Z e ddZ e ddZddZddZdZdadaddZdAddZddZdBddZdadadZdZdCdd Zddddd!d"d#Zddd$d%d&d'Zd(Zda da!da"dDd)d*Z#d+d,Z$d-Z%e%d.d/Z&d0d1Z'd2d3Z(d4d5Z)d6d7Z*d8d9Z+d:d;Z,dkrfe,dS)EN)encodedecode encodebytes decodebytes b64encode b64decode b32encode b32decode b16encode b16decode b85encode b85decode a85encode a85decodestandard_b64encodestandard_b64decodeurlsafe_b64encodeurlsafe_b64decodecCsxt|tr2z |dWSty0tdYn0t|tr@|Szt|WStyrtd|j j dYn0dS)Nasciiz4string argument should contain only ASCII charactersz>argument should be a bytes-like object or ASCII string, not %r) isinstancestrrUnicodeEncodeError ValueError bytes_types memoryviewtobytes TypeError __class____name__sr!+/opt/alt/python39/lib64/python3.9/base64.py_bytes_from_decode_data"s     r#cCs,tj|dd}|dur(|td|S|S)NF)newline+/)binascii b2a_base64 translatebytes maketrans)r altcharsencodedr!r!r"r3srFcCsNt|}|dur*t|}|t|d}|rDtd|sDtdt|S)Nr%s[A-Za-z0-9+/]*={0,2}zNon-base64 digit found) r#r(r)r*re fullmatchr&Error a2b_base64)r r+Zvalidater!r!r"rAs rcCst|SN)rrr!r!r"rZsrcCst|Sr1)rrr!r!r"rasrr%s-_cCst|tSr1)rr(_urlsafe_encode_translationrr!r!r"rosrcCst|}|t}t|Sr1)r#r(_urlsafe_decode_translationrrr!r!r"rxs  rs ABCDEFGHIJKLMNOPQRSTUVWXYZ234567cs>tdur,ddtDfddDadt|tsBt|}t|d}|rb|dd|}t}tj }t}t dt|dD]V}||||dd}|||d?||d ?d @||d ?d @||d @7}q|d krd |dd<nF|dkrd|dd<n.|dkr d|dd<n|dkr6d|dd<t |S)NcSsg|]}t|fqSr!r).0ir!r!r" zb32encode..csg|]}D] }||q qSr!r!r6abZb32tabr!r"r8r9rbigi s======is====s====) _b32tab2 _b32alphabetrrrrlen bytearrayint from_bytesranger))r leftoverr,rQZb32tab2r7cr!r=r"rs<         rc CsxtdurddttDat|}t|dr8td|dur^t|}|t dd|}|rj| }t|}| d}|t|}t }t}t dt|dD]f}|||d}d} z|D]} | d >|| } qWntytd dYn0|| d d 7}q|ds|d vr(td|rp|rp| d |K} | d d } d d |d} | d| |dd<t|S)NcSsi|]\}}||qSr!r!)r6kvr!r!r" r9zb32decode..zIncorrect paddings01OrJrr>zNon-base32 digit foundr@>rrDrGrI+)_b32rev enumeraterMr#rNr&r/r(r)r*upperrstriprOrRKeyErrorto_bytes) r casefoldZmap01lZpadcharsdecodedZb32revr7ZquantaaccrTZlastrSr!r!r"r s@         r cCst|Sr1)r&Zhexlifyr_rr!r!r"r sr cCs4t|}|r|}td|r*tdt|S)Ns [^0-9A-F]zNon-base16 digit found)r#r_r-searchr&r/Z unhexlify)r rcr!r!r"r s   r s<~s~>c st|tst|}t| d}|r4|d|}tdt|d|}fdd|D}|r|s|ddkrdd |d<|dd| |d<d |S) NrIr?z!%dIcsPg|]H}r|sdn6r$|dkr$dn&|d|dd|dqS)zi yi^ Ui9r!)r6Zwordcharschars2foldnuls foldspacesr!r"r8!s   z_85encode..rKrhrr>r9) rrrrrNstructStructZunpackjoin) r<rlrmpadrnropaddingZwordschunksr!rkr" _85encodes    rv)rowrapcolrsadobecstdur*ddtddDaddtDat|tt|d||rHtrt|rVdndfd dtd tD}|rt|d dkr|d d ||rt 7S)NcSsg|]}t|fqSr!r4r5r!r!r"r8Dr9za85encode..!vcSsg|]}tD] }||q qSr!) _a85charsr:r!r!r"r8Er9TrErDcsg|]}||qSr!r!r5resultrwr!r"r8MsrrKr9 ) _a85chars2rRr{rv _A85STARTmaxrNappendrr_A85END)r<rorwrsrxrur!r|r"r/s$   rs )rorx ignorecharsc Cst|}|rH|ts$tdt|tr<|dd}n |dd}tdj }g}|j }g}|j }|j } |dD]} d| krdkrnnj|| t |dkrd } |D]} d | | d} qz||| Wntj ytd dYn0| qv| d kr|rtd |dqv|rF| dkrF|rrrjzAscii85 overflowzzz inside Ascii85 5-tuplesyzy inside Ascii85 5-tuples zNon-Ascii85 digit found: %cr9rI)r#endswithrrformat startswithrrprqpackrclearrNerrorrr)r<rorxrpackIreZdecoded_appendZcurrZ curr_appendZ curr_clearxrfr}rtr!r!r"rXsZ            rsU0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~cCs2tdur$ddtDaddtDat|tt|S)NcSsg|]}t|fqSr!r4r5r!r!r"r8r9zb85encode..cSsg|]}tD] }||q qSr!) _b85charsr:r!r!r"r8r9) _b85chars2 _b85alphabetrrv)r<rsr!r!r"r s r c CsFtdur,dgdattD]\}}|t|<qt|}t| d}|d|}g}tdj}tdt|dD]}|||d}d}z|D]}|dt|}qWnDt yt|D]&\}}t|durt d||dqYn0z| ||Wqntj y t d|dYqn0qnd |} |rB| d| } | S) Nr>~rrrjz#bad base85 character at position %dz+base85 overflow in hunk starting at byte %dr9)_b85decr^rr#rNrprqrrRrrrrrr) r<r7rTrtoutrchunkrfjr}r!r!r"r sH        r LrIrGcCsX|t}|sqTt|tkr>|tt|}|s4q>||7}qt|}||qdSr1)read MAXBINSIZErNr&r'write)inputoutputr nsliner!r!r"rs    rcCs(|}|sq$t|}||qdSr1)readliner&r0r)rrrr r!r!r"rs  rc Csz t|}Wn:tyF}z"d|jj}t||WYd}~n d}~00|jdvrld|j|jjf}t||jdkrd|j|jjf}t|dS)Nz"expected bytes-like object, not %s)rTr<Bz-expected single byte elements, not %r from %srDz(expected 1-D data, not %d-D data from %s)rrrrrndim)r merrmsgr!r!r"_input_type_checks       rcCsLt|g}tdt|tD]$}|||t}|t|qd|S)Nrr9)rrRrNrrr&r'rr)r piecesr7rr!r!r"r s rcCst|t|Sr1)rr&r0rr!r!r"rsrc Cs6ddl}ddl}z||jddd\}}WnR|jy}z8|j|_t|td|jd|dWYd}~n d}~00t}|D]@\}}|dkrt}|dkrt }|dkrt }|d krt dSq|r |dd kr t |dd }|||jj Wdn1s0Yn||j j |jj dS) NrrDZdeutzusage: %s [-d|-e|-u|-t] [file|-] -d, -u: decode -e: encode (default) -t: encode and decode string 'Aladdin:open sesame'rEz-ez-dz-uz-t-rb)sysgetoptargvrstderrstdoutprintexitrrtestopenbufferstdin) rrZoptsargsrfuncor;fr!r!r"mains(     0rcCs<d}tt|t|}tt|t|}tt|dS)NsAladdin:open sesame)rreprrr)Zs0s1s2r!r!r"r8s   r__main__)N)NF)FN)F)FFF)F)/r-rpr&__all__r)rOrr#rrrrr*r2r3rrrMrLr]rr r r r{rrrrvrrrrrrr r Z MAXLINESIZErrrrrrrrrr!r!r!r" sX     & C  )H -