+
    üÐjkO  ã                  ó¼  € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIHtHtH	t	 ^ RI
HtHt ^ RIHtHtHtHtHt ^ RI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!H"t"H#t#H$t$ ^ RI%H&t& ^ RI'H(t( ^ RI)H*t+H,t,H-t-H.t.H/t/H0t0H1t1 ^ RI2H3t3H4t4H5t5  ^ RI6H7t8 ]8t9]'       d   ^ RI;H<t< ] ]Pz                  ]"]P|                  /t?]! ]&]P€                  ]P‚                  4       ! R R]P„                  ]1],4      4       tC]9e   ]! ]C]Pˆ                  4        ! R R]-].]C4      tE ! R R]C4      tF ! R R]+4      t*]! ]PŽ                  4       ! R R]1]4      4       tHR#   ]: d    Rt9 LÈi ; i)z
TCP support for IOCP reactor
)ÚannotationsN)ÚTYPE_CHECKINGÚOptionalÚUnion)ÚclassImplementsÚimplementer)ÚaddressÚdeferÚerrorÚ
interfacesÚmain)Ú	_LogOwnerÚisIPv6Address)ÚIPv4AddressÚIPv6Address)Ú	IProtocol)ÚabstractÚiocpsupport)ÚERROR_CONNECTION_REFUSEDÚERROR_IO_PENDINGÚERROR_NETWORK_UNREACHABLEÚSO_UPDATE_ACCEPT_CONTEXTÚSO_UPDATE_CONNECT_CONTEXT)ÚIReadWriteHandle)ÚProtocol)Ú	ConnectorÚ_AbortingMixinÚ_BaseBaseClientÚ_BaseTCPClientÚ_getsocknameÚ_resolveIPv6Ú_SocketCloser)ÚfailureÚlogÚreflect)ÚstartTLS)ÚIOCPReactorc                  ó°   € ] tR t^<tRtRtRR l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]e   RR ltR tR tRR ltR tR tR tR tRtR# )Ú
ConnectionzÎ
@ivar TLS: C{False} to indicate the connection is in normal TCP mode,
    C{True} to indicate that TLS has been started and that operations must
    be routed through the L{TLSMemoryBIOProtocol} instance.
FNc                	ó~   € \         P                  P                  W4       Wn        VP                  V n        W n        R # ©N)r   Ú
FileHandleÚ__init__ÚsocketÚfilenoÚgetFileHandleÚprotocol)ÚselfÚsockÚprotoÚreactors   &&&&ÚB/usr/lib/python3/dist-packages/twisted/internet/iocpreactor/tcp.pyr,   ÚConnection.__init__F   s,   € Ü×Ñ×$Ñ$ TÔ3ØŒØ!Ÿ[™[ˆÔØŽó    c                	ó   € V P                   # r*   )r-   ©r1   s   &r5   Ú	getHandleÚConnection.getHandleL   s   € Ø�{‰{Ðr7   c                óä   € \        V\        4      '       d   M=\        V\        4      '       d   \        V4      pM\        R\	        V4      ,           4      hV P
                  P                  V4       R# )zH
@param rbuffer: Data received.
@type rbuffer: L{bytes} or L{bytearray}
z%data must be bytes or bytearray, not N)Ú
isinstanceÚbytesÚ	bytearrayÚ	TypeErrorÚtyper0   ÚdataReceived)r1   Úrbuffers   &&r5   rB   ÚConnection.dataReceivedO   sQ   € ô
 �gœu×%Ò%ØÜ˜¤×+Ò+ä˜G“n‰GäÐCÄdÈ7ÃmÕSÓTÐTà�‰×"Ñ" 7Ö+r7   c                	óL   € \         P                  ! V P                  4       W4      # r*   )Ú_iocpÚrecvr/   )r1   ÚbufflistÚevts   &&&r5   ÚreadFromHandleÚConnection.readFromHandle^   s   € Ü�zŠz˜$×,Ñ,Ó.°Ó>Ð>r7   c                óš   € \        V4      p\        P                  ! V P                  4       V^ V P                   P                  4       V4      # )zv
Send C{buff} to current file handle using C{_iocp.send}. The buffer
sent is limited to a size of C{self.SEND_LIMIT}.
)Ú
memoryviewrF   Úsendr/   Ú
SEND_LIMITÚtobytes)r1   ÚbuffrI   Ú	writeViews   &&& r5   ÚwriteToHandleÚConnection.writeToHandlea   sC   € ô
 ˜tÓ$ˆ	Ü�zŠzØ×ÑÓ  )¨A°·±Ð"@×"HÑ"HÓ"JÈCó
