§
    <xÅjµK  ã                  ó  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZmZmZmZ d dlmZ d dlmZmZmZmZmZ d dlZddlmZ ddlmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d	Z)d
Z* ed¦  «        Z+dZ, ej-        e.¦  «        Z/ej0        ej1        ej2        ej3        ej4        ej5        ej6        ej7        ej8        ej9        ej:        ej;        dœZ<ej=        ej>        ej?        ej@        ejA        dœZB G d„ d¦  «        ZCdS )é    )ÚannotationsN)ÚCallableÚIterableÚIteratorÚSequence)ÚTracebackType)ÚTYPE_CHECKINGÚAnyÚLiteralÚTypeVarÚoverloadé   )Úerror)ÚAresHostResultÚAresQueryAAAAResultÚAresQueryAResultÚAresQueryCAAResultÚAresQueryCNAMEResultÚAresQueryMXResultÚAresQueryNAPTRResultÚAresQueryNSResultÚAresQueryPTRResultÚAresQuerySOAResultÚAresQuerySRVResultÚAresQueryTXTResultÚQueryResultÚconvert_resultz4.0.4)ÚDNSResolverr   Ú_Tzpaiodns needs a SelectorEventLoop on Windows. See more: https://github.com/aio-libs/aiodns#note-for-windows-users)ÚAÚAAAAÚANYÚCAAÚCNAMEÚMXÚNAPTRÚNSÚPTRÚSOAÚSRVÚTXT)ÚINÚCHAOSÚHSÚNONEr"   c                  óv  — e Zd Z	 	 dudvd
„Zdwd„Zedxd„¦   «         Zej        dyd„¦   «         Zdzd„Zd{d„Z	d|d„Z
d}d!„Zej        d~d#„¦   «         Ze	 dd€d+„¦   «         Ze	 dd�d.„¦   «         Ze	 dd‚d1„¦   «         Ze	 ddƒd4„¦   «         Ze	 dd„d7„¦   «         Ze	 dd…d:„¦   «         Ze	 dd†d=„¦   «         Ze	 dd‡d@„¦   «         Ze	 ddˆdC„¦   «         Ze	 dd‰dF„¦   «         Ze	 ddŠdI„¦   «         Z	 d‹dŒdK„Z	 d‹d�dM„ZdŽdP„Zd�dS„Zej        ddTdTdTfd�dZ„Z	 d‘d’d^„Zd“da„Zd”db„Zd•dg„Zd”dh„Zd”di„Zd”dj„Zd”dk„Zd–dl„Zd—ds„Z d”dt„Z!dS )˜r   NÚnameserversúSequence[str] | NoneÚloopú asyncio.AbstractEventLoop | NoneÚkwargsr
   ÚreturnÚNonec                ó|  — d| _         |pt          j        ¦   «         | _        t          r	| j        €J ‚|                     dd ¦  «         |                     dd ¦  «        }|| _         | j        di |¤Ž\  | _        | _	        |r|| _
        t          ¦   «         | _        t          ¦   «         | _        d | _        d| _         d S )NTÚsock_state_cbÚtimeoutF© )Ú_closedÚasyncioÚget_event_loopr3   r	   ÚpopÚ_timeoutÚ_make_channelÚ_event_threadÚ_channelr1   ÚsetÚ	_read_fdsÚ
