
    j                     t    d Z ddlZddlmZ dZ	 ddlmZ n# e$ r dZY nw xY wdefdZ	ed	efd
            Z
dS )zETH Address.    N)	validatorT)keccakFaddrc                 :   |                      dd          } t          j        |                                                     d                                                                                    }t          |           dk    rdS t          dd          D ]}t          ||         d          dk    r$| |         
                                | |         k    s>t          ||         d          dk    r'| |                                         | |         k    r dS d	S )
z#Validate ETH type checksum address.0x ascii(   Fr         T)replacer   newlowerencodedigesthexlenrangeintupper)r   	addr_hashis      j/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/validators/crypto_addresses/eth_address.py_validate_eth_checksum_addressr      s    <<b!!D
4::<<..w7788??AAEEGGI
4yyBu1b\\  	!b!!A%%$q'--//T!W*D*D	!b!!Q&&47==??d1g+E+E554    valuec                    t           st          d          | sdS t          j        d                              |           pt          |           S )al  Return whether or not given value is a valid ethereum address.

    Full validation is implemented for ERC20 addresses.

    Examples:
        >>> eth_address('0x9cc14ba4f9f68ca159ea4ebf2c292a808aaeb598')
        True
        >>> eth_address('0x8Ba1f109551bD432803012645Ac136ddd64DBa72')
        ValidationError(func=eth_address, args={'value': '0x8Ba1f109551bD432803012645Ac136ddd64DBa72'})

    Args:
        value:
            Ethereum address string to validate.

    Returns:
        (Literal[True]): If `value` is a valid ethereum address.
        (ValidationError): If `value` is an invalid ethereum address.
    zVDo `pip install validators[crypto-eth-addresses]` to perform `eth_address` validation.Fz!^0x[0-9a-f]{40}$|^0x[0-9A-F]{40}$)_keccak_flagImportErrorrecompilematchr   )r   s    r   eth_addressr#   !   sf    (  
d
 
 	
  u::;;AA  /	'	.	./r   )__doc__r    validators.utilsr   r   eth_hash.autor   r   strr   r#    r   r   <module>r)      s      
			 ' & & & & &$$$$$$$   LLL      /s / / / / / /s    !!