Ë
    iKêj}  ã                   óø   — d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	 dee
   dee
e
gee
   f   fd„Zdedee
e
gee
   f   fd	„Z G d
„ d«      Z G d„ d«      Z G d„ d«      Z e«       Zd e_         G d„ de«      Zy)é    )Údefaultdict)ÚCallableÚIterableÚSequence)ÚRandom)ÚLazySequenceCopyÚprefixÚreturnc                 óF   ‡ — dt         dt         dt        t            fˆ fd„}|S )zlSelect choices starting from ``prefix```,
    preferring to move left then wrapping around
    to the right.ÚdepthÚnr
   c              3   óà   •K  — | t        ‰«      k  r=‰|    }||k\  r|dz
  }t        |dd«      E d {  –—†  t        |dz
  |d«      E d {  –—†  y t        |dz
  dd«      E d {  –—†  y 7 Œ67 Œ 7 Œ	­w)Né   éÿÿÿÿ)ÚlenÚrange)r   r   Úir	   s      €úx/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/hypothesis/internal/conjecture/shrinking/choicetree.pyÚselection_orderz/prefix_selection_order.<locals>.selection_order   sw   øè ø€ Ø”3�v“;ÒØ�u‘ˆAØ�AŠvØ˜‘E�Ü˜Q  BÓ'×'Ð'Ü˜Q ™U A rÓ*×*Ñ*ä˜Q ™U B¨Ó+×+Ñ+ð (øØ*øà+ús3   ƒ.A.±A(²A.Á	A*Á
A.Á"A,Á#A.Á*A.Á,A.©Úintr   )r	   r   s   ` r   Úprefix_selection_orderr      s)   ø€ ð,œsð ,¤sð ,¬x¼©}õ ,ð Ðó    Úrandomc                 óF   ‡ — dt         dt         dt        t            fˆ fd„}|S )z#Select choices uniformly at random.r   r   r
   c              3   óž   •K  — t        t        |«      «      }|r2‰j                  dt        |«      «      }|j	                  |«      –— |rŒ1y y ­w©Nr   )r   r   Ú	randranger   Úpop)r   r   Úpendingr   r   s       €r   r   z/random_selection_order.<locals>.selection_order)   sA   øè ø€ Ü"¤5¨£8Ó,ˆÙØ× Ñ  ¤C¨£LÓ1ˆAØ—+‘+˜a“.Ò ô ùs   ƒAAÁAr   )r   r   s   ` r   Úrandom_selection_orderr!   &   s)   ø€ ð!œsð !¤sð !¬x¼©}õ !ð Ðr   c                   ór   — e Zd ZdZdddeeegee   f   fd„Zd„ fdee   deege	f   d	efd
„Z
d	ee   fd„Zy)ÚChooserz4A source of nondeterminism for use in shrink passes.ÚtreeÚ
ChoiceTreer   c                 óR   — || _         |j                  g| _        g | _        d| _        y )NF)Ú_Chooser__selection_orderÚrootÚ_Chooser__node_trailÚ_Chooser__choicesÚ_Chooser__finished)Úselfr$   r   s      r   Ú__init__zChooser.__init__5   s(   € ð
 "1ˆÔØ!ŸY™Y˜KˆÔØ$&ˆŒØˆ�r   c                  ó   — y)NT© )Úxs    r   ú<lambda>zChooser.<lambda>B   s   � r   ÚvaluesÚ	conditionr
   c                 ó´  — | j                   rJ ‚| j                  d   }|j                  € t        |«      |_        t        |«      |_        |j                  dkD  st        |«      dk(  sJ ‚| j                  t        | j                  «      t        |«      «      D ]©  }|j                  dk(  r n˜|j                  |   j                  rŒ.||   } ||«      rG| j                  j                  |«       | j                  j                  |j                  |   «       |c S t        |j                  |<   |xj                  dz  c_        Œ« |j                  dk(  sJ ‚t        ‚)z©Return some element of values satisfying the condition
        that will not lead to an exhausted branch, or raise DeadBranch
        if no such element exist".
        r   r   r   )r+   r)   Úlive_child_countr   r   r'   r*   ÚchildrenÚ	exhaustedÚappendÚDeadNodeÚ
DeadBranch)r,   r2   r3   Únoder   Úvs         r   ÚchoosezChooser.choose?   s.  € ð —?’?Ð"Ð"Ø× Ñ  Ñ$ˆØ× Ñ Ð(Ü$'¨£KˆDÔ!Ü˜“[ˆDŒFà×$Ñ$ qÒ(¬C°«K¸1Ò,<Ð<Ð<à×'Ñ'¬¨D¯N©NÓ(;¼SÀ»[ÓIò 	/ˆAØ×$Ñ$¨Ò)ÙØ—=‘= Ñ#×-Ó-Ø˜1‘I�Ù˜Q”<Ø—N‘N×)Ñ)¨!Ô,Ø×%Ñ%×,Ñ,¨T¯]©]¸1Ñ-=Ô>Ø’Hä'/�D—M‘M !Ñ$Ø×)Ò)¨QÑ.Ö)ð	/ð ×$Ñ$¨Ò)Ð)Ð)ÜÐr   c                 óØ  — d| _         t        | j                  «      t        | j                  «      dz   k(  sJ ‚t	        | j                  «      }d| j                  d   _        t        | j                  «      dkD  rñ| j                  d   j                  rØ| j                  j                  «        t        | j                  «      t        | j                  «      k(  sJ ‚| j                  j                  «       }| j                  d   }t        |j                  |<   |j
                  €J ‚|xj
                  dz  c_        t        | j                  «      dkD  r| j                  d   j                  rŒØ|S )z~Record the decisions made in the underlying tree and return
        a prefix that can be used for the next Chooser to be used.Tr   r   r   )
