ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     3

  \nO                 @   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gZd\Z	Z
ZZZd\ZZdddZdd ZG dd dZG dd dejZG dd dejZdddZdd Zdd Zedkre  dS )    NGzipFileopencompress
decompress               rb	   c             C   s   d|kr d|krPt d|f n0|d k	r0t d|d k	r@t d|d k	rPt d|jdd}t| tttjfr|t| ||}n,t| dst| d	rtd ||| }nt	d
d|krt
j||||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#   /usr/lib64/python3.6/gzip.pyr      s$    c             C   s   | j tjd| d S )Nz<L)r   structZpack)outputvaluer#   r#   r$   write32u@   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__J   s    
z_PaddedFile.__init__c             C   s~   | j d kr| jj|S | j | | jkrJ| j }|  j |7  _ | j|| j  S | j }d | _ | j|d  | jj|| j |  S d S )N)r/   r.   r   r-   r+   )r0   sizer   r#   r#   r$   r   P   s    
z_PaddedFile.readc             C   s>   | j d kr|| _n|  j t|8  _ d S t| j| _d| _ d S )Nr   )r/   r+   r,   r-   )r0   r2   r#   r#   r$   r2   ]   s    
z_PaddedFile.prependc             C   s   d | _ d | _| jj|S )N)r/   r+   r.   seek)r0   Zoffr#   r#   r$   r5   f   s    z_PaddedFile.seekc             C   s   dS )NTr#   )r0   r#   r#   r$   seekablek   s    z_PaddedFile.seekableN)r*   )r*   )__name__
__module____qualname__r3   r   r2   r5   r6   r#   r#   r#   r$   r)   E   s
   

	r)   c               @   s   e Zd ZdZd,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d0d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d2d*d+ZdS )3r   Nr   c             C   s2  |r"d|ksd|kr"t dj||r6d|kr6|d7 }|d krTtj||pJd }| _|d kr|t|dd}t|ttfsd}n
t	j
|}|d krt|dd}|jd	rt| _t|}tj|| _|| _nN|jdrt| _| j| tj|tjtj tjd| _|| _nt dj||| _| jtkr.| j  d S )Nr   UzInvalid mode: {!r}r   r   namer   r   rwaxr   )r=   r>   r?   )r   formatbuiltinsr   	myfileobjgetattrr   r   r   r   fspath
startswithREADr   _GzipReaderr   BufferedReaderr+   r;   WRITE_init_writezlibZcompressobjZDEFLATED	MAX_WBITSZDEF_MEM_LEVELr   _write_mtimefileobj_write_gzip_header)r0   r   r   r   rN   mtimerawr#   r#   r$   r3   {   s>    #


zGzipFile.__init__c             C   sB   dd l }|jdtd | jtkr<| jdd  dkr<| jd S | jS )Nr   zuse the name attributer      z.gz)warningswarnDeprecationWarningr   rI   r;   )r0   rT   r#   r#   r$   r      s
    
zGzipFile.filenamec             C   s
   | j jjS )N)r+   rQ   _last_mtime)r0   r#   r#   r$   rP      s    zGzipFile.mtimec             C   s.   t | j}d|dd  d tt|  d S )Nz<gzip r    >)reprrN   hexid)r0   sr#   r#   r$   __repr__   s    
zGzipFile.__repr__c             C   s.   || _ tjd| _d| _g | _d| _d| _d S )Nr*   r   )r;   rK   crc32crcr4   Zwritebufbufsizeoffset)r0   r   r#   r#   r$   rJ      s    zGzipFile._init_writec             C   s   | j jd | j jd y<tjj| j}t|ts<|jd}|j	drR|d d }W n t
k
rl   d}Y nX d}|rzt}| j jt|jd | j}|d krtj }t| j t| | j jd | j jd	 |r| j j|d
  d S )Ns      zlatin-1s   .gzrR   r*   r             rS   )rN   r   r   pathbasenamer;   r   r   encodeendswithUnicodeEncodeErrorFNAMEchrrM   timer(   int)r0   ZfnameflagsrP   r#   r#   r$   rO      s,    



