§
    ŠŠtjD�  ã                   óæ  — d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZmZmZ d dlZd dlZd dlZd dlmc mZ d dlmZ d dlmZ d dlmZmZ d dlmZ erd d	lmZm Z   ej!        e"¦  «        Z# ed
¦  «        Z$	 d dl%Z%de%j&        de'fd„Z(dede
f         dede
f         dz  dede
f         fd„Z)e G d„ d¦  «        ¦   «         Z*dede
f         dddede
f         fd„Z+ G d„ dej        j,        ¦  «        Z- G d„ d¦  «        Z. G d„ d¦  «        Z/dZ0g d¢Z1n# e2$ r	 dZ0g d ¢Z1Y nw xY wd d!l3m4Z5 de6fd"„Z7de8fd#„Z9d,d$„Z: G d%„ d&e¦  «        Z; G d'„ d(e¦  «        Z< e:¦   «          d-d+„Z=dS ).é    N)ÚCallable)Ú	dataclass)ÚAnyÚoverloadÚTYPE_CHECKINGÚTypeVar)ÚTorchDynamoException)Údynamo_timed)ÚArgumentÚTarget)Úsympy_interp)ÚShapeEnvÚTrackedFakeÚ_RÚeÚreturnc                 óê  ‡
‡— t          j        | ¦  «        st          d| › �¦  «        ‚dt           j        dt          t
                   fd„}t          j        | ¦  «        } t          j        | ¦  «        st          d| › �¦  «        ‚t          j	        | ¦  «        st          j
        | ¦  «        r|                      ¦   «         S |                      ¦   «         }|                     ¦   «         Št          |¦  «        } || ¦  «        }‰t           j        k    rd}�n+‰t           j        t           j        fv r2dt           j        dt          t
                   fˆ
ˆfd„Š
 ‰
| ¦  «        }�nß‰t           j        k    rØ|                      ¦   «         dk    r$t          d	|                      ¦   «         › �¦  «        ‚|                      d
¦  «        }t          j        |¦  «        st          d¦  «        ‚|                     ¦   «                              ¦   «         }t           j        dt           j        dt           j        di}||v r||         } ||¦  «        }n÷‰t           j        t           j        fv r‚|                      ¦   «         dk    r$t          d	|                      ¦   «         › �¦  «        ‚t3          |                      d
¦  «        ¦  «        }|                     d¦  «        rd|dd …         z   S |S ‰t           j        k    rK|                      ¦   «         d
k    r$t          d|                      ¦   «         › �¦  «        ‚t          |¦  «        S |dz   d                     |¦  «        z   }	d|	                     ¦   «         › d�S )Nzunsupported expression type: r   r   c                 ó^   ‡ — ˆ fd„t          ‰                      ¦   «         ¦  «        D ¦   «         S )Nc                 óT   •— g | ]$}t          ‰                     |¦  «        ¦  «        ‘Œ%S © )Úz3strÚarg)Ú.0Úir   s     €ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/fx/experimental/validator.pyú
<listcomp>z/z3str.<locals>.get_args_str.<locals>.<listcomp>G   s)   ø€ ÐAÐAÐA¨•E˜!Ÿ%š% ™(œ(‘O”OÐAÐAÐAó    )ÚrangeÚnum_args)r   s   `r   Úget_args_strzz3str.<locals>.get_args_strF   s-   ø€ ØAÐAÐAÐA­U°1·:²:±<´<Ñ-@Ô-@ÐAÑAÔAÐAr   zcan't print Z3 expression: Úpowc                 óþ   •‡ — t          j        ‰ ¦  «        r*‰                      ¦   «                              ¦   «         ‰k    st	          ‰ ¦  «        gS ˆˆ fd„t          ‰                      ¦   «         ¦  «        D ¦   «         S )Nc                 óV   •— g | ]%} ‰‰                      |¦  «        ¦  «        D ]}|‘ŒŒ&S r   )r   )r   r   ÚxÚcollect_str_argsr   s      €€r   r   z3z3str.<locals>.collect_str_args.<locals>.<listcomp>e   sU   ø€ ð ð ð àØ!1Ð!1°!·%²%¸±(´(Ñ!;Ô!;ðð ð ð ðð ð ð r   )Úz3Úis_appÚdeclÚkindr   r   r   )r   r%   r)   s   `€€r   r%   zz3str.<locals>.collect_str_argsa   s|   øø€ Ýœ	 !™œð ¨¯ª©¬¯ª©¬¸DÒ)@Ð)@Ý! !™HœH˜:Ð%ðð ð ð ð å!& q§z¢z¡|¤|Ñ!4Ô!4ðñ ô ð r   é   zExpected 1 arg, got r   zExpected z3 appz!=ú>ú<z(/z(idivé   zExpected 0 args, got ú ú(ú))r&   Úis_exprÚAssertionErrorÚExprRefÚlistÚstrÚsimplifyr'   Ú
ValueErrorÚis_int_valueÚis_rational_valueÚ	as_stringr(   r)   ÚZ3_OP_POWERÚ	Z3_OP_ADDÚ	Z3_OP_MULÚ	Z3_OP_NOTr   r   ÚZ3_OP_EQÚZ3_OP_LEÚZ3_OP_GEÚZ3_OP_TO_INTÚZ3_OP_TO_REALr   Ú
startswithÚZ3_OP_UNINTERPRETEDÚjoinÚrstrip)r   r    r(   ÚopÚargsr   ÚargkindÚlogic_inverseÚargstrÚstringr%   r)   s             @@r   r   r   B   s@  øø€ ÝŒz˜!‰}Œ}ð 	FÝ Ð!DÀÐ!DÐ!DÑEÔEÐEð	B�BœJð 	B­4µ¬9ð 	Bð 	Bð 	Bð 	Bõ
 ŒK˜‰NŒNˆõ Œy˜‰|Œ|ð 	@ÝÐ>¸1Ð>Ð>Ñ?Ô?Ð?åŒ?˜1ÑÔð 	!¥Ô!5°aÑ!8Ô!8ð 	!Ø—;’;‘=”=Ð à�vŠv‰xŒxˆØ�yŠy‰{Œ{ˆÝ�‰YŒYˆØˆ|˜A‰Œˆà•2”>Ò!Ð!ØˆB‰Bà•b”l¥B¤LÐ1Ð1Ð1ð¥B¤Jð µ4½´9ð ð ð ð ð ð ð ð $Ð# AÑ&Ô&ˆD‰Dà•R”\Ò!Ð!ð �zŠz‰|Œ|˜qÒ Ð Ý$Ð%J¸A¿JºJ¹L¼LÐ%JÐ%JÑKÔKÐKØ—%’%˜‘(”(ˆCå”9˜S‘>”>ð 8Ý$Ð%6Ñ7Ô7Ð7Ø—h’h‘j”j—o’oÑ'Ô'ˆGõ ”˜TÝ”˜SÝ”˜SðˆMð ˜-Ð'Ð'Ø" 7Ô+�Ø#�| CÑ(Ô(�øà•b”o¥rÔ'7Ð8Ð8Ð8Ø�zŠz‰|Œ|˜qÒ Ð Ý$Ð%J¸A¿JºJ¹L¼LÐ%JÐ%JÑKÔKÐKÝ˜1Ÿ5š5 ™8œ8‘_”_ˆFð × Ò  Ñ&Ô&ð ,Ø ¨¨¨¤Ñ+Ð+ð ˆMà•RÔ+Ò+Ð+Ø�zŠz‰|Œ|˜qÒ Ð Ý$Ð%K¸Q¿ZºZ¹\¼\Ð%KÐ%KÑLÔLÐLÝ�t‘9”9Ðà�c‘˜CŸHšH T™NœNÑ*ˆØ%�6—=’=‘?”?Ð%Ð%Ð%Ð%r   Úbitwise_func.Ú	bool_funcc                 óv   ‡ ‡— t          j        ‰ ¦  «        dddt          j        dt          fˆ ˆfd„¦   «         }|S )NÚselfÚ_Z3OpsrI   r   c                 ó¤   •— ‰�t          d„ |D ¦   «         ¦  «        r ‰|Ž S t          d„ |D ¦   «         ¦  «        }t          j         ‰|Ž ¦  «        S )Nc              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S ©N)Ú
isinstancer&   ÚBoolRef)r   r   s     r   ú	<genexpr>z/_bitwise_op.<locals>.wrapper.<locals>.<genexpr>¡   s?   è è € ð -ð -Ø03•
˜3¥¤
Ñ+Ô+ð-ð -ð -ð -ð -ð -r   c              3   ó@   K  — | ]}t          j        |d ¦  «        V — ŒdS )é@   N)r&   ÚInt2BV©r   Úas     r   rX   z/_bitwise_op.<locals>.wrapper.<locals>.<genexpr>¦   s.   è è € Ð @Ð @°a¥¤¨1¨bÑ!1Ô!1Ð @Ð @Ð @Ð @Ð @Ð @r   )ÚallÚtupler&   ÚBV2Int)rQ   rI   Úwrapped_argsrN   rO   s      €€r   Úwrapperz_bitwise_op.<locals>.wrapperŸ   sv   ø€ àÐ$­ð -ð -Ø7;ð-ñ -ô -ñ *ô *Ð$ð !�y $Ð'Ð'å Ð @Ð @¸4Ð @Ñ @Ô @Ñ@Ô@ˆLÝ”9˜\˜\¨<Ð8Ñ9Ô9Ð9r   )Ú	functoolsÚwrapsr&   r3   r   )rN   rO   rb   s   `` r   Ú_bitwise_opre   œ   s\   øø€ õ 
Œ˜Ñ	&Ô	&ð	:˜(ð 	:­2¬:ð 	:½#ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ñ 
'Ô	&ð	:ð ˆr   c                   óF  — e Zd ZU ded<   edej        dej        fd„¦   «         Zedej        dej        fd„¦   «         Zdej        dej        fd„Z	d	ej        d
ej        dej        fd„Z
dej        dej        fd„Zd	ej        d
ej        dej        fd„Zdej        dej        fd„Zdej        dej        fd„Zdej        dej        dej        fd„Zdej        dej        dej        fd„Zdej        dej        dej        fd„Zdej        dej        dej        fd„Zdej        dej        fd„Zdej        dej        fd„Zdej        dej        fd„Z eej        ej        ¦  «        Z eej        ej        ¦  «        Z eej        d¦  «        Z eej        d¦  «        ZdS )rR   ÚTranslationValidatorÚ	validatorr$   r   c                 óV   — |                       ¦   «         r| nt          j        | ¦  «        S rU   )Úis_realr&   ÚToReal©r$   s    r   Úto_realz_Z3Ops.to_realº   s!   € àŸ	š	™œÐ5�1�1­¬°1©¬Ð5r   c                 óV   — |                       ¦   «         r| nt          j        | ¦  «        S rU   )Úis_intr&   ÚToIntrl   s    r   Úto_intz_Z3Ops.to_int¿   s!   € àŸš™
œ
Ð3�1�1­¬°©¬Ð3r   rI   c                 ó    — t          |¦  «        S rU   )Úsum)rQ   rI   s     r   Úsym_sumz_Z3Ops.sym_sumÃ   s   € Ý�t‘9”9Ðr   Ú	numeratorÚdenominatorc                 ó¨   — | j                              |dk    ¦  «         t                               |¦  «        t                               |¦  «        z  S ©Nr   )rh   Úadd_assertionrR   rm   ©rQ   ru   rv   s      r   Údivz
_Z3Ops.divÇ   s@   € ØŒN×(Ò(¨¸Ò)9Ñ:Ô:Ð:Ý—>’> )Ñ,Ô,­v¯~ª~¸kÑ/JÔ/JÑJÐJr   Únumberc                 ó6   — t                                |¦  «        S rU   )rR   rq   ©rQ   r|   s     r   Úfloorz_Z3Ops.floorË   s   € å—=’= Ñ(Ô(Ð(r   c                 óê   — |                      ¦   «         p|                      ¦   «         }t                               |                      ||¦  «        ¦  «        }|rt                               |¦  «        n|S rU   )rj   rR   rq   r{   rm   )rQ   ru   rv   Úcast_result_to_realÚresults        r   Úfloordivz_Z3Ops.floordivÑ   se   € ð #,×"3Ò"3Ñ"5Ô"5Ð"N¸×9LÒ9LÑ9NÔ9NÐÝ—]’] 4§8¢8¨I°{Ñ#CÔ#CÑDÔDˆFð .AÐL•6—>’> &Ñ)Ô)Ð)ÀfÐLr   c                 óˆ   — t          j        |                      |¦  «        |k     |                      |dz   ¦  «        |¦  «        S ©Nr*   )r&   ÚIfr   r~   s     r   Úceilz_Z3Ops.ceilÚ   s7   € Ý”5˜Ÿš FÑ+Ô+¨fÒ4°d·j²jÀÈ!ÁÑ6LÔ6LÈfÑUÔUÐUr   c                 ó‚   — t          j        |dk    |                      |¦  «        |                      |¦  «        ¦  «        S rx   )r&   r†   r   r‡   r~   s     r   Útruncz_Z3Ops.truncÝ   s2   € Ý”5˜ 1š d§j¢j°Ñ&8Ô&8¸$¿)º)ÀFÑ:KÔ:KÑLÔLÐLr   r]   Úbc                 ó6   — t          j        ||k    ||¦  «        S rU   ©r&   r†   ©rQ   r]   rŠ   s      r   Úmaxz
_Z3Ops.maxà   ó   € Ý”5˜˜Qš  1Ñ%Ô%Ð%r   c                 ó6   — t          j        ||k     ||¦  «        S rU   rŒ   r�   s      r   Úminz
_Z3Ops.minã   r�   r   ÚpÚqc                 ó:   — ||                       ||¦  «        |z  z
  S rU   )rƒ   ©rQ   r’   r“   s      r   Úmodz
