+
    –°³j¤N  ã                  ó´  € ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	H
t
 ^ RIHtHt ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHt ^R	IHtHt ]'       d	   ^ R
IHtHt ]! 4       t] ! R R4      4       t ! R R]P                   P@                  4      t!R R lt"R R lt#R R lt$R R lt%R R lt&] ! R R4      4       t']%3RRRRRRRRR R/R! R" lllt(R# )#é    )ÚannotationsN)Ú	dataclass)ÚpartialÚwraps)ÚAnyÚTYPE_CHECKING)Útqdm)ÚStorageWeakRef)ÚContentStoreWriter)Úget_outputsÚget_placeholders)ÚCallableÚSequencec                  ó@   € ] tR t^t$ R]R&   R]R&   R]R&   R]R&   RtR	# )
ÚLoadTensorMetaztuple[int, ...]ÚsizeÚstrideztorch.dtypeÚdtypeztorch.deviceÚdevice© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__r   ó    Ú]/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_functorch/fx_minifier.pyr   r      s   ‡ à
ÓØÓØÓØ×r   r   c                  ó^   a € ] tR t^#tRRRR/R V 3R llltR V 3R lltR	 V 3R
 lltRtV ;t# )ÚConcretePropÚwriterNÚskip_offloadFc               ó(   € V ^8„  d   QhRRRRRRRR/# )	é   Úmodúfx.GraphModuler!   zContentStoreWriter | Noner"   ÚboolÚreturnÚNoner   )Úformats   "r   Ú__annotate__ÚConcreteProp.__annotate__$   s2   € ÷ ñ àðð *ð	ð
 ðð 
