<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]             B   @   sR  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 l	 Z	 d  d l
 Z
 y d  d l Z Wn e k
 r d  d l Z Yn Xy d  d l Z e j Z Wn! e k
 r d Z e
 j Z Yn Xy d  d l Z Wn e k
 rd Z Yn Xy d  d l Z Wn e k
 r;d Z Yn Xd d d d d d d d	 d
 d d d g Z Gd d   d e  Z Gd d   d e  Z e Z Z d d >d Z d d >d Z d d >d Z d  Z d Z d Z d Z d Z d Z  d Z! d Z" d Z# d Z$ d Z% e	 j& e$  Z' d  Z( d Z) d Z* d Z+ d Z, d Z- d  Z. d! Z/ d Z0 d" Z1 d# Z2 d$ Z3 e	 j& e2  Z4 d  Z5 d Z6 d Z7 d Z8 d Z9 d Z: d  Z; d! Z< d Z= d" Z> d% Z? d& Z@ d ZA d' ZB d ZC d( ZD d ZE d) ZF d* ZG d+ ZH d, ZI e	 j& eH  ZJ d  ZK d ZL d ZM d ZN d ZO d ZP d  ZQ d! ZR d ZS d" ZT d% ZU d& ZV d- ZW d. ZX e	 j& eW  ZY d/ ZZ d0 Z[ e	 j& eZ  Z\ d  Z] d Z^ d Z_ d Z` d Za d Zb d  Zc d! Zd d Ze d" Zf d1 d2   Zg d3 d	   Zh d4 d5   Zi d6 d7   Zj Gd8 d
   d
 ek  Zl Gd9 d:   d:  Zm Gd; d<   d<  Zn Gd= d>   d>  Zo d  d? d d@ d dA d dA d dA d dA d  dB d! dC d dD d" dE d% dB d dF d dG d* dH dI dJ dK dL dM dN i Zp dO dP   Zq dQ dR   Zr dS dT   Zs GdU dV   dV  Zt GdW dX   dX  Zu GdY dZ   dZ e  jv  Zw Gd[ d   d  Zx Gd\ d   d ex  Zy d d] d^  Zz e{ d_ k rNez   d S)`    N
BadZipFile
BadZipfileerror
ZIP_STOREDZIP_DEFLATED	ZIP_BZIP2ZIP_LZMA
is_zipfileZipInfoZipFile	PyZipFileLargeZipFilec               @   s   e  Z d  Z d S)r   N)__name__
__module____qualname__ r   r   ,/opt/alt/python35/lib64/python3.5/zipfile.pyr   +   s   c               @   s   e  Z d  Z d S)r   N)r   r   r   r   r   r   r   r   /   s                        -   .   ?   s   <4s4H2LHs   PK                  	   z<4s4B4HL2L5H2Ls   PK
                  z<4s2B4HL2L2Hs   PKz<4sLQLs   PKz
<4sQ2H2L4Qs   PKc             C   s-   y t  |   r d SWn t k
 r( Yn Xd S)NTF)_EndRecDataOSError)fpr   r   r   _check_zipfile   s    r-   c             C   si   d } yJ t  |  d  r* t d |   } n% t |  d   } t |  } Wd  QRXWn t k
 rd Yn X| S)NFreadr,   rb)hasattrr-   openr+   )filenameresultr,   r   r   r   r	      s    c             C   so  y |  j  | t d  Wn t k
 r0 | SYn X|  j t  } t |  t k rV | St j t |  \ } } } } | t k r | S| d k s | d k r t	 d   |  j  | t t
 d  |  j t
  } t |  t
 k r | St j t |  \
 } } }	 }
 } } } } } } | t k r%| S| | t <| | t <| | t <| | t <| | t <| | t <| | t <| S)Nr   r   r   z3zipfiles that span multiple disks are not supported)seeksizeEndCentDir64Locatorr+   r.   lenstructunpackstructEndArchive64LocatorstringEndArchive64Locatorr   sizeEndCentDir64structEndArchive64stringEndArchive64_ECD_SIGNATURE_ECD_DISK_NUMBER_ECD_DISK_START_ECD_ENTRIES_THIS_DISK_ECD_ENTRIES_TOTAL	_ECD_SIZE_ECD_OFFSET)fpinoffsetendrecdatasigZdisknoZreloffZdisksZszcreate_versionZread_versionZdisk_numZdisk_dirZdircountZ	dircount2ZdirsizeZ	diroffsetr   r   r   _EndRecData64   s6    	0






rK   c       	      C   s  |  j  d d  |  j   } y |  j  t d  Wn t k
 rI d  SYn X|  j   } t |  t k r | d d  t k r | d d   d k r t j t	 |  } t
 |  } | j d  | j | t  t |  t |  St | d	 t d  } |  j  | d  |  j   } | j t  } | d k r| | | t  } t |  t k rYd  St
 t j t	 |   } | t } | | t | t |  } | j |  | j | |  t |  | | | |  Sd  S)
Nr   r   r   s         r   r   i   )r4   tellsizeEndCentDirr+   r.   r6   stringEndArchiver7   r8   structEndArchivelistappendrK   maxrfind_ECD_COMMENT_SIZE)	rE   ZfilesizerH   rG   ZmaxCommentStartstartZrecDataZcommentSizecommentr   r   r   r*      s>    	
r*   c               @   s[   e  Z d  Z d# Z d d$ d d  Z d d   Z d d d  Z d d    Z d! d"   Z d S)%r
   orig_filenamer2   	date_timecompress_typerX   extracreate_systemrJ   extract_versionreserved	flag_bitsvolumeinternal_attrexternal_attrheader_offsetCRCcompress_size	file_size	_raw_timeZNoName  r   r   c             C   s  | |  _  | j t d   } | d k r: | d |  } t j d k rm t j | k rm | j t j d  } | |  _ | |  _ | d d k  r t d   t	 |  _
 d |  _ d |  _ t j d k r d |  _ n	 d |  _ t |  _ t |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d  S)Nr   /i  z+ZIP does not support timestamps before 1980rL   win32r   )rY   findchrossepreplacer2   rZ   
