§
    Hºiy  ã                   óè   — d Z ddlZddlmZmZ ddlZddlZej        Zej	        Z	de
dedefd„Zde
dedefd	„Zdede
fd
„Zdedefd„Zdedefd„Zddeee
f         de
dz  defd„Zd„ Zdedefd„ZdS )z*Generic Internet address helper functions.é    N)ÚAnyÚTupleÚfamilyÚtextÚreturnc                 óº   — | t           k    rt          j                             |¦  «        S | t          k    r t          j                             |d¦  «        S t          ‚)a  Convert the textual form of a network address into its binary form.

    *family* is an ``int``, the address family.

    *text* is a ``str``, the textual address.

    Raises ``NotImplementedError`` if the address family specified is not
    implemented.

    Returns a ``bytes``.
    T)ÚAF_INETÚdnsÚipv4Ú	inet_atonÚAF_INET6Úipv6ÚNotImplementedError)r   r   s     úM/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/dns/inet.pyÚ	inet_ptonr   !   sN   € ð •ÒÐÝŒx×!Ò! $Ñ'Ô'Ð'Ø	•8Ò	Ð	ÝŒx×!Ò! $¨Ñ-Ô-Ð-å!Ð!ó    Úaddressc                 ó¸   — | t           k    rt          j                             |¦  «        S | t          k    rt          j                             |¦  «        S t          ‚)a0  Convert the binary form of a network address into its textual form.

    *family* is an ``int``, the address family.

    *address* is a ``bytes``, the network address in binary form.

    Raises ``NotImplementedError`` if the address family specified is not
    implemented.

    Returns a ``str``.
    )r	   r
   r   Ú	inet_ntoar   r   r   )r   r   s     r   Ú	inet_ntopr   6   sL   € ð •ÒÐÝŒx×!Ò! 'Ñ*Ô*Ð*Ø	•8Ò	Ð	ÝŒx×!Ò! 'Ñ*Ô*Ð*å!Ð!r   c                 óê   — 	 t           j                             | ¦  «         t          S # t          $ r@ 	 t           j                             | d¦  «         t          cY S # t          $ r t          ‚w xY ww xY w)zäDetermine the address family of a textual-form network address.

    *text*, a ``str``, the textual address.

    Raises ``ValueError`` if the address family cannot be determined
    from the input.

    Returns an ``int``.
    T)r
   r   r   r	   Ú	Exceptionr   r   Ú
ValueError©r   s    r   Úaf_for_addressr   K   s„   € ðÝŒ×Ò˜4Ñ Ô Ð ÝˆøÝð ð ð ð	ÝŒH×Ò˜t TÑ*Ô*Ð*ÝˆOˆOˆOøÝð 	ð 	ð 	ÝÐð	øøøð	øøøs    ‚%( ¨
A2³&AÁA2ÁA.Á.A2c                 ó
  — 	 t           j                             | ¦  «        d         }|dk    o|dk    S # t          $ rE 	 t           j                             | d¦  «        d         }|dk    cY S # t          $ r t
          ‚w xY ww xY w)zÝIs the textual-form network address a multicast address?

    *text*, a ``str``, the textual address.

    Raises ``ValueError`` if the address family cannot be determined
    from the input.

    Returns a ``bool``.
    r   éà   éï   Téÿ   )r
   r   r   r   r   r   )r   Úfirsts     r   Úis_multicastr!   a   s¡   € ðÝ”×"Ò" 4Ñ(Ô(¨Ô+ˆØ˜Š|Ð, ¨¢Ð,øÝð ð ð ð	Ý”H×&Ò& t¨TÑ2Ô2°1Ô5ˆEØ˜C’<ÐÐÐøÝð 	ð 	ð 	ÝÐð	øøøð	øøøs    ‚03 ³
B¾+A,Á)BÁ,A>Á>Bc                 óÎ   — 	 t           j                             | ¦  «         dS # t          $ r7 	 t           j                             | d¦  «         Y dS # t          $ r Y Y dS w xY ww xY w)z{Is the specified string an IPv4 or IPv6 address?

    *text*, a ``str``, the textual address.

    Returns a ``bool``.
    TF)r
   r   r   r   r   r   s    r   Ú
