Ë
    _§1hPÇ  ã                  óp  — U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZmZmZ d dlZd dlmZ d dlmZ d d	lmZmZ d d
lmZmZmZmZ 	 d dl Z d dl!m"Z" d dlZddl%m&Z&mZ' ddl(m)Z) ddl&m*Z*m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9 ddl:m;Z; ddl<m=Z=m>Z>m?Z?m@Z@mAZA er$d dlBmCZCmDZDmEZEmFZF d dlGmHZH d dlImJZJ d dlKmLZL ddlMmNZN  e jž                  «       ZPePj£                  d«      ZR ej¦                  ej¨                  jª                  «      ZV eWed«      r eVxj°                  ej²                   z  c_X        eRjµ                  eV«        ej¶                  ddd g¬!«      dZd"„«       Z\d#d$œ	 	 	 	 	 d[d%„Z]e	d\d]d&„«       Z^e		 d\	 	 	 	 	 d^d'„«       Z_ G d(„ d)e)«      Z`d_d*„Zae
	 d`	 	 	 	 	 dad+„«       Zbddd,œ	 	 	 	 	 	 	 	 	 	 	 dbd-„Zceeef   Zdd.eed/<   	 	 dc	 	 	 	 	 	 	 ddd0„Zfeeef   Zgd.eed1<   	 	 dc	 	 	 	 	 	 	 ded2„Zhdfd3„Zidfd4„Zjdfd5„Zkdfd6„Zldfd7„Zme-	 	 	 	 	 	 dgd8„«       Zndfd9„Zod_d:„Zpejâ                  jå                  ejæ                  d;k(  xr ejè                  d<k\  d=¬>«      dfd?„«       Zudfd@„Zvejâ                  jï                  dAd#dBg«      	 	 	 	 	 	 dhdC„«       ZxdfdD„ZydfdE„ZzdfdF„Z{dfdG„Z|dfdH„Z}dfdI„Z~d_dJ„ZdfdK„Z€dfdL„Z�dfdM„Z‚dfdN„ZƒdfdO„Z„dfdP„Z…dfdQ„Z†dfdR„Z‡ejâ                  �j                  dSdT«      dfdU„«       Z‰dfdV„ZŠdfdW„Z‹dfdX„ZŒdfdY„Z�y# e#$ rZ$ ee$«       Y dZ$[$�ŒÅdZ$[$ww xY w)ié    )ÚannotationsN)ÚasynccontextmanagerÚcontextmanagerÚsuppress)Úpartial)Ú
SSLContext)ÚTYPE_CHECKINGÚAnyÚNoReturn)ÚStapledStream)Úskip_if_optional_else_raise)ÚReceiveStreamÚ
SendStream)ÚMatcherÚMemoryReceiveStreamÚMemorySendStreamÚRaisesGroup)ÚSSLé   )Ú_coreÚsocket)ÚStream)ÚBrokenResourceErrorÚClosedResourceError)Úslow)Úaclose_forcefully)Úopen_tcp_stream)ÚSocketListenerÚSocketStream)ÚNeedHandshakeErrorÚSSLListenerÚ	SSLStreamÚ_is_eof)ÚConflictDetector)Ú	SequencerÚassert_checkpointsÚcheck_two_way_streamÚlockstep_stream_pairÚmemory_stream_pair)ÚAsyncIteratorÚ	AwaitableÚCallableÚIterator)Ú	TypeAlias)Ú	MockClock)ÚT_Stream)ÚCancelScopeútrio-test-1.example.orgÚOP_IGNORE_UNEXPECTED_EOFÚmoduleÚtls13Útls12)ÚscopeÚparamsc                óP  — t        j                  «       }t        t         d«      r$|xj                  t         j                   z  c_        t
        j                  |«       | j                  dv r|S | j                  dk(  r!t         j                  j                  |_
        |S t        «       ‚)Nr3   )Údefaultr5   r6   )ÚsslÚcreate_default_contextÚhasattrÚoptionsr3   ÚTRIO_TEST_CAÚconfigure_trustÚparamÚ
TLSVersionÚTLSv1_2Úmaximum_versionÚAssertionError)ÚrequestÚctxs     úR/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/trio/_tests/test_ssl.pyÚ
client_ctxrI   b   s~   € ä
×
$Ñ
$Ó
&€CäŒsÐ.Ô/Ø�Šœ×4Ñ4Ð4Ñ4�ä× Ñ  Ô%Ø‡}�}Ð,Ñ,Øˆ
Ø	�‰˜'Ò	!Ü!Ÿn™n×4Ñ4ˆÔØˆ
äÓÐó    F©Úexpect_failc               ó„  — 	 t         j                  | dd¬«      }|5  |j                  «        	 |j                  d«      }|sQt	        t
        t        j                  «      5  |j                  «        d d d «       	 d d d «       | j                  «        y |j                  |«       Œv# 1 sw Y   Œ5xY w# 1 sw Y   nxY w	 |r]t        d«      ‚# t        t        f$ r Y | j                  «        y t        $ r&}|rt        d|«       nt        d|«       ‚ Y d }~nd }~ww xY w| j                  «        y # | j                  «        w xY w)NTF)Úserver_sideÚsuppress_ragged_eofsi   zfailed to fail?z*ssl_echo_serve_sync got error as expected:z)ssl_echo_serve_sync got unexpected error:)Ú
SERVER_CTXÚwrap_socketÚdo_handshakeÚrecvr   ÚBrokenPipeErrorr;   ÚSSLZeroReturnErrorÚunwrapÚcloseÚsendallÚRuntimeErrorÚConnectionResetErrorÚConnectionAbortedErrorÚ	ExceptionÚprint)ÚsockrL   ÚwrappedÚdataÚexcs        rH   Ússl_echo_serve_syncrb   t   s0  € ð
,Ü×(Ñ(ØØØ!&ð )ó 
ˆð
 ñ 	&Ø× Ñ Ô"ØØ—|‘| DÓ)�Ùô "¤/´3×3IÑ3IÓJñ )ØŸ™Ô(÷)à÷	&ðL 	�
‰
�ð7 —‘ Ô%ð ÷)ð )ú÷	&ð 	&úð 	&ñF ÜÐ0Ó1Ð1øô !Ô"8Ð9ò Øð 	�
‰
�ô ò ÙÜÐ>ÀÕDäÐ=¸sÔCØô Eûðúð 	�
‰
�øˆ�
‰
�úsq   ‚C
 œAB0ÁB$Á0	B0Á9C
 ÂB0Â$B-	Â)B0Â0B9Â5C
 Â=D- Ã
DÃD- Ã+DÃ3DÄD- ÄDÄD- Ä-D?c               óØ  K  — t        j                  «       \  }}t        j                  «       4 ƒd {  –—† }|5  |5  |j	                  t        j
                  j                  t        t        || ¬«      «       t        t        j                  |«      «      ­–— d d d «       d d d «       d d d «      ƒd {  –—†  y 7 Œ†# 1 sw Y   Œ$xY w# 1 sw Y   Œ(xY w7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)NrK   )Ústdlib_socketÚ
socketpairÚtrioÚopen_nurseryÚ
start_soonÚ	to_threadÚrun_syncr   rb   r   ÚtsocketÚfrom_stdlib_socket)rL   ÚaÚbÚnurserys       rH   Ússl_echo_server_rawrp   «   sÆ   è ø€ ä×#Ñ#Ó%�D€A€qÜ× Ñ Ó"÷ 
>ð 
> gð ñ 	>�ñ 	>Ø×ÑÜ—‘×'Ñ'ÜÔ+¨Q¸KÔHôô
 œw×9Ñ9¸!Ó<Ó=Ó=÷	>÷ 	>÷	
