Files
boc/aamos-ledger-rust/target/release/deps/libsocket2-195d4f10a6fc4e1c.rmeta
T

1022 lines
314 KiB
Plaintext
Raw Normal View History

rust
è#rustc 1.96.0 (ac68faa20 2026-05-25)ÁÀ뉊]!ÜÛê(¹Þ—šên-5be7b69c3ff7b5b8ÁíàÄTËŸ ÜJîÄ)'ß\¥!-3d1337db07d0b3aeÁ¤²XctÔ'ÐÓ©z¨ɽÓ-a4945860e1c53b00Á¤°ð ¾ä-±($²ï=©Ã-7e98a21bfd32b0edÁòÖÀH•‘PIÓHã#£-055f30b747f859b6Árustc_std_workspace_coreÁ­Cçß^ò½èÝ$­Çÿ+Cé-c4878ee60b2242c9ÁŸÃï+Ñ]ŠqB<ÏïW#-8dd1dd90e70d0b6aÁ miniz_oxideÁ€š»J(P>àö÷g\K-1eb618da2918ab7fÁadler2ÁÆ;+Þ®5¥Ìýݰ¦ÛLˆ-f7919172d268e069Á hashbrownÁPäV9ÒÆèÜ"ÊÖVŽ\-0fc2184a5da6723aÁrustc_std_workspace_allocÁs&ØòØy¯s•bæ!‰ýŠ-97e4bf30be240674Á
std_detectÁhŠBîÙºÌI®ËÅš-9dbbf8346ba7ac8bÁrustc_demangleÁûë9´Ç×@Œ’ùXFº-f33013f239bf9f14Ácfg_ifÁÜLhž§Œaã¯>­-0a71c8f33a838301Á addr2lineÁ׎Þ!]8V$É@@-e618e6be60e87ba2ÁgimliÁ¸
°µ~Î1‹Ñt ðÁ€w-1f7768a68858f670ÁobjectÁ
áPÃ?­À¶¼QHJ¥-914cd6a4dbe590d1ÁmemchrÁ›º«8Ór­2Ù $¨ûib-cf21ca6f2bb15dcdÁë
‹ás«LÖ€îâƒ×ɯŒ-ee6f3747e38367f0Áoü¿p
¬? é³ìF&ö(-bc5856fc10fc8d1eÁSOCKADDR_IN6_0ÁtåâtestsÁ,‰h$þgN
FromRawSocketÁl¹â<”N
IntoRawSocketÁlÈâ "‡ AsRawSocketÁ\ÈâAsSocketÁDÕâ§â.
NonZeroU32ÁTØ»£Ÿ NonZeroUsizeÁd® »£ŸRawFdÁ,± »£Ÿ UnixDatagramÁd¼
ȣ|
Ÿ UnixListenerÁdÊ
ȣ#
UnixStreamÁTØ
»£B SOCK_DCCPÁL컣ŸSOCK_RAWÁDÞ»£|ŸSOCK_SEQPACKETÁtµ»£Ÿ IPPROTO_DCCPÁdÓ»£|Ÿ IPPROTO_SCTPÁd„»£ŸIPPROTO_UDPLITEÁ|Ô»£ŸIPPROTO_DIVERTÁt°»£ŸIPV6_RECVHOPLIMITÁŒû »£Ÿ
IP_HDRINCLÁTÎ$»£|ñ#Ÿ SO_LINGERÁL,úiosÁŒì*úvisionosÁ´ƒ+úmacosÁœŸ+útvosÁ”¸+úwatchosÁ¬Ð+üæ*ŸIPV6_ADD_MEMBERSHIPÁœÚ9 ú dragonflyÁ¼ñ6úfreebsdÁ¬Ž7úhaikuÁœ©7úillumosÁ¬Â7úÉ
ŒÝ7úØ
´ô7úì
œ8únetbsdÁ¤©8úopenbsdÁ¬Ã8úsolarisÁ¬Þ8úý
”ù8ú¬‘9üë6¾ŸIPV6_DROP_MEMBERSHIPÁ¤ƒ: úÆÞúÛÕúîÎúÿÅúÉ
ÃúØ
Áúì
¿ú·úÈ®úÛ¥úý
£ú¡Ÿ¡Ÿ TCP_KEEPCNTÁ\î=»£|«:Ÿ
TCP_KEEPINTVLÁlû=»£$KEEPALIVE_TIMEÁt@úÉ
Œà>úØ
´÷>úì
œ“?úntoÁŒ¬?úý
”Ã?ú¬Û?üÚ>™Ÿ MAX_BUF_LENÁ\¼LúÉ
ŒKúØ
´´Kúì
œÐKúý
”éKú¬LúcygwinÁ¤œLü—KœŸTCP_CA_NAME_MAXÁ|‰N»£|¿MŸIovLenÁ4ÕUúlinuxÁœ«PîmuslÁœÙPîohosÁœúPîuclibcÁ¬ŸQû32ÁܶQüžQ4üËP‘ü¡PÁúaixÁŒèQúƼÿQúÛ¬œRúfuchsiaÁ¬·RúîœÒRúhurdÁ”ëRúÿ¬ƒSúÉ
ŒžSúØ
´µSúì
œÑSú¤êSúªŒ„TúȬ›TúÛ¬¶Túý
”ÑTú¬éTúespidfÁ¤„UúvitaÁ”žUú«¤¶Uü˜PµŸ
socketpairÁTËí»£|êìŸ
\“…»£|Ó„Ÿ
\ò†»£|½†Ÿset_nonblockingÁ|îŠúĔˊŸkeepalive_timeÁtª¸»£|œ¶Ÿ original_dstÁd¡ã»£|³âŸoriginal_dst_ipv6ÁŒé軣|—èŸ
CcidEndpointsÁlñ®»£|ä­À 

impl_debugÁ÷sockaddrÁ 
  
*æ *try_initÁ,,¥, STORAGE_SIZEÁ, *ú1¡*
set_lengthÁ*familyÁ*domainÁ**as_ptrÁ*
as_storageÁ*is_ipv4Á*is_ipv6Á*is_unixÁ* as_socketÁ*as_socket_ipv4Á*as_socket_ipv6Á*as_bytesÁ@÷B÷D÷F×HK§LsocketÁNNNNNNNNNN N
N N N
NNNNNNNNNNNNNNNNNNN N!N"NSocketÁrinnerÁNInnerÁNufrom_rawÁuas_rawÁuinto_rawÁuæ unew_rawÁz ubindÁuconnectÁuconnect_timeoutÁulistenÁuacceptÁu
accept_rawÁ u
local_addrÁu peer_addrÁu!u try_cloneÁuºushutdownÁurecvÁurecv_out_of_bandÁurecv_with_flagsÁu
recv_vectoredÁurecv_vectored_with_flagsÁupeekÁu recv_fromÁurecv_from_with_flagsÁurecv_from_vectoredÁurecv_from_vectored_with_flagsÁu peek_fromÁu peek_senderÁurecvmsgÁusendÁusend_with_flagsÁu
send_vectoredÁusend_vectored_with_flagsÁusend_out_of_bandÁusend_toÁusend_to_with_flagsÁusend_to_vectoredÁusend_to_vectored_with_flagsÁusendmsgÁNset_common_typeÁNset_common_flagsÁN¢ broadcastÁ£ ¢
set_broadcastÁ¢
take_errorÁ¢ keepaliveÁ§ ¢
set_keepaliveÁ¢lingerÁ¢
set_lingerÁ¢out_of_band_inlineÁ¬ ¢set_out_of_band_inlineÁ¢passcredÁ¯ ¢ set_passcredÁ¢recv_buffer_sizeÁ² ¢set_recv_buffer_sizeÁ¢ read_timeoutÁ¢set_read_timeoutÁ¢
reuse_addressÁ· ¢set_reuse_addressÁ¢send_buffer_sizeÁº ¢set_send_buffer_sizeÁ¢
write_timeoutÁ¢set_write_timeoutÁN from_lingerÁN into_lingerÁNÁjoin_multicast_v4ÁÁleave_multicast_v4ÁÁjoin_multicast_v4_nÁÁleave_multicast_v4_nÁÁ join_ssm_v4ÁÁ leave_ssm_v4ÁÁmulticast_if_v4ÁÁset_multicast_if_v4ÁÁmulticast_loop_v4ÁÊ Áset_multicast_loop_v4ÁÁmulticast_ttl_v4ÁÍ Áset_multicast_ttl_v4ÁÁttlÁÐ Áset_ttlÁÁset_tosÁÁtosÁÔ Á set_recv_tosÁÁrecv_tosÁ× NÙjoin_multicast_v6ÁÙleave_multicast_v6ÁÙmulticast_hops_v6ÁÜ Ùset_multicast_hops_v6ÁÙmulticast_if_v6Áß Ùset_multicast_if_v6ÁÙmulticast_loop_v6Áâ Ùset_multicast_loop_v6ÁÙunicast_hops_v6Áå Ùset_unicast_hops_v6ÁÙonly_v6Áè Ù set_only_v6ÁÙrecv_tclass_v6Áë Ùset_recv_tclass_v6ÁNîset_tcp_keepaliveÁînodelayÁð î set_nodelayÁNóreadÁó
read_vectoredÁõ N÷'aÁ÷Þ/÷ê/ú NüwriteÁüwrite_vectoredÁüflushÁNˆ0«0¸0Î0N ×sockrefÁSockRefÁ'sÁ¡ _lifetimeÁÕ1å´Õ1¤÷×sysÁŸŸŸŸŸŸŸŸŸŸ Ÿ
Ÿ Ÿ Ÿ
ŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸ Ÿ!Ÿ"Ÿ#Ÿ$Ÿ%Ÿ&Ÿ'Ÿ(Ÿ)Ÿ*Ÿ+Ÿ,Ÿ-Ÿ.Ÿ/Ÿ0Ÿ1Ÿ2Ÿ3Ÿ4Ÿ5Ÿ6Ÿ7Ÿ8Ÿ9Ÿ:Ÿ;Ÿ<Ÿ=Ÿ>Ÿ?Ÿ@ŸAŸBŸCŸDŸEŸFŸGŸHŸIŸJŸKŸLŸMŸNŸOŸPŸQŸRŸSŸTŸUŸVŸWŸXŸYŸZŸ[Ÿ\Ÿ]Ÿ^Ÿ_Ÿ`ŸaŸbŸcŸdŸeŸfŸgŸhŸiŸjŸXŸkŸsyscallÁŸÖŸèŸŸ_cloexecÁŸis_end_of_recordÁis_out_of_bandÁŸ×ŸMaybeUninitSliceÁ˜ˆ0˜Á˜ç1Ÿœˆ0Ÿžˆ0Ÿ ˆ0 æ  as_sliceÁ  as_mut_sliceÁŸoffset_of_pathÁŸ
unix_sockaddrÁŸlŸset_msghdr_nameÁŸset_msghdr_iovÁŸset_msghdr_controlÁŸset_msghdr_flagsÁŸ msghdr_flagsÁŸmsghdr_control_lenÁŸ®
is_unnamedÁ¯ ®as_sockaddr_unÁ± ®path_lenÁ®
path_bytesÁ®as_unixÁ® as_pathnameÁ · ®as_abstract_namespaceÁ¹ º ŸºŸsocket_from_rawÁŸ
socket_as_rawÁŸsocket_into_rawÁŸ¡Ÿ§Á Ÿ²Ã Ÿ poll_connectÁŸÖÆ ŸãÈ Ÿ getsocknameÁÊ Ê Ÿ getpeernameÁÍ Í Ÿ­ ŸºŸÄ Ò ŸÓ Ô ŸÉ!Ö × ŸÁ"Ù Ÿ‹!Ÿô!Ü ŸÓ"Þ Ÿá"à Ÿ#ŸÌ#ã Ÿó#Ÿ¬$æ Ÿ timeout_optÁŸ from_timevalÁŸset_timeout_optÁŸ into_timevalÁŸš/Ÿ into_secsÁŸ fcntl_getÁŸ fcntl_addÁï Ÿ fcntl_removeÁñ Ÿ
getsockoptÁó¥ó Ÿ
setsockoptÁö¥ö Ÿ
to_in_addrÁŸ from_in_addrÁŸ to_in6_addrÁŸ
from_in6_addrÁŸto_mreqnÁŸþ_accept4Áÿ þ _set_cloexecÁŸ as_fdÁŸ
 as_raw_fdÁŸ ÷Ÿ ˆ into_raw_fdÁŸ
Š÷ŸŒ from_raw_fdÁ  
IPV4ÁIPV6ÁUNIXÁ for_addressÁ˜÷š÷œSTREAMÁœDGRAMÁŸ÷¡÷£ICMPV4Á£ICMPV6Á£TCPÁ£UDPÁ£MPTCPÁ©÷«÷ ­ is_truncatedÁå7¯
¯ˆ0¯ˆ
³ˆ0³× ˆ0æ  ¹ˆ0¹å¹´
½ˆ0½Àæ À with_timeÁÀ
with_intervalÁMsgHdrÁÄ'addrÁÄ'bufsÁÄ'controlÁÄÇÄ
_lifetimesÁÊóEÊ€FÊFÊæ Ê with_addrÁÊ with_buffersÁÊ with_controlÁÊ
with_flagsÁÓ'nameÁÓ€FÓFÓ× MsgHdrMutÁØóEØ€FØFØÇØ¥FÞóEÞ€FÞFÞæ ÞÛFÞìFÞ€GÞflagsÁÞ control_lenÁèªGè€FèFè× man_linksÁSockAddrÁîstorageÁîñƒNInterfaceIndexOrAddressÁóIndexÁô
ôˆóAddressÁ÷
÷ˆN
ú×N ü÷N þ÷N
÷N÷N÷N÷Ÿˆ×ŸŠ×ŸŒ×DomainÁŽ
ŽˆƒÖ˜óš
šˆŸƒ¡Ö¤ProtocolÁ¦
¦ˆ !«ƒ"­Ö#$° RecvFlagsÁ²
²ˆ%&'·ƒ(¹Ö)*¼ TcpKeepaliveÁ¾timeÁ¾intervalÁ¾retriesÁ+Â×,ă3
4
5
6
7
9
:
;
<
=
>
?
G
G
G
I
I
L
L
w
|
|
}
}
~
~



