HEX

Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit - prohibited by configuration in /home/u547966/brikov.ru/www/wp-content/plugins/admin-menu-editor/menu-editor.php on line 745
Server: Apache
System: Linux 4.19.0-0.bpo.9-amd64 x86_64 at red40
User: u547966 (5490)
PHP: 5.3.29-mh2
Disabled: syslog, dl, popen, proc_open, proc_nice, proc_get_status, proc_close, proc_terminate, posix_mkfifo, chown, chgrp, accelerator_reset, opcache_reset, accelerator_get_status, opcache_get_status, pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wifcontinued, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority
Upload Files
File: //usr/lib/python3.5/asyncio/__pycache__/unix_events.cpython-35.pyc


Fa
@sdZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddl
mZddl
m
Z
ddl
mZddl
mZdd	l
mZdd
l
mZddl
mZddl
mZdd
l
mZddlmZddlmZdddddgZejdkrbedddZy
ejZWnek
rddZYnXGdddejZ e!edrddZ"nddl#Z#d dZ"Gd!d"d"ej$Z%Gd#d$d$ej&ej'Z(e!ed%r>ej)Z*nddl#Z#d&d'Z*Gd(d)d)ej+Z,Gd*ddZ-Gd+d,d,e-Z.Gd-dde.Z/Gd.dde.Z0Gd/d0d0ej1Z2e Z3e2Z4dS)1z2Selector event loop for Unix with signal handling.N)base_events)base_subprocess)compat)	constants)
coroutines)events)futures)selector_events)	selectors)
transports)	coroutine)loggerSelectorEventLoopAbstractChildWatcherSafeChildWatcherFastChildWatcherDefaultEventLoopPolicyZwin32z+Signals are not really supported on WindowscCsdS)zDummy signal handler.N)signumframerr)/usr/lib/python3.5/asyncio/unix_events.py_sighandler_noop%srcCs|S)Nr)pathrrr<lambda>.src
seZdZdZdfddZddZfddZd	d
ZddZd
dZ	ddZ
ddZddddZddddZ
edddZddZeddddddddZedddd d!ddd"d#ZS)$_UnixSelectorEventLoopzdUnix event loop.

    Adds signal handling and UNIX Domain Socket support to SelectorEventLoop.
    Ncstj|i|_dS)N)super__init___signal_handlers)selfselector)	__class__rrr7sz_UnixSelectorEventLoop.__init__cCs
tjS)N)socketZ
socketpair)rrrr_socketpair;sz"_UnixSelectorEventLoop._socketpaircs8tjx$t|jD]}|j|qWdS)N)rcloselistrremove_signal_handler)rsig)r!rrr$>s
z_UnixSelectorEventLoop.closecCs+x$|D]}|sq|j|qWdS)N)_handle_signal)rdatarrrr_process_self_dataCs
z)_UnixSelectorEventLoop._process_self_datac+Gstj|stj|r*td|j||jytj|jj	Wn=t
tfk
r}ztt
|WYdd}~XnXtj|||}||j|<y$tj|ttj|dWntk
r}z|j|=|jsXytjdWn;t
tfk
rW}ztjd|WYdd}~XnX|jtjkrtdj|nWYdd}~XnXdS)zAdd a handler for a signal.  UNIX only.

        Raise ValueError if the signal number is invalid or uncatchable.
        Raise RuntimeError if there is a problem setting up the handler.
        z3coroutines cannot be used with add_signal_handler()NFrzset_wakeup_fd(-1) failed: %szsig {} cannot be caught)rZiscoroutineZiscoroutinefunction	TypeError
_check_signalZ
_check_closedsignal
set_wakeup_fdZ_csockfileno
ValueErrorOSErrorRuntimeErrorstrrZHandlerrsiginterruptrinfoerrnoEINVALformat)rr'callbackargsexchandleZnexcrrradd_signal_handlerJs0

