+
    üÐj¹o  ã                   óˆ  € R t ^ RIt^ RIHtHtHt ^ RIHtHtH	t	 ^ RI
HtHtHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHtHt ^ R	IHt  ! R
 R]P4                  4      t ! R R4      t ! R R]P4                  4      t ! R R]P<                  4      t]P@                  ! ]]PB                  4        ! R R]P4                  4      t"R# )z%
Tests for L{twisted.words.service}.
N)ÚcheckersÚcredentialsÚportal)ÚaddressÚdeferÚreactor)ÚDeferredÚDeferredListÚmaybeDeferredÚsucceed)Úpb)Úproto_helpers)Úunittest)ÚewordsÚservice)Úircc                   óV   a € ] tR t^t o R tR tR tR tR tR t	R t
R tR	 tR
tV tR# )Ú
RealmTestsc                ó>  € \         P                  ! R 4      pRVP                  4       ,           p\        VRVP	                  4       ,           4      p\        VRVP	                  4       ,           4      pRVP	                  4       ,           R,           p\        \
        RVP	                  4       ,           4      p\        \
        RVP	                  4       ,           4      pV P                  V! V4      4      p	V P                  W9P                  4       V P                  V! V4      4      P                  V4       \        W&R4       V P                  V! RVP                  4       ,           4      4      p	V P                  RVP                  4       ,           V	P                  4       V P                  V! RVP                  4       ,           4      4      p
V P                  Wš4       \        W&R	4       V P                  V! R
VP                  4       ,           4      4      P                  V4       R# )Ú	realmnameÚtestÚcreateÚgetÚ	OnRequestÚ	DuplicateÚNoSuchTÚnewFÚanotherN)r   ÚInMemoryWordsRealmÚlowerÚgetattrÚtitler   ÚsuccessResultOfÚassertEqualÚnameÚfailureResultOfÚtrapÚsetattrÚassertIdentical)ÚselfÚkindÚrealmr$   r   r   ÚflagÚdupExcÚ	noSuchExcÚpÚnewps   &&         ÚA/usr/lib/python3/dist-packages/twisted/words/test/test_service.pyÚ_entityCreationTestÚRealmTests._entityCreationTest   sŠ  € ä×*Ò*¨;Ó7ˆà˜Ÿ
™
›Õ$ˆÜ˜ ¨4¯:©:«<Õ 7Ó8ˆÜ�e˜U T§Z¡Z£\Õ1Ó2ˆØ˜$Ÿ*™*›,Õ&¨Õ4ˆÜœ ¨t¯z©z«|Õ!;Ó<ˆÜœF H¨t¯z©z«|Õ$;Ó<ˆ	ð × Ñ ¡¨£Ó.ˆØ×Ñ˜Ÿv™vÔ&ð 	×Ñ™V D›\Ó*×/Ñ/°Ô7ô 	�˜TÔ"Ø× Ñ ¡ U¨T¯Z©Z«\Õ%9Ó!:Ó;ˆØ×Ñ˜ §¡£Õ-¨q¯v©vÔ6ð ×#Ñ#¡C¨°·
±
³Õ(<Ó$=Ó>ˆØ×Ñ˜QÔ%ô 	�˜UÔ#Ø×Ñ™S ¨T¯Z©Z«\Õ!9Ó:Ó;×@Ñ@ÀÖKó    c                ó$   € V P                  R 4      # )ÚUser©r2   ©r)   s   &r1   ÚtestUserCreationÚRealmTests.testUserCreation4   s   € Ø×'Ñ'¨Ó/Ð/r4   c                ó$   € V P                  R 4      # )ÚGroupr7   r8   s   &r1   ÚtestGroupCreationÚRealmTests.testGroupCreation7   s   € Ø×'Ñ'¨Ó0Ð0r4   c                ó°  € \         P                  ! R 4      pV P                  VP                  R4      4      pV P                  VP	                  R4      4      pV P                  W#4       V P                  VP                  R4      4      pV P                  W44       V P                  VP                  R4      4      P                  \        P                  4       R# )r   ÚtestuserÚ
nosuchuserN)r   r   r"   Ú
createUserÚgetUserr(   Ú
lookupUserr%   r&   r   Ú
NoSuchUser)r)   r+   ÚuserÚ	retrievedÚlookedUps   &    r1   ÚtestUserRetrievalÚRealmTests.testUserRetrieval:   s¯   € Ü×*Ò*¨;Ó7ˆð ×#Ñ# E×$4Ñ$4°ZÓ$@ÓAˆð ×(Ñ(¨¯©°zÓ)BÓCˆ	Ø×Ñ˜TÔ-ð ×'Ñ'¨×(8Ñ(8¸Ó(DÓEˆØ×Ñ˜YÔ1ð 
×	Ñ	˜e×.Ñ.¨|Ó<Ó	=×	BÑ	BÄ6×CTÑCTÖ	Ur4   c                ó„  € \         P                  ! R 4      p\         P                  ! R4      pV P                  VP	                  V4      4      pV P                  W#4       V P                  VP                  R4      4      pV P                  W44       V P                  VP                  R4      4      pV P                  WE4       R# )r   r@   N)r   r   r6   r"   ÚaddUserr(   rC   rD   )r)   r+   r/   rF   rG   rH   s   &     r1   ÚtestUserAdditionÚRealmTests.testUserAdditionK   s�   € Ü×*Ò*¨;Ó7ˆô �LŠL˜Ó$ˆØ×#Ñ# E§M¡M°!Ó$4Ó5ˆØ×Ñ˜QÔ%ð ×(Ñ(¨¯©°zÓ)BÓCˆ	Ø×Ñ˜TÔ-ð ×'Ñ'¨×(8Ñ(8¸Ó(DÓEˆØ×Ñ˜YÖ1r4   c                óN  € \         P                  ! R 4      pV P                  VP                  R4      4      pV P                  VP	                  R4      4      pV P                  W#4       V P                  VP	                  R4      4      P                  \        P                  4       R# )r   Ú	testgroupÚnosuchgroupN)
r   r   r"   ÚcreateGroupÚgetGroupr(   r%   r&   r   ÚNoSuchGroup)r)   r+   ÚgrouprG   s   &   r1   ÚtestGroupRetrievalÚRealmTests.testGroupRetrieval[   s|   € Ü×*Ò*¨;Ó7ˆà×$Ñ$ U×%6Ñ%6°{Ó%CÓDˆà×(Ñ(¨¯©¸Ó)DÓEˆ	à×Ñ˜UÔ.à	×	Ñ	˜eŸn™n¨]Ó;Ó	<×	AÑ	AÄ&×BTÑBTÖ	Ur4   c                ó   € \         P                  ! R 4      p\         P                  ! R4      pV P                  VP	                  V4      4       V P                  VP                  R4      4      pV P                  W#4       R# )r   rP   Ú	testGroupN)r   r   r<   r"   ÚaddGrouprS   r(   )r)   r+   r/   rU   s   &   r1   ÚtestGroupAdditionÚRealmTests.testGroupAdditionf   s^   € Ü×*Ò*¨;Ó7ˆä�MŠM˜+Ó&ˆØ×Ñ˜UŸ^™^¨AÓ.Ô/Ø×$Ñ$ U§^¡^°KÓ%@ÓAˆØ×Ñ˜QÖ&r4   c                ó²   € \         P                  ! R4      pV P                  VP                  R4      4       V P                  VP	                  R4      4       R# )zº
Try creating a group with the same name as an existing user and
assert that it succeeds, since users and groups should not be in the
same namespace and collisions should be impossible.
r   r   N)r   r   r"   rB   rR   )r)   r+   s   & r1   ÚtestGroupUsernameCollisionÚ%RealmTests.testGroupUsernameCollisionn   sF   € ô ×*Ò*¨;Ó7ˆà×Ñ˜U×-Ñ-¨fÓ5Ô6Ø×Ñ˜U×.Ñ.¨vÓ6Ö7r4   c                óv  € \         P                  ! R 4      pV P                  VP                  R4      4       V P                  VP                  R4      4       V P                  VP	                  4       4      pV Uu. uF  q3P
                  NK  	  ppVP                  4        V P                  VRR.4       R# u upi )r   ÚgrouponeÚgrouptwoN)r   r   r"   rR   Ú