ð 	
r7   c                	ór  €  V P                   P                  ^4       \        P                  ! V P
                  R4      pV'       d    VP                  4        R# R#   \         d     LKi ; i  \         d@    \        P                  ! 4       p\        P                  ! 4        T P                  T4        R# i ; i)é   N)r-   ÚshutdownÚOSErrorr   ÚIHalfCloseableProtocolr0   ÚwriteConnectionLostÚBaseExceptionr"   ÚFailurer#   ÚerrÚconnectionLost)r1   ÚpÚfs   &  r5   Ú_closeWriteConnectionÚ Connection._closeWriteConnectionk   s‘   € ð	Ø�K‰K× Ñ  Ô#ô ×-Ò-¨d¯m©m¸TÓBˆßð'Ø×%Ñ%Ö'ñ øô ô 	Ùð	ûô !ô 'Ü—O’OÓ%�Ü—’”	Ø×#Ñ# A×&ð'ús$   ‚A ÁA, ÁA)Á(A)Á,AB6Â5B6c                	ó6  € \         P                  ! V P                  R 4      pV'       d    VP                  4        R # V P                  V4       R #   \         d>    \
        P                  ! 4        T P                  \        P                  ! 4       4        R # i ; ir*   )
r   rY   r0   ÚreadConnectionLostr[   r#   r]   r^   r"   r\   )r1   Úreasonr_   s   && r5   rd   ÚConnection.readConnectionLosty   sk   € Ü×-Ò-¨d¯m©m¸TÓBˆßð7Ø×$Ñ$Ö&ð
 ×Ñ Ö'øô	 !ô 7Ü—’”	Ø×#Ñ#¤G§O¢OÓ$5×6ð7ús   «A ÁABÂBc                	ó4  € V P                   '       d   R # \        P                  P                  W4       VR J ;'       g%    VP	                  \
        P                  4      '       * pV P                  V4       V P                  pV =V =	V =
VP                  V4       R # r*   )Údisconnectedr   r+   r^   Úcheckr
   ÚConnectionAbortedÚ_closeSocketr0   r-   r/   )r1   re   ÚisCleanr0   s   &&  r5   r^   ÚConnection.connectionLost„   s}   € Ø××ÐÙÜ×Ñ×*Ñ*¨4Ô8Ø˜D�.×MÐM¨¯©´U×5LÑ5LÓ(MÔ$MˆØ×Ñ˜'Ô"Ø—=‘=ˆØˆMØˆKØÐØ×Ñ Ö'r7   c                ó   € V P                   # )z>
Return the prefix to log with when I own the logging thread.
)Úlogstrr9   s   &r5   Ú	logPrefixÚConnection.logPrefix�   ó   € ð �{‰{Ðr7   c                	ó„   € \        V P                  P                  \        P                  \        P                  4      4      # r*   )Úboolr-   Ú
getsockoptÚIPPROTO_TCPÚTCP_NODELAYr9   s   &r5   ÚgetTcpNoDelayÚConnection.getTcpNoDelay–   s*   € Ü�D—K‘K×*Ñ*¬6×+=Ñ+=¼v×?QÑ?QÓRÓSÐSr7   c                	óx   € V P                   P                  \         P                  \         P                  V4       R # r*   )r-   Ú
setsockoptrv   rw   ©r1   Úenableds   &&r5   ÚsetTcpNoDelayÚConnection.setTcpNoDelay™   s$   € Ø�‰×Ñœv×1Ñ1´6×3EÑ3EÀwÖOr7   c                	ó„   € \        V P                  P                  \        P                  \        P                  4      4      # r*   )rt   r-   ru   Ú
SOL_SOCKETÚSO_KEEPALIVEr9   s   &r5   ÚgetTcpKeepAliveÚConnection.getTcpKeepAliveœ   s*   € Ü�D—K‘K×*Ñ*¬6×+<Ñ+<¼f×>QÑ>QÓRÓSÐSr7   c                	óx   € V P                   P                  \         P                  \         P                  V4       R # r*   )r-   r{   r�   r‚   r|   s   &&r5   ÚsetTcpKeepAliveÚConnection.setTcpKeepAliveŸ   s$   € Ø�‰×Ñœv×0Ñ0´&×2EÑ2EÀwÖOr7   c                ó<   € \        WV\        P                  4       R# )z!
@see: L{ITLSTransport.startTLS}
N)Ú	_startTLSr   r+   )r1   ÚcontextFactoryÚnormals   &&&r5   r%   ÚConnection.startTLS¤   s   € ô �d¨F´H×4GÑ4GÖHr7   c                óÊ   € V P                   '       d   R# V P                  '       d   V P                  P                  V4       R# \        P
                  P                  W4       R# )zÊ
