
    hR                        d Z ddlZddlZddlZddlZddlmZmZmZm	Z	m
Z
mZmZ g dZefdZej        dk    rddlmZ ddlmZ n ed	          Z G d
 d          Zej        dk    rddlmZ nddlmZ  ede          Zej        dk    rddlmZ n ed          Z e
dedef                   ZerddlmZ d Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d  Z$dS )!z
Python 2 and 3 link classes.
    N)AnyAnyStrCallableOptionalTypeVarTYPE_CHECKINGUnion)DecoratorCallableLiteralProtocolSelfUserDictbase64_bytesbytes_base64bytes_encode	bytes_hexchb	hex_bytesorb	plain_strrawc                 D     G fddt                     } ||           S )Nc                   ,    e Zd Zd Z fdZd Zd ZdS )_FakeType.<locals>._FTc                     || _         d S Nname)selfr   s     P/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/compat.py__init__z_FakeType.<locals>._FT.__init__:   s    DIII    c                     S r    )r   itemclss     r    __getitem__z"_FakeType.<locals>._FT.__getitem__?   s    Jr"   c                 V    t          |d         t                    r|d         | _        | S )Nr   )
isinstancestrr   )r   argskargss      r    __call__z_FakeType.<locals>._FT.__call__B   s(    $q'3'' $ G	Kr"   c                     d| j         z  S )Nz<Fake typing.%s>r   )r   s    r    __repr__z_FakeType.<locals>._FT.__repr__H   s    %	11r"   N)__name__
__module____qualname__r!   r'   r-   r/   )r&   s   r    _FTr   9   s[        	 	 	
	 	 	 	 		 	 		2 	2 	2 	2 	2r"   r3   )object)r   r&   r3   s    ` r    	_FakeTyper5   7   sG    2 2 2 2 2 2 2f 2 2 2$ 3t99r"   )      )r   )r   r   c                       e Zd ZdS )r   N)r0   r1   r2   r$   r"   r    r   r   U   s        r"   r   )r6   	   )r   	_UserDict)r6      )r   r   r
   .)bound)Packetc                      t          |           S )z
    Builds a packet and returns its bytes representation.
    This function is and will always be cross-version compatible
    )bytesxs    r    r   r   u   s     88Or"   c                 r    t          | t                    r|                                 S t          |           S )zmEnsure that the given object is bytes. If the parameter is a
        packet, raw() should be preferred.

    )r)   r*   encoder?   r@   s    r    r   r   ~   s/     !S xxzz88Or"   c                 v    t          | t                    r|                     d          S t          |           S )z!Convert basic byte objects to strbackslashreplace)errors)r)   r?   decoder*   r@   s    r    r   r      s6     !U 3xx1x222q66Mr"   c                 ,    t          j        d|           S )z$Same than chr() but encode as bytes.z!B)structpackr@   s    r    r   r      s     ;tQr"   c                 N    t          | t                    r| S t          |           S )z&Return ord(x) when not already an int.)r)   intordr@   s    r    r   r      s&     !S q66Mr"   c                 D    t          j        t          |                     S )zHexify a str or a bytes object)binasciib2a_hexr   r@   s    r    r   r           LOO,,,r"   c                 D    t          j        t          |                     S )z De-hexify a str or a byte object)rO   a2b_hexr   r@   s    r    r   r      rQ   r"   c                 0    |                      |d          S )z1Convert an int to an arbitrary sized bytes stringbig)	byteorder)to_bytes)rA   sizes     r    	int_bytesrY      s     ::de:,,,r"   c                 8    t                               | d          S )z1Convert an arbitrary sized bytes string to an intrU   )rL   
from_bytesr@   s    r    	bytes_intr\      s     >>!U###r"   c                 D    t          j        t          |                     S )zTurn base64 into bytes)base64decodebytesr   r@   s    r    r   r      s     l1oo...r"   c                 l    t          j        t          |                                         dd          S )zTurn bytes into base64   
r"   )r^   encodebytesr   replacer@   s    r    r   r      s+     l1oo..66ucBBBr"   )%__doc__r^   rO   rI   systypingr   r   r   r   r   r   r	   __all__r4   r5   version_infor   r   collectionsr   r:   r   r
   scapy.packetr=   r   r   r   r   r   r   r   rY   r\   r   r   r$   r"   r    <module>rk      s  
     



                   <     0 vi	""G       
 v$$$$$$$111111yi00H w9VD G/xS7IJJJ 
  $######             - - -- - -- - -$ $ $/ / /C C C C Cr"   