_Z3Ops.modè   s    € Ø�t—}’} Q¨Ñ*Ô*¨QÑ.Ñ.Ð.r   ÚbaseÚexpc                 óv   — | j                              t          j        |dk    |dk    ¦  «        ¦  «         ||z  S rx   )rh   ry   r&   ÚOr©rQ   r—   r˜   s      r   r!   z
_Z3Ops.powë   s6   € àŒN×(Ò(­¬¨t°qªy¸#Àº'Ñ)BÔ)BÑCÔCÐCØ˜‘9Ðr   c                 ó|   — t                                |¦  «        }| j                             |dk    ¦  «         |dz  S )Nr   ç      à?)rR   rm   rh   ry   r~   s     r   Úsqrtz_Z3Ops.sqrtð   s;   € õ —^’^ FÑ+Ô+ˆFð ŒN×(Ò(¨°1ªÑ5Ô5Ð5Ø˜3‘;Ðr   c                 ó*   — t          j        |¦  «        S rU   )r&   ÚAbsr~   s     r   Úabsz
_Z3Ops.absù   s   € Ý”6˜&‘>”>Ð!r   c                 óÚ   — t          j        |                      |t          j        d¦  «        ¦  «        dk    |                      |dz
  ¦  «        |                      |dz   ¦  «        ¦  «        S )Nr-   r�   )r&   r†   r–   ÚIntValr‡   r   r~   s     r   Úround_to_intz_Z3Ops.round_to_intü   s\   € õ ”5Ø—’˜¥¤¨1¡¤Ñ.Ô.°#Ò5Ø—	’	˜& 3™,Ñ'Ô'Ø—
