+
    üÐj\¿  ã                   óÔ  € R t ^ RIt^ RIt^ RIt^ RIHtHt ^ RIHt ^ RI	H
t
 ^ RIHtHtHt ^ RIHt ^ RIHtHtHt ^ RIHtHtHtHtHt ^ R	IHt ^ R
IHtHtH t H!t!H"t"H#t# ^ RI$H%t% ^ RI&H't'H(t( ^ RI)H*t* ^ RI+H,t, ^ RI-H.t. R t/ ! R R]P`                  4      t1]PD                  ! RR^dRRR^^R7      t2]PD                  ! RR^xRRR^^R7      t3]PD                  ! RR^‚R^R ^dR!7      t4]1! R]23R]2]PB                  ! R"4      ]Pj                  ! R#4      ]Pl                  ! R$4      ]Pl                  ! R%R&4      ]Pn                  ! ^
R'4      ]Pp                  ! R(R)R*7      ]Pr                  ! R+4      ]Pt                  ! R,4      ]Pv                  ! R-4      ]Px                  ! R.R/4      ]Pz                  ! ^ R0R14      ]Pz                  ! ^R2R34      ]Pz                  ! ^R4R54      ]Px                  ! R64      ]P|                  ! R74      ]P~                  ! R8R9R:7      ]P€                  ! ^R;R<7      ]P‚                  ! R=R>R?7      ]P„                  ! R@]P†                  RA4      ]Pˆ                  ! ^d^
RBRCRD4      ]PŠ                  ! RE4      .RF]PŒ                  ! RGRHRIRJ4      .RK]PB                  ! RL4      ]PB                  ! RM4      .RN]PB                  ! RO4      ]PB                  ! RP4      .RQ]Pr                  ! R4      .RR]PB                  ! RS4      ./RT7      tG]1! R]33RU]P�                  ! RV4      ]3./RT7      tI]1! RW]43RW]4]PB                  ! RSRXRY7      ]Pj                  ! RZR[RY7      ]Pj                  ! R\R]RY7      ]PŒ                  ! RGRHRIRJR^RY7      ./RT7      tJ ! R_ R`].P–                  4      tL ! Ra Rb].P–                  4      tM ! Rc Rd].P–                  4      tN ! Re Rf].P–                  4      tO ! Rg Rh].P–                  4      tP ! Ri Rj].P–                  4      tQ ! Rk Rl].P–                  4      tR ! Rm Rn].P–                  4      tS ! Ro Rp].P–                  4      tTRqtU ! Rr Rs].P–                  4      tVRttW ! Ru Rv].P–                  4      tXR# )wz
Test cases for twisted.names.
N)ÚpartialÚreduce)ÚBytesIO)Úpack)ÚdeferÚerrorÚreactor)Úsucceed)ÚMemoryReactorClockÚStringTransportÚwaitUntilAllDisconnected)Ú	authorityÚclientÚcommonÚdnsÚserver)ÚResolver)ÚSOAÚMessageÚQueryÚRecord_AÚ
Record_SOAÚRRHeader)ÚDomainError)ÚSecondaryAuthorityÚSecondaryAuthorityService)ÚnativeString)ÚFilePath)Úunittestc                 óP   € V ^ ,           Uu. uF  qP                   NK  	  up# u upi ©é    ©Úpayload)ÚresultsÚrs   & Ú?/usr/lib/python3/dist-packages/twisted/names/test/test_names.pyÚjustPayloadr'   !   s    € Ø& qžzÓ*™z˜!�IŒI™zÑ*Ð*ùÒ*s   Œ#c                   ó&   a € ] tR t^%t o R tRtV tR# )ÚNoFileAuthorityc                ó`   € \         P                  P                  V 4       WuV n        V n        R # ©N)r   ÚResolverBaseÚ__init__ÚsoaÚrecords)Úselfr.   r/   s   &&&r&   r-   ÚNoFileAuthority.__init__&   s$   € ä×Ñ×$Ñ$ TÔ*Ø!$ÐˆŒ�$–,ó    )r/   r.   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r-   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r&   r)   r)   %   s   ø‡ € ÷.ð .r2   r)   ó   test-domain.comzroot.test-domain.coméÒ  iæ  éH?&©ÚmnameÚrnameÚserialÚrefreshÚminimumÚexpireÚretryÚttls   93.84.28.in-addr.arpai1Ô  i~  éÎª úmy-domain.coms   postmaster.test-domain.comi90  i?B )r?   r@   rA   rB   rC   rD   rE   s	   127.0.0.1s   39.28.189.39ó#   v=spf1 mx/30 mx:example.org/30 -alló   v=spf1 +mx a: coloó   .example.com/28 -all not validúhost.test-domain.comó   Linuxó   A Fast One, Dontcha know)ÚosÚcpus   canonical.name.coms   mailbox.test-domain.coms   mail.group.someplaceó   A First piece of Textó   a SecoNd pieces
   ABCD::4321r2   s	   0:0069::0s   some.network.tlds$   0:5634:1294:AFCB:56AC:48EF:34C3:01FFs   tra.la.la.netó+   Some more text, haha!  Yes.     Still here?s   mail.redirect.or.whatevers
   r mail boxs
   e mail box)ÚrmailbxÚemailbxs   afsdb.test-domain.com)ÚsubtypeÚhostnames   whatever.i.dunnos   some.more.text)ÚmboxÚtxts   12.54.78.12ó   þÁ ó   uó   sip+E2Uó!   !^.*$!sip:information@domain.tld!s'   AF43:5634:1294:AFCB:56AC:48EF:34C3:01FFs   http.tcp.test-domain.comé  éÿ?  éªª  s   some.other.place.fooló   host.test-domain.comó   123.242.1.5ó   0.255.0.255s   host-two.test-domain.coms   255.255.255.254s   0.0.0.0s   cname.test-domain.coms   anothertest-domain.coms   1.2.3.4©r.   r/   s   123.93.84.28.in-addr.arpas   test.host-reverse.lookup.coms   my-domain.comÚ1S©rF   s
   ns1.domains   2Ms
   ns2.domainÚ3HÚ4Dc                   óÒ   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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!Rt"V t#R # )!ÚServerDNSTestsz'
Test cases for DNS server and client.
c                óH  € \         P                  ! \        \        \        .^R7      V n        \        P                  ! V P
                  4      p \        P                  ! ^ V P
                  RR7      pV P                  VP                  4       VP                  4       P                  p \        P                  ! W1RR7      pV P                  VP                  4        Y n        Y@n        \&        P(                  ! RT3.R7      T n        R#   \        P                    d     KÓ  i ; i)é   )Úverboseú	127.0.0.1)Ú	interface©ÚserversN)r   ÚDNSServerFactoryÚtest_domain_comÚreverse_domainÚmy_domain_comÚfactoryr   ÚDNSDatagramProtocolr   Ú	listenTCPÚ
addCleanupÚstopListeningÚgetHostÚportÚ	listenUDPr   ÚCannotListenErrorÚlistenerTCPÚlistenerUDPr   r   Úresolver)r0   Úpr   r|   r€   s   &    r&   ÚsetUpÚServerDNSTests.setUp�   så   € Ü×.Ò.Üœn¬mÐ<Àaô
ˆŒô ×#Ò# D§L¡LÓ1ˆàÜ!×+Ò+¨A¨t¯|©|À{ÔSˆKð �O‰O˜K×5Ñ5Ô6Ø×&Ñ&Ó(×-Ñ-ˆDðÜ%×/Ò/°À;ÔO�ð —‘ × 9Ñ 9Ô:Øà&ÔØ&ÔÜŸš°+¸tÐ1DÐ0EÔFˆŽøô ×*Ñ*ô Úðús   Â'D ÄD!Ä D!c                óÔ   € V P                   P                  R,           F  pVP                  P                  4        K  	  \	        \
        V P                   P                  R,          4      # )z]
Clean up any server connections associated with the
L{DNSServerFactory} created in L{setUp}
ºNNN)rv   ÚconnectionsÚ	transportÚloseConnectionr   r   )r0   Úconns   & r&   ÚtearDownÚServerDNSTests.tearDown»   sN   € ð —L‘L×,Ñ,¨Q×/Ð/ˆDØ�N‰N×)Ñ)Ö+ñ 0ô (¬°·±×1IÑ1IÈ!Õ1LÓMÐMr2   c                ó:   a a€ VV 3R lpVP                  V4       V# )aô  
Assert that the DNS response C{querying} will eventually fire with
contains exactly a certain collection of records.

@param querying: A L{Deferred} returned from one of the DNS client
    I{lookup} methods.

@param expectedRecords: A L{list} of L{IRecord} providers which must be
    in the response or the test will be failed.

@return: A L{Deferred} that fires when the assertion has been made.  It
    fires with a success result if the assertion succeeds and with a
    L{Failure} if it fails.
c                 óf   <€ \        V 4      pSP                  \        S4      \        V4      4       R # r+   )r'   ÚassertEqualÚset)ÚresponseÚreceivedRecordsÚexpectedRecordsr0   s   & €€r&   ÚcheckResultsÚ.ServerDNSTests.namesTest.<locals>.checkResultsØ   s'   ø€ Ü)¨(Ó3ˆOØ×ÑœS Ó1´3°Ó3GÖHr2   )ÚaddCallback)r0   Úqueryingr“   r”   s   f&f r&   Ú	namesTestÚServerDNSTests.namesTestÈ   s   ù€ ö 	Ið 	×Ñ˜\Ô*Øˆr2   c                ó†   € V P                  V P                  P                  R4      \        P                  ! RRR7      .4      # )z"Test simple DNS 'A' record queriesútest-domain.comrn   r=   rf   ©r˜   r�   ÚlookupAddressr   r   ©r0   s   &r&   Útest_addressRecord1Ú"ServerDNSTests.test_addressRecord1ß   s7   € à�~‰~Ø�M‰M×'Ñ'Ð(9Ó:Ü�\Š\˜+¨8Ô4Ð5ó
ð 	
r2   c           	     ó´   € V P                  V P                  P                  R4      \        P                  ! RRR7      \        P                  ! RRR7      .4      # )z1Test DNS 'A' record queries with multiple answersrL   z123.242.1.5r=   rf   z0.255.0.255rœ   rž   s   &r&   Útest_addressRecord2Ú"ServerDNSTests.test_addressRecord2æ   sG   € à�~‰~Ø�M‰M×'Ñ'Ð(>Ó?ä—’˜]°Ô9Ü—’˜]°Ô9ðó
ð 	
r2   c           	     ó´   € V P                  V P                  P                  R4      \        P                  ! RRR7      \        P                  ! RRR7      .4      # )z+Test DNS 'A' record queries with edge caseszhost-two.test-domain.comz255.255.255.254r=   rf   ú0.0.0.0rœ   rž   s   &r&   Útest_addressRecord3Ú"ServerDNSTests.test_addressRecord3ð   sH   € à�~‰~Ø�M‰M×'Ñ'Ð(BÓCä—’Ð.°HÔ=Ü—’˜Y¨HÔ5ðó
ð 	
r2   c                ób   € V P                  V P                  P                  R4      \        .4      # )zTest DNS 'SOA' record queriesr›   )r˜   r�   ÚlookupAuthorityÚ
soa_recordrž   s   &r&   Útest_authorityÚServerDNSTests.test_authorityú   s*   € à�~‰~Ø�M‰M×)Ñ)Ð*;Ó<¼z¸ló
ð 	
r2   c           
     óä   € V P                  V P                  P                  R4      \        P                  ! ^
