+
    üÐj(T  ã                  ó  € R t ^ RIHt ^ RIt^ RIt^ RIHt ^ RIHtH	t	 ^ RI
HtHtHt ^ RIHt ^ RIHtHtHtHtHtHtHtHtHtHtHt ^ RIHtHt ^ R	IH t  ^ R
I!H"t"H#t# ^ RI$H%t%H&t& ^RI'H(t(H)t)H*t*H+t+H,t, ]PZ                  ! R4      t. ^ RI/H0t1 ]1t0 ^ RI
H3t4 ]4t3]&R8H  t5Rt6]5'       d   ^ RI
H7t7H8t8 Rt6]%Pr                  ! 4       '       d    ^ RI:t:Rt6 ! R R4      t;]	! ]]]4       ! R R];]4      4       t< ! R R4      t=]	! ]4       ! R R]=];4      4       t>]0f   ]3e
   ]! ]<]4       ]5'       d   ]! ]<]]4       ]6'       d
   ]! ]<]4       ]?! ]RR4      e
   ]! ]<]4       R.t@R#   ]2 d    Rt0 LÝi ; i  ]2 d    Rt3 Lãi ; i  ]2 d    Rt: L»i ; i)z
Posix reactor base class
)ÚannotationsN)ÚSequence)ÚclassImplementsÚimplementer)ÚerrorÚtcpÚudp)ÚReactorBase)Ú
IConnectorÚIHalfCloseableDescriptorÚIReactorFDSetÚIReactorMulticastÚIReactorProcessÚIReactorSocketÚIReactorSSLÚIReactorTCPÚIReactorUDPÚIReactorUNIXÚIReactorUNIXDatagram)ÚCONNECTION_DONEÚCONNECTION_LOST)ÚClientFactory)ÚfailureÚlog)ÚplatformÚplatformType)ÚSignalHandlingÚ_ChildSignalHandlingÚ_IWakerÚ_MultiSignalHandlingÚ_WakerzFile descriptor lost)Útls)ÚsslÚposixF)ÚprocessÚunixTc                  óÒ   € ] tR t^PtRt]P                  ]P                  ! ]P                  ! 4       4      ]P                  ]P                  ! ]P                  ! 4       4      /3R lt
RtR# )Ú_DisconnectSelectableMixinz6
Mixin providing the C{_disconnectSelectable} method.
c                óÎ  € V P                  V4       VP                  VP                  4      pV'       d{   V'       dO   VP                  \        P                  8X  d0   \
        P                  ! V4      '       d   VP                  V4       R# V P                  V4       VP                  V4       R# V P                  V4       VP                  \        P                  ! V4      4       R# )zŸ
Utility function for disconnecting a selectable.

Supports half-close notification, isRead should be boolean indicating
whether error resulted from doRead().
N)ÚremoveReaderÚgetÚ	__class__r   ÚConnectionDoner   Ú
providedByÚreadConnectionLostÚremoveWriterÚconnectionLostr   ÚFailure)ÚselfÚ
selectableÚwhyÚisReadÚfaildictÚfs   &&&&& Ú</usr/lib/python3/dist-packages/twisted/internet/posixbase.pyÚ_disconnectSelectableÚ0_DisconnectSelectableMixin._disconnectSelectableU   sœ   € ð  	×Ñ˜*Ô%Ø�L‰L˜Ÿ™Ó'ˆßçØ—M‘M¤U×%9Ñ%9Ô9Ü,×7Ò7¸
×CÒCà×-Ñ-¨aÖ0à×!Ñ! *Ô-Ø×)Ñ)¨!Ö,à×Ñ˜jÔ)Ø×%Ñ%¤g§o¢o°cÓ&:Ö;ó    © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r,   r   r1   ÚConnectionLostr9   Ú__static_attributes__r<   r;   r8   r'   r'   P   sR   † ñð × Ñ  '§/¢/°%×2FÒ2FÓ2HÓ"IØ× Ñ  '§/¢/°%×2FÒ2FÓ2HÓ"Ið
÷<ð <r;   r'   c                  ó€  a a€ ] tR t^vt0 o$ RtRtR R ltR tR V 3R lltR/ RRR^ R3R lt	RR	 lt
RR
 ltRR ltRR ltR R ltR!R lt]'       d*   ]P$                  ]P&                  ]P(                  3tR]R&   M]P$                  ]P&                  3tR tR tR"R ltR#R ltR$R R lltR%R ltR#R ltR tRtV ;t # )&ÚPosixReactorBasez´
