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

184 lines
26 KiB
Plaintext
Raw Normal View History

2025-11-18 03:36:49 +08:00
<EFBFBD>
g<> iD<00>
<00><><00>UdZddlZddlZddlZddlZddlmZmZddlZ ddl
Z ddl Z ddl Z ddl Z ddlZ ddlZ Gd<04>de j j"<00>ZGd<06>d<07>ZGd<08>d e<13>ZGd
<EFBFBD>d e<13>ZGd <0C>d e j j"<00>ZGd<0E>de<13>ZGd<10>de<13>ZGd<12>de<13>ZGd<14>de<13>Zej6eej8eej:eej<eej>eiZ eeefe!d<dedefd<19>Z"dee#zdddefd<1C>Z$dee#zde%de&de&def
d <20>Z'd!ededdfd"<22>Z(ej:ZejRZ)ejTZ*ejVZ+ej6ZejXZ,ej<ZejZZ-ej\Z.ej^Z/ej8Zej>Zy)#z EDNS Options<6E>N)<02>Any<6E>Dictc<00>P<00>eZdZdZdZdZdZdZdZdZ dZ
d Z d
Z d Z d Zd Zed<0E><00>Zy)<10>
OptionTypezEDNS option type codes<65><00><00><00><00><00> <00>
<00> <00> <00> <00><00>c<00><00>y<01>Ni<4E><69><00><00><01>clss <20>7E:\Project\pygoedge\.venv\Lib\site-packages\dns/edns.py<70>_maximumzOptionType._maximum?<00><00><00><14>N)<12>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__<5F>NSID<49>DAU<41>DHU<48>N3U<33>ECS<43>EXPIRE<52>COOKIE<49> KEEPALIVE<56>PADDING<4E>CHAIN<49>EDE<44> REPORTCHANNEL<45> classmethodrrrrrr#sU<00><00> <20> <0A>D<EFBFBD>
<0B>C<EFBFBD>
<0B>C<EFBFBD>
<0B>C<EFBFBD>
<0B>C<EFBFBD> <0E>F<EFBFBD> <0F>F<EFBFBD><12>I<EFBFBD><10>G<EFBFBD> <0E>E<EFBFBD>
<0C>C<EFBFBD><16>M<EFBFBD><10><15><11>rrc<00><><00>eZdZdZdeezfd<03>Zddedzdedzfd<07>Z defd<08>Z
dd <09>Z e ded
d ddfd <0C><04>Z d <0A>Zd<0E>Zd<0F>Zd<10>Zd<11>Zd<12>Zd<13>Zd<14>Zy)<17>Optionz%Base class for all EDNS option types.<2E>otypec<00>8<00>tj|<01>|_y)z_Initialize an option.
*otype*, a ``dns.edns.OptionType``, is the option type.
N)r<00>maker/)<02>selfr/s r<00>__init__zOption.__init__Gs<00><00>
 <20>_<EFBFBD>_<EFBFBD>U<EFBFBD>+<2B><04>
