+
    i c                   s   R t RtRt^ RIHt ^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt ^ RIt ^ RIt]]]3t. RcOtRtRt]^,          tRtRt^dt^dt^tRtRt Rt!Rt"Rt#Rt$Rt%Rt&Rt'R t(R!t)R"t*R#t+R$t,R%t-^ t.^t/^t0]0t1]] ]!]"]%]&]']#]$](])]*3t2]] ]']*3t3](])]*3t4Rdt50 Remt6R*]7R+]7R']7R(]8R)]8R&]8/t9]Pt                  R,8X  d   R-t;M]Px                  ! 4       t;R. t=R/ t>R0 t?^]13R1 lt@R2 tAR]R3R3 ltBR4 tC ! R5 R]D4      tE ! R6 R]E4      tF ! R7 R]E4      tG ! R8 R	]E4      tH ! R9 R
]E4      tI ! R: R]E4      tJ ! R; R<]J4      tK ! R= R>]J4      tL ! R? R@]J4      tM ! RA RB]J4      tN ! RC RD]J4      tO ! RE RF4      tP ! RG RH4      tQ ! RI RJ]R4      tS ! RK RL]R4      tT ! RM RN]P                  4      tV ! RO R]E4      tW ! RP R]W4      tX ! RQ R]W4      tY ! RR R]W4      tZ ! RS R]W4      t[ ! RT R]W4      t\ ! RU R]W4      t]]W]]F3t^RfRV lt_RW t`RX taRY tbRZ]`R[]aR\]b/tc]R! 4       td]P                  ! R]4      tf ! R^ R]R4      tg ! R_ R]R4      thR` ti]hP                  tRa tj]kRb8X  d
   ]j! 4        R# R#   ] d    Rt EL:i ; i  ] d    Rt ELEi ; i)gz0.9.0u"   Lars Gustäbel (lars@gustaebel.de)u4   Gustavo Niemeyer, Niels Gustäbel, Richard Townsend.)openNTarFileTarInfoTarError	ReadErrorCompressionErrorStreamErrorExtractErrorHeaderErrorFilterErrorAbsoluteLinkErrorOutsideDestinationErrorSpecialFileErrorAbsolutePathErrorLinkOutsideDestinationErrorLinkFallbackError    i   s   ustar   s   ustar 00s   0s   1s   2s   3s   4s   5s   6s   7s   Ls   Ks   Ss   xs   gs   XsizemtimeuidgidZatimeZctimeZntutf-8c                 s    V f   \        R4      hV P                  W#4      p V R V V\        V 4      ,
          \        ,          ,           # )Nzmetadata cannot contain None)
ValueErrorencodelenNUL)slengthencodingerrors   &&&& /usr/lib64/python3.14/tarfile.pystnr       sA     	y788	"AWf:#a&C///    c                 s^    V P                  R 4      pVR8w  d   V RV p V P                  W4      # )r   N)Zfinddecode)r   r   r   p   &&& r   ntsr&      s2     	
uABwbqE88H%%r!   c                 s   V ^ ,          R9   du   ^ p\        \        V 4      ^,
          4       F"  pV^,          pWV^,           ,          ,          pK$  	  V ^ ,          ^8X  d"   R\        V 4      ^,
          ,          V,
          ) pV#  \        V RR4      p \        V P	                  4       ;'       g    R^4      pV#   \
         d    \        R4      hi ; i)       asciistrict0invalid header)i   i   )ranger   r&   intZstripr   InvalidHeaderError)r   ni   &  r   ntir3      s    
 	t~s1vz"A!GA1q5MA # Q45=#a&1*%)*A H	7Aw)AAGGI$$a(A H  	7$%566	7s   (B7 -B7 7Cc                 s   T p\        V 4      p ^ T u;8:  d   ^V^,
          ,          8  d-   M M)\        RV^,
          V 3,          R4      \        ,           pV# V\        8X  d   RV^,
          ,          ) T u;8:  d   RV^,
          ,          8  dq   M MmV ^ 8  d   \	        ^.4      pM\	        ^.4      pRV,          V ,           p \        V^,
          4       F%  pVP                  ^V ^,          4       V ^,          p K'  	  V# \        R4      h)r'   z%0*or)   r(   zoverflow in number field)r.   bytesr   
GNU_FORMATZ	bytearrayr-   Zinsertr   )r0   digitsformatZ
original_nr   r1   s   &&&   r   itnr8      s     JAAA!fqj!!&FQJ?*G4s: H 
:	36A:#6"6!"Qcfqj>Q"Q65'"A5'"Av!Avz"AHHQE	"!GA # H 344r!   c                 s    R \        \        P                  ! RV 4      4      ,           pR \        \        P                  ! RV 4      4      ,           pW3# )r(   Z
148B8x356BZ
148b8x356b)ZsumstructZunpack_from)bufZunsigned_chksumZsigned_chksumr2   r   calc_chksumsr;      sE     C 2 2< EFFO#f00sCDDM))r!   c                 s   T;'       g    RpV^ 8X  d   R# Vf   \         P                  ! WV4       R# \        W$4      w  rV\        V4       F=  pV P	                  V4      p\        V4      V8  d	   V! R4      hVP                  V4       K?  	  V^ 8w  d;   V P	                  V4      p\        V4      V8  d	   V! R4      hVP                  V4       R# )i   Nunexpected end of datai @  )shutilcopyfileobjdivmodr-   readr   write)	srcZdstr   	exceptionbufsizeblocks	remainderbr:   	   &&&&&    r   r>   r>      s     ""G{~3W-v/F6]hhws8g455		#	  A~hhy!s8i455		#
r!   c                 s    \        \        P                  R R4      pVe"   V P                  VR4      P	                  V4      p \        V RR7       R# )r   NZbackslashreplace )end)getattrsysZstdoutr   r#   print)r   r      & r   _safe_printrO     s@    szz:t4HHHX1299(C	!r!   c                       ] tR tRtRtR# )r   i   N__name__
__module____qualname____firstlineno____static_attributes__rQ   r!   r   r   r         r!   c                   rP   )r   i  rQ   NrR   rQ   r!   r   r   r     rX   r!   c                   rP   )r   i  rQ   NrR   rQ   r!   r   r   r     rX   r!   c                   rP   )r   i  rQ   NrR   rQ   r!   r   r   r     rX   r!   c                   rP   )r   i  rQ   NrR   rQ   r!   r   r   r     rX   r!   c                   rP   )r   i  rQ   NrR   rQ   r!   r   r   r     rX   r!   c                   rP   )EmptyHeaderErrori  rQ   NrR   rQ   r!   r   rY   rY     rX   r!   rY   c                   rP   )TruncatedHeaderErrori!  rQ   NrR   rQ   r!   r   rZ   rZ   !  rX   r!   rZ   c                   rP   )EOFHeaderErrori$  rQ   NrR   rQ   r!   r   r[   r[   $  rX   r!   r[   c                   rP   )r/   i'  rQ   NrR   rQ   r!   r   r/   r/   '  rX   r!   r/   c                   rP   )SubsequentHeaderErrori*  rQ   NrR   rQ   r!   r   r\   r\   *  rX   r!   r\   c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )_LowLevelFilei1  c                s>   R \         P                  R\         P                  \         P                  ,          \         P                  ,          /V,          p\        \         R4      '       d   V\         P                  ,          p\         P                  ! WR4      V n        R# )rwO_BINARYi  N)	osZO_RDONLYZO_WRONLYZO_CREATZO_TRUNChasattrra   r    fd)selfnamemode   &&&r   __init__Z_LowLevelFile.__init__7  sf    rzz)BJJ6
  2z""BKKD''$e,r!   c                sF    \         P                  ! V P                  4       R # N)rb   closerd   re      &r   rk   Z_LowLevelFile.close@  s    
r!   c                sD    \         P                  ! V P                  V4      # rj   )rb   r@   rd   re   r      &&r   r@   Z_LowLevelFile.readC  s    wwtww%%r!   c                sH    \         P                  ! V P                  V4       R # rj   )rb   rA   rd   re   r   ro   r   rA   Z_LowLevelFile.writeF  s    
!r!   )rd   N)
rS   rT   rU   rV   ri   rk   r@   rA   rW   __classdictcell____classdict__   @r   r^   r^   1  s     -& r!   r^   c                   sl   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tRR
 ltR tR tR tRtV tR# )_StreamI  c                s|   R V n         Vf   \        W4      pRV n         VR8X  d   \        V4      pVP                  4       pVe   \        P
                  ! V4      MRV n        W n        W0n        W@n	        WPn
        RV n        ^ V n        RV n         VR8X  d_    ^ RIpYn        TP#                  R4      T n        TR8X  d$   TP&                  T n        T P+                  4        R# T P-                  T4       R# VR	8X  dN    ^ RIp	TR8X  d*   RT n        T	P3                  4       T n        \6        T n        R# T	P9                  T4      T n        R# VR8X  dU    ^ RIp
TR8X  d0   RT n        T
P=                  4       T n        T
P>                  T n        R# T
PA                  TR7      T n        R# VR8X  dU    ^ RI!H"p TR8X  d0   RT n        TPG                  4       T n        TPH                  T n        R# TPK                  4       T n        R# VR8w  d   \!        RV,          4      hR#   \         d    \!        R4      Rhi ; i  \         d    \!        R
4      Rhi ; i  \         d    \!        R4      Rhi ; i  \         d    \!        R4      Rhi ; i   T P                   '       g   T P                  PM                  4        R T n        h ; i)TNFZ* r!   gzzzlib module is not availabler_   bz2bz2 module is not availablexzlzma module is not availablepresetzst)zstd(compression.zstd module is not availabletarunknown compression type %r)'_extfileobjr^   _StreamProxygetcomptyperb   Zfspathrf   rg   comptypefileobjrD   r:   posclosedzlibImportErrorr   crc32crcerrorrC   _init_read_gz_init_write_gzry   dbufZBZ2DecompressorcmpOSErrorZBZ2CompressorlzmaZLZMADecompressor	LZMAErrorZLZMACompressorZcompressionr   ZZstdDecompressor	ZstdErrorZZstdCompressorrk   )re   rf   rg   r   r   rD   compresslevelr~   r   ry   r   r   s   &&&&&&&&    r   ri   Z_Stream.__init__U  s     ?#D/G$Ds? #7+G**,H+/+;		$		 7	4U !	::c?3;%)ZZDN&&(''6U"T 3; #DI"224DH%,DN"00?DHT!U 3; #DI#446DH%)^^DN#22&2ADHU"a0 3; #DI#446DH%)^^DN#224DHU"&'Dx'OPP #Y # U*+IJPTTU # T*+HItST # U*+IJPTTU # a*+UV\``a	###""$DKs   J H AJ !J 4J <H4  .J 0J J I 4J 
J #J +I* 14J 'J >J H11J 4IJ I''J *JJ 6J;c                sv    \        V R 4      '       d'   V P                  '       g   V P                  4        R# R# R# )r   N)rc   r   rk   rl   rm   r   __del__Z_Stream.__del__  s(    4""4;;;JJL ,7"r!   c                s   V P                   P                  VV P                   P                  V P                   P                  ) V P                   P                  ^ 4      V n        \        P                  ! R\        \        P                  ! 4       4      4      pV P                  RV,           R,           4       V P                  P                  R4      '       d   V P                  RR V n        \        P                  P                  V P                  4      V n        V P                  V P                  P!                  RR4      \"        ,           4       R# )	r'   <Ls   s   .gzNz
iso-8859-1replacei)r   ZcompressobjZDEFLATED	MAX_WBITSZDEF_MEM_LEVELr   r9   packr.   time_Stream__writerf   endswithrb   pathZbasenamer   r   )re   r   Z	timestamp   && r   r   Z_Stream._init_write_gz  s     99(()-););*.))*=*=)=)-)@)@)*	,
 KKc$))+&67	(94{BC99e$$		#2DIGG$$TYY/	TYY%%lI>DEr!   c                s:   V P                   R 8X  d+   V P                  P                  WP                  4      V n        V ;P                  \        V4      ,          un        V P                   R8w  d   V P                  P                  V4      pV P                  V4       R# )rx   r   N)	r   r   r   r   r   r   r   Zcompressr   rp   ro   r   rA   Z_Stream.write  se     ==D yyq((3DHCF==E!!!!$AQr!   c                s$   V ;P                   V,          un         \        V P                   4      V P                  8  dS   V P                  P	                  V P                   R V P                   4       V P                   V P                  R  V n         Kv  R # rj   )r:   r   rD   r   rA   rp   ro   r   Z__writeZ_Stream.__write  sa     	A$((mdll*LLtxx67xx.DH +r!   c                sZ   V P                   '       d   R # RV n          V P                  R8X  dC   V P                  R8w  d2   V ;P                  V P                  P                  4       ,          un        V P                  R8X  d   V P                  '       d   V P                  P                  V P                  4       RV n        V P                  R8X  d|   V P                  P                  \        P                  ! RV P                  4      4       V P                  P                  \        P                  ! RV P                  R,          4      4       V P                  '       g   V P                  P                  4        R # R #   T P                  '       g   T P                  P                  4        i i ; i)NTr`   r   r!   rx   r   l    )r   rg   r   r:   r   flushr   rA   r9   r   r   r   r   rk   rl   rm   r   rk   Z_Stream.close  s    ;;;	%yyCDMMU$:DHHNN,,yyCDHHH""488,==D(LL&&v{{4'BCLL&&v{{4J9N'OP###""$ $4###""$ $s   A5E; B8E; ;/F*c                s8   V P                   P                  V P                   P                  ) 4      V n        R V n        V P                  ^4      R8w  d   \        R4      hV P                  ^4      R8w  d   \        R4      h\        V P                  ^4      4      pV P                  ^4       V^,          '       dR   \        V P                  ^4      4      R\        V P                  ^4      4      ,          ,           pV P                  V4       V^,          '       d)    V P                  ^4      pV'       d   V\        8X  g   K'   V^,          '       d)    V P                  ^4      pV'       d   V\        8X  g   K'   V^,          '       d   V P                  ^4       R# R# )r!   s   not a gzip files   zunsupported compression methodr(   N)r   Zdecompressobjr   r   r   _Stream__readr   r   Zordr@   r   )re   ZflagZxlenr   s   &   r   r   Z_Stream._init_read_gz  s%    99**DII,?,?+?@	 ;;q>[(-..;;q>W$"#CDD4;;q>"A!88t{{1~&s4;;q>/B)BBDIIdO!88KKNAH"99KKNAH!88KKN r!   c                    V P                   # rj   )r   rl   rm   r   tellZ_Stream.tell  s     xxr!   c                s*   WP                   ,
          ^ 8  ds   \        WP                   ,
          V P                  4      w  r#\        V4       F  pV P	                  V P                  4       K   	  V P	                  V4       V P                   # \        R4      h)r'   z seeking backwards is not allowed)r   r?   rD   r-   r@   r   )re   r   rE   rF   r1      &&   r   seekZ_Stream.seek  sn     >Q &sXX~t|| DF6]		$,,' #IIi  xx @AAr!   c                sl    V P                  V4      pV ;P                  \        V4      ,          un        V# rj   )_readr   r   )re   r   r:   r   r   r@   Z_Stream.read  s)     jjCH
r!   c                sH   V P                   R 8X  d   V P                  V4      # \        V P                  4      pV P                  .pW!8  d   V P                  '       d   V P                  pRV n        M.V P
                  P                  V P                  4      pV'       g   MA V P                  P                  V4      pTP                  T4       T\        T4      ,          pK  RP                  V4      pW1R V n        VRV #   T P                   d   p\        R4      ThRp?ii ; i)r   r!   zinvalid compressed dataN)r   r   r   r   r:   r   r@   rD   r   Z
decompressrC   r   appendjoin)re   r   ctr:   es   &&    r   r   Z_Stream._read  s     ==E!;;t$$		NYYKhxxxhhll''5Bhh))#. HHSMSMAHHQKeH	$x >> B 9:ABs    C? ?D!DD!c                s6   \        V P                  4      pV P                  .pW!8  dT   V P                  P                  V P                  4      pV'       g   M%VP                  V4       V\        V4      ,          pKY  R P                  V4      pW1R V n        VRV # )r!   N)r   r:   r   r@   rD   r   r   )re   r   r   r   r:   r   r   Z__readZ_Stream.__read7  sz     MXXJh,,##DLL1CHHSMSMAHHQKU8$xr!   )r   r:   rD   r   r   r   r   r   rC   r   rg   rf   r   r   Nr'   )rS   rT   rU   rV   ri   r   r   rA   r   rk   r   r   r   r@   r   r   rW   rq   rr   rt   r   ru   ru   I  sI     ObF"/%,>
6 r!   ru   c                   r]   )r   iH  c                sZ    Wn         V P                   P                  \        4      V n        R # rj   )r   r@   	BLOCKSIZEr:   )re   r   ro   r   ri   Z_StreamProxy.__init__M  s    <<$$Y/r!   c                sP    V P                   P                  V n        V P                  # rj   )r   r@   r:   rn   ro   r   r@   Z_StreamProxy.readQ  s    LL%%	xxr!   c                s<   V P                   P                  R 4      '       d   R# V P                   R,          R8X  d   V P                   R,          R8X  d   R# V P                   P                  R4      '       d   R# V P                   P                  R4      '       d   R	# R
# )s   rx   :r'   i   Ns   BZh:i   i
   Ns   1AY&SYry   r{   s   (/r   r   )s   ]  s   7zXZ)r:   
