
    eiN                        d dl Z d dlZd dlZd dlmZ d dlmZmZmZ ddl	m
Z
mZmZmZmZmZmZmZmZ ddlmZmZmZ ddlmZmZmZ dd	lmZmZmZmZm Z m!Z!m"Z" dd
l#m$Z$m%Z%m&Z& ddl'm(Z(  G d dee j)                  Z* G d de*          Z+ G d de*          Z, G d de,          Z- G d de-          Z. G d de.          Z/ G d de-          Z0 G d de0          Z1 e1dd          Z2 G d  d!e1          Z3 G d" d#e0          Z4 G d$ d%e4          Z5 G d& d'e0          Z6 G d( d)e6          Z7 G d* d+e7          Z8 G d, d-e6          Z9 G d. d/e9          Z: G d0 d1e-          Z; G d2 d3e;          Z< G d4 d5e-          Z= G d6 d7e=          Z> G d8 d9e*          Z? G d: d;e?          Z@ G d< d=e*          ZA G d> d?eA          ZB G d@ dAe*          ZC G dB dCeC          ZD G dD dEeC          ZE G dF dGeC          ZFdS )H    N)
accumulate)AnyOptionalType   )	int_to_big_endian
is_address
is_booleanis_bytes
is_integeris_list_like	is_numberis_textto_canonical_address   )	BaseCoderparse_tuple_type_strparse_type_str)EncodingTypeErrorIllegalValueValueOutOfBounds)TENabi_decimal_contextceil32compute_signed_fixed_boundscompute_signed_integer_boundscompute_unsigned_fixed_boundscompute_unsigned_integer_bounds)fpadzpad
zpad_right)abbrc            
           e Zd ZdZej        dedefd            Zej        deddfd            Z	e
edfdedee         dee         ddfd	            Zdedefd
ZdS )BaseEncoderz
    Base class for all encoder classes.  Subclass this if you want to define a
    custom encoder class.  Subclasses must also implement
    :any:`BaseCoder.from_type_str`.
    valuereturnc                     dS )z
        Encodes the given value as a sequence of bytes.  Should raise
        :any:`exceptions.EncodingError` if ``value`` cannot be encoded.
        N selfr%   s     l/var/www/html/volatility/venv/lib/python3.11/site-packages/ccxt/static_dependencies/ethereum/abi/encoding.pyencodezBaseEncoder.encode=   s	     	    Nc                     dS )z
        Checks whether or not the given value can be encoded by this encoder.
        If the given value cannot be encoded, must raise
        :any:`exceptions.EncodingError`.
        Nr(   r)   s     r+   validate_valuezBaseEncoder.validate_valueE   s	     	r-   excmsgc           	           |d                     t          |          t          |          | j        |dnd|z                       )zf
        Throws a standard exception for when a value is not encodable by an
        encoder.
        z;Value `{rep}` of type {typ} cannot be encoded by {cls}{msg}N z: )reptypclsr1   )formatr"   type__name__)r6   r%   r0   r1   s       r+   invalidate_valuezBaseEncoder.invalidate_valueN   sW     cIPPKKKKL+BBD3J	 Q  
 
 	
