+
    +O|jS1  ã                   ó´  € R t ^ RIt^ RIt^ RIHtHt ^ RIt^ RIt^ RI	t^ RI
t^ RIt^ RIt]P                  P                  0t]P                  P                   ]P                  P"                  ]P                  P$                  0tR t]P*                   ! R R]P,                  4      4       t ! R R4      t]P2                  P2                   ! R R	]4      4       tR# )
z)DNS nodes.  A node is a set of rdatasets.N)ÚAnyÚDictc                 ól   € W9   ;'       g*    V\         P                  P                  8H  ;'       d    W 9   # ©N)ÚdnsÚ	rdatatypeÚRRSIG)ÚrdtypesÚrdtypeÚcoverss   &&&ÚAC:\Users\alokc\chatbot\backend\venv\Lib\site-packages\dns/node.pyÚ_matches_type_or_its_signaturer   +   s-   € ØÑ×UÐU ¬3¯=©=×+>Ñ+>Ñ!>×!TÐ!TÀ6ÑCTÐUó    c                   óh   a € ] tR t^/t o Rt^ t^t^t]V 3R lR l4       t	]V 3R lR l4       t
RtV tR# )ÚNodeKindzRdatasets in nodesc                óz   <€ V ^8„  d   QhRS[ P                  P                  RS[ P                  P                  RR/# )é   r
   r   Úreturnr   )r   r   Ú	RdataType)ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚNodeKind.__annotate__8   s9   ø€ ÷ $ñ $Ù—]‘]×,Ñ,ð$Ù69·m±m×6MÑ6Mð$à	ñ$r   c                óº   € \        \        W4      '       d   \        P                  # \        \        W4      '       d   \        P
                  # \        P                  # r   )r   Ú_cname_typesr   ÚCNAMEÚ_neutral_typesÚNEUTRALÚREGULAR)Úclsr
   r   s   &&&r   ÚclassifyÚNodeKind.classify7   s@   € ô *¬,¸×GÒGÜ—>‘>Ð!Ü+¬N¸F×KÒKÜ×#Ñ#Ð#ä×#Ñ#Ð#r   c                óL   <€ V ^8„  d   QhRS[ P                  P                  RR/# )r   Úrdatasetr   r   ©r   r#   ÚRdataset)r   r   s   "€r   r   r   C   s%   ø€ ÷ >ñ >©¯©×)>Ñ)>ð >À:ñ >r   c                óN   € V P                  VP                  VP                  4      # r   )r    r
   r   )r   r#   s   &&r   Úclassify_rdatasetÚNodeKind.classify_rdatasetB   s   € à�|‰|˜HŸO™O¨X¯_©_Ó=Ð=r   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   Úclassmethodr    r'   Ú__static_attributes__Ú__classdictcell__©r   s   @r   r   r   /   s=   ø‡ € áà€GØ€GØ€Eà÷$ó ð$ð ÷>ó ö>r   r   c                   ó`  a € ] tR t^Gt o RtR.tR tV 3R lR ltR tR t	R t
R	 tR
 tR t]P                  P                   R3V 3R lR llt]P                  P                   R3V 3R lR llt]P                  P                   3V 3R lR lltV 3R lR ltV 3R lR ltV 3R lR ltRtV tR# )ÚNodea¦  A Node is a set of rdatasets.

A node is either a CNAME node or an "other data" node.  A CNAME
node contains only CNAME, KEY, NSEC, and NSEC3 rdatasets along with their
covering RRSIG rdatasets.  An "other data" node contains any
rdataset other than a CNAME or RRSIG(CNAME) rdataset.  When
changes are made to a node, the CNAME or "other data" state is
always consistent with the update, i.e. the most recent change
wins.  For example, if you have a node which contains a CNAME
rdataset, and then add an MX rdataset to it, then the CNAME
rdataset will be deleted.  Likewise if you have a node containing
an MX rdataset and add a CNAME rdataset, the MX rdataset will be
deleted.
Ú	rdatasetsc                ó   € . V n         R # r   ©r5   ©Úselfs   &r   Ú__init__ÚNode.__init__Y   s	   € àˆŽr   c                ój   <€ V ^8„  d   QhRS[ P                  P                  RS[S[S[3,          RS[/# )r   ÚnameÚkwr   )r   r=   ÚNamer   Ústrr   )r   r   s   "€r   r   ÚNode.__annotate__]   s2   ø€ ÷ !ñ !™CŸH™HŸM™Mð !±±c¹3°hµð !ÁCñ !r   c                ó  € \         P                  ! 4       pV P                   FH  p\        V4      ^ 8”  g   K  VP	                  VP
                  ! V3/ VB 4       VP	                  R4       KJ  	  VP                  4       RR # )zòConvert a node to text format.