ƒ




ˆ


Š
Š


Œ
Œ
Œ



Ž
Ž






















˜
˜
˜



š
š



œ
œ
œ




ž
ž
ž
ž
Ÿ
Ÿ
Ÿ
Ÿ
Ÿ
£
¥
¦
§
©
ª
«
¬
®
¯
±
²
´
µ

·
¹
º
¼
½
¾
Â
Â
Â
Ã
Ã
Ã
Ä
Ä
Ä
Å
Å
Å
Æ
Æ
Æ
Æ
Ç
Ç
Ç
Ç
È
É
É
Ê
Ì
Í
Ï
Ð
Ò
Ó
Ô
Ö
×
Ú
Ú
Û
Û
Ü
Þ
ß
á
â
ä
å
ç
è
ê
ë
í
ï
ï
ð
ò
ô
ô
õ
õ
õ
ù
ù
ú
ú
ú
ý
ý
þ
þ
þ
ÿ


ƒ
ƒ
ƒ




˜

ž
ž
ž



£
¤
¥
¦
¨
¨
©
ª
«
¬
­
¯
±
³
³
´
´
µ

¹
¾
Á
Ã
Å
Ô
Ö
Û
Û
Ü
Ü
Þ
Þ
Þ
Þ
à
â
â
ã
ã
å
å
å
æ
æ
æ
æ
ì
ù
û
ý
ý
ÿ

ƒ