r+   r   r)   r*   Útupler5   r7   r   r9   r6   )r,   Úresultr   Útargets       r   ÚfinishzChooser.finish_   s/  € ð ˆŒÜ�4×$Ñ$Ó%¬¨T¯^©^Ó)<¸qÑ)@Ò@Ð@Ð@ä�t—~‘~Ó&ˆà12ˆ×Ñ˜"ÑÔ.Ü�$×#Ñ#Ó$ qÒ(¨T×->Ñ->¸rÑ-B×-LÒ-LØ×Ñ×!Ñ!Ô#Ü�t×(Ñ(Ó)¬S°·±Ó-@Ò@Ð@Ð@Ø—‘×"Ñ"Ó$ˆAØ×&Ñ& rÑ*ˆFÜ!)ˆF�O‰O˜AÑØ×*Ñ*Ð6Ð6Ð6Ø×#Ò# qÑ(Õ#ô �$×#Ñ#Ó$ qÒ(¨T×->Ñ->¸rÑ-B×-LÓ-Lð ˆr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r-   r   Úboolr=   rB   r/   r   r   r#   r#   2   st   „ Ù>ð àð ð " 3¨ *¨h°s©mÐ";Ñ<ó ñ ,:ñà˜‘ðð ˜S˜E 4˜KÑ(ðð 
ó	ð@˜ ™ô r   r#   c                   óh   — e Zd ZdZd	d„Zedefd„«       Zdee	e	ge
e	   f   deegdf   dee	   fd„Zy)
r%   zæRecords sequences of choices made during shrinking so that we
    can track what parts of a pass has run. Used to create Chooser
    objects that are the main interface that a pass uses to make
    decisions about what to do.
    r
   Nc                 ó"   — t        «       | _        y ©N)ÚTreeNoder(   ©r,   s    r   r-   zChoiceTree.__init__{   s   € Ü“Jˆ�	r   c                 ó.   — | j                   j                  S rJ   )r(   r7   rL   s    r   r7   zChoiceTree.exhausted~   s   € à�y‰y×"Ñ"Ð"r   r   Úfc                 ó¤   — | j                   rJ ‚t        | |«      }	  ||«       |j                  «       S # t        $ r Y |j                  «       S w xY wrJ   )r7   r#   r:   rB   )r,   r   rN   Úchoosers       r   ÚstepzChoiceTree.step‚   sY   € ð
 —>’>Ð!Ð!ä˜$ Ó0ˆð	ÙˆgŒJð �~‰~ÓÐøô ò 	ØØ�~‰~ÓÐð	ús   œ4 ´	AÁA©r
   N)rC   rD   rE   rF   r-   ÚpropertyrG   r7   r   r   r   r#   r   rQ   r/   r   r   r%   r%   t   si   „ ñóð ð#˜4ò #ó ð#ð à! 3¨ *¨h°s©mÐ";Ñ<ð ð �W�I˜t�OÑ$ð ð 
�#‰ô	 r   r%   c                   ó*   — e Zd Zdd„Zedefd„«       Zy)rK   r
   Nc                 óH   — t        t        «      | _        d | _        d | _        y rJ   )r   rK   r6   r5   r   rL   s    r   r-   zTreeNode.__init__’   s   € Ü-8¼Ó-BˆŒØ,0ˆÔØ!ˆ�r   c                 ó    — | j                   dk(  S r   )r5   rL   s    r   r7   zTreeNode.exhausted—   s   € à×$Ñ$¨Ñ)Ð)r   rR   )rC   rD   rE   r-   rS   rG   r7   r/   r   r   rK   rK   ‘   s"   „ ó"ð
 ð*˜4ò *ó ñ*r   rK   c                   ó   — e Zd Zy)r:   N)rC   rD   rE   r/   r   r   r:   r:       s   „ Ør   r:   N)Úcollectionsr   Úcollections.abcr   r   r   r   r   Ú)hypothesis.internal.conjecture.junkdrawerr   r   r   r!   r#   r%   rK   r9   r5   Ú	Exceptionr:   r/   r   r   ú<module>r\      s¢   ðõ $ß 8Ñ 8Ý å FðØ�S‰Mðàˆs�Cˆj˜( 3™-Ð'Ñ(óð(	 6ð 	¨h¸¸S°zÀ8ÈCÁ=Ð7PÑ.Qó 	÷?ñ ?÷D ñ  ÷:*ñ *ñ ‹:€Ø€Ô ô	�õ 	r   