<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
a
    XC?h3  ã                   @   sT  d dl Z d dl T d dlZd dlZd dlZd dlZd dlmZmZ zd dlZW n e	yb   dZY n0 e
eddƒZe
eddƒZe
eddƒZg d	¢Ze e e ¡¡ e d
edd„ ¡ e dedd„ ¡ e dedd„ ¡ e dedd„ ¡ dZdZdd„ Zej ¡  d¡ri Zded< ded< ded< ded< d ed!< d"ed#< d$ed%< d&ed'< d(ed)< d*ed+< d,ed-< d.ed/< d0ed1< d2ed3< d4ed5< d6ed7< d8ed9< d:ed;< d<ed=< d>ed?< d@edA< dBedC< dDedE< dFedG< dHedI< dJedK< dLedM< dNedO< dPedQ< dRedS< dTedU< dVedW< dXedY< dZed[< d\ed]< d^ed_< d`eda< dbedc< ddede< dfedg< dhedi< djedk< dledm< dnedo< dpedq< dreds< dtedu< dvedw< dxedy< dzed{< d|ed}< d~ed< d€ed< d‚edƒ< d„ed…< d†ed‡< dˆed‰< dŠed‹< dŒed< dŽed< ded‘< d‚ed’< d“ed”< d•ed–< d—ed˜< d™edš< d›edœ< dedž< dŸed < d¡ed¢< d£ed¤< d¥ed¦< d§ed¨< d©edª< d«ed¬< d­ed®< d¯ed°< d±ed²< d³ed´< dµed¶< d·ed¸< d¹edº< d»ed¼< d»ed½< d¾ed¿< dÀedÁ< dÂedÃ< dÄedÅ< dÆedÇ< dÈedÉ< dÊedË< dÌedÍ< dÎedÏ< dÐedÑ< dÒedÓ< e dÔ¡ G dÕdÖ„ dÖeƒZG d×dØ„ dØe jƒZdødÙdÚ„Zee jdÛƒrfd dl Z dùdÜdÝ„Z!e dÝ¡ ee jdÞƒrd dl Z dúdßdà„Z"e dà¡ ee jdáƒr°dâdã„ Z#e dã¡ e$e%d fdädå„Z&ee dæƒrÞde%d fdçdæ„Z'ne&Z'e dæ¡ dèe'_(eehZ)G dédê„ dêej*ƒZ+dûdìdí„Z,e-ƒ Z.e.dfdîdï„Z/dðdñ„ Z0e$ddòdòdóœdôdõ„Z1düdöd÷„Z2dS )ýé    N)Ú*)ÚIntEnumÚIntFlagÚEBADFé	   ÚEAGAINé   ÚEWOULDBLOCK)ÚfromfdÚgetfqdnÚcreate_connectionÚcreate_serverÚhas_dualstack_ipv6ÚAddressFamilyÚ
SocketKindr   c                 C   s   |   ¡ o|  d¡S )NZAF_©ÚisupperÚ
startswith©ÚC© r   ú+/opt/alt/python39/lib64/python3.9/socket.pyÚ<lambda>N   ó    r   r   c                 C   s   |   ¡ o|  d¡S )NZSOCK_r   r   r   r   r   r   S   r   ZMsgFlagc                 C   s   |   ¡ o|  d¡S )NZMSG_r   r   r   r   r   r   X   r   ZAddressInfoc                 C   s   |   ¡ o|  d¡S )NZAI_r   r   r   r   r   r   ]   r   z	127.0.0.1z::1c                 C   s&   z
|| ƒW S  t y    |  Y S 0 d S ©N)Ú
ValueError)ÚvalueZ
enum_klassr   r   r   Ú_intenum_converterc   s    
r   Úwinz)Specified event object handle is invalid.é   zInsufficient memory available.é   z#One or more parameters are invalid.éW   zOverlapped operation aborted.iã  z2Overlapped I/O event object not in signaled state.iä  z)Overlapped operation will complete later.iå  zThe operation was interrupted.i'  zA bad file handle was passed.i'  zPermission denied.i'  z!A fault occurred on the network??i'  z#An invalid operation was attempted.i&'  zToo many open files.i('  z The socket operation would blocki3'  z,A blocking operation is already in progress.i4'  zOperation already in progress.i5'  zSocket operation on nonsocket.i6'  zDestination address required.i7'  zMessage too long.i8'  zProtocol wrong type for socket.i9'  zBad protocol option.i:'  zProtocol not supported.i;'  zSocket type not supported.i<'  zOperation not supported.i='  zProtocol family not supported.i>'  z0Address family not supported by protocol family.i?'  zThe network address is in use.i@'  z Cannot assign requested address.iA'  zNetwork is down.iB'  zNetwork is unreachable.iC'  z$Network dropped connection on reset.iD'  z!Software caused connection abort.iE'  zThe connection has been reset.iF'  zNo buffer space available.iG'  zSocket is already connected.iH'  zSocket is not connected.iI'  zThe network has been shut down.iJ'  zToo many references.iK'  zThe operation timed out.iL'  zConnection refused.iM'  zCannot translate name.iN'  zThe name is too long.iO'  zThe host is down.iP'  zThe host is unreachable.iQ'  zDirectory not empty.iR'  zToo many processes.iS'  zUser quota exceeded.iT'  zDisk quota exceeded.iU'  zStale file handle reference.iV'  zItem is remote.iW'  z!Network subsystem is unavailable.ik'  z!Winsock.dll version out of range.il'  z(Successful WSAStartup not yet performed.im'  zGraceful shutdown in progress.iu'  z*No more results from WSALookupServiceNext.iv'  zCall has been canceled.iw'  z Procedure call table is invalid.ix'  zService provider is invalid.iy'  z&Service provider failed to initialize.iz'  zSystem call failure.i{'  zService not found.i|'  zClass type not found.i}'  i~'  zCall was canceled.i'  zDatabase query was refused.i€'  zHost not found.iù*  z Nonauthoritative host not found.iú*  zThis is a nonrecoverable error.iû*  z*Valid name, no data record requested type.iü*  zQoS receivers.iý*  zQoS senders.iþ*  zNo QoS senders.iÿ*  zQoS no receivers.i +  zQoS request confirmed.i+  zQoS admission error.i+  zQoS policy failure.i+  zQoS bad style.i+  zQoS bad object.i+  zQoS traffic control error.i+  zQoS generic error.i+  zQoS service type error.i+  zQoS flowspec error.i	+  zInvalid QoS provider buffer.i
+  zInvalid QoS filter style.i+  i+  zIncorrect QoS filter count.i+  zInvalid QoS object length.i+  zIncorrect QoS flow count.i+  zUnrecognized QoS object.i+  zInvalid QoS policy object.i+  zInvalid QoS flow descriptor.i+  z'Invalid QoS provider-specific flowspec.i+  z)Invalid QoS provider-specific filterspec.i+  z&Invalid QoS shape discard mode object.i+  z Invalid QoS shaping rate object.i+  z!Reserved policy QoS element type.i+  ÚerrorTabc                   @   s   e Zd ZdS )Ú_GiveupOnSendfileN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r#   Ó   r   r#   c                       s&  e Zd Zg d¢Zd6dd„Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
d7ddddœdd„Zeedƒrtd8dd„Zn
d9dd„Zd:dd„Zdd„ Zd;dd „Zd!d"„ Zejfd#d$„Zd%d&„ Z‡ fd'd(„Ze‡ fd)d*„ƒZe‡ fd+d,„ƒZejd-krd.d/„ Zd0d1„ Znd2d/„ Zd3d1„ Zd4e_d5e_‡  ZS )<Úsocket)Ú__weakref__Ú_io_refsÚ_closedéÿÿÿÿNc                 C   sP   |d u r,|dkrt }|dkr t}|dkr,d}tj | ||||¡ d| _d| _d S )Nr+   r   F)ÚAF_INETÚSOCK_STREAMÚ_socketr'   Ú__init__r)   r*   )ÚselfÚfamilyÚtypeÚprotoÚfilenor   r   r   r/   Ü   s    zsocket.__init__c                 C   s   | S r   r   ©r0   r   r   r   Ú	__enter__ì   s    zsocket.__enter__c                 G   s   | j s|  ¡  d S r   )r*   Úclose)r0   Úargsr   r   r   Ú__exit__ï   s    zsocket.__exit__c                 C   s´   t | ddƒ}d| jj| jj|r"dnd|  ¡ | j| j| jf }|s¨z |  ¡ }|r^|dt	|ƒ 7 }W n t
yr   Y n0 z |  ¡ }|r’|dt	|ƒ 7 }W n t
y¦   Y n0 |d7 }|S )	Nr*   Fz,<%s.%s%s fd=%i, family=%s, type=%s, proto=%iz	 [closed]Ú z
, laddr=%sz
, raddr=%sú>)ÚgetattrÚ	__class__r%   r&   r4   r1   r2   r3   ÚgetsocknameÚstrÚerrorÚgetpeername)r0   ÚclosedÚsZladdrZraddrr   r   r   Ú__repr__ó   s4    
úÿzsocket.__repr__c                 C   s   t d| jj›dƒ‚d S )Nzcannot pickle z object)Ú	TypeErrorr=   r$   r5   r   r   r   Ú__getstate__  s    zsocket.__getstate__c                 C   s6   t |  ¡ ƒ}| j| j| j| j|d}| |  ¡ ¡ |S )N©r4   )Údupr4   r=   r1   r2   r3   Ú
settimeoutÚ
gettimeout)r0   ÚfdÚsockr   r   r   rH     s    z
socket.dupc                 C   sF   |   ¡ \}}t| j| j| j|d}tƒ d u r>|  ¡ r>| d¡ ||fS )NrG   T)Z_acceptr'   r1   r2   r3   ZgetdefaulttimeoutrJ   Úsetblocking)r0   rK   ÚaddrrL   r   r   r   Úaccept  s
    