RRR7      \        P
                  ! RRR7      \        P
                  ! RRR7      .4      # )zs
The DNS client can issue an MX query and receive a response including
an MX record as well as any A record hints.
r;   ra   r=   rf   rb   rc   )r˜   r�   ÚlookupMailExchanger   Ú	Record_MXr   rž   s   &r&   Útest_mailExchangeRecordÚ&ServerDNSTests.test_mailExchangeRecord   sZ   € ð
 �~‰~Ø�M‰M×,Ñ,Ð-?Ó@ä—’˜bÐ"9¸xÔHÜ—’˜^°Ô:Ü—’˜^°Ô:ðó
ð 	
r2   c                ó†   € V P                  V P                  P                  R4      \        P                  ! RRR7      .4      # )zTest DNS 'NS' record queriesr›   z39.28.189.39r=   rf   )r˜   r�   ÚlookupNameserversr   Ú	Record_NSrž   s   &r&   Útest_nameserverÚServerDNSTests.test_nameserver  s7   € à�~‰~Ø�M‰M×+Ñ+Ð,=Ó>Ü�]Š]˜>¨xÔ8Ð9ó
ð 	
r2   c           	     óˆ   € V P                  V P                  P                  R4      \        P                  ! RRRR7      .4      # )zTest DNS 'HINFO' record queriesr›   rM   rN   r=   )rO   rP   rF   )r˜   r�   ÚlookupHostInfor   ÚRecord_HINFOrž   s   &r&   Ú
test_HINFOÚServerDNSTests.test_HINFO  sA   € à�~‰~Ø�M‰M×(Ñ(Ð):Ó;ä× Ò ØÐ%@Àhôðó
ð 	
r2   c                ó†   € V P                  V P                  P                  R4      \        P                  ! RRR7      .4      # )zTest DNS 'PTR' record queriesz123.93.84.28.in-addr.arpaztest.host-reverse.lookup.comrG   rf   )r˜   r�   ÚlookupPointerr   Ú
Record_PTRrž   s   &r&   Útest_PTRÚServerDNSTests.test_PTR   s8   € à�~‰~Ø�M‰M×'Ñ'Ð(CÓDÜ�^Š^Ð:ÀÔIÐJó
ð 	
r2   c                ó†   € V P                  V P                  P                  R4      \        P                  ! RRR7      .4      # )zTest DNS 'CNAME' record queriesr›   zcanonical.name.comr=   rf   )r˜   r�   ÚlookupCanonicalNamer   ÚRecord_CNAMErž   s   &r&   Ú
test_CNAMEÚServerDNSTests.test_CNAME'  s:   € à�~‰~Ø�M‰M×-Ñ-Ð.?Ó@Ü×ÒÐ2¸ÔAÐBó
ð 	
r2   c                ó†   € V P                  V P                  P                  R4      \        P                  ! RRR7      .4      # )zTest DNS 'MB' record queriesr›   zmailbox.test-domain.comr=   rf   )r˜   r�   ÚlookupMailBoxr   Ú	Record_MBrž   s   &r&   Útest_MBÚServerDNSTests.test_MB.  s8   € à�~‰~Ø�M‰M×'Ñ'Ð(9Ó:Ü�]Š]Ð4¸(ÔCÐDó
ð 	
r2   c                ó†   € V P                  V P                  P                  R4      \        P                  ! RRR7      .4      # )zTest DNS 'MG' record queriesr›   zmail.group.someplacer=   rf   )r˜   r�   ÚlookupMailGroupr   Ú	Record_MGrž   s   &r&   Útest_MGÚServerDNSTests.test_MG5  s8   € à�~‰~Ø�M‰M×)Ñ)Ð*;Ó<Ü�]Š]Ð1°xÔ@ÐAó
ð 	
r2   c                ó†   € V P                  V P                  P                  R4      \        P                  ! RRR7      .4      # )zTest DNS 'MR' record queriesr›   zmail.redirect.or.whateverr=   rf   )r˜   r�   ÚlookupMailRenamer   Ú	Record_MRrž   s   &r&   Útest_MRÚServerDNSTests.test_MR<  s8   € à�~‰~Ø�M‰M×*Ñ*Ð+<Ó=Ü�]Š]Ð6¸HÔEÐFó
ð 	
r2   c           	     óˆ   € V P                  V P                  P                  R4      \        P                  ! RRRR7      .4      # )zTest DNS 'MINFO' record queriesr›   z
r mail boxz
e mail boxr=   )rT   rU   rF   )r˜   r�   ÚlookupMailboxInfor   ÚRecord_MINFOrž   s   &r&   Ú
test_MINFOÚServerDNSTests.test_MINFOC  s@   € à�~‰~Ø�M‰M×+Ñ+Ð,=Ó>ä× Ò Ø(°,ÀHôðó
ð 	
r2   c                óŒ   € V P                  V P                  P                  R4      \        P                  ! RRRRRR7      .4      # )zTest DNS 'SRV' record querieszhttp.tcp.test-domain.comr^   r_   r`   úsome.other.place.foolr=   rf   )r˜   r�   ÚlookupServicer   Ú
Record_SRVrž   s   &r&   Útest_SRVÚServerDNSTests.test_SRVN  s>   € à�~‰~Ø�M‰M×'Ñ'Ð(BÓCÜ�^Š^˜C ¨Ð/FÈHÔUÐVó
ð 	
r2   c           	     óˆ   € V P                  V P                  P                  R4      \        P                  ! ^RRR7      .4      # )zTest DNS 'AFSDB' record queriesr›   zafsdb.test-domain.comr=   )rV   rW   rF   )r˜   r�   ÚlookupAFSDatabaser   ÚRecord_AFSDBrž   s   &r&   Ú
test_AFSDBÚServerDNSTests.test_AFSDBU  sA   € à�~‰~Ø�M‰M×+Ñ+Ð,=Ó>ä× Ò ØÐ(?ÀXôðó
ð 	
r2   c           	     óˆ   € V P                  V P                  P                  R4      \        P                  ! RRRR7      .4      # )zTest DNS 'RP' record queriesr›   zwhatever.i.dunnozsome.more.textr=   )rX   rY   rF   )r˜   r�   ÚlookupResponsibilityr   Ú	Record_RPrž   s   &r&   Útest_RPÚServerDNSTests.test_RP`  s?   € à�~‰~Ø�M‰M×.Ñ.Ð/@ÓAä—’Ø+Ð1AÀxôðó
ð 	
r2   c           	     ó¶   € V P                  V P                  P                  R4      \        P                  ! RRRR7      \        P                  ! RRR7      .4      # )zTest DNS 'TXT' record queriesr›   rQ   rR   r=   rf   rS   )r˜   r�   Ú
lookupTextr   Ú
Record_TXTrž   s   &r&   Útest_TXTÚServerDNSTests.test_TXTk  sR   € à�~‰~Ø�M‰M×$Ñ$Ð%6Ó7ä—’Ø,Ð.?ÀXôô —’ØCÈôð	ó

ð 
	
r2   c           
     ó¶   € V P                  V P                  P                  R4      \        P                  ! RRR7      \        P                  ! RRRR7      .4      # )z8
L{DNSServerFactory} can serve I{SPF} resource records.
r›   rI   r=   rf   rJ   rK   )r˜   r�   ÚlookupSenderPolicyr   Ú
Record_SPFrž   s   &r&   Útest_spfÚServerDNSTests.test_spfy  sQ   € ð �~‰~Ø�M‰M×,Ñ,Ð->Ó?ä—’ÐEÈ8ÔTÜ—’Ø*Ø5Ø ôðó

ð 
	
r2   c           
     ó¦   € V P                  V P                  P                  R4      \        P                  ! R\
        P                  RRR7      .4      # )zTest DNS 'WKS' record queriesr›   z12.54.78.12rZ   r=   rf   )r˜   r�   ÚlookupWellKnownServicesr   Ú
Record_WKSÚsocketÚIPPROTO_TCPrž   s   &r&   Útest_WKSÚServerDNSTests.test_WKS‰  sI   € à�~‰~Ø�M‰M×1Ñ1Ð2CÓDä—’Ø!Ü×&Ñ&Ø3Ø ô	ðó

ð 
	
r2   c                óv  € \         P                   ! \        4      p\        P                  Vn        V P	                  V P
                  P                  R 4      V\        P                  ! RRR7      \        P                  ! RRR7      \        P                  ! RRR7      \        P                  ! RR	R
RRR7      .4      # )rH   ú1.2.3.4re   rf   z
ns1.domainÚ2Mz
ns2.domainrg   r^   r_   r`   rÛ   rh   )ÚcopyÚmy_soarD   rF   r˜   r�   ÚlookupAllRecordsr   r   r´   rÝ   )r0   Ú
result_soas   & r&   Útest_someRecordsWithTTLsÚ'ServerDNSTests.test_someRecordsWithTTLs—  s…   € Ü—Y’YœvÓ&ˆ
ÜŸ™ˆ
ŒØ�~‰~Ø�M‰M×*Ñ*¨?Ó;àÜ—’˜Y¨DÔ1Ü—’˜l°Ô5Ü—’˜l°Ô5Ü—’˜s E¨5Ð2IÈtÔTðó	
ð 		
r2   c                ó†   € V P                  V P                  P                  R4      \        P                  ! RRR7      .4      # )z%Test DNS 'AAAA' record queries (IPv6)r›   z'AF43:5634:1294:AFCB:56AC:48EF:34C3:01FFr=   rf   )r˜   r�   ÚlookupIPV6Addressr   ÚRecord_AAAArž   s   &r&   Ú	test_AAAAÚServerDNSTests.test_AAAA¥  s8   € à�~‰~Ø�M‰M×+Ñ+Ð,=Ó>Ü�_Š_ÐFÈHÔUÐVó
ð 	
r2   c                óî   € V P                  V P                  P                  R4      \        P                  ! ^ RRRR7      \        P                  ! ^RRRR7      \        P                  ! ^RR	RR7      .4      # )
z#Test DNS 'A6' record queries (IPv6)r›   z
ABCD::4321Ú r=   rf   z	0:0069::0zsome.network.tldz$0:5634:1294:AFCB:56AC:48EF:34C3:01FFztra.la.la.net)r˜   r�   ÚlookupAddress6r   Ú	Record_A6rž   s   &r&   Útest_A6ÚServerDNSTests.test_A6¬  sh   € à�~‰~Ø�M‰M×(Ñ(Ð):Ó;ä—’˜a ¨r°xÔ@Ü—’˜b +Ð/AÀxÔPÜ—’ØØ:Ø#Ø ô	ð	ó
ð 	
r2   c                ó’  € \         P                  p\        \        P                  \
        P                  P                  4       4       Uu. uF  p\        P                  ! V4      NK  	  ppV F  pVP                  e   K  Wn	        K  	  V P                  V P                  P                  R4      P                  R 4      V4      # u upi )z)
Test DNS 'AXFR' queries (Zone transfer)
r›   c                 ó   € V ^ ,          RR 3# )r!   Néÿÿÿÿ© )r%   s   &r&   Ú<lambda>Ú2ServerDNSTests.test_zoneTransfer.<locals>.<lambda>É  s   € ˜1˜Q�4  ˜9™,r2   )rª   rD   r   ÚoperatorÚaddrs   r/   Úvaluesrþ   rF   r˜   r�   Ú
lookupZoner–   )r0   Údefault_ttlr%   r$   s   &   r&   Útest_zoneTransferÚ ServerDNSTests.test_zoneTransfer¼  s¦   € ô !×'Ñ'ˆä"(¬¯©´×7NÑ7N×7UÑ7UÓ7WÔ"Xó
Ù"X˜QŒD�IŠI�aŽLÑ"Xð 	ð 
ó ˆAØ�u‰uŒ}Ø#–ñ ð �~‰~Ø�M‰M×$Ñ$Ð%6Ó7×CÑCÙ&óð ó	
ð 	
ùò
s   Á	Cc                óz   € \        R.R7      pV P                  VP                  R4      \        P                  4      # )z]
A failed AXFR TCP connection errbacks the L{Deferred} returned
from L{Resolver.lookupZone}.
rp   zimpossible.invalid)znameserver.invalidé5   )r   ÚassertFailurer  r   ÚDNSLookupError)r0   r�   s   & r&   Ú test_zoneTransferConnectionFailsÚ/ServerDNSTests.test_zoneTransferConnectionFailsÎ  s<   € ô
 Ð%?Ð$@ÔAˆØ×!Ñ!Ø×ÑÐ 4Ó5´u×7KÑ7Kó
ð 	
r2   c                ó†   € V P                  V P                  P                  R4      \        P                  ! RRR7      .4      # )z6Tests that unrelated zones don't mess with each other.zanothertest-domain.comrü   r=   rf   rœ   rž   s   &r&   Útest_similarZonesDontInterfereÚ-ServerDNSTests.test_similarZonesDontInterfereØ  s7   € à�~‰~Ø�M‰M×'Ñ'Ð(@ÓAÜ�\Š\˜)¨Ô2Ð3ó
ð 	
r2   c                óŽ   € V P                  V P                  P                  R4      \        P                  ! ^d^
RRRRR7      .4      # )z"
Test DNS 'NAPTR' record queries.
r›   r[   r\   r]   r=   rf   )r˜   r�   ÚlookupNamingAuthorityPointerr   ÚRecord_NAPTRrž   s   &r&   Ú
test_NAPTRÚServerDNSTests.test_NAPTRß  sM   € ð �~‰~Ø�M‰M×6Ñ6Ð7HÓIä× Ò ØØØØØ8Ø ôð	ó
ð 	
r2   )rv   r   r€   r�   N)$r3   r4   r5   r6   Ú__doc__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(  r7   r8   r9   s   @r&   rj   rj   ˜   s¢   ø‡ € ñòGò<Nòò.
ò
ò
ò
ò
ò
ò	
ò
ò
ò
ò
ò
ò	
ò
ò	
ò	
ò
ò
ò 
ò
ò
ò
ò 
ò$
ò
÷
ð 
r2   rj   c                   ó&   a € ] tR tRt o R tRtV tR# )ÚHelperTestsiò  c                óÌ   € V P                  4       p\        P                  ! V4      p\        ^4       F.  p\        P                  ! V4      pV P	                  W$8  4       TpK0  	  R# )é   N)Úmktempr   Ú	getSerialÚrangeÚ
assertTrue)r0   ÚfÚaÚiÚbs   &    r&   Útest_serialGeneratorÚ HelperTests.test_serialGeneratoró  sN   € Ø�K‰K‹MˆÜ×Ò Ó"ˆÜ�r–ˆAÜ×#Ò# AÓ&ˆAØ�O‰O˜A™EÔ"ØŠAó r2   r  N)r3   r4   r5   r6   r7  r7   r8   r9   s   @r&   r,  r,  ò  s   ø‡ € ÷ð r2   r,  c                   ó>   a € ] tR tRt o R tR tR tR tR tRt	V t
R# )	Ú	AXFRTestsiü  c                óš  € R V n         \        P                  ! 4       V n        V P                  P	                  V P
                  4       \        P                  ! RV P                  4      V n        \        P                  ! R\        P                  \        P                  RR\        P                  ! RR^d^ÈRRRRR	7      R
7      V n        V P                  \        P                  ! R\        P                  \        P                  RR\        P                   ! RRR7      R
7      \        P                  ! R\        P"                  \        P                  RR\        P$                  ! ^
RRR7      R
7      \        P                  ! R\        P&                  \        P                  RR\        P(                  ! RRR7      R
7      V P                  .V n        R # )Nú	fooby.comi€Q Fzhooj.fooby.comi,  i�  iô  iX  )r?   r@   rA   rB   rE   rD   rC   rF   ©ÚnameÚtypeÚclsrF   Úauthr#   é¼  úns.twistedmatrix.com©r>  rF   zmail.mv3d.com)Ú
preferenceÚexchangerF   z64.123.27.105)ÚaddressrF   )r$   r   ÚDeferredÚdr–   Ú_gotResultsr   ÚAXFRControllerÚ
controllerr   r   r   ÚINr   r.   ÚNSr´   ÚMXr¯   ÚAr   r/   rž   s   &r&   rƒ   ÚAXFRTests.setUpý  sH  € ØˆŒÜ—’Ó!ˆŒØ�‰×Ñ˜4×+Ñ+Ô,Ü ×/Ò/°¸T¿V¹VÓDˆŒä—<’<ØÜ—‘Ü—‘ØØÜ—N’NØ!Ø&ØØØØØØô	ô
ˆŒð& �H‰HÜ�LŠLØ Ü—V‘VÜ—F‘FØØÜŸšÐ+AÀsÔKôô �LŠLØ Ü—V‘VÜ—F‘FØØÜŸš°¸oÐSVÔWôô �LŠLØ Ü—U‘UÜ—F‘FØØÜŸš¨_À#ÔFôð �H‰Hð5
ˆŽr2   c                ó@   € \         P                  ! R ^^ ^ ^^^ ^ ^ R7	      # )éç  ©	ÚidÚanswerÚopCodeÚrecDesÚrecAvrA  ÚrCodeÚtruncÚmaxSize)r   r   rž   s   &r&   Ú_makeMessageÚAXFRTests._makeMessage2  s.   € ä�{Š{ØØØØØØØØØô

ð 
	
r2   c                ó@  € V P                  4       p\        P                  ! R \        P                  \        P                  4      .Vn        V P                  Vn        V P                  P                  VR4       V P                  V P                  V P                  4       R# )r<  N)r]  r   r   ÚAXFRrM  Úqueriesr/   ÚanswersrL  ÚmessageReceivedr�   r$   )r0   Úms   & r&   Útest_bindAndTNamesStyleÚ!AXFRTests.test_bindAndTNamesStyle@  sf   € à×ÑÓˆÜ—Y’Y˜{¬C¯H©H´c·f±fÓ=Ð>ˆŒ	Ø—L‘LˆŒ	Ø�‰×'Ñ'¨¨4Ô0Ø×Ñ˜Ÿ™ t§|¡|Ö4r2   c                ó   € Wn         R # r+   )r$   )r0   Úresults   &&r&   rJ  ÚAXFRTests._gotResultsH  s   € ØŽr2   c                ó   € V P                   R ,          pV'       dM   V P                  4       p. Vn        VP                  ^ 4      .Vn        V P
                  P                  VR4       KT  V P                  V P                  V P                   4       R# )r†   N)	r/   r]  ra  Úpoprb  rL  rc  r�   r$   )r0   r/   rd  s   &  r&   Útest_DJBStyleÚAXFRTests.test_DJBStyleK  se   € à—,‘,˜q•/ˆßØ×!Ñ!Ó#ˆAØˆAŒIØ Ÿ™ Q›Ð(ˆAŒIØ�O‰O×+Ñ+¨A¨tÖ4Ø×Ñ˜Ÿ™ t§|¡|Ö4r2   )rL  rI  r/   r$   r.   N)r3   r4   r5   r6   rƒ   r]  re  rJ  rl  r7   r8   r9   s   @r&   r:  r:  ü  s$   ø‡ € ò3
òj
ò5ò÷5ð 5r2   r:  c                   ó,   a € ] tR tRt o R tR tRtV tR# )ÚResolvConfHandlingTestsiV  c                óÂ   € V P                  4       p\        P                  ! VR 7      pV P                  VP                  R.4       VP
                  P                  4        R# )©ÚresolvN©rn   r  )r/  r   r   r�   Ú
dynServersÚ
_parseCallÚcancel©r0   Ú
resolvConfr%   s   &  r&   Útest_missingÚ$ResolvConfHandlingTests.test_missingW  sC   € Ø—[‘[“]ˆ
Ü�OŠO :Ô.ˆØ×Ñ˜Ÿ™Ð(9Ð':Ô;Ø	�‰×ÑÖr2   c                óö   € V P                  4       p\        VR 4      P                  4        \        P                  ! VR7      pV P                  VP                  R.4       VP                  P                  4        R# )Úwrq  Nrs  )	r/  ÚopenÚcloser   r   r�   rt  ru  rv  rw  s   &  r&   Ú
test_emptyÚ"ResolvConfHandlingTests.test_empty]  sV   € Ø—[‘[“]ˆ
ÜˆZ˜Ó×#Ñ#Ô%Ü�OŠO :Ô.ˆØ×Ñ˜Ÿ™Ð(9Ð':Ô;Ø	�‰×ÑÖr2   r  N)r3   r4   r5   r6   ry  r  r7   r8   r9   s   @r&   ro  ro  V  s   ø‡ € ò÷ð r2   ro  c                   óN   a € ] tR tRt o RtR tR tR tR tR t	R t
R	 tR
tV tR# )ÚAuthorityTestsie  zg
Tests for the basic response record selection code in L{FileAuthority}
(independent of its fileness).
c                óÆ   € \         pRVP                  ^ ,          ,           pV P                  VP                  V4      4      pV P	                  VP
                  \        4       R# )a  
L{FileAuthority} lookup methods errback with L{DomainError} if
the requested C{name} shares a common suffix with its zone but
is not actually a descendant of its zone, in terms of its
sequence of DNS name labels. eg www.the-example.com has
nothing to do with the zone example.com.
ó   nonexistent.prefix-N)rs   r.   ÚfailureResultOfr�   ÚassertIsInstanceÚvaluer   )r0   Ú
testDomainÚtestDomainNamer3  s   &   r&   Ú'test_domainErrorForNameWithCommonSuffixÚ6AuthorityTests.test_domainErrorForNameWithCommonSuffixk  sK   € ô %ˆ
Ø/°*·.±.ÀÕ2CÕCˆØ× Ñ  ×!9Ñ!9¸.Ó!IÓJˆØ×Ñ˜aŸg™g¤{Ö3r2   c                óL  € \        \        P                  P                  \        3\        P                  P                  \        \        P
                  ! R4      ./R7      pV P                  VP                  ! \        P                  P                  4      4      w  r!pV P                  V. 4       V P                  V\        P                  ! \        P                  P                  \        P                  \        P                  \        RR7      .4       V P                  V. 4       R# )zù
If a L{FileAuthority} has a zone which includes an I{NS} record for a
particular name and that authority is asked for another record for the
same name which does not exist, the I{NS} record is not included in the
authority section of the response.
rü   rd   T©rF   r#   rA  N)r)   rª   r?   r>  r   r´   ÚsuccessResultOfr�   r�   r   ÚTYPErD   )r0   r   rV  Ú
additionals   &   r&   Útest_recordMissingÚ!AuthorityTests.test_recordMissingx  sæ   € ô $Ü×!Ñ!×&Ñ&¬
Ð3ä× Ñ ×%Ñ%ÜÜ—M’M )Ó,ð(ðô
ˆ	ð )-×(<Ñ(<Ø×#Ò#¤J×$4Ñ$4×$9Ñ$9Ó:ó)
Ñ%ˆ˜:ð 	×Ñ˜ Ô$Ø×ÑØä—’Ü×$Ñ$×)Ñ)Ü—O‘OÜ"×)Ñ)Ü&Øôðô	
ð 	×Ñ˜ RÖ(r2   c           	     ó  € \         pRVP                  ^ ,          ,           p\        \        P                  4      ^,           pV P                  VP                  \        W#R7      4      4      pV P                  VP                  \        4       R# )zp
Requesting a record of unknown type where no records exist for the name
in question results in L{DomainError}.
r„  ©r>  r?  N)rs   r.   Úmaxr   ÚtypeToMethodr…  Úqueryr   r†  r‡  r   )r0   rˆ  r‰  ÚunknownTyper3  s   &    r&   Útest_unknownTypeNXDOMAINÚ'AuthorityTests.test_unknownTypeNXDOMAINš  sj   € ô
 %ˆ
Ø/°*·.±.ÀÕ2CÕCˆÜœ&×-Ñ-Ó.°Õ2ˆØ× Ñ Ø×ÑœU¨ÔIÓJó
ˆð 	×Ñ˜aŸg™g¤{Ö3r2   c           	     óÎ   € \        \        P                  4      ^,           pV P                  \        P                  \        RVR7      4      4      w  r#pV P                  V. 4       R# )zx
Requesting a record of unknown type where other records exist for the
name in question results in an empty answer set.
rH   r”  N)r•  r   r–  rŽ  ru   r—  r   r�   )r0   r˜  rV  r   r�  s   &    r&   Útest_unknownTypeMissingÚ&AuthorityTests.test_unknownTypeMissing§  sU   € ô
 œ&×-Ñ-Ó.°Õ2ˆØ(,×(<Ñ(<Ü×Ñ¤¨?ÀÔ MÓNó)
Ñ%ˆ˜:ð 	×Ñ˜ Ö$r2   c                óò  € R\         P                  P                  ,           p\        P                  ! R4      p\        \         P                  P                  \         3VV./R7      p\        WA4      ! V4      pV P                  V4      w  rdpV P                  V. 4       V P                  V\        P                  ! V\        P                  \         P                  VRR7      .4       V P                  V. 4       R# )zÏ
Create an authority and make a request against it.  Then verify that the
result is a referral, including no records in the answers or additional
sections, but with an I{NS} record in the authority section.
s   example.rü   rd   Fr�  N)rª   r?   r>  r   r´   r)   ÚgetattrrŽ  r�   r   rN  rD   )r0   ÚmethodÚ	subdomainÚ
nameserverr   rI  rV  r�  s   &&      r&   Ú_referralTestÚAuthorityTests._referralTest²  sÙ   € ð  ¤*×"2Ñ"2×"7Ñ"7Õ7ˆ	Ü—]’] 9Ó-ˆ
Ü#Ü×!Ñ!×&Ñ&¬
Ð3àØððô
ˆ	ô �IÔ& yÓ1ˆØ(,×(<Ñ(<¸QÓ(?Ñ%ˆ˜:Ø×Ñ˜ Ô$Ø×ÑØä—’ØÜ—F‘FÜ"×)Ñ)Ø&Øôðô	
ð 	×Ñ˜ RÖ(r2   c                ó(   € V P                  R4       R# )zã
When an I{NS} record is found for a child zone, it is included in the
authority section of the response. It is marked as non-authoritative if
the authority is not also authoritative for the child zone (RFC 2181,
section 6.1).
r�   N©r£  rž   s   &r&   Útest_referralÚAuthorityTests.test_referralÓ  s   € ð 	×Ñ˜?Ö+r2   c                ó(   € V P                  R4       R# )zD
A referral is also generated for a request of type C{ALL_RECORDS}.
r   Nr¦  rž   s   &r&   Útest_allRecordsReferralÚ&AuthorityTests.test_allRecordsReferralÜ  s   € ð 	×ÑÐ-Ö.r2   r  N)r3   r4   r5   r6   r*  rŠ  r‘  r™  rœ  r£  r§  rª  r7   r8   r9   s   @r&   r‚  r‚  e  s4   ø‡ € ñò
4ò )òD4ò	%ò)òB,÷/ð /r2   r‚  c                   óÆ   a € ] tR tRt o Rt]P                  ! R4      t]P                  ! R4      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# )ÚAdditionalProcessingTestsiã  zn
Tests for L{FileAuthority}'s additional processing for those record types
which require it (MX, CNAME, etc).
s   10.0.0.1s   f080::1c                óÖ   € \        VP                  P                  V3VP                  P                  V! V4      .WE/R7      p\        Wa4      ! \        P                  P                  4      # )a\  
Perform a DNS lookup against a L{FileAuthority} configured with records
as defined by C{makeRecord} and C{addresses}.

@param method: The name of the lookup method to use; for example,
    C{"lookupNameservers"}.
@type method: L{str}

@param soa: A L{Record_SOA} for the zone for which the L{FileAuthority}
    is authoritative.

@param makeRecord: A one-argument callable which accepts a name and
    returns an L{IRecord} provider.  L{FileAuthority} is constructed
    with this record.  The L{FileAuthority} is queried for a record of
    the resulting type with the given name.

@param target: The extra name which the record returned by
    C{makeRecord} will be pointed at; this is the name which might
    require extra processing by the server so that all the available,
    useful information is returned.  For example, this is the target of
    a CNAME record or the mail exchange host pointed to by an MX record.
@type target: L{bytes}

@param addresses: A L{list} of records giving addresses of C{target}.

@return: A L{Deferred} that fires with the result of the resolver
    method give by C{method}.
rd   )r)   r?   r>  rŸ  rª   )r0   r   r.   Ú
makeRecordÚtargetÚ	addressesr   s   &&&&&& r&   Ú_lookupSomeRecordsÚ,AdditionalProcessingTests._lookupSomeRecordsì  sY   € ô: $Ø—‘—‘ Ð%à—	‘	—‘¡¨FÓ!3Ð 4Øðô
ˆ	ô �yÔ)¬*×*:Ñ*:×*?Ñ*?Ó@Ð@r2   c                óX   € R pV P                  \        WR7      \        W#R7      4       R# )a½  
Assert that the L{RRHeader} instances given by C{expected} and
C{computed} carry all the same information but without requiring the
records appear in the same order.

@param expected: A L{list} of L{RRHeader} instances giving the expected
    records.

@param computed: A L{list} of L{RRHeader} instances giving the records
    computed by the scenario under test.

@raise self.failureException: If the two collections of records
    disagree.
c                 ó   € V P                   # r+   )r?  )Úrrs   &r&   r  Ú>AdditionalProcessingTests.assertRecordsMatch.<locals>.<lambda>$  s   € ˜Ÿšr2   )ÚkeyN)r�   Úsorted)r0   ÚexpectedÚcomputedr¸  s   &&& r&   ÚassertRecordsMatchÚ,AdditionalProcessingTests.assertRecordsMatch  s#   € ñ$ !ˆØ×Ñœ Ô2´F¸8Ô4MÖNr2   c                óP  € R\         P                  P                  ,           pV P                  V\         W$V4      pV P	                  V4      w  rgpT P                  V U	u. uF6  p	\        P                  ! VV	P                  \         P                  V	RR7      NK8  	  up	V4       R# u up	i )aü  
Verify that certain address records are included in the I{additional}
section of a response generated by L{FileAuthority}.

@param method: See L{_lookupSomeRecords}

@param makeRecord: See L{_lookupSomeRecords}

@param addresses: A L{list} of L{IRecord} providers which the
    I{additional} section of the response is required to match
    (ignoring order).

@raise self.failureException: If the I{additional} section of the
    response consists of different records than those given by
    C{addresses}.
s   mail.Tr�  N)
rª   r?   r>  r²  rŽ  r¼  r   r   r�  rD   )
r0   r   r¯  r±  r°  rI  rV  r   r�  rG  s
   &&&&      r&   Ú_additionalTestÚ)AdditionalProcessingTests._additionalTest'  s    € ð" œJ×,Ñ,×1Ñ1Õ1ˆØ×#Ñ# F¬J¸
ÈIÓVˆØ(,×(<Ñ(<¸QÓ(?Ñ%ˆ˜:à×Ññ  )ó	ñ  )�Gô —’ØØ—L‘LÜ"×)Ñ)Ø#Ø÷ñ  )ñ	ð ö	
ùò	s   Á<B#c                ó\   € V P                  R\        \        P                  ^
4      V4       R# )zƒ
Verify that a response to an MX query has certain records in the
I{additional} section.

@param addresses: See C{_additionalTest}
r®   N)r¿  r   r   r¯   ©r0   r±  s   &&r&   Ú_additionalMXTestÚ+AdditionalProcessingTests._additionalMXTestJ  s$   € ð 	×ÑØ ¤'¬#¯-©-¸Ó"<¸iö	
r2   c                ó>   € V P                  V P                  .4       R# )zl
If the name of the MX response has A records, they are included in the
additional section of the response.
N)rÃ  Ú_Arž   s   &r&   Útest_mailExchangeAdditionalAÚ6AdditionalProcessingTests.test_mailExchangeAdditionalAU  ó   € ð
 	×Ñ §¡˜yÖ)r2   c                ó>   € V P                  V P                  .4       R# )zo
If the name of the MX response has AAAA records, they are included in
the additional section of the response.
N)rÃ  Ú_AAAArž   s   &r&   Útest_mailExchangeAdditionalAAAAÚ9AdditionalProcessingTests.test_mailExchangeAdditionalAAAA\  ó   € ð
 	×Ñ §
¡
˜|Ö,r2   c                óT   € V P                  V P                  V P                  .4       R# )z~
If the name of the MX response has both A and AAAA records, they are
all included in the additional section of the response.
N)rÃ  rÆ  rË  rž   s   &r&   Útest_mailExchangeAdditionalBothÚ9AdditionalProcessingTests.test_mailExchangeAdditionalBothc  ó   € ð
 	×Ñ §¡¨¯©Ð4Ö5r2   c                óH   € V P                  R\        P                  V4       R# )zƒ
Verify that a response to an NS query has certain records in the
I{additional} section.

@param addresses: See C{_additionalTest}
r³   N)r¿  r   r´   rÂ  s   &&r&   Ú_additionalNSTestÚ+AdditionalProcessingTests._additionalNSTestj  s   € ð 	×ÑÐ0´#·-±-ÀÖKr2   c                ó>   € V P                  V P                  .4       R# )zl
If the name of the NS response has A records, they are included in the
additional section of the response.
N)rÔ  rÆ  rž   s   &r&   Útest_nameserverAdditionalAÚ4AdditionalProcessingTests.test_nameserverAdditionalAs  rÉ  r2   c                ó>   € V P                  V P                  .4       R# )zo
If the name of the NS response has AAAA records, they are included in
the additional section of the response.
N)rÔ  rË  rž   s   &r&   Útest_nameserverAdditionalAAAAÚ7AdditionalProcessingTests.test_nameserverAdditionalAAAAz  rÎ  r2   c                óT   € V P                  V P                  V P                  .4       R# )z~
If the name of the NS response has both A and AAAA records, they are
all included in the additional section of the response.
N)rÔ  rÆ  rË  rž   s   &r&   Útest_nameserverAdditionalBothÚ7AdditionalProcessingTests.test_nameserverAdditionalBoth�  rÒ  r2   c                óB  € R\         P                  P                  ,           pV P                  R\         \        P
                  W!4      pV P                  V4      w  rEp\        P                  ! \         P                  P                  \        P                  \         P                  \        P
                  ! V4      RR7      pT P                  V Uu. uF6  p\        P                  ! VVP                  \         P                  VRR7      NK8  	  upV.,           V4       R# u upi )z�
Verify that a response to a CNAME query has certain records in the
I{answer} section.

@param addresses: See C{_additionalTest}
s   www.rÂ   Tr�  N)rª   r?   r>  r²  r   rÃ   rŽ  r   ÚCNAMErD   r¼  r�  )	r0   r±  r°  rI  rV  r   r�  ÚaliasrG  s	   &&       r&   Ú_answerCNAMETestÚ*AdditionalProcessingTests._answerCNAMETestˆ  s÷   € ð œ:×+Ñ+×0Ñ0Õ0ˆØ×#Ñ#Ø!¤:¬s×/?Ñ/?Àó
ˆð )-×(<Ñ(<¸QÓ(?Ñ%ˆ˜:ä—’Ü×Ñ×!Ñ!Ü�I‰IÜ×!Ñ!Ü×$Ò$ VÓ,Øô
ˆð 	×Ññ  )ó	ñ  )�Gô —’ØØ—L‘LÜ"×)Ñ)Ø#Ø÷ñ  )ñ	ð ˆgõ
ð ö	
ùò	s   Ã<Dc                ó>   € V P                  V P                  .4       R# )zk
If the name of the CNAME response has A records, they are included in
the answer section of the response.
N)râ  rÆ  rž   s   &r&   Útest_canonicalNameAnswerAÚ3AdditionalProcessingTests.test_canonicalNameAnswerA«  s   € ð
 	×Ñ˜tŸw™w˜iÖ(r2   c                ó>   € V P                  V P                  .4       R# )zn
If the name of the CNAME response has AAAA records, they are included
in the answer section of the response.
N)râ  rË  rž   s   &r&   Útest_canonicalNameAnswerAAAAÚ6AdditionalProcessingTests.test_canonicalNameAnswerAAAA²  s   € ð
 	×Ñ˜tŸz™z˜lÖ+r2   c                óT   € V P                  V P                  V P                  .4       R# )z}
If the name of the CNAME response has both A and AAAA records, they are
all included in the answer section of the response.
N)râ  rÆ  rË  rž   s   &r&   Útest_canonicalNameAnswerBothÚ6AdditionalProcessingTests.test_canonicalNameAnswerBoth¹  s   € ð
 	×Ñ˜tŸw™w¨¯
©
Ð3Ö4r2   r  N)r3   r4   r5   r6   r*  r   r   rÆ  r  rË  r²  r¼  r¿  rÃ  rÇ  rÌ  rÐ  rÔ  r×  rÚ  rÝ  râ  rå  rè  rë  r7   r8   r9   s   @r&   r­  r­  ã  s~   ø‡ € ñð
 
�Š�kÓ	"€BØ�OŠO˜JÓ'€Eò$AòLOò*!
òF	
ò*ò-ò6òLò*ò-ò6ò!
òF)ò,÷5ð 5r2   r­  c                   ó&   a € ] tR tRt o R tRtV tR# )ÚNoInitialResponseTestsiÁ  c                óê  a€ V3R lpR p\        R.R7      pWn        . oV P                  \        P                  RV4       \        P
                  ! R\        P                  \        P                  RR\        P                  ! RRR	7      R
7      .p\        P                  ! R^^ ^ ^^^ ^ ^ R7	      pWEn
        SP                  V4       V P                  VP                  R4      \        P                  4      # )z�
If a request returns a L{dns.NS} response, but we can't connect to the
given server, the request fails with the error returned at connection.
c                 ó8   <€ \        SP                  ^ 4      4      # r    )r	   rk  )r0   ÚargsÚmessagess   &*€r&   r—  Ú3NoInitialResponseTests.test_noAnswer.<locals>.queryÈ  s   ø€ ô ˜8Ÿ<™<¨›?Ó+Ð+r2   c                 óV   € \         P                  ! \        P                  ! R 4      4      # )zCouldn't connect)r   Úfailr÷   Úgaierror)r0   rñ  Úkwargss   &*,r&   ÚqueryProtocolÚ;NoInitialResponseTests.test_noAnswer.<locals>.queryProtocolÍ  s   € Ü—:’:œfŸošoÐ.@ÓAÓBÐBr2   rp   r—  z	fooba.comrB  FrC  rD  r=  rS  rT  r<  )r¥   r!   )r   Ú_queryÚpatchr   rw   r   rN  rM  r´   r   rb  Úappendr  ÚgetHostByNamer÷   rö  )r0   r—  rø  r�   r/   rd  rò  s   &     @r&   Útest_noAnswerÚ$NoInitialResponseTests.test_noAnswerÂ  sÚ   ø€ õ	,ò
	Cô  ^Ð$4Ô5ˆØŒØˆð 	�
‰
”3×*Ñ*¨G°]ÔCô �LŠLØ Ü—V‘VÜ—F‘FØØÜŸšÐ+AÀsÔKôð	
ˆô �KŠKØØØØØØØØØô

ˆð Œ	Ø�‰˜ÔØ×!Ñ! (×"8Ñ"8¸Ó"EÄvÇÁÓWÐWr2   r  N)r3   r4   r5   r6   rþ  r7   r8   r9   s   @r&   rî  rî  Á  s   ø‡ € ÷,Xð ,Xr2   rî  c                   ó6   a € ] tR tRt o RtR tR tR tRtV t	R# )ÚSecondaryAuthorityServiceTestsiñ  z‰
Tests for L{SecondaryAuthorityService}, a service which keeps one or more
authorities up to date by doing zone transfers from a master.
c                ó²  € Rp\        VRR.4      pV P                  VP                  V4       V P                  VP                  ^54       V P                  VP                  ^ ,          P                  V4       V P                  VP                  ^ ,          P                  ^54       V P                  VP                  ^ ,          P
                  R4       V P                  VP                  ^,          P                  V4       V P                  VP                  ^,          P                  ^54       V P                  VP                  ^,          P
                  R4       R# )zê
L{SecondaryAuthorityService} can be constructed with a C{str} giving a
master server address and several domains, causing the creation of a
secondary authority for each domain and that master server address and
the default DNS port.
ú192.168.1.2ó   example.comzexample.orgs   example.orgN)r   r�   ÚprimaryÚ_portÚdomainsÚdomain©r0   r  Úservices   &  r&   Útest_constructAuthorityFromHostÚ>SecondaryAuthorityServiceTests.test_constructAuthorityFromHost÷  sü   € ð  ˆÜ+¨G°nÀmÐ5TÓUˆØ×Ñ˜Ÿ™¨'Ô2Ø×Ñ˜Ÿ™¨Ô+à×Ñ˜Ÿ™¨Õ+×3Ñ3°WÔ=Ø×Ñ˜Ÿ™¨Õ+×1Ñ1°2Ô6Ø×Ñ˜Ÿ™¨Õ+×2Ñ2°NÔCà×Ñ˜Ÿ™¨Õ+×3Ñ3°WÔ=Ø×Ñ˜Ÿ™¨Õ+×1Ñ1°2Ô6Ø×Ñ˜Ÿ™¨Õ+×2Ñ2°NÖCr2   c                óÎ  € RpRp\         P                  ! W3RR.4      pV P                  VP                  V4       V P                  VP                  R4       V P                  VP
                  ^ ,          P                  V4       V P                  VP
                  ^ ,          P                  V4       V P                  VP
                  ^ ,          P                  R4       V P                  VP
                  ^,          P                  V4       V P                  VP
                  ^,          P                  V4       V P                  VP
                  ^,          P                  R4       R# )a,  
L{SecondaryAuthorityService.fromServerAddressAndDomains} constructs a
new L{SecondaryAuthorityService} from a C{str} giving a master server
address and DNS port and several domains, causing the creation of a secondary
authority for each domain and that master server address and the given
DNS port.
ú192.168.1.3i×  zexample.netó   example.eduó   example.netN)r   ÚfromServerAddressAndDomainsr�   r  r  r  r  )r0   r  r|   r
  s   &   r&   Ú&test_constructAuthorityFromHostAndPortÚESecondaryAuthorityServiceTests.test_constructAuthorityFromHostAndPort  s  € ð  ˆØˆÜ+×GÒGØˆO˜m¨^Ð<ó
ˆð 	×Ñ˜Ÿ™¨'Ô2Ø×Ñ˜Ÿ™¨Ô-à×Ñ˜Ÿ™¨Õ+×3Ñ3°WÔ=Ø×Ñ˜Ÿ™¨Õ+×1Ñ1°4Ô8Ø×Ñ˜Ÿ™¨Õ+×2Ñ2°NÔCà×Ñ˜Ÿ™¨Õ+×3Ñ3°WÔ=Ø×Ñ˜Ÿ™¨Õ+×1Ñ1°4Ô8Ø×Ñ˜Ÿ™¨Õ+×2Ñ2°NÖCr2   c                óâ  € Rp\        VP                  4       RR.4      pV P                  VP                  V4       V P                  VP                  ^ ,          P                  V4       V P                  VP                  ^ ,          P
                  R4       V P                  VP                  ^,          P                  V4       V P                  VP                  ^,          P
                  R4       R# )a!  
L{SecondaryAuthorityService.fromServerAddressAndDomains} constructs a
new L{SecondaryAuthorityService} from a C{bytes} giving a master server
address and several domains, causing the creation of a secondary
authority for each domain and that master server address and the given
DNS port.
r  r  zexample.edur  N)r   Úencoder�   r  r  r  r	  s   &  r&   Ú test_constructAuthorityFromBytesÚ?SecondaryAuthorityServiceTests.test_constructAuthorityFromBytes#  s·   € ð  ˆÜ+Ø�N‰NÓØ˜]Ð+ó
ˆð 	×Ñ˜Ÿ™¨'Ô2à×Ñ˜Ÿ™¨Õ+×3Ñ3°WÔ=Ø×Ñ˜Ÿ™¨Õ+×2Ñ2°NÔCà×Ñ˜Ÿ™¨Õ+×3Ñ3°WÔ=Ø×Ñ˜Ÿ™¨Õ+×2Ñ2°NÖCr2   r  N)
r3   r4   r5   r6   r*  r  r  r  r7   r8   r9   s   @r&   r  r  ñ  s"   ø‡ € ñò
Dò(D÷0Dð Dr2   r  c                   ó<   a € ] tR tRt o RtR tR tR tR tRt	V t
R# )	ÚSecondaryAuthorityTestsi9  z‹
L{twisted.names.secondary.SecondaryAuthority} correctly constructs objects
with a specified IP address and optionally specified DNS port.
c                óÆ   € \        RR4      pV P                  VP                  R4       V P                  VP                  ^54       V P                  VP                  R4       R# )zX
When constructed using L{SecondaryAuthority.__init__}, the default port
of 53 is used.
ú192.168.1.1ú
inside.comó
   inside.comN)r   r�   r  r  r  ©r0   Ú	secondarys   & r&   Útest_defaultPortÚ(SecondaryAuthorityTests.test_defaultPort?  sP   € ô
 ' }°lÓCˆ	Ø×Ñ˜×*Ñ*¨MÔ:Ø×Ñ˜Ÿ™¨"Ô-Ø×Ñ˜×)Ñ)¨=Ö9r2   c                óÜ   € \         P                  ! RR4      pV P                  VP                  R4       V P                  VP                  R4       V P                  VP
                  R4       R# )zf
When constructed using L{SecondaryAuthority.fromServerAddressAndDomain},
the specified port is used.
r  éé  r  r  N)r  r#  )r   ÚfromServerAddressAndDomainr�   r  r  r  r  s   & r&   Útest_explicitPortÚ)SecondaryAuthorityTests.test_explicitPortI  s[   € ô
 '×AÒAØ! <ó
ˆ	ð 	×Ñ˜×*Ñ*¨MÔ:Ø×Ñ˜Ÿ™¨$Ô/Ø×Ñ˜×)Ñ)¨=Ö9r2   c                óf  € \         P                  ! RR4      p\        4       ;Vn        pVP	                  4        VP
                  P                  ^ 4      w  r4rVpV P                  VR4       V P                  VR4       VP                  W434      p\        4       p	VP                  V	4       \        4       p
V
P                  \        V	P                  4       R,          4      4       V P                  \        P                   ! R\        P"                  \        P$                  4      .V
P&                  4       R# )zÆ
An attempt is made to transfer the zone for the domain the
L{SecondaryAuthority} was constructed with from the server address it
was constructed with when L{SecondaryAuthority.transfer} is called.
r  r<   úexample.comºrl   NNN©r  r<   )r   r$  r
   Ú_reactorÚtransferÚ
tcpClientsrk  r�   ÚbuildProtocolr   ÚmakeConnectionr   Údecoder   r‡  r   r   r`  rM  ra  )r0   r  r   Úhostr|   rv   ÚtimeoutÚbindAddressÚprotorˆ   Úmsgs   &          r&   Útest_transferÚ%SecondaryAuthorityTests.test_transferU  sò   € ô '×AÒAØ! =ó
ˆ	ô (:Ó';Ð;ˆ	Ô˜Wà×ÑÔð 5<×4FÑ4F×4JÑ4JÈ1Ó4MÑ1ˆ�G kØ×Ñ˜˜}Ô-Ø×Ñ˜˜tÔ$ð ×%Ñ% t lÓ3ˆÜ#Ó%ˆ	Ø×Ñ˜YÔ'ä‹iˆð 	�
‰
”7˜9Ÿ?™?Ó,¨RÕ0Ó1Ô2à×Ñœ#Ÿ)š) M´3·8±8¼S¿V¹VÓDÐEÀsÇ{Á{ÖSr2   c                ó‚  € \         P                  ! RR4      p\        4       ;Vn        pVP	                  4        VP
                  P                  ^ 4      w  r4rVpVP                  W434      p\        4       p	VP                  V	4       \        ^^R7      p
V
P                  \        V	P                  4       R,          4      4       \        RRRRRR	R
RR7      p\        R^ R7      p\        V
P                   ^^R7      pVP"                  P%                  \'        R\(        VR7      \'        RVR7      \'        R\(        VR7      .4       VP+                  4       pVP-                  \/        R\1        V4      4      V,           4       V P3                  VP5                  R4      4      pV P7                  \'        RVRR7      .. . 3V4       R# )z‡
L{SecondaryAuthority.lookupAddress} returns a L{Deferred} that fires
with the I{A} records the authority has cached from the primary.
r  )rV  rA  r)  s   ns1.example.comzadmin.example.comi@â i  iÀ  i   i€%  ià.  r>   s   192.168.1.2rf   )rU  rV  rA  )r?  r#   r"   z!Hr(  T)r#   rA  Nr*  )r   r$  r
   r+  r,  r-  rk  r.  r   r/  r   r0  r   r‡  r   r   rU  rb  Úextendr   r   ÚtoStrÚdataReceivedr   ÚlenrŽ  r�   r�   )r0   r  r   r1  r|   rv   r2  r3  r4  rˆ   r—  r.   r4  rV  Údatarh  s   &               r&   Útest_lookupAddressÚ*SecondaryAuthorityTests.test_lookupAddresss  sŽ  € ô
 '×AÒAØ! >ó