A basis for reactors that use file descriptors.

@ivar _childWaker: L{None} or a reference to the L{_SIGCHLDWaker}
    which is used to properly notice child process termination.
Nc               ó   € V ^8„  d   QhRR/# )é   Úreturnr   r<   )Úformats   "r8   Ú__annotate__ÚPosixReactorBase.__annotate__ƒ   s   € ÷ ñ ˜wñ r;   c                	ó   € \        4       # ©N)r    ©r2   s   &r8   Ú_wakerFactoryÚPosixReactorBase._wakerFactoryƒ   s	   € Ü‹xˆr;   c                óØ   € V P                   '       gX   V P                  4       V n         V P                  P                  V P                   4       V P	                  V P                   4       R# R# )zÅ
Install a `waker' to allow threads and signals to wake up the IO thread.

We use the self-pipe trick (http://cr.yp.to/docs/selfpipe.html) to wake
the reactor. On Windows we use a pair of sockets.
N)ÚwakerrO   Ú_internalReadersÚaddÚ	addReaderrN   s   &r8   ÚinstallWakerÚPosixReactorBase.installWaker†   sJ   € ð �z�zˆzØ×+Ñ+Ó-ˆDŒJØ×!Ñ!×%Ñ% d§j¡jÔ1Ø�N‰N˜4Ÿ:™:Ö&ñ r;   c               ó   € V ^8„  d   QhRR/# )rG   rH   r   r<   )rI   s   "r8   rJ   rK   ’   s   € ÷ ñ  ñ r;   c                ó�   <€ \         SV `  4       p\        R8X  d,   \        V\	        V P
                  V P                  4      34      # V# )zR
Customize reactor signal handling to support child processes on POSIX
platforms.
r#   )ÚsuperÚ_signalsFactoryr   r   r   Ú_addInternalReaderÚ_removeInternalReader)r2   ÚbaseHandlingr+   s   & €r8   r[   Ú PosixReactorBase._signalsFactory’   sS   ø€ ô
 ‘wÑ.Ó0ˆä˜7Ô"ä'ð !ä(Ø×/Ñ/Ø×2Ñ2óð	ó
ð 
ð Ðr;   c
                	ó¸  € \         R 8X  dP   V'       d*   V	e   \        R4      h\        P                  ! WW4WQWgV4	      # \        P                  ! V VVVVVVVV	4	      # \         R8X  dl   Ve   \        R4      hVe   \        R4      hV'       d   \        R4      hV	'       d   \        R4      h\
        '       d   ^ RIHp
 V
! WW#WE4      # \        R4      h\        R	4      h)
r#   z1Using childFDs is not supported with usePTY=True.Úwin32z,Setting UID is unsupported on this platform.z,Setting GID is unsupported on this platform.z1The usePTY parameter is not supported on Windows.z1Customizing childFDs is not supported on Windows.)ÚProcessz:spawnProcess not available since pywin32 is not installed.z0spawnProcess only available on Windows or POSIX.)r   Ú
ValueErrorr$   Ú
PTYProcessrb   Úwin32processÚtwisted.internet._dumbwin32procÚNotImplementedError)r2   ÚprocessProtocolÚ
executableÚargsÚenvÚpathÚuidÚgidÚusePTYÚchildFDsrb   s   &&&&&&&&&& r8   ÚspawnProcessÚPosixReactorBase.spawnProcess¬   s÷   € ô ˜7Ô"ßØÒ'Ü$ØKóð ô ×)Ò)Ø d°ÈÐRXóð ô —’ØØØØØØ#ØØØó
ð 
ô ˜WÔ$ØŠÜ Ð!OÓPÐPØŠÜ Ð!OÓPÐPßÜ Ð!TÓUÐUßÜ Ð!TÓUÐUç‹|ÝCá˜t°jÈÓRÐRä)ØPóð ô &ØBóð r;   c                óV   € \         P                  ! WW4V 4      pVP                  4        V# )zwConnects a given L{DatagramProtocol} to the given numeric UDP port.