ValueErrorr   r[   rX   r\   sysplatformr]   DEFAULT_VERSIONrJ   r^   r_   r`   ra   rb   rc   )selfr2   rZ   Z	null_byter   r   r   __init__@  s.    													zZipInfo.__init__c             C   s;  d |  j  j |  j f g } |  j t k rN | j d t j |  j |  j   |  j d ?} |  j d @} | r | j d t	 j
 |   | r | j d |  |  j d d   d k } | s |  j r | j d	 |  j  | s |  j r!|  j t k s|  j |  j k r!| j d
 |  j  | j d  d j |  S)Nz<%s filename=%rz compress_type=%sr   i  z filemode=%rz external_attr=%#xr   rj   z file_size=%rz compress_size=%r> )	__class__r   r2   r[   r   rS   compressor_namesgetrc   statfilemoderg   rf   join)ru   r3   hiloisdirr   r   r   __repr__j  s(    	zZipInfo.__repr__Nc             C   s  |  j  } | d d d >| d d >B| d B} | d d >| d	 d >B| d d B} |  j d
 @rs d } } } n |  j } |  j } |  j } |  j } d }	 | d  k r | t k p | t k } | r d }
 | t j |
 d t j	 |
  d	 | |  } | t k s| t k r5| s#t
 d   d } d } t }	 |  j t k rVt t |	  }	 n |  j t k rtt t |	  }	 t |	 |  j  |  _ t |	 |  j  |  _ |  j   \ } } t j t t |  j |  j | |  j | | | | | t |  t |   } | | | S)Nr   i  r#   r   r    r   r   r%   r   r   z<HHQQz'Filesize would require ZIP64 extensionsl    )rZ   r`   re   rf   rg   r\   ZIP64_LIMITr7   packcalcsizer   ZIP64_VERSIONr[   r   rT   BZIP2_VERSIONr   LZMA_VERSIONr^   rJ   _encodeFilenameFlagsstructFileHeaderstringFileHeaderr_   r6   )ru   zip64dtdosdatedostimere   rf   rg   r\   min_versionfmtr2   r`   headerr   r   r   
FileHeader  sF    	&&				 zZipInfo.FileHeaderc             C   sS   y |  j  j d  |  j f SWn/ t k
 rN |  j  j d  |  j d Bf SYn Xd  S)Nasciizutf-8i   )r2   encoder`   UnicodeEncodeError)ru   r   r   r   r     s    zZipInfo._encodeFilenameFlagsc             C   s  |  j  } t j } xvt |  d k r| d | d  d   \ } } | d k rs| d k rz | d | d d   } nx | d k r | d | d d	   } nP | d
 k r | d | d d   } n( | d k r f  } n t d | f   d } |  j d k r| | |  _ | d 7} |  j d k rD| | |  _ | d 7} |  j d k rs|  j } | | |  _ | d 7} | | d d   } q Wd  S)Nr   z<HHr      z<QQQ   r   z<QQr   r   z<Qr   r   zCorrupt extra field %s        )r   r   )r\   r7   r8   r6   RuntimeErrorrg   rf   rd   )ru   r\   r8   tplnZcountsidxoldr   r   r   _decodeExtra  s4    			

	
zZipInfo._decodeExtra)rY   r2   rZ   r[   rX   r\   r]   rJ   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   )ri   r   r   r   r   r   )	r   r   r   	__slots__rv   r   r   r   r   r   r   r   r   r
   '  s0                     *.c               @   sR   e  Z d  Z d d   Z d Z d d   Z d d   Z d d	   Z d
 d   Z d S)_ZipDecrypterc              C   s   d }  d g d } xh t  d  D]Z } | } xA t  d  D]3 } | d @r^ | d ?d @|  A} q9 | d ?d @} q9 W| | | <q  W| S)Nl    q[ r      r   r   i)range)Zpolytableicrcjr   r   r   _GenerateCRCTable  s    
z_ZipDecrypter._GenerateCRCTableNc             C   s   | d ?d @|  j  | | Ad @AS)Nr   i    )crctable)ru   Zchr   r   r   r   _crc32  s    z_ZipDecrypter._crc32c             C   s[   t  j d  k r t  j   t  _ d |  _ d |  _ d |  _ x | D] } |  j |  q@ Wd  S)NixV4igE#ixV4)r   r   r   key0key1key2_UpdateKeys)ru   pwdpr   r   r   rv     s    			z_ZipDecrypter.__init__c             C   sr   |  j  | |  j  |  _ |  j |  j d @d @|  _ |  j d d d @|  _ |  j  |  j d ?d @|  j  |  _ d  S)Nr   l    ir   r   )r   r   r   r   )ru   cr   r   r   r     s    z_ZipDecrypter._UpdateKeysc             C   s8   |  j  d B} | | | d Ad ?d @A} |  j |  | S)Nr   r   r   r   )r   r   )ru   r   kr   r   r   __call__  s    z_ZipDecrypter.__call__)	r   r   r   r   r   r   rv   r   r   r   r   r   r   r     s   	r   c               @   s@   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 S)
LZMACompressorc             C   s   d  |  _  d  S)N)_comp)ru   r   r   r   rv     s    zLZMACompressor.__init__c             C   se   t  j d t  j i  } t  j t  j d t  j t  j |  g |  _ t j d d d t	 |   | S)Nidfiltersz<BBHr#   r   )
lzma_encode_filter_propertiesFILTER_LZMA1r   
FORMAT_RAW_decode_filter_propertiesr   r7   r   r6   )ru   Zpropsr   r   r   _init  s    zLZMACompressor._initc             C   s9   |  j  d  k r) |  j   |  j  j |  S|  j  j |  S)N)r   r   compress)ru   rH   r   r   r   r   "  s    zLZMACompressor.compressc             C   s3   |  j  d  k r& |  j   |  j  j   S|  j  j   S)N)r   r   flush)ru   r   r   r   r   '  s    zLZMACompressor.flushN)r   r   r   rv   r   r   r   r   r   r   r   r     s   r   c               @   s(   e  Z d  Z d d   Z d d   Z d S)LZMADecompressorc             C   s   d  |  _  d |  _ d |  _ d  S)NrL   F)_decomp_unconsumedeof)ru   r   r   r   rv   /  s    		zLZMADecompressor.__init__c          	   C   s   |  j  d  k r |  j | 7_ t |  j  d k r7 d St j d |  j d d   \ } t |  j  d | k rv d St j t j d t j t j	 |  j d d |   g |  _  |  j d | d   } |  ` |  j  j
 |  } |  j  j |  _ | S)Nr   rL   z<Hr   r   )r   r   r6   r7   r8   r   r   r   r   r   
