+
    IV-jNE  ã            
      óŠ  a€ 0 t $ ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
Ht ^RIHtHt ^RIHtHt RtRtRtRtR.t]]]]]]3,          tR- U Uu/ uF  w  rV ]! ]VR4      bK  	  upp tR R	 lt]P<                  '       d    ^ R
IH t  ^ RIH!t! ^RI"Ht#  ! R R]!RR7      t$/ t%R]&R&    ^ RIt^ RIH't'HtH(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0HtH1t1 ]+t2]'       d   ]! ]*4      '       g   RtR. F  t3 ]! ]1]34      ]%]! ]R]3 24      &   K  	  ^RI"Ht ]Pl                  R]7R3,          t8R R lt9R R lt:R R lt;R/R R  llt<]Pz                  R0R! R" ll4       t>]Pz                  R0R# R$ ll4       t>R1R% R& llt>R' R( lt?R) R* lt@R2R+ R, lltAR# u upp i   ]4 d     K°  i ; i  ]5 d    Rt(Rt)Rt/Rt0^;t2t+^t,Rt-^ t. L«i ; i)3é    )ÚannotationsN)Ú	unhexlify)ÚProxySchemeUnsupportedÚSSLError)Ú_BRACELESS_IPV6_ADDRZ_REÚ_IPV4_REFzhttp/1.1c               ó    € V ^8„  d   QhRRRR/# )é   Úopenssl_versionÚstrÚreturnÚbool© )Úformats   "Úb/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/urllib3/util/ssl_.pyÚ__annotate__r      s   € ÷ ñ Øðà	ñó    c                ó(   € V P                  R 4      pV# )zOpenSSL )Ú
startswith)r   Ú
is_openssls   & r   Ú(_is_has_never_check_common_name_reliabler      s   € ð
 !×+Ñ+¨JÓ7€JàÐr   )Ú
VerifyMode)Ú	TypedDict)ÚSSLTransportc                  ó6   € ] tR t^.t$ R]R&   R]R&   R]R&   RtR# )	Ú_TYPE_PEER_CERT_RET_DICTztuple[tuple[str, str], ...]ÚsubjectAltNamez'tuple[tuple[tuple[str, str], ...], ...]Úsubjectr   ÚserialNumberr   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__r   r   r   r   r   .   s   ‡ Ø3Ó3Ø8Ó8Ø×r   r   )Útotalzdict[int, int]Ú_SSL_VERSION_TO_TLS_VERSION)ÚCERT_REQUIREDÚHAS_NEVER_CHECK_COMMON_NAMEÚOP_NO_COMPRESSIONÚOP_NO_TICKETÚOPENSSL_VERSIONÚPROTOCOL_TLSÚPROTOCOL_TLS_CLIENTÚVERIFY_X509_PARTIAL_CHAINÚVERIFY_X509_STRICTÚOP_NO_SSLv2ÚOP_NO_SSLv3Ú
SSLContextÚ
TLSVersionÚ	PROTOCOL_i   i @  i   i   i   c               ó$   € V ^8„  d   QhRRRRRR/# )r
   Úcertzbytes | NoneÚfingerprintr   r   ÚNoner   )r   s   "r   r   r   k   s!   € ÷ 
ñ 
˜\ð 
¸ð 
Àñ 
r   c                óÐ  € V f   \        R4      hVP                  RR4      P                  4       p\        V4      pV\        9  d   \        RV 24      h\        P                  V4      pVf   \        RV 24      h\        VP                  4       4      pV! V 4      P                  4       p\        P                  ! WT4      '       g!   \        RV RVP                  4        R	24      hR# )
zÉ
Checks if given fingerprint matches the supplied certificate.

:param cert:
    Certificate as bytes object.
:param fingerprint:
    Fingerprint as string of hexdigits, can be interspersed by colons.