@returns: object conforming to L{IListeningPort}.
)r   ÚPortÚstartListening)r2   ÚportÚprotocolÚ	interfaceÚmaxPacketSizeÚps   &&&&& r8   Ú	listenUDPÚPosixReactorBase.listenUDPæ   s'   € ô
 �HŠH�T Y¸tÓDˆØ	×ÑÔØˆr;   c                óV   € \         P                  ! WW4W4      pVP                  4        V# )z€Connects a given DatagramProtocol to the given numeric UDP port.

EXPERIMENTAL.

@returns: object conforming to IListeningPort.
)r   ÚMulticastPortru   )r2   rv   rw   rx   ry   ÚlistenMultiplerz   s   &&&&&& r8   ÚlistenMulticastÚ PosixReactorBase.listenMulticastñ   s.   € ô ×ÒØ˜I°dó
ˆð 	
×ÑÔØˆr;   c                	ó|   € \         '       g   Q R 4       h\        P                  ! WW0V4      pVP                  4        V# ©úUNIX support is not present)ÚunixEnabledr%   Ú	ConnectorÚconnect)r2   ÚaddressÚfactoryÚtimeoutÚcheckPIDÚcs   &&&&& r8   ÚconnectUNIXÚPosixReactorBase.connectUNIX  s2   € ß‹{Ð9Ð9Ó9ˆ{Ü�NŠN˜7¨W¸HÓEˆØ	�	‰	ŒØˆr;   c                	ó|   € \         '       g   Q R 4       h\        P                  ! WW4W4      pVP                  4        V# rƒ   )r…   r%   rt   ru   )r2   rˆ   r‰   ÚbacklogÚmodeÚwantPIDrz   s   &&&&&& r8   Ú
listenUNIXÚPosixReactorBase.listenUNIX  s5   € ß‹{Ð9Ð9Ó9ˆ{Ü�IŠI�g¨°tÓEˆØ	×ÑÔØˆr;   c                ó|   € \         '       g   Q R4       h\        P                  ! WW4V 4      pVP                  4        V# )z{
Connects a given L{DatagramProtocol} to the given path.

EXPERIMENTAL.

@returns: object conforming to L{IListeningPort}.
r„   )r…   r%   ÚDatagramPortru   )r2   rˆ   rw   ry   r‘   rz   s   &&&&& r8   ÚlistenUNIXDatagramÚ#PosixReactorBase.listenUNIXDatagram  s9   € ÷ ‹{Ð9Ð9Ó9ˆ{Ü×Ò˜g°ÀdÓKˆØ	×ÑÔØˆr;   c                ó|   € \         '       g   Q R4       h\        P                  ! WW4WP4      pVP                  4        V# )zL
Connects a L{ConnectedDatagramProtocol} instance to a path.

EXPERIMENTAL.
r„   )r…   r%   ÚConnectedDatagramPortru   )r2   rˆ   rw   ry   r‘   ÚbindAddressrz   s   &&&&&& r8   ÚconnectUNIXDatagramÚ$PosixReactorBase.connectUNIXDatagram  s>   € ÷ ‹{Ð9Ð9Ó9ˆ{Ü×&Ò&Ø˜}°Kó
ˆð 	
×ÑÔØˆr;   zSequence[socket.AddressFamily]Ú_supportedAddressFamiliesc                ó6  € W P                   9  d   \        P                  ! V4      h\        '       d7   V\        P
                  8X  d"   \        P                  P                  WV4      pM \        P                  P                  WW#4      pVP                  4        V# )a  
Create a new L{IListeningPort} from an already-initialized socket.

This just dispatches to a suitable port implementation (eg from
L{IReactorTCP}, etc) based on the specified C{addressFamily}.

@see: L{twisted.internet.interfaces.IReactorSocket.adoptStreamPort}
)rž   r   ÚUnsupportedAddressFamilyr…   ÚsocketÚAF_UNIXr%   rt   Ú_fromListeningDescriptorr   ru   )r2   ÚfileDescriptorÚaddressFamilyr‰   rz   s   &&&& r8   ÚadoptStreamPortÚ PosixReactorBase.adoptStreamPort:  ss   € ð × >Ñ >Ô>Ü×0Ò0°Ó?Ð?ç‹;˜=¬F¯N©NÔ:Ü—	‘	×2Ñ2°4ÈÓQ‰Aä—‘×1Ñ1Ø móˆAð 	
×ÑÔØˆr;   c                ó  € W P                   9  d   \        P                  ! V4      h\        '       d6   V\        P
                  8X  d!   \        P                  P                  WV 4      # \        P                  P                  WW04      # )zO
