???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    ifS                     @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZdddddgZd\Z	Z
ZZZd\ZZd	Zd
ZdZdedddfddZdd ZG dd dZG dd deZG dd dejZG dd dejZefddddZdd Zdd Zedkre  dS )    NBadGzipFileGzipFileopencompress
decompress)               )r   r   r      	   rbc                 C   s   d|kr d|krPt d|f n0|d k	r0t d|d k	r@t d|d k	rPt d|dd}t| tttjfr|t| ||}n,t| dst| d	rtd ||| }nt	d
d|krt
||||S |S d S )NtbzInvalid mode: %rz0Argument 'encoding' not supported in binary modez.Argument 'errors' not supported in binary modez/Argument 'newline' not supported in binary mode readwritez1filename must be a str or bytes object, or a file)
ValueErrorreplace
isinstancestrbytesosPathLiker   hasattr	TypeErrorioTextIOWrapper)filenamemodecompresslevelencodingerrorsnewlineZgz_modeZbinary_file r%   )/opt/alt/python38/lib64/python3.8/gzip.pyr      s$    c                 C   s   |  td| d S )Nz<L)r   structZpack)outputvaluer%   r%   r&   write32uE   s    r*   c                   @   s8   e Zd ZdddZdd ZdddZdd	 Zd
d ZdS )_PaddedFile    c                 C   s    || _ t|| _|| _d| _d S Nr   )_bufferlen_lengthfile_read)selffprependr%   r%   r&   __init__O   s    
z_PaddedFile.__init__c                 C   s~   | j d kr| j|S | j | | jkrJ| j }|  j |7  _ | j|| j  S | j }d | _ | j|d  | j|| j |  S d S N)r2   r1   r   r0   r.   )r3   sizer   r%   r%   r&   r   U   s    
z_PaddedFile.readc                 C   s>   | j d kr|| _n|  j t|8  _ d S t| j| _d| _ d S r-   )r2   r.   r/   r0   )r3   r5   r%   r%   r&   r5   b   s    
z_PaddedFile.prependc                 C   s   d | _ d | _| j|S r7   )r2   r.   r1   seek)r3   Zoffr%   r%   r&   r9   k   s    z_PaddedFile.seekc                 C   s   dS NTr%   r3   r%   r%   r&   seekablep   s    z_PaddedFile.seekableN)r,   )r,   )__name__
__module____qualname__r6   r   r5   r9   r<   r%   r%   r%   r&   r+   J   s
   

	r+   c                   @   s   e Zd ZdS )r   N)r=   r>   r?   r%   r%   r%   r&   r   t   s   c                   @   s   e Zd ZdZddeddfddZedd Zedd Zdd	 Z	d
d Z
dd Zdd Zd+ddZd,ddZdd Zedd Zdd ZejfddZdd Zdd  Zd!d" Zd#d$ Zd%d& Zejfd'd(Zd-d)d*ZdS ).r   Nc                 C   s4  |r"d|ksd|kr"t d||r6d|kr6|d7 }|d krTt||pJd }| _|d kr|t|dd}t|ttfsd}n
t	
|}|d krt|dd}|d	rt| _t|}t|| _|| _nN|d
rt| _| | t|tjtj tjd| _|| _nt d||| _| jtkr0| | d S )Nr   UzInvalid mode: {!r}r   r   namer   r    r)waxr   )r   formatbuiltinsr   	myfileobjgetattrr   r   r   r   fspath
startswithREADr    _GzipReaderr   BufferedReaderr.   rA   WRITE_init_writezlibZcompressobjZDEFLATED	MAX_WBITSZDEF_MEM_LEVELr   _write_mtimefileobj_write_gzip_header)r3   r   r    r!   rT   mtimerawr%   r%   r&   r6      s@    #


zGzipFile.__init__c                 C   sB   dd l }|dtd | jtkr<| jdd  dkr<| jd S | jS )Nr   zuse the name attributer   .gz)warningswarnDeprecationWarningr    rO   rA   )r3   rZ   r%   r%   r&   r      s
    
zGzipFile.filenamec                 C   s
   | j jjS r7   )r.   rW   _last_mtimer;   r%   r%   r&   rV      s    zGzipFile.mtimec                 C   s.   t | j}d|dd  d tt|  d S )Nz<gzip r    >)reprrT   hexid)r3   sr%   r%   r&   __repr__   s    
