
    ,hr                         g d Z ddlmZ ddlmZ  G d de      Z e       Zej                  Zej                  Z	ej                  Z
ej                  Zej                  Zej                  ZddlmZmZmZmZ y))StrongRandomgetrandbits	randrangerandintchoiceshufflesample    )Random)is_native_intc                   8    e Zd Zd	dZd Zd Zd Zd Zd Zd Z	y)
r   Nc                 t    |
|d | _         y |
||| _         y |||j                  | _         y t        d      )Nz(Cannot specify both 'rng' and 'randfunc')	_randfuncread
ValueError)selfrngrandfuncs      V/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/Crypto/Random/random.py__init__zStrongRandom.__init__    sE    !DN!ck%DN#/ XXDNGHH    c           	          | j                   #t        j                         j                  | _         d|z  dz
  }|t	        | j                  t        |d                  z  S )z%Return an integer with k random bits.      )r   r
   newr   bytes_to_longceil_div)r   kmasks      r   r   zStrongRandom.getrandbits*   sM     >>!#ZZ\..DNQ!|mDNN8Aq>$BCCCr   c           	         t        |      dk(  r|\  }}}nEt        |      dk(  r|\  }}d}n/t        |      dk(  r	|\  }d}d}nt        dt        |      fz        t        |      rt        |      rt        |      st        d      |dk(  rt        d      t	        ||z
  |      }|dk  rd}|dk  rt        d|d	|d	|d
      |}||k\  r | j                  t        |            }||k\  r |||z  z   S )zkrandrange([start,] stop[, step]):
        Return a randomly-selected element from range(start, stop, step).      r   r	   z.randrange expected at most 3 arguments, got %dz$randrange requires integer argumentsz(randrange step argument must not be zerozempty range for randrange(z, ))len	TypeErrorr   r   r   r   size)r   argsstartstopstepnum_choicesrs          r   r   zStrongRandom.randrange2   s    t9>"&UD$Y!^ MUDDY!^GTEDLPSTXPY|[\\e$M$,?d#BCC19GHHte|T2?K?tUYZ[[ ;  k!23A ; q!!r   c                     t        |      rt        |      st        d      | j                  ||dz         }||cxk  r|k  sJ  J |S )z0Return a random integer N such that a <= N <= b.z"randint requires integer argumentsr   )r   r$   r   )r   abNs       r   r   zStrongRandom.randintS   sI    Q}Q'7@AANN1ac"A{{{r   c                 n    t        |      dk(  rt        d      || j                  t        |               S )zrReturn a random element from a (non-empty) sequence.

        If the seqence is empty, raises IndexError.
        r	   zempty sequence)r#   
IndexErrorr   )r   seqs     r   r   zStrongRandom.choice[   s3    
 s8q=-..4>>#c(+,,r   c                     t        t        |      dz
  dd      D ](  }| j                  d|dz         }||   ||   c||<   ||<   * y)zShuffle the sequence in place.r   r	   N)ranger#   r   )r   xijs       r   r   zStrongRandom.shuffled   sS     s1vaxB' 	$Aq!A#&A1qtJAaD!A$	$r   c                     t        |      }||kD  rt        d      g }i }t        |      D ]<  }d}|||v r| j                  |      }|||v r|j	                  ||          d||<   > |S )zNReturn a k-length list of unique elements chosen from the population sequence.zsample larger than populationNr   )r#   r   r5   r   append)r   
populationr   r*   retvalselectedr7   r+   s           r   r   zStrongRandom.samplen   s     *o{?<==q 	AA)qH}NN;/ )qH}MM*Q-(HQK	 r   )NN)
__name__
__module____qualname__r   r   r   r   r   r   r    r   r   r   r      s(    ID"B-$r   r   )r   r   long_to_bytesr%   N)__all__Cryptor
   Crypto.Util.py3compatr   objectr   _rr   r   r   r   r   r   Crypto.Util.numberr   r   rB   r%   rA   r   r   <module>rI      sj   2 a  /^6 ^@ ^nnLL	
**	
**	 L Kr   