NzNo certificate for the peer.Ú:Ú zFingerprint of invalid length: zAHash function implementation unavailable for fingerprint length: z&Fingerprints did not match. Expected "z", got "Ú")r   ÚreplaceÚlowerÚlenÚHASHFUNC_MAPÚgetr   ÚencodeÚdigestÚhmacÚcompare_digestÚhex)r7   r8   Údigest_lengthÚhashfuncÚfingerprint_bytesÚcert_digests   &&    r   Úassert_fingerprintrL   k   sé   € ð ‚|ÜÐ5Ó6Ð6à×%Ñ% c¨2Ó.×4Ñ4Ó6€KÜ˜Ó$€MØœLÔ(ÜÐ8¸¸ÐFÓGÐGÜ×Ñ Ó.€HØÒÜØOÐP]ÈÐ_ó
ð 	
ô
 " +×"4Ñ"4Ó"6Ó7Ðá˜4“.×'Ñ'Ó)€Kä×Ò˜{×>Ò>ÜØ4°[°MÀÈ+Ï/É/ÓJ[ÐI\Ð\]Ð^ó
ð 	
ñ ?r   c               ó    € V ^8„  d   QhRRRR/# )r
   Ú	candidateúNone | int | strr   r   r   )r   s   "r   r   r   �   s   € ÷ ñ Ð!1ð °jñ r   c                ó¢   € V f   \         # \        V \        4      '       d/   \        \        V R4      pVf   \        \        RV ,           4      pV# V # )aÇ  
Resolves the argument to a numeric constant, which can be passed to
the wrap_socket function/method from the ssl module.
Defaults to :data:`ssl.CERT_REQUIRED`.
If given a string it is assumed to be the name of the constant in the
:mod:`ssl` module or its abbreviation.
(So you can specify `REQUIRED` instead of `CERT_REQUIRED`.
If it's neither `None` nor a string we assume it is already the numeric
constant which can directly be passed to wrap_socket.
NÚCERT_)r(   Ú
isinstancer   ÚgetattrÚssl©rN   Úress   & r   Úresolve_cert_reqsrW   �   sL   € ð ÒÜÐä�)œS×!Ò!Ü”c˜9 dÓ+ˆØŠ;Üœ#˜w¨Õ2Ó3ˆCØˆ
àÐr   c               ó    € V ^8„  d   QhRRRR/# )r
   rN   rO   r   Úintr   )r   s   "r   r   r   ¤   s   € ÷ ñ Ð#3ð ¸ñ r   c                óÔ   € V f   \         # \        V \        4      '       dH   \        \        V R4      pVf   \        \        RV ,           4      p\
        P                  ! \        V4      # V # )z
like resolve_cert_reqs
Nr5   )r-   rR   r   rS   rT   ÚtypingÚcastrY   rU   s   & r   Úresolve_ssl_versionr]   ¤   sX   € ð ÒÜÐä�)œS×!Ò!Ü”c˜9 dÓ+ˆØŠ;Üœ#˜{¨YÕ6Ó7ˆCÜ�{Š{œ3 Ó$Ð$àÐr   c               ó8   € V ^8„  d   QhRRRRRRRRRRRRR	RR
R/# )r
   Ússl_versionú
int | NoneÚ	cert_reqsÚoptionsÚciphersú
str | NoneÚssl_minimum_versionÚssl_maximum_versionÚverify_flagsr   ússl.SSLContextr   )r   s   "r   r   r   ´   sb   € ÷ Pñ PØðPàðPð ðPð ð	Pð
 $ðPð $ðPð ðPð ñPr   c                óÈ  € \         f   \        R4      hV R\        \        39  dy   Vf   Ve   \	        R4      h\
        P                  V \        P                  4      p\
        P                  V \        P                  4      p\        P                  ! R\        ^R7       \        \        4      pVe   WGn        M\        P                  Vn        Ve   WWn        V'       d   VP!                  V4       Vf   \"        P$                  MTpVf7   ^ pV\&        ,          pV\(        ,          pV\*        ,          pV\,        ,          pV;P.                  V,          un        Vf2   ^ p\0        P2                  R
8¼  d   V\4        ,          pV\6        ,          pV;P8                  V,          un        \;        VRR4      e   RVn        V\"        P$                  8X  d   \>        '       g   Wn         RVn!        MRVn!        Wn         RVn"        R	\F        PH                  9   d>   \F        PJ                  PM                  \F        PH                  P                  R	4      4      pMRpV'       d   W‡n'        V# )a·  Creates and configures an :class:`ssl.SSLContext` instance for use with urllib3.

:param ssl_version:
    The desired protocol version to use. This will default to
    PROTOCOL_SSLv23 which will negotiate the highest protocol that both
    the server and your installation of OpenSSL support.

    This parameter is deprecated instead use 'ssl_minimum_version'.
:param ssl_minimum_version:
    The minimum version of TLS to be used. Use the 'ssl.TLSVersion' enum for specifying the value.