zGzipFile._write_gzip_headerc             C   s   | j   | 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j| |  j|7  _tj|| j| _|  j|7  _|S )Nr   z$write() on read-only GzipFile objectz!write() on closed GzipFile object)_check_not_closedr   rI   errnoOSErrorEBADFrN   r   r   r   r,   
memoryviewnbytesr   r   r4   rK   r`   ra   rc   )r0   datars   Zlengthr#   r#   r$   r      s     



zGzipFile.writer   c             C   s2   | j   | jtkr&dd l}t|jd| jj|S )Nr   z$read() on write-only GzipFile object)rr   r   rF   rs   rt   ru   r+   r   )r0   r4   rs   r#   r#   r$   r     s
    
zGzipFile.readc             C   s@   | j   | jtkr&dd l}t|jd|dk r4tj}| jj	|S )Nr   z%read1() on write-only GzipFile object)
rr   r   rF   rs   rt   ru   r   DEFAULT_BUFFER_SIZEr+   read1)r0   r4   rs   r#   r#   r$   rz     s    
zGzipFile.read1c             C   s2   | j   | jtkr&dd l}t|jd| jj|S )Nr   z$peek() on write-only GzipFile object)rr   r   rF   rs   rt   ru   r+   peek)r0   nrs   r#   r#   r$   r{   #  s
    
zGzipFile.peekc             C   s
   | j d kS )N)rN   )r0   r#   r#   r$   closed*  s    zGzipFile.closedc             C   s   | j }|d krd S d | _ zP| jtkrR|j| jj  t|| j t|| jd@  n| jt	krf| j
j  W d | j}|rd | _|j  X d S )Nl    )rN   r   rI   r   r   flushr(   ra   r4   rF   r+   closerB   )r0   rN   rB   r#   r#   r$   r   .  s    

zGzipFile.closec             C   s4   | j   | jtkr0| jj| jj| | jj  d S )N)rr   r   rI   rN   r   r   r~   )r0   Z	zlib_moder#   r#   r$   r~   A  s    
zGzipFile.flushc             C   s
   | j j S )N)rN   fileno)r0   r#   r#   r$   r   H  s    zGzipFile.filenoc             C   s"   | j tkrtd| jjd d S )NzCan't rewind in write moder   )r   rF   rt   r+   r5   )r0   r#   r#   r$   rewindP  s    
zGzipFile.rewindc             C   s
   | j tkS )N)r   rF   )r0   r#   r#   r$   readableW  s    zGzipFile.readablec             C   s
   | j tkS )N)r   rI   )r0   r#   r#   r$   writableZ  s    zGzipFile.writablec             C   s   dS )NTr#   )r0   r#   r#   r$   r6   ]  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d }xt|d D ]}| j	| qdW | j	d|d   n | j t
kr| j  | jj||S | jS )NzSeek from end not supportedzNegative seek in write moderg   i   )r   rI   r   SEEK_SETSEEK_CURrc   r   rt   ranger   rF   rr   r+   r5   )r0   rc   whencecountchunkir#   r#   r$   r5   `  s     





zGzipFile.seekc             C   s   | j   | jj|S )N)rr   r+   readline)r0   r4   r#   r#   r$   r   t  s    zGzipFile.readline)NNr   NNrZ   )rZ   rZ   )rZ   rZ   )rZ   )r7   r8   r9   rB   r3   propertyr   rP   r_   rJ   rO   r   r   rz   r{   r}   r   rK   ZZ_SYNC_FLUSHr~   r   r   r   r   r6   r   r   r5   r   r#   r#   r#   r$   r   n   s,    
H

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 )rG   c                s,   t  jt|tjtj d d| _d | _d S )N)ZwbitsT)superr3   r)   rK   ZdecompressobjrL   _new_memberrW   )r0   fp)	__class__r#   r$   r3   z  s    z_GzipReader.__init__c             C   s   t jd| _d| _d S )Nr*   r   )rK   r`   _crc_stream_size)r0   r#   r#   r$   
_init_read  s    z_GzipReader._init_readc             C   sJ   | j j|}x8t||k rD| j j|t| }|s:td||7 }qW |S )NzACompressed file ended before the end-of-stream marker was reached)_fpr   r,   EOFError)r0   r|   rx   r   r#   r#   r$   _read_exact  s    z_GzipReader._read_exactc             C   s   | j jd}|dkrdS |dkr,td| tjd| jd\}}| _|dkrVtd|t@ r|tjd	| jd\}| j| |t@ rx | j jd
}| s|dkrP qW |t	@ rx | j jd
}| s|dkrP qW |t
@ r| jd dS )Nr   r*   Fs   zNot a gzipped file (%r)z<BBIxxr	   zUnknown compression methodz<Hr   rg   T)r   r   rt   r%   unpackr   rW   FEXTRArm   FCOMMENTFHCRC)r0   magicmethodflagZ	extra_lenr^   r#   r#   r$   _read_gzip_header  s0    