>÷ 
>ñ 
>ø÷	>ð 	>ú÷ 	>ð 	>úð	
>ø÷ 
>÷ 
>ñ 
>üss   ‚0C*²B9³C*¶C¹C¼AB;ÂCÂ CÂ(C*Â3CÂ4C*Â;CÃ CÃC	ÃCÃC*ÃC'ÃCÃC'Ã#C*c               óª   K  — t        |¬«      4 ƒd {  –—† }t        || d¬«      ­–— d d d «      ƒd {  –—†  y 7 Œ&7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)NrK   r2   ©Úserver_hostname)rp   r"   )rI   rL   r^   s      rH   Ússl_echo_serverrt   ½   sZ   è ø€ ô
 #¨{Ô;÷ Uð U¸tÜ˜˜jÐ:SÔTÓT÷U÷ Uñ Uøð Uø÷ U÷ Uñ Uüs<   ‚A“:”A—>©A´<µA¼A¾AÁAÁAÁAc                  óP   — e Zd Z	 d		 	 	 d
d„Zdd„Zdd„Zdd„Zdd„Zdd„Zd	dd„Z	y)ÚPyOpenSSLEchoStreamNc                ó$  — t        j                  t         j                  «      }ddlm}  |«       }|j                  |j                  j                  «       t        t         d«      rJ ‚t        j                  |«       t        j                  |d «      | _        | j                  j                  «        t        j                  «       | _        t#        «       | _        t'        d«      | _        t'        d«      | _        |  |€dd„}|| _        y || _        y )Nr   )ÚBindingÚOP_NO_TLSv1_4z2simultaneous calls to PyOpenSSLEchoStream.send_allz6simultaneous calls to PyOpenSSLEchoStream.receive_somec              “  ó   K  — y ­w©N© )Ú_s    rH   Úno_op_sleeperz3PyOpenSSLEchoStream.__init__.<locals>.no_op_sleeperò   s	   è ø€ Øùs   ‚©r}   ÚobjectÚreturnÚNone)r   ÚContextÚSSLv23_METHODÚ,cryptography.hazmat.bindings.openssl.bindingrx   Úset_optionsÚlibÚSSL_OP_NO_TLSv1_3r=   ÚTRIO_TEST_1_CERTÚconfigure_certÚ
ConnectionÚ_connÚset_accept_stater   Ú
ParkingLotÚ_lotÚ	bytearrayÚ_pending_cleartextr$   Ú_send_all_conflict_detectorÚ_receive_some_conflict_detectorÚsleeper)Úselfr”   rG   rx   rn   r~   s         rH   Ú__init__zPyOpenSSLEchoStream.__init__Ì   sÙ   € ô �k‰kœ#×+Ñ+Ó,ˆõ 	Iá‹IˆØ�‰˜Ÿ™×/Ñ/Ô0ô œ3 Ô0Ð0Ð0Ü×'Ñ'¨Ô,Ü—^‘^ C¨Ó.ˆŒ
Ø�
‰
×#Ñ#Ô%Ü×$Ñ$Ó&ˆŒ	Ü"+£+ˆÔä+;Ø@ó,
ˆÔ(ô 0@ØDó0
ˆÔ,ñ 	Øˆ?óð )ˆD�Là"ˆD�LrJ   c              ƒ  ó@   K  — | j                   j                  «        y ­wr{   )rŒ   Úbio_shutdown©r•   s    rH   ÚaclosezPyOpenSSLEchoStream.acloseù   s   è ø€ Ø�
‰
×ÑÕ!ùs   ‚c                ó6   — | j                   j                  «       S r{   )rŒ   Úrenegotiate_pendingr™   s    rH   rœ   z'PyOpenSSLEchoStream.renegotiate_pendingü   s   € Ø�z‰z×-Ñ-Ó/Ð/rJ   c                ó<   — | j                   j                  «       sJ ‚y r{   )rŒ   Úrenegotiater™   s    rH   rž   zPyOpenSSLEchoStream.renegotiateÿ   s   € ð �z‰z×%Ñ%Ô'Ð'Ñ'rJ   c              ƒ  óü   K  — | j                   5  t        j                  «       ƒ d {  –—†  t        j                  «       ƒ d {  –—†  | j                  d«      ƒ d {  –—†  d d d «       y 7 ŒB7 Œ(7 Œ# 1 sw Y   y xY w­w)NÚwait_send_all_might_not_block)r’   r   Ú
checkpointr”   r™   s    rH   r    z1PyOpenSSLEchoStream.wait_send_all_might_not_block  sp   è ø€ Ø×-Ñ-ñ 	@Ü×"Ñ"Ó$×$Ð$Ü×"Ñ"Ó$×$Ð$Ø—,‘,Ð>Ó?×?Ð?÷	@ð 	@Ø$øØ$øØ?ø÷	@ð 	@üsP   ‚A<�A0§A*¨A0ÁA,ÁA0ÁA.ÁA0Á!	A<Á*A0Á,A0Á.A0Á0A9Á5A<c              ƒ  ó8  K  — t        d«       | j                  5  t        j                  «       ƒ d {  –—†  t        j                  «       ƒ d {  –—†  | j	                  d«      ƒ d {  –—†  | j
                  j                  |«       	 | j	                  d«      ƒ d {  –—†  	 | j
                  j                  d«      }| xj                  |z  c_        ŒK7 Œ 7 Œ†7 Œo7 Œ<# t        j                  $ rA | j
                  j                  «        t        d| j
                  j                  «       «       Y nt        j                  $ r Y nw xY w| j                  j                  «        | j	                  d«      ƒ d {  –—†7   t        d«       d d d «       y # 1 sw Y   y xY w­w)Nz  --> transport_stream.send_allÚsend_allé   zrenegotiations:z(  <-- transport_stream.send_all finished)r]   r’   r   r¡   r”   rŒ   Ú	bio_writerS   r‘   r   ÚZeroReturnErrorÚshutdownÚtotal_renegotiationsÚWantReadErrorr�   Ú
unpark_all©r•   r`   s     rH   r£   zPyOpenSSLEchoStream.send_all
  sK  è ø€ ÜÐ/Ô0Ø×-Ñ-ñ 	>Ü×"Ñ"Ó$×$Ð$Ü×"Ñ"Ó$×$Ð$Ø—,‘,˜zÓ*×*Ð*Ø�J‰J× Ñ  Ô&ØØ—l‘l :Ó.×.Ð.ð	4ØŸ:™:Ÿ?™?¨1Ó-�Dð ×+Ò+¨tÑ3Õ+ð ð	 %øØ$øØ*øð /ùô ×*Ñ*ò Ø—J‘J×'Ñ'Ô)ÜÐ+¨T¯Z©Z×-LÑ-LÓ-NÔOÙÜ×(Ñ(ò Ùðúð �I‰I× Ñ Ô"Ø—,‘,˜zÓ*×*Ñ*ÜÐ<Ô=÷'	>÷ 	>ñ 	>üs™   ‚FšF²C³FÁCÁFÁ'CÁ(4FÂCÂFÂ"CÂ=FÃFÃFÃFÃAEÄ,FÄ.EÅ FÅEÅ1FÅ4E7Å5FÆ	FÆFÆFc              ƒ  ó´  K  — t        d«       |€d}| j                  5  	 t        j                  «       ƒ d {  –—†  t        j                  «       ƒ d {  –—†  	 | j	                  d«      ƒ d {  –—†  	 | j
                  j                  |«      | j	                  d«      ƒ d {  –—†  t        d«       cd d d «       S 7 Œƒ7 Œi7 ŒQ7 Œ# t        j                  $ �rF | j                  �rt        d| j                  «       	 | j                  dd }| j
                  j                  t        |«      «       | j                  dd…= nÜ# t        j                  $ r˜ 	 | j
                  j                  |«      cY cY | j	                  d«      ƒ d {  –—†7   t        d«       cd d d «       S # t        j                  $ r1 t        d«       | j                  j                  «       ƒ d {  –—†7   Y nw xY wY n2w xY wt        d	«       | j                  j                  «       ƒ d {  –—†7   Y nw xY w�ŒÉ# | j	                  d«      ƒ d {  –—†7   t        d«       w xY w# 1 sw Y   y xY w­w)
Nz#  --> transport_stream.receive_somei   Úreceive_somez,  <-- transport_stream.receive_some finishedz
    tryingr   r¤   zparking (a)zparking (b))r]   r“   r   r¡   r”   rŒ   Úbio_readr   r©   r‘   ÚsendÚbytesr�   Úpark)r•   ÚnbytesÚ	next_bytes      rH   r­   z PyOpenSSLEchoStream.receive_some!  s  è ø€ ÜÐ3Ô4Øˆ>ØˆFØ×1Ñ1ñ 1	Fð0FÜ×&Ñ&Ó(×(Ð(Ü×&Ñ&Ó(×(Ð(ØØŸ,™, ~Ó6×6Ð6ð(3Ø#Ÿz™z×2Ñ2°6Ó:ðR —l‘l >Ó2×2Ð2ÜÐDÔE÷c1	Fñ 1	Fà(øØ(øà6øðV 3ùôQ ×,Ñ,ó &3ð  ×2Ó2ô " ,°×0GÑ0GÔHðAð -1×,CÑ,CÀAÀaÐ,H 	Ø $§
¡
§¡´°iÓ0@Ô Að, %)×$;Ñ$;¸A¸a¸CÑ$@øô% $'×#4Ñ#4ò ;ð!;Ø+/¯:©:×+>Ñ+>¸vÓ+FÓ$Fð" —l‘l >Ó2×2Ñ2ÜÐDÔE÷c1	Fñ 1	Føô@ (+×'8Ñ'8ò !;ô %*¨-Ô$8Ø*.¯)©)¯.©.Ó*:×$:Ó$:ð!;úñ
 %;ð;úô, " -Ô0Ø"&§)¡)§.¡.Ó"2×2Ñ2ùðM&3úñ	 øðX —l‘l >Ó2×2Ñ2ÜÐDÕEú÷c1	Fð 1	Füs'  ‚IžI H"·B;¸H"ÁB=ÁH"Á-B?Á.H"Á3CÂIÂ!CÂ"IÂ1
IÂ;H"Â=H"Â?H"ÃIÃ7HÃ;3D>Ä.HÄ>G)ÅFÅ,G)Å-HÅ/H"Å0IÆFÆIÆ
IÆ;G#	ÇGÇG#	Ç G)Ç"G#	Ç#G)Ç&HÇ(G)Ç)+HÈHÈHÈH"ÈHÈH"È"I	È7H:
È8I	É	IÉIÉIr{   )r”   ú'Callable[[str], Awaitable[None]] | Noner�   r‚   ©r�   r‚   )r�   Úbool)r`   r°   r�   r‚   )r²   ú
int | Noner�   r°   )
Ú__name__Ú
__module__Ú__qualname__r–   rš   rœ   rž   r    r£   r­   r|   rJ   rH   rv   rv   Ë   s@   „ ð <@ð+#à8ð+#ð 
ó+#óZ"ó0ó(ó
@ó>õ.5FrJ   rv   c               ƒ  óÐ   K  — 	 	 	 	 	 	 	 	 	 	 dd„}  | dddd«      ƒ d {  –—†   | dddd«      ƒ d {  –—†   | dddd«      ƒ d {  –—†   | dddd«      ƒ d {  –—†  y 7 Œ>7 Œ-7 Œ7 Œ­w)	Nc              “  ó�  K  — t        «       }t        t        t        j                  d«      «      5  t        j
                  «       4 ƒd {  –—† } |j                  t        || «      g|¢­Ž   |j                  t        ||«      g|¢­Ž  d d d «      ƒd {  –—†  d d d «       y 7 ŒW7 Œ# 1 ƒd {  –—†7  sw Y   ŒxY w# 1 sw Y   y xY w­w)NÚsimultaneous)rv   r   r   r   ÚBusyResourceErrorrg   rh   Úgetattr)Úfunc1Úargs1Úfunc2Úargs2Úsro   s         rH   Údo_testzDtest_PyOpenSSLEchoStream_gives_resource_busy_errors.<locals>.do_test`  s´   è ø€ ô  Ó!ˆÜœ¤×!8Ñ!8¸.ÓIÓJñ 	>Ü×)Ñ)Ó+÷ >ð >¨wØ"�×"Ñ"¤7¨1¨eÓ#4Ð=°uÓ=Ø"�×"Ñ"¤7¨1¨eÓ#4Ð=°uÓ=÷>÷ >÷	>ð 	>ð>øð >ø÷ >÷ >ñ >ú÷	>ð 	>üsd   ‚.C°B:Á	B!Á
B:Á;B%ÂB:ÂB#ÂB:Â	CÂ!B:Â#B:Â%B7	Â+B.Â,B7	Â3B:Â:CÂ?Cr£   )ó   xr    r|   r­   )r¤   )
rÀ   ÚstrrÁ   útuple[object, ...]rÂ   rÇ   rÃ   rÈ   r�   r‚   r|   )rÅ   s    rH   Ú3test_PyOpenSSLEchoStream_gives_resource_busy_errorsrÉ   Y  s­   è ø€ ð
>Øð
>à!ð
>ð ð
>ð "ð	
>ð
 
ó
>ñ �*˜g z°7Ó
;×;Ð;Ù
�*˜gÐ'FÈÓ
K×KÐKÙ
Ø'Ø
Ø'Ø
ó	÷ ð ñ �. $¨¸Ó
=×=Ñ=ð <øØKøðøð >úsC   ‚A&ŸA A&²A ³A&ÁA"ÁA&ÁA$ÁA&Á A&Á"A&Á$A&c              #  óD   K  — t        |¬«      }t        || d¬«      –— y ­w)N©r”   r2   rr   )rv   r"   )rI   r”   Úfakesocks      rH   Úvirtual_ssl_echo_serverrÍ   w  s"   è ø€ ô
 #¨7Ô3€HÜ
�H˜jÐ:SÔ
TÓTùs   ‚ ©Úclient_kwargsÚserver_kwargsc               ó^   — |€i }|€i }t        || fddi|¤Ž}t        |t        fddi|¤Ž}||fS )Nrs   r2   rN   T)r"   rP   )rI   Úclient_transportÚserver_transportrÏ   rÐ   Ú
client_sslÚ
server_ssls          rH   Ússl_wrap_pairrÖ   €  sq   € ð ÐØˆØÐØˆÜØØñð 2ðð ñ	€Jô ØÜñð ðð ñ	€Jð �zÐ!Ð!rJ   r.   ÚMemoryStapledStreamc                ó<   — t        «       \  }}t        | ||||¬«      S ©NrÎ   )r)   rÖ   ©rI   rÏ   rÐ   rÒ   rÓ   s        rH   Ússl_memory_stream_pairrÛ   ž  s/   € ô *<Ó)=Ñ&ÐÐ&ÜØØØØ#Ø#ôð rJ   ÚMyStapledStreamc                ó<   — t        «       \  }}t        | ||||¬«      S rÙ   )r(   rÖ   rÚ   s        rH   Ússl_lockstep_stream_pairrÞ   ³  s/   € ô *>Ó)?Ñ&ÐÐ&ÜØØØØ#Ø#ôð rJ   c              ƒ  óÒ  K  — t        | «      4 ƒd {  –—† }|j                  rJ ‚|j                  d«      ƒ d {  –—†  |j                  d«      ƒ d {  –—† dk(  sJ ‚|j	                  «       ƒ d {  –—†  d d d «      ƒd {  –—†  t        d¬«      4 ƒd {  –—† }t        j                  «       }t        ||d¬«      }|j                  rJ ‚t        j                  t        «      5 }|j                  d«      ƒ d {  –—†  d d d «       t        j                  j                  t        j                  «      sJ ‚d d d «      ƒd {  –—†  t        d¬«      4 ƒd {  –—† }t        || d¬«      }|j                  rJ ‚t        j                  t        «      5 }|j                  d«      ƒ d {  –—†  d d d «       t        j                  j                  t        j                   «      sJ ‚d d d «      ƒd {  –—†  y 7 �Œß7 �Œ»7 �Œ¥7 �Œ‹7 �Œ~# 1 ƒd {  –—†7  sw Y   �Œ�xY w7 �Œ‚7 �Œ"# 1 sw Y   �Œ"xY w7 Œé# 1 ƒd {  –—†7  sw Y   ŒùxY w7 Œë7 Œž# 1 sw Y   Œ�xY w7 Œd# 1 ƒd {  –—†7  sw Y   y xY w­w)NrÆ   r¤   TrK   r2   rr   ztrio-test-2.example.org)rt   rN   r£   r­   rš   rp   r;   r<   r"   ÚpytestÚraisesr   Ú
isinstanceÚvalueÚ	__cause__ÚSSLErrorÚCertificateError)rI   rÄ   r^   Úbad_client_ctxÚexcinfos        rH   Útest_ssl_client_basicsré   È  s  è ø€ ä˜zÓ*÷ ð ¨aØ—=’=Ð Ð Ø�j‰j˜Ó×ÐØ—^‘^ AÓ&×&¨$Ò.Ð.Ð.Ø�h‰h‹j×Ð÷	÷ ô #¨tÔ4÷ Að A¸Ü×3Ñ3Ó5ˆÜ�d˜NÐ<UÔVˆØ—=’=Ð Ð Ü�]‰]Ô.Ó/ð 	#°7Ø—*‘*˜TÓ"×"Ð"÷	#ä˜'Ÿ-™-×1Ñ1´3·<±<Ô@Ð@Ð@÷A÷ Aô #¨tÔ4÷ Ið I¸Ü�d˜JÐ8QÔRˆØ—=’=Ð Ð Ü�]‰]Ô.Ó/ð 	#°7Ø—*‘*˜TÓ"×"Ð"÷	#ä˜'Ÿ-™-×1Ñ1´3×3GÑ3GÔHÐHÐH÷I÷ Ið Ið!ùàùØ&ùØùð	ù÷ ÷ ò úðAùð
 #ù÷	#ñ 	#úð	Aø÷ A÷ Añ AúðIøð #ø÷	#ð 	#úðIø÷ I÷ Iñ IüsQ  ‚I'’G1“I'–#H ¹G4ºH ÁG7ÁH Á/G:Á0H Á4I'Á?G=Â I'ÂHÂI'ÂA