itergroupsr$   Úsortr#   )r)   r+   ÚgroupsÚgÚns   &    r1   ÚtestEnumerationÚRealmTests.testEnumerationy   s–   € Ü×*Ò*¨;Ó7ˆØ×Ñ˜U×.Ñ.¨zÓ:Ô;à×Ñ˜U×.Ñ.¨zÓ:Ô;à×%Ñ% e×&6Ñ&6Ó&8Ó9ˆá#Ó$™V˜�VŒV™VˆÐ$Ø	�‰ŒØ×Ñ˜˜Z¨Ð4Ö5ùò %s   Á:B6© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r2   r9   r=   rI   rM   rV   r[   r^   rh   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r1   r   r      s:   ø‡ € òLò>0ò1òWò"2ò 	Wò'ò	8÷
6ð 
6r4   r   c                   óV   a € ] tR t^†t o ]P
                  ! RRR4      3R ltR tRtV t	R# )ÚTestCaseUserAggÚTCPú	127.0.0.1i1Ô  c                ó(  € Wn         \        P                  ! 4       V n        VP	                  V4      V n        V P
                  V P                  n        V P
                  V P                   n        V P
                  P                  V P                  4       R # ©N)rF   r   Ú StringTransportWithDisconnectionÚ	transportÚbuildProtocolÚprotocolÚmindÚmakeConnection)r)   rF   r+   Úfactoryr   s   &&&&&r1   Ú__init__ÚTestCaseUserAgg.__init__‡   s`   € ð Œ	Ü&×GÒGÓIˆŒØ×-Ñ-¨gÓ6ˆŒØ"&§-¡-ˆ�‰ÔØŸ™ˆ�	‰	ŒØ�‰×$Ñ$ T§^¡^Ö4r4   c                ó<   € V P                   P                  V4       R # rx   )r|   ÚdataReceived)r)   Ústuffs   &&r1   ÚwriteÚTestCaseUserAgg.write•   s   € Ø�‰×"Ñ" 5Ö)r4   )r|   rz   rF   N)
rk   rl   rm   rn   r   ÚIPv4Addressr€   r…   ro   rp   rq   s   @r1   rt   rt   †   s(   ø‡ € ð ×#Ò# E¨;¸Ó>ô5÷*ð *r4   rt   c                   óÀ   a € ] tR t^™t o . ROtR tR tRR l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R tR tR tR tR tR tR tRtV tR# )ÚIRCProtocolTestsc                óT  € \         P                  ! R 4      V n        \        P                  ! 4       V n        \        P                  ! V P                  V P
                  .4      V n        \         P                  ! V P                  V P                  4      V n	        . pV P                   Fv  p\        V\        4      '       d   VP                  R4      pVP                  V P                  P                  V4      4       V P
                  P!                  W"R,           4       Kx  	  \#        V4      # )r   úutf-8Ú	_password)r   r   r+   r   Ú'InMemoryUsernamePasswordDatabaseDontUseÚcheckerr   ÚPortalÚ
IRCFactoryr   ÚSTATIC_USERSÚ
isinstanceÚbytesÚdecodeÚappendrB   rL   r	   )r)   ÚcÚnicks   &  r1   ÚsetUpÚIRCProtocolTests.setUp¨   sÊ   € Ü×/Ò/°Ó<ˆŒ
Ü×GÒGÓIˆŒÜ—m’m D§J¡J°·±°Ó?ˆŒÜ×)Ò)¨$¯*©*°d·k±kÓBˆŒàˆØ×%Ô%ˆDÜ˜$¤×&Ò&Ø—{‘{ 7Ó+�Ø�H‰H�T—Z‘Z×*Ñ*¨4Ó0Ô1Ø�L‰L× Ñ  ¨kÕ'9Ö:ñ	 &ô
 ˜A‹Ðr4   c                ó  € V P                  V4      p\        P                  \        P                  \        P                  \        P
                  .pV F  w  rEpWS9   g   K  VP                  V4       K!  	  V P                  VRV: 24       R# )z�
The user has been greeted with the four messages that are (usually)
considered to start an IRC session.

Asserts that the required responses were received.
zMissing responses for N)Ú	_responser   ÚRPL_WELCOMEÚRPL_YOURHOSTÚRPL_CREATEDÚ
RPL_MYINFOÚremoveÚassertFalse)r)   rF   ÚresponseÚexpectedÚprefixÚcommandÚargss   &&     r1   Ú_assertGreetingÚ IRCProtocolTests._assertGreeting¶   sm   € ð —>‘> $Ó'ˆÜ—O‘O¤S×%5Ñ%5´s·±ÌÏÉÐWˆÛ%-Ñ!ˆF˜TØÖ"Ø—‘ Ö(ñ &.ð 	×Ñ˜Ð%;¸H¹<Ð#HÖIr4   Nc                ót   € Vf
   VR,           pVP                  RV R24       VP                  RV R24       R # )NrŒ   zPASS z
