o
    �õ±jå
  ã                   @   s*   d dl mZ d dlmZ G dd„ dƒZdS )é    )ÚNTRegistryNK)ÚNTRegistryKeyTypesc                   @   sT   e Zd Zdd„ Zeddd„ƒZeddd„ƒZedd	d
„ƒZeddd„ƒZdd„ Z	dS )ÚNTRegistryCellc                 C   s   d | _ d | _d S )N)ÚsizeÚdata)Úself© r   ú�/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiowinreg/filestruct/regcell.pyÚ__init__   s   
zNTRegistryCell.__init__TFc                 C   s:   |du r|   d| d¡ n|   |d¡ tj| |d�}|jS )z@
		Returns a HBIN block from the data in the reader at offset
		Té   r   ©Ú
nk_partial)Úseekr   Úreadr   ©ÚreaderÚoffsetÚis_filer   Úcellr   r   r	   Úload_data_from_offset	   s
   z$NTRegistryCell.load_data_from_offsetc                 Ã   sN   �|du r|   d| d¡I dH  n	|   |d¡I dH  tj| |d�I dH }|jS )zH
		Async
		Returns a HBIN block from the data in the reader at offset
		Tr   r   Nr   )r   r   Úareadr   r   r   r   r	   Úaload_data_from_offset   s   €z%NTRegistryCell.aload_data_from_offsetc                 Ã   sh  �t ƒ }|  d¡I d H }t|tƒr|\}}|d ur|‚n|}|dkr'd|_|S tj|ddd�|_|jd |_|jdkr=|S |jdkr�|  |jd ¡I d H }t|tƒr^|\|_}|d ur]|‚n||_|jd d… tv rŽ|jd d… d	kr€|du r€t	 
|j¡|_|S t|jd d…   |j¡|_|S |  d|j d ¡I d H }t|tƒr¯|\|_}|d ur­|‚|S ||_|S ©
Né   s   hbinr   ÚlittleT)Úsignedéÿÿÿÿé   s   nk)r   r   Ú
isinstanceÚtupler   ÚintÚ
from_bytesr   r   r   Ú	nameparse)r   r   r   ÚresÚtÚerrr   r   r	   r   "   sL   €
ÿ



ÿõø

þzNTRegistryCell.areadc                 C   sâ   t ƒ }|  d¡}|dkrd|_|S tj|ddd�|_|jd |_|jdkr'|S |jdkrd|  |jd ¡|_|jd d… tv rb|jd d… d	krT|du rTt |j¡|_|S t|jd d…   |j¡|_|S |  d|j d ¡|_|S r   )	r   r   r   r    r!   r   r   r   r"   )r   r   r   r$   r   r   r	   r   Q   s&   


ûþzNTRegistryCell.readc                 C   s*   d}| j D ]}|d|| j | f 7 }q|S )Nz== NT Registry Cell struct ==
z	%s: %s 
)Ú__dict__)r   r$   Úkr   r   r	   Ú__str__j   s   
zNTRegistryCell.__str__N)TF)F)
Ú__name__Ú
__module__Ú__qualname__r
   Ústaticmethodr   r   r   r   r(   r   r   r   r	   r      s    .r   N)Úaiowinreg.filestruct.nkr   Úaiowinreg.filestruct.keytypesr   r   r   r   r   r	   Ú<module>   s    