rN<>file<6C>returnc<00><00>t<00>)zUConvert an option to wire format.
Returns a ``bytes`` or ``None``.
<20><01>NotImplementedError<6F>r2r4s r<00>to_wirezOption.to_wireNs
<00><00> "<22>!rc<00><00>t<00><01>Nr7<00>r2s r<00>to_textzOption.to_textVs<00><00>!<21>!rc<00>V<00>|j<00>}|<01>J<00>t|j|<01>S)zrCreates a dns.edns.GenericOption equivalent of this rdata.
Returns a ``dns.edns.GenericOption``.
)r:<00> GenericOptionr/)r2<00>wires r<00>
to_genericzOption.to_genericYs,<00><00>
<14>|<7C>|<7C>~<7E><04><13><1F><1F><1F><1C>T<EFBFBD>Z<EFBFBD>Z<EFBFBD><14>.<2E>.r<00>parser<65>dns.wire.Parserc<00><00>t<00>)aBuild an EDNS option object from wire format.
*otype*, a ``dns.edns.OptionType``, is the option type.
*parser*, a ``dns.wire.Parser``, the parser, which should be
restructed to the option length.
Returns a ``dns.edns.Option``.
r7<00>rr/rCs r<00>from_wire_parserzOption.from_wire_parserbs
<00><00>"<22>!rc<00>\<00>|j<00>}|j<00>}||k(ry||kDryy)z<>Compare an EDNS option with another option of the same type.
Returns < 0 if < *other*, 0 if == *other*, and > 0 if > *other*.
r<00><00><><EFBFBD><EFBFBD><EFBFBD>)r:)r2<00>otherrA<00>owires r<00>_cmpz Option._cmpos1<00><00>
<14>|<7C>|<7C>~<7E><04><15> <0A> <0A><0F><05> <0F>5<EFBFBD>=<3D><14> <0F>%<25><<3C><14>rc<00><><00>t|t<00>sy|j|jk7ry|j|<01>dk(S)NFr<00><04>
isinstancer.r/rM<00>r2rKs r<00>__eq__z Option.__eq__|s6<00><00><19>%<25><16>(<28><18> <0F>:<3A>:<3A><15><1B><1B> $<24><18><13>y<EFBFBD>y<EFBFBD><15><1F>1<EFBFBD>$<24>$rc<00><><00>t|t<00>sy|j|jk7ry|j|<01>dk7S)NTrrOrQs r<00>__ne__z Option.__ne__<5F>s6<00><00><19>%<25><16>(<28><17> <0F>:<3A>:<3A><15><1B><1B> $<24><17><13>y<EFBFBD>y<EFBFBD><15><1F>1<EFBFBD>$<24>$rc<00><><00>t|t<00>r|j|jk7rtS|j |<01>dkS<00>Nr<00>rPr.r/<00>NotImplementedrMrQs r<00>__lt__z Option.__lt__<5F><00>5<00><00><19>%<25><16>(<28>D<EFBFBD>J<EFBFBD>J<EFBFBD>%<25>+<2B>+<2B>,E<>!<21> !<21><13>y<EFBFBD>y<EFBFBD><15><1F>!<21>#<23>#rc<00><><00>t|t<00>r|j|jk7rtS|j |<01>dkSrVrWrQs r<00>__le__z Option.__le__<5F><00>5<00><00><19>%<25><16>(<28>D<EFBFBD>J<EFBFBD>J<EFBFBD>%<25>+<2B>+<2B>,E<>!<21> !<21><13>y<EFBFBD>y<EFBFBD><15><1F>1<EFBFBD>$<24>$rc<00><><00>t|t<00>r|j|jk7rtS|j |<01>dk\SrVrWrQs r<00>__ge__z Option.__ge__<5F>r]rc<00><><00>t|t<00>r|j|jk7rtS|j |<01>dkDSrVrWrQs r<00>__gt__z Option.__gt__<5F>rZrc<00>"<00>|j<00>Sr<)r>r=s r<00>__str__zOption.__str__<5F>s<00><00><13>|<7C>|<7C>~<7E>rr<<00>r5r@)rrrrr<00>strr3r<00>bytesr:r>rBr,rGrMrRrTrYr\r_rarcrrrr.r.Ds<><00><00>/<2F>,<2C>j<EFBFBD>3<EFBFBD>.<2E>,<2C>"<22>C<EFBFBD>$<24>J<EFBFBD>"<22>%<25>$<24>,<2C>"<22>"<22><13>"<22>/<2F><11>
"<22>Z<EFBFBD>
"<22>9J<39>
"<22>x<EFBFBD>
"<22><11>
"<22> <12>%<25>%<25>$<24>
%<25>
%<25>
$<24>
rr.c<00><><00><00>eZdZdZdeezdeezf<04>fd<04> Zddedzdedzfd<08>Z defd <09>Z
dd
<EFBFBD>Z e deezd d de fd <0A><04>Z<0E>xZS)r@zwGeneric Option Class
This class is used for EDNS option types for which we have no better
implementation.
r/<00>datac<00><><00><01>t<00>|<00>|<01>tjjj |d<01>|_y)NT)<07>superr3<00>dns<6E>rdata<74>Rdata<74> _as_bytesrh)r2r/rh<00> __class__s <20>rr3zGenericOption.__init__<5F>s,<00><><00> <0A><07><18><15><1F><17>I<EFBFBD>I<EFBFBD>O<EFBFBD>O<EFBFBD>-<2D>-<2D>d<EFBFBD>D<EFBFBD>9<><04> rNr4r5c<00>V<00>|r|j|j<00>y|jSr<)<02>writerhr9s rr:zGenericOption.to_wire<72><00>"<00><00> <0F> <10>J<EFBFBD>J<EFBFBD>t<EFBFBD>y<EFBFBD>y<EFBFBD> !<21><17><17>9<EFBFBD>9<EFBFBD> rc<00> <00>d|j<00><00>S)NzGeneric )r/r=s rr>zGenericOption.to_text<78>s<00><00><19>$<24>*<2A>*<2A><1C>&<26>&rc<00><00>|Sr<rr=s rrBzGenericOption.to_generic<69>s<00><00><13> rrCrDc<00>0<00>|||j<00><00>Sr<<00><01> get_remainingrFs rrGzGenericOption.from_wire_parser<65>s<00><00><13>5<EFBFBD>&<26>.<2E>.<2E>0<>1<>1rr<rd)rrrrrrerfr3rr:r>rBr,r.rG<00> __classcell__<5F>ros@rr@r@<00>s<><00><><00><08> :<3A>j<EFBFBD>3<EFBFBD>.<2E>:<3A>e<EFBFBD>c<EFBFBD>k<EFBFBD>:<3A><1D>C<EFBFBD>$<24>J<EFBFBD><1D>%<25>$<24>,<2C><1D>'<27><13>'<27><14><11>2<><1E><13>$<24>2<>.?<3F>2<> <0F>2<><11>2rr@c<00><><00><00>eZdZdZddededzdef<06>fd<06> Zdefd<08>Zed ede fd
<EFBFBD><04>Z
dd e dzde dzfd <0C>Z ed eezddde fd<10><04>Z<10>xZS)<13> ECSOptionz!EDNS Client Subnet (ECS, RFC7871)N<>address<73>srclen<65>scopelenc<00><><00><01>t<00> |<00>tj<00>tj
j |<01>}|tjk(r<>d|_ |<02>d}tjjj|<01>}tjjj|dd<05>}tjjj|dd<05>}n<>|tjk(r<>d|_ |<02>d}tjjj|<01>}tjjj|dd<08>}tjjj|dd<08>}n t!d <09><00>|<02>J<00>||_||_||_tj
j)||<01>}t+t-j.|d
z <00><00>}|d||_|d z}|dk7rMt3j4d t7|j0d d<00>dd |z
zz<00>}|j0dd |z|_yy)a<>*address*, a ``str``, is the client address information.
*srclen*, an ``int``, the source prefix length, which is the
leftmost number of bits of the address to be used for the
lookup. The default is 24 for IPv4 and 56 for IPv6.
*scopelen*, an ``int``, the scope prefix length. This value
must be 0 in queries, and should be set in responses.
<20>N<>8r<00><>rI<00><00> zBad address family<6C> @r <00>BrJ<00><>)rjr3rr$rk<00>inet<65>af_for_address<73>socket<65>AF_INET6<54>familyrlrm<00>_as_ipv6_address<73>_as_int<6E>AF_INET<45>_as_ipv4_address<73>
ValueErrorr|r}r~<00> inet_pton<6F>int<6E>math<74>ceil<69>addrdata<74>struct<63>pack<63>ord)
r2r|r}r~<00>afr<66><00>nbytes<65>nbits<74>lastros
<20>rr3zECSOption.__init__<5F>s<><00><><00> <0E><07><18><1A><1E><1E>(<28> <10>X<EFBFBD>X<EFBFBD> $<24> $<24>W<EFBFBD> -<2D><02> <0A><16><1F><1F> <20><1B>D<EFBFBD>K<EFBFBD><15>~<7E><1B><06><19>i<EFBFBD>i<EFBFBD>o<EFBFBD>o<EFBFBD>6<>6<>w<EFBFBD>?<3F>G<EFBFBD><18>Y<EFBFBD>Y<EFBFBD>_<EFBFBD>_<EFBFBD>,<2C>,<2C>V<EFBFBD>Q<EFBFBD><03><<3C>F<EFBFBD><1A>y<EFBFBD>y<EFBFBD><EFBFBD><EFBFBD>.<2E>.<2E>x<EFBFBD><11>C<EFBFBD>@<40>H<EFBFBD> <0F>6<EFBFBD>><3E>><3E> !<21><1B>D<EFBFBD>K<EFBFBD><15>~<7E><1B><06><19>i<EFBFBD>i<EFBFBD>o<EFBFBD>o<EFBFBD>6<>6<>w<EFBFBD>?<3F>G<EFBFBD><18>Y<EFBFBD>Y<EFBFBD>_<EFBFBD>_<EFBFBD>,<2C>,<2C>V<EFBFBD>Q<EFBFBD><02>;<3B>F<EFBFBD><1A>y<EFBFBD>y<EFBFBD><EFBFBD><EFBFBD>.<2E>.<2E>x<EFBFBD><11>B<EFBFBD>?<3F>H<EFBFBD><1C>1<>2<> 2<><15>!<21>!<21>!<21><1E><04> <0C><1C><04> <0B> <20><04> <0A><16>8<EFBFBD>8<EFBFBD>%<25>%<25>b<EFBFBD>'<27>2<><08><14>T<EFBFBD>Y<EFBFBD>Y<EFBFBD>v<EFBFBD><03>|<7C>,<2C>-<2D><06>!<21><17>&<26>)<29><04> <0A><16><11>
<EFBFBD><05> <10>A<EFBFBD>:<3A><19>;<3B>;<3B>s<EFBFBD>C<EFBFBD><04> <0A> <0A>b<EFBFBD>c<EFBFBD>(:<3A>$;<3B>t<EFBFBD><01>E<EFBFBD> <09>?R<>$S<>T<>D<EFBFBD> <20>M<EFBFBD>M<EFBFBD>#<23>2<EFBFBD>.<2E><14>5<>D<EFBFBD>M<EFBFBD> rr5c<00>T<00>d|j<00>d|j<00>d|j<00><00>S)NzECS <20>/z scope/)r|r}r~r=s rr>zECSOption.to_text<78>s'<00><00><15>d<EFBFBD>l<EFBFBD>l<EFBFBD>^<5E>1<EFBFBD>T<EFBFBD>[<5B>[<5B>M<EFBFBD><17><14><1D><1D><0F>H<>Hr<00>textc<00>:<00>d}|j<00>}d}t|<02>dk(r|d}n:t|<02>dk(r|d|k7rtd|<00>d<07><03><00>|d}ntd|<00>d<07><03><00>|jd<08>}|dk(r|jd<08>\}}d }n*|dk(r|jd<08>\}}}ntd|<00>d<07><03><00> t |<07>} t |<06>} t || |<08>S#t$rtd
d|<07>d <0B>z<00><00>wxYw#t$rtd d|<06>d <0A>z<00><00>wxYw)a<>Convert a string into a `dns.edns.ECSOption`
*text*, a `str`, the text form of the option.
Returns a `dns.edns.ECSOption`.
Examples:
>>> import dns.edns
>>>
>>> # basic example
>>> dns.edns.ECSOption.from_text('1.2.3.4/24')
>>>
>>> # also understands scope
>>> dns.edns.ECSOption.from_text('1.2.3.4/24/32')
>>>
>>> # IPv6
>>> dns.edns.ECSOption.from_text('2001:4b98::1/64/64')
>>>
>>> # it understands results from `dns.edns.ECSOption.to_text()`
>>> dns.edns.ECSOption.from_text('ECS 1.2.3.4/24/32')
r$NrIrr<>zcould not parse ECS from "<22>"r<><00>0zinvalid scope z": scope must be an integerzinvalid srclen z": srclen must be an integer)<06>split<69>lenr<6E><00>countr<74>r{)
r<EFBFBD><00>optional_prefix<69>tokens<6E>ecs_text<78> n_slashesr|<00>tsrclen<65>tscope<70>scoper}s
r<00> from_textzECSOption.from_text<78>sb<00><00>0 <20><0F><15><1A><1A><1C><06><17><08> <0E>v<EFBFBD>;<3B>!<21> <1B><1D>a<EFBFBD>y<EFBFBD>H<EFBFBD> <10><16>[<5B>A<EFBFBD> <1D><15>a<EFBFBD>y<EFBFBD>O<EFBFBD>+<2B> <20>#=<3D>d<EFBFBD>V<EFBFBD>1<EFBFBD>!E<>F<>F<><1D>a<EFBFBD>y<EFBFBD>H<EFBFBD><1C>9<>$<24><16>q<EFBFBD>A<>B<> B<><1C>N<EFBFBD>N<EFBFBD>3<EFBFBD>'<27> <09> <14><01>><3E>'<27>~<7E>~<7E>c<EFBFBD>2<> <1C>G<EFBFBD>W<EFBFBD><18>F<EFBFBD> <16>!<21>^<5E>'/<2F>~<7E>~<7E>c<EFBFBD>':<3A> $<24>G<EFBFBD>W<EFBFBD>f<EFBFBD><1C>9<>$<24><16>q<EFBFBD>A<>B<> B<> Y<01><17><06>K<EFBFBD>E<EFBFBD> <0E><18><17>\<5C>F<EFBFBD>
<19><17>&<26>%<25>0<>0<><30><1A> Y<01><1C>-<2D>!<21>F<EFBFBD>8<EFBFBD>;V<>0W<30>W<>X<> X<> Y<01><><1A> <0E><1C>!<21>a<EFBFBD><07>y<EFBFBD>0L<30>$M<>M<><0E> <0E> <0E>s<00>; C<00> C><00>C;<03>>Dr4c<00><><00>tjd|j|j|j<00>|j
z}|r|j |<02>y|S)N<>!HBB)r<>r<>r<>r}r~r<>rq<00>r2r4<00>values rr:zECSOption.to_wire-sG<00><00> <12>K<EFBFBD>K<EFBFBD><06><04> <0B> <0B>T<EFBFBD>[<5B>[<5B>$<24>-<2D>-<2D> H<>4<EFBFBD>=<3D>=<3D> X<> <0E> <10> <10>J<EFBFBD>J<EFBFBD>u<EFBFBD> <1D><17><18>Lrr/rCrDc<00>z<00>|jd<01>\}}}ttj|dz <00><00>}|j |<06>}|dk(r+d|z
}t
j j|d|zz<00>} n;|dk(r+d|z
}t
jj|d|zz<00>} n td<08><00>|| ||<05>S) Nr<4E>r<>rI<00><00>r<><00>zunsupported family)
<EFBFBD>
get_structr<EFBFBD>r<>r<><00> get_bytesrk<00>ipv4<76> inet_ntoa<6F>ipv6r<36>)
rr/rCr<><00>srcr<63><00>addrlen<65>prefix<69>pad<61>addrs
rrGzECSOption.from_wire_parser7s<><00><00>$<24>.<2E>.<2E>v<EFBFBD>6<><1A><06><03>U<EFBFBD><15>d<EFBFBD>i<EFBFBD>i<EFBFBD><03>c<EFBFBD> <09>*<2A>+<2B><07><17>!<21>!<21>'<27>*<2A><06> <11>Q<EFBFBD>;<3B><13>g<EFBFBD>+<2B>C<EFBFBD><16>8<EFBFBD>8<EFBFBD>%<25>%<25>f<EFBFBD>w<EFBFBD><13>}<7D>&<<3C>=<3D>D<EFBFBD> <13>q<EFBFBD>[<5B><14>w<EFBFBD>,<2C>C<EFBFBD><16>8<EFBFBD>8<EFBFBD>%<25>%<25>f<EFBFBD>w<EFBFBD><13>}<7D>&<<3C>=<3D>D<EFBFBD><1C>1<>2<> 2<><12>4<EFBFBD><13>e<EFBFBD>$<24>$rrVr<)rrrrrer<>r3r><00> staticmethodr.r<>rrfr:r,rrGrxrys@rr{r{<00>s<><00><><00>+<2B>-6<><03>-6<>S<EFBFBD>4<EFBFBD>Z<EFBFBD>-6<>#<23>-6<>^I<01><13>I<01><12>41<><03>41<><06>41<><12>41<>l<19>C<EFBFBD>$<24>J<EFBFBD><19>%<25>$<24>,<2C><19><11>%<25><1E><13>$<24>%<25>.?<3F>%<25> <0F>%<25><11>%rr{c<00><><00>eZdZdZdZdZdZdZdZdZ dZ
d Z d
Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZed<1B><00>Zy)<1D>EDECodezExtended DNS Error (EDE) codesrrIr<>rr<>rr r
r r r rrr<00>rr<><00>r<00><00><00><00><00>r<>c<00><00>yrrrs rrzEDECode._maximumgrrN)rrrr<00>OTHER<45>UNSUPPORTED_DNSKEY_ALGORITHM<48>UNSUPPORTED_DS_DIGEST_TYPE<50> STALE_ANSWER<45> FORGED_ANSWER<45>DNSSEC_INDETERMINATE<54> DNSSEC_BOGUS<55>SIGNATURE_EXPIRED<45>SIGNATURE_NOT_YET_VALID<49>DNSKEY_MISSING<4E>RRSIGS_MISSING<4E>NO_ZONE_KEY_BIT_SET<45> NSEC_MISSING<4E> CACHED_ERROR<4F> NOT_READY<44>BLOCKED<45>CENSORED<45>FILTERED<45>
PROHIBITED<EFBFBD>STALE_NXDOMAIN_ANSWER<45>NOT_AUTHORITATIVE<56> NOT_SUPPORTED<45>NO_REACHABLE_AUTHORITY<54> NETWORK_ERROR<4F> INVALID_DATAr,rrrrr<>r<>Js<><00><00>(<28> <0A>E<EFBFBD>#$<24> <20>!"<22><1E><14>L<EFBFBD><15>M<EFBFBD><1C><18><14>L<EFBFBD><19><15><1F><1B><16>N<EFBFBD><17>N<EFBFBD><1C><17><15>L<EFBFBD><15>L<EFBFBD><12>I<EFBFBD><10>G<EFBFBD><11>H<EFBFBD><11>H<EFBFBD><13>J<EFBFBD><1E><19><1A><15><16>M<EFBFBD><1F><1A><16>M<EFBFBD><15>L<EFBFBD><10><15><11>rr<>c<00><><00><00>eZdZdZhd<02>Zddeezdedzf<04>fd<06> Zdefd<08>Zdd e dzde
dzfd
<EFBFBD>Z e d e ezd d defd<0E><04>Z<0F>xZS)<10> EDEOptionz!Extended DNS Error (EDE, RFC8914)><00>DS<44>NSEC<45>DNSKEY<45>DNSSEC<45>RRSIGs<47>NXDOMAINN<4E>coder<65>c<00><><00><01>t<00>|<00>tj<00>tj |<01>|_|<02>t|t<00>s td<02><00>||_
y)z<>*code*, a ``dns.edns.EDECode`` or ``str``, the info code of the
extended error.
*text*, a ``str`` or ``None``, specifying additional information about
the error.
Nztext must be string or None) rjr3rr*r<>r1r<>rPrer<>r<>)r2r<>r<>ros <20>rr3zEDEOption.__init__qsH<00><><00> <0E><07><18><1A><1E><1E>(<28><1B>L<EFBFBD>L<EFBFBD><14>&<26><04> <09> <0F> <1B>J<EFBFBD>t<EFBFBD>S<EFBFBD>$9<><1C>:<3A>;<3B> ;<3B><18><04> rr5c<00>(<00><00>d<01>j<00><00>}<01>jtvrQtj<00>j<00>}dj<00>fd<03>|j d<04>D<00><00>}|d|<02>d<06>z }<01>j
<00>|d<07>j
<00><00>z }|S)NzEDE <20> c3<00>^<00>K<00>|]$}|<01>jvr|n|j<00><00><01><00>&y<00>wr<)<02>_preserve_case<73>title)<03>.0<EFBFBD>wordr2s <20>r<00> <genexpr>z$EDEOption.to_text.<locals>.<genexpr><3E>s1<00><><00><><00><0E>+<2B>D<EFBFBD><1D><04> 3<> 3<>3<><04><14><1A><1A><1C>E<>+<2B>s<00>*-<01>_z (<28>)z: )r<>r<>r><00>joinr<6E>r<>)r2<00>output<75>descs` rr>zEDEOption.to_text<78>s<><00><><00><17><04> <09> <09>{<7B>#<23><06> <0F>9<EFBFBD>9<EFBFBD><07> <1F><1A>?<3F>?<3F>4<EFBFBD>9<EFBFBD>9<EFBFBD>-<2D>D<EFBFBD><16>8<EFBFBD>8<EFBFBD><0E> <20>J<EFBFBD>J<EFBFBD>s<EFBFBD>O<EFBFBD><0E><0E>D<EFBFBD> <13><02>4<EFBFBD>&<26><01>l<EFBFBD> "<22>F<EFBFBD> <0F>9<EFBFBD>9<EFBFBD> <20> <12><02>4<EFBFBD>9<EFBFBD>9<EFBFBD>+<2B>&<26> &<26>F<EFBFBD><15> rr4c<00><><00>tjd|j<00>}|j<00>||jj d<02>z }|r|j |<02>y|S)Nz!H<>utf8)r<>r<>r<>r<><00>encoderqr<>s rr:zEDEOption.to_wire<72>sP<00><00><16> <0B> <0B>D<EFBFBD>$<24>)<29>)<29>,<2C><05> <0F>9<EFBFBD>9<EFBFBD> <20> <11>T<EFBFBD>Y<EFBFBD>Y<EFBFBD>%<25>%<25>f<EFBFBD>-<2D> -<2D>E<EFBFBD> <0F> <10>J<EFBFBD>J<EFBFBD>u<EFBFBD> <1D><17><18>Lrr/rCrDc<00><><00>tj|j<00><00>}|j<00>}|r|ddk(r|dd}|j d<03>}nd}|||<05>S)NrJrr<>)r<>r1<00>
get_uint16rw<00>decode)rr/rCr<>r<><00>btexts rrGzEDEOption.from_wire_parser<65>sb<00><00><17>|<7C>|<7C>F<EFBFBD>-<2D>-<2D>/<2F>0<><04><15>#<23>#<23>%<25><04> <0F><13>B<EFBFBD>x<EFBFBD>1<EFBFBD>}<7D><1B>C<EFBFBD>R<EFBFBD>y<EFBFBD><04><18>K<EFBFBD>K<EFBFBD><06>'<27>E<EFBFBD><18>E<EFBFBD><12>4<EFBFBD><15><1F>rr<)rrrrr<>r<>rer3r>rrfr:r,rr.rGrxrys@rr<>r<>ls~<00><><00>+<2B>M<>N<EFBFBD> <19>W<EFBFBD>s<EFBFBD>]<5D> <19>#<23><04>*<2A> <19> <16><13> <16> <19>C<EFBFBD>$<24>J<EFBFBD> <19>%<25>$<24>,<2C> <19><11>  <20><1E><13>$<24>  <20>.?<3F>  <20> <0F>  <20><11>  rr<>c<00><><00><00>eZdZdef<02>fd<02> Zd dededzfd<06>Zdefd<07>Ze de
ezd e jjdefd
<EFBFBD><04>Z<0F>xZS) <0C>
NSIDOption<EFBFBD>nsidc<00>N<00><01>t<00>|<00>tj<00>||_yr<)rjr3rr r)r2rros <20>rr3zNSIDOption.__init__<5F>s<00><><00> <0A><07><18><1A><1F><1F>)<29><18><04> rNr4r5c<00>V<00>|r|j|j<00>y|jSr<)rqrr9s rr:zNSIDOption.to_wire<72>rrrc<00><><00>td<01>|jD<00><00>r|jj<00>}n-tj|j<00>j<00>}d|<01><00>S)Nc3<00>4K<00>|]}|dk\xr|dk<00><01><00>y<02>w)r<><00>~Nr)r<><00>cs rr<>z%NSIDOption.to_text.<locals>.<genexpr><3E>s!<00><00><><00>:<3A> <09>1<EFBFBD>q<EFBFBD>D<EFBFBD>y<EFBFBD>&<26>Q<EFBFBD>$<24>Y<EFBFBD>&<26> <09>s<00>zNSID )<05>allrr<00>binascii<69>hexlify)r2r<>s rr>zNSIDOption.to_text<78>sO<00><00> <0E>:<3A><04> <09> <09>:<3A> :<3A><18>I<EFBFBD>I<EFBFBD>$<24>$<24>&<26>E<EFBFBD><1C>$<24>$<24>T<EFBFBD>Y<EFBFBD>Y<EFBFBD>/<2F>6<>6<>8<>E<EFBFBD><16>u<EFBFBD>g<EFBFBD><EFBFBD>rr/rCc<00>.<00>||j<00><00>Sr<rvrFs rrGzNSIDOption.from_wire_parser<65>s<00><00><13>6<EFBFBD>'<27>'<27>)<29>*<2A>*rr<<00>rrrrfr3rr:rer>r,rrkrA<00>Parserr.rGrxrys@rrr<00>sk<00><><00><19>U<EFBFBD><19><1D>C<EFBFBD><1D>5<EFBFBD>4<EFBFBD><<3C><1D><1F><13><1F><11>+<2B><1E><13>$<24>+<2B>.1<EFBFBD>h<EFBFBD>h<EFBFBD>o<EFBFBD>o<EFBFBD>+<2B> <0F>+<2B><11>+rrc<00><><00><00>eZdZdedef<04>fd<03> Zd dededzfd<07>Zdefd<08>Ze d e
ezd
e jjdefd <0B><04>Z<0F>xZS) <0A> CookieOption<6F>client<6E>serverc<00><><00><01>t<00>|<00>tj<00>||_||_t |<01>dk7r td<02><00>t |<02>dk7r(t |<02>dkst |<02>dkDr td<05><00>yy)Nr zclient cookie must be 8 bytesrr<>z5server cookie must be empty or between 8 and 32 bytes)rjr3rr&rrr<>r<>)r2rrros <20>rr3zCookieOption.__init__<5F>sr<00><><00> <0A><07><18><1A>*<2A>*<2A>+<2B><1C><04> <0B><1C><04> <0B> <0E>v<EFBFBD>;<3B>!<21> <1B><1C><<3C>=<3D> =<3D> <0E>v<EFBFBD>;<3B>!<21> <1B><13>V<EFBFBD><1B>q<EFBFBD><1F>C<EFBFBD><06>K<EFBFBD>"<22>4D<34><1C>T<>U<> U<>5E<01> rNr4r5c<00><><00>|rO|j|j<00>t|j<00>dkDr|j|j<00>y|j|jzSrV)rqrr<>rr9s rr:zCookieOption.to_wire<72>sL<00><00> <0F> <10>J<EFBFBD>J<EFBFBD>t<EFBFBD>{<7B>{<7B> #<23><12>4<EFBFBD>;<3B>;<3B><1F>!<21>#<23><14>
<EFBFBD>
<EFBFBD>4<EFBFBD>;<3B>;<3B>'<27><17><17>;<3B>;<3B><14><1B><1B>,<2C> ,rc<00><><00>tj|j<00>j<00>}t |j
<00>dkDr.tj|j
<00>j<00>}nd}d|<01>|<02><00>S)Nr<00>zCOOKIE )r rrrr<>r)r2rrs rr>zCookieOption.to_text<78>sc<00><00><19>!<21>!<21>$<24>+<2B>+<2B>.<2E>5<>5<>7<><06> <0E>t<EFBFBD>{<7B>{<7B> <1B>a<EFBFBD> <1F><1D>%<25>%<25>d<EFBFBD>k<EFBFBD>k<EFBFBD>2<>9<>9<>;<3B>F<EFBFBD><17>F<EFBFBD><18><16><08><16><08>)<29>)rr/rCc<00>N<00>||jd<01>|j<00><00>S)Nr )r<>rwrFs rrGzCookieOption.from_wire_parser<65>s%<00><00><13>6<EFBFBD>#<23>#<23>A<EFBFBD>&<26><06>(<<3C>(<<3C>(><3E>?<3F>?rr<rrys@rrr<00>sz<00><><00>V<01>u<EFBFBD>V<01>e<EFBFBD>V<01>-<2D>C<EFBFBD>-<2D>5<EFBFBD>4<EFBFBD><<3C>-<2D>*<2A><13>*<2A><11>@<01><1E><13>$<24>@<01>.1<EFBFBD>h<EFBFBD>h<EFBFBD>o<EFBFBD>o<EFBFBD>@<01> <0F>@<01><11>@rrc<00><><00><00>eZdZdejj
f<02>fd<02> Zd dededzfd<06>Z de
fd<07>Z e de e
zd ejjdefd
<EFBFBD><04>Z<11>xZS) <0C>ReportChannelOption<6F> agent_domainc<00>N<00><01>t<00>|<00>tj<00>||_yr<)rjr3rr+r)r2rros <20>rr3zReportChannelOption.__init__<5F>s<00><><00> <0A><07><18><1A>1<>1<>2<>(<28><04>rNr4r5c<00>8<00>|jj|<01>Sr<)rr:r9s rr:zReportChannelOption.to_wire<72>s<00><00><13> <20> <20>(<28>(<28><14>.<2E>.rc<00><<00>d|jj<00>zS)NzREPORTCHANNEL )rr>r=s rr>zReportChannelOption.to_text<78>s<00><00><1F>$<24>"3<>"3<>";<3B>";<3B>"=<3D>=<3D>=rr/rCc<00>.<00>||j<00><00>Sr<)<01>get_namerFs rrGz$ReportChannelOption.from_wire_parser<65>s<00><00><13>6<EFBFBD>?<3F>?<3F>$<24>%<25>%rr<)rrrrk<00>name<6D>Namer3rrfr:rer>r,rrArr.rGrxrys@rrr<00>ss<00><><00>)<29>S<EFBFBD>X<EFBFBD>X<EFBFBD>]<5D>]<5D>)<29>/<2F>C<EFBFBD>/<2F>5<EFBFBD>4<EFBFBD><<3C>/<2F>><3E><13>><3E><11>&<26><1E><13>$<24>&<26>.1<EFBFBD>h<EFBFBD>h<EFBFBD>o<EFBFBD>o<EFBFBD>&<26> <0F>&<26><11>&rr<00>_type_to_classr/r5c<00>@<00>tj|<00>}|<01>t}|S)z<>Return the class for the specified option type.
The GenericOption class is used if a more specific class is not
known.
)r%<00>getr@)r/rs r<00>get_option_classr(s#<00><00> <19>
<1C>
<1C>U<EFBFBD>
#<23>C<EFBFBD>
<EFBFBD>{<7B><1B><03> <0E>JrrCrDc<00>f<00>tj|<00>}t|<00>}|j||<01>S)aBuild an EDNS option object from wire format.
*otype*, an ``int``, is the option type.
*parser*, a ``dns.wire.Parser``, the parser, which should be
restricted to the option length.
Returns an instance of a subclass of ``dns.edns.Option``.
)rr1r(rG)r/rCrs r<00>option_from_wire_parserr*s/<00><00> <17>O<EFBFBD>O<EFBFBD>E<EFBFBD> "<22>E<EFBFBD>
<1A>5<EFBFBD>
!<21>C<EFBFBD> <0E> <1F> <1F><05>v<EFBFBD> .<2E>.rrA<00>current<6E>olenc<00><><00>tjj||<02>}|j|<03>5t ||<04>cddd<01>S#1swYyxYw)arBuild an EDNS option object from wire format.
*otype*, an ``int``, is the option type.
*wire*, a ``bytes``, is the wire-format message.
*current*, an ``int``, is the offset in *wire* of the beginning
of the rdata.
*olen*, an ``int``, is the length of the wire-format option data
Returns an instance of a subclass of ``dns.edns.Option``.
N)rkrAr<00> restrict_tor*)r/rAr+r,rCs r<00>option_from_wirer/ s<<00><00> <11>X<EFBFBD>X<EFBFBD>_<EFBFBD>_<EFBFBD>T<EFBFBD>7<EFBFBD> +<2B>F<EFBFBD> <0F> <1B> <1B>D<EFBFBD> !<21>&<26>u<EFBFBD>f<EFBFBD>5<>
"<22> !<21> !<21>s <00> A<03>A<07>implementationc<00><00>|t|<y)z<>Register the implementation of an option type.
*implementation*, a ``class``, is a subclass of ``dns.edns.Option``.
*otype*, an ``int``, is the option type.
N)r%)r0r/s r<00> register_typer25s<00><00>+<2B>N<EFBFBD>5<EFBFBD>r)0rr r<>r<>r<><00>typingrr<00>dns.enumrk<00>dns.inet<65>dns.ipv4<76>dns.ipv6<76>dns.name<6D> dns.rdata<74>dns.wire<72>enum<75>IntEnumrr.r@r{r<>r<>rrrr$r*r r&r+r%<00>__annotations__r(rer*rfr<>r/r2r!r"r#r%r'r(r)rrr<00><module>r>s<><00><01>$<13><0F> <0B> <0A> <0A><1C><0F><0F><0F><0F><0F><10><0F><15><13><18><18>!<21>!<21><15>B[<1E>[<1E>|2<>F<EFBFBD>2<>>F%<25><06>F%<25>R<15>c<EFBFBD>h<EFBFBD>h<EFBFBD><1E><1E><15>D: <20><06>: <20>z+<2B><16>+<2B>6@<01>6<EFBFBD>@<01>D&<26>&<26>&<26>(<0F>N<EFBFBD>N<EFBFBD>I<EFBFBD><0E>N<EFBFBD>N<EFBFBD>I<EFBFBD><0E>O<EFBFBD>O<EFBFBD>Z<EFBFBD><0E><15><15>|<7C><0E><1C><1C>1<> )<02><0E><04>Z<EFBFBD><13>_<EFBFBD>%<25><02>
<0F>J<EFBFBD>
<0F>3<EFBFBD>
<0F>/<2F> <15><03> <1B>/<2F>%6<>/<2F> <0B>/<2F>"6<> <15><03> <1B>6<>#(<28>6<>36<33>6<>>A<>6<> <0B>6<>*+<2B>#<23>+<2B>j<EFBFBD>+<2B>T<EFBFBD>+<2B><12><EFBFBD><EFBFBD><04><10>n<EFBFBD>n<EFBFBD><03><10>n<EFBFBD>n<EFBFBD><03><10>n<EFBFBD>n<EFBFBD><03><10>n<EFBFBD>n<EFBFBD><03> <13> <1A> <1A><06> <13> <1A> <1A><06> <16> <20> <20> <09>
<14>
<1C>
<1C><07><12><18><18><05><10>n<EFBFBD>n<EFBFBD><03><1A>(<28>(<28> r