Files
pyGoEdge-UserPanel/.venv/Lib/site-packages/dns/__pycache__/query.cpython-312.pyc

759 lines
68 KiB
Plaintext
Raw Normal View History

2025-11-18 03:36:49 +08:00
<EFBFBD>
g<> i<><69><00>#<00> <00>UdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl
Z
ddl Z ddl mZmZmZmZmZmZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Zddl!Z ddl"Z"d<04>Z&d<05>Z'ejPjSd<06>Z*e*rUddl+Z,ddl-Z-e,j\Z/e,j`jbjdZ3Gd<07>de/<2F>Z4Gd <09>d
e-jj<00>Z6n
Gd <0B>d
<EFBFBD>Z6e*Z7d ejpe9zd ejtde9dejfd<10>Z;e;Z<eejpe9zejte9gejfe=d<Gd<12>dej|j~<00>Z@Gd<14>dej|j<><00>ZBGd<16>dej|j~<00>ZCGd<18>dej|j~<00>ZDej<>j<>ZFd<1A>ZGd<1B>ZHd<1C>ZId<1D>ZJd<1E>ZKd<1F>ZL d{d!<21>ZM d|d ejpe9zd"ejtd#edzdejfd$<24>ZN d}d ejpe9zd"ejtd%e"j<>d&ej<>j<>eRzdzd#edzde"j<>f d'<27>ZTd(<28>ZUd)ed*dd*fd+<2B>ZVGd,<2C>d-ej<><00>ZXdd.ddd/d/dd0d dd dej<>eXj<58>fd1ej<>j<>d2eRd3e]dzd4e9d#eRdzd5e9d6e^d7e^d8edzd9eRd:e^d;eRdzd<e^eRze"j<>zd)ed*d=e9d>eXdej<>j<>f"d?<3F>Z_d@ej<>j<>dAebdebfdB<64>Zcd@ej<>j<>dCeRdDebddfdE<64>Zd d~d1ej<>j<>d2eRdFeRd3e]dzd4e9d#eRdzd5e9d6e^d7e^d<e^eRze"j<>zd:e^dGej<>j<>dzdej<>j<>fdH<64>ZfdI<64>ZgdJ<64>Zh d|dKedLej<>j<>ebzdMedNe]dzdee9e]ff
dO<EFBFBD>Zi ddKedMedzdNe]dzdPe^d6e^dQeej<>j<>ej<>j<>fdzdRebdzd7e^dSe^dTe^dUej<>j<>dzdefdV<64>Zl d<>d1ej<>j<>d2eRd3e]dzd4e9d#eRdzd5e9dPe^d6e^d7e^dSe^dKedzdTe^dej<>j<>fdX<64>Zm d<>d1ej<>j<>d2eRd3e]dzd4e9d#eRdzd5e9dPe^d6e^d7e^dYedzdZedzdTe^deej<>j<>e^ffd[<5B>Znd\<5C>Zod]<5D>Zp d|dKedLej<>j<>ebzdNe]dzdee9e]ffd^<5E>Zq d<>dKedNe]dzd6e^dQeej<>j<>ej<>j<>fdzdRebdzd7e^deej<>j<>e]ffd_<64>Zrd`<60>Zs d<>d1ej<>j<>d2eRd3e]dzd4e9d#eRdzd5e9d6e^d7e^dKedzdej<>j<>fda<64>Ztdb<64>Zu d<>d<e^eRzdce^ddeveRdzde"j<>fde<64>Zwd&eRdzd<e^eRzde"j<>fdf<64>Zx d<>d1ej<>j<>d2eRd3e]dzd4e9d#eRdzd5e9d6e^d7e^dKe"j<>dzd%e"j<>dzd&eRdzd<e^eRzdej<>j<>fdg<64>Zy d<>d1ej<>j<>d2eRd3e]dzd4e9d#eRdzd5e9d6e^d7e^dGej<>j<>dzd<e^eRzdheRdzd&eRdzdej<>j<>fdi<64>Z`Gdj<64>dkej<><00>Zzdlej<>j<>dmeje"j<>zdUej<>j<>dne9dzd3e]dzdNe]dzdefdo<64>Z}ej<>j<>e<15>j<00>jddWddd ddddd/ej<><00>jf d2eRdpej<>j<>eRzdqej<><00>jeRzdre<15>j<00>jeRzd3e]dzd4e9dQeej<>j<>ej<>j<>fdzdsej<>j<>eRzdzdte^due]dzd#eRdzd5e9dne9dve^dwej<>j<>eRzdef dx<64>ZEddWddddez<65>j
fd2eRdlej<>j<>dUej<>j<>dzd4e9d3e]dzdue]dzd#eRdzd5e9dyezddfdz<64>Z<>y#e#$r
ddl$m%Z"Y<00> <09> wxYw)<29>zTalk to a DNS server.<2E>N)<06>Any<6E>Callable<6C>Dict<63>Optional<61>Tuple<6C>castc<00>x<00>|<00>y|tj<00>z
}|dkrtjj<00>|S)N<>)<04>time<6D>dns<6E> exception<6F>Timeout)<02>
expiration<EFBFBD>timeouts <20>8E:\Project\pygoedge\.venv\Lib\site-packages\dns/query.py<70>
_remainingr5s7<00><00><11><19><13><18>4<EFBFBD>9<EFBFBD>9<EFBFBD>;<3B>&<26>G<EFBFBD><0E>#<23>~<7E><11>m<EFBFBD>m<EFBFBD>#<23>#<23>#<23> <12>N<EFBFBD>c<00>J<00>|<01>yttj<00>|z|<01>S<00>N)<02>minr )rrs r<00>_expiration_for_this_attemptr>s#<00><00><11><19><13> <0E>t<EFBFBD>y<EFBFBD>y<EFBFBD>{<7B>W<EFBFBD>$<24>j<EFBFBD> 1<>1r<00>dohc<00>2<00><00>eZdZ<02>fd<01>Z dd<02>Z dd<03>Z<05>xZS)<06>_NetworkBackendc<00>Z<00><01>t<00>|<00><00>||_||_||_||_yr)<06>super<65>__init__<5F> _local_port<72> _resolver<65>_bootstrap_address<73>_family)<06>self<6C>resolver<65>
local_port<EFBFBD>bootstrap_address<73>family<6C> __class__s <20>rrz_NetworkBackend.__init__Ms,<00><><00> <11>G<EFBFBD> <1C> <1E>)<29>D<EFBFBD> <1C>%<25>D<EFBFBD>N<EFBFBD>&7<>D<EFBFBD> #<23>!<21>D<EFBFBD>Lrc<00>t<00>g}t|<03>\}}tjj|<01>r|j |<01>n<>|j
<00>|j |j
<00>nft |<08>}|j} |rtjj|<04>} |jj|| |<03><01>}
|
j<00>}|D]<5D>} tjj| <0B>} |<04>|jdk7r1|<04>d}tjj||jf| <0C>} nd} t| tj | <0A>}t#d|<08>}t%|tjj| |f| <0C>|<0F>t'|<0E>cSt*j,<00>#t($rY<00><>wxYw)N)r&<00>lifetimerz0.0.0.0g@)<17>_compute_timesr <00>inet<65>
is_address<EFBFBD>appendr rr!<00>af_for_addressr<00> resolve_name<6D> addressesr<00>low_level_address_tuple<6C> make_socket<65>socket<65> SOCK_STREAMr<00>_connect<63>_CoreSyncStream<61> Exception<6F>httpcore<72> ConnectError)r"<00>host<73>portr<00> local_address<73>socket_optionsr0<00>_rr&<00>answers<72>address<73>af<61>source<63>sock<63>attempt_expirations r<00> connect_tcpz_NetworkBackend.connect_tcpTs<><00><00><1B>I<EFBFBD>*<2A>7<EFBFBD>3<>M<EFBFBD>A<EFBFBD>z<EFBFBD><12>x<EFBFBD>x<EFBFBD>"<22>"<22>4<EFBFBD>(<28><19> <20> <20><14>&<26><15>(<28>(<28>4<><19> <20> <20><14>!8<>!8<>9<>$<24>Z<EFBFBD>0<><07><1D><1C><1C><06> <20> <20>X<EFBFBD>X<EFBFBD>4<>4<>]<5D>C<>F<EFBFBD><1E>.<2E>.<2E>5<>5<><18><16>'<27>6<><12><07>$<24>-<2D>-<2D>/<2F> <09>$<24><07><18>X<EFBFBD>X<EFBFBD>,<2C>,<2C>W<EFBFBD>5<><02> <20>,<2C><04>0@<40>0@<40>A<EFBFBD>0E<30>$<24>,<2C>(1<> <0A> <20>X<EFBFBD>X<EFBFBD>=<3D>=<3D>&<26><04>(8<>(8<>9<>2<EFBFBD><16>F<EFBFBD>"<22>F<EFBFBD>
<19>&<26>r<EFBFBD>6<EFBFBD>+=<3D>+=<3D>v<EFBFBD>F<>D<EFBFBD>)E<>c<EFBFBD>:<3A>)V<>&<26><1C><1C><1B><08><08>8<>8<>'<27>4<EFBFBD><1F>"<22>M<>*<2A><16>
+<2B>4<EFBFBD>0<>0<>%%<25>*<1B>'<27>'<27> '<27><>!<21><19><18><19>s<00>9AF+<02>+ F7<05>6F7c<00><00>t<00>r<00><01>NotImplementedError)r"<00>pathrr=s r<00>connect_unix_socketz#_NetworkBackend.connect_unix_socket}s
<00><00>&<26> %r)NNN<4E>NN)<07>__name__<5F>
__module__<EFBFBD> __qualname__rrErJ<00> __classcell__<5F>r's@rrrLs<00><><00> "<22>PT<01>' (<28>T6:<3A> &rrc<00>><00><00>eZdZdddejd<03><04>fd<04>
Z<05>xZS)<05>_HTTPTransportrN<>r$r%r#r&c<00><><00><01>|<03> |<02>ddl}|jj<00>}t<00>|<00>|i|<06><01>t ||||<04>|j _y<00>Nr)<08> dns.resolverr#<00>Resolverrrr<00>_pool<6F>_network_backend) r"r$r%r#r&<00>args<67>kwargsr r's <20>rrz_HTTPTransport.__init__<5F>sS<00><><00><18><1F>$5<>$=<3D>#<23><1E><<3C><<3C>0<>0<>2<><08> <11>G<EFBFBD> <1C>d<EFBFBD> -<2D>f<EFBFBD> -<2D>*9<><18>*<2A>&7<><16>+<0E>D<EFBFBD>J<EFBFBD>J<EFBFBD> 'r)rLrMrNr3<00> AF_UNSPECrrOrPs@rrRrR<00>s!<00><><00><19>"<22><19><19>#<23>#<23>  <0E> rrRc<00>8<00>eZdZdddejd<03>d<04>Zd<05>Zy)rRrNrSc<00><00>yr<00>)r"r$r%r#r&rZr[s rrz_HTTPTransport.__init__<5F>s<00><00> rc<00><00>t<00>rrG)r"r:r;rr<s rrEz_HTTPTransport.connect_tcp<63><00><00><00>%<25> %r)rLrMrNr3r\rrEr_rrrRrR<00>s <00><00><19>"<22><19><19>#<23>#<23> <11> &rrA<00>kind<6E>proto<74>returnc<00>0<00>tj|||<02>Sr)r3)rArbrcs r<00>default_socket_factoryrf<00>s<00><00>
<12>=<3D>=<3D><12>T<EFBFBD>5<EFBFBD> )<29>)r<00>socket_factoryc<00><00>eZdZdZy)<03>UnexpectedSourcez=A DNS query response came from an unexpected address or port.N<>rLrMrN<00>__doc__r_rrriri<00>s<00><00>Grric<00><00>eZdZdZy)<03> BadResponsez<A DNS query response does not respond to the question asked.Nrjr_rrrmrm<00>s<00><00>Frrmc<00><00>eZdZdZy)<03>NoDOHzMDNS over HTTPS (DOH) was requested but the httpx module is not
available.Nrjr_rrroro<00><00><00><00>rroc<00><00>eZdZdZy)<03>NoDOQzNDNS over QUIC (DOQ) was requested but the aioquic module is not
available.Nrjr_rrrrrr<00>rprrrc<00>D<00>tj<00>}|<00>|dfS|||zfSr)r )r<00>nows rr*r*<00>s+<00><00>
<0E>)<29>)<29>+<2B>C<EFBFBD><0E><EFBFBD><13>T<EFBFBD>{<7B><1A><13>S<EFBFBD>7<EFBFBD>]<5D>#<23>#rc<00><00>|r.t|tj<00>r|j<00>dkDryt j
<00>5}d}|r|tj z}|r|tjz}|r|j||<06>|<04>d}n6|tj<00>z
}|dkrtjj<00>|j|<07>stjj<00> ddd<00>y#1swYyxYw)NrTr
)<0E>
isinstance<EFBFBD>ssl<73> SSLSocket<65>pending<6E> selectors<72>DefaultSelector<6F>
EVENT_READ<EFBFBD> EVENT_WRITE<54>registerr r r r<00>select)<08>fd<66>readable<6C>writabler>r<00>sel<65>eventsrs r<00> _wait_forr<72><00>s<><00><00><10>J<EFBFBD>r<EFBFBD>3<EFBFBD>=<3D>=<3D>1<>b<EFBFBD>j<EFBFBD>j<EFBFBD>l<EFBFBD>Q<EFBFBD>6F<36><13> <12> "<22> "<22> $<24><03><12><06> <13> <12>i<EFBFBD>*<2A>*<2A> *<2A>F<EFBFBD> <13> <12>i<EFBFBD>+<2B>+<2B> +<2B>F<EFBFBD> <11> <0F>L<EFBFBD>L<EFBFBD><12>V<EFBFBD> $<24> <15> <1D><1A>G<EFBFBD> <20>4<EFBFBD>9<EFBFBD>9<EFBFBD>;<3B>.<2E>G<EFBFBD><16>#<23>~<7E><19>m<EFBFBD>m<EFBFBD>+<2B>+<2B>+<2B><12>z<EFBFBD>z<EFBFBD>'<27>"<22><15>-<2D>-<2D>'<27>'<27> '<27>#<23>
%<25> $<24> $<24>s <00>B'C6<03>6C?c<00>"<00>t|ddd|<01>y)NTF<54>r<><00><02>srs r<00>_wait_for_readabler<65><00>s<00><00> <0A>a<EFBFBD><14>u<EFBFBD>d<EFBFBD>J<EFBFBD>/rc<00>"<00>t|ddd|<01>y)NFTr<54>r<>s r<00>_wait_for_writabler<65><00>s<00><00> <0A>a<EFBFBD><15><04>d<EFBFBD>J<EFBFBD>/rc<00><><00> tjj||d<00>}tjj||d<00>}||k(xr |dd|ddk(S#tjj$rYywxYw)NrF<>)r r+<00> inet_ptonr <00> SyntaxError)rA<00>a1<61>a2<61>n1<6E>n2s r<00>_addresses_equalr<6C><00>s{<00><00><15> <10>X<EFBFBD>X<EFBFBD> <1F> <1F><02>B<EFBFBD>q<EFBFBD>E<EFBFBD> *<2A><02> <10>X<EFBFBD>X<EFBFBD> <1F> <1F><02>B<EFBFBD>q<EFBFBD>E<EFBFBD> *<2A><02> <0E><12>8<EFBFBD> (<28><02>1<EFBFBD>2<EFBFBD><06>"<22>Q<EFBFBD>R<EFBFBD>&<26>(<28>(<28><> <0F>=<3D>=<3D> $<24> $<24><15><14><15>s<00>AA<00>A:<03>9A:c<00><><00>|syt|||<02>s-tjj|d<00>r |dd|ddk(ry|ryt d|<01>d|<02><00><04><00>)NTrr<>Fzgot a response from z instead of )r<>r r+<00> is_multicastri)rA<00> from_address<73> destination<6F>ignore_unexpecteds r<00>_matches_destinationr<6E>sh<00><00> <17><13><17><02>L<EFBFBD>+<2B>6<> <0B><08><08><1D><1D>k<EFBFBD>!<21>n<EFBFBD>-<2D>,<2C>q<EFBFBD>r<EFBFBD>2B<32>k<EFBFBD>RS<52>RT<52>o<EFBFBD>2U<32><13> <1A><14>
<1A>
<1E>|<7C>n<EFBFBD>L<EFBFBD>[<5B>M<EFBFBD>J<> <06>rTc<00><><00>d}d} tjj|<00>}|}|r3tjj|<02>}|r||k7r t d<01><00>|}|r"|s tjj |<05>}|r"tjj ||f|<05>}|r"tjj ||f|<05>}|||fS#t$r|r<01>Y<00><>wxYw#t$r t d<02><00>wxYw)Nz5different address families for source and destinationz3source_port specified but address family is unknown)r r+r.r7<00>
ValueError<EFBFBD>
any_for_afr1)<08>wherer;rB<00> source_port<72>where_must_be_addressrAr<><00>safs r<00>_destination_and_sourcer<65>s
<00><00>
<0E>B<EFBFBD><16>K<EFBFBD><12> <10>X<EFBFBD>X<EFBFBD> $<24> $<24>U<EFBFBD> +<2B><02><1B> <0B>
<0E><11>h<EFBFBD>h<EFBFBD>%<25>%<25>f<EFBFBD>-<2D><03> <0A><12>b<EFBFBD>y<EFBFBD> <20>K<><12><12> <15>B<EFBFBD><12>6<EFBFBD> T<01><18>X<EFBFBD>X<EFBFBD>(<28>(<28><12>,<2C>F<EFBFBD> <13><19>h<EFBFBD>h<EFBFBD>6<>6<> <0B>T<EFBFBD>7J<37>B<EFBFBD>O<> <0B> <0A><14><18><18>1<>1<>6<EFBFBD>;<3B>2G<32><12>L<><06> <0E> <0B>V<EFBFBD> $<24>$<24><>? <15><12> <20> <11> !<21><12><>,<19> T<01><1C>R<>S<> S<> T<01>s<00>!C <00>!C<00> C<03>C<03>C4<03>typerBc<00><><00>t||d<01>} |jd<02>|<02>|j|<02>|S#t$r|j <00><00>wxYw)aQMake a socket.
This function uses the module's ``socket_factory`` to make a socket of the
specified address family and type.
*af*, a ``socket.AddressFamily`` or ``int`` is the address family, either
``socket.AF_INET`` or ``socket.AF_INET6``.
*type*, a ``socket.SocketKind`` is the type of socket, e.g. ``socket.SOCK_DGRAM``,
a datagram socket, or ``socket.SOCK_STREAM``, a stream socket. Note that the
``proto`` attribute of a socket is always zero with this API, so a datagram socket
will always be a UDP socket, and a stream socket will always be a TCP socket.
*source* is the source address and port to bind to, if any. The default is
``None`` which will bind to the wildcard address and a randomly chosen port.
If not ``None``, it should be a (low-level) address tuple appropriate for *af*.
rF)rg<00> setblocking<6E>bindr7<00>close)rAr<>rBr<>s rr2r2DsT<00><00>, <17>r<EFBFBD>4<EFBFBD><11>#<23>A<EFBFBD><0E> <09> <0A> <0A>e<EFBFBD><1C> <11> <1D> <0A>F<EFBFBD>F<EFBFBD>6<EFBFBD>N<EFBFBD><10><08><> <14><0E> <09><07><07> <09> <0A><0E>s <00>%5<00>A<03> ssl_context<78>server_hostnamec<00><><00>t|||<04>}t|tjj<00>r|j <00>}|j |d|<03><02>S)a<>Make a socket.
This function uses the module's ``socket_factory`` to make a socket of the
specified address family and type.
*af*, a ``socket.AddressFamily`` or ``int`` is the address family, either
``socket.AF_INET`` or ``socket.AF_INET6``.
*type*, a ``socket.SocketKind`` is the type of socket, e.g. ``socket.SOCK_DGRAM``,
a datagram socket, or ``socket.SOCK_STREAM``, a stream socket. Note that the
``proto`` attribute of a socket is always zero with this API, so a datagram socket
will always be a UDP socket, and a stream socket will always be a TCP socket.
If *ssl_context* is not ``None``, then it specifies the SSL context to use,
typically created with ``make_ssl_context()``.
If *server_hostname* is not ``None``, then it is the hostname to use for server
certificate validation. A valid hostname must be supplied if *ssl_context*
requires hostname checking.
*source* is the source address and port to bind to, if any. The default is
``None`` which will bind to the wildcard address and a randomly chosen port.
If not ``None``, it should be a (low-level) address tuple appropriate for *af*.
F)<02>do_handshake_on_connectr<74>)r2rvr <00>name<6D>Name<6D>to_text<78> wrap_socket)rAr<>r<>r<>rBrCs r<00>make_ssl_socketr<74>esS<00><00>> <17>r<EFBFBD>4<EFBFBD><16> (<28>D<EFBFBD><11>/<2F>3<EFBFBD>8<EFBFBD>8<EFBFBD>=<3D>=<3D>1<>)<29>1<>1<>3<><0F> <16> "<22> "<22> <0C> %<25>'<27> #<23> <06>rc<00>><00>|<03>t|||||<02>St|||<02>Sr)r<>r2)rAr<>rBr<>r<>s r<00> _make_socketr<74><00>s,<00><00><13><1E><1E>r<EFBFBD>4<EFBFBD><1B>o<EFBFBD>v<EFBFBD>N<>N<><1A>2<EFBFBD>t<EFBFBD>V<EFBFBD>,<2C>,rr#zdns.resolver.Resolverc<00>F<00>|<00>ddl}|jj<00>}|SrU)rVr#rW)r#r s r<00>_maybe_get_resolverr<72><00>s$<00><00> <10><17><1B><16><<3C><<3C>(<28>(<28>*<2A><08> <13>Orc<00>,<00>eZdZdZdZdZdZdZdZdZ dZ
y)<07> HTTPVersionz<6E>Which version of HTTP should be used?
DEFAULT will select the first version from the list [2, 1.1, 3] that
is available.
rr<><00><00>N) rLrMrNrk<00>DEFAULT<4C>HTTP_1<5F>H1<48>HTTP_2<5F>H2<48>HTTP_3<5F>H3r_rrr<>r<><00>s,<00><00><08> <10>G<EFBFBD> <0E>F<EFBFBD>
<EFBFBD>B<EFBFBD> <0E>F<EFBFBD>
<EFBFBD>B<EFBFBD> <0E>F<EFBFBD>
<EFBFBD>Brr<><00><>Fz
/dns-query<72>qr<71>rr;r<><00>one_rr_per_rrset<65>ignore_trailing<6E>sessionrI<00>postr%<00>verifyr&<00> http_versionc<00>H<00>t||||d<01>\}}}|}|<10>Ztjj|<01>r;|tj
k(r d|<01>d|<03>| <09><00>}n|tj k(r
d|<01>d|<03>| <09><00>}i}| <0B><>tjj|<13>}|j<00> td<07><00>tjj|j<00>r|j} |j|d<|j<00> |j}|tjk(s|tjk(r<>t s<>| <0B>at#| <0A>} j<00>J<00>| j%|j|<0E>}t'j(t+|j-<00><00><00>} |r/t/|tj0j2<00>s td <09><00>t5|| |||||||| |
|<08>
<EFBFBD> St st6<00>|r%t/|t8j:<00>s td <0B><00>|j=<00>}d d i}|tj>tjfv}|tj@tjfv}|<12>d}d}n
|d}|d}|rtCjD|<08>}n,tG|||| || | |<0E><10>}t9j:||| |<1E><11>}|5}|<08>J<00>|
r=|jId tKtM|<17><00>d<12><02>|jO|||||<14><13>}nLtQjR|<17>jUd<14>}|jW<00>} |jY|||d| i|<14><16>}ddd<02>jZdks|jZdkDr't|<01>d|jZ<00>d|j\<00><00><05><00>tj^ja|j\|jb|jd||<07><1B>}!|jfji<00>|!_5|jm|!<21>stn<00>|!S#1swY<00><>xYw)a Return the response obtained after sending a query via DNS-over-HTTPS.
*q*, a ``dns.message.Message``, the query to send.
*where*, a ``str``, the nameserver IP address or the full URL. If an IP address is
given, the URL will be constructed using the following schema:
https://<IP-address>:<port>/<path>.
*timeout*, a ``float`` or ``None``, the number of seconds to wait before the query
times out. If ``None``, the default, wait forever.
*port*, a ``int``, the port to send the query to. The default is 443.
*source*, a ``str`` containing an IPv4 or IPv6 address, specifying the source
address. The default is the wildcard address.
*source_port*, an ``int``, the port from which to send the message. The default is
0.
*one_rr_per_rrset*, a ``bool``. If ``True``, put each RR into its own RRset.
*ignore_trailing*, a ``bool``. If ``True``, ignore trailing junk at end of the
received message.
*session*, an ``httpx.Client``. If provided, the client session to use to send the
queries.
*path*, a ``str``. If *where* is an IP address, then *path* will be used to
construct the URL to send the DNS query to.
*post*, a ``bool``. If ``True``, the default, POST method will be used.
*bootstrap_address*, a ``str``, the IP address to use to bypass resolution.
*verify*, a ``bool`` or ``str``. If a ``True``, then TLS certificate verification
of the server is done using the default CA bundle; if ``False``, then no
verification is done; if a `str` then it specifies the path to a certificate file or
directory which will be used for verification.
*resolver*, a ``dns.resolver.Resolver`` or ``None``, the resolver to use for
resolution of hostnames in URLs. If not specified, a new resolver with a default
configuration will be used; note this is *not* the default resolver as that resolver
might have been configured to use DoH causing a chicken-and-egg problem. This
parameter only has an effect if the HTTP library is httpx.
*family*, an ``int``, the address family. If socket.AF_UNSPEC (the default), both A
and AAAA records will be retrieved.
*http_version*, a ``dns.query.HTTPVersion``, indicating which HTTP version to use.
Returns a ``dns.message.Message``.
FNzhttps://<2F>:z https://[z]:zno hostname in URL<52> sni_hostnamez8session parameter must be a dns.quic.SyncQuicConnection.)r<>r<><00>
connectionz)session parameter must be an httpx.Client<6E>acceptzapplication/dns-messagerr<>)r<<00>http1<70>http2r<32>r$r%r#r&)r<>r<>r<><00> transport)z content-typezcontent-length)<04>headers<72>contentr<00>
extensions<EFBFBD>=r )r<>r<00>paramsr<73><00><><00>+<00> responded with status code z
Response body: <20><04>keyring<6E> request_macr<63>r<>)8r<38>r r+r,r3<00>AF_INET<45>AF_INET6<54>urllib<69>parse<73>urlparse<73>hostnamer<65>r;r<>r<>r<><00>have_dohr<68>r/<00>random<6F>choice<63>listr0rv<00>quic<69>SyncQuicConnection<6F>_http3ro<00>httpx<70>Client<6E>to_wirer<65>r<><00>
contextlib<EFBFBD> nullcontextrR<00>update<74>str<74>lenr<6E><00>base64<36>urlsafe_b64encode<64>rstrip<69>decode<64>get<65> status_coder<65><00>message<67> from_wirer<65>r<><00>elapsed<65> total_secondsr <00> is_responserm)"r<>r<>rr;rBr<>r<>r<>r<>rIr<>r%r<>r#r&r<>rAr><00>
the_source<EFBFBD>urlr<6C><00>parsedr?<00>wirer<65><00>h1<68>h2r<r$<00>cmr<6D><00>response<73>twire<72>rs" r<00>httpsr<00>s <00><00>N2<> <0A>t<EFBFBD>V<EFBFBD>[<5B>%<25><06><17>R<EFBFBD><11>J<EFBFBD> <10>C<EFBFBD> <09>~<7E>#<23>(<28>(<28>-<2D>-<2D>e<EFBFBD>4<> <0A><16><1E><1E> <1F><1C>U<EFBFBD>G<EFBFBD>1<EFBFBD>T<EFBFBD>F<EFBFBD>4<EFBFBD>&<26>1<>C<EFBFBD> <0F>6<EFBFBD>?<3F>?<3F> "<22><1D>e<EFBFBD>W<EFBFBD>B<EFBFBD>t<EFBFBD>f<EFBFBD>T<EFBFBD>F<EFBFBD>3<>C<EFBFBD><13>J<EFBFBD><18> <20><17><1C><1C>&<26>&<26>s<EFBFBD>+<2B><06> <11>?<3F>?<3F> "<22><1C>1<>2<> 2<> <0E>8<EFBFBD>8<EFBFBD> <1E> <1E>v<EFBFBD><EFBFBD><EFBFBD> /<2F> &<26><0F><0F> <1D>)/<2F><1F><1F>J<EFBFBD>~<7E> &<26> <11>;<3B>;<3B> "<22><19>;<3B>;<3B>D<EFBFBD><13>{<7B>~<7E>~<7E>%<25><14> <0B>+<2B>+<2B>+<2B>H<EFBFBD> <1C> $<24>*<2A>8<EFBFBD>4<>H<EFBFBD><19>?<3F>?<3F>.<2E> .<2E>.<2E><1E>+<2B>+<2B>F<EFBFBD>O<EFBFBD>O<EFBFBD>V<EFBFBD>D<>G<EFBFBD> &<26> <0A> <0A>d<EFBFBD>7<EFBFBD>3D<33>3D<33>3F<33>.G<> H<> <1D> <12>:<3A> <13>S<EFBFBD>X<EFBFBD>X<EFBFBD>0<>0<>
<EFBFBD><1D>W<>X<> X<><15> <0A> <1D> <0F> <13> <10> <12> <17> <1C> <1B><19><15><1E> 
<EFBFBD>
<EFBFBD> <14><13> <0B><0E>z<EFBFBD>'<27>5<EFBFBD><<3C><<3C>8<><18>D<>E<>E<> <0C>9<EFBFBD>9<EFBFBD>;<3B>D<EFBFBD><17>2<>3<>G<EFBFBD> <15>+<2B>.<2E>.<2E>+<2B>*=<3D>*=<3D>><3E> ><3E>B<EFBFBD> <15>+<2B>.<2E>.<2E>+<2B>*=<3D>*=<3D>><3E> ><3E>B<EFBFBD><12><19><1C> <0A><16>
<EFBFBD>"<22>1<EFBFBD> <0A> <0A><1F><01>]<5D>
<EFBFBD><0E>0:<3A>0F<30>0F<30>w<EFBFBD>0O<30><02>"<22>'<27><14><14><19>!<21>/<2F><1D><19> 
<EFBFBD> <09><13>\<5C>\<5C><14>B<EFBFBD>v<EFBFBD><19>
<EFBFBD><02>
<0C>w<EFBFBD><17>"<22>"<22>"<22> <0F> <13>N<EFBFBD>N<EFBFBD>$=<3D>&)<29>#<23>d<EFBFBD>)<29>n<EFBFBD><12> <0E> <1F>|<7C>|<7C><13><1F><1C><1F>%<25> $<24><0E>H<EFBFBD><1A>+<2B>+<2B>D<EFBFBD>1<>8<>8<><14>><3E>D<EFBFBD><18>K<EFBFBD>K<EFBFBD>M<EFBFBD>E<EFBFBD><1E>{<7B>{<7B><13><1F><1F><1D>u<EFBFBD>~<7E>%<25> #<23><0E>H<EFBFBD>+
<0C>><10><1B><1B>c<EFBFBD>!<21>X<EFBFBD>%9<>%9<>C<EFBFBD>%?<3F><18><14>g<EFBFBD>1<>(<28>2F<32>2F<32>1G<31><1F><08> 0<> 0<>1<> 3<>
<EFBFBD>
<EFBFBD> <0C> <0B> <0B><1D><1D><10><18><18><11> <09> <09><15>M<EFBFBD>M<EFBFBD>)<29>'<27> <1E> <06>A<EFBFBD><16> <1D> <1D> +<2B> +<2B> -<2D>A<EFBFBD>F<EFBFBD> <0C>=<3D>=<3D><11> <1B><19><19> <0C>H<EFBFBD>]
<0C><12>s <00>BP<03>P!r<>r<>c<00>D<00>|<00>t<00>|D]\}}||k(s<01> |cSt<00>r)<01>KeyError)r<>r<><00>header<65>values r<00> _find_headerr <00>s-<00><00><0E><EFBFBD><16><0E> <20> <0A><06><05> <11>T<EFBFBD>><3E><18>L<EFBFBD>!<21> <13>Nr<00>peerr<72>c<00>
<00>t|d<01>}|<03> td<02><00>t|<03>}|dkr td<04><00>|dks|dkDr6d}t|<02>dkDr d|j <00>z}t |<01>d |<04>|<05><00><04><00>y#t
$rY<00>wxYw)
Ns:statuszno :status header in responserzstatus is negativer<65>r<><00>z: r<>)r r<><00>intr<74>r<>r7r<>)r<>r r<>r
<00>status<75>errors r<00> _check_statusr<00>s<><00><00> <18><17>*<2A> -<2D>E<EFBFBD> <0C>}<7D><19>9<>:<3A>:<3A> <10><15>Z<EFBFBD>F<EFBFBD> <0A><01>z<EFBFBD><19>.<2E>/<2F>/<2F> <0A><03>|<7C>v<EFBFBD><03>|<7C><12><05> <0E>t<EFBFBD>9<EFBFBD>q<EFBFBD>=<3D> <15><1C>t<EFBFBD>{<7B>{<7B>}<7D>,<2C><05><19>D<EFBFBD>6<EFBFBD>!=<3D>f<EFBFBD>X<EFBFBD>e<EFBFBD>W<EFBFBD>M<>N<>N<>$<24><>
<1D> <15><14> <15>s<00>A6<00>6 B<03>Br<>r<>c <00><><00>tjjs td<01><00>tj
j |<02>} | j} | <0A>J<00>| j<00> | j}d|_ |j<00>}| rtjd<00>}n$tjj| | d<03><04>}|}|5| r| }nj||||<06>}t|<03>\}}|j!|<03>5}|j#|||
<EFBFBD>|j%t'|<13><00>}t)|j+<00>||<0E>ddd<00>t-j,<00>}ddd<00>tj.j1||j2|j4||<08><05>}t7z
d<06>|_|j9|<16>st:<00>|S#1swY<00><>xYw#1swY<00>zxYw)Nz DNS-over-HTTP3 is not available.rT)<03> verify_mode<64> server_name<6D>h3r<33>r
)r r<><00> have_quicror<>r<>r<>r<>r;<00>idr<64>r<>r<><00>SyncQuicManager<65>connectr*<00> make_stream<61>send_h3<68>receiverrr<>r r<>r<>r<>r<><00>maxr<78>rm)r<>r<>r<>rr;rBr<>r<>r<>r<>r<>r<><00> url_partsr<73>r<><00>manager<65> the_manager<65>the_connection<6F>startr<00>stream<61>finishrs rr<>r<><00>s<><00><00> <0F>8<EFBFBD>8<EFBFBD> <1D> <1D><13>6<>7<>7<><16> <0C> <0C>%<25>%<25>c<EFBFBD>*<2A>I<EFBFBD><18>!<21>!<21>H<EFBFBD> <13> <1F><1F> <1F><10>~<7E>~<7E>!<21><18>~<7E>~<7E><04> <0C>A<EFBFBD>D<EFBFBD> <0C>9<EFBFBD>9<EFBFBD>;<3B>D<EFBFBD><12>5?<3F>5K<35>5K<35>D<EFBFBD>5Q<35><07><15>(<28>(<28>*<2A>*<2A><1E>H<EFBFBD><14>+<2B>
<EFBFBD><07><1E> <0B> <10> <15>'<27>N<EFBFBD>(<28>0<>0<><15>t<EFBFBD>V<EFBFBD>[<5B><0E>N<EFBFBD>-<2D>W<EFBFBD>5<><1B><15>
<EFBFBD> <1B> '<27> '<27><07> 0<>F<EFBFBD> <12>N<EFBFBD>N<EFBFBD>3<EFBFBD><04>d<EFBFBD> +<2B><19>><3E>><3E>*<2A>Z<EFBFBD>"8<>9<>D<EFBFBD> <19>&<26>.<2E>.<2E>*<2A>E<EFBFBD>4<EFBFBD> 8<>1<><16><19><19><1B><06>
<11> <0C> <0B> <0B><1D><1D> <0C><11> <09> <09><15>M<EFBFBD>M<EFBFBD>)<29>'<27> <1E> <06>A<EFBFBD><11><16>%<25><1E><13> %<25>A<EFBFBD>F<EFBFBD> <0C>=<3D>=<3D><11> <1B><19><19> <0C>H<EFBFBD>1<> 0<><30>
<11><17>s%<00>9G<03>;A G <05>G<03> G <09>G<03>G"c<00>`<00> |j|<01>S#t$rt||<02>YnwxYw<01>.)z<>Reads a datagram from the socket.
A Timeout exception will be raised if the operation is not completed
by the expiration time.
)<03>recvfrom<6F>BlockingIOErrorr<72>)rC<00>max_sizers r<00> _udp_recvr*<00>s9<00><00>
<0F> 1<><17>=<3D>=<3D><18>*<2A> *<2A><><1E> 1<> <1E>t<EFBFBD>Z<EFBFBD> 0<> 1<><31> s <00><00>,<03>,c<00><><00> |r|j||<02>S|j|<01>S#t$rt||<03>YnwxYw<01>B)z<>Sends the specified datagram to destination over the socket.
A Timeout exception will be raised if the operation is not completed
by the expiration time.
)<04>sendto<74>sendr(r<>)rC<00>datar<61>rs r<00> _udp_sendr/<00>sL<00><00>
<0F> 1<><1A><1B>{<7B>{<7B>4<EFBFBD><1B>5<>5<><1B>y<EFBFBD>y<EFBFBD><14><EFBFBD>&<26><><1E> 1<> <1E>t<EFBFBD>Z<EFBFBD> 0<> 1<><31> s<00>(<00>(<00>A<03>ArC<00>whatr<74>rc<00><><00>t|tjj<00>r|j <00>}t j
<00>}t ||||<03>}||fS)a<>Send a DNS message to the specified UDP socket.
*sock*, a ``socket``.
*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.
Returns an ``(int, float)`` tuple of bytes sent and the sent time.
)rvr r<><00>Messager<65>r r/)rCr0r<>r<00> sent_time<6D>ns r<00>send_udpr5<00>sH<00><00>,<12>$<24><03> <0B> <0B>+<2B>+<2B>,<2C><13>|<7C>|<7C>~<7E><04><14> <09> <09> <0B>I<EFBFBD><11>$<24><04>k<EFBFBD>:<3A>6<>A<EFBFBD> <0A>y<EFBFBD>><3E>rr<>r<>r<><00>raise_on_truncation<6F> ignore_errors<72>queryc <00><><00>d} t|d|<02>\} } t|j| ||<03>s<01>*tj<00>} tj
j | |||||<08><03>}| r|
<EFBFBD>|
j|<0E>s<01>z|r|| fS|| | fS#tj
j$r.}| r&|
<EFBFBD>$|
j|j <00><00>sYd}~<0F>ʂd}~wt$r| rY<00>ۂwxYw)aRead a DNS message from a UDP socket.
*sock*, a ``socket``.
*destination*, a destination tuple appropriate for the address family
of the socket, specifying where the message is expected to arrive from.
When receiving a response, this would be where the associated query was
sent.
*expiration*, a ``float`` or ``None``, the absolute time at which
a timeout exception should be raised. If ``None``, no timeout will
occur.
*ignore_unexpected*, a ``bool``. If ``True``, ignore responses from
unexpected sources.
*one_rr_per_rrset*, a ``bool``. If ``True``, put each RR into its own
RRset.
*keyring*, a ``dict``, the keyring to use for TSIG.
*request_mac*, a ``bytes`` or ``None``, the MAC of the request (for TSIG).
*ignore_trailing*, a ``bool``. If ``True``, ignore trailing
junk at end of the received message.
*raise_on_truncation*, a ``bool``. If ``True``, raise an exception if
the TC bit is set.
Raises if the message is malformed, if network errors occur, of if
there is a timeout.
If *destination* is not ``None``, returns a ``(dns.message.Message, float)``
tuple of the received message and the received time.
If *destination* is ``None``, returns a
``(dns.message.Message, float, tuple)``
tuple of the received message, the received time, and the address where
the message arrived from.
*ignore_errors*, a ``bool``. If various format errors or response
mismatches occur, ignore them and keep listening for a valid response.
The default is ``False``.
*query*, a ``dns.message.Message`` or ``None``. If not ``None`` and
*ignore_errors* is ``True``, check that the received message is a response
to this query, and if not keep listening for a valid response.
r<00><><EFBFBD>)r<>r<>r<>r<>r6N)
r*r<>r&r r r<>r<><00> Truncatedr<64>r7)rCr<>rr<>r<>r<>r<>r<>r6r7r8r<>r<><00> received_timer<00>es r<00> receive_udpr>s<><00><00>| <0F>D<EFBFBD>
<0E>(<28><14>u<EFBFBD>j<EFBFBD>A<><1C><14>|<7C>#<23> <10>K<EFBFBD>K<EFBFBD><1C>{<7B>4E<34>
<EFBFBD> <15><1C> <09> <09> <0B> <0A> <16><13> <0B> <0B>%<25>%<25><14><1F>'<27>!1<> /<2F>$7<> &<26><0E>A<EFBFBD>6 <19>U<EFBFBD>.<2E>u<EFBFBD>7H<37>7H<37><11>7K<37> <14> <16><15>}<7D>%<25> %<25><15>}<7D>l<EFBFBD>3<> 3<><33>1<13>{<7B>{<7B>$<24>$<24> <16><1E><19>%<25><1D>)<29>)<29>!<21>)<29>)<29>+<2B>6<><18><15><><18> <16><1C><18><15>  <16>s$<00>%B<00>C <03>%#C<03> C<03>C <03>C <03>5c <00><><00>|j<00>} t||||d<01>\} }}t|<02>\}}|
rtj|
<EFBFBD>}n| <0A>J<00>t | t j|<04>}|5}t|| ||<10>t||||||j|j|| | |<00> \}}||z
|_ | s|j|<13>st<00>|cddd<02>S#1swYnxYw J<00>)a<>Return the response obtained after sending a query via UDP.
*q*, a ``dns.message.Message``, the query to send
*where*, a ``str`` containing an IPv4 or IPv6 address, where
to send the message.
*timeout*, a ``float`` or ``None``, the number of seconds to wait before the
query times out. If ``None``, the default, wait forever.
*port*, an ``int``, the port send the message to. The default is 53.
*source*, a ``str`` containing an IPv4 or IPv6 address, specifying
the source address. The default is the wildcard address.
*source_port*, an ``int``, the port from which to send the message.
The default is 0.
*ignore_unexpected*, a ``bool``. If ``True``, ignore responses from
unexpected sources.
*one_rr_per_rrset*, a ``bool``. If ``True``, put each RR into its own
RRset.
*ignore_trailing*, a ``bool``. If ``True``, ignore trailing
junk at end of the received message.
*raise_on_truncation*, a ``bool``. If ``True``, raise an exception if
the TC bit is set.
*sock*, a ``socket.socket``, 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 nonblocking datagram socket,
and the *source* and *source_port* are ignored.
*ignore_errors*, a ``bool``. If various format errors or response
mismatches occur, ignore them and keep listening for a valid response.
The default is ``False``.
Returns a ``dns.message.Message``.
TN)r<>r<>r*r<>r<>r2r3<00>
SOCK_DGRAMr5r>r<><00>macr r<>rm)r<>r<>rr;rBr<>r<>r<>r<>r6rCr7r<>rAr<><00>
begin_timerrr<>rr<s r<00>udprD<00>s<><00><00>p <0A>9<EFBFBD>9<EFBFBD>;<3B>D<EFBFBD> 7<> <0A>t<EFBFBD>V<EFBFBD>[<5B>$<24>!<06><1D>R<EFBFBD><1B>f<EFBFBD> .<2E>g<EFBFBD>6<><1C>Z<EFBFBD><1A> <0B>0:<3A>0F<30>0F<30>t<EFBFBD>0L<30><02><11>~<7E><1D>~<7E> <18><12>V<EFBFBD>.<2E>.<2E><06> 7<><02> <0B>q<EFBFBD><10><11>D<EFBFBD>+<2B>z<EFBFBD>2<>(<28> <0A> <17> <16> <1D> <1C> <0A>I<EFBFBD>I<EFBFBD> <0A>E<EFBFBD>E<EFBFBD> <1B> <1F> <19> <0A> 
<EFBFBD><1A><11>M<EFBFBD><1F><1A>+<2B><01><06><1E><11><1D><1D>q<EFBFBD>!1<><1D> <1D><10>)
<0C><12><12><>, <0E><06> s <00>+AC<03>C<07>udp_sock<63>tcp_sockc <00><><00> t|||||||||d| | <0B> } | dfS#tjj$rt |||||||||
<EFBFBD> } | dfcYSwxYw)a|Return the response to the query, trying UDP first and falling back
to TCP if UDP results in a truncated response.
*q*, a ``dns.message.Message``, the query to send
*where*, a ``str`` containing an IPv4 or IPv6 address, where to send the message.
*timeout*, a ``float`` or ``None``, the number of seconds to wait before the query
times out. If ``None``, the default, wait forever.
*port*, an ``int``, the port send the message to. The default is 53.
*source*, a ``str`` containing an IPv4 or IPv6 address, specifying the source
address. The default is the wildcard address.
*source_port*, an ``int``, the port from which to send the message. The default is
0.
*ignore_unexpected*, a ``bool``. If ``True``, ignore responses from unexpected
sources.
*one_rr_per_rrset*, a ``bool``. If ``True``, put each RR into its own RRset.
*ignore_trailing*, a ``bool``. If ``True``, ignore trailing junk at end of the
received message.
*udp_sock*, a ``socket.socket``, 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,
it must be a nonblocking datagram socket, and the *source* and *source_port* are
ignored for the UDP query.
*tcp_sock*, a ``socket.socket``, or ``None``, the connected socket to use for the
TCP query. If ``None``, the default, a socket is created. Note that if a socket is
provided, it must be a nonblocking connected stream socket, and *where*, *source*
and *source_port* are ignored for the TCP query.
*ignore_errors*, a ``bool``. If various format errors or response mismatches occur
while listening for UDP, ignore them and keep listening for a valid response. The
default is ``False``.
Returns a (``dns.message.Message``, tcp) tuple where tcp is ``True`` if and only if
TCP was used.
TF)rDr r<>r;<00>tcp) r<>r<>rr;rBr<>r<>r<>r<>rErFr7rs r<00>udp_with_fallbackrI<00>s<><00><00>r <20><16> <0A> <11> <13> <10> <12> <17> <1D> <1C> <1B> <10> <14> <19> 
<EFBFBD><08><19>%<25> <20> <20><> <0E>;<3B>;<3B> <20> <20>  <20><16> <0A> <11> <13> <10> <12> <17> <1C> <1B> <14>