:param ssl_maximum_version:
    The maximum version of TLS to be used. Use the 'ssl.TLSVersion' enum for specifying the value.
    Not recommended to set to anything other than 'ssl.TLSVersion.MAXIMUM_SUPPORTED' which is the
    default value.
:param cert_reqs:
    Whether to require the certificate verification. This defaults to
    ``ssl.CERT_REQUIRED``.
:param options:
    Specific OpenSSL options. These default to ``ssl.OP_NO_SSLv2``,
    ``ssl.OP_NO_SSLv3``, ``ssl.OP_NO_COMPRESSION``, and ``ssl.OP_NO_TICKET``.
:param ciphers:
    Which cipher suites to allow the server to select. Defaults to either system configured
    ciphers if OpenSSL 1.1.1+, otherwise uses a secure default set of ciphers.
:param verify_flags:
    The flags for certificate verification operations. These default to
    ``ssl.VERIFY_X509_PARTIAL_CHAIN`` and ``ssl.VERIFY_X509_STRICT`` for Python 3.13+.
:returns:
    Constructed SSLContext object with specified options
:rtype: SSLContext
Nz7Can't create an SSLContext object without an ssl modulezZCan't specify both 'ssl_version' and either 'ssl_minimum_version' or 'ssl_maximum_version'zi'ssl_version' option is deprecated and will be removed in urllib3 v3.0. Instead use 'ssl_minimum_version')ÚcategoryÚ
stacklevelÚpost_handshake_authTFÚSSLKEYLOGFILE)é   é   )(r3   Ú	TypeErrorr-   r.   Ú
ValueErrorr'   rB   r4   ÚMINIMUM_SUPPORTEDÚMAXIMUM_SUPPORTEDÚwarningsÚwarnÚFutureWarningÚminimum_versionÚTLSv1_2Úmaximum_versionÚset_ciphersrT   r(   r1   r2   r*   r+   rb   ÚsysÚversion_infor/   r0   rg   rS   rl   ÚIS_PYOPENSSLÚverify_modeÚcheck_hostnameÚhostname_checks_common_nameÚosÚenvironÚpathÚ
expandvarsÚkeylog_filename)	r_   ra   rb   rc   re   rf   rg   ÚcontextÚsslkeylogfiles	   &&&&&&&  r   Úcreate_urllib3_contextrˆ   ´   s  € ôN ÒÜÐQÓRÐRð ˜4¤Ô/BÐCÔCð Ò*Ð.AÒ.MÜðAóð ô #>×"AÑ"AØœZ×9Ñ9ó#Ðô #>×"AÑ"AØœZ×9Ñ9ó#Ðô �MŠMðMä&Øõ	ô Ô,Ó-€GØÒ&Ø"5Õä",×"4Ñ"4ˆÔàÒ&Ø"5Ô÷ Ø×Ñ˜GÔ$ð &/Ò%6”×!Ò!¸I€Ià‚Øˆà”;Õˆà”;Õˆð 	Ô$Õ$ˆð
 	”<Õˆà‡O‚O�wÕ…OàÒØˆô ×Ñ˜wÔ&ØÔ5Õ5ˆLØÔ.Õ.ˆLà×Ò˜LÕ(Õô ˆwÐ-¨tÓ4Ò@Ø&*ˆÔ#ð ”C×%Ñ%Ô%¯l«lØ'ÔØ!%ˆÕà!&ˆÔØ'Ôà*/€GÔ'àœ"Ÿ*™*Ô$ÜŸ™×*Ñ*¬2¯:©:¯>©>¸/Ó+JÓK‰àˆßØ"/Ôà€Nr   c               óP   € V ^8„  d   QhRRRRRRRRRRR	RR
RRRRRRRRRRRRRRR/# )r
   Úsockúsocket.socketÚkeyfilerd   Úcertfilera   r`   Úca_certsÚserver_hostnamer_   rc   Ússl_contextússl.SSLContext | NoneÚca_cert_dirÚkey_passwordÚca_cert_dataúNone | str | bytesÚ
tls_in_tlsztyping.Literal[False]r   zssl.SSLSocketr   )r   s   "r   r   r   H  s”   € ÷ ñ Ø
ðàðð ðð ð	ð
 ðð  ðð ðð ðð 'ðð ðð ðð %ðð &ðð ñr   c                ó   € R # ©Nr   ©rŠ   rŒ   r�   ra   rŽ   r�   r_   rc   r�   r’   r“   r”   r–   s   &&&&&&&&&&&&&r   Ússl_wrap_socketrš   G  s   € ñ r   c               óP   € V ^8„  d   QhRRRRRRRRRRR	RR
RRRRRRRRRRRRRRR/# ©r
   rŠ   r‹   rŒ   rd   r�   ra   r`   rŽ   r�   r_   rc   r�   r‘   r’   r“   r”   r•   r–   r   r   ú ssl.SSLSocket | SSLTransportTyper   )r   s   "r   r   r   Z  s”   € ÷ +ñ +Ø
