
    hI~              #       f   S r SSKrSSKrSSKr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JrJr  SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr  SSKJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'   SSK(r(\&(       a  SSK,r,\RZ                  R\                  r/S r0SFS jr1 SFS\Rd                  Rf                  S	\Rh                  Rj                  \6-  S
\
S\7S-  S\\8\74   4
S jjr9          SGS\Rd                  Rf                  S
\
S-  S\7S-  S\:S\:S\\Rv                  Rx                  \Rz                  R|                  4   S-  S\6S-  S\:S\:S\:S\Rh                  Rj                  S-  S\
4S jjr?           SHS\Rh                  Rj                  S\@S\7S-  S\8S\@S-  S\8S\:S\:S\:S\:S\Rd                  Rf                  S-  S\Rd                  R                  S-  S\:S\Rh                  Rj                  4S  jjrB           SIS\Rh                  Rj                  S\@S\7S-  S\8S\@S-  S\8S\:S\:S\:S!\Rd                  Rf                  S-  S"\Rd                  R                  S-  S\Rd                  R                  S-  S\:S\\Rh                  Rj                  \:4   4S# jjrD SFS\Rd                  R                  S	\Rh                  Rj                  \6-  S\7S-  S\\8\74   4S$ jjrES% rF     SJS\Rd                  R                  S\7S-  S\:S\\Rv                  Rx                  \Rz                  R|                  4   S-  S\6S-  S\:S\\Rh                  Rj                  \74   4S& jjrG        SKS\Rh                  Rj                  S\@S\7S-  S\8S\@S-  S\8S\:S\:S\Rd                  R                  S-  S\Rd                  R                  S-  S\Rh                  Rj                  4S' jjrH           SLS\Rh                  Rj                  S\@S\7S-  S\8S\@S-  S\8S\:S\:S\Rd                  R                  S-  S\Rd                  R                  S-  S)\(R                  S-  S*\@S-  S+\:\@-  S\Rh                  Rj                  4S, jjrJS-\S.   SS.4S/ jrKSS0SSSSSS1S(S(SS\R                  \R                  4S\Rh                  Rj                  S\@S\7S-  S\8S\@S-  S\8S\:S\:S2\S3   S4\@S5\:S+\:\@-  \(R                  -  S6\@S-  S-\S.   S7\8S8\S\Rh                  Rj                  4"S9 jjrN          SMS\Rh                  Rj                  S\@S:\@S\7S-  S\8S\@S-  S\8S\:S\:S+\:\@-  \(R                  -  S\Rd                  R                  S-  S5\:S;\R                  R                  S-  S\Rh                  Rj                  4S< jjrQ           SNS\Rh                  Rj                  S\@S\7S-  S\8S\@S-  S\8S\:S\:S;\R                  R                  S-  S+\:\@-  S\Rd                  R                  S-  S=\@S-  S*\@S-  S\Rh                  Rj                  4S> jjrOS?\R                  R                  S@\Rd                  R                  S\Rh                  Rj                  SA\8S-  S\7S-  S\7S\
4SB jrUSSSSSS\!R                  S4S\@S?\R                  R                  S\Rh                  Rj                  S-  S\8S\7S-  SC\7S-  S\@S-  S\8SD\!S\Rd                  R                  S-  SS4SE jjrWg! \) a
    SSK*J+r(   GNf = f)OzTalk to a DNS server.    N)AnyDictOptionalTuplecast)NullContext)BadResponseHTTPVersionNoDOHNoDOQUDPMode_check_status_compute_times_matches_destination
