Ë
    oj·h  ã                   óB  — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ  eej                  «       G d	„ d
«      «       Z G d„ dej"                  «      Z G d„ dej"                  «      Z G d„ dej(                  «      Z G d„ dej"                  «      Zy)z$
Tests for L{twisted.conch.telnet}.
é    )Úimplementer)ÚverifyObject)Útelnet)Údefer)Ú	iterbytes)Úproto_helpers)Úunittestc                   ó\   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zy)ÚTestProtocol© c                 óf   — d| _         g | _        g | _        g | _        g | _        g | _        g | _        y )Nó    )ÚdataÚsubcmdÚcallsÚenabledLocalÚenabledRemoteÚdisabledLocalÚdisabledRemote©Úselfs    ú@/usr/lib/python3/dist-packages/twisted/conch/test/test_telnet.pyÚ__init__zTestProtocol.__init__   s7   € ØˆŒ	ØˆŒØˆŒ
àˆÔØˆÔØˆÔØ ˆÕr   c                 ó¶   ‡ — i x}|_         ‰ j                  |d<   |j                  j                  «       x}|_        dD ]  }|fˆ fd„	|t	        t
        |«      <   Œ y )Nó   )
ÚEORÚNOPÚDMÚBRKÚIPÚAOÚAYTÚECÚELÚGAc                 ó:   •— ‰j                   j                  |«      S ©N)r   Úappend)ÚargÚcmdr   s     €r   ú<lambda>z-TestProtocol.makeConnection.<locals>.<lambda>)   s   ø€ ¸4¿:¹:×;LÑ;LÈSÓ;Q€ r   )ÚnegotiationMapÚneg_TEST_COMMANDÚ
commandMapÚcopyÚgetattrr   )r   Ú	transportÚdr*   s   `   r   ÚmakeConnectionzTestProtocol.makeConnection#   s`   ø€ Ø')Ð)ˆˆIÔ$Ø×*Ñ*ˆˆ'‰
à#,×#7Ñ#7×#<Ñ#<Ó#>Ð>ˆˆIÔ ØSò 	RˆCØ69Ô&QˆAŒg”f˜cÓ"Ò#ñ	Rr   c                 ó.   — | xj                   |z  c_         y r'   )r   ©r   r   s     r   ÚdataReceivedzTestProtocol.dataReceived+   s   € Ø�	Š	�TÑŽ	r   c                  ó   — y r'   r   )r   Úreasons     r   ÚconnectionLostzTestProtocol.connectionLost.   s   € Ør   c                 ó   — || _         y r'   )r   )r   Úpayloads     r   r-   zTestProtocol.neg_TEST_COMMAND1   s	   € Øˆ�r   c                 óX   — || j                   v r| j                  j                  |«       yy©NTF)ÚlocalEnableabler   r(   ©r   Úoptions     r   ÚenableLocalzTestProtocol.enableLocal4   s*   € Ø�T×)Ñ)Ñ)Ø×Ñ×$Ñ$ VÔ,ØØr   c                 ó:   — | j                   j                  |«       y r'   )r   r(   r?   s     r   ÚdisableLocalzTestProtocol.disableLocal:   s   € Ø×Ñ×!Ñ! &Õ)r   c                 óX   — || j                   v r| j                  j                  |«       yyr=   )ÚremoteEnableabler   r(   r?   s     r   ÚenableRemotezTestProtocol.enableRemote=   s*   € Ø�T×*Ñ*Ñ*Ø×Ñ×%Ñ% fÔ-ØØr   c                 ó:   — | j                   j                  |«       y r'   )r   r(   r?   s     r   ÚdisableRemotezTestProtocol.disableRemoteC   s   € Ø×Ñ×"Ñ" 6Õ*r   c                  ó   — y r'   r   r   s    r   ÚconnectionMadezTestProtocol.connectionMadeF   ó   € àr   c                  ó   — y r'   r   )r   ÚcommandÚarguments      r   ÚunhandledCommandzTestProtocol.unhandledCommandJ   rK   r   c                  ó   — y r'   r   ©r   rM   r   s      r   ÚunhandledSubnegotiationz$TestProtocol.unhandledSubnegotiationN   rK   r   N)Ú__name__Ú
__module__Ú__qualname__r>   rE   r   r3   r6   r9   r-   rA   rC   rF   rH   rJ   rO   rR   r   r   r   r   r      sJ   „ à€OØÐò!òRòòòòò*òò+òòór   r   c                   ó   — e Zd Zd„ Zy)ÚInterfacesTestsc                 ó`   — t        j                  «       }t        t         j                  |«       y)zO
        L{telnet.TelnetProtocol} implements L{telnet.ITelnetProtocol}
        N)r   ÚTelnetProtocolr   ÚITelnetProtocol)r   Úps     r   Útest_interfacezInterfacesTests.test_interfaceT   s"   € ô ×!Ñ!Ó#ˆÜ”V×+Ñ+¨QÕ/r   N)rS   rT   rU   r\   r   r   r   rW   rW   S   s   „ ó0r   rW   c                   óø   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zg g g g fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(y')(ÚTelnetTransportTestsz.
    Tests for L{telnet.TelnetTransport}.
    c                 ó¼   — t        j                  t        «      | _        t	        j
                  «       | _        | j                  j                  | j                  «       y r'   )r   ÚTelnetTransportr   r[   r   ÚStringTransportÚtr3   r   s    r   ÚsetUpzTelnetTransportTests.setUpa   s:   € Ü×'Ñ'¬Ó5ˆŒÜ×.Ñ.Ó0ˆŒØ�‰×Ñ˜dŸf™fÕ%r   c                 óÒ   — | j                   j                  }g d¢}|D ]  }| j                   j                  |«       Œ | j                  |j                  dj                  |«      «       y )N)s   here are some bytes la la las   some more arrive heres   lots of bytes to play withs   la la las   ta de das   dumr   )r[   Úprotocolr6   ÚassertEqualr   Újoin©r   ÚhÚLÚbs       r   ÚtestRegularBytesz%TelnetTransportTests.testRegularBytesf   sY   € ð �F‰F�O‰Oˆò
ˆð ò 	#ˆAØ�F‰F×Ñ Õ"ð	#ð 	×Ñ˜Ÿ™ §¡¨!£Õ-r   c                 ó  — | j                   j                  }g d¢}|D ]  }| j                   j                  |«       Œ | j                  |j                  |d   d d dz   |d   d d z   dz   |d   d d z   dz   |d   d d z   dz   «       y )	N)s   here is the first line
s   here is the second line s   here is the third line
s   here is the last line r   éþÿÿÿó   
é   ó   é   é   )r[   re   r6   rf   r   rh   s       r   ÚtestNewlineHandlingz(TelnetTransportTests.testNewlineHandlingy   s¿   € ð �F‰F�O‰Oˆò
ˆð ò 	#ˆAØ�F‰F×Ñ Õ"ð	#ð 	×ÑØ�F‰FØˆa‰D��"ˆIØñà�‰d�3�Bˆiñð ñð �‰d�3�Bˆiñ	ð
 ñð �‰d�3�Bˆiñð ñõ
	
r   c                 óò   — | j                   j                  }g d¢}|D ]  }| j                   j                  |«       Œ | j                  |j                  dj                  |«      j                  dd«      «       y )N)s*   here are some bytesÿÿ with an embedded IACs&   and here is a test of a border escapeÿs   ÿ did you get that IAC?r   s   ÿÿó   ÿ)r[   re   r6   rf   r   rg   Úreplacerh   s       r   ÚtestIACEscapez"TelnetTransportTests.testIACEscape”   sf   € ð �F‰F�O‰Oˆò
ˆð ò 	#ˆAØ�F‰F×Ñ Õ"ð	#ð 	×Ñ˜Ÿ™ §¡¨!£×!4Ñ!4°[À'Ó!JÕKr   c                 óz  — | j                   j                  }t        j                  t	        t        |«      z   }dd|z   dz   g}|D ]  }| j                   j                  |«       Œ | j                  |j                  |g«       | j                  |j                  dj                  |«      j                  |d«      «       y )Ns   Here's some bytes, tra la las   But ono!s    an interruptr   )r[   re   r   ÚIACr0   r6   rf   r   r   rg   rw   )r   ÚcmdNameri   r*   rj   rk   s         r   Ú_simpleCommandTestz'TelnetTransportTests._simpleCommandTest¥   s�   € ð �F‰F�O‰Oˆä�j‰jœ7¤6¨7Ó3Ñ3ˆØ,¨k¸CÑ.?ÐBRÑ.RÐSˆàò 	#ˆAØ�F‰F×Ñ Õ"ð	#ð 	×Ñ˜Ÿ™ 7 )Ô,Ø×Ñ˜Ÿ™ §¡¨!£×!4Ñ!4°S¸#Ó!>Õ?r   c                 ó&   — | j                  d«       y )Nr    ©r|   r   s    r   ÚtestInterruptz"TelnetTransportTests.testInterrupt´   ó   € Ø×Ñ Õ%r   c                 ó&   — | j                  d«       y )Nr   r~   r   s    r   ÚtestEndOfRecordz$TelnetTransportTests.testEndOfRecord·   ó   € Ø×Ñ Õ&r   c                 ó&   — | j                  d«       y )Nr   r~   r   s    r   ÚtestNoOperationz$TelnetTransportTests.testNoOperationº   rƒ   r   c                 ó&   — | j                  d«       y )Nr   r~   r   s    r   ÚtestDataMarkz!TelnetTransportTests.testDataMark½   r€   r   c                 ó&   — | j                  d«       y )Nr   r~   r   s    r   Ú	testBreakzTelnetTransportTests.testBreakÀ   rƒ   r   c                 ó&   — | j                  d«       y )Nr!   r~   r   s    r   ÚtestAbortOutputz$TelnetTransportTests.testAbortOutputÃ   r€   r   c                 ó&   — | j                  d«       y )Nr"   r~   r   s    r   ÚtestAreYouTherez$TelnetTransportTests.testAreYouThereÆ   rƒ   r   c                 ó&   — | j                  d«       y )Nr#   r~   r   s    r   ÚtestEraseCharacterz'TelnetTransportTests.testEraseCharacterÉ   r€   r   c                 ó&   — | j                  d«       y )Nr$   r~   r   s    r   ÚtestEraseLinez"TelnetTransportTests.testEraseLineÌ   r€   r   c                 ó&   — | j                  d«       y )Nr%   r~   r   s    r   ÚtestGoAheadz TelnetTransportTests.testGoAheadÏ   r€   r   c                 óà  — | j                   j                  }t        j                  t        j                  z   dz   t        j                  z   t        j
                  z   }d|z   dg}|D ]  }| j                   j                  |«       Œ | j                  |j                  dj                  |«      j                  |d«      «       | j                  |j                  t        t        d«      «      «       y )Ns   hello worlds   These are some bytes but soons   there will be some morer   s   hello world)r[   re   r   rz   ÚSBÚSEr6   rf   r   rg   rw   r   Úlistr   ©r   ri   r*   rj   rk   s        r   ÚtestSubnegotiationz'TelnetTransportTests.testSubnegotiationÒ   sµ   € ð �F‰F�O‰Oˆä�j‰jœ6Ÿ9™9Ñ$Ð'9Ñ9¼F¿J¹JÑFÌÏÉÑRˆØ-°Ñ3Ð5OÐPˆàò 	#ˆAØ�F‰F×Ñ Õ"ð	#ð 	×Ñ˜Ÿ™ §¡¨!£×!4Ñ!4°S¸#Ó!>Ô?Ø×Ñ˜Ÿ™¤4¬	°.Ó(AÓ#BÕCr   c                 ó  — | j                   j                  }t        j                  t        j                  z   dz   t        j
                  z   t        j                  z   t        j
                  z   }d|z   dz   dg}|D ]  }| j                   j                  |«       Œ | j                  |j                  dj                  |«      j                  |d«      «       | j                  |j                  t        j
                  g«       y )Nr   s   Some bytes are heres   and herer   )r[   re   r   rz   r•   r–   r6   rf   r   rg   rw   r   r˜   s        r   Ú testSubnegotiationWithEmbeddedSEz5TelnetTransportTests.testSubnegotiationWithEmbeddedSEà   s½   € ð �F‰F�O‰Oˆä�j‰jœ6Ÿ9™9Ñ$ wÑ.´·±Ñ:¼V¿Z¹ZÑGÌ&Ï)É)ÑSˆà# cÑ)¨KÑ7¸ÐEˆàò 	#ˆAØ�F‰F×Ñ Õ"ð	#ð 	×Ñ˜Ÿ™ §¡¨!£×!4Ñ!4°S¸#Ó!>Ô?Ø×Ñ˜Ÿ™¤F§I¡I ;Õ/r   c           
      ó¸  — t         j                  t         j                  z   dz   t         j                  z   dz   t         j                  z   t         j                  z   }t	        t        |«      «      D ]é  }t        «       x}| j                  _        |j                  | j                  «       |d | ||d  }}d|z   |dz   g}|D ]  }| j                  j                  |«       Œ | j                  |j                  dj                  |«      j                  |d«      «       | j                  |j                  t         j                  gt!        t#        d«      «      z   «       Œë y )Nr   s   hellos
   first parts	   last partr   )r   rz   r•   r–   ÚrangeÚlenr   r[   re   r3   r6   rf   r   rg   rw   r   r—   r   )r   r*   Úiri   Úark   rj   r   s           r   ÚtestBoundarySubnegotiationz/TelnetTransportTests.testBoundarySubnegotiationï   s5  € ô
 �J‰JÜ�i‰iñàñô �i‰iñð ñ	ô
 �j‰jñô �i‰iñð 	ô ”s˜3“x“ò 	PˆAÜ".£.Ð0ˆA�—‘”Ø×Ñ˜TŸV™VÔ$à�r˜�7˜C  ˜GˆqˆAØ Ñ" A¨Ñ$4Ð5ˆAàò *�Ø—‘×#Ñ# DÕ)ð*ð ×Ñ˜QŸV™V S§X¡X¨a£[×%8Ñ%8¸¸cÓ%BÔCØ×Ñ˜QŸX™X¬¯	©	 {´T¼)ÀHÓ:MÓ5NÑ'NÕOñ	Pr   c                 óä   — | j                  |j                  |«       | j                  |j                  |«       | j                  |j                  |«       | j                  |j                  |«       y r'   )rf   r   r   r   r   )r   ÚoÚeLÚeRÚdLÚdRs         r   Ú_enabledHelperz#TelnetTransportTests._enabledHelper
  sT   € Ø×Ñ˜Ÿ™¨Ô,Ø×Ñ˜Ÿ™¨"Ô-Ø×Ñ˜Ÿ™¨"Ô-Ø×Ñ˜×)Ñ)¨2Õ.r   c                 óô  — t         j                  t         j                  z   dz   }d|z   dz   }| j                  j	                  |«       | j                  | j                  j                  j                  |j                  |d«      «       | j                  | j                  j                  «       t         j                  t         j                  z   dz   «       | j                  | j                  j                  «       y ©Nr   s   surrounding bytess   to spice things upr   )r   rz   ÚWILLr[   r6   rf   re   r   rw   rb   ÚvalueÚDONTr¨   ©r   r*   r   s      r   ÚtestRefuseWillz#TelnetTransportTests.testRefuseWill  s¦   € ä�j‰jœ6Ÿ;™;Ñ&¨Ñ0ˆà# cÑ)Ð,AÑAˆØ�‰×Ñ˜DÔ!à×Ñ˜Ÿ™Ÿ™×-Ñ-¨t¯|©|¸CÀÓ/EÔFØ×Ñ˜Ÿ™Ÿ™›¬¯©´f·k±kÑ)AÀGÑ)KÔLØ×Ñ˜DŸF™FŸO™OÕ,r   c                 óô  — t         j                  t         j                  z   dz   }d|z   dz   }| j                  j	                  |«       | j                  | j                  j                  j                  |j                  |d«      «       | j                  | j                  j                  «       t         j                  t         j                  z   dz   «       | j                  | j                  j                  «       y rª   )r   rz   ÚDOr[   r6   rf   re   r   rw   rb   r¬   ÚWONTr¨   r®   s      r   ÚtestRefuseDoz!TelnetTransportTests.testRefuseDo  s¦   € ä�j‰jœ6Ÿ9™9Ñ$ wÑ.ˆà# cÑ)Ð,AÑAˆØ�‰×Ñ˜DÔ!à×Ñ˜Ÿ™Ÿ™×-Ñ-¨t¯|©|¸CÀÓ/EÔFØ×Ñ˜Ÿ™Ÿ™›¬¯©´f·k±kÑ)AÀGÑ)KÔLØ×Ñ˜DŸF™FŸO™OÕ,r   c                 óŒ  — t         j                  t         j                  z   dz   }d|z   dz   }| j                  j                  }d|_        | j                  j                  |«       | j                  | j                  j                  «       t         j                  t         j                  z   dz   «       | j                  |dg¬«       y )Nó   ó   paddings   trailer)rµ   )r¤   )r   rz   r±   r[   re   r>   r6   rf   rb   r¬   r«   r¨   ©r   r*   r   ri   s       r   ÚtestAcceptDoz!TelnetTransportTests.testAcceptDo&  s’   € ô �j‰jœ6Ÿ9™9Ñ$ wÑ.ˆØ˜CÑ *Ñ,ˆà�F‰F�O‰OˆØ&ˆÔØ�‰×Ñ˜DÔ!à×Ñ˜Ÿ™Ÿ™›¬¯©´f·k±kÑ)AÀGÑ)KÔLØ×Ñ˜A 7 )ÐÕ,r   c                 óŒ  — t         j                  t         j                  z   dz   }d|z   dz   }| j                  j                  }d|_        | j                  j                  |«       | j                  | j                  j                  «       t         j                  t         j                  z   dz   «       | j                  |dg¬«       y )Nó   ‘s   headerr¶   )rº   ©r¥   )r   rz   r«   r[   re   rE   r6   rf   rb   r¬   r±   r¨   r·   s       r   ÚtestAcceptWillz#TelnetTransportTests.testAcceptWill3  s�   € ä�j‰jœ6Ÿ;™;Ñ&¨Ñ0ˆØ˜3‰ Ñ+ˆà�F‰F�O‰OˆØ'ˆÔØ�‰×Ñ˜DÔ!à×Ñ˜Ÿ™Ÿ™›¬¯©´f·i±iÑ)?À'Ñ)IÔJØ×Ñ˜A 7 )ÐÕ,r   c                 ó˜  — t         j                  t         j                  z   dz   }| j                  j	                  d«      }d|j
                  _        d|z   }| j                  j                  |«       | j                  | j                  j                  j                  |j                  |d«      «       | j                  | j                  j                  «       t         j                  t         j                  z   dz   «       | j                  |j
                  j                  d«       | j                  | j                  j                  dg¬«       y )Nó   )Úyess
   fiddle deer   Úno©r§   )r   rz   r²   r[   ÚgetOptionStateÚhimÚstater6   rf   re   r   rw   rb   r¬   r­   r¨   ©r   r*   Úsr   s       r   ÚtestAcceptWontz#TelnetTransportTests.testAcceptWont?  sâ   € ô �j‰jœ6Ÿ;™;Ñ&¨Ñ0ˆð
 �F‰F×!Ñ! 'Ó*ˆØˆ�‰Œà˜sÑ"ˆØ�‰×Ñ˜DÔ!à×Ñ˜Ÿ™Ÿ™×-Ñ-¨t¯|©|¸CÀÓ/EÔFØ×Ñ˜Ÿ™Ÿ™›¬¯©´f·k±kÑ)AÀGÑ)KÔLØ×Ñ˜Ÿ™Ÿ™ dÔ+Ø×Ñ˜DŸF™FŸO™O°°	ÐÕ:r   c                 ó˜  — t         j                  t         j                  z   dz   }| j                  j	                  d«      }d|j
                  _        d|z   }| j                  j                  |«       | j                  | j                  j                  j                  |j                  |d«      «       | j                  | j                  j                  «       t         j                  t         j                  z   dz   «       | j                  |j
                  j                  d«       | j                  | j                  j                  dg¬«       y )Nr¾   r¿   s   fiddle dum r   rÀ   )r¦   )r   rz   r­   r[   rÂ   ÚusrÄ   r6   rf   re   r   rw   rb   r¬   r²   r¨   rÅ   s       r   ÚtestAcceptDontz#TelnetTransportTests.testAcceptDontS  sâ   € ô �j‰jœ6Ÿ;™;Ñ&¨Ñ0ˆð
 �F‰F×!Ñ! 'Ó*ˆØˆ�‰Œ
à Ñ#ˆØ�‰×Ñ˜DÔ!à×Ñ˜Ÿ™Ÿ™×-Ñ-¨t¯|©|¸CÀÓ/EÔFØ×Ñ˜Ÿ™Ÿ™›¬¯©´f·k±kÑ)AÀGÑ)KÔLØ×Ñ˜Ÿ™Ÿ™ TÔ*Ø×Ñ˜DŸF™FŸO™O°°	ÐÕ:r   c                 ó°  — t         j                  t         j                  z   dz   }d|z   dz   }| j                  j	                  |«       | j                  | j                  j                  j                  |j                  |d«      «       | j                  | j                  j                  «       d«       | j                  | j                  j                  «       y ©Nó   Gó
   dum de dumó	   tra la lar   )r   rz   r²   r[   r6   rf   re   r   rw   rb   r¬   r¨   r®   s      r   ÚtestIgnoreWontz#TelnetTransportTests.testIgnoreWontg  s•   € ô �j‰jœ6Ÿ;™;Ñ&¨Ñ0ˆà˜sÑ" \Ñ1ˆØ�‰×Ñ˜DÔ!à×Ñ˜Ÿ™Ÿ™×-Ñ-¨t¯|©|¸CÀÓ/EÔFØ×Ñ˜Ÿ™Ÿ™›¨Ô-Ø×Ñ˜DŸF™FŸO™OÕ,r   c                 ó°  — t         j                  t         j                  z   dz   }d|z   dz   }| j                  j	                  |«       | j                  | j                  j                  j                  |j                  |d«      «       | j                  | j                  j                  «       d«       | j                  | j                  j                  «       y rÌ   )r   rz   r­   r[   r6   rf   re   r   rw   rb   r¬   r¨   r®   s      r   ÚtestIgnoreDontz#TelnetTransportTests.testIgnoreDonts  s•   € ô �j‰jœ6Ÿ;™;Ñ&¨Ñ0ˆà˜sÑ" \Ñ1ˆØ�‰×Ñ˜DÔ!à×Ñ˜Ÿ™Ÿ™×-Ñ-¨t¯|©|¸CÀÓ/EÔFØ×Ñ˜Ÿ™Ÿ™›¨Ô-Ø×Ñ˜DŸF™FŸO™OÕ,r   c                 ó  — t         j                  t         j                  z   dz   }| j                  j	                  d«      }d|j
                  _        d|z   dz   }| j                  j                  |«       | j                  | j                  j                  j                  |j                  |d«      «       | j                  | j                  j                  «       d«       | j                  | j                  j                  «       y ©Nó   Vr¿   rÏ   rÎ   r   )r   rz   r«   r[   rÂ   rÃ   rÄ   r6   rf   re   r   rw   rb   r¬   r¨   rÅ   s       r   ÚtestIgnoreWillz#TelnetTransportTests.testIgnoreWill€  s¶   € ô �j‰jœ6Ÿ;™;Ñ&¨Ñ0ˆð
 �F‰F×!Ñ! 'Ó*ˆØˆ�‰Œà˜cÑ! MÑ1ˆØ�‰×Ñ˜DÔ!à×Ñ˜Ÿ™Ÿ™×-Ñ-¨t¯|©|¸CÀÓ/EÔFØ×Ñ˜Ÿ™Ÿ™›¨Ô-Ø×Ñ˜DŸF™FŸO™OÕ,r   c                 ó  — t         j                  t         j                  z   dz   }| j                  j	                  d«      }d|j
                  _        d|z   dz   }| j                  j                  |«       | j                  | j                  j                  j                  |j                  |d«      «       | j                  | j                  j                  «       d«       | j                  | j                  j                  «       y rÔ   )r   rz   r±   r[   rÂ   rÉ   rÄ   r6   rf   re   r   rw   rb   r¬   r¨   rÅ   s       r   ÚtestIgnoreDoz!TelnetTransportTests.testIgnoreDo“  s¶   € ô �j‰jœ6Ÿ9™9Ñ$ wÑ.ˆð
 �F‰F×!Ñ! 'Ó*ˆØˆ�‰Œ
à˜cÑ! MÑ1ˆØ�‰×Ñ˜DÔ!à×Ñ˜Ÿ™Ÿ™×-Ñ-¨t¯|©|¸CÀÓ/EÔFØ×Ñ˜Ÿ™Ÿ™›¨Ô-Ø×Ñ˜DŸF™FŸO™OÕ,r   c                 óî  ‡ ‡— ‰ j                   j                  d«      }‰ j                   j                  Šd‰_        ‰ j	                  ‰ j
                  j                  «       t        j                  t        j                  z   dz   «       ‰ j                   j                  t        j                  t        j                  z   dz   «       |j                  ‰ j                  d«       |j                  ˆˆ fd„«       |S )Nó   B©rÚ   Tc                 ó,   •— ‰j                  ‰dg¬«      S )NrÚ   r»   )r¨   )Ú_ri   r   s    €€r   r+   z@TelnetTransportTests.testAcceptedEnableRequest.<locals>.<lambda>µ  s   ø€  × 3Ñ 3°A¸7¸)Ð 3Ó D€ r   )r[   Údore   rE   rf   rb   r¬   r   rz   r±   r6   r«   ÚaddCallback)r   r2   ri   s   ` @r   ÚtestAcceptedEnableRequestz.TelnetTransportTests.testAcceptedEnableRequest¦  s¢   ù€ ð
 �F‰F�I‰I�gÓˆà�F‰F�O‰OˆØ'ˆÔà×Ñ˜Ÿ™Ÿ™›¬¯©´f·i±iÑ)?À'Ñ)IÔJà�‰×ÑœFŸJ™J¬¯©Ñ4°wÑ>Ô?à	�‰�d×&Ñ&¨Ô-Ø	�‰ÔDÔEØˆr   c                 ó|  ‡ ‡— d‰ j                   j                  _        ‰ j                   j                  d«      }‰ j	                  ‰ j
                  j                  «       t        j                  t        j                  z   dz   «       ‰ j                   j                  d«      Š‰ j	                  ‰j                  j                  d«       ‰ j	                  ‰j                  j                  d«       ‰ j                  ‰j                  j                  «       ‰ j!                  ‰j                  j                  «       ‰ j                   j#                  t        j                  t        j$                  z   dz   «       ‰ j'                  |t        j(                  «      }|j+                  ˆ fd„«       |j+                  ˆˆ fd„«       |S )z¾
        If the peer refuses to enable an option we request it to enable, the
        L{Deferred} returned by L{TelnetProtocol.do} fires with an
        L{OptionRefused} L{Failure}.
        rÛ   rÚ   rÀ   c                 óN   •— ‰j                  ‰j                  j                  «      S r'   ©r¨   r[   re   ©Úignoredr   s    €r   r+   z@TelnetTransportTests.test_refusedEnableRequest.<locals>.<lambda>Ð  ó   ø€  d×&9Ñ&9¸$¿&¹&¿/¹/Ó&J€ r   c                 óN   •— ‰j                  ‰j                  j                  «      S r'   )ÚassertFalserÃ   Únegotiating©rå   rÆ   r   s    €€r   r+   z@TelnetTransportTests.test_refusedEnableRequest.<locals>.<lambda>Ñ  s   ø€  d×&6Ñ&6°q·u±u×7HÑ7HÓ&I€ r   )r[   re   rE   rÞ   rf   rb   r¬   r   rz   r±   rÂ   rÃ   rÄ   rÉ   Ú
assertTrueré   rè   r6   r²   ÚassertFailureÚOptionRefusedrß   ©r   r2   rÆ   s   ` @r   Útest_refusedEnableRequestz.TelnetTransportTests.test_refusedEnableRequest¸  s   ù€ ð ,6ˆ�‰�‰Ô(Ø�F‰F�I‰I�gÓˆà×Ñ˜Ÿ™Ÿ™›¬¯©´f·i±iÑ)?À'Ñ)IÔJà�F‰F×!Ñ! 'Ó*ˆØ×Ñ˜Ÿ™Ÿ™ dÔ+Ø×Ñ˜Ÿ™Ÿ™ TÔ*Ø�‰˜Ÿ™×)Ñ)Ô*Ø×Ñ˜Ÿ™×)Ñ)Ô*à�‰×ÑœFŸJ™J¬¯©Ñ4°wÑ>Ô?à×Ñ˜q¤&×"6Ñ"6Ó7ˆØ	�‰ÓJÔKØ	�‰ÔIÔJØˆr   c                 ó|  ‡ ‡— d‰ j                   j                  _        ‰ j                   j                  d«      }‰ j	                  ‰ j
                  j                  «       t        j                  t        j                  z   dz   «       ‰ j                   j                  d«      Š‰ j	                  ‰j                  j                  d«       ‰ j	                  ‰j                  j                  d«       ‰ j                  ‰j                  j                  «       ‰ j!                  ‰j                  j                  «       ‰ j                   j#                  t        j                  t        j$                  z   dz   «       ‰ j'                  |t        j(                  «      }|j+                  ˆ fd„«       |j+                  ˆˆ fd„«       |S )z´
        If the peer refuses to allow us to enable an option, the L{Deferred}
        returned by L{TelnetProtocol.will} fires with an L{OptionRefused}
        L{Failure}.
        rÛ   rÚ   rÀ   c                 óN   •— ‰j                  ‰j                  j                  «      S r'   rã   rä   s    €r   r+   z>TelnetTransportTests.test_refusedEnableOffer.<locals>.<lambda>ì  ræ   r   c                 óN   •— ‰j                  ‰j                  j                  «      S r'   )rè   rÉ   ré   rê   s    €€r   r+   z>TelnetTransportTests.test_refusedEnableOffer.<locals>.<lambda>í  s   ø€  d×&6Ñ&6°q·t±t×7GÑ7GÓ&H€ r   )r[   re   r>   Úwillrf   rb   r¬   r   rz   r«   rÂ   rÃ   rÄ   rÉ   rè   ré   rë   r6   r­   rì   rí   rß   rî   s   ` @r   Útest_refusedEnableOfferz,TelnetTransportTests.test_refusedEnableOfferÔ  s   ù€ ð +5ˆ�‰�‰Ô'Ø�F‰F�K‰K˜Ó ˆà×Ñ˜Ÿ™Ÿ™›¬¯©´f·k±kÑ)AÀGÑ)KÔLà�F‰F×!Ñ! 'Ó*ˆØ×Ñ˜Ÿ™Ÿ™ dÔ+Ø×Ñ˜Ÿ™Ÿ™ TÔ*Ø×Ñ˜Ÿ™×*Ñ*Ô+Ø�‰˜Ÿ™×(Ñ(Ô)à�‰×ÑœFŸJ™J¬¯©Ñ4°wÑ>Ô?à×Ñ˜q¤&×"6Ñ"6Ó7ˆØ	�‰ÓJÔKØ	�‰ÔHÔIØˆr   c                 ó  ‡ — ‰ j                   j                  d«      }d|j                  _        ‰ j                   j	                  d«      }‰ j                  ‰ j                  j                  «       t        j                  t        j                  z   dz   «       ‰ j                   j                  t        j                  t        j                  z   dz   «       |j                  ‰ j
                  d«       |j                  ˆ fd„«       |S )NrÚ   r¿   Tc                 óT   •— ‰j                  ‰j                  j                  dg¬«      S )NrÚ   rÁ   rã   ©rÝ   r   s    €r   r+   zATelnetTransportTests.testAcceptedDisableRequest.<locals>.<lambda>ÿ  s!   ø€  × 3Ñ 3°D·F±F·O±OÈÈ	Ð 3Ó R€ r   )r[   rÂ   rÃ   rÄ   Údontrf   rb   r¬   r   rz   r­   r6   r²   rß   ©r   rÆ   r2   s   `  r   ÚtestAcceptedDisableRequestz/TelnetTransportTests.testAcceptedDisableRequestð  s¬   ø€ ð
 �F‰F×!Ñ! 'Ó*ˆØˆ�‰Œà�F‰F�K‰K˜Ó ˆà×Ñ˜Ÿ™Ÿ™›¬¯©´f·k±kÑ)AÀGÑ)KÔLà�‰×ÑœFŸJ™J¬¯©Ñ4°wÑ>Ô?à	�‰�d×&Ñ&¨Ô-Ø	�‰ÓRÔSØˆr   c                 ó  ‡ — ‰ j                   j                  d«      }d|j                  _        ‰ j                   j	                  d«       ˆ fd„}ˆ fd„}ˆ fd„} |d «      }|j                  |«       |j                  |«       |S )Nó   $r¿   c                 óz   •— ‰j                   j                  d«      }‰j                  |t        j                  «      S ©Nrü   )r[   rÞ   rì   r   ÚAlreadyNegotiating©Úxr2   r   s     €r   Ú_dozITelnetTransportTests.testNegotiationBlocksFurtherNegotiation.<locals>._do
  s.   ø€ Ø—‘—	‘	˜'Ó"ˆAØ×%Ñ% a¬×)BÑ)BÓCÐCr   c                 óz   •— ‰j                   j                  d«      }‰j                  |t        j                  «      S rþ   )r[   rø   rì   r   rÿ   r   s     €r   Ú_dontzKTelnetTransportTests.testNegotiationBlocksFurtherNegotiation.<locals>._dont  s.   ø€ Ø—‘—‘˜GÓ$ˆAØ×%Ñ% a¬×)BÑ)BÓCÐCr   c                 ó  •— ‰j                   j                  t        j                  t        j                  z   dz   «       ‰j                  ‰j                   j                  dg¬«       d‰j                   j                  _        ‰j                   j                  d«      }‰j                   j                  t        j                  t        j                  z   dz   «       |j                  ‰j                  d«       |j                  ˆfd„«       |S )Nrü   rÁ   )rü   Tc                 óX   •— ‰j                  ‰j                  j                  dgdg¬«      S )Nrü   )r¥   r§   rã   r÷   s    €r   r+   z^TelnetTransportTests.testNegotiationBlocksFurtherNegotiation.<locals>._final.<locals>.<lambda>  s*   ø€ ˜$×-Ñ-Ø—F‘F—O‘O¨¨	°w°ið .ó € r   )r[   r6   r   rz   r²   r¨   re   rE   rÞ   r«   rß   rf   r   s     €r   Ú_finalzLTelnetTransportTests.testNegotiationBlocksFurtherNegotiation.<locals>._final  s¶   ø€ Ø�F‰F×Ñ¤§
¡
¬V¯[©[Ñ 8¸7Ñ BÔCà×Ñ §¡§¡°W°IÐÔ>à/9ˆD�F‰F�O‰OÔ,Ø—‘—	‘	˜'Ó"ˆAØ�F‰F×Ñ¤§
¡
¬V¯[©[Ñ 8¸7Ñ BÔCØ�M‰M˜$×*Ñ*¨DÔ1Ø�M‰Móôð
 ˆHr   )r[   rÂ   rÃ   rÄ   rø   rß   )r   rÆ   r  r  r  r2   s   `     r   Ú'testNegotiationBlocksFurtherNegotiationz<TelnetTransportTests.testNegotiationBlocksFurtherNegotiation  sm   ø€ ð �F‰F×!Ñ! 'Ó*ˆØˆ�‰ŒØ�‰�‰�GÔô	Dô	Dô	ñ  �‹IˆØ	�‰�eÔØ	�‰�fÔØˆr   c                 óx   — | j                   j                  d«      }| j                  |t        j                  «      S )Nó   «)r[   rø   rì   r   ÚAlreadyDisabled)r   r2   s     r   Ú#testSuperfluousDisableRequestRaisesz8TelnetTransportTests.testSuperfluousDisableRequestRaises'  s-   € à�F‰F�K‰K˜Ó ˆØ×!Ñ! !¤V×%;Ñ%;Ó<Ð<r   c                 óÐ   — | j                   j                  d«      }d|j                  _        | j                   j	                  d«      }| j                  |t        j                  «      S )Nr
  r¿   )r[   rÂ   rÃ   rÄ   rÞ   rì   r   ÚAlreadyEnabledrù   s      r   Ú"testSuperfluousEnableRequestRaisesz7TelnetTransportTests.testSuperfluousEnableRequestRaises,  sL   € à�F‰F×!Ñ! 'Ó*ˆØˆ�‰ŒØ�F‰F�I‰I�gÓˆØ×!Ñ! !¤V×%:Ñ%:Ó;Ð;r   c                 ó   — | j                   j                  d«      }| j                   j                  d«      }| j                   j                  d«      } G d„ dt        «      }| j                   j                   |d«      «       | j	                  ||«      }| j	                  ||«      }| j	                  ||«      }t        j                  |||g«      S )Nr   ó   #ó   4c                   ó   — e Zd Zy)úLTelnetTransportTests.testLostConnectionFailsDeferreds.<locals>.TestExceptionN)rS   rT   rU   r   r   r   ÚTestExceptionr  8  s   „ Ør   r  zTotal failure!)r[   rÞ   Ú	Exceptionr9   rì   r   ÚgatherResults)r   Úd1Úd2Úd3r  s        r   Ú testLostConnectionFailsDeferredsz5TelnetTransportTests.testLostConnectionFailsDeferreds3  s«   € Ø�V‰V�Y‰Y�wÓˆØ�V‰V�Y‰Y�wÓˆØ�V‰V�Y‰Y�wÓˆô	œIô 	ð 	�‰×Ñ™mÐ,<Ó=Ô>à×Ñ  MÓ2ˆØ×Ñ  MÓ2ˆØ×Ñ  MÓ2ˆÜ×"Ñ" B¨¨B <Ó0Ð0r   N))rS   rT   rU   Ú__doc__rc   rl   rt   rx   r|   r   r‚   r…   r‡   r‰   r‹   r�   r�   r‘   r“   r™   r›   r¡   r¨   r¯   r³   r¸   r¼   rÇ   rÊ   rÐ   rÒ   rÖ   rØ   rà   rï   rô   rú   r  r  r  r  r   r   r   r^   r^   \   sÐ   „ ñò&ò
.ò&
ò6Lò"@ò&ò'ò'ò&ò'ò&ò'ò&ò&ò&òDò0òPð6 $&¨"°¸ó /ò	-ò	-ò-ò
-ò;ò(;ò(
-ò-ò-ò&-ò&ò$ò8ò8ò$#òJ=ò
<ó1r   r^   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)Ú
TestTelnetzP
    A trivial extension of the telnet protocol class useful to unit tests.
    c                 óP   — t         j                  j                  | «       g | _        y r'   )r   ÚTelnetr   Úeventsr   s    r   r   zTestTelnet.__init__H  s   € Ü�‰×Ñ˜tÔ$Øˆ�r   c                 ó>   — | j                   j                  d|f«       y)z:
        Record the given data in C{self.events}.
        ÚbytesN©r!  r(   r5   s     r   ÚapplicationDataReceivedz"TestTelnet.applicationDataReceivedL  s   € ð 	�‰×Ñ˜G T˜?Õ+r   c                 ó@   — | j                   j                  d||f«       y)z=
        Record the given command in C{self.events}.
        rM   Nr$  rQ   s      r   rO   zTestTelnet.unhandledCommandR  s   € ð 	�‰×Ñ˜I w°Ð5Õ6r   c                 ó@   — | j                   j                  d||f«       y)zL
        Record the given subnegotiation command in C{self.events}.
        Ú	negotiateNr$  rQ   s      r   rR   z"TestTelnet.unhandledSubnegotiationX  s   € ð 	�‰×Ñ˜K¨°$Ð7Õ8r   N)rS   rT   rU   r  r   r%  rO   rR   r   r   r   r  r  C  s   „ ñòò,ò7ó9r   r  c                   óp   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTelnetTestsz°
    Tests for L{telnet.Telnet}.

    L{telnet.Telnet} implements the TELNET protocol (RFC 854), including option
    and suboption negotiation, and option state tracking.
    c                 ó"   — t        «       | _        y)zM
        Create an unconnected L{telnet.Telnet} to be used by tests.
        N)r  re   r   s    r   rc   zTelnetTests.setUpg  s   € ô #›ˆ�r   c                 óX   — | j                  | j                  j                  d«      «       y)z”
        L{telnet.Telnet.enableLocal} should reject all options, since
        L{telnet.Telnet} does not know how to implement any options.
        ó    N)rè   re   rA   r   s    r   Útest_enableLocalzTelnetTests.test_enableLocalm  s!   € ð
 	×Ñ˜Ÿ™×2Ñ2°5Ó9Õ:r   c                 óX   — | j                  | j                  j                  d«      «       y)z•
        L{telnet.Telnet.enableRemote} should reject all options, since
        L{telnet.Telnet} does not know how to implement any options.
        r-  N)rè   re   rF   r   s    r   Útest_enableRemotezTelnetTests.test_enableRemotet  s!   € ð
 	×Ñ˜Ÿ™×3Ñ3°EÓ:Õ;r   c                 óZ   — | j                  t        | j                  j                  d«       y)a	  
        It is an error for L{telnet.Telnet.disableLocal} to be called, since
        L{telnet.Telnet.enableLocal} will never allow any options to be enabled
        locally.  If a subclass overrides enableLocal, it must also override
        disableLocal.
        r-  N)ÚassertRaisesÚNotImplementedErrorre   rC   r   s    r   Útest_disableLocalzTelnetTests.test_disableLocal{  s!   € ð 	×ÑÔ-¨t¯}©}×/IÑ/IÈ5ÕQr   c                 óZ   — | j                  t        | j                  j                  d«       y)a  
        It is an error for L{telnet.Telnet.disableRemote} to be called, since
        L{telnet.Telnet.enableRemote} will never allow any options to be
        enabled remotely.  If a subclass overrides enableRemote, it must also
        override disableRemote.
        r-  N)r2  r3  re   rH   r   s    r   Útest_disableRemotezTelnetTests.test_disableRemote„  s!   € ð 	×ÑÔ-¨t¯}©}×/JÑ/JÈEÕRr   c                 óÚ   — t        j                  «       }| j                  j                  |«       | j                  j	                  dd«       | j                  |j                  «       d«       y)z±
        L{telnet.Telnet.requestNegotiation} formats the feature byte and the
        payload bytes into the subnegotiation format and sends them.

        See RFC 855.
        ó   s   s   ÿúÿðN©r   ra   re   r3   ÚrequestNegotiationrf   r¬   ©r   r1   s     r   Útest_requestNegotiationz#TelnetTests.test_requestNegotiation�  sS   € ô "×1Ñ1Ó3ˆ	Ø�‰×$Ñ$ YÔ/Ø�‰×(Ñ(¨°+Ô>Ø×ÑØ�O‰OÓà+õ	