’
˜6 C™<Ñ(Ô(ñô ð r   N) Ú__name__Ú
__module__Ú__qualname__Ú__annotations__Ústaticmethodr&   ÚArithRefrm   rq   rt   r{   r   rƒ   r‡   r‰   rŽ   r‘   r–   r!   rž   r¡   r¤   re   ÚoperatorÚand_ÚAndÚbitwise_andÚor_rš   Ú
bitwise_orÚlshiftÚrshiftr   r   r   rR   rR   °   s  € € € € € € ð *Ð)Ð)Ñ)ð 
ð	6�r”{ð 	6 r¤{ð 	6ð 	6ð 	6ñ 
Œð	6ð 
ð	4�b”kð 	4 b¤kð 	4ð 	4ð 	4ñ 
Œð	4ð	 ¤ð 	°´ð 	ð 	ð 	ð 	ð	K ¤ð 	K¸2¼;ð 	KÈ2Ì;ð 	Kð 	Kð 	Kð 	Kð	) ¤ð 	)°´ð 	)ð 	)ð 	)ð 	)ð	MØœ[ð	MØ79´{ð	MàŒ[ð	Mð 	Mð 	Mð 	Mð	V˜rœ{ð 	V¨r¬{ð 	Vð 	Vð 	Vð 	Vð	M ¤ð 	M°´ð 	Mð 	Mð 	Mð 	Mð	&˜œð 	&¨¬ð 	&¸¼ð 	&ð 	&ð 	&ð 	&ð	&˜œð 	&¨¬ð 	&¸¼ð 	&ð 	&ð 	&ð 	&ð
	/˜œð 	/¨¬ð 	/¸¼ð 	/ð 	/ð 	/ð 	/ð	˜BœKð 	¨b¬kð 	¸b¼kð 	ð 	ð 	ð 	ð
	˜rœ{ð 	¨r¬{ð 	ð 	ð 	ð 	ð	"˜bœkð 	"¨b¬kð 	"ð 	"ð 	"ð 	"ð	 r¤{ð 	°r´{ð 	ð 	ð 	ð 	ð "�k (¤-°´Ñ8Ô8ˆØ �[ ¤¨r¬uÑ5Ô5ˆ
Ø�˜Xœ_¨dÑ3Ô3ˆØ�˜Xœ_¨dÑ3Ô3ˆˆˆr   rR   rH   rh   rg   c                 ó  ‡— t           j        h}| |v Šdt          dt          f         dt          dt          f         fˆfd„}t	          |¦  «        }i t           j         |t
          j        ¦  «        “t           j         ||j        ¦  «        “t           j	         ||j
        ¦  «        “t           j         ||j        ¦  «        “t           j         ||j        ¦  «        “t           j         ||j        ¦  «        “t           j         ||j        ¦  «        “t           j         ||j        ¦  «        “t           j         ||j        ¦  «        “t$          j         ||j        ¦  «        “t*          j         ||j        ¦  «        “t*          j         ||j        ¦  «        “t*          j         ||j        ¦  «        “t2          j         ||j        ¦  «        “t2          j         ||j        ¦  «        “t2          j         ||j        ¦  «        “t2          j          ||j         ¦  «        “t2          j!         |d„ ¦  «        t2          j"         ||j#        ¦  «        t2          j$        t2          j$        i¥}| |v r||          n
 || ¦  «        S )NÚfunc.r   c                 óœ   •‡ ‡— dt           dt          j        fˆfd„Št          j        ‰ ¦  «        dt           dt
          fˆ ˆfd„¦   «         }|S )Nr]   r   c                 ó4  •— t          | t          j        t          j        f¦  «        r| S t          | t          ¦  «        s‰r6t          | t
          ¦  «        r!t          j        t	          | ¦  «        ¦  «        S t          | t
          t          j        f¦  «        r!t          j	        t          | ¦  «        ¦  «        S t          | t          t          j        f¦  «        r!t          j        t          | ¦  «        ¦  «        S t          dt          | ¦  «        › �¦  «        ‚)Nzcan't lift type: )rV   r&   rª   rW   ÚboolÚintÚBoolValÚsympyÚIntegerr£   ÚfloatÚFloatÚRealValr7   Útype)r]   Úas_bools    €r   Úwrapz z3op.<locals>.lift.<locals>.wrap$  sà   ø€ Ý˜a¥"¤+­r¬zÐ!:Ñ;Ô;ð Ø�Hõ ˜a¥Ñ&Ô&ð /¨7ð /µzÀ!ÅSÑ7IÔ7Ið /Ýœ:¥d¨1¡g¤gÑ.Ô.Ð.Ý˜a¥#¥u¤}Ð!5Ñ6Ô6ð -Ýœ9¥S¨¡V¤VÑ,Ô,Ð,Ý˜a¥%­¬Ð!5Ñ6Ô6ð 0Ýœ:¥e¨A¡h¤hÑ/Ô/Ð/Ý Ð!>µT¸!±W´WÐ!>Ð!>Ñ?Ô?Ð?r   rI   c                  óô   •— t          | ¦  «        dk    rEt          | d         t          t          f¦  «        r#t          ˆfd„| d         D ¦   «         ¦  «        f}nt          ˆfd„| D ¦   «         ¦  «        } ‰|Ž S )Nr*   r   c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S rU   r   ©r   r]   rÁ   s     €r   rX   z6z3op.<locals>.lift.<locals>.wrapper.<locals>.<genexpr>5  s+   øè è € Ð)CÐ)C°a¨$¨$¨q©'¬'Ð)CÐ)CÐ)CÐ)CÐ)CÐ)Cr   c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S rU   r   rÄ   s     €r   rX   z6z3op.<locals>.lift.<locals>.wrapper.<locals>.<genexpr>7  s+   øè è € Ð(?Ð(?°Q¨¨¨a©¬Ð(?Ð(?Ð(?Ð(?Ð(?Ð(?r   )ÚlenrV   r4   r_   )rI   ra   r´   rÁ   s     €€r   rb   z#z3op.<locals>.lift.<locals>.wrapper1  s„   ø€ õ �t‘9”9 ’>�>¥j°°a´½4Å¸-Ñ&HÔ&H�>Ý$)Ð)CÐ)CÐ)CÐ)C¸4À¼7Ð)CÑ)CÔ)CÑ$CÔ$CÐ#E�L�Lå#(Ð(?Ð(?Ð(?Ð(?¸$Ð(?Ñ(?Ô(?Ñ#?Ô#?�Là�t˜\Ð*Ð*r   )Úobjectr&   r3   rc   rd   r   )r´   rb   rÁ   rÀ   s   ` @€r   Úliftzz3op.<locals>.lift#  sŠ   øøø€ ð@�ð @¥2¤:ð @ð @ð @ð @ð @ð @õ Œ_˜TÑ"Ô"ð+�vð +­#ð +ð +ð +ð +ð +ð +ñ #Ô"ð+ð ˆNr   c                 ó.   — t          j        | ||¦  «        S rU   rŒ   )rŠ   ÚtÚfs      r   ú<lambda>zz3op.<locals>.<lambda>S  s   € µ´°a¸¸A±´€ r   )%r«   Únot_r   r   rR   r&   ÚNotr¬   r®   r¯   r°   r±   r²   rƒ   Útruedivr{   r–   r¡   ÚbuiltinsÚroundr¤   Úmathr‡   r   r‰   ÚtorchÚ	sym_floatrm   Úsym_maxrŽ   Úsym_minr‘   rt   Úsym_iteÚ	_sym_sqrtrž   Ú_assert)rH   rh   Úboolean_opsrÈ   ÚopsÚreplacement_maprÀ   s         @r   Úz3oprÝ     sv  ø€ õ  ”}�oˆØ˜Ð#ˆð	•x ¥R Ô(ð 	­X°c½2°gÔ->ð 	ð 	ð 	ð 	ð 	ð 	õ4 �YÑÔˆð
åŒM˜4˜4¥¤™<œ<ð
õ ŒM˜4˜4 ¤Ñ0Ô0ð
õ ŒL˜$˜$˜sœ~Ñ.Ô.ð	
õ
 ŒO˜T˜T #¤*Ñ-Ô-ð
õ ŒO˜T˜T #¤*Ñ-Ô-ð
õ Ô˜t˜t C¤LÑ1Ô1ð
õ Ô˜d˜d 3¤7™mœmð
õ ŒL˜$˜$˜sœw™-œ-ð
õ ŒL˜$˜$˜sœw™-œ-ð
õ ŒN˜D˜D Ô!1Ñ2Ô2ð
õ ŒI�t�t˜CœH‘~”~ð
õ ŒJ˜˜˜SœY™œð
õ ŒJ˜˜˜SœY™œð
õ" ŒO˜T˜T #¤+Ñ.Ô.ð#
õ$ ŒM˜4˜4 ¤™=œ=ð%
õ& ŒM˜4˜4 ¤™=œ=ð'
õ( ŒM˜4˜4 ¤Ñ,Ô,ð)
õ* ŒM˜4˜4Ð >Ð >Ñ?Ô?ÝŒO˜T˜T #¤(™^œ^õ ŒM�5œ=ð3
ð 
ˆð6 ')¨OÐ&;Ð&;ˆ˜rÔ"Ð"ÀÀÀbÁÄÐIr   c                   ó´   ‡ — e Zd Zdej        j        ddddfˆ fd„Zdedee	d	f         d
e
eef         defd„Zdedee	d	f         d
e
eef         defˆ fd„Zˆ xZS )ÚPopulateValidatorÚgraphrh   rg   r   Nc                 óž   •— || _         t          j                             i |¬¦  «        }t	          ¦   «                              |d¬¦  «         d S )N)Úrootrà   T)Úgarbage_collect_values)rh   rÓ   ÚfxÚGraphModuleÚsuperÚ__init__)rQ   rà   rh   ÚmoduleÚ	__class__s       €r   rç   zPopulateValidator.__init__e  sK   ø€ ð 'ˆDŒNõ ”X×)Ò)¨r¸Ð)Ñ?Ô?ˆFÝ‰GŒG×Ò˜V¸DÐÑAÔAÐAÐAÐAr   ÚtargetrI   .Úkwargsc                 óh   — t          j        ¦   «         d         }| j                             |¦  «        S )NÚsymbol)Úfx_tracebackÚget_current_metarh   Úz3var)rQ   rê   rI   rë   rí   s        r   ÚplaceholderzPopulateValidator.placeholdero  s-   € õ "Ô2Ñ4Ô4°XÔ>ˆFØ”>×'Ò'¨Ñ/Ô/Ð/r   c                 ó6  •— |t           j        ur6t          ¦   «                              t	          || j        ¦  «        ||¦  «        S t          |¦  «        dk    r t          dt          |¦  «        › d�¦  «        ‚| j                             |d         ¦  «         d S )Nr*   z'expected 1 argument on assertion. Got: r.   r   )	rÓ   rÙ   ræ   Úcall_functionrÝ   rh   rÆ   r2   Úadd_source_expr)rQ   rê   rI   rë   ré   s       €r   ró   zPopulateValidator.call_functionu  s”   ø€ ð �Uœ]Ð*Ð*å‘w”w×,Ò,­T°&¸$¼.Ñ-IÔ-IÈ4ÐQWÑXÔXÐXõ �4‰yŒy˜AŠ~ˆ~Ý$ØJ½cÀ$¹i¼iÐJÐJÐJñô ð ð ŒN×*Ò*¨4°¬7Ñ3Ô3Ð3Ð3Ð3r   )r¥   r¦   r§   rÓ   rä   ÚGraphrç   r   r_   r   Údictr5   r   rñ   ró   Ú__classcell__)ré   s   @r   rß   rß   d  sø   ø€ € € € € ð	BØœœð	BØ4Jð	Bàð	Bð 	Bð 	Bð 	Bð 	Bð 	Bð	0Ø ð	0Ø(-¨h¸¨mÔ(<ð	0ØFJÈ3ÐPSÈ8Änð	0àð	0ð 	0ð 	0ð 	0ð	4Ø ð	4Ø(-¨h¸¨mÔ(<ð	4ØFJÈ3ÐPSÈ8Änð	4àð	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4r   rß   c                   ó  — e Zd Zh d£Z	 	 	 	 d"d„Zdeez  ez  dej	        de
j        fd	„Zd
e
j        dej	        de
j        fd„Zd
e
j        dej	        de
j        fd„Zd
e
j        dej	        de
j        fd„Zde
j        de
j        de
j        fd„Zde
j        de
j        de
j        fd„Zde
j        de
j        de
j        fd„Zde
j        de
j        de
j        fd„Zde
j        de
j        de
j        fd„Zde
j        de
j        de
j        fd„Zde
j        de
j        de
j        fd„Zde
j        de
j        de
j        fd„Zd
e
j        dej	        de
j        fd„Zd
e
j        dej	        de
j        fd„Zdedefd„Zd ej        de
j        fd!„Z dS )#Ú	SympyToZ3>   ÚeqÚgeÚgtÚleÚltÚneÚaddÚmulrh   rg   r   Nc                 óF   — || _         t          | j         ¦  «        | _        d S rU   )Ú
_validatorrR   Ú_ops)rQ   rh   s     r   rç   zSympyToZ3.__init__Œ  s    € ð (ˆDŒOÝ˜tœÑ/Ô/ˆDŒIˆIˆIr   ÚvalueÚdtypec                 ó@  — |t           j        u r!t          j        t	          |¦  «        ¦  «        S |t           j        u r!t          j        t          |¦  «        ¦  «        S |t           j        u r!t          j	        t          |¦  «        ¦  «        S t          d|› �¦  «        ‚)Nzunsupported dtype (SympyToZ3): )rÓ   Úint64r&   r£   r¸   Údoubler¾   r¼   r·   r¹   r7   )rQ   r  r  s      r   ÚconstantzSympyToZ3.constant“  s‚   € à�œÐ#Ð#Ý”y¥ U¡¤Ñ,Ô,Ð,Ø�œÐ$Ð$Ý”z¥%¨¡,¤,Ñ/Ô/Ð/Ø�œ
Ð"Ð"Ý”z¥$ u¡+¤+Ñ.Ô.Ð.ÝÐF¸uÐFÐFÑGÔGÐGr   r$   c                 óp   — |t           j        k    rt          j        |¦  «        S t	          d|› d�¦  «        ‚)Nz	to_dtype z NYI)rÓ   Úfloat64r&   rk   ÚNotImplementedError©rQ   r$   r  s      r   Úto_dtypezSympyToZ3.to_dtype�  s7   € Ø�œÒ%Ð%Ý”y ‘|”|Ð#Ý%Ð&=°%Ð&=Ð&=Ð&=Ñ>Ô>Ð>r   c                 ó*   — t          j        |¦  «        S rU   )r&   rp   r  s      r   Útrunc_to_intzSympyToZ3.trunc_to_int¢  s   € Ý”8˜A‘;”;Ðr   c                 ó6   — | j                              |¦  «        S rU   )r  r¤   r  s      r   r¤   zSympyToZ3.round_to_int¥  s   € Ø”9×)Ò)¨!Ñ,Ô,Ð,r   ru   rv   c                 ó8   — | j                              ||¦  «        S rU   ©r  r{   rz   s      r   Úint_truedivzSympyToZ3.int_truediv¨  ó   € ð ”9—=’= ¨KÑ8Ô8Ð8r   c                 ó8   — | j                              ||¦  «        S rU   r  rz   s      r   rÏ   zSympyToZ3.truediv­  r  r   c                 ó8   — | j                              ||¦  «        S rU   ©r  rƒ   rz   s      r   rƒ   zSympyToZ3.floordiv²  s   € ð ”9×%Ò% i°Ñ=Ô=Ð=r   c                 ó8   — | j                              ||¦  «        S rU   r  rz   s      r   r{   zSympyToZ3.div·  s   € Ø”9×%Ò% i°Ñ=Ô=Ð=r   r—   r˜   c                 ó8   — | j                              ||¦  «        S rU   ©r  r!   r›   s      r   r!   zSympyToZ3.powº  ó   € Ø”9—=’=  sÑ+Ô+Ð+r   c                 ó8   — | j                              ||¦  «        S rU   r  r›   s      r   Úpow_by_naturalzSympyToZ3.pow_by_natural½  r  r   r’   r“   c                 ó8   — | j                              ||¦  «        S rU   ©r  r–   r•   s      r   r–   zSympyToZ3.modÀ  ó   € Ø”9—=’=  AÑ&Ô&Ð&r   c                 ó8   — | j                              ||¦  «        S rU   r!  r•   s      r   Ú
python_modzSympyToZ3.python_modÃ  r"  r   c                 ó6   — | j                              |¦  «        S rU   )r  r‡   r  s      r   Úceil_to_intzSympyToZ3.ceil_to_intÆ  s   € Ø”9—>’> !Ñ$Ô$Ð$r   c                 ó6   — | j                              |¦  «        S rU   )r  r   r  s      r   Úfloor_to_intzSympyToZ3.floor_to_intÉ  s   € Ø”9—?’? 1Ñ%Ô%Ð%r   Únamec                 ór  — t           j        t           j        t           j        | j        j        | j        j        | j        j        | j        j        | j        j	        | j        j
        | j        j        | j        j        dœ}||v r||         S || j        v rt          t          |¦  «        S t!          d|› �¦  «        ‚)N)r¬   r¯   rÍ   r®   r°   r±   r²   r   r‡   ÚminimumÚmaximumzunhandled operator: )r&   r­   rš   rÎ   r  r®   r°   r±   r²   r   r‡   r‘   rŽ   ÚOPERATOR_HANDLESÚgetattrr«   ÚAttributeError)rQ   r)  ÚREPLACEMENTs      r   Ú__getattr__zSympyToZ3.__getattr__Ì  s¦   € åœÝ”uÝœØ#œyÔ4Ø"œiÔ2Øœ)Ô*Øœ)Ô*ØœœØœ	œØœ9œ=Øœ9œ=ðð ˆKð �{Ð"Ð"Ø" 4Ô(Ð(Ø�tÔ,Ð,Ð,Ý�x¨Ñ.Ô.Ð.Ý Ð!>¸Ð!>Ð!>Ñ?Ô?Ð?r   Úexprc                 ó8   — t          | | j        j        |¦  «        S rU   )r   r  Úsymbols)rQ   r2  s     r   ÚrunzSympyToZ3.runá  s   € Ý  d¤oÔ&=¸tÑDÔDÐDr   )rh   rg   r   N)!r¥   r¦   r§   r-  rç   r¸   r¼   r·   rÓ   r  r&   r3   r
  rª   r  r  r¤   r  rÏ   rƒ   r{   r!   r  r–   r$  r&  r(  r5   r   r1  rº   ÚBasicr5  r   r   r   rù   rù   ‰  sE  € € € € € ØMÐMÐMÐð	0à-ð	0ð ð	0ð 	0ð 	0ð 	0ð	H #¨¡+°Ñ"4ð 	H¸U¼[ð 	HÈRÌZð 	Hð 	Hð 	Hð 	Hð	?˜bœkð 	?°%´+ð 	?À"Ä+ð 	?ð 	?ð 	?ð 	?ð
	 "¤+ð 	°e´kð 	ÀbÄkð 	ð 	ð 	ð 	ð	- "¤+ð 	-°e´kð 	-ÀbÄkð 	-ð 	-ð 	-ð 	-ð	9Øœ[ð	9Ø79´{ð	9àŒ[ð	9ð 	9ð 	9ð 	9ð
	9Øœ[ð	9Ø79´{ð	9àŒ[ð	9ð 	9ð 	9ð 	9ð
	>Øœ[ð	>Ø79´{ð	>àŒ[ð	>ð 	>ð 	>ð 	>ð
	> ¤ð 	>¸2¼;ð 	>È2Ì;ð 	>ð 	>ð 	>ð 	>ð	,˜BœKð 	,¨b¬kð 	,¸b¼kð 	,ð 	,ð 	,ð 	,ð	, r¤{ð 	,¸¼ð 	,ÈÌð 	,ð 	,ð 	,ð 	,ð	'˜œð 	'¨¬ð 	'¸¼ð 	'ð 	'ð 	'ð 	'ð	' ¤ð 	'°´ð 	'ÀÄð 	'ð 	'ð 	'ð 	'ð	% ¤ð 	%°U´[ð 	%ÀRÄ[ð 	%ð 	%ð 	%ð 	%ð	& "¤+ð 	&°e´kð 	&ÀbÄkð 	&ð 	&ð 	&ð 	&ð	@ Cð 	@¨Cð 	@ð 	@ð 	@ð 	@ð*	E˜EœKð 	E¨B¬Jð 	Eð 	Eð 	Eð 	Eð 	Eð 	Er   rù   c                   óü   — e Zd Zdd„Zdej        dej        fd„Zdej        de	dej        fd„Z
dej        ddfd	„Zdej        dej        fd
„Zdej        ddfd„Zdd„Zdej        ej        z  ddfd„Zdd„Zdd„ZdS )rg   r   Nc                 óº   — t                                d¦  «         i | _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _        d S )Nznew instance)ÚlogÚdebugr4  ÚsetÚ_source_exprsÚ_target_exprsÚ_assertions©rQ   s    r   rç   zTranslationValidator.__init__ó  sM   € Ý�IŠI�nÑ%Ô%Ð%ð <>ˆDŒLõ
 36±%´%ˆDÔõ
 36±%´%ˆDÔõ 14±´ˆDÔÐÐr   rí   c                 óR   — || j         vrt          d|› �¦  «        ‚| j         |         S )NzZ3 variable not found for: )r4  r2   )rQ   rí   s     r   rð   zTranslationValidator.z3var  s3   € Ø˜Tœ\Ð)Ð)Ý$Ð%KÀ6Ð%KÐ%KÑLÔLÐLØ”< Ô'Ð'r   r¿   c                 óÒ  — || j         v r| j         |         S t                               d|j        |j        ¦  «         |t
          u r?t          j        |j        ¦  «        }|j        r| j	         
                    |dk    ¦  «         nX|t          u rt          j        |j        ¦  «        }n5|t          u rt          j        |j        ¦  «        }nt          d|› �¦  «        ‚|| j         |<   |S )Nznew variable: %s (%s)r   z"unsupported type for Z3 variable: )r4  r9  r:  r)  r¥   r¸   r&   ÚIntÚis_positiver=  r   r¼   ÚRealr·   ÚBoolÚRuntimeError)rQ   rí   r¿   Úvars       r   Úadd_varzTranslationValidator.add_var  sÚ   € Ø˜œÐ%Ð%Ø”| FÔ+Ð+å�IŠIÐ-¨v¬{¸D¼MÑJÔJÐJà•sˆ{ˆ{Ý”f˜Vœ[Ñ)Ô)�ð Ô%ð 4ØÔ&×*Ò*¨3°ª7Ñ3Ô3Ð3øØ���Ý”g˜fœkÑ*Ô*��Ø���Ý”g˜fœkÑ*Ô*��å"Ð#NÈÐ#NÐ#NÑOÔOÐOà#&ˆDŒL˜Ñ ØˆJr   r   c                 ó¶   — |j         D ]P}t          |t          j        ¦  «        st	          dt          |¦  «        › �¦  «        ‚|                      |¦  «         ŒQd S )NzExpected sympy.Symbol, got )Úfree_symbolsrV   rº   ÚSymbolr2   r¿   rð   )rQ   r   Úss      r   Ú_check_freesymbolsz'TranslationValidator._check_freesymbols&  sb   € Ø”^ð ð �Ý! !¥U¤\Ñ2Ô2ð RÝ(Ð)PÅtÈAÁwÄwÐ)PÐ)PÑQÔQÐQð —
’
˜1‘”��ðð r   c                 ó¢   — t          | ¦  «                             |¦  «        }t          |t          j        ¦  «        st          d|› �¦  «        ‚|S )Nz"expected boolean expression. Got: )rù   r5  rV   r&   rW   r2   ©rQ   r   Úz3exprs      r   Úto_z3_boolean_exprz'TranslationValidator.to_z3_boolean_expr.  sL   € Ý˜t‘_”_×(Ò(¨Ñ+Ô+ˆFÝ˜f¥b¤jÑ1Ô1ð TÝ$Ð%RÈ&Ð%RÐ%RÑSÔSÐSØˆMr   c                 óœ   — || j         vr(t                               dt          |¦  «        ¦  «         | j                              |¦  «         d S )Nzadd source guard: %s)r<  r9  r:  r   r   )rQ   r   s     r   rô   z$TranslationValidator.add_source_expr4  sH   € Ø˜Ô*Ð*Ð*Ý—	’	Ð0µ%¸±(´(Ñ;Ô;Ð;ØÔ×"Ò" 1Ñ%Ô%Ð%Ð%Ð%r   úsympy.logic.boolalg.Booleanc                 óð   — |                       |¦  «         |                      |¦  «        }|| j        vr(t                               dt          |¦  «        ¦  «         | j                             |¦  «         d S )Nzadd target guard: %s)rM  rQ  r=  r9  r:  r   r   rO  s      r   Úadd_target_exprz$TranslationValidator.add_target_expr9  so   € Ø×#Ò# AÑ&Ô&Ð&Ø×,Ò,¨QÑ/Ô/ˆFØ˜Ô*Ð*Ð*Ý—	’	Ð0µ%¸±-´-Ñ@Ô@Ð@ØÔ×"Ò" 6Ñ*Ô*Ð*Ð*Ð*r   c                 óœ  — t          |t          j        ¦  «        r+|                      |¦  «         |                      |¦  «        }n|}t          |t
          j        ¦  «        st          dt          |¦  «        › �¦  «        ‚|| j	        vr(t                               dt          |¦  «        ¦  «         | j	                             |¦  «         d S )NzExpected z3.BoolRef, got zadd assertion: %s)rV   rº   r6  rM  rQ  r&   rW   r2   r¿   r>  r9  r:  r   r   )rQ   r   Úrefs      r   ry   z"TranslationValidator.add_assertion@  s¼   € Ý˜!�Uœ[Ñ)Ô)ð Ø×'Ò'¨Ñ*Ô*Ð*Ø×-Ò-¨aÑ0Ô0��à�Ý˜c¥2¤:Ñ.Ô.ð NÝ$Ð%LÅÀcÁÄÐ%LÐ%LÑMÔMÐMØ˜$Ô*Ð*Ð*Ý—	’	Ð-­u°S©z¬zÑ:Ô:Ð:ØÔ× Ò  Ñ%Ô%Ð%Ð%Ð%r   c                 ó|   — t          d¦  «        5  |                      ¦   «         cd d d ¦  «         S # 1 swxY w Y   d S )NzTranslationValidator.validate)r
   Ú	_validater?  s    r   ÚvalidatezTranslationValidator.validateL  s‚   € ÝÐ=Ñ>Ô>ð (ð (Ø—~’~Ñ'Ô'ð(ð (ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð (ð (s   �1±5¸5c                 ót  ‡— t          | j        ¦  «        dk    st          | j        ¦  «        dk    rd S t          j        d¦  «        }|                     t          ¦   «         ¬¦  «         | j        D ]}|                     |¦  «         Œ|                     t          j	        t          j
        | j        Ž ¦  «        ¦  «          |j        | j        Ž  t                               d¦  «         |                     ¦   «         }|t          j        k    rB|                     ¦   «         Št!          ‰| j        | j        ˆfd„| j        D ¦   «         ¬¦  «        ‚|t          j        k    rt                               d¦  «         d S |t          j        k    rt)          d|› �¦  «        ‚t                               d	¦  «         d S )