zNICK z extrainfo
)r…   )r)   rF   r—   Úpasswords   &&&&r1   Ú_loginÚIRCProtocolTests._loginÅ   s<   € ØÒØ˜kÕ)ˆHØ�
‰
�U˜8˜* DÐ)Ô*Ø�
‰
�U˜4˜& Ð/Ö0r4   c                ó¼   € V P                  V P                  P                  V4      4      p\        W P                  V P                  4      pV P                  W14       V# rx   )r"   r+   rD   rt   r   r«   )r)   r$   rF   Úaggs   &&  r1   Ú_loggedInUserÚIRCProtocolTests._loggedInUserË   sF   € Ø×#Ñ# D§J¡J×$9Ñ$9¸$Ó$?Ó@ˆÜ˜d§J¡J°·±Ó=ˆØ�‰�CÔØˆ
r4   c                ó@  € VP                   P                  4       pVP                  R4      pVP                  4       pVP                   P	                  4        . p\        \        P                  V4       F(  pVe   V^,          V8X  g   K  VP                  V4       K*  	  V# )z‹
Extracts the user's response, and returns a list of parsed lines.
If messageType is defined, only messages of that type will be returned.
r‹   )	rz   Úvaluer”   Ú
splitlinesÚclearÚmapr   Úparsemsgr•   )r)   rF   ÚmessageTyper¢   ÚresultÚmessages   &&&   r1   r›   ÚIRCProtocolTests._responseÑ   s€   € ð
 —>‘>×'Ñ'Ó)ˆØ—?‘? 7Ó+ˆØ×&Ñ&Ó(ˆØ�‰×ÑÔØˆÜœ3Ÿ<™<¨Ö2ˆGØÒ" g¨a¥j°KÖ&?Ø—‘˜gÖ&ñ 3ð ˆr4   c                óJ   € V P                  R 4      pV P                  V4       R# )Ú	firstuserN)r¯   r§   )r)   rF   s   & r1   ÚtestPASSLoginÚIRCProtocolTests.testPASSLoginà   s    € Ø×!Ñ! +Ó.ˆØ×Ñ˜TÖ"r4   c                ón  € V P                  V P                  P                  R4      4      p\        WP                  V P                  4      pVP                  R4       V P                  VR4      pV P                  \        V4      ^4       V P                  V^ ,          ^ ,          \        P                  4       V P                  V^ ,          ^,          R4       V P                  V^ ,          ^,          RR.4       VP                  P                  4        VP                  R4       V P                  V4       R# )z•
Sending NICK without PASS will prompt the user for their password.
When the user sends their password to NickServ, it will respond with a
Greeting.
r¼   zNICK firstuser extrainfo
ÚPRIVMSGz	Password?z%PRIVMSG nickserv firstuser_password
N)r"   r+   rD   rt   r   r…   r›   r#   Úlenr   ÚNICKSERVrz   r´   r§   ©r)   r¼   rF   r¢   s   &   r1   Útest_nickServLoginÚ#IRCProtocolTests.test_nickServLoginä   sæ   € ð ×(Ñ(¨¯©×)>Ñ)>¸{Ó)KÓLˆ	ä˜y¯*©*°d·l±lÓCˆØ�
‰
Ð1Ô2Ø—>‘> $¨	Ó2ˆØ×Ñœ˜X›¨Ô*Ø×Ñ˜ !� Q�¬×)9Ñ)9Ô:Ø×Ñ˜ !� Q�¨Ô3Ø×Ñ˜ !� Q�¨+°{Ð)CÔDØ�‰×ÑÔà�
‰
Ð<Ô=Ø×Ñ˜TÖ"r4   c                ó^  € V P                  V P                  P                  R 4      4      p\        WP                  V P                  4      pV P                  VR R4       V P                  VR4      pV P                  \        V4      ^4       V P                  V^ ,          ^,          R R.4       R# )r¼   Ú	wrongpassrÀ   zLogin failed.  Goodbye.N)	r"   r+   rD   rt   r   r«   r›   r#   rÁ   rÃ   s   &   r1   ÚtestFailedLoginÚ IRCProtocolTests.testFailedLoginø   s‡   € Ø×(Ñ(¨¯©×)>Ñ)>¸{Ó)KÓLˆ	ä˜y¯*©*°d·l±lÓCˆØ�‰�D˜+ {Ô3Ø—>‘> $¨	Ó2ˆØ×Ñœ˜X›¨Ô*Ø×Ñ˜ !� Q�¨+Ð7PÐ)QÖRr4   c                ó6  a€ . oV P                  V P                  P                  R 4      4      p\        WP                  V P                  4      pV P                  VR 4       V3R lVP                  n        VP                  R4       V P                  SR.4       R# )r¼   c                  ó&   <€ S P                  R 4      # )T)r•   )Úlogouts   €r1   Ú<lambda>Ú-IRCProtocolTests.testLogout.<locals>.<lambda>  s   ø€  v§}¡}°TÔ':r4   zQUIT
TN)
r"   r+   rD   rt   r   r«   r|   rÌ   r…   r#   )r)   r¼   rF   rÌ   s   &  @r1   Ú
testLogoutÚIRCProtocolTests.testLogout  ss   ø€ ØˆØ×(Ñ(¨¯©×)>Ñ)>¸{Ó)KÓLˆ	ä˜y¯*©*°d·l±lÓCˆØ�‰�D˜+Ô&Ü:ˆ�‰ÔØ�
‰
�:ÔØ×Ñ˜ $ Ö(r4   c                óT  € V P                  V P                  P                  R 4      4      pV P                  V P                  P                  R4      4      pRVP                  R&   \        WP                  V P                  4      pV P                  VR 4       VP                  P                  4        VP                  R4       V P                  V4      pV P                  \        V4      ^4       V P                  V^ ,          ^ ,          R4       V P                  V^ ,          ^,          R4       V P                  V^ ,          ^,          R.4       V P                  V^,          ^,          R4       V P                  V^,          ^,          R	4       V P                  V^,          ^,          R
4       V P                  V^,          ^,          R4       V P                  R4      pVP                  P                  4        VP                  P                  4        VP                  R4       V P                  V4      pV P                  V4      pV P                  \        V4      ^4       V P                  V^ ,          ^ ,          R4       V P                  V^ ,          ^,          R4       V P                  V^ ,          ^,          R.4       V P                  V^,          ^ ,          R4       V P                  V^,          ^,          R4       V P                  V^,          ^,          . RO. RO.4       R# )r¼   Úsomechannelzsome random topicÚtopicúJOIN #somechannel
zfirstuser!firstuser@realmnameÚJOINú#somechannelÚ353Ú366Ú332Ú333Ú	otheruserúotheruser!otheruser@realmnamer   N)rÛ   Ú=rÖ   zfirstuser otheruser)rÛ   rÝ   rÖ   zotheruser firstuser)r"   r+   rD   rR   Úmetart   r   r«   rz   r´   r…   r›   r#   rÁ   r¯   ÚassertIn)r)   r¼   rÒ   rF   r¢   ÚotherÚevents   &      r1   ÚtestJoinÚIRCProtocolTests.testJoin  st  € Ø×(Ñ(¨¯©×)>Ñ)>¸{Ó)KÓLˆ	à×*Ñ*¨4¯:©:×+AÑ+AÀ-Ó+PÓQˆà$7ˆ×Ñ˜Ñ!ô ˜y¯*©*°d·l±lÓCˆØ�‰�D˜+Ô&Ø�‰×ÑÔØ�
‰
Ð*Ô+à—>‘> $Ó'ˆØ×Ñœ˜X›¨Ô*ð 	×Ñ˜ !� Q�Ð)HÔIØ×Ñ˜ !� Q�¨Ô0Ø×Ñ˜ !� Q�¨.Ð)9Ô:ð 	×Ñ˜ !� Q�¨Ô/Ø×Ñ˜ !� Q�¨Ô/ð 	×Ñ˜ !� Q�¨Ô/Ø×Ñ˜ !� Q�¨Ô/ð ×"Ñ" ;Ó/ˆà�‰×ÑÔØ�‰×ÑÔØ�‰Ð+Ô,ð —>‘> %Ó(ˆà—‘˜tÓ$ˆØ×Ñœ˜U› QÔ'Ø×Ñ˜˜q� !�Ð&EÔFØ×Ñ˜˜q� !� fÔ-Ø×Ñ˜˜q� !� ~Ð&6Ô7à×Ñ˜ !� Q�¨Ô5Ø×Ñ˜ !� Q�¨Ô/Ø�‰Ø�Q�K˜�NâIÚIðö	
r4   c                ó
  € V P                  V P                  P                  R4      4      pV P                  V P                  P                  R4      4       \	        WP                  V P
                  4      pV P                  VR4       VP                  P                  4        VP                  R4       V P                  V4      pV Uu. uF  qD^,          NK  	  ppV P                  RV4       V P                  RV4       R# u upi )zW
When a user joins a group without a topic, no topic information is
sent to that user.
r¼   rÒ   rÔ   rÙ   rÚ   N)r"   r+   rD   rR   rt   r   r«   rz   r´   r…   r›   ÚassertNotIn)r)   r¼   rF   r¢   ÚrÚresponseCodess   &     r1   Útest_joinTopiclessÚ#IRCProtocolTests.test_joinTopiclessB  sÌ   € ð
 ×(Ñ(¨¯©×)>Ñ)>¸{Ó)KÓLˆ	à×Ñ˜TŸZ™Z×3Ñ3°MÓBÔCô ˜y¯*©*°d·l±lÓCˆØ�‰�D˜+Ô&Ø�‰×ÑÔØ�
‰
Ð*Ô+à—>‘> $Ó'ˆÙ'/Ó0¡x !˜1Ÿ˜¡xˆÐ0Ø×Ñ˜ Ô.Ø×Ñ˜ Ö.ùò 1s   ÃD c                ó  € V P                  R 4      pV P                  V P                  P                  R4      4       VP	                  R4       VP
                  P                  4        V P                  R4      pVP	                  R4       VP
                  P                  4        VP
                  P                  4        VP	                  R4       V P                  V4      pV P                  V4      pV P                  \        V4      ^4       V P                  V^ ,          ^ ,          R4       V P                  V^ ,          ^,          R4       V P                  V^ ,          ^,          RR.4       V P                  W44       VP	                  R4       VP
                  P                  4        VP
                  P                  4        VP	                  R	4       V P                  V4      pV P                  V4      pV P                  \        V4      ^4       V P                  V^ ,          ^ ,          R4       V P                  V^ ,          ^,          R4       V P                  V^ ,          ^,          RR
.4       V P                  W44       VP	                  R4       VP
                  P                  4        VP
                  P                  4        VP	                  R4       V P                  V4      pV P                  V4      pV P                  \        V4      ^4       V P                  V^ ,          ^ ,          R4       V P                  V^ ,          ^,          R4       V P                  V^ ,          ^,          RR.4       V P                  W44       R# )ÚuseruserrÒ   rÔ   rÛ   zPART #somechannel
úuseruser!useruser@realmnameÚPARTrÖ   Úleavingz(PART #somechannel :goodbye stupidheads
zgoodbye stupidheadss   JOIN #somechannel
s)   PART #somechannel :goodbye stupidheads1
zgoodbye stupidheads1N©
r¯   r"   r+   rR   r…   rz   r´   r›   r#   rÁ   ©r)   rF   rà   r¢   rá   s   &    r1   Ú	testLeaveÚIRCProtocolTests.testLeaveV  s²  € Ø×!Ñ! *Ó-ˆà×Ñ˜TŸZ™Z×3Ñ3°MÓBÔCà�
‰
Ð*Ô+Ø�‰×ÑÔà×"Ñ" ;Ó/ˆà�‰Ð+Ô,à�‰×ÑÔØ�‰×ÑÔà�
‰
Ð*Ô+à—>‘> $Ó'ˆØ—‘˜uÓ%ˆà×Ñœ˜X›¨Ô*Ø×Ñ˜ !� Q�Ð)FÔGØ×Ñ˜ !� Q�¨Ô0Ø×Ñ˜ !� Q�¨.¸)Ð)DÔEØ×Ñ˜Ô)ð 	�
‰
Ð*Ô+à�‰×ÑÔØ�‰×ÑÔà�
‰
Ð?Ô@à—>‘> $Ó'ˆØ—‘˜uÓ%ˆà×Ñœ˜X›¨Ô*Ø×Ñ˜ !� Q�Ð)FÔGØ×Ñ˜ !� Q�¨Ô0Ø×Ñ˜ !� Q�¨.Ð:OÐ)PÔQØ×Ñ˜Ô)à�
‰
Ð+Ô,à�‰×ÑÔØ�‰×ÑÔà�
‰
ÐAÔBà—>‘> $Ó'ˆØ—‘˜uÓ%ˆà×Ñœ˜X›¨Ô*Ø×Ñ˜ !� Q�Ð)FÔGØ×Ñ˜ !� Q�¨Ô0Ø×Ñ˜ !� Q�¨.Ð:PÐ)QÔRØ×Ñ˜Ö)r4   c                óB  € V P                  R 4      p\        P                  ! R4      pRVP                  R&   RVP                  R&   RVP                  R&   V P	                  V P
                  P                  V4      4       VP                  P                  4        VP                  R4       V P                  V4      pV P                  V^,          ^ ,          R	4       V P                  V^,          ^,          R
4       V P                  V^,          ^,          . RO4       V P                  V^,          ^,          R4       V P                  V^,          ^,          . RO4       VP                  P                  4        VP                  R4       V P                  V4      pV P                  V^ ,          ^,          R
4       V P                  V^ ,          ^,          . RO4       V P                  V^,          ^,          R4       V P                  V^,          ^,          . RO4       R# )rë   rÒ   úThis is a test topic.rÓ   Úsome_fellowÚtopic_authoriqË¢Ú
topic_daterÔ   r   rÙ   rÚ   úTOPIC #somechannel
N)rë   rÖ   rô   )rë   rÖ   rõ   Ú77777777)r¯   r   r<   rÞ   r"   r+   rZ   rz   r´   r…   r›   r#   )r)   rF   rU   r¢   s   &   r1   ÚtestGetTopicÚIRCProtocolTests.testGetTopic‘  s­  € Ø×!Ñ! *Ó-ˆä—’˜mÓ,ˆØ5ˆ�
‰
�7ÑØ%2ˆ�
‰
�>Ñ"Ø#+ˆ�
‰
�<Ñ à×Ñ˜TŸZ™Z×0Ñ0°Ó7Ô8à�‰×ÑÔØ�
‰
Ð*Ô+à—>‘> $Ó'ˆà×Ñ˜ !� Q�¨Ô5Ø×Ñ˜ !� Q�¨Ô/ð 	×ÑØ�Q�K˜�NÒQô	
ð 	×Ñ˜ !� Q�¨Ô/Ø×ÑØ�Q�K˜�NÒSô	
ð 	�‰×ÑÔà�
‰
Ð+Ô,à—>‘> $Ó'ˆà×Ñ˜ !� Q�¨Ô/Ø×ÑØ�Q�K˜�NÒQô	
ð 	×Ñ˜ !� Q�¨Ô/Ø×ÑØ�Q�K˜�NÒSö	
r4   c                óì  € V P                  R 4      pV P                  V P                  P                  R4      4      pVP	                  R4       V P                  R4      pVP	                  R4       VP
                  P                  4        VP
                  P                  4        VP	                  R4       V P                  V4      pV P                  V4      pV P                  WE4       V P                  V^ ,          ^ ,          R4       V P                  V^ ,          ^,          R4       V P                  V^ ,          ^,          RR.4       VP
                  P                  4        R	VP                  R
