ž ­ÿfxc$@sdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z yddl Z e j Z Wn!e k rºeZ e j Z YnXyddlZWne k råeZYnXyddlZWne k reZYnXddddddd d d d d dg ZGdd„deƒZGdd„deƒZeZZdd>dZdd>Zdd>dZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$e j%e#ƒZ&dZ'dZ(dZ)dZ*dZ+d Z,d!Z-d"Z.dZ/d#Z0d$Z1d%Z2e j%e1ƒZ3dZ4dZ5dZ6dZ7dZ8d Z9d!Z:d"Z;dZ<d#Z=d&Z>d'Z?dZ@d(ZAdZBd)ZCdZDd*ZEd+ZFd,ZGd-ZHe j%eGƒZIdZJdZKdZLdZMdZNd ZOd!ZPd"ZQdZRd#ZSd&ZTd'ZUd.ZVd/ZWe j%eVƒZXd0ZYd1ZZe j%eYƒZ[dZ\dZ]dZ^dZ_dZ`d Zad!Zbd"ZcdZdd#Zed2d3„Zfd4d „Zgd5d6„Zhd7d8„ZiGd9d „d ejƒZkGd:d;„d;ƒZlGd<d=„d=ƒZmGd>d?„d?ƒZnid@d6dAd6dBd6dBd6dBd6dBd 6dCd!6dDd"6dEd6dFd#6dCd&6dGd6dHd6dId+6dJdK6dLdM6dNdO6ZodPdQ„ZpdRdS„ZqdTdU„ZrGdVdW„dWejsƒZtGdXd „d ƒZuGdYd „d euƒZvedZd[„Zwexd\kr ewƒndS(]uP Read and write ZIP files. XXX references to utf-8 need further investigation. iNu BadZipFileu BadZipfileuerroru ZIP_STOREDu ZIP_DEFLATEDu ZIP_BZIP2uZIP_LZMAu is_zipfileuZipInfouZipFileu PyZipFileu LargeZipFilecBs|EeZdZdS(u BadZipFileN(u__name__u __module__u __qualname__(u __locals__((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu BadZipFile'scBs|EeZdZdZdS(u LargeZipFileuu Raised when writing a zipfile, the zipfile requires ZIP64 extensions and those extensions are disabled. N(u__name__u __module__u __qualname__u__doc__(u __locals__((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu LargeZipFile+siiiii iii-i.i?s<4s4H2LHsPKiiiiiii u<4s4B4HL2L5H2LsPKi i i iiiu <4s2B4HL2L2HsPKu<4sLQLsPKu <4sQ2H2L4QsPKc Cs-yt|ƒrdSWntk r(YnXdS(NTF(u _EndRecDatauTrueuIOErroruFalse(ufp((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu_check_zipfile£s   u_check_zipfilecCshd}yIt|dƒr*td|ƒ}n$t|dƒ}t|ƒ}WdQXWntk rcYnX|S(uˆQuickly see if a file is a ZIP file by checking the magic number. The filename argument may be a file or file-like object too. ureadufpurbNF(uFalseuhasattru_check_zipfileuopenuIOError(ufilenameuresultufp((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu is_zipfile«s cCsry|j|tdƒWntk r0|SYnX|jtƒ}t|ƒtkrV|Stjt|ƒ\}}}}|tkr„|S|dksœ|dkr«t dƒ‚n|j|tt dƒ|jt ƒ}t|ƒt krè|Stjt |ƒ\ }}} } } } } }}}|t kr(|S||t <| |t<| |t<| |t<||t<||t<||t<|S(uM Read the ZIP64 end-of-archive records and use that to update endrec iiiu3zipfiles that span multiple disks are not supported(useekusizeEndCentDir64LocatoruIOErrorureadulenustructuunpackustructEndArchive64LocatorustringEndArchive64Locatoru BadZipFileusizeEndCentDir64ustructEndArchive64ustringEndArchive64u_ECD_SIGNATUREu_ECD_DISK_NUMBERu_ECD_DISK_STARTu_ECD_ENTRIES_THIS_DISKu_ECD_ENTRIES_TOTALu _ECD_SIZEu _ECD_OFFSET(ufpinuoffsetuendrecudatausigudisknoureloffudisksuszucreate_versionu read_versionudisk_numudisk_dirudircountu dircount2udirsizeu diroffset((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu _EndRecData64»s6   0        u _EndRecData64c CsÑ|jddƒ|jƒ}y|jt dƒWntk rIdSYnX|jƒ}t|ƒtkrá|dd…tkrá|d d…dkrátj t |ƒ}t |ƒ}|j dƒ|j |tƒt |t |ƒSt|d tdƒ}|j|dƒ|jƒ}|jtƒ}|dkrÍ|||t…}t|ƒtkrYdSt tj t |ƒƒ}|t}||t|t|…}|j |ƒ|j ||ƒt |||||ƒSdS( uÔReturn data from the "End of Central Directory" record, or None. The data is a list of the nine items in the ZIP "End of central dir" record followed by a tenth item, the file seek offset of this record.iiiNssiiiþÿÿÿi(useekutellusizeEndCentDiruIOErroruNoneureadulenustringEndArchiveustructuunpackustructEndArchiveulistuappendu _EndRecData64umaxurfindu_ECD_COMMENT_SIZE( ufpinufilesizeudatauendrecumaxCommentStartustarturecDatau commentSizeucomment((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu _EndRecDataæs>          u _EndRecDatacBsY|EeZdZdZd"Zdd#dd„Zd!dd„Zdd„Zdd „Z d!S($uZipInfou>Class with attributes describing each file in the ZIP archive.u orig_filenameufilenameu date_timeu compress_typeucommentuextrau create_systemucreate_versionuextract_versionureservedu flag_bitsuvolumeu internal_attru external_attru header_offsetuCRCu compress_sizeu file_sizeu _raw_timeuNoNamei¼iicCs&||_|jtdƒƒ}|dkr=|d|…}ntjdkrstj|krs|jtjdƒ}n||_||_|ddkr¤tdƒ‚nt |_ d|_ d|_ t jdkrÚd|_n d|_t|_t|_d|_d|_d|_d|_d|_dS(Niu/i¼u+ZIP does not support timestamps before 1980suwin32i(u orig_filenameufinduchruosusepureplaceufilenameu date_timeu ValueErroru ZIP_STOREDu compress_typeucommentuextrausysuplatformu create_systemuDEFAULT_VERSIONucreate_versionuextract_versionureservedu flag_bitsuvolumeu internal_attru external_attr(uselfufilenameu date_timeu null_byte((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu__init__<s.               uZipInfo.__init__cCs|j}|ddd>|dd>B|dB}|dd>|d d>B|ddB}|jd @rsd}}}n|j}|j}|j}|j}d} |dkrÄ|tkp¾|tk}n|rÿd } |tj | dtj | ƒd ||ƒ}n|tks|tkrA|s,t d ƒ‚nd }d }t } n|j tkrbtt| ƒ} n!|j tkrƒtt| ƒ} nt| |jƒ|_t| |jƒ|_|jƒ\} } tj tt|j|j| |j |||||t| ƒt|ƒƒ } | | |S(u'Return the per-file header as a string.ii¼i iiiii iiu|||_|d7}n|jdkrs|j}|||_|d7}qsn||dd…}qWdS(Nu[^\r\n]+)|(?P\n|\r\n?)cCsø||_||_||_|j|_|j|_|j|_t |jƒ|_ d|_ d|_ d|_d|k|_d|_|jdk r¥|jd8_n||_|j|_t|dƒrë|j|_tdƒd@|_n d|_dS(NsiuUi uCRClÿÿF(u_fileobju _decrypteru_close_fileobju compress_typeu_compress_typeu compress_sizeu_compress_leftu file_sizeu_leftu_get_decompressoru _decompressoruFalseu_eofu _readbufferu_offsetu _universaluNoneunewlinesumodeufilenameunameuhasattruCRCu _expected_crcucrc32u _running_crc(uselfufileobjumodeuzipinfou decrypteru close_fileobj((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu__init__s(             uZipExtFile.__init__cCs¬|j rd|dkrd|jjd|jƒd}|dkrd|j|j|…}||_|Sn|js€tjj||ƒSd}x|dks§t|ƒ|kr§|jdƒ}|dkrÆ|S|j j |ƒ}|j dƒ}|dk rM|j dkrg|_ n||j kr0|j j|ƒn|jt|ƒ7_|dS|j dƒ}|dkr…|d|t|ƒ…}n|jt|ƒ7_||7}q‰W|S( urRead and return a line from the stream. If limit is specified, at most limit bytes will be read. is isiunewlineuchunkN(u _universalu _readbufferufindu_offsetuiouBufferedIOBaseureadlineulenupeekuPATTERNusearchugroupuNoneunewlinesuappend(uselfulimituiulineu readaheadumatchunewlineuchunk((u,/opt/alt/python33/lib64/python3.3/zipfile.pyureadline s8   !     uZipExtFile.readlinecCsœ|t|jƒ|jkr|j|ƒ}t|ƒ|jkri||j|jd…|_d|_q|jt|ƒ8_n|j|j|jd…S(u6Returns buffered bytes without advancing the position.Nii(ulenu _readbufferu_offseturead(uselfunuchunk((u,/opt/alt/python33/lib64/python3.3/zipfile.pyupeekÒs uZipExtFile.peekcCsdS(NT(uTrue(uself((u,/opt/alt/python33/lib64/python3.3/zipfile.pyureadableßsuZipExtFile.readablecCsp|dks|dkrj|j|jd…}d|_d|_x#|jse||j|jƒ7}qCW|S||j}|t|jƒkr¯|j|j|…}||_|S|t|jƒ}|j|jd…}d|_d|_x|dkrk|j rk|j|ƒ}|t|ƒkrN||_||_||d|…7}Pn||7}|t|ƒ8}qíW|S(uRead and return up to n bytes. If the argument is omitted, None, or negative, data is read and returned until EOF is reached.. iNs(uNoneu _readbufferu_offsetu_eofu_read1uMAX_Nulen(uselfunubufuendudata((u,/opt/alt/python33/lib64/python3.3/zipfile.pyureadâs4          uZipExtFile.readcCsa|jdkrdSt||jƒd@|_|jr]|j|jkr]td|jƒ‚ndS(NlÿÿuBad CRC-32 for file %r(u _expected_crcuNoneucrc32u _running_crcu_eofu BadZipFileuname(uselfunewdata((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu _update_crcs uZipExtFile._update_crccCs||dks|dkrz|j|jd…}d|_d|_x3|jsu|j|jƒ}|rC||7}PqCqCW|S||j}|t|jƒkr¿|j|j|…}||_|S|t|jƒ}|j|jd…}d|_d|_|dkrxxo|jst|j|ƒ}|t|ƒkr]||_||_||d|…7}Pn|r ||7}Pq q Wn|S(u7Read up to n bytes with at most one read() system call.iNs(uNoneu _readbufferu_offsetu_eofu_read1uMAX_Nulen(uselfunubufudatauend((u,/opt/alt/python33/lib64/python3.3/zipfile.pyuread1 s>              uZipExtFile.read1cCs£|js|dkrdS|jtkri|jj}|t|ƒkrx||j|t|ƒƒ7}qxn|j|ƒ}|jtkrœ|jdk|_n³|jtkrt ||j ƒ}|jj ||ƒ}|jj p÷|jdko÷|jj |_|jrO||jj ƒ7}qOn0|jj |ƒ}|jj pI|jdk|_|d|j…}|jt|ƒ8_|jdkr’d|_n|j|ƒ|S(NisT(u_eofu_compress_typeu ZIP_DEFLATEDu _decompressoruunconsumed_tailulenu_read2u ZIP_STOREDu_compress_leftumaxu MIN_READ_SIZEu decompressueofuflushu_leftuTrueu _update_crc(uselfunudata((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu_read12s2 #    uZipExtFile._read1cCs›|jdkrdSt||jƒ}t||jƒ}|jj|ƒ}|jt|ƒ8_|smt‚n|jdk r—t t |j|ƒƒ}n|S(Nis( u_compress_leftumaxu MIN_READ_SIZEuminu_fileobjureadulenuEOFErroru _decrypteruNoneubytesumap(uselfunudata((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu_read2Vs uZipExtFile._read2c s2z|jr|jjƒnWdtƒjƒXdS(N(u_close_fileobju_fileobjucloseusuper(uself(u __class__(u,/opt/alt/python33/lib64/python3.3/zipfile.pyuclosefs uZipExtFile.closeii@NFiÿÿÿÿiÿÿÿÿ(u__name__u __module__u __qualname__u__doc__uMAX_Nu MIN_READ_SIZEureucompileuPATTERNuNoneuFalseu__init__ureadlineupeekureadableureadu _update_crcuread1u_read1u_read2uclose(u __locals__((u __class__u,/opt/alt/python33/lib64/python3.3/zipfile.pyu ZipExtFileqs 2 ! % $ u ZipExtFilecBs||EeZdZdZd0Zd0Zded1dd„Z dd„Z dd„Z d d „Z d d „Z d d„Zd0dd„Zdd„Zdd„Zdd„Zedd„ƒZejdd„ƒZd0dd„Zdd0dd„Zd0d0dd„Zd0d0d0d d!„Zed"d#„ƒZd$d%„Zd&d'„Zd0d0d(d)„Zd0d*d+„Zd,d-„Z d.d/„Z!d0S(2uZipFileu© Class with methods to open, read, write, close, list zip files. z = ZipFile(file, mode="r", compression=ZIP_STORED, allowZip64=False) file: Either the path to the file, or a file-like object. If it is a path, the file will be opened and closed by ZipFile. mode: The mode can be either read "r", write "w" or append "a". compression: ZIP_STORED (no compression), ZIP_DEFLATED (requires zlib), ZIP_BZIP2 (requires bz2) or ZIP_LZMA (requires lzma). allowZip64: if True ZipFile will create files with ZIP64 extensions when needed, otherwise it will raise an exception when this would be necessary. urcCs6|dkrtdƒ‚nt|ƒ||_d|_d|_i|_g|_||_|j ddƒd|_ }d|_ d|_ t|tƒr0d|_||_id d6d d6d d6}ytj|||ƒ|_WqWtk r,|dkr%d}}tj|||ƒ|_n‚YqWXn'd |_||_t|d dƒ|_y¥|dkrs|jƒnˆ|dkr‹d|_np|dkrïy$|jƒ|jj|jdƒWqûtk rë|jjddƒd|_YqûXn tdƒ‚Wn3|j}d|_|js*|jƒn‚YnXdS(u>Open the ZIP file with mode read "r", write "w" or append "a".uruwuau(ZipFile() requires mode "r", "w", or "a"iubusurbuwbur+biunameiuMode must be "r", "w" or "a"N(uruwuaFT(u RuntimeErroru_check_compressionu _allowZip64uFalseu _didModifyudebugu NameToInfoufilelistu compressionureplaceumodeuNoneupwdu_commentu isinstanceustru _filePassedufilenameuiouopenufpuIOErrorugetattru_RealGetContentsuTrueuseeku start_diru BadZipFileuclose(uselfufileumodeu compressionu allowZip64ukeyumodeDictufp((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu__init__sZ                             uZipFile.__init__cCs|S(N((uself((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu __enter__ÂsuZipFile.__enter__cCs|jƒdS(N(uclose(uselfutypeuvalueu traceback((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu__exit__ÅsuZipFile.__exit__cCs±|j}yt|ƒ}Wntk r9tdƒ‚YnX|sOtdƒ‚n|jdkrkt|ƒn|t}|t}|t|_ |t ||}|t t kr¿|t t8}n|jdkrî||}td|||ƒn|||_|j|jdƒ|j|ƒ}tj|ƒ}d}xx||kr¬|jtƒ} t| ƒtkrqtdƒ‚ntjt| ƒ} | ttkr¢tdƒ‚n|jdkr¾t| ƒn|j| tƒ} | d} | d @r÷| jd ƒ} n| jd ƒ} t| ƒ} |j| tƒ| _|j| t ƒ| _!| t"| _#| dd …\ | _$| _%| _&| _'| _(| _)} }| _*| _+| _,| j&t-krÀt.d | j&dƒ‚n| dd…\| _/| _0| _1| | _2|d?d|d?d@|d@| d?| d?d@| d@df| _3| j4ƒ| j#|| _#|j5j6| ƒ| |j7| j8<|t| t| t| t }|jdkr5td|ƒq5q5WdS(u/Read in the table of contents for the ZIP file.uFile is not a zip fileiiugiven, inferred, offsetiuTruncated central directoryu&Bad magic number for central directoryiiuutf-8ucp437i uzip file version %.1fi iii i¼ii i?utotalN(9ufpu _EndRecDatauIOErroru BadZipFileudebuguprintu _ECD_SIZEu _ECD_OFFSETu _ECD_COMMENTu_commentu _ECD_LOCATIONu_ECD_SIGNATUREustringEndArchive64usizeEndCentDir64usizeEndCentDir64Locatoru start_diruseekureaduiouBytesIOusizeCentralDirulenustructuunpackustructCentralDiru _CD_SIGNATUREustringCentralDiru_CD_FILENAME_LENGTHudecodeuZipInfou_CD_EXTRA_FIELD_LENGTHuextrau_CD_COMMENT_LENGTHucommentu_CD_LOCAL_HEADER_OFFSETu header_offsetucreate_versionu create_systemuextract_versionureservedu flag_bitsu compress_typeuCRCu compress_sizeu file_sizeuMAX_EXTRACT_VERSIONuNotImplementedErroruvolumeu internal_attru external_attru _raw_timeu date_timeu _decodeExtraufilelistuappendu NameToInfoufilename(uselfufpuendrecusize_cdu offset_cduconcatuinferredudatautotalucentdirufilenameuflagsuxutud((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu_RealGetContentsÈsp             L" & "uZipFile._RealGetContentscCsdd„|jDƒS(u+Return a list of file names in the archive.cSsg|]}|j‘qS((ufilename(u.0udata((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu s u$ZipFile.namelist..(ufilelist(uself((u,/opt/alt/python33/lib64/python3.3/zipfile.pyunamelistsuZipFile.namelistcCs|jS(uJReturn a list of class ZipInfo instances for files in the archive.(ufilelist(uself((u,/opt/alt/python33/lib64/python3.3/zipfile.pyuinfolistsuZipFile.infolistcCsftdd d|ƒxK|jD]@}d|jdd…}td |j||jfd|ƒqWdS( u+Print a table of contents for the zip file.u%-46s %19s %12su File Nameu Modified uSizeufileu%d-%02d-%02d %02d:%02d:%02dNiu %-46s %s %12d(u File Nameu Modified uSize(uprintufilelistu date_timeufilenameu file_size(uselfufileuzinfoudate((u,/opt/alt/python33/lib64/python3.3/zipfile.pyuprintdirs  uZipFile.printdircCsrd}xe|jD]Z}y8|j|jdƒ}x|j|ƒrFq4WWdQXWqtk ri|jSYqXqWdS(u%Read all the files and check the CRC.iiurNi(ufilelistuopenufilenameureadu BadZipFile(uselfu chunk_sizeuzinfouf((u,/opt/alt/python33/lib64/python3.3/zipfile.pyutestzip(s uZipFile.testzipcCs5|jj|ƒ}|dkr1td|ƒ‚n|S(u,Return the instance of ZipInfo given 'name'.u(There is no item named %r in the archiveN(u NameToInfougetuNoneuKeyError(uselfunameuinfo((u,/opt/alt/python33/lib64/python3.3/zipfile.pyugetinfo5s  uZipFile.getinfocCsN|r/t|tƒ r/tdt|ƒƒ‚n|rA||_n d|_dS(u)Set default password for encrypted files.upwd: expected bytes, got %sN(u isinstanceubytesu TypeErrorutypeupwduNone(uselfupwd((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu setpassword>s  uZipFile.setpasswordcCs|jS(u.The comment text associated with the ZIP file.(u_comment(uself((u,/opt/alt/python33/lib64/python3.3/zipfile.pyucommentGsuZipFile.commentcCs†t|tƒs(tdt|ƒƒ‚nt|ƒtkrpddl}|jdtddƒ|dt…}n||_d|_ dS(Nucomment: expected bytes, got %siu3Archive comment is too long; truncating to %d bytesu stackleveliT( u isinstanceubytesu TypeErrorutypeulenuZIP_MAX_COMMENTuwarningsuwarnu_commentuTrueu _didModify(uselfucommentuwarnings((u,/opt/alt/python33/lib64/python3.3/zipfile.pyucommentLs   cCs,|j|d|ƒ}|jƒSWdQXdS(u)Return file bytes (as a string) for name.urN(uopenuread(uselfunameupwdufp((u,/opt/alt/python33/lib64/python3.3/zipfile.pyureadYsu ZipFile.readcCs|dkrtdƒ‚n|rJt|tƒ rJtdt|ƒƒ‚n|jsbtdƒ‚n|jrw|j}ntj|j dƒ}ySt|t ƒr§|}n|j |ƒ}|j |j dƒ|jtƒ}t|ƒtkrùtd ƒ‚ntjt|ƒ}|ttkr*td ƒ‚n|j|tƒ}|tr[|j|tƒn|jd @rwtd ƒ‚n|jd @r“tdƒ‚n|jd@r²|jdƒ}n|jdƒ}||jkrìtd|j|fƒ‚n|jd@} d} | rÁ|s|j}n|s0td|ƒ‚nt|ƒ} |jdƒ} t t!| | dd…ƒƒ} |jd@r‹|j"d?d@} n|j#d?d@} | d| krÁtd|ƒ‚qÁnt$|||| d|j ƒSWn!|jsû|j%ƒn‚YnXdS(u#Return file-like object for 'name'.uruUurUu&open() requires mode "r", "U", or "rU"upwd: expected bytes, got %su3Attempt to read ZIP archive that was already closedurbiuTruncated file headeru Bad magic number for file headeri u$compressed patched data (flag bit 5)i@ustrong encryption (flag bit 6)iuutf-8ucp437u/File name in directory %r and header %r differ.iu6File %s is encrypted, password required for extractioni iiÿii uBad password for fileu close_fileobjN(uruUurU(&u RuntimeErroru isinstanceubytesu TypeErrorutypeufpu _filePasseduiouopenufilenameuZipInfougetinfouseeku header_offsetureadusizeFileHeaderulenu BadZipFileustructuunpackustructFileHeaderu _FH_SIGNATUREustringFileHeaderu_FH_FILENAME_LENGTHu_FH_EXTRA_FIELD_LENGTHu flag_bitsuNotImplementedErrorudecodeu orig_filenameuNoneupwdu _ZipDecrypterulistumapu _raw_timeuCRCu ZipExtFileuclose(uselfunameumodeupwduzef_fileuzinfoufheaderufnameu fname_stru is_encrypteduzduheaderuhu check_byte((u,/opt/alt/python33/lib64/python3.3/zipfile.pyuopen^sr                 u ZipFile.opencCsOt|tƒs!|j|ƒ}n|dkr<tjƒ}n|j|||ƒS(u#Extract a member from the archive to the current working directory, using its full name. Its file information is extracted as accurately as possible. `member' may be a filename or a ZipInfo object. You can specify a different directory using `path'. N(u isinstanceuZipInfougetinfouNoneuosugetcwdu_extract_member(uselfumemberupathupwd((u,/opt/alt/python33/lib64/python3.3/zipfile.pyuextractºs  uZipFile.extractcCsC|dkr|jƒ}nx!|D]}|j|||ƒq"WdS(uõExtract all members from the archive to the current working directory. `path' specifies a different directory to extract to. `members' is optional and must be a subset of the list returned by namelist(). N(uNoneunamelistuextract(uselfupathumembersupwduzipinfo((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu extractallÈs  uZipFile.extractallcCsˆ|j}|s=d}tj|dt|ƒƒ}||_n|j|ƒ}dd„|j|ƒDƒ}|jdd„|Dƒƒ}|S(u;Replace bad characters and remove trailing dots from parts.u:<>|"?*u_css|]}|jdƒVqdS(u.N(urstrip(u.0ux((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu Þsu1ZipFile._sanitize_windows_name..css|]}|r|VqdS(N((u.0ux((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu às(u!_windows_illegal_name_trans_tableustru maketransulenu translateusplitujoin(uclsuarcnameupathseputableuillegal((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu_sanitize_windows_nameÔs  uZipFile._sanitize_windows_namecsÂ|jjdtjjƒ}tjjrH|jtjjtjjƒ}ntjj|ƒd}dtjjtjjf‰tjjj ‡fdd†|j tjjƒDƒƒ}tjjdkrÝ|j |tjjƒ}ntjj ||ƒ}tjj |ƒ}tjj |ƒ}|r?tjj|ƒ r?tj|ƒn|jd dkrxtjj|ƒsttj|ƒn|S|j|d|ƒ/}t|dƒ}tj||ƒWd QXWd QX|S( ubExtract the ZipInfo object 'member' to a physical file on the path targetpath. u/iuc3s!|]}|ˆkr|VqdS(N((u.0ux(uinvalid_path_parts(u,/opt/alt/python33/lib64/python3.3/zipfile.pyu ñsu*ZipFile._extract_member..u\upwduwbNiÿÿÿÿ(ufilenameureplaceuosupathusepualtsepu splitdriveucurdirupardirujoinusplitu_sanitize_windows_nameunormpathudirnameuexistsumakedirsuisdirumkdiruopenushutilu copyfileobj(uselfumemberu targetpathupwduarcnameu upperdirsusourceutarget((uinvalid_path_partsu,/opt/alt/python33/lib64/python3.3/zipfile.pyu_extract_memberãs* !7uZipFile._extract_membercCsÖ|j|jkr;ddl}|jd|jddƒn|jd krYtdƒ‚n|jsqtd ƒ‚nt|jƒ|j t kr¨|j s¨t d ƒ‚q¨n|j t krÒ|j sÒt d ƒ‚qÒndS( u6Check for errors before writing a file to the archive.iNuDuplicate name: %ru stackleveliuwuau write() requires mode "w" or "a"u4Attempt to write ZIP archive that was already closedu'Filesize would require ZIP64 extensionsu+Zipfile size would require ZIP64 extensions(uwua(ufilenameu NameToInfouwarningsuwarnumodeu RuntimeErrorufpu_check_compressionu compress_typeu file_sizeu ZIP64_LIMITu _allowZip64u LargeZipFileu header_offset(uselfuzinfouwarnings((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu _writecheck s       uZipFile._writecheckc Csé|jstdƒ‚ntj|ƒ}tj|jƒ}tj|jƒ}|dd…}|dkrp|}ntj j tj j |ƒdƒ}x0|dtj tjfkrÄ|dd…}q•W|rØ|d7}nt||ƒ}|dd@d>|_|dkr|j|_n ||_|j|_d|_|jjƒ|_|jtkrh|jd O_n|j|ƒd|_|rÜd|_d|_d|_|jj|ƒ||j |j!<|jj"|j#dƒƒdSt%|jƒ} t&|d ƒÖ} d|_} d|_} |j'o0|jd t(k} |jj"|j#| ƒƒd}xw| j)dƒ}|snPn|t*|ƒ}t+|| ƒd@} | r¹| j,|ƒ}| t*|ƒ} n|jj"|ƒqUWdQX| r| j-ƒ}| t*|ƒ} |jj"|ƒ| |_n ||_| |_||_| rt|j'rt|t(krVtdƒ‚n| t(krttdƒ‚qtn|jjƒ}|jj.|jdƒ|jj"|j#| ƒƒ|jj.|dƒ|jj|ƒ||j |j!|dd>B|d B}|d d >|d d>B|dd B}g}|jtksÖ|j tkr|j |jƒ|j |j ƒd }d } n|j}|j } |j tkr?|j |j ƒd } n |j } |j } d} |ršt jddt|ƒddt|ƒ|Œ| } t} n|jtkr»tt| ƒ} n!|jtkrÜtt| ƒ} nt| |jƒ} t| |jƒ}y…|jƒ\}}t jtt||j| |j||j|||j| |t|ƒt| ƒt|jƒd|j |j!| ƒ}Wn‘t"k rt#tt||j| |j|j$|j|||j| |t|j%ƒt| ƒt|jƒd|j |j!| fdt&j'ƒ‚YnX|jj(|ƒ|jj(|ƒ|jj(| ƒ|jj(|jƒqMW|jjƒ}|}||}|}|t)ks©|tks©|tkrAt jt*t+ddddd||||ƒ }|jj(|ƒt jt,t-d|dƒ}|jj(|ƒt.|dƒ}t.|d ƒ}t.|d ƒ}nt jt/t0dd||||t|j1ƒƒ }|jj(|ƒ|jj(|j1ƒ|jj2ƒnWd|j}d|_|j3sÐ|j4ƒnXdS(uJClose the file, and for mode "w" and "a" write the ending records.Nuwuaiii¼i iiii ilÿÿu._compileu.pyu.pycu.pyoiuoptimizeu%s/%siÿÿÿÿTFiÿÿÿÿ( uimpucache_from_sourceuTrueuFalseu _optimizeuosupathuisfileustatust_mtimeu __debug__usplit( uselfupathnameubasenameu_compileufile_pyufile_pycufile_pyou pycache_pycu pycache_pyouarcnameufnameu archivename((uselfu,/opt/alt/python33/lib64/python3.3/zipfile.pyu _get_codenamedsL   $ $ $ $    $uPyZipFile._get_codenameNFiÿÿÿÿ( u__name__u __module__u __qualname__u__doc__u ZIP_STOREDuFalseu__init__uwritepyu _get_codename(u __locals__((u,/opt/alt/python33/lib64/python3.3/zipfile.pyu PyZipFiles Ac s2ddl}|jdƒ}|dkr=tjdd…}n| sT|ddkrnt|ƒtjdƒn|ddkrÓt|ƒdkrªt|ƒtjdƒnt|dd ƒ}|j ƒWdQXn[|ddkr`t|ƒdkrt|ƒtjdƒnt|dd ƒ}|j ƒ}WdQX|rStd j |ƒƒntd ƒnÎ|ddkr„t|ƒd krœt|ƒtjdƒnt|dd ƒÐ}|d}x¼|j ƒD]®}|j d ƒrtjj||dd…ƒ}ntjj||ƒ}tjj|ƒ}tjj|ƒsItj|ƒnt|dƒ} | j|j|ƒƒWdQXqÉWWdQXnª|ddkr.t|ƒd krÀt|ƒtjdƒn‡fdd†‰t|ddddƒ>}x4|dd…D]"} ˆ|| tjj| ƒƒqÿWWdQXndS(NiuE 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 iu-lu-cu-eu-tiuru.The following enclosed file is corrupted: {!r}u Done testingiu./uwbcs‰tjj|ƒr(|j||tƒn]tjj|ƒr…xHtj|ƒD]4}ˆ|tjj||ƒtjj||ƒƒqJWndS(N(uosupathuisfileuwriteu ZIP_DEFLATEDuisdirulistdirujoin(uzfupathuzippathunm(uaddToZip(u,/opt/alt/python33/lib64/python3.3/zipfile.pyuaddToZipãs umain..addToZipuwu allowZip64(u-lu-cu-eu-tT(utextwrapudedentuNoneusysuargvuprintuexitulenuZipFileuprintdirutestzipuformatunamelistu startswithuosupathujoinudirnameuexistsumakedirsuopenuwriteureaduTrueubasename( uargsutextwrapuUSAGEuzfubadfileuoutupathutgtutgtdirufpusrc((uaddToZipu,/opt/alt/python33/lib64/python3.3/zipfile.pyumainªs\         ")  umainu__main__(yu__doc__uiouosureuimpusysutimeustatushutilustructubinasciiuzlibucrc32u ImportErroruNoneubz2ulzmau__all__u Exceptionu BadZipFileu LargeZipFileuerroru BadZipfileu ZIP64_LIMITuZIP_FILECOUNT_LIMITuZIP_MAX_COMMENTu ZIP_STOREDu ZIP_DEFLATEDu ZIP_BZIP2uZIP_LZMAuDEFAULT_VERSIONu ZIP64_VERSIONu BZIP2_VERSIONu LZMA_VERSIONuMAX_EXTRACT_VERSIONustructEndArchiveustringEndArchiveucalcsizeusizeEndCentDiru_ECD_SIGNATUREu_ECD_DISK_NUMBERu_ECD_DISK_STARTu_ECD_ENTRIES_THIS_DISKu_ECD_ENTRIES_TOTALu _ECD_SIZEu _ECD_OFFSETu_ECD_COMMENT_SIZEu _ECD_COMMENTu _ECD_LOCATIONustructCentralDirustringCentralDirusizeCentralDiru _CD_SIGNATUREu_CD_CREATE_VERSIONu_CD_CREATE_SYSTEMu_CD_EXTRACT_VERSIONu_CD_EXTRACT_SYSTEMu _CD_FLAG_BITSu_CD_COMPRESS_TYPEu_CD_TIMEu_CD_DATEu_CD_CRCu_CD_COMPRESSED_SIZEu_CD_UNCOMPRESSED_SIZEu_CD_FILENAME_LENGTHu_CD_EXTRA_FIELD_LENGTHu_CD_COMMENT_LENGTHu_CD_DISK_NUMBER_STARTu_CD_INTERNAL_FILE_ATTRIBUTESu_CD_EXTERNAL_FILE_ATTRIBUTESu_CD_LOCAL_HEADER_OFFSETustructFileHeaderustringFileHeaderusizeFileHeaderu _FH_SIGNATUREu_FH_EXTRACT_VERSIONu_FH_EXTRACT_SYSTEMu_FH_GENERAL_PURPOSE_FLAG_BITSu_FH_COMPRESSION_METHODu_FH_LAST_MOD_TIMEu_FH_LAST_MOD_DATEu_FH_CRCu_FH_COMPRESSED_SIZEu_FH_UNCOMPRESSED_SIZEu_FH_FILENAME_LENGTHu_FH_EXTRA_FIELD_LENGTHustructEndArchive64LocatorustringEndArchive64LocatorusizeEndCentDir64LocatorustructEndArchive64ustringEndArchive64usizeEndCentDir64u_CD64_SIGNATUREu_CD64_DIRECTORY_RECSIZEu_CD64_CREATE_VERSIONu_CD64_EXTRACT_VERSIONu_CD64_DISK_NUMBERu_CD64_DISK_NUMBER_STARTu_CD64_NUMBER_ENTRIES_THIS_DISKu_CD64_NUMBER_ENTRIES_TOTALu_CD64_DIRECTORY_SIZEu_CD64_OFFSET_START_CENTDIRu_check_zipfileu is_zipfileu _EndRecData64u _EndRecDatauobjectuZipInfou _ZipDecrypteruLZMACompressoruLZMADecompressorucompressor_namesu_check_compressionu_get_compressoru_get_decompressoruBufferedIOBaseu ZipExtFileuZipFileu PyZipFileumainu__name__(((u,/opt/alt/python33/lib64/python3.3/zipfile.pyus"                         + =œ;   ýÿÿ®F