<!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>

]N                 @   s  d  d l  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	 m
 Z
 m Z m Z m Z m Z m Z m Z m Z m Z m Z e e
 e e e e e h  Z y e Wn e k
 r i  Z Yn Xd d   Z Gd d   d e  Z e e e f Z d d   Z d	 d
   Z d d   Z  d d   Z! d d d d  Z" d d d d  Z# e# Z$ d d d d d d  Z% Gd d   d  Z& Gd d   d e&  Z' d d   Z( d d d d  Z) e j* d  k rGd! d"   d"  Z+ Gd# d$   d$ e&  Z, d S)%    N)EALREADYEINPROGRESSEWOULDBLOCK
ECONNRESETEINVALENOTCONN	ESHUTDOWNEISCONNEBADFECONNABORTEDEPIPEEAGAIN	errorcodec             C   sO   y t  j |   SWn7 t t t f k
 rJ |  t k r> t |  Sd |  SYn Xd  S)NzUnknown error %s)osstrerror
ValueErrorOverflowError	NameErrorr   )err r   -/opt/alt/python35/lib64/python3.5/asyncore.py	_strerrorD   s    r   c               @   s   e  Z d  Z d S)ExitNowN)__name__
__module____qualname__r   r   r   r   r   L   s   r   c             C   s;   y |  j    Wn& t k
 r%   Yn |  j   Yn Xd  S)N)handle_read_event_reraised_exceptionshandle_error)objr   r   r   readQ   s    r    c             C   s;   y |  j    Wn& t k
 r%   Yn |  j   Yn Xd  S)N)handle_write_eventr   r   )r   r   r   r   writeY   s    r"   c             C   s;   y |  j    Wn& t k
 r%   Yn |  j   Yn Xd  S)N)handle_expt_eventr   r   )r   r   r   r   
_exceptiona   s    r$   c             C   s   yn | t  j @r |  j   | t  j @r1 |  j   | t  j @rH |  j   | t  j t  j Bt  j	 B@rm |  j
   Wnt t k
 r } z/ | j d t k r |  j   n
 |  j
   WYd  d  } ~ Xn& t k
 r   Yn |  j   Yn Xd  S)Nr   )selectPOLLINr   POLLOUTr!   POLLPRIr#   POLLHUPPOLLERRPOLLNVALhandle_closeOSErrorargs_DISCONNECTEDr   r   )r   flagser   r   r   	readwritei   s"    


r2   g        c       	      C   s  | d  k r t  } | rg  } g  } g  } x t | j    D]m \ } } | j   } | j   } | rt | j |  | r | j r | j |  | s | r= | j |  q= Wg  | k o | k o | k n r t j |   d  St	 j	 | | | |   \ } } } x6 | D]. } | j
 |  } | d  k r2qt |  qWx6 | D]. } | j
 |  } | d  k rkqGt |  qGWx6 | D]. } | j
 |  } | d  k rqt |  qWd  S)N)
socket_maplistitemsreadablewritableappend	acceptingtimesleepr%   getr    r"   r$   )	timeoutmaprwr1   fdr   Zis_rZis_wr   r   r   poll}   sD      '!rB   c             C   s  | d  k r t  } |  d  k	 r. t |  d  }  t j   } | rx t | j    D]k \ } } d } | j   r | t j t j BO} | j	   r | j
 r | t j O} | rS | j | |  qS W| j |   } x? | D]7 \ } } | j |  } | d  k rq t | |  q Wd  S)Ni  r   )r3   intr%   rB   r4   r5   r6   r&   r(   r7   r9   r'   registerr<   r2   )r=   r>   ZpollsterrA   r   r0   r?   r   r   r   poll2   s(    rE   g      >@Fc             C   s   | d  k r t  } | r0 t t d  r0 t } n t } | d  k r_ xJ | r[ | |  |  qE Wn0 x- | r | d k r | |  |  | d } qb Wd  S)NrB   r      )r3   hasattrr%   rE   rB   )r=   Zuse_pollr>   countZpoll_funr   r   r   loop   s    		rI   c               @   s  e  Z d  Z d Z d Z d Z d Z d Z d Z e	 d h  Z
 d d d d  Z d d   Z e Z d d d	  Z d d
 d  Z e j e j d d  Z d d d  Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d  d!   Z d" d#   Z d$ d%   Z d& d' d(  Z  d) d*   Z! d+ d,   Z" d- d.   Z# d/ d0   Z$ d1 d2   Z% d3 d4   Z& d5 d6   Z' d7 d8   Z( d9 d:   Z) d; d<   Z* d= d>   Z+ d? d@   Z, d S)A
dispatcherFNwarningc             C   s   | d  k r t  |  _ n	 | |  _ d  |  _ | r | j d  |  j | |  d |  _ y | j   |  _ Wq t k
 r } z: | j	 d t
 t f k r d |  _ n |  j |    WYd  d  } ~ Xq Xn	 d  |  _ d  S)Nr   TF)r3   _map_filenosetblocking