_write_fdsÚ_timer)Úselfr1   r3   r5   r:   s        ú@C:\Projects\Historical\venv\Lib\site-packages\aiodns/__init__.pyÚ__init__zDNSResolver.__init__L   s¾   € ð ˆŒØÐ4�GÔ2Ñ4Ô4ˆŒ	Ýð 	)Ø”9Ð(Ð(Ð(Ø�
Š
�? DÑ)Ô)Ð)Ø—*’*˜Y¨Ñ-Ô-ˆØˆŒØ,>¨DÔ,>Ð,HÐ,HÀÐ,HÐ,HÑ)ˆÔ˜DœMØð 	+Ø*ˆDÔÝ#&¡5¤5ˆŒÝ$'¡E¤EˆŒØ26ˆŒØˆŒˆˆó    útuple[bool, pycares.Channel]c                ó~  ‡— 	 dt          j        dd| j        i|¤ŽfS # t           j        $ rQ}t          j        dk    rt                               d|¦  «         nt                               d|¦  «         Y d }~nd }~ww xY wt          j        dk    rzt          | j	        t          j        ¦  «        s[	 dd l}t          | j	        |j        ¦  «        st          t          ¦  «        ‚n'# t           $ r}t          t          ¦  «        |‚d }~ww xY wt#          j        | ¦  «        Šdˆfd„}dt          j        d|| j        dœ|¤ŽfS )NTr:   ÚlinuxzúFailed to create DNS resolver channel with automatic monitoring of resolver configuration changes. This usually means the system ran out of inotify watches. Falling back to socket state callback. Consider increasing the system inotify watch limit: %szŒFailed to create DNS resolver channel with automatic monitoring of resolver configuration changes. Falling back to socket state callback: %sÚwin32r   ÚfdÚintÚreadableÚboolÚwritabler6   r7   c                óR   •—  ‰¦   «         }|�|                      | ||¦  «         d S d S ©N)Ú_sock_state_cb)rP   rR   rT   ÚthisÚ	weak_selfs       €rI   Úsock_state_cb_wrapperz8DNSResolver._make_channel.<locals>.sock_state_cb_wrapperˆ   s<   ø€ ð �9‘;”;ˆDØÐØ×#Ò# B¨°(Ñ;Ô;Ð;Ð;Ð;ð  ÐrK   F)r9   r:   r;   ©rP   rQ   rR   rS   rT   rS   r6   r7   )ÚpycaresÚChannelr@   Ú	AresErrorÚsysÚplatformÚ_LOGGERÚwarningÚ
isinstancer3   r=   ÚSelectorEventLoopÚwinloopÚLoopÚRuntimeErrorÚWINDOWS_SELECTOR_ERR_MSGÚModuleNotFoundErrorÚweakrefÚref)rH   r5   Úere   ÚexrZ   rY   s         @rI   rA   zDNSResolver._make_channela   s¦  ø€ ð	Ø�œÐIÐI°´ÐIÀ&ÐIÐIÐIÐIøÝÔ ð 	ð 	ð 	ÝŒ|˜wÒ&Ð&Ý—’ðDð
 ñô ð ð õ —’ð@ð ñ	ô ð øøøøøøøøøð	øøøõ$ Œ<˜7Ò"Ð"­:ØŒI•wÔ0ñ,
