python (3.11.7)

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

eHaBddlZddlZddlmZmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddl
mZe
jZddlmZddlmZddlmZddlmZejd	ejeZejed
dZejed
dZejed
d
ZdZdZ dZ!dZ"de!zdzZ#dZ$dZ%ej&Z&GddZ'Gdde'Z(Gddej)Z*Gddej+Z,GddeZ-Gdd eZ.Gd!d"eZ/Gd#d$eZ0Gd%d&eZ1Gd'd(e1Z2Gd)d*Z3Gd+d,eZ4Gd-d.eZ5Gd/d0eZ6Gd1d2eZ7Gd3d4eZ8Gd5d6eZ9Gd7d8eZ:Gd9d:eZ;e<d;kre
j=d<=dSdS)>N)client
HTTPStatus)mock)support)	os_helper)
socket_helper)warnings_helperT)modulecertdatazkeycert.pemzkeycert2.pemzselfsigned_pythontestdotnet.pemz{HTTP/1.1 200 OK
Transfer-Encoding: chunked

a
hello worl
3
d! 
8
and now 
22
for something completely different
s7hello world! and now for something completely differentz;foo=barz0
0
zX-Dummy: foo
X-Dumm2: bar
cFeZdZejddfdZdZddZdZdZ	dZ
dS)	
FakeSocketNct|tr|d}||_||_d|_d|_d|_||_||_	dS)NasciirF)

isinstancestrencodetext	fileclassdata
sendall_callsfile_closedhostport)selfrrrrs     E/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_httplib.py__init__zFakeSocket.__init__9s\dC  	(;;w''D	"	 				rcF|xjdz
c_|xj|z
c_dSN)rrrrs  rsendallzFakeSocket.sendallDs*a		T				rc|dkr|dkrtj||j|_|j|j_|jS)Nrrb)rUnimplementedFileModerrfile
file_closeclose)rmodebufsizes   rmakefilezFakeSocket.makefileHsJ3;;44<<.000NN49--	/	yrcd|_dS)NT)rrs rr*zFakeSocket.file_closePsrcdSNr0s rr+zFakeSocket.closeSrcdSr2r3)rleveloptnamevalues    r
setsockoptzFakeSocket.setsockoptVr4rr2)__name__
__module____qualname__ioBytesIOrr$r.r*r+r9r3rrrr8s')z4				   







rrc eZdZdZdZdZdS)EPipeSocketcJt||||_dSr2)rrpipe_trigger)rrrBs   rrzEPipeSocket.__init__[s&D$'''(rcl|j|vrttjd|xj|z
c_dS)Ngotcha)rBOSErrorerrnoEPIPErr#s  rr$zEPipeSocket.sendall`s6$$%+x000		T				rcdSr2r3r0s rr+zEPipeSocket.closeer4rN)r:r;r<rr$r+r3rrr@r@YsA)))






rr@c eZdZ	ddZddZdS)NoEOFBytesIOcptj||}|dkrtd|SNrzcaller tried to read past EOF)r=r>readAssertionError)rnrs   rrNzNoEOFBytesIO.readns4ztQ''3;; !@AAArNcptj||}|dkrtd|SrM)r=r>readlinerO)rlengthrs   rrRzNoEOFBytesIO.readlinets6z""4003;; !@AAArrKr2)r:r;r<rNrRr3rrrJrJhsA
rrJc0eZdZ	fdZfdZdZxZS)FakeSocketHTTPConnectionc~d|_td||_|j|_dS)Nrexample.com)connectionssuperrfake_socket_argscreate_connection_create_connection)rargs	__class__s  rrz!FakeSocketHTTPConnection.__init__}s<
''' $"&"8rcf	|xjdz
c_tSr!)rYrZconnect)rr_s rraz FakeSocketHTTPConnection.connects.<Aww   rct|jSr2)rr[)rposkws   rr\z*FakeSocketHTTPConnection.create_connections4011r)r:r;r<rrar\
__classcell__)r_s@rrVrVzscJ99999!!!!!
2222222rrVc>eZdZdZdZdZdZdZdZdZ	dZ
d	S)
HeaderTestscGddt}dD]}dD]}tjd}td|_||_d}i}|rt
t|||<|dd	|||	|jj
|d
dS)NceZdZdZdZdS);HeaderTests.test_auto_headers.<locals>.HeaderCountingBufferci|_dSr2)countr0s rrzDHeaderTests.test_auto_headers.<locals>.HeaderCountingBuffer.__init__s



