§
    Ó ¢jm  ã                  óŒ   — d Z ddlmZ ddlZddlmZ ddlmZmZ ddlm	Z	  ed¬¦  «         G d	„ d
¦  «        ¦   «         Z
dd„ZdS )z[Parse HashCache.dat sitting beside PathOfExile.exe (integrity of loose binaries, not GGPK).é    )ÚannotationsN)Ú	dataclass)ÚdatetimeÚtimezone)ÚPathT)Úfrozenc                  óP   — e Zd ZU ded<   ded<   ded<   ded<   edd
„¦   «         ZdS )ÚHashCacheRecordÚstrÚnameÚintÚfiletimeÚsizeÚbytesÚsha256Úreturnr   c                ó\   — | j         dz  dz
  }t          j        |t          j        ¬¦  «        S )Ni€–˜ l    !l
 )Útz)r   r   Úfromtimestampr   Úutc)ÚselfÚunixs     úAC:\Projects\AutoPOE2\src\assistant_tool\ggpk_extract\hashcache.pyÚ	mtime_utczHashCacheRecord.mtime_utc   s-   € ð ” 
Ñ*¨kÑ9ˆÝÔ% d­x¬|Ð<Ñ<Ô<Ð<ó    N)r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__Úpropertyr   © r   r   r
   r
   
   sX   € € € € € € à€I€I�IØ€M€M�MØ€I€I�IØ€M€M�Màð=ð =ð =ñ „Xð=ð =ð =r   r
   Úpathú
str | Pathr   úlist[HashCacheRecord]c           	     óL  — t          | ¦  «                             ¦   «         }t          |¦  «        dk     rt          d¦  «        ‚t	          j        d|d¦  «        d         }d}g }t          |¦  «        D �]/}|dz   t          |¦  «        k    rt          d¦  «        ‚t	          j        d||¦  «        d         }|dz  }|dz  }||z   dz   dz   dz   t          |¦  «        k    rt          d	¦  «        ‚||||z   …                              d
d¦  «                             d¦  «        }||z  }t	          j        d||¦  «        d         }	|dz  }t	          j        d||¦  «        d         }
|dz  }|||dz   …         }|dz  }| 	                    t          ||	|
|¬¦  «        ¦  «         �Œ1|S )Né   zHashCache.dat too smallz<Ir   z1HashCache.dat truncated while reading name lengthé   é   é    z,HashCache.dat truncated while reading recordzutf-16leÚreplaceú z<Q)r   r   r   r   )r   Ú
read_bytesÚlenÚ
ValueErrorÚstructÚunpack_fromÚrangeÚdecodeÚrstripÚappendr
   )r"   ÚdataÚcountÚposÚrecordsÚ_ÚncharsÚnbytesr   r   r   Úshas               r   Úparse_hashcacher=      s¸  € Ý�‰:Œ:× Ò Ñ"Ô"€DÝ
ˆ4�y„y�1‚}€}ÝÐ2Ñ3Ô3Ð3ÝÔ˜t T¨1Ñ-Ô-¨aÔ0€EØ
€CØ%'€GÝ�5‰\Œ\ð ]ñ ]ˆØ�‰7•S˜‘Y”YÒÐÝÐPÑQÔQÐQÝÔ# D¨$°Ñ4Ô4°QÔ7ˆØˆq‰ˆØ˜!‘ˆØ�‰<˜!Ñ˜aÑ "Ñ$¥s¨4¡y¤yÒ0Ð0ÝÐKÑLÔLÐLØ�C˜# ™,Ð&Ô'×.Ò.¨z¸9ÑEÔE×LÒLÈVÑTÔTˆØˆv‰ˆÝÔ% d¨D°#Ñ6Ô6°qÔ9ˆØˆq‰ˆÝÔ! $¨¨cÑ2Ô2°1Ô5ˆØˆq‰ˆØ�3˜˜r™�>Ô"ˆØˆr‰	ˆØ�Š•¨D¸8È$ÐWZÐ[Ñ[Ô[Ñ\Ô\Ð\Ñ\Ø€Nr   )r"   r#   r   r$   )Ú__doc__Ú
__future__r   r/   Údataclassesr   r   r   Úpathlibr   r
   r=   r!   r   r   ú<module>rB      sÂ   ðØ aÐ aØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð ð €�$ÐÑÔð
=ð 
=ð 
=ð 
=ð 
=ñ 
=ô 
=ñ Ôð
=ðð ð ð ð ð r   