startswithrl   rm   r   r   Z_StreamProxy.getcomptypeU  sq    88//XXc]f$$9)DXX  !CDDXX  !455r!   c                s:    V P                   P                  4        R # rj   )r   rk   rl   rm   r   rk   Z_StreamProxy.closea  s    r!   )r:   r   r@   N)
rS   rT   rU   rV   ri   r@   r   rk   rW   rq   rr   rt   r   r   r   H  s     
0
 r!   r   c                   s   a  ] tR tRt o RR ltR t]R 4       tR tR t	R t
R	 t]P                  3R
 ltRR ltR tR tRtV tR# )_FileInFileih  Nc                s   Wn         W n        W0n        ^ V n        W@n        RV n        Vf   ^ V3.p^ V n        . V n        ^ pV P                  pV F^  w  r#W&8  d   V P                  P                  RWbR34       V P                  P                  RW"V,           V34       Ws,          pW#,           pK`  	  W`P                  8  d+   V P                  P                  RW`P                  R34       R# R# )r'   FNT)	r   offsetr   positionrf   r   	map_indexmapr   )re   r   r   r   rf   Z	blockinfoZlastposZrealposs   &&&&&&  r   ri   Z_FileInFile.__init__n  s    		TI ++%LF >?HHOOT6D='BCOGmG & YYHHOOUGYY=> r!   c                    R # rj   rQ   rl   rm   r   r   Z_FileInFile.flush  s    r!   c                r   )rbrQ   rl   rm   r   rg   Z_FileInFile.mode  s    r!   c                r   TrQ   rl   rm   r   readableZ_FileInFile.readable  s    r!   c                r   )FrQ   rl   rm   r   writableZ_FileInFile.writable  s    r!   c                s6    V P                   P                  4       # rj   )r   seekablerl   rm   r   r   Z_FileInFile.seekable  s    ||$$&&r!   c                r   rj   )r   rl   rm   r   r   Z_FileInFile.tell       }}r!   c                sX   V\         P                  8X  d2   \        \        V^ 4      V P                  4      V n        V P
                  # V\         P                  8X  do   V^ 8  d/   \        V P
                  V,           ^ 4      V n        V P
                  # \        V P
                  V,           V P                  4      V n         V P
                  # V\         P                  8X  dC   \        \        V P                  V,           V P                  4      ^ 4      V n        V P
                  # \        R4      h)r'   zInvalid argument)	ioSEEK_SETminZmaxr   r   ZSEEK_CURZSEEK_ENDr   )re   r   Zwhencerh   r   r   Z_FileInFile.seek  s     R[[ Ha 0$))<DM }} r{{"!| #DMMH$<a @ }} !$DMMH$<dii H
 }}	 r{{"DII$8$)) DaHDM }} /00r!   c                sN   Vf   V P                   V P                  ,
          pM&\        WP                   V P                  ,
          4      pRpV^ 8  EdS    V P                  V P                  ,          w  r4rVW@P                  u;8:  d   V8  d   M MMHV ;P                  ^,          un        V P                  \        V P                  4      8X  g   K|  ^ V n        K  \        WV P                  ,
          4      pV'       dr   V P                  P                  W`P                  V,
          ,           4       V P                  P                  V4      p\        V4      V8w  d   \        R4      hW(,          pMV\        V,          ,          pW,          pV ;P                  V,          un        EKZ  V# )Nr!   r<   )r   r   r   r   r   r   r   r   r@   r   r   )	re   r   r:   datastartZstopr   r   rG   s	   &&       r   r@   Z_FileInFile.read  s$    <99t}},DtYY67DQh,0HHT^^,D)TMM0D0NNa'N~~TXX6)*dmm34F!!&MME,A"BCLL%%f-q6V##$<==sV|#NDMMV#MM
r!   c                sf    V P                  \        V4      4      pW!R \        V4      % \        V4      # rj   )r@   r   )re   rG   r:   r   r   readintoZ_FileInFile.readinto  s*    iiA)3s83xr!   c                s    R V n         R# )TN)r   rl   rm   r   rk   Z_FileInFile.close  s	    r!   )r   r   r   r   rf   r   r   r   rj   )rS   rT   rU   rV   ri   r   propertyrg   r   r   r   r   r   r   r   r@   r   rk   rW   rq   rr   rt   r   r   r   h  sY     ?2  '
 %'KK  >
 r!   r   c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )ExFileObjecti  c                s   < \        VP                  VP                  VP                  VP                  VP
                  4      p\        SV `  V4       R # rj   )r   r   offset_datar   rf   sparsesuperri   )re   tarfiletarinfor   	__class__s   &&& r   ri   ZExFileObject.__init__  s;    goow/B/BgllGNN<!r!   rQ   rS   rT   rU   rV   ri   rW   rq   Z__classcell__r   rs      @@r   r   r     s     " "r!   r   c                   rP   )r	   i  rQ   NrR   rQ   r!   r   r	   r	     s    r!   c                   r   )r   i  c                sP   < Wn         \        SV `	  R VP                  : R24       R# )zmember z has an absolute pathNr   r   ri   rf   re   r   r      &&r   ri   ZAbsolutePathError.__init__  s$    77<<"22GHIr!   r   r   r   r   r   r   r     s     J Jr!   c                   r   )r   i  c                p   < Wn         W n        \        SV `  VP                  : R V: R2R,           4       R# )z would be extracted to ,  which is outside the destinationNr   _pathr   ri   rf   re   r   r   r      &&&r   ri   Z OutsideDestinationError.__init__  s7    
GLL++B4("M=> 	?r!   r   r   r   r   r   r   r   r          ? ?r!   c                   r   )r   i  c                N   < Wn         \        SV `	  VP                  : R 24       R# )z is a special fileNr   r   r   r   ri   ZSpecialFileError.__init__  s"    GLL++=>?r!   r   r   r   r   r   r   r     s     @ @r!   c                   r   )r
   i  c                r   )z is a link to an absolute pathNr   r   r   r   ri   ZAbsoluteLinkError.__init__  s"    GLL++IJKr!   r   r   r   r   r   r
   r
     s     L Lr!   c                   r   )r   i  c                r   )z would link to r   r   Nr   r   r   r   ri   Z$LinkOutsideDestinationError.__init__  s6    
