o
    �õ±j4  ã                   @   s8   d Z ddlZddlZG dd„ dejƒZG dd„ dƒZdS )aÁ  
Der vk-Record
=============

Offset	Size	Contents
0x0000	Word	ID: ASCII-"vk" = 0x6B76
0x0002	Word	name length
0x0004	D-Word	length of the data
0x0008	D-Word	Offset of Data
0x000C	D-Word	Type of value
0x0010	Word	Flag
0x0012	Word	Unused (data-trash)
0x0014	????	Name

If bit 0 of the flag-word is set, a name is present, otherwise the
value has no name (=default)
If the data-size is lower 5, the data-offset value is used to store
the data itself!
é    Nc                   @   s@   e Zd ZdZd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 )ÚREGTYPEéÿÿÿÿr   é   é   é   é   é   é   é   é   é	   é
   é   N)Ú__name__Ú
__module__Ú__qualname__ÚREG_UNKNOWNÚREG_NONEÚREG_SZÚREG_EXPAND_SZÚ
REG_BINARYÚ	REG_DWORDÚREG_DWORD_BIG_ENDIANÚREG_LINKÚREG_MULTI_SZÚREG_RESOURCE_LISTÚREG_FULL_RESOURCE_DESCRIPTORÚREG_RESOURCE_REQUIREMENTS_LISTÚ	REG_QWORD© r   r   úŠ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiowinreg/filestruct/vk.pyr      s    r   c                   @   sP   e Zd Zdd„ Zdd„ Zddd„Zddd	„Zed
d„ ƒZedd„ ƒZ	dd„ Z
dS )ÚNTRegistryVKc                 C   sF   d| _ d | _d | _d | _d | _d | _d | _d | _d | _d | _	d | _
d S )Ns   vk)ÚmagicÚname_lengthÚdata_lengthÚoffset_dataÚ
value_typeÚflagÚunusedÚnameÚdataÚdata_fmtÚvalue_type_raw)Úselfr   r   r    Ú__init__(   s   
zNTRegistryVK.__init__c                 C   sò   | j tjkr| j d¡ ¡ | _d S | j tjkr=g | _| j d¡D ]}t	|ƒdks,|dkr-q | j 
|d  d¡ ¡ ¡ q d S | j tjkrOtj| jddd�| _d S | j tjkratj| jddd�| _d S | j tjkrstj| jddd�| _d S | j| _d S )	Nz	utf-16-les      r   s     ÚlittleF)Ú	byteorderÚsignedÚbig)r&   r   r   r*   ÚdecodeÚstripr+   r   ÚsplitÚlenÚappendr   ÚintÚ
from_bytesr   r   )r-   Úentryr   r   r    Úformat_data7   s    ýzNTRegistryVK.format_dataTc                 C   s’   | j dk rd| j @ | _ | j dkrd| _n.| j dk r$| jjdddd�| _n|d	u r3| | jd d
 ¡ n| | jd ¡ | | j ¡| _|  ¡  | jS ©Nr   iÿÿÿó    r   r   r/   F©r1   Ti   )r$   r*   r%   Úto_bytesÚseekÚreadr;   r+   )r-   ÚreaderÚis_filer   r   r    Ú	load_dataK   s   


zNTRegistryVK.load_datac                 Ã   sÌ   �| j dk rd| j @ | _ | j dkrd| _nJ| j dk r%| jjdddd�| _n:|d	u r7| | jd d
 ¡I d H  n| | jd ¡I d H  | | j ¡I d H }t|tƒr\|\| _}|d ur[|‚n|| _|  ¡  | j	S r<   )
r$   r*   r%   r?   r@   rA   Ú
isinstanceÚtupler;   r+   )r-   rB   rC   ÚresÚerrr   r   r    Ú
aload_data]   s&   €




ÿzNTRegistryVK.aload_datac                 C   s   t  t | ¡¡S )N)r!   Úfrom_bufferÚioÚBytesIO)r*   r   r   r    r9   u   s   zNTRegistryVK.from_bytesc                 C   sÞ   t ƒ }|  d¡|_tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�}||_|dd„ t	D ƒv rJt	|ƒ|_
nt	j|_
tj|  d¡ddd�|_tj|  d¡ddd�|_|  |j¡|_|S )	Nr   r/   Fr>   r   Tc                 S   s   g | ]}|j ‘qS r   )Úvalue)Ú.0Úer   r   r    Ú
<listcomp>ƒ   s    z,NTRegistryVK.from_buffer.<locals>.<listcomp>)r!   rA   r"   r8   r9   r#   r$   r%   r,   r   r&   r   r'   r(   r)   )ÚbuffÚvkÚtr   r   r    rJ   y   s   zNTRegistryVK.from_bufferc                 C   s*   d}| j D ]}|d|| j | f 7 }q|S )Nz== NT Registry VK block ==
z	%s: %s 
)Ú__dict__)r-   rS   Úkr   r   r    Ú__str__Ž   s   
zNTRegistryVK.__str__N)T)r   r   r   r.   r;   rD   rI   Ústaticmethodr9   rJ   rV   r   r   r   r    r!   '   s    



r!   )Ú__doc__rK   ÚenumÚEnumr   r!   r   r   r   r    Ú<module>   s
   