python (3.11.7)

(root)/
lib/
python3.11/
__pycache__/
tarfile.cpython-311.opt-2.pyc

eD	dZdZdZddlmZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZ	ddlZn
#e$rdZYnwxYw	ddlZn
#e$rdZYnwxYweefZ	eefz
Zn#e$rYnwxYwgdZdZdZed	zZd
ZdZdZdZd
Z dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2e2Z3e!e"e#e$e'e(e)e%e&e*e+e,fZ4e!e"e)e,fZ5e*e+e,fZ6dZ7hdZ8e9e9e9e:e:e:d Z;ej<d!krd"Z=nej>Z=d#Z?d$Z@d%ZAd&e3fd'ZBd(ZCdedfd)ZDd*ZEGd+d,eFZGGd-d.eGZHGd/d0eGZIGd1d2eGZJGd3d4eGZKGd5d6eGZLGd7d8eLZMGd9d:eLZNGd;d<eLZOGd=d>eLZPGd?d@eLZQGdAdBZRGdCdDZSGdEdFeTZUGdGdHeTZVGdIdJejWZXGdKdLeGZYGdMdNeYZZGdOdPeYZ[GdQdReYZ\GdSdTeYZ]GdUdVeYZ^dddXZ_dYZ`dZZad[Zbe`eaebd\ZceTZdGd]d^eTZeGd_d`eTZfdaZgefjZdbZheidckrehdSdS)ez0.9.0u"Lars Gustäbel (lars@gustaebel.de)u4Gustavo Niemeyer, Niels Gustäbel, Richard Townsend.)openN)TarFileTarInfo
is_tarfileTarError	ReadErrorCompressionErrorStreamErrorExtractErrorHeaderErrorENCODINGUSTAR_FORMAT
GNU_FORMAT
PAX_FORMATDEFAULT_FORMATrisustar  sustar00d01234567LKSxgX)pathlinkpathsizemtimeuidgidunamegname>r&r-r,r')atimectimer)r*r+r(ntutf-8c	|td|||}|d||t|z
tzzS)Nzmetadata cannot contain None)
ValueErrorencodelenNUL)slengthencodingerrorss    ;/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/tarfile.pystnr<sPy7888	6""AWfW:#a&&C///cz	|d}|dkr
|d|}|||S)Nr)finddecode)r7r9r:ps    r;ntsrCs@	u