Write some data, either directly to the underlying handle or, if TLS
has been started, to the L{TLSMemoryBIOProtocol} for it to encrypt and
send.

@see: L{twisted.internet.interfaces.ITransport.write}
N)rh   ÚTLSr0   Úwriter   r+   )r1   Údatas   &&r5   r�   ÚConnection.writeª   sB   € ð ××ÐÙØ�8�8ˆ8Ø�M‰M×Ñ Ö%ä×Ñ×%Ñ% dÖ1r7   c                óÊ   € V P                   '       d   R# V P                  '       d   V P                  P                  V4       R# \        P
                  P                  W4       R# )zÒ
Write some data, either directly to the underlying handle or, if TLS
has been started, to the L{TLSMemoryBIOProtocol} for it to encrypt and
send.

@see: L{twisted.internet.interfaces.ITransport.writeSequence}
N)rh   rŽ   r0   ÚwriteSequencer   r+   )r1   Úiovecs   &&r5   r“   ÚConnection.writeSequence¹   sB   € ð ××ÐÙØ�8�8ˆ8Ø�M‰M×'Ñ'¨Ö.ä×Ñ×-Ñ-¨dÖ:r7   c                óð   € V P                   '       dE   V P                  '       d1   V P                  '       g   V P                  P	                  4        R# R# R# \
        P                  P	                  W4       R# )zŽ
Close the underlying handle or, if TLS has been started, first shut it
down.

@see: L{twisted.internet.interfaces.ITransport.loseConnection}
N)rŽ   Ú	connectedÚdisconnectingr0   ÚloseConnectionr   r+   )r1   re   s   &&r5   r™   ÚConnection.loseConnectionÈ   sN   € ð �8�8ˆ8Ø�~�~ˆ~ d×&8×&8Ð&8Ø—‘×,Ñ,Ö.ñ '9‰~ô ×Ñ×.Ñ.¨tÖ<r7   c                ó¤   € V P                   '       d   V P                  P                  W4       R# \        P                  P                  WV4       R# )zK
Register a producer.

If TLS is enabled, the TLS connection handles this.
N)rŽ   r0   ÚregisterProducerr   r+   )r1   ÚproducerÚ	streamings   &&&r5   rœ   ÚConnection.registerProducerÕ   s7   € ð �8�8ˆ8ð
 �M‰M×*Ñ*¨8Ö?ä×Ñ×0Ñ0°ÀÖKr7   c                ó    € V P                   '       d   V P                  P                  4        R# \        P                  P                  V 4       R# )zM
Unregister a producer.

If TLS is enabled, the TLS connection handles this.
N)rŽ   r0   ÚunregisterProducerr   r+   r9   s   &r5   r¡   ÚConnection.unregisterProducerä   s1   € ð �8�8ˆ8Ø�M‰M×,Ñ,Ö.ä×Ñ×2Ñ2°4Ö8r7   c                	ó   € R # r*   © r9   s   &r5   ÚgetHostÚConnection.getHostï   ó   € ár7   c                	ó   € R # r*   r¤   r9   s   &r5   ÚgetPeerÚConnection.getPeeró   r§   r7   )r/   r0   r-   r*   )T)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rŽ   r,   r:   rB   rJ   rS   ra   rd   r^   rp   rx   r~   rƒ   r†   r‰   r%   r�   r“   r™   rœ   r¡   r¥   r©   Ú__static_attributes__r¤   r7   r5   r(   r(   <   s…   † ñð €Côòò,ò?ò
ò'ò	(ò
(òòTòPòTòPð Òô	Iò2ò;ô=òLò	9òör7   r(   c                  óv   € ] tR t^ütRt]P                  t]P                  t	Rt
]tR tR tR tR tR tR tR	tR
# )ÚClientzª
@ivar _tlsClientDefault: Always C{True}, indicating that this is a client
    connection, and by default when TLS is negotiated this class will act as
    a TLS client.