rcF|d}t|dkr]|dd}|j|d|j|xxdz
cc<t||dS)N:r"rr)splitlendecodelowerrl
setdefaultlistappend)ritemkvlcKeys    rruzBHeaderTests.test_auto_headers.<locals>.HeaderCountingBuffer.appendsZZ%%r77Q;;qELL117799EJ))%333Ju%%%*%%%D$'''''rNr:r;r<rrur3rrHeaderCountingBufferrjs2
 
 
 
(
(
(
(
(rrz)TF)Content-lengthHostzAccept-encodingrXblahblahblahspamspamspamPOST/r")rtrHTTPConnectionrsock_bufferrrprequestassertEqualrlrr)rrzexplicit_headerheaderconnbodyheaderss       rtest_auto_headerszHeaderTests.test_auto_headerss
	(
	(
	(
	(
	(4
	(
	(
	( +	H	HOE

H

H,];;&~66	3355%"5&)#d))nnGFOVS$888  !3FLLNN!CQGGGG

H	H	HrcGddt}d}d}tj||D]\}}tjd}td|_||_||d||	|jj
dd|d	}|D]}tjd}td|_||_||dd|	|jj
dd
||D]}tjd}td|_||_||dd|	|jj
dd|tj||D]}tjd}td|_||_||dd|	|jj
d
d|dS)NceZdZdZdZdS)?HeaderTests.test_content_length_0.<locals>.ContentLengthCheckercHt|d|_dSr2)rtrcontent_lengthr0s rrzHHeaderTests.test_content_length_0.<locals>.ContentLengthChecker.__init__s"

d###&*###rc|dd}t|dkr=|ddkr|d|_t
||dS)Nrnr"rscontent-length)rorprrstriprrtru)rrvrws   rruzFHeaderTests.test_content_length_0.<locals>.ContentLengthChecker.appendsiZZa((r77Q;;2a5;;==4E#E#E*,Q%++--D'D$'''''rNryr3rrContentLengthCheckerrs2
+
+
+
(
(
(
(
(rr)N)PUTrPATCHrXr0z%Header Content-Length incorrect on {})GETCONNECTDELETEHEADOPTIONSTRACEz.Header Content-Length set for empty body on {}r 1)
rt	itertoolsproductrrrrrrrrformatchain)rrbodiesmethods_with_bodymethodrrmethods_without_bodys        rtest_content_length_0z!HeaderTests.test_content_length_0s	(	(	(	(	(4	(	(	(4%-.?HH		LFD(77D"4((DI//11DLLLd++++T7>>vFF



 
+		F(77D"4((DI//11DLLLd++++T@GGOO



+		F(77D"4((DI//11DLLLb)))+T7>>vFF



 o&:<MNN		F(77D"4((DI//11DLLLc***+T7>>vFF



		rctjd}td|_|dd|dd|d|j|dd|d	|j|d
d|d|j|d
d|d|j|ddd|d|j|dd|d|j|dd|d|j|dd|d|j|dd|d|j|d d!|d"|j|d#d$|d%|j|d&d$|d'|j|d(d$|d)|j|d*d$|d+|jdS),NrXrrr{*sContent-length: 42Fooz bar s
Foo:  bar Barz	baz	s
Bar: 	baz	
AuthorizationzBearer mytokensAuthorization: Bearer mytoken
IterHeaderIterAIterBsIterHeader: IterA
	IterBLatinHeadersLatinHeader: 
Utf8HeadersÀsUtf8Header: Àz
C1-Controls	nextlinesC1-Control: nextlinezEmbedded-Fold-Spacezis
 alloweds!Embedded-Fold-Space: is
 allowedzEmbedded-Fold-Tabzis
	allowedsEmbedded-Fold-Tab: is
	allowedz	Key Spacer8sKey Space: valuez	KeySpace sKeySpace : valuesNonbreakSpacesNonbreakSpace: valuesNonbreakSpacesNonbreakSpace: value)rrrr
putrequest	putheaderassertInrrrs  rtest_putheaderzHeaderTests.test_putheaders$]33t$$	c"""',,,

+T\:::ug&&&

mT\222ui(((

ot|444(8999

6EEE|Wg666

5t|DDD}g...

*DL999|[111

-t|<<<|_555

14<@@@,.>???

<dlKKK*,=>>>

;T\JJJ{G,,,

)4<888{G,,,

)4<888+W555

14<@@@+W555

14<@@@@@rc~d}tjd}td}||_|dd||j|d}tjd}td}||_|dd||j|d}tjd	}td}||_|dd||j|d
}tjd}td}||_|dd||j|dS)NsCGET /foo HTTP/1.1
Host: [2001::]:81
Accept-Encoding: identity

z[2001::]:81rr/foosEGET /foo HTTP/1.1
Host: [2001:102A::]
Accept-Encoding: identity

z
[2001:102A::]s@GET /foo HTTP/1.1
Host: [fe80::]
Accept-Encoding: identity

z
[fe80::%2]sCGET /foo HTTP/1.1
Host: [fe80::]:81
Accept-Encoding: identity

z
[fe80::%2]:81)rrrrr
assertTruer
startswithrexpectedrrs    rtest_ipv6host_headerz HeaderTests.test_ipv6host_header
s8$]33"~~	UF###	,,X667778$_55"~~	UF###	,,X667778$\22"~~	UF###	,,X667778$_55"~~	UF###	,,X6677777rcd}t|}tj|}|||dd||dddS)Nz4HTTP/1.1 200 OK
First: val
: nval
Second: val

FirstvalSecond)rrHTTPResponsebeginr	getheaderrrrresps    r!test_malformed_headers_coped_withz-HeaderTests.test_malformed_headers_coped_with0s{O$"4((

00%88811599999rc	dttddzdzttddzdz}t|}tj|}|||dd	||jdd	||d
d||jd
dd	tttdd}||d
|||jd
|||d|
d|j|d|jdfD]h}||d|
d|||didS)Ns0HTTP/1.1 200 OK
!#$%&'*+-.^_`|~: value
VCHAR: !s
obs-text: sM
obs-fold: text
 folded with space
	folded with tab
Content-Length: 0

Content-Lengthrz!#$%&'*+-.^_`|~r8rVCHARzobs-textzobs-foldrz folded with spacezfolded with tab)bytesrangerrrrrrmsgjoinmapchrassertIsNotNonerrrendswith)rrrrvcharfoldeds      rtest_parse_all_octetsz!HeaderTests.test_parse_all_octets:s*
uT84455
69
"%h"7"788
9<
	
$"4((

(8993???"23S999(9::GDDD"34g>>>CtX!6!6778800%888'*E222T^^J77888

j$(+++~~j1148J3GH	@	@FOOF--f55666MM.777OOFOO,=>>????	@	@rctjd}td|_|ddd}|D]}\}}|||f5|td5|||dddn#1swxYwYdddn#1swxYwY~dS)NrXrrr))s
Invalid
Name
ValidValue)sInvalid
Namer)sInvalid
Namer)s

InvalidNamer)s
InvalidNamer)s
InvalidNamer)s InvalidNamer)s	InvalidNamer)sInvalid:Namer)s:InvalidNamer)	ValidNamesInvalid
Value)rs
Invalid
Value)rs
Invalid
Value)rsInvalidValue
)rs
InvalidValue
)rs
InvalidValue
zInvalid header)	rrrrrsubTestassertRaisesRegex
ValueErrorr)rrcasesnamer8s     rtest_invalid_headersz HeaderTests.test_invalid_headersXsE$]33rNN	s###
$!	0	0KD%tUm,,
0
0++J8HII00NN4///000000000000000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0	0	0s6B5;BB5B""B5%B"&B55B9	<B9	cd}t|}tj|d}tj5}|dddn#1swxYwY|}||dd||dd||dd||d	d
dS)Ns9HTTP/1.1 200 OK
First: val
Second: val1
Second: val2
r")
debuglevelrzreply: 'HTTP/1.1 200 OK\r\n'zheader: First: valzheader: Second: val1zheader: Second: val2)	rrrrcaptured_stdoutrgetvalue
splitlinesr)rrrroutputliness      rtest_headers_debuglevelz#HeaderTests.test_headers_debuglevelvs+
 	
$"4A666

$
&
&	&JJLLL															!!,,..q#CDDDq#7888q#9:::q#9:::::sAA #A N)r:r;r<rrrrrrrrr3rrrgrgsHHH:@@@D A A AD!8!8!8F:::@@@<000<;;;;;rrgceZdZdZdS)HttpMethodTestscd}|D]t}|td5tjd}t	d|_||ddddn#1swxYwYudS)N)	zGET
zPOST
zPUT

z
POST
Valuez
POST
HOST:abczGET
rHost:abc
zPOST
Remainder:
z
GET
HOST:
z
PUTz'method can't contain control charactersrXr)rurl)rrrrrrr)rmethodsrrs    rtest_invalid_method_namesz)HttpMethodTests.test_invalid_method_namess

	5	5F'' IKK
5
5,];;&t,,	F444	
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5	5	5sAA..A2	5A2	N)r:r;r<rr3rrrrs#55555rrc>eZdZdZdZdZdZdZddZdZ	d	Z
d
S)TransferEncodingTestsIt's just a flesh woundcztjd}td|_|dd||d||jj\}}}|	|}|
||jdS)NrXrrrT)encode_chunked)rrrrr
endheaders
_make_body_parse_requestr_parse_chunkedr
expected_body)rr_rs    rtest_endheaders_chunkedz,TransferEncodingTest.test_endheaders_chunkeds$]33sOO	$$$))$???((88
1d""4((t122222rcXtjd}td|_|dd|ddi||jj\}}}|dd|	D|
|dd|
||jtjd}td|_|dd|jd	ddi||jj\}}}|dd
|	D|
|dd|
||jtjd}td|_|ddddid|
||jj\}}}|dd|D|
|dd|
|
||jdS)NrXrrrTransfer-Encodingchunkedcontent-lengthc6g|]}|Sr3rr.0ks  r
<listcomp>z>TransferEncodingTest.test_explicit_headers.<locals>.<listcomp> +N+N+N!AGGII+N+N+Nrlatin-1c6g|]}|Sr3rrs  rr	z>TransferEncodingTest.test_explicit_headers.<locals>.<listcomp>r
rz
gzip, chunkedT)rrrc6g|]}|Sr3rrs  rr	z>TransferEncodingTest.test_explicit_headers.<locals>.<listcomp> +G+G+G!AGGII+G+G+Gr)rrrrrrrrassertNotInkeysrrrqrrrrrrs     rtest_explicit_headersz*TransferEncodingTest.test_explicit_headerss$]33sOO		
C**-@),L	N	N	N ..ty~>>7D)+N+Nw||~~+N+N+NOOO!45yAAAt1222$]33sOO	C+229==
 ),	.	.	. ..ty~>>7D)+N+Nw||~~+N+N+NOOO!45yAAAt1222$]33sOO	VS(/:""		$	$	$ ..ty~>>7D)+G+Gw+G+G+GHHH!45GGG,,T22D4FGGGGGrcdD]}tjd}td|_|dd||||jj\}}}||}|	||j
|	|dd|d	d
|DdS)N)FTrXrrr)empty_linesrrrc6g|]}|Sr3rrs  rr	z5TransferEncodingTest.test_request.<locals>.<listcomp>s /K/K/Ka		/K/K/Kr)rrrrrrrrrrrr)rrrrrrs      rtest_requestz!TransferEncodingTest.test_requests)
	M
	MK(77D"3DILLT___EE
G
G
G $2249>BBAw&&t,,DT4#5666W%899EEE
-/K/K7/K/K/KLLLL
	M
	Mrcntjd}td|_|ddd||jj\}}}||dd|dd	|D||d
dS)NrXrrrr3rrrc6g|]}|Sr3rrs  rr	z8TransferEncodingTest.test_empty_body.<locals>.<listcomp>rrs0

)	rrrrrrrrrrs     rtest_empty_bodyz$TransferEncodingTest.test_empty_bodys$]33sOO	VS"%%%..ty~>>7D!45yAAA)+G+Gw+G+G+GHHH|,,,,,rFc#K|jd}t|D]2\}}|r	|dzrdV|t|dz
kr|dzV.|V3dS)N rrr")rro	enumeraterp)rrridxlines     rrzTransferEncodingTest._make_bodys"((.."5))		IC
sQw
			SZZ!^##Tk!!!!



		rc"|d}|d}i}d}|t|krt||dkr||d\}}|d}|d||<|dz
}|t|krt||dk||d||dzdfS)N
rr"rnr)rorprqrr)rrrrrrPkeyrs        rrz#TransferEncodingTest._parse_requests

7##(
#e**nnU1X!2!2Qx~~d++HC**Y''--//C::i006688GCL
FA	#e**nnU1X!2!2eAEFFm!<!<<<rc`g}i}d}|d}	|||dz\}}t|d}|dkr|dz
}nR||t||||dz
}|t|krn~d|S)Nrr Trr"r)rointrrprur)rrrtrailersrPrsizechunks        rrz#TransferEncodingTest._parse_chunkeds


7##	!A#,KD%tR==DqyyQT3u::...KK
FA3u::~~!	$xx~~rN)F)r:r;r<rrrrrrrrr3rrrrs.M333$H$H$HLMMM ---				===rrc@eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4S)5	BasicTestc
|hdtttdkdS)N>rr8phrasedescription)rsetdirrr0s r&test_dir_with_added_behavior_on_statusz0BasicTest.test_dir_with_added_behavior_on_statuss=BBBc#jY\ooJ^J^F_F__`````rcjGddtj}tj|tdS)NceZdZ	dBdZdZdZdZdZdZdZ	d	Z
d
ZdZdZ
d
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ d Z!d!Z"d"Z#d#Z$d$Z%d%Z&d&Z'd'Z(d(Z)d)Z*d*Z+d+Z,d,Z-d-Z.d.Z/d/Z0d0Z1d1Z2d2Z3d3Z4d4Z5d5Z6d6Z7d7Z8d8Z9d9Z:d:Z;d;Z<d<Z=d=Z>d>Z?d?Z@d@ZAdAS)C;BasicTest.test_simple_httpstatus.<locals>.CheckedHTTPStatusrcft||}||_||_||_|Sr2)r$__new___value_r+r,)clsr8r+r,objs     rr5zCBasicTest.test_simple_httpstatus.<locals>.CheckedHTTPStatus.__new__7s/kk#u--##
"-
r)dContinuez!Request received, please continue)ezSwitching Protocolsz.Switching to new protocol; obey Upgrade header)f
Processing)gzEarly Hints)OKz#Request fulfilled, document follows)CreatedzDocument created, URL follows)Acceptedz/Request accepted, processing continues off-line)zNon-Authoritative InformationzRequest fulfilled from cache)z
No Contentz"Request fulfilled, nothing follows)z
Reset Contentz"Clear input form for further input)zPartial ContentzPartial content follows)zMulti-Status)zAlready Reported)zIM Used)i,zMultiple Choicesz,Object has several resources -- see URI list)i-zMoved Permanently(Object moved permanently -- see URI list)i.Found(Object moved temporarily -- see URI list)i/z	See Otherz'Object moved -- see Method and URL list)i0zNot Modifiedz)Document has not changed since given time)i1z	Use Proxyz@You must use proxy specified in Location to access this resource)i3zTemporary RedirectrN)i4zPermanent RedirectrL)izBad Requestz(Bad request syntax or unsupported method)Unauthorizedz*No permission -- see authorization schemes)izPayment Requiredz"No payment -- see charging schemes)i	Forbiddenz0Request forbidden -- authorization will not help)r-	Not FoundzNothing matches the given URI)izMethod Not Allowedz-Specified method is invalid for this resource)izNot Acceptablez%URI not available in preferred format)izProxy Authentication Requiredz7You must authenticate with this proxy before proceeding)izRequest Timeoutz"Request timed out; try again later)iConflictzRequest conflict)iGonez5URI no longer exists and has been permanently removed)izLength Requiredz"Client must specify Content-Length)izPrecondition Failedz Precondition in headers is false)izRequest Entity Too LargezEntity is too large)izRequest-URI Too LongzURI is too long)izUnsupported Media Typez!Entity body in unsupported format)izRequested Range Not SatisfiablezCannot satisfy request range)izExpectation Failedz'Expect condition could not be satisfied)izI'm a Teapotz5Server refuses to brew coffee because it is a teapot.)izMisdirected Requestz(Server is not able to produce a response)izUnprocessable Entity)iLocked)izFailed Dependency)iz	Too Early)izUpgrade Required)izPrecondition Requiredz8The origin server requires the request to be conditional)izToo Many RequestszOThe user has sent too many requests in a given amount of time ("rate limiting"))izRequest Header Fields Too LargezVThe server is unwilling to process the request because its header fields are too large)izUnavailable For Legal ReasonszOThe server is denying access to the resource as a consequence of a legal demand)izInternal Server ErrorzServer got itself in trouble)izNot Implementedz&Server does not support this operation)izBad Gatewayz+Invalid responses from another server/proxy)izService Unavailablez8The server cannot process the request due to a high load)izGateway Timeoutz4The gateway server did not receive a timely response)izHTTP Version Not SupportedzCannot fulfill request)izVariant Also Negotiates)izInsufficient Storage)iz
Loop Detected)izNot Extended)izNetwork Authentication Requiredz7The client needs to authenticate to gain network accessN)r)Br:r;r<r5CONTINUESWITCHING_PROTOCOLS
PROCESSINGEARLY_HINTSr@CREATEDACCEPTEDNON_AUTHORITATIVE_INFORMATION
NO_CONTENT
RESET_CONTENTPARTIAL_CONTENTMULTI_STATUSALREADY_REPORTEDIM_USEDMULTIPLE_CHOICESMOVED_PERMANENTLYFOUND	SEE_OTHERNOT_MODIFIED	USE_PROXYTEMPORARY_REDIRECTPERMANENT_REDIRECTBAD_REQUESTUNAUTHORIZEDPAYMENT_REQUIRED	FORBIDDEN	NOT_FOUNDMETHOD_NOT_ALLOWEDNOT_ACCEPTABLEPROXY_AUTHENTICATION_REQUIREDREQUEST_TIMEOUTCONFLICTGONELENGTH_REQUIREDPRECONDITION_FAILEDREQUEST_ENTITY_TOO_LARGEREQUEST_URI_TOO_LONGUNSUPPORTED_MEDIA_TYPEREQUESTED_RANGE_NOT_SATISFIABLEEXPECTATION_FAILEDIM_A_TEAPOTMISDIRECTED_REQUESTUNPROCESSABLE_ENTITYLOCKEDFAILED_DEPENDENCY	TOO_EARLYUPGRADE_REQUIREDPRECONDITION_REQUIREDTOO_MANY_REQUESTSREQUEST_HEADER_FIELDS_TOO_LARGEUNAVAILABLE_FOR_LEGAL_REASONSINTERNAL_SERVER_ERRORNOT_IMPLEMENTEDBAD_GATEWAYSERVICE_UNAVAILABLEGATEWAY_TIMEOUTHTTP_VERSION_NOT_SUPPORTEDVARIANT_ALSO_NEGOTIATESINSUFFICIENT_STORAGE
LOOP_DETECTEDNOT_EXTENDEDNETWORK_AUTHENTICATION_REQUIREDr3rrCheckedHTTPStatusr3$s
$



LH#F*J,KABEGCH-Q)PJVMOO.L6$G @!<LESI=LTI"<"<<K>L 6DI1I"A9N-K)6O:HID6O#4('$$# &5"/0+";IK#<#> "F 8(I6%L!!</(+-?)
%0!:O?K#LHO**&&D##> 0M.L/K+++rr)enumIntEnum_test_simple_enumr)rrs  rtest_simple_httpstatusz BasicTest.test_simple_httpstatus#s[K	KK	KK	KK	KK	KK	KK	KK	KX	
0*=====rcd}t|}tj|}|||dd||||j||d|	|||j|
|	|jd}t|}tj|}|tj|jdS)NHTTP/1.1 200 Ok

TextrrTextzHTTP/1.1 400.100 Not Ok

Text)
rrrrrrNassertFalseisclosedclosedrr+assertRaises
BadStatusLiners    rtest_status_lineszBasicTest.test_status_liness7-$"4((

1s+++)))%%%g...

(((%%%

$$$4$"4((&.
;;;;;rcttjd}|t|ddS)NrzBadStatusLine("''"))rrrrepr)rexcs  rtest_bad_status_reprzBasicTest.test_bad_status_reprs5"2&&c$=>>>>>rcHd}t|}tj|}|||dd||||dd||||j	|
||j	dSN*HTTP/1.1 200 Ok
Content-Length: 4

TextrTextrrrrrrNrrrrr+rs    rtest_partial_readszBasicTest.test_partial_readssB$"4((

1u---)))1u---

(((%%%

$$$$$rcDd}t|}tj|}|||d||||d|	|||j
||	|j
dS)Nz4HTTP/1.1 200 Ok
Content-Length: 13

Text
AnothersText
sAnother)rrrrrrRrrrNrrr+rs    rtest_mixed_readszBasicTest.test_mixed_readssN$"4((

+666)))j111

(((%%%

$$$$$rcd}t|}tj|}|t	d}||}||d|t|d||	||}||d|t|d|
|	||j||
|jdSr
rrrr	bytearrayreadintorrrrrrr+rrrrbrPs      rtest_partial_readintosz BasicTest.test_partial_readintoss8B$"4((

aLLMM!Aq5))))))MM!Aq5)))

(((%%%

$$$$$rcd}t|}tj|}|||dd||||j	|
||j	dS)Nr
rrrrrrrNrrrrr+rs    rtest_partial_reads_past_endz%BasicTest.test_partial_reads_past_endsA$"4((

2000

(((%%%

$$$$$rc d}t|}tj|}|t	d}||}||d|t|ddd||	|
|j|||jdS)Nrrr)
rrrrrrrrrrrrr+rs      rtest_partial_readintos_past_endz)BasicTest.test_partial_readintos_past_end
sA$"4((

bMMMM!Aq"1"w///

(((%%%

$$$$$rcd}t|}tj|}|||dd||||dd||dd||||j	|
||j	dS)Nrrrrr"rrrs    r$test_partial_reads_no_content_lengthz.BasicTest.test_partial_reads_no_content_lengths-$"4((

1u---)))1u---1s+++

(((%%%

$$$$$rcd}t|}tj|}|t	d}||}||d|t|d||	||}||d|t|d||}||d|
|	dS)Nrrrrr)rrrrrrrrrrrrs      r(test_partial_readintos_no_content_lengthz2BasicTest.test_partial_readintos_no_content_length)s'-$"4((

aLLMM!Aq5))))))MM!Aq5)))MM!A

(((((rc
d}t|}tj|}|||dd||||dd||dd||dS)N+HTTP/1.1 200 Ok
Content-Length: 10

Textrrrr"r)	rrrrrrNrrrrs    r"test_partial_reads_incomplete_bodyz,BasicTest.test_partial_reads_incomplete_body<sC$"4((

1u---)))1u---1s+++

(((((rcPd}t|}tj|}|t	d}||}||d|t|d||	||}||d|t|d||}||d|
|	||j||
|jdS)Nrrrrrrrs      r&test_partial_readintos_incomplete_bodyz0BasicTest.test_partial_readintos_incomplete_bodyIs_C$"4((

aLLMM!Aq5))))))MM!Aq5)))MM!A

(((%%%

$$$$$rcdD]-}|tjtj|.dD]P\}}}tj|}|||j|||jQdS)Nzwww.python.org:abczuser:password@www.python.org)z[fe80::207:e9ff:fe9b]:8000fe80::207:e9ff:fe9bi@)zwww.python.org:80www.python.orgP)www.python.org:rr)rrr)[fe80::207:e9ff:fe9b]rr)[fe80::207:e9ff:fe9b]:rr)rr
InvalidURLrrrrrhphpcs     rtest_host_portzBasicTest.test_host_port_sI	L	LBf/1FKKKKP		(		(HB1%b))AQ'''Q''''		(		(rcd}d}t|}tj|}||d}|||dS)NzHTTP/1.1 200 OK
Set-Cookie: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"
Set-Cookie: Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"

No body
zrCustomer="WILE_E_COYOTE"; Version="1"; Path="/acme", Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"z
Set-Cookie)rrrrrr)rrhdrsr&cookiess      rtest_response_headerszBasicTest.test_response_headerspsjO
t""				++l++#&&&&&rctdt}tj|d}||r|ddSdS)N*HTTP/1.1 200 OK
Content-Length: 14432

rr)Did not expect response from HEAD request)rrJrrrrNfailrrrs   rtest_read_headzBasicTest.test_read_headsw

	
"4777

99;;	CIIABBBBB	C	CrcDtdt}tj|d}|td}||dkr|d|t|ddS)Nrrrrr)
rrJrrrrrrrr)rrrrs    rtest_readinto_headzBasicTest.test_readinto_heads

	
"4777

aLL==q  IIABBBq9-----rcddttjdzDdz}d|z}t	|}tj|}|tjd|jdS)Nr
c3 K|]	}d|zV
dS)z
Header%d: fooNr3)ris  r	<genexpr>z2BasicTest.test_too_many_headers.<locals>.<genexpr>sCFF"#.1FFFFFFrr"zHTTP/1.1 200 OK
zgot more than \d+ headers)	rrr_MAXHEADERSrrr
HTTPExceptionr)rrrrr&s     rtest_too_many_headerszBasicTest.test_too_many_headerss++FF',V-?!-C'D'DFFFFFHNO%/t""v3;QW	F	F	F	F	Frc	d}ttd5}tjd}t	|}||_|dd|||j	||jdt|d|ddddS#1swxYwYdS)Ns_GET /foo HTTP/1.1
Host: example.com
Accept-Encoding: identity
Transfer-Encoding: chunked

r'rXrrz != )open__file__rrrrrrrrrprrrrrs     rtest_send_filezBasicTest.test_send_files
(D
!
!	;T(77Dd##DDILL---OODI00::Y~H

~...=:
;
;
;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;sBB44B8;B8cd}tjd}td}||_|||||jd|_|tjd||||jd|_|tj	||||jdS)Ns"this is a test this is only a testrXrr)
rrrrsendrrarrayr=r>rs    r	test_sendzBasicTest.test_sends8$]33$			(49---			%+c8,,---49---			"*X&&'''49-----rc
dGfddtj}d}tjd}t	d}||_||||j|dS)Nc3"KdVdVdVdS)Nrdata_twor3r3rrrz/BasicTest.test_send_updating_file.<locals>.datas*LLLJJJrc0eZdZdZZddZdS)7BasicTest.test_send_updating_file.<locals>.UpdatingFiler&rKc*t|jSr2)nextd)r	blocksizes  rrNz<BasicTest.test_send_updating_file.<locals>.UpdatingFile.readsDF||#rNrT)r:r;r<r,rrN)rsrUpdatingFilers9DA
$
$
$
$
$
$rrsdatarXr)	r=
TextIOBaserrrrrrr)rrrrrrs     @rtest_send_updating_filez!BasicTest.test_send_updating_files			
	$	$	$	$	$	$	$2=	$	$	$$]33"~~			,,..!!!H-----rcd}d}tjd}td}||_|dd|ddi||j|dS)	NsbGET /foo HTTP/1.1
Host: example.com
Accept-Encoding: identity
Content-Length: 11

onetwothreec3"KdVdVdVdS)Nsonestwosthreer3r3rrrz&BasicTest.test_send_iter.<locals>.bodys%LLLLLLNNNNNrrXrrrr11)rrrrrrrrs     rtest_send_iterzBasicTest.test_send_iters~&			
$]33"~~	UFDDFF-=t,DEEEH-----rcp	d}tjd|}td}||_d|zdz}|ddtj|dd	i||jd
|j	
ddd}|||dS)
NrXrabrrr9r

r")rrrrrr=r>rrrro)rrrrrrs      rtest_blocksize_requestz BasicTest.test_blocksize_requestsF	$]iHHH$	)#d*UCH!5!58H#7NOOO+Q///y{A..q1x(((((rc.	d}tjd|}td}||_d|zdz}|tj|||jd||j	|dS)NrrXrrr	r)
rrrrrr=r>rrr)rrrrrs     rtest_blocksize_sendzBasicTest.test_blocksize_sendsC	$]iHHH$	)#d*		"*X&&'''+Q///H-----rctjd}td|_|t
5|dd|ddddS#1swxYwYdS)NrXrrtest)rrrrr	TypeErrorrrs  rtest_send_type_errorzBasicTest.test_send_type_errors$]33rNN	


y
)
)	/	/LL...	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/sA((A,/A,ct}tttztz}tj|d}|||	||
tddD]}tttztz}tj|d}|||	||	|z|	z||
dD]+}tt|z}tj|d}|	|	|dn#t
j
$r}}||j|dt|z}|t!|||t#||Yd}~nd}~wwxYw|
#|
wxYwdS)Nrrr"rzfoo
IncompleteRead expectedIncompleteRead(%d bytes read))chunked_expectedr
chunked_start
last_chunkchunked_endrrrrrNr+rrIncompleteReadpartialrprr)rrrrrPxrexpected_messages        rtest_chunkedzBasicTest.test_chunkeds8#-*4{BCC"4666

h///

q"		Amj8;FGGD&tE:::DJJLLLTYYq\\DIIaLL8499;;FQQQJJLLLL 		Ama/00D&tE:::DJJLLL

				34444
(
;
;
;  H555#BS]]#R   a*:;;;  Q)9::::::::	
;



		s1"G6I1IA3II1II11Jc:t}t|}td}ttt
ztz}tj|d}|	|
|}||d||||||tddD]}ttt
ztz}tj|d}|	t|}|
|d|}||
||||zz
}||
||dz
}||d||||||
dD],}	tt|	z}tj|d}|		|
|}|dn#tj$r}}||j|d	t|z}
|t%||
|t'||
Yd}~nd}~wwxYw|#|wxYwdS)
Nrrrr"rrrrr)rrprrrrrrrrrrr+r
memoryviewrrrrr)rr	nexpectedrrrrPmrrrs           rtest_readinto_chunkedzBasicTest.test_readinto_chunked&s#MM	cNN-*4{BCC"4666

MM!:I:111I&&&

q"
	
	Amj8;FGGD&tE:::DJJLLL1

A

a!f%%A
q1q5z***A
qu%%%AQz	z]H555Q	***JJLLLL 		Ama/00D&tE:::DJJLLL

MM!$$		34444
(
;
;
;  H555#BS]]#R   a*:;;;  Q)9::::::::	
;



		s12ILK),A3K$L$K))LLc6d}t|tztz}tj|d}|||d||jd||j	d|
|||j
||
|j
dS)NEHTTP/1.1 200 OK
Transfer-Encoding: chunked

a
hello world
1
d
rrrr?r@)rrrrrrrrNstatusreasonrrrrr+)rrrrs    rtest_chunked_headzBasicTest.test_chunked_headQs
	-*4{BCC"4777

c***c***d+++

(((%%%

$$$$$rcd}t|tztz}tj|d}|t
d}||}||d|t|d||j
d||jd||
||j|||jdS)	Nr'rrrrrr?r@)rrrrrrrrrrr(r)rrrrr+)rrrrrrPs      rtest_readinto_chunked_headz$BasicTest.test_readinto_chunked_heades
	-*4{BCC"4777

aLLMM!Aq9---c***d+++

(((%%%

$$$$$rctd}tj|d}|||d||dS)Nz.HTTP/1.1 200 OK
Content-Length: -1

Hello
rrHello
)rrrrrrNrrrs   rtest_negative_content_lengthz&BasicTest.test_negative_content_length|svDFF"4666

l333

(((((rctd}tj|d}|	||ddS#tj$r}||jd|t|d|t|d||Yd}~dSd}~wwxYw)Nz.HTTP/1.1 200 OK
Content-Length: 10

Hello
rrrr.z-IncompleteRead(7 bytes read, 3 more expected))
rrrrrNrrrrrrrr)rrrrs    rtest_incomplete_readzBasicTest.test_incomplete_readsRSS"4666


	1IIKKK
II/00000$	-	-	-QY555T!WWL
N
N
NSVVL
N
N
NOODMMOO,,,,,,,,,
	-sA&&D5BDDcJtdd}tjd|_|t
fd}|d|j|d|	ddS)NzgHTTP/1.0 401 Authorization Required
Content-type: text/html
WWW-Authenticate: Basic realm="example"
sContent-LengthrXc2dddS)Nr/urlr)r)rsr<lambda>z&BasicTest.test_epipe.<locals>.<lambda>s$,,uff"E"ErrOzBasic realm="example"zwww-authenticate)
r@rrrrrEgetresponserr(r)rrrrs   @r
test_epipezBasicTest.test_epipes
<
	
$]33	'EEEE	G	G	G!!dk***2(:;;	=	=	=	=	=rcdddzzdz}tjt|}|tjtjf|jdS)NHTTP/1.1 200 Okrr
)rrrrLineTooLongrrrrrs   rtest_overflowing_status_linez&BasicTest.test_overflowing_status_linesV 3;.7":d#3#3446-v/CDdjQQQQQrcdddzzdz}tjt|}|tj|jdS)NzHTTP/1.1 200 OK
X-Foo: barr&r:z

)rrrrr;rr<s   rtest_overflowing_header_linez&BasicTest.test_overflowing_header_lines[
;
')3
4	
":d#3#344&,dj99999rcddz}tjt|}|tj5}|dddn#1swxYwY|dt|j|dt|jdS)NzHTTP/1.1 100 OK
r
izgot more than r)	rrrrrrrr	exception)rrrcms    r'test_overflowing_header_limit_after_100z1BasicTest.test_overflowing_header_limit_after_100s

	
":d#3#344


v3
4
4	JJLLL																


&BL(9(9:::

iR\!2!233333sA''A+.A+cdddzzdz}tjt|}||tj|jdS)Nz/HTTP/1.1 200 OK
Transfer-Encoding: chunked

rr:za
hello world
0

)rrrrrr;rNr<s   rtest_overflowing_chunked_linez'BasicTest.test_overflowing_chunked_linesj
1Ek

	
":d#3#344

&,di88888rcd}t|}tj|}|||d||||j	|
||j	dS)Nr9rrrs    rtest_early_eofzBasicTest.test_early_eofs $"4((

c***

(((%%%

$$$$$rctjd}dGfddtj}||_t	d|_|dd|tj|j	|
j|
|jjdS)NrXceZdZfdZdS)+BasicTest.test_error_leak.<locals>.Responsec@|tjj|g|Ri|dSr2)rrr)rrcrdresponses   rrz4BasicTest.test_error_leak.<locals>.Response.__init__s2#,T>C>>>2>>>>>rN)r:r;r<r)rLsrResponserJs.
?
?
?
?
?
?
?rrMzInvalid status linerr)
rrrresponse_classrrrrrr6rrr)rrrMrLs   @rtest_error_leakzBasicTest.test_error_leaks$]33	?	?	?	?	?	?	?v*	?	?	?
'455	UC   &.0@AAA(((	-.....rc8d}tdz}tt|ztztz}tj|d}|||	||
dS)Nz3;foo=bar
abc
sabcrr)rrrlast_chunk_extendedrrrrrrNr+)rextrarrrs     rtest_chunked_extensionz BasicTest.test_chunked_extensions+#f,-%/2EESTT"4666

h///

rc	t}tttz}t	j|d}|||||	dSNrr)
rrrrrrrrrNr+rrrrs    rtest_chunked_missing_endz"BasicTest.test_chunked_missing_endsmG#-*455"4666

h///

rc	t}tttztzt
z}t
j|d}||	|
||	|j
d|dS)Nrrr)
rrrrr%rrrrrrNr)r+rVs    rtest_chunked_trailerszBasicTest.test_chunked_trailerss4#-*4x?+MNN"4666

h///))3///

rc	t}d}tttztzt
z|z}t
j|d}||	|
||	|j
|d|
dS)N	extradatarrr)rrrrr%rrrrrrNr)rr+)rrr[rrs     rtest_chunked_synczBasicTest.test_chunked_syncsR#	-*4x?+MPYYZZ"4666

h///))9+;+;G+D+DEEE

rc`	d}d}td|z|z}tj|d}||||||j||dS)N	extradata
Hello123
'HTTP/1.1 200 OK
Content-Length: 10

rr)rrrrrrNr)r+rr[rrrs     rtest_content_length_syncz"BasicTest.test_content_length_syncsP 	"JXUXaabb"4666

h///))9555

rcbd}d}td|z|z}tj|d}|||d|g||j||dSNr^r_r`rri)	rrrrr	readlinesr)rNr+ras     rtest_readlines_content_lengthz'BasicTest.test_readlines_content_lengths 	"JXUXaabb"4666

--z:::))9555

rc`d}d}td|z|z}tj|d}|||d|||j||dSrd)	rrrrrread1r)rNr+ras     rtest_read1_content_lengthz#BasicTest.test_read1_content_length)s 	"JXUXaabb"4666

D))8444))9555

rcd}d}td|z|z}tj|d}|||d|||dd||j||dS)Nr^r_r`rrrr)	rrrrrrRr)rNr+ras     r"test_readline_bound_content_lengthz,BasicTest.test_readline_bound_content_length4s 	"JXUXaabb"4666

r**H555r**C000))9555

rcd}d}td|dzz|z}tj|d}|||d|dz|||||j||dS)	Nr^r_s'HTTP/1.1 200 OK
Content-Length: 30

rrrr)	rrrrrrhrNr)r+ras     rtest_read1_bound_content_lengthz)BasicTest.test_read1_bound_content_length@s 	"JXVWZWZccdd"4666

B!444h///))9555

rctjtdf|jdfd}tj|}|||jtdtj}|
dd|}	||jtjtj|}	|d|n#|wxYw	||n-#||wxYw||ddS)	Nrcp\}}|5|d5}	|}|dsn+|d|dddn#1swxYwYddddS#1swxYwYdS)Nr'Tr s'HTTP/1.1 200 Connection established

)acceptr.rRrstripr$rN)raddressreaderrresultservs    r
run_serverz2BasicTest.test_response_fileno.<locals>.run_serverRs3"kkmmOT7
'
't}}T**
'f!??,,D;;w//KLLL
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
's5B+ABB+B	B+B	B++B/2B/)targetr"rz
dummy:1234)filenos
proxied data
)socket
create_serverHOST
addCleanupr+	threadingThreadstartrfloatrrgetsocknamerr6rr(r@ryr$detach)rrwthreadrrLrrurvs      @@rtest_response_filenozBasicTest.test_response_filenoLs#T1I..
###
	'
	'
	'
	'
	'
	'!444U1XX...$d&6&6&8&89Y---##%%		X_fi888
X__%6%6777A
		+,,,








NNJJLLLL
NNJJLLLL


!233333s%AF)E>FE))F*Gc	Gddtj}|d}td|_|dddS)NceZdZdZdS)RBasicTest.test_putrequest_override_domain_validation.<locals>.UnsafeHTTPConnectioncdSr2r3rrs  r_validate_pathzaBasicTest.test_putrequest_override_domain_validation.<locals>.UnsafeHTTPConnection._validate_pathwrN)r:r;r<rr3rrUnsafeHTTPConnectionrv#




rrrXrrz/rrrrrrrrs   r*test_putrequest_override_domain_validationz4BasicTest.test_putrequest_override_domain_validationqsm						6#8			$#M22rNN	w'''''rcGddtj}|d}td|_|ddddS)	NceZdZdZdS)PBasicTest.test_putrequest_override_host_validation.<locals>.UnsafeHTTPConnectioncdSr2r3rs  r_validate_hostz_BasicTest.test_putrequest_override_host_validation.<locals>.UnsafeHTTPConnection._validate_hostrrN)r:r;r<rr3rrrrrrrz
example.com
rrrr")	skip_hostrrs   r(test_putrequest_override_host_validationz2BasicTest.test_putrequest_override_host_validation~so					6#8			$#$566rNN		
sa00000rc	Gddtj}|d}td|_|dddS)NceZdZdZdS)IBasicTest.test_putrequest_override_encoding.<locals>.UnsafeHTTPConnectionc,|dS)Nutf-8)r)rstr_urls  r_encode_requestzYBasicTest.test_putrequest_override_encoding.<locals>.UnsafeHTTPConnection._encode_requests~~g...rN)r:r;r<rr3rrrrs#
/
/
/
/
/rrrXrru/☃rrs   r!test_putrequest_override_encodingz+BasicTest.test_putrequest_override_encodingsm	
	/	/	/	/	/6#8	/	/	/$#M22rNN	v&&&&&rN)6r:r;r<r0rrrrrrrrrrrrrrrrrrrrrrrrr r%r*r,r/r1r7r=r?rCrErGrOrSrWrYr\rbrfrirkrnrrrrr3rrr)r)s$aaaM>M>M>`<<<*???
%
%
%
%
%
%%%%(
%
%
%
%
%
%%%% )))&)))%%%,((("'''$CCC
.
.
.FFF;;;......*... 
)
)
)	.	.	.///@)))V%%%(%%%.)))111 
=
=
="RRR
:::444999
%
%
%/// 			





						





#4#4#4J(((	1	1	1'''''rr)ceZdZ	dZeedddZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdS)ExtendedReadTestzOHTTP/1.1 200 OK

hello world!
and now 
for something completely different
foohelloNrHTTP/1.1 200 OK
Transfer-Encoding: chunked

a
hello worl
3
d!

9
and now 

23
for something completely different

3
foo
0

ct|j}tj|d}|tj|j|_||_dSrU)	rrrrrr=BufferedReaderfprrs   rsetUpzExtendedReadTest.setUpsR$*%%"4666

#DG,,			rc|j}|jjdfd	}||j_g}	|d}|r|t	|d|}|t	|t	|||||t	|}|	||n)|}|
||||sn"|	d||j
dS)NrKcN|}|dkr
|d|S|ddS)Nrrr3)rProldpeeks  rmypeekz*ExtendedReadTest.test_peek.<locals>.mypeeks3

AAvv!uSbS6MrTrrrrT)rrpeek
assertGreaterrpassertGreaterEqualrrrNrrrurlines_expected)rrrallrp2rrs       @r	test_peekzExtendedReadTest.test_peeksdy',						
			!A

'""3q661---YY[[''BQ888

a 0 0111yyR))  r****yy{{  &&&JJt
!	"	
#(;<<<<<rc^|j}||jj|jdSr2)r_verify_readlinerRr)rrs  r
test_readlinezExtendedReadTest.test_readlines-ydi0$2EFFFFFrc,g}	|d}|rA|dkr;t|dkr(||d|||sng|d||dS)NTrfoo
r)rprrrurr)rrRrrrs     rrz!ExtendedReadTest._verify_readlines	8A;;D
:t99q==OODMM%$8$8999JJt
		
#11111rcjfd}t|}|jjdS)Ncxd}t|d|S)Nr)rhassertLessEqualrp)resrrs rr&z&ExtendedReadTest.test_read1.<locals>.rs3**Q--C  S1---Jr)r	ReadlinerrrRr)rr&	readlinerrs`  @r
test_read1zExtendedReadTest.test_read1sXy						aLL	i0$2EFFFFFrc|j}g}	|}|sn||-|d||jdS)NTr)rrhrurrrrrrrs    rtest_read1_unboundedz%ExtendedReadTest.test_read1_unboundedsmy	::<<D
JJt		
	
#(;<<<<<rc|j}g}	|d}|sn9|t|d||Q|d||jdS)NTrr)rrhrrprurrrrs    rtest_read1_boundedz#ExtendedReadTest.test_read1_boundedsy	::b>>D
  TB///JJt		
#(;<<<<<rcb||jdddS)Nrr)rrrhr0s rtest_read1_0zExtendedReadTest.test_read1_0
s,++S11111rc|jd}|dt|dSNr)rrrrp)rrs  rtest_peek_0zExtendedReadTest.test_peek_0s7INN1QA'''''r)r:r;r<rfindrr
lines_chunkedrrrrrrrrrr3rrrrs	
5::g..//077@@N
	"===>GGG222GGG===	=	=	=222(((((rrceZdZ	dZdS)ExtendedReadTestChunkedrN)r:r;r<rr3rrrrs
	
EErrceZdZ	dZdZdS)rc"||_d|_dS)Nr)readfunc	remainder)rrs  rrzReadliner.__init__/s 
rcg}d}|j}		|d}|dkrnM|t|z|kr||z
dz
}|||}|sd}ni|dz
}||d|||d|_d|S#d||_xYw)NrTrrKr"r)rrrprurr)rlimitrdatalenrNrs      rrRzReadliner.readline3s~	
ii&&"99SYY&%//'/A-CD!!!}}C

1HCKKTcT
###!#$$ZDN88D>>!	 XXd^^DNsB/B==CN)r:r;r<rrRr3rrrr+s7rrc eZdZdZdZdZdS)OfflineTestc4dh}ddh}ttD][}|ds||vrtt|}t|dddkr||\|tj|dS)N	responsesHTTPMessage
parse_headersrr;zhttp.client)r/rrgetattraddassertCountEqual__all__)rrdenylistr
module_objects     rtest_allzOfflineTest.test_allNs="?3KK	#	#Ds##
tx'7'7#FD11M}lD99]JJT"""fnh77777rcf|tjtjddS)NrR)rrrror0s rtest_responseszOfflineTest.test_responses\s))&*:;[IIIIIrcgd}|D]X}||5|tt|dddn#1swxYwYYdS)N):rVrWrXr@rZr[r\r]r^r_r`rbrcrdrerfrgrhrirkrlrmrnrorprqrrrsrtrurvrwrxryrzr{r|r}r~rrrrrrrrrrrrrrrrrrYr)constant)rrhasattrr)rrconsts   rtest_client_constantsz!OfflineTest.test_client_constants_s;
;
;
x	8	8Eu--
8
8 6 6777
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8	8	8s)AA	A	N)r:r;r<rrrr3rrrrMsI888JJJ@8@8@8@8@8rrcjeZdZdZdZdZejee	dddZ
dS)SourceAddressTestctjtjtj|_t	j|j|_t	j|_|j	d|_
dSr2)rzAF_INETSOCK_STREAMrvr	bind_portrfind_unused_portsource_portlistenrr0s rrzSourceAddressTest.setUps^M&.&2DEE	!+DI66	(9;;				rc|jr |jd|_|jd|_dSr2)rr+rvr0s rtearDownzSourceAddressTest.tearDownsB9	IOODI				rctjt|jd|jf|_|j||jj	d|jdS)Nrsource_addressr")
rrr|rrrrarrrr0s rtestHTTPConnectionSourceAddressz1SourceAddressTest.testHTTPConnectionSourceAddressst)$	 "D$45777		3355a8$:JKKKKKrHTTPSConnectionz'http.client.HTTPSConnection not definedc`tjt|jd|jf|_dS)Nrr)rrr|rrrr0s r testHTTPSConnectionSourceAddressz2SourceAddressTest.testHTTPSConnectionSourceAddresss2*4 "D$45777			rN)r:r;r<rrrunittestskipIfrrrr3rrrrsLLLX_):;;;>@@77@@777rrc$eZdZdZdZdZdZdS)TimeoutTestNctjtjtj|_t	j|jt_|jdSr2)	rzrrrvrrrPORTrr0s rrzTimeoutTest.setUpsIM&.&2DEE	(249==	rcF|jd|_dSr2)rvr+r0s rrzTimeoutTest.tearDowns				rc|tjtjd	t	jttj}|	tjdn#tjdwxYw|
|jd|
|tjtjd	t	jttjd}|	tjdn#tjdwxYw|
|jd|
t	jttjd}|	|
|jd|
dSN)timeout)assertIsNonerzgetdefaulttimeoutsetdefaulttimeoutrrr|rrrarr
gettimeoutr+)rhttpConns  rtestTimeoutAttributez TimeoutTest.testTimeoutAttributes
	