ABww
bqbE88Hf%%%r=c~	|ddvr]d}tt|dz
D]}|dz}|||dzz
}|ddkrdt|dz
z|z
}nT	t|dd}t|pd	d}n#t
$rt
d
wxYw|S)Nr)r$rFasciistrict0invalid header)ranger5rCintstripr3InvalidHeaderError)r7nis   r;ntirSs	t~
s1vvz""		A
!GA
1q5MAAQ45==#a&&1*%)*A	7Aw))AAGGII$a((AA	7	7	7$%5666	7Hs*5B  B:rGc	|}t|}d|cxkrd|dz
zkr$nn!td|dz
|fzdtz}n|tkrd|dz
z|cxkrd|dz
zkrfnnc|dkrt	dg}nt	dg}d|z|z}t|dz
D] }|d|dz|dz}!ntd	|S)
NrrGr$z%0*orIrHrErFzoverflow in number field)rNbytesr6r	bytearrayrMinsertr3)rQdigitsformat
original_nr7rRs      r;itnr[s8JAAA!!!!fqj!!!!!!&FQJ?*G44s:	:		36A:#6"6!"Q"Q"Q"Qcfqj>Q"Q"Q"Q"Q"Q665'""AA5'""Av
!Avz""		A
HHQE	"""
!GAA	3444Hr=c	dttjd|z}dttjd|z}||fS)NrH
148B8x356B
148b8x356b)sumstructunpack_from)bufunsigned_chksum
signed_chksums   r;calc_chksumsresRC 2< E EFFFO#f0sCCDDDMM))r=c	|pd}|dkrdS|tj|||dSt||\}}t|D]J}||}t||kr|d||K|dkrH||}t||kr|d||dS)Ni@runexpected end of data)shutilcopyfileobjdivmodrMreadr5write)	srcdstr8	exceptionbufsizeblocks	remainderbrbs	         r;riris"G
{{
~3W---vw//FI
6]]hhws88g)4555		#A~~hhy!!s88i)4555		#
Fr=cttjdd}|)||d|}t|ddS)Nr9backslashreplace )end)getattrsysstdoutr4rAprint)r7r9s  r;_safe_printr|sVsz:t44H
HHX12299(CC	!r=ceZdZ	dS)rN__name__
__module____qualname__r=r;rrsDr=rceZdZ	dS)rNr~rr=r;rrs/Dr=rceZdZ	dS)rNr~rr=r;rrs0Dr=rceZdZ	dS)r	Nr~rr=r;r	r	s8Dr=r	ceZdZ	dS)r
Nr~rr=r;r
r
sGDr=r
ceZdZ	dS)rNr~rr=r;rrs+Dr=rceZdZ	dS)EmptyHeaderErrorNr~rr=r;rr!s&Dr=rceZdZ	dS)TruncatedHeaderErrorNr~rr=r;rr$s*Dr=rceZdZ	dS)EOFHeaderErrorNr~rr=r;rr's,Dr=rceZdZ	dS)rPNr~rr=r;rPrP*s(Dr=rPceZdZ	dS)SubsequentHeaderErrorNr~rr=r;rr-s=Dr=rc(eZdZ	dZdZdZdZdS)
_LowLevelFilectjtjtjztjzd|}ttdr|tjz}tj||d|_dS)NrwO_BINARYi)	osO_RDONLYO_WRONLYO_CREATO_TRUNChasattrrrfd)selfnamemodes   r;__init__z_LowLevelFile.__init__:sirz)BJ6

2z""	 BKD'$e,,r=c8tj|jdSN)rcloserrs r;rz_LowLevelFile.closeCs
r=c6tj|j|Sr)rrkrrr(s  r;rkz_LowLevelFile.readFswtw%%%r=c:tj|j|dSr)rrlrrr7s  r;rlz_LowLevelFile.writeIs
!r=N)rrrrrrkrlrr=r;rr4sU
---&&&r=rcZeZdZ	dZdZdZdZdZdZdZ	dZ
dd
ZdZdZ
d
ZdS)_Streamc	d|_|t||}d|_|dkr#t|}|}|pd|_||_||_||_||_d|_	d|_
d|_	|dkr	ddl}n#t$rtddwxYw||_|d|_|d	kr"|j|_|dS|dS|d
krs	ddl}n#t$rtddwxYw|d	kr.d|_||_t2|_dS||_dS|dkrs	ddl}n#t$rtd
dwxYw|d	kr.d|_||_|j|_dS||_dS|dkrtd|zdS#|js|jd|_xYw)NTF*r=rgzzzlib module is not availablerbz2bz2 module is not availablexzlzma module is not availabletarunknown compression type %r) _extfileobjr_StreamProxygetcomptyperrcomptypefileobjrprbposclosedzlibImportErrorr	crc32crcerrorro
_init_read_gz_init_write_gzrdbufBZ2DecompressorcmpOSError
BZ2CompressorlzmaLZMADecompressor	LZMAErrorLZMACompressorr)	rrrrrrprrrs	         r;rz_Stream.__init__Ws	?#D$//G$Ds??#7++G**,,H
		 
-	4UKKKK"UUU*+IJJPTTU 	::c??3;;%)ZDN&&((((('')))))U""TJJJJ"TTT*+HIItST3;; #DI"2244DH%,DNNN"0022DHHHT!!UKKKK"UUU*+IJJPTTU3;; #DI#4466DH%)^DNNN#2244DHHHU""&'Dx'OPPP#"	#
%""$$$DKsyH
BHB--A
H9HHDHD665H-HHFHF//5H&HH*Icdt|dr|js|dSdSdS)Nr)rrrrs r;__del__z_Stream.__del__sB4""	4;	JJLLLLL				r=cB	|jd|jj|jj|jjd|_t
jdttj	}|
d|zdz|jdr|jdd|_tj|j|_|
|jdd	t"zdS)
N	r<Lss.gzz
iso-8859-1replace)rcompressobjDEFLATED	MAX_WBITS
DEF_MEM_LEVELrr`packrNtime_Stream__writerendswithrr&basenamer4r6)r	timestamps  r;rz_Stream._init_write_gzs	9((DI,>-1Y-@,@,0I,C,-//Kc$)++&6&677	(94{BCCC9e$$	'	#2#DIG$$TY//	TY%%lI>>DEEEEEr=c	|jdkr%|j||j|_|xjt|z
c_|jdkr|j|}||dS)Nrr)	rrrrrr5rcompressrrs  r;rlz
_Stream.writesx	=D  yq$(33DHCFF=E!!!!!$$AQr=c*	|xj|z
c_t|j|jkrd|j|jd|j|j|jd|_t|j|jkbdSdSr)rbr5rprrlrs  r;__writez_Stream.__writes		
A
$(mmdl**Ltx

6777x

.DH$(mmdl******r=c	|jrdSd|_	|jdkr2|jdkr'|xj|jz
c_|jdkr|jr|j|jd|_|jdkrg|jtj	d|j
|jtj	d|jdz|js|j
dSdS#|js|j
wwxYw)NTrrr=rrl)rrrrbrflushrrlr`rrrrrrs r;rz
_Stream.closes?	;	F	%yCDMU$:$:DHNN,,,yCDH""48,,,=D((L&&v{4'B'BCCCL&&v{4J9N'O'OPPP#
%""$$$$$
%
%4#
%""$$$$
%sC'D#Ec	|j|jj|_d|_|ddkrt
d|ddkrtdt|d}|d|d	zr]t|dd
t|dzz}|	||dzr%	|d}|r|tkrn$|d
zr%	|d}|r|tkrn$|dzr|ddSdS)Nr=r%snot a gzip filer$zunsupported compression methodrHrGT)r
decompressobjrrr
_Stream__readrr	ordrkr6)rflagxlenr7s    r;rz_Stream._init_read_gzs	9**DI,?+?@@	;;q>>[((-...;;q>>W$$"#CDDD4;;q>>""A!8	t{{1~~&&s4;;q>>/B/B)BBDIIdOOO!8	
KKNNAHH
"9	
KKNNAHH
!8	KKNNNNN		r=c	|jSr)rrs r;tellz_Stream.tells	xr=rc	||jz
dkrbt||jz
|j\}}t|D]}||j||ntd|jS)Nrz seeking backwards is not allowed)rrjrprMrkr
)rrrqrrrRs     r;seekz_Stream.seeks	>Q &sTX~t| D DFI6]]
(
(		$,''''IIi    @AAAxr=cl	||}|xjt|z
c_|Sr)_readrr5)rr(rbs   r;rkz_Stream.reads1CjjCHH
r=c*	|jdkr||St|j}|jg}||kr|jr|j}d|_n"|j|j}|snk	|j	|}n"#|j
$r}td|d}~wwxYw|||t|z
}||kd
|}||d|_|d|S)Nrr=zinvalid compressed data)rrr5rrbrrkrpr
decompressrorappendjoin)rr(ctrbes      r;rz
_Stream._reads*	=E!!;;t$$$	NN
YK$hhx
hl''55
Bh))#..>
B
B
B 9::A
B
HHSMMM
SMA$hh
HHQKKdeeH	$xs=B
B7"B22B7cB	t|j}|jg}||krO|j|j}|sn-|||t|z
}||kOd|}||d|_|d|S)Nr=)r5rbrrkrprr)rr(rrrbs     r;__readz_Stream.__read-s	
MM
XJ$hh,##DL11C

HHSMMM
SMA$hh
HHQKKTUU8$xr=N)r)rrrrrrrlrrrrrrkrrrr=r;rrLsDDDLFFF ///%%%,>
6r=rc(eZdZ	dZdZdZdZdS)rc\||_|jt|_dSr)rrk	BLOCKSIZErb)rrs  r;rz_StreamProxy.__init__Cs$<$$Y//r=c2|jj|_|jSr)rrkrbrs  r;rkz_StreamProxy.readGsL%	xr=c|jdrdS|jdddkr|jdddkrd	S|jd
rdSdS)
NsrrsBZhr
s1AY&SYr)s]s7zXZrr)rb
startswithrs r;rz_StreamProxy.getcomptypeKsp8//	4
Xac]f
$
$!B$9)D)D5
X
 
 !C
D
D	45r=c8|jdSr)rrrs r;rz_StreamProxy.closeUsr=N)rrrrrkrrrr=r;rr>sU000r=rc^eZdZ	ddZdZdZdZdZdZe	j
fdZdd	Zd
Z
dZdS)
_FileInFileNc||_||_||_d|_t	|dd|_d|_|d|fg}d|_g|_d}|j}|D]T\}}||kr|j	d||df|j	d|||z|f||z
}||z}U||jkr%|j	d||jdfdSdS)NrrFT)
roffsetr(positionrxrr	map_indexmapr)rrrr(	blockinfolastposrealposs       r;rz_FileInFile.__init__bs	
GVT22	TI+%	$	$LFD >???HOOT66D='BCCCtOGtmGGTYHOOUGTY=>>>>>r=cdSrrrs r;rz_FileInFile.flush{sr=cdSNTrrs r;readablez_FileInFile.readable~str=cdSNFrrs r;writablez_FileInFile.writablesur=c4|jSr)rseekablers r;rz_FileInFile.seekables|$$&&&r=c	|jSr)r
rs r;rz_FileInFile.tells	}r=c	|tjkr)tt|d|j|_n|tjkrG|dkrt|j|zd|_nst|j|z|j|_nP|tjkr1tt|j|z|jd|_ntd|jS)NrzInvalid argument)	ioSEEK_SETminmaxr(r
SEEK_CURSEEK_ENDr3)rr
whences   r;rz_FileInFile.seeks	R[  Ha 0 0$)<<DMM
r{
"
"!|| #DMH$<a @ @

 #DMH$<di H H


r{
"
"DI$8$) D DaHHDMM/000}r=c	||j|jz
}nt||j|jz
}d}|dkr
	|j|j\}}}}||jcxkr|krnnn5|xjdz
c_|jt|jkrd|_bt|||jz
}|rg|j||j|z
z|j|}t||krtd||z
}n
|t|zz
}||z}|xj|z
c_|dk
|S)Nr=rTr$rg)r(r
r rrr5rrrkrr6)	rr(rbdatastartstoprr8rss	         r;rkz_FileInFile.readsq	<9t},DDtTY677DQhh
+,0HT^,D)eT6DM0000D00000NNa'NN~TX66)*
+tdm344F
$!!&DME,A"BCCCL%%f--q66V###$<===qsV|#FNDMMV#MM'Qhh(
r=c|t|}||dt|<t|Sr)rkr5)rrsrbs   r;readintoz_FileInFile.readintos7iiA)3s88)3xxr=cd|_dSr)rrs r;rz_FileInFile.closes
r=r)rrrrrrrrrrrrrkr*rrr=r;r
r
\s
????2


'''
%'K >
r=r
ceZdZfdZxZS)ExFileObjectct|j|j|j|j}t|dSr)r
roffset_datar(sparsesuperr)rtarfiletarinfor	__class__s    r;rzExFileObject.__init__sBgow/Bgn..
!!!!!r=rrrr
__classcell__r4s@r;r-r-s8"""""""""r=r-ceZdZdS)FilterErrorNr~rr=r;r9r9sDr=r9ceZdZfdZxZS)AbsolutePathErrorcj||_td|jddS)Nzmember z has an absolute pathr3r1rrrr3r4s  r;rzAbsolutePathError.__init__s6
H7<HHHIIIIIr=r5r7s@r;r;r;sAJJJJJJJJJr=r;ceZdZfdZxZS)OutsideDestinationErrorc||_||_t|jd|ddzdS)Nz would be extracted to ,  which is outside the destinationr3_pathr1rrrr3r&r4s   r;rz OutsideDestinationError.__init__sT

