ó
    Û°›j{*  ã                   óô  • % S SK r S SKrS SKrS SKrS SKJrJrJr  SSKJ	r	J
r
  Sr S SKr\" \R                  S5      r\R"                  \R$                  -  r\R(                  \R*                  -  r\R.                  r\" \S5      (       a  \\R2                  -  r\R4                  S	:H  rS
\S\4S jr " S S\	5      r " S S\	5      r  " S S5      r!\"\ \-     r#\(       a  \ O\r$\#\%S'   g! \ a    SrSr N¸f = f)é    N)ÚAnyÚFinalÚOptionalé   )ÚAbstractResolverÚResolveResult)ÚThreadedResolverÚAsyncResolverÚDefaultResolverÚgetaddrinfoFÚAI_MASKÚwin32ÚhostÚreturnc                 ó`   • [         =(       a"    U R                  S5      R                  5       S:H  $ )NÚ.Ú	localhost)Ú_IS_WINDOWSÚrstripÚcasefold)r   s    ÚM/home/mande/repo/quber/.venv/lib/python3.13/site-packages/aiohttp/resolver.pyÚ_is_windows_localhostr      s$   € Ü×E˜4Ÿ;™; sÓ+×4Ñ4Ó6¸+ÑEÐEó    c            
       ó¢   • \ rS rSrSrSS\R                  S-  SS4S jjrS\R                  4S\
S	\S
\R                  S\\   4S jjrSS jrSrg)r	   é!   z„Threaded resolver.