%

	#z)_UnixSelectorEventLoop.add_signal_handlercCsL|jj|}|dkr"dS|jr;|j|n
|j|dS)z2Internal helper that is the actual signal handler.N)rgetZ
_cancelledr&Z_add_callback_signalsafe)rr'r=rrrr(ws	z%_UnixSelectorEventLoop._handle_signalc&Cs|j|y|j|=Wntk
r3dSYnX|tjkrOtj}n	tj}ytj||WnRtk
r}z2|jtj	krt
dj|nWYdd}~XnX|jsytjdWn;t
tfk
r}ztjd|WYdd}~XnXdS)zwRemove a handler for a signal.  UNIX only.

        Return True if a signal handler was removed, False if not.
        Fzsig {} cannot be caughtNrzset_wakeup_fd(-1) failed: %sTr+)r-rKeyErrorr.SIGINTdefault_int_handlerSIG_DFLr2r7r8r3r9r/r1rr6)rr'Zhandlerr<rrrr&s(

			#z,_UnixSelectorEventLoop.remove_signal_handlercCsbt|ts$tdj|d|ko>tjkns^tdj|tjdS)zInternal helper to validate a signal.

        Raise ValueError if the signal number is invalid or uncatchable.
        Raise RuntimeError if there is a problem setting up the handler.
        zsig must be an int, not {!r}rzsig {} out of range(1, {})N)
isinstanceintr,r9r.NSIGr1)rr'rrrr-s
z$_UnixSelectorEventLoop._check_signalcCst|||||S)N)_UnixReadPipeTransport)rpipeprotocolwaiterextrarrr_make_read_pipe_transportsz0_UnixSelectorEventLoop._make_read_pipe_transportcCst|||||S)N)_UnixWritePipeTransport)rrHrIrJrKrrr_make_write_pipe_transportsz1_UnixSelectorEventLoop._make_write_pipe_transportc	kstj}
|j}t||||||||d|d||	}|
j|j|j|y
|EdHWn+tk
r}
z|
}WYdd}
~
XnXd}|dk	r|j|j	EdH|WdQRX|S)NrJrK)
rget_child_watcherZ
create_future_UnixSubprocessTransportadd_child_handlerZget_pid_child_watcher_callback	Exceptionr$Z_wait)rrIr;shellstdinstdoutstderrbufsizerKkwargswatcherrJtranspr<errrrr_make_subprocess_transports$		



z1_UnixSelectorEventLoop._make_subprocess_transportcCs|j|j|dS)N)Zcall_soon_threadsafeZ_process_exited)rpid
returncoder[rrrrRsz._UnixSelectorEventLoop._child_watcher_callbacksslsockserver_hostnameccsc|dks!t|ts!t|rB|dkrZtdn|dk	rZtd|dk	r|dk	r~tdtjtjtjd}y&|jd|j||EdHWq6|j	Yq6Xn\|dkrtd|j
tjkstj|r)tdj
||jd|j||||EdH\}}||fS)Nz/you have to pass server_hostname when using sslz+server_hostname is only meaningful with sslz3path and sock can not be specified at the same timerFzno path and sock were specifiedz2A UNIX Domain Stream Socket was expected, got {!r})rDr4AssertionErrorr1r"AF_UNIXSOCK_STREAMsetblockingZsock_connectr$familyr_is_stream_socketr9Z_create_connection_transport)rprotocol_factoryrr`rarb	transportrIrrrcreate_unix_connections:!	