is_addressr#   w   s…   € ðÝŒ×Ò˜4Ñ Ô Ð ØˆtøÝð ð ð ð	ÝŒH×Ò˜t TÑ*Ô*Ð*Ø�4�4øÝð 	ð 	ð 	Ø�5�5�5ð	øøøð	øøøs&   ‚# £
A$® AÁ
A ÁA$ÁA Á A$Ú
high_tupleÚafc                 óê  — | \  }}|€t          |¦  «        }|t          k    r||fS |t          k    r²|                     d¦  «        }|dk     r||ddfS |d|…         }||dz   d…         }|                     ¦   «         r||dt          |¦  «        fS 	 ||dt          j        |¦  «        fS # t          $ r- t          j	        }t          j
        |||¬¦  «        ^�^ }}	}|	cY S w xY wt          d|› �¦  «        ‚)aX  Given a "high-level" address tuple, i.e.
    an (address, port) return the appropriate "low-level" address tuple
    suitable for use in socket calls.

    If an *af* other than ``None`` is provided, it is assumed the
    address in the high-level tuple is valid and has that af.  If af
    is ``None``, then af_for_address will be called.
    Nú%r   é   )Úflagsúunknown address family )r   r	   r   ÚfindÚisdigitÚintÚsocketÚif_nametoindexÚAttributeErrorÚAI_NUMERICHOSTÚgetaddrinfor   )
r$   r%   r   ÚportÚiÚaddrpartÚscopeÚai_flagsÚ_Útups
             r   Úlow_level_address_tupler:   Š   s+  € ð �M€GˆTØ	€zÝ˜GÑ$Ô$ˆØ	�W‚}€}Ø˜ˆÐØ	�xŠˆØ�LŠL˜ÑÔˆØˆqŠ5ˆ5à˜T 1 aÐ(Ð(à˜2˜A˜2”;ˆØ˜˜A™˜˜Ô ˆØ�=Š=‰?Œ?ð 	3Ø˜d A¥s¨5¡z¤zÐ2Ð2ð	Ø˜d A¥vÔ'<¸UÑ'CÔ'CÐDÐDøÝð 	ð 	ð 	ÝÔ,ˆHÝ$Ô0°¸$ÀhÐOÑOÔOˆO‰Yˆq�#˜ØˆJˆJˆJð	øøøõ
 "Ð"@¸BÐ"@Ð"@ÑAÔAÐAs   ÂB) Â)4C ÃC c                 ón   — | t           j        k    rdS | t           j        k    rdS t          d| › �¦  «        ‚)z:Return the 'any' address for the specified address family.z0.0.0.0z::r*   )r.   r	   r   r   )r%   s    r   Ú
any_for_afr<   ¬   s=   € à	�VŒ^ÒÐØˆyØ	�vŒÒ	Ð	ØˆtÝ
Ð<¸Ð<Ð<Ñ
=Ô
=Ð=r   c                 óÌ   — 	 t           j                             | ¦  «        S # t          $ r8 	 t           j                             | ¦  «        cY S # t          $ r t
          ‚w xY ww xY w)a   Verify that *address* is a valid text form IPv4 or IPv6 address and return its
    canonical text form.  IPv6 addresses with scopes are rejected.

    *text*, a ``str``, the address in textual form.

    Raises ``ValueError`` if the text is not valid.
    )r
   r   Úcanonicalizer   r   r   r   s    r   r>   r>   µ   sz   € ðÝŒx×$Ò$ TÑ*Ô*Ð*øÝð ð ð ð	Ý”8×(Ò(¨Ñ.Ô.Ð.Ð.Ð.øÝð 	ð 	ð 	ÝÐð	øøøðøøøs    ‚! ¡
A#¬AÁ
A#ÁAÁA#)N)Ú__doc__r.   Útypingr   r   Údns.ipv4r
   Údns.ipv6r	   r   r-   ÚstrÚbytesr   r   r   Úboolr!   r#   r:   r<   r>   © r   r   ú<module>rG      s‡  ðð$ 1Ð 0à €€€Ø Ð Ð Ð Ð Ð Ð Ð à €€€Ø €€€ð
 Œ.€ØŒ?€ð"�cð " ð "¨ð "ð "ð "ð "ð*"�cð " Eð "¨cð "ð "ð "ð "ð*˜ð  ð ð ð ð ð,�sð ˜tð ð ð ð ð,�Sð ˜Tð ð ð ð ð&Bð B¨¨c°3¨h¬ð B¸SÀ4¹Zð BÐSVð Bð Bð Bð BðD>ð >ð >ð�sð ˜sð ð ð ð ð ð r   