ô ,
Ð"ðEØ���å! $¤)¨W¬\Ñ:Ô:ð AÝ&Õ'?Ñ@Ô@Ð@ðAøå&ð Eð Eð EÝ"Õ#;Ñ<Ô<À"ÐDøøøøðEøøøõ ”K Ñ%Ô%ˆ	ð	<ð 	<ð 	<ð 	<ð 	<ð 	<ð •g”oð 
Ø/Ø”Mð
ð 
ð ð
ð 
ð 
ð 	
s-   ƒ �A=¬AA8Á8A=Â02C# Ã#
DÃ-DÄDúSequence[str]c                ó.   — d„ | j         j        D ¦   «         S )Nc                óF   — g | ]}|                      d d¦  «        d         ‘ŒS )ú:r   r   )Úrsplit)Ú.0Úss     rI   ú
<listcomp>z+DNSResolver.nameservers.<locals>.<listcomp>™   s+   € ÐCÐCÐC¨�—’˜˜aÑ Ô  Ô#ÐCÐCÐCrK   ©rC   Úservers©rH   s    rI   r1   zDNSResolver.nameservers•   s   € ð DÐC¨T¬]Ô-BÐCÑCÔCÐCrK   ÚvalueúIterable[str | bytes]c                ó   — || j         _        d S rV   rv   )rH   ry   s     rI   r1   zDNSResolver.nameservers›   s   € à %ˆŒÔÐÐrK   Úfutúasyncio.Future[_T]Úresultr   Úerrornoú
int | Nonec                óî   — |                      ¦   «         rd S |�G|                     t          j        |t          j                             |¦  «        ¦  «        ¦  «         d S |                     |¦  «         d S rV   )ÚdoneÚset_exceptionr   ÚDNSErrorr\   ÚerrnoÚstrerrorÚ
set_result)rH   r|   r~   r   s       rI   Ú	_callbackzDNSResolver._callbackŸ   sz   € ð �8Š8‰:Œ:ð 	ØˆFØÐØ×ÒÝ”˜w­¬×(>Ò(>¸wÑ(GÔ(GÑHÔHñô ð ð ð ð �NŠN˜6Ñ"Ô"Ð"Ð"Ð"rK   ú;tuple[asyncio.Future[_T], Callable[[_T, int | None], None]]c                óÊ   — | j                              ¦   «         }| j        r&t          j        | j         j        | j        |¦  «        }nt          j        | j        |¦  «        }||fS )z?Return a future and a callback to set the result of the future.)r3   Úcreate_futurerB   Ú	functoolsÚpartialÚcall_soon_threadsaferˆ   )rH   ÚfutureÚcbs      rI   Ú_get_future_callbackz DNSResolver._get_future_callback®   sf   € ð
 &*¤Y×%<Ò%<Ñ%>Ô%>ˆØÔð 	;ÝÔ"Ø”	Ô.Ø”Øñô ˆBˆBõ Ô" 4¤>°6Ñ:Ô:ˆBØ�rˆzÐrK   úasyncio.Future[QueryResult]ÚqtyperQ   úpycares.DNSResultc                ót  — |                      ¦   «         rdS |�G|                     t          j        |t          j                             |¦  «        ¦  «        ¦  «         dS 	 t          ||¦  «        }|                     |¦  «         dS # t          j        $ r }|                     |¦  «         Y d}~dS d}~ww xY w)z>Callback for query that converts results to compatible format.N)	r‚   rƒ   r   r„   r\   r…   r†   r   r‡   )rH   r|   r“   r~   r   Ú	convertedÚexcs          rI   Ú_query_callbackzDNSResolver._query_callback¾   sÔ   € ð �8Š8‰:Œ:ð 	ØˆFØÐØ×ÒÝ”˜w­¬×(>Ò(>¸wÑ(GÔ(GÑHÔHñô ð ð ˆFð	&Ý& v¨uÑ5Ô5ˆIð �NŠN˜9Ñ%Ô%Ð%Ð%Ð%øõ Œ~ð 	#ð 	#ð 	#Ø×Ò˜cÑ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"øøøøð	#øøøs   Á!B ÂB7ÂB2Â2B7ú7tuple[asyncio.Future[QueryResult], Callable[..., None]]c                óÎ   — | j                              ¦   «         }| j        r't          j        | j         j        | j        ||¦  «        }nt          j        | j        ||¦  «        }||fS )z>Return a future and callback for query with result conversion.)r3   r‹   rB   rŒ   r�   rŽ   r˜   )rH   r“   r�   r�   s       rI   Ú_get_query_future_callbackz&DNSResolver._get_query_future_callbackÕ   sn   € ð /3¬i×.EÒ.EÑ.GÔ.GˆàÔð 	HÝÔ"Ø”	Ô.ØÔ$ØØñ	ô ˆBˆBõ Ô" 4Ô#7¸ÀÑGÔGˆBØ�rˆzÐrK   úIterator[None]c           	   #  óL  K  — 	 d V — d S # t           j        $ rŠ}|                     ¦   «         rY d }~d S |j        r|j        d         nt          j        }|                     t	          j        |t           j         	                    |¦  «        ¦  «        ¦  «         Y d }~d S d }~ww xY w)Nr   )
r\   r^   r‚   Úargsr   ÚARES_EFORMERRrƒ   r„   r…   r†   )rH   r|   r—   r…   s       rI   Ú_capture_ares_errorzDNSResolver._capture_ares_erroræ   sÇ   è è € ð	ØˆEˆEˆEˆEˆEøÝÔ ð 		ð 		ð 		Ø�xŠx‰zŒzð Ø�����ð $'¤8ÐD�C”H˜Q”K�KµÔ1DˆEØ×ÒÝ”˜u¥g¤m×&<Ò&<¸UÑ&CÔ&CÑDÔDñô ð ð ð ð ð ð ð øøøøð		øøøs   „
 ŠB#™B³A%BÂB#.ÚhostÚstrúLiteral['A']Úqclassú
str | Noneú&asyncio.Future[list[AresQueryAResult]]c                ó   — d S rV   r;   ©rH   r¡   r“   r¤   s       rI   ÚqueryzDNSResolver.queryù   s	   € ð 25°rK   úLiteral['AAAA']ú)asyncio.Future[list[AresQueryAAAAResult]]c                ó   — d S rV   r;   r¨   s       rI   r©   zDNSResolver.queryý   s	   € ð 58°CrK   úLiteral['CAA']ú(asyncio.Future[list[AresQueryCAAResult]]c                ó   — d S rV   r;   r¨   s       rI   r©   zDNSResolver.query  ó	   € ð 47°3rK   úLiteral['CNAME']ú$asyncio.Future[AresQueryCNAMEResult]c                ó   — d S rV   r;   r¨   s       rI   r©   zDNSResolver.query  s	   € ð 03¨srK   úLiteral['MX']ú'asyncio.Future[list[AresQueryMXResult]]c                ó   — d S rV   r;   r¨   s       rI   r©   zDNSResolver.query	  ó	   € ð 36°#rK   úLiteral['NAPTR']ú*asyncio.Future[list[AresQueryNAPTRResult]]c                ó   — d S rV   r;   r¨   s       rI   r©   zDNSResolver.query  s	   € ð 69°SrK   úLiteral['NS']ú'asyncio.Future[list[AresQueryNSResult]]c                ó   — d S rV   r;   r¨   s       rI   r©   zDNSResolver.query  r·   rK   úLiteral['PTR']ú"asyncio.Future[AresQueryPTRResult]c                ó   — d S rV   r;   r¨   s       rI   r©   zDNSResolver.query  ó	   € ð .1¨SrK   úLiteral['SOA']ú"asyncio.Future[AresQuerySOAResult]c                ó   — d S rV   r;   r¨   s       rI   r©   zDNSResolver.query  rÁ   rK   úLiteral['SRV']ú(asyncio.Future[list[AresQuerySRVResult]]c                ó   — d S rV   r;   r¨   s       rI   r©   zDNSResolver.query  r°   rK   úLiteral['TXT']ú(asyncio.Future[list[AresQueryTXTResult]]c                ó   — d S rV   r;   r¨   s       rI   r©   zDNSResolver.query!  r°   rK   ú/asyncio.Future[list[Any]] | asyncio.Future[Any]c                ó  — t          j        dt          d¬¦  «         	 t          |         }n%# t          $ r}t          d|› �¦  «        |‚d}~ww xY wd}|�4	 t          |         }n%# t          $ r}t          d|› �¦  «        |‚d}~ww xY w|                      |¦  «        \  }}|                      |¦  «        5  |�| j	         
                    ||||¬¦  «         n| j	         
                    |||¬¦  «         ddd¦  «         n# 1 swxY w Y   |S )	z6Query DNS records (deprecated, use query_dns instead).z.query() is deprecated, use query_dns() insteadé   ©Ú
stacklevelúinvalid query type: Núinvalid query class: ©Úquery_classÚcallback©rÔ   )ÚwarningsÚwarnÚDeprecationWarningÚquery_type_mapÚKeyErrorÚ
ValueErrorÚquery_class_mapr›   r    rC   r©   ©	rH   r¡   r“   r¤   Ú	qtype_intrl   Ú
qclass_intr|   r�   s	            rI   r©   zDNSResolver.query&  s¹  € õ 	ŒØ<ÝØð	
ñ 	
ô 	
ð 	
ð
	DÝ& uÔ-ˆIˆIøÝð 	Dð 	Dð 	DÝÐ;°EÐ;Ð;Ñ<Ô<À!ÐCøøøøð	Døøøà!%ˆ
ØÐðJÝ,¨VÔ4�
�
øÝð Jð Jð JÝ Ð!A¸Ð!AÐ!AÑBÔBÈÐIøøøøðJøøøð ×1Ò1°)Ñ<Ô<‰ˆˆRØ×%Ò% cÑ*Ô*ð 	Bð 	BØÐ%Ø”×#Ò#Ø˜)°Àbð $ñ ô ð ð ð ”×#Ò# D¨)¸bÐ#ÑAÔAÐAð	Bð 	Bð 	Bñ 	Bô 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bøøøð 	Bð 	Bð 	Bð 	Bð ˆ
s>   ž, ¬
A¶A	Á	AÁA$ Á$
BÁ.BÂBÂ6?DÄDÄDú!asyncio.Future[pycares.DNSResult]c                óâ  — 	 t           |         }n%# t          $ r}t          d|› �¦  «        |‚d}~ww xY wd}|�4	 t          |         }n%# t          $ r}t          d|› �¦  «        |‚d}~ww xY w|                      ¦   «         \  }}|                      |¦  «        5  |�| j                             ||||¬¦  «         n| j                             |||¬¦  «         ddd¦  «         n# 1 swxY w Y   |S )z:Query DNS records, returning native pycares 5.x DNSResult.rÐ   NrÑ   rÒ   rÕ   )rÙ   rÚ   rÛ   rÜ   r‘   r    rC   r©   rÝ   s	            rI   Ú	query_dnszDNSResolver.query_dnsD  s“  € ð	DÝ& uÔ-ˆIˆIøÝð 	Dð 	Dð 	DÝÐ;°EÐ;Ð;Ñ<Ô<À!ÐCøøøøð	Døøøà!%ˆ
ØÐðJÝ,¨VÔ4�
�
øÝð Jð Jð JÝ Ð!A¸Ð!AÐ!AÑBÔBÈÐIøøøøðJøøøð ×+Ò+Ñ-Ô-‰ˆˆRØ×%Ò% cÑ*Ô*ð 	Bð 	BØÐ%Ø”×#Ò#Ø˜)°Àbð $ñ ô ð ð ð ”×#Ò# D¨)¸bÐ#ÑAÔAÐAð	Bð 	Bð 	Bñ 	Bô 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bøøøð 	Bð 	Bð 	Bð 	Bð ˆ
s9   ‚ �
2š-­2ºA Á
A*ÁA%Á%A*Â?C$Ã$C(Ã+C(úasyncio.Future[AresHostResult]úpycares.AddrInfoResult | Nonec                ón  — |                      ¦   «         rdS |�G|                     t          j        |t          j                             |¦  «        ¦  «        ¦  «         dS |€J ‚d„ |j        D ¦   «         }|j        r|j        d         j	        n|}| 
                    t          |g |¬¦  «        ¦  «         dS )z8Callback for gethostbyname that converts AddrInfoResult.Nc                óL   — g | ]!}|j         d                               ¦   «         ‘Œ"S ©r   )ÚaddrÚdecode)rs   Únodes     rI   ru   z7DNSResolver._gethostbyname_callback.<locals>.<listcomp>p  s*   € ÐHÐHÐH°4˜œ 1œ×,Ò,Ñ.Ô.ÐHÐHÐHrK   r   )ÚnameÚaliasesÚ	addresses)r‚   rƒ   r   r„   r\   r…   r†   ÚnodesÚcnamesrë   r‡   r   )rH   r|   r¡   r~   r   rí   rë   s          rI   Ú_gethostbyname_callbackz#DNSResolver._gethostbyname_callback^  sÐ   € ð �8Š8‰:Œ:ð 	ØˆFØÐØ×ÒÝ”˜w­¬×(>Ò(>¸wÑ(GÔ(GÑHÔHñô ð ð ð ð Ð%Ð%Ð%àHÐH¸6¼<ÐHÑHÔHˆIà,2¬MÐC�6”= Ô#Ô(Ð(¸tˆDØ�NŠNÝ D°"À	ÐJÑJÔJñô ð ð ð rK   Úfamilyúsocket.AddressFamilyc                ó˜  — t          j        dt          d¬¦  «         | j                             ¦   «         }| j        r't          j        | j        j        | j	        ||¦  «        }nt          j        | j	        ||¦  «        }|  
                    |¦  «        5  | j                             |d||¬¦  «         ddd¦  «         n# 1 swxY w Y   |S )z¿
        Resolve hostname to addresses.

        Deprecated: Use getaddrinfo() instead. This is implemented using
        getaddrinfo as pycares 5.x removed the gethostbyname method.
        z8gethostbyname() is deprecated, use getaddrinfo() insteadrÍ   rÎ   N)rñ   rÔ   )rÖ   r×   rØ   r3   r‹   rB   rŒ   r�   rŽ   rð   r    rC   Úgetaddrinfo)rH   r¡   rñ   r|   r�   s        rI   ÚgethostbynamezDNSResolver.gethostbynamew  s&  € õ 	ŒØFÝØð	