ð+àð+ð ð+ð ð	+ð
 ð+ð  ð+ð ð+ð ð+ð 'ð+ð ð+ð ð+ð %ð+ð ð+ð &ñ+r   c                ó   € R # r˜   r   r™   s   &&&&&&&&&&&&&r   rš   rš   Y  s   € ñ (+r   c               óP   € V ^8„  d   QhRRRRRRRRRRR	RR
RRRRRRRRRRRRRRR/# rœ   r   )r   s   "r   r   r   k  s¤   € ÷ Gñ GØ
ðGàðGð ðGð ð	Gð
 ðGð  ðGð ðGð ðGð 'ðGð ðGð ðGð %ðGð ðGð &ñGr   c                ó   € TpVf   \        WcVR7      pV'       g   V	'       g	   V'       d    VP                  WIV4       M&Vf#   \	        VR4      '       d   VP                  4        V'       d!   V
f   \        V4      '       d   \        R4      hV'       d)   V
f   VP                  W!4       MVP                  W!V
4       VP                  \        4       \        WWÅ4      pV#   \         d   p\        T4      ThRp?ii ; i)aX  
All arguments except for server_hostname, ssl_context, tls_in_tls, ca_cert_data and
ca_cert_dir have the same meaning as they do when using
:func:`ssl.create_default_context`, :meth:`ssl.SSLContext.load_cert_chain`,
:meth:`ssl.SSLContext.set_ciphers` and :meth:`ssl.SSLContext.wrap_socket`.

:param server_hostname:
    When SNI is supported, the expected hostname of the certificate
:param ssl_context:
    A pre-made :class:`SSLContext` object. If none is provided, one will
    be created using :func:`create_urllib3_context`.
:param ciphers:
    A string of ciphers we wish the client to support.
:param ca_cert_dir:
    A directory containing CA certificates in multiple separate files, as
    supported by OpenSSL's -CApath flag or the capath argument to
    SSLContext.load_verify_locations().
:param key_password:
    Optional password if the keyfile is encrypted.
:param ca_cert_data:
    Optional string containing CA certificates in PEM format suitable for
    passing as the cadata parameter to SSLContext.load_verify_locations()
:param tls_in_tls:
    Use SSLTransport to wrap the existing socket.
N)rc   Úload_default_certsz5Client private key is encrypted, password is required)rˆ   Úload_verify_locationsÚOSErrorr   Úhasattrr¡   Ú_is_key_file_encryptedÚload_cert_chainÚset_alpn_protocolsÚALPN_PROTOCOLSÚ_ssl_wrap_socket_impl)rŠ   rŒ   r�   ra   rŽ   r�   r_   rc   r�   r’   r“   r”   r–   r†   ÚeÚssl_socks   &&&&&&&&&&&&&   r   rš   rš   k  sß   € ðP €GØ‚ô )¨ÈÔQˆç—;§,ð	%Ø×)Ñ)¨(ÀÕNð 
Ò	¤¨Ð2F×!GÒ!Gà×"Ñ"Ô$÷
 �<Ò'Ô,BÀ7×,KÒ,KÜÐNÓOÐOçØÒØ×#Ñ# HÕ6à×#Ñ# H°|ÔDà×Ñœ~Ô.ä$ T°JÓP€HØ€Oøô- ô 	%Ü˜1“+ 1Ð$ûð	%ús   ­C! Ã!C=Ã,C8Ã8C=c               ó    € V ^8„  d   QhRRRR/# )r
   Úhostnamezstr | bytesr   r   r   )r   s   "r   r   r   µ  s   € ÷ 
Vñ 
V˜;ð 
V¨4ñ 
Vr   c                óÊ   € \        V \        4      '       d   V P                  R4      p \        \        P
                  ! V 4      ;'       g    \        P
                  ! V 4      4      # )zÖDetects whether the hostname given is an IPv4 or IPv6 address.