&244555 $$$	+,T;3CDDH$T****F$T****1133R888	
&244555 $$$	+,T;3C6:<<<H$T****F$T****1133T:::({/?LLL1133R888s8B		B:E--F)r:r;r<rrrrr3rrrrsFD
rrc eZdZdZdZdZdS)PersistenceTestcd}|D]W\}}}|||5d||}t|}||j|dd|5}||jdu||dddn#1swxYwY||jdu|||j	d|dd||j	|rdnddddn#1swxYwYYdS)	N))1.0rF)rzConnection: keep-alive
T)1.1rT)rzConnection: close
F)rzConnection: keep-ALIVE
T)rzConnection: cloSE
F)versionrz4HTTP/{} 200 OK
{}Content-Length: 12

Dummy body
rz/open-connectionr"z/subsequent-requestr)
rrrVrrrr6rrNrY)rtestsrrreuserrrLs        rtest_reuse_reconnectz$PersistenceTest.test_reuse_reconnects
',	F	F"GVUgf==
F
F%
&&))
044!!$),,,U$6777%%''$8$$TY$%6E	BBBMMOOO$$$$$$$$$$$$$$$  d!2I>>>  !11555U$9:::  !13D111EEE#
F
F
F
F
F
F
F
F
F
F
F
F
F
F
F	F	Fs7A*E
3CECECA1EE	E	cd}tjtjf|tff}|D]\}}||5t
d|}|dd|||j	|
|j|dd||j
ddddn#1swxYwYdS)Ncn	tj|fd}|_tjS)Ncptj|}|dkrt|Sr)r=r>rConnectionResetError)bufferr&streams  rrzNPersistenceTest.test_disconnected.<locals>.make_reset_reader.<locals>.readintos4z**66::199.000r)r=r>rr)rrrs  @rmake_reset_readerz<PersistenceTest.test_disconnected.<locals>.make_reset_readersHEZ%%F