z-_UnixSelectorEventLoop.create_unix_connectionbacklogdc
!Cst|trtd|dk	r|dk	r?tdt|}tjtjtj}|dd
kry,tj	t
j|jrt
j|WnIt
k
rYn8tk
r}ztjd||WYdd}~XnXy|j|Wqtk
ri}zK|j|jtjkrTdj|}ttj|dnWYdd}~Xq|jYqXnO|dkrtd|jtjkstj|rtdj|tj||g}	|j||jd	|j||||	|	S)Nz*ssl argument must be an SSLContext or Nonez3path and sock can not be specified at the same timerz2Unable to check or remove stale UNIX socket %r: %rzAddress {!r} is already in usez-path was not specified, and no sock specifiedz2A UNIX Domain Stream Socket was expected, got {!r}F)rrn)rDboolr,r1_fspathr"rdrestatS_ISSOCKosst_moderemoveFileNotFoundErrorr2rerrorZbindr$r7Z
EADDRINUSEr9rgrrhZServerZlistenrfZ_start_serving)
rrirrarlr`r\r<msgZserverrrrcreate_unix_serversP	
&

	

z)_UnixSelectorEventLoop.create_unix_server)__name__
__module____qualname____doc__rr#r$r*r>r(r&r-rLrNr
r]rRrkryrr)r!rr1s,-
 
%rset_blockingcCstj|ddS)NF)rsr~)fdrrr_set_nonblocking9srcCs<tj|tj}|tjB}tj|tj|dS)N)fcntlZF_GETFLrs
O_NONBLOCKZF_SETFL)rflagsrrrr>s
cseZdZdZddfddZddZdd	Zd
dZdd
ZddZ	ddZ
ddZddZe
jrddZdddZddZddZS) rGiNcs*tj|||jd<||_||_|j|_||_d|_t	j
|jj}tj
|ptj|ptj|sd|_d|_d|_tdt|j|jj|jj||jj|jj|j|j|dk	r&|jjtj|ddS)NrHFz)Pipe transport is for pipes/sockets only.)rr_extra_loop_piper0_fileno	_protocol_closingrsfstatrtrqS_ISFIFOrrS_ISCHRr1r	call_soonconnection_made_add_reader_read_readyr	_set_result_unless_cancelled)rlooprHrIrJrKmode)r!rrrHs,
							
z_UnixReadPipeTransport.__init__cCs|jjg}|jdkr.|jdn|jrD|jd|jd|jt|jdd}|jdk	r|dk	rtj	||jt
j}|r|jdq|jdn,|jdk	r|jdn
|jddd	j|S)
Nclosedclosingzfd=%s	_selectorpollingidleopenz<%s> )
r!rzrappendrrgetattrrr
_test_selector_eventrZ
EVENT_READjoin)rr6r rrrr__repr__es$	

z_UnixReadPipeTransport.__repr__cCsytj|j|j}WnLttfk
r6Yntk
rj}z|j|dWYdd}~XnX|r|jj	|ng|j
jrtj
d|d|_|j
j|j|j
j|jj|j
j|jddS)Nz"Fatal read error on pipe transportz%r was closed by peerT)rsreadrmax_sizeBlockingIOErrorInterruptedErrorr2_fatal_errorrZ
data_receivedr	get_debugrr6r_remove_readerrZeof_received_call_connection_lost)rr)r<rrrr{s#	z"_UnixReadPipeTransport._read_readycCs|jj|jdS)N)rrr)rrrr
pause_readingsz$_UnixReadPipeTransport.pause_readingcCs|jj|j|jdS)N)rrrr)rrrrresume_readingsz%_UnixReadPipeTransport.resume_readingcCs
||_dS)N)r)rrIrrrset_protocolsz#_UnixReadPipeTransport.set_protocolcCs|jS)N)r)rrrrget_protocolsz#_UnixReadPipeTransport.get_protocolcCs|jS)N)r)rrrr
is_closingsz!_UnixReadPipeTransport.is_closingcCs|js|jddS)N)r_close)rrrrr$s	z_UnixReadPipeTransport.closecCs4|jdk	r0tjd|t|jjdS)Nzunclosed transport %r)rwarningswarnResourceWarningr$)rrrr__del__sz_UnixReadPipeTransport.__del__zFatal error on pipe transportc	Cst|trL|jtjkrL|jjrwtjd||ddn+|jjd|d|d|d|j	i|j
|dS)Nz%r: %sexc_infoTmessage	exceptionrjrI)rDr2r7ZEIOrrrdebugcall_exception_handlerrr)rr<rrrrrs!	z#_UnixReadPipeTransport._fatal_errorcCs6d|_|jj|j|jj|j|dS)NT)rrrrrr)rr<rrrrs	z_UnixReadPipeTransport._closecCsDz|jj|Wd|jjd|_d|_d|_XdS)N)rconnection_lostrr$r)rr<rrrrs
		z,_UnixReadPipeTransport._call_connection_losti)rzr{r|rrrrrrrrrr$rPY34rrrrrr)r!rrGDs	rGcseZdZddfddZddZddZdd	Zd
dZdd
ZddZ	ddZ
ddZddZddZ
ddZejrddZddZddd Zdd!d"Zd#d$ZS)%rMNc
sjtj||||jd<||_|j|_||_t|_d|_	d|_
tj|jj
}tj|}tj|}tj|}	|p|p|	sd|_d|_d|_tdt|j|jj|jj||	s|rAtjjdrA|jj|jj|j|j|dk	rf|jjtj|ddS)NrHrFz?Pipe transport is only for pipes, sockets and character devicesZaix)rrrrr0rr	bytearray_buffer
_conn_lostrrsrrtrqrrrrr1rrrrsysplatform
startswithrrr	r)
rrrHrIrJrKrZis_charZis_fifoZ	is_socket)r!rrrs2
							
z _UnixWritePipeTransport.__init__cCs#|jjg}|jdkr.|jdn|jrD|jd|jd|jt|jdd}|jdk	r|dk	rtj	||jt
j}|r|jdn
|jd|j}|jd|n,|jdk	r|jdn
|jdd	d
j
|S)Nrrzfd=%srrrz
bufsize=%srz<%s>r)r!rzrrrrrrr
rrZEVENT_WRITEget_write_buffer_sizer)rr6r rrXrrrrs(	


z _UnixWritePipeTransport.__repr__cCs
t|jS)N)lenr)rrrrrsz-_UnixWritePipeTransport.get_write_buffer_sizecCsI|jjrtjd||jr;|jtn
|jdS)Nz%r was closed by peer)rrrr6rrBrokenPipeError)rrrrr
s
	z#_UnixWritePipeTransport._read_readycCst|tttfs*tt|t|trEt|}|sOdS|jsa|jr|jtj	krt
jd|jd7_dS|jsnyt
j|j|}Wnettfk
rd}YnHtk
r}z(|jd7_|j|ddSWYdd}~XnX|t|kr3dS|dkrUt||d}|jj|j|j|j|7_|jdS)Nz=pipe closed by peer or os.write(pipe, data) raised exception.rrz#Fatal write error on pipe transport)rDbytesr
memoryviewrcreprrrrZ!LOG_THRESHOLD_FOR_CONNLOST_WRITESrwarningrrswriterrrrSrrrZ_add_writer_write_readyZ_maybe_pause_protocol)rr)nr<rrrrs4*
	
z_UnixWritePipeTransport.writecCs;|jstdytj|j|j}Wn{ttfk
rKYntk
r}zD|jj|j	d7_	|j
j|j|j|dWYdd}~XnX|t
|jkr|jj|j
j|j|j|jr|j
j|j|jddS|dkr7|jd|=dS)NzData should not be emptyrz#Fatal write error on pipe transportr)rrcrsrrrrrSclearrr_remove_writerrrZ_maybe_resume_protocolrrr)rrr<rrrr4s(
#

	
z$_UnixWritePipeTransport._write_readycCsdS)NTr)rrrr
can_write_eofNsz%_UnixWritePipeTransport.can_write_eofcCs[|jr
dS|jstd|_|jsW|jj|j|jj|jddS)NT)	rrrcrrrrrr)rrrr	write_eofQs			z!_UnixWritePipeTransport.write_eofcCs
||_dS)N)r)rrIrrrrZsz$_UnixWritePipeTransport.set_protocolcCs|jS)N)r)rrrrr]sz$_UnixWritePipeTransport.get_protocolcCs|jS)N)r)rrrrr`sz"_UnixWritePipeTransport.is_closingcCs'|jdk	r#|jr#|jdS)N)rrr)rrrrr$csz_UnixWritePipeTransport.closecCs4|jdk	r0tjd|t|jjdS)Nzunclosed transport %r)rrrrr$)rrrrrlsz_UnixWritePipeTransport.__del__cCs|jddS)N)r)rrrrabortqsz_UnixWritePipeTransport.abortzFatal error on pipe transportc	Csyt|tjr=|jjrhtjd||ddn+|jjd|d|d|d|ji|j	|dS)Nz%r: %srTrrrjrI)
rDrZ_FATAL_ERROR_IGNORErrrrrrr)rr<rrrrrts	z$_UnixWritePipeTransport._fatal_errorcCs_d|_|jr%|jj|j|jj|jj|j|jj|j|dS)NT)	rrrrrrrrr)rr<rrrrs		
z_UnixWritePipeTransport._closecCsDz|jj|Wd|jjd|_d|_d|_XdS)N)rrrr$r)rr<rrrrs
		z-_UnixWritePipeTransport._call_connection_lost)rzr{r|rrrrrrrrrrrr$rrrrrrrrr)r!rrMs$%	!		rMset_inheritablecCsittdd}tj|tj}|sJtj|tj||Bntj|tj||@dS)NZ