@see:
    L{twisted.internet.interfaces.IReactorSocket.adoptStreamConnection}
)
rž   r   r    r…   r¡   r¢   r%   ÚServerÚ_fromConnectedSocketr   )r2   r¤   r¥   r‰   s   &&&&r8   ÚadoptStreamConnectionÚ&PosixReactorBase.adoptStreamConnectionO  sd   € ð
 × >Ñ >Ô>Ü×0Ò0°Ó?Ð?ç‹;˜=¬F¯N©NÔ:Ü—;‘;×3Ñ3°NÈTÓRÐRä—:‘:×2Ñ2Ø¨wóð r;   c                	óà   € V\         P                  \         P                  39  d   \        P                  ! V4      h\
        P                  P                  WW#VR 7      pVP                  4        V# ))ry   )	r¡   ÚAF_INETÚAF_INET6r   r    r   rt   r£   ru   )r2   r¤   r¥   rw   ry   rz   s   &&&&& r8   ÚadoptDatagramPortÚ"PosixReactorBase.adoptDatagramPort^  s]   € ð ¤§¡´·±Ð AÔAÜ×0Ò0°Ó?Ð?ä�H‰H×-Ñ-Ø -Èð .ó 
ˆð 	
×ÑÔØˆr;   c                	óV   € \         P                  ! WW4V 4      pVP                  4        V# rM   )r   rt   ru   )r2   rv   r‰   r�   rx   rz   s   &&&&& r8   Ú	listenTCPÚPosixReactorBase.listenTCPl  s%   € Ü�HŠH�T G¸Ó=ˆØ	×ÑÔØˆr;   c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )rG   ÚhostÚstrrv   Úintr‰   z'ClientFactory'rŠ   Úfloatr›   ztuple[str, int] | NonerH   r
   r<   )rI   s   "r8   rJ   rK   q  sF   € ÷ 
ñ 
àð
ð ð
ð !ð	
ð
 ð
ð ,ð
ð 
ñ
r;   c                	óV   € \         P                  ! WW4WP4      pVP                  4        V# rM   )r   r†   r‡   )r2   r¶   rv   r‰   rŠ   r›   rŒ   s   &&&&&& r8   Ú
connectTCPÚPosixReactorBase.connectTCPq  s$   € ô �MŠM˜$ g¸ÓJˆØ	�	‰	ŒØˆr;   c           	     	óØ   € \         e+   \         P                  VRV4      pV P                  WWuV4      # \        e+   \        P	                  WW4WVV 4      pVP                  4        V# Q R4       h)NTúSSL support is not present)r!   ÚTLSMemoryBIOFactoryr»   r"   r†   r‡   )	r2   r¶   rv   r‰   ÚcontextFactoryrŠ   r›   Ú
tlsFactoryrŒ   s	   &&&&&&&  r8   Ú
connectSSLÚPosixReactorBase.connectSSL  sg   € ô Š?Ü×0Ñ0°ÀÀwÓOˆJØ—?‘? 4¨zÀKÓPÐPÜŠ_Ü—‘Ø˜G°WÈ4óˆAð �I‰IŒKØˆHà6Ð6Ó6�5r;   c                	óæ   € \         e3   \         P                  VRV4      pV P                  WWE4      pRVn        V# \        e*   \        P                  WW4WP4      pVP                  4        V# Q R4       h)NFÚTLSr¾   )r!   r¿   r³   Ú_typer"   rt   ru   )r2   rv   r‰   rÀ   r�   rx   rÁ   rz   s   &&&&&&  r8   Ú	listenSSLÚPosixReactorBase.listenSSLŽ  sj   € ÜŠ?Ü×0Ñ0°ÀÈÓPˆJØ—>‘> $°GÓGˆDØˆDŒJØˆKÜŠ_Ü—‘˜¨ÀÓQˆAØ×ÑÔØˆHà6Ð6Ó6�5r;   c                óÚ   € \        V4      V P                  ,
          pV F  pV P                  V4       K  	  \        V4      pV F  pV P                  V4       K  	  \	        W5,          4      # )a/  