'FO$V,,,r)rArrz
/eof-response
/reconnectr)r=r>rRemoteDisconnectedrrrVrrr6rrrrY)rrrstream_factoryrArs      rtest_disconnectedz!PersistenceTest.test_disconnecteds9		-		-		-Z23
 45
*/	6	6%NI	22
6
6/^DDUO444!!)T-=>>>!!$),,,UL111  !11555
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6	6	6sB
CC	"C	c8td}|ddddi|tj|j||j|dd||j	ddS)	NsHTTP/1.1 100 Continue

rrExpectz100-continue)rrr)
rVrrrrr6rrrrYrs  rtest_100_closezPersistenceTest.test_100_close*s'



	
UC(N)CDDD&3T5EFFF$)$$$UL))))1-----rN)r:r;r<rr r#r3rrrrsDFFF<6666
.
.
.
.
.rrceZdZdZdZdZdZdZej	dZ
dZejdd	Z
d
ZdZdZejeed
ddZdZdS)	HTTPSTestc^ttds|ddSdS)Nrzssl support required)rrskipTestr0s rrzHTTPSTest.setUp9s8v011	2MM011111	2	2rc(ddlm}|||S)Nr)make_https_server)certfile)test.ssl_serversr))rr*r)s   rmake_serverzHTTPSTest.make_server=s*666666  9999rctjttjd}||jddSr)rrr|rrrr)rrs  rtest_attributeszHTTPSTest.test_attributesAs:"4)92FFFB'''''rcddl}tjdtjd5tjdd}||j5}|	dddddn#1swxYwY|
|jjdddddS#1swxYwYdS)Nrnetworkself-signed.pythontest.netrrCERTIFICATE_VERIFY_FAILED)
sslrrequiresrtransient_internetrrrSSLErrorrrrAr))rr4rexc_infos    rtest_networkedzHTTPSTest.test_networkedFsR