ˆ	ô (:Ó';Ð;ˆ	Ô˜Wà×ÑÔà4;×4FÑ4F×4JÑ4JÈ1Ó4MÑ1ˆ�G kà×%Ñ% t lÓ3ˆÜ#Ó%ˆ	Ø×Ñ˜YÔ'ä˜q qÔ)ˆØ�‰”W˜YŸ_™_Ó.¨rÕ2Ó3Ô4ô Ø$Ø%ØØØØØØô	
ˆô �^¨Ô+ˆÜ˜EŸH™H¨Q°QÔ7ˆØ�‰×Ñä˜¬c¸3Ô?Ü˜°Ô3Ü˜¬c¸3Ô?ðô	
ð �|‰|‹~ˆØ×Ñœ4 ¤c¨$£iÓ0°4Õ7Ô8à×%Ñ% i×&=Ñ&=¸mÓ&LÓMˆØ×ÑÜ�~¨q°tÔ<Ð=¸rÀ2ÐFÈö	
r2   r  N)r3   r4   r5   r6   r*  r   r%  r6  r>  r7   r8   r9   s   @r&   r  r  9  s$   ø‡ € ñò
:ò
:òT÷<0
ð 0
r2   r  sY  $ORIGIN example.com.
$TTL    1w
example.com. IN SOA dns.example.com (
            2013120201 ; serial number of this zone file
            1d         ; slave refresh
            2h         ; slave retry time in case of a problem
            4w         ; slave expiration time
            1h         ; maximum caching time in case of failed lookups
            )