GLL+?4("E=> 	?r!   r   r   r   r   r   r   r     r   r!   c                   r   )r   i  c                st   < Wn         W n        \        SV `  R VP                  : R2RV: R2,           4       R# )zlink z would be extracted as a zcopy of z, which was rejectedNr   r   r   r   ri   ZLinkFallbackError.__init__  s?    
5 00IJ%dX-ABC 	Dr!   r   r   r   r   r   r   r     s     D Dr!   c                 s   / pV P                   p\        P                  P                  V\        P                  P                  R 7      pVP                  R\        P                  34      '       d5   V P                  P                  R\        P                  ,           4      ;qCR&   \        P                  P                  V4      '       d   \        V 4      h\        P                  P                  \        P                  P                  W4      \        P                  P                  R 7      p\        P                  P                  WQ.4      V8w  d   \        W4      hV P                  pVe   VR,          pV'       d   V P                  4       '       g   V P                  4       '       d#   V^@,          '       g
   VR,          pVR,          pM:V P!                  4       '       g   V P#                  4       '       d   RpM\%        V 4      hW`P                  8w  d   WcR&   V'       Ed   V P&                  e   RVR&   V P(                  e   RVR&   V P*                  e   RVR	&   V P,                  e   RVR
&   V P                  4       '       g   V P#                  4       '       Edj   \        P                  P                  V P.                  4      '       d   \1        V 4      h\        P                  P3                  V P.                  4      pWpP.                  8w  d   WsR&   V P#                  4       '       dJ   \        P                  P                  V\        P                  P5                  V4      V P.                  4      pM*\        P                  P                  VV P.                  4      p\        P                  P                  V\        P                  P                  R 7      p\        P                  P                  WQ.4      V8w  d   \7        W4      hV# )r*   /rf   Ni    rg   r   r   unamegnamelinknamei)rf   rb   r   ZrealpathZALLOW_MISSINGr   seplstripZisabsr   r   Z
commonpathr   rg   isregislnkisdirissymr   r   r   r   r   r   r
   normpathdirnamer   )member	dest_pathZfor_data	new_attrsrf   Ztarget_pathrg   Z
normalized   &&&     r   _get_filtered_attrsr     s   I;;D  2773H3H II RVV}%%#);;#5#5cBFFl#CC 	ww}}T  ''''""277<<	#@*,''*?*? # AK	ww;23y@%f::;;De|||~~e||FND6<<>> 'v..;; $fx::!#Ie::!#Ie<<#!%Ig<<#!%Ig<<>>V\\^^ww}}V__--'//))&//:J__,(2*%||~~ ggll9+-77??4+@+1??< !ggll9+1??<''**;24''2G2G + IKww!!;":;yH1&FFr!   c                 s    V # rj   rQ   )r   r   ro   r   fully_trusted_filterr   Q  s    Mr!   c                 sZ    \        WR 4      pV'       d   V P                  ! R/ VBRR /B # V # )FdeeprQ   r   r   r   r   r   r   r   
tar_filterr   T  s-    #Fu=I~~6	666Mr!   c                 sZ    \        WR 4      pV'       d   V P                  ! R/ VBRR/B # V # )Tr   FrQ   r   r   r   r   data_filterr   Z  s-    #Ft<I~~6	666Mr!   Zfully_trustedr   r   s   ([0-9]{1,20}) c                   s  a  ] tR tRt o ]! RX/ RRbRRbRRbRR	bR
RbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbR R!bR"R#bR$R%bR&R%bR'R%b tRYR( lt]R) 4       t]P                  R* 4       t]R+ 4       t
]
P                  R, 4       t
]R- 4       t]P                  R. 4       tR/ tR]R]R]R]R]R]R]R]R0R1R2]/
R3 ltR4 t]]R53R6 ltR7 tR8 tR9 t]R: 4       tR; t]R< 4       t]R= 4       t]R> 4       t]R? 4       t]R@ 4       t]RA 4       tRB t RC t!RD t"RE t#RF t$RG t%RH t&RI t'RJ t(RK t)RL t*RM t+RN t,RO t-RP t.RQ t/RR t0RS t1RT t2RU t3RV t4RWt5V t6R%# )Zr   ip  rf   zName of the archive member.rg   zPermission bits.r   z6User ID of the user who originally stored this member.r   z7Group ID of the user who originally stored this member.r   zSize in bytes.r   zTime of last modification.chksumzHeader checksum.typezFile 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.r   z
User name.r   zGroup name.devmajorzDevice major number.devminorzDevice minor number.r   zThe tar header starts here.r   zThe file's data starts here.pax_headerszMA dictionary containing key-value pairs of an associated pax extended header.r   zSparse member information._tarfileN_sparse_structs_link_targetc                s    Wn         R V n        ^ V n        ^ V n        ^ V n        ^ V n        ^ V n        \        V n        RV n	        RV n
        RV n        ^ V n        ^ V n        ^ V n        ^ V n        RV n        / V n        R# )i  rw   N)rf   rg   r   r   r   r   r   REGTYPEr   r   r   r   r   r   r   r   r   r   re   rf   ro   r   ri   ZTarInfo.__init__  s{     			
	

r!   c                sR    ^ RI pVP                  R\        ^R7       V P                  # r'   N)Z
stacklevelzhThe undocumented "tarfile" attribute of TarInfo objects is deprecated and will be removed in Python 3.16warningsZwarnZDeprecationWarningr   )re   r  rN   r   r   TarInfo.tarfile  s-    A1 	 	. }}r!   c                sJ    ^ RI pVP                  R\        ^R7       Wn        R# r  r  )re   r   r  r   r   r   r    s(    A1 	 	.  r!   c                r   rj   rf   rl   rm   r   r   TarInfo.path  s     yyr!   c                    Wn         R # rj   r  r  ro   r   r   r    s    	r!   c                r   rj   r   rl   rm   r   linkpathTarInfo.linkpath  r   r!   c                r	  rj   r
  )re   r   ro   r   r  r    s     r!   c                sh    R V P                   P                  V P                  \        V 4      3,          # )z<%s %r at %#x>)r   rS   rf   Zidrl   rm   r   __repr__ZTarInfo.__repr__  s&    4>>#:#:499RX"NNNr!   r   T_KEEPc       
        s    V	'       d   \         P                  ! V 4      pM\         P                   ! V 4      pWJd   Wn        W*Jd   W+n        W:Jd   W;n        WJJd   WKn        WZJd   W[n        WjJd   Wkn        WzJd   W{n        WJd   Wn	        V# rj   )
copyZdeepcopyrf   r   rg   r   r   r   r   r   )re   rf   r   rg   r   r   r   r   r   r   r  Zresults   &$$$$$$$$$$ r   r   ZTarInfo.replace  s     ]]4(FYYt_FK LK &OJJ L Lr!   c                s    V P                   f   R pMV P                   R,          pRV P                  RVRV P                  RV P                  RV P                  RV P
                  RV P                  R	V P                  R
V P                  RV P                  RV P                  RV P                  RV P                  /pVR	,          \        8X  d4   VR,          P                  R4      '       g   VR;;,          R,          uu&   V# )N  rf   rg   r   r   r   r   r   r   r   r   r   r   r   r   )rg   rf   r   r   r   r   r   r   r   r   r   r   r   DIRTYPEr   )re   rg   infor2   r   get_infoZTarInfo.get_info  s     99D99v%D				

		




  <7"4<+@+@+E+ELCLr!   surrogateescapec                sB   V P                  4       pVP                  4        F  w  rVVe   K  \        RV,          4      h	  V\        8X  d   V P	                  WBV4      # V\
        8X  d   V P                  WBV4      # V\        8X  d   V P                  WB4      # \        R4      h)Nz%s may not be Nonezinvalid format)	r  itemsr   USTAR_FORMATcreate_ustar_headerr5   create_gnu_header
PAX_FORMATcreate_pax_header)re   r7   r   r   r  rf   value   &&&&   r   tobufZTarInfo.tobuf
  s     }}::<KD} !5!<== ( \!++DFCCz!))$&AAz!))$99-..r!   c                sD   \         VR &   \        VR,          P                  W#4      4      \        8  d   \	        R4      h\        VR,          P                  W#4      4      \
        8  d#   V P                  VR,          W#4      w  VR&   VR&   V P                  V\        W#4      # )magicr   zlinkname is too longrf   prefix)	POSIX_MAGICr   r   LENGTH_LINKr   LENGTH_NAME_posix_split_name_create_headerr  )re   r  r   r   r   r   r  ZTarInfo.create_ustar_header  s     $WtJ&&x89KG344tF|""845C+/+A+A$v,PX+a(DNDL""4xHHr!   c                s   \         VR &   Rp\        VR,          P                  W#4      4      \        8  d%   W@P	                  VR,          \
        W#4      ,          p\        VR,          P                  W#4      4      \        8  d%   W@P	                  VR,          \        W#4      ,          pW@P                  V\        W#4      ,           # )r  r!   r   rf   )
	GNU_MAGICr   r   r!  _create_gnu_long_headerGNUTYPE_LONGLINKr"  GNUTYPE_LONGNAMEr$  r5   )re   r  r   r   r:   s   &&&& r   r  ZTarInfo.create_gnu_header(  s     "WtJ&&x89KG//Z0@BRT\eeCtF|""845C//V>NPXaaC((z8LLLr!   c                s   \         VR &   V P                  P                  4       pRR\        3RR\        3RR3 FI  w  rEpWS9   d   K   W,          P                  RR4       \        Y,          4      T8  g   K?  Y,          Y5&   KK  	  R F  w  rGRpW,          p	\        V	\        4      p
V
'       d   \        V	4      MT	p^ Tu;8:  d   ^V^,
          ,          8  g
   M ^ W&   RpMV
'       d   WV&   RpV'       g   Kr  WC9  g   Kz  \        V	4      W4&   K  	  V'       d   V P                  V\        V4      pMR	pWP                  V\        RR
4      ,           #   \         d    Y,          Y5&    EK3  i ; i)r  rf   r   r   r  r)   r*   FTr!   r   )r   r       )r   r   r)  ))r      )r   r*  )r      )r   r+  )r   r   r  r"  r!  r   UnicodeEncodeErrorr   
isinstancefloatZroundstr_create_pax_generic_headerXHDTYPEr$  r  )re   r  r   r   rf   Zhnamer   r6   Z	needs_paxZvalZval_is_floatZval_intr:   s   &&&          r   r  ZTarInfo.create_pax_header6  sb   
 $W&&++-
 -
J/T&(>$@D #
!!'84
 4:'%)Z"!$@( RLDI*C%c51L$0eCjcG3!
"33
 	 %T
 	 yT4$'H!% R* 11+wQCC((|WiPPPG & %)Z"s   EE,+E,c                s0    V P                  V\        R 4      # )r   )r0  XGLTYPE)clsr   ro   r   create_pax_global_headerZ TarInfo.create_pax_global_headerp  s     --k7GLLr!   c                sX   VP                  R 4      p\        ^\        V4      4       Fv  pR P                  VRV 4      pR P                  WER 4      p\        VP	                  W#4      4      \
        8:  g   KO  \        VP	                  W#4      4      \        8:  g   Kt   Wa3# 	  \        R4      h)r   Nzname is too long)splitr-   r   r   r   LENGTH_PREFIXr"  r   )re   rf   r   r   Z
componentsr1   r  r  r   r#  ZTarInfo._posix_split_namev  s     ZZ_
q#j/*AXXj!n-F88JrN+D6==23}DH56+E | + /00r!   c                s   V P                  R 4      \        \        39   pV'       d<   \        V P                  R^ 4      ^V4      p\        V P                  R^ 4      ^V4      pM\	        R^W#4      p\	        R^W#4      pV P                  R \
        4      pVf   \        R4      h\	        V P                  RR4      ^dW#4      \        V P                  R^ 4      R,          ^V4      \        V P                  R	^ 4      ^V4      \        V P                  R
^ 4      ^V4      \        V P                  R^ 4      ^V4      \        V P                  R^ 4      ^V4      RV\	        V P                  RR4      ^dW#4      V P                  R\        4      \	        V P                  RR4      ^ W#4      \	        V P                  RR4      ^ W#4      VV\	        V P                  RR4      ^W#4      .p\        P                  ! R\        ,          RP                  V4      4      p	\        V	\        ) R 4      ^ ,          p
V	RR \        RV
,          R4      ,           V	RR ,           p	V	# )r   r   r   rw   NzTarInfo.type must not be Nonerf   rg   r  r   r   r   r   s           r   r  r   r   r  z%dsr!   z%06o r)   ii)getCHRTYPEBLKTYPEr8   r    r  r   r   r9   r   r   r   r;   r4   )r  r7   r   r   Zhas_device_fieldsr   r   ZfiletypeZpartsr:   r      &&&&       r   r$  ZTarInfo._create_header  s   
 !HHV,'0BB488J2Av>H488J2Av>H2q(3H2q(3H 88FG,<== $c8<#f,a8"Av."Av.#R0!$b&1R(#x@HHWk*"%r8<"%r8<2&X>
$ kk%)+SXXe_=c9*+./2%4j5F!2G<<s45zI
r!   c                s    \        \        V 4      \        4      w  rV^ 8  d    V \        V,
          \        ,          ,          p V # r   )r?   r   r   r   )ZpayloadrE   rF   r2   r   _create_payloadZTarInfo._create_payload  s7    
 #3w<;q=	I-44Gr!   c                s    VP                  W44      \        ,           p/ pR VR&   W%R&   \        V4      VR&   \        VR&   V P	                  V\
        W44      V P                  V4      ,           # )z././@LongLinkrf   r   r   r  )r   r   r   r%  r$  r  r;  )r3  rf   r   r   r   r  s   &&&&& r   r&  ZTarInfo._create_gnu_long_header  sn    
 {{8,s2&VV4yV!W !!$hG##D)* 	*r!   c                s   R pVP                  4        F  w  rV VP                  RR4       K  	  RpV'       d
   VR,          pVP                  4        F  w  rVVP                  R4      pV'       d   VP                  VR4      pMVP                  R4      p\        V4      \        V4      ,           ^,           p^ ;r V\        \	        V
4      4      ,           p	W8X  d   MT	p
K'  V\        \	        V
4      R4      R,           V,           R	,           V,           R
,           ,          pK  	  / pRVR&   W+R&   \        V4      VR&   \        VR&   V P                  V\        RR4      V P                  V4      ,           #   \         d	    Rp  EKV  i ; i)Fr   r*   Tr!   s   21 hdrcharset=BINARY
r  r)   s       =   
z././@PaxHeaderrf   r   r   r  r   )
r  r   r,  r   r/  r4   r   r$  r  r;  )r3  r   r   r   Zbinarykeywordr  ZrecordsZlr0   r$   r  s   &&&&        r   r0  Z"TarInfo._create_pax_generic_header  sp    )//1NGWh/ 2 00G)//1NGnnW-G X/@AW-Gs5z)A-AIACFO6uSVW-4w>EMPUUUG! 2( 'VV7|V#W !!$gyI##G,- 	-I & s   E33FFc                sV   \        V4      ^ 8X  d   \        R4      h\        V4      \        8w  d   \        R4      hVP	                  \
        4      \        8X  d   \        R4      h\        VR,          4      pV\        V4      9  d   \        R4      hV ! 4       p\        VR,          W#4      Vn        \        VR,          4      Vn        \        VR,          4      Vn        \        VR	,          4      Vn        \        VR
,          4      Vn        \        VR,          4      Vn        WEn        VR,          Vn        \        VR,          W#4      Vn        \        VR,          W#4      Vn        \        VR,          W#4      Vn        \        VR,          4      Vn        \        VR,          4      Vn        \        VR,          W#4      pVP$                  \0        8X  d-   VP                  P3                  R4      '       d   \4        Vn        VP$                  \6        8X  d   Rp. p\9        ^4       FN  p	 \        WV^,            4      p
\        W^,           V^,            4      pTP=                  Y34       T^,          pKP  	  \?        VR,          4      p\        VR,          4      pWV3Vn         VPC                  4       '       d!   VP                  PE                  R4      Vn        V'       d5   VP$                  \F        9  d    VR,           VP                  ,           Vn        V#   \:         d      K  i ; i)r'   zempty headerztruncated headerzend of file header:      Nzbad checksum:r'   d   N:rA  l   N:rB  t   N:rC  |   N:rD     N:rE  r?  N:r@     N:rF  i  N:i	  )  N:rG  rv   N:rv   Q  N:rH  Y  N:rI  i  Nr   i  i  :i  i  N)$r   rY   r   rZ   countr   r[   r3   r;   r/   r&   rf   rg   r   r   r   r   r   r   r   r   r   r   r   AREGTYPEr   r  GNUTYPE_SPARSEr-   r   r   boolr   r   rstrip	GNU_TYPES)r3  r:   r   r   r   objr  r   structsr1   r   numbytes
isextendedorigsizes   &&&&          r   frombufZTarInfo.frombuf  ss    s8q=">22s8y &'9::99S>Y& !566S\"c**$^44es5z84s7|$c'l#c'l#s7|$G%	
w<3w<:Gh7	Gh7	3w<(3w<(S\84 88xCHH$5$5c$:$:CH
 88~%CG1X r!23F"3Rxb#9:H 12r	  c#hJ3w<(H#*"AC 99;;xxs+CH chhi/|chh.CH
 " s   )/LL('L(c                s   VP                   P                  \        4      pV P                  W!P                  VP
                  4      pVP                   P                  4       \        ,
          Vn        VP                  V4      # rj   )	r   r@   r   rU  r   r   r   r   _proc_member)r3  r   r:   rP     &&  r   fromtarfileZTarInfo.fromtarfile=  s\    
 oo""9-kk#//@__))+i7
((r!   c                s*   V P                   \        \        39   d   V P                  V4      # V P                   \        8X  d   V P                  V4      # V P                   \        \        \        39   d   V P                  V4      # V P                  V4      # rj   )r   r(  r'  _proc_gnulongrL  _proc_sparser1  r2  SOLARIS_XHDTYPE	_proc_pax_proc_builtin)re   r   ro   r   rV  ZTarInfo._proc_memberR  sx     99)+;<<%%g..YY.($$W--YY7G_==>>'**%%g..r!   c                s   VP                   P                  4       V n        V P                  pV P                  4       '       g   V P                  \
        9  d"   W P                  V P                  4      ,          pW!n        V P                  VP                  VP                  VP                  4       V P                  4       '       d!   V P                  P                  R 4      V n        V # )r   )r   r   r   r   r   SUPPORTED_TYPES_blockr   r   _apply_pax_infor   r   r   r   rf   rN  )re   r   r   r   r   r]  ZTarInfo._proc_builtin_  s     #??//1!!::<<499O;kk$)),,F 	W00'2B2BGNNS ::<<		((-DIr!   c                sZ   VP                   P                  V P                  V P                  4      4      p V P	                  V4      pT P                  Tn        T P                  \        8X  d'   \        Y!P                  TP                  4      Tn        M:T P                  \        8X  d&   \        Y!P                  TP                  4      Tn        TP#                  4       '       d!   TP                  P%                  R4      Tn        T#   \
         d   p\        \        T4      4      R hR p?ii ; i)Nr   )r   r@   r_  r   rX  r   r\   r/  r   r   r(  r&   r   r   rf   r'  r   r   Zremovesuffix)re   r   r:   nextr   r   r   rY  ZTarInfo._proc_gnulongu  s     oo""4;;tyy#9:	:##G,D kk99((C!1!17>>BDIYY**%5%5w~~FDM ::<<		..s3DI!  	:'A/T9	:s   D D*D%%D*c                sZ   V P                   w  r#pV = V'       d   VP                  P                  \        4      p^ p\	        ^4       F^  p \        WVV^,            4      p\        WV^,           V^,            4      p	T'       d   T	'       d   TP                  Y34       T^,          pK`  	  \        VR,          4      pK  W n	        VP                  P                  4       V n        V P                  V P                  V P                  4      ,           Vn        W@n        V #   \         d      K  i ; i)r'   i  )r   r   r@   r   r-   r3   r   r   rM  r   r   r   r_  r   r   )
re   r   rQ  rS  rT  r:   r   r1   r   rR  s
   &&        r   rZ  ZTarInfo._proc_sparse  s     )-(<(<%X  //&&y1CC2Y r!23F"3Rxb#9:H hNNF#56r	  c#hJ"??//1))DKK		,BB	 " s   
/DD*)D*c                s   VP                   P                  V P                  V P                  4      4      pV P                  \
        8X  d   VP                  pMVP                  P                  4       p^ pRp. p\        V4      V8  Ed8   W$,          ^ 8w  Ed*   \        P                  W$4      ;p'       g   \        R4      h \        VP                  ^4      4      pT^8  d   \        R4      hYH,           \        T4      8  d   \        R4      hTP                  ^4      T,           ^,
          p	Y'P!                  ^4      ^,           T	 p
T
P#                  R4      w  rpT'       d   TR8w  g   Y),          ^
8w  d   \        R4      hTP%                  YT34       TR8X  d   Tf   TR8X  d   TP&                  pMRpYH,          pEKH  Vf   RpV Fy  w  rpV P)                  VRRVP*                  4      pV\,        9   d)   V P)                  WVP&                  VP*                  4      pMV P)                  VRRVP*                  4      pWV&   K{  	   V P/                  V4      pRT9   d   T P7                  TT4       MXRT9   d   T P9                  TT4       M>TP;                  R	4      R
8X  d)   TP;                  R4      R8X  d   T P=                  TY14       T P                  \>        \@        39   d   TPC                  Y1P&                  TP*                  4       T PD                  Tn"        RT9   da   TPF                  pTPI                  4       '       g   TP                  \J        9  d#   TTP                  TP                  4      ,          pTTn"        T#   \         d    \        R4      hi ; i  \0         d   p\3        \5        T4      4      RhRp?ii ; i)r'   Nr,   r<  s
   hdrcharsets   BINARYr   GNU.sparse.mapGNU.sparse.sizezGNU.sparse.majorZ1zGNU.sparse.minorr+   r   )&r   r@   r_  r   r   r2  r   r  r   _header_length_prefix_rematchr/   r.   groupr   r   rJ   Z	partitionr   r   _decode_pax_fieldr   PAX_NAME_FIELDSrX  r   r\   r/  _proc_gnusparse_01_proc_gnusparse_00r7  _proc_gnusparse_10r1  r[  r`  r   r   r   r^  )re   r   r:   r   r   r   raw_headersre  r   Zheader_value_end_offsetZkeyword_and_valueZraw_keywordZequalsZ	raw_valuer>  r  ra  r   r   s   &&                 r   r\  ZTarInfo._proc_pax  sW   
 oo""4;;tyy#9:
 99!--K!--224K #hnT!15;;CEEEE()9::;U[[^,
 z()9::|c#h&()9::&+kk!nv&=&A# #IIaL1$45L M->-H-H-N*K &D.C4PTX4X()9::Y?@ m+0@	)&//H&HMC H /:*F ,,['7NN$G/)..yGDTDT( ..y'7( $) # /:(	:##G,D
 {*##D+6+-##D+6__/0C7KOOL^<_cf<f##D+?99/22  .>.>O++DK$ ))::<<499O#Cdkk$))44F!'y  ;()9::;|  	:'A/T9	:s$   ?N N NO(N==Oc                s   . p. pV Fj  w  rVpVR 8X  d,    VP                  \        VP                  4       4      4       K8  VR8X  g   KA   VP                  \        VP                  4       4      4       Kl  	  \        \        W44      4      Vn        R#   \         d    \	        R4      hi ; i  \         d    \	        R4      hi ; i)s   GNU.sparse.offsetr,   s   GNU.sparse.numbytesN)r   r.   r#   r   r/   listzipr   )re   ra  rl  ZoffsetsrR  _r>  r  r   r   rj  ZTarInfo._proc_gnusparse_00%  s     !,A..?NN3u||~#67 22?OOC$78 "- 3w12 " ?,-=>>? " ?,-=>>?s   (B	(B*B'*Cc                s    VR ,          P                  R4       Uu. uF  p\        V4      NK  	  pp\        \        VR,          VR,          4      4      Vn        R# u upi )rb  Z,NN      Nrq  N)r5  r.   rm  rn  r   )re   ra  r   xr      &&&  r   ri  ZTarInfo._proc_gnusparse_019  sP     #..>"?"E"Ec"JK"JQ#a&"JK3vc{F4L9: Ls   Ac                s   R p. pVP                   P                  \        4      pVP                  R^4      w  rF\	        V4      p\        V4      V^,          8  d]   RV9  d&   WcP                   P                  \        4      ,          pVP                  R^4      w  rvVP                  \	        V4      4       Ks  VP                   P                  4       Vn        \        \        VR,          VR,          4      4      Vn        R # )Nr=  rp  rr  )r   r@   r   r5  r.   r   r   r   r   rm  rn  r   )re   ra  r   r   Zfieldsr   r:   Znumbers   &&&&    r   rk  ZTarInfo._proc_gnusparse_10?  s     oo""9-iiq)V&kFQJ&C++I66))E1-KFMM#f+&"??//13vc{F4L9:r!   c                s   VP                  4        F  w  rEVR 8X  d   \        V RV4       K  VR8X  d   \        V R\        V4      4       K:  VR8X  d   \        V R\        V4      4       KY  V\        9   g   Kf  V\        9   d    \        V,          ! V4      pVR8X  d   VP                  R4      p\        WV4       K  	  VP                  4       V n        R#   \
         d    ^ p LNi ; i)zGNU.sparse.namer   rc  r   zGNU.sparse.realsizer   N)	r  Zsetattrr.   
PAX_FIELDSPAX_NUMBER_FIELDSr   rN  r  r   )re   r   r   r   r>  r  s   &&&&  r   r`  ZTarInfo._apply_pax_infoO  s     *//1NG++fe,--fc%j111fc%j1J&//" 1' :5 A f$!LL-Eu- 2" '++- & " !"s   CC%$C%c                sl     VP                  VR 4      #   \         d    TP                  Y44      u # i ; ir   )r#   ZUnicodeDecodeError)re   r  r   Zfallback_encodingZfallback_errorss   &&&&&r   rg  ZTarInfo._decode_pax_fieldf  s:    	D<<(33! 	D<< 1CC	Ds    33c                s    V^ 8  d   \        R4      h\        V\        4      w  r#V'       d
   V^,          pV\        ,          # )r'   zinvalid offset)r/   r?   r   )re   rJ  rE   rF   rW  r   r_  ZTarInfo._blockn  s=    
 19$%566"5)4aKF	!!r!   c                s(    V P                   \        9   # rj   )r   REGULAR_TYPESrl   rm   r   r   ZTarInfo.isregz  s    yyM))r!   c                s"    V P                  4       # rj   )r   rl   rm   r   isfileZTarInfo.isfile~  s    zz|r!   c                (    V P                   \        8H  # rj   )r   r  rl   rm   r   r   ZTarInfo.isdir      yyG##r!   c                rz  rj   )r   SYMTYPErl   rm   r   r   ZTarInfo.issym  r{  r!   c                rz  rj   )r   LNKTYPErl   rm   r   r   ZTarInfo.islnk  r{  r!   c                rz  rj   )r   r8  rl   rm   r   ischrZTarInfo.ischr  r{  r!   c                rz  rj   )r   r9  rl   rm   r   isblkZTarInfo.isblk  r{  r!   c                rz  rj   )r   FIFOTYPErl   rm   r   isfifoZTarInfo.isfifo  s    yyH$$r!   c                s    V P                   R J# rj   )r   rl   rm   r   issparseZTarInfo.issparse  s    {{$&&r!   c                s>    V P                   \        \        \        39   # rj   )r   r8  r9  r  rl   rm   r   isdevZTarInfo.isdev  s    yyWgx888r!   )r   r   r   r   r   r   r   rg   r   rf   r   r   r   r   r   r   r   r   rQ   )rw   )7rS   rT   rU   rV   ZdictZ	__slots__ri   r   r   Zsetterr   r  r  r  r   r  DEFAULT_FORMATENCODINGr  r  r  r  classmethodr4  r#  Zstaticmethodr$  r;  r&  r0  rU  rX  rV  r]  rY  rZ  r\  rj  ri  rk  r`  rg  r_  r   ry  r   r   r   r~  r  r  r  r  rW   rq   rr   rt   r   r   r   p  s      
,
!
 G
 H	

  
 -
 $
>
F
 
 
 *
  *!
" /#
$ 5%
&9'
* .+
, -
. /
0 1
I60   ^^      
[[    __! !O"'.3>C$,19>  "'88 *HEV /"IM8Qt M M
  ' 'R   * *  0- 0-d < <| ) )(/,68wr3(;; ..D
"*$$$$$%'9 9r!   c            
       s$  a  ] tR tRt o ^ tRtRt^t]t	]