ñ 	
ô 	
ð 	
ð
 /3¬i×.EÒ.EÑ.GÔ.GˆàÔð 	LÝÔ"Ø”	Ô.ØÔ,ØØñ	ô ˆBˆBõ Ô" 4Ô#?ÀÀdÑKÔKˆBØ×%Ò% cÑ*Ô*ð 	Nð 	NØŒM×%Ò% d¨D¸È"Ð%ÑMÔMÐMð	Nð 	Nð 	Nñ 	Nô 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nøøøð 	Nð 	Nð 	Nð 	Nàˆ
s   ÂB?Â?CÃCr   ÚportÚprotoÚtypeÚflagsú&asyncio.Future[pycares.AddrInfoResult]c           
     óÐ   — |                       ¦   «         \  }}|                      |¦  «        5  | j                             |||||||¬¦  «         d d d ¦  «         n# 1 swxY w Y   |S )N)rñ   rø   r÷   rù   rÔ   )r‘   r    rC   rô   )	rH   r¡   rñ   rö   r÷   rø   rù   r|   r�   s	            rI   rô   zDNSResolver.getaddrinfo”  s½   € ð ×+Ò+Ñ-Ô-‰ˆˆRØ×%Ò% cÑ*Ô*ð 		ð 		ØŒM×%Ò%ØØØØØØØð &ñ ô ð ð		ð 		ð 		ñ 		ô 		ð 		ð 		ð 		ð 		ð 		ð 		øøøð 		ð 		ð 		ð 		ð ˆ