&   VP	                  R4       V P                  V4      pV P                  V^ ,          ^,          R4       V P                  V^ ,          ^,          . RO4       V P                  V^,          ^,          R4       V P                  V^,          ^,          . RO4       VP
                  P                  4        VP	                  R4       V P                  V4      pV P                  V^ ,          ^,          R4       R# )rë   rÒ   rÔ   rÛ   z,TOPIC #somechannel :This is the new topic.
rÜ   ÚTOPICrÖ   úThis is the new topic.i90  r÷   rø   rÙ   rÚ   zTOPIC #asdlkjasd
Ú403N)rÛ   rÖ   rþ   )rÛ   rÖ   rÛ   Ú12345)
r¯   r"   r+   rR   r…   rz   r´   r›   r#   rÞ   )r)   rF   rÒ   rà   r¢   rá   s   &     r1   ÚtestSetTopicÚIRCProtocolTests.testSetTopic»  së  € Ø×!Ñ! *Ó-ˆà×*Ñ*¨4¯:©:×+AÑ+AÀ-Ó+PÓQˆà�
‰
Ð*Ô+à×"Ñ" ;Ó/ˆà�‰Ð+Ô,à�‰×ÑÔØ�‰×ÑÔà�‰ÐDÔEà—>‘> %Ó(ˆØ—‘˜tÓ$ˆà×Ñ˜Ô)à×Ñ˜ !� Q�Ð)HÔIØ×Ñ˜ !� Q�¨Ô1Ø×Ñ˜ !� Q�¨.Ð:RÐ)SÔTà�‰×ÑÔà).ˆ×Ñ˜Ñ&Ø�‰Ð,Ô-à—>‘> %Ó(ˆØ×Ñ˜ !� Q�¨Ô/Ø×ÑØ�Q�K˜�NÒSô	
ð 	×Ñ˜ !� Q�¨Ô/Ø×ÑØ�Q�K˜�NÒOô	
ð 	�‰×ÑÔØ�‰Ð*Ô+à—>‘> %Ó(ˆØ×Ñ˜ !� Q�¨Ö/r4   c                óÎ  € V P                  R 4      pV P                  V P                  P                  R4      4       VP	                  R4       V P                  R4      pVP	                  R4       VP
                  P                  4        VP
                  P                  4        VP	                  R4       V P                  V4      pV P                  V4      pV P                  V4       V P                  \        V4      ^4       V P                  V^ ,          ^ ,          R4       V P                  V^ ,          ^,          RR
4       V P                  V^ ,          ^,          RR.4       R	# )rë   rÒ   rÔ   rÛ   z%PRIVMSG #somechannel :Hello, world.
rì   rÀ   rÖ   zHello, world.Néÿÿÿÿ)r¯   r"   r+   rR   r…   rz   r´   r›   r¡   r#   rÁ   rð   s   &    r1   ÚtestGroupMessageÚ!IRCProtocolTests.testGroupMessageé  s  € Ø×!Ñ! *Ó-ˆà×Ñ˜TŸZ™Z×3Ñ3°MÓBÔCà�
‰
Ð*Ô+à×"Ñ" ;Ó/ˆà�‰Ð+Ô,à�‰×ÑÔØ�‰×ÑÔà�
‰
Ð<Ô=à—>‘> $Ó'ˆØ—‘˜uÓ%ˆà×Ñ˜Ô"Ø×Ñœ˜U› QÔ'Ø×Ñ˜˜q� !�Ð&CÔDØ×Ñ˜˜q� !� i°Ô4Ø×Ñ˜˜q� !� ~°Ð&GÖHr4   c                ór  € V P                  R 4      pV P                  R4      pVP                  P                  4        VP                  P                  4        VP                  R4       V P	                  V4      pV P	                  V4      pV P                  V4       V P                  \        V4      ^4       V P                  V^ ,          ^ ,          R4       V P                  V^ ,          ^,          R4       V P                  V^ ,          ^,          RR.4       VP                  R4       V P	                  V4      pV P                  \        V4      ^4       V P                  V^ ,          ^ ,          R4       V P                  V^ ,          ^,          R4       V P                  V^ ,          ^,          . R
O4       R	# )rë   rÛ   z#PRIVMSG otheruser :Hello, monkey.
rì   rÀ   zHello, monkey.z)PRIVMSG nousernamedthis :Hello, monkey.
r   Ú401N)rë   ÚnousernamedthiszNo such nick/channel.)r¯   rz   r´   r…   r›   r¡   r#   rÁ   rð   s   &    r1   ÚtestPrivateMessageÚ#IRCProtocolTests.testPrivateMessage  sW  € Ø×!Ñ! *Ó-ˆà×"Ñ" ;Ó/ˆà�‰×ÑÔØ�‰×ÑÔà�
‰
Ð:Ô;à—>‘> $Ó'ˆØ—‘˜uÓ%ˆà×Ñ˜Ô"Ø×Ñœ˜U› QÔ'Ø×Ñ˜˜q� !�Ð&CÔDØ×Ñ˜˜q� !� iÔ0Ø×Ñ˜˜q� !� {Ð4DÐ&EÔFà�
‰
Ð@ÔAà—>‘> $Ó'ˆà×Ñœ˜X›¨Ô*Ø×Ñ˜ !� Q�¨Ô5Ø×Ñ˜ !� Q�¨Ô/Ø×ÑØ�Q�K˜�NÒTö	
r4   c                ó  € V P                  R 4      pVP                  P                  4        VP                  R4       V P	                  V4      pV P                  \        V4      ^4       V P                  V^ ,          ^,          R4       R# )rë   zOPER user pass
Ú491N©r¯   rz   r´   r…   r›   r#   rÁ   ©r)   rF   r¢   s   &  r1   ÚtestOperÚIRCProtocolTests.testOper   si   € Ø×!Ñ! *Ó-ˆà�‰×ÑÔØ�
‰
Ð'Ô(Ø—>‘> $Ó'ˆà×Ñœ˜X›¨Ô*Ø×Ñ˜ !� Q�¨Ö/r4   c                óš  € V P                  R 4      pVP                  P                  4        VP                  R4       V P	                  V4      pV P                  \        V4      ^4       V P                  V^ ,          ^ ,          R4       V P                  V^ ,          ^,          R4       V P                  V^ ,          ^,          R R.4       R# )rë   zMODE useruser
r   Ú221Ú+Nr  r  s   &  r1   ÚtestGetUserModeÚ IRCProtocolTests.testGetUserMode*  sž   € Ø×!Ñ! *Ó-ˆà�‰×ÑÔØ�
‰
Ð&Ô'à—>‘> $Ó'ˆØ×Ñœ˜X›¨Ô*Ø×Ñ˜ !� Q�¨Ô5Ø×Ñ˜ !� Q�¨Ô/Ø×Ñ˜ !� Q�¨*°cÐ):Ö;r4   c                ó  € V P                  R 4      pVP                  P                  4        VP                  R4       V P	                  V4      pV P                  \        V4      ^4       V P                  V^ ,          ^,          R4       R# )rë   zMODE useruser +abcd
Ú472Nr  r  s   &  r1   ÚtestSetUserModeÚ IRCProtocolTests.testSetUserMode6  si   € Ø×!Ñ! *Ó-ˆà�‰×ÑÔØ�
‰
Ð,Ô-à—>‘> $Ó'ˆØ×Ñœ˜X›¨Ô*Ø×Ñ˜ !� Q�¨Ö/r4   c                óŒ  € V P                  R 4      pV P                  V P                  P                  R4      4       VP	                  R4       VP
                  P                  4        VP	                  R4       V P                  V4      pV P                  \        V4      ^4       V P                  V^ ,          ^,          R4       R# )rë   rÒ   rÔ   zMODE #somechannel