Tc                	óN   € Vf   RpWPn         \        P                  ! WW#WE4       R # )N)Ú é    )r4   r   r,   )r1   ÚhostÚportÚbindAddressÚ	connectorr4   s   &&&&&&r5   r,   ÚClient.__init__	  s$   € àÒØ!ˆKØŒÜ×Ò ¨D¸yÖRr7   c                ób   € V P                   P                  V P                  V P                  4      # )zL
Create a socket registered with the IOCP reactor.

@see: L{_BaseTCPClient}
)r4   ÚcreateSocketÚaddressFamilyÚ
socketTyper9   s   &r5   ÚcreateInternetSocketÚClient.createInternetSocket  s%   € ð �|‰|×(Ñ(¨×);Ñ);¸T¿_¹_ÓMÐMr7   c                ó   € V = V =R# )zv
Clean up potentially circular references to the socket and to its
C{getFileHandle} method.

@see: L{_BaseBaseClient}
N)r-   r/   r9   s   &r5   Ú_collectSocketDetailsÚClient._collectSocketDetails  s   € ð ˆK˜Ò+r7   c                ó<   € V P                   P                  V 4       R# )zF
Remove the active handle from the reactor.

@see: L{_BaseBaseClient}
N)r4   ÚremoveActiveHandler9   s   &r5   Ú_stopReadingAndWritingÚClient._stopReadingAndWriting!  s   € ð 	�‰×'Ñ'¨Ö-r7   c           	     	óö  € V'       d]   \         P                  W4      pV P                  \        P                  ! V\
        P                  P                  VR 4      34      4       R# V P                  P                  \        P                  \        \        P                  ! RV P                  P                  4       4      4       V P                  P                  V P!                  4       4      V n        RV n        V P'                  V P"                  4      pVR,           V n        V P"                  f"   \+        4       V n        V P-                  4        R# V P"                  P/                  V 4       V P1                  4        R# )zUnknown errorÚPTz,clientN)ÚconnectExErrorsÚgetÚfailIfNotConnectedr
   ÚgetConnectErrorÚerrnoÚ	errorcoder-   r{   r�   r   ÚstructÚpackr.   r¹   ÚbuildProtocolr©   r0   r—   Ú_getLogPrefixro   r   r™   ÚmakeConnectionÚstartReading)r1   Úrcr�   rI   rp   s   &&&& r5   Ú	cbConnectÚClient.cbConnect)  s  € ßÜ ×$Ñ$ RÓ,ˆBØ×#Ñ#Ü×%Ò% r¬5¯?©?×+>Ñ+>¸rÀ?Ó+SÐ&TÓUöð �K‰K×"Ñ"Ü×!Ñ!Ü)Ü—’˜C §¡×!3Ñ!3Ó!5Ó6ôð
 !ŸN™N×8Ñ8¸¿¹»ÓHˆDŒMØ!ˆDŒNØ×*Ñ*¨4¯=©=Ó9ˆIØ# iÕ/ˆDŒKØ�}‰}Ò$ô !)£
�”à×#Ñ#Ö%à—‘×,Ñ,¨TÔ2Ø×!Ñ!Ö#r7   c                	óž  € \        V R 4      '       g   R# \        P                  '       g   Q hV P                  P	                  V 4       \        P
                  ! V P                  V 4      p\        P                  ! V P                  P                  4       V P                  V4      pV'       d#   V\        8w  d   V P                  V^ V4       R# R# R# )r¹   N)ÚhasattrrF   Úhave_connectexr4   ÚaddActiveHandleÚEventr×   Úconnectr-   r.   ÚrealAddressr   )r1   rI   rÖ   s   &  r5   Ú	doConnectÚClient.doConnectG  s“   € Ü�t˜[×)Ò)ñ Ü×#×#Ð#Ð#Ð#Ø�‰×$Ñ$ TÔ*Ü�kŠk˜$Ÿ.™.¨$Ó/ˆä�]Š]˜4Ÿ;™;×-Ñ-Ó/°×1AÑ1AÀ3ÓGˆß�"Ô(Ô(Ø�N‰N˜2˜q #Ö&ñ )‰2r7   )r—   ro   r0   r4   N)r«   r¬   r­   r®   r¯   r-   ÚAF_INETr½   ÚSOCK_STREAMr¾   Ú_tlsClientDefaultr(   Ú_commonConnectionr,   r¿   rÂ   rÆ   r×   rà   r°   r¤   r7   r5   r²   r²   ü   sI   † ñð —N‘N€MØ×#Ñ#€JàÐØ"ÐòSòNò,ò.ò$ö<'r7   r²   c                  óB   € ] tR tRtRtRtR R ltR R ltR tR	 t	R