FD_CLOEXECr)rrZF_GETFDZF_SETFD)rZinheritableZcloexec_flagoldrrr_set_inheritables
rc@seZdZddZdS)rPc	Ksd}|tjkr=|jj\}}t|jdtj|d|d|d|d|ddd|||_|dk	r|jt	|j
dd	||j_dS)
NFrTrUrVrWZuniversal_newlinesrXwb	buffering)
subprocessPIPErr#rr0Popen_procr$rdetachrU)	rr;rTrUrVrWrXrYZstdin_wrrr_starts
z_UnixSubprocessTransport._startN)rzr{r|rrrrrrPsrPc@s^eZdZdZddZddZddZdd	Zd
dZdd
Z	dS)raHAbstract base class for monitoring child processes.

    Objects derived from this class monitor a collection of subprocesses and
    report their termination or interruption by a signal.

    New callbacks are registered with .add_child_handler(). Starting a new
    process must be done within a 'with' block to allow the watcher to suspend
    its activity until the new process if fully registered (this is needed to
    prevent a race condition in some implementations).

    Example:
        with watcher:
            proc = subprocess.Popen("sleep 1")
            watcher.add_child_handler(proc.pid, callback)

    Notes:
        Implementations of this class must be thread-safe.

        Since child watcher objects may catch the SIGCHLD signal and call
        waitpid(-1), there should be only one active object per process.
    cGs