ñr   c               	ój   <€ \         SV `  V4       W n        W0n        \	        4       V n        R V n        R # ©N)ÚsuperÚ__init__r!   r"   ÚsetÚseen_storagesÚpbar)Úselfr%   r!   r"   Ú	__class__s   &&$$€r   r0   ÚConcreteProp.__init__$   s.   ø€ ô 	‰Ñ˜ÔØŒØ(ÔÜ25³%ˆÔØˆŽ	r   c               ó    € V ^8„  d   QhRRRR/# )r$   Únúfx.Noder(   r   r   )r*   s   "r   r+   r,   1   s   € ÷ ñ ˜'ð  cñ r   c                	ó"  <€ V P                   P                  ^4       \        SV `  V4      pVP                  p\        V\        P                  4      '       Ed$   V P                  f   W!P                  R&   V# \        VP                  4       4      V P                  9   d   RVP                  R&   V# V P                  '       g;   V P                  P                  \        P                   P#                  RV4      V4       \%        VP'                  4       VP)                  4       VP*                  VP,                  4      VP                  R&   V P                  P/                  \        VP                  4       4      4        V# \0        VP                  R&   V# )é   NÚconcrete_valueÚeager)r3   Úupdater/   Úrun_nodeÚnameÚ
isinstanceÚtorchÚTensorr!   Úmetar
   Úuntyped_storager2   r"   Úwrite_tensorÚosÚpathÚjoinr   r   r   r   r   ÚaddÚis_tuple)r4   r8   Úrr@   r5   s   &&  €r   r?   ÚConcreteProp.run_node1   s5  ø€ Ø�	‰	×Ñ˜ÔÜ‰GÑ˜QÓˆØ�v‰vˆä�aœŸ™×&Ó&Ø�{‰{Ò"Ø+,—‘Ð'Ñ(ð  ˆô " !×"3Ñ"3Ó"5Ó6¸$×:LÑ:LÔLð 04�A—F‘FÐ+Ñ,ð ˆð  ×,×,Ð,ØŸ™×0Ñ0´·±·±¸gÀtÓ1LÈaÔPÜ/=ØŸ™› !§(¡(£*¨a¯g©g°q·x±xó0�A—F‘FÐ+Ñ,ð ×&Ñ&×*Ñ*¬>¸!×:KÑ:KÓ:MÓ+NÕOð ˆô (0ˆA�F‰FÐ#Ñ$àˆr   c               ó    € V ^8„  d   QhRRRR/# )r$   Úargsr   r(   r   )r*   s   "r   r+   r,   J   s   € ÷ ñ ˜sð  sñ r   c                	ó¸  <€ V P                   p\        V\        P                  4      '       g   \	        R \        V4       24      h\        R\        VP                  P                  4      V P                  RJ R7      ;_uu_ 4       pW0n        \        SV `4  ! V!  pV P                  '       g   VP                  R4       VuuRRR4       #   + '       g   i     R# ; i)zexpected fx.GraphModule, got z(Saving intermediates for delta debuggingN)ÚdescÚtotalÚdisablezESaved!  To skip next time, run with --skip-saving-eager-intermediates)ÚmodulerA   ÚfxÚGraphModuleÚAssertionErrorÚtyper	   ÚlenÚgraphÚnodesr!   r3   r/   Úrunr"   Úset_description)r4   rO   r%   r3   rL   r5   s   &*   €r   Ú	propagateÚConcreteProp.propagateJ   s¯   ø€ Ø�k‰kˆÜ˜#œrŸ~™~×.Ò.Ü Ð#@ÄÀcÃÀÐ!LÓMÐMÜØ;Ü�c—i‘i—o‘oÓ&Ø—K‘K 4Ð'÷
õ 
ð ØŒIÜ‘’˜TÑ"ˆAØ×$×$Ð$Ø×$Ñ$Ø[ôð ÷
÷ 
÷ 
ó 
ús   Â9CÃC	)r3   r2   r"   r!   )	r   r   r   r   r0   r?   r^   r   Ú__classcell__)r5   s   @r   r    r    #   s5   ø† ðð -1ð	ð
 #÷ò ÷ð ÷2ö r   r    c               ó    € V ^8„  d   QhRRRR/# )r$   Únoder9   r(   r'   r   )r*   s   "r   r+   r+   \   s   € ÷ ñ ˜gð ¨$ñ r   c                ó¤   € V P                   R 8H  ;'       d;    V P                  \        P                  P                  P
                  P                  J # )Úcall_function)ÚopÚtargetrB   ÚopsÚ
debugprimsÚload_tensorÚdefault)rb   s   &r   Úis_load_tensor_noderk   \   sA   € à�‰�?Ñ"÷ 	Dð 	DØ�K‰Kœ5Ÿ9™9×/Ñ/×;Ñ;×CÑCÐCðr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r$   rZ   úfx.Graphrb   r9   Úinpsúlist[torch.Tensor]r(   r'   r   )r*   s   "r   r+   r+   d   s,   € ÷ /ñ /Øð/Ø"ð/Ø*<ð/à	ñ/r   c                óX  € VP                   R 8X  g   VP                   R8X  d   R# \        V4      '       d   R# VP                  P                  RR4      p\	        V\
        P                  4      '       d:   RVn         VP                  Vn        R
Vn	        / Vn
        VP                  V4       R# Vf   R# V\        J d7   Rp\        VP                  4       F  p\        WV4      ;'       g    TpK  	  V# \	        V\         4      '       d¢   RVn         \
        P"                  P$                  P&                  P(                  Vn        \*        P,                  P/                  RVP                  4      VP0                  VP2                  3Vn	        RVP4                  R	VP6                  /Vn
        R# R# )ÚoutputÚplaceholderFr<   NTrd   r=   r   r   r   )re   rk   rD   ÚgetrA   rB   rC   r@   rf   rO   ÚkwargsÚappendrK   ÚlistÚusersÚ_convert_node_to_placeholderr   rg   rh   ri   rj   rG   rH   rI   r   r   r   r   )rZ   rb   rn   Úconcrete_valrL   Ú
tuple_users   &&&   r   rx   rx   d   sP  € ð ‡w�w�(Ô˜dŸg™g¨Ô6Ùä˜4× Ò Ùà—9‘9—=‘=Ð!1°4Ó8€Lä�,¤§¡×-Ò-ØˆŒØ—i‘iˆŒØˆŒ	ØˆŒà�‰�LÔ!Ùà	Ò	Ùà	œÓ	!ØˆÜ˜tŸz™zÖ*ˆJÜ,¨UÀÓE×JÐJÈŠAñ +ð ˆä	�L¤.×	1Ò	1Ø!ˆŒÜ—i‘i×*Ñ*×6Ñ6×>Ñ>ˆŒä�G‰G�L‰L˜ $§)¡)Ó,Ø×ÑØ×Ñð
ˆŒ	ð �l×)Ñ)Ø�\×'Ñ'ð
ˆŒñ ár   c               ó$   € V ^8„  d   QhRRRRRR/# )r$   Úminified_fx_graphr&   ÚinputsúSequence[torch.Tensor]r(   r)   r   )r*   s   "r   r+   r+   –   s)   € ÷ Fñ FØ%ðFØ/EðFà	ñFr   c                ó„   € \         P                  ! 4        R2p\         P                  ! VRR7       ^ RIHp V! WV4       R# )z˜
Takes minified FX graph as primary input, and ports it to HLO via StableHLO
Provides minified HLO graph as output, and archive them to local directory
z
/hlo_filesT)Úexist_ok)Úsave_torch_model_as_stablehloN)rG   ÚgetcwdÚmakedirsÚtorch_xla.stablehlor�   )r|   r}   Úhlo_dirr�   s   &&  r   Úcreate_minified_hlo_graphr†   –   s2   € ô —’“�˜ZÐ(€GÜ‡K‚K� $Õ'åAá!Ð"3¸WÖEr   c               ó$   € V ^8„  d   QhRRRRRR/# )r$   Úfx_gr&   rn   r~   r(   r)   r   )r*   s   "r   r+   r+   ¥   s"   € ÷ ñ �^ð Ð+Að Àdñ r   c                óú   € \        R \        V P                  P                  4       RV Uu. uF.  q"P                  VP
                  \        VP                  4      3NK0  	  up RV P                   R24       R# u upi )z
# Working Repro with z nodes
inps = zo
inps = [torch.zeros(())] + [torch.ones(shape, dtype=dtype, device=device) for (shape, dtype, device) in inps]
Ú
N)	ÚprintrY   rZ   r[   Úshaper   Ústrr   Úcode)rˆ   rn   Úis   && r   Ú
dump_stater�   ¥   sp   € Ü	ðÜ˜$Ÿ*™*×*Ñ*Ó+Ð,ð -Ù48Ó9±D¨q�'‰'�1—7‘7œC §¡›MÓ	*±DÑ9Ð:ð ;à‡�€ð ð		öùò 	:s   «4A8c               ó    € V ^8„  d   QhRRRR/# )r$   r8   Úintr(   r'   r   )r*   s   "r   r+   r+   °   s   € ÷ ñ �sð ˜tñ r   c                ó8   € V ^ 8X  d   R# W ^,
          ,          ^ 8H  # )r   Fr   )r8   s   &r   Úis_power_of_twor”   °   s   € ØˆA„vÙØ�Q•�K˜AÑÐr   c                  ó8   € ] tR t^¶t$ R]R&   R]R&   R R ltRtR# )	Ú
ReproStaterm   rZ   r~   rn   c               ó   € V ^8„  d   QhRR/# )r$   r(   r)   r   )r*   s   "r   r+   ÚReproState.__annotate__»   s   € ÷ ñ ˜tñ r   c                	óÐ   € \        V P                  4      p\        V4      \        V P                  4      8w  d.   \	        R \        V4       R\        V P                  4       24      hR# )úlen(ph_nodes)=z != len(self.inps)=N)r   rZ   rY   rn   rW   )r4   Úph_nodess   & r   Ú__post_init__ÚReproState.__post_init__»   sT   € Ü# D§J¡JÓ/ˆÜˆx‹=œC §	¡	›NÔ*Ü Ø ¤ X£ Ð/BÄ3ÀtÇyÁyÃ>ÐBRÐSóð ñ +r   r   N)r   r   r   r   r   rœ   r   r   r   r   r–   r–   ¶   s   ‡ àƒOØ
 Ó ÷ñ r   r–   Úsave_dirÚoffload_to_diskFr"   Úskip_sanityÚmax_granularityc               ó@   € V ^8„  d   QhRRRRRRRRR	R
RRRRRRRRRR/
# )r$   Úfail_fr&   rn   r~   Úmodule_failsz8Callable[[fx.GraphModule, Sequence[torch.Tensor]], bool]r�   z8Callable[[fx.GraphModule, Sequence[torch.Tensor]], None]rž   z
str | NonerŸ   r'   r"   r    r¡   z
int | Noner(   z-tuple[fx.GraphModule, Sequence[torch.Tensor]]r   )r*   s   "r   r+   r+   Ã   sz   € ÷ o*ñ o*Øðo*à
 ðo*ð Kðo*ð Ið	o*ð ðo*ð ðo*ð ðo*ð ðo*ð  ðo*ð 3ño*r   c          
     óô  a aaaaaaaaaaaaaa € S P                   p	\        V	P                  4      p
Ve!   \        V4      '       g   \	        RV R24      h^ oR V 3R lloR V VV3R lloRpV'       d   Vf   \        R4      h\        V4      p\        S W¶R	7      P                  ! V!   V'       g   S! W‘4      '       g   \	        R
4      h\        RV
 R2\        P                  R7       R VV3R lloR V3R llpV! R4      R V3R ll4       oV! R4      R V3R ll4       oR R lo R VV 3R lloR V3R llpV! R4      ! V4      oV! R4      R  V3R! ll4       oR" R# loV! R$4      R% VVVV 3R& ll4       oV! R'4      R( VV3R) ll4       o\        W‘4      pR* VVVVVV3R+ llp V! \        P                  ! S VP                   4      VP                  4       \!        ^\"        P$                  ! \"        P&                  ! \        VP                   P                  4      4      4      ,          4      pVe   \)        VV4      pV! VVR,R-7      pVe   TpK­  V^,          pR.pV^8¼  d    V! VVR.R-7      pVe   TpR,pMV^,          pK&  V'       d   Kè  S! V^4      pVe   TpKù   S! TP                   TP                  4      '       g   \	        R/4      h\        R0S R12\        P                  R7       \        P                  ! S TP                   4      pR2\*        P,                  9   d   \/        TTP                  4       T! TTP                  4       \        R3\        P                  R7       TTP                  3# )4a  
Minimizes a FX graph with given inputs, such that the resulting FX graph still returns True for module_fails.

Does 2 main strategies:
1. Truncates suffix: Removes some suffix from the graph and sets a new output.
2. Delta Debugging: Tries replacing half of the graph with inputs. If fails,
    tries replacing quarter of the graph, etc.

>>> # xdoctest: +SKIP(failing)
>>> failing_function = fx.symbolic_trace(f)
>>> minimize(failing_function, [torch.randn(5)], lambda fx_g, inps: fx_g(*inps))

note: module_fails returns True if it fails.
Nzmax_granularity z not power of twoc               ó    € V ^8„  d   QhRRRR/# )r$   Úfx_graphrm   r(   r   )r*   s   "r   r+   Úminifier.<locals>.__annotate__æ   s   € ÷ Eñ E Hð E°ñ Er   c                ón   <€ \         P                  ! S\        P                  ! V 4      4      P                  # r.   )rU   rV   ÚcopyÚdeepcopyrZ   )r§   r£   s   &€r   Údeepcopy_fx_graphÚ#minifier.<locals>.deepcopy_fx_graphæ   s#   ø€ Ü�~Š~˜f¤d§m¢m°HÓ&=Ó>×DÑDÐDr   c               ó$   € V ^8„  d   QhRRRRRR/# )r$   rZ   rm   rn   r~   r(   r'   r   )r*   s   "r   r+   r¨   é   s"   € ÷ 'ñ '˜8ð 'Ð+Að 'Àdñ 'r   c                ó´   <€ \         P                  ! V 4      p S^,          o\        P                  ! SV 4      pVP                  P                  4        S! W!4      # ©r;   )rª   r«   rU   rV   rZ   Úlint)rZ   rn   r%   r£   r¤   Únum_queriess   && €€€r   Úgraph_failsÚminifier.<locals>.graph_failsé   sD   ø€ ä—’˜eÓ$ˆØ�qÕˆÜ�nŠn˜V UÓ+ˆØ�	‰	�‰ÔÙ˜CÓ&Ð&r   z3save_dir must not be None when offload_to_disk=True)r!   r"   z#Input graph did not fail the testerzStarted off with ú nodes©Úfilec               ó$   € V ^8„  d   QhRRRRRR/# )r$   ÚstrategyzDCallable[[fx.Graph, Sequence[torch.Tensor], int], ReproState | None]r@   r�   r(   z.Callable[[ReproState, int], ReproState | None]r   )r*   s   "r   r+   r¨   ü   s&   € ÷ 8ñ 8ØVð8àð8ð 
8ñ8r   c                óD   <a a€ \        S 4      RR VVVV 3R lll4       pV# )r;   c               ó$   € V ^8„  d   QhRRRRRR/# )r$   Ú	old_stater–   Úgranularityr’   r(   úReproState | Noner   )r*   s   "r   r+   Ú:minifier.<locals>._register_strategy.<locals>.__annotate__  s"   € ÷ 1	ñ 1	 
ð 1	¸ð 1	ÐEVñ 1	r   c                ó~  <€ \        \        P                  R 7       \        RS RV R\        V P                  P
                  4       R\        V P                  4       R2	\        P                  R 7       S! S
! V P                  4      \        V P                  4      V4      pVEez   \        VP                  P
                  4      p\        V P                  P
                  4      p\        VP                  4      p\        V P                  4      p\        \        VP                  4      4      p\        \        V P                  4      4      pRp	W48  d%   Rp	\        R	V R
V R2\        P                  R 7       WV8”  d%   Rp	\        R	V R
V R2\        P                  R 7       Wx8  d%   Rp	\        R	V R
V R2\        P                  R 7       V	'       g   \        R4      hS! VP                  VP                  4      '       g   \        R\        P                  R 7       R# V# \        RS 2\        P                  R 7       R# )r¶   z
Strategy: z (G: z) (z nodes, z inputs)NFTzSUCCESS: Went from z to rµ   z inputsz outputsz$Success raised but no progress made?z=WARNING: Something went wrong, not applying this minificationzFAIL: )
r‹   ÚsysÚstderrrY   rZ   r[   rn   rv   r   ÚRuntimeError)r¼   r½   Ú	new_stateÚ	new_nodesÚ	old_nodesÚnew_inpsÚold_inpsÚnew_outsÚold_outsÚprogress_mader¬   r³   r@   r¹   s   &&        €€€€r   Únew_funcÚ6minifier.<locals>._register_strategy.<locals>.new_func   sÛ  ø€ ä”s—z‘zÕ"ÜØ˜T˜F %¨ }ð 5Ü˜	Ÿ™×-Ñ-Ó.Ð/¨x¼¸I¿N¹NÓ8KÐ7LÈHðVä—Z‘Zõñ
 !Ù! )§/¡/Ó2´D¸¿¹Ó4HÈ+óˆIð Ó$Ü 	§¡× 5Ñ 5Ó6�	Ü 	§¡× 5Ñ 5Ó6�	Ü˜yŸ~™~Ó.�Ü˜yŸ~™~Ó.�Üœ{¨9¯?©?Ó;Ó<�Üœ{¨9¯?©?Ó;Ó<�Ø %�ØÔ(Ø$(�MÜØ-¨i¨[¸¸Y¸KÀvÐNÜ ŸZ™Zõð Ô&Ø$(�MÜØ-¨h¨Z°t¸H¸:ÀWÐMÜ ŸZ™Zõð Ô&Ø$(�MÜØ-¨h¨Z°t¸H¸:ÀXÐNÜ ŸZ™Zõ÷
 %Ü&Ð'MÓNÐNá" 9§?¡?°I·N±N×CÒCÜØWÜ ŸZ™Zõñ  Ø Ð ä˜˜t˜f�o¬C¯J©JÕ7Ùr   r°   )r   )r¹   r@   rÌ   r¬   r³   s   ff €€r   Ú_register_strategyÚ$minifier.<locals>._register_strategyü   s(   ú€ ô 
ˆx‹÷1	ô 1	ó 
ð1	ðf ˆr   c               ó    € V ^8„  d   QhRRRR/# )r$   r@   r�   r(   z€Callable[[Callable[[fx.Graph, Sequence[torch.Tensor], int], ReproState | None]], Callable[[ReproState, int], ReproState | None]]r   )r*   s   "r   r+   r¨   6  s   € ÷ 6ñ 6Øð6ð
ñ6r   c                ó   <€ \        SV R 7      # ))r@   )r   )r@   rÎ   s   &€r   Úregister_strategyÚ#minifier.<locals>.register_strategy6  s   ø€ ô Ð)°Ô5Ð5r   zTruncate suffixc               ó(   € V ^8„  d   QhRRRRRRRR/# ©	r$   Ú	cur_graphrm   Úcur_inpsr~   r½   r’   r(   r¾   r   )r*   s   "r   r+   r¨   ?  s,   € ÷ ñ ØðØ'=ðØLOðà	ñr   c                ó&  <a	€ \        4       p\        P                  ! 4       p/ o	\        V P                  4       FÔ  w  rVVP                  VV	3R  l4      pVP                  R9  d¤   WR,          ^ 8X  d—   WR^,          ,          ^ 8w  dƒ   WS9  d}   VP                  V34      p\        VP                  4      \        V P                  4      8  d   S
! WA4      '       d   \        WA4      u # VP                  V4       VP                  V4       VS	V&   KÖ  	  R# )c                ó   <€ SV ,          # r.   r   ©ÚxÚenvs   &€r   Ú<lambda>Ú1minifier.<locals>.remove_suffix.<locals>.<lambda>F  s	   ø€ ¸3¸q¾6r   N)rr   rq   )r1   rU   ÚGraphÚ	enumerater[   Ú	node_copyre   rq   rY   r–   rJ   Ú
erase_node)rÖ   r×   r½   ÚtestedÚ	new_graphÚidxrb   Únew_nodeÚoutput_noderÜ   r³   s   &&&      @€r   Úremove_suffixÚminifier.<locals>.remove_suffix>  sä   ù€ ô ›5ˆÜ—H’H“Jˆ	Ø&(ˆÜ" 9§?¡?Ö3‰IˆCØ ×*Ñ*¨4Ô1AÓBˆHØ�w‰wÐ7Ô7ð Õ%¨Ô*Ø¨a¥Õ0°AÔ5ØÔ)à"+×"2Ñ"2°H°;Ó"?�KÜ˜9Ÿ?™?Ó+¬c°)·/±/Ó.BÔBÁ{Ø!÷Hò Hô  *¨)Ó>Ò>àŸ
™
 3œØ!×,Ñ,¨[Ô9Ø ˆC�‹Iñ# 4ñ$ r   zRemove outputsc               ó(   € V ^8„  d   QhRRRRRRRR/# rÕ   r   )r*   s   "r   r+   r¨   Z  s,   € ÷ "ñ "Øð"Ø'=ð"ØLOð"à	ñ"r   c                óˆ  <€ \        ^V^,          4      pRp\        V P                  4       F   w  rEWEn        VP                  R8X  g   K  Tp M	  Vf   R# \        VP                  ^ ,          \        P                  4      '       d   R# VP                  ^ ,          p\        V\        \        34      '       g   \        R\        V4       24      h\        VR R7      p\        V4      ^8X  d   R# \        ^ \        V4      V4       F9  pVRV WtV,           R ,           3Vn        S! W4      '       g   K.  \!        W4      u # 	  R# )r;   Nrq   z2expected output_args_raw to be list or tuple, got c                óp   € \        V \        P                  4      '       d   V P                  # \	        R 4      # )g    eÍÍA)rA   rU   ÚNoderå   r’   )rÛ   s   &r   rÝ   Ú2minifier.<locals>.remove_outputs.<locals>.<lambda>s  s$   € ¤:¨a´·±×#9Ò#9˜!Ÿ%™%ÐG¼sÀ3»xÐGr   )Úkey)Úmaxrà   r[   rå   re   rA   rO   rU   rí   rv   ÚtuplerW   rX   ÚsortedrY   Úranger–   )	rÖ   r×   r½   rq   rå   rb   Úoutput_args_rawÚoutput_argsr³   s	   &&&     €r   Úremove_outputsÚ minifier.<locals>.remove_outputsY  s$  ø€ ô ˜!˜[¨AÕ-Ó.ˆØ!%ˆÜ" 9§?¡?Ö3‰IˆCØŒHØ�w‰w˜(Ö"Ø�Ùñ	 4ð Š>Ùä�f—k‘k !•n¤b§g¡g×.Ò.Ùð !Ÿ+™+ a�.ˆÜ˜/¬D´%¨=×9Ò9Ü ØDÄTÈ/ÓEZÐD[Ð\óð ô ØÙGô
ˆô ˆ{Ó˜qÔ Ùä˜œC Ó,¨kÖ:ˆCØ& t¨Ð,¨{ÀÕ;LÐ;NÐ/OÕOÐQˆFŒKÙ˜9×/Ô/Ü! )Ó6Ò6ñ ;ñ r   c               ó    € V ^8„  d   QhRRRR/# ©r$   Ú	cur_stater–   r(   r¾   r   )r*   s   "r   r+   r¨   ~  s   € ÷ ñ °*ð ÐARñ r   c                óø  € V P                   pV P                  p\        \        V4      4      p\	        V4      \	        V4      8w  d$   \        R \	        V4       R\	        V4       24      h. p\        \	        V4      4       FS  p\	        W5,          P                  4      ^ 8X  d   VP                  W5,          4       K<  VP                  W%,          4       KU  	  \	        V4      \	        V4      8  d   \        W4      # R# )rš   z != len(cur_inps)=N)rZ   rn   rv   r   rY   rW   ró   rw   râ   ru   r–   )rú   rÖ   r×   r›   rÇ   rå   s   &     r   Úremove_unused_inputs_uncheckedÚ0minifier.<locals>.remove_unused_inputs_unchecked~  sÇ   € Ø—O‘Oˆ	Ø—>‘>ˆÜÔ(¨Ó3Ó4ˆÜˆx‹=œC ›MÔ)Ü Ø ¤ X£ Ð/AÄ#ÀhÃ-ÀÐQóð ð (*ˆÜœ˜X›Ö'ˆCÜ�8•=×&Ñ&Ó'¨1Ô,Ø×$Ñ$ X¥]Ö3à—‘ ¥Ö.ñ	 (ô
 ˆx‹=œ3˜x›=Ô(Ü˜iÓ2Ð2Ùr   c               ó    € V ^8„  d   QhRRRR/# rù   r   )r*   s   "r   r+   r¨   ‘  s   € ÷ ñ °
ð Ð?Pñ r   c                ój   <€ S! V 4      pVe&   S! VP                   VP                  4      '       d   V# R # r.   )rZ   rn   )rú   rÄ   r³   rü   s   & €€r   Úremove_unused_inputs_checkedÚ.minifier.<locals>.remove_unused_inputs_checked‘  s0   ø€ Ù2°9Ó=ˆ	ØÒ ¡[°·±À)Ç.Á.×%QÒ%QØÐÙr   c               ó(   € V ^8„  d   QhRRRRRRRR/# rÕ   r   )r*   s   "r   r+   r¨   —  s2   € ÷ Mñ MØðMØ'=ðMØLOðMà	ñMr   c                ó&   <€ S! \        W4      4      # r.   )r–   )rÖ   r×   r½   r   s   &&&€r   Ú_remove_unused_wrapperÚ(minifier.<locals>._remove_unused_wrapper—  s   ø€ ñ ,¬J°yÓ,KÓLÐLr   zRemove unused inputszEliminate dead codec               ó(   € V ^8„  d   QhRRRRRRRR/# rÕ   r   )r*   s   "r   r+   r¨   ¡  s,   € ÷ ñ ØðØ'=ðØLOðà	ñr   c                óf   <€ V P                  4       '       d   S! W4      '       d   \        W4      # R # r.   )Úeliminate_dead_coder–   )rÖ   r×   r½   r³   s   &&&€r   r  Ú%minifier.<locals>.eliminate_dead_code   s,   ø€ ð ×(Ñ(×*Ò*©{¸9×/OÒ/OÜ˜iÓ2Ð2Ùr   c               ó$   € V ^8„  d   QhRRRRRR/# )r$   rÖ   rm   rn   ro   r(   r   )r*   s   "r   r+   r¨   ¨  s$   € ÷ ñ ØðØ#5ðà	ñr   c                óR  a€ \         P                  ! 4       p/ oR pV P                   FÅ  pVP                  R8X  d   VP	                  VV3R l4      pVSV&   K1  V'       g‹   \        V4      '       dz   VP                  VP                  4      pVSV&   VP                  \        P                  P                  P                  P                  ! VP                  / VP                  B 4       KÃ  RpKÇ  	  V P                   F'  pVS9  g   K  VP	                  VV3R l4      pVSV&   K)  	  V# )Frr   c                ó   <€ SV ,          # r.   r   rÚ   s   &€r   rÝ   Ú=minifier.<locals>._consolidate_placeholders.<locals>.<lambda>´  ó	   ø€ ¸sÀ1¾vr   Tc                ó   <€ SV ,          # r.   r   rÚ   s   &€r   rÝ   r  Â  r  r   )rU   rß   r[   re   rá   rk   rr   r@   ru   rB   rg   rh   ri   rj   rO   rt   )rÖ   rn   rä   Úseen_non_placeholderrb   ræ   rÜ   s   &&    @r   Ú_consolidate_placeholdersÚ+minifier.<locals>._consolidate_placeholders¨  sø   ø€ ô —H’H“Jˆ	ØˆØ$Ðð
 —O”OˆDØ�w‰w˜-Ô'Ø$×.Ñ.¨tÔ5EÓF�Ø$��D“	ß)Ô.AÀ$×.GÒ.GØ$×0Ñ0°·±Ó;�Ø$��D‘	Ø—‘Ü—I‘I×(Ñ(×4Ñ4×<Ò<¸d¿i¹iÐWÈ4Ï;É;ÑWöð (,Ò$ñ $ð —O”OˆDØ˜3ŽØ$×.Ñ.¨tÔ5EÓF�Ø$��D“	ñ $ð Ðr   zDelta Debuggingc               ó(   € V ^8„  d   QhRRRRRRRR/# rÕ   r   )r*   s   "r   r+   r¨   Ç  s,   € ÷ ñ ØðØ'=ðØLOðà	ñr   c                óJ  <€ \        V P                  4      p\        ^ W24       Fü  pRpS! V 4      p\        VR,          4      p\	        W4V,           4      p\        WH4       F5  p	\        VP                  4      V	,          p
\        WjV4      '       g   K3  RpK7  	  V'       g   K  VP                  4        S! Wg4      pS! \        Wg4      4      pVf   \        Wg4      pS! VP                  VP                  4      '       g   KÜ  \        VP                  VP                  4      u # 	  R# )r   FºNNNTN)
rY   r[   ró   rv   Úminrx   r  r–   rZ   rn   )rÖ   r×   r½   Ú	num_nodesÚstart_rangeÚis_removingrä   rÇ   Ú	end_rangerå   ræ   rÄ   r  r¬   r³   rü   s   &&&         €€€€r   Údelta_debuggingÚ!minifier.<locals>.delta_debuggingÆ  sð   ø€ ô ˜	Ÿ™Ó(ˆ	Ü   IÖ;ˆKØˆKÙ)¨)Ó4ˆIÜ˜H Q�KÓ(ˆHÜ˜I°[Õ'@ÓAˆIÜ˜[Ö4�Ü 	§¡Ó0°Õ5�Ü/°	ÀX×NÔNØ"&’Kñ 5÷ ÙØ×)Ñ)Ô+Ù1°)ÓFˆIÙ6´zÀ)Ó7VÓWˆIØÒ Ü& yÓ;�	Ù˜9Ÿ?™?¨I¯N©N×;Ô;Ü! )§/¡/°9·>±>ÓBÒBñ# <ñ& r   zConsolidate Inputsc               ó(   € V ^8„  d   QhRRRRRRRR/# rÕ   r   )r*   s   "r   r+   r¨   á  s,   € ÷ ñ ØðØ'=ðØLOðà	ñr   c                ó¤   <€ \        V4      p\        VR ,          4      pS! W4      p \        V4      V8”  d   S! W4      '       d   \        W4      # R# )r  N)rY   rv   r–   )rÖ   r×   r½   Úold_lenrÇ   r  r³   s   &&&  €€r   Úconsolidate_inputsÚ$minifier.<locals>.consolidate_inputsà  sJ   ø€ ô �h“-ˆÜ˜ �Ó$ˆÙ-¨iÓBˆ	Üˆx‹=˜7Ô"¡{°9×'GÒ'GÜ˜iÓ2Ð2Ùr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r$   Úfailing_stater–   r½   r’   Úuse_non_granularr'   r(   r¾   r   )r*   s   "r   r+   r¨   í  s,   € ÷ ñ Ø!ðØ03ðØGKðà	ñr   c                ó`  <€ \        R V 2\        P                  R7       . p\        V P                  P
                  4      p\        \        V P                  4      4      pWT^,          8”  d   VS.,          pV'       d   VS