zsocket.acceptÚr)ÚencodingÚerrorsÚnewlinec                C   sú   t |ƒh d£kstd|f ƒ‚d|v }d|v p2| }d|v }d}	|rL|	d7 }	|rX|	d7 }	t| |	ƒ}
|  jd7  _|d u r|d}|d	k rŠtj}|d	kr¢|sžtd
ƒ‚|
S |rº|rºt |
|
|¡}n|rÌt |
|¡}nt |
|¡}|rà|S t 	||||¡}||_
|S )N>   rP   ÚwÚbz&invalid mode %r (only r, w, b allowed)rT   rP   rU   r:   é   r+   r   z!unbuffered streams must be binary)Úsetr   ÚSocketIOr)   ÚioÚDEFAULT_BUFFER_SIZEÚBufferedRWPairÚBufferedReaderÚBufferedWriterÚTextIOWrapperÚmode)r0   r_   Ú	bufferingrQ   rR   rS   ZwritingZreadingZbinaryZrawmodeÚrawÚbufferÚtextr   r   r   Úmakefile.  s<    
zsocket.makefileÚsendfiler   c              
   C   s  |   |||¡ |  ¡ }z| ¡ }W n2 ttjfyT } zt|ƒ‚W Y d }~n
d }~0 0 zt |¡j}W n, t	y’ } zt|ƒ‚W Y d }~n
d }~0 0 |sœdS t
|p¤|dƒ}|  ¡ }	|	dkrÂtdƒ‚ttdƒrÖt ¡ }
nt ¡ }
|
 |tj¡ d}|