Remove all readers and writers, and list of removed L{IReadDescriptor}s
and L{IWriteDescriptor}s.

Meant for calling from subclasses, to implement removeAll, like::

  def removeAll(self):
      return self._removeAll(self._reads, self._writes)

where C{self._reads} and C{self._writes} are iterables.
)ÚsetrS   r)   r/   Úlist)r2   ÚreadersÚwritersÚremovedReadersÚreaderÚremovedWritersÚwriters   &&&    r8   Ú
_removeAllÚPosixReactorBase._removeAll›  sc   € ô ˜W›¨×(=Ñ(=Õ=ˆÛ$ˆFØ×Ñ˜fÖ%ñ %ô ˜W›ˆÛ$ˆFØ×Ñ˜fÖ%ñ %ô �NÕ3Ó4Ð4r;   )rR   r<   )Ú é    )rÔ   rÕ   F)é   é    )é2   é¶  r×   )rÕ   rÙ   )rÕ   rÙ   N)rÕ   )rØ   rÔ   )g      >@N)rÖ   N)!r=   r>   r?   r@   rA   Ú_childWakerrO   rV   r[   rq   r{   r€   r�   r“   r—   rœ   r…   r¡   r®   r¯   r¢   rž   Ú__annotations__r¦   r«   r°   r³   r»   rÂ   rÇ   rÒ   rC   Ú__classcell__)r+   Ú__conditional_annotations__s   @@r8   rE   rE   v   sÐ   ù‡ � ñð €Kõò
'÷ð ð< ØØØØØØô6ôtôô"ôôô÷" à�N‰NØ�O‰OØ�N‰NðE
Ð!Ð#Aô 	
ð �N‰NØ�O‰Oð%
Ð!ò
ò*ô
ô÷

ô7ô7÷5ð 5r;   rE   c                  ó    € ] tR tRtRtR tRtR# )Ú_PollLikeMixini²  a€  
Mixin for poll-like reactors.

Subclasses must define the following attributes::

  - _POLL_DISCONNECTED - Bitmask for events indicating a connection was
    lost.
  - _POLL_IN - Bitmask for events indicating there is input to read.
  - _POLL_OUT - Bitmask for events indicating output can be written.

Must be mixed in to a subclass of PosixReactorBase (for
_disconnectSelectable).
c                ó\  € RpRpW0P                   ,          '       d9   W0P                  ,          '       g!   W P                  9   d
   Rp\        pM€\        pMy VP                  4       R8X  d   \        pM\W0P                  ,          '       d   VP                  4       pRpV'       g+   W0P                  ,          '       d   VP                  4       pRpV'       d   V P                  WV4       R# R#   \         d5    \        P                  ! 4       ^,          p\        P                  ! 4         L\i ; i)zO