r   c                 óÚ   — t        j                  «       }| j                  j                  |«       | j                  j	                  dd«       | j                  |j                  «       d«       y)z®
        If the payload for a subnegotiation includes I{IAC}, it is escaped by
        L{telnet.Telnet.requestNegotiation} with another I{IAC}.

        See RFC 855.
        r8  rv   s   ÿúÿÿÿðNr9  r;  s     r   Ú!test_requestNegotiationEscapesIACz-TelnetTests.test_requestNegotiationEscapesIAC�  sP   € ô "×1Ñ1Ó3ˆ	Ø�‰×$Ñ$ YÔ/Ø�‰×(Ñ(¨°'Ô:Ø×Ñ˜Ÿ™Ó*Ð,KÕLr   c                 ó–   — g x}| j                   _        | j                   j                  |«       | j                  |t	        |«      «       y)z
        Pass the given bytes to the protocol's C{dataReceived} method and
        assert that the given events occur.
        N)re   r!  r6   rf   r—   )r   r   ÚexpectedÚreceiveds       r   Ú_deliverzTelnetTests._deliver©  s;   € ð
 +-Ð,ˆ�4—=‘=Ô'Ø�‰×"Ñ" 4Ô(Ø×Ñ˜¤4¨£>Õ2r   c                 ó(   — | j                  dd«       y)zc
        One application-data byte in the default state gets delivered right
        away.
        ó   a)r#  rD  N©rB  r   s    r   Útest_oneApplicationDataBytez'TelnetTests.test_oneApplicationDataByte²  s   € ð
 	�‰�d˜OÕ,r   c                 ó(   — | j                  dd«       y)za
        Two application-data bytes in the default state get delivered
        together.
        ó   bc)r#  rH  NrE  r   s    r   Útest_twoApplicationDataBytesz(TelnetTests.test_twoApplicationDataBytes¹  s   € ð
 	�‰�eÐ-Õ.r   c                 óJ   — | j                  dt        j                  z   d«       y)z~
        Three application-data bytes followed by a control byte get
        delivered, but the control byte doesn't.
        ó   def)r#  rK  N©rB  r   rz   r   s    r   Útest_threeApplicationDataBytesz*TelnetTests.test_threeApplicationDataBytesÀ  s   € ð
 	�‰�fœvŸz™zÑ)Ð+<Õ=r   c                 ó®   — | j                  t        j                  «       | j                  t        j                  dz   dt        j                  dz   f«       y)zy
        IAC in the escaped state gets delivered and so does another
        application-data byte following it.
        ó   gr#  NrL  r   s    r   Útest_escapedControlzTelnetTests.test_escapedControlÇ  s9   € ð
 	�‰”f—j‘jÔ!Ø�‰”f—j‘j 4Ñ'¨'´6·:±:ÀÑ3DÐ)EÕFr   c                 óø  — | j                  d«       | j                  dd«       | j                  dd«       | j                  d«       | j                  dd«       | j                  dd«       | j                  d«       | j                  dd	«       | j                  d