; A comment.
@                  IN AAAA 2001:db8:10::1
example.com.       IN A 10.0.0.1
no-in.example.com. A 10.0.0.2  ; technically wrong but used to work
not-fqdn           IN MX 10 mx.example.com
www                IN CNAME example.comc                   ó`   a € ] tR tRt o 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# )ÚBindAuthorityTestsi¹  z5
Tests for L{twisted.names.authority.BindAuthority}.
c                ó´   € \        V P                  4       P                  R4      4      pVP                  V4       \        P
                  ! VP                  4      # )zÊ
Create a new L{twisted.names.authority.BindAuthority} from C{s}.

@param s: A string with BIND zone data.
@type s: bytes

@return: a new bind authority
@rtype: L{twisted.names.authority.BindAuthority}
Úascii)r   r/  r  Ú
setContentr   ÚBindAuthorityÚpath)r0   ÚsÚfps   && r&   ÚloadBindStringÚ!BindAuthorityTests.loadBindString¾  s@   € ô �d—k‘k“m×*Ñ*¨7Ó3Ó4ˆØ
�‰�aÔä×&Ò& r§w¡wÓ/Ð/r2   c                ó:   € V P                  \        4      V n        R # r+   )rI  ÚsampleBindZonerA  rž   s   &r&   rƒ   ÚBindAuthorityTests.setUpÍ  s   € Ø×'Ñ'¬Ó7ˆŽ	r2   c                óà   € V P                   P                  P                  4        FE  pV P                   P                  V,           F!  pV P                  RVP                  8H  4       K#  	  KG  	  R# )z7
Loads the default $TTL and applies it to all records.
é€:	 N)rA  r/   Úkeysr2  rF   )r0   ÚdomÚrecs   &  r&   Útest_ttlÚBindAuthorityTests.test_ttlÐ  sR   € ð —9‘9×$Ñ$×)Ñ)Ö+ˆCØ—y‘y×(Ñ(¨×-Ð-�Ø—‘ ¨#¯'©'Ñ 1Ö2ó .ó ,r2   c                óž   € V P                  RV P                  P                  4       V P                  RV P                  P                  4       R# )z
Loads the default $ORIGIN.
s   example.com.ó   not-fqdn.example.comN)r�   rA  ÚoriginÚassertInr/   rž   s   &r&   Útest_originFromFileÚ&BindAuthorityTests.test_originFromFileØ  s@   € ð 	×ÑØØ�I‰I×Ñô	
ð 	�‰Ø#Ø�I‰I×Ñö	
r2   c                óâ   € R Fh  w  rV P                  V P                  P                  V4      4      w  w  pw   w   V P                  \        P
                  ! VR4      VP                  4       Kj  	  R# )ú
A records are loaded.
rO  N©)r  z10.0.0.1)ó   no-in.example.comz10.0.0.2©rŽ  rA  r�   r�   r   r   r#   ©r0   rQ  Úipr¶  s   &   r&   Útest_aRecordsÚ BindAuthorityTests.test_aRecordså  sb   € ó
‰GˆCð "×1Ñ1°$·)±)×2IÑ2IÈ#Ó2NÓO‰N‰Tˆb‘2‘rØ×ÑÜ—’ØØóð —
‘
öó
r2   c                óÌ   € V P                  V P                  P                  R4      4      w  w  pw   w   V P                  \        P
                  ! RR4      VP                  4       R# )ú
AAAA records are loaded.
r  ú2001:db8:10::1rO  N©rŽ  rA  r  r�   r   r  r#   ©r0   r¶  s   & r&   Útest_aaaaRecordsÚ#BindAuthorityTests.test_aaaaRecordsö  sY   € ð ×-Ñ-Ø�I‰I×'Ñ'¨Ó7ó
‰‰ˆ"‰r‘2ð 	×ÑÜ�OŠOØ Øóð �J‰Jö	
r2   c                óÐ   € V P                  V P                  P                  R4      4      w  w  pw   w   V P                  \        P
                  ! ^
RRR7      VP                  4       R# )ú
MX records are loaded.
rV  zmx.example.comrO  )rE  r>  rF   N©rŽ  rA  r®   r�   r   r¯   r#   rh  s   & r&   Útest_mxRecordsÚ!BindAuthorityTests.test_mxRecords  s]   € ð ×-Ñ-Ø�I‰I×(Ñ(Ð)@ÓAó
‰‰ˆ"‰r‘2ð 	×ÑÜ�MŠMØØ%Øôð
 �J‰Jö	
r2   c                óÜ   € V P                  V P                  P                  R4      4      w  pw   w   V^ ,          pV P                  \        P
                  ! RRR7      VP                  4       R# )ú
CNAME records are loaded.
ó   www.example.comr(  rO  rD  N©rŽ  rA  r  r�   r   rÃ   r#   ©r0   rb  r¶  s   &  r&   Útest_cnameRecordsÚ$BindAuthorityTests.test_cnameRecords  sd   € ð !×0Ñ0Ø�I‰I×'Ñ'Ð(:Ó;ó
Ñˆ‘"‘bð �Q�ZˆØ×ÑÜ×ÒØ"Øôð �J‰Jö	
r2   c                óô   € V P                  \        4      ;_uu_ 4       pV P                  R4       RRR4       V P                  RXP                  P
                  ^ ,          4       R#   + '       g   i     L?; i)z?
loadBindString raises NotImplementedError on invalid records.
s   example.com. IN LOL 192.168.0.1NzRecord type 'LOL' not supported)ÚassertRaisesÚNotImplementedErrorrI  r�   Ú	exceptionrñ  )r0   Úes   & r&   Útest_invalidRecordClassÚ*BindAuthorityTests.test_invalidRecordClass%  sU   € ð ×ÑÔ2×3Ô3°qØ×ÑÐ BÔC÷ 4à×ÑÐ:¸A¿K¹K×<LÑ<LÈQÕ<OÖP÷ 4×3ús   žA'Á'A7	c                ó4  € R F~  pV P                  \        4      ;_uu_ 4       pV P                  VR,           4       RRR4       V P                  \	        VR,           4      XP
                  P                  ^ ,          4       K€  	  R#   + '       g   i     LS; i)z3
$INCLUDE and $GENERATE raise NotImplementedError.
s    doesNotMatterNs    directive not implemented)s   $INCLUDEs	   $GENERATE)rx  ry  rI  r�   r   rz  rñ  )r0   Ú	directiver{  s   &  r&   Útest_invalidDirectivesÚ)BindAuthorityTests.test_invalidDirectives-  sp   € ó 5ˆIØ×"Ñ"Ô#6×7Ô7¸1Ø×#Ñ# IÐ0AÕ$AÔB÷ 8à×ÑÜ˜YÐ)FÕFÓGØ—‘× Ñ  Õ#öó 5ß7×7ús   £BÂB©rA  N)r3   r4   r5   r6   r*  rI  rƒ   rS  rY  rb  ri  rn  ru  r|  r€  r7   r8   r9   s   @r&   rA  rA  ¹  sB   ø‡ € ñò0ò8ò3ò
òò"
ò
ò 
ò Q÷
ð 
r2   rA  aÊ  zone = [
    SOA(
        # For whom we are the authority
        'example.com',

        # This nameserver's name
        mname = "dns.example.com",

        # Mailbox of individual who handles this
        rname = "root.example.com",

        # Unique serial identifying this SOA data
        serial = 86400,

        # Time interval before zone should be refreshed
        refresh = "2H",

        # Interval before failed refresh should be retried
        retry = "1H",

        # Upper limit on time interval before expiry
        expire = "1H",

        # Minimum TTL
        minimum = "3H"

    ),

    AAAA('example.com', '2001:db8:10::1'),
    A('example.com', '10.0.0.1'),
    NS('example.com', 'dns.example.com'),
    A('no-in.example.com', '10.0.0.2'),
    PTR('2.0.0.10.in-addr.arpa', 'no-in.example.com'),

    CNAME('www.example.com', 'example.com'),
    CNAME('ftp.example.com', 'example.com'),

    MX('not-fqdn.example.com', 10, 'mail.example.com'),
]
c                   óT   a € ] tR tR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# )ÚPySourceAuthorityTestsie  z9
Tests for L{twisted.names.authority.PySourceAuthority}.
c                ó
  € \        V P                  4       4      p\        VP                  R4      ;_uu_ 4       pVP	                  V4       RRR4       \
        P                  ! VP                  4      #   + '       g   i     L0; i)zë
Create a new L{twisted.names.authority.PySourceAuthority} from C{s}.

@param s: A string with BIND zone data in a Python source file.
@type s: L{str}

@return: a new bind authority
@rtype: L{twisted.names.authority.PySourceAuthority}
r|  N)r   r/  r}  rF  Úwriter   ÚPySourceAuthority)r0   rG  rH  r3  s   &&  r&   ÚloadPySourceStringÚ)PySourceAuthorityTests.loadPySourceStringj  sW   € ô �d—k‘k“mÓ$ˆÜ�"—'‘'˜3×Ô 1Ø�G‰G�AŒJ÷  ô ×*Ò*¨2¯7©7Ó3Ð3÷  ×ús   ¸A2Á2B	c                ó:   € V P                  \        4      V n        R # r+   )rˆ  ÚsamplePySourcerA  rž   s   &r&   rƒ   ÚPySourceAuthorityTests.setUpz  s   € Ø×+Ñ+¬NÓ;ˆŽ	r2   c                óà   € R Fg  w  rV P                  V P                  P                  V4      4      w  w  pw   w   V P                  \        P
                  ! V4      VP                  4       Ki  	  R# )r\  Nr]  r_  r`  s   &   r&   rb  Ú$PySourceAuthorityTests.test_aRecords}  sZ   € ó