fd is available for read or write, do the work and raise errors if
necessary.
NFTéÿÿÿÿ)Ú_POLL_DISCONNECTEDÚ_POLL_INÚ_readsr   r   ÚfilenoÚ_NO_FILEDESCÚdoReadÚ	_POLL_OUTÚdoWriteÚBaseExceptionÚsysÚexc_infor   Úerrr9   )r2   r3   ÚfdÚeventr4   ÚinReads   &&&&  r8   Ú_doReadOrWriteÚ_PollLikeMixin._doReadOrWriteÁ  sñ   € ð
 ˆØˆØ×*Ñ*×*Ô*°E¿M¹M×4IÔ4Ið —[‘[Ô ð
 �Ü%‘ô &‘ðð ×$Ñ$Ó&¨"Ô,ô '‘CàŸ}™}×,Ô,à(×/Ñ/Ó1˜Ø!%˜ß 5¯>©>×#9Ô#9ð )×0Ñ0Ó2˜Ø!&˜÷ Ø×&Ñ& z¸Ö?ñ øô !ô ô —l’l“n QÕ'�Ü—’–	ð	ús   ÁC, Á21C, Â$*C, Ã,<D+Ä*D+r<   N)r=   r>   r?   r@   rA   rñ   rC   r<   r;   r8   rß   rß   ²  s   † ñö7@r;   rß   c                  ón   € ] tR tRtRt^t^t^tR tR t	R t
R tR tR tR	 tR
 tR tR tR tR tRtR# )Ú_ContinuousPollingiû  ao  
Schedule reads and writes based on the passage of time, rather than
notification.

This is useful for supporting polling filesystem files, which C{epoll(7)}
does not support.

The implementation uses L{_PollLikeMixin}, which is a bit hacky, but
re-implementing and testing the relevant code yet again is unappealing.

@ivar _reactor: The L{EPollReactor} that is using this instance.

@ivar _loop: A C{LoopingCall} that drives the polling, or L{None}.

@ivar _readers: A C{set} of C{FileDescriptor} objects that should be read
    from.

@ivar _writers: A C{set} of C{FileDescriptor} objects that should be
    written to.
c                	ó\   € Wn         R V n        \        4       V n        \        4       V n        R # rM   )Ú_reactorÚ_looprÊ   Ú_readersÚ_writers)r2   Úreactors   &&r8   Ú__init__Ú_ContinuousPolling.__init__  s    € ØŒØˆŒ
Ü›ˆŒÜ›ˆŽr;   c                óŠ  € V P                   '       g   V P                  '       dj   V P                  fZ   ^ RIHpHp V! V P                  4      V n        V P                  V P                  n        V P                  P                  VRR7       R# R# V P                  '       d$   V P                  P                  4        RV n        R# R# )zP
Start or stop a C{LoopingCall} based on whether there are readers and
writers.
N)Ú_EPSILONÚLoopingCallF)Únow)rø   rù   r÷   Útwisted.internet.taskrþ   rÿ   Úiteraterö   ÚclockÚstartÚstop)r2   rþ   rÿ   s   &  r8   Ú
_checkLoopÚ_ContinuousPolling._checkLoop  s…   € ð
 �=�=ˆ=˜DŸMŸM˜MØ�z‰zÒ!ßGá(¨¯©Ó6�”
Ø#'§=¡=�—
‘
Ô ð —
‘
× Ñ  ¨uÐ Ö5ñ "ð �Z�ZˆZØ�J‰J�O‰OÔØˆDŽJñ r;   c                óæ   € \        V P                  4       F  pV P                  WV P                  4       K!  	  \        V P                  4       F  pV P                  W"V P
                  4       K!  	  R# )zH
Call C{doRead} and C{doWrite} on all readers and writers respectively.
N)rË   rø   rñ   rã   rù   rè   )r2   rÏ   rÑ   s   &  r8   r  Ú_ContinuousPolling.iterate/  sR   € ô ˜4Ÿ=™=Ö)ˆFØ×Ñ °·±Ö>ñ *ä˜4Ÿ=™=Ö)ˆFØ×Ñ °·±Ö?ó *r;   c                ó\   € V P                   P                  V4       V P                  4        R# )zE
Add a C{FileDescriptor} for notification of data available to read.
N)rø   rT   r  ©r2   rÏ   s   &&r8   rU   Ú_ContinuousPolling.addReader8  ó    € ð 	�‰×Ñ˜&Ô!Ø�‰Ör;   c                ó\   € V P                   P                  V4       V P                  4        R# )zF
Add a C{FileDescriptor} for notification of data available to write.
N)rù   rT   r  ©r2   rÑ   s   &&r8   Ú	addWriterÚ_ContinuousPolling.addWriter?  r  r;   c                ó‚   €  V P                   P                  V4       T P                  4        R#   \         d     R# i ; i)zI
Remove a C{FileDescriptor} from notification of data available to read.
N)rø   ÚremoveÚKeyErrorr  r  s   &&r8   r)   Ú_ContinuousPolling.removeReaderF  s9   € ð	Ø�M‰M× Ñ  Ô(ð 	�‰Öøô ô 	Úð	úó   ‚/ ¯>½>c                ó‚   €  V P                   P                  V4       T P                  4        R#   \         d     R# i ; i)zJ
Remove a C{FileDescriptor} from notification of data available to
write.
N)rù   r  r  r  r  s   &&r8   r/   Ú_ContinuousPolling.removeWriterP  s9   € ð
	Ø�M‰M× Ñ  Ô(ð 	�‰Öøô ô 	Úð	úr  c                óº   € \        V P                  V P                  ,          4      pV P                  P                  4        V P                  P                  4        V# )z!
Remove all readers and writers.
)rË   rø   rù   Úclear)r2   Úresults   & r8   Ú	removeAllÚ_ContinuousPolling.removeAll[  sB   € ô �d—m‘m d§m¡mÕ3Ó4ˆð 	�‰×ÑÔØ�‰×ÑÔØˆr;   c                ó,   € \        V P                  4      # )z
Return a list of the readers.
)rË   rø   rN   s   &r8   Ú
getReadersÚ_ContinuousPolling.getReadersf  ó   € ô �D—M‘MÓ"Ð"r;   c                ó,   € \        V P                  4      # )z
Return a list of the writers.
)rË   rù   rN   s   &r8   Ú
getWritersÚ_ContinuousPolling.getWritersl  r!  r;   c                ó   € WP                   9   # )a*  
Checks if the file descriptor is currently being observed for read
readiness.