j}tj} zö|	r||	ƒst d¡‚|r6|| }|dkr6qÎz|||||ƒ}W nb tyn   |	sd|ƒ  Y q Y n\ t	yª } z$|dkrt|ƒ‚|d ‚W Y d }~n(d }~0 0 |dkrºqÎ||7 }||7 }q |W |dkròt|dƒrò| |¡ S n"|dkrt|dƒr| |¡ 0 d S )Nr   i   @ú&non-blocking sockets are not supportedÚPollSelectorz	timed outÚseek)Ú_check_sendfile_paramsr4   ÚAttributeErrorrY   ÚUnsupportedOperationr#   ÚosÚfstatÚst_sizeÚOSErrorÚminrJ   r   ÚhasattrÚ	selectorsrg   ZSelectSelectorÚregisterZEVENT_WRITEZselectre   r.   ÚtimeoutÚBlockingIOErrorrh   )r0   ÚfileÚoffsetÚcountZsocknor4   ÚerrZfsizeÚ	blocksizert   ZselectorÚ
total_sentZselector_selectZos_sendfileÚsentr   r   r   Ú_sendfile_use_sendfileZ  sh    







ý ÿzsocket._sendfile_use_sendfilec                 C   s   t dƒ‚d S )Nz,os.sendfile() not available on this platform)r#   ©r0   rv   rw   rx   r   r   r   r}   ›  s    ÿc           
   
   C   s   |   |||¡ |  ¡ dkr"tdƒ‚|r0| |¡ |r>t|dƒnd}d}|j}| j}z¢|rpt|| |ƒ}|dkrpqÎt||ƒƒ}|s‚qÎz||ƒ}	W n ty¤   Y q‚Y q‚0 ||	7 }|	t	|ƒk rÌ||	d … }q‚qTq‚qT|W |dkròt
