Ë
    (üàgÛ  ã                   óŒ   — d dl 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 d dlmZ d„ Zd„ Zd„ Zd„ Z G d	„ d
e«      Zd„ Zdd„Zy)é    )ÚbchrÚconcat_buffers)ÚVoidPointerÚSmartPointerÚcreate_string_bufferÚget_raw_bufferÚc_size_tÚc_uint8_ptrÚc_ubyte)Úlong_to_bytes)Ú_raw_keccak_libc                 óˆ   — | ddz  k  r| dk\  sJ ‚| dk(  rdn| j                  «       dz   dz  }t        |«      t        | «      z   S )z2Left encode function as defined in NIST SP 800-185é   éø  r   é   é   )Ú
bit_lengthr   r   ©ÚxÚnums     úS/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/Crypto/Hash/cSHAKE128.pyÚ_left_encoder   +   sN   € ð ��d‘ŠO  Q¢Ð'Ð&ð �AŠv‰!˜AŸL™L›N¨QÑ.°1Ñ4€Cä�‹9”} QÓ'Ñ'Ð'ó    c                 óˆ   — | ddz  k  r| dk\  sJ ‚| dk(  rdn| j                  «       dz   dz  }t        | «      t        |«      z   S )z3Right encode function as defined in NIST SP 800-185r   r   r   r   r   )r   r   r   r   s     r   Ú_right_encoder   6   sN   € ð ��d‘ŠO  Q¢Ð'Ð&ð �AŠv‰!˜AŸL™L›N¨QÑ.°1Ñ4€Cä˜Óœd 3›iÑ'Ð'r   c                 ón   — t        | «      dz  }|ddz  k\  rt        d«      ‚t        t        |«      | «      S )z4Encode string function as defined in NIST SP 800-185r   r   r   z$String too large to encode in cSHAKE)ÚlenÚ
ValueErrorr   r   )r   Úbitlens     r   Ú_encode_strr    A   s;   € ô �‹V�a‰Z€FØ�!�t‘)ÒÜÐ?Ó@Ð@äœ, vÓ.°Ó2Ð2r   c                 ód   — t        t        |«      | «      }|t        |«      |z  z
  |z  }|d|z  z   S )z2Zero pad byte string as defined in NIST SP 800-185ó    )r   r   r   )r   ÚlengthÚto_padÚnpads       r   Ú_bytepadr&   K   s>   € ô œL¨Ó0°!Ó4€Fð ”S˜“[ 6Ñ)Ñ)¨VÑ3€Dà�G˜d‘NÑ"Ð"r   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)Ú
cSHAKE_XOFz]A cSHAKE hash object.
    Do not instantiate directly.
    Use the :func:`new` function.
    c                 óÞ  — t        «       }|s|r1t        |«      t        |«      z   }t        |d|z
  dz  «      }d| _        n	d }d| _        t	        j
                  |j                  «       t        |dz  «      t        d«      «      }|rt        d|z  «      ‚t        |j                  «       t        j                  «      | _        d| _        |r| j                  |«       |r| j                  |«       y y )Ni@  r   é   é   é   z#Error %d while instantiating cSHAKEF)r   r    r&   Ú_paddingr   Úkeccak_initÚ
address_ofr	   r   r   r   ÚgetÚkeccak_destroyÚ_stateÚ_is_squeezingÚupdate)	ÚselfÚdataÚcustomÚcapacityÚfunctionÚstateÚprefix_unpadÚprefixÚresults	            r   Ú__init__zcSHAKE_XOF.__init__]   sÞ   € Ü“ˆá‘XÜ& xÓ0´;¸vÓ3FÑFˆLÜ˜l¨T°H©_¸qÑ,@ÓAˆFØ ˆD�MàˆFØ ˆDŒMä ×,Ñ,¨U×-=Ñ-=Ó-?Ü-5°hÀ±kÓ-BÜ-4°R«[ó:ˆñ ÜÐBØ%ñ&ó 'ð 'ä" 5§9¡9£;Ü#2×#AÑ#AóCˆŒà"ˆÔáØ�K‰K˜ÔáØ�K‰K˜Õð r   c           	      ó   — | j                   rt        d«      ‚t        j                  | j                  j                  «       t        |«      t        t        |«      «      «      }|rt        d|| j                  fz  «      ‚| S )z¼Continue hashing of a message by consuming the next chunk of data.

        Args:
            data (byte string/byte array/memoryview): The next chunk of the message being hashed.
        z/You cannot call 'update' after the first 'read'z Error %d while updating %s state)r3   Ú	TypeErrorr   Úkeccak_absorbr2   r0   r
   r	   r   r   Úname)r5   r6   r=   s      r   r4   zcSHAKE_XOF.updatex   sv   € ð ×ÒÜÐMÓNÐNä ×.Ñ.¨t¯{©{¯©Ó/@Ü/:¸4Ó/@Ü/7¼¸D»	Ó/BóDˆñ ÜÐ?Ø &¨¯	©	Ð2ñ3ó 4ð 4àˆr   c                 ó  — d| _         t        |«      }t        j                  | j                  j                  «       |t        |«      t        | j                  «      «      }|rt        d|| j                  fz  «      ‚t        |«      S )ah  
        Compute the next piece of XOF output.

        .. note::
            You cannot use :meth:`update` anymore after the first call to
            :meth:`read`.

        Args:
            length (integer): the amount of bytes this method must return

        :return: the next piece of XOF output (of the given length)
        :rtype: byte string
        Tz!Error %d while extracting from %s)r3   r   r   Úkeccak_squeezer2   r0   r	   r   r-   r   rB   r   )r5   r#   Úbfrr=   s       r   ÚreadzcSHAKE_XOF.readŠ   s~   € ð "ˆÔÜ" 6Ó*ˆÜ ×/Ñ/°·±·±Ó0AØ03Ü08¸Ó0@Ü07¸¿¹Ó0FóHˆñ ÜÐ@Ø &¨¯	©	Ð2ñ3ó 4ð 4ô ˜cÓ"Ð"r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r>   r4   rF   © r   r   r(   r(   W   s   „ ñò
ò6ó$#r   r(   c                 ó   — t        | |d|«      S )Né   ©r(   )r6   r7   r9   s      r   Ú_newrO   ¦   s   € ä�d˜F C¨Ó2Ð2r   Nc                 ó   — t        | |dd«      S )az  Return a fresh instance of a cSHAKE128 object.

    Args:
       data (bytes/bytearray/memoryview):
        Optional.
        The very first chunk of the message to hash.
        It is equivalent to an early call to :meth:`update`.
       custom (bytes):
        Optional.
        A customization bytestring (``S`` in SP 800-185).

    :Return: A :class:`cSHAKE_XOF` object
    rM   r   rN   )r6   r7   s     r   ÚnewrQ   «   s   € ô  �d˜F C¨Ó-Ð-r   )NN)ÚCrypto.Util.py3compatr   r   ÚCrypto.Util._raw_apir   r   r   r   r	   r
   r   ÚCrypto.Util.numberr   ÚCrypto.Hash.keccakr   r   r   r    r&   Úobjectr(   rO   rQ   rK   r   r   ú<module>rW      sN   ð÷> 7÷8÷ 8ñ 8õ
 -å .ò(ò(ò3ò	#ôL#�ô L#ò^3ô
.r   