tdS)aRegister a new child handler.

        Arrange for callback(pid, returncode, *args) to be called when
        process 'pid' terminates. Specifying another callback for the same
        process replaces the previous handler.

        Note: callback() must be thread-safe.
        N)NotImplementedError)rr^r:r;rrrrQs	z&AbstractChildWatcher.add_child_handlercCs
tdS)zRemoves the handler for process 'pid'.

        The function returns True if the handler was successfully removed,
        False if there was nothing to remove.N)r)rr^rrrremove_child_handlersz)AbstractChildWatcher.remove_child_handlercCs
tdS)zAttach the watcher to an event loop.

        If the watcher was previously attached to an event loop, then it is
        first detached before attaching to the new loop.

        Note: loop may be None.
        N)r)rrrrrattach_loopsz AbstractChildWatcher.attach_loopcCs
tdS)zlClose the watcher.

        This must be called to make sure that any underlying resource is freed.
        N)r)rrrrr$szAbstractChildWatcher.closecCs
tdS)zdEnter the watcher's context and allow starting new processes

        This function must return selfN)r)rrrr	__enter__szAbstractChildWatcher.__enter__cCs
tdS)zExit the watcher's contextN)r)rabcrrr__exit__szAbstractChildWatcher.__exit__N)
rzr{r|r}rQrrr$rrrrrrrs
c@sdeZdZddZddZddZddZd	d
ZddZd
dZ	dS)BaseChildWatchercCsd|_i|_dS)N)r
_callbacks)rrrrrs	zBaseChildWatcher.__init__cCs|jddS)N)r)rrrrr$	szBaseChildWatcher.closecCs
tdS)N)r)rexpected_pidrrr_do_waitpidszBaseChildWatcher._do_waitpidcCs
tdS)N)r)rrrr_do_waitpid_allsz BaseChildWatcher._do_waitpid_allcCs|dks$t|tjs$t|jdk	rX|dkrX|jrXtjdt|jdk	rz|jj	t
j||_|dk	r|jt
j|j
|jdS)NzCA loop is being detached from a child watcher with pending handlers)rDrZAbstractEventLooprcrrrrRuntimeWarningr&r.SIGCHLDr>	_sig_chldr)rrrrrrs$$	zBaseChildWatcher.attach_loopcCsVy|jWnAtk
rQ}z!|jjddd|iWYdd}~XnXdS)Nrz$Unknown exception in SIGCHLD handlerr)rrSrr)rr<rrrr&s	zBaseChildWatcher._sig_chldcCsAtj|rtj|Stj|r9tj|S|SdS)N)rsWIFSIGNALEDWTERMSIG	WIFEXITEDWEXITSTATUS)rstatusrrr_compute_returncode2s

