§
    jŠtj	  ã                   ó  — d Z ddlZddlmZ ddlZddlZdededdfd„Z	dededefd	„Z
d
gZedk    rY ed¦  «         ddlZ ed¦  «        D ]1Z ej        ¦   «         \  ZZer nedz  dk    rer edez  ¦  «         Œ2 ed¦  «         dS dS )z„Functions for parallel computation on multiple cores.

Introduced in Python-RSA 3.1.

.. note::

    Requires Python 2.6 or newer.

é    N)Ú
ConnectionÚnbitsÚpipeÚreturnc                 ó°   — 	 t           j                             | ¦  «        }t           j                             |¦  «        r|                     |¦  «         d S ŒV)N)ÚrsaÚrandnumÚread_random_odd_intÚprimeÚis_primeÚsend)r   r   Úintegers      úJ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/rsa/parallel.pyÚ_find_primer       sR   € ðÝ”+×1Ò1°%Ñ8Ô8ˆõ Œ9×Ò˜gÑ&Ô&ð 	Ø�IŠI�gÑÔÐØˆFðó    Úpoolsizec                 ó¬  ‡ ‡— t          j        d¬¦  «        \  }Š	 ˆ ˆfd„t          |¦  «        D ¦   «         }|D ]}|                     ¦   «          Œ|                     ¦   «         }|                     ¦   «          ‰                     ¦   «          n-# |                     ¦   «          ‰                     ¦   «          w xY w|D ]}|                     ¦   «          Œ|S )aU  Returns a prime number that can be stored in 'nbits' bits.

    Works in multiple threads at the same time.

    >>> p = getprime(128, 3)
    >>> rsa.prime.is_prime(p-1)
    False
    >>> rsa.prime.is_prime(p)
    True
    >>> rsa.prime.is_prime(p+1)
    False

    >>> from rsa import common
    >>> common.bit_size(p) == 128
    True

    F)Úduplexc                 óJ   •— g | ]}t          j        t          ‰‰f¬ ¦  «        ‘Œ S ))ÚtargetÚargs)ÚmpÚProcessr   )Ú.0Ú_r   Ú	pipe_sends     €€r   ú
<listcomp>zgetprime.<locals>.<listcomp>A   s-   ø€ ÐbÐbÐbÈQ•”¥;°e¸YÐ5GÐHÑHÔHÐbÐbÐbr   )r   ÚPipeÚrangeÚstartÚrecvÚcloseÚ	terminate)r   r   Ú	pipe_recvÚprocsÚpÚresultr   s   `     @r   Úgetprimer(   *   sæ   øø€ õ&  œW¨EÐ2Ñ2Ô2Ñ€Y�	ð	ØbÐbÐbÐbÐbÕRWÐX`ÑRaÔRaÐbÑbÔbˆàð 	ð 	ˆAØ�GŠG‰IŒIˆIˆIà—’Ñ!Ô!ˆà�ŠÑÔÐØ�ŠÑÔÐÐøð 	�ŠÑÔÐØ�ŠÑÔÐÐøøøð ð ð ˆØ	�Š‰Œˆˆà€Ms   œA	B Â*B8r(   Ú__main__z'Running doctests 1000x or until failureéd   é
   z%i timeszDoctests done)Ú__doc__Úmultiprocessingr   Úmultiprocessing.connectionr   Ú	rsa.primer   Úrsa.randnumÚintr   r(   Ú__all__Ú__name__ÚprintÚdoctestr   ÚcountÚtestmodÚfailuresÚtests© r   r   ú<module>r;      sE  ððð ð Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1à Ð Ð Ð Ø Ð Ð Ð ð�sð  *ð °ð ð ð ð ð%�Cð % 3ð %¨3ð %ð %ð %ð %ðP ˆ,€àˆzÒÐØ	€EÐ
3Ñ4Ô4Ð4Ø€N€N€Nà��s‘”ð &ð &ˆØ+˜GœOÑ-Ô-Ñˆ�5Øð 	ØˆEà�2‰:˜Š?ˆ?˜uˆ?ØˆE�*˜uÑ$Ñ%Ô%Ð%øà	€Eˆ/ÑÔÐÐÐð Ðr   