µ
µ
µ
¼
¿
Ð
×
×
×
ä
æ
ç
ì
ì
ì
ò
û
û
û













 
¢
¥
¥
¬
®
±
±
¸
º
½
½
Ã
Ã
Ã
Å
Øîî–Iï¦Ið Žy†:¹éþZ“¼”¼•¼V4Á–¼ˆ—¼˜¼V6Á™¼ˆ cÌ£•éþZª¼ª¼ SocketAddrV4Á«¼ipÁÑS¬¼portÁÑSµÃѨbF(ÆéþZ½¼½¼ SocketAddrV6Á¾¼¿[ÑS¿¼Î[ÑSÀ¼flowinfoÁÑSÁ¼scope_idÁÑS¸dÛÔ#¹G[¿cþZµßþZþZþZšeþZ¿cóôõçIöˆ÷øJùˆº8¹¶¨gà rrºsÇNy
0Àšïà  ˆ0í^Ÿ!í^Ÿ!ž_¿cí^éí^‡#‡#ˆ# TcpStreamÁ‰#ˆô" ¤‰?ßøéí^Š#Š## TcpListenerÁŒ#ˆô" N À];óÉéí^ð#ð#ñ# UdpSocketÁò#ˆà# ¬ãøàFð™éÐ_í^é•`í^éÜ`í^é!Æ1¡ç1­Pvßó0ŒjÕ1éÅa Õ1¤¿cÆ1¡ç1­Pvßó0Œj8¿cŽŽ—Kˆ 9sÊñ
Ãï¿cššóœˆ oñK¦¯^¿c¦¦§¥L¨ˆ ¡$Í…Z ¿c²²³ñL´ˆ VÔ¦ÈU¯ÇÌ옘å7šÁŸç1ŸaCžˆ0 Êd,í^«+í^éö+ö+OwnedFdÁ÷+fdÁä+Þí¼>XG¸,í^¯+í^éí^¯e­+í^Š ébÛébØébébÐìébµßébébéébéÕfébŠ ¡cÛ¡cØ¡c¡cÐì¡cµß¡c¡cé¡cÕféÕf¡cŠ ÙcÛÙcØÙcÙcÐìÙcµßÙcÙcéÙcÕféÕfÙcŠ ‘dÛ‘dØ‘d‘dÐì‘dµß‘d‘d¿c¯¯°å7²ˆ ßã3 œ#ˆ0é!ãhö!ãh¿c¾¾¾M¿ÒMÀÞMÁîMYùús§;]صi¿cÄÄåEÈÇÉ¥FÓ%ìHÖ >3ªG€FF¿cØØÎGÜÇÝ¥F*W½§k1ªG€FFñîŽŸš«¦·²Ä¾@îBîDîür€r‚‡#„Š#†ð#™ö+ŠŽšŸš¡©¦«FîúórˆŽŠšŒ¦²³¯Â¾ÓÄèØH¤š°¦¼²JîŽ¡š­¦¹²Kîó
ür€
¹¯œ˜ž˜r„r‘Žš©¦µ²Žžšª¦²Ž£š¯¦»²½¯ØÜé*¿c qµßR"še"à Ÿ! é! Ìì ,«+¯+­+Š ÛÐìö!(Ò×ò"¡¾½'Èô#þZW þZajt
ÙpÌ¿ îÞ+üæxþZsockaddr_storageÁ ss_familyÁ __ss_pad2Áà 
__ss_alignÁÃ n+x•¡5¯­èp¦I¯Ó
 î ×+þZ¶qªèp¨¶q~èpr¦IÉÍc\Õ#üã#)
-—”?
Õëƒ?
ÑÛÑÛ MaybeUninitÁÓÛuninitÁÝÔÛ»ÝÍõƒ«%9¶quŒ•? %–Ë?

Å–Ë? 
¶qýŸ™/N
öq ¾™N©ÙNº-È™N P Ý$üã$õ üß$ú
%àë
UÚë

­•?
º•?
À•?

<š$d¤${èpüº$$ ¤¿$dÇ$G D ºu#DÕ$S eô
™"ºu èp$º$! Ø' Þ'ß':

—ì
ßßErrorÁà ¬
ÑøÿËO Ÿ5ì Ö¿¥þZ«y
³ì

öë
«óy-ÿë
¬ü&<ü& ý‡ä#?½‡ä?
ÃÛÃÛ ManuallyDropÁÅÛ»¬µÜÀ,%*¶qZ ¶q
©ä?ýàÕ%N
°ä? '£'üÏ%æ î ´'\Ã' Müë Ö¿ñy«y
„ì´ì
,ü¾¡üÑ#Žü–$Éýá“à?ó¶qŸý“”®?ý¹ƒR?ò¶qÕŸ”?ýúɺ?ö¶qeŽ•?ýöÐæOú¶q›•?ý·”ŸN¬¶qí·ÒOý¬*ñFšî$Fùæ¬Þ[ ÿÝùæ“á4 ý»•MXʶq}î—N ö¶q·ýØêÜÚ[óy«yñy0ºxóyÕfóyñy èp Àt•óë

…“ì

È0ºxóyÕf¾Ëà
üÄ%”ý ’Ƕcùž"#ýä˜W
â|E‡”ý¾(F
×|-¹”ý×…¨
à|Uî(
ýÕàì?÷¶ql„'ý˜@ZÛ÷z¶q]Ÿä?ýµ‚³Z¶q5«ä?ý¨ÃåNݶqUÖƒZÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ñy«yÌçºxÀt:èp²Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
óy«yêÀxòºuëÄxÂÍ¥Ò­ÀtºýŒ•"?ºu` Àtu–Ë?÷ƒ -óë
óy 
ñyø
«y
þZ$È%¶qÀtèpTÅ{ý ÷züinitÁ(¦Igãé/èpM¡˜N¶qýå•!X¶qƒvdŒ%/èp
´xºxǺxm
èÝéåˆ%FÐu5°ö
ÜWù@#óy ×'
Úsëu­é(

Ƕqýªâ#?ì„!
Ü„!
À¶q*ü„!*èp ­!üä K/èpƒvm+ˆŽÒž 
š
÷zT 
Å{P
M  I FELÍ\U îRYR Ø'0
 Ÿ¶câ|Š×|à|}÷¶qxvÛ÷z¶qsp¶qkhݶqc ñyè$°*
óyä$þZ2¶q2Àt2èpÒ[
Íc
Å{>Ø„<resÁPž$ͦI<Ù#ÒaddrÁ®À
)/èp€†úóyö”†ð¢†é _ref__lenÁ
_ref__storageÁ$÷)l÷) 
â¡…0…0PathÁ†0Çß-bªŸðcÂ^dDü) ƒ*üÝ)( 
¦~  Š*‹*üý(Ž1Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
þZ«y¤˜)äŒ$Œ) êŒ< äŒ^õ
$¥ÞŒgÆäŒèäŒîŒý+èp•,3ü¼+Yò+ þZLÕ+èp4à+lengthÁK´ö,¶q-4üÂ,P\à,Âp,Ö, ,a¶q_4]ZÂpXaü÷-´÷-¶q%Õf •.üð-' Ž ..5üÁ-\éb4ß-Âp,Õ-Õf:³°¶qÓÕf®¬ Ž©§5¥éb¢Âp Õf)(¹ÚD…/èp“/6üÖ.=èpLñ.Âp,ç. ,]èp[6YèpVÂpT]~ü‰N ¶qn
 ÍŽ sa_familyÁsa_dataÁdí3Ÿy^s  0§07üÇ/` Û¶q²–4›0±–|å/Âp,Û/Å{¾Kßå¶qüÿ/"

$0
Û¶q²–»¹7·±–ÂpÅ{W¬åd”1¶q¦18üØ0N¶q„ù0þZ$ð0 ,\¶qZ8X¶qUþZS\}´³2¶qü³20 â2é29ü…2d$¤2Âp,š2p2<Í2Õfž¤¶q´Í2BÕf»®´²9°­Âp«iÃã±Õf´ÿ3¶qüÿ31k
 ¯4¶4:üÑ3e$ð3Âp,æ3p2D™4Õfž¤¶q¼™4BÕf»®´²:°­Âp«iÃã±Õf´„6¶qü„60· ³6º6;üÜ5^$õ5Âp,ë5p2<ž6Õf ´Š8¶qüŠ80 ü‰N ¶qò ˜˜ sockaddr_inÁ
sin_familyÁšsin_portÁsin_addrÁœsin_zeroÁd‹¬s«™_Û ƒ:l¶:èèin_addrÁés_addrÁâVH.Çèpä…Ù¡¹¿
!  ëuƒväç¸
 ¾º ¡Ùlê:ùݦË#! ·
ÖݸË!,üÊ;1
ü‰N  ¶qŒ
 ¥¥ sockaddr_in6Á¦ sin6_familyÁ§ sin6_portÁ¨
sin6_flowinfoÁ© sin6_addrÁª
sin6_scope_idÁÀƒ‘®’ÙšÉ Ç= tû=
õ õ in6_addrÁö s6_addrÁO…¡ö¶ãÅäëuƒvì’¸ ̺t°>
G÷£
²$­A Û¼À[üÇ;ôü‡8´ ÁA ÷:ü‹;+Üš; ÍÊ[Ã
ª¼- “¼ µ; ü†;1 Û¼À[ ¶;Œ ¾>üÒ>¼üá>¬”®?
èp”ï?
èpýÄt-Ã ½¼
 ŒAu “¼ AüÍ> ۼÀ[ ŽA`<üÏ7ò ü»9†ü”:­üÒ:oüþ<›üØ=Áü˜>ÖÛ¶q¶¡¬î9ü·Ømúü:'ù¹½
ë!§Òl”Ùýµç‹RüöØ,ùÝŸæó!‘ÐÜÝ:ùÝòÊi! Ðîç! ý†[cÃãS zÛ¶qФ´±=üÚ\üüá=)ý¼’ÌRäÛÚ‘Ðä£>Ðzýâs•ÃéSÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÀ[”ê7Âp,à7yµ¡üÑ93Å{c¾º¾ºIpv4AddrÁ¿ºoctetsÁ¯Q5N`hzØÊ˜:$Ö:|À[p\oϤü”=4Å{B̺̺Ipv6AddrÁͺ”­¯QÉ¢}ÝÏÆÚÜ=$œ>ZÀ[f÷\dèpbèpR—£gèpº¶¦
*ÚŠ$¿9¿[æÎ[èÚŠ$‚=
¿[ Î[˜
.<¤8ÕfDä;Õf÷£÷£ 
¶qŒÉHDÉHèp ƒv ÙHý¸)$býî#)^
 
ëuý¶)&b
Û)b ÚHãH? ü¥F¾Ÿ
7D¸H¬Û¶q²–¦
ÃÛ²–ëu4ÁHý¸#¬bërëuü˜HCPšî$FLÿÝFýÞjKXÀëuu¥'bXÊëu}Ô'bý»µpNÄëuýà"¹^ ·ç±ëuÍN  ç±,»FÂp,±FƒvŽèpŽÅ{/ ç±s.2ý‡k Xëuƒv¿ëuƒv
Ïéðˆ%F\’U­ôËX 
  Š  Àt: 7  4 ºu/
¼ Ðu& Ì ëu$ Û ƒv"
o ¼¹   ®ÿû ÷z¼Å{¸µ±
–ÌX yó¤N M‡O Ф »VüÌV-¯!
œ›W\›WMÈ‚Ã7
è!÷£,
S
 ­Wü‡W'üÐW"l…Ú]ü׸﮶¦üéÙ0 õ  ˜Úü¼W6ú¥ ñW|˜XmÃèpü€X'èp ¦X|øX m؛à èpüàX'èp †Y <µ_

̪_ î
$#èp Â_
È_É_Eü üŽU»
üÖUó üîUžý¸ÊçXÓ¶qü©U!'ó¶q;#ò¶qö¶qú¶q
 ¬¶q ÿ
šû
÷ ÿÝñ ë
ʶqç
ð÷¶qmŠÌXíÛ÷z¶qêç¶qâßݶqÚýØ>O¶qФ´¦Výž‚ìS4 Wùݺö!“Ð<§W% Лø!ýòx<ÃêS$íWü¦ÙuûÜýË×­RDŠÚýßîSTXýª›ðSTýXÔÀФô×ZþZD¼T÷\$¥T¶qË·ü‹V1ºuÐÐú¥yèpèpé¶qºÀtVÀtÛ%!ºu}%÷ƒÅ{Ê"Ø„È"¶¦ËÚŠœ¦I²ÚU$&èp¦I<òUìDâVÕfí¶qê¶qƒvNФƒv
ɶqýÆË$Xæ…æÐu&¢†µ÷£T¶fð¶qhoèpˆƒvi^  ç±\TÊf R
¶qÊ Ñ èpê ƒvË À
ç± \ •á+    +%±Á,õ±Á,  ëu-+3
/
†Ä$ýª/'+ (
 E¸/+
EÂ/+%Ì/+;-+K(ýÞÂ+
Ÿ+ Úfýª/,+‡(Õf
Õ/+IIü„fVË ? o7Ð |"Û¶q²–v“"Û²–ëuÐ Ð ërëuÌ $šË $ÿÝ
$Ç ÀëuÄ $Êëu À ÄëuÕ
¼ 
·ç±ëu¸ 
œ
?x@ 7¡
 M#
Û¶q²–G
d# Û²–ëu¡
 ¡
 ërëu
 ì$šœ
ä$ÿÝÞ$˜
Àëu
ë$Êëu

Äëu¦ 
·ç±ëu
ý¡žU"Œç±ç±ü±f#ý”+†jëuëuåО"ýÀæ+ý€ÁU,„tëu„tëuðý˜,Î+¢jëuëuý¬E+ýà.€+$¢fÂp,ŠfÂp,fƒv´ èp´ Å{U¾´ ƒvÕ èpÕ Å{v
¾´¸ Ú†Ä+†Ä+¾´•±Á,¾´ Õf¹
ú ëuƒvG#ëuƒv« ëuƒvg#ëuƒvU/+ëuƒvƒµ· ƒµ¾ ”†+”†+ÒÄ%T×gj¶qâ
é
èpƒvã
Ø
 ç±\ýÜí%L  ,
±e-ÜíLUöíLýâíLíîL  

   
¬rX   å”rX-
­ç± 2 #Z 
`  f 
l  ôg
¯rX «
¨

†ÄÞÛ ç±
Ø ÕùÇãÕ:L´-
¤eæÍãÕL ùÇïÕ-LùÇéÕ4LLü”g`?Ó³7À'Û¶q²–º×'Û²–ëuërëu_)šW)ÿÝQ) Àëu^)ÊëuÄëu
·ç±ëuü
ý¥íL÷eëuæÍ\âgùÇËÑäL ÈÊæÍ, ùÇ—Ò˜L

ùÇËÒäL
ýŽq¦X
Â籉ǤÒL
œ„tëuAÇÚÒL
%ërëuùÇøÕ"L
v*š&n*ÿÝh*"Àëuu*ÊëuÄëu0·ç±ëuÇgÂp,²g æÍ,¹gÜÒgƒv°èp°Å{Q¾´œ ƒv›ÒL
†ÄÕÒL
´ï
¾´o¾´ò¾´Ùˆºˆžsëuƒv/(ëuƒvëuƒvO(ëuƒvƒµ”†%àÍTôÏIÎÎòƒµ°=³." Ð_À_À_Þ^Á_Çü^§Ö'®•‘ãCã`ã`ä`ºå`ˆ³` Gzds—€Y€YYFileDescÁYˆ½X ´™Ê¸f¯eºÆºÆ»Æ
I32NotAllOnesÁ¼Æˆ¢  $ÄÒÿ|âÙÀ V Õf
Ä."î"w ü”"Zü•ê_¾üÉ"ùßßa…àN\çêýÌÀA·#ýôZ;LÇ_žýÈ·?Mša§ýä¢?FùX]ö·MýŒ.?",]’£FùÀÆ VëÄU»."Õf\³" í^,©"€Ø ôT¿#Ð_ßÖŽ×Áׯe€ØY  ÕfÐ#x
üô"\üöêb¿üª# ùÍò …ìNlÉëýÙÂ@»#§
ýµ[=LÈ_´
ý‹µ6M”aÂ
ý¦ 5FóXÏ
ý±/S"ƒ,Ü
ýƒ4o@¼¯e½Ù/"ý°_Aà¯eÍÑ4@ýâT9@ůeÕÙ/"ý”8A
á¯eEU@
±ëÄUô/"Õf\”#í^$‹#€ØPìëñë lñë

Dôë
4Tôë ýëäì çìèì ü·è±üèë¡c$Ýè¡cÐè¡c®¡c¬´´ÌUû÷$‹ù Jö­#) 5 ¿c{C6
‡dW6  {­ÏÌø çIèp"(4éàøÀ6ƒá
Ñ6™án'Ïÿ÷  (Ï€øûpv}
Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ŸÈŸÈ Èµx éBL ž^   c cˆ¢cµ
 `£cbufÁ `àB¤GS
S[Ͳéà» ÍÆ ö­Yéàb ùän¢±°__self_0Á¹ä©ÜŽåéàÀƒáñîäéàJƒáœðÊtðÊ Õf! ‚ËÕf@!$ŽË Û¼­Ö­ÖDurationÁ®ÖsecsÁâ}¯ÖnanosÁâ}Zµ–²ªüíÊr˜ü­Ë+´ÁË|ÁË Õf! ÖËB
Iœ­Ë
€~Ug ×Ëü¨Ë1 Û¼ñæ ØË­ ÞËáË¿ü©Ê¸Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙñæ„ÖÊ» » Ô%¼ l_onoffÁ½ l_lingerÁ~)d%„Ÿþ¤4¾Ê3Õf2ñæywÕfvÔ%5ßD¯Ìt©Ì$üÄÍH »  çÍÕf €ÎÕf9DÇÌ Ûñæ¼Í ÍDÍ 
%<™Í
Œ~2L™Í ¡ÍbÕfp ¦ÍüÔÌ^ »  ÷ÌÕf ±Í •ÎÀüã˲üÂÌpòé\—Ì¢éDøËtÂÌñæ8Õf!Õf)" ñæ%durationÁLÐí}4÷¦º9Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
«yƒ§ÿüǦ<™ïtÞ¦ í^LЦ 34Ï©º9™ïÛ©üŸ©<™ït¶© ÀÚL¨© 4=¿AÃÛÃÛƒzÅÛ»¬µÜÀ,%*í^×Û×ÛØÛ
MaybeDanglingÁÚÛˆÙ @€y,¸·Â¦í^í^Û˜üž=Å
Åí^dÉÀ
áí^½
ÀÚ Æ1¡ç1­Pvßó0Œj 
º9
Ž,•b<=-" €Øþ
 Õf
¡-" ¤º9Õf%Ö½üæ5üø"¼º9
®+í^#€Ö®º9
àWº9™áº9)s  …ùA ×Ûí^ý»41@ ÃÛí^
ë4@ šüÈ º9 PhantomDataÁFu\»ŸÀÚ ÉМüØøüÏýé,?"ÿ+\™ÓëÄU˜-"
¼í^q
àí^Œ

–ó •bÕfÎNÎN
BorrowedFdÁÐNÉdä+ÑN_phantomÁä+§]òÞ^Ÿ<ÉÈñí^€Øýñ2¡Éd!Œôû¿õGêõ%¬¼Gd¼G­Íƒvü¡G1Žƒv,´G%<­Íܾt4¾tÕf
”Çtü Õf Øtü¹t! š Ùtàtü„t\¡c$ªt¡c$¡tÕfÕf:ü Õf´§†4§† Õf! º9Õf ¼†ܧ†º9Õf Á†Ȇüñ…W$˜†‘d$Õf¡ÕfŸ<l°†àÕf×ÔÚÕfò ?àÕfÎ˹ÕfÇÄÁ½‘dºÕfXÕfWÓõ¹àÕf´øˆ4øˆ Õf! º9Õf Üøˆº9Õf ’‰™‰üĈU$鈑d$àˆÕf¡ÕfŸ<lÚÕf×ÔÚÕfò ?ÚÕfÎ˹ÕfÇÄÁ½‘dºÕfXÕfWÓõ¹ÚÕf ü”œr¼¼œ%ôÈ,±% Ë4Ì4Í4
__variant1ÁÎ4Ï4
__variant2Áë òg Lîœ     üð›Å ˜º9…öFu\»Ÿ 
ÑÛÑÛÌsÓÛásÝÔÛ»ÝÍõƒ«%9ëu ´»¢üœ›Ÿý½ÈW,…tÏ„dÀœ$ÂÏ„û‚4Íœ˜˜å7šÁŸç1ŸaCž¤Ñ›Ì„®›  iovecÁž iov_baseÁŸ iov_lenÁ#Ø»l2ûº7ú‚6ƒvÊ ΄…ôÈ,¯ãz

ÚsÏ„ÿ ÄžžŒžžº†ú‚" Ï„„¸ž º†ƒvT+Q+ ΄N+K+ Èž Ñž£ üÁÇ%Âû‚Ï„4°ž/+ërÏ„üˆžA¶>š-+Î>ÿÝà>)+ÀÏ„'+ë>ÊÏ„&+$+ÄÏ„:,!+·΄Ï„+ ΄”â ì…ˆwú‚wƒvU ΄,1#+Ï„ƒv1BÏ„ƒvƒµ+ŒÄŸº†ú‚„ÞŸ º†ƒvýÿ=(býÃ')^ ΄ýù=.b
¦>b îŸ÷Ÿ¤ üמ “'Âû‚Ï„4ÖŸýí7ÂbîrÏ„üªŸE¶>šî$FÎ>ÿÝà>ý,ÀÏ„uè;bë>ÊÏ„}—<býïÁtNÆÏ„üýµ&¹^º΄Ï„íÄÂNÌ„´€Ÿ ì…Lòžú‚vƒve˜‡P& ÷,Ï„ƒv1BÏ„ƒv
ŽÏéçˆ%F<¢¡䢡ƒv‰ñü‰N ëuƒvlüÏ¡(ƒv ö¡\ý¡Š¢¥üΠ¼ü—¡süÄ¡Fƒv,‹¡ õõ sockaddr_unÁö
sun_familyÁ÷sun_pathÁÀžt(,O¢<ë ƒv$›¡ Æœ¢¡ƒv$È¡ ȦI9baseÁ@õ
4Üú=¶q¼°ú‚üް&ú‚T̰é>èp亰èp Õ°Ù°¨üǯÿ=7D¢°@Û¶q²–>7?6,Ѱ‡° ­C­CmsghdrÁ®Cmsg_nameÁ¯C msg_namelenÁ°Cmsg_iovÁ±C
msg_iovlenÁ²C msg_controlÁ³Cmsg_controllenÁ´C msg_flagsÁ"š\7B~" å¯Âp$÷¯ú‚ƒèpdÅ{ž?msgÁ3Ð 6H¬é³ú‚ì„´ƒv¤´ªüŒ³˜â³Ó“­³ú‚¿³ƒv׳±”#µ %(b¬’µÕfªµ«üÇ´c‹µÓ“æ´Õf,ø´±”ÃHIl“¶ Õfĉ¶ ²  ¶£¶¬ü͵V‘dLùµ Õ“èµÕfs±”<”„·ƒv·­üƶWƒv,ø¶è˜ç¶±”2üëÆò¬ëÆR=Y=¶q%‰Õ(Õ
üÏ)^B¶q7=©‘ü‹Ï+ ÁÏUMÕ Û¼Ä
˜Õ
™Û1ÛÄ%¤Û1  
 T®Ç
 §C èp¼¼Ç




  ž ƒvœ
£
È
ƒvˆ

v
|

ä¼Ç

èp ×Ç

ü®Ç*
 
 

º9ü  UŸÛ1  Û¼
¨Û1  ÜË
È1Û
ÉÈ1 5-Ë /º9e­È1 ý˄̯üÀÆÄüͼ±„ðÆ“?;LÞÍý¡ŽÕ‹ƒÄ²ÕfÄÂpüèÍÛüíÍÕ²Õfڟ柿‚D7D’Ï@Û¶q²–‹D@Û²–ÆÜ›ÏýýÙ×1·TİÕfÄæŸüŽÇÏ­”Û1ü’ÇÊ °Õfô æŸÇ7F
6,³Ç
®
¥¾
´  ²
 ý”Ç1µTœëËe‹È1ùö­5/ê·$ÜÆÂp,ÒÆÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙyÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙļ
BÄŽ©‘Å{ãFÄ&N
èp
èpx
ƒv
ƒv ©‘~ ƒv|
À‘
È BÕfÑŸ
®Õë 
ÓÛ1Í$®ÇÂpGHèp §® µ
A  ?  ƒv=  D  È, 
 ƒv)  ' 

 %¤èp¢ ²Êü®Ç º9òüÌʺ9B ÍËÜ˰LjI63Þ ¥îã á  ›Çë Ä<“ÇèpFèp¬ƒv<ÂpÁƒv¾ ©‘º ƒv¸ À‘Ë ¦IV$ÓÆÂp

_ref__selfÁøDÿD¶q¦ÉÏ À¯­J¶q7=©‘ª§ú¦ ۼģý†HÕº9‚£=±"¦E;‹ƒÄÑŸõð²Õfڟ柫nJ7ì@Û¶q²–uJ@Û²–Æê‚£Ô´ÍÂp,ªÍ‘FÄ ©‘ Å{ŠJ.ð=FÕfÑŸ2J $ÏÂpŠJ¶q7=©‘Y V ÂϲK7þ@Û¶q²–*K@Û²–ÆûÄïÍÑŸk©‘
Âp|Å{ŠJ$«ÍÂpž¯¨`,g,ßÖŽ×Áׯe€ØŽ+ ÕfŠ+ôê¾+t+àNn+k+·#g+b+Ç__+Z+šaV+Q+ùXM+J+,G+D+ëÄ>+Õf4Óê Ð_4±ê€ØI-¡+,4ÂëßÖŽ×Áׯe€Ø–,  ÕfØë¿ 7+)+ìN"++»#++È_++”a
++óX+ü*ƒ,ù*ô*¼¯eñ*ï*à¯eì*ê*ůeç*å* á¯eâ* ‘,ëÄà*Õf4µëÐ_4”ë€Ø%¡),ƒv¤Š®|Š® ! ®D%¬¢®„¢® ! ¶®D%$® Û¼ñæü‡®ØRº9ºº9à®|æ® ´æ® û®$НÌ‘¯ „’¯
 
! 
èp ©¯
ü‘¯  $­¯èèp °¯ ÄÀ¯ ί   $Ó¯
 
1
8lÀ¯
ÿ} E
6 [ ׯ
  ô»¯ Û¼ñæ د Þ¯ vá¯éü¾­£üÜ®ƒü†¯Y¢é„ð­ã
ã
timevalÁä
tv_secÁå
tv_usecÁ;[›ä
sDÔ­æåœ
èpãèpâáñæèpÐímsecÁcnsecÁ8 ü‹Ø!lžØ$žØ 
&4£Ø
ØQ3D£Ø ªØ^
e”‹Ø
­Òr «Øüñ×B è ²ØµØùüˆÖ­Á¢<»Öùä$§Öèpë—£éùäèÚŠ%K2Mt…Ù èpHM —£  Ù?M ¾º;M¤Ùú˜IŠI§ÒƒI€I‹R{Iö­DçØÁ¢<ÒØ—£ÜMèp«Ë¡÷ICC¶¦C õ C›Úû¢@–@­R‘@ú¥DÚÙ ï®$ÆÙ¶¦œCÚŠí@ÁC$…Ú ÞC
æC4ŠÚ
­R5A ‘ÚðC õ íCÛûzAú¥Éñ¿Ã¶¦\Dñ¿ÚŠßµAdêÚ ¶¦ÁM ̺ öÚùÚüK KÌRKï®DÌÚú¥$¹Ú¶¦}ÚŠ^K L¶Þ|°Þ%Lóà Jö­¬­áL¸á 
&T­á
ù3DLøÞ çIèp¬²ßL½ß 
&T²ßÄ1B Æßüâß"´íß  ýùä% 2 I
PTâßÄZl ƒà|Ÿà   TŸà
 
$ 
Õf2 ­à
ü†ß³ ù ¸à    !) Áá¬ÝáLèá 
&TÝáÄ1B ñáüᘠù âÕf ˜â ¢âýü¦ÝüüÊÞïüÃàÖùùip_mreqnÁú
imr_multiaddrÁû imr_addressÁü imr_ifindexÁaš’ô!ð·t›ÞùäLÈ݃äLâÝüÊÞ8ÍéÁ¢ÒùäÒÁ¢ùäùäö­¬îßÕfAÕfIèpBùä«Á¢ùäÁ¢×ùä×ùäö multiaddrÁº interfaceÁųʧ³ÊŠ£ÖQö­¸ÀÖQö­sýÎùäŸö­°ÖQö­#;*;Ð_ßÖŽ×Áׯe€ØU:  ÕfQ:ô
ü‰´:Z:wDµ´b:¾_:^:àNX:V:·#R:M:Ç_J:E:šaA:<:ùX8:5:,2:/:ëÄ):Õf, ´ÀÚ,–´€Ø2<Ê$³·Ð_ßÖŽ×Áׯe€Ø;
 ÕfÈ·ü‹·=3:xT¸·;:¿8:7:ìN0:.:»#*:%:È_"::”a::óX: :ƒ,::¼¯e:þ9 à¯eû9 ù9ůeö9ô9 á¯eñ9  ;ëÄï9Õf,£·í^$𷀨M(—Æ:Ë:$)éb5 éb?HR˜Ï:˜Í: ÄÒ&0(™ï:
Õf Õf0ó:
Ú:H™Ñ:ÄÒÄÒÕfˆÕf5¹
BL¤æ; Ždí;ÕfüÍ;.éb4Ý;%9Õf¬Þ< Žlå<ÕfüÅ</éb4Õ<%9Õf¤Ý= Ždä=ÕfüÄ=.éb4Ô=%9Õf<ò>lì>"dÌ?º9
ébd?º9ébé?üª>¿éb4Û>À[<Ã>Œˆ?˜7oébœébÙ×÷ÕÝébëÐØébæËÉébÅÀ[ÃÁ˜Ôö.éb\ébLµ@ ŽÄ@ü@5éb4¤@Õf —@¯ -AÕf™Aüê@/Õf,€Aéb ò@¯ -(›ðDõD $)¡c5 ¡c?HRœùD¢œ÷D ÇÜ&0(—E
Õf Õf0E
„E¥HûDÇÜÇÜÕfˆÕf5¹
BL´¦F š„«FÃHÕfüF0¡c$ŸF%9ÃHÕf¬·G š|¼GÄHÕfüŸG.ž¡c$°G%9ÄHÕf<ÏN šÜN ü«N1¡c$ÀNÕf ³N¿ -¤OÕf­O¢ü€O-Õf,”O¡c ˆO¿ -„RŸ‰R¬$)Ùc5 Ùc?HR R® R Êâ&0¯R
Õf Õf0¡³R
¡˜R±RÊâÊâÕfˆÕf5¹
BLÜ•S ¦ŒžSËÕfüøR9¤ÙcDŠS%9ËÕfì€T ¦œ‰TÌÕfüãS;¥ÙcDõS%9ÌÕfÔçT ¦„ðTÍÕfüÍT5¦ÙcDÜT%9ÍÕfÔËU ¦„ÔUÎÕfü±U5§ÙcDÀU%9ÎÕfäÓV ¦”ÜVÕfü·V9¨ÙcDÈV%9Õf\å^ ¦ö^ªü½^9ÙcDÒ^Õf Å^» -Æ_ÕfÏ_¬üž_1Õf,¶_Ùc ¦_» -¢a£§a¸$)d5 d?HR¤«aº¤©a ‚ë&0Îa
Õf Õf0¥Òa
¥¶a½­a‚ë‚ëÕfˆÕf5¹
BL¼‹e4‹eÕf º9 Õf ¡eä‹eº9Õf ¦e­e®üÙdT$üdd$ódÕf˜Õf9t”eÞÕfÍËÑÕfè >ÞÕfÆÄ³ÕfÁ¿®½º‘d¸ÕfNÕfNÑñ¸ÞÕfüÂj 7þ6ü6=[ú‚®6µ6@7  ®6µ6­6 ˜º9¥„A6œü±j1 ¯ ájèj¸üäi„n6¢ët6…tÏ„p6„ZÂÏ„û‚o6¯¯°å7²ˆ ßã3 œ#¤’jÌ„ïiì…dº†_8ú‚^8ƒvò7˜‡&6¯ã9È¿‡8
T÷k$6"6ì…º†ú‚G6ˆ$6+6ì…º†ƒvQX[X  ΄sX„X(6/6œ‡l¼
üÀkG46£É\Âû‚Ï„:6ìXërÏ„96¶>šYÎ>ÿÝà>+YÀÏ„<Yë>ÊÏ„QYXYÄÏ„QXoY·΄Ï„…Y«Š”Ók Úò,Ékˆ©7ú‚©7ƒv‡7áŠQX.ÝYÏ„ƒv1BÏ„ƒvƒµ Z
tÿl86ì…º†ú‚;6B6ì…º†ƒv?6<6  ΄966646“m¿
ü¼lW?6¤¬Ø]Âû‚Ï„E6D6îrÏ„@6¶>š>6Î>ÿÝà>+YÀÏ„:6ë>ÊÏ„8666ÆÏ„.736º΄Ï„/6Ì„´×l ÚòLÉlú‚ 7ƒv7˜‡z7%þÝYÏ„ƒv1BÏ„ƒvùŽ&6 °¦©o
¢ééàЦ®q
¢ééà ¦Ös
  Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙèpf réàÿmº9
ýcº9 ™á(º9™áº9™áýº9™áäél¦ƒn 
¦„nà
„㬠µiŽä¾éॠ¢é±éàÛþéàr  ©ü„ÿб(ÛþéàÛþéàò‚ÿéàÏŸýQ
°§©oUÊë1¢éЧ®q¢é §Ös: ©ü†n ¾§Šn
§‹nÅHý¨ë1ŠUñæÕãë1Âæ²Ö=õë1 IŠUñæÚC?²Ö9NU ~ŠUèpów  ù¿ȹMr ¡Þt µiþÀþ¢éd¢éN©ü<+6üœu𠾺9 ¢éº9 ¢éº9
©ü’{Áüït£µid…u
$½u Û¼ñæ$Šx Û¼ñæ$ýz Û¼èpÊ ¾ ‹{¿Á½µi¹¢éª¢é©ü~çT…€  Û¼ñæüìA ¾¢é©ü ¬€³€Âü­µiµiñæ¢éÒM L¿$Š€ Ù Û¼ñæ Ž€Ù ¾¢é©üÖÓÂеi̵iÊñæÈ¢éWñæìÒMït²‹  Û¼ñæü•‹I ¾¢é©ü Ý‹ä‹ÃüΊµi$†‹µi$éŠñæDéÞM!PÄD·‹ Þ Û¼ñæ ¿‹Þ ¾¢é©üÚ×ÃÔµiϵiÌñæÉ¢é\ñæîÞMðÄ”!Z!Z¤9®9º9 ÑÛÑÛÌsÓÛásÝÔÛ»ÝÍõƒ«%9Õ“::+: Õ“A:º9
ÃÕ“\:º9ëum:º9ƒv…:A:ù:;;!ZÖ< á< á< ÃÛÃÛƒzÅÛ»¬µÜÀ,%*Õ“7=  Õ“J= T=e= [üøœd ĺ9…öFu\»ŸÂp æLæLçLIoSliceÁéLˆ¦ —óë@M$T´ ÛâÎüÿ›ã5]ÓÕ“l'>óÕ“!Z>>K>òÕ“]>e>öÕ“x>€>úÕ““>›>¬Õ“®>¶>šÅ>Î>ÿÝà>ë>ÊÕ“ý>ù?÷Õ“÷]@ ÛˆŽÕ“&@ .@ Õ“A@ I@
ÝÕ“\@
ÄÄåEÈÇÉ¥FÓ%ìHÖ >3ôœÕ“—Œ!Z—Œ¤9fAøŒ: —Œ|AÉŽÖ<  ˆŽá< ªBÕ“1BÕ“ƒv
ÉÕ“G`æ…lBŒA:
ÇÕ“ªB üÔŸ+
ŠJ¶q,Aú‚*AÕ“ú‚+AÜIèp)AÕ“èp+A{$‰ “ ÏüŸƒMA¨½K7QA@Û¶q²–*KÿI6PA´’$ÅŸ´’D¡ŸÂp$«Ÿú‚'BèpBÅ{ŠJ/ÚŠ3¦ga´ý¤ú‚LË¥ Ô@Õ“ú‚Ö@Õ“ƒv Ô¥$ߥé¥Ñü®¤»üó¤v]d„tëuD¥Aªü¥8´’$䤴’D¤´̤ú‚ÞƒvÓ¾´/e/¯ã2µ ÷¤¡”†5AÕ“Õf$â§ì§Òüê¦OA«ü«§-´’$œ§´’Dü¦Õf,†§ÃH[Äò¯!Z!Z¤9®9º9 —Œ::+:øŒA:º9Œ\:º9ëum:º9ƒv…:A:ù:;;!ZÖ< á< á< ˆŽ7= ÉŽJ= T=e= [üÓ¯g غ9…öFu\»ŸŽÃú ç± ¹°À°âü×®é5]ÓÕ“lû¯'>óÕ“!Z>>K>òÕ“]>e>öÕ“x>€>úÕ““>›>¬Õ“®>¶>šÅ>Î>ÿÝà>ë>ÊÕ“ý>ù?÷Õ“÷]@ ÛˆŽÕ“&@ .@ Õ“A@ I@
ÝÕ“\@
ØØÎGÜÇÝ¥F*W½§k1üç®!Õ“ç—Œ!Z—Œ¤9fAøŒ:¥“|AÉŽÖ< ¹“á< §BÕ“1BÕ“ƒvð“G`æ…lBŒA:‹”ªB üí²+
ŠJ¶qãGú‚áGÕ“ú‚âGÜIèpàGÕ“èpâG{$¢³¬³ãü¥²H¨½K7H@Û¶q²–*KÿI6HúŸ$Þ²úŸD¶²Ž$À²ú‚ßHèpÀHÅ{ŠJ0ÚŠ3§
¼Í¸àP=[ú‚Læ¸ “GÕ“ú‚•GÕ“ƒv ï¸ $ú¸„¹åüηP…tÏ„dѸ;^ÂÏ„û‚4Þ¸ìGªü¤¸LúŸ$•¸úŸDâ·Ì„ì·ú‚ƒvꘇ¯O0¯ã3¤¿‡G†GÕ“ÕfƒG ²Gƒºæü´¹OˆG¬ôß¹‘dL˹ úŸ,Á¹ÕfHLGÕ“ƒvϼçüø»W›G­ü¥¼$ƒv,•¼ø§,‹¼ B,Æø óõ&ž^1èp8?<ƒù óø&ž^1ö­9@ŒÝ: Ž%éb0Õf7>|‡E š%¡c0Õf7>œ›R ¦§%Ùc0Õf7>¤¹a ²³%d0Õf7>ü¾f ¯°(Úò4ì…<C                                         


  

       
       N‡Ÿ¯°ÄØŽ¦§¾š²³À×ø¤,ÐŽæL…ö…öíëÌs\°ÑÛ
SocketAddrÁTË“¼r,æé!
DerefMutÁDíö! ýåD‡­Ö c_intÁ,Ù4¿¬ŽÊ–IDó4îº45rÆ1<¦5ÈI¼Ö6óüáÈ»üá-* Utilities for creating and using sockets.Áúü“GD The goal of this crate is to create and use a socket using advancedÁüÛKH configuration options (those that are not available in the types in theÁü§41 standard library) without using any unsafe code.ÁÜúüàDA This crate provides as direct as possible access to the system'sÁü¥B? functionality for sockets, this means little effort to provideÁüèMJ cross-platform utilities. It is up to the user to know how to use socketsÁü¶JG when using this crate. *If you don't know how to create a socket usingÁüHE libc/system calls then this crate is not for you*. Most, if not all,ÁüÊIF functions directly relate to the equivalent system call with no errorÁü”PM handling applied, so no handling errors such as [`EINTR`]. As a result usingÁüåPM this crate can be a little wordy, but it should give you maximal flexibilityÁü¶ " over configuration of sockets.ÁÙ úüÝ .+ [`EINTR`]: std::io::ErrorKind::InterruptedÁŒ
út
 # ExamplesÁŸ
ú

```no_runÁü±
(% # fn main() -> std::io::Result<()> {ÁüÚ
,) use std::net::{SocketAddr, TcpListener};Áü‡ (% use socket2::{Socket, Domain, Type};Á° úü´ 41 // Create a TCP listener bound to two addresses.Áüé @= let socket = Socket::new(Domain::IPV6, Type::STREAM, None)?;Áª úü®  socket.set_only_v6(false)?;ÁüÎ =: let address: SocketAddr = "[::1]:12345".parse().unwrap();ÁüŒ
" socket.bind(&address.into())?;Áį
 socket.listen(128)?;ÁÈ
úüÌ
.+ let listener: TcpListener = socket.into();Á
 // ...Á¬† # drop(listener);Á # Ok(()) }Á ```Á³ú ## FeaturesÁÇúüËPM This crate has a single feature `all`, which enables all functions even onesÁüœ&# that are not available on all OSs.ÁN‡Ÿ¯°ÄØŽ¦§¾š²³Àe ×f ¤,ÐŽe æL…öd …öw íd ëÌsc ÑÛݱY “¼rX é!
²P ö! ýåO ­Ö ½²J ¿¬ŽÊ–II îºH rÆ1G ÈIF ó


Š
„¢}
ÄÙp
D˜P
¬¦D
¤Á-
!
$


ϟ
¼à ø š þ Ó , Â8!& Ç8õ
$ Í, × Ø Å , æ ç ø+ è é ÷, ê8ê& ñ8û
ù,  8& ¥8¼'­, °8flagÁ& µ8¼$ Æ Ç, É Ê Ì$ Ë
Í*Õ Ø 
88Àç'ê8×ì'ï8p8
÷, û8!  
8 8×  ¼ 8$—$ 8± & ž  8¡8À¥'¨8ת'­8ˆ ¸:8¹ »(¾8ÀÁ'Ä8ׯ'É8Í Ò 
8ä8stringÁ ï88 û7ˆ ü þ Ô
,   
, ¯ ° »+ ± ² º, ³8ê4´
¼, Ö8$×'Ü, ß8—È*å8Ô ñ ò ø, ó8—È$ ù 8¹ ¦*¨88«0 · ¸ Á8± ¹$ º7{n}Á$ Â% Õ8± ç è8ñ ò ù8ÍË% ˜ŒÔ æ Ž  ì  , í8÷& ò8´ô$ ö, ø8
ù& ü8´þ*  
8$8Š$” ˜, 8÷ ž8
 , ¤8
¥ © 8 ·8÷ ¾ Ì8¡4¿& Å, Ç8÷(Î, Ñ8
Ò Ö û+ è é ó8âê í ò8ú8"4… Œ Ü ¢, £8
¤ §'¨8œB µ Ê8¡ ¼8÷A È É+ î ï ü8âð ó û8â8"  í «, ¬8
­ °'±8from_raw_socketÁ  Û8¡ É8into_raw_socketÁ Ù Ú% Œ dé2Dí2îŽ$šeŽ eí$$ëš<* ÀÌs\3ÑÛݱTP“¼©[d\ª¼ƒ\dj½¼ô‹…0ט¤,ioÁ¦µ ¡½²¿¬Ê sa_family_tÁ\“Å  ÙÍ!ÚÀ ˜"ÛÚ£¥#ÜÀp„Å$Ý socklen_tÁL×Ü%ÞAF_INETÁ<â &ÌAF_INET6ÁDï 'ÍAF_UNIXÁ<ù (ΗK4Ž)—K)|!D÷úëîDEàãÓÖÆÉ|}»¯² £Œlo[^IL7:&) ôöØÚ½¿l‰­lÍþZ+,13456789:;<=>?üæNüáC@ Create a `SockAddr` from the underlying storage and its length.Á©ú # SafetyÁÂúüÊKH Caller must ensure that the address family and length match the type ofÁüšKH storage address. For example if `storage.ss_family` is set to `AF_INET`ÁüêKH the `storage` must be initialised as `sockaddr_in`, setting the contentÁìº and length appropriately.ÁÜúÿ»÷ú<ÿ»Áü‹ (¹¼¤¸  # #[cfg(unix)] {Á„Ñ
use std::io;ÁŒæ  use std::mem;Áüü # use std::os::unix::io::AsRawFd;Á¤
úü¬
2/ use socket2::{SockAddr, Socket, Domain, Type};Áã
úüë
@= let socket = Socket::new(Domain::IPV4, Type::STREAM, None)?;Á° úü¸ ?< // Initialise a `SocketAddr` byte calling `getsockname(2)`.Áüü LI let mut addr_storage: libc::sockaddr_storage = unsafe { mem::zeroed() };ÁüÍ EB let mut len = mem::size_of_val(&addr_storage) as libc::socklen_t;Á
úüŸ
DA // The `getsockname(2)` system call will intiliase `storage` forÁüè
/, // us, setting `len` to the correct length.Á´œ let res = unsafe {ÁÔ· libc::getsockname(ÁüÖ socket.as_raw_fd(),ÁüúFC (&mut addr_storage as *mut libc::sockaddr_storage).cast(),Á¬Å &mut len,Á };Á”ø if res == -1 {Áü/, return Err(io::Error::last_os_error());ÁÍúüÕ>; let address = unsafe { SockAddr::new(addr_storage, len) };Á¤˜ # drop(address);Á # }Á # Ok(())Á°ç»Áú¶qèpþZ**
+¦I¥8®8ü¾üä;8 Initialise a `SockAddr` by calling the function `init`.Á¤úü¬LI The type of the address storage and length passed to the function `init`Áüý  is OS/architecture specific.Á¢úüªFC The address is zeroed before `init` is called and is thus valid toÁüõKH dereference and read from. The length initialised to the maximum lengthÁœÅ of the storage.ÁÝúµÛöúüþK×ÛüÎK¬ÜüžKÝìîÕÝúÿ»«ú»Áü¿(¹¼¤ì»Þ„…ØÞüš#ŒßÂúüÊ2Åßúü‰@àÎúüÖ?ãàüš let (_, address) = unsafe {Áü¾0- SockAddr::try_init(|addr_storage, len| {ÁüóLI // The `getsockname(2)` system call will intiliase `storage` forÁüÄ74 // us, setting `len` to the correct length.Áü€VS if libc::getsockname(socket.as_raw_fd(), addr_storage.cast(), len) == -1 {ÁüÛ/, Err(io::Error::last_os_error())Á¤ } else {Á´¨ Ok(())Á
 })Á }?;Á¤ð“ç<‰°çd•Àç°ç»Áºxç*-¥.-.*Íìºx ÕÍìóy Ø"ºxÀxü– >ºxÀx˜"Ú‚
,ºxóyæƒÄ@NPKMìä èp,ã$,<closure_kind>Á0<closure_signature>Á0<upvars>Á00,°üý(Qüå'LI Constructs a `SockAddr` with the family `AF_UNIX` and the provided path.Á¶(úü¾(:7 Returns an error if the path is longer than `SUN_LEN`.Á$„)䌢Ž*¡22*ÍìäŒ ‰)àäŒêŒ\Â)
1äŒõ
G')ü¼+6ü‘*" Set the length of the address.Á¸*údÀ*µÛÑ*úüÙ*IF Caller must ensure that the address up to `length` bytes are properlyÁ„§+
initialised.ÁTÊ+Æ ÆþZèp* Õ+*
3$Ú+³GüÂ,)ü›," Returns this address's family.Á4Ï,Ç ÇþZ* Ö,*
4$×,üÁ-$ü˜-$! Returns this address's `Domain`.Á4Î-È ÈþZéb* Õ-*
5$Ö-üÖ.$ü£..+ Returns the size of this address in bytes.Áã.É ÉþZèp* ç.*
6$è.üÇ/-ü™/)& Returns a raw pointer to the address.Á4Ô/Ê ÊþZ±–* Û/*
7$Ü/üØ01ü­0&# Retuns the address as the storage.ÁTå0þZ¶q**
8;Lü…2#ü¬1TQ Returns true if this address is in the `AF_INET` (IPv4) family, false otherwise.Á<2Ë ËþZ* š2*
9$2üÑ3#üï2JG Returns true if this address is in the `AF_INET6` (IPv6) family, falseÁt¾3 otherwise.Á<Þ3Ì ÌþZ* æ3*
:$ç3ìÜ5ü¼4\Y Returns true if this address is of a unix socket (for local interprocess communication),Áü5:7 i.e. it is from the `AF_UNIX` family, false otherwise.Á<ã5Í ÍþZ* ë5*
;$ì5üÏ7-üÀ6KH Returns this address as a `SocketAddr` if it is in the `AF_INET` (IPv4)Áü7:7 or `AF_INET6` (IPv6) family, otherwise returns `None`.ÁLÖ7Î ÎþZ„­* à7*
<$á7ü¤B4üÇAHE Returns this address as a [`SocketAddrV4`] if it is in the `AF_INET`Á\”B family.Át«BÏ ÏþZÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ\* ºB*
=$»Bü¼D4üÞCIF Returns this address as a [`SocketAddrV6`] if it is in the `AF_INET6`Á\¬DÒ…tÃDÐ ÐþZÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ÷\* ÒD*
>$ÓDÜ¥FD¨FÑ ÑþZ Ñç±* ±F*
?$²FüçH"þZAëAüI%$“IÀ[þZ@@
AÚŠ$˜IüÂJ$þZCëCüíJ'$ðJ\þZBB
CÚŠ$õJüòS$þZEëEüT'$ T÷\þZDD
EÚŠ"_äÍ_þZGÀcGüð_:ó_ÒÓÔ ÒþZ Ó c cˆ¢cµ
 `£c¯ã `àB¤GS
Ô„ãF ÷_F
G$ø_×þ_ÜâeþZI·ßIü„f"‡fÕÖ ÕþZ ÖþZH ŠfH
I$f¹
Æd¤ÞfþZ´÷fþZLeLü”g3$—gר ×þZ ØæÍKMM ²gKÍìæÍ œg¢eæÍŒŸg
LæÍ$³gº¹i*,T÷24û2rt ¡¿Àó×ê¤,NO¬Ö¦NQReadÁ$ƒà NRWriteÁ,‰Ÿ!NSÐŽæLNU
IoSliceMutÁTÉö NVÌs\äÑÛNWû­̺NXnetÁ$·ž"NZ­¾ºN[ShutdownÁDǶMN\ FromRawFdÁL÷­+N^ IntoRawFdÁL¯+N_ýå­ÖN`¾2$ƒŸNb½²,‰¿¬NcÊó?T óNd@Tœ öNeX$¨NfÎGLæØNg—K4ýŽNi—KNi¥LD…¦Nj¥L§NjIDîNk¾Md™¾NlóšNmóNmå7„Û¯Noå7°NoåE4íÄNpñLLõ²NqñL³NqD婸œŠ}fi¬Ú]””O?±25Œã

ô÷œÜêÝýÐÓ¾Á±´¥¨„ßœpsPS?B25öøç錴ü‚)& Owned wrapper around a system socket.Á¬úü°MJ This type simply wraps an instance of a file descriptor (`c_int`) on UnixÁüþMJ and an instance of `SOCKET` on Windows. This is the main type exported byÁüÌ HE this crate and is intended to mirror the raw semantics of sockets onÁü•
FC platforms as closely as possible. Almost all methods correspond to矆
IF precisely one libc or OS API call which is essentially just a "RusticÁü¦ ! translation" of what's below.ÁÈ úüÌ )& ## Converting to and from other typesÁö úüú MJ This type can be freely converted into the network primitives provided byÁüÈ KH the standard library, such as [`TcpStream`] or [`UdpSocket`], using theÁü”
*' [`From`] trait, see the example below.Á¿
úüÃ
&# [`TcpStream`]: std::net::TcpStreamÁüê
&# [`UdpSocket`]: std::net::UdpSocketÁú\• # NotesÁ¡úü¥MJ Some methods that set options on `Socket` require two system calls to setÁüóKH their options without overwriting previously set options. We do this byÁü¿NK first getting the current settings, applying the desired changes, and thenÁüŽPM updating the settings. This means that the operation is **not** atomic. ThisÁüßNK can lead to a data race when two threads are changing options in parallel.Á®úÿ»¢¼üÏ(¹¼üø,ë¼ü¥(¡½ÎúäÒ // create a TCP listenerÁüï@¾°úü´=œ¿üò! let address = address.into();ÁÜ” socket.bind(&address)?;ÁİŽÀÉúüÍ.¼ÀóÀ¬‡†Át¤Á»Á4¿í^y
0ÀšïsdÌNrrÐ_¬ÀÐ_\îí^vwxyz|}~ƒˆŠŒŽ˜šœžŸü¥2Õfí^uu
v@¼ü”"*4¢"Ù Ùí^Õfu ©"u
w$ª"üô"+D#í^Õfuu
xnnü½'VüÖ#/, Creates a new socket and sets common flags.ÁŠ$úü’$HE This function corresponds to `socket(2)` on Unix and `WSASocketW` onÁdß$ Windows.Áð$úüø$JG On Unix-like systems, the close-on-exec flag is set on the new socket.ÁüÇ%IF Additionally, on Apple platforms `SOCK_NOSIGPIPE` is set. On Windows,Áü•&'$ the socket is made non-inheritable.ÁÁ&úüÉ&LI [`Socket::new_raw`] can be used if you don't want these flags to be set.Áø6Ç!Ÿôš' 
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=socket&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=socket&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/socket.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/socket.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/socket.2>
* OpenBSD: <https://man.openbsd.org/socket.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/socket.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/socket>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-socket>
ÁÄ'éb¡cÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÙcÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
í^«yuu
y¯4È'´Ø'protocolÁDâ'üë*Zü)0- Creates a new socket ready to be configured.ÁÅ)úüÍ)HΨüš*LI Windows and simply creates a new socket, no other configuration is done.Á<ò*éb¡cÁ³ˆ´uu
z¯4ú*´Š+€´D”+ò+z–ô{®ô{Ëô{{z{ÕfÙcÕfü·88üø6/, Binds this socket to the specified address.Á¬7úü´7KH This function directly corresponds to the `bind(2)` function on WindowsÁl„8
and Unix.ÁøNÇ!Ÿä–8Ž
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=bind&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=bind&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/bind.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/bind.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/bind.2>
* OpenBSD: <https://man.openbsd.org/bind.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/bind.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/bind>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-bind>
Á$¾8ÚÛ Úí^ ÛþZ™ïu Ã8u
|$Ä8˜<Ê8üÂ@;ü§9B? Initiate a connection on this socket to the specified address.Áî9úüö9FC This function directly corresponds to the `connect(2)` function onÁ¬Á: Windows and Unix.ÁÛ:úüã:GD An error will be returned if `listen` or `connect` has already beenÁܯ; called on this builder.ÁøfÇ!ŸüÏ;©
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=connect&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=connect&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/connect.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/connect.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/connect.2>
* OpenBSD: <https://man.openbsd.org/connect.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/connect.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/connect>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-connect>
Áó;ú\û;¼ž<úü“<A> When using a non-blocking connect (by setting the socket intoÁüÙ<KH non-blocking mode before calling this function), socket option can't beÁü©=EB set *while connecting*. This will cause errors on Windows. SocketÁüó=EB options can be safely set before and after connecting the socket.Á½>úüÅ>KH On Cygwin, a Unix domain socket connect blocks until the server acceptsÁü•?HE it. If the behavior is not expected, try [`Socket::set_no_peercred`]Á”â? (Cygwin only).Á<É@ÜÝ Üí^ ÝþZ™ïu Ñ@u
}$Ò@˜<Ø@üŠISü¸AGD Initiate a connection on this socket to the specified address, onlyÁü„BFC only waiting for a certain period of time for the connection to beÁ„ÏB
established.ÁäBúüìBJG Unlike many other methods on `Socket`, this does *not* correspond to aÁü»CKH single C function. It sets the socket to nonblocking mode, connects viaÁü‹DJG connect(2), and then waits for the connection to complete with poll(2)ÁüÚDGD on Unix and select on Windows. When the connection is complete, theÁü¦EEB socket is set back to blocking mode. On Unix, this will loop overÁœðE `EINTR` errors.ÁˆFútF # WarningsÁ£Fúü«FIF The non-blocking state of the socket is overridden by this function -ÁüùFLI it will be returned in blocking mode on success, and in an indeterminateÁ¬ÊG state on failure.ÁäGúüìGJG If the connection request times out, it may still be processing in theÁü»HJG background - a second call to `connect` or `connect_timeout` may fail.Á|IÞß Þí^ ßþZñæ™ïu ¡Iu
~$¢IÚŠ$¨ItimeoutÁ<¹Iü‡P6üšMGD Mark a socket as ready to accept incoming connection requests usingÁÌæM [`Socket::accept()`].Á„NúüŒNEB This function directly corresponds to the `listen(2)` function onÁ¬ÖNÝÀðNúüøNGˆÁÜÄOØÁø~Ç!ŸôäO 
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=listen&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=listen&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/listen.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/listen.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/listen.2>
* OpenBSD: <https://man.openbsd.org/listen.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/listen.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/listen>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-listen>
Á4ŽPà àí^Õf™ïu •Pu
$PbacklogÁ<œPü“V6ü÷P85 Accept a new incoming connection from this listener.Á´Qúü¼QDA This function uses `accept4(2)` on platforms that support it andÁü…R&# `accept(2)` platforms that do not.Á°Rúü¸REB This function sets the same flags as in done for [`Socket::new`],Áü‚SLI [`Socket::accept_raw`] can be used if you don't want to set those flags.Áø–Ç!ŸôÓS 
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=accept&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=accept&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/accept.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/accept.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/accept.2>
* OpenBSD: <https://man.openbsd.org/accept.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/accept.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/accept>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-accept>
ÁöSú\þS¼žŽTúü–TK©ËüæTHþË”³UÏÌ4šVá áí^Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
í^þZ«yu ¡Vu
$¢Vü†b:üÝ`8’àšaúü¢aEB This function directly corresponds to the `accept(2)` function onÁ¬ìaÝÀTbâ âí^±ëu ˜bu
$™b|êb–ô®ôËôÕfÕfþZÿëü¥f0ü¦c@= Returns the socket address of the local half of this socket.ÁëcúüócJG This function directly corresponds to the `getsockname(2)` function onÁ¬ÂdÝÀø®Ç!ŸüÜd#Í
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=getsockname&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=getsockname&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/getsockname.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockname.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/getsockname.2>
* OpenBSD: <https://man.openbsd.org/getsockname.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockname.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/getsockname>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockname>
Á„eú\Œe¼žœeúü¤eEB Depending on the OS this may return an error if the socket is notÁdîe [bound].Áÿeú̇f [bound]: Socket::bindÁT¬fã ãí^¢Žu ·fu
ƒ$¸füûi/ü‹gA> Returns the socket address of the remote peer of this socket.ÁÑgúüÙgJG This function directly corresponds to the `getpeername(2)` function onÁ¬¨hÝÀøÆÇ!ŸüÂh#Í
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=getpeername&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=getpeername&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/getpeername.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getpeername.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/getpeername.2>
* OpenBSD: <https://man.openbsd.org/getpeername.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getpeername.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/getpeername>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getpeername>
Áêhú\òh¼ž‚iúüŠi=: This returns an error if the socket is not [`connect`ed].ÁÌiúüÔi" [`connect`ed]: Socket::connectÁLjä äí^¢Žu Œju
$jüÅk(üàjKH Returns the [`Type`] of this socket by checking the `SO_TYPE` option onÁ„°k
this socket.Á4Ìkå åí^Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
¡c«yu Óku
$Ôküïp-üÚlFC Creates a new independently owned handle to the underlying socket.Á¥mú\­m¼ž½múüÅmIF On Unix this uses `F_DUPFD_CLOEXEC` and thus sets the `FD_CLOEXEC` onÁÄ“n the returned socket.Á°núü¸nKH On Windows this uses `WSA_FLAG_NO_HANDLE_INHERIT` setting inheriting toÁTˆo false.Á—oúüŸoDA On Windows this can **not** be used function cannot be used on aÁÜèo QOS-enabled socket, seeÁüˆpb_ <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsaduplicatesocketw>.ÁLöpæ æí^ˆ´u €qu
$qüáwBüÔu63 Moves this socket into or out of nonblocking mode.Ávú\—v¼ž§vúü¯vIF On Unix this corresponds to calling `fcntl` (un)setting `O_NONBLOCK`.Áývúü…wDA On Windows this corresponds to calling `ioctlsocket` (un)settingÁtÎw `FIONBIO`.Á|èwç çí^™ïu øwu
$ùw
\ÿwüíz7üêxB? Shuts down the read, write, or both halves of this connection.Á±yúü¹yHE This function will cause all pending and future I/O on the specifiedÁü†z=: portions to return immediately with an appropriate value.ÁøÞÇ!ŸüÈz ²
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=shutdown&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=shutdown&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/shutdown.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/shutdown.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/shutdown.2>
* OpenBSD: <https://man.openbsd.org/shutdown.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/shutdown.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/shutdown>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-shutdown>
ÁDôzè èí^¶M·M¸M©¹MºMÀ»M¼MBothÁlÏÏ‘£A2Í™ïu ýzu
ˆ$þzhowÁ„{ü¤ƒDüÜ{FC Receives data on the socket from the remote address to which it isÁt§| connected.Áº|úüÂ|HE The [`connect`] method will connect this socket to a remote address.Áü}:7 This method might fail if the socket is not connected.ÁøöÇ!ŸäÎ}Ž
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=recv&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=recv&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/recv.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/recv.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/recv.2>
* OpenBSD: <https://man.openbsd.org/recv.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/recv.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/recv>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-recv>
Áï}úü÷}  [`connect`]: Socket::connectÁœ~úd¤~µÛµ~úü½~GD Normally casting a `&mut [u8]` to `&mut [MaybeUninit<u8>]` would beÁü‰JG unsound, as that allows us to write uninitialised bytes to the buffer.ÁüØLI However this implementation promises to not write uninitialised bytes toÁü©€FC the `buf`fer and passes it directly to `recv(2)` system call. ThisÁüô€HE promise ensures that this function can be called using a `buf`fer ofÁ¬Á type `&mut [u8]`.ÁÛúüãLI Note that the [`io::Read::read`] implementation calls this function withÁü´‚KH a `buf`fer of type `&mut [u8]`, allowing initialised buffers to be usedÁÜ„ƒ without using `unsafe`.Á$«ƒéê éí^ ê΄Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ƒv«yu °ƒu
$±ƒ¯ã·ƒü²‡Pü›„LI Receives out-of-band (OOB) data on the socket from the remote address toÁüì„FC which it is connected by setting the `MSG_OOB` flag for this call.Á·…úü¿…?< For more information, see [`recv`], [`out_of_band_inline`].Áƒ†úÔ‹† [`recv`]: Socket::recvÁüª†63 [`out_of_band_inline`]: Socket::out_of_band_inlineÁ„¹‡ëì ëí^ ì΄ÿ¥u ʇu
Š$ˇ¯ãчü܉üÀˆLI Identical to [`recv`] but allows for specification of arbitrary flags toÁü‘‰ the underlying `recv` call.Áµ‰úÔ½‰š¨|ã‰íî íí^ î΄Õfÿ¥u ü‰u
$ý‰¯ã‹ŠÃH,°Šüê•wü˜‹F©–üã‹DA connected. Unlike [`recv`] this allows passing multiple buffers.Á¬Œúü´ŒHœ—ü:î—ÀúüÈLI In addition to the number of bytes read, this function returns the flagsÁü™ŽJG for the received message. See [`RecvFlags`] for more information aboutÁ¼èŽ the returned flags.ÁøŽÇ!Ÿü„©
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=recvmsg&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=recvmsg&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/recvmsg.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/recvmsg.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/recvmsg.2>
* OpenBSD: <https://man.openbsd.org/recvmsg.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/recvmsg.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/recvmsg>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-recvmsg>
Á¨úÔ°š¨üÏ àžôúµÛúü•KH Normally casting a `IoSliceMut` to `MaybeUninitSlice` would be unsound,ÁüåIF as that allows us to write uninitialised bytes to the buffer. HoweverÁü³‘HE this implementation promises to not write uninitialised bytes to theÁü€’KH `bufs` and passes it directly to `recvmsg(2)` system call. This promiseÁüÐ’GD ensures that this function can be called using `bufs` of type `&mutÁ”œ“ [IoSliceMut]`.Á³“úü»“GD Note that the [`io::Read::read_vectored`] implementation calls thisÁü‡”JG function with `buf`s of type `&mut [IoSliceMut]`, allowing initialisedÁüÖ”.+ buffers to be used without using `unsafe`.ÁúredoxÁœ“•¬’•ü‰• lñ•ïðñ ïí^ ð
¯¯°å7²ˆ ßã3 œ#ñÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ƒv‘d«yu ˆ–u
Œ$‰–bufsÁ$—–üŠ›˜üž—LI Identical to [`recv_vectored`] but allows for specification of arbitraryÁüï—52 flags to the underlying `recvmsg`/`WSARecv` call.Á©˜úü±˜,) [`recv_vectored`]: Socket::recv_vectoredÁâ˜úd꘵Ûû˜úüƒ™JG `recv_from_vectored` makes the same safety guarantees regarding `bufs`ÁÌÒ™ as [`recv_vectored`].Áð™úüø™,ý¾ú®»œ³š¬²šü©š Ä‘›òóô òí^ ó
¯¯°å7²ˆ ßã3 œ#ôÕfÁ½u ³›u
$´›»½$›ÃH,í›üå DüçœEB Receives data on the socket from the remote adress to which it isÁü±EB connected, without removing that data from the queue. On success,Áüû'$ returns the number of bytes peeked.Á§žúü¯žJG Successive calls return the same data. This is accomplished by passingÁüþž>; `MSG_PEEK` as a flag to the underlying `recv` system call.ÁÁŸúdÉŸµÛÚŸúüâŸEB `peek` makes the same safety guarantees regarding the `buf`fer asÁl¬ 
[`recv`].Á¾ úÔÆ š¨$ì õö õí^ ö΄ÿ¥u ñ u
Ž$ò ¯ãø ü½¤Uüè¡JG Receives data from the socket. On success, returns the number of bytesÁü·¢30 read and the address from whence the data came.Áø¦Ç!Ÿüï¢ ²
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=recvfrom&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=recvfrom&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/recvfrom.2.html>