t
R# )ÚServeriU  a:  
Serverside socket-stream connection class.

I am a serverside network connection transport; a socket which came from an
accept() on a server.

@ivar _tlsClientDefault: Always C{False}, indicating that this is a server
    connection, and by default when TLS is negotiated this class will act as
    a TLS server.
Fc               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )é   r2   zsocket.socketr0   r   Ú
clientAddrzUnion[IPv4Address, IPv6Address]Ú
serverAddrÚ	sessionnoÚintr4   r&   r¤   )Úformats   "r5   Ú__annotate__ÚServer.__annotate__c  sF   € ÷ ñ àðð ðð 4ð	ð
 4ðð ðð ñr7   c                ó¨  € \         P                  WW&4       W@n        W0n        WPn        V P                  V P                  4      pV RV RV P                  P                   2V n        RP                  V P                  P                  P                  V P                  V P                  P                  4      V n        RV n        V P                  4        R# )zå
Server(sock, protocol, client, server, sessionno)

Initialize me with a socket, a protocol, a descriptor for my peer (a
tuple of host, port describing the other end of the connection), an
instance of Port, and a session number.
Ú,z<{} #{} on {}>TN)r(   r,   rë   rê   rì   rÓ   r0   r¶   ro   rî   Ú	__class__r«   r·   Úrepstrr—   rÕ   )r1   r2   r0   rê   rë   rì   r4   rp   s   &&&&&&& r5   r,   ÚServer.__init__c  s¨   € ô  	×Ñ˜D¨Ô:Ø$ŒØ$ŒØ"ŒØ×&Ñ& t§}¡}Ó5ˆ	Ø"˜ 1 Y K¨q°·±×1EÑ1EÐ0FÐGˆŒØ+×2Ñ2Ø�M‰M×#Ñ#×,Ñ,Ø�N‰NØ�O‰O× Ñ ó
ˆŒð
 ˆŒØ×ÑÖr7   c               ó   € V ^8„  d   QhRR/# ©ré   ÚreturnÚstrr¤   )rî   s   "r5   rï   rð   �  s   € ÷ ñ ˜#ñ r7   c                ó   € V P                   # )z-
A string representation of this connection.
)rô   r9   s   &r5   Ú__repr__ÚServer.__repr__�  rr   r7   c                ó   € V P                   # )z?
Returns an IPv4Address.

This indicates the server's address.
)rë   r9   s   &r5   r¥   ÚServer.getHost‡  ó   € ð �‰Ðr7   c                ó   € V P                   # )z?
Returns an IPv4Address.