<EFBFBD><08><19>$<24><1F><1F>  <20>s<00><00>4A<03>Ac<00> <00>d}|dkDr; |j|<01>}|dk(r td<03><00>|t|<04>z}||z }|dkDr<01>;|S#ttj
f$rt ||<02>Y<00>/tj$rt||<02>Y<00>OwxYw)z<>Read the specified number of bytes from sock. Keep trying until we
either get the desired amount, or we hit EOF.
A Timeout exception will be raised if the operation is not completed
by the expiration time.
rr<00>EOF) <09>recv<63>EOFErrorr<72>r(rw<00>SSLWantReadErrorr<72><00>SSLWantWriteErrorr<72>)rC<00>countrr<>r4s r<00> _net_readrQ7s<><00><00> <0C>A<EFBFBD>
<0F>!<21>)<29> 1<><14> <09> <09>%<25> <20>A<EFBFBD><10>C<EFBFBD>x<EFBFBD><1E>u<EFBFBD>o<EFBFBD>%<25> <11>S<EFBFBD><11>V<EFBFBD>O<EFBFBD>E<EFBFBD> <0A><11>F<EFBFBD>A<EFBFBD> <10>!<21>)<29> <0A>H<EFBFBD><48>  <20><13>!5<>!5<>6<> 1<> <1E>t<EFBFBD>Z<EFBFBD> 0<><12>$<24>$<24> 1<> <1E>t<EFBFBD>Z<EFBFBD> 0<> 1<>s<00>4A<00>%B <03>,B <03> B c<00><><00>d}t|<01>}||kr ||j||d<00>z }||kr<01>yy#ttjf$rt ||<02>Y<00>/tj $rt||<02>Y<00>OwxYw)z<>Write the specified data to the socket.
A Timeout exception will be raised if the operation is not completed
by the expiration time.
rN)r<>r-r(rwrOr<>rNr<>)rCr.r<00>current<6E>ls r<00>
_net_writerULs~<00><00>
<10>G<EFBFBD> <0B>D<EFBFBD> <09>A<EFBFBD>
<11>A<EFBFBD>+<2B> 1<> <13>t<EFBFBD>y<EFBFBD>y<EFBFBD><14>g<EFBFBD>h<EFBFBD><1E>0<> 0<>G<EFBFBD> <12>A<EFBFBD>+<2B><> <20><13>!6<>!6<>7<> 1<> <1E>t<EFBFBD>Z<EFBFBD> 0<><12>#<23>#<23> 1<> <1E>t<EFBFBD>Z<EFBFBD> 0<> 1<>s<00>3<00>%A;<03>A;<03>:A;c<00><00>t|tjj<00>r|j d<01><02>}nt |<01>j dd<04>|z}tj<00>}t|||<02>t |<03>|fS)a{Send a DNS message to the specified TCP socket.
*sock*, a ``socket``.
*what*, a ``bytes`` or ``dns.message.Message``, the message to send.
*expiration*, a ``float`` or ``None``, the absolute time at which
a timeout exception should be raised. If ``None``, no timeout will
occur.
Returns an ``(int, float)`` tuple of bytes sent and the sent time.
T)<01>prepend_lengthr<68><00>big) rvr r<>r2r<>r<><00>to_bytesr rU)rCr0r<00>tcpmsgr3s r<00>send_tcpr[\sk<00><00>$<12>$<24><03> <0B> <0B>+<2B>+<2B>,<2C><15><1C><1C>T<EFBFBD><1C>2<><06>
<15>T<EFBFBD><19>#<23>#<23>A<EFBFBD>u<EFBFBD>-<2D><04>4<><06><14> <09> <09> <0B>I<EFBFBD><0E>t<EFBFBD>V<EFBFBD>Z<EFBFBD>(<28> <0F><06>K<EFBFBD><19> #<23>#rc<00><><00>t|d|<01>}tjd|<06>\}t|||<01>}tj<00>} tj
j |||||<05><03>}
|
| fS)a<>Read a DNS message from a TCP socket.
*sock*, a ``socket``.
*expiration*, a ``float`` or ``None``, the absolute time at which
a timeout exception should be raised. If ``None``, no timeout will
occur.
*one_rr_per_rrset*, a ``bool``. If ``True``, put each RR into its own
RRset.
*keyring*, a ``dict``, the keyring to use for TSIG.
*request_mac*, a ``bytes`` or ``None``, the MAC of the request (for TSIG).
*ignore_trailing*, a ``bool``. If ``True``, ignore trailing
junk at end of the received message.
Raises if the message is malformed, if network errors occur, of if
there is a timeout.
Returns a ``(dns.message.Message, float)`` tuple of the received message
and the received time.
r<><00>!Hr<48>)rQ<00>struct<63>unpackr r r<>r<>) rCrr<>r<>r<>r<><00>ldatarTr<>r<rs r<00> receive_tcprazss<00><00>B <16>d<EFBFBD>A<EFBFBD>z<EFBFBD> *<2A>E<EFBFBD> <11>=<3D>=<3D><14>u<EFBFBD> %<25>D<EFBFBD>Q<EFBFBD> <14>T<EFBFBD>1<EFBFBD>j<EFBFBD> )<29>D<EFBFBD><18>I<EFBFBD>I<EFBFBD>K<EFBFBD>M<EFBFBD> <0B> <0B> <0B><1D><1D> <0C><17><1F>)<29>'<27> <1E> <06>A<EFBFBD> <0E>}<7D> <1D>rc<00>P<00>|j|<01>}|dk(ry|tjtjtjfvr:t ||<02>|j tjtj<00>}|dk7rt|tj|<03><00><00>yrU) <0A>
connect_ex<EFBFBD>errno<6E> EINPROGRESS<53> EWOULDBLOCK<43>EALREADYr<59><00>
getsockoptr3<00>
SOL_SOCKET<EFBFBD>SO_ERROR<4F>OSError<6F>os<6F>strerror)r<>r@r<00>errs rr5r5<00>s<00><00>
<0B>,<2C>,<2C>w<EFBFBD>
<1F>C<EFBFBD>
<EFBFBD>a<EFBFBD>x<EFBFBD><0E>
<EFBFBD>u<EFBFBD> <20> <20>%<25>"3<>"3<>U<EFBFBD>^<5E>^<5E>D<>D<><1A>1<EFBFBD>j<EFBFBD>)<29><0F>l<EFBFBD>l<EFBFBD>6<EFBFBD>,<2C>,<2C>f<EFBFBD>o<EFBFBD>o<EFBFBD>><3E><03>
<EFBFBD>a<EFBFBD>x<EFBFBD><15>c<EFBFBD>2<EFBFBD>;<3B>;<3B>s<EFBFBD>+<2B>,<2C>,<2C>rc <00><><00>|j<00>} t|<02>\}
} |rtj|<08>} n2t ||||d<01>\} }}| <0A>J<00>t | t j|<04>} | 5}|s t|| <0B>t|| | <0B>t|| ||j|j|<07>\}}||
z
|_ |j|<10>st<00>|cddd<02>S#1swYnxYw J<00>)a<>Return the response obtained after sending a query via TCP.
*q*, a ``dns.message.Message``, the query to send
*where*, a ``str`` containing an IPv4 or IPv6 address, where
to send the message.
*timeout*, a ``float`` or ``None``, the number of seconds to wait before the
query times out. If ``None``, the default, wait forever.
*port*, an ``int``, the port send the message to. The default is 53.
*source*, a ``str`` containing an IPv4 or IPv6 address, specifying
the source address. The default is the wildcard address.
*source_port*, an ``int``, the port from which to send the message.
The default is 0.
*one_rr_per_rrset*, a ``bool``. If ``True``, put each RR into its own
RRset.
*ignore_trailing*, a ``bool``. If ``True``, ignore trailing
junk at end of the received message.
*sock*, a ``socket.socket``, or ``None``, the connected 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 nonblocking connected stream
socket, and *where*, *port*, *source* and *source_port* are ignored.
Returns a ``dns.message.Message``.
TN)r<>r*r<>r<>r<>r2r3r4r5r[rar<>rBr r<>rm)r<>r<>rr;rBr<>r<>r<>rCr<>rCrrrAr<>r<>rr<s rrHrH<00>s<><00><00>V <0A>9<EFBFBD>9<EFBFBD>;<3B>D<EFBFBD>-<2D>g<EFBFBD>6<><1C>Z<EFBFBD><1A> <0B>0:<3A>0F<30>0F<30>t<EFBFBD>0L<30><02>$;<3B> <11>4<EFBFBD><16><1B>d<EFBFBD>%
<EFBFBD>!<21><12>[<5B>&<26><12>~<7E><1D>~<7E> <18><12>V<EFBFBD>/<2F>/<2F><16> 8<><02> <0B>q<EFBFBD><13> <14>Q<EFBFBD> <0B>Z<EFBFBD> 0<><10><11>D<EFBFBD>*<2A>%<25>(<28> <0A>z<EFBFBD>+<2B>Q<EFBFBD>Y<EFBFBD>Y<EFBFBD><01><05><05><EFBFBD>
<EFBFBD><1A><11>M<EFBFBD><1F><1A>+<2B><01><06><10>}<7D>}<7D>Q<EFBFBD><1F><1D> <1D><10>
<0C><12><12><> <0E><06> s <00>+A&C<03>C$c<00><><00> |j<00>y#tj$rt||<01>Yn$tj$rt ||<01>YnwxYw<01>Xr)<06> do_handshakerwrNr<>rOr<>r<>s r<00>_tls_handshakerr<00>sS<00><00>
<0E> .<2E> <0A>N<EFBFBD>N<EFBFBD> <1C> <12><><12>#<23>#<23> .<2E> <1E>q<EFBFBD>*<2A> -<2D><12>$<24>$<24> .<2E> <1E>q<EFBFBD>*<2A> -<2D> .<2E><> s<00><00>A<03>A<03>A<03>check_hostname<6D>alpnsc<00><00>tjj|<00>\}}tj||<04><01>}tj
j |_||_|durtj|_
|<02>|j|<02>|S)aQMake an SSL context
If *verify* is ``True``, the default, then certificate verification will occur using
the standard CA roots. If *verify* is ``False``, then certificate verification will
be disabled. If *verify* is a string which is a valid pathname, then if the
pathname is a regular file, the CA roots will be taken from the file, otherwise if
the pathname is a directory roots will be taken from the directory.
If *check_hostname* is ``True``, the default, then the hostname of the server must
be specified when connecting and the server's certificate must authorize the
hostname. If ``False``, then hostname checking is disabled.
*aplns* is ``None`` or a list of TLS ALPN (Application Layer Protocol Negotiation)
strings to use in negotiation. For DNS-over-TLS, the right value is `["dot"]`.
)<02>cafile<6C>capathF) r <00> _tls_util<69>#convert_verify_to_cafile_and_capathrw<00>create_default_context<78>
TLSVersion<EFBFBD>TLSv1_2<5F>minimum_versionrs<00> CERT_NONEr<00>set_alpn_protocols)r<>rsrtrvrwr<>s r<00>make_ssl_contextr<74>sw<00><00>(<19>]<5D>]<5D>F<>F<>v<EFBFBD>N<>N<EFBFBD>F<EFBFBD>F<EFBFBD><15>,<2C>,<2C>F<EFBFBD>6<EFBFBD>J<>K<EFBFBD>#&<26>.<2E>.<2E>"8<>"8<>K<EFBFBD><1F>!/<2F>K<EFBFBD><1E> <0A><15><EFBFBD>"%<25>-<2D>-<2D> <0B><1F> <0C><18><13>&<26>&<26>u<EFBFBD>-<2D> <16>rc<00>"<00>t||dudg<01>S)N<>dot)r<>)r<>r<>s r<00>_make_dot_ssl_contextr<74>'s<00><00> <1C>F<EFBFBD>O<EFBFBD>4<EFBFBD>$?<3F>%<25><17> I<>Irc <00><00>|rt|||||||||<08> S|j<00>} t|<02>\} }t||||d<01>\}}}|<0F>J<00>| <09>t | |
dudg<01>} t |t j| |
|<04><04>5}t|||<0E>t||<0E>t|| |<0E>t||||j|j|<07>\}}|| z
|_|j|<12>st <00>|cddd<02>S#1swYnxYw J<00>)akReturn the response obtained after sending a query via TLS.
*q*, a ``dns.message.Message``, the query to send
*where*, a ``str`` containing an IPv4 or IPv6 address, where
to send the message.
*timeout*, a ``float`` or ``None``, the number of seconds to wait before the
query times out. If ``None``, the default, wait forever.
*port*, an ``int``, the port send the message to. The default is 853.
*source*, a ``str`` containing an IPv4 or IPv6 address, specifying
the source address. The default is the wildcard address.
*source_port*, an ``int``, the port from which to send the message.
The default is 0.
*one_rr_per_rrset*, a ``bool``. If ``True``, put each RR into its own
RRset.
*ignore_trailing*, a ``bool``. If ``True``, ignore trailing
junk at end of the received message.
*sock*, an ``ssl.SSLSocket``, 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 nonblocking connected
SSL stream socket, and *where*, *port*, *source*, *source_port*,
and *ssl_context* are ignored.
*ssl_context*, an ``ssl.SSLContext``, the context to use when establishing
a TLS connection. If ``None``, the default, creates one with the default
configuration.
*server_hostname*, a ``str`` containing the server's hostname. The
default is ``None``, which means that no hostname is known, and if an
SSL context is created, hostname checking will be disabled.
*verify*, a ``bool`` or ``str``. If a ``True``, then TLS certificate verification
of the server is done using the default CA bundle; if ``False``, then no
verification is done; if a `str` then it specifies the path to a certificate file or
directory which will be used for verification.
Returns a ``dns.message.Message``.
TNr<4E>)r<>r<>rB)rHr<>r*r<>r<>r<>r3r4r5rrr[rar<>rBr r<>rm)r<>r<>rr;rBr<>r<>r<>rCr<>r<>r<>r<>rCrrAr<>r<>rr<s r<00>tlsr<73>-s:<00><00>z <0C><13> <0A> <11> <13> <10> <12> <17> <1C> <1B> <10>