Uses an Executor for synchronous getaddrinfo() calls.
concurrent.futures.ThreadPoolExecutor is used by default.
NÚloopr   c                 óJ   • U=(       d    [         R                  " 5       U l        g ©N)ÚasyncioÚget_running_loopÚ_loop)Úselfr   s     r   Ú__init__ÚThreadedResolver.__init__(   s   € Ø×7œW×5Ò5Ó7ˆ�
r   r   r   ÚportÚfamilyc              ƒ   ó´  #   •  U R                   R                  UU[        R                  U[        S9I S h  v•N n/ nU H¯  u  p6pvnU[        R                  :X  aY  [        U5      S:  a  M,  US   (       a6  U R                   R                  U[        5      I S h  v•N u  pš[        U
5      nO"US S u  p’OU[        R                  :X  d   eUu  p’UR                  [        UU	UUU[        S95        M±     U$  N½! [        R
                   aI    [        U5      (       d  e U R                   R                  UU[        R                  USS9I S h  v•N  n GNf = f N½7f)N)Útyper&   Úflagsr   é   é   ©Úhostnamer   r%   r&   Úprotor)   )r!   r   ÚsocketÚSOCK_STREAMÚ_AI_ADDRCONFIGÚgaierrorr   ÚAF_INET6ÚlenÚgetnameinfoÚ_NAME_SOCKET_FLAGSÚintÚAF_INETÚappendr   Ú_NUMERIC_SOCKET_FLAGS)r"   r   r%   r&   ÚinfosÚhostsÚ_r.   ÚaddressÚresolved_hostÚ_ports              r   ÚresolveÚThreadedResolver.resolve+   se  é € ð	ØŸ*™*×0Ñ0ØØÜ×'Ñ'ØÜ$ð 1ð ÷ ˆEð$ &(ˆÛ,1Ñ(ˆF�u ØœŸ™Ó(Ü�w“< !Ó#ñ Ø˜1—:ð 26·±×1GÑ1GØÔ!3ó2÷ ,Ñ(�Mô ˜u›:‘Dà*1°"°1¨+Ñ'�M 4à¤§¡Ó/Ð/Ð/Ø&-Ñ#�Ø�L‰LÜØ!Ø&ØØ!ØÜ/ñö	ñ' -2ð< ˆñcøô �‰ó 		Ü(¨×.Ñ.ØØŸ*™*×0Ñ0ØØÜ×'Ñ'ØØð 1ð ÷ ð ‹Eð		úñ,,ùsR   ‚E„2C6 ¶C4·C6 »AEÂEÂAEÃ4C6 Ã6AEÅ	EÅ
EÅEÅEÅEc              ƒ   ó   #   • g 7fr   © ©r"   s    r   ÚcloseÚThreadedResolver.closeb   s   é € Øùs   ‚)r!   r   ©r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚAbstractEventLoopr#   r/   r8   Ústrr7   ÚAddressFamilyÚlistr   rA   rF   Ú__static_attributes__rD   r   r   r	   r	   !   sf   † ññ8˜W×6Ñ6¸Ñ=ð 8Èõ 8ð &'ÀvÇ~Á~ñ5Øð5Ø"ð5Ø06×0DÑ0Dð5à	ˆmÑ	õ5÷nr   r	   c                   óò   • \ rS rSrSr SS\R                  S-  S\S\SS4S jjrS	\	R                  4S
\S\S\	R                  S\\   4S jjrS	\	R                  4S
\S\S\S\\\\4      4S jjrSS jrSrg)r
   éf   z9Use the `aiodns` package to make asynchronous DNS lookupsNr   ÚargsÚkwargsr   c                 óœ  • [         c  [        S5      eU=(       d    [        R                  " 5       U l        S U l        U(       d  U(       a  [         R                  " U0 UD6U l        g [        5       U l        U R
                  R                  X R                  5      U l        [        U R                  S5      (       d  U R                  U l        g g )Nz Resolver requires aiodns libraryÚgethostbyname)ÚaiodnsÚRuntimeErrorr   r    r!   Ú_managerÚDNSResolverÚ	_resolverÚ_DNSResolverManagerÚget_resolverÚhasattrÚ_resolve_with_queryrA   )r"   r   rU   rV   s       r   r#   ÚAsyncResolver.__init__i   s™   € ô ‰>ÜÐAÓBÐBà×7œW×5Ò5Ó7ˆŒ
Ø48ˆŒö –6Ü#×/Ò/°Ð@¸Ñ@ˆDŒNØä+Ó-ˆŒØŸ™×3Ñ3°D¿*¹*ÓEˆŒä�t—~‘~ ×7Ñ7à×3Ñ3ˆD�Lð 8r   r   r   r%   r&   c              ƒ   óŒ  #   •   U R                   R                  UU[        R                  U[        S9I S h  v•N n/ nUR                   GH  nUR                  n	UR                  [        R                  :X  a�  [        U	5      S:”  aX  U	S   (       aN  U R                   R!                  U	S   R#                  S5      /U	SS  Q7[$        5      I S h  v•N n
U
R&                  nOSU	S   R#                  S5      nU	S   nO9UR                  [        R(                  :X  d   eU	S   R#                  S5      nU	S   nUR+                  [-        UUUUR                  S[.        S95        GM     U(       d  [        S S5      eU$  GN@! [
        R                  R                   aI    [        U5      (       d  e U R                   R                  UU[        R                  USS9I S h  v•N  n GN¤f = f! [
        R                  R                   a<  n[        UR                  5      S:¼  a  UR                  S   OSn[        S U5      UeS nAff = f GNt7f)N)r%   r(   r&   r)   r   r   úDNS lookup failedr*   Úasciir,   )r]   r   r/   r0   r1   rY   ÚerrorÚDNSErrorr   r4   rU   ÚOSErrorÚnodesÚaddrr&   r3   r5   Údecoder6   Únoder8   r9   r   r:   )r"   r   r%   r&   ÚrespÚexcÚmsgr<   rl   r>   Úresultr?   s               r   rA   ÚAsyncResolver.resolve‚   s  é € ð	.ðØ!Ÿ^™^×7Ñ7ØØÜ×+Ñ+Ø!Ü(ð 8ð ÷ �ð( &(ˆØ—J•JˆDØGKÇyÁyˆGØ�{‰{œfŸo™oÓ-Ü�w“< !Ó#¨°¯
ð $(§>¡>×#=Ñ#=Ø  ™×*Ñ*¨7Ó3ÐB°g¸a¸b°kÑBÜ*ó$÷ �Fð %+§K¡K‘Mà$+¨A¡J×$5Ñ$5°gÓ$>�MØ" 1™:‘Dà—{‘{¤f§n¡nÓ4Ð4Ð4Ø '¨¡
× 1Ñ 1°'Ó :�Ø˜q‘z�Ø�L‰LÜØ!Ø&ØØŸ;™;ØÜ/ñ÷	ñ' ö< Ü˜$Ð 3Ó4Ð4àˆòmøô —<‘<×(Ñ(ó 	Ü,¨T×2Ñ2ØØ!Ÿ^™^×7Ñ7ØØÜ×+Ñ+Ø!Øð 8ð ÷ ð “ð	ûô �|‰|×$Ñ$ó 	.Ü!$ S§X¡X£°!Ó!3�#—(‘(˜1’+Ð9LˆCÜ˜$ Ó$¨#Ð-ûð	.úòùsp   ‚I…2E: ·E7¸E: ¼BIÃIÃB)IÅ7E: Å:AG!ÇGÇG!ÇG$ ÇIÇ G!Ç!G$ Ç$H>È7H9È9H>È>Ic           
   ƒ   óà  #   • U[         R                  :X  a  SOSn U R                  R                  X5      I S h  v•N n/ nU H3  n	UR                  UU	R                  UUS[         R                  S.5        M5     U(       d  [        S S5      eU$  NT! [        R
                  R                   a<  n[        UR                  5      S:¼  a  UR                  S   OSn[        S U5      UeS nAff = f7f)NÚAAAAÚAr   rd   r   r,   )r/   r3   r]   ÚqueryrY   rf   rg   r4   rU   rh   r9   r   ÚAI_NUMERICHOST)
r"   r   r%   r&   Úqtyperm   rn   ro   r<   Úrrs
             r   ra   Ú!AsyncResolver._resolve_with_query¿   s×   é € ð "(¬6¯?©?Ó!:‘vÀˆð	.ØŸ™×-Ñ-¨dÓ:×:ˆDð
 ˆÛˆBØ�L‰Là $ØŸG™GØ Ø$ØÜ#×2Ñ2ñö	ñ ö Ü˜$Ð 3Ó4Ð4àˆñ+ ;øÜ�|‰|×$Ñ$ó 	.Ü!$ S§X¡X£°!Ó!3�#—(‘(˜1’+Ð9LˆCÜ˜$ Ó$¨#Ð-ûð	.üs8   ‚C.œB ºB»B ¿AC.ÂB ÂC+Â/7C&Ã&C+Ã+C.c              ƒ   óò   #   • U R                   (       a4  U R                   R                  X R                  5        S U l         S U l        g U R                  b  U R                  R	                  5         S U l        g 7fr   )r[   Úrelease_resolverr!   r]   ÚcancelrE   s    r   rF   ÚAsyncResolver.closeÜ   sT   é € Ø�=�=à�M‰M×*Ñ*¨4·±Ô<Ø ˆDŒMØ!ˆDŒNØà�>‰>Ñ%Ø�N‰N×!Ñ!Ô#Øˆ�ùs   ‚A5A7)r!   r[   r]   rA   r   rH   )rI   rJ   rK   rL   rM   r   rN   r   r#   r/   r8   rO   r7   rP   rQ   r   rA   Údictra   rF   rR   rD   r   r   r
   r
   f   s¾   † ÙCð 26ñ4à×'Ñ'¨$Ñ.ð4ð ð4ð ð	4ð
 
õ4ð4 &'ÀvÇ~Á~ñ;Øð;Ø"ð;Ø06×0DÑ0Dð;à	ˆmÑ	õ;ð| &'°f·n±nñØðØ"ðØ03ðà	ˆd�3˜�8‰nÑ	õ÷:
r   r
   c                   ó¤   ^ • \ rS rSr% SrSr\S    \S'   SU 4S jjrSS jr	SS	S
\
R                  SS4S jrSS	S
\
R                  SS4S jrSrU =r$ )r^   éé   z—Manager for aiodns.DNSResolver objects.

This class manages shared aiodns.DNSResolver instances
with no custom arguments across different event loops.
NÚ	_instancer   c                 ó’   >• U R                   c.  [        TU ]	  U 5      U l         U R                   R                  5         U R                   $ r   )r�   ÚsuperÚ__new__Ú_init)ÚclsÚ	__class__s    €r   r„   Ú_DNSResolverManager.__new__ò   s7   ø€ Ø�=‰=Ñ Ü!™G™O¨CÓ0ˆCŒMØ�M‰M×ÑÔ!Ø�}‰}Ðr   c                 ó8   • [         R                  " 5       U l        g r   )ÚweakrefÚWeakKeyDictionaryÚ
_loop_datarE   s    r   r…   Ú_DNSResolverManager._initø   s   € ô
 ×%Ò%Ó'ð 	�r   Úclientr
   r   zaiodns.DNSResolverc                 óÜ   • X R                   ;  a:  [        R                  " US9n[        R                  " 5       nX44U R                   U'   OU R                   U   u  p4UR                  U5        U$ )zþGet or create the shared aiodns.DNSResolver instance for a specific event loop.

Args:
    client: The AsyncResolver instance requesting the resolver.
           This is required to track resolver usage.
    loop: The event loop to use for the resolver.
)r   )rŒ   rY   r\   rŠ   ÚWeakSetÚadd)r"   rŽ   r   ÚresolverÚ
client_sets        r   r_   Ú _DNSResolverManager.get_resolverÿ   sa   € ð —‘Ó&Ü×)Ò)¨tÑ4ˆHÜ9@¿ºÓ9JˆJØ%-Ð$:ˆD�O‰O˜DÒ!ð $(§?¡?°4Ñ#8Ñ ˆHð 	�‰�vÔØˆr   c                 ó¼   • U R                   R                  U5      nUc  gUu  pEUR                  U5        U(       d!  Ub  UR                  5         U R                   U	 gg)z®Release the resolver for an AsyncResolver client when it's closed.

Args:
    client: The AsyncResolver instance to release.
    loop: The event loop the resolver was using.
N)rŒ   ÚgetÚdiscardr|   )r"   rŽ   r   Úcurrent_loop_datar’   r“   s         r   r{   Ú$_DNSResolverManager.release_resolver  s\   € ð !ŸO™O×/Ñ/°Ó5ÐØÑ$ØØ0ÑˆØ×Ñ˜6Ô"æØÑ#Ø—‘Ô!Ø—‘ Ñ%ð r   )rŒ   )r   r^   rH   )rI   rJ   rK   rL   rM   r�   r   Ú__annotations__r„   r…   r   rN   r_   r{   rR   Ú__classcell__)r‡   s   @r   r^   r^   é   so   ø‡ ñð 26€IˆxÐ-Ñ.Ó5÷ô(ðØ%ðØ-4×-FÑ-Fðà	ôð.&Ø%ð&Ø-4×-FÑ-Fð&à	÷&ò &r   r^   r   )&r   r/   ÚsysrŠ   Útypingr   r   r   Úabcr   r   Ú__all__rY   r`   r\   Úaiodns_defaultÚImportErrorrv   ÚAI_NUMERICSERVr:   ÚNI_NUMERICHOSTÚNI_NUMERICSERVr6   ÚAI_ADDRCONFIGr1   r   Úplatformr   rO   Úboolr   r	   r
   r^   r(   Ú_DefaultTyper   rš   rD   r   r   Ú<module>r©      s  ðÜ Û Û 
Û ß 'Ñ 'ç 0à
B€ðÛá˜V×/Ñ/°Ó?€Nð ×-Ñ-°×0EÑ0EÑEÐ Ø×*Ñ*¨V×-BÑ-BÑBÐ Ø×%Ñ%€Ù
ˆ6�9×ÑØ�f—n‘nÑ$€NØ�l‰l˜gÑ%€ðF ð F¨ô FôBÐ'ô BôJ@Ð$ô @÷F@&ñ @&ðF �MÐ$4Ñ4Ñ5€Þ1?¡ÐEU€�Ô Uøð{ ó Ø€FØ‚Nðús   §C* Ã*
C7Ã6C7