###

-.J
K
K	U	U&'CSIIA""3<00
&H		%%%%
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&X/68STTT		U	U	U	U	U	U	U	U	U	U	U	U	U	U	U	U	U	Us50B8B4B8B	B8B	#B88B<?B<cddl}tjdtjd5|}t
jdd|}|dd|	}|
|d|d	|
ddddS#1swxYwYdS)
Nrr0r1r2contextrrnginxserver)
r4rr5rr6_create_unverified_contextrrrr6r+rr)rr4r<rrs     rtest_networked_noverificationz'HTTPSTest.test_networked_noverificationPs


###

-.J
K
K		4466G&'CS/6888A
IIeS!!!==??D
GGIIIMM'4>>(#;#;<<<JJLLL																		sB'C!!C%(C%ctjdtjd5t	jdd}|dd|}|d}|	|	|
d|ddddS#1swxYwYdS)Nr0rr2rrzcontent-typez	text/html)rr5rr6rrrr6rr+r)rrrcontent_types    r&test_networked_trusted_by_default_certz0HTTPSTest.test_networked_trusted_by_default_cert^s	###

-.>
?
?	5	5&'7==A
IIeS!!!==??D>>.99LJJLLL
GGIIIMM+|444	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5sBC		C
C
c	Bddl}tjdd}tj|5||j}||j|j	||j
d|t	tj|d|}|dd|}nR#|j$rE}t%|}t'jd	|rt+jd
|d|dd}~wwxYw|d
}|||d|ddddS#1swxYwYdS)Nrr0r1Tr2r;rrz(?i)key.too.weakzGot z trying to connect to z). See https://bugs.python.org/issue36816.r>r=)r4rr5rr6
SSLContextPROTOCOL_TLS_CLIENTrverify_mode
CERT_REQUIREDcheck_hostnameload_verify_locations CERT_selfsigned_pythontestdotnetrrrr6r7rresearchrSkipTestrr+r)	rr4selfsigned_pythontestdotnetr<rrssl_errssl_err_str
server_strings	         rtest_networked_good_certz"HTTPSTest.test_networked_good_certks


