grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026ó :öý¥ÛHã óô•SrSrSrSrSSKJr SSKrSSKrSSK r SSK r SSK r SSK r SSK r SSKrSSKrSSKrSSKr\\\4r/SQrSrS r\S -rS rS rS rS rSrSr Sr!Sr"Sr#Sr$Sr%Sr&Sr'Sr(Sr)Sr*Sr+Sr,Sr-Sr.Sr/Sr0Sr1\1r2\ \!\"\#\&\'\(\$\%\)\*\+4 r3\ \!\(\+4r4\)\*\+4r5Sr61S kr7\8\8\8\9\9\9S!.r:\RvS":XaS#rS%r?S&r@S'\24S(jrAS)rBS\S4S*jrCS+rDS,rES-rF"S.S/\G5rH"S0S1\H5rI"S2S3\H5rJ"S4S5\H5rK"S6S7\H5rL"S8S9\H5rM"S:S;\M5rN"S<S=\M5rO"S>S?\M5rP"S@SA\M5rQ"SBSC\M5rR"SDSE5rS"SFSG5rT"SHSI\U5rV"SJSK\U5rW"SLSM\ R°5rY"SNSO\H5rZ"SPSQ\Z5r["SRSS\Z5r\"STSU\Z5r]"SVSW\Z5r^"SXSY\Z5r_"SZS[\Z5r`\Z\\I4raSiS\jrbS]rcS^rdS_re\c\d\eS`.rf\U"5rg\RÐ"Sa5ri"SbSc\U5rj"SdSe\U5rkSfrl\kR rSgrm\nSh:Xa\m"5 gg!\a SrGN/f=f!\a SrGN9f=f)jz,Read from and write to tar format archives. z0.9.0u"Lars Gustäbel (lars@gustaebel.de)u4Gustavo Niemeyer, Niels Gustäbel, Richard Townsend.é)ÚopenN)ÚTarFileÚTarInfoÚ is_tarfileÚTarErrorÚ ReadErrorÚCompressionErrorÚ StreamErrorÚ ExtractErrorÚ HeaderErrorÚENCODINGÚ USTAR_FORMATÚ GNU_FORMATÚ PAX_FORMATÚDEFAULT_FORMATrÚfully_trusted_filterÚ data_filterÚ tar_filterÚ FilterErrorÚAbsoluteLinkErrorÚOutsideDestinationErrorÚSpecialFileErrorÚAbsolutePathErrorÚLinkOutsideDestinationErrorÚLinkFallbackErroróiésustar sustar00édé›ó0ó1ó2ó3ó4ó5ó6ó7óLóKóSóxógóXéé)ÚpathÚlinkpathÚsizeÚmtimeÚuidÚgidÚunameÚgname>r0r7r6r1)ÚatimeÚctimer3r4r5r2Úntúutf-8cóv•Uc [S5eURX#5nUSUU[U5- [--$)z8Convert a string to a null-terminated bytes object. Nzmetadata cannot contain None)Ú ValueErrorÚencodeÚlenÚNUL)ÚsÚlengthÚencodingÚerrorss Ú./opt/alt/python313/lib64/python3.13/tarfile.pyÚstnrFžsA€ð �yÜÐ7Ó8Ð8Ø �‰�Ó"€AØ ˆWˆfˆ:˜¤# a£&™¬CÑ/Ñ /Ð/ócó\•URS5nUS:waUSUnURX5$)z8Convert a null-terminated bytes object to a string. réÿÿÿÿN)ÚfindÚdecode)rArCrDÚps rEÚntsrM¦s2€ð �‰ˆu‹ €A؈BƒwØ ˆbˆqˆEˆØ �8‰8�HÓ %Ð%rGcóJ•USS;aOSn[[U5S- 5HnUS-nXUS-- nM USS:XaS[U5S- -U- *nU$[USS5n[UR 5=(d S S5nU$![ a [ S 5ef=f) z/Convert a number field to a python number. r)é€éÿr.érPéÚasciiÚstrictÚ0úinvalid header)Úranger?rMÚintÚstripr=ÚInvalidHeaderError)rAÚnÚis rEÚntir]®sÀ€ð  ˆ�tˆ~ÓØ ˆÜ”s˜1“v ‘zÖ"ˆAØ �!‰GˆAØ �1�q‘5‘‰MŠAñ#ð ˆQ‰4�5‹=Øœ#˜a›& 1™*Ñ%¨Ñ)Ð*ˆAð €Hð  7Ü�A�w Ó)ˆAÜ�A—G‘G“I×$  aÓ(ˆAð €Høôó 7Ü$Ð%5Ó6Ð 6ð 7ús Á0B  B"rQcó–•Un[U5nSUs=::a SUS- -:a O O[SUS- U4-S5[-nU$U[:XauSUS- -*Us=::a SUS- -:a[O OXUS:¼a [ S/5nO[ S/5nSU-U-n[ US- 5HnUR SUS-5 US-nM U$[S 5e) z/Convert a python number to a number field. rrQr.z%0*orSrRrOrPzoverflow in number field)rXÚbytesr@rÚ bytearrayrWÚinsertr=)r[ÚdigitsÚformatÚ original_nrAr\s rEÚitnreÂsè€ð€JÜ ˆA‹€A؈AÕ!��f˜q‘jÑ!Ö!Ü �&˜F Q™J¨˜?Ñ*¨GÓ 4´sÑ :ˆð €Hð ”:Ó  3¨6°A©:Ñ#6Ð"6¸!Õ"Q¸cÀfÈqÁjÑ>QÖ"QØ �‹6ܘ5˜'Ó"‰Aä˜5˜'Ó"ˆAØ�v‘  Ñ!ˆAä�v ‘zÖ"ˆAØ �H‰H�Q˜˜E™ Ô "Ø �!‰GŠAñ#ð €HôÐ3Ó4Ð4rGcó”•S[[R"SU55-nS[[R"SU55-nX4$)azCalculate the checksum for a member's header by summing up all characters except for the chksum field which is treated as if it was filled with spaces. According to the GNU tar sources, some tars (Sun and NeXT) calculate chksum with signed char, which will be different if there are chars in the buffer with the high bit set. So we calculate two checksums, unsigned and signed. rRÚ 148B8x356BÚ 148b8x356b)ÚsumÚstructÚ unpack_from)ÚbufÚunsigned_chksumÚ signed_chksums rEÚ calc_chksumsroàsE€ðœC¤× 2Ò 2°<ÀÓ EÓFÑF€OØœ#œf×0Ò0°¸sÓCÓDÑD€MØ Ð )Ð)rGcóŒ•U=(d SnUS:XagUc[R"XU5 g[X$5upV[U5H<nUR U5n[ U5U:aU"S5eUR U5 M> US:wa9UR U5n[ U5U:aU"S5eUR U5 g)z_Copy length bytes from fileobj src to fileobj dst. If length is None, copy the entire content. i@rNúunexpected end of data)ÚshutilÚ copyfileobjÚdivmodrWÚreadr?Úwrite) ÚsrcÚdstrBÚ exceptionÚbufsizeÚblocksÚ remainderÚbrls rErsrsís¹€ð×"˜€GØ �ƒ{ØØ �~Ü×Ò˜3 WÔ-Øä˜vÓ/Ñ€FÜ �6Ž]ˆØ�h‰h�wÓˆÜ ˆs‹8�gÓ ÙÐ4Ó5Ð 5Ø � ‰ �#Žñ ð �Aƒ~Ø�h‰h�yÓ!ˆÜ ˆs‹8�iÓ ÙÐ4Ó5Ð 5Ø � ‰ �#ŒØ rGicó•U[::aURU5$/nUS:”aNUR[U[55nU(dO'URU5 U[ U5-nUS:”aMNSR U5$)aRead up to *size* bytes from *fileobj* in bounded chunks. Returns the same bytes as ``fileobj.read(size)`` would (including a short result at end of file), but limits pre-allocation, so an oversized size field in a crafted header cannot force a huge allocation. rrG)Ú_EXTHEADER_READ_CHUNKruÚminÚappendr?Újoin)Úfileobjr2ÚchunksÚchunks rEÚ _safe_readr†sx€ð Ô$Ó$Ø�|‰|˜DÓ!Ð!Ø €FØ �‹(Ø— ‘ œS Ô'<Ó=Ó>ˆÞØ Ø� ‰ �eÔØ ”�E“ шð ��(ð �8‰8�FÓ ÐrGcó–•[[RSS5nUb!URUS5R U5n[ USS9 g)NrCÚbackslashreplaceÚ )Úend)ÚgetattrÚsysÚstdoutr>rKÚprint)rArCs rEÚ _safe_printr� s@€Ü”s—z‘z :¨tÓ4€HØÑØ �H‰H�XÐ1Ó 2× 9Ñ 9¸(Ó CˆÜ ˆ!�ÓrGcó•\rSrSrSrSrg)ri'zBase exception.©N©Ú__name__Ú __module__Ú __qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r‘rGrErr's†ÙÚrGrcó•\rSrSrSrSrg)r i*z%General exception for extract errors.r‘Nr’r‘rGrEr r *s†Ù/ÚrGr có•\rSrSrSrSrg)ri-z&Exception for unreadable tar archives.r‘Nr’r‘rGrErr-s†Ù0ÚrGrcó•\rSrSrSrSrg)r i0z.Exception for unavailable compression methods.r‘Nr’r‘rGrEr r 0s†Ù8ÚrGr có•\rSrSrSrSrg)r i3z=Exception for unsupported operations on stream-like TarFiles.r‘Nr’r‘rGrEr r 3s†ÙGÚrGr có•\rSrSrSrSrg)r i6z!Base exception for header errors.r‘Nr’r‘rGrEr r 6s†Ù+ÚrGr có•\rSrSrSrSrg)ÚEmptyHeaderErrori9zException for empty headers.r‘Nr’r‘rGrErŸrŸ9s†Ù&ÚrGrŸcó•\rSrSrSrSrg)ÚTruncatedHeaderErrori<z Exception for truncated headers.r‘Nr’r‘rGrEr¡r¡<s†Ù*ÚrGr¡có•\rSrSrSrSrg)ÚEOFHeaderErrori?z"Exception for end of file headers.r‘Nr’r‘rGrEr£r£?s†Ù,ÚrGr£có•\rSrSrSrSrg)rZiBzException for invalid headers.r‘Nr’r‘rGrErZrZBs†Ù(ÚrGrZcó•\rSrSrSrSrg)ÚSubsequentHeaderErroriEz3Exception for missing and invalid extended headers.r‘Nr’r‘rGrEr¦r¦Es†Ù=ÚrGr¦có0•\rSrSrSrSrSrSrSrSr g) Ú _LowLevelFileiLzwLow-level file object. Supports reading and writing. It is used instead of a regular file object for streaming access. có•[R[R[R-[R-S.Un[ [S5(aU[R -n[R"XS5Ulg)N©ÚrÚwÚO_BINARYi¶) ÚosÚO_RDONLYÚO_WRONLYÚO_CREATÚO_TRUNCÚhasattrr­rÚfd)ÚselfÚnameÚmodes rEÚ__init__Ú_LowLevelFile.__init__Rsb€ä—‘Ü—‘œrŸz™zÑ)¬B¯J©JÑ6ñ ð ñˆô ”2�z× "Ñ "Ø ”B—K‘KÑ ˆDÜ—'’'˜$ eÓ,ˆ�rGcóD•[R"UR5 g©N)r®Úcloser´©rµs rEr¼Ú_LowLevelFile.close[s€Ü �Š�—‘ÕrGcóD•[R"URU5$r»)r®rur´©rµr2s rEruÚ_LowLevelFile.read^s€Ü�wŠw�t—w‘w Ó%Ð%rGcóF•[R"URU5 gr»)r®rvr´©rµrAs rErvÚ_LowLevelFile.writeas€Ü �Š�—‘˜!ÕrG)r´N) r“r”r•r–r—r¸r¼rurvr˜r‘rGrEr¨r¨Ls†ñò -òò&õrGr¨cód•\rSrSrSrSrSrSrSrSr Sr S r S r SS jr S rS rSrSrg)Ú_Streamida™Class that serves as an adapter between TarFile and a stream-like object. The stream-like object only needs to have a read() or write() method that works with bytes, and the method is accessed blockwise. Use of gzip or bzip2 compression is possible. A stream-like object could be for example: sys.stdin.buffer, sys.stdout.buffer, a socket, a tape device etc. _Stream is intended to be used only internally. cóZ•SUlUc[X5nSUlUS:Xa[U5nUR5nUb[R "U5OSUlX lX0lX@l XPl SUl SUl SUl US:Xa[SSKnXplUR#S5UlUS :Xa"UR&UlUR+5 gUR-U5 gUS :XaJSSKnUS :Xa(SUlUR35Ul[6UlgUR9U5UlgUS :XaOSSKn US :Xa.SUlU R=5UlU R>UlgU RA5UlgUS:wa[!SU-5eg![a [!S 5Sef=f![a [!S 5Sef=f![a [!S5Sef=f! UR(dURRC5 SUl e=f)z$Construct a _Stream object. TNFÚ*ÚrGrÚgzzzlib module is not availabler«Úbz2úbz2 module is not availableÚxzúlzma module is not availableÚtarúunknown compression type %r)"Ú _extfileobjr¨Ú _StreamProxyÚ getcomptyper®Úfspathr¶r·ÚcomptyperƒrzrlÚposÚclosedÚzlibÚ ImportErrorr Úcrc32ÚcrcÚerrorryÚ _init_read_gzÚ_init_write_gzrËÚdbufÚBZ2DecompressorÚcmpÚOSErrorÚ BZ2CompressorÚlzmaÚLZMADecompressorÚ LZMAErrorÚLZMACompressorr¼) rµr¶r·rÕrƒrzÚ compresslevelrØrËräs rEr¸Ú_Stream.__init__ps€ð ˆÔØ ‰?Ü# DÓ/ˆGØ$ˆDÔ à �s‹?ô# 7Ó+ˆGØ×*Ñ*Ó,ˆHà+/Ñ+;œŸ š  $œÀˆŒ ØŒ Ø Œ ØŒ ØŒ ؈ŒØˆŒØˆŒ ð- ؘ4ÓðUÛð!” ØŸ:™: c›?�”ؘ3“;Ø%)§Z¡Z�D”NØ×&Ñ&Õ(à×'Ñ'¨ Õ6à˜UÓ"ðTÛð˜3“;Ø #�D”IØ"×2Ñ2Ó4�D”HÜ%,�D•Nà"×0Ñ0°Ó?�D•Hà˜TÓ!ðUÛð˜3“;Ø #�D”IØ#×4Ñ4Ó6�D”HØ%)§^¡^�D•Nà#×2Ñ2Ó4�D•Hà˜UÓ"Ü&Ð'DÀxÑ'OÓPÐPð#øôE#óUÜ*Ð+IÓJÐPTÐTðUûô#óTÜ*Ð+HÓIÈtÐSðTûô#óUÜ*Ð+IÓJÐPTÐTðUûð Ø×#×#Ø— ‘ ×"Ñ"Ô$؈DŒKØ úsy G5ÂF'ÂAG5ÃG5Ã-G5Ã4GÃ8-G5Ä&G5Ä=G5ÅGÅ3G5Å<G5ÆG5Æ'F>Æ>G5ÇGÇG5ÇG2Ç2G5Ç55H*cól•[US5(a#UR(dUR5 ggg)Nr×)r³r×r¼r½s rEÚ__del__Ú_Stream.__del__·s&€Ü �4˜× "Ñ "¨4¯;¯;Ø �J‰J�Lð,7Ð "rGcó‚•URRUURRURR*URRS5Ul[ R"S[[R"555nURSU-S-5 URRS5(aURSSUl [RRUR5Ul URURR!SS 5["-5 g) z6Initialize for writing with gzip compression. rúr@)rµrèÚ timestamps rErÞÚ_Stream._init_write_gz»s߀ð—9‘9×(Ñ(¨Ø)-¯©×);Ñ);Ø*.¯)©)×*=Ñ*=Ð)=Ø)-¯©×)@Ñ)@Ø)*ó ,ˆŒô —K’K ¤c¬$¯)ª)«+Ó&6Ó7ˆ Ø � ‰ Ð(¨9Ñ4°{ÑBÔCØ �9‰9× Ñ ˜e× $Ñ $ØŸ ™  # 2˜ˆDŒIä—G‘G×$Ñ$ T§Y¡YÓ/ˆŒ à � ‰ �T—Y‘Y×%Ñ% l°IÓ>ÄÑDÕErGcó,•URS:Xa*URRXR5UlU=R[ U5- slURS:waUR RU5nURU5 g)z&Write string s to the stream. rÊrÏN) rÕrØrÚrÛrÖr?ráÚcompressrørÃs rErvÚ _Stream.writeÌse€ð �=‰=˜DÓ Ø—y‘y—‘ q¯(©(Ó3ˆDŒHØ �Š”C˜“FÑ�Ø �=‰=˜EÓ !Ø—‘×!Ñ! !Ó$ˆAØ � ‰ �Q�rGcó`•U=RU- sl[UR5UR:”avURR URSUR5 URURSUl[UR5UR:”aMugg)zJWrite string s to the stream if a whole new block is ready to be written. N)rlr?rzrƒrvrÃs rEÚ__writeÚ_Stream.__writeÖsr€ð �Š�A‰ �Ü�$—(‘(‹m˜dŸl™lÓ*Ø �L‰L× Ñ ˜tŸx™x¨ ¨¯©Ð6Ô 7Ø—x‘x § ¡   Ð.ˆDŒHô�$—(‘(‹m˜dŸl™l×*rGcó4•UR(agSUlURS:Xa=URS:wa-U=RURR 5- slURS:XaÄUR(a³UR RUR5 SUlURS:XawUR R[R"SUR55 UR R[R"SURS-55 UR(dUR R5 gg!UR(dUR R5 ff=f) zHClose the _Stream object. No operation should be done on it afterwards. NTr¬rÏrGrÊrîlÿÿ)r×r·rÕrlráÚflushrƒrvrjrörÛrÖrÑr¼r½s rEr¼Ú _Stream.closeßs €ð �;�;Ø àˆŒ ð %Ø�y‰y˜CÓ D§M¡M°UÓ$:Ø—’˜DŸH™HŸN™NÓ,Ñ,•à�y‰y˜CÓ D§H§HØ— ‘ ×"Ñ" 4§8¡8Ô,Ø�”Ø—=‘= DÓ(Ø—L‘L×&Ñ&¤v§{¢{°4¸¿¹Ó'BÔCØ—L‘L×&Ñ&¤v§{¢{°4¸¿¹ÀJÑ9NÓ'OÔPà×#×#Ø— ‘ ×"Ñ"Õ$ð$ø�4×#×#Ø— ‘ ×"Ñ"Õ$ð$ús ›D!E)Å).Fcóð•URRURR*5UlSUlUR S5S:wa [ S5eUR S5S:wa [S5e[UR S55nUR S5 US -(aI[UR S55S [UR S55--nUR U5 US -(a&UR S5nU(a U[:XaOM%US -(a&UR S5nU(a U[:XaOM%US-(aUR S5 g g )z:Initialize for reading a gzip compressed fileobj. rGr/s‹únot a gzip filer.ózunsupported compression methodéérRrQéN) rØÚ decompressobjrôrárßÚ _Stream__readrr Úordr@)rµÚflagÚxlenrAs rErÝÚ_Stream._init_read_gzõs,€ð—9‘9×*Ñ*¨D¯I©I×,?Ñ,?Ð+?Ó@ˆŒØˆŒ ð �;‰;�q‹>˜[Ó (ÜÐ-Ó.Ð .Ø �;‰;�q‹>˜WÓ $Ü"Ð#CÓDÐ Dä�4—;‘;˜q“>Ó"ˆØ � ‰ �AŒà �!�8Ü�t—{‘{ 1“~Ó&¨¬s°4·;±;¸q³>Ó/BÑ)BÑBˆDØ �K‰K˜Ô Ø �!�8ØØ—K‘K “N�Þ˜A¤›HØñð �"�9ØØ—K‘K “N�Þ˜A¤›HØñð �!�8Ø �K‰K˜�Nð rGcó•UR$)z3Return the stream's file pointer position. )rÖr½s rEÚtellÚ _Stream.tells €ð�x‰xˆrGcó*•XR- S:¼aw[XR- UR5up#[U5H'nUR UR5nU(aM' O UR U5 UR$[ S5e)zESet the stream's file pointer to pos. Negative seeking is forbidden. rz seeking backwards is not allowed)rÖrtrzrWrur )rµrÖr{r|r\Údatas rEÚseekÚ _Stream.seeksz€ð —‘‰>˜QÓ Ü & s¯X©X¡~°t·|±|Ó DÑ ˆFܘ6–]�Ø—y‘y §¡Ó.�ß�tÙñ#ð �I‰I�iÔ ð�x‰xˆôÐ@ÓAÐ ArGcód•URU5nU=R[U5- slU$)z5Return the next size number of bytes from the stream.)Ú_readrÖr?)rµr2rls rEruÚ _Stream.read(s)€ð�j‰j˜ÓˆØ �Š”C˜“HÑ�؈ rGcó@•URS:XaURU5$[UR5nUR/nX!:a”UR(aURnSUlO-UR R UR5nU(dOBURRU5nURU5 U[U5- nX!:aM”SRU5nX1SUlUSU$!URan[S5UeSnAff=f)z+Return size bytes from the stream. rÏrGzinvalid compressed dataN)rÕr r?rßrlrƒrurzráÚ decompressryrr�r‚)rµr2ÚcÚtrlÚes rErÚ _Stream._read/s÷€ð �=‰=˜EÓ !Ø—;‘;˜tÓ$Ð $ä �— ‘ ‹NˆØ �Y‰YˆKˆØ‹hà�x�xØ—h‘h�Ø�•à—l‘l×'Ñ'¨¯ © Ó5�ÞØð BØ—h‘h×)Ñ)¨#Ó.�ð �H‰H�SŒMØ ”�S“‰MˆAð�hð �H‰H�Q‹KˆØ�e�HˆŒ Ø��$ˆxˆøð —>‘>ó BÜÐ 9Ó:ÀÐAûð BúsÂC<Ã<DÄ DÄDcó4•[UR5nUR/nX!:aSURRUR5nU(dO&UR U5 U[U5- nX!:aMSSR U5nX1SUlUSU$)z`Return size bytes from stream. If internal buffer is empty, read another block from the stream. rGN)r?rlrƒrurzr�r‚)rµr2rrrls rEÚ__readÚ_Stream.__readJsƒ€ô �—‘‹MˆØ �X‰XˆJˆØ‹hØ—,‘,×#Ñ# D§L¡LÓ1ˆCÞØØ �H‰H�SŒMØ ”�S“‰MˆAð �hð �H‰H�Q‹KˆØ�U�8ˆŒØ��$ˆxˆrG)rÑrlrzr×rárÕrÛrßryrƒr·r¶rÖrØN)r)r“r”r•r–r—r¸rërÞrvrør¼rÝrrrurr r˜r‘rGrErÆrÆdsF†ñ òEòNòFò"ò/ò%ò,ò>ô òòõ6rGrÆcó0•\rSrSrSrSrSrSrSrSr g) rÒi[zhSmall proxy class that enables transparent compression detection for the Stream interface (mode 'r|*'). cóX•XlURR[5Ulgr»)rƒruÚ BLOCKSIZErl)rµrƒs rEr¸Ú_StreamProxy.__init__`s€ØŒ Ø—<‘<×$Ñ$¤YÓ/ˆ�rGcóP•URRUlUR$r»)rƒrurlrÀs rEruÚ_StreamProxy.readds€Ø—L‘L×%Ñ%ˆŒ Ø�x‰xˆrGcóÖ•URRS5(agURSSS:XaURSSS:Xag URRS 5(ag g ) Ns‹rÊrésBZhr é s1AY&SYrË)s]€sý7zXZrÍrÏ)rlÚ startswithr½s rErÓÚ_StreamProxy.getcomptypehs\€Ø �8‰8× Ñ ˜× /Ñ /ØØ �X‰X�a˜ˆ]˜fÓ $¨¯©°!°B¨¸9Ó)DØØ �X‰X× Ñ Ð!C× DÑ DØàrGcó8•URR5 gr»)rƒr¼r½s rEr¼Ú_StreamProxy.closers€Ø � ‰ ×ÑÕrG)rlrƒruN) r“r”r•r–r—r¸rurÓr¼r˜r‘rGrErÒrÒ[s†ñò0òòõrGrÒcó†•\rSrSrSrSSjrSr\S5rSr Sr S r S r \ R4S jrSS jrS rSrSrg)Ú _FileInFileiyzmA thin wrapper around an existing file object that provides a part of its data as an individual file object. Ncó¶•XlX lX0lSUlX@lSUlUcSU4/nSUl/UlSnURnUHQup#X&:”aURRSXbS45 URRSX"U-U45 Xs- nX#-nMS X`R:a)URRSX`RS45 gg)NrFT) rƒÚoffsetr2Úpositionr¶r×Ú map_indexÚmapr�)rµrƒr5r2r¶Ú blockinfoÚlastposÚrealposs rEr¸Ú_FileInFile.__init__sр، ØŒ ØŒ ؈Œ ØŒ ؈Œ à Ñ Ø˜T˜˜ ˆIðˆŒØˆŒØˆØ—+‘+ˆÛ%‰LˆFØÓØ—‘—‘ ¨¸Ð >Ô?Ø �H‰H�O‰O˜T 6°D©=¸'ÐBÔ CØ ‰OˆGØ‘mŠGñ &ð —Y‘YÓ Ø �H‰H�O‰O˜U G¯Y©Y¸Ð=Õ >ð rGcó•gr»r‘r½s rErÚ_FileInFile.flush˜s€Ø rGcó•g)NÚrbr‘r½s rEr·Ú_FileInFile.mode›s€àrGcó•g©NTr‘r½s rEÚreadableÚ_FileInFile.readableŸs€ØrGcó•g©NFr‘r½s rEÚwritableÚ_FileInFile.writable¢s€ØrGcó6•URR5$r»)rƒÚseekabler½s rErKÚ_FileInFile.seekable¥s€Ø�|‰|×$Ñ$Ó&Ð&rGcó•UR$)z*Return the current file position. )r6r½s rErÚ_FileInFile.tell¨ó€ð�}‰}ÐrGcó8•U[R:Xa1[[US5UR5UlUR $U[R :XaeUS:a*[UR U-S5UlUR $[UR U-UR5UlUR $U[R:Xa>[[URU-UR5S5UlUR $[S5e)z(Seek to a position in the file. rzInvalid argument) ÚioÚSEEK_SETr€Úmaxr2r6ÚSEEK_CURÚSEEK_ENDr=)rµr6Úwhences rErÚ_FileInFile.seek­sà€ð ”R—[‘[Ó Ü¤ H¨aÓ 0°$·)±)Ó<ˆDŒMð�}‰}Ðð”r—{‘{Ó "ؘ!‹|Ü # D§M¡M°HÑ$<¸aÓ @�” ð�}‰}Ðô !$ D§M¡M°HÑ$<¸d¿i¹iÓ H�• ð �}‰}Ðð ”r—{‘{Ó "ܤ D§I¡I°Ñ$8¸$¿)¹)Ó DÀaÓHˆDŒMð�}‰}ÐôÐ/Ó0Ð 0rGcóè•UcURUR- nO"[XRUR- 5nSnUS:”Ga)URURup4pVX@Rs=::aU:aO OOAU=RS- slUR[ UR5:XaSUlMw[XUR- 5nU(adUR RX`RU- -5 UR RU5n[ U5U:wa [S5eX(- nO U[U-- nX-nU=RU- slUS:”aGM)U$)z!Read data from the file. rGrr.rq) r2r6r€r8r7r?rƒrrurr@) rµr2rlrÚstartÚstopr5rBr}s rEruÚ_FileInFile.read½s4€ð ‰<Ø—9‘9˜tŸ}™}Ñ,‰Dä�tŸY™Y¨¯©Ñ6Ó7ˆDàˆØ�QŒhØØ,0¯H©H°T·^±^Ñ,DÑ)�˜TØŸM™MÕ0¨DÖ0Øà—N’N aÑ'•NØ—~‘~¬¨T¯X©X«Ó6Ø)*˜œñô˜ d§m¡mÑ3Ó4ˆFÞØ— ‘ ×!Ñ! &¯M©M¸EÑ,AÑ"BÔCØ—L‘L×%Ñ% fÓ-�Ü�q“6˜VÓ#Ü#Ð$<Ó=Ð=Ø‘‘à”s˜V‘|Ñ#�Ø ‰NˆDØ �MŠM˜VÑ #�Mð'�QŽhð(ˆ rGcóf•UR[U55nX!S[U5&[U5$r»)rur?)rµr}rls rEÚreadintoÚ_FileInFile.readintoÜs*€Ø�i‰iœ˜A›ÓˆØˆ)Œ3ˆs‹8ˆ Ü�3‹xˆrGcó•SUlgrC)r×r½s rEr¼Ú_FileInFile.closeás €Øˆ� rG)r×rƒr8r7r¶r5r6r2r»)r“r”r•r–r—r¸rÚpropertyr·rDrHrKrrQrRrrur]r¼r˜r‘rGrEr3r3ysV†ñô ?ò2 ðñóðòòò'òð %'§K¡Kôô ò>õ rGr3có(^•\rSrSrU4SjrSrU=r$)Ú ExFileObjectiåcó¦>•[URURURURUR 5n[ TU]U5 gr»)r3rƒÚ offset_datar2r¶ÚsparseÚsuperr¸)rµÚtarfileÚtarinforƒÚ __class__s €rEr¸ÚExFileObject.__init__çs;ø€Ü˜gŸo™o¨w×/BÑ/BØ— ‘ ˜gŸl™l¨G¯N©Nó<ˆä ‰Ñ˜Õ!rGr‘©r“r”r•r–r¸r˜Ú __classcell__©rjs@rErcrcås ø†÷"ó"rGrccó•\rSrSrSrg)riòr‘N)r“r”r•r–r˜r‘rGrErròs†ÚrGrcó(^•\rSrSrU4SjrSrU=r$)riõcóN>•Xl[TU] SUR<S35 g)Nzmember z has an absolute path©rirgr¸r¶©rµrirjs €rEr¸ÚAbsolutePathError.__init__ös$ø€ØŒ Ü ‰Ñ˜7 7§<¡<Ñ"2Ð2GÐHÕIrG©rirlrns@rErrõsø†÷JóJrGrcó(^•\rSrSrU4SjrSrU=r$)riúcóf>•XlX l[TU] UR<SU<S3S-5 g)Nz would be extracted to ú, ú which is outside the destination©riÚ_pathrgr¸r¶©rµrir0rjs €rEr¸Ú OutsideDestinationError.__init__ûs7ø€ØŒ ØŒ Ü ‰Ñ˜GŸL™LÑ+Ð+BÀ4Á(È"ÐMØ=ñ>õ ?rG©r{rirlrns@rErrúó ø†÷?ó?rGrcó(^•\rSrSrU4SjrSrU=r$)ricóL>•Xl[TU] UR<S35 g)Nz is a special filerrrss €rEr¸ÚSpecialFileError.__init__s"ø€ØŒ Ü ‰Ñ˜GŸL™LÑ+Ð+=Ð>Õ?rGrurlrns@rErrsø†÷@ó@rGrcó(^•\rSrSrU4SjrSrU=r$)ricóL>•Xl[TU] UR<S35 g)Nz is a link to an absolute pathrrrss €rEr¸ÚAbsoluteLinkError.__init__s"ø€ØŒ Ü ‰Ñ˜GŸL™LÑ+Ð+IÐJÕKrGrurlrns@rErrsø†÷LóLrGrcó(^•\rSrSrU4SjrSrU=r$)ri cóf>•XlX l[TU] UR<SU<S3S-5 g)Nz would link to rxryrzr|s €rEr¸Ú$LinkOutsideDestinationError.__init__ s6ø€ØŒ ØŒ Ü ‰Ñ˜GŸL™LÑ+¨?¸4¹(À"ÐEØ=ñ>õ ?rGr~rlrns@rErr rrGrcó(^•\rSrSrU4SjrSrU=r$)ricój>•XlX l[TU] SUR<S3SU<S3-5 g)Nzlink z would be extracted as a zcopy of z, which was rejectedrzr|s €rEr¸ÚLinkFallbackError.__init__s?ø€ØŒ ØŒ Ü ‰Ñ˜5 §¡Ñ 0Ð0IÐJØ% d¡XÐ-AÐBñCõ DrGr~rlrns@rErrsø†÷DóDrGrcóØ•0nURn[RRU[RRS9nUR S[R 45(a0URRS[R -5=oCS'[RRU5(a [U5e[RR[RRX5[RRS9n[RRXQ/5U:wa [X5eURnUb–US-nU(awUR5(dUR5(aUS-(dUS-nUS-nO8UR!5(dUR#5(aSnO [%U5eX`R:waXcS'U(GañUR&bSUS 'UR(bSUS 'UR*bSUS 'UR,bSUS 'UR5(dUR#5(Ga~[RRUR.5(a [1U5eXQ:Xa [X5e[RR3UR.5nXpR.:waXsS 'UR#5(a`[RR5UR7S[R -55n[RRXU5nO[RRX5n[RRU[RRS9n[RRXQ/5U:wa [9X5eU$)N)rTÚ/r¶iíé@i¶ÿÿÿé€r·r4r5r6r7Úlinkname)r¶r®r0ÚrealpathÚ ALLOW_MISSINGr.ÚsepÚlstripÚisabsrr‚Ú commonpathrr·ÚisregÚislnkÚisdirÚissymrr4r5r6r7r�rÚnormpathÚdirnameÚrstripr) ÚmemberÚ dest_pathÚfor_dataÚ new_attrsr¶Ú target_pathr·Ú normalizedÚlink_dirs rEÚ_get_filtered_attrsr¥sހ؀IØ �;‰;€DÜ—‘× Ñ  ´2·7±7×3HÑ3HÐ ÐI€Ið ‡�˜œRŸV™V�}×%Ñ%Ø#)§;¡;×#5Ñ#5°c¼B¿F¹F±lÓ#CÐCˆ˜Ñ Ü ‡w�w‡}�}�T×Ñô  Ó'Ð'ä—'‘'×"Ñ"¤2§7¡7§<¡<° Ó#@Ü*,¯'©'×*?Ñ*?ð#ðA€Kä ‡w�w×ј;Ð2Ó3°yÓ@Ü% fÓ:Ð:à �;‰;€DØ Ñà�e‰|ˆÞ à�|‰|�~‰~ §¡§¡Ø˜e—|à˜F‘N�Dà˜‘ ‘Ø—‘—‘ 6§<¡<§>¡>à‘ô' vÓ.Ð.Ø —;‘;Ó Ø $�fÑ ßà �:‰:Ñ !Ø#ˆI�eÑ Ø �:‰:Ñ !Ø#ˆI�eÑ Ø �<‰<Ñ #Ø!%ˆI�gÑ Ø �<‰<Ñ #Ø!%ˆI�gÑ à �<‰<�>‰>˜VŸ\™\Ÿ^š^Ü�w‰w�}‰}˜VŸ_™_×-Ñ-Ü'¨Ó/Ð/ðÓ'Ü-¨fÓBÐBÜŸ™×)Ñ)¨&¯/©/Ó:ˆJØŸ_™_Ó,Ø(2˜*Ñ%Ø�|‰|�~‰~ôŸ7™7Ÿ?™?¨4¯;©;°s¼R¿V¹V±|Ó+DÓE�Ü Ÿg™gŸl™l¨9À ÓK‘ ä Ÿg™gŸl™l¨9ÓA� ÜŸ'™'×*Ñ*¨;Ü24·'±'×2GÑ2Gð+ðIˆKä�w‰w×!Ñ! ;Ð":Ó;¸yÓHÜ1°&ÓFÐFØ ÐrGcó•U$r»r‘)ržrŸs rErrhs€Ø €MrGcóX•[XS5nU(aUR"S0UDSS0D6$U$)NFÚdeepr‘©r¥rñ©ržrŸr¡s rErrks-€Ü# F°uÓ=€IÞØ�~Š~Ñ6  Ñ6°Ò6Ð6Ø €MrGcóX•[XS5nU(aUR"S0UDSS0D6$U$)NTr¨Fr‘r©rªs rErrqs-€Ü# F°tÓ<€IÞØ�~Š~Ñ6  Ñ6°Ò6Ð6Ø €MrG)Ú fully_trustedrÏrs([0-9]{1,20}) c ó´•\rSrSrSr\"S[0SS_SS_SS_S S _S S _S S_SS_SS_SS_SS_SS_SS_SS_SS_SS _S!S"_S#S$_S%S&_S'S&_S(S&_6rS\S)jr\S*5r \ RS+5r \S,5r \ RS-5r \S.5r \ RS/5r S0r \\\\\\\\S1\S2. S3jrS4r\\S54S6jrS7rS8rS9r\S:5rS;r\S<5r\S=5r\S>5r\S?5r\S@5r\S1SA.SBj5r \SC5r!\S1SA.SDj5r"SEr#SFr$SGr%SHr&SIr'SJr(SKr)SLr*SMr+SNr,SOr-SPr.SQr/SRr0SSr1STr2SUr3SVr4SWr5SXr6SYr7SZr8g&)]ri‡zèInformational class which holds the details about an archive member given by a tar header block. TarInfo objects are returned by TarFile.getmember(), TarFile.getmembers() and TarFile.gettarinfo() and are usually created internally. r¶zName of the archive member.r·zPermission bits.r4z6User ID of the user who originally stored this member.r5z7Group ID of the user who originally stored this member.r2zSize in bytes.r3zTime of last modification.ÚchksumzHeader checksum.Útypez—File type. type is usually one of these constants: REGTYPE, AREGTYPE, LNKTYPE, SYMTYPE, DIRTYPE, FIFOTYPE, CONTTYPE, CHRTYPE, BLKTYPE, GNUTYPE_SPARSE.r�zcName of the target file name, which is only present in TarInfo objects of type LNKTYPE and SYMTYPE.r6z User name.r7z Group name.ÚdevmajorzDevice major number.ÚdevminorzDevice minor number.r5zThe tar header starts here.rezThe file's data starts here.Ú pax_headerszMA dictionary containing key-value pairs of an associated pax extended header.rfzSparse member information.Ú_tarfileNÚ_sparse_structsÚ _link_targetcóø•XlSUlSUlSUlSUlSUlSUl[UlSUl SUl SUl SUl SUl SUlSUlSUl0Ulg)zEConstruct a TarInfo object. name is the optional name of the member. i¤rrÉN)r¶r·r4r5r2r3r®ÚREGTYPEr¯r�r6r7r°r±r5rerfr²©rµr¶s rEr¸ÚTarInfo.__init__®s{€ðŒ ؈Œ ؈ŒØˆŒØˆŒ ؈Œ ؈Œ ܈Œ ؈Œ ؈Œ ؈Œ ؈Œ ؈Œ àˆŒ ؈ÔàˆŒ ؈ÕrGcóL•SSKnURS[SS9 UR$©NrzhThe undocumented "tarfile" attribute of TarInfo objects is deprecated and will be removed in Python 3.16r/©Ú stacklevel©ÚwarningsÚwarnÚDeprecationWarningr³)rµr¿s rErhÚTarInfo.tarfileÆs-€ãØ� ‰ ð Aä ¨1ð ñ .ð�}‰}ÐrGcóB•SSKnURS[SS9 Xlgr»r¾)rµrhr¿s rErhrÂÏs(€ãØ� ‰ ð Aä ¨1ð ñ .ð � rGcó•UR$)z(In pax headers, "name" is called "path".©r¶r½s rEr0Ú TarInfo.pathØs€ð�y‰yÐrGcó•Xlgr»rÅr¸s rEr0rÆÝs€à� rGcó•UR$)z0In pax headers, "linkname" is called "linkpath".©r�r½s rEr1ÚTarInfo.linkpathárOrGcó•Xlgr»rÉ)rµr�s rEr1rÊæs€à � rGcó`•SURRUR[U54-$)Nz<%s %r at %#x>)rjr“r¶Úidr½s rEÚ__repr__ÚTarInfo.__repr__ês&€Ø 4§>¡>×#:Ñ#:¸4¿9¹9ÄRÈÃXÐ"NÑNÐNrGT) r¶r3r·r�r4r5r6r7r¨Ú_KEEPc ó•U (a[R"U5n O[R"U5n XLaXlX*LaX+lX:LaX;lXJLaXKlXZLaX[lXjLaXklXzLaX{lXŠLaX‹l U $)zGReturn a deep copy of self with the given attributes replaced. ) ÚcopyÚdeepcopyr¶r3r·r�r4r5r6r7) rµr¶r3r·r�r4r5r6r7r¨rÐÚresults rErñÚTarInfo.replaceís€ö Ü—]’] 4Ó(‰Fä—Y’Y˜t“_ˆFØ Ò ØŒKØ Ò Ø ŒLØ Ò ØŒKØ Ò Ø&ŒOØ Ò ØŒJØ Ò ØŒJØ Ò Ø ŒLØ Ò Ø ŒL؈ rGcóº•URcSnOURS-nURUURURURUR UR URURURURURURS. nUS[:Xa&USRS5(d US==S- ss'U$)z9Return the TarInfo's attributes as a dictionary. Néÿ) r¶r·r4r5r2r3r®r¯r�r6r7r°r±r¯r¶r�)r·r¶r4r5r2r3r®r¯r�r6r7r°r±ÚDIRTYPErù)rµr·Úinfos rEÚget_infoÚTarInfo.get_info s´€ð �9‰9Ñ Ø‰Dà—9‘9˜vÑ%ˆDàŸ ™ ØØŸ™ØŸ™ØŸ ™ ØŸ ™ ØŸ ™ ØŸ ™ ØŸ ™ ØŸ ™ ØŸ ™ ØŸ ™ ØŸ ™ ñ ˆð �‰<œ7Ó "¨4°©<×+@Ñ+@À×+EÑ+EØ �‹L˜CÑ ‹Làˆ rGÚsurrogateescapecó2•UR5nUR5HupVUbM [SU-5e U[:XaUR XBU5$U[ :XaUR XBU5$U[:XaURXB5$[S5e)zÚ LENGTH_LINKr=Ú LENGTH_NAMEÚ_posix_split_nameÚ_create_headerr)rµrÙrCrDs rErßÚTarInfo.create_ustar_header6s‹€ô$ˆˆW‰ ä ˆt�JÑ×&Ñ& xÓ8Ó 9¼KÓ GÜÐ3Ó4Ð 4ä ˆt�F‰|×"Ñ" 8Ó4Ó 5¼ Ó CØ+/×+AÑ+AÀ$ÀvÁ,ÐPXÓ+aÑ (ˆD�‰N˜D ™Là×"Ñ" 4¬°xÓHÐHrGcóN•[US'Sn[USRX#55[:”aX@R US[ X#5- n[USRX#55[ :”aX@R US[X#5- nX@RU[X#5-$)z:Return the object as a GNU header block sequence. rærGr�r¶) Ú GNU_MAGICr?r>réÚ_create_gnu_long_headerÚGNUTYPE_LONGLINKrêÚGNUTYPE_LONGNAMErìr)rµrÙrCrDrls rEràÚTarInfo.create_gnu_headerCsž€ô"ˆˆW‰ àˆÜ ˆt�JÑ×&Ñ& xÓ8Ó 9¼KÓ GØ ×/Ñ/°°ZÑ0@ÔBRÐT\ÓeÑ eˆCä ˆt�F‰|×"Ñ" 8Ó4Ó 5¼ Ó CØ ×/Ñ/°°V± Ô>NÐPXÓaÑ aˆCà×(Ñ(¨¬z¸8ÓLÑLÐLrGcóŠ•[US'URR5nSS[4SS[4SS4H;upEnXS;aM XR SS 5 [X5U:”dM5XX5'M= S HuupGS nXn [U [5n U (a [U 5OU n S U s=::a S US- -:d O S X'SnO U (aX±U'SnU(dMaXC;dMh[U 5X4'Mw U(aURU[U5n OSn XÀRU[SS5-$![ a XX5'GM f=f)z•Return the object as a ustar header block. If it cannot be represented this way, prepend a pax extended header sequence with supplement information. rær¶r0r�r1)r6r6é )r7r7rõrSrT))r4rQ)r5rQ)r2é )r3röFrrQr.TrGrñ)rèr²rÒrêrér>ÚUnicodeEncodeErrorr?Ú isinstanceÚfloatÚroundÚstrÚ_create_pax_generic_headerÚXHDTYPErìr) rµrÙrCr²r¶ÚhnamerBrbÚ needs_paxÚvalÚ val_is_floatÚval_intrls rEráÚTarInfo.create_pax_headerQsb€ô $ˆˆW‰ Ø×&Ñ&×+Ñ+Ó-ˆ 𠘤Ð-° ¸JÌ Ð/TØ&Ð(>ó$@Ñ ˆD˜ðÓ#áð Ø‘ ×!Ñ! '¨8Ô4ô �4‘:‹ Õ'Ø%)¡Z� Ó"ñ!$@ó(R‰LˆD؈Ià‘*ˆCÜ% c¬5Ó1ˆLÞ$0”e˜C”j°cˆGؘÕ3 !¨°© Ñ"3Õ3à�‘ Ø ‘ Þð%�T‘ Ø � ÷ˆy˜TÕ4Ü$'¨£H� Ó!ñ%Rö* Ø×1Ñ1°+¼wÈÓQ‰CàˆCà×(Ñ(¨¬|¸WÀiÓPÑPÐPøôG&ó Ø%)¡Z� Ñ"Ûð úsÁD-Ä-EÅEcó0•URU[S5$)zAReturn the object as a pax global header block sequence. r;)rüÚXGLTYPE)Úclsr²s rEÚcreate_pax_global_headerÚ TarInfo.create_pax_global_header‹s€ð×-Ñ-¨k¼7ÀGÓLÐLrGcóT•URS5n[S[U55HtnSRUSU5nSRXES5n[UR X#55[ ::dMN[UR X#55[ ::dMr Xa4$ [S5e)zBSplit a name longer than 100 chars into a prefix and a name part. r�r.Nzname is too long)ÚsplitrWr?r‚r>Ú LENGTH_PREFIXrêr=)rµr¶rCrDÚ componentsr\rçs rErëÚTarInfo._posix_split_name‘s“€ð—Z‘Z “_ˆ Ü�qœ#˜j›/Ö*ˆAØ—X‘X˜j¨¨!˜nÓ-ˆFØ—8‘8˜J r˜NÓ+ˆDÜ�6—=‘= Ó2Ó3´}ÕDܘŸ ™  HÓ5Ó6¼+ÕEØðˆ|Ðñ+ôÐ/Ó0Ð 0rGcój•URS5[[4;nU(a;[URSS5SU5n[URSS5SU5nO[ SSX#5n[ SSX#5nURS[ 5nUc [ S5e[ URS S5S X#5[URS S5S -SU5[URS S5SU5[URSS5SU5[URSS5SU5[URSS5SU5SU[ URSS5S X#5URS[5[ URSS5SX#5[ URSS5SX#5UU[ URSS5SX#5/n[R"S[-SRU55n [U [*S5Sn U SS[SU -S5-U SS-n U $) zqReturn a header block. info is a dictionary with file information, format must be one of the *_FORMAT constants. r¯r°rrQr±rÉNzTarInfo.type must not be Noner¶rr·r×r4r5r2rör3s r�rær6rõr7rçrz%dsrGi”þÿÿz%06orSi›þÿÿ)ÚgetÚCHRTYPEÚBLKTYPErerFr·r=rèrjrör'r‚ror_) rÙrcrCrDÚhas_device_fieldsr°r±ÚfiletypeÚpartsrlr®s rErìÚTarInfo._create_header¡s€ð !ŸH™H VÓ,´¼'Ð0BÑBÐÞ Ü˜4Ÿ8™8 J°Ó2°A°vÓ>ˆHܘ4Ÿ8™8 J°Ó2°A°vÓ>‰Hä˜2˜q (Ó3ˆHܘ2˜q (Ó3ˆHð—8‘8˜F¤GÓ,ˆØ Ñ ÜÐ<Ó=Ð =ô �—‘˜ Ó$ c¨8Ó <Ü �—‘˜ Ó# fÑ,¨a°Ó 8Ü �—‘˜ Ó" A vÓ .Ü �—‘˜ Ó" A vÓ .Ü �—‘˜ Ó# R¨Ó 0Ü �—‘˜ !Ó$ b¨&Ó 1Ø Ø Ü �—‘˜ RÓ(¨#¨xÓ @Ø �H‰H�WœkÓ *Ü �—‘˜ "Ó% r¨8Ó <Ü �—‘˜ "Ó% r¨8Ó <Ø Ø Ü �—‘˜ 2Ó&¨¨XÓ >ð ˆô$�kŠk˜%¤)Ñ+¨S¯X©X°e«_Ó=ˆÜ˜c¤9 * +Ð.Ó/°Ñ2ˆØ�%�4ˆjœ5 ¨FÑ!2°GÓ<Ñ<¸sÀ4À5¸zÑIˆØˆ rGcón•[[U5[5upUS:”aU[U- [-- nU$)zQReturn the string payload filled with zero bytes up to the next 512 byte border. r)rtr?r'r@)Úpayloadr{r|s rEÚ_create_payloadÚTarInfo._create_payloadËs7€ô #¤3 w£<´Ó;ÑˆØ �q‹=Ø œ  IÑ-´Ñ4Ñ 4ˆG؈rGcóÈ•URX45[-n0nSUS'X%S'[U5US'[US'UR U[ X45UR U5-$)zAReturn a GNUTYPE_LONGNAME or GNUTYPE_LONGLINK sequence for name. z ././@LongLinkr¶r¯r2ræ)r>r@r?rïrìrr)rr¶r¯rCrDrÙs rErðÚTarInfo._create_gnu_long_headerÕsn€ð �{‰{˜8Ó,¬sÑ2ˆàˆØ&ˆˆV‰ ؈V‰ ܘ4“yˆˆV‰ Ü!ˆˆW‰ ð×!Ñ! $¬ °hÓGØ×#Ñ# DÓ)ñ*ð *rGcó²•SnUR5HupVURSS5 M SnU(aUS- nUR5H§upVURS5nU(aURUS5nOURS5n[U5[U5-S-nS =pšU[[ U 55-n Xš:XaOU n M!U[ [ U 5S 5S -U-S -U-S -- nM© 0n SU S'X+S'[U5U S'[ U S'URU [S S5URU5-$![a Sn GM&f=f)zƒReturn a POSIX.1-2008 extended or global header sequence that contains a list of keyword, value pairs. The values must be strings. Fr;rTTrGs21 hdrcharset=BINARY rÜr,rrSó ó=ó z././@PaxHeaderr¶r¯r2rærñ) rÞr>r÷r?rûr_rèrìrr) rr²r¯rCÚbinaryÚkeywordrâÚrecordsÚlr[rLrÙs rErüÚ"TarInfo._create_pax_generic_headeræsw€ðˆØ)×/Ñ/Ö1‰NˆGð Ø— ‘ ˜W hÖ/ñ2ðˆÞ à Ð0Ñ 0ˆGà)×/Ñ/Ö1‰NˆGØ—n‘n WÓ-ˆGÞ🠙  XÐ/@ÓA‘àŸ ™  WÓ-�ä�G“ œs 5›zÑ)¨AÑ-ˆA؈IˆAØØœœC ›F› ‘O�Ø“6ØØ�ñ ð ”uœS ›V WÓ-°Ñ4°wÑ>ÀÑEÈÑMÐPUÑUÑ UŠGñ!2ð(ˆØ'ˆˆV‰ ؈V‰ ܘ7“|ˆˆV‰ Ü#ˆˆW‰ ð×!Ñ! $¬ °g¸yÓIØ×#Ñ# GÓ,ñ-ð -øôI&ó Ø�Üð ús™EÅ EÅEcó&•URXU5$)zªConstruct a TarInfo object from a 512 byte bytes object. To support the old v7 tar format AREGTYPE headers are transformed to DIRTYPE headers if their name ends in '/'. )Ú_frombuf)rrlrCrDs rEÚfrombufÚTarInfo.frombufs€ð�|‰|˜C¨6Ó2Ð2rG©Údircheckcóž•[U5S:Xa [S5e[U5[:wa [S5eUR [ 5[:Xa [ S5e[USS5nU[U5;a [S5eU"5n[USSX#5Ul [USS 5Ul [US S 5Ul [US S 5Ul[US S 5Ul[US S5UlXVlUSS Ul[US SX#5Ul[USSX#5Ul[USSX#5Ul[USS5Ul[USS5Ul[USSX#5nU(a?UR$[0:Xa+URR3S5(a [4UlUR$[6:XavSn/n [9S5H>n [XUS-5n [XS-US-5n U R=X¼45 US- nM@ [?US5n [USS5nX�U4Ul URC5(a URRES5Ul U(a+UR$[F;aUS-UR-Ul U$![:a  Mœf=f)a4Construct a TarInfo object from a 512 byte bytes object. If ``dircheck`` is set to ``True`` then ``AREGTYPE`` headers will be normalized to ``DIRTYPE`` if the name ends in a trailing slash. ``dircheck`` must be set to ``False`` if this function is called on a follow-up header such as ``GNUTYPE_LONGNAME``. rz empty headerztruncated headerzend of file headeré”éœz bad checksumrélété|éˆé�ii i)iIiQiYiôr�i‚r röéiâiãiï)$r?rŸr'r¡Úcountr@r£r]rorZrMr¶r·r4r5r2r3r®r¯r�r6r7r°r±ÚAREGTYPErùrØÚGNUTYPE_SPARSErWr=r�Úboolr´r™r�Ú GNU_TYPES)rrlrCrDr*r®ÚobjrçrÖÚstructsr\r5ÚnumbytesÚ isextendedÚorigsizes rEr&ÚTarInfo._frombuf"s“€ô ˆs‹8�q‹=Ü" >Ó2Ð 2Ü ˆs‹8”yÓ Ü&Ð'9Ó:Ð :Ø �9‰9”S‹>œYÓ &Ü Ð!5Ó6Ð 6ä�S˜˜S�\Ó"ˆØ œ cÓ*Ó *Ü$ ^Ó4Ð 4á‹eˆÜ�s˜1˜S�z 8Ó4ˆŒÜ�s˜3˜s�|Ó$ˆŒÜ�c˜#˜c�lÓ#ˆŒÜ�c˜#˜c�lÓ#ˆŒÜ�s˜3˜s�|Ó$ˆŒÜ˜˜C ˜ Ó%ˆŒ ØŒ Ø�s˜3�<ˆŒÜ˜3˜s 3˜<¨Ó:ˆŒ ܘ˜C ˜  hÓ7ˆŒ ܘ˜C ˜  hÓ7ˆŒ ܘ3˜s 3˜<Ó(ˆŒ ܘ3˜s 3˜<Ó(ˆŒ Ü�S˜˜S�\ 8Ó4ˆö ˜Ÿ™¤HÓ,°·±×1BÑ1BÀ3×1GÑ1G܈CŒHð �8‰8”~Ó %؈C؈Gܘ1–X�ðÜ  ¨¨r©Ð!2Ó3�FÜ" 3¨R¡x°°b±Ð#9Ó:�Hð—‘ Ð1Ô2Ø�r‘ ’ñô˜c #™h›ˆJܘ3˜s 3˜<Ó(ˆHØ#*¸Ð"AˆCÔ ð �9‰9�;‰;Ø—x‘x—‘ sÓ+ˆCŒHö �c—h‘h¤iÓ/Ø ‘| c§h¡hÑ.ˆCŒH؈ øô"óÛðúsÇ1#J=Ê= K Ë K có$•URU5$)z‘> 'Ó*Ð *à×%Ñ% gÓ.Ð .rGcóÀ•URR5UlURnUR5(dUR[ ;aX R UR5- nX!lURURURUR5 UR5(a URRS5UlU$)zSProcess a builtin type or an unknown type which will be treated as a regular file. r�)rƒrrer—r¯ÚSUPPORTED_TYPESÚ_blockr2r5Ú_apply_pax_infor²rCrDr™r¶r�)rµrhr5s rErKÚTarInfo._proc_builtin�s €ð#Ÿ?™?×/Ñ/Ó1ˆÔØ×!Ñ!ˆØ �:‰:�<‰<˜4Ÿ9™9¬OÓ;à —k‘k $§)¡)Ó,Ñ ,ˆFØŒð ×јW×0Ñ0°'×2BÑ2BÀGÇNÁNÔSð �:‰:�<‰<ØŸ ™ ×(Ñ(¨Ó-ˆDŒIàˆ rGcóF•[URURUR55nUR USS9nURUlUR[:Xa&[X!RUR5UlO9UR[:Xa%[X!RUR5UlUR#5(a URR%S5UlU$![ an[ [U55SeSnAff=f)z@Process the blocks that hold a GNU longname or longlink member. Fr)Nr�)r†rƒrOr2r@r r¦rûr5r¯ròrMrCrDr¶rñr�r™Ú removesuffix)rµrhrlÚnextr s rErGÚTarInfo._proc_gnulong¥sÝ€ô˜Ÿ™¨$¯+©+°d·i±iÓ*@ÓAˆð :Ø×$Ñ$ W°uÐ$Ð=ˆDð —k‘kˆŒ Ø �9‰9Ô(Ó (ܘC×!1Ñ!1°7·>±>ÓBˆD�IØ �Y‰YÔ*Ó *Ü ×%5Ñ%5°w·~±~ÓFˆDŒMð �:‰:�<‰<ØŸ ™ ×.Ñ.¨sÓ3ˆDŒIàˆ øô!ó :Ü'¬¨A«Ó/°TÐ 9ûð :ús±C<Ã< D ÄDÄD có0•URup#nU?U(a“URR[5nSn[ S5HLn[ XVUS-5n[ XVS-US-5n U(aU (aURX‰45 US- nMN [US5nU(aM“X l URR5Ul URURUR5-UlX@l U$![ a  Mf=f)z8Process a GNU sparse header plus extra headers. rérör3iø)r´rƒrur'rWr]r=r�r7rfrrerOr2r5) rµrhr:r<r=rlrÖr\r5r;s rErHÚTarInfo._proc_sparseÀs€ð)-×(<Ñ(<Ñ%ˆ˜XØ Ð öØ—/‘/×&Ñ&¤yÓ1ˆC؈Cܘ2–Y�ðÜ  ¨¨r©Ð!2Ó3�FÜ" 3¨R¡x°°b±Ð#9Ó:�HöžhØ—N‘N FÐ#5Ô6Ø�r‘ ’ñô˜c #™h›ˆJ÷ˆjðŒ à"Ÿ?™?×/Ñ/Ó1ˆÔØ×)Ñ)¨D¯K©K¸¿ ¹ Ó,BÑBˆŒØŒ ؈ øô"óÛðúsÁ #DÄ DÄDcó<•[URURUR55nUR[ :Xa UR nOUR R5nSnSn/n[U5U:”Ga(X$S:wGa[RX$5=n(d [S5e[URS55nUS:a [S5eXH-[U5:”a [S5eURS5U-S- n X'R!S5S-U n U R#S5up¼n U (aU S:wdX)S:wa [S5eUR%X‹U 45 U S:XaUcU S :Xa UR&nOS nXH- n[U5U:”a X$S:waGMUcS nUHxup‹n UR)U S S UR*5nU[,;a(UR)XÕUR&UR*5nOUR)U S S UR*5nXóU'Mz UR/US S 9nS U;aUR7UU5 OUSU;aUR9UU5 O[@4;a—URCX1R&UR*5 URDUl"SU;aZURFnURI5(dUR[J;aUURUR5- nUUl"U$![a [S5ef=f![0an[3[5U55SeSnAff=f)zCProcess an extended or global header as described in POSIX.1-2008. rNrVr.érr-s hdrcharsetsBINARYr;Fr)úGNU.sparse.mapúGNU.sparse.sizezGNU.sparse.majorÚ1zGNU.sparse.minorrUr2)&r†rƒrOr2r¯rr²rÒr?Ú_header_length_prefix_reÚmatchrZrXÚgroupr=rYrŠÚ partitionr�rCÚ_decode_pax_fieldrDÚPAX_NAME_FIELDSr@r r¦rûÚ_proc_gnusparse_01Ú_proc_gnusparse_00rÚ_proc_gnusparse_10rýrIrPr5rer—rN)rµrhrlr²rÖrCÚ raw_headersr_rBÚheader_value_end_offsetÚkeyword_and_valueÚ raw_keywordÚequalsÚ raw_valuer!rârTr r5s rErJÚTarInfo._proc_paxÜsp€ô ˜Ÿ™¨$¯+©+°d·i±iÓ*@ÓAˆð �9‰9œÓ Ø!×-Ñ-‰Kà!×-Ñ-×2Ñ2Ó4ˆKð ˆØˆØˆ Ü�#‹h˜Œn ¡¨TÔ!1Ü5×;Ñ;¸CÓEÐE�EÕEÜ(Ð)9Ó:Ð:ð ;ܘUŸ[™[¨›^Ó,�𠘋zÜ(Ð)9Ó:Ð:؉|œc #›hÓ&Ü(Ð)9Ó:Ð:à&+§k¡k°!£n°vÑ&=ÀÑ&AÐ #Ø #§I¡I¨a£L°1Ñ$4Ð5LÐ MÐ Ø->×-HÑ-HÈÓ-NÑ *ˆK ö &¨D£.°CÑ4PÐTXÓ4XÜ(Ð)9Ó:Ð:Ø × Ñ  °YÐ?Ô @ð˜mÓ+°Ñ0@Ø  Ó)Ø&×/Ñ/‘Hà&�Hà ‰MˆCôM�#‹h˜‹n ¡¨TÖ!1ðR Ñ ØˆHó/:Ñ *ˆF ð×,Ñ,¨[¸'À7Ø—N‘Nó$ˆGàœ/Ó)Ø×.Ñ.¨yÀG×DTÑDTØŸ™ó(‘ð×.Ñ.¨y¸'À7ØŸ™ó(�ð$)˜Ó ñ#/:ð( :Ø×$Ñ$ W°uÐ$Ð=ˆDð ˜{Ó *à × #Ñ # D¨+Õ 6à  +Ó -à × #Ñ # D¨+Õ 6à �_‰_Ð/Ó 0°CÓ 7¸K¿O¹OÐL^Ó<_ÐcfÓÑ.>ÀÇÁÔ OØŸ+™+ˆDŒKà˜Ó$ð×)Ñ)�Ø—:‘:—<‘< 4§9¡9´OÓ#CؘdŸk™k¨$¯)©)Ó4Ñ4�FØ!'�”àˆ øôyó ;Ü(Ð)9Ó:Ð:ð ;ûô|ó :Ü'¬¨A«Ó/°TÐ 9ûð :ús$Â2MÈ-M7ÍM4Í7 NÎNÎNcó~•/n/nUHhupVnUS:Xa+UR[UR555 M7US:XdM?UR[UR555 Mj [ [ X455Ulg![a [ S5ef=f![a [ S5ef=f)z?Process a GNU tar extended sparse header, version 0.0. sGNU.sparse.offsetrVsGNU.sparse.numbytesN)r�rXrKr=rZÚlistÚziprf)rµrTrgÚoffsetsr;Ú_r!râs rEreÚTarInfo._proc_gnusparse_00Usµ€ðˆØˆÛ!,Ñ ˆA˜ØÐ.Ó.ð?Ø—N‘N¤3 u§|¡|£~Ó#6Ö7ðÐ2Õ2ð?Ø—O‘O¤C¨¯ © «Ó$7Ö8ñ"-ôœ3˜wÓ1Ó2ˆ� øô"ó?Ü,Ð-=Ó>Ð>ð?ûô "ó?Ü,Ð-=Ó>Ð>ð?ús”(B Á(B& B#Â&B<c ó´•USRS5Vs/sHn[U5PM nn[[USSS2USSS255Ulgs snf)z?Process a GNU tar extended sparse header, version 0.1. r[Ú,Nr/r.)r rXrorprf)rµrTr²Úxrfs rErdÚTarInfo._proc_gnusparse_01isZ€ð#.Ð.>Ñ"?×"EÑ"EÀcÔ"JÓKÒ"J˜Q”#�a–&Ñ"JˆÐKÜœ3˜v¡c¨ c™{¨F°1°4°a°4©LÓ9Ó:ˆ� ùòLs—Ac ó•Sn/nURR[5nURSS5upF[ U5n[ U5US-:aiSU;a!XcRR[5- nURSS5upvUR [ U55 [ U5US-:aMiURR5Ul[[USSS2USSS255Ul g)z?Process a GNU tar extended sparse header, version 1.0. Nrr.r/) rƒrur'r rXr?r�rrerorprf)rµrTr²rhÚfieldsrfrlÚnumbers rErfÚTarInfo._proc_gnusparse_10osÜ€ðˆØˆØ�o‰o×"Ñ"¤9Ó-ˆØ—i‘i  qÓ)‰ ˆÜ�V“ˆÜ�&‹k˜F Q™JÓ&ؘCÓØ—‘×+Ñ+¬IÓ6Ñ6�ØŸ)™) E¨1Ó-‰KˆFØ �M‰Mœ#˜f›+Ô &ô �&‹k˜F Q™JÕ&ð #Ÿ?™?×/Ñ/Ó1ˆÔÜœ3˜v¡c¨ c™{¨F°1°4°a°4©LÓ9Ó:ˆ� rGcó¸•UR5HŸupEUS:Xa[USU5 MUS:Xa[US[U55 M8US:Xa[US[U55 MVU[;dMbU[;a[U"U5nUS:XaUR S5n[XU5 M¡ UR5Ulg![ a SnNKf=f) z\Replace fields with supplemental information from a previous pax extended or global header. zGNU.sparse.namer0r\r2zGNU.sparse.realsizerr�N) rÞÚsetattrrXÚ PAX_FIELDSÚPAX_NUMBER_FIELDSr=r�rÒr²)rµr²rCrDr!râs rErPÚTarInfo._apply_pax_infosЀð*×/Ñ/Ö1‰NˆGØÐ+Ó+ܘ˜f eÖ,ØÐ-Ó-ܘ˜f¤c¨%£jÖ1ØÐ1Ó1ܘ˜f¤c¨%£jÖ1ØœJÕ&ØÔ/Ó/ð"Ü 1°'Ò :¸5Ó A˜ð˜fÓ$Ø!ŸL™L¨Ó-�Eܘ uÖ-ñ2ð"'×+Ñ+Ó-ˆÕøô &ó"Ø !šð"úsÁ>C à CÃCcój•URUS5$![a URX45s$f=f)z1Decode a single field from a pax record. rT)rKÚUnicodeDecodeError)rµrârCÚfallback_encodingÚfallback_errorss rErbÚTarInfo._decode_pax_field–s:€ð DØ—<‘< ¨(Ó3Ð 3øÜ!ó DØ—<‘<Ð 1ÓCÒ Cð Dús ‚”2±2cór•US:a [S5e[U[5up#U(aUS- nU[-$)zLRound up a byte count by BLOCKSIZE and return it, e.g. _block(834) => 1024. rzinvalid offsetr.)rZrtr')rµr4r{r|s rErOÚTarInfo._blockžs=€ð �1‹9Ü$Ð%5Ó6Ð 6Ü" 5¬)Ó4ÑˆÞ Ø �a‰KˆFØœ Ñ!Ð!rGcó(•UR[;$©z4Return True if the Tarinfo object is a regular file.)r¯Ú REGULAR_TYPESr½s rEr—Ú TarInfo.isregªs€à�y‰yœMÑ)Ð)rGcó"•UR5$r‰)r—r½s rEÚisfileÚTarInfo.isfile®s€à�z‰z‹|ÐrGcó(•UR[:H$)z!Return True if it is a directory.)r¯rØr½s rEr™Ú TarInfo.isdir²ó€à�y‰yœGÑ#Ð#rGcó(•UR[:H$)z%Return True if it is a symbolic link.)r¯ÚSYMTYPEr½s rEršÚ TarInfo.issym¶r‘rGcó(•UR[:H$)z!Return True if it is a hard link.)r¯ÚLNKTYPEr½s rEr˜Ú TarInfo.islnkºr‘rGcó(•UR[:H$)z(Return True if it is a character device.)r¯rr½s rEÚischrÚ TarInfo.ischr¾r‘rGcó(•UR[:H$)z$Return True if it is a block device.)r¯rr½s rEÚisblkÚ TarInfo.isblkÂr‘rGcó(•UR[:H$)zReturn True if it is a FIFO.)r¯ÚFIFOTYPEr½s rEÚisfifoÚTarInfo.isfifoÆs€à�y‰yœHÑ$Ð$rGcó•URSL$r»)rfr½s rEÚissparseÚTarInfo.issparseÊs€Ø�{‰{ $Ð&Ð&rGcó>•UR[[[4;$)zCReturn True if it is one of character device, block device or FIFO.)r¯rrrŸr½s rEÚisdevÚ TarInfo.isdevÍs€à�y‰yœW¤g¬xÐ8Ñ8Ð8rG)r³r®r°r±r5r7r�r·r3r¶r5rer²r2rfr¯r4r6r‘)rÉ)9r“r”r•r–r—ÚdictÚ __slots__r¸rarhÚsetterr0r1rÎrÐrñrÚrr rãrßràráÚ classmethodrrëÚ staticmethodrìrrðrür'r&rAr@rDrKrGrHrJrerdrfrPrbrOr—r�r™ršr˜r™rœr r£r¦r˜r‘rGrErr‡s߆ññò Ù,ð á!ð ñGð ñHð  ñ  ð  ñ -ð  ñ$ð ñ+ð ñ;ð ñ ð! ñ"ð# ñ$*ð% ñ&*ð' ñ(/ð) ñ*5ð+ ñ,*ð- ñ2.ð3 ñ4ð5 ñ6ð7 ñ8ð9 €Iô>ð0ñóðð ‡^�^ñ óð ðñóðð ‡[�[ñóððñóðð‡_�_ñ!óð!òOð %¨e¸eؘu¨E¸Ø õò8ð8*°HÐEVô/ò" Iò Mò8QðtñMóðMò ð ñ'óð'ðRñóððñ*óð*ð ñ0-óð0-ðdñ3óð3ðØ9=ôAóðAðFñ)óð)ð Ø/3ô)óð)ò( /òò,ò6ò8wòr3ò(;ò ;ò .ò.Dò "ò*òò$ò$ò$ò$ò$ò%ò'õ9rGrcó•\rSrSrSrSrSrSrSr\ r \ r Sr \r\rSrS=Sjr\SSS\4S j5r\S>S j5r\S?S j5r\S?S j5r\S@S j5rSSSSS.rSrSrSrSrSASjr SBSS.Sjjr!SCSS.Sjjr"SDSjr#Sr$SESSS.Sjjr%S r&SFSSS.S!jjr'S"r(SDS#jr)S$r*S%r+S&r,SGSSS'.S(jjr-S)r.S*r/S+r0S,r1S-r2S.r3S/r4S0r5S1r6S2r7S3r8SHS4jr9S5r:SDS6jr;S7rS:r?S;r@S5 UR"RIU5nUR8RKU5 M^URS;a†S UlUR.(amUR"RSUR.RU55nURRWU5 U=R>[YU5- slg g g ![La) URRGUR>5 MÉ[Nan[Q[U55S eS nAff=f! UR(dURR[5 S Ule=f)aŒOpen an (uncompressed) tar archive `name'. `mode' is either 'r' to read from an existing archive, 'a' to append data to an existing file or 'w' to create a new file overwriting an existing one. `mode' defaults to 'r'. If `fileobj' is given, it is used for reading or writing data. If it can be determined, `mode' is overridden by `fileobj's mode. `fileobj' is not closed, when TarFile is closed. r@zr+bÚwbÚxb©r«Úar¬rvú!mode must be 'r', 'a', 'w' or 'x'r²r¬FNr¶r·Tr«©r²r¬rv).r=r·Ú_moder®r0ÚexistsÚ bltn_openrÑr³rør¶rûr_ÚabspathrƒÚstreamrcriÚ dereferenceÚ ignore_zerosrCrDrr²ÚdebugÚ errorlevelÚ copybufsizer×ÚmembersÚ_loadedrr5ÚinodesÚ firstmemberrTrrAr�r£r rrrÒrvr?r¼)rµr¶r·rƒrcrirºr»rCrDr²r¼r½r¾r¹Úmodesr rls rEr¸ÚTarFile.__init__îsï€ð ¨T¸Ñ=ˆØ Ó ÜÐ@ÓAÐ AØŒ Ø‘[ˆŒ æØ�y‰y˜CÓ¬¯©¯©°t×(<Ñ(<à�” Ø!�” Ü §j¡jÓ1ˆGØ$ˆDÕ à‘ ¤¨°&×!9Ñ!9ܘ7Ÿ<™<¬#¬u¨×6Ñ6Ø—|‘|�Ü�w ×'Ñ'Ø$Ÿ\™\�” Ø#ˆDÔ Þ-1”B—G‘G—O‘O DÔ)°tˆŒ ØŒ àŒ ð Ñ Ø ŒKØ Ñ Ø"ŒLØ Ñ "Ø*Ô Ø Ñ #Ø ,Ô Ø Ñ Ø$ŒMØŒ à Ñ " t§{¡{´jÓ'@Ø*Õ à!ˆDÔ à Ñ ØŒJØ Ñ !Ø(ŒOð'ÔØˆŒ ؈Œ ؈Œ Ø—l‘l×'Ñ'Ó)ˆŒ àˆŒ ð Ø�y‰y˜CÓØ#'�Ô Ø#'§9¡9£;�Ô à�y‰y˜CÓðØ—L‘L×%Ñ% d§k¡kÔ2ð:Ø"&§,¡,×":Ñ":¸4Ó"@˜ØŸ ™ ×+Ñ+¨GÔ4ñ ð�y‰y˜OÓ+Ø#�” à×#×#ØŸ,™,×?Ñ?À×@PÑ@P×@UÑ@UÓ@WÓX�CØ—L‘L×&Ñ& sÔ+Ø—K’K¤3 s£8Ñ+–Kð$ð,øô *óØŸ ™ ×)Ñ)¨$¯+©+Ô6ÚÜ&ó:Ü'¬¨A«Ó/°TÐ9ûð:ûð Ø×#×#Ø— ‘ ×"Ñ"Ô$؈DŒKØ ús>Ç A"M*É6LÉ9BM*Ì/M'ÍM*Í M'Í M"Í"M'Í'M*Í*5Nc ó^•U(dU(d [S5eUS;azU4Sjn/n[TRUS9H;n[TTRU5n UbUR 5n U "USU40UD6s $ S RU5n [ S U 35eS U;alURS S 5upØU =(d Sn U=(d S nUTR;a[TTRU5n O[ SU-5eU "XU40UD6$SU;aoURSS 5upØU =(d Sn U=(d S nU S;a [S5eURSS5n[XXƒUU5nT"XU40UD6nSUlU$US;aTR"XU40UD6$[S5e![ [ 4a8n URSUSU <35 UbURW 5 Sn A GM­Sn A ff=f! UR5 e=f)a^Open a tar archive for reading, writing or appending. Return an appropriate TarFile class. mode: 'r' or 'r:*' open for reading with transparent compression 'r:' open for reading exclusively uncompressed 'r:gz' open for reading with gzip compression 'r:bz2' open for reading with bzip2 compression 'r:xz' open for reading with lzma compression 'a' or 'a:' open for appending, creating the file if necessary 'w' or 'w:' open for writing without compression 'w:gz' open for writing with gzip compression 'w:bz2' open for writing with bzip2 compression 'w:xz' open for writing with lzma compression 'x' or 'x:' create a tarfile exclusively without compression, raise an exception if the file is already created 'x:gz' create a gzip compressed tarfile, raise an exception if the file is already created 'x:bz2' create a bzip2 compressed tarfile, raise an exception if the file is already created 'x:xz' create an lzma compressed tarfile, raise an exception if the file is already created 'r|*' open a stream of tar blocks with transparent compression 'r|' open an uncompressed stream of tar blocks for reading 'r|gz' open a gzip compressed stream of tar blocks 'r|bz2' open a bzip2 compressed stream of tar blocks 'r|xz' open an lzma compressed stream of tar blocks 'w|' open an uncompressed stream for writing 'w|gz' open a gzip compressed stream for writing 'w|bz2' open a bzip2 compressed stream for writing 'w|xz' open an lzma compressed stream for writing znothing to open)r«úr:*có(>•TRUS:H$)NÚtaropen)Ú OPEN_METH)rÕrs €rEÚnot_compressedÚ$TarFile.open..not_compressed‰sø€Ø—}‘} XÑ.°)Ñ;Ð;rG)ÚkeyNr«z - method z: Ú z'file could not be opened successfully: Ú:r.rÏrÐÚ|rªzmode must be 'r' or 'w'rèé Fr´zundiscernible mode)r=ÚsortedrÉr‹rrr r�rr‚r ÚpoprÆr¼rÑrÈ)rr¶r·rƒrzÚkwargsrÊÚ error_msgsrÕÚfuncÚ saved_posr Úerror_msgs_summaryÚfilemoderèr¹rs` rErÚ TarFile.open_s%ø€öJžGÜÐ.Ó/Ð /à �<Ó õ <àˆJÜ" 3§=¡=°nÔE�ܘs C§M¡M°(Ñ$;Ó<�ØÑ&Ø '§ ¡ £�IðÙ  c¨7Ñ=°fÑ=Ò=ñ Fð"&§¡¨:Ó!6Ð ÜÐFÐGYÐFZÐ[Ó\Ð \à �D‹[Ø!%§¡¨C°Ó!3Ñ ˆHØ— 3ˆHØ×( 5ˆHð˜3Ÿ=™=Ó(ܘs C§M¡M°(Ñ$;Ó<‘ä&Ð'DÀxÑ'OÓPÐPÙ˜¨Ñ:°6Ñ:Ð :à �D‹[Ø!%§¡¨C°Ó!3Ñ ˆHØ— 3ˆHØ×( 5ˆHà˜zÓ)Ü Ð!:Ó;Ð;à"ŸJ™J ¸Ó:ˆMܘT¨XÀØ*ó,ˆFð Ù˜¨Ñ9°&Ñ9�ð"ˆAŒM؈Hà �_Ó $Ø—;’;˜t¨7Ñ=°fÑ=Ð =äÐ-Ó.Ð.øôW"Ô#3Ð4óØ×%Ñ%¨ °(°¸2¸a¹UÐ&CÔDØÑ*ØŸ ™  YÔ/Þûð ûðD Ø— ‘ ”Øús$Á- F'Å/ G2Æ'G/Æ7,G*Ç*G/Ç2Hc ó8•US;a [S5eU"XU40UD6$)zCOpen uncompressed tar archive name for reading or writing. r±r³)r=)rr¶r·rƒrÓs rErÈÚTarFile.taropen¿s+€ð Ð+Ó +ÜÐ@ÓAÐ AÙ�4˜wÑ1¨&Ñ1Ð1rGc ó˜•US;a [S5eSSKJn U"XS-XC5nUR"XU40UD6nS Ul U$![a [ S5Sef=f![ anUbUS:Xa [ S 5UeeSnAff=f![ a(nUR5 US:Xa [ S 5UeeSnAf UR5 e=f) zXOpen gzip compressed tar archive name for reading or writing. Appending is not allowed. ©r«r¬rvúmode must be 'r', 'w' or 'x'r)ÚGzipFilezgzip module is not availableNr}r«rF) r=ÚgziprßrÙr rârrÈr¼rÑ) rr¶r·rƒrèrÓrßr rs rEÚgzopenÚTarFile.gzopenÇsë€ð �Ó &ÜÐ;Ó<Ð <ð MÝ %ð Ù˜t¨C¡Z°ÓHˆGð Ø— ’ ˜D¨Ñ:°6Ñ:ˆAðˆŒ Øˆøô+ó MÜ"Ð#AÓBÈÐ Lð Mûô ó ØÑ" t¨s£{ÜÐ 1Ó2¸Ð9Ø ûð ûôó Ø �M‰MŒOØ�s‹{ÜÐ 1Ó2¸Ð9Ø ûð Ø �M‰MŒOØ ús9“Aš A§BÁAÁ BÁ(A>Á>B C Â#B3Â3C c óZ•US;a [S5eSSKJn U"U=(d UX$S9nUR "XU40UD6nS Ul U$![a [ S5Sef=f![ [4a(nUR5 US:Xa [S 5UeeSnAf UR5 e=f) zYOpen bzip2 compressed tar archive name for reading or writing. Appending is not allowed. rÝrÞr)ÚBZ2FilerÌN)rèr«znot a bzip2 fileF) r=rËrärÙr rÈrâÚEOFErrorr¼rrÑ) rr¶r·rƒrèrÓrärr s rEÚbz2openÚTarFile.bz2openès¿€ð �Ó &ÜÐ;Ó<Ð <ð LÝ #ñ˜'Ÿ/ T¨4ÑMˆð Ø— ’ ˜D¨Ñ:°6Ñ:ˆAðˆŒ Øˆøô!ó LÜ"Ð#@ÓAÀtÐ Kð LûôœÐ"ó Ø �M‰MŒOØ�s‹{ÜÐ 2Ó3¸Ð:Ø ûð Ø �M‰MŒOØ ús"“AªA!ÁAÁ!B*Á1#BÂB*c óV•US;a [S5eSSKJnJn U"U=(d UX$S9nUR "XU40UD6nS Ul U$![a [ S5Sef=f!U[4a(n UR5 US:Xa [S 5U eeSn A f UR5 e=f) zXOpen lzma compressed tar archive name for reading or writing. Appending is not allowed. rÝrÞr)ÚLZMAFilerærÎN)Úpresetr«znot an lzma fileF) r=rärérærÙr rÈrår¼rrÑ) rr¶r·rƒrêrÓrérærr s rEÚxzopenÚTarFile.xzopens¿€ð �Ó &ÜÐ;Ó<Ð <ð Mß 0ñ˜7Ÿ? d¨DÑ@ˆð Ø— ’ ˜D¨Ñ:°6Ñ:ˆAðˆŒ Øˆøô!ó MÜ"Ð#AÓBÈÐ Lð Mûðœ8Ð$ó Ø �M‰MŒOØ�s‹{ÜÐ 2Ó3¸Ð:Ø ûð Ø �M‰MŒOØ ús"“A ¬A#Á A Á# B(Á/#BÂB(rÈrárærë)rÏrÊrËrÍcó2•UR(agSUlURS;a�URR[[ S--5 U=R [ S-- sl[UR [5upUS:”a)URR[[U- -5 UR(dURR5 gg!UR(dURR5 ff=f)zYClose the TarFile. In write-mode, two finishing zero blocks are appended to the archive. NTr´r/r) r×r·rƒrvr@r'r5rtÚ RECORDSIZErÑr¼)rµr{r|s rEr¼Ú TarFile.close+sÈ€ð �;�;Ø àˆŒ ð %Ø�y‰y˜OÓ+Ø— ‘ ×"Ñ"¤3¬)°a©-Ñ#8Ô9Ø— ’ ¤ ¨A¡ Ñ.• ô%+¨4¯;©;¼ Ó$CÑ!�ؘq“=Ø—L‘L×&Ñ&¤s¬j¸9Ñ.DÑ'EÔFà×#×#Ø— ‘ ×"Ñ"Õ$ð$ø�4×#×#Ø— ‘ ×"Ñ"Õ$ð$ús ›B C(Ã(.Dcóh•URURS55nUc[SU-5eU$)zÞReturn a TarInfo object for member `name'. If `name' can not be found in the archive, KeyError is raised. If a member occurs more than once in the archive, its last occurrence is assumed to be the most up-to-date version. r�zfilename %r not found)Ú _getmemberr�ÚKeyError)rµr¶ris rEÚ getmemberÚTarFile.getmember@s6€ð —/‘/ $§+¡+¨cÓ"2Ó3ˆØ ‰?ÜÐ2°TÑ9Ó:Ð :؈rGcó|•UR5 UR(dUR5 UR$)z{Return the members of the archive as a list of TarInfo objects. The list has the same order as the members in the archive. )Ú_checkrÀÚ_loadr¿r½s rEÚ getmembersÚTarFile.getmembersKs'€ð � ‰ Œ Ø�|�|Ø �J‰JŒLà�|‰|ÐrGcó`•UR5Vs/sHoRPM sn$s snf)zxReturn the members of the archive as a list of their names. It has the same order as the list returned by getmembers(). )rør¶)rµris rEÚgetnamesÚTarFile.getnamesUs'€ð-1¯O©OÔ,=Ó>Ò,= — ” Ñ,=Ñ>Ð>ùÒ>s“+cóÒ•URS5 Ub URnUcUn[RR U5upBUR [R S5nURS5nUR5nXl Uc?UR(d[R"U5nO;[R"U5nO$[R"UR55nSnURn[R "U5(a�UR"UR$4n UR(dGUR&S:”a7X�R(;a(X R(U :wa[*n UR(U nOà[,n U S(aX R(U 'OÁ[R."U5(a[0n OŸ[R2"U5(a[4n O}[R6"U5(a[8n [R:"U5nOE[R<"U5(a[>n O#[R@"U5(a[Bn OgX%lX…l"URFUl$URJUl&U [,:XaURNUl(OSUl(URRUl*X¥l+Xul,[Z(a)[ZR\"URH5SUl/[b(a)[bRd"URL5SUl3U [>[B4;at[i[S5(a_[i[S5(aJ[Rj"URl5Ul7[Rp"URl5Ul9U$![`a NÆf=f![`a N¢f=f) aˆCreate a TarInfo object from the result of os.stat or equivalent on an existing file. The file is either named by `name', or specified as a file object `fileobj' with a file descriptor. If given, `arcname' specifies an alternative name for the file in the archive, otherwise, the name is taken from the 'name' attribute of 'fileobj', or the 'name' argument. The name should be a text string. ÚawxNr�rÉr.rÚmajorÚminor):rör¶r®r0Ú splitdriverñr“r”rir³rºÚlstatÚstatÚfstatÚfilenoÚst_modeÚS_ISREGÚst_inoÚst_devÚst_nlinkrÁr–r·ÚS_ISDIRrØÚS_ISFIFOrŸÚS_ISLNKr“ÚreadlinkÚS_ISCHRrÚS_ISBLKrr·Úst_uidr4Úst_gidr5Úst_sizer2Úst_mtimer3r¯r�ÚpwdÚgetpwuidr6ròÚgrpÚgetgrgidr7r³rÿÚst_rdevr°rr±) rµr¶ÚarcnamerƒÚdrvriÚstatresr�ÚstmdÚinoder¯s rEÚ gettarinfoÚTarFile.gettarinfo[sÒ€ð � ‰ �EÔð Ñ Ø—<‘<ˆDð ‰?؈GÜ—w‘w×)Ñ)¨'Ó2‰ ˆØ—/‘/¤"§&¡&¨#Ó.ˆØ—.‘. Ó%ˆð—,‘,“.ˆØÔð ‰?Ø×#×#ÜŸ(š( 4›.‘äŸ'š' $›-‘ä—h’h˜wŸ~™~Ó/Ó0ˆG؈à�‰ˆÜ �<Š<˜× Ñ Ø—^‘^ W§^¡^Ð4ˆEØ×#×#¨×(8Ñ(8¸1Ó(<ØŸ[™[Ó(¨W¿ ¹ ÀEÑ8JÓ-Jô�ØŸ;™; uÑ-‘ô�ؘ—8Ø)0—K‘K Ñ&øÜ �\Š\˜$× Ñ Ü‰DÜ �]Š]˜4× Ñ Ü‰DÜ �\Š\˜$× Ñ ÜˆDÜ—{’{ 4Ó(‰HÜ �\Š\˜$× Ñ Ü‰DÜ �\Š\˜$× Ñ Ü‰DàðŒ ØŒ Ø—n‘nˆŒ Ø—n‘nˆŒ Ø ”7‹?Ø"Ÿ?™?ˆG�LàˆGŒLØ×(Ñ(ˆŒ ØŒ Ø#Ôß Š3ð Ü #§ ¢ ¨W¯[©[Ó 9¸!Ñ <�” ÷ Š3ð Ü #§ ¢ ¨W¯[©[Ó 9¸!Ñ <�” ð ”GœWÐ%Ó %Ü”r˜7×#Ñ#¬´°G×(<Ñ(<Ü#%§8¢8¨G¯O©OÓ#<�Ô Ü#%§8¢8¨G¯O©OÓ#<�Ô Øˆøôó Ùð ûô ó Ùð ús$Ë'(O Ì(OÏ OÏOÏ O&Ï%O&)r¿c ó8•[[R[[R[ [R [[R[[R[[R0nUR5 UcUnUGHnU(Ga^URc [S5 OGUR!UR"S5n[[R$"XTR-55 [UR&=(d UR(<SUR*=(d UR,<35 UR/5(dUR15(a([SSUR2UR44--5 O[SUR6-5 UR8c [S5 O/[S [:R<"UR85SS -5 [UR>URA5(aSOS -5 U(aZURC5(a[S URD-5 URG5(a[S URD-5 [I5 GM g)zðPrint a table of contents to sys.stdout. If `verbose' is False, only the names of the members are printed. If it is True, an `ls -l'-like output is produced. `members' is optional and must be a subset of the list returned by getmembers(). Nz ??????????rr�z%10sz%d,%dz%10dz????-??-?? ??:??:??z%d-%02d-%02d %02d:%02d:%02dr rÉz-> zlink to )%r·rÚS_IFREGr“ÚS_IFLNKrŸÚS_IFIFOrÚS_IFCHRrØÚS_IFDIRrÚS_IFBLKrör·r�rr¯rØr6r4r7r5r™rœr°r±r2r3r÷Ú localtimer¶r™ršr�r˜rŽ)rµÚverboser¿Ú type2moderiÚmodetypes rEroÚ TarFile.list¾sÄ€ôœdŸl™l¬G´T·\±\ÜœtŸ|™|¬W´d·l±lÜœdŸl™l¬G´T·\±\ðCˆ ð � ‰ Œ à ‰?؈G܈Gߨ—<‘<Ñ'Ü  Õ-à(Ÿ}™}¨W¯\©\¸1Ó=�Hܤ§ ¢ ¨h¿¹Ñ.EÓ FÔGÜ w§}¡}×'C¸¿ ¹ Ò'CØ'.§}¡}×'C¸¿ ¹ Ñ'CðEôFà—=‘=—?‘? g§m¡m§o¡oÜ Ø$¨×(8Ñ(8¸'×:JÑ:JÐ'KÑKñ!MõNô  ¨¯©Ñ 5Ô6Ø—=‘=Ñ(ÜÐ 5Õ6äÐ =Ü"&§.¢.°·±Ó"?ÀÀÐ"Cñ!DôEô ˜Ÿ ™ ¨w¯}©}¯©©ÀBÑGÔ HæØ—=‘=—?‘?Ü ¨×(8Ñ(8Ñ 8Ô9Ø—=‘=—?‘?Ü  ¨W×-=Ñ-=Ñ =Ô>Ü �Gò7rG©ÚfiltercóŒ•URS5 UcUnURbC[RR U5UR:XaUR SSU-5 gUR SU5 UR X5nUcUR SSU-5 gUb!U"U5nUcUR SSU-5 gUR5(a'[US5nURXV5 SSS5 gUR5(a‹URU5 U(ar[[R"U55HNnUR[RRX5[RRX&5X4S 9 MP ggURU5 g!,(df  g=f) aÌAdd the file `name' to the archive. `name' may be any type of file (directory, fifo, symbolic link, etc.). If given, `arcname' specifies an alternative name for the file in the archive. Directories are added recursively by default. This can be avoided by setting `recursive' to False. `filter' is a function that expects a TarInfo object argument and returns the changed TarInfo object, if it returns None the TarInfo object will be excluded from the archive. rþNr/ztarfile: Skipped %rr.ztarfile: Unsupported type %rútarfile: Excluded %rr@r-)rör¶r®r0r¸Ú_dbgrr—r·Úaddfiler™rÑÚlistdirÚaddr‚)rµr¶rÚ recursiver.riÚfs rEr4Ú TarFile.addêsk€ð � ‰ �EÔà ‰?؈Gð �9‰9Ñ ¤R§W¡W§_¡_°TÓ%:¸d¿i¹iÓ%GØ �I‰I�aÐ.°Ñ5Ô 6Ø à � ‰ �!�TÔð—/‘/ $Ó0ˆà ‰?Ø �I‰I�aÐ7¸$Ñ>Ô ?Ø ð Ñ Ù˜W“oˆG؉ؗ ‘ ˜!Ð3°dÑ:Ô;Øð �=‰=�?‰?ܘ4 Ô&¨!Ø— ‘ ˜WÔ(÷'Ð&ð�]‰]�_‰_Ø �L‰L˜Ô !Þܤ§ ¢ ¨4Ó 0Ö1�AØ—H‘HœRŸW™WŸ\™\¨$Ó2´B·G±G·L±LÀÓ4LØ%ðó6ò2ðð �L‰L˜Õ !÷'Õ&ús Ã(F5Æ5 Gcóö•URS5 Uc0UR5(aURS:wa [S5e[R"U5nUR UR URUR5nURRU5 U=R[U5- sl URnUb‹[X RURUS9 [UR[ 5upVUS:”a.URR["[ U- -5 US- nU=RU[ -- sl UR$R'U5 g)aAdd the TarInfo object `tarinfo' to the archive. If `tarinfo' represents a non zero-size regular file, the `fileobj' argument should be a binary file, and tarinfo.size bytes are read from it and added to the archive. You can create TarInfo objects directly, or by using gettarinfo(). rþNrz3fileobj not provided for non zero-size regular file)rzr.)rör—r2r=rÒrãrcrCrDrƒrvr5r?r¾rsrtr'r@r¿r�)rµrirƒrlrzr{r|s rEr2ÚTarFile.addfile s€ð � ‰ �EÔà ‰?˜wŸ}™}Ÿ™°7·<±<À1Ó3DÜÐRÓSÐ Sä—)’)˜GÓ$ˆà�m‰m˜DŸK™K¨¯©¸¿ ¹ ÓDˆØ � ‰ ×ј3ÔØ � Š ”s˜3“xÑ� Ø× Ñ ˆà Ñ Ü ˜§¡¨w¯|©|ÀWÒ MÜ & w§|¡|´YÓ ?Ñ ˆFؘ1‹}Ø— ‘ ×"Ñ"¤3¬)°iÑ*?Ñ#@ÔAؘ!‘ �Ø �KŠK˜6¤IÑ-Ñ -�Kà � ‰ ×јGÕ$rGcó•UcPURnUcSSKnURS[SS9 [$[ U[ 5(a [S5eU$[U5(aU$[U$![a [SU<S35Sef=f)Nrz˜Python 3.14 will, by default, filter extracted tar archives and reject files or modify their metadata. Use the filter argument to control this behavior.r,r¼zrString names are not supported for TarFile.extraction_filter. Use a function such as tarfile.data_filter directly.zfilter z not found) Úextraction_filterr¿rÀrÁrrørûÚ TypeErrorÚcallableÚ_NAMED_FILTERSròr=)rµr.r¿s rEÚ_get_filter_functionÚTarFile._get_filter_function; s®€Ø ‰>Ø×+Ñ+ˆF؉~ÛØ— ‘ ðJô'°1ð ñ6ô ,Ð+ܘ&¤#×&Ñ&Üð6ó7ð7ðˆMÜ �F× Ñ ØˆMð GÜ! &Ñ)Ð )øÜó Gܘw v¡j° Ð;Ó<À$Ð Fð Gús Á'A0Á0B )Ú numeric_ownerr.c óÜ•/nURU5nUcUnUHgnURXvU5up‰UcMUR5(aURU 5 UR X�UR5(+UUS9 Mi UR SSS9 UHÏn U"X‘5nUcURU S5 M$[RRXR5n [R"U 5n [R "U R"5(dURUS5 M�UR%X‹US 9 UR'X‹5 UR)X‹5 MÑ g![ a&n URU [U 55 Sn A MÿSn A ff=f![a URUS5 GM'f=f![*an UR-U 5 Sn A GMMSn A ff=f) a-Extract all members from the archive to the current working directory and set owner, modification time and permissions on directories afterwards. `path' specifies a different directory to extract to. `members' is optional and must be a subset of the list returned by getmembers(). If `numeric_owner` is True, only the numbers for user/group names are used and not the names. The `filter` function will be called on each member just before extraction. It can return a changed TarInfo or None to skip the member. String names of common filters are accepted. N)Ú set_attrsrAÚfilter_functioncó•UR$r»rÅ)r²s rEÚÚ$TarFile.extractall..v s€ q§v¢vrGT)rÌÚreversezexcluded by filterÚmissingznot a directory)rA)r?Ú_get_extract_tarinfor™r�Ú _extract_oneÚsortÚ_FILTER_ERRORSÚ_log_no_directory_fixupÚreprr®r0r‚r¶rÚFileNotFoundErrorrr rÚchownÚutimeÚchmodr Ú_handle_nonfatal_error)rµr0r¿rAr.Ú directoriesrDržriÚ unfilteredÚexcÚdirpathrr s rEÚ extractallÚTarFile.extractallS sÌ€ðˆ à×3Ñ3°FÓ;ˆØ ‰?؈GãˆFØ"&×";Ñ";بó#/Ñ ˆGà‰ÙØ�}‰}�‰ð×"Ñ" :Ô.Ø × Ñ ˜g¸7¿=¹=»?Ô7JØ,9Ø.=ð ó ?ñð ×ÑÑ-°tÐÑ<ó&ˆJð /ðÙ-¨jÓ?�Gð‘?Ø×0Ñ0°Ø1EôGáÜŸ'™'Ÿ,™, t¯\©\Ó:�ðÜŸHšH WÓ-�Eô—|’| E§M¡M×2Ñ2ð×0Ñ0°Ð:KÔLÙØ— ‘ ˜7¸=� ÑIØ— ‘ ˜7Ô,Ø— ‘ ˜7Ö,ò5&øô &óØ×0Ñ0°¼TÀ#»YÔGÝûðûô)óØ×0Ñ0°¸)ÔDÛðûô ó /Ø×+Ñ+¨A×.Ó.ûð /úslÂE-Â&GÂ=)GÃ'F Ã=7GÄ62GÅ- FÅ7FÆGÆFÆGÆ GÆ<GÇGÇGÇ G+ÇG&Ç&G+cóN•URSSUR<SU<S35 g)Nr/z!tarfile: Not fixing up directory z (Ú))r1r¶)rµržÚreasons rErNÚTarFile._log_no_directory_fixup˜ s€Ø � ‰ ‘!Ø—;”;£ð(õ )rGcóx•URU5nURXU5upxUbURXrX4US9 gg)aDExtract 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 TarInfo object. You can specify a different directory using `path'. File attributes (owner, mtime, mode) are set unless `set_attrs' is False. If `numeric_owner` is True, only the numbers for user/group names are used and not the names. The `filter` function will be called before extraction. It can return a changed TarInfo or None to skip the member. String names of common filters are accepted. N)rD)r?rJrK) rµržr0rCrAr.rDrirVs rEÚextractÚTarFile.extractœ sQ€ð×3Ñ3°FÓ;ˆØ"×7Ñ7Ø  Tó+шà Ñ Ø × Ñ ˜g¨YØ.=ð ò ?ð rGcó•[U[5(aURU5nOUnSnU"XC5nUc URSSUR-5 gUR5(aD[R"U5n[RRX5R 5UlXT4$![[[ 4anUR U5 SnANªSnAf[anURU5 SnANÍSnAff=f)zrGet (filtered, unfiltered) TarInfos from *member* *member* might be a string. Return (None, None) if not found. Nr/r0)NN)rørûrórâr÷rÚ_handle_fatal_errorr rTr1r¶r˜rÒr®r0r‚r�rµ)rµržrDr0rVÚfilteredr s rErJÚTarFile._get_extract_tarinfo± sá€ô �fœc× "Ñ "ØŸ™¨Ó/‰JàˆJàˆð +Ù& zÓ8ˆHð Ñ Ø �I‰I�aÐ/°*·/±/ÑAÔ BØð �>‰>× Ñ Ü—y’y Ó*ˆHÜ$&§G¡G§L¡L°×7HÑ7HÓ$IˆHÔ !ØÐ#Ð#øôÔ+¬[Ð9ó (Ø × $Ñ $ Q× 'Ñ 'ûÜó +Ø × 'Ñ '¨× *Ñ *ûð +ús#­B4Â4Dà Cà DÃ,DÄDc ó@•URS5 URU[RR X!R 5UUUUS9 g![ [4anURU5 SnAgSnAf[anURU5 SnAgSnAff=f)z“Extract from filtered tarinfo to disk. filter_function is only used when extracting a *different* member (e.g. as fallback to creating a symlink) r«)rCrArDÚextraction_rootN) röÚ_extract_memberr®r0r‚r¶râr÷rcr rT)rµrir0rCrArDr s rErKÚTarFile._extract_oneÏ sŒ€ð � ‰ �CÔð +Ø × Ñ  ¬"¯'©'¯,©,°t¿\¹\Ó*JØ+4Ø/<Ø1@Ø15ð !ò 7øô Ô+Ð,ó (Ø × $Ñ $ Q× 'Ñ 'ûÜó +Ø × 'Ñ '¨× *Ñ *ûð +ús#“;AÁBÁA5Á5 BÂBÂBcóP•URS:”aeURSSU-5 g)z=Handle non-fatal error (ExtractError) according to errorlevelr.ú tarfile: %sN)r½r1©rµr s rErTÚTarFile._handle_nonfatal_errorã s$€à �?‰?˜QÓ Ø à �I‰I�a˜¨Ñ*Õ +rGcób•URS:”ae[U[5(a\URc UR SSUR -5 gUR SSUR <SUR<35 gUR SS[ U5R<SU<35 g)z1Handle "fatal" error according to self.errorlevelrNr.rkz tarfile: r‰)r½rørâÚfilenamer1Ústrerrorr¯r“rls rErcÚTarFile._handle_fatal_errorê sw€à �?‰?˜QÓ Ø Ü ˜œ7× #Ñ #Ø�z‰zÑ!Ø— ‘ ˜!˜]¨Q¯Z©ZÑ7Õ8à— ‘ ™!°·´¸Q¿Z»ZÐHÕIà �I‰I‘a¬T°!«W×-=Ô-=ºqÐAÕ BrGcóÔ•URS5 [U[5(aURU5nOUnUR 5(dUR [ ;aURX5$UR5(dUR5(aJ[UR[5(a [S5eURURU55$g)a(Extract a member from the archive as a file object. `member' may be a filename or a TarInfo object. If `member' is a regular file or a link, an io.BufferedReader object is returned. For all other existing members, None is returned. If `member' does not appear in the archive, KeyError is raised. r«z'cannot extract (sym)link as file objectN)rörørûrór—r¯rNÚ fileobjectr˜ršrƒrÆr Ú extractfileÚ_find_link_target)rµržris rErtÚTarFile.extractfileö s¬€ð � ‰ �CÔä �fœc× "Ñ "Ø—n‘n VÓ,‰GàˆGà �=‰=�?‰?˜gŸl™l´/ÓAà—?‘? 4Ó1Ð 1à �]‰]�_‰_ § ¡ §¡Ü˜$Ÿ,™,¬×0Ñ0ô"Ð"KÓLÐLð×'Ñ'¨×(>Ñ(>¸wÓ(GÓHÐHðrG©rDrgcóø•URS5nURS[R5n[RR U5nU(a9[RR U5(d[R"USS9 UR5(dUR5(a.URSUR<SUR<35 OURSUR5 UR5(aURX5 OýUR5(aUR!X5 OÖUR#5(aUR%X5 O¯UR'5(dUR)5(aUR+X5 OsUR5(dUR5(aUR-XUUS9 O7UR.[0;aUR3X5 OURX5 U(aKUR5XU5 UR5(d#UR7X5 UR9X5 ggg)z¾Extract the filtered TarInfo object tarinfo to a physical file called targetpath. filter_function is only used when extracting a *different* member (e.g. as fallback to creating a symlink) r�T)Úexist_okr.z -> rwN)r�rñr®r“r0rœr¶Úmakedirsr˜ršr1r¶r�r—Úmakefiler™Úmakedirr Úmakefifor™rœÚmakedevÚmakelink_with_filterr¯rNÚ makeunknownrQrSrR)rµriÚ targetpathrCrArDrgÚ upperdirss rErhÚTarFile._extract_member s¦€ð ×&Ñ& sÓ+ˆ Ø×'Ñ'¨¬R¯V©VÓ4ˆ ô—G‘G—O‘O JÓ/ˆ Þ œRŸW™WŸ^™^¨I×6Ñ6ô �KŠK˜ ¨DÒ 1à �=‰=�?‰?˜gŸm™mŸo™oØ �I‰I�a w§|¤|°W×5EÓ5EÐFÕ Gà �I‰I�a˜Ÿ™Ô &à �=‰=�?‰?Ø �M‰M˜'Õ .Ø �]‰]�_‰_Ø �L‰L˜Õ -Ø �^‰^× Ñ Ø �M‰M˜'Õ .Ø �]‰]�_‰_ § ¡ §¡Ø �L‰L˜Õ -Ø �]‰]�_‰_ § ¡ §¡Ø × %Ñ %ØØ /Ø /ð &ò 1ð�\‰\¤Ó 0Ø × Ñ ˜WÕ 1à �M‰M˜'Ô .æ Ø �J‰J�w¨MÔ :Ø—=‘=—?‘?Ø— ‘ ˜7Ô/Ø— ‘ ˜7Õ/ð#ð rGcóæ•URc[R"U5 g[R"US5 g![a( [RR U5(degf=f)z,Make a directory called targetpath. NiÀ)r·r®ÚmkdirÚFileExistsErrorr0r™©rµrir�s rEr|ÚTarFile.makedirN sW€ð Ø�|‰|Ñ#ä—’˜Õ$ô—’˜ UÕ+øÜó Ü—7‘7—=‘= ×,Ñ,Øñ-ð ús‚#>¦>¾/A0Á/A0c óЕURnURUR5 URn[ US5nUR bdUR H(upgURU5 [ X5U[U5 M* URUR5 UR5 O[ X5UR[U5 SSS5 g!,(df  g=f)z'Make a file called targetpath. r¯N) rƒrrer¾r·rfrsrr2Útruncate)rµrir�ÚsourcerzÚtargetr5r2s rEr{ÚTarFile.makefile] s¤€ð—‘ˆØ� ‰ �G×'Ñ'Ô(Ø×"Ñ"ˆÜ �z 4Ô (¨FØ�~‰~Ñ)Ø$+§N¤N‘L�FØ—K‘K Ô'Ü °´iÀÖIñ%3ð— ‘ ˜GŸL™LÔ)Ø—‘Õ!ä˜F¨G¯L©L¼)ÀWÔM÷)× (Ö (ús ÁBCà C%cód•URX5 URSSUR-5 g)zFMake a file from a TarInfo object with an unknown type at targetpath. r.z9tarfile: Unknown file type %r, extracted as regular file.N)r{r1r¯r‡s rEr€ÚTarFile.makeunknownm s1€ð � ‰ �gÔ*Ø � ‰ �!ð2Ø4;·L±LñAõ BrGcóp•[[S5(a[R"U5 g[S5e)z'Make a fifo called targetpath. Úmkfifozfifo not supported by systemN)r³r®r‘r r‡s rEr}ÚTarFile.makefifou s)€ô ”2�x× Ñ Ü �IŠI�jÕ !äÐ=Ó>Ð >rGcóˆ•[[S5(a[[S5(d [S5eURnUcSnUR 5(aU[ R -nOU[ R-n[R"X#[R"URUR55 g)zÑ.>Ó?õ ArGcó(•URXSS5$r»)rr‡s rEÚmakelinkÚTarFile.makelink� s€Ø×(Ñ(¨¸dÀDÓIÐIrGcó„•SnUR5(a\[RRU5(a[R"U5 [R "UR U5 g[RRUR5(a\[RRU5(a[R"U5 [R"URU5 gURU5nUcUnO8Uc [S5eU"URURSS9U5 U"Xd5nUbUR%XrUUS9 gg![a SnNtf=f![a U(a [S5Seef=f![ an[#XR5UeSnAff=f)aMake a (symbolic) link called targetpath. If it cannot be created (platform limitation), we try to make a copy of the referenced file instead of a link. filter_function is only used when extracting a *different* member (e.g. as fallback to creating a link). FNTz%unable to resolve link inside archivez[makelink_with_filter: if filter_function is not None, extraction_root must also not be None)r¶r¨rw)ršr®r0ÚlexistsÚunlinkÚsymlinkr�r¶rµÚlinkÚsymlink_exceptionruròr rñr¶rMrrh) rµrir�rDrgÚkeyerror_to_extracterrorrVrdÚcauses rErÚTarFile.makelink_with_filter’ s¢€ð$)Ð ð ,à�}‰}�‰Ü—7‘7—?‘? :×.Ñ.ä—I’I˜jÔ)Ü— ’ ˜7×+Ñ+¨ZÔ8Øä—7‘7—>‘> '×"6Ñ"6×7Ñ7Ü—w‘w—‘ z×2Ñ2äŸ š  *Ô-Ü—G’G˜G×0Ñ0°*Ô=Øð 8ð Ø×/Ñ/°Ó8ˆJð Ñ "Ø!‰HàÑ&Ü"ð>ó?ð?ð MÙØ×&Ñ&¨G¯L©L¸uÐ&ÐEØ#ô%ñ+¨:ÓG�ð Ñ Ø × Ñ  Ø1@Ø1@ð !ò Bð øô5!ó ,Ø'+Ò $ð ,ûô ó Þ'Ü"Ø;ó=ØBFðGðð  ûô&"ó MÜ'¨·±ÓAÀuÐLûð Mús=„A0E&Á5B E&ÄE8Ä')FÅ& E5Å4E5Å8FÆ F?Æ$F:Æ:F?cóö•[[S5(Ga[R"5S:XGaURnURnU(d€[ (a4UR (a#[ R"UR 5Sn[(a4UR(a#[R"UR5SnUcSnUcSnUR5(a-[[S5(a[R"X%U5 g[R"X%U5 ggg![a N³f=f![a Nƒf=f![[ 4an[#S5UeSnAff=f)zÇSet owner of targetpath according to tarinfo. If numeric_owner is True, use .gid/.uid instead of .gname/.uname. If numeric_owner is False, fall back to .gid/.uid when the search based on name fails. Úgeteuidrr/NrIÚlchownzcould not change owner)r³r®r£r5r4rr7Úgetgrnamròrr6Úgetpwnamršr¤rQrâÚ OverflowErrorr )rµrir�rAÚgÚur s rErQÚ TarFile.chownÊ s%€ô ”2�y× !Ò !¤b§j¢j£l°aÔ&7à— ‘ ˆAØ— ‘ ˆAÞ ðß’s˜wŸ}Ÿ}ÜŸLšL¨¯©Ó7¸Ñ:˜ðß’s˜wŸ}Ÿ}ÜŸLšL¨¯©Ó7¸Ñ:˜ð‰yØ�؉yØ�ð DØ—=‘=—?‘?¤w¬r°8×'<Ñ'<Ü—I’I˜j¨QÕ/ä—H’H˜Z¨AÕ.ð/'8Ð !øô óÙðûô  óÙðûôœ]Ð+ó Dä"Ð#;Ó<À!ÐCûð DúsCÁ?D7Â?EÃAEÄEÄ7 EÅEÅ EÅEÅE8Å' E3Å3E8cóž•URcg[R"X!R5 g![an[ S5UeSnAff=f)zASet file permissions of targetpath according to tarinfo. Nzcould not change mode)r·r®rSrâr )rµrir�r s rErSÚ TarFile.chmodì sD€ð �<‰<Ñ Ø ð ?Ü �HŠH�Z§¡Õ .øÜó ?ÜÐ6Ó7¸QÐ >ûð ?ús� 1± A » AÁA có¾•URnUcg[[S5(dg[R"X#U45 g![an[ S5UeSnAff=f)zBSet modification time of targetpath according to tarinfo. NrRz"could not change modification time)r3r³r®rRrâr )rµrir�r3r s rErRÚ TarFile.utimeö s[€ð— ‘ ˆØ ‰=Ø Ü”r˜7×#Ñ#Ø ð LÜ �HŠH�Z¨ Õ 0øÜó LÜÐCÓDÈ!Ð Kûð Lús¨AÁ AÁ AÁAcó¶•URS5 URbURnSUlU$URURR 5:wadURS:XagURR URS- 5 URR S5(d [S5eSnURRU5nUb.UR0(dUR2R5U5 U$SUlU$![a[nUR(a@URSSURU4-5 U=R[- slSnAM³SnAN›SnAf[a‚nUR(aAURSSURU4-5 U=R[- slSnAGMURS:Xa[[U55SeSnAGN%SnAf[ a URS:Xa [S 5SeGNQ["a0nURS:Xa[[U55SeSnAGN…SnAf[$an[[U55SeSnAf[&aEnSSKn[+X4R,5(a[S U35SeUe![.a Uef=fSnAff=f) zŠReturn the next member of the archive as a TarInfo object, when TarFile is opened for reading. Return None if there is no more available. ÚraNrr.rqTr/z0x%X: %sz empty filez zlib error: )rörÂr5rƒrrrurrirAr£r»r1r'rZrûrŸr¡r¦Ú ExceptionrØrørÜrÙr¹r¿r�rÀ)rµÚmrir rØs rErTÚ TarFile.next s]€ð � ‰ �DÔØ × Ñ Ñ 'Ø× Ñ ˆAØ#ˆDÔ ØˆHð �;‰;˜$Ÿ,™,×+Ñ+Ó-Ó -Ø�{‰{˜aÓØØ �L‰L× Ñ ˜dŸk™k¨A™oÔ .Ø—<‘<×$Ñ$ Q×'Ñ'ÜÐ 8Ó9Ð9ðˆØð ØŸ,™,×2Ñ2°4Ó8�ð< à Ñ à—;—;Ø— ‘ ×#Ñ# GÔ,ðˆð ˆDŒLàˆøôM"ó Ø×$×$Ø—I‘I˜a ¨t¯{©{¸AÐ.>Ñ!>Ô?Ø—K’K¤9Ñ,•KÝô%ûô&ó 6Ø×$×$Ø—I‘I˜a ¨t¯{©{¸AÐ.>Ñ!>Ô?Ø—K’K¤9Ñ,•KÞØ—[‘[ AÓ%Ü#¤C¨£FÓ+°Ð5õ&ûä#ó <Ø—;‘; !Ó#Ü# LÓ1°tÐ;ò$ä'ó 6Ø—;‘; !Ó#Ü#¤C¨£FÓ+°Ð5õ$ûä(ó 2ܤ A£Ó'¨TÐ1ûÜó ðÛÜ! !§Z¡Z×0Ñ0Ü'¨,°q°cÐ(:Ó;ÀÐEà˜øÜ"óØ�Gðþð úsbÃDÄ KÄ$A E:Å: KÆA HÇ%HÈ)KÈ0 KÈ9%I$É$ KÉ1JÊ KÊ/KË KËKËKcóê•UR5nSnUbURU5nUSUnU(a[RR U5n[ U5HnnU(aURUR:XaSnM(U(a*[RR UR5nO URnX:XdMlUs $ U(a [U5eg![a SnNÄf=f)zjFind an archive member by name from bottom to top. If tarinfo is given, it is used as the starting point. FNT) røÚindexr=r®r0r›Úreversedr5r¶) rµr¶riÚ normalizer¿ÚskippingrµržÚ member_names rErñÚTarFile._getmemberG sÚ€ð —/‘/Ó#ˆðˆØ Ñ ð *ØŸ ™  gÓ.�ð" & 5˜/�æ Ü—7‘7×#Ñ# DÓ)ˆDä˜wÖ'ˆFÞØ—>‘> V§]¡]Ó2Ø$�HÙÞÜ Ÿg™g×.Ñ.¨v¯{©{Ó;‘ à$Ÿk™k� àÕ"Ø’ ñ(ö ä˜WÓ%Ð %ð øô1ó ð ’ð ús—C#Ã# C2Ã1C2có€•UR(d-UR5bUR5bMSUlgg)zvRead through the entire archive file and look for readable members. This should not run if the file is set to stream. NT)r¹rTrÀr½s rEr÷Ú TarFile._loado s4€ð�{�{Ø—)‘)“+Ñ)Øð—)‘)“+Ó)àˆD�LðrGcó•UR(a"[SURR-5eUb)URU;a[SUR-5egg)z[Check if TarFile is still open, and if the operation's mode corresponds to TarFile's mode. z %s is closedNzbad operation for mode %r)r×rârjr“r·)rµr·s rEröÚTarFile._checkx sS€ð �;�;ܘ.¨4¯>©>×+BÑ+BÑBÓCÐ CØ Ñ  § ¡ °Ó 5ÜÐ5¸¿ ¹ ÑAÓBÐ Bð!6Ð rGcó0•UR5(aQSR[S[RR UR 5UR455nSnOURnUnURX#SS9nUc[SU-5eU$)zGFind the target member of a symlink or hardlink member in the archive. r�NT)rir·zlinkname %r not found) ršr‚r.r®r0rœr¶r�rñrò)rµrir�Úlimitržs rEruÚTarFile._find_link_target� s„€ð �=‰=�?‰?à—x‘x¤ t¬b¯g©g¯o©o¸g¿l¹lÓ.KÈW×M]ÑM]Ð-^Ó _Ó`ˆH؉Eð×'Ñ'ˆH؈Eà—‘ ÀD�ÐIˆØ ‰>ÜÐ2°XÑ=Ó>Ð >؈ rGc#óx# •UR(aURShv•N gSnURbUR5nUS- nUv• U[ UR5:aURUnO2UR(d UR5nU(dSUlgOgUS- nUv• MfN”7f)z$Provide an iterator object. Nrr.T)rÀr¿rÂrTr?)rµrµris rEÚ__iter__ÚTarFile.__iter__” s¯é€ð �<�<Ø—|‘|× #Ð #Ø ðˆð × Ñ Ñ 'Ø—i‘i“kˆGØ �Q‰JˆEØŠMàØ”s˜4Ÿ<™<Ó(Ó(ØŸ,™, uÑ-‘Ø—\—\ØŸ)™)›+�ÞØ#'�D”LØððØ �Q‰JˆEØŠMññ $ùs‚!B:£B8¤BB:cóT•XR::a[U[RS9 gg)z.Write debugging output to sys.stderr. ©ÚfileN)r¼rŽrŒÚstderr)rµÚlevelÚmsgs rEr1Ú TarFile._dbg³ s!€ð —J‘JÓ Ü �#œCŸJ™JÓ 'ð rGcó&•UR5 U$r»)rör½s rEÚ __enter__ÚTarFile.__enter__¹ s€Ø � ‰ Œ ؈ rGcó�•UcUR5 gUR(dURR5 SUlgrC)r¼rÑrƒr×)rµr¯râÚ tracebacks rEÚ__exit__ÚTarFile.__exit__½ s2€Ø ‰<Ø �J‰J�Lð×#×#Ø— ‘ ×"Ñ"Ô$؈D�KrG)rÑrÀrµr×r¾r¼rºrCr½rDrƒrÂrcr»rÁr¿r·r¶r5r²r¹ri)Nr«NNNNNNrÜNNNNF)r«N)r«NrÐ)r«NN)NNN©TrCr»)Ú.N)rÉT)TFrG)Br“r”r•r–r—r¼rºr»r½rrcr rCrDrrircrsr;r¸r«rîrrÈrárærërÉr¼rórørûrror4r2r?rYrNr`rJrKrTrcrtrhr|r{r€r}r~r—rrQrSrRrTrñr÷rörurÃr1rÍrÑr˜r‘rGrErrÒsæ†ñð €Eà€Kð€Lð€Jð€Fà€Hà €Fà€Gà€JàÐàAEØHLØ>BØ6;ôdðbØ #¨t¸Zó]/óð]/ð~ó2óð2ðóóðð@óóðð6óóðð:ØØØñ €Iò%ò* òò?ô aðF*¨Dö*ðX1"Àö1"ôf%ò<Gð0C/À%ØöC/òJ)ð?ÈØö?ò*$ð>&*ô+ò(,ò Còð@>BØ&+ð10Ø@DØ(,ö10òp òNò Bò?òAò$Jò6Bòp DòD?ò Lò>ôF&&òP ôCòò&ò>(ò õrGrcóÔ•[US5(a+UR5n[US9nURU5 O [U5nUR 5 g![ a gf=f)z’Return True if name points to a tar archive that we are able to handle, else return False. 'name' should be a string, file, or file-like object. ru)rƒTF)r³rrrr¼r)r¶rÖrs rErrË s[€ð Ü �4˜× Ñ Ø—)‘)“+ˆCܘTÑ"ˆAØ �I‰I�c�Nä�T“ ˆAØ �‰Œ ØøÜ óÙðús‚AAÁ A'Á&A'c óô•SSKnSnURUS9nURSSSSSS 9 URS S [S S 9 UR SS9nURSSSSS9 URSSSSSS9 URSSSSSS9 URSS SS!S9 UR 5nUR (aURcURS"S#5 URb¶URn[U5(ax[US$5nUR5 [UR5[RS%9 SSS5 UR (a[S&R#U55 ggURS"S'R#U55 gUR$bwUR$n[U5(a9[&RUS(5nUR%UR S)9 SSS5 gURS"S'R#U55 gURGb3[)UR5S":Xa URSn[*R,nOH[)UR5S*:XaURupXO URS"UR/55 [W5(a€[&RUS(5nUR1WUR S+9 SSS5 UR (a5WS,:XaS-R#U5n OS.R#XX5n [U 5 ggURS"S'R#U55 gUR2bÆUR2R5S5n [*R6R9U 5up¼S/S/S0S0S1S1S1S1S2.n XÍ;aS3XÜ-OS4nUR2n[&RX®5nUHnUR;U5 M SSS5 UR (a[S5R#U 55 ggg!,(df  GN÷=f!,(df  g=f!,(df  GNo=f!,(df  Nq=f)6Nrz3A simple command-line interface for tarfile module.)Ú descriptionz-vz --verboseÚ store_trueFzVerbose output)ÚactionÚdefaultÚhelpz--filterz zFilter for extraction)ÚmetavarÚchoicesrÛT)Úrequiredz-lz--listú zShow listing of a tarfile)rÜrÛz-ez --extractÚ+)rßz zExtract tarfile into target dir)ÚnargsrÜrÛz-cz--create)zzzCreate tarfile from sourcesz-tz--testzTest if a tarfile is validr.z&--filter is only valid for extraction r«rÆz{!r} is a tar archive.z{!r} is not a tar archive. rÆ)r)r/)r0r.rÔz{!r} file is extracted.z+{!r} file is extracted into {!r} directory.rÊrÍrË)rïz.tgzz.xzz.txzz.bz2z.tbzz.tbz2z.tb2zw:r¬z{!r} file created.)ÚargparseÚArgumentParserÚ add_argumentr>Úadd_mutually_exclusive_groupÚ parse_argsr.r`ÚexitÚtestrrrørŽrŒrÈr)rcrorr?r®ÚcurdirÚ format_helprYÚcreaterÒr0Úsplitextr4)râr×Úparserr`ÚargsrwrÏÚtfrérÊÚtar_namerrÚextÚ compressionsÚtar_modeÚ tar_filesÚ file_names rEÚmainröà sÙ€ÛàG€KØ × $Ñ $°Ð $Ð =€FØ ×ј˜k°,ÈØ-ðñ/à ×ј ¨NÜ .Ø4ðñ6ð × /Ñ /¸Ð /Ð >€EØ ×Ñ�t˜X¨{Ø7ðñ9à ×Ñ�t˜[°Ø<Ø=ðñ?ð ×Ñ�t˜Z¨sØ3Ø9ðñ;ð ×Ñ�t˜X¨{Ø8ðñ:ð × Ñ Ó €Dà ‡{‡{�t—|‘|Ñ+Ø� ‰ �AÐ@ÔAà ‡y�yÑØ�i‰iˆÜ �c�?‰?Ü�c˜3” 3Ø—‘Ô Ü�c—n‘nÓ&¬S¯Z©ZÒ8÷ ð�|�|ÜÐ.×5Ñ5°cÓ:Õ;ðð �K‰K˜Ð9×@Ñ@ÀÓEÕ Fà �‰Ñ Ø�i‰iˆÜ �c�?‰?Ü—‘˜c 5Ô)¨RØ—‘ § ¡ �Ñ-÷*Ð)ð �K‰K˜Ð9×@Ñ@ÀÓEÕ Fà �‰Ò !Ü ˆt�|‰|Ó  Ó !Ø—,‘,˜q‘/ˆCÜ—Y‘Y‰FÜ �—‘Ó  !Ó #ØŸ,™,‰KˆC�à �K‰K˜˜6×-Ñ-Ó/Ô 0ä �c�?‰?Ü—‘˜c 5Ô)¨RØ— ‘  6°$·+±+� Ñ>÷*à�|�|ؘS“=Ø3×:Ñ:¸3Ó?‘Cð2ß39±6¸#Ó3Fðä�c• ð ð �K‰K˜Ð9×@Ñ@ÀÓEÕ Fà �‰Ñ Ø—;‘;—?‘? 1Ó%ˆÜ—‘×!Ñ! (Ó+‰ˆðØàØàØØØñ  ˆ ð03Ó/B�4˜,Ñ+Ò+ȈؗK‘Kˆ ä �\‰\˜(Ô -°Û&� Ø—‘�yÖ!ñ'÷.ð �<�<Ü Ð&×-Ñ-¨hÓ7Õ 8ð ð/ !÷M –ú÷*Õ)ú÷*Ö)ú÷>.Õ -ús0Ä 7P4ÇQËQÏ#Q)Ð4 QÑ QÑ Q&Ñ) Q7Ú__main__rÓ)or—ÚversionÚ __author__Ú __credits__Úbuiltinsrr·rŒr®rQrrrr÷rjrÒÚrerrÙrÚAttributeErrorÚNotImplementedErrorrâržÚ__all__r@r'rîrïrèrêrér r·r5r–r“rrrØrŸÚCONTTYPEròrñr6rýrrIrrrrrNrŠr8r~rcrùrXrr¶r ÚgetfilesystemencodingrFrMr]rerorsrr†r�r±rr rr r r rŸr¡r£rZr¦r¨rÆÚobjectrÒr3ÚBufferedReaderrcrrrrrrrrMr¥rrrr>rÐÚcompiler^rrrrör“r‘rGrEÚrs²ðñ:ð€Ø6€ ØH€ õ 'Û Û Û Û Û Û Û Û Û ðÛðÛð$Ð%8¸'ÐBÐò ?€ð €Ø € Ø ˜‰^€ Ø € Ø€ à€ Ø€ Ø€ à €Ø €Ø €Ø €Ø €Ø €Ø €Ø €Ø €àÐØÐØ€à €Ø €Ø€à€ Ø € Ø € Ø€ð ˜H gؘG XؘW gØ#Ð%5Ø!ð #€ð˜(ؘ>ð+€ ðÐ/Ø ð € ð.€ ò9€ð Ø Ø Ø Ø Ø ñ Ðð‡7�7ˆdƒ?Ø�Hà×(Ò(Ó*€Hò 0ò&ò ð(˜Nô ò< *ð"&°À$ô ð>$Ðòò$ô ˆyô ô �8ô ô �ô ô �xô ô �(ô ô �(ô ô �{ô ô ˜;ô ô �[ô ô ˜ô ô ˜Kô ÷ñ÷0tñtôn�6ôô