SS.,          pVSS	.,          pV F  pV! W4      pVf   K  Vu # 	  R# )zTrying granularity r¶   N)r‹   rÁ   rÂ   rY   rZ   r[   r   )r#  r½   r$  Ú
strategiesr  Únum_outputsr¹   rÄ   r   r  r  rö   rè   Úremove_unused_inputss   &&&     €€€€€€r   Útry_granularityÚ!minifier.<locals>.try_granularityí  s³   ø€ ô 	Ð# K =Ð1¼¿
¹
ÕCàˆ
Ü˜×+Ñ+×1Ñ1Ó2ˆ	Üœ+ m×&9Ñ&9Ó:Ó;ˆØ a�Ô'Ø˜>Ð*Õ*ˆJçØØ#Ø$Ø"ðõ ˆJð 	�} oÐ6Õ6ˆ
ã"ˆHÙ  Ó<ˆIØÔ$Ø Ò ñ #ñ r   T)r$  Fz9Uh oh, something went wrong :( Final graph is not failingzMade z queriesÚXLA_HLO_DEBUGz#Wrote minimal repro out to repro.py)rZ   rY   r[   r”   rÃ   rW   r   r    r^   r‹   rÁ   rÂ   r–   rU   rV   rn   r’   ÚmathÚfloorÚlog2r  rG   Úenvironr†   )!r£   rn   r¤   r�   rž   rŸ   r"   r    r¡   Úfailing_graphÚcur_sizer!   rÒ   r  r#  r)  r½   rÄ   Úhas_progressÚ
failing_fxr  rÎ   r   r¬   r  r  r³   r²   rö   rè   r(  r   rü   s!   f&f&$$$$$           @@@@@@@@@@@@@r   Úminifierr4  Ã   sL  ÿþ€ ð6 —L‘L€MÜ�=×&Ñ&Ó'€HàÒ"¬?¸?×+KÒ+KÜÐ-¨oÐ->Ð>OÐPÓQÐQà€K÷Eð E÷'ò 'ð €FßØÒÜ Ð!VÓWÐWÜ# HÓ-ˆä� ÔB×LÒLÈdÒSß™{¨=×?Ò?ÜÐ@ÓAÐAÜ	Ð˜h˜Z vÐ
.´S·Z±ZÕ@÷8ñ 8÷t6ð 6ñ Ð(Ó)÷ó *ðñ4 Ð'Ó(÷"ó )ð"õH÷&ñ ÷Mð Mñ
 -Ð-CÔDØóÐñ Ð,Ó-÷ó .ðõñ< Ð(Ó)÷ò ó *ðñ2 Ð+Ó,÷ð ó -ðô ˜}Ó3€M÷õ ð4 Ù”2—>’> &¨-×*=Ñ*=Ó>À×@RÑ@RÔSÜ˜!¤§