decompressr   )ru   rH   Zpsizer3   r   r   r   r   4  s    "#zLZMADecompressor.decompressN)r   r   r   rv   r   r   r   r   r   r   -  s   r   storeZshrinkreduceZimplodetokenizeZdeflateZ	deflate64bzip2r   Zterse   Zlz77a   Zwavpackb   Zppmdc             C   s   |  t  k r no |  t k r0 t s~ t d   nN |  t k rQ t s~ t d   n- |  t k rr t s~ t d   n t d   d  S)Nz.Compression requires the (missing) zlib modulez-Compression requires the (missing) bz2 modulez.Compression requires the (missing) lzma modulez(That compression method is not supported)r   r   zlibr   r   bz2r   r   )compressionr   r   r   _check_compression]  s    r   c             C   sV   |  t  k r% t j t j t j d  S|  t k r; t j   S|  t k rN t	   Sd  Sd  S)Nr'   i)
r   r   compressobjZ_DEFAULT_COMPRESSIONDEFLATEDr   r   BZ2Compressorr   r   )r[   r   r   r   _get_compressorp  s    
r   c             C   s   |  t  k r d  S|  t k r) t j d  S|  t k r? t j   S|  t k rR t   St	 j
 |   } | r t d |  | f   n t d |  f   d  S)Nr'   zcompression type %d (%s)zcompression type %di)r   r   r   decompressobjr   r   BZ2Decompressorr   r   r{   r|   NotImplementedError)r[   Zdescrr   r   r   _get_decompressor|  s    
r   c               @   s7   e  Z d  Z d d   Z d	 d d  Z d d   Z d S)
_SharedFilec             C   s(   | |  _  | |  _ | |  _ | |  _ d  S)N)_file_pos_close_lock)ru   fileposcloselockr   r   r   rv     s    			z_SharedFile.__init__r   c          	   C   sP   |  j  @ |  j j |  j  |  j j |  } |  j j   |  _ | SWd  QRXd  S)N)r   r   r4   r   r.   rN   )ru   nrH   r   r   r   r.     s
    
z_SharedFile.readc             C   s2   |  j  d  k	 r. |  j  } d  |  _  |  j |  d  S)N)r   r   )ru   fileobjr   r   r   r     s    		z_SharedFile.closeNry   )r   r   r   rv   r.   r   r   r   r   r   r     s   r   c               @   sL   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d S)	_Tellablec             C   s   | |  _  d |  _ d  S)Nr   )r,   rF   )ru   r,   r   r   r   rv     s    	z_Tellable.__init__c             C   s%   |  j  j |  } |  j | 7_ | S)N)r,   writerF   )ru   rH   r   r   r   r   r     s    z_Tellable.writec             C   s   |  j  S)N)rF   )ru   r   r   r   rN     s    z_Tellable.tellc             C   s   |  j  j   d  S)N)r,   r   )ru   r   r   r   r     s    z_Tellable.flushc             C   s   |  j  j   d  S)N)r,   r   )ru   r   r   r   r     s    z_Tellable.closeN)r   r   r   rv   r   rN   r   r   r   r   r   r   r     s
   r   c                   s   e  Z d  Z d Z d Z e j d  Z d d d d  Z d	 d
   Z	 d d d  Z
 d d d  Z d d   Z d  d d  Z d d   Z d d   Z d d   Z d d   Z   f d d   Z   S)!
ZipExtFiler   r   i   s*   ^(?P<chunk>[^\r\n]+)|(?P<newline>\n|\r\n?)NFc             C   s   | |  _  | |  _ | |  _ | j |  _ | j |  _ | j |  _ t	 |  j  |  _
 d |  _ d |  _ d |  _ d | k |  _ d  |  _ |  j d  k	 r |  j d 8_ | |  _ | j |  _ t | d  r | j |  _ t d  |  _ n	 d  |  _ d  S)NFrL   r   Ur   re   )_fileobj
_decrypter_close_fileobjr[   _compress_typerf   _compress_leftrg   _leftr   _decompressor_eof_readbuffer_offset
_universalnewlinesmoder2   namer0   re   _expected_crccrc32_running_crc)ru   r   r   zipinfoZ	decrypterZclose_fileobjr   r   r   rv     s(    								zZipExtFile.__init__c             C   s   d |  j  j |  j  j f g } |  j sz | j d |  j |  j f  |  j t k r | j d t	 j
 |  j |  j   n | j d  | j d  d j |  S)Nz<%s.%sz name=%r mode=%rz compress_type=%sz	 [closed]rw   rx   )rz   r   r   closedrS   r   r   r   r   r{   r|   r   )ru   r3   r   r   r   r     s    		zZipExtFile.__repr__c             C   s  |  j  ra | d k  ra |  j j d |  j  d } | d k ra |  j |  j |  } | |  _ | S|  j  s} t j j |  |  Sd } x| d k  s t |  | k  r|  j d  } | d k r | S|  j	 j
 |  } | j d  } | d  k	 rD|  j d  k rg  |  _ | |  j k r'|  j j |  |  j t |  7_ | d S| j d  } | d k ry| d  | t |   } |  j t |  7_ | | 7} q W| S)Nr   s   