tRt]t]tRtRAR lt]RRR]3R l4       t]RBR l4       t]RCR l4       t]RCR	 l4       t]RDR
 l4       t]RER l4       tRRRRRRRRRR/tR tR tR tR tRFR lt RGRR/R llt!RHRR/R llt"RIR lt#R  t$RJR!RRR/R" llt%R# t&RKR!RRR/R$ llt'R% t(RIR& lt)R' t*R( t+R) t,RLR*RR+R/R, llt-R- t.R. t/R/ t0R0 t1R1 t2R2 t3R3 t4R4 t5R5 t6R6 t7R7 t8RMR8 lt9R9 t:RIR: lt;R; t<R< t=R= t>R> t?R? t@R@tAV tBR# )Nr   i  FNr_   c                s   R RRRRRRR/pW/9  d   \        R4      hW n        W,          V n        V'       gb   V P                  R8X  d4   \        P                  P                  V4      '       g   RV n        RV n        \        WP                  4      pR	V n        MrVfE   \        VR4      '       d3   \        VP                  \        \        34      '       d   VP                  p\        VR4      '       d   VP                  V n        RV n        V'       d    \        P                  P                  V4      MR
V n
        W0n        Wn        Ve   W@n        Ve   WPn        Ve   W`n        Ve   Wpn        Ve   Wn        Wn        V
e   V P                   \,        8X  d   Wn        M/ V n        Ve   Wn        Ve   Wn        Wn        R	V n        . V n        R	V n        V P                  P=                  4       V n        / V n         / V n!        / V n"         V P                  R 8X  d   R
V n#        V PI                  4       V n#        V P                  R8X  d`    V P                  PK                  V P>                  4        V P"                  PM                  V 4      pV P8                  PO                  V4       K_  V P                  R9   d   RV n        V P.                  '       ds   V P"                  PW                  V P.                  PY                  4       4      pV P                  P[                  V4       V ;P>                  \]        V4      ,          un        R
# R
# R
#   \P         d*    T P                  PK                  T P>                  4        K  \R         d   p\U        \        T4      4      R
hR
p?ii ; i   T P                  '       g   T P                  P_                  4        RT n        h ; i)r_   r   azr+br`   wbrt  Zxb!mode must be 'r', 'a', 'w' or 'x'FNrf   rg   Tr  r`   rt  )0r   rg   _moderb   r   exists	bltn_openr   rc   r-  rf   r/  r4   abspathr   streamr7   r   dereferenceignore_zerosr   r   r  r   debug
errorlevelcopybufsizer   members_loadedr   r   inodes_unames_gnamesfirstmemberra  r   rX  r   r[   r   r   r4  r  rA   r   rk   )re   rf   rg   r   r7   r   r  r  r   r   r   r  r  r  r  Zmodesr   r:   s   &&&&&&&&&&&&&&&   r   ri   ZTarFile.__init__  s    dCT3=@AA	[
yyCt(<(<	!
jj1G$D&!9!97<<#u66||w''$\\
#D-1BGGOOD)t	  K"L"*# ,$M"t{{j'@*!DJ!(O 'll'')	yyC#' #'99; yyC LL%%dkk2:"&,,":":4"@++G4 yyO+####,,??@P@P@U@U@WXCLL&&s+KK3s8+K $ , * ))$++6& :'A/T9:	###""$DKsJ   A$N ,6M "+N A0N 0N4N 7N NNNN 6Oc           	     s  a  V'       g   V'       g   \        R 4      hVR9   d   V 3R lp. p\        S P                  VR7       F@  p\        S S P                  V,          4      p	Ve   VP	                  4       p
 V	! VRV3/ VB u # 	  RP                  V4      p\        RV 24      hR	V9   dx   VP                  R	^4      w  rT;'       g    RpT;'       g    R
pVS P                  9   d   \        S S P                  V,          4      p	M\        RV,          4      hV	! WV3/ VB # RV9   d   VP                  R^4      w  rT;'       g    RpT;'       g    R
pVR9  d   \        R4      hRV9   d   VR9  d   \        R4      hRV9   d   VR9  d   \        R4      hVP                  R^	4      pVP                  RR4      p\        WWVW4      p S ! WV3/ VB pRTn        T# VR9   d   S P                  ! WV3/ VB # \        R4      h  \
        \        3 d:   pTP                  RT RT: 24       Te   TP                  X
4        Rp?EK	  Rp?ii ; i   TP                  4        h ; i)znothing to openr_   c                 s0   < SP                   V ,          R 8H  # )taropen)	OPEN_METH)r   r3  s   &r   not_compressedZ$TarFile.open.<locals>.not_compresseda  s    }}X.);;r!   )keyNz	- method z: Z
z'file could not be opened successfully:
Z:r   r   Z|zmode must be 'r' or 'w'r   z4compresslevel is only valid for w|gz and w|bz2 modesr~   z"preset is only valid for w|xz modeFzundiscernible mode)r_   r:*)r_   r`   )rx   ry   )r{   r  )r   sortedr  rK   r   r   r   r   r   r   r5  popru   rk   r   r  )r3  rf   rg   r   rD   kwargsr  Z
error_msgsr   ZfuncZ	saved_posr   Zerror_msgs_summaryfilemoder   r~   r  r   s   f&&&&,            r   r    ZTarFile.open1  s{   V G.//<<J"3==nEsCMM($;<& 'Ic7=f== F "&:!6FGYFZ[\\D[!%C!3H3H((5H 3==(sCMM($;<&'Dx'OPP:6::D[!%C!3H3H((5Hz) !:;;&(X]-J J  6!hg&= !EFF"JJ:MZZ$/FTX*4F9&9 "AMH_$;;t7=f==-..e "#34 %%	(2aU&CD*Y/	Rs$   8
H
I I-III'c                s:    VR9  d   \        R4      hV ! WV3/ VB # )r_   r  )r_   r  r`   rt  )r   )r3  rf   rg   r   r  s   &&&&,r   r  ZTarFile.taropen  s+     ++@AA4w1&11r!   c                s   VR9  d   \        R4      h ^ RIHp  T! YR,           YC4      p T P                  ! YT3/ TB pRTn	        T#   \         d    \	        R4      Rhi ; i  \
         d   pTe   TR 8X  d   \        R4      Thh Rp?ii ; i  \
         d*   pTP                  4        TR 8X  d   \        R4      Thh Rp?i TP                  4        h ; i)	r_   mode must be 'r', 'w' or 'x')GzipFilezgzip module is not availableNrG   r   Fr_   r`   rt  )
r   Zgzipr  r   r   r   r   r  rk   r   )	r3  rf   rg   r   r   r  r  r   r   	   &&&&&,   r   gzopenZTarFile.gzopen  s    
 &;<<	M%	tCZHG		D:6:A +  	M"#ABL	M
  	"ts{ 129	  	MMOs{ 129	MMOs9   A	 A$ B 	A!$B/BBC$B>>Cc                sj   VR9  d   \        R4      h ^ RIHp T! T;'       g    TY$R7      p T P
                  ! YT3/ TB pRTn
        T#   \         d    \	        R4      Rhi ; i  \        \        3 d*   pTP                  4        TR 8X  d   \        R4      Thh Rp?i TP                  4        h ; i)	r_   r  )BZ2Filerz   N)r   znot a bzip2 fileFr  )r   ry   r  r   r   r  r   EOFErrorrk   r   r   )	r3  rf   rg   r   r   r  r  r   r   r  r   bz2openZTarFile.bz2open  s    
 &;<<	L# '//T4M		D:6:A !  	L"#@AtK	L " 	MMOs{ 23:	MMOs"   A A' A$'B28$BB2c                sf   VR9  d   \        R4      h ^ RIHpHp T! T;'       g    TY$R7      p T P                  ! YT3/ TB pRTn
        T#   \         d    \        R4      Rhi ; i  T\        3 d*   p	TP                  4        TR 8X  d   \        R4      T	hh Rp	?	i TP                  4        h ; i)	r_   r  )LZMAFiler   r|   Nr}   znot an lzma fileFr  )r   r   r  r   r   r   r  r  rk   r   r   )
r3  rf   rg   r   r~   r  r  r   r   r   s
   &&&&&,    r   xzopenZTarFile.xzopen  s    
 &;<<	M0 7??dD@		D:6:A !  	M"#ABL	M 8$ 	MMOs{ 23:	MMOs"   A A) A&)B06$BB0c                s   VR9  d   \        R4      h ^ RIHpHp	 T! T;'       g    TTTTTR7      p T P                  ! YT3/ TB p