Ú324Nrï   r  s   &  r1   ÚtestGetGroupModeÚ!IRCProtocolTests.testGetGroupMode@  s“   € Ø×!Ñ! *Ó-ˆà×Ñ˜TŸZ™Z×3Ñ3°MÓBÔCà�
‰
Ð*Ô+à�‰×ÑÔØ�
‰
Ð*Ô+à—>‘> $Ó'ˆØ×Ñœ˜X›¨Ô*Ø×Ñ˜ !� Q�¨Ö/r4   c                óŒ  € V P                  R 4      pV P                  V P                  P                  R4      4       VP	                  R4       VP
                  P                  4        VP	                  R4       V P                  V4      pV P                  \        V4      ^4       V P                  V^ ,          ^,          R4       R# )rë   Ú	groupnameúJOIN #groupname
zMODE #groupname +abcd
r  Nrï   r  s   &  r1   ÚtestSetGroupModeÚ!IRCProtocolTests.testSetGroupModeN  s“   € Ø×!Ñ! *Ó-ˆà×Ñ˜TŸZ™Z×3Ñ3°KÓ@ÔAà�
‰
Ð(Ô)à�‰×ÑÔØ�
‰
Ð.Ô/à—>‘> $Ó'ˆØ×Ñœ˜X›¨Ô*Ø×Ñ˜ !� Q�¨Ö/r4   c           	     óþ  € \         P                  ! R 4      pV P                  V P                  P	                  V4      4       . pR F=  pV P                  V4      pVP                  V4       VR,          P                  R4       K?  	  V F  pVP                  P                  4        K  	  V^ ,          P                  R4       V P                  V^ ,          4      pV P                  V P                  V^,          4      4       V P                  V P                  V^,          4      4       . ROpVRR  FÌ  w  r‰p
V P                  VR4       V P                  V	R4       V
w  ppppppppV P                  VR4       V P                  VR4       V P                  WÇ9   4       V P                  VR4       V P                  VR4       VP                  V4       V P                  VR4       V P                  VR	V,           4       KÎ  	  V P                  V4       VR,          w  r‰p
V P                  VR4       V P                  V	R
4       V
w  pppV P                  VR4       V P                  VR4       V P                  VR4       R# )r   Úuseroner!  zWHO #groupname
Nr   Ú352z
#groupnameÚHz0 Ú315zEnd of /WHO list.)r%  ÚusertwoÚ	userthreer  )r   r<   r"   r+   rZ   r¯   r•   r…   rz   r´   r›   r¡   r#   Ú
assertTruer    )r)   rU   Úusersr—   ÚurF   ræ   Ú	wantusersr¤   Úcoder„   ÚmynameÚ	theirnameÚ	theirhostÚtheirserverÚ	theirnickr,   ÚextraÚchannels   &                  r1   ÚtestWhoÚIRCProtocolTests.testWho\  s8  € Ü—’˜kÓ*ˆØ×Ñ˜TŸZ™Z×0Ñ0°Ó7Ô8àˆÛ5ˆDØ×"Ñ" 4Ó(ˆAØ�L‰L˜ŒOØ�"�I�O‰OÐ1Ö2ñ 6ó ˆDØ�N‰N× Ñ Ö"ñ ð 	ˆa��‰Ð+Ô,à�N‰N˜5 �8Ó$ˆØ×Ñ˜Ÿ™¨¨a­Ó1Ô2Ø×Ñ˜Ÿ™¨¨a­Ó1Ô2â7ˆ	Ø#$ S b£6ÑˆF˜%Ø×Ñ˜V [Ô1Ø×Ñ˜T 5Ô)ð ñ	ØØØØØØØØà×Ñ˜V YÔ/Ø×Ñ˜U LÔ1Ø�O‰O˜IÑ2Ô3Ø×Ñ˜Y¨Ô4Ø×Ñ˜[¨+Ô6Ø×Ñ˜YÔ'Ø×Ñ˜T 3Ô'Ø×Ñ˜U D¨9Õ$4Ö5ñ+ $*ð, 	×Ñ˜Ô#à �eÑˆ�eØ×Ñ˜ Ô-Ø×Ñ˜˜uÔ%Ø!&Ñˆ�˜Ø×Ñ˜ Ô+Ø×Ñ˜ ,Ô/Ø×Ñ˜Ð 3Ö4r4   c                ó‚  € V P                  R 4      pVP                  P                  4        V P                  V P                  P                  R4      4      pR Vn        RVP                  R&   VP                  R4       V P                  V4      pV P                  \        V4      ^4       Vw  rEV P                  V^ ,          R4       V P                  V^,          R4       V P                  V^,          ^ ,          R 4       V P                  V^,          ^,          R4       V P                  V^,          ^,          R4       V P                  V^,          ^,          R4       V P                  V^ ,          R4       V P                  V^,          R	4       V P                  V^,          ^ ,          R 4       V P                  V^,          ^,          R
4       VP                  P                  4        VP                  R4       V P                  V4      pV P                  \        V4      ^4       Vw  reV P                  V^,          R4       V P                  V^,          ^,          R4       V P                  V^,          ^,          R4       V P                  V^,          ^,          R4       V P                  V^,          R	4       R# )ÚsomeuserÚ	somegroupc                  ó   € \        ^4      # )é   )r   rj   r4   r1   rÍ   Ú+IRCProtocolTests.testList.<locals>.<lambda>”  s   € ¤¨¤r4   zthis is the topic woorÓ   zLIST #somegroup
r   Ú322Ú17Ú323zEnd of /LISTzLIST
N)r¯   rz   r´   r"   r+   rR   ÚsizerÞ   r…   r›   r#   rÁ   )r)   rF   r;  ræ   ÚrespÚendÚfg1s   &      r1   ÚtestListÚIRCProtocolTests.testList�  s'  € Ø×!Ñ! *Ó-ˆØ�‰×ÑÔà×(Ñ(¨¯©×)?Ñ)?ÀÓ)LÓMˆ	Ù,ˆ	ŒØ"9ˆ	�‰�wÑð 	�
‰
Ð(Ô)à�N‰N˜4Ó ˆØ×Ñœ˜Q› Ô#Ø‰	ˆà×Ñ˜˜a� +Ô.Ø×Ñ˜˜a� %Ô(Ø×Ñ˜˜a� � ZÔ0Ø×Ñ˜˜a� � [Ô1Ø×Ñ˜˜a� � TÔ*Ø×Ñ˜˜a� �Ð%<Ô=à×Ñ˜˜Q� Ô-Ø×Ñ˜˜Q� Ô'Ø×Ñ˜˜Q� � JÔ/Ø×Ñ˜˜Q� � NÔ3à�‰×ÑÔð 	�
‰
�:ÔØ�N‰N˜4Ó ˆØ×Ñœ˜Q› Ô#à‰ˆà×Ñ˜˜Q� Ô'Ø×Ñ˜˜Q� � KÔ0Ø×Ñ˜˜Q� � DÔ)Ø×Ñ˜˜Q� �Ð$;Ô<à×Ñ˜˜Q� Ö'r4   c                óö  € V P                  R 4      p\        P                  ! R4      pR Vn        ^
Vn        \
        P
                  ! 4       ^,
          Vn        V P                  V P                  P                  V4      4       VP                  P                  4        VP                  R4       V P                  V4      pV P                  \        V4      ^4       Vw  rErgpV P                  V^ ,          R4       V P                  V^,          R4       V P                  V^,          ^ ,          R 4       V P                  V^,          ^,          R4       V P                  V^,          ^,          R4       V P                  V^,          ^,          R4       V P                  V^,          ^,          R4       V P                  V^,          ^,          R4       V P                  V^ ,          R4       V P                  V^,          R4       V P                  V^,          ^ ,          R 4       V P                  V^,          ^,          R4       V P                  V^,          ^,          R4       V P                  V^,          ^,          R4       V P                  V^ ,          R4       V P                  V^,          R	4       V P                  V^,          ^ ,          R 4       V P                  V^,          ^,          R4       V P                  V^,          ^,          R