r   rL   r   newlinechunk)r   r   rl   r   ioBufferedIOBasereadliner6   peekPATTERNsearchgroupr   rS   )ru   limitr   lineZ	readaheadmatchr   r   r   r   r   r    s8    		!
	zZipExtFile.readlinec             C   s   | t  |  j  |  j k r~ |  j |  } t  |  |  j k ri | |  j |  j d   |  _ d |  _ n |  j t  |  8_ |  j |  j |  j d  S)Nr   i   )r6   r   r   r.   )ru   r   r   r   r   r   r  %  s    zZipExtFile.peekc             C   s   d S)NTr   )ru   r   r   r   readable2  s    zZipExtFile.readablec             C   sm  | d  k s | d k  rj |  j  |  j d   } d |  _  d |  _ x# |  j se | |  j |  j  7} qC W| S| |  j } | t |  j   k  r |  j  |  j |  } | |  _ | S| t |  j   } |  j  |  j d   } d |  _  d |  _ x| | d k rh|  j rh|  j |  } | t |  k  rK| |  _  | |  _ | | d  |  7} P| | 7} | t |  8} q W| S)Nr   rL   )r   r   r   _read1MAX_Nr6   )ru   r   bufendrH   r   r   r   r.   5  s4    							
zZipExtFile.readc             C   sZ   |  j  d  k r d  St | |  j  |  _ |  j rV |  j |  j  k rV t d |  j   d  S)NzBad CRC-32 for file %r)r   r   r   r   r   r   )ru   newdatar   r   r   _update_crcV  s
    zZipExtFile._update_crcc             C   sp  | d  k s | d k  rw |  j  |  j d   } d |  _  d |  _ x0 |  j sr |  j |  j  } | rC | | 7} PqC W| S| |  j } | t |  j   k  r |  j  |  j |  } | |  _ | S| t |  j   } |  j  |  j d   } d |  _  d |  _ | d k rlxf |  j sk|  j |  } | t |  k  rW| |  _  | |  _ | | d  |  7} P| r| | 7} PqW| S)Nr   rL   )r   r   r   r  r  r6   )ru   r   r  rH   r  r   r   r   read1`  s>    		
					
zZipExtFile.read1c             C   s  |  j  s | d k r d S|  j t k rf |  j j } | t |  k ru | |  j | t |   7} n |  j |  } |  j t k r |  j d k |  _  n |  j t k rt	 | |  j
  } |  j j | |  } |  j j p |  j d k o |  j j |  _  |  j  rI| |  j j   7} n0 |  j j |  } |  j j pC|  j d k |  _  | d  |  j  } |  j t |  8_ |  j d k rd |  _  |  j |  | S)Nr   rL   T)r   r   r   r   unconsumed_tailr6   _read2r   r   rT   MIN_READ_SIZEr   r   r   r   r  )ru   r   rH   r   r   r   r    s2     		zZipExtFile._read1c             C   s   |  j  d k r d St | |  j  } t | |  j   } |  j j |  } |  j  t |  8_  | sj t  |  j d  k	 r t	 t
 |  j |   } | S)Nr   rL   )r   rT   r  minr   r.   r6   EOFErrorr   bytesmap)ru   r   rH   r   r   r   r    s    zZipExtFile._read2c          
      s/   z |  j  r |  j j   Wd  t   j   Xd  S)N)r   r   r   super)ru   )rz   r   r   r     s    	zZipExtFile.close   i   @ry   ry   )r   r   r   r  r  recompiler  rv   r   r  r  r
  r.   r  r  r  r  r   r   r   )rz   r   r     s    2!
%$r   c               @   s  e  Z d  Z d Z d Z d e d d d  Z d d   Z d d	   Z d
 d   Z	 d d   Z
 d d   Z d d   Z d d d  Z d d   Z d d   Z d d   Z e d d    Z e j d d    Z d d d  Z d d d d   Z d d d! d"  Z d d d d# d$  Z e d% d&    Z d' d(   Z d) d*   Z d d d+ d,  Z d d- d.  Z d/ d0   Z d1 d2   Z d3 d4   Z  d5 d6   Z! d S)7r   NrTc             C   s  | d k r t  d   t |  | |  _ d |  _ d |  _ i  |  _ g  |  _ | |  _ | |  _ d  |  _	 d |  _
 t | t  r#d |  _ | |  _ d d	 d d
 d d d d d d
 d
 d d d i } | | } xy y t j | |  |  _ Wn. t k
 r| | k r| | } w   Yn XPq Wn' d |  _ | |  _ t | d d   |  _ d |  _ t j   |  _ d |  _ yD| d k r|  j   n'| d k r/d |  _ y |  j j   |  _ Wn< t t f k
 rt |  j  |  _ d |  _ d |  _ YqXy |  j j |  j  Wqt t f k
 r+d |  _ YqXn | d k ry! |  j   |  j j |  j  Wqt k
 r|  j j d d  d |  _ |  j j   |  _ YqXn t  d   Wn* |  j } d  |  _ |  j  |    Yn Xd  S)Nr  wxaz+ZipFile requires mode 'r', 'w', 'x', or 'a'Fr   rL   r/   zw+bzx+bzr+bwbxbr   r   Tr   z"Mode must be 'r', 'w', 'x', or 'a')r  r  r  r   )r  r  )!r   r   _allowZip64
_didModifydebug
NameToInfofilelistr   r   r   _comment
isinstancestr_filePassedr2   r   r1   r,   r+   getattr_fileRefCnt	threadingRLockr   	_seekable_RealGetContentsrN   	start_dirAttributeErrorr   r4   r   _fpclose)ru   r   r   r   
allowZip64ZmodeDictr~   r,   r   r   r   rv     s|    
											

						
			zZipFile.__init__c             C   s   |  S)Nr   )ru   r   r   r   	__enter__)  s    zZipFile.__enter__c             C   s   |  j    d  S)N)r   )ru   typevalue	tracebackr   r   r   __exit__,  s    zZipFile.__exit__c             C   s   d |  j  j |  j  j f g } |  j d  k	 r |  j rN | j d |  j  n# |  j d  k	 rq | j d |  j  | j d |  j  n | j d  | j d  d j |  S)Nz<%s.%sz file=%rz filename=%rz mode=%rz	 [closed]rw   rx   )	rz   r   r   r,   r+  rS   r2   r   r   )ru   r3   r   r   r   r   /  s    	zZipFile.__repr__c             C   s  |  j  } y t |  } Wn t k
 r9 t d   Yn X| sL t d   |  j d k re t |  | t } | t } | t |  _	 | t
 | | } | t t k r | t t 8} |  j d k r | | } t d | | |  | | |  _ | j |  j d  | j |  } t j |  } d } xi| | k  r| j t  }	 t |	  t k rbt d   t j t |	  }	 |	 t t k rt d   |  j d k rt |	  | j |	 t  }
 |	 d } | d	 @r|
 j d
  }
 n |
 j d  }
 t |
  } | j |	 t  | _ | j |	 t   | _! |	 t" | _# |	 d d  \ | _$ | _% | _& | _' | _( | _) } } | _* | _+ | _, | j& t- k rt. d | j& d   |	 d d  \ | _/ | _0 | _1 | | _2 | d ?d | d ?d @| d @| d ?| d ?d @| d @d f | _3 | j4   | j# | | _# |  j5 j6 |  | |  j7 | j8 <| t |	 t |	 t |	 t  } |  j d k r)t d |  q)Wd  S)NzFile is not a zip filer   r   zgiven, inferred, offsetr   zTruncated central directoryz&Bad magic number for central directoryr    i   zutf-8cp437r   zzip file version %.1fr$   r'   r)   r#   i  r   r%   r   total)9r,   r*   r+   r   r%  printrC   rD   _ECD_COMMENTr(  _ECD_LOCATIONr>   r=   r;   r5   r2  r4   r.   r   BytesIOsizeCentralDirr6   r7   r8   structCentralDir_CD_SIGNATUREstringCentralDir_CD_FILENAME_LENGTHdecoder
   _CD_EXTRA_FIELD_LENGTHr\   _CD_COMMENT_LENGTHrX   _CD_LOCAL_HEADER_OFFSETrd   rJ   r]   r^   r_   r`   r[   re   rf   rg   MAX_EXTRACT_VERSIONr   ra   rb   rc   rh   rZ   r   r'  rS   r&  r2   )ru   r,   rG   Zsize_cdZ	offset_cdconcatZinferredrH   r<  centdirr2   flagsr  tdr   r   r   r1  =  sp    	






L"	&
"zZipFile._RealGetContentsc             C   s   d d   |  j  D S)Nc             S   s   g  |  ] } | j   q Sr   )r2   ).0rH   r   r   r   
<listcomp>  s   	 z$ZipFile.namelist.<locals>.<listcomp>)r'  )ru   r   r   r   namelist  s    zZipFile.namelistc             C   s   |  j  S)N)r'  )ru   r   r   r   infolist  s    zZipFile.infolistc             C   sf   t  d d	 d | xK |  j D]@ } d | j d  d  } t  d | j | | j f d | q Wd  S)
Nz%-46s %19s %12s	File NameModified    Sizer   z%d-%02d-%02d %02d:%02d:%02dr!   z%-46s %s %12d)rT  rU  rV  )r=  r'  rZ   r2   rg   )ru   r   zinfoZdater   r   r   printdir  s    zZipFile.printdirc             C   ss   d } xf |  j  D][ } y9 |  j | j d   } x | j |  rF q4 WWd  QRXWq t k
 rj | j SYq Xq Wd  S)Nr   r   r  i   )r'  r1   r2   r.   r   )ru   Z
