HEX
Server: LiteSpeed
System: Linux shams.tasjeel.ae 5.14.0-611.5.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 08:09:09 EST 2025 x86_64
User: infowars (1469)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //lib/python3.9/site-packages/netaddr/strategy/__pycache__/eui48.cpython-39.pyc
a

��g�!�
@s\dZddlZddlZzddlmZWney:dZYn0ddlm	Z	ddl
mZddlm
ZmZmZmZmZmZmZmZmZdZeZ dZ!dZ"d	ed
Z#Gdd�de$�Z%Gd
d�de%�Z&Gdd�de&�Z'Gdd�de%�Z(Gdd�de%�Z)Gdd�de%�Z*e%Z+dd�,dgd�ddd�,dgd�ddd�,dgd�ddd�,dgd�ddd�,dgd�ddd�,d gd	�ddd�,d gd	�dd!d"�,d#gd$�d%d!d"�,d#gd&�d%f	Z-d'd(�e-D�Z-d)d*�Z.d+d,�Z/dEd-d.�Z0d/d0�Z1d1d2�Z2dFd3d4�Z
dGd5d6�ZdHd7d8�ZdId9d:�ZdJd;d<�ZdKd=d>�ZdLd?d@�ZdAdB�ZdCdD�ZdS)Mz�
IEEE 48-bit EUI (MAC address) logic.

Supports numerous MAC string formats including Cisco's triple hextet as well
as bare MACs containing no delimiters.
�N)�AF_LINK�0)�AddrFormatError)�_is_str)	�valid_words�int_to_words�words_to_int�
valid_bits�bits_to_int�int_to_bits�	valid_bin�
int_to_bin�
bin_to_intZMAC��c@s4eZdZdZdZeeZdedZdZdZ	dZ
dS)	�	mac_eui48z%A standard IEEE EUI-48 dialect class.�rr�-z%.2X�N)�__name__�
__module__�__qualname__�__doc__�	word_size�width�	num_wordsZmax_word�word_sep�word_fmt�	word_base�rr�:/usr/lib/python3.9/site-packages/netaddr/strategy/eui48.pyr1src@s(eZdZdZdZeeZdZdZdZ	dS)�mac_unixz'A UNIX-style MAC address dialect class.r�:z%xrN�
rrrrrrrrrrrrrr r!Fsr!c@seZdZdZdZdS)�mac_unix_expandedz;A UNIX-style MAC address dialect class with leading zeroes.�%.2xN)rrrrrrrrr r$Osr$c@s(eZdZdZdZeeZdZdZdZ	dS)�	mac_ciscoz2A Cisco 'triple hextet' MAC address dialect class.r�.�%.4xNr#rrrr r&Tsr&c@s(eZdZdZdZeeZdZdZdZ	dS)�mac_barez1A bare (no delimiters) MAC address dialect class.r�z%.12XrNr#rrrr r)]sr)c@s(eZdZdZdZeeZdZdZdZ	dS)�	mac_pgsqlz@A PostgreSQL style (2 x 24-bit words) MAC address dialect class.�r"�%.6xrNr#rrrr r+fsr+�^r"z([0-9A-F]{1,2})��$rz([0-9A-F]{1,4})�z\.z([0-9A-F]{5,6})z^(r*z[0-9A-F]�z)$�cCsg|]}t�|tj��qSr)�_re�compile�
IGNORECASE)�.0�_rrr �
<listcomp>��r9c	CsDtD]:}z"|�|�}t|�dkr(WdSWqty<Yq0qdS)z�
    :param addr: An IEEE EUI-48 (MAC) address in string form.

    :return: ``True`` if MAC address string is valid, ``False`` otherwise.
    rTF)�RE_MAC_FORMATS�findall�len�	TypeError)�addr�regexp�match_resultrrr �	valid_str�s
rBcCs2g}t|�rnd}tD]D}|�|�}t|�dkrd}t|dt�rJ|d}n
|df}qZq|s|td|f��ntd|f��d}t|�dkr�td�	d	d
�|D��d�}n�t|�dkr�td�	d
d
�|D��d�}n^t|�dkr�td�	dd
�|D��d�}n6t|�dk�r tdt|dd�d�}ntd|f��|S)z�
    :param addr: An IEEE EUI-48 (MAC) address in string form.

    :return: An unsigned integer that is equivalent to value represented
        by EUI-48/MAC string address formatted according to the dialect
        settings.
    FrTz!%r is not a supported MAC format!z%r is not str() or unicode()!Nr/r*cSsg|]}dt|d��qS)r%r��int�r7�wrrr r9�r:zstr_to_int.<locals>.<listcomp>rr1cSsg|]}dt|d��qS)r(rrCrErrr r9�r:rcSsg|]}dt|d��qS)r-rrCrErrr r9�r:rz%012xz(unexpected word count in MAC address %r!)
rr;r<r=�
isinstance�tuplerr>rD�join)r?�wordsZfound_matchr@rA�int_valrrr �
str_to_int�s2


rLcs8�durt�t|��}�fdd�|D�}�j�|�}|S)a
    :param int_val: An unsigned integer.

    :param dialect: (optional) a Python class defining formatting options.

    :return: An IEEE EUI-48 (MAC) address string that is equivalent to
        unsigned integer formatted according to the dialect settings.
    Ncsg|]}�j|�qSr)r)r7�i��dialectrr r9�r:zint_to_str.<locals>.<listcomp>)rrrrI)rKrOrJ�tokensr?rrNr �
int_to_str�s	
rQcCst�d|d?|d@�S)z�
    :param int_val: the integer to be packed.

    :return: a packed string that is equivalent to value represented by an
    unsigned integer.
    z>HI� l��)�_struct�pack�rKrrr �
int_to_packed�srVcCsFtt�d|��}d}tt|��D] \}}|}|d|>}||B}q |S)a
    :param packed_int: a packed string containing an unsigned integer.
        It is assumed that string is packed in network byte order.

    :return: An unsigned integer equivalent to value of network address
        represented by packed binary string.
    z>6Brr)�listrS�unpack�	enumerate�reversed)Z
packed_intrJrKrMZnumZwordrrr �
packed_to_int�s
r[cCs|durt}t||j|j�S�N)�DEFAULT_DIALECT�_valid_wordsrr�rJrOrrr r�srcCs|durt}t||j|j�Sr\)r]�
_int_to_wordsrr�rKrOrrr r�srcCs|durt}t||j|j�Sr\)r]�
_words_to_intrrr_rrr rsrcCs|durt}t|t|j�Sr\)r]�_valid_bitsrr��bitsrOrrr r	
sr	cCs|durt}t|t|j�Sr\)r]�_bits_to_intrrrdrrr r
sr
cCs |durt}t||j|j|j�Sr\)r]�_int_to_bitsrrrrarrr rs
�rcCs|durt}t|t�Sr\)r]�
_valid_binr)�bin_valrOrrr rsrcCs
t|t�Sr\)�_int_to_binrrUrrr r
#sr
cCs
t|t�Sr\)�_bin_to_intr)rirrr r'sr)N)N)N)N)N)N)N)N)3r�structrS�rer4Zsocketr�ImportErrorZnetaddr.corerZnetaddr.compatrZnetaddr.strategyrr^rr`rrbr	rcr
rfrrgrrhr
rjrrkrZfamilyZfamily_name�versionZmax_int�objectrr!r$r&r)r+r]rIr;rBrLrQrVr[rrrr �<module>s\
,				�-