Ë
    bQbjJÇ  ã                  ó`  — 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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 	 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l/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5m6Z6m7Z7m8Z8 ddl9m:Z: ddl;m<Z<m=Z=m>Z>m?Z?m@Z@ erd dlAmBZBmCZCmDZDmEZE d dlFmGZG d dlHmIZI ddlJmKZK  ej˜                  «       ZMeMj�                  d«      ZO ej                   ej¢                  j¤                  «      ZS eTed«      r eSxjª                  ej¬                   z  c_U        eOj¯                  eS«        ej°                  dddg¬ «      dYd!„«       ZYd"d#œ	 	 	 	 	 dZd$„ZZe	d[d\d%„«       Z[e		 d[	 	 	 	 	 d]d&„«       Z\ G d'„ d(e(«      Z]d^d)„Z^e
	 d_	 	 	 	 	 d`d*„«       Z_ddd+œ	 	 	 	 	 	 	 	 	 	 	 dad,„Z`eeef   Zad-ebd.<   	 	 db	 	 	 	 	 	 	 dcd/„Zceeef   Zdd-ebd0<   	 	 db	 	 	 	 	 	 	 ddd1„Zeded2„Zfded3„Zgded4„Zhded5„Zided6„Zje,	 	 	 	 	 	 dfd7„«       Zkded8„Zld^d9„ZmejÜ                  jß                  ejà                  d:k(  xr ejâ                  d;k\  d<¬=«      ded>„«       Zrded?„ZsejÜ                  jé                  d@d"dAg«      	 	 	 	 	 	 dgdB„«       ZudedC„ZvdedD„ZwdedE„ZxdedF„ZydedG„ZzdedH„Z{d^dI„Z|dedJ„Z}dedK„Z~dedL„ZdedM„Z€dedN„Z�dedO„Z‚dedP„ZƒdedQ„Z„ejÜ                  �j                  dRdS«      dedT„«       Z†dedU„Z‡dedV„ZˆdedW„Z‰dedX„ZŠy# e"$ rZ# ee#«       Y dZ#[#�Œ¿dZ#[#ww xY w)hé    )ÚannotationsN)ÚasynccontextmanagerÚcontextmanagerÚsuppress)Úpartial)Ú
SSLContext)ÚTYPE_CHECKINGÚAnyÚNoReturnÚ	TypeAlias)ÚStapledStream)Úskip_if_optional_else_raise)ÚReceiveStreamÚ
SendStream)ÚMemoryReceiveStreamÚMemorySendStream)Ú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)Ú	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        «       ‚)Nr1   )Údefaultr3   r4   )ÚsslÚcreate_default_contextÚhasattrÚoptionsr1   ÚTRIO_TEST_CAÚconfigure_trustÚparamÚ
TLSVersionÚTLSv1_2Úmaximum_versionÚAssertionError)ÚrequestÚctxs     úG/var/www/html/venv/lib/python3.12/site-packages/trio/_tests/test_ssl.pyÚ
client_ctxrG   W   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   ÚBrokenPipeErrorr9   ÚSSLZeroReturnErrorÚunwrapÚcloseÚsendallÚRuntimeErrorÚConnectionResetErrorÚConnectionAbortedErrorÚ	ExceptionÚprint)ÚsockrJ   ÚwrappedÚdataÚexcs        rF   Ússl_echo_serve_syncr`   i   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)NrI   )Ústdlib_socketÚ
socketpairÚtrioÚopen_nurseryÚ
start_soonÚ	to_threadÚrun_syncr   r`   r   ÚtsocketÚfrom_stdlib_socket)rJ   ÚaÚbÚnurserys       rF   Ússl_echo_server_rawrn       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)NrI   r0   ©Úserver_hostname)rn   r!   )rG   rJ   r\   s      rF   Ússl_echo_serverrr   ²   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    rF   Úno_op_sleeperz3PyOpenSSLEchoStream.__init__.<locals>.no_op_sleeperç   s	   è ø€ Øùs   ‚©r{   ÚobjectÚreturnÚNone)r   ÚContextÚSSLv23_METHODÚ,cryptography.hazmat.bindings.openssl.bindingrv   Ú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’   rE   rv   rl   r|   s         rF   Ú__init__zPyOpenSSLEchoStream.__init__Á   sÙ   € ô �k‰kœ#×+Ñ+Ó,ˆõ 	Iá‹IˆØ�‰˜Ÿ™×/Ñ/Ô0ô œ3 Ô0Ð0Ð0Ü×'Ñ'¨Ô,Ü—^‘^ C¨Ó.ˆŒ
Ø�
‰
×#Ñ#Ô%Ü×$Ñ$Ó&ˆŒ	Ü"+£+ˆÔä+;Ø@ó,
ˆÔ(ô 0@ØDó0
ˆÔ,ñ 	Øˆ?óð )ˆD�Là"ˆD�LrH   c              ƒ  ó@   K  — | j                   j                  «        y ­wry   )rŠ   Úbio_shutdown©r“   s    rF   ÚaclosezPyOpenSSLEchoStream.acloseî   s   è ø€ Ø�
‰
×ÑÕ!ùs   ‚c                ó6   — | j                   j                  «       S ry   )rŠ   Úrenegotiate_pendingr—   s    rF   rš   z'PyOpenSSLEchoStream.renegotiate_pendingñ   s   € Ø�z‰z×-Ñ-Ó/Ð/rH   c                ó<   — | j                   j                  «       sJ ‚y ry   )rŠ   Úrenegotiater—   s    rF   rœ   zPyOpenSSLEchoStream.renegotiateô   s   € ð �z‰z×%Ñ%Ô'Ð'Ñ'rH   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    rF   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_writerQ   r�   r   ÚZeroReturnErrorÚshutdownÚtotal_renegotiationsÚWantReadErrorr�   Ú
unpark_all©r“   r^   s     rF   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      rF   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ry   )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«   rz   rH   rF   rt   rt   À   s@   „ ð <@ð+#à8ð+#ð 
ó+#óZ"ó0ó(ó
@ó>õ.5FrH   rt   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        j                  t        j                  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©Úmatch)	rt   ÚpytestÚRaisesGroupÚ	RaisesExcr   ÚBusyResourceErrorre   rf   Úgetattr)Úfunc1Úargs1Úfunc2Úargs2Úsrm   s         rF   Údo_testzDtest_PyOpenSSLEchoStream_gives_resource_busy_errors.<locals>.do_testU  sÅ   è ø€ ô  Ó!ˆÜ×ÑÜ×ÑœU×4Ñ4¸NÔKó
ñ 	>ô ×)Ñ)Ó+÷ >ð >¨wØ"�×"Ñ"¤7¨1¨eÓ#4Ð=°uÓ=Ø"�×"Ñ"¤7¨1¨eÓ#4Ð=°uÓ=÷>÷ >÷	>ð 	>ð>øð >ø÷ >÷ >ñ >ú÷	>ð 	>üsf   ‚ACÁCÁB6ÁCÁ";B:ÂCÂ(B8Â)CÂ-	CÂ6CÂ8CÂ:C	Ã CÃC	ÃCÃCÃCr¡   )ó   xrž   rz   r«   )r¢   )
rÃ   ÚstrrÄ   útuple[object, ...]rÅ   rÊ   rÆ   rË   r   r€   rz   )rÈ   s    rF   Ú3test_PyOpenSSLEchoStream_gives_resource_busy_errorsrÌ   N  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’   r0   rp   )rt   r!   )rG   r’   Úfakesocks      rF   Úvirtual_ssl_echo_serverrÐ   n  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 )Nrq   r0   rL   T)r!   rN   )rG   Úclient_transportÚserver_transportrÒ   rÓ   Ú
client_sslÚ
server_ssls          rF   Ússl_wrap_pairrÙ   w  sq   € ð ÐØˆØÐØˆÜØØñð 2ðð ñ	€Jô ØÜñð ðð ñ	€Jð �zÐ!Ð!rH   r   ÚMemoryStapledStreamc                ó<   — t        «       \  }}t        | ||||¬«      S ©NrÑ   )r(   rÙ   ©rG   rÒ   rÓ   rÕ   rÖ   s        rF   Ússl_memory_stream_pairrÞ   •  s/   € ô *<Ó)=Ñ&ÐÐ&ÜØØØØ#Ø#ôð rH   ÚMyStapledStreamc                ó<   — t        «       \  }}t        | ||||¬«      S rÜ   )r'   rÙ   rÝ   s        rF   Ússl_lockstep_stream_pairrá   ª  s/   € ô *>Ó)?Ñ&ÐÐ&ÜØØØØ#Ø#ôð rH   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¢   TrI   r0   rp   ztrio-test-2.example.org)rr   rL   r¡   r«   r˜   rn   r9   r:   r!   r¾   Úraisesr   Ú
isinstanceÚvalueÚ	__cause__ÚSSLErrorÚCertificateError)rG   rÇ   r\   Úbad_client_ctxÚexcinfos        rF   Ú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©rL   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)Nr0   rp   rÉ   r¢   ó   yó   z)rO   rV   rQ   rT   )Úclient_sockrk   rG   s    €€rF   Úclientz&test_ssl_server_basics.<locals>.clientä  sw   ø€ Ø×'Ñ'ØØ 9ð (ó ð %ð Ø×#Ñ# DÔ)Ø"×'Ñ'¨Ó*¨dÒ2Ð2Ð2Ø×#Ñ# DÔ)Ø×"Ñ"Ô$÷%÷ %ñ %ús   •A	A'Á'A0)Útargetr¢   rÉ   rï   rð   rH   r³   )rb   rc   ri   rj   r!   r   rN   rL   Ú	threadingÚThreadÚstartr«   r¡   r˜   Újoin)rG   rl   Úserver_sockrÖ   rò   Útrk   s   `     @rF   Ú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)	NTrI   r0   rp   FÚtransport_streamÚcontextÚasdf)rn   r9   r:   r!   rü   rý   rL   rq   r¾   rã   ÚAttributeErrorÚ
asfdasdfsaÚdirr   rP   rä   rå   ræ   rç   )rG   r\   Úgood_ctxÚbad_ctxrÇ   rê   s         rF   Ú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ry   )Úranger[   r®   r¡   )rÇ   ÚiÚchunkÚCHUNKSÚ
CHUNK_SIZEÚsents      €€€rF   Úsenderz'test_full_duplex_basics.<locals>.senderG  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     €€€rF   Úreceiverz)test_full_duplex_basics.<locals>.receiverO  sC   øè ø€ ä�(‹m˜hÒ&ØŸ.™.¨°q©Ó9×9ˆEØ˜ÑˆHô �(‹m˜hÕ&Ø9ús   ƒ&A©AªAÁA)rÇ   r   r   r€   )rŽ   rr   r   re   rf   rP   r˜   r  )
rG   r  r  rÇ   rm   r  r  r  r  r  s
        @@@@@rF   Útest_full_duplex_basicsr  ?  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Ð   rP   rü   rœ   r¡   r«   r˜   ©rG   rÇ   s     rF   Útest_renegotiation_simpler  d  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   é
   )rd   ÚsleepÚuniform)r{   Úrs    €rF   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   €€€rF   Ú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    €rF   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    €rF   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¡   é † ©rd   r  ©Úmethods    rF   Ú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éè  )rd   r  rž   ©rÇ   s   €rF   Ú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"  r1  r,  r-  s    rF   Ú*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Ð   rP   rü   rœ   r  r®   r   re   rf   r˜   rž   )Ú