set_socket	connectedgetpeernameaddrr-   r.   r   r   del_channelsocket)selfsockr>   r   r   r   r   __init__   s     			zdispatcher.__init__c             C   s   |  j  j d |  j  j g } |  j r? |  j r? | j d  n |  j rU | j d  |  j d  k	 r y | j d |  j  Wn( t k
 r | j t |  j   Yn Xd d j	 |  t
 |   f S)N.Z	listeningrP   z%s:%dz<%s at %#x> )	__class__r   r   r9   rR   r8   rP   	TypeErrorreprjoinid)rU   statusr   r   r   __repr__   s    	zdispatcher.__repr__c             C   s&   | d  k r |  j  } |  | |  j <d  S)N)rL   rM   )rU   r>   r   r   r   add_channel  s    	zdispatcher.add_channelc             C   s>   |  j  } | d  k r |  j } | | k r1 | | =d  |  _  d  S)N)rM   rL   )rU   r>   rA   r   r   r   rS     s    		zdispatcher.del_channelc             C   s?   | | f |  _  t j | |  } | j d  |  j |  d  S)Nr   )Zfamily_and_typerT   rN   rO   )rU   familytyperV   r   r   r   create_socket  s    zdispatcher.create_socketc             C   s)   | |  _  | j   |  _ |  j |  d  S)N)rT   filenorM   ra   )rU   rV   r>   r   r   r   rO      s    	zdispatcher.set_socketc             C   sR   y9 |  j  j t  j t  j |  j  j t  j t  j  d B Wn t k
 rM Yn Xd  S)NrF   )rT   
setsockopt
SOL_SOCKETSO_REUSEADDR
getsockoptr-   )rU   r   r   r   set_reuse_addr&  s    	zdispatcher.set_reuse_addrc             C   s   d S)NTr   )rU   r   r   r   r6   7  s    zdispatcher.readablec             C   s   d S)NTr   )rU   r   r   r   r7   :  s    zdispatcher.writablec             C   s:   d |  _  t j d k r* | d k r* d } |  j j |  S)NTnt   )r9   r   namerT   listen)rU   numr   r   r   rn   A  s    	zdispatcher.listenc             C   s   | |  _  |  j j |  S)N)rR   rT   bind)rU   rR   r   r   r   rp   G  s    	zdispatcher.bindc             C   s   d |  _  d |  _ |  j j |  } | t t t f k sT | t k ra t j	 d k ra | |  _
 d  S| d t f k r | |  _
 |  j   n t | t |   d  S)NFTrk   cer   )rk   rq   )rP   