@param fd: The file descriptor being checked.
@type fd: L{twisted.internet.abstract.FileDescriptor}
@return: C{True} if the file descriptor is being observed for read
    readiness, C{False} otherwise.
@rtype: C{bool}
)rø   ©r2   rî   s   &&r8   Ú	isReadingÚ_ContinuousPolling.isReadingr  ó   € ð —]‘]Ñ"Ð"r;   c                ó   € WP                   9   # )a,  
Checks if the file descriptor is currently being observed for write
readiness.

@param fd: The file descriptor being checked.
@type fd: L{twisted.internet.abstract.FileDescriptor}
@return: C{True} if the file descriptor is being observed for write
    readiness, C{False} otherwise.
@rtype: C{bool}
)rù   r&  s   &&r8   Ú	isWritingÚ_ContinuousPolling.isWriting  r)  r;   )r÷   rö   rø   rù   N)r=   r>   r?   r@   rA   râ   rã   rè   rû   r  r  rU   r  r)   r/   r  r  r#  r'  r+  rC   r<   r;   r8   rô   rô   û  sV   † ñð, ÐØ€HØ€Iòòò$@òòòò	ò	ò#ò#ò#ö#r;   rô   Úfromfd)ArA   Ú
__future__r   r¡   rë   Útypingr   Úzope.interfacer   r   Útwisted.internetr   r   r   Útwisted.internet.baser	   Útwisted.internet.interfacesr
   r   r   r   r   r   r   r   r   r   r   Útwisted.internet.mainr   r   Útwisted.internet.protocolr   Útwisted.pythonr   r   Útwisted.python.runtimer   r   Ú_signalsr   r   r   r   r    ÚConnectionFdescWentAwayræ   Útwisted.protocolsr!   Ú_tlsÚImportErrorr"   Ú_sslr…   ÚprocessEnabledr$   r%   Ú	isWindowsre   r'   rE   rß   rô   ÚgetattrÚ__all__r<   r;   r8   Ú<module>rB     s¿  ðñ
õ #ã Û 
Ý ç 7ç ,Ñ ,Ý -÷÷ ÷ ñ ÷ CÝ 3ß 'ß 9÷õ ð ×,Ò,Ð-CÓD€ðÝ-ð €CðÝ,ð €Cà˜gÑ%€à€ßß.à€Nð ×Ò×ÒðÛàˆ÷
#<ñ #<ñL ˆ[˜+Ð'8Ó9ôx5Ð1°;ó x5ó :ðx5÷v	F@ñ F@ñR ˆ]ÓôN#˜Ð)Có N#ó ðN#ðb ‚?�c’oÙÐ$ kÔ2ßÙÐ$ lÐ4HÔIßÙÐ$ oÔ6Ù
ˆ6�8˜TÓ"Ò.ÙÐ$ nÔ5àÐ
‚øðI ô Ø
‚Cðûð ô Ø
‚Cðûð& ô ØŠðús6   ÂE" ÂE1 Ã
F  Å"	E.Å-E.Å1	E=Å<E=Æ 	FÆF