r-   c                 ,    |                      |          S N)r,   r)   s     r+   __call__zBaseEncoder.__call__b   s    {{5!!!r-   )r9   
__module____qualname____doc__abcabstractmethodr   bytesr,   r/   classmethodr   r   	Exceptionr   strr:   r=   r(   r-   r+   r$   r$   6   s          	C E     	C D       1!	
 

 )_
 c]	

 

 
 
 [
&"c "e " " " " " "r-   r$   )	metaclassc                   N     e Zd ZdZ fdZ fdZd Zd Zed             Z	 xZ
S )TupleEncoderNc                      t                      j        di | t          d | j        D                       | _        d S )Nc              3   8   K   | ]}t          |d d          V  dS )
is_dynamicFN)getattr).0es     r+   	<genexpr>z(TupleEncoder.__init__.<locals>.<genexpr>l   s.      UU!gau==UUUUUUr-   r(   )super__init__anyencodersrL   r*   kwargs	__class__s     r+   rR   zTupleEncoder.__init__i   sD    ""6"""UUt}UUUUUr-   c                 t    t                                                       | j        t          d          d S )Nz`encoders` may not be none)rQ   validaterT   
ValueErrorr*   rW   s    r+   rY   zTupleEncoder.validaten   s8    = 9::: ! r-   c           
         t          |          s|                     |d           t          |          t          | j                  k    rP|                     |t          d                    t          |          t          | j                                       t          || j                  D ]6\  }}	 |                    |           # t          $ r  ||           Y 3w xY wd S )Nz/must be list-like object such as array or tupler1   (value has {} items when {} were expectedr0   r1   )	r   r:   lenrT   r   r7   zipr/   AttributeError)r*   r%   itemencoders       r+   r/   zTupleEncoder.validate_valuet   s   E"" 	!!E "   
 u::T]++++!!$>EEJJ&&  "    !66 	 	MD'&&t,,,,!   	 	s   7CC%$C%c                   	 |                      |           g }g }t          || j                  D ]}\  }}t          |dd          r4|                    d            |                     ||                     J|                     ||                     |                    d           ~t          d |D                       	dt          t          t          t          |d d                                       z   }t          	fdt          ||          D                       }d
                    |t          |          z             }|S )NrL   Fr-   c              3   <   K   | ]}|dnt          |          V  d S )N    )r`   )rN   rc   s     r+   rP   z&TupleEncoder.encode.<locals>.<genexpr>   s0      XX""#d))XXXXXXr-   r   c              3   J   K   | ]\  }}|t          |z             n|V  d S r<   encode_uint_256)rN   chunkoffsethead_lengths      r+   rP   z&TupleEncoder.encode.<locals>.<genexpr>   sQ       
 
v 6;]OK&0111
 
 
 
 
 
r-   )r/   ra   rT   rM   appendsumtupler   mapr`   join)
r*   valuesraw_head_chunkstail_chunksr%   rd   tail_offsetshead_chunksencoded_valuero   s
            @r+   r,   zTupleEncoder.encode   sh   F###!&$-88 	( 	(NE7we44 (&&t,,,""775>>2222&&wwu~~666""3''''XXXXXXXeJs3CRC8H/I/I$J$JKKK 
 
 
 
!$_l!C!C
 
 
 
 

 u[/A/A!ABBr-   c                 \    t          fd|j        D                       } | |          S )Nc              3   f   K   | ]+}                     |                                          V  ,d S r<   )get_encoderto_type_str)rN   cregistrys     r+   rP   z-TupleEncoder.from_type_str.<locals>.<genexpr>   sJ       
 
67H  11
 
 
 
 
 
r-   )rT   )rr   
components)r6   abi_typer   rT   s     ` r+   from_type_strzTupleEncoder.from_type_str   sP     
 
 
 
;C;N
 
 
 
 
 sH%%%%r-   )r9   r>   r?   rT   rR   rY   r/   r,   r   r   __classcell__rW   s   @r+   rI   rI   f   s        HV V V V V
; ; ; ; ;  .  0 & & & & & & &r-   rI   c                   >     e Zd ZdZdZdZdZdZ fdZd Z	d Z
 xZS )FixedSizeEncoderNc                    t                                                       | j        t          d          | j        t          d          | j        t          d          | j        t          d          | j        dz  dk    r't          d                    | j                            | j        | j        dz  k    rt          d          d S )	Nz `value_bit_size` may not be nonez `data_byte_size` may not be nonez`encode_fn` may not be nonez`is_big_endian` may not be none   r   z5Invalid value bit size: {0}.  Must be a multiple of 8z!Value byte size exceeds data size)rQ   rY   value_bit_sizerZ   data_byte_size	encode_fnis_big_endianr7   r[   s    r+   rY   zFixedSizeEncoder.validate   s    &?@@@&?@@@>!:;;;%>???"a''GNN'    !4q!888@AAA 98r-   c                      t          d          )Nz!Must be implemented by subclasses)NotImplementedErrorr)   s     r+   r/   zFixedSizeEncoder.validate_value   s    !"EFFFr-   c                     |                      |           |                     |          }| j        rt          || j                  }nt          || j                  }|S r<   )r/   r   r   r    r   r!   r*   r%   base_encoded_valuepadded_encoded_values       r+   r,   zFixedSizeEncoder.encode   se    E"""!^^E22 	W#'(:D<O#P#P  #-.@$BU#V#V ##r-   )r9   r>   r?   r   r   r   type_check_fnr   rY   r/   r,   r   r   s   @r+   r   r      sw        NNIMMB B B B B,G G G	$ 	$ 	$ 	$ 	$ 	$ 	$r-   r   c                       e Zd ZdZdS )Fixed32ByteSizeEncoderrg   Nr9   r>   r?   r   r(   r-   r+   r   r              NNNr-   r   c                   j    e Zd ZdZdZed             Zed             Z ed          d             Z	dS )BooleanEncoderr   Tc                 R    t          |          s|                     |           d S d S r<   )r
   r:   r6   r%   s     r+   r/   zBooleanEncoder.validate_value   6    %   	(  '''''	( 	(r-   c                 8    |du rdS |du rdS t          d          )NT   F    	Invariant)rZ   r   s     r+   r   zBooleanEncoder.encode_fn   s,    D==7e^^7[)))r-   boolc                      |             S r<   r(   r6   r   r   s      r+   r   zBooleanEncoder.from_type_str       suur-   N)
r9   r>   r?   r   r   rD   r/   r   r   r   r(   r-   r+   r   r      sx        NM( ( [( * * [* ^F    r-   r   c                       e Zd ZdZdS )PackedBooleanEncoderr   Nr   r(   r-   r+   r   r      s        NNNr-   r   c                   4     e Zd ZdZdZdZdZ fdZd Z xZ	S )NumberEncoderTNc                     t                                                       | j        t          d          | j        t          d          d S )Nz`bounds_fn` cannot be nullz`type_check_fn` cannot be null)rQ   rY   	bounds_fnrZ   r   r[   s    r+   rY   zNumberEncoder.validate   sP    >!9:::%=>>> &%r-   c           	         |                      |          s|                     |           | j        d uo|                     |          }|r|                     |t                     |                     | j                  \  }}||k     s||k    r9|                     |t          d                    | j        ||                     d S d S )N)r0   z@Cannot be encoded in {} bits.  Must be bounded between [{}, {}].r_   )r   r:   illegal_value_fnr   r   r   r   r7   )r*   r%   illegal_valuelower_boundupper_bounds        r+   r/   zNumberEncoder.validate_value  s    !!%(( 	)!!%(((-T9 
d>S>S?
 ?
  	;!!%\!:::#'>>$2E#F#F [;%+"5"5!!$((.+##) ) "      #6"5r-   )
r9   r>   r?   r   r   r   r   rY   r/   r   r   s   @r+   r   r      s\        MIM? ? ? ? ?      r-   r   c                   x    e Zd Z ee          Z ee          Z ee          Z	 e
d          d             ZdS )UnsignedIntegerEncoderuintc                 $     | |j                   S Nr   subr   s      r+   r   z$UnsignedIntegerEncoder.from_type_str$      s(,////r-   N)r9   r>   r?   staticmethodr   r   r   r   r   r   r   r   r(   r-   r+   r   r     sg        .//I<==I L,,M^F0 0 0 0 0r-   r      rg   r   r   c                   6    e Zd Z ed          d             ZdS )PackedUnsignedIntegerEncoderr   c                 6     | |j         |j         dz            S Nr   r   r   r   s      r+   r   z*PackedUnsignedIntegerEncoder.from_type_str-  *    s#<#<1,
 
 
 	
r-   Nr9   r>   r?   r   r   r(   r-   r+   r   r   ,  s8        ^F
 
 
 
 
r-   r   c                   n    e Zd Z ee          Z ee          Zd Zd Z	 e
d          d             ZdS )SignedIntegerEncoderc                 6    t          |d| j        z  z            S Nr   )r   r   r)   s     r+   r   zSignedIntegerEncoder.encode_fn9  s     !T-@*@!ABBBr-   c                     |                      |           |                     |          }|dk    rt          || j                  }nt	          || j                  }|S Nr   r/   r   r    r   r   r   s       r+   r,   zSignedIntegerEncoder.encode<  b    E"""!^^E22A::#'(:D<O#P#P  #'(:D<O#P#P ##r-   intc                 $     | |j                   S r   r   r   s      r+   r   z"SignedIntegerEncoder.from_type_strG  r   r-   N)r9   r>   r?   r   r   r   r   r   r   r,   r   r   r(   r-   r+   r   r   5  sz        :;;I L,,MC C C	$ 	$ 	$ ^E0 0 0 0 0r-   r   c                   6    e Zd Z ed          d             ZdS )PackedSignedIntegerEncoderr   c                 6     | |j         |j         dz            S r   r   r   s      r+   r   z(PackedSignedIntegerEncoder.from_type_strM  r   r-   Nr   r(   r-   r+   r   r   L  s8        ^E
 
 
 
 
r-   r   c                   X     e Zd ZdZed             Zed             Z fdZ fdZ xZ	S )BaseFixedEncoderNc                 L    t          |           ot          | t                     S r<   )r   
isinstancefloatr%   s    r+   r   zBaseFixedEncoder.type_check_fnX  s"    @
5%(@(@$@@r-   c                     t          | t          j                  r(|                                 p|                                 S dS )NF)r   decimalDecimalis_nanis_infiniter   s    r+   r   z!BaseFixedEncoder.illegal_value_fn\  s:    eW_-- 	9<<>>8U%6%6%8%88ur-   c           	      h   t                                          |           t          j        t                    5  |t
          | j         z  z  }d d d            n# 1 swxY w Y   |dk    rE|                     |t          d	                    t          |          | j                             d S d S )Nr   z5residue {} outside allowed fractional precision of {}r_   )rQ   r/   r   localcontextr   r   frac_placesr:   r   r7   repr)r*   r%   residuerW   s      r+   r/   zBaseFixedEncoder.validate_valuec  s    u%%%!"566 	7 	7sT%5$556G	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 Q;;!! KRRMM$  "      ;s   AA #A c                     t                                                       | j        t          d          | j        dk    s| j        dk    rt          d          d S )Nzmust specify `frac_places`r   P   z&`frac_places` must be in range (0, 80])rQ   rY   r   rZ   r[   s    r+   rY   zBaseFixedEncoder.validates  sc    #9:::q  D$4r$9$9EFFF %:$9r-   )
r9   r>   r?   r   r   r   r   r/   rY   r   r   s   @r+   r   r   U  s        KA A \A   \     G G G G G G G G Gr-   r   c                   B    e Zd Zd Zd Z ed          d             ZdS )UnsignedFixedEncoderc                 6    t          | j        | j                  S r<   )r   r   r   r*   r   s     r+   r   zUnsignedFixedEncoder.bounds_fn~  s    ,T-@$BRSSSr-   c                     t          j        t                    5  |t          | j        z  z  }t          |          }d d d            n# 1 swxY w Y   t          |          S r<   )r   r   r   r   r   r   r   )r*   r%   scaled_valueinteger_values       r+   r   zUnsignedFixedEncoder.encode_fn  s    !"566 	. 	. 3(8#88L--M	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. !///   "AAAufixedc                 0    |j         \  }} | ||          S N)r   r   r   r6   r   r   r   r   s        r+   r   z"UnsignedFixedEncoder.from_type_str  -    &.l#s)#
 
 
 	
r-   N)r9   r>   r?   r   r   r   r   r(   r-   r+   r   r   }  s[        T T T0 0 0 ^H
 
 
 
 
r-   r   c                   6    e Zd Z ed          d             ZdS )PackedUnsignedFixedEncoderr   c                 8    |j         \  }} | ||dz  |          S Nr   )r   r   r   r   r   s        r+   r   z(PackedUnsignedFixedEncoder.from_type_str  5    &.l#s))Q.#
 
 
 	
r-   Nr   r(   r-   r+   r   r     s8        ^H
 
 
 
 
r-   r   c                   H    e Zd Zd Zd Zd Z ed          d             ZdS )SignedFixedEncoderc                 6    t          | j        | j                  S r<   )r   r   r   r   s     r+   r   zSignedFixedEncoder.bounds_fn  s    *4+>@PQQQr-   c                     t          j        t                    5  |t          | j        z  z  }t          |          }d d d            n# 1 swxY w Y   |d| j        z  z  }t          |          S r   )r   r   r   r   r   r   r   r   )r*   r%   r   r   unsigned_integer_values        r+   r   zSignedFixedEncoder.encode_fn  s    !"566 	. 	. 3(8#88L--M	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. "/!T5H2H!I !7888r   c                     |                      |           |                     |          }|dk    rt          || j                  }nt	          || j                  }|S r   r   r   s       r+   r,   zSignedFixedEncoder.encode  r   r-   fixedc                 0    |j         \  }} | ||          S r   r   r   s        r+   r   z SignedFixedEncoder.from_type_str  r   r-   N)r9   r>   r?   r   r   r,   r   r   r(   r-   r+   r   r     sj        R R R9 9 9	$ 	$ 	$ ^G
 
 
 
 
r-   r   c                   6    e Zd Z ed          d             ZdS )PackedSignedFixedEncoderr   c                 8    |j         \  }} | ||dz  |          S r   r   r   s        r+   r   z&PackedSignedFixedEncoder.from_type_str  r   r-   Nr   r(   r-   r+   r   r     s8        ^G
 
 
 
 
r-   r   c                   z     e Zd ZdZ ee          ZdZed             Z	 fdZ
 ed          d             Z xZS )AddressEncoder   Tc                 R    t          |          s|                     |           d S d S r<   )r	   r:   r   s     r+   r/   zAddressEncoder.validate_value  r   r-   c                 |    t                                                       | j        dk    rt          d          d S )Nr  z$Addresses must be 160 bits in length)rQ   rY   r   rZ   r[   s    r+   rY   zAddressEncoder.validate  s>    &((CDDD )(r-   addressc                      |             S r<   r(   r   s      r+   r   zAddressEncoder.from_type_str  r   r-   )r9   r>   r?   r   r   r   r   r   rD   r/   rY   r   r   r   r   s   @r+   r   r     s        N122IM( ( [(E E E E E ^I      r-   r   c                       e Zd ZdZdS )PackedAddressEncoder   Nr   r(   r-   r+   r  r    r   r-   r  c                   V    e Zd ZdZd Zed             Z ed          d             ZdS )BytesEncoderFc                     t          |          s|                     |           | j        dz  }t          |          |k    r2|                     |t          d                    |                     d S d S )Nr   z,exceeds total byte size for bytes{} encodingr_   )r   r:   r   r`   r   r7   )r*   r%   	byte_sizes      r+   r/   zBytesEncoder.validate_value  s     	)!!%((('1,	u::	!!!!$BII)TT "      "!r-   c                     | S r<   r(   r   s    r+   r   zBytesEncoder.encode_fn  s    r-   rC   c                 *     | |j         dz            S )Nr   r   r   r   s      r+   r   zBytesEncoder.from_type_str  s    s(,"23333r-   N)	r9   r>   r?   r   r/   r   r   r   r   r(   r-   r+   r
  r
    si        M
 
 
   \ ^G4 4 4 4 4r-   r
  c                   6    e Zd Z ed          d             ZdS )PackedBytesEncoderrC   c                 6     | |j         dz  |j                   S r   r   r   s      r+   r   z PackedBytesEncoder.from_type_str  s*    s#<!+#<
 
 
 	
r-   Nr   r(   r-   r+   r  r    s8        ^G
 
 
 
 
r-   r  c                   f    e Zd ZdZed             Zed             Z ed          d             ZdS )ByteStringEncoderTc                 R    t          |          s|                     |           d S d S r<   )r   r:   r   s     r+   r/   z ByteStringEncoder.validate_value	  s4     	(  '''''	( 	(r-   c                     |                      |           |sd}n*t          |t          t          |                              }t	          t          |                    }||z   }|S )N                                    )r/   r!   r   r`   rl   )r6   r%   padded_valueencoded_sizerz   s        r+   r,   zByteStringEncoder.encode  sf    5!!! 	A'LL%eVCJJ-?-?@@L&s5zz22$|3r-   rC   c                      |             S r<   r(   r   s      r+   r   zByteStringEncoder.from_type_str  r   r-   N	r9   r>   r?   rL   rD   r/   r,   r   r   r(   r-   r+   r  r    ss        J( ( [(   [ ^G    r-   r  c                   (    e Zd ZdZed             ZdS )PackedByteStringEncoderFc                 0    |                      |           |S r<   )r/   r   s     r+   r,   zPackedByteStringEncoder.encode$  s    5!!!r-   Nr9   r>   r?   rL   rD   r,   r(   r-   r+   r  r  !  s2        J  [  r-   r  c                   f    e Zd ZdZed             Zed             Z ed          d             ZdS )TextStringEncoderTc                 R    t          |          s|                     |           d S d S r<   )r   r:   r   s     r+   r/   z TextStringEncoder.validate_value-  s4    u~~ 	(  '''''	( 	(r-   c                     |                      |           t          j        |d          }|sd}n*t          |t	          t          |                              }t          t          |                    }||z   }|S )Nutf8r  )r/   codecsr,   r!   r   r`   rl   )r6   r%   value_as_bytesr  r  rz   s         r+   r,   zTextStringEncoder.encode2  s{    5!!!uf55 	S'LL%nfS=P=P6Q6QRRL&s>':':;;$|3r-   stringc                      |             S r<   r(   r   s      r+   r   zTextStringEncoder.from_type_strB  r   r-   Nr  r(   r-   r+   r   r   *  ss        J( ( [(   [ ^H    r-   r   c                   (    e Zd ZdZed             ZdS )PackedTextStringEncoderFc                 V    |                      |           t          j        |d          S )Nr#  )r/   r$  r,   r   s     r+   r,   zPackedTextStringEncoder.encodeJ  s(    5!!!}UF+++r-   Nr  r(   r-   r+   r)  r)  G  s2        J, , [, , ,r-   r)  c                   X     e Zd ZdZ fdZd Zd Z ed          d             Z xZ	S )BaseArrayEncoderNc                 t    t                                                       | j        t          d          d S )Nz`item_encoder` may not be none)rQ   rY   item_encoderrZ   r[   s    r+   rY   zBaseArrayEncoder.validateS  s9    $=>>> %$r-   c                     t          |          s|                     |d           |D ]}| j                            |           d S )Nz(must be list-like such as array or tupler]   )r   r:   r.  r/   )r*   r%   rc   s      r+   r/   zBaseArrayEncoder.validate_valueY  sj    E"" 	!!> "   
  	3 	3D,,T2222	3 	3r-   c                    |                      |           | j        t          fd|D                       }t          dd          }|sd                    |          S dt          |          z  dt          t          t          t
          |d d                                       z   }t          fd|D                       }d                    ||z             S )	Nc              3   .   K   | ]} |          V  d S r<   r(   )rN   ir.  s     r+   rP   z3BaseArrayEncoder.encode_elements.<locals>.<genexpr>g  s+      ;;LLOO;;;;;;r-   rL   Fr-   rg   rh   ri   c              3   <   K   | ]}t          |z             V  d S r<   rk   )rN   rn   ro   s     r+   rP   z3BaseArrayEncoder.encode_elements.<locals>.<genexpr>o  sA       
 