RT
n        T
#   \         d    \        R4      Rhi ; i  T	\        3 d*   pTP                  4        TR 8X  d   \        R4      Thh Rp?i\         d    TP                  4        h i ; i)	r_   r  )ZstdFiler   r   N)leveloptions	zstd_dictznot a zstd fileFr  )r   Zcompression.zstdr  r   r   r   r  r  rk   r   	Exceptionr   )r3  rf   rg   r   r  r  r  r  r  r   r   r   s   &&&&&&&,    r   zstopenZTarFile.zstopen  s     &;<<	Y< OOt
		D:6:A -  	Y"#MNTXX	Y 8$ 	MMOs{ 129 	MMO	s(   A A, A),B=9$BB=*B=r   r  rx   r  ry   r  r{   r  r   r  c                sr   V P                   '       d   R # RV n          V P                  R9   d   V P                  P                  \        \
        ^,          ,          4       V ;P                  \
        ^,          ,          un        \        V P                  \        4      w  rV^ 8  d2   V P                  P                  \        \        V,
          ,          4       V P                  '       g   V P                  P                  4        R # R #   T P                  '       g   T P                  P                  4        i i ; i)NTr  )r   rg   r   rA   r   r   r   r?   
RECORDSIZEr   rk   )re   rE   rF   r2   r   rk   ZTarFile.close.  s     ;;;	%yyO+""3)a-#89	A. %+4;;
$C!q=LL&&sj9.D'EF###""$ $4###""$ $s   B:D /D6c                sr    V P                  VP                  R 4      4      pVf   \        RV,          4      hV# )r   zfilename %r not found)
_getmemberrN  KeyError)re   rf   r   r   r   	getmemberZTarFile.getmemberC  s6     //$++c"23?2T9::r!   c                s~    V P                  4        V P                  '       g   V P                  4        V P                  # rj   )_checkr  _loadr  rl   rm   r   
getmembersZTarFile.getmembersN  s)     	|||JJL||r!   c                s^    V P                  4        Uu. uF  qP                  NK  	  up# u upi rj   )r  rf   )re   r   rN   r   getnamesZTarFile.getnamesX  s'     -1OO,=>,=,=>>>s   *c                s	   V P                  R 4       Ve   VP                  pVf   Tp\        P                  P	                  V4      w  rBVP                  \        P                  R4      pVP                  R4      pV P                  4       pWn	        VfA   V P                  '       g   \        P                  ! V4      pM;\        P                  ! V4      pM$\        P                  ! VP                  4       4      pRpVP                  p\        P                   ! V4      '       d   VP"                  VP$                  3p	V P                  '       gS   VP&                  ^8  dB   WP(                  9   d2   W P(                  V	,          8w  d   \*        p
V P(                  V	,          pM\,        p
V	^ ,          '       d   W P(                  V	&   M\        P.                  ! V4      '       d   \0        p
M\        P2                  ! V4      '       d   \4        p
M\        P6                  ! V4      '       d   \8        p
\        P:                  ! V4      pMH\        P<                  ! V4      '       d   \>        p
M%\        P@                  ! V4      '       d   \B        p
MR# W%n        Wn"        VPF                  Vn$        VPJ                  Vn&        V
\,        8X  d   VPN                  Vn(        M^ Vn(        VPR                  Vn*        Wn+        Wun,        \Z        '       d}   VPH                  V P\                  9  d@    \Z        P^                  ! VPH                  4      ^ ,          V P\                  VPH                  &   V P\                  VPH                  ,          Vn1        \d        '       d}   VPL                  V Pf                  9  d@    \d        Ph                  ! VPL                  4      ^ ,          V Pf                  VPL                  &   V Pf                  VPL                  ,          Vn5        V
\>        \B        39   dw   \m        \        R4      '       da   \m        \        R4      '       dK   \        Pn                  ! VPp                  4      Vn9        \        Pt                  ! VPp                  4      Vn;        V#   \`         d    RT P\                  TPH                  &    ELZi ; i  \`         d    RT Pf                  TPL                  &    Li ; i)awxNr   rw   majorminor)<r  rf   rb   r   Z
splitdriver   r   r   r   r   r  lstatstatZfstatZfilenost_modeZS_ISREGZst_inoZst_devZst_nlinkr  r}  r  S_ISDIRr  ZS_ISFIFOr  ZS_ISLNKr|  ZreadlinkZS_ISCHRr8  ZS_ISBLKr9  rg   Zst_uidr   Zst_gidr   Zst_sizer   Zst_mtimer   r   r   pwdr  Zgetpwuidr  r   grpr  Zgetgrgidr   rc   r  Zst_rdevr   r  r   )re   rf   arcnamer   Zdrvr   Zstatresr   ZstmdZinoder   r:  r   
gettarinfoZTarFile.gettarinfo^  sX    	E <<D
 ?Gww))'2//"&&#...% ,,. ?###((4.''$-hhw~~/0G<<^^W^^4E###(8(81(<[[(WE8J-J ;;u- 88)0KK&\\$D]]4  D\\$D{{4(H\\$D\\$D nnnn7?"??GLGL((# 3{{$,,.303W[[0I!0LDLL- !LL5GM3{{$,,.303W[[0I!0LDLL- !LL5GMGW%%r7##G(<(<#%88GOO#< #%88GOO#<    302DLL-3   302DLL-3s$    >R (>R< $R98R9<$S#"S#r  c               s   \         \        P                  \        \        P                  \
        \        P                  \        \        P                  \        \        P                  \        \        P                  /pV P                  4        Vf   T pV EF3  pV'       Ed}   VP                  f   \        R4       MKVP!                  VP"                  ^ 4      p\        \        P$                  ! WTP                  ,          4      4       \        VP&                  ;'       g    VP(                  : RVP*                  ;'       g    VP,                  : 24       VP/                  4       '       g   VP1                  4       '       d1   \        RRVP2                  VP4                  3,          ,          4       M\        RVP6                  ,          4       VP8                  f   \        R4       M7\        R\:        P<                  ! VP8                  4      R,          ,          4       \        VP>                  VPA                  4       '       d   RMR	,           4       V'       de   VPC                  4       '       d   \        R
