/usr/lib/rads/venv/lib/python3.13/site-packages/dns/__pycache__
NameSizeModeActions
asyncbackend.cpython-313.pyc34550644editdlrm
asyncquery.cpython-313.pyc376610644editdlrm
asyncresolver.cpython-313.pyc208710644editdlrm
dnssec.cpython-313.pyc514610644editdlrm
dnssectypes.cpython-313.pyc20700644editdlrm
e164.cpython-313.pyc48490644editdlrm
edns.cpython-313.pyc258940644editdlrm
entropy.cpython-313.pyc61100644editdlrm
enum.cpython-313.pyc49300644editdlrm
exception.cpython-313.pyc74740644editdlrm
flags.cpython-313.pyc30980644editdlrm
grange.cpython-313.pyc17750644editdlrm
immutable.cpython-313.pyc38280644editdlrm
inet.cpython-313.pyc65810644editdlrm
ipv4.cpython-313.pyc27190644editdlrm
ipv6.cpython-313.pyc69210644editdlrm
message.cpython-313.pyc859310644editdlrm
name.cpython-313.pyc490600644editdlrm
namedict.cpython-313.pyc43540644editdlrm
nameserver.cpython-313.pyc147060644editdlrm
node.cpython-313.pyc163490644editdlrm
opcode.cpython-313.pyc31400644editdlrm
query.cpython-313.pyc645170644editdlrm
rcode.cpython-313.pyc44530644editdlrm
rdata.cpython-313.pyc386500644editdlrm
rdataclass.cpython-313.pyc35370644editdlrm
rdataset.cpython-313.pyc226570644editdlrm
rdatatype.cpython-313.pyc102390644editdlrm
renderer.cpython-313.pyc159450644editdlrm
resolver.cpython-313.pyc880070644editdlrm
reversename.cpython-313.pyc46930644editdlrm
rrset.cpython-313.pyc123170644editdlrm
serial.cpython-313.pyc54210644editdlrm
set.cpython-313.pyc121210644editdlrm
tokenizer.cpython-313.pyc265250644editdlrm
transaction.cpython-313.pyc288830644editdlrm
tsig.cpython-313.pyc171680644editdlrm
tsigkeyring.cpython-313.pyc28710644editdlrm
ttl.cpython-313.pyc25350644editdlrm
update.cpython-313.pyc161190644editdlrm
version.cpython-313.pyc7620644editdlrm
versioned.cpython-313.pyc148000644editdlrm
win32util.cpython-313.pyc99290644editdlrm
wire.cpython-313.pyc55500644editdlrm
xfr.cpython-313.pyc146710644editdlrm
zone.cpython-313.pyc662180644editdlrm
zonefile.cpython-313.pyc343180644editdlrm
zonetypes.cpython-313.pyc14160644editdlrm
_asyncbackend.cpython-313.pyc49850644editdlrm
_asyncio_backend.cpython-313.pyc145780644editdlrm
_ddr.cpython-313.pyc79590644editdlrm
_features.cpython-313.pyc32360644editdlrm
_immutable_ctx.cpython-313.pyc33350644editdlrm
_trio_backend.cpython-313.pyc137510644editdlrm
__init__.cpython-313.pyc7020644editdlrm
Edit: /usr/lib/rads/venv/lib/python3.13/site-packages/dns/__pycache__/resolver.cpython-313.pyc (88007B)
j > %SrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJ r J r J r J r J r JrJrJr SSKJr SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK rSSK!rSSK"rSSK#rSSK$rSSK%r\RLS:XaSSK'r"SS\RPRR5r*"SS \RPRR5r+\\ \,\-\.\\/\,4\ \R`Rb4r2S \ \2S \ \,4S jr3"S S\RPRh5r5\5r4"SS\RPRR5r6"SS\RPRR5r7"SS\RPRR5r8"SS\RPRR5r9"SS\RPRR5r:"SS\RPRR5r;"SS5r<"SS\=5r>"SS \>5r?"S!S"5r@"S#S$5rA\\RR\RR\RR4rH"S%S&\A5rI"S'S(5rJ"S)S*\A5rK"S+S,5rL"S-S.5rM"S/S0\M5rNSqO\ \N\PS1'S \N4S2jrQSYS3jrR\RR\RRS4SS5SSS4S6\\RR\,4S7\\RR\,4S8\\RR\,4S9\-S:\ \,S;\-S<\.S=\ \US>\ \-S \<4S?jjrV\RR\RRS4SS5SS4S6\\RR\,4S7\\RR\,4S8\\RR\,4S9\-S:\ \,S;\-S<\.S=\ \US \<4S@jjrWSA\,SB\ SC\ S \<4SDjrX\R4SE\\RR\,4SF\.SC\ S \?4SGjjrZSE\\RR\,4S \RR4SHjr[SZS=\US S4SIjjr\\RRS4SS4SE\\RR\,4S8\RRS9\-SJ\ \NS=\ \US \RR4 SKjjr]SL\RS4SM\\RR\,4SN\.SF\.SJ\ \NS \N4 SOjjr^\RR\RRS4SS5SSSSL\RS4 SM\\RR\,4S6\\RR\,4S7\\RR\,4S8\\RR\,4S9\-S:\ \,S;\-S<\.S=\ \US>\ \-SN\.SF\.SJ\ \NS \<4SPjjr_\R\R/\R\R/0rdSqe\Rrg\Rri\Rrk\Rrm\Rro\RrqSS\RSSS4SQjrrS[SRjrsS\SSjrtSTruSUrvSVrwS\SJ\ \NS S4SWjjrxSYSXjryg)]DNS stub resolver.N)AnyDictIteratorListOptionalSequenceTupleUnion)urlparsewin32c~^\rSrSrSrSS1rSrU4SjrSSjrS\ 4U4S jjr \ S 5r S r S rS rSrSrU=r$)NXDOMAIN5z"The DNS query name does not exist.qnames responsesNc&>[TU]"U0UD6 gNsuper__init__selfargskwargs __class__s ?/usr/lib/rads/venv/lib/python3.13/site-packages/dns/resolver.pyrNXDOMAIN.__init__? $)&)c[U[[[45(d [ S5e[ U5S:Xa [ S5eUc0nO [U[ 5(d [ S5e[ XS9nU$)Nz#qnames must be a list, tuple or setrz(qnames must contain at least one elementz(responses must be a dict(qname=response)rr) isinstancelisttuplesetAttributeErrorlendict)rrrrs r _check_kwargsNXDOMAIN._check_kwargsBsm&4"455 !FG G v;!  !KL L  IIt,, !KL LV9 r returnc>SUR;a[TU] 5$URSn[U5S:aSnOSnSR [ [ U55nUSU3$)NrzNone of DNS query names existz!The DNS query name does not existz, z: )rr__str__r(joinmapstr)rrmsgrs rr/NXDOMAIN.__str__Nse 4;; &7?$ $X& v;?1C5C3sF+,b!!r cSUR;a [S5eURSH/nURSUnUR5nX1:waUs $M1 URSS$![a MRf=f)z%Return the unresolved canonical name.rzparametrized exception requiredrr)r TypeErrorcanonical_name Exception)rqnameresponsecnames rr7NXDOMAIN.canonical_nameYs 4;; &=> >[[*E{{;/6H  //1> L" +{{8$Q''   sA00 A>=A>cl[URRS/55n[URRS055nURRS05nURRS/5H&nXR;aUR U5 XT;dM XEX5'M( [ X#S9$)z3Augment by results from another NXDOMAIN exception.rrr")r$rgetr)appendr)re_nxqnames0 responses0 responses1qname1s r__add__NXDOMAIN.__add__jst{{x45$++//+r:; [[__["5 kkooh3F$v&#%/%7 " 4 w==r c URS$)zHAll of the names that were tried. Returns a list of ``dns.name.Name``. rrrs rrNXDOMAIN.qnamesvs {{8$$r c URS$)zA map from queried names to their NXDOMAIN responses. Returns a dict mapping a ``dns.name.Name`` to a ``dns.message.Message``. rrHrIs rrNXDOMAIN.responses}s {{;''r c&URSU$)zDThe response for query *qname*. Returns a ``dns.message.Message``. rrH)rr9s rr:NXDOMAIN.responses {{;'..r r)__name__ __module__ __qualname____firstlineno____doc__ supp_kwargsfmtrr*r2r/propertyr7rErrr:__static_attributes__ __classcell__rs@rrr5sX,[)K C *  " "(( >%(//r rc\rSrSrSrSrg)YXDOMAINz8The DNS query name is too long after DNAME substitution.rONrPrQrRrSrTrXrOr rr\r\sBr r\errorsr,cV/nUH nURSUSSUS35 M" U$)z3Turn a resolution errors trace into a list of text.zServer rz answered )r?)r_textserrs r_errors_to_textrds7 E ws1vhjQ9: Lr cT^\rSrSrSrSr\SSS3rSS1rU4SjrU4S jr S r U=r $) LifetimeTimeoutz The resolution lifetime expired.Nz& after {timeout:.3f} seconds: {errors}timeoutr_c&>[TU]"U0UD6 grrrs rrLifetimeTimeout.__init__rr c `>[US5n[TU] USSRU5S9$)Nr_ri; rir_)rdr _fmt_kwargsr0rrsrv_msgsrs rroLifetimeTimeout._fmt_kwargss<"6(#34w"9%dii.A#  r rO rPrQrRrSrTr3rVrUrrorXrYrZs@rrfrfs7* ,C "XJ@ ACh'K*  r rfcH^\rSrSrSrSrS1rU4SjrU4SjrSr Sr U=r $) NoAnswerz[TU]"U0UD6 grrrs rrNoAnswer.__init__rr c 8>[TU]USRS9$)Nr:)query)rroquestion)rrrs rroNoAnswer._fmt_kwargss!w" );)D)D"EEr c URS$)Nr:rHrIs rr:NoAnswer.responses{{:&&r rO) rPrQrRrSrTrVrUrror:rXrYrZs@rrurus'F PC,K*F''r rucT^\rSrSrSrSr\SSS3rSS1rU4S jrU4S jr S r U=r $) NoNameserverszAll nameservers failed to answer the query. errors: list of servers and respective errors The type of errors is [(server IP address, any object convertible to string)]. Non-empty errors list will add explanatory message () z+All nameservers failed to answer the query.Nrhz {query}: {errors}requestr_c&>[TU]"U0UD6 grrrs rrNoNameservers.__init__rr c t>[US5n[TU] USRSR U5S9$)Nr_rrm)rzr_)rdrror{r0rps rroNoNameservers._fmt_kwargssB"6(#34w"#,,TYYx5H#  r rOrsrZs@rrrs; 8C "XJ, -Ch'K*  r rc\rSrSrSrSrg) NotAbsolutezEAn absolute domain name is required but a relative name was provided.rONr^rOr rrrOr rc\rSrSrSrSrg) NoRootSOAzBThere is no SOA RR at the DNS root name. This should never happen!rONr^rOr rrrsLr rc\rSrSrSrSrg) NoMetaqueriesz DNS metaqueries are not allowed.rONr^rOr rrrs*r rc\rSrSrSrSrg)NoResolverConfigurationzEResolver configuration could not be read or specified no nameservers.rONr^rOr rrrrr rcN\rSrSrSrSS\R RS\RRS\RRS\RRS\\S \\S S4S jjrS rS \4S jrS \\R*R,4SjrSrSrSrg)AnsweraDNS stub resolver answer. Instances of this class bundle up the result of a successful DNS resolution. For convenience, the answer object implements much of the sequence protocol, forwarding to its ``rrset`` attribute. E.g. ``for a in answer`` is equivalent to ``for a in answer.rrset``. ``answer[i]`` is equivalent to ``answer.rrset[i]``, and ``answer[i:j]`` is equivalent to ``answer.rrset[i:j]``. Note that CNAMEs or DNAMEs in the response may mean that answer RRset's name might not be the query name. Nr9rdtyperdclassr: nameserverportr,cDXlX lX0lX@lXPlX`lUR 5UlURRUlURRUl [R"5URR-Ul gr)r9rrr:rrresolve_chainingchaining_resultr7answerrrsettime minimum_ttl expiration)rr9rrr:rrs rrAnswer.__init__sz    $ '88:#22AA))00 ))+(<(<(H(HHr c0US:XaURR$US:XaURR$US:XaURR$US:XaURR$US:XaURR $[ U5e)Nnamettlcoversrr)rrrrrrr')rattrs r __getattr__Answer.__getattr__s 6>::?? " U]::>> ! X ::$$ $ Y ::%% % X ::$$ $ & &r cdUR=(a [UR5=(d S$Nr)rr(rIs r__len__Answer.__len__*szz-c$**o22r cUR=(a [UR5=(d [[55$r)riterr%rIs r__iter__Answer.__iter__-s%zz.d4::.?$uw-?r cFURc[eURU$rr IndexErrorris r __getitem__Answer.__getitem__0s ::  zz!}r cDURc[eURU grrrs r __delitem__Answer.__delitem__5s ::   JJqMr ) r7rrrrr9rrr:rNN)rPrQrRrSrTdnsrName rdatatype RdataType rdataclass RdataClassmessage QueryMessagerr2intrrrrrdataRdatarrrrXrOr rrrs *%)"Ixx}}I ''I** I ++** I SM IsmI I, '33@(399??3@ r rc\rSrSrSrSrg)Answersi;z5A dict of DNS stub resolver answers, indexed by type.rONr^rOr rrr;s?r rc \rSrSrSr\SS\\S\\S\SS4Sjj5r \ R4S \ S\ \\\ 44S jjr\ R4S \ S\ \4S jjrS\R&R(4S jrS rg) HostAnswersi?zLA dict of DNS stub resolver answers to a host name lookup, indexed by type. Nv6v4 add_emptyr,c[5nUb4U(dUR(aX[RR'Ub4U(dUR(aX$[RR 'U$r)rrrrAAAAA)clsrrranswerss rmakeHostAnswers.makeDsL- >yBHH*,CMM&& ' >yBHH')CMMOO $r familyc#0# U[R:XaOUR[R5ShvN UR[R5ShvN gU[R:Xa*UR [ RR5nOLU[R:Xa*UR [ RR5nO[SU35eU(aUHnURU4v M ggNN7f)Nunknown address family ) socket AF_UNSPECaddresses_and_familiesAF_INET6AF_INETr>rrrrNotImplementedErroraddress)rrrrs rr"HostAnswers.addresses_and_familiesTs V%% %226??C C C226>>B B B  v &XXcmm001F v~~ %XXcmmoo.F%(?x&HI I }}f--   D Bs"7DD&D D!B2DDc2SURU55$)Nc3*# UH oSv M g7f)rNrO).0pairs r (HostAnswers.addresses..hsH$GDQ$Gs)r)rrs r addressesHostAnswers.addressesgsHD$?$?$GHHr cUR[RRUR[RR55nUR $r)r>rrrrr7)rrs rr7HostAnswers.canonical_nameks9#--,,dhhs}}.GH$$$r rO)NNT)rPrQrRrSrT classmethodrrboolrrrrrr r2rrrrrr7rXrOr rrr?s $#  V   V       #,,.. %S/ ".&'-&6&6II8C=I% %r rcF\rSrSrSrS S\S\SS4SjjrS SjrS S jrS r g)CacheStatisticsipzCache Statisticshitsmissesr,NcXlX lgrrr)rrrs rrCacheStatistics.__init__ss   r c SUlSUlgrrrIs rresetCacheStatistics.resetws  r cB[URUR5$r)rrrrIs rcloneCacheStatistics.clone{styy$++66r r)rrr,N)r,r) rPrQrRrSrTrrrrrXrOr rrrps)Sc$7r rcR\rSrSrS SjrS SjrS\4SjrS\4SjrS\ 4Sjr S r g) CacheBaseir,NcV[R"5Ul[5Ulgr) threadingLocklockr statisticsrIs rrCacheBase.__init__sNN$ )+r cUR URR5 SSS5 g!,(df  g=f)zReset all statistics to zero.N)rrrrIs rreset_statisticsCacheBase.reset_statisticss# YY OO ! ! #YYs1 ?c|UR URRsSSS5 $!,(df  g=f)z How many hits has the cache had?N)rrrrIs rrCacheBase.hitss YY??''YY- ;c|UR URRsSSS5 $!,(df  g=f)z"How many misses has the cache had?N)rrrrIs rrCacheBase.missess YY??))YYr cUR URR5sSSS5 $!,(df  g=f)zReturn a consistent snapshot of all the statistics. If running with multiple threads, it's better to take a snapshot than to call statistics methods such as hits() and misses() individually. N)rrrrIs rget_statistics_snapshot!CacheBase.get_statistics_snapshots%YY??((*YYs1 ?)rrr) rPrQrRrSrrrrrrr rXrOr rrrs0,$ (c( ** ++r rc^\rSrSrSrSS\SS4U4SjjjrSSjrS\S\ \ 4S jr S\S \ SS4S jr SS\ \SS4S jjr S rU=r$)Cacheiz$Simple thread-safe DNS answer cache.cleaning_intervalr,Nc>[TU]5 0UlXl[R"5UR-Ulg)zV*cleaning_interval*, a ``float`` is the number of seconds between periodic cleanings. N)rrdatarr next_cleaning)rrrs rrCache.__init__s6 ,. !2$(IIK$2H2H$Hr c\[R"5nURU::a/nURR5H(up4URU::dMUR U5 M* UHnURU M [R"5nXR -Ulgg)z&Clean the cache if it's time to do so.N)rrritemsrr?r)rnowkeys_to_deletekvs r _maybe_cleanCache._maybe_cleansiik    $N )<<3&"))!,*$IIaL$))+C!$'='=!=D  %r keycUR UR5 URRU5nUb#UR[ R "5::a)UR =RS- slSSS5 gUR =RS- slUsSSS5 $!,(df  g=fa#Get the answer associated with *key*. Returns None if no answer is cached for the key. *key*, a ``(dns.name.Name, dns.rdatatype.RdataType, dns.rdataclass.RdataClass)`` tuple whose values are the query name, rdtype, and rdclass respectively. Returns a ``dns.resolver.Answer`` or ``None``. Nr.) rrrr>rrrrr)rrrs rr> Cache.getsYY     c"AyALLDIIK7&&!+& Y OO A % YYsA2B2 B22 CvaluecUR UR5 X RU'SSS5 g!,(df  g=fzAssociate key and value in the cache. *key*, a ``(dns.name.Name, dns.rdatatype.RdataType, dns.rdataclass.RdataClass)`` tuple whose values are the query name, rdtype, and rdclass respectively. *value*, a ``dns.resolver.Answer``, the answer. N)rrrrrr"s rput Cache.puts,YY    "IIcNYYs 5 AcUR UbXR;a URU O.0Ul[R"5UR-UlSSS5 g!,(df  g=fa Flush the cache. If *key* is not ``None``, only that item is flushed. Otherwise the entire cache is flushed. *key*, a ``(dns.name.Name, dns.rdatatype.RdataType, dns.rdataclass.RdataClass)`` tuple whose values are the query name, rdtype, and rdclass respectively. N)rrrrr)rrs rflush Cache.flushsPYY))# # %)YY[43I3I%I" YYs AA%% A3)rrr)gr@rr)rPrQrRrSrTfloatrrCacheKeyrrr>r&r*rXrYrZs@rrrsz.I%IDII >xHV$4( #x # #4 #J(+JtJJr rc2\rSrSrSrSrSSjrS SjrSrg) LRUCacheNodeizLRUCache node.cBXlX lSUlXlXlgr)rr"rprevnextr%s rrLRUCacheNode.__init__s    r Nc^XlURUlXRlXlgrr1r2)rnodes r link_afterLRUCacheNode.link_afters  II   r cpURURlURURlgrr5rIs runlinkLRUCacheNode.unlinks   r )rrr2r1r")r6r/r,Nr) rPrQrRrSrTrr7r:rXrOr rr/r/s #r r/c^\rSrSrSrSS\SS4U4SjjjrS\SS4SjrS\S\ \ 4S jr S\S\4S jr S\S \ SS4S jr SS\ \SS4S jjrSrU=r$)LRUCacheiaHThread-safe, bounded, least-recently-used DNS answer cache. This cache is better than the simple cache (above) if you're running a web crawler or other process that does a lot of resolutions. The LRUCache has a maximum number of nodes, and when it is full, the least-recently used node is removed to make space for a new one. max_sizer,Nc>[TU]5 0UlURU5 [ SS5UlUR UR lUR UR lg)z\*max_size*, an ``int``, is the maximum number of nodes to cache; it must be greater than 0. N)rrr set_max_sizer/sentinelr1r2)rr>rs rrLRUCache.__init__sS 24  (#&24&> !]] !]] r c US:aSnXlg)Nr.)r>)rr>s rr@LRUCache.set_max_sizes a<H r rcUR URRU5nUc)UR=RS- slSSS5 gUR 5 UR R[R"5::a@URUR UR=RS- slSSS5 gURUR5 UR=RS- sl U=RS- sl UR sSSS5 $!,(df  g=fr ) rrr>rrr:r"rrrr7rArrrr6s rr> LRUCache.get sYY99==%D|&&!+& Y KKMzz$$ 3IIdhh'&&!+&Y OODMM * OO A % IINI::YYs?D6A4D6AD66 EcUR URRU5nUb-URR[ R "5::a SSS5 gUR sSSS5 $!,(df  g=f)zBReturn the number of cache hits associated with the specified key.Nr)rrr>r"rrrrFs rget_hits_for_keyLRUCache.get_hits_for_key<sT YY99==%D|tzz44 CY yy YYsA A8# A88 Br"cLUR URRU5nUb'UR5 URUR [ UR5UR :abURRnUR5 URUR [ UR5UR :aMb[X5nURUR5 X0RU'SSS5 g!,(df  g=fr$) rrr>r:rr(r>rAr1r/r7)rrr"r6gnodes rr& LRUCache.putEsYY99==%D IIdhh'dii.DMM1 ** IIeii(dii.DMM1 +D OODMM *!IIcNYYsC D4D D#cUR UbFURRU5nUb'UR5 URUR O[UR R nX0R :wa/UR nUR5 UnX0R :waM/0UlSSS5 g!,(df  g=fr))rrr>r:rrAr2)rrr6rLr2s rr*LRUCache.flush[sYYyy}}S)#KKM $((+ **}}, ::DLLN E}}, YYsBB;+B;; C )rr>rA)ir)rPrQrRrSrTrrr@r-rrr>rIr&r*rXrYrZs@rr=r=s + +$ + +!S!T! xHV$48!H!!"x""4",(+tr r=c\rSrSrSrSSS\\RR\ 4S\\RR\ 4S\\RR\ 4S\S \S \\S S 4S jrS \\\R$R&\\44SjrS \\R,R.\\44SjrS\\R$R4S\\S \\\\44SjrSrg ) _ResolutionitacHelper class for dns.resolver.Resolver.resolve(). All of the "business logic" of resolution is encapsulated in this class, allowing us to have multiple resolve() implementations using different I/O schemes without copying all of the complicated logic. This class is a "friend" to dns.resolver.Resolver and manipulates resolver data structures directly. resolver BaseResolverr9rrtcpraise_on_no_answersearchr,Nc[U[5(a [RR US5n[R R RU5n[R RU5(a[e[RRRU5n[RRU5(a[eXl URX'5UlURSSUlX0lX@lXPlX`l0Ul[RR,Ul/Ul/Ul/UlSUlSUlSUlSUlSUlg)NF) r#r2rr from_textrrr is_metatyperrr is_metaclassrR_get_qnames_to_try qnames_to_tryrrrrTrUnxdomain_responsesemptyr9 nameserverscurrent_nameserversr_r tcp_attemptretry_with_tcprbackoff)rrRr9rrrTrUrVs rr_Resolution.__init__s# eS ! !HH&&ud3E((--f5 == $ $V , , ..++009 >> & &w / /  %88G((+   "4QSXX^^ <>DF (* ?C #;?  r cn[UR5S:Ga~URRS5UlURR (Ga1URR R URURUR45nUb5URc$UR(a[URS9eSU4$URR R UR[RRUR45nUb\URR!5[R R":Xa&URUR$UR'GM[R&R)URURUR5nURR*bMUR-URR.URR*URR0S9 UR3URR4URR6URR8URR:S9 URR<bURR<UlURR?URR@URRBURRD5Ul#URRH(a [JRL"URF5 URFSSUl'/Ul(SUl)SUl*SUl+X l,SUl-US4$[#UR\UR$S9e) zGet the next request to send, and check the cache. Returns a (request, answer) tuple. At most one of request or answer will not be None. rNr:) algorithm)optionsFg?r")/r(rpopr9rRcacher>rrrrUrur:rrANYrcoderr^r make_querykeynameuse_tsigkeyring keyalgorithmuse_ednsedns ednsflagspayload ednsoptionsflags_enrich_nameservers _nameserversnameserver_portsrr`rotaterandomshufflerar_rrbrcrrdr])rrrs r next_request_Resolution.next_requests$++"+DJ}}""",,00ZZdll;%||+0G0G&@@ $f~-,,00ZZ!2!2DLLA%&//*?*?*ASYYEWEW*W;A//D++DJJ7kk,,TZZdllSG}}$$0  MM))MM))"mm88!    "" '' %% 11   }}"". $ 3 3 #}}@@ ** .. "" D  }}##t//0'+'7'7':D $DK"DO$D "'D "LDLT? "d00DUR(a&URRUR5 gSUlgUce[ U[RR$5(deUR'5nU[R&R(:Xa[+UR,UR.UR0UURR35URR 55nUR6R8(aGUR6R8R;UR,UR.UR04U5 UR<c$UR>(a[AURBS9eUS4$U[R&RD:Xa[+UR,[RFRH[RJRLU5nXRNUR,'UR6R8(aUUR6R8R;UR,[RFRHUR04U5 gU[R&RP:Xaa[Q5nURR[UR5URURR 5UU45 UeU[R&RR:wdUR6RT(d%URRUR5 URR[UR5URURR 5[R&RWU5U45 g![4anURR[UR5URURR 5UU45 URRUR5 SnAgSnAff=f![4anURR[UR5URURR 5UU45 URRUR5 SnAgSnAff=f)NT)NFrg)NT),rr_r?r2rb answer_portr#r exception FormErrorEOFErrorOSErrorrr`remover TruncatedrcrrmNOERRORrr9rranswer_nameserverr8rRrkr&rrUrur:rrrlrINr^r\SERVFAILretry_servfailto_text)rr:rrmreyexs r query_result_Resolution.query_resultsw *** # ## KK  ($$OO//1  2s}}6677b(++b'**b"566  ''8! B 5 566##$$++DOO<!+/D' ###(CKK$<$<====  CII%% % %JJKKLLOO557OO//1 *}}"" ##''T[[$,,(OQWX||#(?(?88D> ! cii(( ( %JJ 1 13>>3D3Dh 3; # #DJJ /}}"" ##''ZZ!2!2DLLA6  cii(( (*C KK  ($$OO//1  I  ***$--2N2N  ''8 KK  ($$OO//1II%%e,  !U % ""DOO,((335   ''8$ %2 % ""DOO,((335   ''8$ %s4AS<AV < V A:VV  XA:XX)rdrar_rr`r^r9rr]rUrrrrRrcrTrb)rPrQrRrSrTr rrrr2rrrrrrrr rrrrr Nameserverr,rMessager8rrXrOr rrQrQts/ # #SXX]]C'(#cmm--s23 # s~~00#56 #  #!## #JIU x 0018F3CC DIUV<s~~'@'@$'M!N<*z! !4!45z!;CI;Nz! x% &z!r rQc \rSrSr%Sr\R R\S'\ \ \ 4\S'\ \S'\ \R R\S'\ \S'\\S'\\S '\\\S '\\\R R\ 4\S '\\R R\ 4\S '\ \S '\ \S'\\ \R$R&\S'\ \S'\\S'\\ \S'\ \S'\ \S'\\ \S'\\\ \R*R,4\S'S1S\ S\ SS4SjjrS2SjrS\SS4SjrS2SjrS3S \S \\S!\\ \S\4S"jjrS#\R RS\\ S\ \R R4S$jrS\R<R>4S \S \\\R R\ 4S%\\R R\ 4SS4S&jjr S'S'\RBRDS4S \\\ \ 4S\ S\ S(\\ \R$R&SS4 S)jjr#S\ SS4S*jr$\%S+\\\ \R*R,4S\ \ \ 4S,\ S\ \R*R,4S-j5r&\'S\\\ \R*R,44S.j5r(\(RRS+\\\ \R*R,4SS4S/j5r(S0r*g)4rSirdomainr{rrVuse_search_by_defaultrilifetimerqrorrrtrurwrvrkrxrr|ndotsrzfilename configurer,NcUR5 U(a?[RS:XaUR5 gU(aUR U5 ggg)a*filename*, a ``str`` or file object, specifying a file in standard /etc/resolv.conf format. This parameter is meaningful only when *configure* is true and the platform is POSIX. *configure*, a ``bool``. If True (the default), the resolver instance is configured in the normal fashion for the operating system the resolver is running on. (I.e. by reading a /etc/resolv.conf file on POSIX systems and from the registry on Windows systems.) r N)rsysplatform read_registryread_resolv_conf)rrrs rrBaseResolver.__init__sC ||w&""$%%h/ r c\[RR[RR[R "55SS5Ul[UR 5S:Xa[RRUl/Ul 0Ul SUl /Ul SUl SUlSUlSUlSUl[R$R&UlSUlSUlSUlSUlSUlSUlSUlSUlSUlg) z1Reset all resolver configuration to the defaults.r.NrrFg@@rh)rrrrYr gethostnamerr(rootrzr{rrVrrirrqrotsigdefault_algorithmrrrtrurwrvrkrxrr|rrIs rrBaseResolver.resetshhmmCHH$6$6v7I7I7K$LQR$PQ t{{ q ((--DK "  %*"    HH66    #  r fc/n[U[5(a [U5nO[ R "U5nUnUGHn[U5S:XdUSS:Xd USS:XaM'UR5n[U5S:aMHUSS:XaURUS5 MgUSS:Xa0[RRUS5Ul /UlMUSS :XaM/UlUSS H;nURR[RRU55 M= MUSS :XdGMUSS HnUS :Xa S UlMUS:XaUR!5 M*SU;a%[#URS5S5UlMUSU;dM][#URS5S5UlM GM S S S 5 [U5S:Xa [ S5eX lg ![a [ SU35ef=f![&[(4a Mf=f![&[(4a Mf=f!,(df  Ny=f)a{Process *f* as a file in the /etc/resolv.conf format. If f is a ``str``, it is used as the name of the file to open; otherwise it is treated as the file itself. Interprets the following items: - nameserver - name server IP address - domain - local domain name - search - search list for host-name lookup - options - supported options are rotate, timeout, edns0, and ndots z cannot open r#;rrr.rrVNrir|Tedns0ri:rzno nameservers)r#r2openrr contextlib nullcontextr(splitr?rrrYrrVr|rsrri ValueErrorrrr`)rrr`cmltokenssuffixopts rrBaseResolver.read_resolv_confs$" a   B8!3D/E %^%-031B-C  */N { q )*:; ;'a B- QC.@AA BJ%/ #;% $% %/ #;% $%KRse G9DI5I8"HI%"H, I9HH) %I(H) )I,I <I?I I Ic[RR5nURbURUlURUlUR Ulg![ a [ef=f)z9Extract resolver configuration from the Windows registry.N)r win32util get_dns_inforr`rVr'r)rinfos rrBaseResolver.read_registrys\ &==--/D{{&"kk #//D ++DK &% % &s AA!!A2startr_cUc UROUn[R"5nXA- nUc/nUS:aUS:a [XSS9eSnXR:a [XSS9e[X%- UR5$)Nrrhrn)rrrfrri)rrrr_rdurations r_compute_timeoutBaseResolver._compute_timeoutsu %-$44==(iik; >F a<"}%hFF   !(B B8& 55r r9cUc URn/nUR5(aURU5 U$UR[R R 5nU(a[UR5S:aURSSnOEUR[R R :waURbUR/nO/nURcSnO URnUHnURX-5 M [U5U:aURSU5 U$URU5 U$URU5 U$)Nrr.) r is_absoluter? concatenaterrrr(rVrrinsert)rr9rVr] abs_qname search_listrrs rr\BaseResolver._get_qnames_to_try7s. >//F        '<9))#((--8It{{#a'"&++a.K[[CHHMM1dkk6M$(;;-K"$K::%E JJE)F!((8*u:%"((I6"((3$$Y/r rhc(XlX lX0lg)zAdd a TSIG signature to each query. The parameters are passed to ``dns.message.Message.use_tsig()``; see its documentation for details. N)rqrorr)rrqrorhs rrpBaseResolver.use_tsig`s  %r rricXUbUSLaSnOUSLaSnXlX lX0lX@lg)a4Configure EDNS behavior. *edns*, an ``int``, is the EDNS level to use. Specifying ``None``, ``False``, or ``-1`` means "do not use EDNS", and in this case the other parameters are ignored. Specifying ``True`` is equivalent to specifying 0, i.e. "use EDNS0". *ednsflags*, an ``int``, the EDNS flag values. *payload*, an ``int``, is the EDNS sender's payload field, which is the maximum size of UDP datagram the sender can handle. I.e. how big a response to this message can be. *options*, a list of ``dns.edns.Option`` objects or ``None``, the EDNS options. NFrhTr)rtrurvrw)rrtrurvris rrsBaseResolver.use_ednsps50 <45=D T\D " "r cXlg)z[Overrides the default flags with your own. *flags*, an ``int``, the message flags to use. N)rx)rrxs r set_flagsBaseResolver.set_flagss  r r` default_portcT/n[U[5(aUHn[U[RR5(aUnO[R R U5(a1URXS5n[RRXW5nO@[U5RS:wa[e[RRU5nURU5 M U$[S[!U5S35e![a [SUS35ef=f)Nhttpsz nameserver z\ is not a dns.nameserver.Nameserver instance or text form, IP address, nor a valid https URLz+nameservers must be a list or tuple (not a ))r#r$rrrinet is_addressr>Do53Nameserverr schemerr8r DoHNameserverr?type)rr`r{renriched_nameserversrenriched_nameserverrs rry BaseResolver._enrich_nameserverss  " k4 ( () j#..*C*CDD*4'XX((44+// ID*-..*G*G"+'#J/66'A"55B+...*F*Fz*R'$++,?@)*2$#=d;>O=PPQR %()*6@@s D  D'cUR$r)rzrIs rr`BaseResolver.nameserverss   r c\URXRUR5 Xlg)z *nameservers*, a ``list`` of nameservers, where a nameserver is either a string interpretable as a nameserver, or a ``dns.nameserver.Nameserver`` instance. Raises ``ValueError`` if *nameservers* is not a list of nameservers. N)ryr{rrz)rr`s rr`rs$   .C.CTYYO'r )rzrkrrtrurwrxrrrorqrr{r`rrvrrr|rVrir)z/etc/resolv.confTrr)+rPrQrRrSrTrrr__annotations__rr2rrrr,rrr rtOptionr rrrrrr ErrorTuplerr\rrrprDEFAULT_EDNS_PAYLOADrsrrryrWr`setterrXrOr rrSrSs{ HHMM38n$ I   NO c] eCHHMM3./ 00 s*++ IN$sxx/00 L J C= L C=5cnn&?&?!?@AAEI00=A0 0*4E'#E'$E'N &%)-1 665/6j)* 6  60'XX]]',4TN' chhmm 'X8) rQrrrsleeprr_rzr8r)rr9rrrTrrUrrrV resolutionrrrdonerrdrir:r_s rresolveResolver.resolves~! #6   * 7 7 9 W ! & &&D-7-G-G-I*'JJw'//ARARS )// '%$/!$ 0 H",!8!84!H %!M-d0! * 7 7b AIQsC C8C33C8c h[R"S[SS9 URUUUUUUUUS5 $)Query nameservers to find the answer to the question. This method calls resolve() with ``search=True``, and is provided for backwards compatibility with prior versions of dnspython. See the documentation for the resolve() method for further details. z2please use dns.resolver.Resolver.resolve() insteadr stacklevelTwarningswarnDeprecationWarningr) rr9rrrTrrUrrs rrzResolver.query<sG$  @  ||           r ipaddrrrc0nURU5 [RRUS'[RR US'UR "[RRU5/UQ70UD6$)ahUse a resolver to run a reverse query for PTR records. This utilizes the resolve() method to perform a PTR lookup on the specified IP address. *ipaddr*, a ``str``, the IPv4 or IPv6 address you want to get the PTR record for. All other arguments that can be passed to the resolve() function except for rdtype and rdclass are also supported by this function. rr) updaterrPTRrrr reversename from_address)rrrrmodified_kwargss rresolve_addressResolver.resolve_address_sr +-v&$'MM$5$5!%(^^%6%6 "|| OO ( ( 0 37 ;J  r rrc 0nURU5 URSS5 [RRUS'U[ R :Xa?UR"U[RR40UD6n[RUS9$U[ R:Xa?UR"U[RR40UD6n[RUS9$U[ R:wa[SU35eURSS5nURS S5n[ R "5n UR"U[RR4S UR#X5S .UD6nUR$nUR"U[RR4S UR#X5S .UD6n[RXeU(+S 9n U (d['UR(S 9eU $)aUse a resolver to query for address records. This utilizes the resolve() method to perform A and/or AAAA lookups on the specified name. *qname*, a ``dns.name.Name`` or ``str``, the name to resolve. *family*, an ``int``, the address family. If socket.AF_UNSPEC (the default), both A and AAAA records will be retrieved. All other arguments that can be passed to the resolve() function except for rdtype and rdclass are also supported by this function. rNr)r)rrrUTrF)rUr)rrrrg)rrjrrrrrrrrrrrrrrrrr9rur:) rrrrrrrrUrrrs r resolve_nameResolver.resolve_namews.+-v&Hd+%(^^%6%6 " V^^ #dCMMOOGGB##r#* * v &dCMM$6$6J/JB##r#* * v'' '%(?x&HI I,001EtL"&&z48  \\  MM    %**5;    xx \\  MMOO  %**5;    ""b?Q;Q"RBKK0 0r cURUSS9nURnU$![RRanURnSnAU$SnAff=f)a{Determine the canonical name of *name*. The canonical name is the name the resolver uses for queries after all CNAME and DNAME renamings have been applied. *name*, a ``dns.name.Name`` or ``str``, the query name. This method can raise any exception that ``resolve()`` can raise, other than ``dns.resolver.NoAnswer`` and ``dns.resolver.NXDOMAIN``. Returns a ``dns.name.Name``. F)rUN)rr7rrRr)rrrr7rs rr7Resolver.canonical_namesY .\\$5\AF#22N||$$ .--N .s A AAcP[R"5U-nUR[RRSUS9n[R R U5n[RRX45n[U5S:aXPl gg![a gf=f)aSTry to update the resolver's nameservers using Discovery of Designated Resolvers (DDR). If successful, the resolver will subsequently use DNS-over-HTTPS or DNS-over-TLS for future queries. *lifetime*, a float, is the maximum time to spend attempting DDR. The default is 5 seconds. If the SVCB query is successful and results in a non-empty list of nameservers, then the resolver's nameservers are set to the returned servers in priority order. The current implementation does not use any address hints from the SVCB record, nor does it resolve addresses for the SCVB target name, rather it assumes that the bootstrap nameserver will always be one of the addresses and uses it. A future revision to the code may offer fuller support. The code verifies that the bootstrap nameserver is in the Subject Alternative Name field of the TLS certficate. SVCBrrN) rrr_ddr_local_resolver_namerz _remaining_get_nameservers_syncr(r`r8)rrrrrir`s rtry_ddrResolver.try_ddrs& x/J\\--v"Fii**:6G((88IK;!##. $   sBB B%$B%)r`r) rPrQrRrSrTrrrrrr rrr2rrrrrr,rrrzrr rrrr r7rrXrOr rrrsb 7:mmoo9<9J9J $#'$(!%d"SXX]]C'(d"cmm--s23d"s~~00#56 d"  d"  d"!d"d"5/d"d" d"R7:mmoo9<9J9J $#'$(! SXX]]C'(! cmm--s23! s~~00#56 !  !  ! !! ! 5/!  ! F c #   6&&?CHHMM3&'?? ?  ?F5);#<.r rdefault_resolvercB[c [5 [ce[$)z7Get the default resolver, initializing it if necessary.)rreset_default_resolverrOr rget_default_resolverrs   '' ' r c[5qg)zRe-initialize default resolver. Note that the resolver configuration (i.e. /etc/resolv.conf on UNIX systems) will be re-read immediately. N)rrrOr rrrs  zr FTr9rrrTrrUrrrVc D[5RUUUUUUUUU5 $)zQuery nameservers to find the answer to the question. This is a convenience function that uses the default resolver object to make the query. See ``dns.resolver.Resolver.resolve`` for more information on the parameters. )rr) r9rrrTrrUrrrVs rrrs5( ! ) )    r c \[R"S[SS9 [UUUUUUUUS5 $)rz)please use dns.resolver.resolve() insteadrrTr)r9rrrTrrUrrs rrzrz)sC" MM35GTU      r rrrc>[5R"U/UQ70UD6$)zUse a resolver to run a reverse query for PTR records. See ``dns.resolver.Resolver.resolve_address`` for more information on the parameters. )rr )rrrs rr r Js" ! 1 1& J4 J6 JJr rrc 8[5R"X40UD6$)zUse a resolver to query for address records. See ``dns.resolver.Resolver.resolve_name`` for more information on the parameters. )rr )rrrs rr r Ts ! . .t Fv FFr c4[5RU5$)zDetermine the canonical name of *name*. See ``dns.resolver.Resolver.canonical_name`` for more information on the parameters and possible exceptions. )rr7rs rr7r7`s ! 0 0 66r c4[5RU5$)a Try to update the default resolver's nameservers using Discovery of Designated Resolvers (DDR). If successful, the resolver will subsequently use DNS-over-HTTPS or DNS-over-TLS for future queries. See :py:func:`dns.resolver.Resolver.try_ddr` for more information. )rrrs rrrjs ! ) )( 33r rRc2[U[5(a8[RR U[RR 5nUc [ 5nUR5(d [U5e[R"5nUbXT-nOSnUb!U[R"5- nUS::aSnOSnURU[RRXUS9nURceURRU:XaU$UR35nM![RR[RR 4Ga n [U [RR5(a U R#5R%U5n OU R'5n U (aU R(Hn U R*[RR:XdM-U R,U:XdM?U RR/U5un n U [RR0:XdM~U Rs sSn A $ Sn A GNQSn A ff=f![RR4a [6ef=f)ahFind the name of the zone which contains the specified name. *name*, an absolute ``dns.name.Name`` or ``str``, the query name. *rdclass*, an ``int``, the query class. *tcp*, a ``bool``. If ``True``, use TCP to make the query. *resolver*, a ``dns.resolver.Resolver`` or ``None``, the resolver to use. If ``None``, the default, then the default resolver is used. *lifetime*, a ``float``, the total time to allow for the queries needed to determine the zone. If ``None``, the default, then only the individual query limits of the resolver apply. Raises ``dns.resolver.NoRootSOA`` if there is no SOA RR at the DNS root. (This is only likely to happen if you're using non-default root servers in your network and they are misconfigured.) Raises ``dns.resolver.LifetimeTimeout`` if the answer could not be found in the allotted lifetime. Returns a ``dns.name.Name``. Nrr)r#r2rrrYrrrrrrrSOArrRrrurr>r: authorityrr fullcompareNAMERELN_SUPERDOMAINparentNoParentr)rrrTrRrrr rlifetimerrr:rrsnrrs r zone_for_namer0ts@$xx!!$ 6')     $ IIKE%   ,%&4 > !I %%cmm'' &F<<+ ++||  D( ), ;;=DI  %%s||'<'<= ,!S\\2233;;=,,T2::<#--CzzS]]%6%663;;';Q%(XX%9%9$%? Q!>!>>$'88O.  ,*xx   O sDA:D+I1+9I.$BI)=I);I) I)I.!I))I.1%JrwherercUc [5n/n[U[5(aS[RR U5(a/UR [RRX55 OTURX5R5H1nUR [RRXQ55 M3 [RRSS9nXFl U$)aMake a stub resolver using the specified destination as the full resolver. *where*, a ``dns.name.Name`` or ``str`` the domain name or IP address of the full resolver. *port*, an ``int``, the port to use. If not specified, the default is 53. *family*, an ``int``, the address family to use. This parameter is used if *where* is not an address. The default is ``socket.AF_UNSPEC`` in which case the first address returned by ``resolve_name()`` will be used, otherwise the first address of the specified family will be used. *resolver*, a ``dns.resolver.Resolver`` or ``None``, the resolver to use for resolution of hostnames. If not specified, the default resolver will be used. Returns a ``dns.resolver.Resolver`` or raises an exception. F)r)rr#r2rrrr?rrr rrRrr`)r1rrrRr`rress rmake_resolver_atr4s.')?AK%#(("5"5e"<"<3>>88EF,,U;EEGG   s~~<2 F>>!H  G88 HH HH  H cUSnUSn[U5S:XaUSn[RnOSn[Rn[ X#U[R [R S5n[U5S:a [S5eUSSSnU[R-(aSnOSn[RRU5n U[R-S:Xa@[RU S5n U RSR R#S 5n OUn UbU S [1U5-- n U[R2-(a[1U5n X4$[R4"X85n X4$![R$R&[R$R(4aV U[R*-(a%[R,"[R.S 5eUn UbU S [1U5-- n Nf=f) Nrr.raz'sockaddr resolved to multiple addressesudprTrTr8%)r(rrrrUrGSOL_TCPrNI_DGRAMrrrNI_NUMERICHOSTrBrrtargetrrRrru NI_NAMEREQDr>r@r2NI_NUMERICSERV getservbyport) sockaddrrxrKrscoperrPrRpnamer9rhostnamerLs r _getnameinfore}s A;D A;D 8}  $ff.@.@&..RS TF 6{Q?@@ !9Q<?D v OO ( ( .E v$$$) -&&ue4F||A--55d;H   c%j( (H v$$$d)  &&t3   %%s||'<'<= -v)))oof&7&79TUUH C#e*,,  -s&>E::B HHcxUc[R"5n[U5un nU$![a U$f=fr)rr_gethostbyaddrr8)rrs r_getfqdnrhsJ |!!# %d+ q! K   K s + 99c$[U5SS$)Nrr)_gethostbyname_exr$s r_gethostbynamerks T "1 %a ((r c/n/n[US[R[R[R[R 5nUSSnUHnUR USS5 M XAU4$)NrrarW)rUrrrGrZrHr?)raliasesrrP canonicalitems rrjrjssGI  a!3!3V^^VEXEXFq ! Ia$  **r c[RRU5 USSS4n[Rn[U[R5up4/n/n[USU[R[R[R5nUSSn[R R#X 5n UHBn U SSn [R R#X+5n X:XdM1UR%U 5 MD XU4$![ al [R RU5 O3![ a& [R"[RS5ef=fUS4n[RnGNBf=f)NPrr8rarW)ripv6 inet_atonrrr8ipv4r>r@rrer^rUrGrZrHr inet_ptonr?) iprarrrrmrrPrnbin_iprorRbin_addrs rrgrgsK   2Aq>Xv'9'9:ITGI  a++V^^V=P=PFq ! IXX   +FAwqz88%%f3     T "   **1   R HH  r " R//&"3"35PQ Q R8  s)5D E:D/.E:/0EE:9E:cUc [5nUq[[l[ [l[[l[[l [[l [[lg)aOverride the system resolver routines in the socket module with versions which use dnspython's resolver. This can be useful in testing situations where you want to control the resolution behavior of python code without having to change the system's resolver settings (e.g. /etc/resolv.conf). The resolver to use may be specified; if it's not, the default resolver will be used. resolver, a ``dns.resolver.Resolver`` or ``None``, the resolver to use. N)rrBrUr getaddrinfore getnameinforhgetfqdnrk gethostbynamerjgethostbyname_exrg gethostbyaddr)rRs roverride_system_resolverrsF')I%F%FFN)F/F)Fr cSq[[l[[l[ [l[[l [[l [[l g)z5Undo the effects of prior override_system_resolver().N)rBr;rrz_original_getnameinfor{_original_getfqdnr|_original_gethostbynamer}_original_gethostbyname_exr~_original_gethostbyaddrrrOr rrestore_system_resolverrs8I.F.F&FN2F8F2Fr rr)rr)zrTrr}rrrrrtypingrrrrrr r r urllib.parser dns._ddrrdns.edns dns.exception dns.flagsdns.inetdns.ipv4dns.ipv6 dns.messagedns.name dns.rdatadns.nameserver dns.query dns.rcodedns.rdataclass dns.rdatatypedns.rdtypes.svcbbasedns.reversenamedns.tsigr dns.win32utilr DNSExceptionrr\r2rrr8rrrrdTimeoutrfrurrrrrrr)rrrrrrrrrrr-rr/r=rQrSrrrrrrrr,rrzr rr r7rr0r4r6rFSOL_UDPrGrZrIrBrzr;r{rr|rr}rr~rrrrUrerhrkrjrgrrrOr rrs$  NNN!<<7U/s}}))U/pCs}}))C SM )S. S[[ ! # D,c cmm++ , 's}}))'$ CMM.. 2P#--,,PM **M+CMM..+Pcmm88PBBJ@d@.%'.%b 7 7++>  7 79R9RR SLJILJ^##*lyl^K!K!\N(N(b [|[~(,(8$+h"36--//58^^5F5F # $! # $ #--))3. /3>>,,c1 2   SM   uo TN F36--//58^^5F5F # $ # $ #--))3. /3>>,,c1 2   SM   uo BKCKKsKvK4:3C3C G  s" # G-0 GOR G G7sxx}}c127sxx}}74e4d4*-):):#' $ R  s" #R ^^ & &R Rx R uo R  XX]] Rn""#' ! # $! ! !x !  !N36--//58^^5F5F # $!""#'& # $& # $& #--))3. /&3>>,,c1 2 &  & SM &&&uo& TN& & &x & &^ ' (  ****NN ..#44 .. tF$4$4qQRQh$N ) ++@*x'9*T*4 3r