chunk_sizerW  fr   r   r   testzip  s    zZipFile.testzipc             C   s2   |  j  j |  } | d  k r. t d |   | S)Nz(There is no item named %r in the archive)r&  r|   KeyError)ru   r   infor   r   r   getinfo  s
    zZipFile.getinfoc             C   sK   | r, t  | t  r, t d t |    | r> | |  _ n	 d  |  _ d  S)Nzpwd: expected bytes, got %s)r)  r  	TypeErrorr7  r   )ru   r   r   r   r   setpassword  s
    zZipFile.setpasswordc             C   s   |  j  S)N)r(  )ru   r   r   r   rX     s    zZipFile.commentc             C   s   t  | t  s% t d t |    t |  t k rj d d  l } | j d t d d | d  t  } | |  _ d |  _	 d  S)Nzcomment: expected bytes, got %sr   z3Archive comment is too long; truncating to %d bytes
stacklevelr   T)
r)  r  r^  r7  r6   ZIP_MAX_COMMENTwarningswarnr(  r$  )ru   rX   rb  r   r   r   rX     s    		c          	   C   s-   |  j  | d |   } | j   SWd  QRXd  S)Nr  )r1   r.   )ru   r   r   r,   r   r   r   r.     s    zZipFile.readc             C   s  | d k r t  d   d | k rC d d  l } | j d t d  | ro t | t  ro t d t |    |  j s t  d	   t | t	  r | } n |  j
 |  } |  j d
 7_ t |  j | j |  j |  j  } y| j t  } t |  t k rt d   t j t |  } | t t k r9t d   | j | t  } | t rg| j | t  | j d @rt d   | j d @rt d   | j d @r| j d  }	 n | j d  }	 |	 | j k rt d | j | f   | j d
 @}
 d  } |
 r| s|  j } | s-t  d |   t  |  } | j d  } t! t" | | d d    } | j d @r| j# d ?d @} n | j$ d ?d @} | d | k rt  d |   t% | | | | d  SWn | j&     Yn Xd  S)Nr  r   rUz&open() requires mode "r", "U", or "rU"r   z'U' mode is deprecatedr   zpwd: expected bytes, got %sz3Attempt to read ZIP archive that was already closedr   zTruncated file headerz Bad magic number for file header    z$compressed patched data (flag bit 5)@   zstrong encryption (flag bit 6)i   zutf-8r;  z/File name in directory %r and header %r differ.z6File %s is encrypted, password required for extractionr   r   r   r   r%   zBad password for fileT)r  r   rd  )'r   rb  rc  DeprecationWarningr)  r  r^  r7  r,   r
   r]  r-  r   rd   r4  r   r.   sizeFileHeaderr6   r   r7   r8   r   _FH_SIGNATUREr   _FH_FILENAME_LENGTH_FH_EXTRA_FIELD_LENGTHr`   r   rF  rY   r   r   rR   r  rh   re   r   r   )ru   r   r   r   rb  rW  Zzef_fileZfheaderfnameZ	fname_strZis_encryptedZzdr   hZ
check_byter   r   r   r1     sr    	
			!
	

zZipFile.openc             C   sI   t  | t  s |  j |  } | d  k r6 t j   } |  j | | |  S)N)r)  r
   r]  rn   getcwd_extract_member)ru   memberpathr   r   r   r   extract+  s
    zZipFile.extractc             C   s@   | d  k r |  j    } x! | D] } |  j | | |  q Wd  S)N)rR  rr  )ru   rq  membersr   r   r   r   r   
extractall9  s    zZipFile.extractallc             C   s   |  j  } | s: d } t j | d t |   } | |  _  | j |  } d d   | j |  D } | j d d   | D  } | S)Nz:<>|"?*_c             s   s   |  ] } | j  d   Vq d S).N)rstrip)rP  r  r   r   r   	<genexpr>O  s    z1ZipFile._sanitize_windows_name.<locals>.<genexpr>c             s   s   |  ] } | r | Vq d  S)Nr   )rP  r  r   r   r   rx  Q  s    )!_windows_illegal_name_trans_tabler*  	maketransr6   	translatesplitr   )clsarcnamepathsepr   Zillegalr   r   r   _sanitize_windows_nameE  s    		zZipFile._sanitize_windows_namec                s  | j  j d t j j  } t j j rE | j t j j t j j  } t j j |  d } d t j j t j j f   t j j j	   f d d   | j
 t j j  D  } t j j d k r |  j | t j j  } t j j	 | |  } t j j |  } t j j |  } | r6t j j |  r6t j |  | j  d	 d k rlt j j |  sht j |  | S|  j | d | 0 } t | d   } t j | |  Wd  QRXWd  QRX| S)
Nrj   r   rx   c             3   s!   |  ] } |   k r | Vq d  S)Nr   )rP  r  )invalid_path_partsr   r   rx  b  s    z*ZipFile._extract_member.<locals>.<genexpr>\r   r!  ry   )r2   rp   rn   rq  ro   altsep
splitdrivecurdirpardirr   r|  r  normpathdirnameexistsmakedirsr   mkdirr1   shutilcopyfileobj)ru   rp  Z
targetpathr   r~  Z	upperdirssourcetargetr   )r  r   ro  T  s*    7zZipFile._extract_memberc             C   s   | j  |  j k r8 d d  l } | j d | j  d d |  j d k rS t d   |  j sh t d	   t | j  |  j	 s d  } t
 |  j  t k r d
 } n- | j t k r d } n | j t k r d } | r t | d   d  S)Nr   zDuplicate name: %rr`  r   r  r  r   z&write() requires mode 'w', 'x', or 'a'z4Attempt to write ZIP archive that was already closedzFiles countZFilesizezZipfile sizez would require ZIP64 extensions)r  r  r   )r2   r&  rb  rc  r   r   r,   r   r[   r#  r6   r'  ZIP_FILECOUNT_LIMITrg   r   rd   r   )ru   rW  rb  requires_zip64r   r   r   _writecheck{  s(    					zZipFile._writecheckc             C   s  |  j  s t d   t j |  } t j | j  } t j | j  } | d d  } | d  k rj | } t j	 j
 t j	 j |  d  } x0 | d t j t j f k r | d d   } q W| r | d 7} t | |  } | d d @d >| _ | rt | _ n$ | d  k r |  j | _ n	 | | _ | j | _ d | _ |  j U|  j rd|  j  j |  j  |  j  j   | _ | j t k r| j d O_ |  j |  d	 |  _ | r)d | _ d | _ d | _  | j d O_ |  j! j" |  | |  j# | j$ <|  j  j% | j& d
   |  j  j   |  _ d  St' | j  }	 |  j sP| j d O_ t( | d   }
 d | _  } d | _ } |  j) o| j d t* k } |  j  j% | j& |   d } xn |
 j+ d  } | sP| t, |  } t- | |  } |	 r|	 j. |  } | t, |  } |  j  j% |  qWWd  QRX|	 rm|	 j/   } | t, |  } |  j  j% |  | | _ n	 | | _ | | _  | | _ | j d @r| rd n d } |  j  j% t0 j1 | | j  | j | j   |  j  j   |  _ n | r'|  j) r'| t* k rt d   | t* k r't d   |  j  j   |  _ |  j  j | j  |  j  j% | j& |   |  j  j |  j  |  j! j" |  | |  j# | j$ <Wd  QRXd  S)Nz7Attempt to write to ZIP archive that was already closedr   r!   r   rj   i  r   r   TFr   r/   g?i   z<LQQz<LLLz*File size has increased during compressingz-Compressed size larger than uncompressed sizei    )2r,   r   rn   r}   S_ISDIRst_modetime	localtimest_mtimerq  r  r  ro   r  r
   rc   r   r[   r   st_sizerg   r`   r   r0  r4   r2  rN   rd   r   r  r$  rf   re   r'  rS   r&  r2   r   r   r   r1   r#  r   r.   r6   r   r   r   r7   r   )ru   r2   r~  r[   str   mtimerZ   rW  Zcmprr,   re   rf   r   rg   r  r   r   r   r   r     s    		"
		
										zZipFile.writec             C   s  t  | t  r | j d  } t  | t  s t d | d t j t j    d  d   } |  j | _ | j d d k r d | _	 | j	 d O_	 q d | _	 n | } |  j
 s t d
   t |  | _ |  j |  j r |  j
 j |  j  |  j
 j   | _ | d  k	 r| | _ |  j
 j   | _ | d  k	 r?| | _ | j t k r]| j d O_ |  j |  d |  _ t |  | _ t | j  } | r| j |  | j   } t |  | _ n | j | _ | j t k p| j t k } | r|  j rt  d   |  j
 j! | j" |   |  j
 j! |  | j d @r{| rJd n d } |  j
 j! t# j$ | | j | j | j   |  j
 j   |  j
 j   |  _ |  j% j& |  | |  j' | j <Wd  QRXd  S)Nzutf-8r2   rZ   r!   r   rj   iA  r   i  z7Attempt to write to ZIP archive that was already closedr   Tz'Filesize would require ZIP64 extensionsr   z<LQQz<LLLry   i  Ai  )(r)  r*  r   r
   r  r  r   r[   r2   rc   r,   r   r6   rg   r   r0  r4   r2  rN   rd   r   r`   r  r$  r   re   r   r   r   rf   r   r#  r   r   r   r7   r   r'  rS   r&  )ru   Zzinfo_or_arcnamerH   r[   rW  cor   r   r   r   r   writestr  s`    "			
				zZipFile.writestrc             C   s   |  j    d  S)N)r   )ru   r   r   r   __del__9  s    zZipFile.__del__c             C   s   |  j  d  k r d  SzS |  j d k re |  j re |  j + |  j rT |  j  j |  j  |  j   Wd  QRXWd  |  j  } d  |  _  |  j |  Xd  S)Nr  r  r   )r  r  r   )	r,   r   r$  r   r0  r4   r2  _write_end_recordr4  )ru   r,   r   r   r   r   =  s    
			zZipFile.closec             C   s  x