###&B#

-.I
J
J	2	2nnS%<==GW0#2CDDDW3T:::))*JKKK
*+F3:<<<		%%%%}}<


!'ll90+>>C"+B{BB9BBBCCC
!NN844MJJLLL
GGIIIMM'=1115	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2s9A0F AC"!F"
D1,AD,,D11AFFFwalltimecddl}tjdtjd5||j}|ttj
dd|}||j5}|
dddddn#1swxYwY||jjdddddS#1swxYwYdS)	Nrr0r1r2r;rrr3)r4rr5rr6rErFrJCERT_localhostrrrr7rrrAr))rr4r<rr8s     rtest_networked_bad_certz!HTTPSTest.test_networked_bad_certs	


###

-.J
K
K	U	UnnS%<==G)).999&'CSRYZZZA""3<00
&H		%%%%
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&X/68STTT
	U	U	U	U	U	U	U	U	U	U	U	U	U	U	U	U	U	Us6A&C.B6*C.6B:	:C.=B:	>#C..C25C2cFddl}|t}tjd|j}||j5}|dddddn#1swxYwY|	|j
jddS)Nr	localhostrrr3)r4r,rVrrrrr7rrrAr))rr4r>rr8s     rtest_local_unknown_certz!HTTPSTest.test_local_unknown_certs