_remaininghave_dohmake_ssl_contextc                     U(       d  U(       aF  Uc@  U [         R                  :X  a  SnX4$ U [         R                  :X  a  SnX4$ [        SU  35      eX4$ g )Nz0.0.0.0z::zunknown address family )socketAF_INETAF_INET6NotImplementedError)afaddressports      cC:\Users\ROHAN GUPTA\OneDrive\Desktop\mathbuddy-assessment\venv\Lib\site-packages\dns/asyncquery.py_source_tupler   B   sf     $?V^^##
 	 v&  *,CB4*HII    c                 ^    U b*  U(       d  [         R                   " 5       n[        X-
  S5      $ g Nr   )timemax)
expirationnows     r   _timeoutr%   R   s)    ))+C:#Q''r   sockwhatdestinationr#   returnc                    #    [        U[        R                  R                  5      (       a  UR	                  5       n[
        R
                  " 5       nU R                  X[        X45      5      I Sh  vN nXT4$  N7f)a^  Send a DNS message to the specified UDP socket.

*sock*, a ``dns.asyncbackend.DatagramSocket``.

*what*, a ``bytes`` or ``dns.message.Message``, the message to send.

*destination*, a destination tuple appropriate for the address family
of the socket, specifying where to send the query.

*expiration*, a ``float`` or ``None``, the absolute time at which
a timeout exception should be raised.  If ``None``, no timeout will
occur.  The expiration value is meaningless for the asyncio backend, as
asyncio's transport sendto() never blocks.