H+Ã"HÃ7HÃ8HÃ<8H+Ä4I'Ä?H)Å I'ÅI ÅI'Å6IÆIÆ#IÆ$IÆ(8IÇ I'Ç+IÇ,I'Ç4H Ç7H Ç:H Ç=I'È HÈH	ÈHÈ	I'ÈHÈH&	È!H+È)I'È+H=È1H4È2H=È9I'ÉIÉI	É	IÉI'ÉI$ÉIÉI$É I'c              ƒ  óº  ‡ ‡K  — t        j                  «       \  Š}‰5  |5  t        j                  |«      }t	        t        |«      t        d¬«      }|j                  sJ ‚d
ˆˆ fd„}t        j                  |¬«      }|j                  «        |j                  d«      ƒ d {  –—† dk(  sJ ‚|j                  d«      ƒ d {  –—†  |j                  d«      ƒ d {  –—† dk(  sJ ‚|j                  d«      ƒ d {  –—† d	k(  sJ ‚|j                  «       ƒ d {  –—†  |j                  «        d d d «       d d d «       y 7 Œ—7 Œ{7 Œd7 ŒH7 Œ-# 1 sw Y   ŒxY w# 1 sw Y   y xY w­w)NT©rN   c                 óæ   •— ‰j                  ‰d¬«      5 } | j                  d«       | j                  d«      dk(  sJ ‚| j                  d«       | j                  «        d d d «       y # 1 sw Y   y xY w)Nr2   rr   rÆ   r¤   ó   yó   z)rQ   rX   rS   rV   )Úclient_sockrm   rI   s    €€rH   Úclientz&test_ssl_server_basics.<locals>.clientí  sw   ø€ Ø×'Ñ'ØØ 9ð (ó ð %ð Ø×#Ñ# DÔ)Ø"×'Ñ'¨Ó*¨dÒ2Ð2Ð2Ø×#Ñ# DÔ)Ø×"Ñ"Ô$÷%÷ %ñ %ús   •A	A'Á'A0)Útargetr¤   rÆ   rí   rî   rJ   rµ   )rd   re   rk   rl   r"   r   rP   rN   Ú	threadingÚThreadÚstartr­   r£   rš   Újoin)rI   rn   Úserver_sockrÓ   rð   Útrm   s   `     @rH   Útest_ssl_server_basicsrø   â  s?  ùè ø€ Ü×#Ñ#Ó%�D€A€qØ	
ñ ˆAñ Ü×0Ñ0°Ó3ˆÜ$Ü˜Ó%ÜØô
Ðð
  ×+Ò+Ð+Ð+ö	%ô ×Ñ FÔ+ˆØ	�‰Œ	à%×2Ñ2°1Ó5×5¸Ò=Ð=Ð=Ø×'Ñ'¨Ó-×-Ð-Ø%×2Ñ2°1Ó5×5¸Ò=Ð=Ð=Ø%×2Ñ2°1Ó5×5¸Ò<Ð<Ð<Ø×%Ñ%Ó'×'Ð'à	�‰Œ÷9÷ ð ð, 6øØ-øØ5øØ5øØ'ø÷5ð ú÷ ð üsŽ   „EžE¡B EÂ!D9Â"EÂ?D;Ã EÃD=ÃEÃ6D?Ã7EÄEÄEÄ(EÄ0	EÄ9EÄ;EÄ=EÄ?EÅEÅE	ÅEÅEÅEc              ƒ  óú  K  — t        d¬«      4 ƒd {  –—† }| }t        j                  «       }t        ||d¬«      }|j                  |u sJ ‚|j
                  |u sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚t        j                  t        «      5  |j                   d d d «       dt        |«      v sJ ‚dt        |«      v sJ ‚t        j                  t        «      5  d|_        d d d «       t        j                  t        «      5  d|_        d d d «       ||_        |j
                  |u sJ ‚t        j                  t        «      5 }|j                  «       ƒ d {  –—†  d d d «       t        j                   j"                  t        j$                  «      sJ ‚d d d «      ƒd {  –—†  y 7 �Œ›# 1 sw Y   �ŒxY w# 1 sw Y   ŒÔxY w# 1 sw Y   Œ·xY w7 Œu# 1 sw Y   ŒtxY w7 Œ;# 1 ƒd {  –—†7  sw Y   y xY w­w)	NTrK   r2   rr   FÚtransport_streamÚcontextÚasdf)rp   r;   r<   r"   rú   rû   rN   rs   rà   rá   ÚAttributeErrorÚ
asfdasdfsaÚdirr   rR   râ   rã   rä   rå   )rI   r^   Úgood_ctxÚbad_ctxrÄ   rè   s         rH   Útest_attributesr    sÎ  è ø€ Ü"¨tÔ4÷ !Að !A¸ØˆÜ×,Ñ,Ó.ˆÜ�d˜HÐ6OÔPˆà×!Ñ! TÑ)Ð)Ð)ð �y‰y˜HÑ$Ð$Ð$Ø�}‰} Ò%Ð%Ð%Ø× Ñ Ð$=Ò=Ð=Ð=Ü�]‰]œ>Ó*ñ 	Ø�LŠL÷	ð "¤S¨£VÑ+Ð+Ð+ØœC ›FÑ"Ð"Ð"ô
 �]‰]œ>Ó*ñ 	!Ø ˆAŒM÷	!ä�]‰]œ>Ó*ñ 	'Ø &ˆAÔ÷	'ð ˆŒ	Ø�y‰y˜GÑ#Ð#Ð#Ü�]‰]Ô.Ó/ð 	#°7Ø—.‘.Ó"×"Ð"÷	#ä˜'Ÿ-™-×1Ñ1´3·<±<Ô@Ð@Ð@÷C!A÷ !Añ !Aù÷	ñ 	ú÷	!ð 	!ú÷	'ð 	'úð #ø÷	#ð 	#úð?!Aø÷ !A÷ !Añ !Aüs·   ‚G;“F.”G;—B G&ÂF1Â$?G&Ã#F>Ã+!G&ÄG
Ä8G&ÅGÅ GÅ!GÅ%8G&ÆG;Æ(G$Æ)G;Æ1F;	Æ6G&Æ>G	ÇG&Ç
G	ÇG&ÇGÇG!	ÇG&Ç$G;Ç&G8Ç,G/Ç-G8Ç4G;c              ƒ  ó°  ‡‡‡‡‡	K  — dŠdŠ‰‰z  Št        «       Š	t        «       Šdˆˆˆ	fd„}dˆˆˆfd„}t        | «      4 ƒd {  –—† }t        j                  «       4 ƒd {  –—† }|j	                  ||«       |j	                  ||«       |j	                  |j
                  «       |j	                  |j
                  «       d d d «      ƒd {  –—†  |j                  «       ƒ d {  –—†  d d d «      ƒd {  –—†  t        ‰	«      t        ‰«      cxk(  r‰k(  sJ ‚ J ‚‰	‰k(  sJ ‚y 7 ŒÝ7 ŒÂ7 ŒZ# 1 ƒd {  –—†7  sw Y   ŒjxY w7 ŒY7 ŒK# 1 ƒd {  –—†7  sw Y   Œ[xY w­w)Né   i €  c              “  ó¢   •K  — t        ‰«      D ]:  }t        |«       t        |g‰z  «      }‰|z  Š| j                  |«      ƒ d {  –—†  Œ< y 7 Œ­wr{   )Úranger]   r°   r£   )rÄ   ÚiÚchunkÚCHUNKSÚ
CHUNK_SIZEÚsents      €€€rH   Úsenderz'test_full_duplex_basics.<locals>.senderP  sR   øè ø€ ä�v“ò 	$ˆAÜ�!ŒHÜ˜1˜# 
Ñ*Ó+ˆEØ�E‰MˆDØ—*‘*˜UÓ#×#Ñ#ñ		$ð $ús   ƒAAÁAÁAc              “  ó�   •K  — t        ‰«      ‰k  r1| j                  ‰dz  «      ƒ d {  –—† }‰|z  Št        ‰«      ‰k  rŒ0y y 7 Œ­w)Nr   )Úlenr­   )rÄ   r  r
  ÚEXPECTEDÚreceiveds     €€€rH   Úreceiverz)test_full_duplex_basics.<locals>.receiverX  sC   øè ø€ ä�(‹m˜hÒ&ØŸ.™.¨°q©Ó9×9ˆEØ˜ÑˆHô �(‹m˜hÕ&Ø9ús   ƒ&A©AªAÁA)rÄ   r   r�   r‚   )r�   rt   r   rg   rh   rR   rš   r  )
rI   r  r  rÄ   ro   r	  r
  r  r  r  s
        @@@@@rH   Útest_full_duplex_basicsr  H  s:  üè ø€ Ø€FØ€JØ˜
Ñ"€Hä‹;€DÜ‹{€H÷$÷ô ˜zÓ*÷ 	ð 	¨aÜ×%Ñ%Ó'÷ 	/ð 	/¨7Ø×Ñ˜v qÔ)Ø×Ñ˜x¨Ô+ð ×Ñ˜qŸ~™~Ô.Ø×Ñ˜qŸ~™~Ô.÷	/÷ 	/ð �h‰h‹j×Ð÷	÷ 	ô ˆt‹9œ˜H›Ô1¨Ò1Ð1Ñ1Ð1Ð1Ø�8ÒÐÑð	øð	/øð 	/ø÷ 	/÷ 	/ñ 	/úð 	øð	ø÷ 	÷ 	ñ 	üsœ   ‡=EÁD"ÁEÁEÁ!D$Á"EÁ%AD(Ã EÃD&ÃEÃ#D=Ã$EÃ(EÃ3D?Ã4/EÄ$EÄ&EÄ(D:	Ä.D1Ä/D:	Ä6EÄ?EÅEÅE
ÅEÅEc              ƒ  óÔ  K  — t        | «      5 }|j                  «       ƒ d {  –—†  |j                  j                  «        |j	                  d«      ƒ d {  –—†  |j                  d«      ƒ d {  –—† dk(  sJ ‚|j	                  d«      ƒ d {  –—†  |j                  d«      ƒ d {  –—† dk(  sJ ‚|j                  «       ƒ d {  –—†  d d d «       y 7 Œ­7 Œ|7 Œe7 ŒI7 Œ27 Œ# 1 sw Y   y xY w­w)Nó   ar¤   ó   b)rÍ   rR   rú   rž   r£   r­   rš   ©rI   rÄ   s     rH   Útest_renegotiation_simpler  m  sÎ   è ø€ Ü	  Ó	,ð °Ø�n‰nÓ×ÐØ	×Ñ×&Ñ&Ô(Ø�j‰j˜Ó×ÐØ—^‘^ AÓ&×&¨$Ò.Ð.Ð.ð �j‰j˜Ó×ÐØ—^‘^ AÓ&×&¨$Ò.Ð.Ð.à�h‰h‹j×Ð÷ð ØøàøØ&øð 	øØ&øàø÷ð üs†   ‚C(ŽC¢C£2CÁCÁCÁ.CÁ/CÂCÂCÂ%CÂ&CÃCÃCÃ	C(ÃCÃCÃCÃCÃCÃCÃC%Ã!C(c           	   ƒ  óº	  ‡‡‡‡K  — d| _         dd l}|j                  d«      Šdˆfd„}dˆˆˆfd„}dˆfd„Šdˆfd„Št        ||¬«      5 Š‰j	                  «       ƒ d {  –—†   ‰d«      ƒ d {  –—†  ‰j
                  j                  «         ‰d«      ƒ d {  –—†   |«       ƒ d {  –—†  t        d«      D ]î  }t        |d	z  g«      }t        d
|z  d	z  g«      }‰j
                  j                  «        t        j                  «       4 ƒd {  –—† }|j                  ‰|«       |j                  ‰|«       d d d «      ƒd {  –—†  t        j                  «       4 ƒd {  –—† }|j                  ‰|«       |j                  ‰|«       d d d «      ƒd {  –—†   |«       ƒ d {  –—†  Œð t        d«      D ]½  }t        |d	z  g«      }t        d
|z  d	z  g«      } ‰|«      ƒ d {  –—†  ‰j
                  j                  «         ‰|«      ƒ d {  –—†  t        j                  «       4 ƒd {  –—† }|j                  ‰|«       |j                  ‰|«       d d d «      ƒd {  –—†   |«       ƒ d {  –—†  Œ¿ 	 d d d «       dd„}	dˆfd„}
t        ||	¬«      5 Š ‰d«      ƒ d {  –—†  ‰j
                  j                  «        t        j                  «       4 ƒd {  –—† }|j                  ‰d«       |j                  |
«       d d d «      ƒd {  –—†   |«       ƒ d {  –—†  ‰j                  «       ƒ d {  –—†  d d d «       dd„}t        ||¬«      5 Š ‰d«      ƒ d {  –—†  ‰j
                  j                  «        t        j                  «       4 ƒd {  –—† }|j                  ‰d«       |j                  ‰j                  «       d d d «      ƒd {  –—†   |«       ƒ d {  –—†  ‰j                  «       ƒ d {  –—†  d d d «       y 7 �Œ¥7 �Œ˜7 �Œq7 �Œe7 �Œ7 �ŒÑ# 1 ƒd {  –—†7  sw Y   �ŒâxY w7 �ŒÍ7 �Œœ# 1 ƒd {  –—†7  sw Y   �Œ­xY w7 �Œ¦7 �Œh7 �ŒA7 �Œ'7 �Œö# 1 ƒd {  –—†7  sw Y   �ŒxY w7 �Œ # 1 sw Y   �ŒýxY w7 �ŒÝ7 �Œ©7 �Œy# 1 ƒd {  –—†7  sw Y   �ŒŠxY w7 �Œƒ7 �Œn# 1 sw Y   �ŒnxY w7 �ŒT7 �Œ 7 Œå# 1 ƒd {  –—†7  sw Y   ŒõxY w7 Œí7 Œ×# 1 sw Y   y xY w­w)Nr   c              “  ól   •K  — t        j                  ‰j                  dd«      «      ƒ d {  –—†  y 7 Œ­w)Nr   é
   )rf   ÚsleepÚuniform)r}   Úrs    €rH   r”   z.test_renegotiation_randomized.<locals>.sleeper‹  s$   øè ø€ Ü�j‰j˜Ÿ™ 1 bÓ)Ó*×*Ò*ús   ƒ)4¬2­4c               “  óR  •K  — ‰j                   j                  «       rat        «       5   ‰d«      ƒ d {  –—†  d d d «       t        «       5   ‰ d«      ƒ d {  –—†  d d d «       ‰j                   j                  «       rŒat        d«       y 7 ŒV# 1 sw Y   ŒUxY w7 ŒA# 1 sw Y   Œ@xY w­w)Nó   -z-- clear --)rú   rœ   r&   r]   )ÚexpectrÄ   r¯   s   €€€rH   Úclearz,test_renegotiation_randomized.<locals>.clearŽ  s’   øè ø€ Ø× Ñ ×4Ñ4Ô6Ü#Ó%ñ !Ù˜4“j× Ð ÷!ä#Ó%ñ #Ù˜T“l×"Ð"÷#ð × Ñ ×4Ñ4Õ6ô
 	ˆmÕð !ø÷!ð !úð #ø÷#ð #üs[   ƒ%B'¨B´BµB¹B'ÁBÁBÁBÁ"B'Á?B'ÂBÂBÂB'ÂBÂB$Â B'c              “  óä   •K  — ‰j                   j                  d«      ƒ d {  –—†  t        d| «       t        «       5  ‰j	                  | «      ƒ d {  –—†  d d d «       y 7 Œ=7 Œ# 1 sw Y   y xY w­w)Nz
outer sendzcalling SSLStream.send_all)rú   r”   r]   r&   r£   )ÚbyterÄ   s    €rH   r¯   z+test_renegotiation_randomized.<locals>.send–  si   øè ø€ Ø× Ñ ×(Ñ(¨Ó6×6Ð6ÜÐ*¨DÔ1ÜÓ!ñ 	#Ø—*‘*˜TÓ"×"Ð"÷	#ð 	#ð 	7øð #ø÷	#ð 	#üs8   ƒA0¢A £A0½A$ÁA"ÁA$Á
A0Á"A$Á$A-Á)A0c              “  ó  •K  — ‰j                   j                  d«      ƒ d {  –—†  t        d| «       t        | «      dk(  sJ ‚t	        «       5  ‰j                  d«      ƒ d {  –—† | k(  sJ ‚	 d d d «       y 7 ŒS7 Œ# 1 sw Y   y xY w­w)Nr   z)calling SSLStream.receive_some, expectingr¤   )rú   r”   r]   r  r&   r­   )ÚexpectedrÄ   s    €rH   r   z-test_renegotiation_randomized.<locals>.expectœ  sƒ   øè ø€ Ø× Ñ ×(Ñ(¨Ó2×2Ð2ÜÐ9¸8ÔDÜ�8‹} Ò!Ð!Ð!ÜÓ!ñ 	7ØŸ™¨Ó*×*¨hÒ6Ð6Ñ6÷	7ð 	7ð 	3øð +ø÷	7ð 	7üs9   ƒB¢A6£*BÁA:Á"A8Á#	A:Á-
BÁ8A:Á:BÁ?BrË   r  éd   éÿ   r   c              “  óV   K  — | dk(  rt        j                  d«      ƒ d {  –—†  y y 7 Œ­w)Nr£   é † ©rf   r  ©Úmethods    rH   Úsleeper_with_slow_send_allzAtest_renegotiation_randomized.<locals>.sleeper_with_slow_send_allÊ  s(   è ø€ Ø�ZÒä—*‘*˜VÓ$×$Ñ$ð  à$ús   ‚) '¡)c               “  ó€   •K  — t        j                  d«      ƒ d {  –—†  ‰ j                  «       ƒ d {  –—†  y 7 Œ7 Œ­w)Néè  )rf   r  r    ©rÄ   s   €rH   Úsleep_then_wait_writablez?test_renegotiation_randomized.<locals>.sleep_then_wait_writableÑ  s4   øè ø€ Ü�j‰j˜Ó×ÐØ×-Ñ-Ó/×/Ñ/ð 	øØ/ús   ƒ>œ:�>´<µ>¼>rÆ   c              “  ó    K  — | dk(  rt        j                  d«      ƒ d {  –—†  y | dk(  rt        j                  d«      ƒ d {  –—†  y y 7 Œ)7 Œ­w)Nr    r)  r   r/  r*  r+  s    rH   Ú*sleeper_with_slow_wait_writable_and_expectzQtest_renegotiation_randomized.<locals>.sleeper_with_slow_wait_writable_and_expectã  sI   è ø€ ØÐ4Ò4ä—*‘*˜VÓ$×$Ñ$Ø�xÒÜ—*‘*˜TÓ"×"Ñ"ð  ð %øà"ús!   ‚A A
¡"AÁAÁAÁAr   rµ   )r#  r°   r�   r‚   )r%  r°   r�   r‚   )r,  rÇ   r�   r‚   )Úautojump_thresholdÚrandomÚRandomrÍ   rR   rú   rž   r  r°   r   rg   rh   rš   r    )Ú
mock_clockrI   r5  r”   r!  r  Úb1Úb2ro   r-  r1  r3  r   r  rÄ   r¯   s               @@@@rH   Útest_renegotiation_randomizedr:  ~  se  ûè ø€ ð %&€JÔ!ãà�‰�aÓ€Aõ+÷õ#õ7ô 
! °WÔ	=ð ÀØ�n‰nÓ×Ðá�4‹j×ÐØ	×Ñ×&Ñ&Ô(Ù�T‹l×Ðá‹g�ˆä�s“ò 
	ˆAÜ˜˜D™�zÓ"ˆBÜ˜˜Q™ $™Ð'Ó(ˆBØ×Ñ×*Ñ*Ô,Ü×)Ñ)Ó+÷ /ð /¨wØ×"Ñ" 4¨Ô,Ø×"Ñ" 6¨2Ô.÷/÷ /ô ×)Ñ)Ó+÷ -ð -¨wØ×"Ñ" 6¨2Ô.Ø×"Ñ" 4¨Ô,÷-÷ -ñ “'�M‰Mð
	ô �s“ò 		ˆAÜ˜˜D™�zÓ"ˆBÜ˜˜Q™ $™Ð'Ó(ˆBÙ�r“(�NˆNØ×Ñ×*Ñ*Ô,Ù˜“*×ÐÜ×)Ñ)Ó+÷ -ð -¨wØ×"Ñ" 6¨2Ô.Ø×"Ñ" 4¨Ô,÷-÷ -ñ “'�M‰Mñ		÷+óN%õ0ô 
! Ð5OÔ	Pð 	ÐTUÙ�4‹j×ÐØ	×Ñ×&Ñ&Ô(Ü×%Ñ%Ó'÷ 	9ð 	9¨7Ø×Ñ˜v tÔ,Ø×ÑÐ7Ô8÷	9÷ 	9ñ ‹g�ˆà�h‰h‹j×Ð÷	ó#ô 
!ØØ:ô
ð ð 
Ù�4‹j×ÐØ	×Ñ×&Ñ&Ô(Ü×%Ñ%Ó'÷ 	@ð 	@¨7Ø×Ñ˜v tÔ,Ø×Ñ˜q×>Ñ>Ô?÷	@÷ 	@ñ ‹g�ˆà�h‰h‹j×Ð÷ð ðM 	ùàùàùàùð/ùð /ù÷ /÷ /ò /úð-ùð -ù÷ -÷ -ò -úð ùð
 ùàùð-ùð -ù÷ -÷ -ò -úð ù÷=ñ úðf 	ùð	9ùð 	9ù÷ 	9÷ 	9ò 	9úð 	ùàù÷	ñ 	úð2 	ùð	@ùð 	@ø÷ 	@÷ 	@ñ 	@úð 	øàø÷ð üs–  †ASÁ
Q/ÁPÁQ/Á.PÁ/)Q/ÂP	ÂQ/Â'PÂ(A%Q/ÄP
ÄQ/Ä%PÄ6Q/ÅPÅQ/ÅP+
ÅQ/Å"%P1ÆQ/ÆP.ÆQ/Æ!QÆ"A Q/Ç"Q
Ç#)Q/ÈQÈQ/È)Q
È*Q/È-%QÉQ/ÉQÉQ/É,Q,É-Q/É4SÊR!ÊQ<Ê 6R!ËQ?ËR!Ë$RË>R!Ì	RÌ
R!ÌRÌR!Ì0RÌ1R!Ì5SÍSÍR.Í6SÎR1ÎSÎ.R6ÏSÏR4ÏSÏSÏSÏ5SÏ6SÏ:	SÐQ/ÐQ/Ð	Q/ÐQ/ÐQ/ÐQ/ÐP(ÐPÐP(Ð#	Q/Ð.Q/Ð1QÐ7P:Ð8QÐ?	Q/Ñ
Q/ÑQ/ÑQ/ÑQ/ÑQ)ÑQÑQ)Ñ$	Q/Ñ/Q9Ñ4SÑ<R!Ñ?R!ÒR!ÒR	ÒRÒR	Ò	R!ÒR!Ò!R+Ò&SÒ.SÒ1SÒ4SÒ6S	Ò<R?Ò=S	ÓSÓSÓSÓSc              ƒ  ó‚  ‡ K  — t         j                  t         j                  t         j                  j                  t         j                  j
                  f      }dd„}dd„}dd„}	 	 	 	 	 	 dˆ fd„} |||«      ƒ d {  –—†   |||«      ƒ d {  –—†   |||«      ƒ d {  –—†   |||«      ƒ d {  –—†  y 7 Œ87 Œ)7 Œ7 Œ­w)Nc              “  ó€   K  — t        «       5  | j                  d«      ƒ d {  –—†  d d d «       y 7 Œ# 1 sw Y   y xY w­w)NrÆ   )r&   r£   r0  s    rH   Údo_send_allz.test_resource_busy_errors.<locals>.do_send_allþ  s;   è ø€ ÜÓ!ñ 	#Ø—*‘*˜TÓ"×"Ð"÷	#ð 	#Ø"ø÷	#ð 	#üó    ‚>�2¢0£2§	>°2²;·>c              “  ó€   K  — t        «       5  | j                  d«      ƒ d {  –—†  d d d «       y 7 Œ# 1 sw Y   y xY w­w©Nr¤   )r&   r­   r0  s    rH   Údo_receive_somez2test_resource_busy_errors.<locals>.do_receive_some  s;   è ø€ ÜÓ!ñ 	$Ø—.‘. Ó#×#Ð#÷	$ð 	$Ø#ø÷	$ð 	$ür>  c              “  ó~   K  — t        «       5  | j                  «       ƒ d {  –—†  d d d «       y 7 Œ# 1 sw Y   y xY w­wr{   )r&   r    r0  s    rH   Ú do_wait_send_all_might_not_blockzCtest_resource_busy_errors.<locals>.do_wait_send_all_might_not_block  s;   è ø€ ÜÓ!ñ 	4Ø×1Ñ1Ó3×3Ð3÷	4ð 	4Ø3ø÷	4ð 	4üs    ‚=�1¡/¢1¦	=¯1±:¶=c              “  ón  •K  — t        ‰«      \  }}t        t        t        j                  d«      «      5  t        j
                  «       4 ƒd {  –—† }|j                  | |«       |j                  ||«       d d d «      ƒd {  –—†  d d d «       y 7 ŒA7 Œ# 1 ƒd {  –—†7  sw Y   ŒxY w# 1 sw Y   y xY w­w)Nzanother task)rÞ   r   r   r   r¾   rg   rh   )rÀ   rÂ   rÄ   r}   ro   rI   s        €rH   rÅ   z*test_resource_busy_errors.<locals>.do_test
  s£   øè ø€ ô (¨
Ó3‰ˆˆ1Üœ¤×!8Ñ!8¸.ÓIÓJñ 	-Ü×)Ñ)Ó+÷ -ð -¨wØ×"Ñ" 5¨!Ô,Ø×"Ñ" 5¨!Ô,÷-÷ -÷	-ð 	-ð-øð -ø÷ -÷ -ñ -ú÷	-ð 	-üsd   ƒ2B5µB)ÁBÁB)Á%BÁ7B)ÂBÂB)Â	B5ÂB)ÂB)ÂB&	ÂBÂB&	Â"B)Â)B2Â.B5)rÄ   ÚSr�   r‚   )rÀ   úCallable[[S], Awaitable[None]]rÂ   rF  r�   r‚   )rf   r"   r   Úabcr   r   )rI   rE  r=  rA  rC  rÅ   s   `     rH   Útest_resource_busy_errorsrH  ù  sÀ   øè ø€ Ü—>‘>Ü×Ñœ4Ÿ8™8×.Ñ.´·±×0FÑ0FÐFÑGñ€Aó#ó$ó4ð-Ø-ð-à-ð-ð 
õ-ñ �+˜{Ó
+×+Ð+Ù
�/ ?Ó
3×3Ð3Ù
�+Ð?Ó
@×@Ð@Ù
Ð2Ð4TÓ
U×UÑUð ,øØ3øØ@øØUúsH   ƒA;B?Á>B7Á?B?ÂB9ÂB?Â B;Â!B?Â1B=Â2B?Â9B?Â;B?Â=B?c               ƒ  óÆ   ‡K  — g Š G ˆfd„dt         «      } t        j                  «       }t         | «       |d¬«      }|j	                  «       ƒ d {  –—†  ‰dgk(  sJ ‚y 7 Œ­w)Nc                  ó4   •— e Zd Zdˆ fd„Zdd„Zddd„Zd	d„Zy)
úEtest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStreamc              “  ó0   •K  — ‰j                  d«       y ­w)NÚok)Úappend)r•   Úrecords    €rH   r    zctest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStream.wait_send_all_might_not_block  s   øè ø€ Ø�M‰M˜$Õùó   ƒc              “  ó    K  — t        d«      ‚­w©NzShould not get called©rE   r™   s    rH   rš   zLtest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStream.aclose"  ó   è ø€ Ü Ð!8Ó9Ð9ùó   ‚Nc              “  ó    K  — t        d«      ‚­wrR  rS  )r•   Ú	max_bytess     rH   r­   zRtest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStream.receive_some%  rT  rU  c              “  ó    K  — t        d«      ‚­wrR  rS  r«   s     rH   r£   zNtest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStream.send_all(  rT  rU  rµ   r{   )rW  r·   r�   zbytes | bytearray)r`   zbytes | bytearray | memoryviewr�   r‚   )r¸   r¹   rº   r    rš   r­   r£   )rO  s   €rH   Ú
NotAStreamrK    s   ø„ õ	 ó	:ô	:ô	:rJ   rY  Úxrr   rM  )r   r;   r<   r"   r    )rY  rG   rÄ   rO  s      @rH   Ú1test_wait_writable_calls_underlying_wait_writabler[    s_   øè ø€ Ø€Fö:”Vô :ô ×
$Ñ
$Ó
&€CÜ‘*“, °SÔ9€AØ
×
)Ñ
)Ó
+×+Ð+Ø�d�VÒÐÑð ,ús   ƒAA!ÁAÁA!Únt)é   r  z)frequently fails on Windows + Python 3.10)Úreasonc              ƒ  ó\  K  — t        | «      4 ƒd {  –—† }t        «       5  |j                  «       ƒ d {  –—†  d d d «       t        «       5  |j                  «       ƒ d {  –—†  d d d «       t        «       5  |j                  «       ƒ d {  –—†  d d d «       t        «       5  |j	                  d«      ƒ d {  –—†  d d d «       t        «       5  |j                  d«      ƒ d {  –—†  d d d «       t        «       5  |j                  d«      ƒ d {  –—†  d d d «       t        «       5  |j                  d«      ƒ d {  –—†  d d d «       t        «       5  |j                  «       ƒ d {  –—†  d d d «       d d d «      ƒd {  –—†  t        | «      4 ƒd {  –—† }|j                  «       ƒ d {  –—†  t        «       5  |j                  «       ƒ d {  –—†  d d d «       d d d «      ƒd {  –—†  y 7 �ŒÙ7 �Œ¹# 1 sw Y   �Œ¹xY w7 �Œž# 1 sw Y   �ŒžxY w7 �Œƒ# 1 sw Y   �ŒƒxY w7 �Œg# 1 sw Y   �ŒgxY w7 �ŒK# 1 sw Y   �ŒKxY w7 �Œ/# 1 sw Y   �Œ/xY w7 �Œ# 1 sw Y   �ŒxY w7 Œ÷# 1 sw Y   ŒöxY w7 Œí# 1 ƒd {  –—†7  sw Y   ŒýxY w7 Œð7 ŒÚ7 Œ¹# 1 sw Y   Œ¸xY w7 Œ¯# 1 ƒd {  –—†7  sw Y   y xY w­w)Ns   xxxr¤   )rt   r&   rR   r    r£   r­   rV   rš   r  s     rH   Útest_checkpointsr`  1  sU  è ø€ ô
 ˜zÓ*÷ ð ¨aÜÓ!ñ 	#Ø—.‘.Ó"×"Ð"÷	#äÓ!ñ 	#Ø—.‘.Ó"×"Ð"÷	#äÓ!ñ 	4Ø×1Ñ1Ó3×3Ð3÷	4äÓ!ñ 	%Ø—*‘*˜VÓ$×$Ð$÷	%äÓ!ñ 	$Ø—.‘. Ó#×#Ð#÷	$ô  Ó!ñ 	$Ø—.‘. Ó#×#Ð#÷	$äÓ!ñ 	$Ø—.‘. Ó#×#Ð#÷	$äÓ!ñ 	Ø—(‘(“*×Ð÷	÷'÷ ô, ˜zÓ*÷ ð ¨aØ�n‰nÓ×ÐÜÓ!ñ 	Ø—(‘(“*×Ð÷	÷÷ ð ð-ùà"ù÷	#ñ 	#úð #ù÷	#ñ 	#úð 4ù÷	4ñ 	4úð %ù÷	%ñ 	%úð $ù÷	$ñ 	$úð $ù÷	$ñ 	$úð $ù÷	$ñ 	$úð ø÷	ð 	úð'ø÷ ÷ ñ úð,øØøàø÷	ð 	úðø÷ ÷ ñ üs  ‚J,’G+“J,–I.¡G1µG.¶G1ºI.ÁHÁ G>Á!HÁ%I.Á7HÂHÂHÂI.Â"H!Â7HÂ8H!Â<I.ÃH1Ã#H.Ã$H1Ã(I.Ã:IÄH>ÄIÄI.Ä&IÄ;IÄ<IÅ I.ÅI Å&IÅ'I Å+I.Å3J,Å>I,Å?J,ÆJÆJ,ÆJÆ*JÆ+JÆ9J	ÇJÇJ	ÇJÇJ,Ç%JÇ&J,Ç.G1Ç1G;	Ç6I.Ç>HÈH	ÈI.ÈHÈH	ÈI.ÈH!È!H+	È&I.È.H1È1H;	È6I.È>IÉI	ÉI.ÉIÉI	ÉI.ÉI É I)	É%I.É,J,É.J É4I7É5J É<J,ÊJÊJ	Ê	J	ÊJÊJ,ÊJ)ÊJ ÊJ)Ê%J,c              ƒ  óL  K  — t        | «      4 ƒd {  –—† }|j                  «       ƒ d {  –—†  t        «       5  |j                  d«      ƒ d {  –—†  d d d «       t        «       5  |j                  d«      ƒ d {  –—†  d d d «       |j                  d«      ƒ d {  –—†  |j	                  d«      ƒ d {  –—† dk(  sJ ‚|j                  «       ƒ d {  –—†  d d d «      ƒd {  –—†  y 7 ŒÔ7 Œ¾7 Œœ# 1 sw Y   Œ›xY w7 Œ~# 1 sw Y   Œ}xY w7 Œk7 ŒT7 Œ97 Œ+# 1 ƒd {  –—†7  sw Y   y xY w­w)NrJ   rÆ   r¤   )rt   rR   r&   r£   r­   rš   r  s     rH   Útest_send_all_empty_stringrb  R  s   è ø€ Ü˜zÓ*÷ ð ¨aØ�n‰nÓ×Ðô  Ó!ñ 	"Ø—*‘*˜S“/×!Ð!÷	"äÓ!ñ 	"Ø—*‘*˜S“/×!Ð!÷	"à�j‰j˜Ó×ÐØ—^‘^ AÓ&×&¨$Ò.Ð.Ð.à�h‰h‹j×Ð÷÷ ñ øØøð
 "ø÷	"ð 	"úð "ø÷	"ð 	"úàøØ&øàøðø÷ ÷ ñ üs×   ‚D$’C'“D$–DªC)«D¹C-ÁC+ÁC-ÁDÁ%C;Á:C9Á;C;Á?DÂDÂDÂ4D	Â5DÃDÃDÃD$Ã!DÃ"D$Ã)DÃ+C-Ã-C6	Ã2DÃ9C;Ã;D	Ä DÄ	DÄDÄD$ÄD!ÄDÄD!ÄD$Úhttps_compatibleTc              ƒ  óV   ‡ ‡K  — dˆ ˆfd„}dˆ fd„}t        ||«      ƒ d {  –—†  y 7 Œ­w)Nc               “  ó0   •K  — t        ‰ d‰id‰i¬«      S ­w)Nrc  rÎ   )rÛ   )rI   rc  s   €€rH   Ústream_makerz,test_SSLStream_generic.<locals>.stream_makerg  s+   øè ø€ ô &ØØ-Ð/?Ð@Ø-Ð/?Ð@ô
ð 	
ùrP  c               “  ó.  •K  — t        ‰«      \  } }t        j                  «       4 ƒd {  –—† }|j                  | j                  «       |j                  |j                  «       d d d «      ƒd {  –—†  | |fS 7 ŒN7 Œ
# 1 ƒd {  –—†7  sw Y   | |fS xY w­wr{   )rÞ   r   rg   rh   rR   )rð   Úserverro   rI   s      €rH   Úclogged_stream_makerz4test_SSLStream_generic.<locals>.clogged_stream_makerq  s–   øè ø€ ô 2°*Ó=‰ˆ�ô ×%Ñ%Ó'÷ 	4ð 	4¨7Ø×Ñ˜v×2Ñ2Ô3Ø×Ñ˜v×2Ñ2Ô3÷	4÷ 	4ð �vˆ~Ðð	4øð 	4ø÷ 	4÷ 	4ð 	4ð �vˆ~ÐüsD   ƒ'BªA9«B®7A=Á%BÁ0A;Á1	BÁ;BÁ=BÂBÂBÂ
B)r�   úEtuple[SSLStream[MemoryStapledStream], SSLStream[MemoryStapledStream]])r�   ú=tuple[SSLStream[MyStapledStream], SSLStream[MyStapledStream]])r'   )rI   rc  rf  ri  s   ``  rH   Útest_SSLStream_genericrl  b  s$   ùè ø€ ö

õô  ˜|Ð-AÓ
B×BÒBús   „)¡'¢)c              ƒ  óf  ‡‡‡‡‡K  — t        | «      \  ŠŠ‰j                  Š‰j                  Št        «       Šdˆˆˆfd„}dˆˆˆfd„}t        j                  «       4 ƒd {  –—† }|j                  |«       |j                  |«       d d d «      ƒd {  –—†  y 7 Œ77 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)Nc               “  ó(  •K  — ‰j                  «       ƒ d {  –—†  ‰j                  d«      ƒ d {  –—†  ‰j                  d«      ƒ d {  –—† dk(  sJ ‚‰j                  d«      ƒ d {  –—†   ‰d«      4 ƒd {  –—†  ‰j                  j                  } d ‰j                  _        d d d «      ƒd {  –—†  ‰j                  d«      ƒ d {  –—† dk(  sJ ‚‰j
                  ‰u sJ ‚‰j                  «       ƒ d {  –—† \  }}|‰u sJ ‚|dk(  sJ ‚‰j
                  �J ‚|j                  d«      ƒ d {  –—†   ‰j                  _        ‰j                  j	                  «       ƒ d {  –—†  y 7 �ŒN7 �Œ87 �Œ"7 �Œ7 Œø7 ŒÃ# 1 ƒd {  –—†7  sw Y   ŒÓxY w7 ŒÁ7 Œ–7 Œa7 Œ0­w)NrÆ   r¤   rí   rî   r   rJ   ó   trailing)rR   r£   r­   Úsend_streamÚsend_all_hookrú   rV   )rq  ÚrawÚtrailingrÔ   rÒ   Úseqs      €€€rH   rð   ztest_unwrap.<locals>.client‹  s�  øè ø€ Ø×%Ñ%Ó'×'Ð'Ø×!Ñ! $Ó'×'Ð'Ø×,Ñ,¨QÓ/×/°4Ò7Ð7Ð7Ø×!Ñ! $Ó'×'Ð'ñ
 �q“6÷ 	>ñ 	>Ø,×8Ñ8×FÑFˆMØ9=Ð×(Ñ(Ô6÷	>÷ 	>ð  ×,Ñ,¨QÓ/×/°3Ò6Ð6Ð6Ø×*Ñ*Ð.>Ñ>Ð>Ð>à(×/Ñ/Ó1×1‰ˆˆXØÐ&Ñ&Ð&Ð&Ø˜3ŠÐˆØ×*Ñ*Ð2Ð2Ð2Ø�l‰l˜;Ó'×'Ð'ð 6CÐ×$Ñ$Ô2Ø×*Ñ*×8Ñ8Ó:×:Ñ:ð1 	(ùØ'ùØ/ùØ'ùð
	>øð 	>ø÷ 	>÷ 	>ñ 	>úð 0øð 2øð 	(øð
 	;úsÍ   ƒF—E%˜F°E(±FÁ	E+Á
FÁ'E.Á(FÁ8E1Á9FÁ<(E5Â$FÂ/E3Â0FÃF
Ã	,FÃ5FÃ66FÄ,FÄ-2FÅFÅ FÅ(FÅ+FÅ.FÅ1FÅ3FÅ5FÅ;E>Å<FÆFÆFÆFÆFc               “  óÜ  •K  — ‰j                  «       ƒ d {  –—†  ‰j                  d«      ƒ d {  –—† dk(  sJ ‚‰j                  d«      ƒ d {  –—†  ‰j                  d«      ƒ d {  –—† dk(  sJ ‚ ‰d«      4 ƒd {  –—†  ‰j                  «       ƒ d {  –—† \  } }d d d «      ƒd {  –—†   ‰u sJ ‚dk(  sJ ‚‰j                  �J ‚y 7 Œ±7 Œš7 Œ~7 Œg7 ŒS7 Œ=7 Œ,# 1 ƒd {  –—†7  sw Y   Œ<xY w­w)Nr¤   rÆ   rí   rî   ro  )rR   r­   r£   rV   rú   )rr  rs  rt  rÕ   rÓ   s     €€€rH   rh  ztest_unwrap.<locals>.server¦  s÷   øè ø€ Ø×%Ñ%Ó'×'Ð'Ø×,Ñ,¨QÓ/×/°4Ò7Ð7Ð7Ø×!Ñ! $Ó'×'Ð'Ø×,Ñ,¨QÓ/×/°4Ò7Ð7Ð7ñ
 �q“6÷ 	6ñ 	6Ø",×"3Ñ"3Ó"5×5‰MˆC�÷	6÷ 	6àÐ&Ñ&Ð&Ð&Ø˜;Ò&Ð&Ð&Ø×*Ñ*Ð2Ð2Ñ2ð 	(øØ/øØ'øØ/øð
	6øØ5øð	6ø÷ 	6÷ 	6ñ 	6üs�   ƒC,—C	˜C,°C±C,ÁCÁC,Á'CÁ(C,Á=CÁ>C,ÂCÂCÂCÂC,Â(CÂ)!C,ÃC,ÃC,ÃC,ÃC,ÃCÃC,ÃC)ÃC ÃC)Ã%C,rµ   )rÛ   rú   r%   r   rg   rh   )	rI   rð   rh  ro   rÔ   rÒ   rt  rÕ   rÓ   s	       @@@@@rH   Útest_unwraprv  „  sš   üè ø€ Ü3°JÓ?Ñ€J�
Ø!×2Ñ2ÐØ!×2Ñ2Ðä
‹+€C÷;÷63ô ×!Ñ!Ó#÷ #ð # wØ×Ñ˜6Ô"Ø×Ñ˜6Ô"÷#÷ #ñ #øð #ø÷ #÷ #ñ #üsH   ‡AB1Á BÁ!B1Á$#BÂB1ÂBÂB1ÂB1ÂB.Â"B%Â#B.Â*B1c              ƒ  ó  ‡‡K  — t        | «      \  ŠŠ‰j                  }dˆfd„}dˆfd„}t        j                  «       4 ƒd {  –—† }|j	                  |«       |j	                  |«       d d d «      ƒd {  –—†  t        j                  t        «      5  |j                  d«      ƒ d {  –—†  d d d «       t        «       5  ‰j                  «       ƒ d {  –—†  d d d «       t        «       5  ‰j                  «       ƒ d {  –—†  d d d «       t        j                  t        «      5  ‰j                  d«      ƒ d {  –—†  d d d «       t        j                  t        «      5  ‰j                  d«      ƒ d {  –—† dk(  sJ ‚	 d d d «       t        j                  t        «      5  ‰j                  «       ƒ d {  –—†  d d d «       t        j                  t        «      5  ‰j                  «       ƒ d {  –—†  d d d «       t        | «      \  ŠŠdˆfd„}t        j                  «       4 ƒd {  –—† }|j	                  ‰j                  «       |j	                  |«       d d d «      ƒd {  –—†  y 7 �Œ&7 �Œ÷# 1 ƒd {  –—†7  sw Y   �ŒxY w7 �ŒÝ# 1 sw Y   �ŒÝxY w7 �ŒÂ# 1 sw Y   �ŒÂxY w7 �Œ§# 1 sw Y   �Œ§xY w7 �Œ|# 1 sw Y   �Œ|xY w7 �ŒQ# 1 sw Y   �ŒKxY w7 �Œ!# 1 sw Y   �Œ!xY w7 Œö# 1 sw Y   ŒõxY w7 ŒË7 Œ‘# 1 ƒd {  –—†7  sw Y   y xY w­w)Nc               “  ó€   •K  — t        «       5  ‰ j                  «       ƒ d {  –—†  d d d «       y 7 Œ# 1 sw Y   y xY w­wr{   )r&   rš   )rÔ   s   €rH   Úclient_closerz-test_closing_nice_case.<locals>.client_closerÂ  s<   øè ø€ ÜÓ!ñ 	&Ø×#Ñ#Ó%×%Ð%÷	&ð 	&Ø%ø÷	&ð 	&üs    ƒ>Ž2¢0£2§	>°2²;·>c               “  ó   •K  — ‰ j                  d«      ƒ d {  –—† dk(  sJ ‚‰ j                  d«      ƒ d {  –—† dk(  sJ ‚t        «       5  ‰ j                  «       ƒ d {  –—†  d d d «       y 7 ŒS7 Œ77 Œ# 1 sw Y   y xY w­w©Nr  rJ   )r­   r&   rš   ©rÕ   s   €rH   Úserver_closerz-test_closing_nice_case.<locals>.server_closerÆ  s~   øè ø€ Ø×,Ñ,¨RÓ0×0°CÒ7Ð7Ð7Ø×,Ñ,¨RÓ0×0°CÒ7Ð7Ð7ÜÓ!ñ 	&Ø×#Ñ#Ó%×%Ð%÷	&ð 	&ð 1øØ0øà%ø÷	&ð 	&üsI   ƒA>˜A,™A>¶A.·A>Á
A2ÁA0ÁA2Á#
A>Á.A>Á0A2Á2A;Á7A>s   123r  rJ   c               “  ó   •K  — t        «       5  ‰ j                  d«      ƒ d {  –—† dk(  sJ ‚	 d d d «       t        «       5  ‰ j                  «       ƒ d {  –—†  d d d «       y 7 Œ># 1 sw Y   Œ7xY w7 Œ# 1 sw Y   y xY w­wr{  )r&   r­   rš   r|  s   €rH   Úexpect_eof_serverz1test_closing_nice_case.<locals>.expect_eof_serverí  s{   øè ø€ ÜÓ!ñ 	<Ø#×0Ñ0°Ó4×4¸Ò;Ð;Ñ;÷	<äÓ!ñ 	&Ø×#Ñ#Ó%×%Ð%÷	&ð 	&ð 5ø÷	<ð 	<úð &ø÷	&ð 	&üsU   ƒA>ŽA$£A"¤	A$®A>Á A2ÁA0ÁA2Á	A>Á"A$Á$A-Á)A>Á0A2Á2A;Á7A>rµ   )rÛ   rú   r   rg   rh   rà   rá   r   r£   r&   rš   r­   rV   rR   )rI   rÒ   ry  r}  ro   r  rÔ   rÕ   s         @@rH   Útest_closing_nice_caser€  º  sª  ùè ø€ ô 4°JÓ?Ñ€J�
Ø!×2Ñ2Ðõ&õ&ô ×!Ñ!Ó#÷ *ð * wØ×Ñ˜=Ô)Ø×Ñ˜=Ô)÷*÷ *ô
 
�‰Ô*Ó	+ñ 0Ø×'Ñ'¨Ó/×/Ð/÷0ô 
Ó	ñ "Ø×ÑÓ!×!Ð!÷"ä	Ó	ñ "Ø×ÑÓ!×!Ð!÷"ô 
�‰Ô*Ó	+ñ *Ø×!Ñ! &Ó)×)Ð)÷*ô
 
�‰Ô*Ó	+ñ 8Ø×,Ñ,¨RÓ0×0°CÒ7Ð7Ñ7÷8ô 
�‰Ô*Ó	+ñ "Ø×ÑÓ!×!Ð!÷"ô 
�‰Ô*Ó	+ñ (Ø×%Ñ%Ó'×'Ð'÷(ô
 4°JÓ?Ñ€J�
õ&ô ×!Ñ!Ó#÷ .ð . wØ×Ñ˜:×,Ñ,Ô-Ø×ÑÐ,Ô-÷.÷ .ð .ðO*ùð *ù÷ *÷ *ò *úð 	0ù÷0ñ 0úð
 	"ù÷"ñ "úð 	"ù÷"ñ "úð
 	*ù÷*ñ *úð 1ù÷8ñ 8úð 	"ù÷"ñ "úð 	(ø÷(ð (úð.øð .ø÷ .÷ .ñ .üs¯  „?LÁI)ÁLÁ#I/Á*LÁ5I,Á6LÂJÂ(JÂ)JÂ-LÂ?JÃJÃJÃLÃ*J(Ã>J%Ã?J(Ä!LÄ$J8Ä9J5Ä:J8Ä>!LÅKÅ4KÅ5	KÅ?!LÆ KÆ4KÆ5KÆ9!LÇK'Ç.K%Ç/K'Ç34LÈ'K3È(LÈ+-K7ÉLÉ#K5É$LÉ,LÉ/JÉ5I8É6JÉ=LÊJÊJÊLÊJÊJ"ÊLÊ%J(Ê(J2Ê-LÊ5J8Ê8KÊ=LËKËKËLËKËK"ËLË%K'Ë'K0Ë,LË5LË7L	Ë=L Ë>L	ÌLc              ƒ  óD  ‡K  — t        | «      \  }}t        j                  «       4 ƒd {  –—† }|j                  |j                  «       |j                  |j                  «       d d d «      ƒd {  –—†  dd„}||j
                  j                  _        t        j                  t        «      5  |j                  d«      ƒ d {  –—†  d d d «       t        j                  t        «      5  |j                  «       ƒ d {  –—†  d d d «       dŠdˆfd„}||j
                  j                  _        ||j
                  j                  _        |j!                  «       ƒ d {  –—†  ‰dk(  sJ ‚y 7 �Œ=7 Œù# 1 ƒd {  –—†7  sw Y   �Œ
xY w7 Œ¿# 1 sw Y   Œ¾xY w7 Œ“# 1 sw Y   Œ’xY w7 ŒC­w)Nc               “  ó   K  — t         ‚­wr{   ©ÚKeyErrorr|   rJ   rH   Úbad_hookz3test_send_all_fails_in_the_middle.<locals>.bad_hookÿ  ó   è ø€ Üˆùó   ‚	rÆ   r   c                 ó   •— ‰ dz  Š y r@  r|   )Úcloseds   €rH   Ú
close_hookz5test_send_all_fails_in_the_middle.<locals>.close_hook  s   ø€ à�!‰‰rJ   r   ©r�   r   rµ   )rÛ   r   rg   rh   rR   rú   rp  rq  rà   rá   r„  r£   r   r    rŠ  Úreceive_streamrš   )rI   rð   rh  ro   r…  rŠ  r‰  s         @rH   Ú!test_send_all_fails_in_the_middler�  ø  sc  øè ø€ Ü+¨JÓ7�N€FˆFä×!Ñ!Ó#÷ 0ð 0 wØ×Ñ˜6×.Ñ.Ô/Ø×Ñ˜6×.Ñ.Ô/÷0÷ 0óð 9A€F×Ñ×'Ñ'Ô5ä	�‰”xÓ	 ñ $Ø�o‰o˜dÓ#×#Ð#÷$ô 
�‰Ô*Ó	+ñ 5Ø×2Ñ2Ó4×4Ð4÷5ð €Fõð 6@€F×Ñ×'Ñ'Ô2Ø8B€F×Ñ×*Ñ*Ô5Ø
�-‰-‹/×Ðà�QŠ;Ð‰;ð30ùð 0ø÷ 0÷ 0ò 0úð 	$ø÷$ð $úð 	5ø÷5ð 5úð ús¥   ƒ'F ªE'«F ®7E,Á%F Á0E*Á1<F Â-FÃFÃFÃ!F Ã(FÃ<FÃ=FÄAF ÅFÅF Å*F Å,E?Å2E5Å3E?Å:F ÆFÆFÆ	F ÆFÆFÆF c              ƒ  ó’  ‡‡	K  — t        «       \  }}t        || d¬«      }t        |t        d¬«      }t        || d¬«      Št        |t        d¬«      Š	dˆfd„}dˆ	fd„}t        j                  «       4 ƒd {  –—† }|j                  |«       |j                  |«       d d d «      ƒd {  –—†  y 7 Œ77 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)Nr2   rr   Trë   c               “  ó„   •K  — ‰ j                  d«      ƒ d {  –—†  ‰ j                  d«      ƒ d {  –—† dk(  sJ ‚y 7 Œ#7 Œ­w)Nó   hir  ó   bye)r£   r­   )Úclient_2s   €rH   rð   z!test_ssl_over_ssl.<locals>.client(  s@   øè ø€ Ø×Ñ Ó&×&Ð&Ø×*Ñ*¨2Ó.×.°&Ò8Ð8Ñ8ð 	'øØ.ús   ƒA ˜<™A ±>²A ¾A c               “  ó„   •K  — ‰ j                  d«      ƒ d {  –—† dk(  sJ ‚‰ j                  d«      ƒ d {  –—†  y 7 Œ#7 Œ­w)Nr  r�  r‘  )r­   r£   )Úserver_2s   €rH   rh  z!test_ssl_over_ssl.<locals>.server,  s@   øè ø€ Ø×*Ñ*¨2Ó.×.°%Ò7Ð7Ð7Ø×Ñ Ó'×'Ñ'ð /øØ'ús   ƒA ˜<™A ¶>·A ¾A rµ   )r)   r"   rP   r   rg   rh   )
rI   Úclient_0Úserver_0Úclient_1Úserver_1rð   rh  ro   r’  r”  s
           @@rH   Útest_ssl_over_sslr™    s¿   ùè ø€ Ü+Ó-Ñ€HˆhäØØØ1ô€Hô
 ˜¤:¸4Ô@€HäØØØ1ô€Hô
 ˜¤:¸4Ô@€Hõ9õ(ô ×!Ñ!Ó#÷ #ð # wØ×Ñ˜6Ô"Ø×Ñ˜6Ô"÷#÷ #ñ #øð #ø÷ #÷ #ñ #üsH   „A2CÁ6B.Á7CÁ:#B2ÂCÂ(B0Â)CÂ0CÂ2CÂ8B;Â9CÃ Cc              ƒ  ó¶  K  — t        | «      \  }}t        j                  «       4 ƒd {  –—† }|j                  |j                  «       |j                  |j                  «       d d d «      ƒd {  –—†  t        j                  |«      ƒ d {  –—†  t        j                  t        «      5  |j                  d«      ƒ d {  –—†  d d d «       t        j                  t        «      5  |j                  d«      ƒ d {  –—†  d d d «       |j                  «       ƒ d {  –—†  y 7 Œö7 Œ²# 1 ƒd {  –—†7  sw Y   ŒÂxY w7 Œ¬7 Œ{# 1 sw Y   ŒzxY w7 ŒN# 1 sw Y   ŒMxY w7 Œ<­w)Nr  ó
   xxxxxxxxxx)rÛ   r   rg   rh   rR   rf   r   rà   rá   r   r­   r£   rš   ©rI   rð   rh  ro   s       rH   Útest_ssl_bad_shutdownr�  5  s"  è ø€ Ü+¨JÓ7�N€FˆFä×!Ñ!Ó#÷ 0ð 0 wØ×Ñ˜6×.Ñ.Ô/Ø×Ñ˜6×.Ñ.Ô/÷0÷ 0ô ×
 Ñ
  Ó
(×(Ð(ä	�‰Ô*Ó	+ñ &Ø×!Ñ! "Ó%×%Ð%÷&ä	�‰Ô*Ó	+ñ )Ø�o‰o˜iÓ(×(Ð(÷)ð �-‰-‹/×Ñð0øð 0ø÷ 0÷ 0ñ 0úð )øð 	&ø÷&ð &úð 	)ø÷)ð )úð ús°   ‚'E©D ªE­7D$Á$EÁ/D"Á0EÂD9ÂEÂ*D=Â?D;Ã D=Ã!EÃ%EÃ:E	Ã;EÃ?EÄEÄEÄ"EÄ$D6Ä*D-Ä+D6Ä2EÄ;D=Ä=EÅEÅ	EÅEÅEc              ƒ  ór  K  — t        | ddiddi¬«      \  }}t        j                  «       4 ƒd {  –—† }|j                  |j                  «       |j                  |j                  «       d d d «      ƒd {  –—†  t        j                  |«      ƒ d {  –—†  |j                  d«      ƒ d {  –—† dk(  sJ ‚t        j                  t        «      5  |j                  d«      ƒ d {  –—†  d d d «       |j                  «       ƒ d {  –—†  y 7 ŒÙ7 Œ•# 1 ƒd {  –—†7  sw Y   Œ¥xY w7 Œ�7 Œx7 ŒB# 1 sw Y   ŒAxY w7 Œ0­w)Nrc  T©rÐ   rÏ   r  rJ   r›  )rÛ   r   rg   rh   rR   rf   r   r­   rà   rá   r   r£   rš   rœ  s       rH   Ú test_ssl_bad_shutdown_but_its_okr   F  s  è ø€ Ü+ØØ)¨4Ð0Ø)¨4Ð0ô�N€FˆFô ×!Ñ!Ó#÷ 0ð 0 wØ×Ñ˜6×.Ñ.Ô/Ø×Ñ˜6×.Ñ.Ô/÷0÷ 0ô ×
 Ñ
  Ó
(×(Ð(à×$Ñ$ RÓ(×(¨CÒ/Ð/Ð/Ü	�‰Ô*Ó	+ñ )Ø�o‰o˜iÓ(×(Ð(÷)ð �-‰-‹/×Ñð0øð 0ø÷ 0÷ 0ñ 0úð )øà(øà(ø÷)ð )úð ús˜   ‚.D7°D
±D7´7DÁ+D7Á6DÁ7D7ÂD#ÂD7Â,D%Â-"D7ÃD)Ã$D'Ã%D)Ã)D7ÄD5ÄD7ÄD7ÄD ÄDÄD ÄD7Ä%D7Ä'D)Ä)D2Ä.D7c               ƒ  ó\  K  — t        d¬«      4 ƒd {  –—† } t        j                  «       }t        | |d¬«      }t	        j
                  t        «      5  |j                  «       ƒ d {  –—†  d d d «       d d d «      ƒd {  –—†  y 7 Œq7 Œ# 1 sw Y   ŒxY w7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)NTrK   r2   rr   )rp   r;   r<   r"   rà   rá   r   rš   )r^   rI   rÄ   s      rH   Ú(test_ssl_handshake_failure_during_acloser¢  Z  s—   è ø€ ô
 #¨tÔ4÷ ð ¸ä×/Ñ/Ó1ˆ
Ü�d˜JÐ8QÔRˆô �]‰]Ô.Ó/ñ 	Ø—(‘(“*×Ð÷	÷÷ ñ øð ø÷	ð 	úðø÷ ÷ ñ üsn   ‚B,“B”B,—<BÁB	Á'BÁ(B	Á,BÁ4B,Á?BÂ B,ÂB	Â	B	ÂBÂB,ÂB)ÂB ÂB)Â%B,c              ƒ  óJ  ‡‡K  — t        | «      \  }}t        j                  «       4 ƒd {  –—† }|j                  |j                  «       |j                  |j                  «       d d d «      ƒd {  –—†  |j
                  j                  j                  ŠdŠdˆˆfd„}||j
                  j                  _        t        j                  t        «      5  |j                  «       ƒ d {  –—†  d d d «       ‰dk(  sJ ‚y 7 ŒÐ7 ŒŒ# 1 ƒd {  –—†7  sw Y   ŒœxY w7 Œ-# 1 sw Y   Œ,xY w­w)Nr   c                 ó0   •— ‰ €J ‚ ‰ «        ‰dz  Št         ‚r@  rƒ  )Úclient_orig_close_hookÚtransport_close_counts   €€rH   rŠ  z4test_ssl_only_closes_stream_once.<locals>.close_hooky  s%   ø€ à%Ð1Ð1Ð1ÙÔ Ø Ñ"ÐÜˆrJ   r¤   r‹  )rÛ   r   rg   rh   rR   rú   rp  rŠ  rà   rá   r„  rš   )rI   rð   rh  ro   rŠ  r¥  r¦  s        @@rH   Ú test_ssl_only_closes_stream_oncer§  m  sü   ùè ø€ ô ,¨JÓ7�N€FˆFä×!Ñ!Ó#÷ 0ð 0 wØ×Ñ˜6×.Ñ.Ô/Ø×Ñ˜6×.Ñ.Ô/÷0÷ 0ð $×4Ñ4×@Ñ@×KÑKÐØÐöð 6@€F×Ñ×'Ñ'Ô2ä	�‰”xÓ	 ñ Ø�m‰m‹o×Ð÷à  AÒ%Ð%Ñ%ð%0øð 0ø÷ 0÷ 0ñ 0úð" 	ø÷ð üso   „'D#«C<¬D#¯7D Á&D#Á1C>Á2A!D#ÃDÃ'DÃ(DÃ,D#Ã>D#Ä DÄD	ÄDÄD#ÄDÄD ÄD#c              ƒ  ó   ‡K  — t        | ddiddi¬«      \  }Št        j                  «       4 ƒd {  –—† }|j                  |j                  «       |j                  ‰j                  «       d d d «      ƒd {  –—†  dˆfd„}t        j                  «       4 ƒd {  –—† }|j                  |j
                  «       |j                  |«       d d d «      ƒd {  –—†  y 7 Œª7 Œf# 1 ƒd {  –—†7  sw Y   ŒvxY w7 ŒZ7 Œ # 1 ƒd {  –—†7  sw Y   y xY w­w)Nrc  FTrŸ  c               “  óâ   •K  — t        j                  t        «      5 } ‰j                  d«      ƒ d {  –—†  d d d «       t	         j
                  j                  «      sJ ‚y 7 Œ.# 1 sw Y   Œ-xY w­w)Nr  )rà   rá   r   r­   r#   rã   rä   )rè   rh  s    €rH   Úreceive_and_expect_errorzKtest_ssl_https_compatibility_disagreement.<locals>.receive_and_expect_error”  s^   øè ø€ Ü�]‰]Ô.Ó/ð 	*°7Ø×%Ñ% bÓ)×)Ð)÷	*ô �w—}‘}×.Ñ.Ô/Ð/Ñ/ð *ø÷	*ð 	*üs+   ƒA/�A#²A!³A#·*A/Á!A#Á#A,Á(A/rµ   )rÛ   r   rg   rh   rR   rš   )rI   rð   ro   rª  rh  s       @rH   Ú)test_ssl_https_compatibility_disagreementr«  ‡  sú   øè ø€ Ü+ØØ)¨5Ð1Ø)¨4Ð0ô�N€FˆFô ×!Ñ!Ó#÷ 0ð 0 wØ×Ñ˜6×.Ñ.Ô/Ø×Ñ˜6×.Ñ.Ô/÷0÷ 0õ0ô ×!Ñ!Ó#÷ 5ð 5 wØ×Ñ˜6Ÿ=™=Ô)Ø×ÑÐ3Ô4÷5÷ 5ð 5ð0øð 0ø÷ 0÷ 0ñ 0úð5øð 5ø÷ 5÷ 5ñ 5üs†   ƒ.D±C²Dµ7C Á,DÁ7CÁ8"DÂC5ÂDÂ-C9ÃDÃC7ÃDÃDÃ C2Ã&C)Ã'C2Ã.DÃ7DÃ9DÃ?DÄ DÄDc              ƒ  ó(  ‡K  — t        | ddiddi¬«      \  }Šdˆfd„}t        j                  «       4 ƒd {  –—† }|j                  |j                  «       |j                  |«       d d d «      ƒd {  –—†  y 7 ŒA7 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)Nrc  TrŸ  c               “  óN   •K  — ‰ j                  d«      ƒ d {  –—† dk(  sJ ‚y 7 Œ
­wr{  )r­   )rh  s   €rH   Úserver_expect_clean_eofzEtest_https_mode_eof_before_handshake.<locals>.server_expect_clean_eof¦  s&   øè ø€ Ø×(Ñ(¨Ó,×,°Ò3Ð3Ñ3Ð,ús   ƒ%˜#™%rµ   )rÛ   r   rg   rh   rš   )rI   rð   r®  ro   rh  s       @rH   Ú$test_https_mode_eof_before_handshaker¯  Ÿ  s�   øè ø€ Ü+ØØ)¨4Ð0Ø)¨4Ð0ô�N€FˆFõ4ô ×!Ñ!Ó#÷ 4ð 4 wØ×Ñ˜6Ÿ=™=Ô)Ø×ÑÐ2Ô3÷4÷ 4ñ 4øð 4ø÷ 4÷ 4ñ 4üsD   ƒ4B·A9¸B»-A=Á(BÁ3A;Á4BÁ;BÁ=BÂBÂBÂBc              ƒ  ó  K  — t        | «      \  }}dd„}||j                  j                  _        t	        j
                  t        «      5  t        «       5  |j                  «       ƒ d {  –—†  d d d «       d d d «       t	        j
                  t        «      5  t        «       5  |j                  «       ƒ d {  –—†  d d d «       d d d «       y 7 Œb# 1 sw Y   ŒaxY w# 1 sw Y   ŒexY w7 Œ/# 1 sw Y   Œ.xY w# 1 sw Y   y xY w­w)Nc               “  ó   K  — t         ‚­wr{   rƒ  r|   rJ   rH   r…  z2test_send_error_during_handshake.<locals>.bad_hook±  r†  r‡  r‹  )
rÛ   rú   rp  rq  rà   rá   r„  r&   rR   r   )rI   rð   Ú_serverr…  s       rH   Ú test_send_error_during_handshaker³  ®  sß   è ø€ Ü,¨ZÓ8�O€FˆGóð 9A€F×Ñ×'Ñ'Ô5ä	�‰”xÓ	 ñ (ÜÓ!ñ 	(Ø×%Ñ%Ó'×'Ð'÷	(÷(ô 
�‰Ô*Ó	+ñ (ÜÓ!ñ 	(Ø×%Ñ%Ó'×'Ð'÷	(÷(ð (ð (ø÷	(ð 	(ú÷(ð (úð (ø÷	(ð 	(ú÷(ð (üsŠ   ‚AC?Á	CÁCÁ(CÁ)CÁ-CÁ5!C?ÂC3Â!C'Â5C%Â6C'Â:C3Ã	C?ÃCÃC	ÃCÃC"ÃC?Ã%C'Ã'C0	Ã,C3Ã3C<Ã8C?c              ƒ  ó<  ‡K  — t        | «      \  Š}dd„}|‰j                  j                  _        dˆfd„}t	        j
                  «       4 ƒd {  –—† }|j                  ||j                  «       |j                  |j                  «       d d d «      ƒd {  –—†  t        j                  t        «      5  t        «       5  ‰j                  «       ƒ d {  –—†  d d d «       d d d «       y 7 Œ™7 ŒT# 1 ƒd {  –—†7  sw Y   ŒdxY w7 Œ.# 1 sw Y   Œ-xY w# 1 sw Y   y xY w­w)Nc               “  ó   K  — t         ‚­wr{   rƒ  r|   rJ   rH   r…  z5test_receive_error_during_handshake.<locals>.bad_hookÂ  r†  r‡  c              “  óü   •K  — t        j                  t        «      5  t        «       5  ‰j	                  «       ƒ d {  –—†  d d d «       d d d «       | j                  «        y 7 Œ%# 1 sw Y   Œ$xY w# 1 sw Y   Œ(xY w­wr{   )rà   rá   r„  r&   rR   Úcancel)Úcancel_scoperð   s    €rH   Úclient_sidez8test_receive_error_during_handshake.<locals>.client_sideÇ  sh   øè ø€ Ü�]‰]œ8Ó$ñ 	,Ü#Ó%ñ ,Ø×)Ñ)Ó+×+Ð+÷,÷	,ð 	×ÑÕð ,ø÷,ð ,ú÷	,ð 	,üsC   ƒA<�A0¨A$¼A"½A$ÁA0Á	A<Á"A$Á$A-	Á)A0Á0A9Á5A<r‹  )r¸  r1   r�   r‚   )rÛ   rú   rŒ  Úreceive_some_hookr   rg   rh   r¸  rR   rà   rá   r   r&   )rI   rh  r…  r¹  ro   rð   s        @rH   Ú#test_receive_error_during_handshaker»  ¿  sü   øè ø€ Ü+¨JÓ7�N€FˆFóð @H€F×Ñ×*Ñ*Ô<õô ×!Ñ!Ó#÷ 0ð 0 wØ×Ñ˜;¨×(<Ñ(<Ô=Ø×Ñ˜6×.Ñ.Ô/÷0÷ 0ô 
�‰Ô*Ó	+ñ (ÜÓ!ñ 	(Ø×%Ñ%Ó'×'Ð'÷	(÷(ð (ð	0øð 0ø÷ 0÷ 0ñ 0úð (ø÷	(ð 	(ú÷(ð (üsŠ   ƒADÁC)ÁDÁ8C-ÂDÂC+ÂDÂ4DÂ?DÃDÃDÃDÃ 
DÃ+DÃ-C?Ã3C6Ã4C?Ã;DÄDÄD	Ä	DÄDÄDc                ó  — t        | «      \  }}t        j                  t        «      5  |j	                  «        d d d «       t        j                  t        «      5  |j	                  «        d d d «       y # 1 sw Y   Œ<xY w# 1 sw Y   y xY wr{   )rÛ   rà   rá   r    Úselected_alpn_protocol©rI   rð   rh  s      rH   Ú,test_selected_alpn_protocol_before_handshaker¿  Ö  ss   € Ü+¨JÓ7�N€FˆFä	�‰Ô)Ó	*ñ (Ø×%Ñ%Ô'÷(ô 
�‰Ô)Ó	*ñ (Ø×%Ñ%Ô'÷(ð (÷(ð (ú÷(ð (úó   ¨A4ÁB Á4A=Â B	c              ƒ  ó®  K  — t        | «      \  }}t        j                  «       4 ƒd {  –—† }|j                  |j                  «       |j                  |j                  «       d d d «      ƒd {  –—†  |j                  «       �J ‚|j                  «       �J ‚|j                  «       |j                  «       k(  sJ ‚y 7 Œ’7 ŒN# 1 ƒd {  –—†7  sw Y   Œ^xY w­wr{   )rÛ   r   rg   rh   rR   r½  rœ  s       rH   Ú(test_selected_alpn_protocol_when_not_setrÂ  à  sÇ   è ø€ ô ,¨JÓ7�N€FˆFä×!Ñ!Ó#÷ 0ð 0 wØ×Ñ˜6×.Ñ.Ô/Ø×Ñ˜6×.Ñ.Ô/÷0÷ 0ð ×(Ñ(Ó*Ð2Ð2Ð2Ø×(Ñ(Ó*Ð2Ð2Ð2à×(Ñ(Ó*¨f×.KÑ.KÓ.MÒMÐMÑMð0øð 0ø÷ 0÷ 0ñ 0üóE   ‚'C©B<ªC­7C Á$CÁ/B>Á0ACÂ>CÃ CÃC	ÃCÃCc                ó  — t        | «      \  }}t        j                  t        «      5  |j	                  «        d d d «       t        j                  t        «      5  |j	                  «        d d d «       y # 1 sw Y   Œ<xY w# 1 sw Y   y xY wr{   )rÛ   rà   rá   r    Úselected_npn_protocolr¾  s      rH   Ú+test_selected_npn_protocol_before_handshakerÆ  ï  ss   € Ü+¨JÓ7�N€FˆFä	�‰Ô)Ó	*ñ 'Ø×$Ñ$Ô&÷'ô 
�‰Ô)Ó	*ñ 'Ø×$Ñ$Ô&÷'ð '÷'ð 'ú÷'ð 'úrÀ  zCignore: ssl module. NPN is deprecated, use ALPN instead:UserWarningzAignore:ssl NPN is deprecated, use ALPN instead:DeprecationWarningc              ƒ  ó®  K  — t        | «      \  }}t        j                  «       4 ƒd {  –—† }|j                  |j                  «       |j                  |j                  «       d d d «      ƒd {  –—†  |j                  «       �J ‚|j                  «       �J ‚|j                  «       |j                  «       k(  sJ ‚y 7 Œ’7 ŒN# 1 ƒd {  –—†7  sw Y   Œ^xY w­wr{   )rÛ   r   rg   rh   rR   rÅ  rœ  s       rH   Ú'test_selected_npn_protocol_when_not_setrÈ  ù  sÇ   è ø€ ô ,¨JÓ7�N€FˆFä×!Ñ!Ó#÷ 0ð 0 wØ×Ñ˜6×.Ñ.Ô/Ø×Ñ˜6×.Ñ.Ô/÷0÷ 0ð ×'Ñ'Ó)Ð1Ð1Ð1Ø×'Ñ'Ó)Ð1Ð1Ð1à×'Ñ'Ó)¨V×-IÑ-IÓ-KÒKÐKÑKð0øð 0ø÷ 0÷ 0ñ 0ürÃ  c                ó  — t        | «      \  }}t        j                  t        «      5  |j	                  «        d d d «       t        j                  t        «      5  |j	                  «        d d d «       y # 1 sw Y   Œ<xY w# 1 sw Y   y xY wr{   )rÛ   rà   rá   r    Úget_channel_bindingr¾  s      rH   Ú)test_get_channel_binding_before_handshakerË    ss   € Ü+¨JÓ7�N€FˆFä	�‰Ô)Ó	*ñ %Ø×"Ñ"Ô$÷%ô 
�‰Ô)Ó	*ñ %Ø×"Ñ"Ô$÷%ð %÷%ð %ú÷%ð %úrÀ  c              ƒ  ó®  K  — t        | «      \  }}t        j                  «       4 ƒd {  –—† }|j                  |j                  «       |j                  |j                  «       d d d «      ƒd {  –—†  |j                  «       €J ‚|j                  «       €J ‚|j                  «       |j                  «       k(  sJ ‚y 7 Œ’7 ŒN# 1 ƒd {  –—†7  sw Y   Œ^xY w­wr{   )rÛ   r   rg   rh   rR   rÊ  rœ  s       rH   Ú(test_get_channel_binding_after_handshakerÍ    sÅ   è ø€ Ü+¨JÓ7�N€FˆFä×!Ñ!Ó#÷ 0ð 0 wØ×Ñ˜6×.Ñ.Ô/Ø×Ñ˜6×.Ñ.Ô/÷0÷ 0ð ×%Ñ%Ó'Ð3Ð3Ð3Ø×%Ñ%Ó'Ð3Ð3Ð3à×%Ñ%Ó'¨6×+EÑ+EÓ+GÒGÐGÑGð0øð 0ø÷ 0÷ 0ñ 0ürÃ  c              ƒ  ó¤  K  — t        | «      \  }}t        j                  «       4 ƒd {  –—† }|j                  |j                  «       |j                  |j                  «       d d d «      ƒd {  –—†  |j                  «       �J ‚t        |j                  «       «       d|j                  «       d   v sJ ‚y 7 Œ�7 ŒI# 1 ƒd {  –—†7  sw Y   ŒYxY w­w)N)ÚDNSr2   ÚsubjectAltName)rÛ   r   rg   rh   rR   Úgetpeercertr]   rœ  s       rH   Útest_getpeercertrÒ  #  s¾   è ø€ ä+¨JÓ7�N€FˆFä×!Ñ!Ó#÷ 0ð 0 wØ×Ñ˜6×.Ñ.Ô/Ø×Ñ˜6×.Ñ.Ô/÷0÷ 0ð ×ÑÓÐ'Ð'Ð'Ü	ˆ&×
Ñ
Ó
ÔØ-°×1CÑ1CÓ1EÐFVÑ1WÑWÐWÑWð0øð 0ø÷ 0÷ 0ñ 0üsE   ‚'C©B7ªC­7B;Á$CÁ/B9Á0ACÂ9CÂ;CÃCÃCÃ	Cc           	   ƒ  óÊ  ‡ K  — 	 d	 	 	 dˆ fd„} |«       ƒ d {  –—† \  }}}|4 ƒd {  –—†  |j                  «       ƒ d {  –—† }|4 ƒd {  –—†  |j                  rJ ‚t        j                  «       4 ƒd {  –—† }|j	                  |j
                  «       |j	                  |j
                  «       d d d «      ƒd {  –—†  d d d «      ƒd {  –—†  |j                  «       ƒ d {  –—†  |j                  «       dk(  sJ ‚d d d «      ƒd {  –—†   |d¬«      ƒ d {  –—† \  }}}|j                  «       ƒ d {  –—† }|j                  sJ ‚t        |«      ƒ d {  –—†  t        |«      ƒ d {  –—†  t        |«      ƒ d {  –—†  y 7 �Œj7 �Œ^7 �ŒI7 �ŒA7 �Œ7 ŒÕ# 1 ƒd {  –—†7  sw Y   ŒåxY w7 ŒÜ# 1 ƒd {  –—†7  sw Y   ŒìxY w7 ŒÛ7 Œ¸# 1 ƒd {  –—†7  sw Y   ŒÈxY w7 Œ¾7 Œ¤7 Œ…7 Œt7 Œc­w)Nc              “  ó,  •K  — t        j                  «       }|j                  d«      ƒ d {  –—†  |j                  d«       t	        |«      }t        |t        | ¬«      }t        |j                  «       Ž ƒ d {  –—† }t        |‰d¬«      }|||fS 7 Œc7 Œ­w)N)z	127.0.0.1r   r¤   ©rc  r2   rr   )
rk   r   ÚbindÚlistenr   r!   rP   r   Úgetsocknamer"   )rc  Úlisten_sockÚsocket_listenerÚssl_listenerÚtransport_clientÚ
ssl_clientrI   s         €rH   Úsetupztest_SSLListener.<locals>.setup1  sœ   øè ø€ ô —n‘nÓ&ˆØ×ÑÐ/Ó0×0Ð0Ø×Ñ˜1ÔÜ(¨Ó5ˆÜ"ØÜØ-ô
ˆô "1°+×2IÑ2IÓ2KÐ!L×LÐÜØØØ5ô
ˆ
ð
 ˜L¨*Ð4Ð4ð 	1øð Mús"   ƒ)B¬B­ABÁ8BÁ9BÂBéÿÿÿÿTrÕ  ©F)rc  r¶   r�   zMtuple[tsocket.SocketType, SSLListener[SocketStream], SSLStream[SocketStream]])	ÚacceptÚ_https_compatibler   rg   rh   rR   rš   Úfilenor   )rI   rÞ  rÙ  rÛ  rÝ  Ú
ssl_serverro   r}   s   `       rH   Útest_SSLListenerrå  0  sÒ  øè ø€ à!&ð5Øð5à	Võ5ñ* 38³'¯MÑ)€K�˜zà÷ *ñ *Ø'×.Ñ.Ó0×0ˆ
à÷ 	<ñ 	<Ø!×3Ò3Ð3Ð3ô ×)Ñ)Ó+÷ <ð <¨wØ×"Ñ" :×#:Ñ#:Ô;Ø×"Ñ" :×#:Ñ#:Ô;÷<÷ <÷		<÷ 	<ð ×!Ñ!Ó#×#Ð#Ø×!Ñ!Ó# rÒ)Ð)Ð)÷*÷ *ñ$ ).¸tÔ(D×"DÑ€A€|�Zà#×*Ñ*Ó,×,€Jà×'Ò'Ð'Ð'ä
˜LÓ
)×)Ð)Ü
˜JÓ
'×'Ð'Ü
˜JÓ
'×'Ñ'ð9 -:ùð*ùØ0ùð	<ùð<ùð <ø÷ <÷ <ñ <úð		<ø÷ 	<÷ 	<ñ 	<úð 	$øð*ø÷ *÷ *ñ *úð$ #Eøà,øð *øØ'øØ'úsV  ƒG#™FšG#¨F©G#¬GÁ F	Á
GÁFÁGÁ'F+Á6F
Á7F+Á:7FÂ1F+Â<FÂ=F+ÃGÃF)ÃGÃ$G Ã%GÃ>G#Ä	GÄ
G#ÄGÄG#Ä6GÄ7 G#ÅGÅG#Å*GÅ+G#Å=G!Å>G#ÆG#Æ	GÆGÆF+ÆF+ÆF&ÆFÆF&Æ"F+Æ)GÆ+F=	Æ1F4Æ2F=	Æ9GÇG#ÇGÇ
GÇGÇG#ÇG#ÇG#ÇG#Ç!G#)rF   zpytest.FixtureRequestr�   zssl.SSLContext)r^   zstdlib_socket.socketrL   r¶   r�   r‚   rà  )rL   r¶   r�   zAsyncIterator[SocketStream])rI   r   rL   r¶   r�   z AsyncIterator[SSLStream[Stream]]rµ   r{   )rI   r   r”   r´   r�   z(Iterator[SSLStream[PyOpenSSLEchoStream]])rI   r   rÒ   r0   rÓ   r0   rÏ   údict[str, Any] | NonerÐ   ræ  r�   z/tuple[SSLStream[T_Stream], SSLStream[T_Stream]])NN)rI   r   rÏ   ú+dict[str, str | bytes | bool | None] | NonerÐ   rç  r�   rj  )rI   r   rÏ   rç  rÐ   rç  r�   rk  )rI   r   r�   r‚   )r7  r/   rI   r   r�   r‚   )rI   r   rc  r¶   r�   r‚   )ŽÚ
__future__r   Úosr   rd   r;   Úsysrò   Ú
contextlibr   r   r   Ú	functoolsr   r   Útypingr	   r
   r   rà   rf   r   Útrio._tests.pytest_pluginr   Útrio.abcr   r   Útrio.testingr   r   r   r   ÚtrustmeÚOpenSSLr   ÚImportErrorÚerrorÚ r   rk   Ú_abcr   r   r   Ú_core._tests.tutilr   Ú_highlevel_genericr   Ú_highlevel_open_tcp_streamr   Ú_highlevel_socketr   r   Ú_sslr    r!   r"   r#   Ú_utilr$   Útestingr%   r&   r'   r(   r)   Úcollections.abcr*   r+   r,   r-   Útyping_extensionsr.   Ú
trio._corer/   Ú	trio._sslr0   Ú
_core._runr1   ÚCAr?   Úissue_server_certr‰   r<   ÚPurposeÚCLIENT_AUTHrP   r=   r>   r3   rŠ   ÚfixturerI   rb   rp   rt   rv   rÉ   rÍ   rÖ   r×   Ú__annotations__rÛ   rÜ   rÞ   ré   rø   r  r  r  r:  rH  r[  ÚmarkÚskipifÚnameÚversion_infor`  rb  Úparametrizerl  rv  r€  r�  r™  r�  r   r¢  r§  r«  r¯  r³  r»  r¿  rÂ  rÆ  ÚfilterwarningsrÈ  rË  rÍ  rÒ  rå  r|   rJ   rH   ú<module>r     se  ðÞ "ã 	Û Û 
Û 
Û ß DÑ DÝ Ý ÷ñ ó å Ý Aß .÷ó ð'ÛÝó ç 'Ý ß <Ý %Ý 2Ý 8ß <ß FÓ FÝ $÷õ ñ ßLÓLå+å$Ý"å(ð( ˆw�z‰z‹|€Ø×1Ñ1Ð2KÓLÐ à'ˆS×'Ñ'¨¯©×(?Ñ(?Ó@€
Ù
ˆ3Ð*Ô+Ø×Ò˜3×7Ñ7Ð7Ñ7Õà × Ñ  
Ô +ð €‡��h¨°Ð'9Ô:òó ;ðð( ñ1Ø
ð1ð ð1ð 
ó	1ðn ó>ó ð>ð" ð ðUØðUàðUð &òUó ðUôKF˜&ô KFó\>ð< ð 8<ðUØðUà4ðUð .òUó ðUð ,0Ø+/ñ"Øð"àð"ð ð"ð
 )ð"ð )ð"ð 5ó"ð6 "/Ð/?ÐATÐ/TÑ!UÐ �YÓ Uð
 BFØAEðØðà>ðð ?ððó	ð$ +¨:°}Ð+DÑE€�Ó Eð
 BFØAEðØðà>ðð ?ððó	ó*Ió4óB"AóJ"óJð" ðwØðwàðwð 
òwó ðwótVóBð. ‡�×ÑØ‡G�Gˆt�OÒ3˜×(Ñ(¨GÑ3Ø6ð ó òó	ðó:ð  ‡�×ÑÐ+¨e°T¨]Ó;ðCØðCàðCð 
òCó <ðCóB3#ól;.ó|ó>#ó<ó"ó(ó&&ó45ó04ó(ó"(ó.(óNó'ð ‡�×ÒØJØHóòLó	ðLó%ó
Hó
Xô2(øða( ò 'Ù ×&Ò&ûð'ús   Á!
L ÌL5Ì"L0Ì0L5