‰GˆCð "×1Ñ1°$·)±)×2IÑ2IÈ#Ó2NÓO‰N‰Tˆb‘2‘rØ×ÑÜ—’˜RÓ Ø—
‘
öó
r2   c                óÊ   € V P                  V P                  P                  R4      4      w  w  pw   w   V P                  \        P
                  ! R4      VP                  4       R# )re  r  rf  Nrg  rh  s   & r&   ri  Ú'PySourceAuthorityTests.test_aaaaRecords‹  sR   € ð ×-Ñ-Ø�I‰I×'Ñ'¨Ó7ó
‰‰ˆ"‰r‘2ð 	×ÑÜ�OŠOÐ,Ó-Ø�J‰Jö	
r2   c                óÎ   € V P                  V P                  P                  R4      4      w  w  pw   w   V P                  \        P
                  ! ^
RR7      VP                  4       R# )rl  rV  zmail.example.com)rE  r>  Nrm  rh  s   & r&   rn  Ú%PySourceAuthorityTests.test_mxRecords—  sZ   € ð ×-Ñ-Ø�I‰I×(Ñ(Ð)@ÓAó
‰‰ˆ"‰r‘2ð 	×ÑÜ�MŠMØØ'ôð �J‰Jö	
r2   c                óÚ   € V P                  V P                  P                  R4      4      w  pw   w   V^ ,          pV P                  \        P
                  ! RR7      VP                  4       R# )rq  rr  r(  ©r>  Nrs  rt  s   &  r&   ru  Ú(PySourceAuthorityTests.test_cnameRecords¦  sa   € ð !×0Ñ0Ø�I‰I×'Ñ'Ð(:Ó;ó