GLMM4MMM=>	?	?	?	?	?r=r5r7s@r;r@r@8?????????r=r@ceZdZfdZxZS)SpecialFileErrorch||_t|jddS)Nz is a special filer=r>s  r;rzSpecialFileError.__init__s3
GL>>>?????r=r5r7s@r;rIrIsA@@@@@@@@@r=rIceZdZfdZxZS)AbsoluteLinkErrorch||_t|jddS)Nz is a link to an absolute pathr=r>s  r;rzAbsoluteLinkError.__init__s3
GLJJJKKKKKr=r5r7s@r;rLrLsALLLLLLLLLr=rLceZdZfdZxZS)LinkOutsideDestinationErrorc||_||_t|jd|ddzdS)Nz would link to rBrCrDrFs   r;rz$LinkOutsideDestinationError.__init__sT

GLEE4EEE=>	?	?	?	?	?r=r5r7s@r;rOrOrGr=rOTci}|j}tj|}|dtjfr,|jdtjzx}|d<tj|rt|tjtj	||}tj
||g|krt|||j}||dz}|rr|
s|r|dzs|dz}|dz}n:|s|rd}nt#|||jkr||d<|r]|jd|d<|jd|d	<|jd|d
<|jd|d<|s|rtj|jrt/||rDtj	|tj||j}n%tj	||j}tj|}tj
||g|krt3|||S)N/ri@irr*r+r,r-)rrr&realpathrseplstripisabsr;r
commonpathr@risregislnkisdirissymrIr*r+r,r-linknamerLdirnamerO)member	dest_pathfor_data	new_attrsrtarget_pathrs       r;_get_filtered_attrsresI;D  ++IRV}%%D#);#5#5cBFl#C#CCy 	w}}T( ''''""27<<	4#@#@AAK	w;	233y@@%fk:::;De|
	/||~~
/
/e|#FND

/6<<>>
/'v...6; $IfG:!#Ie:!#Ie<#!%Ig<#!%Ig<<>>	GV\\^^	Gw}}V_--
0'///||~~
< gll9+-7??4+@+@+1?<<!gll9+1?<<'**;77Kw!!;	":;;yHH1&+FFFr=c|Srr)r`ras  r;fully_trusted_filterrg0sMr=cNt||d}|r|jdi|ddiS|S)NFdeeprrerr`rarcs   r;
tar_filterrl3sC#FIu==I7v~66	666666Mr=cNt||d}|r|jdi|ddiS|S)NTriFrrjrks   r;data_filterrn9sC#FIt<<I7v~66	666666Mr=)
fully_trustedrr&cpeZdZ	edTiddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d$d&d$ZdUd(Zed)Zejd*Zed+Z	e	jd,Z	d-Z
eeeeeeeed.ed/
d0Zd1Z
eed2fd3Zd4Zd5Zd6Zed7Zd8Zed9Zed:Zed;Zed<Zed=Zed>Zd?Zd@ZdAZ dBZ!dCZ"dDZ#dEZ$dFZ%dGZ&dHZ'dIZ(dJZ)dKZ*dLZ+dMZ,dNZ-dOZ.dPZ/dQZ0dRZ1dSZ2d$S)VrrzName of the archive member.rzPermission bits.r*z6User ID of the user who originally stored this member.r+z7Group ID of the user who originally stored this member.r(zSize in bytes.r)zTime of last modification.chksumzHeader 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-zGroup name.devmajorzDevice major number.devminorzDevice minor number.rzThe tar header starts here.r/zThe file's data starts here.pax_headerszMA dictionary containing key-value pairs of an associated pax extended header.r0zSparse member information.r2N_sparse_structs_link_targetrc	||_d|_d|_d|_d|_d|_d|_t|_d|_	d|_
d|_d|_d|_
d|_d|_d|_i|_dS)Nirr)rrr*r+r(r)rqREGTYPErrr^r,r-rsrtrr/r0rurrs  r;rzTarInfo.__init__os				
	




r=c	|jSrrrs r;r&zTarInfo.paths
2yr=c||_dSrr|rzs  r;r&zTarInfo.paths
			r=c	|jSrr^rs r;r'zTarInfo.linkpaths
:}r=c||_dSrr)rr^s  r;r'zTarInfo.linkpaths
 


r=cJd|jj|jt|fzS)Nz<%s %r at %#x>)r4rridrs r;__repr__zTarInfo.__repr__s!4>#:49RXX"NNNr=T)
rr)rr^r*r+r,r-ri_KEEPc
	|	rtj|}ntj|}||
ur||_||
ur||_||
ur||_||
ur||_||
ur||_||
ur||_||
ur||_||
ur||_	|Sr)
copydeepcopyrr)rr^r*r+r,r-)rrr)rr^r*r+r,r-rirresults            r;rzTarInfo.replaces		%]4((FFYt__FuFK FLuFK5  &FOeFJeFJ FL FL
r=c@	|jd}n
|jdz}|j||j|j|j|j|j|j|j|j	|j
|j|jd
}|dtkr+|dds|dxxdz
cc<|S)N)
rrr*r+r(r)rqrrr^r,r-rsrtrrrrR)rrr*r+r(r)rqrrr^r,r-rsrtDIRTYPEr)rrinfos   r;get_infozTarInfo.get_infos	9DD9v%D		
	






 <7""4<+@+@+E+E"LLLCLLLr=surrogateescapecp	|}|D]\}}|td|z|tkr||||S|t
kr||||S|tkr|||Std)Nz%s may not be Nonezinvalid format)	ritemsr3rcreate_ustar_headerrcreate_gnu_headerrcreate_pax_header)rrYr9r:rrvalues       r;tobufz
TarInfo.tobufs	}}::<<	>	>KD%} !5!<===\!!++D(FCCC
z
!
!))$&AAA
z
!
!))$999-...r=c	t|d<t|d||tkrt	dt|d||t
kr&||d||\|d<|d<||t||S)Nmagicr^zlinkname is too longrprefix)	POSIX_MAGICr5r4LENGTH_LINKr3LENGTH_NAME_posix_split_name_create_headerr)rrr9r:s    r;rzTarInfo.create_ustar_headers	#W
tJ&&x8899KGG3444tF|""8V4455CC+/+A+A$v,PXZ`+a+a(DNDL""4xHHHr=c	t|d<d}t|d||tkr&|||dt
||z
}t|d||tkr&|||dt||z
}|||t||zS)Nrr=r^r)
	GNU_MAGICr5r4r_create_gnu_long_headerGNUTYPE_LONGLINKrGNUTYPE_LONGNAMErr)rrr9r:rbs     r;rzTarInfo.create_gnu_headers	!W
tJ&&x8899KGG4//Z0@BRT\^deeeCtF|""8V4455CC4//V>NPXZ`aaaCT((z8VLLLLr=c	t|d<|j}ddtfddtfddfD]h\}}}||vr	||dd	n#t$r||||<Y@wxYwt|||kr||||<id
D]u\}}d}||}	t|	t}
|
rt|	n|	}d|cxkrd
|dz
zks
nd||<d}n	|
r|||<d}|r||vrt|	||<v|r||t|}nd}|||tddzS)Nrrr&r^r')r,r, )r-r-rrIrJ))r*rG)r+rG)r()r)rFrrGr$Tr=r)rrurrrr4UnicodeEncodeErrorr5
isinstancefloatroundstr_create_pax_generic_headerXHDTYPErr)
rrr9rurhnamer8rX	needs_paxvalval_is_floatval_intrbs
             r;rzTarInfo.create_pax_headers	$W
&++--
-
J/T&(>$@	0	0D%##
T
!!'84444%


%)$ZE"
4:''%)$ZE"R	-	-LD&It*C%c511L$09eCjjjcG3333!
"33333T
 		
!%T
 	