d	«       | j                  d«       | j                  t        j                  t        j                  z   dz   ddt        j                  z   dz   f«       y)aÍ  
        A carriage return only puts the protocol into the newline state.  A
        linefeed in the newline state causes just the newline to be
        delivered.  A nul in the newline state causes a carriage return to
        be delivered.  An IAC in the newline state causes a carriage return
        to be delivered and puts the protocol into the escaped state.
        Anything else causes a carriage return and that thing to be
        delivered.
        rq   ro   )r#  ro   s   
r-  )r#  rq   s    rD  )r#  ó   arR  ó   xr#  NrL  r   s    r   Útest_carriageReturnzTelnetTests.test_carriageReturnÏ  sÄ   € ð 	�‰�eÔØ�‰�eÐ-Ô.Ø�‰�gÐ/Ô0à�‰�eÔØ�‰�eÐ-Ô.Ø�‰�gÐ/Ô0à�‰�eÔØ�‰�dÐ-Ô.Ø�‰�fÐ/Ô0à�‰�eÔØ�‰Ü�J‰JœŸ™Ñ# dÑ*¨W°e¼f¿j¹jÑ6HÈ4Ñ6OÐ,Põ	
r   c                 ó�   — | j                  dt        j                  z   t        j                  z   ddt        j                  df«       y)zt
        Application bytes received before a command are delivered before the
        command is processed.
        rS  )r#  rS  rM   N)rB  r   rz   r   r   s    r   Ú'test_applicationDataBeforeSimpleCommandz3TelnetTests.test_applicationDataBeforeSimpleCommandê  s6   € ð
 	�‰Ø”6—:‘:Ñ¤§