VPD                  ,           4       VPG                  4       '       d   \        RVPD                  ,           4       \I        4        EK6  	  R # )Nz
??????????r   z%10sz%d,%dz%10dz????-??-?? ??:??:??z%d-%02d-%02d %02d:%02d:%02d:Ni   Nrw   z-> zlink to )%r  r  ZS_IFREGr|  ZS_IFLNKr  ZS_IFIFOr8  S_IFCHRr  ZS_IFDIRr9  S_IFBLKr  rg   rO   r7  r   r  r   r   r   r   r~  r  r   r   r   r   r   Z	localtimerf   r   r   r   r   rM   )re   verboser  Z	type2moder   Zmodetypes   &&$   r   rm  ZTarFile.list  s    dllGT\\t||WdlldllGT\\C	 	?GGw<<'-(}}W\\1=Hh.E FGw}}'C'C'C'.}}'C'C'CE F==??gmmoo$(8(8':J:J'KK!M N   56==( 56 ="&.."?"C!D E w}}BGH==??(8(8 89==??
W-=-= =>G7 r!   filterc               s   V P                  R 4       Vf   TpV P                  eJ   \        P                  P	                  V4      V P                  8X  d   V P                  ^RV,          4       R# V P                  ^V4       V P                  W4      pVf   V P                  ^RV,          4       R# Ve(   V! V4      pVf   V P                  ^RV,          4       R# VP                  4       '       d1   \        VR4      ;_uu_ 4       pV P                  WV4       RRR4       R# VP                  4       '       d   V P                  V4       V'       dw   \        \        P                  ! V4      4       FQ  pV P                  \        P                  P                  W4      \        P                  P                  W&4      W4R7       KS  	  R# R# V P                  V4       R#   + '       g   i     R# ; i)r  Nztarfile: Skipped %rztarfile: Unsupported type %rtarfile: Excluded %rr   )r  )r  rf   rb   r   r  _dbgr  r   r  addfiler   r  Zlistdiraddr   )re   rf   r  Z	recursiver  r   Zfs   &&&&$  r   r  ZTarFile.add  sq    	E?G 99 RWW__T%:dii%GIIa.56		!T //$0?IIa7$>? WoG		!3d:; ==??4&&!W( '& ]]__LL!

4 01AHHRWW\\$2BGGLL4L%  6 2  LL! '&&s   GG-	c                s8   V P                  R 4       Vf3   VP                  4       '       d   VP                  ^ 8w  d   \        R4      h\        P                  ! V4      pVP                  V P                  V P                  V P                  4      pV P                  P                  V4       V ;P                  \        V4      ,          un        V P                  pVe   \        W P                  VP                  VR7       \        VP                  \         4      w  rVV^ 8  d;   V P                  P                  \"        \         V,
          ,          4       V^,          pV ;P                  V\         ,          ,          un        V P$                  P'                  V4       R# )r  Nz3fileobj not provided for non zero-size regular file)rD   )r  r   r   r   r  r  r7   r   r   r   rA   r   r   r  r>   r?   r   r   r  r   )re   r   r   r:   rD   rE   rF   s   &&&    r   r  ZTarFile.addfile&	  s    	E?w}}7<<13DRSS))G$mmDKKD3s3x  w||WM &w||Y ?F1}""3)i*?#@A!KK6I--KG$r!   c                s    Vf:   V P                   pVf   \        # \        V\        4      '       d   \	        R4      hV# \        V4      '       d   V#  \        V,          #   \         d    \        RT: R24      R hi ; i)Nzfilter z
 not foundzrString names are not supported for TarFile.extraction_filter. Use a function such as tarfile.data_filter directly.)	extraction_filterr   r-  r/  Z	TypeErrorZcallable_NAMED_FILTERSr  r   )re   r  ro   r   _get_filter_functionZTarFile._get_filter_functionB	  s    >++F~""&#&&67 7 MFM	G!&)) 	Gwvj
;<$F	Gs   A A<numeric_ownerc          	     s   . pV P                  V4      pVf   T pV Fl  pV P                  WvV4      w  rVf   K  VP                  4       '       d   VP                  V	4       V P	                  WVP                  4       '       * VVR7       Kn  	  VP                  R RR7       V F  p	  V! W4      pTf   T P                  T	R4       K%  \        P                  P                  YP                  4      p \        P                  ! T4      p\        P                   ! TP"                  4      '       g   T P                  TR4       K  T P%                  YTR7       T P'                  Y4       T P)                  Y4       K  	  R #   \         d(   p
T P                  T	\        T
4      4        R p
?
EK  R p
?
ii ; i  \         d    T P                  TR4        EK0  i ; i  \*         d   pT P-                  T4        R p?EKW  R p?ii ; i)	N)	set_attrsr  filter_functionc                 r   rj   r  )r  rm   r   Z<lambda>Z$TarFile.extractall.<locals>.<lambda>w	  s    qvvr!   T)r  Zreversezexcluded by filterZmissingznot a directory)r  )r  _get_extract_tarinfor   r   _extract_oneZsort_FILTER_ERRORS_log_no_directory_fixupZreprrb   r   r   rf   r  ZFileNotFoundErrorr  r  r  chownutimechmodr   _handle_nonfatal_error)re   r   r  r  r  Zdirectoriesr  r   r   
unfilteredZexcZdirpathr  r   s   &&&$$         r   
extractallZTarFile.extractallT	  s    33F;?GF"&";";#/G}} "":.g7==?7J,9.=  ?  	-t< &J/-j?G ?001EG'',,t\\:HHW-E ||EMM22 00:KL