-T44$'HHD!	11+wQQCCCT((|WiPPPPsA$$A<;A<c<	||tdS)Nr1)rXGLTYPE)clsrus  r;create_pax_global_headerz TarInfo.create_pax_global_header:s	--k7GLLLr=c	|d}tdt|D]}d|d|}d||d}t|||t
kr.t|||tkrntd||fS)NrRr$zname is too long)splitrMr5rr4
LENGTH_PREFIXrr3)rrr9r:
componentsrRrs       r;rzTarInfo._posix_split_name@s	ZZ__
q#j//**	1	1AXXj!n--F88JqrrN++D6==62233}DDHf5566+EE/000t|r=c	|dttfv}|rKt|ddd|}t|ddd|}n$t	dd||}t	dd||}|dt
}|t
dt	|ddd	||t|d
ddzd|t|ddd|t|d
dd|t|ddd|t|ddd|d|t	|ddd	|||dtt	|ddd||t	|ddd||||t	|ddd||g}tj	dtzd|}	t|	tdd}
|	ddtd|
zdz|	ddz}	|	S)NrrrsrrGrtrzTarInfo.type must not be Nonerrrrr*r+r(rr)s        r^rr,rr-rrz%dsr=iz%06orIi)getCHRTYPEBLKTYPEr[r<ryr3rr`rrrrerU)rrYr9r:has_device_fieldsrsrtfiletypepartsrbrqs           r;rzTarInfo._create_headerPs	!HHV,,'0BB	4488J22Av>>H488J22Av>>HH2q(F33H2q(F33H88FG,,<===
$$c8V<<##f,a88""Av..""Av..##R00!$$b&11R((#x@@HHWk**"%%r8V<<"%%r8V<<2&&Xv>>
$k%)+SXXe__==c9*++.//2%4%j5F!2G<<<s455zI
r=c	tt|t\}}|dkr|t|z
tzz
}|S)Nr)rjr5rr6)payloadrqrrs   r;_create_payloadzTarInfo._create_payloadzsE	#3w<<;;	q==	I-44Gr=c	|||tz}i}d|d<||d<t||d<t|d<||t
||||zS)Nz
././@LongLinkrrrr(r)r4r6r5rrrr)rrrrr9r:rs      r;rzTarInfo._create_gnu_long_headers	{{8V,,s2&VV4yyV!W
!!$hGG##D))*	*r=c	d}|D]/\}}	|dd#t$rd}YnwxYwd}|r|dz
}|D]\}}|d}|r||d}n|d}t|t|zdz}d	x}	}
	|tt	|
z}	|	|
krn|	}
)|tt	|
d
dz|zdz|zd
zz
}i}d|d<||d<t||d<t|d<||td
d|	|zS)NFr1rJTr=s21 hdrcharset=BINARY
rrrrI =
z././@PaxHeaderrrrr(rr)
rr4rr5rrUrrrr)rrurrr9binarykeywordrrecordslrQrBrs            r;rz"TarInfo._create_pax_generic_headers	)//11		NGU
Wh////%



	100G)//11	V	VNGUnnW--G
.X/@AAW--Gs5zz)A-AIA
CFFO66	


uSVVW--4w>EMPUUUGG'VV7||V#W
!!$gyII##G,,-	-s5AAc	t|dkrtdt|tkrtd|t
tkrt
dt|dd}|t|vrtd|}t|dd|||_t|dd	|_t|d	d
|_
t|d
d|_t|dd|_t|dd|_||_|dd
|_t|d
d|||_t|dd|||_t|dd|||_t|dd|_t|dd|_t|dd||}|jt0kr&|jdrt4|_|jt6krd}g}t9dD]h}		t|||dz}
t||dz|dz}n#t:$rYn!wxYw||
|f|dz
}it?|d}t|dd}
|||
f|_ |!r|j"d|_|r |jtFvr|dz|jz|_|S)Nrzempty headerztruncated headerzend of file headerzbad checksumrlt|ii	i)iIiQiYirRirriii)$r5rrrcountr6rrSrerPrCrrr*r+r(r)rqrrr^r,r-rsrtAREGTYPErrGNUTYPE_SPARSErMr3rboolrvr\rstrip	GNU_TYPES)rrbr9r:rqobjrrstructsrRrnumbytes
isextendedorigsizes              r;frombufzTarInfo.frombufsI	s88q==">222s88y  &'9:::99S>>Y&& !5666SS\""c****$^444cees1S5z8V44s3s7|$$c#c'l##c#c'l##s3s7|$$CG%%	
s3w<3s3w<6::CGh77	CGh77	3s3w<((3s3w<((SS\8V448xCH$5$5c$:$:CH
8~%%CG1XX

 Sr\!233F"3sRxb'8#9::HH!EE1222r	c#hJ3s3w<((H#*J"AC99;;	,xs++CH	/chi//|ch.CH
s7J==
K
Kc	|jt}|||j|j}|jtz
|_||Sr)	rrkrrr9r:rr_proc_member)rr2rbrs    r;fromtarfilezTarInfo.fromtarfilesf	o""9--kk#w/@@_))++i7
(((r=c,	|jttfvr||S|jtkr||S|jtttfvr|	|S|
|Sr)rrrr
_proc_gnulongr_proc_sparserrSOLARIS_XHDTYPE	_proc_pax
_proc_builtin)rr2s  r;rzTarInfo._proc_members	9)+;<<<%%g...
Y.
(
($$W---
Y7G_=
=
=>>'***%%g...r=c	|j|_|j}|s|jt
vr|||jz
}||_|	|j
|j|j|
r|jd|_|SNrR)rrr/rZrrSUPPORTED_TYPES_blockr(r_apply_pax_inforur9r:r\rr)rr2rs   r;rzTarInfo._proc_builtin)s	#?//11!::<<	-49O;;dkk$),,,F	
W0'2BGNSSS::<<	.	((--DIr=c8	|j||j}	||}n/#t
$r"}t
t|dd}~wwxYw|j|_|j	tkr!t||j|j
|_n0|j	tkr t||j|j
|_|r|jd|_|Sr)rrkrr(rrrrrrrrrCr9r:rrr^r\removesuffix)rr2rbnextrs     r;rzTarInfo._proc_gnulong?s	o""4;;ty#9#9::	:##G,,DD	:	:	:'A//T9	:
k9(((C!17>BBDII
Y*
*
*W%5w~FFDM::<<	4	..s33DIsA
A7A22A7c4	|j\}}}|`|r|jt}d}t	dD]l}	t|||dz}t||dz|dz}	n#t$rYn%wxYw|r|	r|||	f|dz
}mt|d}|||_	|j
|_|j||j
z|_||_
|S)Nrrri)rvrrkrrMrSr3rrr0rr/rr(r)
rr2rrrrbrrRrrs
          r;rzTarInfo._proc_sparseZsK	)-(<%X 	(/&&y11CC2YY

 Sr\!233F"3sRxb'8#9::HH!EE7h7NNFH#5666r	c#hJ	("?//11)DKK	,B,BB	s7A<<
B
	B
cx	|j||j}|jt
kr|j}n|j}tj	d|}|+|
dd|d<|d}|dkr|j
}nd}tjd}d}	|||}|sn|\}	}
t#|	}	|	dkrt%d	||d
dz|d|	zdz
}||
dd|j}
|
t.vr#||||j
|j}n||dd|j}|||
<||	z
}	||}n/#t2$r"}
t5t7|
dd}
~
wwxYwd|vr|||ned|vr||||nI|d
dkr0|ddkr|||||jt>t@fvr~|!||j
|j|j"|_"d|vrM|j#}|$s|jtJvr|||jz
}||_"|S)Ns\d+ hdrcharset=([^\n]+)\nr$r1
hdrcharsetBINARYs(\d+) ([^=]+)=rTrLr%GNU.sparse.mapGNU.sparse.sizezGNU.sparse.major1zGNU.sparse.minorrKr()&rrkrr(rrrrurresearchgrouprArr9compilematchgroupsrNrPrwr'_decode_pax_fieldr:PAX_NAME_FIELDSrrrr_proc_gnusparse_01_proc_gnusparse_00_proc_gnusparse_10rrrrr/rZr)rr2rbrurrr9regexrr8rrrrrs               r;rzTarInfo._proc_paxvs`	o""4;;ty#9#9::
9!-KK!-2244K	7==(-A(=(=g(F(FK%
!__\22
!!'HHH
-..	KKS))E
#llnnOFG[[F{{()9:::		!q(Q&)@1)DDEE,,WgwN$$G/))..uh@P((..ugw(($)K 6MC9	>	:##G,,DD	:	:	:'A//T9	:{**##D+6666
+
-
-##D+s;;;;
__/
0
0C
7
7KOOL^<_<_cf<f<f##D+w???9/222  g.>OOO+DK$$)::<<549O#C#Cdkk$)444F!'s"G88
H$HH$c	g}tjd|D]7}|t|d8g}tjd|D]7}|t|d8tt
|||_dS)Ns\d+ GNU.sparse.offset=(\d+)\nr$s\d+ GNU.sparse.numbytes=(\d+)\n)rfinditerrrNrlistzipr0)rrrurboffsetsrrs       r;rzTarInfo._proc_gnusparse_00s	[!BCHH	0	0ENN3u{{1~~..////[!DcJJ	1	1EOOCA//00003w1122r=c		d|ddD}tt|ddd|ddd|_dS)Nc,g|]}t|Sr)rN).0xs  r;
<listcomp>z.TarInfo._proc_gnusparse_01.<locals>.<listcomp>sKKKQ#a&&KKKr=r,r%r$)rr	r
r0)rrrur0s    r;rzTarInfo._proc_gnusparse_01s_	KK+.>"?"E"Ec"J"JKKK3vccc{F14a4L99::r=c	\	d}g}|jt}|dd\}}t	|}t||dzkrwd|vr"||jtz
}|dd\}}|t	|t||dzkw|j|_tt|ddd|ddd|_dS)Nrr$r%)rrkrrrNr5rrr/r	r
r0)rrrur2fieldsr0rbnumbers        r;rzTarInfo._proc_gnusparse_10s	o""9--iiq))V&kkFQJ&&Cw++I666))E1--KFCMM#f++&&&	&kkFQJ&&
#?//113vccc{F14a4L99::r=c	|D]\}}|dkrt|d||dkrt|dt|B|dkrt|dt|g|tvr^|tvr)	t	||}n#t
$rd}YnwxYw|dkr|d}t|||||_dS)NzGNU.sparse.namer&rr(zGNU.sparse.realsizerrR)	rsetattrrN
PAX_FIELDSPAX_NUMBER_FIELDSr3rrru)rrur9r:rrs      r;rzTarInfo._apply_pax_infos4	*//11	.	.NGU+++fe,,,,---fc%jj1111111fc%jj1111J&&///" 1' :5 A A%""" !"f$$!LL--Egu---&++--sB&&B54B5c~		||dS#t$r|||cYSwxYw)NrJ)rAUnicodeDecodeError)rrr9fallback_encodingfallback_errorss     r;rzTarInfo._decode_pax_fields[		D<<(333!	D	D	D<< 1?CCCCC	Ds <<cV	t|t\}}|r|dz
}|tzS)Nr$)rjr)rrrqrrs    r;rzTarInfo._blocks9	#5)44		aKF	!!r=c 	|jtvSr)rr
REGULAR_TYPESrs r;rZz
TarInfo.isreg's>yM))r=c,	|Sr)rZrs r;isfilezTarInfo.isfile+s>zz||r=c$	|jtkSr)rrrrs r;r\z
TarInfo.isdir/+yG##r=c$	|jtkSr)rrSYMTYPErs r;r]z
TarInfo.issym3s/yG##r=c$	|jtkSr)rrLNKTYPErs r;r[z
TarInfo.islnk7r#r=c$	|jtkSr)rrrrs r;ischrz
TarInfo.ischr;s2yG##r=c$	|jtkSr)rrrrs r;isblkz
TarInfo.isblk?s.yG##r=c$	|jtkSr)rrFIFOTYPErs r;isfifozTarInfo.isfifoCs&yH$$r=c|jduSr)r0rs r;issparsezTarInfo.issparseGs{$&&r=c:	|jtttfvSr)rrrrr-rs r;isdevz
TarInfo.isdevJsMyWgx888r=r)r)3rrrdict	__slots__rpropertyr&setterr'rrrrrr
rrrrclassmethodrrstaticmethodrrrrrrrrrrrrrrrrrrZr!r\r]r[r)r+r.r0r2rr=r;rrLsv