6<OK&011
 
 
 
 
 
r-   )r/   r.  rr   rM   rt   r`   r   rs   )r*   r%   rw   items_are_dynamicrx   ry   ro   r.  s         @@r+   encode_elementsz BaseArrayEncoder.encode_elementsc  s    E"""(;;;;U;;;;;#L,FF  	)88K(((3u::oeJs3CRC8H/I/I$J$JKKK 
 
 
 
@L
 
 
 
 
 xxk1222r-   Twith_arrlistc                     |                     |j                                                  }|j        d         }t	          |          dk    rt          |d         |          S t          |          S Nri   r   r   )
array_sizer.  )r.  )r}   	item_typer~   arrlistr`   SizedArrayEncoderDynamicArrayEncoderr6   r   r   r.  
array_specs        r+   r   zBaseArrayEncoder.from_type_strt  sv    ++H,>,J,J,L,LMM%b)
z??a$%a=)    'LAAAAr-   )
r9   r>   r?   r.  rY   r/   r5  r   r   r   r   s   @r+   r,  r,  P  s        L? ? ? ? ?3 3 33 3 3" ^&&&B B '&B B B B Br-   r,  c                   R     e Zd ZdZ fdZd Z ed          d             Z xZS )PackedArrayEncoderNc           	         t                                          |           | j        ]t          |          | j        k    rG|                     |t
          d                    t          |          | j                             d S d S d S Nr^   r_   )rQ   r/   r:  r`   r:   r   r7   r*   r%   rW   s     r+   r/   z!PackedArrayEncoder.validate_value  s    u%%%?&3u::+H+H!!$>EEJJO  "      '&+H+Hr-   c                 0    |                      |          }|S r<   r5  r*   r%   encoded_elementss      r+   r,   zPackedArrayEncoder.encode      //66r-   Tr6  c                     |                     |j                                                  }|j        d         }t	          |          dk    r | |d         |          S  | |          S r9  )r}   r;  r~   r<  r`   r?  s        r+   r   z PackedArrayEncoder.from_type_str  sz    ++H,>,J,J,L,LMM%b)