7=
I

7,

7,5 & & 00T#YG ) 00)D   /++A../sr   'E</G)G1F1%G-G5G<F.F)"G)F..G1GGGGG>!G99G>c                sP    V P                  ^RVP                  : RV: R24       R# )rq  z!tarfile: Not fixing up directory z (Z)N)r  rf   )re   r   Zreasonrh   r   r  ZTarFile._log_no_directory_fixup	  s    		!;;( 	)r!   c               s    V P                  V4      pV P                  WV4      w  rxVe   V P                  WrW44       R # R # rj   )r  r  r  )	re   r   r   r  r  r  r  r   r  s	   &&&&$$   r   extractZTarFile.extract	  sG     33F;"77T+gYF r!   c                s(   \        V\        4      '       d   V P                  V4      pMTpR p V! WC4      pVf&   V P                  ^RVP                  ,          4       R# VP                  4       '       dE   \        P                  ! V4      p\        P                  P                  W5P                   4      Vn        WT3#   \        \        \
        3 d   pT P                  T4        R p?LR p?i\         d   pT P                  T4        R p?LR p?ii ; i)Nr  )NN)r-  r/  r  r   r,  r	   _handle_fatal_errorr   r  r  rf   r   r  rb   r   r   r   r   )re   r   r  r   r  filteredr   r  r   r  ZTarFile._get_extract_tarinfo	  s     fc""/JJ	+&z8H
 IIa/*//AB >>yy*H$&GGLL7H7H$IH!## +[9 	($$Q'' 	+''**	+s)   B< <DC((D5D6DDc           	     sP   V P                  R 4        V P                  V\        P                  P	                  W!P
                  4      VVVVR7       R#   \        \        3 d   pT P                  T4        Rp?R# Rp?i\         d   pT P                  T4        Rp?R# Rp?ii ; i)r_   )r  r  r  extraction_rootN)r  _extract_memberrb   r   r   rf   r   r,  r  r   r  )re   r   r   r  r  r  r   s   &&&&&& r   r  ZTarFile._extract_one	  s     	C		+  "'',,t\\*J+4/<1@15	 ! 7
 +, 	($$Q'' 	+''**	+s)   >A B%$A;;B%B%	B  B%c                s\    V P                   ^8  d   h V P                  ^RV,          4       R# )rs  tarfile: %sN)r  r  re   r   ro   r   r  ZTarFile._handle_nonfatal_error	  s$    ??QIIa*+r!   c                sv   V P                   ^ 8  d   h \        V\        4      '       dd   VP                  f&   V P	                  ^RVP
                  ,          4       R# V P	                  ^RVP
                  : RVP                  : 24       R# V P	                  ^R\        V4      P                  : RV: 24       R# )r'   Nr  z	tarfile: rI   )r  r-  r   Zfilenamer  Zstrerrorr   rS   r  ro   r   r  ZTarFile._handle_fatal_error	  sw    ??Q7##zz!		!]QZZ78		!QZZHIIIaT!W-=-=qABr!   c                s   V P                  R 4       \        V\        4      '       d   V P                  V4      pMTpVP	                  4       '       g   VP
                  \        9  d   V P                  W4      # VP                  4       '       g   VP                  4       '       dL   \        V P                  \        4      '       d   \        R4      hV P                  V P                  V4      4      # R# )r_   z'cannot extract (sym)link as file objectN)r  r-  r/  r  r   r   r^  
fileobjectr   r   r   ru   r   extractfile_find_link_target)re   r   r   r   r   r  ZTarFile.extractfile	  s     	Cfc""nnV,GG==??gll/A??411]]__$,,00 ""KLL ''(>(>w(GHH r!   r  r  c               s(   VP                  R 4      pVP                  R \        P                  4      p\        P                  P                  V4      pV'       d>   \        P                  P                  V4      '       g   \        P                  ! VRR7       VP                  4       '       g   VP                  4       '       d/   V P                  ^VP                  : RVP                  : 24       MV P                  ^VP                  4       VP                  4       '       d   V P                  W4       EMVP                  4       '       d   V P!                  W4       MVP#                  4       '       d   V P%                  W4       MVP'                  4       '       g   VP)                  4       '       d   V P+                  W4       MyVP                  4       '       g   VP                  4       '       d   V P-                  WVVR7       M8VP.                  \0        9  d   V P3                  W4       MV P                  W4       V'       dO   V P5                  WV4       VP                  4       '       g%   V P7                  W4       V P9                  W4       R# R# R# )r   T)Zexist_okz -> r  r  N)rN  r   rb   r   r   r   r  Zmakedirsr   r   r  rf   r   r   makefiler   makedirr  makefifor~  r  makedevmakelink_with_filterr   r^  makeunknownr  r  r  )re   r   
targetpathr  r  r  r  Z	upperdirss   &&&&&$$ r   r  ZTarFile._extract_member
  s     &&s+
''RVV4
 GGOOJ/	RWW^^I66 KK	D1==??gmmooIIaw||W5E5EFGIIa&==??MM'.]]__LL-^^MM'.]]__LL-]]__%% / / & 1 \\0W1MM'.JJwM:==??

7/

7/ # r!   c                s     VP                   f   \        P                  ! V4       R # \        P                  ! VR4       R #   \         d+    \        P                  P                  T4      '       g   h  R # i ; i)Ni  )rg   rb   ZmkdirZFileExistsErrorr   r   re   r   r  rh   r   r  ZTarFile.makedirN
  sW    
	||#$ U+ 	77==,, -	s   $A A /A61A65A6c           
     s   V P                   pVP                  VP                  4       V P                  p\	        VR 4      ;_uu_ 4       pVP
                  ee   VP
                   F(  w  rgVP                  V4       \        W5V\        V4       K*  	  VP                  VP                  4       VP                  4        M\        W5VP                  \        V4       RRR4       R#   + '       g   i     R# ; i)r  N)
r   r   r   r  r  r   r>   r   r   Ztruncate)re   r   r  ZsourcerD   Ztargetr   r   r   r   r  ZTarFile.makefile]
  s     G''(""z4((F~~)$+NNLFKK'iI %3 GLL)!FGLL)WM )(((s   BC!!C2	c                sn    V P                  W4       V P                  ^RVP                  ,          4       R# )rs  z9tarfile: Unknown file type %r, extracted as regular file.N)r  r  r   r  rh   r   r  ZTarFile.makeunknownm
  s1     	g*		! 24;LLA 	Br!   c                st    \        \        R 4      '       d   \        P                  ! V4       R# \        R4      h)mkfifozfifo not supported by systemN)rc   rb   r  r   r  rh   r   r  ZTarFile.makefifou
  s)     2x  IIj!=>>r!   c                s   \        \        R 4      '       d   \        \        R4      '       g   \        R4      hVP                  pVf   RpVP	                  4       '       d   V\
        P                  ,          pMV\
        P                  ,          p\        P                  ! W#\        P                  ! VP                  VP                  4      4       R# )mknodr  z'special devices not supported by systemNr   )rc   rb   r   rg   r  r  r  r  r  r  r   r   )re   r   r  rg   r%   r   r  ZTarFile.makedev}
  s     r7##72y+A+AHII||<D==??DLL DDLL D
G,,g.>.>?	Ar!   c                s(    V P                  WR R 4      # rj   )r  r  rh   r   makelinkZTarFile.makelink
  s    ((dDIIr!   c                sf   R p VP                  4       '       d_   \        P                  P                  V4      '       d   \        P                  ! V4       \        P
                  ! VP                  V4       R# \        P                  P                  VP                  4      '       d_   \        P                  P                  V4      '       d   \        P                  ! V4       \        P                  ! VP                  V4       R#   V P                  V4      pTf   TpMTf   \        R4      h T! Yd4      pTe   T P#                  YrTTR7       R# R#   \         d    Rp L\i ; i  \         d    T'       d   \        R4      Rhh i ; i  \         d   p\        YP                   4      ThRp?ii ; i)FNTz%unable to resolve link inside archiver  z[makelink_with_filter: if filter_function is not None, extraction_root must also not be None)r   rb   r   ZlexistsZunlinkZsymlinkr   r  r   Zlinksymlink_exceptionr  r  r   r  r   rf   r  )	re   r   r  r  r  Zkeyerror_to_extracterrorr  r  ZcauserH   r   r  ZTarFile.makelink_with_filter
  s~    $) 	,}}77??:..IIj)

7++Z877>>'"6"677wwz22		*-GGG00*= 8	//8J "!H&">? ?M*:G   1@1@ ! B  / ! 	,'+$	,
  	'";=BFG 	  " M'AuLMsW   E $E 7E 8.E '$E 7E E& /F
 E#"E#&F9F
F0F++F0c                s*   \        \        R 4      '       Ed5   \        P                  ! 4       ^ 8X  Ed   VP                  pVP                  pV'       g    \
        '       d:   VP                  '       d(   \
        P                  ! VP                  4      ^,          p \        '       d:   TP                  '       d(   \        P                  ! TP                  4      ^,          pVf   RpVf   Rp VP                  4       '       d0   \        \        R4      '       d   \        P                  ! W%V4       R# \        P                  ! W%V4       R# R# R#   \         d     Li ; i  \         d     Li ; i  \        \         3 d   p\#        R4      ThRp?ii ; i)geteuidNlchownzcould not change ownerr"   )rc   rb   r  r   r   r  r   Zgetgrnamr  r  r   Zgetpwnamr   r  r  r   ZOverflowErrorr   )re   r   r  r  ZgZur   r  r   r  ZTarFile.chown
  s)    2y!!bjjla&7AA sw}}}LL7:sw}}}LL7: yyD==??wr8'<'<IIjQ/HHZA./ '8!   
    ]+ D"#;<!CDs`   E  E 2'E E &E 8'E ,E0 -E0 1E0 EEE-,E-0FFFc                s    VP                   f   R #  \        P                  ! W!P                   4       R #   \         d   p\	        R4      ThR p?ii ; i)Nzcould not change mode)rg   rb   r  r   r   )re   r   r  r   r%   r   r  ZTarFile.chmod
  sD     <<	?HHZ. 	?67Q>	?s    4 AAAc                s    VP                   pVf   R # \        \        R4      '       g   R #  \        P                  ! W#V34       R #   \         d   p\        R4      ThR p?ii ; i)Nr  z"could not change modification time)r   rc   rb   r  r   r   )re   r   r  r   r   ru  r   r  ZTarFile.utime
  s[     =r7##	LHHZ0 	LCD!K	Ls   A A"AA"c                s   V P                  R 4       V P                  e   V P                  pRV n        V# V P                  V P                  P	                  4       8w  dl   V P                  ^ 8X  d   R# V P                  P                  V P                  ^,
          4       V P                  P                  ^4      '       g   \        R4      hRp  V P                  P                  V 4      p Te0   T P0                  '       g   T P2                  P5                  T4       T# RT n        T#   \         de   pT P                  '       dI   T P                  ^RT P                  T3,          4       T ;P                  \        ,          un         Rp?K   Rp?LRp?i\         d   pT P                  '       dJ   T P                  ^RT P                  T3,          4       T ;P                  \        ,          un         Rp?EK-  T P                  ^ 8X  d   \        \        T4      4      Rh Rp?EL<Rp?i\          d"    T P                  ^ 8X  d   \        R4      Rh ELj\"         d2   pT P                  ^ 8X  d   \        \        T4      4      Rh Rp?ELRp?i\$         d   p\        \        T4      4      RhRp?i\&         dH   p ^ RIp\+        Y4P,                  4      '       d   \        RT 24      RhTh  \.         d    Thi ; iRp?ii ; i)ZraNr<   Tz0x%X: %sz
empty filezzlib error: )r  r  r   r   r   r   r@   r   r   rX  r[   r  r  r   r/   r/  rY   rZ   r\   r  r   r-  r   r   r  r  r   r  )re   Zmr   r   r   s   &    r   ra  ZTarFile.next  se   
 	D'  A#DH ;;$,,++--{{aLLdkkAo.<<$$Q'' 899 ,,2248< ;;;##G,   DLM " $$$IIat{{A.>!>?KK9,K % & 6$$$IIat{{A.>!>?KK9,K[[A%#CF+5 &# <;;!##L1t; $' 6;;!##CF+5 $( 2A'T1 !!ZZ00',qc(:;E" Gs   D% %L 0AFL L AH$8&H$$L 1L L L &JL L J++L 8L :0K**K88K;;L c                s   V P                  4       pR pVe    VP                  V4      pVRV pV'       d    \        P                  P                  V4      p\        V4       Fr  pV'       d    VP                  VP                  8X  d   R pK*  V'       d+   \        P                  P                  VP                  4      pMVP                  pW8X  g   Kp  Vu # 	  V'       d   \        V4      hR#   \         d    Rp Li ; i)FNT)	r  indexr   rb   r   r   Zreversedr   rf   )	re   rf   r   	normalizer  Zskippingr  r   Zmember_names	   &&&&     r   r  ZTarFile._getmemberD  s    
 //# *g. "&5/77##D)Dw'F>>V]]2$H gg..v{{;$kk" ( W%% 1      s   C+ +C;:C;c                sd    V P                   '       g   V P                  4       e   K  RV n        R # R # NT)r  ra  r  rl   rm   r   r  ZTarFile._loadl  s(     {{{))+)DL r!   c                s    V P                   '       d'   \        R V P                  P                  ,          4      hVe0   V P                  V9  d   \        RV P                  ,          4      hR# R# )z%s is closedNzbad operation for mode %r)r   r   r   rS   rg   )re   rg   ro   r   r  ZTarFile._checku  sU     ;;;.4>>+B+BBCC		 55		ABB !6r!   c                sB   VP                  4       '       dR   R P                  \        R\        P                  P                  VP                  4      VP                  34      4      pRpMVP                  pTpV P                  W#RR7      pVf   \        RV,          4      hV# )r   NT)r   r  zlinkname %r not found)
r   r   r  rb   r   r   rf   r   r  r  )re   r   r   Zlimitr   r   r   r  ZTarFile._find_link_target~  s     ==??xxtbggoogll.KWM]M]-^ _`HE ''HEDI>2X=>>r!   c              #  s  "   V P                   '       d   V P                   R j  xL
  R # ^ pV P                  e   V P                  4       pV^,          pVx   V\	        V P                  4      8  d   V P                  V,          pM6V P                   '       g#   V P                  4       pV'       g
   RV n         R # MR # V^,          pVx  Kt   L5ir  )r  r  r  ra  r   )re   r  r   r2   r   __iter__ZTarFile.__iter__  s      <<<||##  'iikGQJEMs4<<((,,u-\\\))+#'DL  QJEM3 $s   "CCA3CC1Cc                s`    WP                   8:  d   \        V\        P                  R 7       R# R# )ZfileN)r  rM   rL   stderr)re   r  msgrh   r   r  ZTarFile._dbg  s!     JJ#CJJ' r!   c                s&    V P                  4        V # rj   )r  rl   rm   r   	__enter__ZTarFile.__enter__  s    r!   c                s    Vf   V P                  4        R # V P                  '       g   V P                  P                  4        RV n        R # r  )rk   r   r   r   )re   r   r  Z	tracebackr   r   __exit__ZTarFile.__exit__  s5    <JJL ###""$DKr!   )r   r  r  r  r  r   r  r  r  r   r  r   r   r  r7   r  r  r  rg   rf   r   r   r  r   )Nr_   NNNNNNr  NNNNF)r_   N)r_   Ni	   )r_   NN)r_   NNNN)NNNr   r  rj   ).N)rw   T)TF)NF)CrS   rT   rU   rV   r  r  r  r  r  r7   r  r   r   r   r   r   r  r  ri   r  r  r    r  r  r  r  r  r  rk   r  r  r  r  rm  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ra  r  r  r  r  r  r  r  r   rW   rq   rr   rt   r   r   r     s     EK L J FHFGJff #tZ j/ j/X 2 2  @  6  6    H 	yxyxyI%*	?hT)D )V1" 1"f%8G$C/% C/C/J)G GG($<+(,
C@10@D10(,10pN B?A$J3Bj DD?L>F&&P C&>( r!   c                 s     \        V R 4      '       d/   V P                  4       p\        V R7      pV P                  V4       M\        V 4      pVP	                  4        R#   \
         d     R# i ; i)r@   )r   TF)rc   r   r    r   rk   r   )rf   r   r   r2   r   
is_tarfiler    s[    
4  ))+CT"AIIcNT
A		 s   AA A.-A.c                  s	   ^ RI p RpV P                  VRR7      pVP                  RRRRR	R
7       VP                  RR\        RR7       VP	                  RR7      pVP                  RRRRR7       VP                  RRRR<RR7       VP                  RRRR=RR7       VP                  RRRRR7       VP                  4       pVP                  '       d!   VP                  f   VP                  ^R 4       VP                  e   VP                  p\        V4      '       d   \        VR!4      ;_uu_ 4       pVP                  4        \        VP                  4       \        P                  R"7       RRR4       VP                   '       d   \        R#P#                  V4      4       R# R# VP                  ^R$P#                  V4      4       R# VP$                  e   VP$                  p\        V4      '       dF   \&        P                  VR%4      ;_uu_ 4       pVP%                  VP                   R&7       RRR4       R# VP                  ^R$P#                  V4      4       R# VP                  EeK   \)        VP                  4      ^8X  d%   VP                  ^ ,          p\*        P,                  pMI\)        VP                  4      ^8X  d   VP                  w  rXM VP                  ^VP/                  4       4       \        X4      '       d   \&        P                  VR%4      ;_uu_ 4       pVP1                  XVP                  R'7       RRR4       VP                   '       d8   XR(8X  d   R)P#                  V4      p	MR*P#                  WX4      p	\        V	4       R# R# VP                  ^R$P#                  V4      4       R# VP2                  e   VP2                  P5                  ^ 4      p
\*        P6                  P9                  V
4      w  rR+R,R-R,R.R/R0R/R1R2R3R2R4R2R5R2R6R7R8R7/
pW9   d   R9W,          ,           MR:pVP2                  p\&        P                  W4      ;_uu_ 4       pV F  pVP;                  V4       K  	  RRR4       VP                   '       d   \        R;P#                  V
4      4       R# R# R#   + '       g   i     ELE; i  + '       g   i     R# ; i  + '       g   i     EL; i  + '       g   i     L~; i)>r'   Nz3A simple command-line interface for tarfile module.T)descriptionZcolorz-vz	--verboseZ
store_trueFzVerbose output)ZactionZdefaulthelpz--filterz<filtername>zFilter for extraction)metavarZchoicesr  )Zrequiredz-lz--list	<tarfile>zShow listing of a tarfile)r  r  z-ez	--extractZ+zExtract tarfile into target dir)Znargsr  r  z-cz--createzCreate tarfile from sourcesz-tz--testzTest if a tarfile is validz&--filter is only valid for extraction
r_   r  z{!r} is a tar archive.z{!r} is not a tar archive.
r  )r  )r   r  r  z{!r} file is extracted.z+{!r} file is extracted into {!r} directory.r   rx   z.tgzz.xzr{   z.txzz.bz2ry   z.tbzz.tbz2z.tb2z.zstr   z.tzstzw:r`   z{!r} file created.)r  z<output_dir>)z<name>z<file>)argparseZArgumentParserZadd_argumentr  Zadd_mutually_exclusive_groupZ
parse_argsr  r  ZexitZtestr  r    r  rM   rL   r  r  r7   rm  r   r   rb   curdirZformat_helpr  Zcreater  r   Zsplitextr  )r  r  Zparserrf  ZargsrB   r   Ztfr  r  Ztar_namero  ZextZcompressionsZtar_modeZ	tar_filesZ	file_names                    r   mainr	    s   GK$$D$IF
k,-  /

N .4  6 ///>E	tX{7  9	t[<=  ? 
tZs39  ; 
tX{8  : D{{{t||+A@Ayyiic??c33 cnn&SZZ8   |||.55c:;  KK9@@EF		iic??c5))R- *) KK9@@EF		!t||!,,q/CYYF!#,,KCKK6--/0c??c5))R6$++> *|||S=3::3?C2396#3F c
  KK9@@EF		 ;;??1%!!(+ 4D4DEEUEEU
  03/B4,++KK	\\(--&	y! ' . <<<&--h78 5 
!M   *)) *))D .-s0   2:R(R<SS$(R9	<S	S!	$S4	Z__main__)r   r   r  r   r   r   r   r   r   r  r  r5   r  r  r    r   r   r   r	   r
   r   r   r   r   r   )r   r  r   r   r   r   r   r   >   r   r   r   r  r   )lZversionZ
__author__Z__credits__Zbuiltinsr    r  rL   rb   r   r=   r  r   r9   r  Zrer  r   r  ZAttributeErrorZNotImplementedErrorr   r  Z__all__r   r   r  r%  r   r"  r!  r6  r  rK  r}  r|  r8  r9  r  r  ZCONTTYPEr(  r'  rL  r1  r2  r[  r  r5   r  r  r^  rx  rO  rv  rh  r.  r.   rw  rf   r  Zgetfilesystemencodingr    r&   r3   r8   r;   r>   rO   r  r   r   r   r   r   r   rY   rZ   r[   r/   r\   r^   ru   Zobjectr   r   ZBufferedReaderr   r	   r   r   r   r
   r   r   r  r   r   r   r   r  r  Zcompilerd  r   r   r  r	  rS   rQ   r!   r   <module>r
     s  > 6
H
 ' 
 	 	      	 $%8'B ? 	^
	





  



 HgGXWg#%5!	# (>+ /	.
 9
 UUU	3	3
C  77d?H((*H0&( N <* "&$ 2	y 		8 		 		x 		( 		( 		{ 		; 		[ 		 		K 	 0| |~6 @i& iX"2$$ "	( 	J J
?k ?@{ @
L L
?+ ?D D w5BH )	:
K 	 ::&89 o9f o9d`f `L)$ ||`9D zF Y`  
C  
Cs"   I$ I4 $	I10I14	J J