,,
!!
GF
HG	

 
-,

$#
>>
FF



*)
 *)!
"/.#
$54%
&99'
*.-+
,$-
.$/
0t1
I60X
[[X_!!_!OOO%eeuE88*HEV////"IIIMMM8Q8Q8QtMM[M
 ''\'R\**[* 0-0-[0-d<<[<|))[)(///,68fffP	3	3	3;;;;;; ....DDD"""***$$$$$$$$$$$$$$$%%%'''99999r=rceZdZ	dZdZdZdZeZe	Z
dZeZ
eZdZ				d<dZedddefdZed=d	Zed>dZed>dZed?d
ZdddddZdZdZdZdZd@dZdAdddZdBdddZ dCdZ!dZ"dDddd d!Z#dEddd d#Z$d$Z%d%Z&d&Z'd'Z(d(Z)		dFd)Z*d*Z+d+Z,d,Z-d-Z.d.Z/d/Z0d0Z1d1Z2d2Z3d3Z4dGd4Z5d5Z6dCd6Z7d7Z8d8Z9d9Z:d:Z;d;Z<dS)HrrFr$Nrrc	ddddd}||vrtd||_|||_|sU|jdkr-tj|sd|_d|_t
||j}d	|_n]|8t|d
r(t|j
ttfr|j
}t|dr|j|_d|_|rtj
|nd|_
||_|||_|||_|||_|||_|||_|	|_|
|jt*kr|
|_ni|_|||_|||_|
|_d	|_g|_d	|_|j|_i|_	|jd
kr d|_ |!|_ |jdkr	|j"|j	|j#|}|j$|nY#tJ$r"|j"|jYn/tL$r"}tOt|dd}~wwxYw|jdvrxd|_|jrl|j(|j)}|j*||xjtW|z
c_dSdSdS#|js|j,d|_xYw)Nrbzr+bwbxbrarr!mode must be 'r', 'a', 'w' or 'x'r?rFrrTrr?rr)-r3r_moderr&exists	bltn_openrrrrrrUabspathrrYr3dereferenceignore_zerosr9r:rrudebug
errorlevelcopybufsizermembers_loadedrrinodesfirstmemberrrrrrrrrrrlr5r)rrrrrYr3rFrGr9r:rurHrIrJmodesrrbs                 r;rzTarFile.__init__ks	T==u@AAA	4[

	$yCt(<(<	!
dj11G$D&!9!97<#u66|w''
*$\
#D-1;BGOOD)))t	 DK"DL"*D# ,D$DM"t{j'@'@*D!DDJ!(DO'l''))	yC#' #'99;; yC	:L%%dk222:"&,":":4"@"@++G4444)))$+666&:::'A//T9:	:yO++##,,??@P@U@U@W@WXXCL&&s+++KK3s88+KKKK
,+,,	#
%""$$$DKs><AL'4IL')J1L'3	J<JJBL''*Mc	|s|std|dvrՈfd}g}tj|D]}tj|}	||}
	|	|d|fi|cS#t
tf$r<}|d|d||||
Yd}~d}~wwxYwd	|}td	|d
|vrc|
d
d\}
}|
pd}
|pd}|jvrtj|}	nt
d
|z|	||
|fi|Sd|vrw|
dd\}
}|
pd}
|pd}|
dvrtdt||
|||}	||
|fi|}n#|xYwd|_
|S|dvrj|||fi|Std)Nznothing to open)rr:*c&j|dkS)Ntaropen)	OPEN_METH)rrs r;not_compressedz$TarFile.open.<locals>.not_compresseds}X.);;r=)keyrz	- method z: 
z'file could not be opened successfully:
:r$rr|rzmode must be 'r' or 'w'FrAzundiscernible mode)r3sortedrTrxrrr	rrrrrrrrS)rrrrrpkwargsrU
error_msgsrfunc	saved_posrerror_msgs_summaryfilemodestreamrs`               r;rzTarFile.opens!	F	0G	0.///<
<
<
<
<
<J"3=nEEE



sCM($;<<& 'I4c7==f=====!#34%%&C(&C&Ca&C&CDDD*Y///HHHH	
"&:!6!6[GY[[\\\
D[[!%C!3!3Hh3H(5H3=((sCM($;<<&'Dx'OPPP4h::6:::
D[[!%C!3!3Hh3H(5Hz)) !:;;;T8XwHHF
Ch99&99
!AMH
_
$
$3;tT7==f===-...s$+
A88C	2CC"F..Gc@	|dvrtd||||fi|S)Nr>r@)r3)rrrrr[s     r;rSzTarFile.taropen8s>	+++@AAAs4w11&111r=rc	|dvrtd	ddlm}n#t$rt	ddwxYw	|||dz||}n+#t
$r}||dkrt
d|d}~wwxYw	|j|||fi|}nR#t
$r0}||dkrt
d|d}~w|xYwd	|_	|S)
Nrrrmode must be 'r', 'w' or 'x'r)GzipFilezgzip module is not availablersrrF)
r3gziprfrr	rrrSrr)	rrrr
compresslevelr[rfrrs	         r;gzopenzTarFile.gzopen@sX	&&;<<<	M%%%%%%%	M	M	M"#ABBL	M	htTCZHHGG			"ts{{ 1229	
		D$::6::AA			MMOOOs{{ 1229	MMOOO
s78A
A6A11A6:B
C+CCc~	|dvrtd	ddlm}n#t$rt	ddwxYw||p|||}	|j|||fi|}nY#ttf$r0}||dkrtd|d}~w|xYwd	|_
|S)
Nrdrer)BZ2Filer)rhrznot a bzip2 fileF)r3rrkrr	rSrEOFErrorrrr)	rrrrrhr[rkrrs	         r;bz2openzTarFile.bz2openas	&&;<<<	L#######	L	L	L"#@AAtK	L''/T4}MMM		D$::6::AA"			MMOOOs{{ 233:	MMOOO
s 8AB3.+BB3cx	|dvrtd	ddlm}m}n#t$rtddwxYw||p|||}	|j|||fi|}nT#|tf$r0}	||dkrtd|	d}	~	w|xYwd	|_
|S)
Nrdrer)LZMAFilerr)presetrznot an lzma fileF)r3rrorrr	rSrlrrr)
rrrrrpr[rorrrs
          r;xzopenzTarFile.xzopen}s	&&;<<<	M000000000	M	M	M"#ABBL	M(7?dD@@@		D$::6::AA8$			MMOOOs{{ 233:	MMOOO
s :AB0++BB0rSrirmrq)rrrrc	|jrdSd|_	|jdvr|jtt
dzz|xjt
dzz
c_t|jt\}}|dkr*|jtt|z
z|j	s|j
dSdS#|j	s|j
wwxYw)NTrAr%r)rrrrlr6rrrj
RECORDSIZErr)rrqrrs   r;rz
TarFile.closes	;	F	%yO++""3)a-#8999	A
.%+4;
$C$C!	q==L&&sj9.D'EFFF#
%""$$$$$
%
%4#
%""$$$$
%sBC#C2c	||d}|td|z|S)NrRzfilename %r not found)
_getmemberrKeyError)rrr3s   r;	getmemberzTarFile.getmembersD	
//$++c"2"233?2T9:::r=cp	||js||jSr)_checkrL_loadrKrs r;
getmemberszTarFile.getmemberss5		



|	JJLLL|r=c@	d|DS)Ncg|]	}|j
Srr|)rr3s  r;rz$TarFile.getnames.<locals>.<listcomp>s>>>>>>r=)r{rs r;getnameszTarFile.getnamess'	?>DOO,=,=>>>>r=c	|d||j}||}tj|\}}|tjd}|d}|}||_	|1|j
stj|}n;tj|}n&tj
|}d}|j}tj|ri|j|jf}	|j
s:|jdkr/|	|jvr&||j|	krt*}
|j|	}nt,}
|	dr
||j|	<ntj|rt0}
ntj|rt4}
njtj|rt8}
tj|}n:tj|rt>}
ntj |rtB}
ndS||_||_"|j#|_$|j%|_&|
t,kr
|j'|_(nd|_(|j)|_*|
|_+||_,tZr6	t[j.|j$d|_/n#t`$rYnwxYwtbr6	tcj2|j&d|_3n#t`$rYnwxYw|
t>tBfvrftitdrQtitdr<tj5|j6|_7tj8|j6|_9|S)NawxrRrr$rmajorminor):ryrrr&
splitdriverrVrWr3r2rFlstatstatfstatfilenost_modeS_ISREGst_inost_devst_nlinkrMr'ryS_ISDIRrS_ISFIFOr-S_ISLNKr%readlinkS_ISCHRrS_ISBLKrrst_uidr*st_gidr+st_sizer(st_mtimer)rrr^pwdgetpwuidr,rvgrpgetgrgidr-rrst_rdevrsrrt)rrarcnamerdrvr3statresr^stmdinoderrs           r;
gettarinfozTarFile.gettarinfosB		
E<D
?Gw))'22W//"&#....%%,,..?#
((4..'$--hw~~//00G<	^W^4E#
1(81(<(<T[((WE8J-J-J;u-81)0DK&
\$

	DD
]4
 
 
	DD
\$

	D{4((HH
\$

	DD
\$

	DD4nn7??"?GLLGL(
#	
 #W[ 9 9! <





	
 #W[ 9 9! <





GW%%%r7##
=G(<(<
=#%8GO#<#< #%8GO#<#< s$>$J##
J0/J0;$K  
K-,K-T)rKc	|||}|D]}|r|jtdn&ttj|jt|jp|jd|jp|j|	s|
r"tdd|j|jfzzntd|j
z|jtdn1tdtj|jddzt|j|rdnd	z|rV|rtd
|jz|rtd|jzt-dS)Nz
??????????rRz%10sz%d,%dz%10dz????-??-?? ??:??:??z%d-%02d-%02d %02d:%02d:%02drrz-> zlink to )ryrr|rr`r,r*r-r+r)r+rsrtr(r)r	localtimerr\r]r^r[r{)rverboserKr3s    r;r	zTarFile.list7s	
	



?G		G
E<'----
gl ; ;<<<w}'C'C'C'.}'C'CEFFF==??7gmmoo7$(8':J'KK!MNNNN  5666=( 56666 ="&."?"?"C!DEEE
w}}(FBGHHH
?==??:(8 8999==???
W-= =>>>GGGG5		r=filterc	|d||}|jCtj||jkr|dd|zdS|d||||}||dd|zdS|(||}||dd|zdS|rAt|d5}|	||ddddS#1swxYwYdS|
r|	||ryttj|D]Y}|
tj||tj||||XdSdS|	|dS)	Nrr%ztarfile: Skipped %rr$ztarfile: Unsupported type %rtarfile: Excluded %rr;r)ryrrr&rE_dbgrrZrDaddfiler\rZlistdiraddr)rrr	recursiverr3fs       r;rzTarFile.add]sI		
E?G9 RW__T%:%:di%G%GIIa.5666F		!T//$00?IIa7$>???FfWooG		!3d:;;;==??	"4&&
)!Wa(((
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)]]__	"LL!!!
6
4 0 01166AHHRW\\$22BGLL!4L4L%f6666
6
666

LL!!!!!s<D  D$'D$ch	|dtj|}||j|j|j}|j||xjt|z
c_|j
}|t||j|j|t|jt\}}|dkr/|jtt|z
z|dz
}|xj|tzz
c_|j|dS)Nr)rprr$)ryrrrYr9r:rrlrr5rJrir(rjrr6rKr)rr3rrbrprqrrs       r;rzTarFile.addfiles	
	
E)G$$mmDKDD3s3xx w|WMMMM &w|Y ? ?FI1}}""3)i*?#@AAA!KK6I--KKG$$$$$r=c|6|j}|tSt|trt	d|St|r|S	t|S#t$rtd|ddwxYw)NzrString names are not supported for TarFile.extraction_filter. Use a function such as tarfile.data_filter directly.zfilter z
 not found)	extraction_filterrgrr	TypeErrorcallable_NAMED_FILTERSrvr3)rrs  r;_get_filter_functionzTarFile._get_filter_functions>+F~++&#&&
76777MF	M	G!&))	G	G	G;v;;;<<$F	GsAA7.)
numeric_ownerrc	g}||}||}|D]q}||||}||r|||||||r|dd|D]}tj||j	}		|
||	||||	|||	m#t$r}
||
Yd}
~
d}
~
wwxYwdS)N	set_attrsrc|jSrr|)r?s r;<lambda>z$TarFile.extractall.<locals>.<lambda>sqvr=T)rVreverse)r)r_get_extract_tarinfor\r_extract_onesortrr&rrchownutimechmodr_handle_nonfatal_error)rr&rKrrdirectoriesfilter_functionr`r3dirpathrs           r;
extractallzTarFile.extractalls	33F;;?G
	;
	;F//NNG}}
,""7+++gt7==??7J,9

;
;
;
;	--t<<<#	/	/Ggll466G
/

7G=
III

7G,,,

7G,,,,
/
/
/++A........
/
	/	/sAD
E"D<<Erc	||}||||}||||||dSdSr)rrr)rr`r&rrrrr3s        r;extractzTarFile.extractsa	33F;;++FOTJJgtY
FFFFFr=c	t|tr||}n|}|}	|||}nZ#ttf$r}||Yd}~n/d}~wt$r}||Yd}~nd}~wwxYw| |dd|j	zdS|
r>tj|}tj
||j|_|S)Nr%r)rrrwrr9_handle_fatal_errorrrrrr[rrr&rr^rw)rr`rr&r3
unfilteredrs       r;rzTarFile._get_extract_tarinfos2Nfc""	nnV,,GGG
	+%ogt44GG%	(	(	($$Q''''''''	+	+	+''********	+?IIa/*/ABBB4==??	Hi((G#%7<<g6F#G#GG s!?BA**
B7BBcV	|d	||tj||j||dS#t$r }||Yd}~dSd}~wt$r }|	|Yd}~dSd}~wwxYw)Nrr)
ry_extract_memberrr&rrrrrr)rr3r&rrrs      r;rzTarFile._extract_one	s3C	+  "',,tW\*J*J+4/<
!
>
>
>
>
>	(	(	($$Q'''''''''	+	+	+''*********	+s#<A
B( A;;
B(B##B(cR	|jdkr|dd|zdS)Nr$tarfile: %s)rIrrrs  r;rzTarFile._handle_nonfatal_error	s4K?QIIa*+++++r=cD	|jdkrt|trO|j |dd|jzdS|dd|jd|jdS|ddt
|jd|dS)Nrr$rz	tarfile: rv)rIrrfilenamerstrerrorrrrrs  r;rzTarFile._handle_fatal_error&	s??Q
7
#
#	Cz!		!]QZ788888		!!QZZHIIIIIIIaaT!WW-=-=-=qqABBBBBr=c	|dt|tr||}n|}|s|jtvr|||S|s|	rQt|j
trtd|
||SdS)Nrz'cannot extract (sym)link as file object)ryrrrwrZrrr
fileobjectr[r]rrr
extractfile_find_link_target)rr`r3s   r;rzTarFile.extractfile2	s		
Cfc""	nnV,,GGG==??	gl/AA??4111
]]__	

	$,00