¡
Ñ*ØØœŸ
™
 DÐ)õ	
r   c                 ó¸   — i | j                   _        | j                  dt        j                  z   t        j
                  z   dz   ddt        j
                  df«       y)z~
        Application bytes received before a WILL/WONT/DO/DONT are delivered
        before the command is processed.
        ó   yr-  )r#  rX  rM   N)re   r.   rB  r   rz   r«   r   s    r   Ú!test_applicationDataBeforeCommandz-TelnetTests.test_applicationDataBeforeCommandõ  sG   € ð
 $&ˆ�‰Ô Ø�‰Ø”6—:‘:Ñ¤§¡Ñ+¨gÑ5ØØœŸ™ WÐ-õ	
r   c                 óÀ   — | j                  dt        j                  z   t        j                  z   dz   t        j                  z   t        j                  z   ddddgf«       y)z‡
        Application bytes received before a subnegotiation command are
        delivered before the negotiation is processed.
        ó   zs   Qx)r#  r[  r(  ó   QrS  N)rB  r   rz   r•   r–   r   s    r   Ú(test_applicationDataBeforeSubnegotiationz4TelnetTests.test_applicationDataBeforeSubnegotiation  sK   € ð
 	�‰Ø”6—:‘:Ñ¤§	¡	Ñ)¨EÑ1´F·J±JÑ>ÄÇÁÑJØØ˜$  Ð'õ	
r   N)rS   rT   rU   r  rc   r.  r0  r4  r6  r<  r>  rB  rF  rI  rM  rP  rT  rV  rY  r]  r   r   r   r*  r*  _  s[   „ ñò%ò;ò<òRòSò
ò 
Mò3ò-ò/ò>òGò
ò6	
ò

ó	
r   r*  N)r  Úzope.interfacer   Úzope.interface.verifyr   Útwisted.conchr   Útwisted.internetr   Útwisted.python.compatr   Útwisted.testr   Útwisted.trialr	   rZ   r   ÚTestCaserW   r^   r   r  r*  r   r   r   ú<module>rf     s‘   ðñ
õ
 'Ý .å  Ý "Ý +Ý &Ý "ñ ˆV×#Ñ#Ó$÷;ð ;ó %ð;ô|0�h×'Ñ'ô 0ôd1˜8×,Ñ,ô d1ôN9�—‘ô 9ô8k
�(×#Ñ#õ k
r   