|  j  D]} | j } | d d d >| d d >B| d B} | d d >| d	 d >B| d d B} g  } | j t k s | j t k r | j | j  | j | j  d
 } d
 } n | j } | j } | j t k r | j | j  d
 } n	 | j } | j }	 d }
 | rJt j	 d d t
 |  d d t
 |  |  |	 }	 t }
 | j t k rkt t |
  }
 n | j t k rt t |
  }
 t |
 | j  } t |
 | j  } y | j   \ } } t j	 t t | | j | | j | | j | | | j | | t
 |  t
 |	  t
 | j  d | j | j |  } Wn t k
 rt t t | | j | | j | j | j | | | j | | t
 | j   t
 |	  t
 | j  d | j | j | f d t! j"   Yn X|  j# j$ |  |  j# j$ |  |  j# j$ |	  |  j# j$ | j  q
 W|  j# j%   } t
 |  j   } | |  j& } |  j& } d  } | t' k r\d } n' | t k rqd } n | t k rd } | r7|  j( st) | d   t j	 t* t+ d d d d d | | | |  } |  j# j$ |  t j	 t, t- d | d  } |  j# j$ |  t. | d  } t. | d
  } t. | d
  } t j	 t/ t0 d d | | | | t
 |  j1  	 } |  j# j$ |  |  j# j$ |  j1  |  j# j2   d  S)Nr   i  r#   r   r    r   r   r%   r   l    z<HHQr   r   zFiles countzCentral directory offsetzCentral directory sizez would require ZIP64 extensions,   r   i  )3r'  rZ   rg   r   rf   rS   rd   r\   r7   r   r6   r   r[   r   rT   r   r   r   r^   rJ   r   rB  rD  r]   r_   re   rX   rb   rc   rg  r=  r`   r2   rr   stderrr,   r   rN   r2  r  r#  r   r<   r=   r9   r:   r  rQ   rP   r(  r   )ru   rW  r   r   r   r\   rg   rf   rd   Z