I""KLLL''(>(>w(G(GHHH4r=c	|d}|dtj}tj|}|r3tj|stj||s|	r&|
d|jd|jn|
d|j|
r|||n|r|||n|r|||n|s|r|||nz|s|	r|||n;|jt0vr|||n||||rY|||||	s0||||||dSdSdS)NrRr$z -> )rrrrVr&r_rCmakedirsr[r]rrr^rZmakefiler\makedirr.makefifor)r+makedevmakelinkrrrmakeunknownrrr)rr3
targetpathrr	upperdirss      r;rzTarFile._extract_memberR	sa	 &&s++
''RV44
GOOJ//		#RW^^I66	#
K	"""==??	'gmmoo	'IIaw|||W5E5EFGGGGIIa&&&==??
	/MM':....
]]__	/LL*----
^^

		/MM':....
]]__	/

	/LL*----
]]__	/

	/MM':....
\
0
0Wj1111MM':...	0JJw
M:::==??
0

7J///

7J/////		0	0
0
0r=c		|jtj|dStj|ddS#t$rYdSwxYw)Ni)rrmkdirFileExistsErrorrr3rs   r;rzTarFile.makedir	sf			|#$$$$$U+++++			DD	s77
AAc		|j}||j|j}t	|d5}|ji|jD]2\}}||t
|||t|3||j|	nt
|||jt|ddddS#1swxYwYdS)Nr<)
rrr/rJrDr0rirr(truncate)rr3rsourcerptargetrr(s        r;rzTarFile.makefile	s8	G'((("
z4
(
(	NF~)$+NJJLFDKK'''iIIIIGL)))!!!!FFGL)WMMM	N	N	N	N	N	N	N	N	N	N	N	N	N	N	N	N	N	NsBCCCcp	||||dd|jzdS)Nr$z9tarfile: Unknown file type %r, extracted as regular file.)rrrrrs   r;rzTarFile.makeunknown	sT		


gz***		!24;LA	B	B	B	B	Br=cx	ttdrtj|dStd)Nmkfifozfifo not supported by system)rrrrrs   r;rzTarFile.makefifo	s>	2x  	?Ij!!!!!=>>>r=c\	ttdrttdstd|j}|d}|r|t
jz}n|t
jz}tj||tj	|j
|jdS)Nmknodrz'special devices not supported by systemrT)rrrrr+rS_IFBLKS_IFCHRrrrsrt)rr3rrs    r;rzTarFile.makedev	s	r7##	J72y+A+A	JHIII|<D==??	!DL DDDL D
TG,g.>??	A	A	A	A	Ar=cT		|rOtj|rtj|tj|j|dStj|jrtj	|j|dS|
|||dS#t$rL	|
|||YdS#t$rtddwxYwwxYw)Nz%unable to resolve link inside archive)r]rr&lexistsunlinksymlinkr^rCrwlinkrrsymlink_exceptionrvrrs   r;rzTarFile.makelink	sW		V}}

57??:..*Ij)))
7+Z888887>>'"6775GG0*=====(()?)?)H)H)355555 	V	V	V
V$$T%;%;G%D%D%/111111
V
V
V"#JKKQUU
V		Vs*A!C&>C&)C
D')DD##D'c	ttdr*tjdkr|j}|j}|s~	t
r&|jrtj|jd}n#t$rYnwxYw	tr&|j
rtj|j
d}n#t$rYnwxYw|d}|d}	|r-ttdrtj
|||dStj|||dS#t$r}t!d|d}~wwxYwdSdS)Ngeteuidrr%r?lchownzcould not change owner)rrrr+r*rr-getgrnamrvrr,getpwnamr]rrrr)rr3rrgurs       r;rz
TarFile.chown	s	
2y!!	Dbjlla&7&7AA 

;w};L77:D;w};L77:Dyy
D==??/wr8'<'</Ij!Q/////HZA.....
D
D
D"#;<<!C
D1	D	D&7&7sB-A//
A<;A<-B..
B;:B;?D D  
D?*D::D?c	|jdS	tj||jdS#t$r}t	d|d}~wwxYw)Nzcould not change mode)rrrrr)rr3rrs    r;rz
TarFile.chmod	sc	<F	?HZ.....	?	?	?677Q>	?s(
AAAc	|j}|dSttdsdS	tj|||fdS#t$r}td|d}~wwxYw)Nrz"could not change modification time)r)rrrrr)rr3rr)rs     r;rz
TarFile.utime
s	
=Fr7##	F	LHZ%00000	L	L	LCDD!K	Ls>
AAAc2	|d|j|j}d|_|S|j|jkrX|jdkrdS|j|jdz
|jdstdd}		|j	|}n#t$rL}|jr:|dd|j|fz|xjtz
c_Yd}~iYd}~nYd}~wt$rs}|jr:|dd|j|fz|xjtz
c_Yd}~|jdkrtt|dYd}~nd}~wt $r|jdkrtddYnt"$r2}|jdkrtt|dYd}~n~d}~wt$$r"}tt|dd}~wt&$rD}	ddl}t+||jrtd	|d|#t.$r|wxYwd}~wwxYw	||j|nd|_|S)
Nrarr$rgTr%z0x%X: %sz
empty filezzlib error: )ryrNrrrrrkrr3rrrGrrrPrrrr	ExceptionrrrrrKrrL)rmr3rrs     r;rzTarFile.next
s6		
D' A#DH;$,++----{atLdkAo...<$$Q''
: 8999 	
,22488!


$IIat{A.>!>???KK9,KKHHHH&
6
6
6$6IIat{A.>!>???KK9,KKHHHH[A%%#CFF++5&%%%%#
<
<
<;!###L11t;$#'
6
6
6;!###CFF++5$####(
2
2
2A''T1


KKK!!TZ00 '(:q(:(:;;E"G

L((((DLs`,C
I/<D
I/&<F'(F(I/>	I/(G44
I/H
I/,.I
I''I**I/c	|}d}|3	||}|d|}n#t$rd}YnwxYw|rtj|}t
|D]O}|r|j|jkrd}|r%tj|j}n|j}||kr|cSP|rt|dS)NFT)	r{indexr3rr&normpathreversedrr)	rrr3	normalizerKskippingrr`member_names	         r;ruzTarFile._getmemberV
s,	//##
*

g.."&5&/

 
 
  
 	*7##D))Dw''		F
>V]22$H
* g..v{;;$k{""


#	&W%%%	&	&s;A
	A
cH		|}|nd|_dSr)rrL)rr3s  r;rzz
TarFile._load~
s3		iikkG	r=c	|jrtd|jjz| |j|vrtd|jzdSdS)Nz%s is closedzbad operation for mode %r)rrr4rr)rrs  r;ryzTarFile._check
sb	;	D.4>+BBCCC	 5 55	ABBB 5 5r=c8	|rOdtdtj|j|jf}d}n	|j}|}|||d}|td|z|S)NrRT)r3r
zlinkname %r not found)
r]rrrr&r_rr^rurv)rr3r^limitr`s     r;rzTarFile._find_link_target
s	==??	xxtbgoogl.K.KWM]-^ _ _``HEE'HE5DII>2X=>>>
r=c#4K	|jr|jEd{VdSd}|j|}|dz
}|V	|t	|jkr|j|}n)|js |}|s	d|_dSndS|dz
}|VY)Nrr$T)rLrKrNrr5)rrr3s   r;__iter__zTarFile.__iter__
s	<	|#######F'iikkGQJEMMM	s4<((((,u-\
))++#'DLFQJEMMM	r=cX	||jkrt|tjdSdS)Nfile)rHr{rystderr)rlevelmsgs   r;rzTarFile._dbg
s7	DJ#CJ''''''r=c.||Sr)ryrs r;	__enter__zTarFile.__enter__
s


r=c||dS|js|jd|_dSr)rrrr)rrrr	tracebacks    r;__exit__zTarFile.__exit__
sD<JJLLLLL#
%""$$$DKKKr=)
NrNNNNNNrNNNN)rN)rNr)rNN)NNNTrr)rN)rT)TFr)=rrrrHrFrGrIrrYr
r9r:rr3r-rrrr7rsrrSrirmrqrTrrwr{r~rr	rrrrrrrrrrrrrrrrrrrrrrurzryrrrrrrr=r;rrOs
EKLJFH
FGJAEHL>B)-bbbb^#tZ[/[/[/[[/z222[2[@[6[:	I%%%*			???aaaaF$D$$$$$L1"1"1"1"1"1"f%%%%2GGG$+/%+/+/+/+/+/ZGGGGGG&.+++,,,
C
C
C@>B&+*0*0*0*0bNNN BBB???AAA$VVV2DDDB???LLL<<<B&&&&&&&&PCCCC&>(((r=rc		t|dr:|}t|}||nt|}|dS#t
$rYdSwxYw)Nrk)rTF)rrrrrr)rrrs   r;rr
s

4  	))++CT"""AIIcNNNNT