z??a3%a=)   
 3L1111r-   )	r9   r>   r?   r:  r/   r,   r   r   r   r   s   @r+   rB  rB    su        J         
 ^&&&
2 
2 '&
2 
2 
2 
2 
2r-   rB  c                   <     e Zd ZdZ fdZ fdZ fdZd Z xZS )r=  Nc                 \     t                      j        di | | j        j        | _        d S )Nr(   )rQ   rR   r.  rL   rU   s     r+   rR   zSizedArrayEncoder.__init__  s1    ""6"""+6r-   c                 t    t                                                       | j        t          d          d S )Nz`array_size` may not be none)rQ   rY   r:  rZ   r[   s    r+   rY   zSizedArrayEncoder.validate  s8    ?";<<< #"r-   c           	         t                                          |           t          |          | j        k    rE|                     |t
          d                    t          |          | j                             d S d S rD  )rQ   r/   r`   r:  r:   r   r7   rE  s     r+   r/   z SizedArrayEncoder.validate_value  s    u%%%u::((!!$>EEJJO  "      )(r-   c                 0    |                      |          }|S r<   rG  rH  s      r+   r,   zSizedArrayEncoder.encode  rJ  r-   )	r9   r>   r?   r:  rR   rY   r/   r,   r   r   s   @r+   r=  r=    s~        J7 7 7 7 7
= = = = =                 r-   r=  c                       e Zd ZdZd ZdS )r>  Tc                 r    t          t          |                    }|                     |          }||z   }|S r<   )rl   r`   r5  )r*   r%   r  rI  rz   s        r+   r,   zDynamicArrayEncoder.encode  s:    &s5zz22//66$'77r-   N)r9   r>   r?   rL   r,   r(   r-   r+   r>  r>    s(        J    r-   r>  )GrA   r$  r   	itertoolsr   typingr   r   r   utilsr   r	   r
   r   r   r   r   r   r   baser   r   r   
exceptionsr   r   r   utils.numericr   r   r   r   r   r   r   utils.paddingr   r    r!   utils.stringr"   ABCMetar$   rI   r   r   r   r   r   r   rl   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r   r)  r,  rB  r=  r>  r(   r-   r+   <module>r\     s   



                
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
         
         
                          
     
-" -" -" -" -")s{ -" -" -" -"`C& C& C& C& C&; C& C& C&L)$ )$ )$ )$ )${ )$ )$ )$X    -       +   .    >   % % % % %* % % %P0 0 0 0 0] 0 0 0 )(BOOO
 
 
 
 
#9 
 
 
0 0 0 0 0= 0 0 0.
 
 
 
 
!5 
 
 
%G %G %G %G %G} %G %G %GP
 
 
 
 
+ 
 
 
*	
 	
 	
 	
 	
!5 	
 	
 	

 
 
 
 
) 
 
 
D	
 	
 	
 	
 	
1 	
 	
 	
    +   *    >   4 4 4 4 4) 4 4 40
 
 
 
 
 
 
 
       6    /          :, , , , ,/ , , ,1B 1B 1B 1B 1B{ 1B 1B 1Bh 2  2  2  2  2)  2  2  2F         (      B    *     r-   