U e5d°Vã@s ddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZzddlZejZWnek r dZejZYnXz ddlZWnek rÆdZYnXz ddlZWnek rìdZYnXdddddddd d d d d dg ZGdd„deƒZGdd „d eƒZeZZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'e  (e&¡Z)dZ*dZ+dZ,dZ-dZ.d Z/d!Z0d"Z1dZ2d#Z3d$Z4d%Z5e  (e4¡Z6dZ7dZ8dZ9dZ:dZ;d ZdZ?d#Z@d&ZAd'ZBdZCd(ZDdZEd)ZFd*ZGd+ZHd,ZId-ZJd.ZKe  (eJ¡ZLdZMdZNdZOdZPdZQd ZRd!ZSd"ZTdZUd#ZVd&ZWd'ZXd/ZYd0ZZe  (eY¡Z[d1Z\d2Z]e  (e\¡Z^dZ_dZ`dZadZbdZcd Zdd!Zed"ZfdZgd#Zhd3Zie  jd4¡Zkd5d6„Zld7d8„Zmd9d „Znd:d;„Zodd „d eqƒZrdasd?d@„ZtdAdB„ZuGdCdD„dDƒZvGdEdF„dFƒZwdGdHdIdIdIdIdJdKdLdMdJdNdOdPdQdRdSdTœZxdUdV„ZydsdWdX„ZzdYdZ„Z{Gd[d\„d\ƒZ|Gd]d^„d^ƒZ}Gd_d`„d`ej~ƒZGdadb„dbej~ƒZ€Gdcd „d ƒZ�Gddd „d e�ƒZ‚dedf„Zƒdgdh„Z„e…j†Z‡didj„ZˆGdkdl„dle�ƒZ‰Gdmdn„dne‰ƒZŠGdod„dƒZ‹dtdpdq„ZŒe�drk�reŒƒdS)uéNÚ BadZipFileÚ BadZipfileÚerrorÚ ZIP_STOREDÚ ZIP_DEFLATEDÚ ZIP_BZIP2ÚZIP_LZMAÚ is_zipfileÚZipInfoÚZipFileÚ PyZipFileÚ LargeZipFileÚPathc@s eZdZdS)rN©Ú__name__Ú __module__Ú __qualname__©rrú/usr/lib64/python3.8/zipfile.pyr+sc@s eZdZdS)r Nrrrrrr /siÿÿÿéÿÿéé ééé-é.é?s<4s4H2LHsPKéééééééé z<4s4B4HL2L5H2LsPKé é é ééééz <4s2B4HL2L2HsPKz<4sLQLsPKz <4sQ2H2L4QsPKiPKúr0Ústructr/Ú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ÚdataZsigZdisknoZreloffZdisksZszÚcreate_versionZ read_versionZdisk_numZdisk_dirZdircountZ dircount2ZdirsizeZ diroffsetrrrÚ _EndRecData64Ös@      þrXc Csh| dd¡| ¡}z| t d¡Wntk r<YdSX| ¡}t|ƒtkr¬|dd…tkr¬|dd…dkr¬t t |¡}t |ƒ}|  d¡|  |t¡t |t |ƒSt |dtdƒ}| |d¡| ¡}| t¡}|dk�rd|||t…}t|ƒtk�rdSt t t |¡ƒ}|t}||t|t|…}|  |¡|  ||¡t |||||ƒSdS)Nrrr éþÿÿÿsr-i)rDÚtellÚsizeEndCentDirr:r>r0ÚstringEndArchiverFr/ÚstructEndArchiveÚlistr1rXÚmaxÚrfindÚ_ECD_COMMENT_SIZE) rSZfilesizerVrUZmaxCommentStartr5ZrecDataZ commentSizeÚcommentrrrr9sD  ÿþ      ÿr9c@sXeZdZdZddd„Zdd„Zdd d „Zd d „Zd d„Ze dddœdd„ƒZ dd„Z dS)r )Ú orig_filenamerBÚ date_timeÚ compress_typeÚ_compresslevelrbr3Ú create_systemrWÚextract_versionÚreservedÚ flag_bitsÚvolumeÚ internal_attrÚ external_attrÚ header_offsetÚCRCÚ compress_sizeÚ file_sizeÚ _raw_timeÚNoName©é¼rrrrrcCsÈ||_| tdƒ¡}|dkr(|d|…}tjdkrJtj|krJ| tjd¡}||_||_|ddkrjtdƒ‚t |_ d|_ d|_ d|_ tjdkr”d|_nd|_t|_t|_d|_d|_d|_d|_d|_dS)Nrú/ruz+ZIP does not support timestamps before 1980r-Zwin32r)rcÚfindÚchrÚosÚsepÚreplacerBrdÚ ValueErrorrrerfrbr3ÚsysÚplatformrgÚDEFAULT_VERSIONrWrhrirjrkrlrm)ÚselfrBrdZ null_byterrrÚ__init__Xs0   zZipInfo.__init__cCsÜd|jj|jfg}|jtkr8| dt |j|j¡¡|jd?}|jd@}|rd| dt   |¡¡|rv| d|¡|  ¡}|rˆ|j r˜| d|j ¡|r¢|j rÈ|jtks¸|j |j krÈ| d|j ¡| d ¡d  |¡S) Nz<%s filename=%rú compress_type=%sr)rz filemode=%rz external_attr=%#xz file_size=%rz compress_size=%rú>Ú)Ú __class__rrBrerr1Úcompressor_namesÚgetrmÚstatÚfilemodeÚis_dirrqrpr2)r€rCÚhiÚloÚisdirrrrÚ__repr__ƒs0 ÿÿ    ÿ þ zZipInfo.__repr__NcCs||j}|ddd>|dd>B|dB}|dd>|d d>B|ddB}|jd @rfd}}}n|j}|j}|j}|j}d} |dkrš|tkp˜|tk}|rÂd } |t | dt  | ¡d ||¡}|tksÒ|tkrê|sÞt d ƒ‚d }d }t } |j t k�rtt| ƒ} n|j tk�rtt| ƒ} t| |jƒ|_t| |jƒ|_| ¡\} } t tt|j|j| |j |||||t| ƒt|ƒ¡ } | | |S)Nrrur$rr!rrr&r rz|j d¡|jdBfYSXdS)NÚasciiúutf-8é)rBÚencoderjÚUnicodeEncodeError©r€rrrr–ÇszZipInfo._encodeFilenameFlagscCs†|j}tj}t|ƒdk�r‚|d|dd…ƒ\}}|dt|ƒkrPtd||fƒ‚|dk�rp|dkrv|d|dd…ƒ}nV|dkr’|d |dd …ƒ}n:|d kr®|d |dd …ƒ}n|dkr¼d}ntd||fƒ‚d}|jdk�rt|ƒ|krðtdƒ‚|||_|d7}|jdk�r6t|ƒ|k�r$tdƒ‚|||_|d7}|jdk�rpt|ƒ|k�rXtdƒ‚|j}|||_|d7}||dd…}q dS)Nr r,z"Corrupt extra field %04x (size=%d)réz|_|rôd|_|jd O_n|j|_|S) Nrr"rurté;)r¯rééé;r²rrvrr))Ú isinstanceryÚPathLikeÚfspathrˆÚS_ISDIRÚst_modeÚtimeÚ localtimeÚst_mtimeÚpathÚnormpathÚ splitdriverzÚaltseprmrqÚst_size) ÚclsrBÚarcnamer®Ústr�ÚmtimerdÚzinforrrÚ from_fileÿs0       zZipInfo.from_filecCs|jddkS)Néÿÿÿÿrv©rBr¦rrrrŠ%szZipInfo.is_dir)rsrt)N)N) rrrÚ __slots__r�rŽr r–r¬Ú classmethodrÅrŠrrrrr >s + .2%cCs0tdƒD]"}|d@r"|d?dA}q|dL}q|S)Nrrl q[)Úrange)Úcrcr7rrrÚ_gen_crc/s   rÌcsld‰d‰d‰tdkr&ttttdƒƒƒat‰‡fdd„‰‡‡‡‡fdd„‰|D] }ˆ|ƒqL‡‡fd d „}|S) NixV4i‰gE#i�xV4écs|d?ˆ||Ad@AS)Nréÿr)ZchrË)ÚcrctablerrÚcrc32Isz_ZipDecrypter..crc32cs<ˆ|ˆƒ‰ˆˆd@d@‰ˆddd@‰ˆˆd?ˆƒ‰dS)NrÎr�i„rr§r)Úc)rÐÚkey0Úkey1Úkey2rrÚ update_keysMs z"_ZipDecrypter..update_keyscsNtƒ}|j}|D]4}ˆdB}|||dAd?d@N}ˆ|ƒ||ƒqt|ƒS)NrrrrÎ)Ú bytearrayr1Úbytes)rVrCr1rÑÚk)rÔrÕrrÚ decrypterWs z _ZipDecrypter..decrypter)Ú _crctabler^ÚmaprÌrÊ)ÚpwdÚprÙr)rÐrÏrÒrÓrÔrÕrÚ _ZipDecrypter?s   rÞc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚLZMACompressorcCs d|_dS©N)Ú_compr¦rrrr�gszLZMACompressor.__init__cCsFt dtji¡}tjtjt tj|¡gd�|_t dddt |ƒ¡|S)NÚid©Úfiltersz| ¡rtdƒ‚|j ||¡|j ¡|_|jW5QR£SQRXdS)Nz}Can't reposition in the ZIP file while there is an open writing handle on it. Close the writing handle before trying to read.)rrr|rrDrZr)r€rTÚwhencerrrrDës  z_SharedFile.seekrÆc CsX|j�H| ¡rtdƒ‚|j |j¡|j |¡}|j ¡|_|W5QR£SQRXdS)NúyCan't read from the ZIP file while there is an open writing handle on it. Close the writing handle before trying to read.)rrr|rrDrr>rZ©r€ÚnrVrrrr>õs  z_SharedFile.readcCs$|jdk r |j}d|_| |¡dSrà)rr)r€Úfileobjrrrr s z_SharedFile.closeN)r)rÆ)rrrr�rDr>r rrrrrás rc@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) Ú _TellablecCs||_d|_dS©Nr)r<rT©r€r<rrrr�sz_Tellable.__init__cCs|j |¡}|j|7_|Srà)r<ÚwriterT)r€rVrrrrr s z_Tellable.writecCs|jSrà)rTr¦rrrrZsz_Tellable.tellcCs|j ¡dSrà)r<rër¦rrrrësz_Tellable.flushcCs|j ¡dSrà)r<r r¦rrrr sz_Tellable.closeN)rrrr�rrZrër rrrrrs rcs¢eZdZdZdZdZd'dd„Zdd „Zd d „Zd(d d„Z d)dd„Z dd„Z d*dd„Z dd„Z dd„Zdd„Zdd„Z‡fdd„Zd d!„Zd+d#d$„Zd%d&„Z‡ZS),Ú ZipExtFilei@iiNFcCs(||_||_||_|j|_|j|_|j|_t |jƒ|_ d|_ d|_ d|_ d|_||_|j|_t|dƒrz|j|_tdƒ|_nd|_d|_z4| ¡r¸| ¡|_|j|_|j|_|j|_d|_Wntk rÎYnXd|_|�r$|j d@rö|j!d?d@}n|jd?d@}| "¡}||k�r$t#d |j$ƒ‚dS) NFr-rroTrrÎr§zBad password for file %r)%Ú_fileobjÚ_pwdÚ_close_fileobjreÚ_compress_typerpÚ_compress_leftrqÚ_leftrÿÚ _decompressorÚ_eofÚ _readbufferÚ_offsetÚnewlinesÚmoderBÚnamer@roÚ _expected_crcrÐÚ _running_crcÚ _seekablerrZÚ_orig_compress_startÚ_orig_compress_sizeÚ_orig_file_sizeÚ_orig_start_crcÚAttributeErrorÚ _decrypterrjrrÚ_init_decrypterr÷rc)r€rr ÚzipinforÜZ close_fileobjZ check_byteÚhrrrr�)sF       zZipExtFile.__init__cCs4t|jƒ|_|j d¡}|jd8_| |¡dS)Nrr&)rÞrr*rr>r)r€rŸrrrr+\s  zZipExtFile._init_decryptercCsvd|jj|jjfg}|jsX| d|j|jf¡|jtkrb| dt   |j|j¡¡n | d¡| d¡d  |¡S)Nú<%s.%sz name=%r mode=%rr‚ú [closed]rƒr„) r…rrÚclosedr1r!r rrr†r‡r2©r€rCrrrrŽgsÿ ÿÿ  zZipExtFile.__repr__rÆcCsL|dkr>|j d|j¡d}|dkr>|j|j|…}||_|Stj ||¡S)Nró r)rrwrÚioÚBufferedIOBaseÚreadline)r€Úlimitr6Úlinerrrr5uszZipExtFile.readlinercCsr|t|jƒ|jkr\| |¡}t|ƒ|jkrJ||j|jd…|_d|_n|jt|ƒ8_|j|j|jd…S)Nri)r0rrr>)r€rÚchunkrrrÚpeek…s zZipExtFile.peekcCsdS©NTrr¦rrrÚreadable’szZipExtFile.readablecCs|dks|dkrH|j|jd…}d|_d|_|jsD|| |j¡7}q,|S||j}|t|jƒkrz|j|j|…}||_|S|t|jƒ}|j|jd…}d|_d|_|dkrü|jsü| |¡}|t|ƒkræ||_||_||d|…7}qü||7}|t|ƒ8}q¤|S©Nrr-©rrrÚ_read1ÚMAX_Nr0)r€rÚbufÚendrVrrrr>•s4   zZipExtFile.readcCs@|jdkrdSt||jƒ|_|jr<|j|jkr     zZipExtFile.read1cCs"|js|dkrdS|jtkrH|jj}|t|ƒkrR|| |t|ƒ¡7}n | |¡}|jtkrj|jdk|_nx|jtkrÂt ||j ƒ}|j  ||¡}|jj p¨|jdko¨|jj |_|jrâ||j  ¡7}n |j  |¡}|jj pÞ|jdk|_|d|j…}|jt|ƒ8_|jdk�rd|_| |¡|S)Nrr-T)rrrrZunconsumed_tailr0Ú_read2rrr_Ú MIN_READ_SIZErðrïrërrCr rrrr>ås4       þ   zZipExtFile._read1cCsd|jdkrdSt||jƒ}t||jƒ}|j |¡}|jt|ƒ8_|sLt‚|jdk r`| |¡}|Sr<) rr_rFÚminrr>r0ÚEOFErrorr*r rrrrE s      zZipExtFile._read2cs&z|jr|j ¡W5tƒ ¡XdSrà)Úsuperr rrr¦©r…rrr szZipExtFile.closecCs|jSrà)r$r¦rrrr szZipExtFile.seekablercCs>|jst d¡‚| ¡}|dkr&|}n.|dkr8||}n|dkrL|j|}ntdƒ‚||jkrd|j}|dkrpd}||}||j}|dkr¤|t|jƒkr¤||_d}nf|dk�r |j   |j ¡|j |_ |j|_|j|_d|_d|_t|jƒ|_d|_|}|jdk �r | ¡|dk�r6t|j|ƒ}| |¡||8}�q | ¡S)Nú!underlying stream is not seekablerrrzCwhence must be os.SEEK_SET (0), os.SEEK_CUR (1), or os.SEEK_END (2)r-F)r$r3ÚUnsupportedOperationrZr'r|rr0rrrDr%r(r#r&rrrÿrrrr*r+rGÚ MAX_SEEK_READr>)r€rTr Zcurr_posZnew_posZ read_offsetZ buff_offsetZread_lenrrrrD#sH            zZipExtFile.seekcCs0|jst d¡‚|j|jt|jƒ|j}|S)NrK)r$r3rLr'rr0rr)r€ZfileposrrrrZSs zZipExtFile.tell)NF)rÆ)r)rÆ)r)rrrr?rFrMr�r+rŽr5r9r;r>rCrDr>rEr rrDrZÚ __classcell__rrrJrrs(ÿ 3    ! %$  0rcs@eZdZdd„Zedd„ƒZdd„Zdd„Z‡fd d „Z‡Z S) Ú _ZipWriteFilecCs8||_||_||_t|j|jƒ|_d|_d|_d|_ dSr) Ú_zinfoÚ_zip64Ú_zipfilerþrerfÚ _compressorÚ _file_sizeÚ_compress_sizeÚ_crc)r€ÚzfrÄr™rrrr�[sÿz_ZipWriteFile.__init__cCs|jjSrà)rRr<r¦rrrresz_ZipWriteFile._fileobjcCsdSr:rr¦rrrÚwritableisz_ZipWriteFile.writablecCsf|jrtdƒ‚t|ƒ}|j|7_t||jƒ|_|jrV|j |¡}|jt|ƒ7_|j   |¡|S)NzI/O operation on closed file.) r0r|r0rTrÐrVrSrêrUrr)r€rVÚnbytesrrrrls  z_ZipWriteFile.writec sb|jr dS�zFtƒ ¡|jrR|j ¡}|jt|ƒ7_|j   |¡|j|j _ n |j |j _ |j|j _|j |j _|j jd@rÀ|jr†dnd}|j   t |t|j j|j j |j j¡¡|j  ¡|j_nn|jsê|j tkrØtdƒ‚|jtkrêtdƒ‚|j  ¡|j_|j  |j j¡|j   |j  |j¡¡|j  |jj¡|jj |j ¡|j |jj|j j <W5d|j_XdS)NFrzd d!œd"d#„Zd?d$d%„Zd@d&d'„ZdAd(d)„Zed*d+„ƒZd,d-„Zd.d/„ZdBd0d1„ZdCd2d3„Zd4d5„Zd6d7„Z d8d9„Z!d:d;„Z"dS)Dr NÚrTr­c CsP|dkrtdƒ‚t|ƒ||_d|_d|_i|_g|_||_||_||_ d|_ d|_ ||_ t |tjƒrpt |¡}t |tƒræd|_||_dddd dd d d œ}||}zt ||¡|_Wqätk rÞ||krØ||}Yq¢‚YqäXqäq¢nd |_||_t|ddƒ|_d |_t ¡|_d|_d|_�z|dk�r4| ¡nð|dk�r¾d|_z|j  ¡|_!Wn2t"tfk �r†t#|jƒ|_d|_!d|_Yn6Xz|j $|j!¡Wn t"tfk �rºd|_YnXnf|dk�rz| ¡|j $|j!¡Wn6t%k �r|j $dd¡d|_|j  ¡|_!YnXntdƒ‚Wn$|j} d|_| &| ¡‚YnXdS)N)r_ÚwÚxÚaz+ZipFile requires mode 'r', 'w', 'x', or 'a'Frr-r?úw+búx+búr+bÚwbZxb)r_r`rarbrercrdrr!Tr_)r`rarbrz"Mode must be 'r', 'w', 'x', or 'a')'r|rûÚ _allowZip64Ú _didModifyÚdebugr]r\rúrýr rÜÚ_commentÚ_strict_timestampsr³ryr´rµÚstrÚ _filePassedrBr3rAr<r:ÚgetattrÚ _fileRefCntÚ threadingÚRLockrr$rÚ_RealGetContentsrZr[r)rrDrÚ_fpclose) r€rr rúÚ allowZip64rýr®ZmodeDictr‰r<rrrr�ÂsŠ   ÿ         zZipFile.__init__cCs|Sràrr¦rrrÚ __enter__szZipFile.__enter__cCs | ¡dSrà©r )r€ÚtypeÚvalueÚ tracebackrrrÚ__exit__szZipFile.__exit__cCs‚d|jj|jjfg}|jdk rd|jr8| d|j¡n|jdk rR| d|j¡| d|j¡n | d¡| d¡d |¡S)Nr.z file=%rz filename=%rz mode=%rr/rƒr„) r…rrr<rmr1rBr r2r1rrrrŽ"sÿ    zZipFile.__repr__c Cs¸|j}z t|ƒ}Wntk r.tdƒ‚YnX|sr3ÚBytesIOÚsizeCentralDirr0rFr/ÚstructCentralDirÚ _CD_SIGNATUREÚstringCentralDirÚ_CD_FILENAME_LENGTHÚdecoder Ú_CD_EXTRA_FIELD_LENGTHr3Ú_CD_COMMENT_LENGTHrbÚ_CD_LOCAL_HEADER_OFFSETrnrWrgrhrirjrerorprqÚMAX_EXTRACT_VERSIONrùrkrlrmrrrdr¬r\r1r]rB)r€r<rUZsize_cdZ offset_cdÚconcatZinferredrVr|ÚcentdirrBÚflagsraÚtÚdrrrrr0s�                  þ ÿ ÿ   ÿþ zZipFile._RealGetContentscCsdd„|jDƒS)NcSsg|] }|j‘qSrrÇ)Ú.0rVrrrÚ €sz$ZipFile.namelist..©r\r¦rrrÚnamelist~szZipFile.namelistcCs|jSràr’r¦rrrÚinfolist‚szZipFile.infolistcCsLtdd|d�|jD]0}d|jdd…}td|j||jf|d�qdS)Nz%-46s %19s %12s)z File Namez Modified ZSize©rz%d-%02d-%02d %02d:%02d:%02dr"z %-46s %s %12d)r}r\rdrBrq)r€rrÄÚdaterrrÚprintdir‡sÿ ÿzZipFile.printdirc Cs^d}|jD]N}z*| |jd¡�}| |¡r,q W5QRXWq tk rV|jYSXq dS)Nir_)r\rArBr>r)r€Z chunk_sizerÄÚfrrrÚtestzip�s  zZipFile.testzipcCs$|j |¡}|dkr td|ƒ‚|S)Nz(There is no item named %r in the archive)r]r‡ÚKeyError)r€r!ÚinforrrÚgetinfo�s  ÿzZipFile.getinfocCs6|r t|tƒs tdt|ƒjƒ‚|r,||_nd|_dS)Núpwd: expected bytes, got %s)r³r×Ú TypeErrorrwrrÜ)r€rÜrrrÚ setpassword¦s zZipFile.setpasswordcCs|jSrà)rjr¦rrrrb¯szZipFile.commentcCs^t|tƒstdt|ƒjƒ‚t|ƒtkrNddl}|jdtdd�|dt…}||_ d|_ dS)Nzcomment: expected bytes, got %srz3Archive comment is too long; truncating to %d bytesr©Ú stacklevelT) r³r×ržrwrr0ÚZIP_MAX_COMMENTÚwarningsÚwarnrjrh)r€rbr£rrrrb´s  ÿÿ c Cs.| |d|¡�}| ¡W5QR£SQRXdS©Nr_©rAr>)r€r!rÜr<rrrr>Ász ZipFile.readF©Ú force_zip64c s|dkrtdƒ‚|r0t|tƒs0tdt|ƒjƒ‚|rD|dkrDtdƒ‚ˆjsRtdƒ‚t|tƒrb|}n,|dkr„t|ƒ}ˆj|_ ˆj |_ n ˆ  |¡}|dkr¤ˆj ||d�Sˆjr²tdƒ‚ˆjd 7_tˆj|jˆjˆj‡fd d „ƒ}�z| t¡}t|ƒtk�rtd ƒ‚t t|¡}|ttk�r&td ƒ‚| |t¡}|t�rL| |t¡|jd@�r`t dƒ‚|jd@�rtt dƒ‚|t!d@�rŽ| "d¡} n | "d¡} | |j#k�r¶td|j#|fƒ‚|jd @} | �ræ|�sÒˆj$}|�sêt%d|ƒ‚nd}t&||||dƒWS| '¡‚YnXdS)N>r`r_zopen() requires mode "r" or "w"r�r`z'pwd is only supported for reading filesz2Attempt to use ZIP archive that was already closedr§r rcsˆjSrà)rrr¦rrÚ÷r-zZipFile.open..zTruncated file headerz Bad magic number for file headeré z$compressed patched data (flag bit 5)é@zstrong encryption (flag bit 6)r£r¢r{z/File name in directory %r and header %r differ.z6File %r is encrypted, password required for extractionT)(r|r³r×ržrwrr<r rúrerýrfrœÚ_open_to_writerrorrnrsrr>ÚsizeFileHeaderr0rrFr/r—Ú _FH_SIGNATUREr˜Ú_FH_FILENAME_LENGTHÚ_FH_EXTRA_FIELD_LENGTHrjrùÚ_FH_GENERAL_PURPOSE_FLAG_BITSr†rcrÜr÷rr ) r€r!r rÜr¨rÄZzef_fileZfheaderÚfnameZ fname_strZ is_encryptedrr¦rrAÆs~ ÿ     ÿ        ÿÿ ÿz ZipFile.opencCsæ|r|jstdƒ‚|jr tdƒ‚t|dƒs0d|_d|_d|_d|_|jt krZ|jdO_|j sn|jdO_|j szd|_ |jo�|p�|jdt k}|j r¦|j  |j¡|j  ¡|_| |¡d |_|j  | |¡¡d |_t|||ƒS) NzHforce_zip64 is True, but allowZip64 was False when opening the ZIP file.zzCan't write to the ZIP file while there is another write handle open on it. Close the first handle before opening another.rqrrré€gÍÌÌÌÌÌð?T)rgr|rr@rqrprorjrerr$rmr�r<rDr[rZrnÚ _writecheckrhrr rO)r€rÄr¨r™rrrr¬(s8 ÿ  ÿ  zZipFile._open_to_writecCs*|dkrt ¡}n t |¡}| |||¡Srà)ryÚgetcwdrµÚ_extract_member)r€Úmemberr»rÜrrrÚextractSs  zZipFile.extractcCsH|dkr| ¡}|dkr"t ¡}n t |¡}|D]}| |||¡q0dSrà)r“ryrµrµr¶)r€r»ÚmembersrÜr,rrrÚ extractall`s  zZipFile.extractallcCs^|j}|s(d}t |dt|ƒ¡}||_| |¡}dd„| |¡Dƒ}| dd„|Dƒ¡}|S)Nz:<>|"?*Ú_css|]}| d¡VqdS)Ú.N)Úrstrip©r�rarrrÚ {sz1ZipFile._sanitize_windows_name..css|]}|r|VqdSràrr¾rrrr¿}s)Ú!_windows_illegal_name_trans_tablerlÚ maketransr0Ú translateÚsplitr2)rÀrÁÚpathsepÚtableZillegalrrrÚ_sanitize_windows_nameqs zZipFile._sanitize_windows_namec sLt|tƒs| |¡}|j dtjj¡}tjjrB| tjjtjj¡}tj  |¡d}dtjj tjj f‰tjj  ‡fdd„|  tjj¡Dƒ¡}tjjdkr¦| |tjj¡}tj  ||¡}tj |¡}tj |¡}|rætj |¡sæt |¡| ¡�r tj |¡�st |¡|S|j||d��(}t|dƒ�}t ||¡W5QRXW5QRX|S) Nrvrr„c3s|]}|ˆkr|VqdSràrr¾©Zinvalid_path_partsrrr¿‘sÿz*ZipFile._extract_member..ú\)rÜrf)r³r rœrBr{ryr»rzr¾r½ÚcurdirÚpardirr2rÃrÆr¼ÚdirnameÚexistsÚmakedirsrŠr�ÚmkdirrAÚshutilÚ copyfileobj)r€r·Z targetpathrÜrÁZ upperdirsÚsourceÚtargetrrÇrr¶€s2  &      ÿ zZipFile._extract_membercCs¢|j|jkr(ddl}|jd|jdd�|jdkr:tdƒ‚|jsHtdƒ‚t|jƒ|j sžd}t |j ƒt krpd}n|j tkr€d }n|jtkrŽd }|ržt|d ƒ‚dS) NrzDuplicate name: %rrr ©r`rarbz&write() requires mode 'w', 'x', or 'a'z4Attempt to write ZIP archive that was already closedú Files countZFilesizez Zipfile sizeú would require ZIP64 extensions)rBr]r£r¤r r|r<rûrergr0r\ÚZIP_FILECOUNT_LIMITrqr�rnr )r€rÄr£Úrequires_zip64rrrr´ªs,  ÿ   ÿzZipFile._writecheckc CsP|jstdƒ‚|jrtdƒ‚tj|||jd�}| ¡rDd|_d|_n0|dk rT||_ n|j |_ |dk rl||_ n|j |_ | ¡�r|j �„|jrš|j |j¡|j ¡|_|j tkr¾|jdO_| |¡d|_|j |¡||j|j<|j | d¡¡|j ¡|_W5QRXnCan't write to ZIP archive while an open writing handle existsr­rrTFr?r`i ) r<r|rr rÅrkrŠrprorerúrfrýrr$rDr[rZrnrrjr´rhr\r1r]rBrr rArÏrÐ)r€rBrÁrerýrÄÚsrcÚdestrrrrÁsFÿÿÿ      z ZipFile.writec Csøt|tƒr| d¡}t|tƒsxt|t t ¡¡dd…d�}|j|_|j|_ |j ddkrpd|_ |j dO_ q|d|_ n|}|j sŠt d ƒ‚|jr˜t d ƒ‚|dk r¦||_|dk r´||_ t|ƒ|_|j�*|j|d d ��}| |¡W5QRXW5QRXdS) Nr¢r")rBrdrÆrviýAr)r³rØz?Can't write to ZIP archive while an open writing handle exists.r`)r )r³rlr¤r r¸r¹rúrerýrfrBrmr<r|rr0rqrrAr)r€Zzinfo_or_arcnamerVrerýrÄrÚrrrÚwritestròs:   ÿÿÿ zZipFile.writestrcCs | ¡dSràrvr¦rrrÚ__del__szZipFile.__del__c Cs||jdkrdS|jrtdƒ‚zB|jdkr\|jr\|j�"|jrJ|j |j ¡|  ¡W5QRXW5|j}d|_| |¡XdS)NzvCan't close the ZIP file while there is an open writing handle on it. Close the writing handle before closing the zip.rÓ) r<rr|rsr rhrr$rDr[Ú_write_end_recordrrrrr s z ZipFile.closecCs‚|jD�]D}|j}|ddd>|dd>B|dB}|dd>|d d>B|ddB}g}|jtksr|jtkr”| |j¡| |j¡d }d }n |j}|j}|jtkr¼| |j¡d }n|j}|j} d} |�r t| d ƒ} t j d d t |ƒddt |ƒf|žŽ| } t } |j tk�r$tt| ƒ} n|j tk�r:tt| ƒ} t| |jƒ} t| |jƒ} zZ| ¡\} }t   tt| |j| |j||j |||j||t | ƒt | ƒt |jƒd|j|j|¡}Wnltk �rttt| |j| |j|j |j |||j||t |j!ƒt | ƒt |jƒd|j|j|ft"j#d�‚YnX|j$ %|¡|j$ %| ¡|j$ %| ¡|j$ %|j¡q|j$ &¡}t |jƒ}||j'}|j'}d}|t(k�r†d}n|tk�r–d}n|tk�r¤d}|�r$|j)�s¾t*|dƒ‚t   t+t,ddddd||||¡ }|j$ %|¡t   t-t.d|d¡}|j$ %|¡t/|dƒ}t/|d ƒ}t/|d ƒ}t   t0t1dd||||t |j2ƒ¡ }|j$ %|¡|j$ %|j2¡|j3dk�rt|j$ 4¡|j$ 5¡dS)Nrrur$rr!rrr&r r�)rr,ÚQrr•rÔzCentral directory offsetzCentral directory sizerÕé,rrrb)6r\rdrqr�rpr1rnr3r8rFr‘r0r“rerr_r”rr•rhrWr–r‚r„rgrirorbrlrmÚDeprecationWarningr}rjrBr}Ústderrr<rrZr[rÖrgr rJrKrGrHrGr]r\rjr Útruncaterë)r€rÄršr›rœr3rqrprnZ extra_datar�rhrWrBrjrŒZpos2Z centDirCountZ centDirSizeZ centDirOffsetr×Z zip64endrecZ zip64locrecrUrrrrÝ5s $$ ÿ      þþþ       ùúú         ÿý þ    þ   zZipFile._write_end_recordcCs&|jd8_|js"|js"| ¡dS©Nr)rormr rrrrrs�s zZipFile._fpclose)N)N)r_N)F)NN)NNN)NNN)NN)#rrrr<rÀrr�rurzrŽrrr“r”r—r™rœrŸr^rbÚsetterr>rAr¬r¸rºrÉrÆr¶r´rrÛrÜr rÝrsrrrrr ¨sRÿÿ ZN      b +  *ÿ 2ÿ )hc@s0eZdZdeddfdd„Zd dd „Zd d „ZdS) r r_TrÆcCstj|||||d�||_dS)N)r rúrt)r r�Ú _optimize)r€rr rúrtÚoptimizerrrr�§s ÿzPyZipFile.__init__r„NcCs¼t |¡}|rD||ƒsD|jr@tj |¡r,dnd}td||fƒdStj |¡\}}tj |¡�rhtj |d¡}tj |¡�r¸|r�d||f}n|}|jr¨td|d|ƒ|  |dd …|¡\}} |jrÐtd | ƒ|  || ¡t t  |¡ƒ} |   d¡| D]¼} tj || ¡} tj | ¡\} }tj | ¡�rRtj tj | d¡¡�r´|j| ||d �qø|d krø|�r~|| ƒ�s~|jrøtd | ƒqø|  | dd …|¡\}} |j�r¨td | ƒ|  || ¡qøn®|j�rÊtd|ƒt t  |¡ƒD]Œ} tj || ¡} tj | ¡\} }|d k�rØ|�r,|| ƒ�s,|j�rØtd | ƒ�qØ|  | dd …|¡\}} |j�rVtd | ƒ|  || ¡�qØnP|d d…d k�r‚tdƒ‚|  |dd …|¡\}} |j�r¬td| ƒ|  || ¡dS)Nr»rz%s %r skipped by filterfuncz __init__.pyú%s/%szAdding package inÚasréýÿÿÿZAdding)Ú filterfuncú.pyzfile %r skipped by filterfunczAdding files from directoryz.Files added with writepy() must end with ".py"z Adding file)ryrµrir»r�r}rÃr2ÚisfileÚ _get_codenamerÚsortedÚlistdirÚremoveÚsplitextÚwritepyr÷)r€ÚpathnameÚbasenamerêZlabelÚdirr!Zinitnamer²rÁZdirlistrBr»ÚrootZextrrrrò­s€     ÿ ÿ    ÿ ÿ zPyZipFile.writepyc sd‡fdd„ }|d}|d}tjj|dd�}tjj|dd�}tjj|d d�}ˆjdk�r\tj |¡rˆt |¡jt |¡jkrˆ|} } nÒtj |¡r¶t |¡jt |¡jkr¶|} |} n¤tj |¡rät |¡jt |¡jkrä|} |} nvtj |¡�rt |¡jt |¡jk�r|} |} nD||ƒ�rRt j j d k�r4|} nt j j dk�rH|} n|} |} n|} } n’ˆjd k�rr|} |} n<|} ˆjdk�rˆ|} n&ˆjd k�rš|} nd   ˆj¡} t | ƒ‚tj | ¡�rÖt | ¡jt |¡jk�sî||ˆjd ��sî|} } tj | ¡d} |�rd || f} | | fS)NrÆc sfddl}ˆjrtd|ƒz|j|d|d�Wn4|jk r`}zt|jƒWY¢dSd}~XYnXdS)NrZ CompilingT)ÚdoraiseræF)Ú py_compilerir}ÚcompileÚPyCompileErrorÚmsg)rrærøÚerrr¦rrÚ_compiles  z)PyZipFile._get_codename.._compilerëz.pycr„)Ú optimizationrrrz"invalid value for 'optimize': {!r})rærç)rÆ)Ú importlibÚutilÚcache_from_sourceråryr»rìrˆrºr}r�ræÚformatr|rÃ) r€rórôrýZfile_pyZfile_pycZ pycache_opt0Z pycache_opt1Z pycache_opt2rÁr²rûZ archivenamerr¦rríÿsj   ÿ  ÿ ÿÿ      ÿ zPyZipFile._get_codename)r„N)rrrrr�ròrírrrrr ¤s ÿ  RcCst t|ƒdd¡Srã)Ú itertoolsÚisliceÚ _ancestry)r»rrrÚ_parentsRsrccs4| tj¡}|r0|tjkr0|Vt |¡\}}q dSrà)r½Ú posixpathrzrÃ)r»Útailrrrres rcCst t|ƒj|¡Srà)rÚ filterfalseÚsetÚ __contains__)ZminuendZ subtrahendrrrÚ _differencesr csDeZdZedd„ƒZ‡fdd„Zdd„Zdd„Zed d „ƒZ ‡Z S) Ú CompleteDirscCs.tj tt|ƒ¡}dd„|Dƒ}tt||ƒƒS)Ncss|]}|tjVqdSrà)rrz)r�rÝrrrr¿�sz-CompleteDirs._implied_dirs..)rÚchainÚ from_iterablerÛrÚ_deduper )ÚnamesÚparentsZas_dirsrrrÚ _implied_dirs�szCompleteDirs._implied_dirscs tt|ƒ ¡}|t| |¡ƒSrà)rIr r“r^r)r€rrJrrr““szCompleteDirs.namelistcCs t| ¡ƒSrà)r r“r¦rrrÚ _name_set—szCompleteDirs._name_setcCs,| ¡}|d}||ko||k}|r(|S|S©Nrv)r)r€r!rrËZ dir_matchrrrÚ resolve_diršszCompleteDirs.resolve_dircCsNt|tƒr|St|tƒs ||ƒSd|jkr.t}| |¡}t|ƒ t|ƒ¡|Sr¥)r³r r r Ú__new__ÚvarsÚupdate)rÀrÑÚresrrrÚmake¤s    zCompleteDirs.make) rrrÚ staticmethodrr“rrrÉrrNrrrJrr ‡s   r cs(eZdZ‡fdd„Z‡fdd„Z‡ZS)Ú FastLookupc s:t t¡�|jW5QR£SQRXtt|ƒ ¡|_|jSrà)Ú contextlibÚsuppressr)Z_FastLookup__namesrIrr“r¦rJrrr“¾s zFastLookup.namelistc s:t t¡�|jW5QR£SQRXtt|ƒ ¡|_|jSrà)rrr)Z_FastLookup__lookuprIrrr¦rJrrrÄs zFastLookup._name_set)rrrr“rrNrrrJrr¹s rc@sšeZdZdZd"dd„Zedd„ƒZedd„ƒZd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„ZeZedd „ƒZd!S)#rz>{self.__class__.__name__}({self.root.filename!r}, {self.at!r})r„cCst |¡|_||_dSrà)rrröÚat)r€rör rrrr� s z Path.__init__cCst |jj|j¡Srà)Ú functoolsÚpartialrörAr r¦rrrrA sz Path.opencCst |j d¡¡Sr)rrôr r½r¦rrrr! sz Path.namec Os6| ¡�$}tj|f|ž|Ž ¡W5QR£SQRXdSrà)rAr3Ú TextIOWrapperr>)r€ÚargsÚkwargsÚstrmrrrÚ read_text s zPath.read_textc Cs(| ¡�}| ¡W5QR£SQRXdSràr¦)r€r&rrrÚ read_bytes s zPath.read_bytescCst |j d¡¡|j d¡kSr)rrËr r½)r€r»rrrÚ _is_child" szPath._is_childcCs t|j|ƒSrà)rrö)r€r rrrÚ_next% sz Path._nextcCs|j p|j d¡Sr)r Úendswithr¦rrrrŠ( sz Path.is_dircCs | ¡ Srà)rŠr¦rrrÚis_file+ sz Path.is_filecCs|j|j ¡kSrà)r rörr¦rrrrÌ. sz Path.existscCs.| ¡stdƒ‚t|j|j ¡ƒ}t|j|ƒS)NzCan't listdir a file)rŠr|rÛr*rör“Úfilterr))r€ZsubsrrrÚiterdir1 sz Path.iterdircCst |jj|j¡Srà)rr2rörBr r¦rrrÚ__str__7 sz Path.__str__cCs|jj|d�S)Nr¦)Ú _Path__reprrr¦rrrrŽ: sz Path.__repr__cCs t |j|¡}| |j |¡¡Srà)rr2r r*rör)r€ÚaddÚnextrrrÚjoinpath= sz Path.joinpathcCs(t |j d¡¡}|r|d7}| |¡Sr)rrËr r½r*)r€Z parent_atrrrÚparentC sz Path.parentN)r„)rrrr0r�r^rAr!r'r(r)r*rŠr,rÌr.r/rŽr3Ú __truediv__r4rrrrrËs(A   c sÆddl}d}|j|d�}|jdd�}|jdddd d �|jd d d ddd�|jdddddd�|jddddd �| |¡}|jdk rÄ|j}t|dƒ�}| ¡}W5QRX|rºtd  |¡ƒtdƒnþ|j dk rô|j }t|dƒ�}|  ¡W5QRXnÎ|j dk �r,|j \}}t|dƒ�}|  |¡W5QRXn–|jdk �rÂ|j d¡} |j} ‡fdd„‰t| dƒ�\}| D]P} tj | ¡} | �s�tj tj | ¡¡} | dtjtjfk�r¨d} ˆ|| | ƒ�qfW5QRXdS) Nrz3A simple command-line interface for zipfile module.)Ú descriptionT)Zrequiredz-lz--listú zShow listing of a zipfile)ÚmetavarÚhelpz-ez --extractr)r7z zExtract zipfile into target dir)Únargsr8r9z-cz--createú+)zzzCreate zipfile from sourcesz-tz--testzTest if a zipfile is validr_z.The following enclosed file is corrupted: {!r}z Done testingcsptj |¡r| ||t¡nPtj |¡rl|r8| ||¡tt |¡ƒD]$}ˆ|tj ||¡tj ||¡ƒqFdSrà) ryr»rìrrr�rîrïr2)rWr»ÚzippathZnm©ÚaddToZiprrr>s s    ÿzmain..addToZipr`r„)ÚargparseÚArgumentParserZadd_mutually_exclusive_groupÚ add_argumentÚ parse_argsZtestr r™r}rr^r—r¸rºZcreateÚpopryr»rôrËrÉrÊ) r$r?r6ÚparserÚgrouprÙrWZbadfilerÉZzip_nameÚfilesr»r<rr=rÚmainK s\   ÿ þ þ ÿ             rGÚ__main__)N)N)ŽZbinasciir!Úimportlib.utilrÿr3rryrrÏrˆrFr}rpr¸rrörÐÚ ImportErrorrøråÚ__all__Ú Exceptionrr rrr�rÖr¢rrrrrr“r”r•rŠr]r\r’r[rLrMrNrOrPrQrRrar~rr‚r„r�rƒ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_SIZEr…r‡rˆZ_CD_DISK_NUMBER_STARTZ_CD_INTERNAL_FILE_ATTRIBUTESZ_CD_EXTERNAL_FILE_ATTRIBUTESr‰r—r˜r­r®Z_FH_EXTRACT_VERSIONZ_FH_EXTRACT_SYSTEMr±Z_FH_COMPRESSION_METHODZ_FH_LAST_MOD_TIMEZ_FH_LAST_MOD_DATEZ_FH_CRCZ_FH_COMPRESSED_SIZEZ_FH_UNCOMPRESSED_SIZEr¯r°rGrHrErJrKrIZ_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_CENTDIRrZZStructr.r8r=r rXr9Úobjectr rÚrÌrÞrßrìr†rûrþrÿrrr4rrOr r rrÚdictÚfromkeysrr r rrrGrrrrrÚsj      ý       +=q&ï &AN/2 =