|dƒrò| || ¡ S n&|dkrt
|dƒr| || ¡ 0 d S )Nr   rf   i    rh   )ri   rJ   r   rh   rp   ÚreadÚsendÚ
memoryviewru   Úlenrq   )
r0   rv   rw   rx   rz   r{   Z	file_readZ	sock_sendÚdatar|   r   r   r   Ú_sendfile_use_sendŸ  sB    

ý ÿzsocket._sendfile_use_sendc                 C   sd   dt |ddƒvrtdƒ‚| jt@ s*tdƒ‚|d ur`t|tƒsJtd |¡ƒ‚|dkr`td |¡ƒ‚d S )NrU   r_   z$file should be opened in binary modez+only SOCK_STREAM type sockets are supportedz+count must be a positive integer (got {!r})r   )r<   r   r2   r-   Ú
isinstanceÚintrE   Úformatr~   r   r   r   ri   Ã  s    

ÿÿzsocket._check_sendfile_paramsc                 C   s6   z|   |||¡W S  ty0   |  |||¡ Y S 0 d S r   )r}   r#   r„   r~   r   r   r   re   Ð  s    zsocket.sendfilec                 C   s*   | j dkr|  j d8  _ | jr&|  ¡  d S )Nr   rV   )r)   r*   r7   r5   r   r   r   Ú_decref_socketiosç  s    
zsocket._decref_socketiosc                 C   s   |  | ¡ d S r   )r7   )r0   Z_ssr   r   r   Ú_real_closeí  s    zsocket._real_closec                 C   s   d| _ | jdkr|  ¡  d S )NTr   )r*   r)   r‰   r5   r   r   r   r7   ñ  s    
zsocket.closec                    s   d| _ tƒ  ¡ S )NT)r*   ÚsuperÚdetachr5   ©r=   r   r   r‹   ÷  s    zsocket.detachc                    s   t tƒ jtƒS r   )r   rŠ   r1   r   r5   rŒ   r   r   r1     s    zsocket.familyc                    s   t tƒ jtƒS r   )r   rŠ   r2   r   r5   rŒ   r   r   r2     s    zsocket.typeÚntc                 C   s   t  |  ¡ ¡S r   )rl   Zget_handle_inheritabler4   r5   r   r   r   Úget_inheritable  s    zsocket.get_inheritablec                 C   s   t  |  ¡ |¡ d S r   )rl   Zset_handle_inheritabler4   ©r0   Zinheritabler   r   r   Úset_inheritable  s    zsocket.set_inheritablec                 C   s   t  |  ¡ ¡S r   )rl   rŽ   r4   r5   r   r   r   rŽ     s    c                 C   s   t  |  ¡ |¡ d S r   )rl   r   r4   r   r   r   r   r     s    z&Get the inheritable flag of the socketz&Set the inheritable flag of the socket)r+   r+   r+   N)rP   N)r   N)r   N)r   N)r   N) r$   r%   r&   Ú	__slots__r/   r6   r9   rD   rF   rH   rO   rd   rq   rl   r}   r„   ri   re   rˆ   r.   r'   r‰   r7   r‹   Úpropertyr1   r2   ÚnamerŽ   r   Ú__doc__Ú__classcell__r   r   rŒ   r   r'   Ö   s@   
ÿ*
A

$


r'   c                 C   s   t | ƒ}t||||ƒS r   )rH   r'   )rK   r1   r2   r3   Znfdr   r   r   r
     s    r
   Úsendmsgc              	   C   s    |   |tjtjt d|¡fg¡S ©NÚi)r–   r.   Ú
SOL_SOCKETÚ
SCM_RIGHTSÚarray)rL   ZbuffersÚfdsÚflagsÚaddressr   r   r   Úsend_fds&  s    
ÿrŸ   Úrecvmsgc                 C   s‚   t   d¡}|  |t ||j ¡¡\}}}}|D ]B\}}	}
|tjkr.|	tjkr.| |
d t|
ƒt|
ƒ|j  … ¡ q.|t	|ƒ||fS r—   )
r›   r    r.   ZCMSG_LENÚitemsizer™   rš   Z	frombytesr‚   Úlist)rL   ÚbufsizeZmaxfdsr   rœ   ÚmsgZancdatarN   Z
cmsg_levelZ	cmsg_typeZ	cmsg_datar   r   r   Úrecv_fds2  s    
ÿÿ
r¥   Zsharec                 C   s   t ddd| ƒS ©Nr   )r'   )Úinfor   r   r   Ú	fromshareF  s    r¨   c           
   	   C   s\  | t krt}n| tkrt}ntdƒ‚|tkr4tdƒ‚|dkrDtdƒ‚t| ||ƒ}z¨| |df¡ | ¡  | 	¡ d d… \}}t| ||ƒ}zN| 