Ñˆ‘"‘bð �Q�ZˆØ×ÑÜ×ÒØ"ôð �J‰Jö		
r2   c                óÚ   € V P                  V P                  P                  R4      4      w  pw   w   V^ ,          pV P                  \        P
                  ! RR7      VP                  4       R# )z
PTR records are loaded.
s   2.0.0.10.in-addr.arpar^  r”  N)rŽ  rA  r½   r�   r   r¾   r#   rt  s   &  r&   r¿   ÚPySourceAuthorityTests.test_PTRµ  s_   € ð !×0Ñ0Ø�I‰I×#Ñ#Ð$<Ó=ó
Ñˆ‘"‘bð �Q�ZˆØ×ÑÜ�NŠNØ)ôð �J‰Jö		
r2   c                óL   € RpV P                  \        V P                  V4       R# )z!
Input file has no zone variable
znothing = []N)rx  Ú
ValueErrorrˆ  )r0   ÚbadPySources   & r&   Útest_badInputNoZoneÚ*PySourceAuthorityTests.test_badInputNoZoneÄ  s!   € ð %ˆØ×Ñœ* d×&=Ñ&=¸{ÖKr2   r‚  N)r3   r4   r5   r6   r*  rˆ  rƒ   rb  ri  rn  ru  r¿   r›  r7   r8   r9   s   @r&   r„  r„  e  s9   ø‡ € ñò4ò <òò