extra_datar   r^   rJ   r2   r`   rL  Zpos2ZcentDirCountZcentDirSizeZcentDirOffsetr  Zzip64endrecZzip64locrecrG   r   r   r   r  N  s    	&&							!				
zZipFile._write_end_recordc             C   s1   |  j  d 8_  |  j  r- |  j r- | j   d  S)Nr   )r-  r+  r   )ru   r,   r   r   r   r4    s    zZipFile._fpclose)"r   r   r   r,   ry  r   rv   r6  r:  r   r1  rR  rS  rX  rZ  r]  r_  propertyrX   setterr.   r1   rr  rt  classmethodr  ro  r  r   r  r  r   r  r4  r   r   r   r   r     s8   TN			X'h?ec               @   sF   e  Z d  Z d e d d d d  Z d d d d	  Z d
 d   Z d S)r   r  Tr   c          	   C   s/   t  j |  | d | d | d | | |  _ d  S)Nr   r   r5  )r   rv   	_optimize)ru   r   r   r   r5  optimizer   r   r   rv     s    zPyZipFile.__init__rx   Nc             C   s  | rR | |  rR |  j  rN t j j |  r4 d n d } t d | | f  d  St j j |  \ } } t j j |  r1t j j | d  } t j j |  rP| r d | | f } n | } |  j  r t d | d |  |  j | d d  |  \ } }	 |  j  rt d
 |	  |  j	 | |	  t j
 |  }
 |
 j d  x|
 D] } t j j | |  } t j j |  \ } } t j j |  rt j j t j j | d   rI|  j | | d | qI| d k rI| r| |  r|  j  rIt d |  qI|  j | d d  |  \ } }	 |  j  r9t d
 |	  |  j	 | |	  qIWq|  j  rft d |  x2t j
 |  D] } t j j | |  } t j j |  \ } } | d k rv| r| |  r|  j  rvt d |  qv|  j | d d  |  \ } }	 |  j  rt d
 |	  |  j	 | |	  qvWnj | d d   d k rSt d   |  j | d d  |  \ } }	 |  j  rt d |	  |  j	 | |	  d  S)Nrq  r   z%s "%s" skipped by filterfuncz__init__.pyz%s/%szAdding package inasr   r   ZAdding
filterfuncz.pyzfile "%s" skipped by filterfunczAdding files from directoryz.Files added with writepy() must end with ".py"zAdding filer  r  r  r  )r%  rn   rq  r   r=  r|  r   isfile_get_codenamer   listdirremovesplitextwritepyr   )ru   pathnamebasenamer  Zlabeldirr   Zinitnamerl  r~  dirlistr2   rq  rootextr   r   r   r    sv    		"	!
						"	zPyZipFile.writepyc                s  d   f d d  } | d } | d } t  j j | d d } t  j j | d d } t  j j | d d }   j d k rt j j |  r t j |  j t j |  j k r | }	 }
 qt j j |  rt j |  j t j |  j k r| }
 | }	 qt j j |  rMt j |  j t j |  j k rM| }
 | }	 qt j j |  rt j |  j t j |  j k r| }
 | }	 q| |  rt	 j
 j d	 k r| }
 n! t	 j
 j d k r| }
 n | }
 | }	 q| }
 }	 n   j d	 k r| }
 | }	 nT | }	   j d k r,| }
 n6   j d k rD| }
 n d
 j   j  } t |   t j j |
  ot j |
  j t j |  j k s| | d   j s| }
 }	 t j j |	  d } | rd | | f } |
 | f S)Nr   c                s   d d  l  }   j r" t d |   y | j |  d d d | Wn9 | j k
 rz } z t | j  d SWYd  d  } ~ Xn Xd S)Nr   Z	CompilingdoraiseTr  F)
py_compiler%  r=  r  PyCompileErrormsg)r   r  r  err)ru   r   r   _compile  s    	z)PyZipFile._get_codename.<locals>._compilez.pyz.pycoptimizationrx   r   r   z"invalid value for 'optimize': {!r}r  z%s/%sry   ry   )	importlibutilcache_from_sourcer  rn   rq  r  r}   r  rr   rM  r  formatrq   r|  )ru   r  r  r  Zfile_pyZfile_pycZpycache_opt0Zpycache_opt1Zpycache_opt2r~  rl  r  Zarchivenamer   )ru   r   r    s`    