s   ­"AÁAÁ"AÚsockaddrú+tuple[str, int] | tuple[str, int, int, int]ú&asyncio.Future[pycares.NameInfoResult]c                óÈ   — |                       ¦   «         \  }}|                      |¦  «        5  | j                             |||¬¦  «         d d d ¦  «         n# 1 swxY w Y   |S ©NrÕ   )r‘   r    rC   Úgetnameinfo)rH   rü   rù   r|   r�   s        rI   r  zDNSResolver.getnameinfo«  sµ   € ð ×+Ò+Ñ-Ô-‰ˆˆRØ×%Ò% cÑ*Ô*ð 	Dð 	DØŒM×%Ò% h°ÀÐ%ÑCÔCÐCð	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	Dàˆ
s   ­AÁAÁArë   ú"asyncio.Future[pycares.HostResult]c                óÆ   — |                       ¦   «         \  }}|                      |¦  «        5  | j                             ||¬¦  «         d d d ¦  «         n# 1 swxY w Y   |S r   )r‘   r    rC   Úgethostbyaddr)rH   rë   r|   r�   s       rI   r  zDNSResolver.gethostbyaddr¶  s    € à×+Ò+Ñ-Ô-‰ˆˆRØ×%Ò% cÑ*Ô*ð 	;ð 	;ØŒM×'Ò'¨°rÐ'Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;àˆ
s   ­AÁAÁAc                ó8   — | j                              ¦   «          d S rV   )rC   Úcancelrx   s    rI   r  zDNSResolver.cancel½  s   € ØŒ×ÒÑÔÐÐÐrK   rP   rR   rS   rT   c                óê  — |s|r¹|rK| j                              || j        j        |t          j        ¦  «         | j                             |¦  «         |rK| j                              || j        j        t          j        |¦  «         | j	                             |¦  «         | j
        €|                      ¦   «          d S d S || j        v r4| j                             |¦  «         | j                              |¦  «         || j	        v r4| j	                             |¦  «         | j                              |¦  «         | j        s0| j	        s+| j
        �&| j
                             ¦   «          d | _
        d S d S d S d S rV   )r3   Ú