ò
ò
ò
÷Lð Lr2   r„  )Yr*  rþ   r  r÷   Ú	functoolsr   r   Úior   Ústructr   Útwisted.internetr   r   r   Útwisted.internet.deferr	   Útwisted.internet.testingr
   r   r   Útwisted.namesr   r   r   r   r   Útwisted.names.clientr   Útwisted.names.dnsr   r   r   r   r   r   Útwisted.names.errorr   Útwisted.names.secondaryr   r   Útwisted.python.compatr   Útwisted.python.filepathr   Útwisted.trialr   r'   ÚFileAuthorityr)   rª   Úreverse_soarÿ   r´   rñ   r¯   r¹   rÃ   rÈ   rÍ   rì   r  rÒ   r×   râ   rç   rö   rø   r'  r  rÝ   rs   r¾   rt   ru   ÚTestCaserj   r,  r:  ro  r‚  r­  rî  r  r  rL  rA  r‹  r„  r  r2   r&   Ú<module>r®     sg  ðñó
 Û Û ß %Ý Ý ç 2Ñ 2Ý *÷ñ ÷
 AÕ @Ý )ß Q× QÝ +ß QÝ .Ý ,Ý "ò+ô.�i×-Ñ-ô .ð �^Š^Ø
Ø
 ØØØØØ