!!.11";<<


s|
,
,	"
IIeS!!!	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"+24OPPPPPsA66A:=A:cddl}|t}||j}|tt
jd|j|}|	|j
|dd|}|	|j
|
|jddS)NrrYr;r/nonexistentr-)r4r,rVrErFrJrrrr}r+rr6rr(rr4r>r<rrs      rtest_local_good_hostnamez"HTTPSTest.test_local_good_hostnames


!!.11..!899%%n555";WMMM   			%(((}}
###c*****rc|ddl}|t}||j}|tt
jd|j|}|	|j
5|dddddn#1swxYwYtj
dtf5t
jd|j|d}dddn#1swxYwY|	|j
5|dddddn#1swxYwYd	|_tj
dtf5t
jd|j|d	}dddn#1swxYwY|dd
|}||||jdd	|_t
jd|j|}|dd
|}||jd||tj
dtf5t
jd|j|d}dddn#1swxYwY|	|j
5|ddddddS#1swxYwYdS)NrrYr;rrrT)r<rIFr\r-)r4r,CERT_fakehostnamerErFrJrrrrCertificateErrorrr	check_warningsDeprecationWarningrIr6r+rr(r]s      rtest_local_bad_hostnamez!HTTPSTest.test_local_bad_hostnames


!!"344..!899%%&7888";WMMM


s3
4
4	"	"
IIeS!!!	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"
+R1C,D
E
E	M	M&{FK/6tMMMA	M	M	M	M	M	M	M	M	M	M	M	M	M	M	M

s3
4
4	"	"
IIeS!!!	"	"	"	"	"	"	"	"	"	"	"	"	"	"	""'

+R1C,D
E
E	N	N&{FK/6uNNNA	N	N	N	N	N	N	N	N	N	N	N	N	N	N	N	
		%(((}}

				c***"'";WMMM			%(((}}c***

				
+R1C,D
E
E	M	M&{FK/6tMMMA	M	M	M	M	M	M	M	M	M	M	M	M	M	M	M

s3
4
4	"	"
IIeS!!!	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"sl	B,,B03B0C<<DD!EEE1FF"F>K((K,/K,
L11L58L5rz)http.client.HTTPSConnection not availablecdD]-}|tjtj|.dD]P\}}}tj|}|||j|||jQdS)Nr)r)zwww.python.org:443rr2)rrr2)rrr2)rrr2)rrr2)rrrrrrrrs     rrzHTTPSTest.test_host_ports
I	M	MBf/1GLLLL#
	(
	(HB1&r**AQ'''Q''''
	(
	(rcddl}|js|dtjdd}||jj||j	}|
|jtjdd|}||j||
|jjtj
5tjddttjdd|t }dddn#1swxYwY||jjdS)	NrzTLS 1.3 support requiredrYr2r;ignorez5key_file, cert_file and check_hostname are deprecated)r<	cert_file)r4HAS_TLSv1_3r'rrr_contextpost_handshake_authrErFrassertIswarningscatch_warningsfilterwarningsrcrV)rr4rr<s    rtest_tls13_phazHTTPSTest.test_tls13_phas


	6MM4555";44
6777..!8994555";WEEE

aj'***7888

$
&
&	A	A#H.e$6
8
8
8&{C1?AAAA	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A
	

677777s-9D22D69D6N)r:r;r<rr,r.r9r@rsystem_must_validate_certrCrSrequires_resourcerWrZr^rdrrrrrrpr3rrr%r%7sB222:::(((
UUU
&
5
5'&
5222BWz**
U
U+*
UQQQ+++("("("TX_):;;;@BB((BB($88888rr%cFeZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
S)RequestBodyTestctjd|_tdx|j_|_|j|j_dS)NrXr)rrrrrr0s rrzRequestBodyTest.setUps9)-88	%/^^3		rctj|jj}|tj|}||fSr2)r=r>rrrRrrrfmessages   rget_headers_and_fpz"RequestBodyTest.get_headers_and_fps<Jty~&&	