zGzipFile.__repr__c                 C   s.   || _ td| _d| _g | _d| _d| _d S Nr,   r   )rA   rQ   crc32crcr8   Zwritebufbufsizeoffset)r3   r   r%   r%   r&   rP      s    zGzipFile._init_writec                 C   s  | j d | j d z<tj| j}t|ts<|d}|	drR|d d }W n t
k
rl   d}Y nX d}|rzt}| j t|d | j}|d krt }t| j t| |tkrd}n|tkrd	}nd
}| j | | j d |r| j |d
  d S )N      zlatin-1s   .gzrX   r,   r                )rT   r   r   pathbasenamerA   r   r   encodeendswithUnicodeEncodeErrorFNAMEchrrS   timer*   int_COMPRESS_LEVEL_BEST_COMPRESS_LEVEL_FAST)r3   r!   ZfnameflagsrV   Zxflr%   r%   r&   rU      s6    



zGzipFile._write_gzip_headerc                 C   s   |    | jtkr&dd l}t|jd| jd kr8tdt|t	rLt
|}nt|}|j}|dkr| j| j| |  j|7  _t|| j| _|  j|7  _|S )Nr   z$write() on read-only GzipFile objectz!write() on closed GzipFile object)_check_not_closedr    rO   errnoOSErrorEBADFrT   r   r   r   r/   
memoryviewnbytesr   r   r8   rQ   rg   rh   rj   )r3   datar~   Zlengthr%   r%   r&   r     s     



zGzipFile.writer^   c                 C   s2   |    | jtkr&dd l}t|jd| j|S )Nr   z$read() on write-only GzipFile object)r}   r    rL   r~   r   r   r.   r   r3   r8   r~   r%   r%   r&   r     s
    
zGzipFile.readc                 C   s@   |    | jtkr&dd l}t|jd|dk r4tj}| j	|S )Nr   z%read1() on write-only GzipFile object)
r}   r    rL   r~   r   r   r   DEFAULT_BUFFER_SIZEr.   read1r   r%   r%   r&   r   &  s    
zGzipFile.read1c                 C   s2   |    | jtkr&dd l}t|jd| j|S )Nr   z$peek() on write-only GzipFile object)r}   r    rL   r~   r   r   r.   peek)r3   nr~   r%   r%   r&   r   3  s
    
zGzipFile.peekc                 C   s
   | j d kS r7   rT   r;   r%   r%   r&   closed:  s    zGzipFile.closedc                 C   s   | j }|d krd S d | _ zP| jtkrR|| j  t|| j	 t|| j
d@  n| jtkrf| j  W 5 | j}|rd | _|  X d S )N    )rT   rH   closer    rO   r   r   flushr*   rh   r8   rL   r.   )r3   rT   rH   r%   r%   r&   r   >  s    

zGzipFile.closec                 C   s4   |    | jtkr0| j| j| | j  d S r7   )r}   r    rO   rT   r   r   r   )r3   Z	zlib_moder%   r%   r&   r   Q  s    
zGzipFile.flushc                 C   s
   | j  S r7   )rT   filenor;   r%   r%   r&   r   X  s    zGzipFile.filenoc                 C   s"   | j tkrtd| jd d S )NzCan't rewind in write moder   )r    rL   r   r.   r9   r;   r%   r%   r&   rewind`  s    
zGzipFile.rewindc                 C   s
   | j tkS r7   )r    rL   r;   r%   r%   r&   readableg  s    zGzipFile.readablec                 C   s
   | j tkS r7   )r    rO   r;   r%   r%   r&   writablej  s    zGzipFile.writablec                 C   s   dS r:   r%   r;   r%   r%   r&   r<   m  s    zGzipFile.seekablec                 C   s   | j tkr|tjkr2|tjkr*| j| }ntd|| jk rDtd|| j }d}t|d D ]}| 	| q^| 	d|d   n | j t
kr|   | j||S | jS )NzSeek from end not supportedzNegative seek in write modes                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ro   )r    rO   r   SEEK_SETSEEK_CURrj   r   r   ranger   rL   r}   r.   r9   )r3   rj   whencecountchunkir%   r%   r&   r9   p  s     





zGzipFile.seekc                 C   s   |    | j|S r7   )r}   r.   readline)r3   r8   r%   r%   r&   r     s    zGzipFile.readline)r^   )r^   )r^   )r=   r>   r?   rH   rz   r6   propertyr   rV   re   rP   rU   r   r   r   r   r   r   rQ   ZZ_SYNC_FLUSHr   r   r   r   r   r<   r   r   r9   r   r%   r%   r%   r&   r   x   s8     
I

 


c                       sZ   e Zd Z fddZdd Zdd Zdd Zdd
dZdd Zdd Z	 fddZ
  ZS )rM   c                    s,   t  jt|tjtj d d| _d | _d S )N)ZwbitsT)superr6   r+   rQ   ZdecompressobjrR   _new_memberr]   )r3   fp	__class__r%   r&   r6     s
    z_GzipReader.__init__c                 C   s   t d| _d| _d S rf   )rQ   rg   _crc_stream_sizer;   r%   r%   r&   