¢
¬4¯9ª9´S¸×9LÑ9L×9RÑ9RÓ5SÓ+TÓ UÕVÓWˆØÒ&Ü˜o¨{Ó;ˆKÙ# M°;ÐQUÔVˆ	ØÒ Ø%ˆMÙà˜ÕˆØˆØ˜QÔÙ'Ø˜{¸UôˆIð Ò$Ø )�Ø#�ØØ˜AÕŠKßÙá" =°!Ó4ˆ	ØÒ Ø%ˆMÙàá�}×*Ñ*¨M×,>Ñ,>×?Ò?ÜÐVÓWÐWä	ˆE�+�˜hÐ
'¬c¯j©jÕ9Ü—’ ¨×(;Ñ(;Ó<€Jð œ"Ÿ*™*Ô$Ü! *¨m×.@Ñ.@ÔAáˆz˜=×-Ñ-Ô.Ü	Ð
/´c·j±jÕAØ�}×)Ñ)Ð)Ð)r   ))Ú
__future__r   rª   r,  rG   rÁ   Údataclassesr   Ú	functoolsr   r   Útypingr   r   rB   Útorch.fxrU   Ú	torch.hubr	   Ú torch.multiprocessing.reductionsr
   Útorch.utils._content_storer   Úcompile_utilsr   r   Úcollections.abcr   r   ÚobjectrK   r   ÚInterpreterr    rk   rx   r†   r�   r”   r–   r4  r   r   r   Ú<module>rA     sî   ðÝ "ã Û Û 	Û 
Ý !ß $ß %ã Ý Ý Ý ;Ý 9ç 8÷ ß2ñ ‹8€ð ÷ð ó ðô6�5—8‘8×'Ñ'ô 6õrõ/õdFõõð ÷	ð 	ó ð	ð  LVñ	o*ð  ðo*ð "ðo*ð ðo*ð ðo*ð #'÷o*ò o*r   