4       V P                  V^,          ^,          R4       V P                  V^,          ^,          R4       V P                  V^ ,          R4       V P                  V^,          R4       V P                  V^,          ^ ,          R 4       V P                  V^,          ^,          R4       V P                  V^,          ^,          R4       V P                  V^ ,          R4       V P                  V^,          R4       V P                  V^,          ^ ,          R 4       V P                  V^,          ^,          R4       V P                  V^,          ^,          R4       R# )ÚsomeguyÚotherguyc                  ól   € \        \        P                  ! R 4      \        P                  ! R4      .4      # )ÚgroupAÚgroupB)Úiterr   r<   rj   r4   r1   rÍ   Ú,IRCProtocolTests.testWhois.<locals>.<lambda>¾  s#   € ¤dÜ�]Š]˜8Ó$¤g§m¢m°HÓ&=Ð>ô'
r4   zWHOIS otherguy
r   Ú311Ú*Ú312zHi mom!Ú317Ú15Ú10zseconds idle, signon timeÚ319z#groupA #groupBÚ318zEnd of WHOIS list.N)r¯   r   r6   rc   ÚsignOnÚtimeÚlastMessager"   r+   rL   rz   r´   r…   r›   r#   rÁ   )	r)   rF   rJ  ræ   ÚwuserÚwserverÚidleÚchannelsrD  s	   &        r1   Ú	testWhoisÚIRCProtocolTests.testWhoisº  sq  € Ø×!Ñ! )Ó,ˆä—<’< 
Ó+ˆñ
ˆÔð ˆŒÜ#Ÿyšy›{¨RÕ/ˆÔà×Ñ˜TŸZ™Z×/Ñ/°Ó9Ô:à�‰×ÑÔØ�
‰
Ð'Ô(Ø�N‰N˜4Ó ˆà×Ñœ˜Q› Ô#Ø./Ñ+ˆ˜¨à×Ñ˜˜q� ;Ô/Ø×Ñ˜˜q� 5Ô)Ø×Ñ˜˜q� !� iÔ0Ø×Ñ˜˜q� !� jÔ1Ø×Ñ˜˜q� !� jÔ1Ø×Ñ˜˜q� !� kÔ2Ø×Ñ˜˜q� !� cÔ*Ø×Ñ˜˜q� !� jÔ1à×Ñ˜ � [Ô1Ø×Ñ˜ � UÔ+Ø×Ñ˜ � A�¨	Ô2Ø×Ñ˜ � A�¨
Ô3Ø×Ñ˜ � A�¨Ô4Ø×Ñ˜ � A�¨	Ô2à×Ñ˜˜a� +Ô.Ø×Ñ˜˜a� %Ô(Ø×Ñ˜˜a� � YÔ/Ø×Ñ˜˜a� � ZÔ0Ø×Ñ˜˜a� � TÔ*Ø×Ñ˜˜a� � TÔ*Ø×Ñ˜˜a� �Ð%@ÔAà×Ñ˜ !� kÔ2Ø×Ñ˜ !� eÔ,Ø×Ñ˜ !� Q�¨Ô3Ø×Ñ˜ !� Q�¨Ô4Ø×Ñ˜ !� Q�Ð):Ô;à×Ñ˜˜Q� Ô-Ø×Ñ˜˜Q� Ô'Ø×Ñ˜˜Q� � IÔ.Ø×Ñ˜˜Q� � JÔ/Ø×Ñ˜˜Q� �Ð$8Ö9r4   )rŽ   r   r   r+   )rë   rÛ   rI  r¼   Úusernamer%  r)  r*  Úuserfours   userfiver:  rx   )rk   rl   rm   rn   r‘   r˜   r§   r«   r¯   r›   r½   rÄ   rÈ   rÏ   râ   rè   rñ   rú   r  r  r
  r  r  r  r  r"  r7  rF  r_  ro   rp   rq   s   @r1   r‰   r‰   ™   s’   ø‡ € ò€LòòJô1òôò#ò#ò(Sò)ò5