Nr   ÚQF_NRA)Útimeoutztranslation validation: startc                 ó>   •— g | ]}‰                      |¦  «        °|‘ŒS r   )Úevaluate)r   ÚinpÚmodels     €r   r   z2TranslationValidator._validate.<locals>.<listcomp>w  s;   ø€ ð )ð )ð )Ø #ÀÇÂÐPSÑATÔATð)Øð)ð )ð )r   )Úfailed_source_exprsz:translation validation: could not validate: got z3.unknownzExpected z3.unsat, got ztranslation validation: success)rÆ   r<  r=  r&   Ú	SolverForr;  Útranslation_validation_timeoutr>  r   rÎ   r­   r9  r:  ÚcheckÚsatra  ÚValidationExceptionÚunknownÚwarningÚunsatr2   )rQ   ÚsolverÚ	assertionÚrra  s       @r   rY  zTranslationValidator._validateP  s¼  ø€ Ý�4Ô%Ñ&Ô&¨!Ò+Ð+­s°4Ô3EÑ/FÔ/FÈ!Ò/KÐ/Kð �tõ ”\ (Ñ+Ô+ˆFà�JŠJÕ=Ñ?Ô?ˆJÑ@Ô@Ð@ð "Ô-ð &ð &�	Ø—
’
˜9Ñ%Ô%Ð%Ð%ð �JŠJ•r”v�bœf dÔ&8Ð9Ñ:Ô:Ñ;Ô;Ð;ØˆFŒJ˜Ô*Ð+Ð+å�IŠIÐ5Ñ6Ô6Ð6Ø—’‘”ˆAØ•B”FŠ{ˆ{ð Ÿš™œ�Ý)ØØÔ$ØÔ&ð)ð )ð )ð )Ø'+Ô'9ð)ñ )ô )ð	ñ ô ð ð �œ
’?�?õ —K’KØTñô ð ð ð ð
 �BœH’}�}Ý,Ð-JÀqÐ-JÐ-JÑKÔKÐKÝ—I’IÐ?Ñ@Ô@Ð@Ð@Ð@r   ©r   N)r   rS  r   N)r¥   r¦   r§   rç   rº   rK  r&   r3   rð   r¿   rH  r6  rM  rW   rQ  rô   rU  ry   rZ  rY  r   r   r   rg   rg   ò  sV  € € € € € ð	6ð 	6ð 	6ð 	6ð*	( ¤ð 	(°´ð 	(ð 	(ð 	(ð 	(ð	 %¤,ð 	°dð 	¸r¼zð 	ð 	ð 	ð 	ð0	¨¬ð 	¸ð 	ð 	ð 	ð 	ð	¨¬ð 	¸¼
ð 	ð 	ð 	ð 	ð	& R¤Zð 	&°Dð 	&ð 	&ð 	&ð 	&ð
	+ð 	+ð 	+ð 	+ð
	& 2¤:°´Ñ#;ð 
	&Àð 
	&ð 
	&ð 
	&ð 
	&ð	(ð 	(ð 	(ð 	(ð7	Að 7	Að 7	Að 7	Að 7	Að 7	Ar   T)	r   rÝ   rß   rù   rg   Útranslation_validation_enabledrd  rg  ÚBisectValidationExceptionF)ro  rd  rg  rp  )Ú_configc                  óD   — t          ¦   «          t          ot          j        S rU   )Ú_assert_z3_installed_if_tv_setÚ_HAS_Z3ÚconfigÚtranslation_validationr   r   r   ro  ro  ¥  s   € õ #Ñ$Ô$Ð$ÝÐ4•vÔ4Ð4r   c                  ó   — t           j        S rU   )ru  rd  r   r   r   rd  rd  ¬  s   € ÝÔ0Ð0r   c                  óN   — t           st          j        rt          d¦  «        ‚d S d S )Nzotranslation validation requires Z3 package. Please, either install z3-solver or disable translation validation.)rt  ru  rv  r2   r   r   r   rs  rs  °  s?   € Ýð 
�6Ô8ð 
Ýð;ñ
ô 
ð 	
ð
ð 
ð 
ð 
r   c            
       ó6   — e Zd Zdededededdf
d„Zdefd„ZdS )	rg  ra  Ú
assertionsÚtarget_exprsrb  r   Nc                 ó  ‡— t           st          d¦  «        ‚dt          dt          fˆfd„}dt          dt          fd„} |t	          t          |‰¦  «        ¦  «        ¦  «        } |t	          t          t          |¦  «        ¦  «        ¦  «        } |t	          t          t          |¦  «        ¦  «        ¦  «        }	 |t	          t          t          |¦  «        ¦  «        ¦  «        }
d| _        d|› d	|› d
|	› d|
› �| _        d S )NzZ3 is requiredÚsymr   c                 ó   •— | › d‰|          › �S )Nú: r   )r}  ra  s    €r   Ú	symbolstrz/ValidationException.__init__.<locals>.symbolstr¿  s   ø€ ØÐ)Ð)˜U 3œZÐ)Ð)Ð)r   Úxsc                 ó@   — d                      d„ | D ¦   «         ¦  «        S )Nú
c              3   ó    K  — | ]	}d |› �V — Œ
dS )z  ==> Nr   )r   r$   s     r   rX   zBValidationException.__init__.<locals>.joinlines.<locals>.<genexpr>Ã  s(   è è € Ð6Ð6¨a˜\ a˜\˜\Ð6Ð6Ð6Ð6Ð6Ð6r   )rF   )r�  s    r   Ú	joinlinesz/ValidationException.__init__.<locals>.joinlinesÂ  s#   € Ø—9’9Ð6Ð6°2Ð6Ñ6Ô6Ñ6Ô6Ð6r   ztranslation validation failed.zModel:
z

