
    g                         % S SK r S SKrS SKrS SKrS SKrS SKJrJr   " S S5      r\" 5       r	\\   \
S'    \R                  " 5       rS\4S jrS\S	\S\4S
 jrg! \ a    Sr Nf = f)    N)AnyOptionalc                       \ rS rSrSS\\   4S jjrS\SS4S jrS\SS4S jrSS	 jr	S\
4S
 jrS\
4S jrS\
4S jrS\
S\
S\
4S jrSrg)EntropyPool   Nseedc                 f   SU l         S U l        SU l        [        R                  " 5       U l        [        R                  " 5       U l        SU l	        [        SU R                  -  5      U l        Ub3  U R                  U5        SU l        [        R                  " 5       U l        g SU l        SU l        g )Nr          TF)
pool_indexdigest	next_byte	threadingLocklockhashlibsha1hashhash_len	bytearraypool_stirseededosgetpidseed_pid)selfr   s     D/home/matz/Project1/venv/lib/python3.13/site-packages/dns/entropy.py__init__EntropyPool.__init__    s    +/NN$	LLN	edmm34	JJtDKIIKDMDKDM    entropyreturnc                     U H_  nU R                   U R                  :X  a  SU l         US-  nU R                  U R                   ==   U-  ss'   U =R                   S-  sl         Ma     g )Nr         )r   r   r   )r   r"   cbs       r   r   EntropyPool._stir0   sR    A$--/"#DAIIdoo&!+&OOq O r!   c                 r    U R                      U R                  U5        S S S 5        g ! , (       d  f       g = fN)r   r   )r   r"   s     r   stirEntropyPool.stir8   s    YYJJw YYs   (
6c                 4   U R                   (       a#  U R                  [        R                  " 5       :w  a\   [        R                  " S5      nSU l         [        R                  " 5       U l        S U l        [        W5      nU R                  U5        g g ! [
         a{     [        SSS5       nUR                  S5      nS S S 5         M{  ! , (       d  f        N= f! [
         a0    [        [        R                  " 5       5      R                  5       n  Nf = ff = f)N   z/dev/urandomrbr   T)r   r   r   r   urandom	Exceptionopenreadstrtimeencoder   r   r   )r   r   rs      r   _maybe_seedEntropyPool._maybe_seed<   s    {{dmmryy{:5zz"~ DKIIKDMDKT?DJJt ;  55ndA6! vvbz 7666  5tyy{+224D5	5sG   B 
DC*C<C
C	CC6DDDDc                    U R                      U R                  5         U R                  b  U R                  U R                  :X  ax  U R
                  R                  [        U R                  5      5        [        U R
                  R                  5       5      U l        U R                  U R                  5        SU l        U R                  U R                     nU =R                  S-  sl        S S S 5        U$ ! , (       d  f       W$ = f)Nr   r&   )r   r9   r   r   r   r   updatebytesr   r   r   )r   values     r   random_8EntropyPool.random_8L   s    YY{{"dnn&E		  tyy!12'		(8(8(:;

4;;'!"KK/ENNaN   Y s   CC55
Dc                 J    U R                  5       S-  U R                  5       -   $ )N   )r?   r   s    r   	random_16EntropyPool.random_16X   s    }}$t}}66r!   c                 J    U R                  5       S-  U R                  5       -   $ )N   )rD   rC   s    r   	random_32EntropyPool.random_32[   s     ~~%'$..*:::r!   firstlastc                     X!-
  S-   nUS:  a  [        S5      eUS:  a  U R                  nSnO#US:  a  U R                  nSnOU R                  nSnXU" 5       -  US-   -  -   $ )	Nr&   l        ztoo bigrG   l    rB   i  r%   )
ValueErrorrH   rD   r?   )r   rJ   rK   sizerandmaxs         r   random_betweenEntropyPool.random_between^   sq    |a*Y''%<>>DCCZ>>DC==DCdf}q111r!   )	r   r   r   r   r   r   r   r   r   r+   )r#   N)__name__
__module____qualname____firstlineno__r   r=   r   r   r,   r9   intr?   rD   rH   rQ   __static_attributes__ r!   r   r   r      s{    Xe_  !U !t ! E  d   
# 
73 7;3 ;2C 2s 2s 2r!   r   system_randomr#   c                  d    [         b  [         R                  SS5      $ [        R                  5       $ )Nr   rG   )rZ   	randranger   rD   rY   r!   r   rD   rD   w   s(     &&q%00~~r!   rJ   rK   c                 j    [         b  [         R                  XS-   5      $ [        R                  X5      $ )Nr&   )rZ   r\   r   rQ   )rJ   rK   s     r   betweenr^   ~   s.     &&uQh77""5//r!   )r   r   randomr   r6   typingr   r   r   r   __annotations__SystemRandomrZ   r2   rW   rD   r^   rY   r!   r   <module>rc      s   $  	     Q2 Q2h }} '')M
 3  03 0c 0c 0  Ms   A A'&A'