mock_clockrG   r7  r’   r#  r	  Úb1Úb2rm   r/  r3  r5  r"  r  rÇ   r­   s               @@@@rF   Útest_renegotiation_randomizedr<  u  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¡   r2  s    rF   Ú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«   r2  s    rF   Ú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ry   )r%   rž   r2  s    rF   Ú 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              “  ó˜  •K  — t        ‰«      \  }}t        j                  t        j                  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 taskr¼   )rá   r¾   r¿   rÀ   r   rÁ   re   rf   )rÃ   rÅ   rÇ   r{   rm   rG   s        €rF   rÈ   z*test_resource_busy_errors.<locals>.do_test  s´   øè ø€ ô (¨
Ó3‰ˆˆ1Ü×ÑÜ×ÑœU×4Ñ4¸NÔKó
ñ 	-ô ×)Ñ)Ó+÷ -ð -¨wØ×"Ñ" 5¨!Ô,Ø×"Ñ" 5¨!Ô,÷-÷ -÷	-ð 	-ð-øð -ø÷ -÷ -ñ -ú÷	-ð 	-üsf   ƒAC
Á
B>Á#B%Á$B>Á'%B)ÂB>ÂB'ÂB>Â	C
Â%B>Â'B>Â)B;	Â/B2Â0B;	Â7B>Â>CÃC
)rÇ   ÚSr   r€   )rÃ   úCallable[[S], Awaitable[None]]rÅ   rH  r   r€   )rd   r!   r   Úabcr   r   )rG   rG  r?  rC  rE  rÈ   s   `     rF   Útest_resource_busy_errorsrJ  ð  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    €rF   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©rC   r—   s    rF   r˜   zLtest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStream.aclose  ó   è ø€ Ü Ð!8Ó9Ð9ùó   ‚Nc              “  ó    K  — t        d«      ‚­wrT  rU  )r“   Ú	max_bytess     rF   r«   zRtest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStream.receive_some  rV  rW  c              “  ó    K  — t        d«      ‚­wrT  rU  r©   s     rF   r¡   zNtest_wait_writable_calls_underlying_wait_writable.<locals>.NotAStream.send_all!  rV  rW  r³   ry   )rY  rµ   r   zbytes | bytearray)r^   zbytes | bytearray | memoryviewr   r€   )r¶   r·   r¸   rž   r˜   r«   r¡   )rQ  s   €rF   Ú
NotAStreamrM    s   ø„ õ	 ó	:ô	:ô	:rH   r[  Úxrp   rO  )r   r9   r:   r!   rž   )r[  rE   rÇ   rQ  s      @rF   Ú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¢   )rr   r%   rP   rž   r¡   r«   rT   r˜   r  s     rF   Útest_checkpointsrb  *  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)NrH   rÉ   r¢   )rr   rP   r%   r¡   r«   r˜   r  s     rF   Útest_send_all_empty_stringrd  K  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)Nre  rÑ   )rÞ   )rG   re  s   €€rF   Ústream_makerz,test_SSLStream_generic.<locals>.stream_maker`  s+   øè ø€ ô &ØØ-Ð/?Ð@Ø-Ð/?Ð@ô
ð 	
ùrR  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ry   )rá   r   re   rf   rP   )rò   Úserverrm   rG   s      €rF   Úclogged_stream_makerz4test_SSLStream_generic.<locals>.clogged_stream_makerj  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&   )rG   re  rh  rk  s   ``  rF   Útest_SSLStream_genericrn  [  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   rH   ó   trailing)rP   r¡   r«   Úsend_streamÚsend_all_hookrü   rT   )rs  ÚrawÚtrailingr×   rÕ   Úseqs      €€€rF   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ð   rq  )rP   r«   r¡   rT   rü   )rt  ru  rv  rØ   rÖ   s     €€€rF   rj  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   re   rf   )	rG   rò   rj  rm   r×   rÕ   rv  rØ   rÖ   s	       @@@@@rF   Útest_unwraprx  }  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ry   )r%   r˜   )r×   s   €rF   Ú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  rH   )r«   r%   r˜   ©rØ   s   €rF   Ú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  rH   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   €rF   Ú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   re   rf   r¾   rã   r   r¡   r%   r˜   r«   rT   rP   )rG   rÕ   r{  r  rm   r�  r×   rØ   s         @@rF   Ú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ry   ©ÚKeyErrorrz   rH   rF   Úbad_hookz3test_send_all_fails_in_the_middle.<locals>.bad_hookø  ó   è ø€ Üˆùó   ‚	rÉ   r   c                 ó   •— ‰ dz  Š y rB  rz   )Úcloseds   €rF   Ú
close_hookz5test_send_all_fails_in_the_middle.<locals>.close_hook  s   ø€ à�!‰‰rH   r   ©r   r   r³   )rÞ   r   re   rf   rP   rü   rr  rs  r¾   rã   r†  r¡   r   rž   rŒ  Úreceive_streamr˜   )rG   rò   rj  rm   r‡  rŒ  r‹  s         @rF   Ú!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)Nr0   rp   Trí   c               “  ó„   •K  — ‰ j                  d«      ƒ d {  –—†  ‰ j                  d«      ƒ d {  –—† dk(  sJ ‚y 7 Œ#7 Œ­w)Nó   hir  ó   bye)r¡   r«   )Úclient_2s   €rF   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   €rF   rj  z!test_ssl_over_ssl.<locals>.server%  s@   øè ø€ Ø×*Ñ*¨2Ó.×.°%Ò7Ð7Ð7Ø×Ñ Ó'×'Ñ'ð /øØ'ús   ƒA ˜<™A ¶>·A ¾A r³   )r(   r!   rN   r   re   rf   )
rG   Úclient_0Úserver_0Úclient_1Úserver_1rò   rj  rm   r”  r–  s
           @@rF   Ú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   re   rf   rP   rd   r   r¾   rã   r   r«   r¡   r˜   ©rG   rò   rj  rm   s       rF   Útest_ssl_bad_shutdownrŸ  .  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)Nre  T©rÓ   rÒ   r  rH   r�  )rÞ   r   re   rf   rP   rd   r   r«   r¾   rã   r   r¡   r˜   rž  s       rF   Ú test_ssl_bad_shutdown_but_its_okr¢  ?  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)NTrI   r0   rp   )rn   r9   r:   r!   r¾   rã   r   r˜   )r\   rG   rÇ   s      rF   Ú(test_ssl_handshake_failure_during_acloser¤  S  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         ‚rB  r…  )Úclient_orig_close_hookÚtransport_close_counts   €€rF   rŒ  z4test_ssl_only_closes_stream_once.<locals>.close_hookr  s%   ø€ à%Ð1Ð1Ð1ÙÔ Ø Ñ"ÐÜˆrH   r¢   r�  )rÞ   r   re   rf   rP   rü   rr  rŒ  r¾   rã   r†  r˜   )rG   rò   rj  rm   rŒ  r§  r¨  s        @@rF   Ú test_ssl_only_closes_stream_oncer©  f  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)Nre  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ê   rj  s    €rF   Ú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   re   rf   rP   r˜   )rG   rò   rm   r¬  rj  s       @rF   Ú)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)Nre  Tr¡  c               “  óN   •K  — ‰ j                  d«      ƒ d {  –—† dk(  sJ ‚y 7 Œ