Assertions:
z

Target Expressions:
z

Failed Source Expressions:
)	rt  r2   r   r5   ÚsortedÚmapr   ÚmsgÚdetails)rQ   ra  rz  r{  rb  r€  r…  Ú	model_strÚassertions_strÚtarget_exprs_strÚfailed_source_exprs_strs    `         r   rç   zValidationException.__init__¹  sA  ø€ õ ð 	3Ý Ð!1Ñ2Ô2Ð2ð	*�3ð 	*¥3ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð	7�#ð 	7¥#ð 	7ð 	7ð 	7ð 	7ð �I�f¥S¨°EÑ%:Ô%:Ñ;Ô;Ñ<Ô<ˆ	Ø"˜¥6­#­e°ZÑ*@Ô*@Ñ#AÔ#AÑBÔBˆØ$˜9¥V­Cµ°|Ñ,DÔ,DÑ%EÔ%EÑFÔFÐØ"+ )­Fµ3µuÐ>QÑ3RÔ3RÑ,SÔ,SÑ"TÔ"TÐà3ˆŒðà
ðð ð
 ðð ð ðð ð ðð ˆŒˆˆr   c                 ó$   — | j         › d| j        › �S ©Nú

©rˆ  r‰  r?  s    r   Ú__str__zValidationException.__str__Ø  ó   € Ø”(Ð.Ð. ¤Ð.Ð.Ð.r   )r¥   r¦   r§   r   rç   r5   r’  r   r   r   rg  rg  ¸  sk   € € € € € ðØðØ&)ðØ9<ðØSVðà	ðð ð ð ð>/˜ð /ð /ð /ð /ð /ð /r   rg  c            
       óT   — e Zd Zdedej        dedej        j	        ddf
d„Z
defd„ZdS )	rp  Úvalidation_excr2  Úfailed_actionÚtraced_noder   Nc                 óh   — d|› d|› �| _         d|                     ¦   «         › d|j        › �| _        d S )Nz#translation validation failed when r  z)Failure occurred while running node:
    r�  )rˆ  Úformat_noder‰  )rQ   r•  r2  r–  r—  s        r   rç   z"BisectValidationException.__init__Ý  sT   € ð Q¸ÐPÐPÈ$ÐPÐPˆŒðà×ÒÑÔðð ð Ôð	ð ˆŒˆˆr   c                 ó$   — | j         › d| j        › �S r�  r‘  r?  s    r   r’  z!BisectValidationException.__str__ë  r“  r   )r¥   r¦   r§   rg  rº   r6  r5   rÓ   rä   ÚNoderç   r’  r   r   r   rp  rp  Ü  sy   € € € € € ðà+ðð Œkðð ð	ð
 ”X”]ðð 
ðð ð ð ð/˜ð /ð /ð /ð /ð /ð /r   rp  Ú	shape_envr   c           	      ó<  ‡‡‡‡‡‡— ddl mŠmŠm} ddlm}m}mŠ | j        Šdt          j
        j        d|fˆˆfd„}t          d|dt          dt          fd	„¦   «         Št          d|dt          j        dt          j        fd
„¦   «         Št          d|dt          j        dt          j        fd„¦   «         Št          d|d‰d‰fd„¦   «         Šd|dt          t          j        z  t          j        z  ‰z  dt          t          j        z  t          j        z  ‰z  fˆˆfd„Šd|dt           d         d z  dt"          d z  fˆfd„Šdt          j
        j        dt"          d z  fˆˆˆˆfd„} ‰| |                      ¦   «         ¦  «        }|st&                               d¦  «         d S | j        rt,          j        r|‚i }d„ | j        j        D ¦   «         }ddt5          |¦  «        dz
  }}
}	 |||         ¦  «        ||<   |	|k     rY|	|z   dz  }
||
         }t&                               d|
 ||¦  «        ¦  «          ||¦  «        ||
<   ||
         r|
}n|
dz   }	|	|k     °Y|	|v rt9          ||	         t"          ¦  «        st;          d¦  «        ‚||	         }||	         } ||¦  «        }|                     ¦   «         rd}n(|                     ¦   «         st;          d|› �¦  «        ‚d}|j         }|€t;          d¦  «        ‚t5          |¦  «        dk     r't;          d|j!        › dt5          |¦  «        › �¦  «        ‚t9          |d         tD          j#        ¦  «        s-t;          d|j!        › dtI          |d         ¦  «        › �¦  «        ‚tK          ||d         ||j&        |         ¬¦  «        ‚) Nr   )ÚFakeTensorMetaÚreplay_shape_env_eventsÚShapeEnvEvent)ÚCURRENT_NODE_KEYr   ÚSHAPEENV_EVENT_KEYÚnoder   c                 óZ   •— ‰| j         vrt          d¦  «        ‚‰| j         ‰                  S )Nz#SHAPEENV_EVENT_KEY not in node.meta)Úmetar2   )r£  r¢  Úeventss    €€r   Úget_node_eventzbisect.<locals>.get_node_event
  s2   ø€ Ø T¤YÐ.Ð.Ý Ð!FÑGÔGÐGØ�d”iÐ 2Ô3Ô4Ð4r   rœ  Úfakec                 ó   — d S rU   r   ©rœ  r¨  s     r   Únew_with_shape_envz"bisect.<locals>.new_with_shape_env  s   € ØCFÀ3r   c                 ó   — d S rU   r   rª  s     r   r«  z"bisect.<locals>.new_with_shape_env  s   € ØUXÐUXr   c                 ó   — d S rU   r   rª  s     r   r«  z"bisect.<locals>.new_with_shape_env  ó	   € ð ˜r   c                 ó   — d S rU   r   rª  s     r   r«  z"bisect.<locals>.new_with_shape_env  r®  r   c           	      ó¸  •‡ — t          |t          ¦  «        r|S t          |t          j        ¦  «        r,t          j        |j                             ‰ ¦  «        ¦  «        S t          |t          j        ¦  «        r,t          j        |j                             ‰ ¦  «        ¦  «        S t          |‰¦  «        st          dt          |¦  «        › �¦  «        ‚ ‰t          ˆˆ fd„| 
                    ¦   «         D ¦   «         ¦  «        t          ˆˆ fd„|                     ¦   «         D ¦   «         ¦  «         ‰‰ |                     ¦   «         ¦  «        |j        ¦  «        S )NzExpected FakeTensorMeta, got c              3   ó0   •K  — | ]} ‰‰|¦  «        V — Œd S rU   r   ©r   rL  r«  rœ  s     €€r   rX   z5bisect.<locals>.new_with_shape_env.<locals>.<genexpr>0  s1   øè è € ÐHÐH°qÐ$Ð$ Y°Ñ2Ô2ÐHÐHÐHÐHÐHÐHr   c              3   ó0   •K  — | ]} ‰‰|¦  «        V — Œd S rU   r   r²  s     €€r   rX   z5bisect.<locals>.new_with_shape_env.<locals>.<genexpr>1  s1   øè è € ÐJÐJ°qÐ$Ð$ Y°Ñ2Ô2ÐJÐJÐJÐJÐJÐJr   )rV   r¸   rÓ   ÚSymIntr£  Úwith_shape_envÚSymFloatr2   r¿   r_   ÚsizeÚstrideÚstorage_offsetÚ	is_nested)rœ  r¨  rž  r«  s   ` €€r   r«  z"bisect.<locals>.new_with_shape_env$  sB  øø€ õ �d�CÑ Ô ð 	ØˆKÝ�d�EœLÑ)Ô)ð 	EÝ”< ¤	× 8Ò 8¸Ñ CÔ CÑDÔDÐDÝ�d�EœNÑ+Ô+ð 	GÝ”> $¤)×":Ò":¸9Ñ"EÔ"EÑFÔFÐFÝ˜$ Ñ/Ô/ð 	OÝ Ð!MÅÀdÁÄÐ!MÐ!MÑNÔNÐNØˆ~ÝÐHÐHÐHÐHÐH¸D¿IºI¹K¼KÐHÑHÔHÑHÔHÝÐJÐJÐJÐJÐJ¸D¿KºK¹M¼MÐJÑJÔJÑJÔJØÐ˜y¨$×*=Ò*=Ñ*?Ô*?Ñ@Ô@ØŒNñ	
ô 
ð 	
r   Útracked_fakesr   c                 óÒ   •‡ — |€t          d¦  «        ‚	 ‰                      ˆˆ fd„|D ¦   «         d„ |D ¦   «         d„ |D ¦   «         ¬¦  «         d S # t          $ r}|cY d }~S d }~ww xY w)Nztracked_fakes is Nonec                 ó2   •— g | ]} ‰‰|j         ¦  «        ‘ŒS r   )r¨  )r   r]   r«  rœ  s     €€r   r   z8bisect.<locals>.check_shapeenv_fails.<locals>.<listcomp>B  s)   ø€ ÐNÐNÐN¸1Ð#Ð# I¨q¬vÑ6Ô6ÐNÐNÐNr   c                 ó   — g | ]	}|j         ‘Œ
S r   )Úsourcer\   s     r   r   z8bisect.<locals>.check_shapeenv_fails.<locals>.<listcomp>C  s   € Ð1Ð1Ð1˜a�”Ð1Ð1Ð1r   c                 ó   — g | ]	}|j         ‘Œ
S r   )Úsymbolic_contextr\   s     r   r   z8bisect.<locals>.check_shapeenv_fails.<locals>.<listcomp>D  s   € ÐJÐJÐJ°q Ô 2ÐJÐJÐJr   )Úinput_contexts)r2   Úproduce_guardsrg  )rœ  r»  r   r«  s   `  €r   Úcheck_shapeenv_failsz$bisect.<locals>.check_shapeenv_fails7  s°   øø€ ð Ð Ý Ð!8Ñ9Ô9Ð9ð	ð ×$Ò$àNÐNÐNÐNÐNÀÐNÑNÔNØ1Ð1 =Ð1Ñ1Ô1ØJÐJ¸MÐJÑJÔJð	 %ñ ô ð ð �4øÝ"ð 	ð 	ð 	ØˆHˆHˆHˆHˆHˆHøøøøð	øøøs   •9A Á
A&ÁA!ÁA&Á!A&c                 óª   •— | j         ‰         } ‰‰d |dz   …         ¦  «        }|j                             ¦   «           ‰|‰|         j        ¦  «        S r…   )r¥  rà   Úlintr»  )r£  r|   rœ  r¢  rÄ  r¦  rŸ  s      €€€€r   Úcheck_node_failsz bisect.<locals>.check_node_failsL  s[   ø€ Ø”Ð-Ô.ˆà+Ð+¨F°<°V¸a±Z°<Ô,@ÑAÔAˆ	ØŒ×ÒÑÔÐØ#Ð# I¨v°f¬~Ô/KÑLÔLÐLr   z2translation validation succeeded: no errors found.c                 ó8   — g | ]}|j         t          j        u ¯|‘ŒS r   )rê   rÓ   rÙ   )r   r£  s     r   r   zbisect.<locals>.<listcomp>g  s-   € ð ð ð Ø°$´+ÅÄÐ2NÐ2NˆÐ2NÐ2NÐ2Nr   r*   r-   zbisecting at %s: %sz-Expected ValidationException at bisect resultÚ
evaluatingzunexpected event type: zadding runtime assertzevent.args is Nonezbisecting expects z/ to have at least 2 positional arguments. Got: z9 to have a SymPy expression as its second argument. Got: )r2  r–  r—  )'Útorch.fx.experimental.recordingrž  rŸ  r   Ú%torch.fx.experimental.symbolic_shapesr¡  r   r¢  r¦  rÓ   rä   r›  r   r¸   r´  r¶  r4   rg  Ú_snapshot_tracked_fakesr9  ÚinfoÚshould_record_eventsru  Ú translation_validation_no_bisectrà   ÚnodesrÆ   r:  rV   r2   Úis_evaluate_exprÚis_defer_runtime_assertrI   r)  rº   r6  r¿   rp  r¥  )rœ  r   r¡  r   r§  rÇ  Úlast_exceptionÚ	exceptionÚassert_nodesÚleftÚmidÚrightr£  Úleft_exceptionÚeventr–  rI   rž  r¢  rÄ  r¦  r«  rŸ  s                    @@@@@@r   ÚbisectrÛ  û  s/  øøøøøø€ ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð Ô€Fð5�UœXœ]ð 5¨}ð 5ð 5ð 5ð 5ð 5ð 5ð 5õ ØF hÐFµcÐF½cÐFÐFÐFñ „XØFåØX hÐXµe´lÐXÅuÄ|ÐXÐXÐXñ „XØXåðØðÝ#(¤>ðå	Œðð ð ñ „Xðõ ðØðØ#1ðà	ðð ð ñ „Xðð
Øð
Ý#&­¬Ñ#5½¼Ñ#FÈÑ#Wð
å	�uŒ|Ñ	�eœnÑ	,¨~Ñ	=ð
ð 
ð 
ð 
ð 
ð 
ð 
ð&ØðÝ,0°Ô,?À$Ñ,Fðå	˜tÑ	#ðð ð ð ð ð ð*M�uœxœ}ð MÕ1DÀtÑ1Kð Mð Mð Mð Mð Mð Mð Mð Mð Mð *Ð)Ø�9×4Ò4Ñ6Ô6ñô €Nð ð õ 	�ŠÐEÑFÔFÐFØˆàÔ)ð ­VÔ-Tð ð Ðð €Iðð Ø"œÔ.ðñ ô €Lð ˜!�S Ñ.Ô.°Ñ2ˆuˆ#€DØ'Ð'¨°UÔ(;Ñ<Ô<€IˆeÑà
�Š,ˆ,Ø�e‰| Ñ!ˆà˜CÔ ˆÝ�	Š	Ð'¨¨n¨n¸TÑ.BÔ.BÑCÔCÐCð *Ð)¨$Ñ/Ô/ˆ	�#‰à�SŒ>ð 	ØˆEˆEà˜‘7ˆDð �Š,ˆ,ð �IÐÐ¥*¨Y°t¬_Õ>QÑ"RÔ"RÐÝÐLÑMÔMÐMØ*3°D¬/€Nà˜Ô€DØˆN˜4Ñ Ô €Eà×ÒÑÔð 0Ø$ˆˆà×,Ò,Ñ.Ô.ð 	DÝ Ð!B¸5Ð!BÐ!BÑCÔCÐCØ/ˆàŒ:€DØ€|ÝÐ1Ñ2Ô2Ð2Ý
ˆ4�y„y�1‚}€}Ýð  ¤ð  ð  Ý˜‘I”Ið ð  ñ
ô 
ð 	
õ �d˜1”g�uœ{Ñ+Ô+ð 
Ýð. ¤ð .ð .Ý" 4¨¤7™mœmð.ð .ñ
ô 
ð 	
õ
 $ØØ�!ŒWØ#Ø”IÐ.Ô/ð	ñ ô ð r   rn  )rœ  r   r   N)>rÐ   rc   ÚloggingrÒ   r«   Úcollections.abcr   Údataclassesr   Útypingr   r   r   r   rº   rÓ   Útorch.fxÚtorch.fx.tracebackrä   Ú	tracebackrî   Útorch._dynamo.excr	   Útorch._dynamo.utilsr
   Útorch.fx.noder   r   Útorch.utils._sympy.interpr   rË  r   r   Ú	getLoggerr¥   r9  r   r&   r3   r5   r   re   rR   rÝ   ÚInterpreterrß   rù   rg   rt  Ú__all__ÚImportErrorÚtorch.fx.experimentalrq  ru  r·   ro  r¸   rd  rs  rg  rp  rÛ  r   r   r   ú<module>rì     s3  ðØ €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8à €€€à €€€Ø €€€Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ð ð LØKÐKÐKÐKÐKÐKÐKÐKð €gÔ˜Ñ!Ô!€à€WˆT�]„]€ðC
Ø€I€I€IðHU&�”ð U& ð U&ð U&ð U&ð U&ðtØ˜s C˜xÔ(ðØ5=¸cÀ3¸hÔ5GÈ$Ñ5Nðà	�#�s�(Ô	ðð ð ð ð( ð]4ð ]4ð ]4ð ]4ð ]4ñ ]4ô ]4ñ „Yð]4ðNAJØ�S˜#�XÔðAJØ+AðAJà	�#�s�(Ô	ðAJð AJð AJð AJðX4ð 4ð 4ð 4ð 4˜EœHÔ0ñ 4ô 4ð 4ðJYEð YEð YEð YEð YEñ YEô YEð YEðRUAð UAð UAð UAð UAñ UAô UAð UAðD €Gð
ð 
ð 
€G€Gøð ð ð ð Ø€Gðð ð €G€G€Gðøøøð2 4Ð 3Ð 3Ð 3Ð 3Ð 3ð5¨ð 5ð 5ð 5ð 5ð1¨ð 1ð 1ð 1ð 1ð
ð 
ð 
ð 
ð!/ð !/ð !/ð !/ð !/Ð.ñ !/ô !/ð !/ðH/ð /ð /ð /ð /Ð 4ñ /ô /ð /ð( Ð Ñ  Ô  Ð  ðhð hð hð hð hð hs   ÂBD  Ä D.Ä-D.