add_readerrC   Ú
process_fdr\   ÚARES_SOCKET_BADrE   ÚaddÚ
add_writerrF   rG   Ú_start_timerÚdiscardÚremove_readerÚremove_writerr  )rH   rP   rR   rT   s       rI   rW   zDNSResolver._sock_state_cbÀ  sž  € Øð 	#�xð 	#Øð 'Ø”	×$Ò$Ø˜œÔ0°"µgÔ6Mñô ð ð ”×"Ò" 2Ñ&Ô&Ð&Øð (Ø”	×$Ò$Ø˜œÔ0µ'Ô2IÈ2ñô ð ð ”×#Ò# BÑ'Ô'Ð'ØŒ{Ð"Ø×!Ò!Ñ#Ô#Ð#Ð#Ð#ð #Ð"ð �T”^Ð#Ð#Ø”×&Ò& rÑ*Ô*Ð*Ø”	×'Ò'¨Ñ+Ô+Ð+à�T”_Ð$Ð$Ø”×'Ò'¨Ñ+Ô+Ð+Ø”	×'Ò'¨Ñ+Ô+Ð+ð ”Nð#àœð#ð ”KÐ+à”×"Ò"Ñ$Ô$Ð$Ø"�”��ð#ð #ð #ð #ð ,Ð+rK   c                óº   — | j         s| j        rE| j                             t          j        t          j        ¦  «         |                      ¦   «          d S d | _        d S rV   )rE   rF   rC   r	  r\   r
  r  rG   rx   s    rI   Ú	_timer_cbzDNSResolver._timer_cbà  s_   € ØŒ>ð 	˜Tœ_ð 	ØŒM×$Ò$ÝÔ'­Ô)@ñô ð ð ×ÒÑÔÐÐÐàˆDŒKˆKˆKrK   c                ó�   — | j         }|�|dk     s|dk    rd}n|dk    rd}| j                             || j        ¦  «        | _        d S )Nr   r   gš™™™™™¹?)r@   r3   Ú