connectingrT   
connect_exr   r   r   r   r   rm   rR   r	   handle_connect_eventr-   r   )rU   addressr   r   r   r   connectK  s    				zdispatcher.connectc             C   s   y |  j  j   \ } } Wn] t k
 r1 d  SYnR t k
 rx } z( | j d t t t f k rc d  S  WYd  d  } ~ Xn X| | f Sd  S)Nr   )rT   acceptr[   r-   r.   r   r   r   )rU   connrR   whyr   r   r   rw   Y  s    zdispatcher.acceptc             C   s   y |  j  j |  } | SWn` t k
 r| } z@ | j d t k rF d S| j d t k rg |  j   d S  WYd  d  } ~ Xn Xd  S)Nr   )rT   sendr-   r.   r   r/   r,   )rU   dataresultry   r   r   r   rz   g  s    
zdispatcher.sendc             C   s~   y. |  j  j |  } | s) |  j   d S| SWnI t k
 ry } z) | j d t k rd |  j   d S  WYd  d  } ~ Xn Xd  S)N    r   )rT   recvr,   r-   r.   r/   )rU   Zbuffer_sizer{   ry   r   r   r   r~   t  s    

zdispatcher.recvc             C   s   d |  _  d |  _ d |  _ |  j   |  j d  k	 r y |  j j   WnA t k
 r } z! | j d t t	 f k rv   WYd  d  } ~ Xn Xd  S)NFr   )
rP   r9   rr   rS   rT   closer-   r.   r   r
   )rU   ry   r   r   r   r     s    			
zdispatcher.closec             C   s   t  j j d t |   d  S)Nzlog: %s
)sysstderrr"   str)rU   messager   r   r   log  s    zdispatcher.loginfoc             C   s'   | |  j  k r# t d | | f  d  S)Nz%s: %s)ignore_log_typesprint)rU   r   rc   r   r   r   log_info  s    zdispatcher.log_infoc             C   sM   |  j  r |  j   n3 |  j s? |  j r2 |  j   |  j   n
 |  j   d  S)N)r9   handle_acceptrP   rr   rt   handle_read)rU   r   r   r   r     s    			
zdispatcher.handle_read_eventc             C   s\   |  j  j t  j t  j  } | d k r< t | t |    |  j   d |  _ d |  _ d  S)Nr   TF)	rT   ri   rg   SO_ERRORr-   r   handle_connectrP   rr   )rU   r   r   r   r   rt     s    
	zdispatcher.handle_connect_eventc             C   s7   |  j  r d  S|  j s) |  j r) |  j   |  j   d  S)N)r9   rP   rr   rt   handle_write)rU   r   r   r   r!     s    			
zdispatcher.handle_write_eventc             C   sB   |  j  j t  j t  j  } | d k r4 |  j   n
 |  j   d  S)Nr   )rT   ri   rg   r   r,   handle_expt)rU   r   r   r   r   r#     s    zdispatcher.handle_expt_eventc             C   sn   t    \ } } } } y t |   } Wn d t |   } Yn X|  j d | | | | f d  |  j   d  S)Nz)<__repr__(self) failed for object at %0x>z:uncaptured python exception, closing channel %s (%s:%s %s)error)compact_tracebackr\   r^   r   r,   )rU   niltvtbinfoZ	self_reprr   r   r   r     s    zdispatcher.handle_errorc             C   s   |  j  d d  d  S)Nz!unhandled incoming priority eventrK   )r   )rU   r   r   r   r     s    zdispatcher.handle_exptc             C   s   |  j  d d  d  S)Nzunhandled read eventrK   )r   )rU   r   r   r   r     s    zdispatcher.handle_readc             C   s   |  j  d d  d  S)Nzunhandled write eventrK   )r   )rU   r   r   r   r     s    zdispatcher.handle_writec             C   s   |  j  d d  d  S)Nzunhandled connect eventrK   )r   )rU   r   r   r   r     s    zdispatcher.handle_connectc             C   s)   |  j    } | d  k	 r% |  j |   d  S)N)rw   handle_accepted)rU   Zpairr   r   r   r     s    zdispatcher.handle_acceptc             C   s   | j    |  j d d  d  S)Nzunhandled accepted eventrK   )r   r   )rU   rV   rR   r   r   r   r     s    
zdispatcher.handle_acceptedc             C   s   |  j  d d  |  j   d  S)Nzunhandled close eventrK   )r   r   )rU   r   r   r   r,     s    zdispatcher.handle_close)-r   r   r   debugrP   r9   rr   closingrR   	frozensetr   rW   r`   __str__ra   rS   rT   AF_INETSOCK_STREAMrd   rO   rj   r6   r7   rn   rp   rv   rw   rz   r~   r   r   r   r   rt   r!   r#   r   r   r   r   r   r   r   r,   r   r   r   r   rJ      sL    	rJ   c               @   sR   e  Z d  Z d d d d  Z d d   Z d d   Z d d	   Z d
 d   Z d S)dispatcher_with_sendNc             C   s    t  j |  | |  d |  _ d  S)Nr}   )rJ   rW   
