U e5d�@s,ddlZz ddlZWn0ek rDejdkr8ed��ned��YnXddlZddlm Z ddl m Z ejejdZe �ZGdd �d e d d ��Zd%dd �d d �Zd&dd�ZgZdd �dd�Zedddd�edddd�dD](Zeddeddee�dd �r��qq�eddd d!�ed"dd#d$�[[dS)'�NZwin32z,The crypt module is not supported on Windowsz;The required _crypt module was not built as part of CPython)� SystemRandom)� namedtuplez./c@seZdZdd�ZdS)�_MethodcCs d�|j�S)Nz)�format�name)�self�r�/usr/lib64/python3.8/crypt.py�__repr__sz_Method.__repr__N)�__name__� __module__� __qualname__r rrrr rsrz name ident salt_chars total_size��roundscCsB|dkrtd}|dk r4t|t�s4t|jj�d���|js@d}nd|j�d�}|jr�|jddkr�|dkrpd}n@t�|d�}|d|>kr�td��d |kr�d ks�ntd ��||d �d�7}n^|jd k�r|dk �r d|kr�dks�ntd��|d|�d�7}n|dk �r t|�d���|d� dd�t |j �D��7}|S)Nrz+ object cannot be interpreted as an integer��$�2� �zrounds must be a power of 2��z%rounds out of the range 2**4 to 2**31Z02d)�5�6i�i�ɚ;z+rounds out of the range 1000 to 999_999_999zrounds=z$ doesn't support the rounds argumentcss|]}t�t�VqdS�N)�_srZchoice� _saltchars)�.0�charrrr � Aszmksalt..) �methods� isinstance�int� TypeError� __class__r Zident� bit_length� ValueError�join�rangeZ salt_chars)�methodr�sZ log_roundsrrr �mksalts2    r*cCs&|dkst|t�rt|�}t�||�Sr)r rr*�_crypt�crypt)Zword�saltrrr r,Es r,cGsVt|f|��}|t�d|<t||d�}td|�}|rRt|�|jkrRt�|�dSdS)NZMETHOD_rrTF)r�globalsr*r,�lenZ total_sizer�append)rr�argsr(r-�resultrrr � _add_methodWs   r3ZSHA512r��jZSHA256r�?)�b�y�arZBLOWFISHr��;ZMD5�1��"ZCRYPT�� )N)N)�sys�_sysr+�ModuleNotFoundError�platform� ImportError�stringZ_stringZrandomrZ _SystemRandom� collectionsrZ _namedtupleZ ascii_lettersZdigitsrrrr*r,rr3Z_vr/rrrr �s0      &