Also detects IPv6 addresses with Zone IDs.

:param str hostname: Hostname to examine.
:return: True if the hostname is an IP address, False otherwise.
Úascii)rR   ÚbytesÚdecoder   r   Úmatchr   )r­   s   &r   Úis_ipaddressr³   µ  sG   € ô �(œE×"Ò"à—?‘? 7Ó+ˆÜ”—’˜xÓ(×TÐTÔ,D×,JÒ,JÈ8Ó,TÓUÐUr   c               ó    € V ^8„  d   QhRRRR/# )r
   Úkey_filer   r   r   r   )r   s   "r   r   r   Â  s   € ÷ ñ  Sð ¨Tñ r   c                óœ   € \        V 4      ;_uu_ 4       pV F  pRV9   g   K   RRR4       R# 	  RRR4       R#   + '       g   i     R# ; i)z*Detects if a key file is encrypted or not.Ú	ENCRYPTEDNTF)Úopen)rµ   ÚfÚlines   &  r   r¥   r¥   Â  s>   € ä	ˆh�Œ˜1ÛˆDà˜dÖ"Ø÷	 
‰Ù÷ 
ñ ÷ 
Žñ ús   ”
:£:®:ºA	c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r
   rŠ   r‹   r�   rh   r–   r   r�   rd   r   r�   r   )r   s   "r   r   r   Í  sA   € ÷ Jñ JØ
ðJàðJð ðJð  ð	Jð
 &ñJr   c                ó¨   € V'       d:   \         '       g   \        R 4      h\         P                  ! V4       \        WV4      # VP                  WR7      # )z0TLS in TLS requires support for the 'ssl' module)r�   )r   r   Ú$_validate_ssl_context_for_tls_in_tlsÚwrap_socket)rŠ   r�   r–   r�   s   &&&&r   r©   r©   Í  sM   € ÷ ß‹|ä(ØBóð ô 	×9Ò9¸+ÔFÜ˜D¨Ó?Ð?à×"Ñ" 4Ð"ÓIÐIr   ))é    Úmd5)é(   Úsha1)é@   Úsha256)ÚTLSv1ÚTLSv1_1rx   )NNNNNNN)............)NNNNNNNNNNNFr˜   )BÚ__conditional_annotations__Ú
__future__r   ÚhashlibrE   r�   Úsocketr{   r[   rt   Úbinasciir   Ú
exceptionsr   r   Úurlr   r   r3   r   r)   r}   r¨   ÚtuplerY   r   Ú_TYPE_VERSION_INFOrS   rA   r   ÚTYPE_CHECKINGrT   r   r   ÚssltransportÚSSLTransportTyper   r'   r$   r(   r*   r+   r,   r-   r.   r/   r0   r1   r2   r4   ÚPROTOCOL_SSLv23ÚattrÚAttributeErrorÚImportErrorÚUnionr°   Ú_TYPE_PEER_CERT_RETrL   rW   r]   rˆ   Úoverloadrš   r³   r¥   r©   )ÚlengthÚ	algorithmrÇ   s   00@r   Ú<module>rÜ      s  øðß "Ð "ã Û Û 	Û Û 
Û Û Ý ç 9ß 3à€
Ø€Ø#Ð Ø€Ø�€à˜3  S¨#¨sÐ2Õ3Ð ñ
 IôáHÑˆð ‰G�G˜Y¨Ó-Ò-ÙHò€õð 
××ÐÝÝ å>ô 9°Eõ ð /1Ð ˜^Ó 0ð.Û÷÷ ÷ õ ð  #€O÷ #Ñ+SØ÷,ò ,ð ',Ð#ó 0ˆð	ÙLSØ˜DóMÐ'©°°yÀÀÐ5GÓ(HÓIñ 0õ +ð —l‘lÐ#=¸uÀdÐ#JÕKÐ õ
õDõ.÷ Pðf ‡�öó ðð" ‡�ö+ó ð+÷"GõT
Võ÷Jñ JùókøðB ô 	Úð	ûð ô ØÐØ€LØ€KØ€KØ%&Ð&€O�lØÐØ 'ÐØÒðúsH   ÁFÂ4+F& Ã F& Ã.F& Ã6FÄ
F& ÆF#ÆF& Æ"F#Æ#F& Æ&GÇG