­wr}  )r«   )rj  s   €rF   Úserver_expect_clean_eofzEtest_https_mode_eof_before_handshake.<locals>.server_expect_clean_eofŸ  s&   øè ø€ Ø×(Ñ(¨Ó,×,°Ò3Ð3Ñ3Ð,ús   ƒ%˜#™%r³   )rÞ   r   re   rf   r˜   )rG   rò   r°  rm   rj  s       @rF   Ú$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ry   r…  rz   rH   rF   r‡  z2test_send_error_during_handshake.<locals>.bad_hookª  rˆ  r‰  r�  )
rÞ   rü   rr  rs  r¾   rã   r†  r%   rP   r   )rG   rò   Ú_serverr‡  s       rF   Ú 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ry   r…  rz   rH   rF   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ry   )r¾   rã   r†  r%   rP   Úcancel)Úcancel_scoperò   s    €rF   Ú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º  r/   r   r€   )rÞ   rü   rŽ  Úreceive_some_hookr   re   rf   rº  rP   r¾   rã   r   r%   )rG   rj  r‡  r»  rm   rò   s        @rF   Ú#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ry   )rÞ   r¾   rã   r   Úselected_alpn_protocol©rG   rò   rj  s      rF   Ú,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ry   )rÞ   r   re   rf   rP   r¿  rž  s       rF   Ú(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ry   )rÞ   r¾   rã   r   Úselected_npn_protocolrÀ  s      rF   Ú+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ry   )rÞ   r   re   rf   rP   rÇ  rž  s       rF   Ú'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ry   )rÞ   r¾   rã   r   Úget_channel_bindingrÀ  s      rF   Ú)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ry   )rÞ   r   re   rf   rP   rÌ  rž  s       rF   Ú(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)ÚDNSr0   ÚsubjectAltName)rÞ   r   re   rf   rP   Úgetpeercertr[   rž  s       rF   Ú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¢   ©re  r0   rp   )
ri   r   ÚbindÚlistenr   r    rN   r   Úgetsocknamer!   )re  Úlisten_sockÚsocket_listenerÚssl_listenerÚtransport_clientÚ
ssl_clientrG   s         €rF   Úsetupztest_SSLListener.<locals>.setup*  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)re  r´   r   zMtuple[tsocket.SocketType, SSLListener[SocketStream], SSLStream[SocketStream]])	ÚacceptÚ_https_compatibler   re   rf   rP   r˜   Úfilenor   )rG   rà  rÛ  rÝ  rß  Ú
ssl_serverrm   r{   s   `       rF   Útest_SSLListenerrç  )  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#)rD   zpytest.FixtureRequestr   zssl.SSLContext)r\   zstdlib_socket.socketrJ   r´   r   r€   râ  )rJ   r´   r   zAsyncIterator[SocketStream])rG   r   rJ   r´   r   z AsyncIterator[SSLStream[Stream]]r³   ry   )rG   r   r’   r²   r   z(Iterator[SSLStream[PyOpenSSLEchoStream]])rG   r   rÕ   r.   rÖ   r.   rÒ   údict[str, Any] | NonerÓ   rè  r   z/tuple[SSLStream[T_Stream], SSLStream[T_Stream]])NN)rG   r   rÒ   ú+dict[str, str | bytes | bool | None] | NonerÓ   ré  r   rl  )rG   r   rÒ   ré  rÓ   ré  r   rm  )rG   r   r   r€   )r9  r-   rG   r   r   r€   )rG   r   re  r´   r   r€   )‹Ú
__future__r   Úosr   rb   r9   Úsysrô   Ú
contextlibr   r   r   Ú	functoolsr   r   Útypingr	   r
   r   r   r¾   rd   r   Útrio._tests.pytest_pluginr   Útrio.abcr   r   Útrio.testingr   r   ÚtrustmeÚOpenSSLr   ÚImportErrorÚerrorÚ r   ri   Ú_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,   Ú
trio._corer-   Ú	trio._sslr.   Ú
_core._runr/   ÚCAr=   Úissue_server_certr‡   r:   ÚPurposeÚCLIENT_AUTHrN   r;   r<   r1   rˆ   ÚfixturerG   r`   rn   rr   rt   rÌ   rÐ   rÙ   rÚ   Ú__annotations__rÞ   rß   rá   rë   rú   r  r  r  r<  rJ  r]  ÚmarkÚskipifÚnameÚversion_inforb  rd  Úparametrizern  rx  r‚  r�  r›  rŸ  r¢  r¤  r©  r­  r±  rµ  r½  rÁ  rÄ  rÈ  ÚfilterwarningsrÊ  rÍ  rÏ  rÔ  rç  rz   rH   rF   ú<module>r     sV  ðÞ "ã 	Û Û 
Û 
Û ß 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óFð. ‡�×ÑØ‡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(øðe( ò 'Ù ×&Ò&ûð'ús   Á
L ÌL-ÌL(Ì(L-