out_buffer)rU   rV   r>   r   r   r   rW     s    zdispatcher_with_send.__init__c             C   s?   d } t  j |  |  j d  d   } |  j | d   |  _ d  S)Nr   i   )rJ   rz   r   )rU   Znum_sentr   r   r   initiate_send  s    z"dispatcher_with_send.initiate_sendc             C   s   |  j    d  S)N)r   )rU   r   r   r   r     s    z!dispatcher_with_send.handle_writec             C   s   |  j  p t |  j  S)N)rP   lenr   )rU   r   r   r   r7     s    zdispatcher_with_send.writablec             C   s>   |  j  r  |  j d t |   |  j | |  _ |  j   d  S)Nz
sending %s)r   r   r\   r   r   )rU   r{   r   r   r   rz     s    	zdispatcher_with_send.send)r   r   r   rW   r   r   r7   rz   r   r   r   r   r     s
   r   c              C   s   t  j   \ }  } } g  } | s- t d   xD | rs | j | j j j | j j j t | j	  f  | j
 } q0 W~ | d \ } } } d j d d   | D  } | | | f |  | | f S)Nztraceback does not existrF   rY   c             S   s   g  |  ] } d  |  q S)z
[%s|%s|%s]r   ).0xr   r   r   
<listcomp>)  s   	 z%compact_traceback.<locals>.<listcomp>)r   exc_infoAssertionErrorr8   tb_framef_codeco_filenameco_namer   	tb_linenotb_nextr]   )r   r   tbr   filefunctionliner   r   r   r   r     s    	r   c             C   s   |  d  k r t  }  x t |  j    D] } y | j   Wq% t k
 r } z$ | j d t k rd n	 | sm   WYd  d  } ~ Xq% t k
 r   Yq% | s   Yq% Xq% W|  j   d  S)Nr   )	r3   r4   valuesr   r-   r.   r
   r   clear)r>   Z
ignore_allr   r   r   r   	close_all,  s     r   posixc               @   ss   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
 d  Z e Z e Z	 d d   Z
 d d   Z d	 S)file_wrapperc             C   s   t  j |  |  _ d  S)N)r   duprA   )rU   rA   r   r   r   rW   Q  s    zfile_wrapper.__init__c             C   s1   |  j  d k r# t j d |  t  |  j   d  S)Nr   zunclosed file %r)rA   warningswarnResourceWarningr   )rU   r   r   r   __del__T  s    zfile_wrapper.__del__c             G   s   t  j |  j |  S)N)r   r    rA   )rU   r.   r   r   r   r~   Y  s    zfile_wrapper.recvc             G   s   t  j |  j |  S)N)r   r"   rA   )rU   r.   r   r   r   rz   \  s    zfile_wrapper.sendNc             C   s9   | t  j k r) | t  j k r) | r) d St d   d  S)Nr   z-Only asyncore specific behaviour implemented.)rT   rg   r   NotImplementedError)rU   levelZoptnamebuflenr   r   r   ri   _  s
    zfile_wrapper.getsockoptc             C   s0   |  j  d k  r d  St j |  j   d |  _  d  S)Nr   rF   r   )rA   r   r   )rU   r   r   r   r   j  s    zfile_wrapper.closec             C   s   |  j  S)N)rA   )rU   r   r   r   re   p  s    zfile_wrapper.fileno)r   r   r   rW   r   r~   rz   ri   r    r"   r   re   r   r   r   r   r   L  s   r   c               @   s+   e  Z d  Z d d d  Z d d   Z d S)file_dispatcherNc             C   sb   t  j |  d  |  d |  _ y | j   } Wn t k
 r@ Yn X|  j |  t j | d  d  S)NTF)rJ   rW   rP   re   AttributeErrorset_filer   set_blocking)rU   rA   r>   r   r   r   rW   u  s    	zfile_dispatcher.__init__c             C   s/   t  |  |  _ |  j j   |  _ |  j   d  S)N)r   rT   re   rM   ra   )rU   rA   r   r   r   r     s    zfile_dispatcher.set_file)r   r   r   rW   r   r   r   r   r   r   s  s   r   )-r%   rT   r   r:   r   r   errnor   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r/   r3   r   r   	Exceptionr   KeyboardInterrupt
SystemExitr   r    r"   r$   r2   rB   rE   Zpoll3rI   rJ   r   r   r   rm   r   r   r   r   r   r   <module>1   s>   X' ,'