_init_read  s    z_GzipReader._init_readc                 C   sF   | j |}t||k rB| j |t| }|s8td||7 }q|S )NACompressed file ended before the end-of-stream marker was reached)_fpr   r/   EOFError)r3   r   r   r   r%   r%   r&   _read_exact  s    
z_GzipReader._read_exactc                 C   s   | j d}|dkrdS |dkr,td| td| d\}}| _|dkrVtd|t@ r|td	| d\}| | |t@ r| j d
}|r|dkrqq|t	@ r| j d
}|r|dkrqq|t
@ r| d dS )Nr   r,   Frk   zNot a gzipped file (%r)z<BBIxxr
   zUnknown compression methodz<Hr   ro   T)r   r   r   r'   unpackr   r]   FEXTRArv   FCOMMENTFHCRC)r3   magicmethodflagZ	extra_lenrd   r%   r%   r&   _read_gzip_header  s0    

z_GzipReader._read_gzip_headerr^   c                 C   s   |dk r|   S |sdS | jjr>|   d| _| jf | j| _| jrf|   |  s`| j	| _
dS d| _| jtj}| j||}| jjdkr| j| jj n| jjdkr| j| jj |dkrq|dkrtdq| | |  j	t|7  _	|S )Nr   r,   TFr   )readallZ_decompressoreof	_read_eofr   Z_decomp_factoryZ_decomp_argsr   r   Z_posZ_sizer   r   r   r   r   Zunconsumed_tailr5   Zunused_datar   _add_read_datar/   )r3   r8   bufZ
uncompressr%   r%   r&   r     s:    

z_GzipReader.readc                 C   s$   t || j| _| jt| | _d S r7   )rQ   rg   r   r   r/   )r3   r   r%   r%   r&   r     s    z_GzipReader._add_read_datac                 C   s   t d| d\}}|| jkr<tdt|t| jf n|| jd@ krRtdd}|dkrl| jd}qV|r|| j	| d S )Nz<IIr
   zCRC check failed %s != %sr   z!Incorrect length of data producedro   r   )
r'   r   r   r   r   rb   r   r   r   r5   )r3   rg   Zisizecr%   r%   r&   r     s    


z_GzipReader._read_eofc                    s   t    d| _d S r:   )r   _rewindr   r;   r   r%   r&   r     s    
z_GzipReader._rewind)r^   )r=   r>   r?   r6   r   r   r   r   r   r   r   __classcell__r%   r%   r   r&   rM     s   !
3rM   )rV   c             	   C   s6   t  }t|d||d}||  W 5 Q R X | S )Nwb)rT   r    r!   rV   )r   BytesIOr   r   getvalue)r   r!   rV   r   r4   r%   r%   r&   r     s    c              
   C   s0   t t| d}| W  5 Q R  S Q R X d S )Nr   )r   r   r   r   )r   r4   r%   r%   r&   r     s    c            	      C   s  ddl m}  | dd}| }|jdddd |jd	dd
d |jddddd |jdddgdd | }t}|jr|t}n
|jrt	}|j
D ]}|jr|dkrtddtjjd}tjj}n>|dd  dkrtd| t|d}t|d d d}nB|dkr"tjj}tddtjj|d}nt|d}t|d d}|d}|sPq^|| q<|tjjk	rt|  |tjjk	r|  qd S )Nr   )ArgumentParserzeA simple command line interface for the gzip module: act like gzip, but do not delete the input file.)Zdescriptionz--fast
store_truezcompress faster)actionhelpz--bestzcompress betterz-dz--decompresszact like gunzip instead of gzipargs*-r1   )nargsdefaultmetavarr   r   )r   r    rT   rX   rY   zfilename doesn't end in .gz: r   )r   r    rT   r!   r   )argparser   Zadd_mutually_exclusive_groupadd_argument
parse_args_COMPRESS_LEVEL_TRADEOFFZfastr{   Zbestrz   r   r   r   sysstdinbufferstdoutexitr   rG   r   r   r   )	r   parsergroupr   r!   argr4   gr   r%   r%   r&   main'  sR    





r   __main__) r'   r   rx   r   rQ   rG   r   Z_compression__all__ZFTEXTr   r   rv   r   rL   rO   r{   r   rz   r   r*   r+   r   r   Z
BaseStreamr   ZDecompressReaderrM   r   r   r   r=   r%   r%   r%   r&   <module>   s8      
,*   	0