&q))zrcVddgdfdf}|D]\}}||5tjd|_t	dx|j_|_|jdd||\}}|d	||d
||	|
dd|	||dddn#1swxYwYdS)
Nrbar3
foo
3
bar
0

))rr|r}rXrrr4zContent-Typerrr)rrrrrrrrzrrgetrN)rrrrrrxs      rtest_list_bodyzRequestBodyTest.test_list_bodysh
f
CDD
$
	5
	5ND(d##	
5	
5"1-@@	-7^^;		!!%6660022Q  555  !13777  )<!=!=yIII  16688444	
5	
5	
5	
5	
5	
5	
5	
5	
5	
5	
5	
5	
5	
5	
5
	5
	5sC*DD 	#D 	c.|jdddddi|\}}|d|d|dt|dS)Nrr4rr42rr)rrrzrr~rprNrryrxs   rtest_manual_content_lengthz*RequestBodyTest.test_manual_content_length%s	
	%+T2	4	4	4,,..
w{{+;<<===CMM*****rc|jddd|\}}|d||||d|d|d|dS)Nrr4r
text/plain4rsbody	rrrzrget_content_typerget_charsetr~rNrs   rtest_ascii_bodyzRequestBodyTest.test_ascii_body.s	%000,,..
w'?'?'A'ABBB'--//000gkk*:;;<<<!&&((+++++rc|jddd|\}}|d||||d|d|d|dS)Nrr4ubodyÁr5rbodyrrs   rtest_latin1_bodyz RequestBodyTest.test_latin1_body6s	%444,,..
w'?'?'A'ABBB'--//000gkk*:;;<<<affhh/////rc|jddd|\}}|d||||d|d|d|dS)Nrr4rrrrrrs   rtest_bytes_bodyzRequestBodyTest.test_bytes_body>s	%555,,..
w'?'?'A'ABBB'--//000gkk*:;;<<<affhh/////rcJ|tjtjt	tjdd5}|ddddn#1swxYwYt	tjd5}|jdd||\}}|	d|
||||
d|	d	|
d
|	d|ddddS#1swxYwYdS)Nwr)encodingrrr4rrrztransfer-encodings4
body
0

)r}runlinkTESTFNrwriterrrzrrrrr~rNrws   rtest_text_file_bodyz#RequestBodyTest.test_text_file_bodyFs	()*:;;;
)"C'
:
:
:	a
GGFOOO															
)"W
5
5
5		BIeVQ///0022JGQ\7+C+C+E+EFFFg1133444
gkk*:;;<<<Y4G(H(HIII6AAA		B		B		B		B		B		B		B		B		B		B		B		B		B		B		B		B		B		Bs%A))A-0A-C<FFFc |tjtjt	tjd5}|ddddn#1swxYwYt	tjd5}|jdd||\}}|	d|
|||	d|
d|d	||	d
|ddddS#1swxYwYdS)Nwbrr'rr4rrrrs5
body
0

)r}rrrrrrrrzrrrrr~rrNrws   rtest_binary_file_bodyz%RequestBodyTest.test_binary_file_bodyUs	()*:;;;
)"D
)
)	!Q
GGK   	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!
)"D
)
)	FQIeVQ///0022JGQ\7+C+C+E+EFFFg1133444Y4G(H(HIII-w777:AFFHHEEE	F	F	F	F	F	F	F	F	F	F	F	F	F	F	F	F	F	Fs%A''A+.A+C*FF
FN)r:r;r<rrzrrrrrrrr3rrrtrts=###
555(+++,,,000000
B
B
BFFFFFrrtc2eZdZdZdZdZdZdZdZdS)HTTPResponseTestcd}t|}tj||_|jdS)NzXHTTP/1.1 200 Ok
My-Header: first-value
My-Header:                 second-value

Text)rrrrr)rrrs   rrzHTTPResponseTest.setUpes@*$'--		rc|jd}||d|jdd}||ddS)Nz	My-Headerzfirst-value, second-valuezsome defaultrrrrrs  rtest_getting_headerz$HTTPResponseTest.test_getting_headerlsb$$[11!<===$$[.AA!<=====rch|jdd}||ddS)NNo-Such-Headerz
default-valuerrs  r3test_getting_nonexistent_header_with_string_defaultzDHTTPResponseTest.test_getting_nonexistent_header_with_string_defaultss6$$%5GG11111rc|jdddg}||d|jdd}||ddS)Nrdefaultvalueszdefault, values)rrrrs  r5test_getting_nonexistent_header_with_iterable_defaultzFHTTPResponseTest.test_getting_nonexistent_header_with_iterable_defaultwsl$$%5	87LMM!2333$$%57LMM!233333rcf|jd}||ddS)Nrrrs  r/test_getting_nonexistent_header_without_defaultz@HTTPResponseTest.test_getting_nonexistent_header_without_default~s4$$%566&&&&&rcj|jdd}||ddS)Nrr)rrrs  rtest_getting_header_defaultintz/HTTPResponseTest.test_getting_header_defaultints9$$%5b$AA$$$$$rN)	r:r;r<rrrrrrr3rrrrcsn>>>222444'''%%%%%rrcJeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS)TunnelTestscd}d|_tj|j|_|||j_dS)Nz:HTTP/1.0 200 OK

HTTP/1.1 200 OK
Content-Length: 42

z	proxy.com)rrrrr])r
response_texts  rrzTunnelTests.setUpsG
)	
 	)$)44	'+'>'>}'M'M	$$$rc8|jdSr2)rr+r0s rrzTunnelTests.tearDowns	rcdfd	}|S)Nc@t|d|dS)Nrr"rrr)rsrrrs   rr\z9TunnelTests._create_connection.<locals>.create_connections m'!*71:NNNNrNNr3)rrr\s ` rr]zTunnelTests._create_connections-	O	O	O	O	O	O  rcd}d}ddi}|j||||jddd||jjj|j||jjjtj||jj	|||jj
|||jj|dS)	Ndestination.comi"z
User-Agentz!Mozilla/5.0 (compatible, MSIE 11))rrrrr)r
set_tunnelrrrrrr	HTTP_PORT_tunnel_host_tunnel_port_tunnel_headers)rtunnel_hosttunnel_porttunnel_headerss    r!test_set_tunnel_host_port_headersz-TunnelTests.test_set_tunnel_host_port_headerss'&(KL	[{%3		5	5	5	&#r***,di888,f.>???/===/===2NCCCCCrc|j|t|jjddS)Nr)rrarRuntimeErrorrr0s r&test_disallow_set_tunnel_after_connectz2TunnelTests.test_disallow_set_tunnel_after_connectsD	,	(<+	-	-	-	-	-rcL|jd|jddd||jjj|j||jjjtj|	d|jjj
|d|jjj
|	d|jjj
|d|jjj
dS)	NrrrrCONNECT destination.comsHost: destination.com:NoneHost: destination.comsHost: proxy.com)rrrrrrrrrrrrr0s rtest_connect_with_tunnelz$TunnelTests.test_connect_with_tunnels	.///	&#r***,di888,f.>???

0$).2EFFF6	8KLLL

.	0CDDD	
+TY^-@AAAAArcb	tj|jd5}|jd|j|jdddddn#1swxYwY||t|j
dd|j
|j
ddd}|d	|||
d
d|dS)Nrrrrr"z!unexpected number of send calls: )rrrrzunexpected proxy data sent )rpatchobjectrrrar
assert_calledrrp
mock_callsrrr)r	mock_sendproxy_setup_data_sents   r0test_tunnel_connect_single_send_connection_setupz<TunnelTests.test_tunnel_connect_single_send_connection_setups}F
Z

ty&
1
1	*YI  !2333IIeS)))	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*	!!!I())1N	8LNN		P	P	P!* 4Q 7 :1 =

02GHHH%..{;;K2GKK		M	M	M	M	MsABB	Bc|jd|jddd||jjj|j||jjjtj|	d|jjj
|	d|jjj
dS)Nrrrrrr)rrrrrrrrrrrr0s rtest_connect_put_requestz$TunnelTests.test_connect_put_requests	.///	%b))),di888,f.>???

0$).2EFFF

.	0CDDDDDrcd}d|}|jd|||j_|jdtj5}|jddddddn#1swxYwY|	}|
d||dS)	Nz
X-Dummy: 1zHTTP/1.0 200 OK
{}

r"rrrrz
header: {})rrset_debuglevelr]rrrrrrr)rexpected_headerrrrs     rtest_tunnel_debuglogz TunnelTests.test_tunnel_debuglogs&7>>OO
	  ###'+'>'>}'M'M	$	.///

$
&
&	.&IeS"---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.!!,,..

l))/::EBBBBBs>B''B+.B+c4ddfd	}||j_|jdd}	|jdddn#t$r}|}Yd}~nd}~wwxYw|||jdS)NcDtd|d|dS)NzHTTP/1.1 404 NOT FOUND

rr"rr)rsrrrs   rr]z8TunnelTests.test_tunnel_leak.<locals>._create_connections/0QZQZD
Krrrrrr)rr]rrrErrr)rr]rers    @rtest_tunnel_leakzTunnelTests.test_tunnel_leaks						(:	$	.///	Ifc2....			CCCCCC		
S!!!()))))sA
A&A!!A&N)
r:r;r<rrr]rrrrrrrr3rrrrsNNN!!!
DDD---BBBMMM"EEECCC*****rr__main__r)	verbosity)>rrFhttprrr=rosrrLrzr~rmrrTestCaserrtest.supportrrr	requires_working_socketpathdirnamerhererrVr`rKrrchunk_extensionrrQr%rr|rr@r>rJrrVrgrrr)rrrrrrrr%rtrrr:mainr3rr<module>rsJ########												



""""""&&&&&&((((((t,,,,	wx  dJ
>>GLLz>BB#%7<<*7$$ 	-N

O+f4-







B









*





2:$22222v4222"z;z;z;z;z;(z;z;z;z55555h555,}}}}}8}}}@w
'w
'w
'w
'w
'w
'w
'w
'tz(z(z(z(z(xz(z(z(z.,DR8R8R8R8R8(R8R8R8j77777777>+++++(+++\E.E.E.E.E.hE.E.E.PI8I8I8I8I8I8I8I8X]F]F]F]F]Fh]F]F]F@!%!%!%!%!%x!%!%!%Fn*n*n*n*n*(n*n*n*bzHMAr