call_laterr  rG   )rH   r:   s     rI   r  zDNSResolver._start_timeré  sR   € Ø”-ˆØˆ?˜g¨šk˜k¨W°qª[¨[ØˆGˆGØ˜Š\ˆ\ØˆGà”i×*Ò*¨7°D´NÑCÔCˆŒˆˆrK   c                óš  — | j         rdS d| _         | j        � | j                             ¦   «          d| _        | j        D ]}| j                             |¦  «         Œ| j        D ]}| j                             |¦  «         Œ| j                             ¦   «          | j                             ¦   «          | j	         
                    ¦   «          dS )z:Cleanup timers and file descriptors when closing resolver.NT)r<   rG   r  rE   r3   r  rF   r  ÚclearrC   Úclose)rH   rP   s     rI   Ú_cleanupzDNSResolver._cleanupò  sÓ   € àŒ<ð 	ØˆFàˆŒàŒ;Ð"ØŒK×ÒÑ Ô Ð ØˆDŒKð ”.ð 	(ð 	(ˆBØŒI×#Ò# BÑ'Ô'Ð'Ð'Ø”/ð 	(ð 	(ˆBØŒI×#Ò# BÑ'Ô'Ð'Ð'àŒ×ÒÑÔÐØŒ×ÒÑÔÐØŒ×ÒÑÔÐÐÐrK   c              ƒ  ór   K  — | j         s| j                             ¦   «          |                      ¦   «          dS )zÅ
        Cleanly close the DNS resolver.

        This should be called to ensure all resources are properly released.
        After calling close(), the resolver should not be used again.
        N)r<   rC   r  r  rx   s    rI   r  zDNSResolver.close  s7   è è € ð Œ|ð 	#ØŒM× Ò Ñ"Ô"Ð"Ø�Š‰ŒˆˆˆrK   c              ƒ  ó
   K  — | S )z Enter the async context manager.r;   rx   s    rI   Ú
__aenter__zDNSResolver.__aenter__  s   è è € àˆrK   Úexc_typeútype[BaseException] | NoneÚexc_valúBaseException | NoneÚexc_tbúTracebackType | Nonec              ƒ  ó>   K  — |                       ¦   «         ƒ d{V —† dS )zExit the async context manager.N)r  )rH   r  r  r   s       rI   Ú	__aexit__zDNSResolver.__aexit__  s.   è è € ð �jŠj‰lŒlÐÐÐÐÐÐÐÐÐrK   c                óR   — t          | d¦  «        r|                      ¦   «          dS dS )z6Handle cleanup when the resolver is garbage collected.rC   N)Úhasattrr  rx   s    rI   Ú__del__zDNSResolver.__del__  s1   € õ �4˜Ñ$Ô$ð 	Ø�MŠM‰OŒOˆOˆOˆOð	ð 	rK   )NN)r1   r2   r3   r4   r5   r
   r6   r7   )r5   r
   r6   rL   )r6   rn   )ry   rz   r6   r7   )r|   r}   r~   r   r   r€   r6   r7   )r6   r‰   )