A				tuusA-A22
B?Bc	z	ddl}d}||}|ddddd	|d
dtd
|d}|dddd|ddddd|ddddd|dd dd!|}|jr|j|d"d#|j	|j	}t|rt|d$5}|t|tj%dddn#1swxYwY|jr$td&|dSdS|d"d'|dS|j|j}t|rQt&|d(5}||j)ddddS#1swxYwYdS|d"d'|dS|jRt)|jd"kr|jd}t*j}nKt)|jd*kr|j\}}n(|d"|t|rt&|d(5}|||j+dddn#1swxYwY|jrC|d,krd-|}	nd.||}	t|	dSdS|d"d'|dS|j|jd}
t*j|
\}}d/d/d0d0d1d1d1d1d2}
||
vrd3|
|znd4}|j}t&|
|5}|D]}||	dddn#1swxYwY|jr&td5|
dSdSdS)6Nrz3A simple command-line interface for tarfile module.)descriptionz-vz	--verbose
store_trueFzVerbose output)actiondefaulthelpz--filterz<filtername>zFilter for extraction)metavarchoicesr%T)requiredz-lz--list	<tarfile>zShow listing of a tarfile)r&r%z-ez	--extract+)r)z<output_dir>zExtract tarfile into target dir)nargsr&r%z-cz--create)z<name>z<file>zCreate tarfile from sourcesz-tz--testzTest if a tarfile is validr$z&--filter is only valid for extraction
rrz{!r} is a tar archive.z{!r} is not a tar archive.
rQ)rr%)r&rrz{!r} file is extracted.z+{!r} file is extracted into {!r} directory.rrr)rz.tgzz.xzz.txzz.bz2z.tbzz.tbz2z.tb2zw:rz{!r} file created.)argparseArgumentParseradd_argumentradd_mutually_exclusive_group
parse_argsrrexittestrrr{r{ryrrrYr	rr5rcurdirformat_helprcreatepopr&splitextr)r,r!parserrargsrmrtfr3rtar_name_extcompressionstar_mode	tar_files	file_names                 r;mainrB
s$OOOGK

$
$
$
=
=F
k,-///

N .4666
///>>E	tX{7999	t[<=???
tZs39;;;
tX{8:::D{Bt|+A@AAAyic??	Gc3
93   cnn&&SZ8888
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9|
<.55c::;;;;;
<
<
KK9@@EEFFFFF	
	ic??	Gc5))
.R---
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
KK9@@EEFFFFF	
	!t|!!,q/CYFF


!
#
#,KCKK6--//000c??	Gc5))
?R

6$+
>>>
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?|
S==3::3??CC2396#v3F3Fc








KK9@@EEFFFFF	
	 ;??1%%!!(++3

03l/B/B4,s+++K	
\\(H
-
-	"&
"
"	y!!!!
"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"<	9&--h77888881
!	 .	9	9sI6AFFFIII/MMMRR
R__main__r)jversion
__author____credits__builtinsrrDryrrrhrrr`rrwarningsrrrAttributeErrorNotImplementedErrorrr	NameError__all__r6rrsrrrrrryrr'r%rrrr-CONTTYPErrrrrrrrrrrrrrrrrNrrr
getfilesystemencodingr<rCrSr[rerir|rrrrr	r
rrrrrPrrrobjectrr
BufferedReaderr-r9r;r@rIrLrOrergrlrnrrrrrrBrrr=r;<module>rQs:6
H
'&&&&&



								







				JJJJ
CCCJJJJ
CCC$%89	'#			D	%%%	
^
	











HgGXWg#%5!	#(>+
/

	.
988



7d??HH(s(**H000&&&


(N



<***"&$2					y								8																x								(								(								{								;								[																K			0ooooooood6<eeeee&eeeP"""""2$"""					(			JJJJJJJJ
?????k???@@@@@{@@@
LLLLLLLL
?????+???====~*	@9@9@9@9@9f@9@9@9FFFFFFfFFFX$$|]9]9]9~zDFFFFFs3<AA
AAA!A((A0/A0