d¡ z| ||f¡ W n ttfy¼   Y n0 | 
d¡ | ¡ \}}	W n   | ¡  ‚ Y n0 W | ¡  n
| ¡  0 z0| 	¡ | ¡ ks*| 	¡ | ¡ kr2tdƒ‚W n   | ¡  | ¡  ‚ Y n0 ||fS )	Nz?Only AF_INET and AF_INET6 socket address families are supportedz)Only SOCK_STREAM socket type is supportedr   zOnly protocol zero is supportedé   FTzUnexpected peer connection)r,   Ú
_LOCALHOSTÚAF_INET6Ú_LOCALHOST_V6r   r-   r'   ÚbindÚlistenr>   rM   Úconnectru   ÚInterruptedErrorrO   r7   rA   ÚConnectionError)
r1   r2   r3   ÚhostZlsockrN   ÚportZcsockZssockÚ_r   r   r   Ú_fallback_socketpairR  sL    


ÿþrµ   Ú
socketpairc                 C   sf   | d u r(zt } W n ty&   t} Y n0 t | ||¡\}}t| ||| ¡ ƒ}t| ||| ¡ ƒ}||fS r   )ZAF_UNIXÚ	NameErrorr,   r.   r¶   r'   r‹   )r1   r2   r3   ÚarU   r   r   r   r¶   ‰  s    
a8  socketpair([family[, type[, proto]]]) -> (socket object, socket object)
Create a pair of socket objects from the sockets returned by the platform
socketpair() function.
The arguments are the same as for socket() except the default family is AF_UNIX
if defined on the platform; otherwise, the default is AF_INET.
c                       sl   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z‡ fdd„Zdd„ Z	e
dd„ ƒZe
dd„ ƒZdd„ Z‡  ZS )rX   c                 C   sZ   |dvrt d| ƒ‚tj | ¡ || _d|vr6|d7 }|| _d|v | _d|v | _d| _d S )N)rP   rT   ZrwÚrbÚwbZrwbzinvalid mode: %rrU   rP   rT   F)	r   rY   Ú	RawIOBaser/   Ú_sockÚ_modeÚ_readingÚ_writingÚ_timeout_occurred)r0   rL   r_   r   r   r   r/   ²  s    

zSocketIO.__init__c              
   C   sŽ   |   ¡  |  ¡  | jrtdƒ‚z| j |¡W S  tyF   d| _‚ Y q ty† } z*|jd t	v rpW Y d }~d S ‚ W Y d }~qd }~0 0 qd S )Nz!cannot read from timed out objectTr   )