òn/ò(9*òv(
òT,0ò\Iò2
ò<0ò
<ò0ò0ò0ò15òf)(÷V5:ð 5:r4   r‰   c                   ó>   a € ] tR tRt o R tR tR tR tR tRt	V t
R# )	ÚTestMindiò  c                ó>   € . V n         . V n        . V n        . V n        R # rx   )ÚjoinsÚpartsÚmessagesrÞ   )r)   ÚaÚkws   &*,r1   r€   ÚTestMind.__init__ó  s   € ØˆŒ
ØˆŒ
ØˆŒØˆŽ	r4   c                ó>   € V P                   P                  W34       R # rx   )rf  r•   )r)   rF   rU   s   &&&r1   Úremote_userJoinedÚTestMind.remote_userJoinedù  s   € Ø�
‰
×Ñ˜4˜-Ö(r4   c                ó@   € V P                   P                  WV34       R # rx   )rg  r•   )r)   rF   rU   Úreasons   &&&&r1   Úremote_userLeftÚTestMind.remote_userLeftü  s   € Ø�
‰
×Ñ˜4¨Ð/Ö0r4   c                ó@   € V P                   P                  WV34       R # rx   )rh  r•   )r)   ÚsenderÚ	recipientr¹   s   &&&&r1   Úremote_receiveÚTestMind.remote_receiveÿ  s   € Ø�‰×Ñ˜f°Ð9Ö:r4   c                ó>   € V P                   P                  W34       R # rx   )rÞ   r•   )r)   rU   rÞ   s   &&&r1   Úremote_groupMetaUpdateÚTestMind.remote_groupMetaUpdate  s   € Ø�	‰	×Ñ˜%˜Ö'r4   )rf  rh  rÞ   rg  N)rk   rl   rm   rn   r€   rm  rq  rv  ry  ro   rp   rq   s   @r1   rd  rd  ò  s#   ø‡ € òò)ò1ò;÷(ð (r4   rd  c                   ó\   a € ] tR tRt o R tR tR tR t]P                  R 4       t
RtV tR# )	ÚPBProtocolTestsi	  c                ó¨  € \         P                  ! R 4      V n        \        P                  ! 4       V n        \        P                  ! V P                  V P
                  .4      V n        \        P                  ! V P                  4      V n
        V P                  V P                  n        RV P                  n        \        P                  ! 4       V n        RV P                  n        \         P"                  ! ^ V P                  4      V n        \         P&                  ! RV P$                  P)                  4       P*                  V P                  4      V n        R# )r   Trv   N)r   r   r+   r   r�   rŽ   r   r�   r   ÚPBServerFactoryÚserverFactoryÚ_protocolFactoryr|   ÚunsafeTracebacksÚPBClientFactoryÚclientFactoryr   Ú	listenTCPÚ
serverPortÚ
connectTCPÚgetHostÚportÚ
clientConnr8   s   &r1   r˜   ÚPBProtocolTests.setUp
  sä   € Ü×/Ò/°Ó<ˆŒ
Ü×GÒGÓIˆŒÜ—m’m D§J¡J°·±°Ó?ˆŒÜ×/Ò/°·±Ó<ˆÔØ&*×&;Ñ&;ˆ×ÑÔ#Ø.2ˆ×ÑÔ+Ü×/Ò/Ó1ˆÔØ.2ˆ×ÑÔ+Ü!×+Ò+¨A¨t×/AÑ/AÓBˆŒÜ!×,Ò,Ø˜Ÿ™×0Ñ0Ó2×7Ñ7¸×9KÑ9Kó
ˆŽr4   c                óP   € \         P                  ! ^ 4      V n        V P                  # )é    )r   ÚBrokerÚ_serverProtocol)r)   r¦   rj  s   &*,r1   r€  Ú PBProtocolTests._protocolFactory  s   € Ü!Ÿyšy¨›|ˆÔØ×#Ñ#Ð#r4   c                óæ   a€ \        4       oV P                  P                  V3R  l4       \        \	        V P
                  P                  4      \	        V P                  P                  4      S.4      # )c                  ó&   <€ S P                  R 4      # rx   )Úcallback)Úd3s   €r1   rÍ   Ú*PBProtocolTests.tearDown.<locals>.<lambda>  s   ø€ ¸¿¹ÀDÔ8Ir4   )	r   rŽ  ÚnotifyOnDisconnectr	   r
   r…  ÚstopListeningr‰  Ú
disconnect)r)   r“  s   &@r1   ÚtearDownÚPBProtocolTests.tearDown  sX   ø€ Ü‹ZˆØ×Ñ×/Ñ/Ô0IÔJÜä˜dŸo™o×;Ñ;Ó<Ü˜dŸo™o×8Ñ8Ó9Øðó
ð 	
r4   c                ó$  a aa€ Tp\        V\        4      '       d   VP                  R 4      p\        P                  ! WB4      oS P
                  P                  WB4       S P                  P                  V4      pVP                  VVV 3R l4       V# )Úasciic                 ó<   <€ SP                   P                  SS4      # rx   )rƒ  Úlogin)ÚignÚcredsr}   r)   s   &€€€r1   rÍ   Ú1PBProtocolTests._loggedInAvatar.<locals>.<lambda>.  s   ø€  $×"4Ñ"4×":Ñ":¸5À$Ô"Gr4   )
r’   ÚstrÚencoder   ÚUsernamePasswordrŽ   rL   r+   rB   ÚaddCallback)r)   r$   rª   r}   Ú	nameBytesÚdrŸ  s   f&&f  @r1   Ú_loggedInAvatarÚPBProtocolTests._loggedInAvatar'  sk   ú€ Øˆ	Ü�dœC× Ò ØŸ™ GÓ,ˆIÜ×,Ò,¨YÓAˆØ�‰×Ñ˜YÔ1Ø�J‰J×!Ñ! $Ó'ˆØ	�‰ÖGÔHØˆr4   c              #  ól  "  € \        4       pV P                  R RV4      x €p\        4       pV P                  RRV4      x €p\        4       pV P                  RRV4      x €pV P                  P                  R4      x € V P                  P                  R4      x € VP	                  R4      x €pVP	                  R4      x €pVP	                  R4      x € VP	                  R4      x € VP	                  R4      x € VP                  RR	/4      x € VP                  4       x € VP                  4       x € R
# 5i)Úones   p1Útwos   p2s   threes   p3Úfoobars   barfoos   texts   hello, monkeysN)rd  r§  r+   rR   ÚjoinÚsendÚleave)	r)   Úmindonerª  Úmindtwor«  Ú	mindThreeÚthreera   rb   s	   &        r1   Ú
testGroupsÚPBProtocolTests.testGroups1  s  é € ä“*ˆØ×(Ñ(¨°°wÓ?Ñ?ˆä“*ˆØ×(Ñ(¨°°wÓ?Ñ?ˆä“Jˆ	Ø×*Ñ*¨8°U¸IÓFÑFˆà�j‰j×$Ñ$ XÓ.Ò.Ø�j‰j×$Ñ$ YÓ/Ò/àŸ™ (Ó+Ñ+ˆØŸ™ )Ó,Ñ,ˆà�h‰h�xÓ Ò Ø�h‰h�yÓ!Ò!Ø�j‰j˜Ó"Ò"à�m‰m˜WÐ&7Ð8Ó9Ò9à�n‰nÓÒØ�n‰nÓÔùs   ‚D2D4)rŽ  rŽ   r‰  rƒ  r   r+   r  r…  N)rk   rl   rm   rn   r˜   r€  r˜  r§  r   ÚinlineCallbacksr´  ro   rp   rq   s   @r1   r|  r|  	  s3   ø‡ € ò
ò$ò	
òð ×Ññó ör4   r|  )#Ú__doc__rY  Útwisted.credr   r   r   Útwisted.internetr   r   r   Útwisted.internet.deferr   r	   r
   r   Útwisted.spreadr   Útwisted.testr   Útwisted.trialr   Útwisted.wordsr   r   Útwisted.words.protocolsr   ÚTestCaser   rt   r‰   ÚPBMindrd  ÚsetUnjellyableForClassÚPBMindReferencer|  rj   r4   r1   Ú<module>rÄ     s    ðñó ç 6Ñ 6ß 4Ñ 4ß QÓ QÝ Ý &Ý "ß )Ý 'ôo6�×"Ñ"ô o6÷d*ñ *ô&V	:�x×(Ñ(ô V	:ôr(ˆw�~‰~ô (ð( × Ò ˜( G×$;Ñ$;Ô <ô@�h×'Ñ'ö @r4   