+
    üÐjÕ%  ã                   óœ  € R t ^ RIHtHtHtHtHtHtHtH	t	H
t
 ^ RIHtHtHtHtHtHtHtHtHt ^ RIHt ^ RIHt ^ RIHtHt ^ RI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* ^ RI+H,t, ]'       d   ^ RI-H.t. ]! ]#4       ! R R4      4       t/]0! ]].4      t1]0! ].4      ]]0! ].4      ]]1]/t2]]]]/t3R]R]/t4]R]R/t5]]]]]6]7]]]7]63,          ]]7]6]6]63,          3,          3,          ,          t8]! ]"4       ! R R4      4       t9]! ]"4       ! R R4      4       t:]! ]%4       ! R R4      4       t;]! ]&4       ! R R4      4       t<R# )z=
IPv6-aware hostname resolution.

@see: L{IHostnameResolver}
)	ÚAF_INETÚAF_INET6Ú	AF_UNSPECÚ
SOCK_DGRAMÚSOCK_STREAMÚAddressFamilyÚ
SocketKindÚgaierrorÚgetaddrinfo)	ÚTYPE_CHECKINGÚCallableÚListÚNoReturnÚOptionalÚSequenceÚTupleÚTypeÚUnion)Úimplementer)Ú
_idnaBytes)ÚIPv4AddressÚIPv6Address)ÚDeferred)ÚDNSLookupError)ÚIAddressÚIHostnameResolverÚIHostResolutionÚIReactorThreadsÚIResolutionReceiverÚIResolverSimple)ÚdeferToThreadPool)ÚLogger)ÚnativeString)Ú
ThreadPoolc                   óH   a € ] tR t^9t o RtV 3R lR ltV 3R lR ltRtV tR# )ÚHostResolutionz1
The in-progress resolution of a given hostname.
c                ó    <€ V ^8„  d   QhRS[ /# )é   Úname)Ústr)ÚformatÚ__classdict__s   "€Ú</usr/lib/python3/dist-packages/twisted/internet/_resolver.pyÚ__annotate__ÚHostResolution.__annotate__?   s   ø€ ÷ ñ ™Sñ ó    c                ó   € Wn         R# )z1
Create a L{HostResolution} with the given name.
N©r(   )Úselfr(   s   &&r,   Ú__init__ÚHostResolution.__init__?   s	   € ð Ž	r/   c                ó    <€ V ^8„  d   QhRS[ /# ©r'   Úreturn)r   )r*   r+   s   "€r,   r-   r.   E   s   ø€ ÷ $ñ $™ñ $r/   c                ó   € \        4       h©N)ÚNotImplementedError©r2   s   &r,   ÚcancelÚHostResolution.cancelE   s   € ä!Ó#Ð#r/   r1   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r3   r<   Ú__static_attributes__Ú__classdictcell__©r+   s   @r,   r%   r%   9   s   ø‡ € ñ÷ð ÷$ö $r/   r%   ÚTCPÚUDPc                   óT   a € ] tR t^mt o RtR]3V 3R lR lltRV 3R lR lltRtV t	R# )	ÚGAIResolverzd
L{IHostnameResolver} implementation that resolves hostnames by calling
L{getaddrinfo} in a thread.
Nc          
      ór   <€ V ^8„  d   QhRS[ RS[S[. R3,          ,          RS[S[S[S[S[.S[3,          /# )r'   ÚreactorÚgetThreadPoolr#   r
   )r   r   r   r)   ÚintÚ_GETADDRINFO_RESULT)r*   r+   s   "€r,   r-   ÚGAIResolver.__annotate__t   sL   ø€ ÷ (ñ (á ð(ñ  ¡¨¨\Ð)9Õ :Õ;ð(ñ ™s¡C©©cÐ2Ñ4GÐGÕHñ	(r/   c                óL   € Wn         Vf   VP                  MTV n        W0n        R# )a1  
Create a L{GAIResolver}.

@param reactor: the reactor to schedule result-delivery on
@type reactor: L{IReactorThreads}

@param getThreadPool: a function to retrieve the thread pool to use for
    scheduling name resolutions.  If not supplied, the use the given
    C{reactor}'s thread pool.
@type getThreadPool: 0-argument callable returning a
    L{twisted.python.threadpool.ThreadPool}

@param getaddrinfo: a reference to the L{getaddrinfo} to use - mainly
    parameterized for testing.
@type getaddrinfo: callable with the same signature as L{getaddrinfo}
N)Ú_reactorrL   Ú_getThreadPoolÚ_getaddrinfo)r2   rK   rL   r
   s   &&&&r,   r3   ÚGAIResolver.__init__t   s)   € ð,  Œà%2Ò%:ˆG×!Ò!Àð 	Ôð (Ör/   c                ón   <€ V ^8„  d   QhRS[ RS[RS[RS[S[S[S[,          ,          ,          RS[RS[/# ©r'   ÚresolutionReceiverÚhostNameÚ
portNumberÚaddressTypesÚtransportSemanticsr7   ©r   r)   rM   r   r   r   r   r   )r*   r+   s   "€r,   r-   rO   �   sU   ø€ ÷ 2ñ 2á/ð2ñ ð2ñ ð	2ñ
 ™x©©X­Õ7Õ8ð2ñ  ð2ñ 
ñ2r/   c                ó:  a aaaaa€ S P                  4       p\        Vf   \        M
\        V4      ,          o\        V,          oR VVVV V3R llp\        S P                  Wg4      p\        S4      p	SP                  V	4       VP                  R V3R ll4       p
V	# )úü
See L{IHostnameResolver.resolveHostName}

@param resolutionReceiver: see interface

@param hostName: see interface

@param portNumber: see interface

@param addressTypes: see interface

@param transportSemantics: see interface

@return: see interface
c                ó$   € V ^8„  d   QhR\         /# r6   ©rN   )r*   s   "r,   r-   Ú1GAIResolver.resolveHostName.<locals>.__annotate__­   s   € ÷ 	ñ 	Ô(ñ 	r/   c                  óT   <€  SP                  SSS S4      #   \         d    . u # i ; ir9   )rS   r	   )ÚaddressFamilyrX   rY   r2   Ú
socketTypes   €€€€€r,   ÚgetÚ(GAIResolver.resolveHostName.<locals>.get­   s:   ø€ ðØ×(Ñ(Ø˜j¨-¸óð øô ô Ø’	ðús   ƒ —'¦'c                ó(   € V ^8„  d   QhR\         RR/# )r'   Úresultr7   Nr`   )r*   s   "r,   r-   ra   º   s   € ÷ 	4ñ 	4Ô#6ð 	4¸4ñ 	4r/   c           	      ó¶   <€ V  FA  w  rr4p\         V,          pSP                  V! \        P                  VR 4      .VO5!  4       KC  	  SP	                  4        R# )rF   N)Ú	_afToTypeÚaddressResolvedÚ_socktypeToTypere   ÚresolutionComplete)rh   ÚfamilyÚsocktypeÚprotoÚ	cannonameÚsockaddrÚaddrTyperW   s   &      €r,   ÚdeliverResultsÚ3GAIResolver.resolveHostName.<locals>.deliverResults¹   sV   ø€ ã@FÑ<� %°HÜ$ VÕ,�Ø"×2Ñ2Ùœ_×0Ñ0°¸5ÓAÐMÀHÓMöñ AGð
 ×1Ñ1Ö3r/   )
rR   Ú
_typesToAFÚ_anyÚ	frozensetÚ_transportToSocketr    rQ   r%   ÚresolutionBeganÚaddCallback)r2   rW   rX   rY   rZ   r[   Úpoolre   ÚdÚ
resolutionrt   rc   rd   s   ffff&&     @@r,   ÚresolveHostNameÚGAIResolver.resolveHostName�   s‹   ý€ ð. ×"Ñ"Ó$ˆÜ"Ø Ò(�D¬i¸Ó.Eõ
ˆô (Ð(:Õ;ˆ
÷	ô 	ô ˜dŸm™m¨TÓ7ˆÜ# HÓ-ˆ
Ø×*Ñ*¨:Ô6à	
�‰÷	4ó 
ð	4ð Ðr/   )rR   rS   rQ   ©é    NrF   )
r>   r?   r@   rA   rB   r
   r3   r   rC   rD   rE   s   @r,   rI   rI   m   s,   ø‡ € ñð ?CØKV÷	(ò (÷82÷ 2ð 2r/   rI   c                   óZ   a € ] tR t^Åt o Rt]! 4       tV 3R lR ltRV 3R lR lltRt	V t
R# )	ÚSimpleResolverComplexifierz>
A converter from L{IResolverSimple} to L{IHostnameResolver}.
c                ó    <€ V ^8„  d   QhRS[ /# )r'   ÚsimpleResolver)r   )r*   r+   s   "€r,   r-   Ú'SimpleResolverComplexifier.__annotate__Í   s   ø€ ÷ .ñ .¡ñ .r/   c                ó   € Wn         R# )zG
Construct a L{SimpleResolverComplexifier} with an L{IResolverSimple}.
N©Ú_simpleResolver)r2   r†   s   &&r,   r3   Ú#SimpleResolverComplexifier.__init__Í   s
   € ð  .Ör/   Nc                ón   <€ V ^8„  d   QhRS[ RS[RS[RS[S[S[S[,          ,          ,          RS[RS[/# rV   r\   )r*   r+   s   "€r,   r-   r‡   Ó   sU   ø€ ÷ 9ñ 9á/ð9ñ ð9ñ ð	9ñ
 ™x©©X­Õ7Õ8ð9ñ  ð9ñ 
ñ9r/   c                ód  a aaa€  SP                  R4      p\        V4      o\	        S4      pSP                  V4       S P                  P                  S4      P                  VV3R l4      P                  VV 3R l4      P                  V3R l4       V#   \         d    \        S4      p L—i ; i)r^   Úasciic                 ó<   <€ SP                  \        R V S4      4      # )rF   )rk   r   )ÚaddressrY   rW   s   &€€r,   Ú<lambda>Ú<SimpleResolverComplexifier.resolveHostName.<locals>.<lambda>ü   s   ø€ Ð 2× BÑ BÜ  w°
Ó;ô!r/   c                 ó�   <€ V P                  \        4      '       d   R # SP                  P                  RV SSP                  R7      # )Nz'while looking up {name} with {resolver})r(   Úresolver)Úcheckr   Ú_logÚfailurerŠ   )ÚerrorrX   r2   s   &€€r,   r‘   r’     sJ   ø€ Ø—;‘;œ~×.Ò.ð #ð à—Y‘Y×&Ñ&Ø=ØØ!Ø!×1Ñ1ð	 'ó ðr/   c                 ó$   <€ SP                  4       # r9   )rm   )ÚnothingrW   s   &€r,   r‘   r’   
  s   ø€ Ð);×)NÑ)NÔ)Pr/   )
ÚencodeÚUnicodeEncodeErrorr   r"   r%   rz   rŠ   ÚgetHostByNamer{   Ú
addErrback)r2   rW   rX   rY   rZ   r[   ÚhostName_bytesr~   s   ffff&&  r,   r   Ú*SimpleResolverComplexifier.resolveHostNameÓ   sž   û€ ð0	2Ø%Ÿ_™_¨WÓ5ˆNô   Ó/ˆä# HÓ-ˆ
Ø×*Ñ*¨:Ô6à× Ñ ×.Ñ.¨xÓ8ß‰[õó÷
 ‰Zõó	÷ ‰[ÔPÔQàÐøô? "ô 	2ô
 (¨Ó1ŠNð	2ús   †B ÂB/Â.B/r‰   r�   )r>   r?   r@   rA   rB   r!   r–   r3   r   rC   rD   rE   s   @r,   r„   r„   Å   s,   ø‡ € ññ ‹8€D÷.ð .÷9÷ 9ð 9r/   r„   c                   ól   a € ] tR tRt o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R	 lR
 ltRt	V t
R# )ÚFirstOneWinsi  zL
An L{IResolutionReceiver} which fires a L{Deferred} with its first result.
c                ó   <€ V ^8„  d   QhRR/# )r'   ÚdeferredúDeferred[str]© )r*   r+   s   "€r,   r-   ÚFirstOneWins.__annotate__  s   ø€ ÷ ñ  ñ r/   c                ó    € Wn         RV n        R# )zX
@param deferred: The L{Deferred} to fire when the first resolution
    result arrives.
FN)Ú	_deferredÚ	_resolved)r2   r¤   s   &&r,   r3   ÚFirstOneWins.__init__  s   € ð
 "ŒØˆŽr/   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r'   r~   r7   N)r   )r*   r+   s   "€r,   r-   r§     s   ø€ ÷ &ñ &©/ð &¸dñ &r/   c                ó   € Wn         R# )zk
See L{IResolutionReceiver.resolutionBegan}

@param resolution: See L{IResolutionReceiver.resolutionBegan}
N)Ú_resolution)r2   r~   s   &&r,   rz   ÚFirstOneWins.resolutionBegan  s
   € ð &Ör/   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r'   r�   r7   N)r   )r*   r+   s   "€r,   r-   r§   %  s   ø€ ÷ .ñ .¡xð .°Dñ .r/   c                ó¶   € V P                   '       d   R# RV n         \        V\        4      '       g   Q hV P                  P	                  VP
                  4       R# )zh
See L{IResolutionReceiver.addressResolved}

@param address: See L{IResolutionReceiver.addressResolved}
NT)rª   Ú
isinstancer   r©   ÚcallbackÚhost)r2   r�   s   &&r,   rk   ÚFirstOneWins.addressResolved%  sB   € ð �>�>ˆ>ÙØˆŒô ˜'¤;×/Ò/Ð/Ð/Ø�‰×Ñ §¡Ö-r/   c                ó   <€ V ^8„  d   QhRR/# )r'   r7   Nr¦   )r*   r+   s   "€r,   r-   r§   3  s   ø€ ÷ Fñ F Dñ Fr/   c                óž   € V P                   '       d   R# V P                  P                  \        V P                  P
                  4      4       R# )z/
See L{IResolutionReceiver.resolutionComplete}
N)rª   r©   Úerrbackr   r®   r(   r;   s   &r,   rm   ÚFirstOneWins.resolutionComplete3  s3   € ð �>�>ˆ>ÙØ�‰×Ñœ~¨d×.>Ñ.>×.CÑ.CÓDÖEr/   )r©   r®   rª   N)r>   r?   r@   rA   rB   r3   rz   rk   rm   rC   rD   rE   s   @r,   r¢   r¢     s4   ø‡ € ñ÷ð ÷&ð &÷.ð .÷Fö Fr/   r¢   c                   óL   a € ] tR tRt o RtV 3R lR ltR	V 3R lR lltRtV tR# )
ÚComplexResolverSimplifieri<  z=
A converter from L{IHostnameResolver} to L{IResolverSimple}
c                ó    <€ V ^8„  d   QhRS[ /# )r'   ÚnameResolver)r   )r*   r+   s   "€r,   r-   Ú&ComplexResolverSimplifier.__annotate__B  s   ø€ ÷ *ñ *Ñ%6ñ *r/   c                ó   € Wn         R# )z|
Create a L{ComplexResolverSimplifier} with an L{IHostnameResolver}.

@param nameResolver: The L{IHostnameResolver} to use.
N©Ú_nameResolver)r2   r½   s   &&r,   r3   Ú"ComplexResolverSimplifier.__init__B  s
   € ð *Ör/   c                ó:   <€ V ^8„  d   QhRS[ RS[S[,          RR/# )r'   r(   Útimeoutsr7   r¥   )r)   r   rM   )r*   r+   s   "€r,   r-   r¾   J  s&   ø€ ÷ ñ ¡#ð ±¹#µð Èñ r/   c                ór   € \        4       pV P                  P                  \        V4      V^ \        .4       V# )z¿
See L{IResolverSimple.getHostByName}

@param name: see L{IResolverSimple.getHostByName}

@param timeouts: see L{IResolverSimple.getHostByName}

@return: see L{IResolverSimple.getHostByName}
)r   rÁ   r   r¢   r   )r2   r(   rÄ   rh   s   &&& r,   r�   Ú'ComplexResolverSimplifier.getHostByNameJ  s1   € ô #+£*ˆØ×Ñ×*Ñ*¬<¸Ó+?ÀÀqÌ;È-ÔXØˆr/   rÀ   N)r¦   )	r>   r?   r@   rA   rB   r3   r�   rC   rD   rE   s   @r,   r»   r»   <  s#   ø‡ € ñ÷*ð *÷÷ ð r/   r»   N)=rB   Úsocketr   r   r   r   r   r   r   r	   r
   Útypingr   r   r   r   r   r   r   r   r   Úzope.interfacer   Útwisted.internet._idnar   Útwisted.internet.addressr   r   Útwisted.internet.deferr   Útwisted.internet.errorr   Útwisted.internet.interfacesr   r   r   r   r   r   Útwisted.internet.threadsr    Útwisted.loggerr!   Útwisted.python.compatr"   Útwisted.python.threadpoolr#   r%   rx   rw   rv   rj   ry   rl   rM   r)   rN   rI   r„   r¢   r»   r¦   r/   r,   Ú<module>rÓ      s³  ðñ
÷
÷ 
õ 
÷
÷ 
õ 
õ 'å -ß =Ý +Ý 1÷÷ õ 7Ý !Ý .çÝ4ñ ˆ_Ó÷$ð $ó ð$ñ  �+˜{Ð+Ó,€ñ ˆ{ˆmÓ˜gÙˆ{ˆmÓ˜hØˆ)ð€
ð ˆ[Øˆkð€	ð 
ˆ;Ø	ˆ:ðÐ ð �Ø�ð€ð Ø	ØØØØØˆe�C˜�H�o˜u S¨#¨s°CÐ%7Õ8Ð8Õ9ð		;õõÐ ñ ÐÓ÷Tð Tó  ðTñn ÐÓ÷Fð Fó  ðFñR Ð Ó!÷)Fð )Fó "ð)FñX ˆ_Ó÷ð ó òr/   