Ú_checkClosedÚ_checkReadablerÀ   ro   r¼   Z	recv_intort   r@   r8   Ú_blocking_errnos©r0   rU   Úer   r   r   Úreadinto¾  s    zSocketIO.readintoc              
   C   sf   |   ¡  |  ¡  z| j |¡W S  ty` } z*|jd tv rJW Y d }~d S ‚ W Y d }~n
d }~0 0 d S r¦   )rÁ   Ú_checkWritabler¼   r€   r@   r8   rÃ   rÄ   r   r   r   ÚwriteÕ  s    zSocketIO.writec                 C   s   | j rtdƒ‚| jS ©NzI/O operation on closed socket.)rB   r   r¾   r5   r   r   r   Úreadableå  s    zSocketIO.readablec                 C   s   | j rtdƒ‚| jS rÉ   )rB   r   r¿   r5   r   r   r   Úwritableì  s    zSocketIO.writablec                    s   | j rtdƒ‚tƒ  ¡ S rÉ   )rB   r   rŠ   Úseekabler5   rŒ   r   r   rÌ   ó  s    zSocketIO.seekablec                 C   s   |   ¡  | j ¡ S r   )rÁ   r¼   r4   r5   r   r   r   r4   ú  s    zSocketIO.filenoc                 C   s   | j s|  ¡ S dS d S )Nr+   )rB   r4   r5   r   r   r   r“      s    zSocketIO.namec                 C   s   | j S r   )r½   r5   r   r   r   r_     s    zSocketIO.modec                 C   s*   | j r
d S tj | ¡ | j ¡  d | _d S r   )rB   rY   r»   r7   r¼   rˆ   r5   r   r   r   r7     s
    
zSocketIO.close)r$   r%   r&   r/   rÆ   rÈ   rÊ   rË   rÌ   r4   r’   r“   r_   r7   r•   r   r   rŒ   r   rX   ¡  s   

rX   r:   c                 C   sj   |   ¡ } | r| dkrtƒ } zt| ƒ\}}}W n ty>   Y n(0 | d|¡ |D ]} d| v rP qfqP|} | S )Nz0.0.0.0r   Ú.)ÚstripZgethostnameZgethostbyaddrr@   Úinsert)r“   ZhostnameÚaliasesZipaddrsr   r   r   r     s    
r   c                 C   sÚ   | \}}d }t ||dtƒD ]”}|\}}}	}
}d }zDt|||	ƒ}|turP| |¡ |r^| |¡ | |¡ d }|W   S  ty¬ } z |}|d ur˜| ¡  W Y d }~qd }~0 0 q|d urÎz|‚W d }qÖd }0 ntdƒ‚d S )Nr   z!getaddrinfo returns an empty list)	Úgetaddrinfor-   r'   Ú_GLOBAL_DEFAULT_TIMEOUTrI   r­   r¯   r@   r7   )rž   rt   Zsource_addressr²   r³   ry   ÚresÚafÚsocktyper3   Ú	canonnameÚsarL   r´   r   r   r   r   3  s.    



 r   c                  C   sv   t rttdƒrttdƒsdS z@tttƒ"} |  ttd¡ W d   ƒ W dS 1 sP0    Y  W n t	yp   Y dS 0 d S )NÚIPPROTO_IPV6ÚIPV6_V6ONLYFr   T)
Úhas_ipv6rq   r.   r'   r«   r-   Ú
setsockoptrØ   rÙ   r@   )rL   r   r   r   r   `  s    ÿþ&r   F)r1   ÚbacklogÚ
reuse_portÚdualstack_ipv6c             
   C   sl  |rt tdƒstdƒ‚|r8tƒ s(tdƒ‚|tkr8tdƒ‚t|tƒ}ztjdvr€t tdƒr€z| 	t
td¡ W n ty~   Y n0 |r’| 	t
td¡ trÔ|tkrÔ|r²| 	ttd¡ n"t td	ƒrÔt td
ƒrÔ| 	ttd¡ z| | ¡ W nB ty$ } z(d|j| f }t|j|ƒd ‚W Y d }~n
d }~0 0 |d u r:| ¡  n
| |¡ |W S  tyf   | ¡  ‚ Y n0 d S )NÚSO_REUSEPORTz+SO_REUSEPORT not supported on this platformz-dualstack_ipv6 not supported on this platformz'dualstack_ipv6 requires AF_INET6 family)r   ÚcygwinÚSO_REUSEADDRrV   r   rÙ   rØ   z+%s (while attempting to bind on address %r))rq   r.   r   r   r«   r'   r-   rl   r“   rÛ   r™   rá   r@   rß   rÚ   rØ   rÙ   r­   ÚstrerrorÚerrnor®   r7   )rž   r1   rÜ   rÝ   rÞ   rL   ry   r¤   r   r   r   r   p  sN    


ÿ
ÿÿ$


r   c                 C   sP   g }t  | |||||¡D ]2}|\}}	}}
}| t|tƒt|	tƒ||
|f¡ q|S r   )r.   rÑ   Úappendr   r   r   )r²   r³   r1   r2   r3   r   ZaddrlistrÓ   rÔ   rÕ   rÖ   r×   r   r   r   rÑ   µ  s    þrÑ   )r   )r   N)r   )r:   )r   r   r   r   )3r.   rl   ÚsysrY   rr   Úenumr   r   rã   ÚImportErrorr<   r   r   r	   Ú__all__ÚextendÚ_get_exports_listÚ	_convert_r$   rª   r¬   r   ÚplatformÚlowerr   r"   rä   Ú	Exceptionr#   r'   r
   rq   r›   rŸ   r¥   r¨   r,   r-   rµ   r¶   r”   rÃ   r»   rX   r   ÚobjectrÒ   r   r   r   rÑ   r   r   r   r   Ú<module>3   sN   
ýýýý
  F
	




6
u
ÿ
-ÿE