This indicates the client's address.
)rê   r9   s   &r5   r©   ÚServer.getPeer�  rÿ   r7   )rê   r—   ro   rô   rë   rì   N)r«   r¬   r­   r®   r¯   rä   r,   rû   r¥   r©   r°   r¤   r7   r5   rç   rç   U  s#   † ñ	ð Ðõõ<òör7   rç   c                  ó   € ] tR tRtR tRtR# )r   i˜  c                	ón   € \        V P                  V P                  V P                  W P                  4      # r*   )r²   r¶   r·   r¸   r4   r9   s   &r5   Ú_makeTransportÚConnector._makeTransport™  s%   € Ü�d—i‘i §¡¨D×,<Ñ,<¸dÇLÁLÓQÐQr7   r¤   N)r«   r¬   r­   r®   r  r°   r¤   r7   r5   r   r   ˜  s   † öRr7   r   c                  ó  € ] tR tRt$ RtRtRt]P                  t	]P                  t]P                  t^ tRtR]R&   RtRR ltR R	 ltR
 t]P.                  ! ]P2                  4      3R lt]tR tR tR tR tR t R t!R t"Rt#R# )ÚPorti�  FNzOptional[int]Ú_realPortNumberÚTCPc                	ó¼   € Wn         W n        W0n        W@n        WPn        \        V4      '       d-   \        P                  V n        \        P                  V n        R # R # r*   )r·   ÚfactoryÚbacklogÚ	interfacer4   r   r-   ÚAF_INET6r½   r   r   Ú_addressType)r1   r·   r  r  r  r4   s   &&&&&&r5   r,   ÚPort.__init__±  sE   € ØŒ	ØŒØŒØ"ŒØŒÜ˜×#Ò#Ü!'§¡ˆDÔÜ '× 3Ñ 3ˆDÖñ $r7   c               ó   € V ^8„  d   QhRR/# r÷   r¤   )rî   s   "r5   rï   ÚPort.__annotate__»  s   € ÷ ñ ˜#ñ r7   c                	óô   € V P                   e<   RP                  V P                  V P                  P                  V P                   4      # RP                  V P                  V P                  P                  4      # )Nz<{} of {} on {}>z<{} of {} (not listening)>)r  rî   ró   r  r9   s   &r5   rû   ÚPort.__repr__»  sg   € Ø×ÑÒ+Ø%×,Ñ,Ø—‘Ø—‘×&Ñ&Ø×$Ñ$óð ð 0×6Ñ6Ø—‘Ø—‘×&Ñ&óð r7   c                	óà  €  V P                   P                  V P                  V P                  4      pV P                  \        P
                  8X  d"   \        V P                  V P                  4      pMV P                  V P                  3pVP                  V4       \        P                  ! TP                  4       4      T n        TP#                  4       ^,          T n        \&        P(                  ! T P+                  T P,                  4      : RT P$                  : 24       T P,                  P/                  4        TP1                  T P2                  4       RT n        RT n        T P                   P9                  T 4       Yn        T P                  P                  T n        T P=                  4        R #   \         d2   p\        P                  ! T P                  T P                  T4      hR p?ii ; i)Nz starting on TF)r4   r¼   r½   r¾   r-   r  r    r  r·   ÚbindrX   r
   ÚCannotListenErrorrF   Ú
maxAddrLenr.   ÚaddrLenÚgetsocknamer  r#   ÚmsgrÓ   r  ÚdoStartÚlistenr  r—   rh   rÜ   r/   ÚdoAccept)r1   ÚsktÚaddrÚles   &   r5   ÚstartListeningÚPort.startListeningÈ  s[  € ð		IØ—,‘,×+Ñ+¨D×,>Ñ,>ÀÇÁÓPˆCà×!Ñ!¤V§_¡_Ô4Ü# D§N¡N°D·I±IÓ>‘àŸ™¨¯	©	Ð2�Ø�H‰H�TŒNô ×'Ò'¨¯
©
«Ó5ˆŒð  #Ÿ™Ó0°Õ3ˆÔä�Šà×!Ñ! $§,¡,Ö/°×1EÓ1EðGô	
ð
 	�‰×ÑÔØ�
‰
�4—<‘<Ô ØˆŒØ!ˆÔØ�‰×$Ñ$ TÔ*ØŒØ!Ÿ[™[×/Ñ/ˆÔØ�‰Žøô+ ô 	IÜ×)Ò)¨$¯.©.¸$¿)¹)ÀRÓHÐHûð	Iús   ‚BF1 Æ1G-Æ<,G(Ç(G-c                óÒ   € RV n         V P                  '       dN   \        P                  ! 4       V n        V P
                  P                  ^ V P                  V4       V P                  # R# )z¾
Stop accepting connections on this port.

This will shut down my socket and call self.connectionLost().
It returns a deferred which will fire successfully when the
port is actually closed.
TN)r˜   r—   r	   ÚDeferredÚdeferredr4   Ú	callLaterr^   )r1   ÚconnDones   &&r5   r™   ÚPort.loseConnectionè  sN   € ð "ˆÔØ�>�>ˆ>Ü!ŸNšNÓ,ˆDŒMØ�L‰L×"Ñ" 1 d×&9Ñ&9¸8ÔDØ—=‘=Ð ñ r7   c                óh   € \         P                  ! RV P                   RV P                   R24       R# )z
Log message for closing port
Ú(z Port z Closed)N)r#   r  Ú_typer  r9   s   &r5   Ú_logConnectionLostMsgÚPort._logConnectionLostMsgø  s*   € ô 	�Š�!�D—J‘J�<˜v d×&:Ñ&:Ð%;¸8ÐDÖEr7   c                óê  € V P                  4        RV n        Rp\        V R4      '       d   V P                  pV =RV n        V P
                  P                  V 4       RV n        V P                  R4       V =	V =
 V P                  P                  4        RV n        Ve   VP                  R4       R# R#   \         d5    RT n        Te(   TP!                  \"        P$                  ! 4       4        R# h i ; i)z