z$BaseChildWatcher._compute_returncodeN)
rzr{r|rr$rrrrrrrrrrsrcspeZdZdZfddZddZddZdd	Zd
dZdd
Z	ddZ
S)rad'Safe' child watcher implementation.

    This implementation avoids disrupting other code spawning processes by
    polling explicitly each process in the SIGCHLD handler instead of calling
    os.waitpid(-1).

    This is a safe solution but it has a significant overhead when handling a
    big number of children (O(n) each time SIGCHLD is raised)
    cs|jjtjdS)N)rrrr$)r)r!rrr$Ks
zSafeChildWatcher.closecCs|S)Nr)rrrrrOszSafeChildWatcher.__enter__cCsdS)Nr)rrrrrrrrRszSafeChildWatcher.__exit__cGs?|jdkrtd||f|j|<|j|dS)NzICannot add child handler, the child watcher does not have a loop attached)rr3rr)rr^r:r;rrrrQUs
	z"SafeChildWatcher.add_child_handlercCs/y|j|=dSWntk
r*dSYnXdS)NTF)rr@)rr^rrrr`s


z%SafeChildWatcher.remove_child_handlercCs+x$t|jD]}|j|qWdS)N)r%rr)rr^rrrrgsz SafeChildWatcher._do_waitpid_allcCs
|dkstytj|tj\}}Wn.tk
ra|}d}tjd|YnBX|dkrrdS|j|}|jj	rtj
d||y|jj|\}}Wn7t
k
r|jj	rtjd|ddYnX||||dS)Nrz8Unknown child process pid %d, will report returncode 255z$process %s exited with returncode %sz'Child watcher got an unexpected pid: %rrT)rcrswaitpidWNOHANGChildProcessErrorrrrrrrrpopr@)rrr^rr_r:r;rrrrls,
	

	zSafeChildWatcher._do_waitpid)rzr{r|r}r$rrrQrrrrr)r!rr@s	csveZdZdZfddZfddZddZdd	Zd
dZdd
Z	ddZ
S)raW'Fast' child watcher implementation.

    This implementation reaps every terminated processes by calling
    os.waitpid(-1) directly, possibly breaking other code spawning processes
    and waiting for their termination.

    There is no noticeable overhead when handling a big number of children
    (O(1) each time a child terminates).
    cs2tjtj|_i|_d|_dS)Nr)rr	threadingZLock_lock_zombies_forks)r)r!rrrs
	zFastChildWatcher.__init__cs+|jj|jjtjdS)N)rrrrr$)r)r!rrr$s

zFastChildWatcher.closec
Cs(|j|jd7_|SWdQRXdS)Nr)rr)rrrrrs
zFastChildWatcher.__enter__c
Csg|jG|jd8_|js,|jr0dSt|j}|jjWdQRXtjd|dS)Nrz5Caught subprocesses termination from unknown pids: %s)rrrr4rrr)rrrrZcollateral_victimsrrrrs
zFastChildWatcher.__exit__cGs|jstd|jdkr0td|jGy|jj|}Wn)tk
r{||f|j|<dSYnXWdQRX||||dS)NzMust use the context managerzICannot add child handler, the child watcher does not have a loop attached)	rrcrr3rrrr@r)rr^r:r;r_rrrrQs	

z"FastChildWatcher.add_child_handlercCs/y|j|=dSWntk
r*dSYnXdS)NTF)rr@)rr^rrrrs


z%FastChildWatcher.remove_child_handlercCs9x2ytjdtj\}}Wntk
r:dSYn X|dkrKdS|j|}|jy|jj|\}}WnStk
r|j	r||j
|<|jjrt
jd||wd}Yn#X|jjrt
jd||WdQRX|dkr!t
jd||q||||qWdS)Nrrz,unknown process %s exited with returncode %sz$process %s exited with returncode %sz8Caught subprocess termination from unknown pid: %d -> %dr+)rsrrrrrrrr@rrrrrrr)rr^rr_r:r;rrrrs6
	

	
	
	
z FastChildWatcher._do_waitpid_all)rzr{r|r}rr$rrrQrrrr)r!rrs	csdeZdZdZeZfddZddZfddZdd	Z	d
dZ
S)_UnixDefaultEventLoopPolicyz:UNIX event loop policy with a watcher for child processes.cstjd|_dS)N)rr_watcher)r)r!rrrs
z$_UnixDefaultEventLoopPolicy.__init__c
Cs^tjN|jdkrSt|_ttjtjrS|jj|j	j
WdQRXdS)N)rrrrrDrcurrent_thread_MainThreadr_localr)rrrr
_init_watchers
z)_UnixDefaultEventLoopPolicy._init_watchercsKtj||jdk	rGttjtjrG|jj|dS)zSet the event loop.

        As a side effect, if a child watcher was set before, then calling
        .set_event_loop() from the main thread will call .attach_loop(loop) on
        the child watcher.
        N)rset_event_looprrDrrrr)rr)r!rrr
sz*_UnixDefaultEventLoopPolicy.set_event_loopcCs |jdkr|j|jS)zzGet the watcher for child processes.

        If not yet set, a SafeChildWatcher object is automatically created.
        N)rr)rrrrrOs
z-_UnixDefaultEventLoopPolicy.get_child_watchercCsJ|dks!t|ts!t|jdk	r=|jj||_dS)z$Set the watcher for child processes.N)rDrrcrr$)rrZrrrset_child_watcher%s!
z-_UnixDefaultEventLoopPolicy.set_child_watcher)rzr{r|r}rZ
_loop_factoryrrrrOrrr)r!rrs
r)5r}r7rsr.r"rqrrrrrrrrrrr	r
rrr
logr__all__rImportErrorrZfspathrpAttributeErrorZBaseSelectorEventLooprhasattrrrZ
ReadTransportrGZ_FlowControlMixinZWriteTransportrMrrZBaseSubprocessTransportrPrrrrZBaseDefaultEventLoopPolicyrrrrrrr<module>sh


F=On2