<EFBFBD>
<EFBFBD> <0A>9<EFBFBD>9<EFBFBD>;<3B>D<EFBFBD>-<2D>g<EFBFBD>6<><1C>Z<EFBFBD><1A> 7<> <0A>t<EFBFBD>V<EFBFBD>[<5B>$<24>!<06><1D>R<EFBFBD><1B>f<EFBFBD> <0E>><3E><19>><3E><12><1A>&<26>v<EFBFBD><EFBFBD>d<EFBFBD>/J<>U<EFBFBD>G<EFBFBD>T<> <0B> <18>
<EFBFBD><0E><1A><1A><1F>'<27><15> 
<06>
<0B><10><11>K<EFBFBD><1A>,<2C><16>q<EFBFBD>*<2A>%<25><10><11>D<EFBFBD>*<2A>%<25>(<28> <0A>z<EFBFBD>+<2B>Q<EFBFBD>Y<EFBFBD>Y<EFBFBD><01><05><05><EFBFBD>
<EFBFBD><1A><11>M<EFBFBD><1F><1A>+<2B><01><06><10>}<7D>}<7D>Q<EFBFBD><1F><1D> <1D><10>!
<06>
<06>
<06><>$ <0E><06> s <00>;A0C5<03>5C>r<>c <00> <00>tjjs td<01><00>| <0B>|
<EFBFBD>| }
d|_|j <00>} |rt jd<02>} |}n#tjj| |
<EFBFBD><04>} | }| 5|sj||||<05>}t|<02>\}}j|<02>5}|j| d<05>|jt|<11><00>} ddd<02>tj<00>}ddd<02>tj j#| |j$|j&||<07><06>}t)z
d<07>|_|j+|<14>st,<00>|S#1swY<00><>xYw#1swY<00>zxYw)a<>Return the response obtained after sending a query via DNS-over-QUIC.
*q*, a ``dns.message.Message``, the query to send.
*where*, a ``str``, the nameserver IP address.
*timeout*, a ``float`` or ``None``, the number of seconds to wait before the query
times out. If ``None``, the default, wait forever.
*port*, a ``int``, the port to send the query to. The default is 853.
*source*, a ``str`` containing an IPv4 or IPv6 address, specifying the source
address. The default is the wildcard address.
*source_port*, an ``int``, the port from which to send the message. The default is
0.
*one_rr_per_rrset*, a ``bool``. If ``True``, put each RR into its own RRset.
*ignore_trailing*, a ``bool``. If ``True``, ignore trailing junk at end of the
received message.
*connection*, a ``dns.quic.SyncQuicConnection``. If provided, the connection to use
to send the query.
*verify*, a ``bool`` or ``str``. If a ``True``, then TLS certificate verification
of the server is done using the default CA bundle; if ``False``, then no
verification is done; if a `str` then it specifies the path to a certificate file or
directory which will be used for verification.
*hostname*, a ``str`` containing the server's hostname or ``None``. The default is
``None``, which means that no hostname is known, and if an SSL context is created,
hostname checking will be disabled. This value is ignored if *url* is not
``None``.
*server_hostname*, a ``str`` or ``None``. This item is for backwards compatibility
only, and has the same meaning as *hostname*.
Returns a ``dns.message.Message``.
zDNS-over-QUIC is not available.Nr)rrTr<54>r
)r r<>rrrrr<>r<>r<>rrr*rr-rrr r<>r<>r<>r<>rr<>rm)r<>r<>rr;rBr<>r<>r<>r<>r<>r<>r<>r<>r r"r!r#rr$r%rs rr<>r<><00>se<00><00>n <0F>8<EFBFBD>8<EFBFBD> <1D> <1D><13>5<>6<>6<><16>"<22>x<EFBFBD>'7<>"<22><08> <0C>A<EFBFBD>D<EFBFBD> <0C>9<EFBFBD>9<EFBFBD>;<3B>D<EFBFBD><12>5?<3F>5K<35>5K<35>D<EFBFBD>5Q<35><07>#<23><0E><15>(<28>(<28>*<2A>*<2A><1E>H<EFBFBD>+<2B>
<EFBFBD><07><1E> <0B> <10><19>(<28>0<>0<><15>t<EFBFBD>V<EFBFBD>[<5B><0E>N<EFBFBD>-<2D>W<EFBFBD>5<><1B><15>
<EFBFBD> <1B> '<27> '<27><07> 0<>F<EFBFBD> <12>K<EFBFBD>K<EFBFBD><04>d<EFBFBD> #<23><19>><3E>><3E>*<2A>Z<EFBFBD>"8<>9<>D<EFBFBD>1<><16><19><19><1B><06>
<11> <0C> <0B> <0B><1D><1D> <0C><11> <09> <09><15>M<EFBFBD>M<EFBFBD>)<29>'<27> <1E> <06>A<EFBFBD><11><16>%<25><1E><13> %<25>A<EFBFBD>F<EFBFBD> <0C>=<3D>=<3D><11> <1B><19><19> <0C>H<EFBFBD>1<> 0<><30>
<11><17>s$<00>6E:<03>8-E.<05>%E:<03>.E7 <09>3E:<03>:Fc<00><00>eZdZdZdZdZdZy)<06>UDPModeaHow should UDP be used in an IXFR from :py:func:`inbound_xfr()`?
NEVER means "never use UDP; always use TCP"
TRY_FIRST means "try to use UDP but fall back to TCP if needed"
ONLY means "raise ``dns.xfr.UseTCP`` if trying UDP does not succeed"
rr<>r<>N)rLrMrNrk<00>NEVER<45> TRY_FIRST<53>ONLYr_rrr<>r<><00>s<00><00><08> <0E>E<EFBFBD><11>I<EFBFBD> <0C>Drr<><00> txn_managerr<72><00>serialc #<00>K<00>|jdj}|tjjk(}|j <00>}|j <00>} t|tj<00>xr|jtjk(}
|
rt|| d|<05>n/tjdt| <09><00>| z} t|| |<05>tj j#||||
<EFBFBD>5} d} d}d}| s<>t%|<04>\}}|<11>|<05>||kDr|}|
rt'|d|<11>\}}n2t)|d|<11>}tj*d|<13>\}t)|||<11>}tj,j/||j0|j2d|||
|<07><08>}| j5|<0F>} |<0F><02>|j6}| s<01><>|j0r-|<0F>+|j8stj:j=d <09><00>ddd<02>y#1swYyxYw<01>w)
z'Given a socket, does the zone transfer.rNr]Fr:r<>T)r<>r<><00>xfr<66>origin<69>tsig_ctx<74>multir<69>z missing TSIG)<1F>question<6F>rdtyper <00> rdatatype<70>IXFR<46>from_wire_originr<6E>rvr3r<>rAr/r^<00>packr<6B>rUr<><00>Inboundr*r*rQr_r<>r<>r<>rB<00>process_messager<65><00>had_tsigr <00> FormError)r<>r<>r8r<>rrr<><00>is_ixfrr<72>r<><00>is_udprZ<00>inbound<6E>doner<65>rr><00> mexpiration<6F>rwirer`rTs r<00> _inbound_xfrr<72>s<><00><00><><00><13>^<5E>^<5E>A<EFBFBD> <1E> %<25> %<25>F<EFBFBD><14><03> <0A> <0A>*<2A>*<2A>*<2A>G<EFBFBD> <18> )<29> )<29> +<2B>F<EFBFBD> <10>=<3D>=<3D>?<3F>D<EFBFBD> <17><01>6<EFBFBD>=<3D>=<3D> )<29> I<>a<EFBFBD>f<EFBFBD>f<EFBFBD><06>8I<38>8I<38>.I<>F<EFBFBD> <0A><11>!<21>T<EFBFBD>4<EFBFBD><1A>,<2C><17><1B><1B>T<EFBFBD>3<EFBFBD>t<EFBFBD>9<EFBFBD>-<2D><04>4<><06><12>1<EFBFBD>f<EFBFBD>j<EFBFBD>)<29> <0C><17><17><1F><1F><1B>f<EFBFBD>f<EFBFBD>f<EFBFBD> =<3D><17><14><04><17><08>(,<2C><01><16>-<2D>g<EFBFBD>6<> <1C>Q<EFBFBD> <0B><1A>"<22><1A>&<26>;<3B><1A>+C<>(<28> <0B><15>&<26>q<EFBFBD>%<25><1B>=<3D>
<EFBFBD><15><01>!<21>!<21>Q<EFBFBD> <0B>4<><05><1D>}<7D>}<7D>T<EFBFBD>5<EFBFBD>1<><04><11>!<21>!<21>Q<EFBFBD> <0B>4<><05><13> <0B> <0B>%<25>%<25><15><1D> <0A> <0A>!<21>I<EFBFBD>I<EFBFBD><18><1D>!<21>!<21>z<EFBFBD>!(<28>&<26> <0E>A<EFBFBD><1B>*<2A>*<2A>1<EFBFBD>-<2D>D<EFBFBD><13>G<EFBFBD><18>z<EFBFBD>z<EFBFBD>H<EFBFBD>1<17>2 <11>=<3D>=<3D>Q<EFBFBD>]<5D>1<EFBFBD>:<3A>:<3A><15>-<2D>-<2D>)<29>)<29>.<2E>9<> 9<>=
><3E> =<3D> =<3D>s%<00>C2H <01>4CG=<03>;9G=<03>4 H <01>=H<07>H <01>zoner<65><00>rdclass<73>keyname<6D>
relativizer)<00>use_udp<64> keyalgorithmc #<00>>K<00>Gd<01>dtjj<00>}t|t<00>rtj
j |<01>}tjjj|<02>}tjj|||<03>}|tjjk(r<>|j|j|tjj tjj"d<03><04>}tj$j ddd| <0C>d<08><03>}|j'|d <09>|<06>|j)|||<0E> <0B>t+|||
| d<03>\}}}
|<13>J<00>t-| <09>\}}|||<08>}| r(|tjjk7r t/d <0C><00>| rt0j2nt0j4}t7|||
<EFBFBD>5}t9|||<16>t;|||| ||<16>Ed
{<00><03><02>d
d
d
<EFBFBD>y
7<00> #1swYy
xYw<01>w) a<>Return a generator for the responses to a zone transfer.
*where*, a ``str`` containing an IPv4 or IPv6 address, where
to send the message.
*zone*, a ``dns.name.Name`` or ``str``, the name of the zone to transfer.
*rdtype*, an ``int`` or ``str``, the type of zone transfer. The
default is ``dns.rdatatype.AXFR``. ``dns.rdatatype.IXFR`` can be
used to do an incremental transfer instead.
*rdclass*, an ``int`` or ``str``, the class of the zone transfer.
The default is ``dns.rdataclass.IN``.
*timeout*, a ``float``, the number of seconds to wait for each
response message. If None, the default, wait forever.
*port*, an ``int``, the port send the message to. The default is 53.
*keyring*, a ``dict``, the keyring to use for TSIG.
*keyname*, a ``dns.name.Name`` or ``str``, the name of the TSIG
key to use.
*relativize*, a ``bool``. If ``True``, all names in the zone will be
relativized to the zone origin. It is essential that the
relativize setting matches the one specified to
``dns.zone.from_xfr()`` if using this generator to make a zone.
*lifetime*, a ``float``, the total number of seconds to spend
doing the transfer. If ``None``, the default, then there is no
limit on the time the transfer may take.
*source*, a ``str`` containing an IPv4 or IPv6 address, specifying
the source address. The default is the wildcard address.
*source_port*, an ``int``, the port from which to send the message.
The default is 0.
*serial*, an ``int``, the SOA serial number to use as the base for
an IXFR diff sequence (only meaningful if *rdtype* is
``dns.rdatatype.IXFR``).
*use_udp*, a ``bool``. If ``True``, use UDP (only meaningful for IXFR).
*keyalgorithm*, a ``dns.name.Name`` or ``str``, the TSIG algorithm to use.
Raises on errors, and so does the generator.
Returns a generator of ``dns.message.Message`` objects.
c<00><><00>eZdZd<01>Zd<02>Zdej jfd<04>Zd<05>Z d de
dejjfd<07>Z y)
<EFBFBD>$xfr.<locals>.DummyTransactionManagerc<00>^<00>|||r!tjjf|_y|f|_yr)r r<><00>empty<74>info)r"r<>r<>s rrz-xfr.<locals>.DummyTransactionManager.__init__<5F>s#<00><00><1F><1A>z<EFBFBD>S<EFBFBD>X<EFBFBD>X<EFBFBD>^<5E>^<5E>V<>D<EFBFBD>I<EFBFBD>v<EFBFBD>V<>D<EFBFBD>Irc<00><00>|jSr)r<><00>r"s r<00>origin_informationz7xfr.<locals>.DummyTransactionManager.origin_information<6F>s <00><00><17>9<EFBFBD>9<EFBFBD> rrdc<00><00>t<00>rrGr<>s r<00> get_classz.xfr.<locals>.DummyTransactionManager.get_class<73>rarc<00><00>t<00>rrGr<>s r<00>readerz+xfr.<locals>.DummyTransactionManager.reader<65>rar<00> replacementc<00>h<00>Gd<01>d<02>}ttjj|<02><00>S)Nc<00><00>eZdZd<01>Zd<02>Zy)<04>Exfr.<locals>.DummyTransactionManager.writer.<locals>.DummyTransactionc<00><00>yrr_)r"rZ<00>kws r<00>nopzIxfr.<locals>.DummyTransactionManager.writer.<locals>.DummyTransaction.nop<6F>s<00><00>rc<00><00>|jSr)r<>)r"r>s r<00> __getattr__zQxfr.<locals>.DummyTransactionManager.writer.<locals>.DummyTransaction.__getattr__<5F>s <00><00><1F>8<EFBFBD>8<EFBFBD>OrN)rLrMrNr<>r<>r_rr<00>DummyTransactionr<6E><00>s <00><00><19>$rr<>)rr <00> transaction<6F> Transaction)r"r<>r<>s r<00>writerz+xfr.<locals>.DummyTransactionManager.writer<65>s)<00><00> $<24> $<24><18><03><0F><0F>3<>3<>5E<35>5G<35>H<> HrN)F)rLrMrNrr<>r <00>
rdataclass<EFBFBD>
RdataClassr<EFBFBD>r<><00>boolr<6C>r<>r<>r_rr<00>DummyTransactionManagerr<72><00>sH<00><00> W<01> <1D> &<26>s<EFBFBD>~<7E>~<7E>8<>8<> &<26> &<26> I<01>d<EFBFBD> I<01>s<EFBFBD><EFBFBD><EFBFBD>7R<37>7R<37> Irr<>T)<01>create<74>IN<49>SOAz. . z 0 0 0 0rN)<01> algorithmzcannot do a UDP AXFR)r r<><00>TransactionManagerrvr<>r<><00> from_textr<74><00> RdataType<70>maker<65><00>
make_queryr<EFBFBD><00>
find_rrset<EFBFBD> authorityr<79>r<>r<><00>rdata<74>add<64>use_tsigr<67>r*r<>r3rAr4r2r5r<>)r<>r<>r<>r<>rr;r<>r<>r<>r)rBr<>r<>r<>r<>r<>r<><00>rrset<65>soarAr<>r>r<00>tm<74> sock_typer<65>s rr<>r<>;s<><00><00><><00>JI<01>#<23>/<2F>/<2F>"D<>"D<>I<01>.<12>$<24><03><1C><12>x<EFBFBD>x<EFBFBD>!<21>!<21>$<24>'<27><04> <10>]<5D>]<5D> $<24> $<24> )<29> )<29>&<26> 1<>F<EFBFBD> <0B> <0B> <0B><1E><1E>t<EFBFBD>V<EFBFBD>W<EFBFBD>5<>A<EFBFBD> <0A><13><1D><1D>#<23>#<23>#<23><11> <0C> <0C> <0A>K<EFBFBD>K<EFBFBD><14>s<EFBFBD>~<7E>~<7E>0<>0<>#<23>-<2D>-<2D>2C<32>2C<32>D<EFBFBD><1D>
<EFBFBD><05><12>i<EFBFBD>i<EFBFBD>!<21>!<21>$<24><05><14>f<EFBFBD>X<EFBFBD>X<EFBFBD>/F<>G<><03> <0A> <09> <09>#<23>q<EFBFBD><19><0E><1A> <09>
<EFBFBD>
<EFBFBD>7<EFBFBD>G<EFBFBD>|<7C>
<EFBFBD><<3C> 7<> <0A>t<EFBFBD>V<EFBFBD>[<5B>$<24>!<06><1D>R<EFBFBD><1B>f<EFBFBD> <0E>><3E><19>><3E>$<24>X<EFBFBD>.<2E>O<EFBFBD>Q<EFBFBD>
<EFBFBD> <20><14>z<EFBFBD> 2<>B<EFBFBD><0E>6<EFBFBD>S<EFBFBD>]<5D>]<5D>/<2F>/<2F>/<2F><18>/<2F>0<>0<>%,<2C><06>!<21>!<21>&<26>2D<32>2D<32>I<EFBFBD> <14>R<EFBFBD><19>F<EFBFBD> +<2B>q<EFBFBD><10><11>K<EFBFBD><1A>,<2C><1F><02>A<EFBFBD>q<EFBFBD>&<26>'<27>:<3A>F<>F<>F<>
,<2C> +<2B>F<><46>
,<2C> +<2B>s0<00>GH<01> !H<03>H<06>H<03> H<01>H<03>H<07>H<01>udp_modec <00>6<00>|<02>#tjj|<01>\}} ntjj|<02>} t ||||d<02>\}
} }|
<EFBFBD>J<00>t |<05>\} } |j djtjjk(r\|tjk7rIt|
tj|<06>5}t|| | <0A> t!|||| || <0A>D]} <0C> ddd<01>yt|
tj&|<06>5}t|| | <0A>t!|||| || <0A>D]} <0C> ddd<01>y#tjj"$r|tj$k(r<01>YnwxYw ddd<01><00><>#1swY<00><>xYw#1swYyxYw)a<>Conduct an inbound transfer and apply it via a transaction from the
txn_manager.
*where*, a ``str`` containing an IPv4 or IPv6 address, where
to send the message.
*txn_manager*, a ``dns.transaction.TransactionManager``, the txn_manager
for this transfer (typically a ``dns.zone.Zone``).
*query*, the query to send. If not supplied, a default query is
constructed using information from the *txn_manager*.
*port*, an ``int``, the port send the message to. The default is 53.
*timeout*, a ``float``, the number of seconds to wait for each
response message. If None, the default, wait forever.
*lifetime*, a ``float``, the total number of seconds to spend
doing the transfer. If ``None``, the default, then there is no
limit on the time the transfer may take.
*source*, a ``str`` containing an IPv4 or IPv6 address, specifying
the source address. The default is the wildcard address.
*source_port*, an ``int``, the port from which to send the message.
The default is 0.
*udp_mode*, a ``dns.query.UDPMode``, determines how UDP is used
for IXFRs. The default is ``dns.query.UDPMode.NEVER``, i.e. only use
TCP. Other possibilities are ``dns.query.UDPMode.TRY_FIRST``, which
means "try UDP but fallback to TCP if needed", and
``dns.query.UDPMode.ONLY``, which means "try UDP and raise
``dns.xfr.UseTCP`` if it does not succeed.
Raises on errors.
NTr)r r<>r<><00>extract_serial_from_queryr<79>r*r<>r<>r<>r<>r<>r<>r2r3rAr5r<><00>UseTCPr<50>r4)r<>r<>r8r;rr)rBr<>r<>r<>rAr<>r>rr<>s r<00> inbound_xfrr<72><00>sw<00><00>^ <0A>}<7D><1D>'<27>'<27>,<2C>,<2C>[<5B>9<><0F><15><06><14><17><17>2<>2<>5<EFBFBD>9<><06> 7<> <0A>t<EFBFBD>V<EFBFBD>[<5B>$<24>!<06><1D>R<EFBFBD><1B>f<EFBFBD> <0E>><3E><19>><3E>$<24>X<EFBFBD>.<2E>O<EFBFBD>Q<EFBFBD>
<EFBFBD> <0C>~<7E>~<7E>a<EFBFBD><18><1F><1F>3<EFBFBD>=<3D>=<3D>#5<>#5<>5<>(<28>g<EFBFBD>m<EFBFBD>m<EFBFBD>:S<> <18><12>V<EFBFBD>.<2E>.<2E><06> 7<>1<EFBFBD> <14>Q<EFBFBD> <0B>Z<EFBFBD> 0<> <1A>%<25><1F><11>E<EFBFBD>6<EFBFBD>7<EFBFBD>J<EFBFBD><12>A<EFBFBD><19><12><17>8<> 7<>
<15>R<EFBFBD><16>+<2B>+<2B>V<EFBFBD> 4<><01><10><11>K<EFBFBD><1A>,<2C><1D>k<EFBFBD>1<EFBFBD>e<EFBFBD>V<EFBFBD>W<EFBFBD>j<EFBFBD>Q<>A<EFBFBD> <10>R<01>
5<EFBFBD> 4<><34> <17>7<EFBFBD>7<EFBFBD>><3E>><3E> <1A><1B>w<EFBFBD>|<7C>|<7C>+<2B><19>,<2C> <1A><>+<2B>8<> 7<> 7<><37>
5<EFBFBD> 4<>s6<00> F<03>E<02>#F<03>1E6<05>3F<03>5E6<05>6F<03>F <07>F)TrrK) Nr<4E>NrFFTTN)
NNFFNrFFFN)
Nr?NrFFFFNF)
Nr?NrFFFNNF)NFNrF)Nr?NrFFN)TTN)
N<EFBFBD>UNrFFNNNT)
Nr<EFBFBD>NrFFNTNN)<29>rkr<>r<><00>enumrdrlr<>rzr3r^r <00> urllib.parser<65><00>typingrrrrrr<00> dns._featuresr <00> dns._tls_util<69> dns.exception<6F>dns.inet<65> dns.message<67>dns.name<6D>dns.quic<69> dns.rdata<74>dns.rdataclass<73> dns.rdatatype<70>dns.transaction<6F>dns.tsig<69>dns.xfrrw<00> ImportError<6F> dns._no_ssl<73>_no_sslrr<00> _features<65>have<76> _have_httpx<70>httpcore._backends.syncr8r<><00>NetworkBackend<6E>_CoreNetworkBackend<6E> _backends<64>sync<6E>
SyncStreamr6r<00> HTTPTransportrRr<><00> AddressFamilyr<00>
SocketKindrfrg<00>__annotations__r <00> DNSExceptionrir<>rmrorrr<><00> TransferErrorr*r<>r<>r<>r<>r<>r<>r2<00>
SSLContextr<EFBFBD>r<>r<>rxr<>r<>r<><00>IntEnumr<6D>r\r<>r<>r2<00>floatr<74>rr<><00>Headers<72>bytesr rr<>r<>r*r/r5<00>tsig<69>Keyr>rDrIrQrUr[rar5rHrrr<>r<>r<>r<>r<>r<>r<>r<>r<><00>AXFRr<52>r<><00>default_algorithmr<6D>r<>r<>r<>r_rr<00><module>r s<><00><01>$<1C> <0A><11> <0B> <0C> <09> <0A><10> <0A> <0A> <0B><13>=<3D>=<3D><14><14><14><0F><12><0F><0F><10><15><14><16><0F><0E><1E><0E>
<13>2<> <12>m<EFBFBD>m<EFBFBD> <20> <20><15>'<27> <0B><0E>"<22><10>"<22>1<>1<><17><1E>(<28>(<28>-<2D>-<2D>8<>8<>O<EFBFBD>4&<26>-<2D>4&<26>l<0E><15>,<2C>,<2C><0E>, &<26> &<26> <17><08>*<2A><0E><1C><1C>s<EFBFBD>"<22>*<2A>
<10>
<1B>
<1B>*<2A> <0F>*<2A> <0C>]<5D>]<5D> *<2A><1B><0F><08> <0B><19><19>C<EFBFBD><1F><16>!2<>!2<>C<EFBFBD>8<>&<26>-<2D>-<2D>G<><02><1B>
H<01>s<EFBFBD>}<7D>}<7D>1<>1<>H<01>G<01>#<23>-<2D>-<2D>)<29>)<29>G<01><12>C<EFBFBD>M<EFBFBD>M<EFBFBD> &<26> &<26><12>
<12>C<EFBFBD>M<EFBFBD>M<EFBFBD> &<26> &<26><12> <14><07><07>%<25>%<25> <0A>$<24>(<28>80<>0<> )<29> <06>"=A<01>)%<25>^<1E><0E><0E><1C><1C>s<EFBFBD>"<22><0E>
<10>
<1B>
<1B><0E> <10>$<24>J<EFBFBD><0E> <0C>]<5D>]<5D> <0E>J37<33><1D> '<06><0E><1C><1C>s<EFBFBD>"<22>'<06>
<10>
<1B>
<1B>'<06><15><1E><1E>'<06><19>X<EFBFBD>X<EFBFBD>]<5D>]<5D>S<EFBFBD>(<28>4<EFBFBD>/<2F> '<06>
<10>$<24>J<EFBFBD> '<06>  <09>]<5D>]<5D> '<06>V
-<2D> <14><16>.<2E>/<2F> <14><1C> <14>  <0B>$<24>,<2C>,<2C>  <0B>&!<21><13><1D><18>"<22>!<21><1E><1C><15>$(<28>*.<2E>26<32><18>"<22>"<22> +<2B> 3<> 3<>!L <0A>
<EFBFBD>{<7B>{<7B><1A><1A>L <0A> <0E>L <0A><13>T<EFBFBD>\<5C>L <0A> <0E> L <0A>
<10>$<24>J<EFBFBD> L <0A> <15> L <0A><1B>L <0A><1A>L <0A><11>4<EFBFBD>Z<EFBFBD>L <0A> <0E>L <0A> <0F>L <0A><1B>T<EFBFBD>z<EFBFBD>L <0A> <11>3<EFBFBD>J<EFBFBD><13><1E><1E> '<27>L <0A><17>.<2E>/<2F>L <0A> <10>L <0A> <1E>!L <0A>" <09>[<5B>[<5B><18><18>#L <0A>^<13>#<23>(<28>(<28>*<2A>*<2A><13>%<25><13>E<EFBFBD><13>O<01>3<EFBFBD>8<EFBFBD>8<EFBFBD>+<2B>+<2B>O<01>3<EFBFBD>O<01>e<EFBFBD>O<01><04>O<01>*!<21><13><1D><18>"<22>!<21>*.<2E><15>59<35>: <0A>
<EFBFBD>{<7B>{<7B><1A><1A>: <0A> <0E>: <0A>
<0A>: <0A><13>T<EFBFBD>\<5C> : <0A>
<0E> : <0A> <10>$<24>J<EFBFBD> : <0A><15>: <0A><1B>: <0A><1A>: <0A> <11>3<EFBFBD>J<EFBFBD><13><1E><1E> '<27>: <0A> <0F>: <0A><14><08><08>+<2B>+<2B>d<EFBFBD>2<>: <0A> <09>[<5B>[<5B><18><18>: <0A>z 1<> 1<>& $<24> <1A>
<0A><1A>
<0A>+<2B>+<2B>
<1D>
<1D><05>
%<25><1A><15><1A><16><04> <0C> <1A>
 <0B>3<EFBFBD><05>:<3A><16> <1A>>#<23>#<23>#<23>"<22>8<<3C> #<23>!<21> %<25><1F>(,<2C>g4<>
<0A>g4<><14>t<EFBFBD><1A>g4<><16><04> <0C>g4<><1C> g4<>
<1B> g4<> <12>#<23>(<28>(<28>-<2D>-<2D><13><18><18><1C><1C>-<2D> .<2E><14> 5<> g4<><17><14><1C>g4<><1A>g4<><1E>g4<><18>g4<> <0F>;<3B>;<3B> <1E> <1E><14> %<25>g4<> <09>g4<>Z!<21><12><1D><18>#<23>"<22>!<21> %<25><1B><1F>Y<06>
<EFBFBD>{<7B>{<7B><1A><1A>Y<06> <0E>Y<06><13>T<EFBFBD>\<5C>Y<06> <0E> Y<06>
<10>$<24>J<EFBFBD> Y<06> <15> Y<06><1C>Y<06><1B>Y<06><1A>Y<06><1E>Y<06> <0E><04>*<2A>Y<06><18>Y<06> <09>[<5B>[<5B><18><18>Y<06>~!<21><12><1D><18>#<23>"<22>!<21><1F><1F><1F>U <20>
<EFBFBD>{<7B>{<7B><1A><1A>U <20> <0E>U <20><13>T<EFBFBD>\<5C>U <20> <0E> U <20>
<10>$<24>J<EFBFBD> U <20> <15> U <20><1C>U <20><1B>U <20><1A>U <20><12>D<EFBFBD>j<EFBFBD>U <20><12>D<EFBFBD>j<EFBFBD>U <20><18>U <20> <0B>3<EFBFBD>;<3B>;<3B> <1E> <1E><04> $<24>%<25>U <20>p <0A>* 1<>& $<24>$<24>
<0A>$<24>
<0A>+<2B>+<2B>
<1D>
<1D><05>
%<25>$<24><16><04> <0C>$<24> <0B>3<EFBFBD><05>:<3A><16> $<24>@ $<24>"<22>8<<3C> #<23>!<21> ,<1E>
<0A>,<1E><15><04> <0C>,<1E><1B>,<1E><12>#<23>(<28>(<28>-<2D>-<2D><13><18><18><1C><1C>-<2D> .<2E><14> 5<> ,<1E>
<17><14><1C> ,<1E> <1A> ,<1E> <0B>3<EFBFBD>;<3B>;<3B> <1E> <1E><05> %<25>&<26>,<1E>^-<2D>!<21><12><1D><18>"<22>!<21><1B>C<06>
<EFBFBD>{<7B>{<7B><1A><1A>C<06> <0E>C<06><13>T<EFBFBD>\<5C>C<06> <0E> C<06>
<10>$<24>J<EFBFBD> C<06> <15> C<06><1B>C<06><1A>C<06> <0E><04>*<2A>C<06> <09>[<5B>[<5B><18><18>C<06>L.<2E><1E><1F>"<22><17> <10>3<EFBFBD>J<EFBFBD><17><18><17> <10><03>9<EFBFBD>t<EFBFBD> <1B><17> <09>^<5E>^<5E> <17>DJ<01><18>4<EFBFBD>Z<EFBFBD>J<01>)-<2D><03><1A>J<01><08>^<5E>^<5E>J<01>!<21><13><1D><18>"<22>!<21>!%<25>)-<2D>"&<26><1D>i<06>
<EFBFBD>{<7B>{<7B><1A><1A>i<06> <0E>i<06><13>T<EFBFBD>\<5C>i<06> <0E> i<06>
<10>$<24>J<EFBFBD> i<06> <15> i<06><1B>i<06><1A>i<06> <0E>-<2D>-<2D>$<24>
<1E>i<06><15><1E><1E>$<24>&<26>i<06><19>4<EFBFBD>Z<EFBFBD>i<06> <11>3<EFBFBD>J<EFBFBD>i<06> <09>[<5B>[<5B><18><18>i<06>^!<21><13><1D><18>"<22>!<21>59<35><1D><1F>"&<26>^ <0A>
<EFBFBD>{<7B>{<7B><1A><1A>^ <0A> <0E>^ <0A><13>T<EFBFBD>\<5C>^ <0A> <0E> ^ <0A>
<10>$<24>J<EFBFBD> ^ <0A> <15> ^ <0A><1B>^ <0A><1A>^ <0A><14><08><08>+<2B>+<2B>d<EFBFBD>2<>^ <0A> <11>3<EFBFBD>J<EFBFBD>^ <0A><12>D<EFBFBD>j<EFBFBD>^ <0A><19>4<EFBFBD>Z<EFBFBD>^ <0A> <09>[<5B>[<5B><18><18>^ <0A>B
 <0A>d<EFBFBD>l<EFBFBD>l<EFBFBD>
 <0A>1:<3A><14><1F><1F>3<>3<>1:<3A> <0A>}<7D>}<7D>s<EFBFBD>}<7D>}<7D>$<24>1:<3A> <0F>;<3B>;<3B> <1E> <1E>1:<3A> <10>$<24>J<EFBFBD> 1:<3A>
<13>T<EFBFBD>\<5C> 1:<3A> <16><04> <0C> 1:<3A> <09>1:<3A>n-0<>M<EFBFBD>M<EFBFBD>,><3E>,><3E>/2<>~<7E>~<7E>/@<40>/@<40> <20><12>8<<3C>*.<2E><1B>!<21><1D><18><13><19>(+<2B><08><08>(B<>(B<>sG<01> <0E>sG<01>
<0A>(<28>(<28>-<2D>-<2D>#<23>
<1D>sG<01> <10>M<EFBFBD>M<EFBFBD> #<23> #<23>c<EFBFBD> )<29>sG<01><11>^<5E>^<5E> &<26> &<26><13> ,<2C> sG<01>
<13>T<EFBFBD>\<5C> sG<01> <0E> sG<01><12>#<23>(<28>(<28>-<2D>-<2D><13><18><18><1C><1C>-<2D> .<2E><14> 5<>sG<01><11>X<EFBFBD>X<EFBFBD>]<5D>]<5D>S<EFBFBD> <20>4<EFBFBD> '<27>sG<01><15>sG<01><14>d<EFBFBD>l<EFBFBD>sG<01> <10>$<24>J<EFBFBD>sG<01><15>sG<01> <10>sG<01><12>sG<01><16>(<28>(<28>-<2D>-<2D>#<23>%<25>sG<01>  <09>!sG<01>r)-<2D><12> <20>!<21><1D><18><1F> <0A> <0A>I<11> <0E>I<11><14><1F><1F>3<>3<>I<11> <0F>;<3B>;<3B> <1E> <1E><14> %<25>I<11> <0E> I<11>
<13>T<EFBFBD>\<5C> I<11> <14>d<EFBFBD>l<EFBFBD> I<11> <10>$<24>J<EFBFBD>I<11><15>I<11><16>I<11>
<EFBFBD>I<11><>A4<13><1E><1D><1D><1E>s<00>5e4<00>4 f<03>f