z_GzipReader._read_gzip_headerr   c             C   s   |dk r| j  S |sdS x| jjr@| j  d| _| jf | j| _| jrh| j  | j sb| j	| _
dS d| _| jjtj}| jj||}| jjdkr| jj| jj n| jjdkr| jj| jj |dkrP |dkrtdqW | j| |  j	t|7  _	|S )Nr   r*   TFzACompressed file ended before the end-of-stream marker was reached)readallZ_decompressoreof	_read_eofr   Z_decomp_factoryZ_decomp_argsr   r   Z_posZ_sizer   r   r   ry   r   Zunconsumed_tailr2   Zunused_datar   _add_read_datar,   )r0   r4   bufZ
uncompressr#   r#   r$   r     s:    

z_GzipReader.readc             C   s$   t j|| j| _| jt| | _d S )N)rK   r`   r   r   r,   )r0   rx   r#   r#   r$   r     s    z_GzipReader._add_read_datac             C   s   t jd| jd\}}|| jkr<tdt|t| jf n|| jd@ krRtdd}x|dkrn| jjd}qXW |r| jj	| d S )Nz<IIr	   zCRC check failed %s != %sl    z!Incorrect length of data producedrg   r   )
r%   r   r   r   rt   r\   r   r   r   r2   )r0   r`   Zisizecr#   r#   r$   r     s    


z_GzipReader._read_eofc                s   t  j  d| _d S )NT)r   _rewindr   )r0   )r   r#   r$   r     s    
z_GzipReader._rewindrZ   )rZ   )r7   r8   r9   r3   r   r   r   r   r   r   r   __classcell__r#   r#   )r   r$   rG   y  s   !
3rG   c          	   C   s4   t j }t|d|d}|j|  W d Q R X |j S )Nwb)rN   r   r   )r   BytesIOr   r   getvalue)rx   r   r   r1   r#   r#   r$   r     s    c          	   C   s$   t tj| d
}|j S Q R X d S )N)rN   )r   r   r   r   )rx   r1   r#   r#   r$   r     s    c              C   s>  t jdd  } | o| d dk}|r.| dd  } | s8dg}  x| D ]}|r|dkrltddt jjd}t jj}q|dd  d	krtd
t| q@t|d}t	j|d d d}n>|dkrt jj}tddt jjd}nt	j|d}t|d	 d}x |j
d}| sP |j| qW |t jjk	r"|j  |t jjk	r@|j  q@W d S )Nr   r   z-d-r   r   )r   r   rN   rR   z.gzzfilename doesn't end in .gz:r   i   rS   rS   )sysargvr   stdinbufferstdoutprintr[   r   rA   r   r   r   )argsr   argr1   gr   r#   r#   r$   _test  s<    


r   __main__)r   r   r   r	   r
   )r   r   )r   r   NNN)r   )r%   r   ro   r   rK   rA   r   Z_compression__all__ZFTEXTr   r   rm   r   rF   rI   r   r(   r)   Z
BaseStreamr   ZDecompressReaderrG   r   r   r   r7   r#   r#   r#   r$   <module>   s*     
+)   
	&