Ø	ô	€
ð �nŠnØ
"Ø
"ØØØØØ
Ø	ô	€ð 
�ŠØ
Ø
'ØØØØØ
ô
€ñ "Ø	˜ZÐ(àØØ�LŠL˜Ó&Ø�MŠM˜/Ó*Ø�NŠNÐAÓBØ�NŠNÐ1Ð3TÓUØ�MŠM˜"Ð4Ó5Ø×Ò Ð.IÔJØ×ÒÐ2Ó3Ø�MŠMÐ4Ó5Ø�MŠMÐ1Ó2Ø�NŠNÐ3Ð5FÓGØ�MŠM˜!˜]¨CÓ0Ø�MŠM˜"˜lÐ,?Ó@Ø�MŠM˜!ÐDÐFVÓWØ�NŠNÐJÓKØ�MŠMÐ6Ó7Ø×Ò ]¸MÔJØ×Ò QÐ1IÔJØ�MŠMÐ2Ð8IÔJØ�NŠNØ × 2Ñ 2Ð4Sóð ×ÒØ�R˜˜zÐ+Oóð �OŠOÐFÓGð5
ð8 	$Ø�NŠN˜3  uÐ.FÓGð&
ð 	 Ø�LŠL˜Ó(Ø�LŠL˜Ó(ð"
ð 	$ð
 �LŠLÐ+Ó,Ø�LŠL˜Ó$ð&
ð 	! 3×#3Ò#3Ð4FÓ#GÐ"HØ! C§L¢L°Ó$<Ð#=ð[.ô1€ñf !Ø	! ;Ð/à$Ø�NŠNÐ:Ó;Øð'
ðô€ñ  Ø	˜6Ð"àØØ�LŠL˜¨Ô.Ø�MŠM˜-¨UÔ3Ø�MŠM˜-¨TÔ2Ø�NŠN˜3  uÐ.FÈDÔQð
ðô€ôW
�X×&Ñ&ô W
ôt
�(×#Ñ#ô ôW5�×!Ñ!ô W5ôt˜h×/Ñ/ô ô{/�X×&Ñ&ô {/ô|[5 × 1Ñ 1ô [5ô|-X˜X×.Ñ.ô -Xô`ED X×%6Ñ%6ô EDôPj
˜h×/Ñ/ô j
ðZ+€ô&~˜×*Ñ*ô ~ðB(€ôVdL˜X×.Ñ.ö dLr2   