$$	$	$							$
zPyZipFile._get_codenamery   )r   r   r   r   rv   r  r  r   r   r   r   r     s   Qc                s  d d  l  } | j d  } |  d  k r: t j d d   }  |  sQ |  d d k rh t |  t j d  |  d d k r t |   d k r t |  t j d  t |  d d	   } | j   Wd  QRXn|  d d k rSt |   d k rt |  t j d  t |  d d	   } | j	   } Wd  QRX| rFt d
 j
 |   t d  nT|  d d k rt |   d k rt |  t j d  t |  d d	   } | j |  d  Wd  QRXn |  d d k rt |   d k  rt |  t j d    f d d     t |  d d   } x |  d d   D]m } t j j |  } | skt j j t j j |   } | d t j t j f k rd }   | | |  q/WWd  QRXd  S)Nr   aE          Usage:
            zipfile.py -l zipfile.zip        # Show listing of a zipfile
            zipfile.py -t zipfile.zip        # Test if a zipfile is valid
            zipfile.py -e zipfile.zip target # Extract zipfile into target dir
            zipfile.py -c zipfile.zip src ... # Create zipfile from sources
        r   -l-c-e-tr   r  z.The following enclosed file is corrupted: {!r}zDone testingr   c                s   t  j j |  r( |  j | | t  np t  j j |  r | rP |  j | |  xE t  j |  D]4 }   |  t  j j | |  t  j j | |   q` Wd  S)N)rn   rq  r  r   r   r   r  r   )zfrq  zippathZnm)addToZipr   r   r    s    zmain.<locals>.addToZipr  rx   )r  r  r  r  )textwrapdedentrr   argvr=  exitr6   r   rX  rZ  r  rt  rn   rq  r  r  r  r  )argsr  ZUSAGEr  Zbadfilerq  r  r   )r  r   maing  sT    	




r  __main__)|r   rn   r  importlib.utilr  rr   r  r}   r  r7   Zbinasciir.  ImportErrordummy_threadingr   r   r   r   __all__	Exceptionr   r   r   r   r   r  ra  r   r   r   r   rt   r   r   r   rJ  rQ   rP   r   rO   r>   r?   r@   rA   rB   rC   rD   rV   r>  r?  rB  rD  rA  rC  Z_CD_CREATE_VERSIONZ_CD_CREATE_SYSTEMZ_CD_EXTRACT_VERSIONZ_CD_EXTRACT_SYSTEMZ_CD_FLAG_BITSZ_CD_COMPRESS_TYPEZ_CD_TIMEZ_CD_DATEZ_CD_CRCZ_CD_COMPRESSED_SIZEZ_CD_UNCOMPRESSED_SIZErE  rG  rH  Z_CD_DISK_NUMBER_STARTZ_CD_INTERNAL_FILE_ATTRIBUTESZ_CD_EXTERNAL_FILE_ATTRIBUTESrI  r   r   rh  ri  Z_FH_EXTRACT_VERSIONZ_FH_EXTRACT_SYSTEMZ_FH_GENERAL_PURPOSE_FLAG_BITSZ_FH_COMPRESSION_METHODZ_FH_LAST_MOD_TIMEZ_FH_LAST_MOD_DATEZ_FH_CRCZ_FH_COMPRESSED_SIZEZ_FH_UNCOMPRESSED_SIZErj  rk  r9   r:   r5   r<   r=   r;   Z_CD64_SIGNATUREZ_CD64_DIRECTORY_RECSIZEZ_CD64_CREATE_VERSIONZ_CD64_EXTRACT_VERSIONZ_CD64_DISK_NUMBERZ_CD64_DISK_NUMBER_STARTZ_CD64_NUMBER_ENTRIES_THIS_DISKZ_CD64_NUMBER_ENTRIES_TOTALZ_CD64_DIRECTORY_SIZEZ_CD64_OFFSET_START_CENTDIRr-   r	   rK   r*   objectr
   r   r   r   r{   r   r   r   r   r   r  r   r   r   r  r   r   r   r   r   <module>   s,  	

+==   B