r|   r’   r“   rQ   r~   r”   r   r€   r6   r7   )r“   rQ   r6   r™   )r|   r}   r6   rœ   ).)r¡   r¢   r“   r£   r¤   r¥   r6   r¦   )r¡   r¢   r“   rª   r¤   r¥   r6   r«   )r¡   r¢   r“   r­   r¤   r¥   r6   r®   )r¡   r¢   r“   r±   r¤   r¥   r6   r²   )r¡   r¢   r“   r´   r¤   r¥   r6   rµ   )r¡   r¢   r“   r¸   r¤   r¥   r6   r¹   )r¡   r¢   r“   r»   r¤   r¥   r6   r¼   )r¡   r¢   r“   r¾   r¤   r¥   r6   r¿   )r¡   r¢   r“   rÂ   r¤   r¥   r6   rÃ   )r¡   r¢   r“   rÅ   r¤   r¥   r6   rÆ   )r¡   r¢   r“   rÈ   r¤   r¥   r6   rÉ   rV   )r¡   r¢   r“   r¢   r¤   r¥   r6   rË   )r¡   r¢   r“   r¢   r¤   r¥   r6   rà   )
r|   rã   r¡   r¢   r~   rä   r   r€   r6   r7   )r¡   r¢   rñ   rò   r6   rã   )r¡   r¢   rñ   rò   rö   r€   r÷   rQ   rø   rQ   rù   rQ   r6   rú   rç   )rü   rý   rù   rQ   r6   rþ   )rë   r¢   r6   r  )r6   r7   r[   )r6   r   )r  r  r  r  r   r!  r6   r7   )"Ú__name__Ú
__module__Ú__qualname__rJ   rA   Úpropertyr1   Úsetterrˆ   r‘   r˜   r›   Ú
contextlibÚcontextmanagerr    r   r©   râ   rð   rõ   ÚsocketÚ	AF_UNSPECrô   r  r  r  rW   r  r  r  r  r  r#  r&  r;   rK   rI   r   r   K   s;  € € € € € ð -1Ø15ðð ð ð ð ð*2
ð 2
ð 2
ð 2
ðh ðDð Dð Dñ „XðDð
 Ôð&ð &ð &ñ Ôð&ð#ð #ð #ð #ðð ð ð ð &ð &ð &ð &ð.ð ð ð ð" Ôðð ð ñ Ôðð$ àCFð5ð 5ð 5ð 5ñ „Xð5ð àFIð8ð 8ð 8ð 8ñ „Xð8ð àEHð7ð 7ð 7ð 7ñ „Xð7ð àGJð3ð 3ð 3ð 3ñ „Xð3ð àDGð6ð 6ð 6ð 6ñ „Xð6ð àGJð9ð 9ð 9ð 9ñ „Xð9ð àDGð6ð 6ð 6ð 6ñ „Xð6ð àEHð1ð 1ð 1ð 1ñ „Xð1ð àEHð1ð 1ð 1ð 1ñ „Xð1ð àEHð7ð 7ð 7ð 7ñ „Xð7ð àEHð7ð 7ð 7ð 7ñ „Xð7ð
 ;?ðð ð ð ð ð> ;?ðð ð ð ð ð4ð ð ð ð2ð ð ð ð@ (.Ô'7ØØØØðð ð ð ð ð4 ð	ð 	ð 	ð 	ð 	ðð ð ð ðð ð ð ð#ð #ð #ð #ð@ð ð ð ðDð Dð Dð Dðð ð ð ð*	ð 	ð 	ð 	ðð ð ð ðð ð ð ðð ð ð ð ð rK   r   )DÚ
__future__r   r=   r,  rŒ   Úloggingr.  r_   rÖ   rj   Úcollections.abcr   r   r   r   Útypesr   Útypingr	   r
   r   r   r   r\   Ú r   Úcompatr   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú__version__Ú__all__r   rh   Ú	getLoggerr'  ra   ÚQUERY_TYPE_AÚQUERY_TYPE_AAAAÚQUERY_TYPE_ANYÚQUERY_TYPE_CAAÚQUERY_TYPE_CNAMEÚQUERY_TYPE_MXÚQUERY_TYPE_NAPTRÚQUERY_TYPE_NSÚQUERY_TYPE_PTRÚQUERY_TYPE_SOAÚQUERY_TYPE_SRVÚQUERY_TYPE_TXTrÙ   ÚQUERY_CLASS_INÚQUERY_CLASS_CHAOSÚQUERY_CLASS_HSÚQUERY_CLASS_NONEÚQUERY_CLASS_ANYrÜ   r   r;   rK   rI   ú<module>rK     sz  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà €€€à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð" €ð€ð
 €WˆT�]„]€ð@ð ð
 ˆ'Ô
˜HÑ
%Ô
%€ð 
Ô	ØÔ#ØÔ!ØÔ!ØÔ%Ø
Ô
ØÔ%Ø
Ô
ØÔ!ØÔ!ØÔ!ØÔ!ðð €ð  Ô
 ØÔ&Ø
Ô
 ØÔ$ØÔ"ðð €ð[ð [ð [ð [ð [ñ [ô [ð [ð [ð [rK   