Returns an ``(int, float)`` tuple of bytes sent and the sent time.
N)
isinstancednsmessageMessageto_wirer!   sendtor%   )r&   r'   r(   r#   	sent_timens         r   send_udpr3   [   sZ     . $++,,||~		Ikk$Xj-LMMA> 	Ns   A-A9/A70A9Fignore_unexpectedone_rr_per_rrsetkeyringrequest_macignore_trailingraise_on_truncationignore_errorsqueryc           	      6  #    Sn U R                  S[        U5      5      I Sh  vN u  p[        U R                  XU5      (       d  MD  [        R                  " 5       n [
        R                  R                  UUUUUUS9nU	(       a  U
b  U
R                  U5      (       d  M  XU4$  N! [
        R                  R                   a:  nU	(       a-  U
b*  U
R                  UR                  5       5      (       d   SnAM  e SnAf[         a    U	(       a   GM  e f = f7f)aR  Read a DNS message from a UDP socket.

*sock*, a ``dns.asyncbackend.DatagramSocket``.

See :py:func:`dns.query.receive_udp()` for the documentation of the other
parameters, and exceptions.

Returns a ``(dns.message.Message, float, tuple)`` tuple of the received message, the
received time, and the address where the message arrived from.
r     N)r6   r7   r5   r8   r9   )recvfromr%   r   familyr!   r,   r-   	from_wire	Truncatedis_response	Exception)r&   r(   r#   r4   r5   r6   r7   r8   r9   r:   r;   wirefrom_addressreceived_timeres                   r   receive_udprI   y   s    0 D
%)]]5(::N%OO#KK4E
 
 			%%'!1 /$7 & A. U.u7H7H7K7K,//A  P {{$$ 		 %))!))+66 			sK   "DB'9D"B) 'D)D.C<5D;C<<DDDD5   qwheretimeoutr   sourcesource_portbackendc                 $  #    U R                  5       n[        U5      u  p[        R                  R	                  U5      n[        X4U5      nU
(       a  [        U
5      nOwU(       d  [        R                  R                  5       n[        UXE5      nUR                  5       (       a  X4nOSnUR                  U[        R                  SUU5      I Sh  vN nU ISh  vN n[        UUUU5      I Sh  vN   [        UUUUUU R                   U R"                  UU	UU 5      I Sh  vN u  nnnUU-
  Ul        U(       d  U R'                  U5      (       d  [(        eUsSSS5      ISh  vN   $  N N N} NN N! , ISh  vN  (       d  f       g= f7f)a"  Return the response obtained after sending a query via UDP.

*sock*, a ``dns.asyncbackend.DatagramSocket``, or ``None``,
the socket to use for the query.  If ``None``, the default, a
socket is created.  Note that if a socket is provided, the
*source*, *source_port*, and *backend* are ignored.

*backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
the default, then dnspython will use the default backend.

See :py:func:`dns.query.udp()` for the documentation of the other
parameters, exceptions, and return type of this method.
Nr   )r/   r   r,   inetaf_for_address_lltupler   asyncbackendget_default_backendr   datagram_connection_requiredmake_socketr   
SOCK_DGRAMr3   rI   r6   macr!   rB   r	   )rK   rL   rM   r   rN   rO   r4   r5   r8   r9   r&   rP   r:   rD   
begin_timer#   r   r(   cmstupledtuplesrG   rF   _s                            r   udpra      sV    8 99;D-g6Z		 	 	'BE="-K5@5F&&::<Gr67//11]FF&&r6+<+<aPPrQq$Z888&1IIEE'
 !
M1 + q!1!1) rr Q8!
 rrrs~   CFE,
FE.F E62E030E6#E2$6E6F&E4'F.F0E62E64F6F<E?=F	Fudp_socktcp_sockc                    #     [        U UUUUUUUUSU	UU5      I Sh  vN nUS4$  N! [        R                  R                   a$    [	        U UUUUUUUU
U5
      I Sh  vN  nUS4s $ f = f7f)a  Return the response to the query, trying UDP first and falling back
to TCP if UDP results in a truncated response.

*udp_sock*, a ``dns.asyncbackend.DatagramSocket``, or ``None``,
the socket to use for the UDP query.  If ``None``, the default, a
socket is created.  Note that if a socket is provided the *source*,
*source_port*, and *backend* are ignored for the UDP query.

*tcp_sock*, a ``dns.asyncbackend.StreamSocket``, or ``None``, the
socket to use for the TCP query.  If ``None``, the default, a
socket is created.  Note that if a socket is provided *where*,
*source*, *source_port*, and *backend*  are ignored for the TCP query.

*backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
the default, then dnspython will use the default backend.

See :py:func:`dns.query.udp_with_fallback()` for the documentation
of the other parameters, exceptions, and return type of this
method.
TNF)ra   r,   r-   rA   tcp)rK   rL   rM   r   rN   rO   r4   r5   r8   rb   rc   rP   r:   responses                 r   udp_with_fallbackrg      s     F 
 
 %  
  ;;    
 
 
 $ s=   A.) ') A.) 5A+A!	A+(A.*A++A.c                 F  #    [        U[        R                  R                  5      (       a  UR	                  SS9nO[        U5      R                  SS5      U-   n[        R                  " 5       nU R                  U[        X$5      5      I Sh  vN   [        U5      U4$  N7f)zSend a DNS message to the specified TCP socket.

*sock*, a ``dns.asyncbackend.StreamSocket``.

See :py:func:`dns.query.send_tcp()` for the documentation of the other
parameters, exceptions, and return type of this method.
T)prepend_length   bigN)
r+   r,   r-   r.   r/   lento_bytesr!   sendallr%   )r&   r'   r#   tcpmsgr1   s        r   send_tcprp   <  s      $++,,T2
 T##Au-4		I
,,vx
>
???K## @s   BB!BB!c                    #    SnUS:  aN  U R                  U[        U5      5      I Sh  vN nUS:X  a  [        S5      eU[        U5      -
  nX4-   nUS:  a  MN  U$  N17f)ztRead the specified number of bytes from stream.  Keep trying until we
either get the desired amount, or we hit EOF.
r   r   NEOF)recvr%   EOFErrorrl   )r&   countr#   r_   r2   s        r   _read_exactlyrv   U  se      	A
!)))E8J#78885/!AE !) H 9s   'AA-AAc                   #    [        U SU5      I Sh  vN n[        R                  " SU5      u  n[        XU5      I Sh  vN n[        R                  " 5       n	[        R
                  R                  UUUUUS9n
X4$  Nj N?7f)zRead a DNS message from a TCP socket.

*sock*, a ``dns.asyncbackend.StreamSocket``.