Cleans up the socket.
Nr&  TF)r-  r  rÚ   r&  rh   r4   rÅ   r—   rk   r-   r/   r  ÚdoStopr˜   Úcallbackr[   Úerrbackr"   r\   )r1   re   Úds   && r5   r^   ÚPort.connectionLostþ  sÛ   € ð 	×"Ñ"Ô$Ø#ˆÔØˆÜ�4˜×$Ò$Ø—‘ˆAØ�à ˆÔØ�‰×'Ñ'¨Ô-ØˆŒØ×Ñ˜$ÔØˆKØÐð	!Ø�L‰L×ÑÔ!ð "'ˆDÔØŠ}Ø—
‘
˜4Ö ñ øô ô 	Ø!&ˆDÔØŠ}Ø—	‘	œ'Ÿ/š/Ó+×,àð	ús   Á9B3 Â3:C2Ã0C2c                óV   € \         P                  ! V P                  P                  4      # )z;
Returns the name of my class, to prefix log entries with.
)r$   Úqualr  ró   r9   s   &r5   rp   ÚPort.logPrefix  s   € ô �|Š|˜DŸL™L×2Ñ2Ó3Ð3r7   c                óP   € V P                   ! R.\        V P                  4      O5!  # )zN
Returns an IPv4Address or IPv6Address.

This indicates the server's address.
r	  )r  r   r-   r9   s   &r5   r¥   ÚPort.getHost#  s#   € ð × Ò  ÐC¬°d·k±kÓ)BÓCÐCr7   c                	ó˜   € V P                  W4       V P                  '       g'   V P                  '       g   V P                  4        R # R # R # r*   )ÚhandleAcceptr˜   rh   r  )r1   rÖ   r�   rI   s   &&&&r5   ÚcbAcceptÚPort.cbAccept+  s8   € Ø×Ñ˜"Ô"Ø×"×"Ð" d×&7×&7Ð&7Ø�M‰MŽOñ '8Ñ"r7   c           	     	óÜ  € V P                   '       g   V P                  '       d   R # V'       d@   \        P                  ! R\        P
                  P                  VR4      : RV: R24       R # VP                  P                  \        P                  \        \        P                  ! RV P                  P                  4       4      4       \        P                   ! VP                  P                  4       VP"                  4      w  r4pW0P$                  8X  g   Q hRV^ ,          9   d=   \'        V^ ,          P)                  R4      ^,          4      pV^ ,          V^,          ^ V3pRV^ ,          9   d=   \'        V^ ,          P)                  R4      ^,          4      pV^ ,          V^,          ^ V3pV P*                  P-                  V P.                  ! R.VO5!  4      pVf   VP                  P1                  4        R# V P2                  pV^,           V n        \5        VP                  VV P.                  ! R.VO5!  V P.                  ! R.VO5!  VV P6                  4      p	VP9                  V	4       R# )	Fz#Could not accept new connection -- zunknown errorz (Ú)rÉ   Ú%r	  T)r˜   rh   r#   r  rÎ   rÏ   rË   Únewsktr{   r-   r�   r   rÐ   rÑ   r.   rF   Úget_accept_addrsrQ   r½   rí   Úsplitr  rÒ   r  Úcloserì   rç   r4   rÔ   )
r1   rÖ   rI   ÚfamilyÚlAddrÚrAddrÚscoper0   ÚsÚ	transports
   &&&       r5   r;  ÚPort.handleAccept0  sí  € Ø××Ð ×!2×!2Ð!2Ù÷ Ü�G‹Gä—?‘?×&Ñ& r¨?Ö;»RðAôñ ð �J‰J×!Ñ!Ü×!Ñ!Ü(Ü—’˜C §¡×!3Ñ!3Ó!5Ó6ôô
 $)×#9Ò#9¸#¿*¹*×:KÑ:KÓ:MÈsÏxÉxÓ#XÑ ˆF˜5Ø×/Ñ/Ô/Ð/Ð/ð �e˜A•hŒÜ˜E !�HŸN™N¨3Ó/°Õ2Ó3�Ø˜q� 5¨¥8¨Q°Ð6�Ø�e˜A•hŒÜ˜E !�HŸN™N¨3Ó/°Õ2Ó3�Ø˜q� 5¨¥8¨Q°Ð6�à—|‘|×1Ñ1°$×2CÒ2CÀEÐ2RÈEÓ2RÓSˆHØÒØ—