Each rdataset at the node is printed.  Any keyword arguments
to this method are passed on to the rdataset's to_text() method.

*name*, a ``dns.name.Name``, the owner name of the
rdatasets.

Returns a ``str``.

Ú
Néÿÿÿÿ)ÚioÚStringIOr5   ÚlenÚwriteÚto_textÚgetvalue)r9   r=   r>   ÚsÚrdss   &&,  r   rI   ÚNode.to_text]   sb   € ô �KŠK‹MˆØ—>”>ˆCÜ�3‹x˜!Ž|Ø—‘˜Ÿš DÑ/¨BÑ/Ô0Ø—‘˜–ñ "ð �z‰z‹|˜C˜RÐ Ð r   c                óF   € R \        \        V 4      4      ,           R,           # )z
<DNS node Ú>)r@   Úidr8   s   &r   Ú__repr__ÚNode.__repr__q   s   € Øœc¤" T£(›mÕ+¨cÕ1Ð1r   c                óž   € V P                    F  pW!P                   9  g   K   R # 	  VP                    F  pW P                   9  g   K   R # 	  R# )FTr7   )r9   ÚotherÚrds   && r   Ú__eq__ÚNode.__eq__t   sA   € ð —.”.ˆBØŸ™Ö(Úñ !ð —/”/ˆBØŸ™Ö'Úñ "ñ r   c                ó.   € V P                  V4      '       * # r   )rV   )r9   rT   s   &&r   Ú__ne__ÚNode.__ne__€   s   € Ø—;‘;˜uÓ%Ô%Ð%r   c                ó,   € \        V P                  4      # r   )rG   r5   r8   s   &r   Ú__len__ÚNode.__len__ƒ   s   € Ü�4—>‘>Ó"Ð"r   c                ó,   € \        V P                  4      # r   )Úiterr5   r8   s   &r   Ú__iter__ÚNode.__iter__†   s   € Ü�D—N‘NÓ#Ð#r   c                ó0  € \        V P                  4      ^ 8”  d×   \        P                  V4      pV\        P                  8X  dM   V P                   Uu. uF/  p\        P                  V4      \        P
                  8w  g   K-  VNK1  	  upV n        M`V\        P
                  8X  dL   V P                   Uu. uF/  p\        P                  V4      \        P                  8w  g   K-  VNK1  	  upV n        V P                  P                  V4       R# u upi u upi )aV  Append rdataset to the node with special handling for CNAME and
other data conditions.

Specifically, if the rdataset being appended has ``NodeKind.CNAME``,
then all rdatasets other than KEY, NSEC, NSEC3, and their covering
RRSIGs are deleted.  If the rdataset being appended has
``NodeKind.REGULAR`` then CNAME and RRSIG(CNAME) are deleted.
N)rG   r5   r   r'   r   r   Úappend)r9   r#   ÚkindrL   s   &&  r   Ú_append_rdatasetÚNode._append_rdataset‰   sÝ   € ô ˆt�~‰~Ó Ô"Ü×-Ñ-¨hÓ7ˆDØ”x—~‘~Ô%ð  $Ÿ~š~ó"á-˜Ü×1Ñ1°#Ó6¼(×:JÑ:JÑJ÷ �CÙ-ñ"�•ð
 œ×)Ñ)Ô)ð  $Ÿ~š~ó"á-˜Ü×1Ñ1°#Ó6¼(¿.¹.ÑH÷ �CÙ-ñ"�”ð 	�‰×Ñ˜hÖ'ùò"ùò"s   Á*DÂDÂ4*DÃ#DFc          
      óØ   <€ V ^8„  d   QhRS[ P                  P                  RS[ P                  P                  RS[ P                  P                  RS[RS[ P                  P                  /# ©r   Úrdclassr
   r   Úcreater   ©r   Ú
rdataclassÚ
RdataClassr   r   Úboolr#   r%   )r   r   s   "€r   r   rA   ¥   se   ø€ ÷ 'ñ 'á—‘×*Ñ*ð'ñ —‘×'Ñ'ð'ñ —‘×'Ñ'ð	'ñ
 ð'ñ 
�‰×	Ñ	ñ'r   c                óâ   € V P                    F  pVP                  WV4      '       g   K  Vu # 	  V'       g   \        h\        P                  P                  WV4      pV P                  V4       V# )a¢  Find an rdataset matching the specified properties in the
current node.

*rdclass*, a ``dns.rdataclass.RdataClass``, the class of the rdataset.

*rdtype*, a ``dns.rdatatype.RdataType``, the type of the rdataset.

*covers*, a ``dns.rdatatype.RdataType``, the covered type.
Usually this value is ``dns.rdatatype.NONE``, but if the
rdtype is ``dns.rdatatype.SIG`` or ``dns.rdatatype.RRSIG``,
then the covers value will be the rdata type the SIG/RRSIG
covers.  The library treats the SIG and RRSIG types as if they
were a family of types, e.g. RRSIG(A), RRSIG(NS), RRSIG(SOA).
This makes RRSIGs much easier to work with than if RRSIGs
covering different rdata types were aggregated into a single
RRSIG rdataset.

*create*, a ``bool``.  If True, create the rdataset if it is not found.

Raises ``KeyError`` if an rdataset of the desired type and class does
not exist and *create* is not ``True``.

Returns a ``dns.rdataset.Rdataset``.
)r5   ÚmatchÚKeyErrorr   r#   r%   re   ©r9   ri   r
   r   rj   rL   s   &&&&& r   Úfind_rdatasetÚNode.find_rdataset¥   s\   € ð@ —>”>ˆCØ�y‰y˜¨&×1Ô1Ø’
ñ "÷ ÜˆNÜ�l‰l×#Ñ# G°VÓ<ˆØ×Ñ˜cÔ"Øˆ
r   c                óæ   <€ V ^8„  d   QhRS[ P                  P                  RS[ P                  P                  RS[ P                  P                  RS[RS[ P                  P                  R,          /# ©r   ri   r
   r   rj   r   Nrk   )r   r   s   "€r   r   rA   Î   sj   ø€ ÷ #ñ #á—‘×*Ñ*ð#ñ —‘×'Ñ'ð#ñ —‘×'Ñ'ð	#ñ
 ð#ñ 
�‰×	Ñ	 Õ	%ñ#r   c                óT   €  V P                  WW44      pV#   \         d    Rp T# i ; i)ag  Get an rdataset matching the specified properties in the
current node.

None is returned if an rdataset of the specified type and
class does not exist and *create* is not ``True``.

*rdclass*, an ``int``, the class of the rdataset.

*rdtype*, an ``int``, the type of the rdataset.

*covers*, an ``int``, the covered type.  Usually this value is
dns.rdatatype.NONE, but if the rdtype is dns.rdatatype.SIG or
dns.rdatatype.RRSIG, then the covers value will be the rdata
type the SIG/RRSIG covers.  The library treats the SIG and RRSIG
types as if they were a family of
types, e.g. RRSIG(A), RRSIG(NS), RRSIG(SOA).  This makes RRSIGs much
easier to work with than if RRSIGs covering different rdata
types were aggregated into a single RRSIG rdataset.

*create*, a ``bool``.  If True, create the rdataset if it is not found.

Returns a ``dns.rdataset.Rdataset`` or ``None``.
N)rs   rq   rr   s   &&&&& r   Úget_rdatasetÚNode.get_rdatasetÎ   s;   € ð>	Ø×$Ñ$ W°fÓEˆCð ˆ
øô ô 	Ø‰CØˆ
ð	ús   ‚ –'¦'c                ó¨   <€ V ^8„  d   QhRS[ P                  P                  RS[ P                  P                  RS[ P                  P                  RR/# ©r   ri   r
   r   r   N©r   rl   rm   r   r   )r   r   s   "€r   r   rA   ó   sQ   ø€ ÷ 'ñ 'á—‘×*Ñ*ð'ñ —‘×'Ñ'ð'ñ —‘×'Ñ'ð	'ð
 
ñ'r   c                ól   € V P                  WV4      pVe   V P                  P                  V4       R# R# )a  Delete the rdataset matching the specified properties in the
current node.

If a matching rdataset does not exist, it is not an error.

*rdclass*, an ``int``, the class of the rdataset.

*rdtype*, an ``int``, the type of the rdataset.

*covers*, an ``int``, the covered type.
N)rx   r5   Úremove)r9   ri   r
   r   rL   s   &&&& r   Údelete_rdatasetÚNode.delete_rdatasetó   s2   € ð$ ×Ñ °Ó8ˆØŠ?Ø�N‰N×!Ñ! #Ö&ñ r   c                óL   <€ V ^8„  d   QhRS[ P                  P                  RR/# ©r   Úreplacementr   Nr$   )r   r   s   "€r   r   rA   	  s%   ø€ ÷ +ñ +©C¯L©L×,AÑ,Að +Àdñ +r   c                óh  € \        V\        P                  P                  4      '       g   \	        R4      h\        V\        P
                  P                  4      '       d   VP                  4       pV P                  VP                  VP                  VP                  4       V P                  V4       R# )a…  Replace an rdataset.

It is not an error if there is no rdataset matching *replacement*.

Ownership of the *replacement* object is transferred to the node;
in other words, this method does not store a copy of *replacement*
at the node, it stores *replacement* itself.

*replacement*, a ``dns.rdataset.Rdataset``.

Raises ``ValueError`` if *replacement* is not a
``dns.rdataset.Rdataset``.
zreplacement is not an rdatasetN)Ú
isinstancer   r#   r%   Ú
ValueErrorÚrrsetÚRRsetÚto_rdatasetr   ri   r
   r   re   ©r9   rƒ   s   &&r   Úreplace_rdatasetÚNode.replace_rdataset	  sƒ   € ô ˜+¤s§|¡|×'<Ñ'<×=Ò=ÜÐ=Ó>Ð>Ü�k¤3§9¡9§?¡?×3Ò3ð &×1Ñ1Ó3ˆKØ×ÑØ×Ñ ×!3Ñ!3°[×5GÑ5Gô	
ð 	×Ñ˜kÖ*r   c                ó    <€ V ^8„  d   QhRS[ /# ©r   r   )r   )r   r   s   "€r   r   rA   #  s   ø€ ÷  ñ  ™(ñ  r   c                óÎ   € V P                    FF  p\        P                  VP                  VP                  4      pV\        P
                  8w  g   KD  Vu # 	  \        P
                  # )a  Classify a node.

A node which contains a CNAME or RRSIG(CNAME) is a
``NodeKind.CNAME`` node.

A node which contains only "neutral" types, i.e. types allowed to
co-exist with a CNAME, is a ``NodeKind.NEUTRAL`` node.  The neutral
types are NSEC, NSEC3, KEY, and their associated RRSIGS.  An empty node
is also considered neutral.

A node which contains some rdataset which is not a CNAME, RRSIG(CNAME),
or a neutral type is a a ``NodeKind.REGULAR`` node.  Regular nodes are
also commonly referred to as "other data".
)r5   r   r    r
   r   r   )r9   r#   rd   s   &  r   r    ÚNode.classify#  sM   € ð ŸœˆHÜ×$Ñ$ X§_¡_°h·o±oÓFˆDØ”x×'Ñ'Ö'Ø’ñ 'ô ×ÑÐr   c                ó    <€ V ^8„  d   QhRS[ /# rŽ   ©rn   )r   r   s   "€r   r   rA   8  s   ø€ ÷ ñ ™dñ r   c                ó   € R # )Fr)   r8   s   &r   Úis_immutableÚNode.is_immutable8  s   € Ùr   r7   N)r*   r+   r,   r-   r.   Ú	__slots__r:   rI   rQ   rV   rY   r\   r`   re   r   r   ÚNONErs   rx   r   r‹   r    r”   r0   r1   r2   s   @r   r4   r4   G   s²   ø‡ € ñð �€Iò÷!ð !ò(2ò
ò&ò#ò$ò(ð@ +.¯-©-×*<Ñ*<Ø÷'ò 'ðZ +.¯-©-×*<Ñ*<Ø÷#ò #ðR +.¯-©-×*<Ñ*<÷	'ò '÷,+ð +÷4 ð  ÷*ö r   r4   c                   ó&  a a€ ] tR tRt oV 3R lt]P                  P                  R3V3R lV 3R lllt]P                  P                  R3V3R lV 3R lllt	]P                  P                  3V3R lR	 llt
V3R
 lR ltV3R lR ltRtVtV ;t# )ÚImmutableNodei<  c                ó¼   <€ \         SV `  4        \        VP                   Uu. uF"  p\        P
                  P                  V4      NK$  	  up4      V n        R # u upi r   )Úsuperr:   Útupler5   r   r#   ÚImmutableRdataset)r9   ÚnoderL   Ú	__class__s   && €r   r:   ÚImmutableNode.__init__>  sB   ø€ Ü‰ÑÔÜØ<@¿NºNÓK¹N°SŒS�\‰\×+Ñ+¨CÖ0¹NÑKó
ˆŽùÚKs   £(AFc          
      óØ   <€ V ^8„  d   QhRS[ P                  P                  RS[ P                  P                  RS[ P                  P                  RS[RS[ P                  P                  /# rh   rk   )r   r   s   "€r   r   ÚImmutableNode.__annotate__D  sl   ø€ ÷ 	Eñ 	Eá—‘×*Ñ*ð	Eñ —‘×'Ñ'ð	Eñ —‘×'Ñ'ð		Eñ
 ð	Eñ 
�‰×	Ñ	ñ	Er   c                óL   <€ V'       d   \        R 4      h\        SV `	  WVR4      # ©Ú	immutableF)Ú	TypeErrorr›   rs   ©r9   ri   r
   r   rj   rŸ   s   &&&&&€r   rs   ÚImmutableNode.find_rdatasetD  s'   ø€ ÷ Ü˜KÓ(Ð(Ü‰wÑ$ W°f¸eÓDÐDr   c                óæ   <€ V ^8„  d   QhRS[ P                  P                  RS[ P                  P                  RS[ P                  P                  RS[RS[ P                  P                  R,          /# rv   rk   )r   r   s   "€r   r   r¢   O  sq   ø€ ÷ 	Dñ 	Dá—‘×*Ñ*ð	Dñ —‘×'Ñ'ð	Dñ —‘×'Ñ'ð		Dñ
 ð	Dñ 
�‰×	Ñ	 Õ	%ñ	Dr   c                óL   <€ V'       d   \        R 4      h\        SV `	  WVR4      # r¤   )r¦   r›   rx   r§   s   &&&&&€r   rx   ÚImmutableNode.get_rdatasetO  s'   ø€ ÷ Ü˜KÓ(Ð(Ü‰wÑ# G°V¸UÓCÐCr   c                ó¨   <€ V ^8„  d   QhRS[ P                  P                  RS[ P                  P                  RS[ P                  P                  RR/# r{   r|   )r   r   s   "€r   r   r¢   Z  sQ   ø€ ÷ %ñ %á—‘×*Ñ*ð%ñ —‘×'Ñ'ð%ñ —‘×'Ñ'ð	%ð
 
ñ%r   c                ó   € \        R 4      h©r¥   ©r¦   )r9   ri   r
   r   s   &&&&r   r   ÚImmutableNode.delete_rdatasetZ  s   € ô ˜Ó$Ð$r   c                óL   <€ V ^8„  d   QhRS[ P                  P                  RR/# r‚   r$   )r   r   s   "€r   r   r¢   b  s%   ø€ ÷ %ñ %©C¯L©L×,AÑ,Að %Àdñ %r   c                ó   € \        R 4      hr®   r¯   rŠ   s   &&r   r‹   ÚImmutableNode.replace_rdatasetb  s   € Ü˜Ó$Ð$r   c                ó    <€ V ^8„  d   QhRS[ /# rŽ   r’   )r   r   s   "€r   r   r¢   e  s   ø€ ÷ ñ ™dñ r   c                ó   € R # )Tr)   r8   s   &r   r”   ÚImmutableNode.is_immutablee  s   € Ùr   r7   )r*   r+   r,   r-   r:   r   r   r—   rs   rx   r   r‹   r”   r0   r1   Ú__classcell__)rŸ   r   s   @@r   r™   r™   <  sx   ù‡ € õ
ð +.¯-©-×*<Ñ*<Ø÷	Eõ 	Eð +.¯-©-×*<Ñ*<Ø÷	Dõ 	Dð +.¯-©-×*<Ñ*<÷	%ò %÷%ð %÷÷ ð r   r™   )r.   ÚenumrE   Útypingr   r   Údns.immutabler   Údns.nameÚdns.rdataclassÚdns.rdatasetÚdns.rdatatypeÚ	dns.rrsetr   r   r   ÚNSECÚNSEC3ÚKEYr   r   ÚuniqueÚEnumr   r4   r¥   r™   r)   r   r   Ú<module>rÅ      sÆ   ðñ$ 0ã Û 	ß ã Û Û Û Û Û ð ‡M�M×Ñð€ð ‡M�M×ÑØ‡M�M×ÑØ‡M�M×Ñð€òVð ‡�ô>ˆt�y‰yó >ó ð>÷.rñ rðj ‡�×Ñô)�Dó )ó ò)r   