See :py:func:`dns.query.receive_tcp()` for the documentation of the other
parameters, exceptions, and return type of this method.
rj   N!Hr6   r7   r5   r8   )rv   structunpackr!   r,   r-   r@   )r&   r#   r5   r6   r7   r8   ldatalrD   rF   rG   s              r   receive_tcpr~   c  s        a44E==u%DQt
33DIIKM)' 	 	A  53s!   BA>,B B >B Bc
           	        #    U R                  5       n
[        U5      u  pU(       a$  UR                  5       I Sh  vN   [        U5      nO[        R
                  R                  U5      n[        XU5      nX4nU	(       d  [        R                  R                  5       n	U	R                  U[        R                  SUUU5      I Sh  vN nU ISh  vN n[        UX5      I Sh  vN   [        UUUU R                  U R                   U5      I Sh  vN u  nnUU-
  Ul        U R%                  U5      (       d  [&        eUsSSS5      ISh  vN   $  GN N N Ns NI N! , ISh  vN  (       d  f       g= f7f)a+  Return the response obtained after sending a query via TCP.

*sock*, a ``dns.asyncbacket.StreamSocket``, or ``None``, the
socket to use for the query.  If ``None``, the default, a socket
is created.  Note that if a socket is provided
*where*, *port*, *source*, *source_port*, and *backend* are ignored.

*backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
the default, then dnspython will use the default backend.

See :py:func:`dns.query.tcp()` for the documentation of the other
parameters, exceptions, and return type of this method.
Nr   )r/   r   getpeernamer   r,   rR   rS   r   rU   rV   rX   r   SOCK_STREAMrp   r~   r6   rZ   r!   rB   r	   )rK   rL   rM   r   rN   rO   r5   r8   r&   rP   rD   r[   r#   r\   r   r]   r^   r_   rG   rF   s                       r   re   re     s@    4 99;D-g6Z    5@5F XX$$U+r;7&&::<G&&""Avvw
 
 rQq$+++#.IIEE$
 
M +}}Q rr 	!
 +
 rrrs   8E8EB
E8E
E8EE8E$E%+EE.E?E8EE8E8E8EEE8E5$E'%E51E8Tssl_contextserver_hostnameverifyc                 |  #    [        U5      u  pU(       a  [        U5      nOU
c  [        XSLS/5      n
[        R                  R                  U5      n[        UXE5      nX4nU	(       d  [        R                  R                  5       n	U	R                  U[        R                  SUUUU
U5      I Sh  vN nU ISh  vN n[        U5      n[        U UUUUUUUUU	5
      I Sh  vN n[        R                  " 5       nUU-
  Ul        UsSSS5      ISh  vN   $  Nh N_ N: N! , ISh  vN  (       d  f       g= f7f)az  Return the response obtained after sending a query via TLS.

*sock*, an ``asyncbackend.StreamSocket``, or ``None``, the socket
to use for the query.  If ``None``, the default, a socket is
created.  Note that if a socket is provided, it must be a
connected SSL stream socket, and *where*, *port*,
*source*, *source_port*, *backend*, *ssl_context*, and *server_hostname*
are ignored.

*backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
the default, then dnspython will use the default backend.

See :py:func:`dns.query.tls()` for the documentation of the other
parameters, exceptions, and return type of this method.
Ndotr   )r   r   r   r,   rR   rS   r   rU   rV   rX   r   r   r%   re   r!   )rK   rL   rM   r   rN   rO   r5   r8   r&   rP   r   r   r   r[   r#   r\   r   r]   r^   r_   rf   end_times                         r   tlsr     s,    <  .g6Z5@5F*6$3NQVPWXKXX$$U+r67&&::<G&&	
 	
 rQ:&
 
 99; :-! rr	
 
 rrrsl   B/D<1D2
D<<D=D< #D"#D$$D"D<D D<D<D" D<"D9(D+)D95D<resolverzdns.asyncresolver.Resolverc                 H    U c  SS K nUR                  R                  5       n U $ r    )dns.asyncresolverasyncresolverResolver)r   r,   s     r   _maybe_get_resolverr     s&      $$--/Or     z
/dns-queryclientz.httpx.AsyncClient|dns.quic.AsyncQuicConnectionpathpostbootstrap_addressr?   http_versionc                 ^
  #     [         R                  R                  U5      nUnUba  [         R                  R	                  U5      (       a=  U[
        R                  :X  a  SU SU U	 3nOU[
        R                  :X  a
  SU SU U	 3n0 nUc  [        R                  R                  U5      nUR                  c  [        S5      e[         R                  R	                  UR                  5      (       a  UR                  nUR                  US'   UR                  b  UR                  nU[        R                  :X  d  U[        R                  :X  a  [         (       d  Uck  [#        U5      nWR                  c   eUR%                  UR                  U5      I Sh  vN n[&        R(                  " [+        UR-                  5       5      5      nU(       a4  [/        U[         R0                  R2                  5      (       d  [        S5      eUb+  [/        U[         R0                  R2                  5      (       d   e[5        U UUUUUUUUUU
US	9I Sh  vN $ [         (       d  [6        eU(       a*  [/        U[8        R:                  5      (       d  [        S
5      eU R=                  5       nSS0nU[        R>                  [        R                  4;   nU[        R@                  [        R                  4;   n[         RB                  RE                  5       nUc  SnSnOUnUnU(       a  [G        U5      nO2URI                  5       " UUUUUUUUS9n[8        R:                  " UUUUS9nU ISh  vN nU
(       aQ  URK                  S[M        [O        U5      5      S.5        URQ                  URS                  UUUUS9U5      I Sh  vN nOa[T        RV                  " U5      RY                  S5      nUR[                  5       n URQ                  UR]                  UUSU 0US9U5      I Sh  vN nSSS5      ISh  vN   WR^                  S:  d  UR^                  S:  a(  [        U SUR^                   SUR`                  < 35      e[         Rb                  Re                  UR`                  U Rf                  U Rh                  UUS9n!URj                  Rm                  5       U!l7        U Rq                  U!5      (       d  [r        eU!$ ! [         a    Sn GNf = f GNm GN GN GNW N N! , ISh  vN  (       d  f       N= f7f)a  Return the response obtained after sending a query via DNS-over-HTTPS.

*client*, a ``httpx.AsyncClient``.  If provided, the client to use for
the query.

Unlike the other dnspython async functions, a backend cannot be provided
in this function because httpx always auto-detects the async backend.

See :py:func:`dns.query.https()` for the documentation of the other
parameters, exceptions, and return type of this method.
Nzhttps://:z	https://[z]:zno hostname in URLsni_hostnamez8client parameter must be a dns.quic.AsyncQuicConnection.)r   r   
connectionz-client parameter must be an httpx.AsyncClientacceptzapplication/dns-messager   )local_addresshttp1http2r   
local_portr   r   r?   )r   r   r   	transport)zcontent-typezcontent-length)headerscontent
extensions   =r,   )r   paramsr      i+  z responded with status code z
Response body: ry   ):r,   rR   rS   
ValueError
is_addressr   r   r   urllibparseurlparsehostnamer   r
   H3DEFAULTr   r   resolve_namerandomchoicelist	addressesr+   quicAsyncQuicConnection_http3r   httpxAsyncClientr/   H1H2rU   rV   r   get_transport_classupdatestrrl   wait_forr   base64urlsafe_b64encoderstripdecodegetstatus_coder   r-   r@   r6   r7   elapsedtotal_secondsr!   rB   r	   )"rK   rL   rM   r   rN   rO   r5   r8   r   r   r   r   r   r   r?   r   r   urlr   parsedanswersrD   r   h1h2rP   r   r   r\   r   
the_clientrf   twirerG   s"                                     r   httpsr     s    <XX$$U+ C	~#((--e44UG1TF4&1C6??"eWBtfTF3CJ &&s+??"12288v// &)/J~&;;";;D{~~%+++HH$*84H??...$11 G !'d73D3D3F.G H*CHH00
 
 WXX~FCHH4P4P!Q!QQQ
 
 	
 8j):):;;HII 99;D23G	+..+*=*=>	>B	+..+*=*=>	>B224G~
 
5@5H//1'!/	
	 Bv
 rZ NN$=&)#d)n %--# )	     H ++D188>DKKME$--#!5>)	    H- rD c!X%9%9C%?g1(2F2F1G 0 035
 	
 			MM)' 	 	A ++-AF==H[  8
n - rrrs   T-S0 E3T-TB1T-T	DT-T	T-"AT5T6A!TTTT-'T(CT-0T <T-?T  T-T-	T-TTT-T*TT*&T-r   r   c           	      p  #    [         R                  R                  (       d  [        S5      e[        R
                  R                  U5      nUR                  nUc   eUR                  b  UR                  nSU l	        U R                  5       nU(       a5  [         R                  R                  n[         R                  R                  nO"[         R                  R                  U
5      u  nnU" 5        IS h  vN nU" UXSS9 IS h  vN nU(       a  UnOUR                  XXV5      n[        U5      u  nnUR                  U5      I S h  vN nU IS h  vN   UR!                  X/U5        UR#                  [%        U5      5      I S h  vN n['        UR)                  5       X5        S S S 5      IS h  vN   [*        R*                  " 5       nS S S 5      IS h  vN   [         R,                  R/                  UU R0                  U R2                  UUS9nS S S 5      IS h  vN   [5        WW-
  S5      Wl        U R7                  U5      (       d  [8        eU$  GN^ GNP GN GN N N! , IS h  vN  (       d  f       N= f N! , IS h  vN  (       d  f       N= f N|! , IS h  vN  (       d  f       N= f7f)Nz DNS-over-HTTP3 is not available.r   T)verify_modeserver_nameh3ry           )r,   r   	have_quicr   r   r   r   r   r   idr/   null_factoryfactories_for_backendconnectr   make_streamsend_h3receiver   r   r   r!   r-   r@   r6   r7   r"   rB   r	   )rK   rL   r   rM   r   rN   rO   r5   r8   r   rP   r   r   	url_partsr   rD   cfactorymfactorycontextthe_managerthe_connectionstartr#   streamfinishrG   s                             r   r   r     s     88677%%c*I!!H~~!~~AD99;D88((88(("xx==gF8zzW$
 
!+!,!4!4" #1"9UJ)55g>>Fvs$/#^^Jz,BCCfnn.<	 v
 YY[F!
 
" KK!!II-+ " 
% z2 %%AF==H9 
 ? D vvv
 
 
 
 zzzs   C4J66I7J6:JIJ?J 
I
J I
J 0I$	I 

I$(J 3I"4J JI>9JJ6J7J6JJ J  I$"J $I;*I-+I;7J >J J	J	J	JJ6J3"J%#J3/J6r   c           	        #    [         R                  R                  (       d  [        S5      eUb  Uc  UnSU l        U R                  5       nU(       a7  [         R                  R                  n[         R                  R                  nUnO![         R                  R                  U
5      u  pU" 5        ISh  vN nU" UU	US9 ISh  vN nU(       d  UR                  XXE5      n[        U5      u  nnWR                  U5      I Sh  vN nU ISh  vN   UR                  US5      I Sh  vN   UR                  [        U5      5      I Sh  vN nSSS5      ISh  vN   [        R                  " 5       nSSS5      ISh  vN   [         R                  R!                  UU R"                  U R$                  UUS9nSSS5      ISh  vN   ['        WW-
  S5      Wl        U R)                  U5      (       d  [*        eU$  GNI GN; N N N N N! , ISh  vN  (       d  f       N= f N! , ISh  vN  (       d  f       N= f N|! , ISh  vN  (       d  f       N= f7f)aQ  Return the response obtained after sending an asynchronous query via
DNS-over-QUIC.

*backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
the default, then dnspython will use the default backend.

See :py:func:`dns.query.quic()` for the documentation of the other
parameters, exceptions, and return type of this method.
zDNS-over-QUIC is not available.Nr   )r   r   Try   r   )r,   r   r   r   r   r/   r   r   r   r   r   sendr   r   r!   r-   r@   r6   r7   r"   rB   r	   )rK   rL   rM   r   rN   rO   r5   r8   r   r   rP   r   r   rD   r   r   r   r   r   r   r#   r   r   rG   s                           r   r   r     s    2 88566"x'7"AD99;D88((88((#"xx==gFzzW'
 
 !,!4!4" #1"9UJ)55g>>Fvkk$---#^^Jz,BCC v YY[F
 
 KK!!II-+ " 
! z. %%AF==H5 
 ?-C vvv
 
 
 
 zzzs  B4I!6G?7I!:IHI<H+H
H+H
H+H,H	
-!HH
HH+HH+8IH)9I=I!I	7I!IH+H+	HHH+H&HH&"H+)I+I	1H42I	>II!IIII!txn_managerr_   serialc                p  #    UR                   S   R                  nU[        R                  R                  :H  nU R                  5       nUR                  5       n	UR                  [        R                  :H  n
U
(       aI  [        [        R                  R                  U5      nUR                  U	S[        U5      5      I Sh  vN   O`[        [        R                  R                  U5      n[         R"                  " S[%        U	5      5      U	-   nUR'                  X5      I Sh  vN   [        R(                  R+                  XX:5       nSnSnSnU(       d  [-        U5      u  nnUb	  Ub  UU:  a  UnU
(       a)  [        U5      nWR/                  SU5      I Sh  vN u  nnOC[1        WSU5      I Sh  vN n[         R2                  " SU5      u  n[1        UUU5      I Sh  vN n[        R4                  R7                  UUR8                  UR:                  SUUU
(       + US9nUR=                  U5      nU7v   UR>                  nU(       d  M  UR8                  (       a3  Ub0  UR@                  (       d  [        RB                  RE                  S	5      eSSS5        g GN GNz GN N N! , (       d  f       g= f7f)
z'Given a socket, does the zone transfer.r   Nrx   Fr=   rj   T)r6   r7   xfrorigintsig_ctxmultir5   zmissing TSIG)#questionrdtyper,   	rdatatypeIXFRfrom_wire_originr/   typer   rY   r   rU   DatagramSocketr0   r%   StreamSocketrz   packrl   rn   r   Inboundr   r>   rv   r{   r-   r@   r6   rZ   process_messager   had_tsig	exception	FormError)r   r_   r;   r   rM   r#   r   is_ixfrr   rD   is_udprb   rc   ro   inbounddoner   rG   r`   mexpirationrwirer|   r}   s                          r   _inbound_xfrr   H  s/     ^^A%%F***G))+F==?DVVv(((F((77;oodD(:*>???((55q9T3t9-4v222	f	=(,-g6Q"&;+C(";/#+#4#4UG#DD
+HaEE}}T51+HaEE%%!II!!z!( & 	A **1-DGzzH3 $4 ==Q]1::--)).99? 
>	= 	@ 	3 EEE! 
>	=s|   B>J6 JA J6!J"$J6AJ%JJ%0J!1-J%J#A*J%AJ%
J6J6J%!J%#J%%
J3/J6lifetimeudp_modec
           
        #    Uc"  [         R                  R                  U5      u  p*O[         R                  R                  U5      n
[         R                  R                  U 5      n[        XU5      nX4nU	(       d  [         R                  R                  5       n	[        U5      u  pUR                  S   R                  [         R                  R                  :X  ao  U[        R                  :w  a[  U	R!                  U["        R$                  SX['        U5      5      I Sh  vN nU ISh  vN    [)        UUUU
UU5        Sh  vN nM  U	R!                  U["        R.                  SX['        U5      5      I Sh  vN nU ISh  vN   [)        UUX*XO5        Sh  vN nM   N Nz Nb
  SSS5      ISh  vN    g! [         R                  R*                   a    U[        R,                  :X  a  e  Of = fSSS5      ISh  vN    M  ! , ISh  vN  (       d  f       N= f N N N
 SSS5      ISh  vN    g! , ISh  vN  (       d  f       g= f7f)aU  Conduct an inbound transfer and apply it via a transaction from the
txn_manager.

*backend*, a ``dns.asyncbackend.Backend``, or ``None``.  If ``None``,
the default, then dnspython will use the default backend.

See :py:func:`dns.query.inbound_xfr()` for the documentation of
the other parameters, exceptions, and return type of this method.
Nr   )r,   r   
make_queryextract_serial_from_queryrR   rS   r   rU   rV   r   r   r   r   r   r   NEVERrX   r   rY   r%   r   UseTCPONLYr   )rL   r   r;   r   rM   r  rN   rO   r  rP   r   r   r]   r^   r`   r#   r_   s                    r   inbound_xfrr	    s    * }'',,[92259		 	 	'B2{3F]F""668$X.OQ~~a3==#5#55(gmm:S%%!!1fhz6J
 
 1+  !  !!
F68J3G 	A q#E7
 	! 5
     11 77>> w||+ , 11111 	 	 
 qqqqqs&  DIF# 
I*F%+I.H	0F= F)F'F)F=/I:H#;
IH%I	H<H)H'H) H<#I%I'F))F=+I6F97I=3G30H	2G33H	6IHI	H HH I%I'H))H<*I5H86I<IIII)N)
NNFFNr   FFFN)NrJ   Nr   FFFFNNF)NrJ   Nr   FFFNNNF)NFNr   F)NrJ   Nr   FFNN)NU  Nr   FFNNNNT)
Nr   Nr   FFTNTN)Nr
  Nr   FFNTNNN)X__doc__r   
contextlibr   r   rz   r!   urllib.parser   typingr   r   r   r   r   dns.asyncbackendr,   dns.exceptiondns.inetdns.messagedns.namedns.quicdns.rdatatypedns.transactiondns.tsigdns.xfrdns._asyncbackendr   	dns.queryr	   r
   r   r   r   r   r   r   r   r   r   sslImportErrordns._no_ssl_no_sslr   rR   low_level_address_tuplerT   r   r%   rU   r   r-   r.   bytesfloatintr3   boolnameNametsigKeyrI   r   Backendra   r   rg   rp   rv   r~   re   
SSLContextr   r   	AF_UNSPECr   r   r   r   r   transactionTransactionManagerSocketr   r  r	   r   r   <module>r/     s4  $         3 3           )     88++   $	



)
)
++


%  	
 3:@ ###"8< #! %(,:0



)
):0t:0 :0 	:0
 :0 #((---.5:0 :0 :0 :0 :0 ;;%:0 	:0@ !#"! %37/3?
{{?? T\? 	?
 $J? ? ? ? ? ? 


)
)D
0? %%,? ? 	[[?J !#"!7;59/3A 
{{A A  T\A  	A 
 $JA  A  A  A  A  --4A  ++d2A  %%,A  A  3;;$%A N  $$



'
'$
++


%$ $ 3:	$2   $"8< #!



'
'  #((---.5	
   3;;%&B !"!15/3:
{{:: T\: 	:
 $J: : : : 


'
'$
.: %%,: 	[[:@ !"!15/3)-"&C
{{CC T\C 	C
 $JC C C C 


'
'$
.C %%,C $&C 4ZC 3JC 	[[CL34!" !"!IM*.$(7;"" + 3 3!m
{{mm T\m 	m
 $Jm m m m EFm m m 3J'm Tzm 34m m  !m" 	[[#mh !"!*./36:=
{{== 
= T\	=
 = $J= = = = 3J'= %%,= = ,,t3= 	[[=F !"!6:/3"&C
{{CC T\C 	C
 $JC C C C ,,t3C 3JC %%,C DjC 4ZC 	[[CL4:334:
4: ;;4: $J	4:
 T\4: 4: 	4:t )- !/3::33: ;;%: 	:
 T\: dl: $J: : : %%,: 
:O  s   6\   \0/\0