‘
× Ñ Ô"ñ ð —N‘N�Ø!" Q¥�”Ü"Ø—J‘JØØ×%Ò% eÐ4¨eÓ4Ø×%Ò% eÐ4¨eÓ4ØØ—L‘Ló�	ð ×'Ñ'¨	Ô2Ùr7   c                	óÖ  € \         P                  ! V P                  V 4      p\        ^V P                  ^,           ,          4      ;Vn        pV P                  P                  V P                  V P                  4      ;Vn
        p\         P                  ! V P                  P                  4       VP                  4       W!4      pV'       d!   V\        8w  d   V P                  WA4       R# R# R# )ré   N)rF   rÝ   r<  r?   r  rQ   r4   r¼   r½   r¾   rA  Úacceptr-   r.   r   r;  )r1   rI   rQ   rA  rÖ   s   &    r5   r  ÚPort.doAcceptc  sª   € Ü�kŠk˜$Ÿ-™-¨Ó.ˆô $ A¨¯©¸Õ):Õ$;Ó<Ð<ˆŒ�4à"Ÿl™l×7Ñ7Ø×Ñ §¡ó
ð 	
ˆŒ
�Vô �\Š\˜$Ÿ+™+×,Ñ,Ó.°·±³ÀÓKˆç�"Ô(Ô(Ø×Ñ˜bÖ&ñ )‰2r7   )r  r  r  r½   r  r—   r&  rh   r˜   r  r/   r  r·   r4   rì   r-   )é2   r´   N)$r«   r¬   r­   r®   r—   rh   r˜   r-   râ   r½   rã   r¾   r   r   r  rì   r  Ú__annotations__r,  r,   rû   r"  r"   r\   r   ÚCONNECTION_DONEr™   ÚstopListeningr-  r^   rp   r¥   r<  r;  r  r°   r¤   r7   r5   r  r  �  sž   ‡ à€IØ€LØ€MØ—N‘N€MØ×#Ñ#€JØ×&Ñ&€LØ€Ið &*€O�]Ó)ð €Eô4õòð@ '.§o¢o°d×6JÑ6JÓ&Kô !ð #€MòFò!ò>4òDòò
1öf'r7   r  )Ir¯   Ú
__future__r   rÎ   r-   rÐ   Útypingr   r   r   Úzope.interfacer   r   Útwisted.internetr   r	   r
   r   r   Útwisted.internet.abstractr   r   Útwisted.internet.addressr   r   Útwisted.internet.interfacesr   Útwisted.internet.iocpreactorr   r   rF   Ú"twisted.internet.iocpreactor.constr   r   r   r   r   Ú'twisted.internet.iocpreactor.interfacesr   Útwisted.internet.protocolr   Útwisted.internet.tcpr   ÚTCPConnectorr   r   r   r   r    r!   Útwisted.pythonr"   r#   r$   Útwisted.internet._newtlsr%   Ú
__startTLSr‰   ÚImportErrorÚ$twisted.internet.iocpreactor.reactorr&   ÚWSAECONNREFUSEDÚWSAENETUNREACHrÊ   ÚITCPTransportÚISystemHandler+   r(   ÚITLSTransportr²   rç   ÚIListeningPortr  r¤   r7   r5   Ú<module>rk     s[  ðñõ #ã Û Û ß 1Ñ 1ç 7ç DÕ Dß >ß =Ý 1ß G÷õ õ EÝ .÷÷ ñ ÷ 1Ñ 0ðÝ?ð €Içå@ð ˜e×3Ñ3Ø˜u×3Ñ3ð€ñ Ð˜z×7Ñ7¸×9QÑ9QÓRôx�×$Ñ$ m°^ó xó Sðxðv ÒÙ�J 
× 8Ñ 8Ô9ôV'ˆ_˜n¨jô V'ôr@ˆZô @ôFR�ô Rñ
 ˆZ×&Ñ&Ó'ôQ'ˆ=˜)ó Q'ó (òQ'øðe ô Ø‚Iðús   Â
E Å	EÅE