
    i                       d dl mZ 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	m
ZmZmZmZ d dlm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 d dlmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d d	l&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d d
l-m.Z. d dl/m0Z0 erd dl1m2Z2m3Z3 d dl&m4Z4 d dl5m6Z6 ee)ejn                  f   Z8 ed      Z9 ed      Z: ed      Z;ej,                  jx                  Z=g dZ>i Z?g Z@ej                  j                  j                  ZCdYdZDdZdZE eDg eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  jn                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                   Z] eDeCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                        ZgeCj                  fZid[dZjej                  d\d       Zl	 	 	 	 d]dZmd^dZnd_dZo eme?j                        	 	 	 	 	 	 	 	 	 	 d`d       Zq emel       emg e]      	 	 	 	 	 	 	 	 	 	 dad              Zr emeCj                  j                        	 	 	 	 	 	 	 	 	 	 dbd       Zs emej                  j                  j                  j                        	 dc	 	 	 	 	 	 	 	 	 ddd       Zu emej                  j                  j                  j                        	 	 	 	 	 	 	 	 ded       Zv emej                  j                  j                  j                        	 dc	 	 	 	 	 	 	 	 	 dfd       Zw emeCj                  j                         emeCj                  j                        	 	 	 	 	 	 	 	 	 	 dad               Zxd^d!Zy emey      	 	 	 	 	 	 	 	 	 	 dad"       Zz emeCj                  j                        	 	 	 	 	 	 	 	 	 	 dad#       Z{ emeCj                  j                        	 	 	 	 	 	 	 	 	 	 dad$       Z| emd%       	 	 	 	 	 	 	 	 	 	 dgd&       Z}	 	 	 dhd'd(	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 did)Z~ emeCj                  j                        	 	 	 dh	 	 	 	 	 	 	 	 	 	 	 	 	 djd*       Z emeCj                  j                        	 	 	 	 	 	 	 	 	 	 	 	 dkd+       Z emeCj                  j                        	 	 	 dh	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dld,       Z emeCj
                  j                        	 	 	 dm	 	 	 	 	 	 	 	 	 	 	 	 	 dnd-       Z	 do	 	 	 	 	 	 	 	 	 dpd.Z	 	 	 	 	 	 dqd/Z	 dr	 	 	 	 	 	 	 dsd0Z emeCj                  j                        	 	 	 	 	 	 	 	 	 	 dtd1       Z emeCj                  j                         emeCj                  j                        	 	 	 	 	 	 	 	 	 	 dud2              Z emeCj                  j                        dd3	 	 	 	 	 	 	 	 	 	 	 dvd4       Z emeCj                  jn                        	 dc	 	 	 	 	 	 	 	 	 dwd5       Z emej                  j                  j"                  j                         emej                  j                  j$                  j                        	 	 	 	 	 	 	 	 dxd6              Z emej                  j                  j(                  j                        	 	 	 	 	 	 	 	 dyd7       Z emej                  j                  j*                  j                        dzd8       Z emej                  j                  j,                  j                        	 dc	 	 	 	 	 	 	 	 	 	 	 d{d9       Zd|d:Z emej                  j                  j0                  jn                        	 	 	 	 d}	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d~d;       Z emej                  j                  j4                  j                        	 	 	 	 	 	 	 	 	 	 dd<       Z emej                  j                  j6                  j                        	 	 	 dddd=	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd>       Z emd?       	 	 	 	 	 	 	 	 	 	 dgd@       Z	 	 	 	 	 	 	 	 ddAZ	 	 	 	 	 	 	 	 	 	 ddBZ eDdCdDdE      Zd^dFZd\dGZ emdH       	 	 	 	 	 	 	 	 	 	 ddI       Z emeCjH                  jn                        	 	 	 	 	 	 	 	 	 	 dadJ       Z emeCjL                  j                        	 	 	 	 	 	 	 	 	 	 ddK       Z emeCjP                  j                         emeCjR                  j                         emeCjT                  j                         emeCjV                  j                         emeCjX                  j                        	 	 	 	 	 	 	 	 	 	 dadL                                   Z emeCjR                  j                         emeCjV                  j                        	 	 	 	 	 	 	 	 	 	 dadM              Z emeCj^                  j                         emeCj`                  j                        	 	 	 	 	 	 	 	 	 	 dadN              Z emeCj                  j                         emeCj                  j                         emeCjd                  j                         emeCjf                  j                        	 	 	 	 	 	 	 	 	 	 dgdO                            Z emegD  cg c]q  } | eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  eCj                  j                  fvr| s c}       dgdP       Z emeCjl                  j                  eCjn                  j                  g      	 	 	 	 	 	 	 	 	 	 ddQ       Z emej                  j                  jr                  j                        	 	 d	 	 	 	 	 	 	 	 	 	 	 ddR       Z emej                  j                  jt                  j                        	 	 	 	 	 	 	 	 	 	 	 	 ddS       Zi Z	 	 	 	 ddTZ	 	 	 	 	 	 ddUZej|                  f	 	 	 	 	 ddVZ	 do	 	 	 	 	 	 	 ddWZej                  ddX       Zyc c} w )    )annotationsN)reduce)AnycastTYPE_CHECKINGTypeVarUnion)	ParamSpec)no_python_dispatcher)
OpOverload)canonicalize_dimelementwise_dtypesELEMENTWISE_TYPE_PROMOTION_KINDis_boolean_dtypeis_contiguous(is_contiguous_for_memory_format_or_falseis_contiguous_or_falseis_float_dtypeis_integer_dtypemake_contiguous_strides_for	ShapeType)DataDependentOutputExceptionDynamicOutputShapeException
FakeTensorin_kernel_invocation_managerrun_fallback_kernelUnsupportedOperatorException)_normalize_function_or_errorcount_label)CallableSequence)FakeTensorMode)IntLikeType_P_R_T)op_implementations_checksget_fast_op_implsstride_incorrect_ophas_metac                 .    t         j                  | d      S )NT)dictfromkeys)itemss    m/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/torch/_subclasses/fake_impls.pyordered_setr1   I   s    ==%%    c                     | j                   dk7  S )Nhpu)typedevices    r0   is_noncontiguous_supportedr8   O   s    ;;%r2   c                    t         j                  j                  j                         }| j	                  |      xs  t        d | j                         D              S )Nc              3  2   K   | ]  }t        |        y wN)contains_tensor_types).0es     r0   	<genexpr>z(contains_tensor_types.<locals>.<genexpr>   s      1%&a 1s   )torch_C
TensorTypegetisSubtypeOfanycontainedTypes)type_tensor_types     r0   r<   r<      sO    ((%%))+K[) S 1*/*>*>*@1 . r2   c                X   t        | t              st        dt        |              | j                  }t        d |j                  D              ryt        |j                        dk(  xrA |j                  d   j                  t        j                  j                  j                         u S )Nz func must be an OpOverload, got c              3  F   K   | ]  }t        |j                          y wr;   )r<   r5   )r=   args     r0   r?   z)_is_tensor_constructor.<locals>.<genexpr>   s     
Gs *
Gs   !F   r   )
isinstancer   AssertionErrorr5   _schemarE   	argumentslenreturnsr@   rA   rB   rC   )funcschemas     r0   _is_tensor_constructorrU      s    dJ'?T
|LMM\\F

Gf6F6F
GG 	FNNq XV^^A%6%;%;uxx?R?R?V?V?X%Xr2   c                     d fd}|S )Nc                <   t        t              r!t        v rt        d       | t        <   | S t        t        t
        f      rD ]  } t        |      |         | S t              st        dt                     t        j                  | f       | S )Nzduplicate registration: z%run_impl_check must be callable, got )rM   r   op_implementations_dictrN   listtupleregister_op_implcallabler5   r(   append)op_imploprun_impl_checks     r0   impl_decoratorz(register_op_impl.<locals>.impl_decorator   s    nj1!88$'??O%PQQ6=#N3  u6$ .$ $W-.  N+$;D<P;QR  &,,ng-FGr2   r^   Callable[_P, _R]returnrc    )r`   ra   s   ` r0   r[   r[      s    " r2   c                    | t         v S r;   rX   r_   s    r0   _is_op_registered_to_fake_ruleri      s    (((r2   c                    t         j                  | d        t        D ]"  \  }}|| u st        j                  ||f        y  y r;   )rX   popr(   remove)r_   checkimpls      r0   _deregister_op_implro      sA    D)0 tB;%,,eT];r2   c                (    t        |   | |g|i |S r;   rg   	fake_moderS   argskwargss       r0   #dispatch_to_op_implementations_dictru      s      #4(DJ4J6JJr2   c                   |t         v rt        d|       t        |||d      \  }}d|v rt        |      |t        v r"|d   j
                  }|j                  d      f}nt        j
                  d      }d}|j                  dd       }||n|}t        j
                  d	      |d<   t        |       5   ||i |}d d d        t        | |      S # 1 sw Y   xY w)
Nz8func must not be in _non_kwarg_device_constructors, got Trs   rt   normalize_to_only_use_kwargsnamesinputcpure   r7   meta)
_non_kwarg_device_constructorsrN   r   r   _like_tensor_constructorsr7   rk   r@   r   r   )	rr   rS   rs   rt   _
new_kwargsdefault_device
out_devicers	            r0   constructorsr      s    
 --FtfM
 	
 14TMAz &*400((#G,33w') e,$/J)5>J <</Jx 
&i	0 &$%*%&iJ//& &s   4	CCc                    t        |||d      \  }}|j                  d      }t        |       5   ||      }d d d        |S # 1 sw Y   S xY w)NTrx   rz   )r   rk   r   )rr   rS   rs   rt   r   r   inpr   s           r0   non_kwarg_is_pinnedr      sX     1dFMAz ..
!C 
&i	0 IHHs   	AAc                    t        |       5   |||      }d d d        t        j                  d      }t        | |t        j                  d            S # 1 sw Y   @xY w)Nr|   r6   r{   )r   r@   
empty_liker   r7   )rr   rS   namers   real_handlemeta_handles         r0   _record_function_enterr     sY    
 
&i	0 '4&' "";v>Kiell5.ABB' 's   
AAc                     y r;   re   )rr   rS   handles      r0   _record_function_exitr     s     	r2   c                V    t        |       5   |||      cd d d        S # 1 sw Y   y xY wr;   r   )rr   rS   r   rs   s       r0   _record_function_enter_newr     s+     
&i	0  D$     s   	(c                4   t        |||d      \  }}|d   }|r|n|d   j                  }t        j                  d      |d<   |j                  d      }t	        |       5   ||fi |}	d d d        | j
                  j                  | 	|      S # 1 sw Y   &xY w)NTr   r7   rz   r|   )r   r7   r@   rk   r   fake_tensor_converterfrom_meta_and_device)
rr   rS   rs   rt   r   r   input_devicer   r   r   s
             r0   non_kwarg_tor   #  s    
 1dFMAz h'L!-:g3F3M3MJ <</Jx
..
!C	%i	0 $#
#$ **??1j $ $s   
BBc                     y)NFre   rh   s    r0   r*   r*   7  s    r2   c           	        dd| j                   rjt        fdt        j                  ||j	                               D              }|s2t
        j                  ||f      \  }}t        | |||t        d            S t        |      )Nc                    t        | t              r| j                  S t        | t        j                  t        j
                  t        j                  f      ryy)NTF)rM   r   _has_symbolic_sizes_stridesr@   SymIntSymFloatSymBoolxs    r0   is_symbolicz3workaround_stride_incorrect_op.<locals>.is_symbolicB  s;    a$000a%,,FGr2   c              3  .   K   | ]  } |        y wr;   re   )r=   r   r   s     r0   r?   z1workaround_stride_incorrect_op.<locals>.<genexpr>K  s      
 KN
s   z2Cannot run fallback kernel for stride_incorrect_op)r   objectrd   bool)
allow_fallback_kernelsrE   	itertoolschainvaluespytreetree_flattenr   RuntimeErrorr   )rr   rS   rs   rt   require_dynamic	flat_args	args_specr   s          @r0   workaround_stride_incorrect_opr   <  s     '' 
$-OOD&--/$J
 
 #)#6#6f~#F Iy& QR  't
,,r2   c                T    t        |       5   ||i |cd d d        S # 1 sw Y   y xY wr;   r   rq   s       r0   
resize_as_r   _  s.     
&i	0 %T$V$% % %s   'c                "    t        | |g|i |S r;   )r   rq   s       r0   (_sparse_coo_tensor_with_dims_and_tensorsr   g  s     	49$9&99r2   c                    t         j                  j                  | j                  v xrO | t        j
                  j                  t        j                  j                  t        j                  j                  fvS r;   )
r@   Tagdynamic_output_shapetagsatenindexTensornonzerodefaultrepeat_interleaverS   s    r0   <lambda>r   p  sU    //499< TJJt||33T5K5K5R5RS	T r2   c                    t        |      r;   )r   rq   s       r0   	dyn_shaper   o  s     &d
++r2   Funique_consecutivec               V   | j                   | j                   j                  st        |      |r|j                  n|j                  }||ddlm}	m}
  |
|j                               s|j                         dk(  rd}nm| j                   j                         }t        j                  dz
  }||j                         n|j                  |      } |
|      st        |      } |	||       ||r||_        n||_        ||j                  |f      g}n4 |j                  g |j                  d | ||j                  |dz   d   g}|d uxr" |j                   t#        j$                  d      k(  }|s|r.|j                  ||j                  n|j                  |   f      }n|j                  d      }|j'                  |       |s|r4|j                  ||d   j                  n|d   j                  |   f      }n|j                  d      }|j'                  |       t)        |      S )Nr   _constrain_range_for_sizehas_free_symbolsrL   maxr{   )	shape_envallow_dynamic_output_shape_opsr   unique_consecutive_memounique_memo%torch.fx.experimental.symbolic_shapesr   r   numelcreate_unbacked_symintsysmaxsizesizeint	new_emptyshapefake_devicer@   r7   r]   rZ   )rr   rS   rK   dimsortedreturn_inversereturn_countsr   nnzr   r   maxvalr   retreturn_if_dim_and_cpuinversecountss                    r0   _uniquer   z  s    	#""AA *$//);#
%
%C #+	

  		,1A C%%<<>C[[1_F#&;CIIKCHHSME#E*U%cv6;!.1+"%
{}}cV$% s}}JciioJsJSYYsQwy5IJKtOV5<<PUCV0V.--S[		syy~>OP--"JJw-s{s1v||QcAR@TUq!JJv:r2   c           	     $    t        | ||d |||      S r;   r   )rr   rS   rK   r   r   r   s         r0   unique2r     s     9dCv~}UUr2   c                   ddl m} |j                  rt        S |j	                         }t        j                  |dk7  d        |dk\  r|n||z   }|j                  |      }t        |j                               }t        |j                               }	d }
 ||dk\        r|j                         ||	|   z  z   }
n' ||dk        r|j                         ||z   |	|   z  z   }
|
S| j                  "| j                  j                  s| j                  st        |      | j                  j                         }
||= |	|= |
t        d      |j!                  ||	|
      S )Nr   guard_or_falsec                      y)Nz-select() cannot be applied to a 0-dim tensor.re   re   r2   r0   r   zmeta_select.<locals>.<lambda>  s    r2   z#new_storage_offset must not be None)r   r   	is_sparseNotImplementedr   r@   _check_indexr   rY   stridestorage_offsetr   allow_scalar_outputsr   r   rN   
as_strided)rr   rS   selfr   r   r   ndimr   new_size
new_stridenew_storage_offsets              r0   meta_selectr     sU    E~~88:D		?
 #sTzC99S>DDIIK Hdkkm$Jeqj!!002UZ_5LL			"!002edljQTo5UU!&##8822.t44 '00GGI3!BCC??8Z1CDDr2   c           
     `    t        | |||dk\  r|n|t        |j                  d      z  |||      S )Nr   rL   )r   r   r   )rr   rS   rK   r   r   r   r   s          r0   
unique_dimr     s>     axS3sxx#33	 	r2   c           
     (    t        | |||d||d      S )NFTr   r   )rr   rS   rK   r   r   r   s         r0   r   r     s)     	 	r2   c                   ddl mmm} dfd}dfd}t	        |       dk(  rdgt	        |      z  S t        t        j                  | d      } ||dk(        }|r | || |            rt        |      S dgt	        |      z  }	|rUt        t	        |      dz
  dd      D ]7  }
|
t	        |      dz
  k(  rd|	|
<   t        ||
dz      d      |	|
dz      z  |	|
<   9 |	S t	        |      dz
  }
|d   }d}d}t        t	        |       dz
  dd      D ]  }|| |   z  }|dk(  s' || |dz
     dk7        s" |||dz
     ||z  k7        s7|
dk\  rN |||k        s |||
   dk(        r5||z  |	|
<   |||
   z  }|
dz  }
|
dk\  r |||k        r& |||
   dk(        r5 |||k7        r y |dkD  s||dz
     }d}d} |
dk7  ry |	S )Nr   )r   guard_or_truesym_eqc                    r |       S | S r;   re   )r   r   size_obliviouss    r0   maybe_guard_or_falsez-_compute_stride.<locals>.maybe_guard_or_false>  s    !!$$r2   c                    r |       S | S r;   re   )r   r   r   s    r0   maybe_guard_or_truez,_compute_stride.<locals>.maybe_guard_or_trueD  s     ##r2   rL   )r   r   rd   r   )r   r   r   r   rQ   r   operatormulrY   ranger   )	old_shape
old_stride	new_shaper   r   r  r  r   
zero_numelr   view_dchunk_base_stridetensor_numel
view_numeltensor_dr   r   s      `           @@r0   _compute_strider  2  sA     9~sS^##8<<A.E%eqj1J*6)Y+GHJ%&C#i.$8JC	NQ.B7 	FY!++%&
6" 	&1*-q1Jvz4JJ 6"		 ^aF%/^ !LJ#i.1,b"5 	(++q=	(Q, 71 <=#8a<(L;L,LL A+#J$=>'	&(9Q(>?%/2C%C
6"i//
! A+#J$=>'	&(9Q(>? #:#=>!|$.x!|$<! 
/0 |r2   c                    ddl m t        j                  |d      }t	        fd| j                         D              xs8 t	        fd| j                         D              xs t	        fd|D              S )Nr   has_hintFvalidatec              3  0   K   | ]  } |         y wr;   re   r=   sr  s     r0   r?   z+_view_has_unbacked_input.<locals>.<genexpr>  s     .O.   c              3  0   K   | ]  } |         y wr;   re   r  s     r0   r?   z+_view_has_unbacked_input.<locals>.<genexpr>  s     318A;3r  c              3  0   K   | ]  } |         y wr;   re   r  s     r0   r?   z+_view_has_unbacked_input.<locals>.<genexpr>  s     .18A;.r  )r   r  utilsextract_shape_from_varargsrE   r   r   )ar   r  s     @r0   _view_has_unbacked_inputr     sa     ?,,UUCE 	.QVVX.. 	/3
33	/...r2   c                    ddl m} ddlm}m} t        j                  d      t        j                   j                                j                  dk(  rO }D ]:  }t        j                  |dk(         t        j                  j                  |d      }< | u r |       S |S t              dk(  rY } j                  D ]:  }t        j                  |dk(         t        j                  j!                  |d      }< | u r |       S |S t#        t$        j&                  d      }t        j                   j                         |k(   fd       t              t         j                        k(  r! | | j                              r |       S |rt)               r)nt+               rt-              }	 j/                  |	      S t1         j3                          j5                         |	      }
|
 j/                  |
      S |rHt        j6                  j8                  j:                  j<                  st?               rtA         d
      S d j                   d j5                          d d}tC        |      )Nr   )view_ofr   r   Fr  rL   r  c                 *    d j                    d dS )Nz&Could not reshape a tensor with shape  as a tensor with shape !)r   )r  r   s   r0   r   z%_view_unbacked_meta.<locals>.<lambda>  s    8	AYZ_Y``ab r2   )r   )size_oblivious_enabledz Cannot view a tensor with shape z and strides r%  r&  )"torch._primsr"  r   r   r   r  r  
infer_sizer   r   r@   _check_refs	unsqueezerQ   r   squeezer   r  r  r   r   r   r   r  r   r   fxexperimental_configbacked_size_obliviousr   _view_unbacked_meta
ValueError)r  r   r'  r"  r   r   _alengthshape_numelstridesnew_stridesmsgs   ``          r0   r2  r2    s+   
 %L ,,UUCE UAGGI.E 	vv{ 	/FLL1%&&r2.B	/ 71:I 5zQgg 	-FLL1%$$R,B	- 71:Iua0K	LL		[ b
 5zS\!nVE1775K&Lqz$:a a@P-e4||E7++!	!((*e4JK ||E;// %%;;#Au-"1eEJJ,QWWI]188:,Nfglfmmn
oC
S/r2   c           
        |j                   s|j                  rt        S t        j                  g ||j                          }t        |      r<t        | ||g| }t        t        |j                  t        j                              S t        | |t        t        |j                  t        j                              g| S Nmemory_format)r   	is_mkldnnr   r  r)  r   r   
_view_metatyping_castr   cloner@   contiguous_format)rr   rS   r  r   views        r0   _reshape_copyrD    s     	{{akk /e/QWWY/Ea )T15u5

1H1H
I
 	
 
AGG%:Q:QG$RS
 	
 	
r2   c                   t         j                  j                  j                  j                  st        ||      rt        t        t        ||            S t        t        t        j                  j                  |g|ddi      S )N
allow_copyF)r@   r.  r/  r0  r1  r   r@  r   r2  r+  _reshape_view_helper)rr   rS   r  r   s       r0   r?  r?    sl     xx$$::>V	5? :':1e'DEE88UUUuU
 	
r2   )outc               T    t        | ||g| }||S t        j                  d |      S )Nc                B    | j                  t        j                        S r;  )rA  r@   rB  r   s    r0   r   z!_view_meta_copy.<locals>.<lambda>  s    !''(?(?'@ r2   )r?  r   tree_map)rr   rS   r  rH  r   results         r0   _view_meta_copyrM    s8     	43U3F
??@ r2   c                    |U| j                   | j                   j                  st        |      | j                   j                         }ddlm}  ||       |j                  |      S Nr   r   )r   r   r   r   r   r   r   )rr   rS   repeatsoutput_sizer   s        r0   repeat_interleave_tensorrS    sc     '&&EE-d33))@@B 	T!+.[))r2   c                   |j                   x}|S | j                  "| j                  j                  s| j                  st        |      t	        |j
                        r| j                  j                         }nxt        |j
                        r| j                  j                         }nHt        |j
                        r| j                  j                         }nt        d|j
                         ||_         |S )Nz local_scalar_dense/item NYI for )	item_memor   r   r   r   dtypecreate_unbacked_symfloatr   r   r   create_unbacked_symboolNotImplementedError)rr   rS   rK   r   s       r0   local_scalar_denserZ  ,  s    
 ]]'"44.. +400cii 88:	#))	$668	#))	$779!$DSYYK"PQQCMHr2   c                    t         j                  j                  j                  j	                  |      j                  d      S )NrL   )r@   opsr   r   r   unbind)rr   rS   rK   s      r0   nonzero_numpyr^  E  s.     99>>!!))#.55a88r2   c                J   | j                   | j                   j                  st        |      |j                  x}4ddlm}m} ddlm} ddl	m
}  ||j                               s|j                         dk(  rd}n| j                   j                         }t        j                  dz
  } ||j                               st        |j                               }nt!        j"                  |j$                        j&                  }	 ||	j(                  |	j                   j*                        }
t-        |
j.                  |      rt        j                  dz
  }n|
j.                  } |||       ||_        |j1                  ||j3                         fd|ft4        j6                        S )Nr   r   IntInfinitybound_sympyrL   r   )rV  )r   r   r   nonzero_memor   r   r   torch.utils._sympy.numbersra  torch.utils._sympy.value_rangesrc  r   r   r   r   r   mathprodr   nodeexprvar_to_rangerM   uppernew_empty_stridedr   r@   int64)rr   rS   rK   r   r   r   ra  rc  r   	prod_node
prod_ranges              r0   r   r   L  sI    	#""AA *$//(	
 	;?		,1A C%%<<>C[[1_F#CIIK0SYY[) IIcii055	(NNI$7$7$D$D
 j..< [[1_F'--F%cv6  #swwy!1As85;; OOr2   c                   t        |      dk7  rt        dt        |       d      |s| j                  | j                  j                  st	        |      | j                  j                         }t        j                  dz
  }ddlm	}m
}  ||j                               st        |j                               } ||d|       |g|j                  dd  }|j                  |      S )NrL   z&Only one jagged dim is supported, got z offsetsr   r   )minr      )rQ   rN   r   r   r   r   r   r   r   r   r   r   r   r   r   )	rr   rS   paddedoffsetstotal_Lr   r   r   output_shapes	            r0   _padded_dense_to_jagged_forwardrx    s     7|q4S\N(K
 	
 '&&EE .d33%%<<>q	

  /(F!'qf=/fll12./LL))r2   c                    ddl m}m}  | ||dk\  || k              r|S  | ||dk  ||  k\              r|| z   S  |||  k        ry ||| kD        r| S y )Nr   )r   sym_and)r   r   rz  )r   r   r   rz  s       r0   _compute_slice_indexr{    si    Mgeqj%4-89		5TE>:	;t|		&		%r2   c                   ddl m}m} | j                  }	|j	                         }
|
dk(  rt        d      t        |j	                         |      }t        |j                               }t        |j                               }|dk  rt        d      |dnt        ||   |      } ||t        j                  k(        s|||   nt        ||   |      }d }|)|' |||k\        r||z
  |z   dz
  |z  }n |||k\        rd}|P|	t        d      |	j                         }t        j                   |dk\         t        j                   |||   k         ||   |z  }||j#                         |||   z  z   }n5|	t        d      |	j                         }t        j                   |dk\         |||<   |||<   |j$                  rt'        d      |j)                  |||      S )Nr   )r   statically_known_truez,slice() cannot be applied to a 0-dim tensor.zslice step must be positiverL   z$Must have shape_env to create symintz<Slice decomposition for quantized tensors aren't implemented)r   r   r}  r   r   r   r   rY   r   r   r{  r   r   rN   r   r@   r*  r   is_quantizedrY  r   )rr   rS   r   r   startendstepr   r}  r   r   sizesr7  start_index	end_indexr   r   r   s                     r0   slice_forwardr    s   
 ##I88:DqyIJJ
488:s
+CE4;;=!Gqy899 }!*>uSz5*QK !!34 	c
!%*c2  $(H9#8){23!K/$6:tCHK945H  !GHH335X]#Xs+, $J ,,.ws|1KK !GHH"99;^q()E#JGCL!J
 	
 ug~>>r2   c                   | j                   | j                   j                  st        |      | j                   j                         }t        j
                  dz
  }ddlm}m} ddl	m
} ddlm}	  ||j                               st        |j                               }
nt        j                   |j"                        j$                  } |	|j&                  |j                   j(                        }t+        |j,                  |      rt        j
                  dz
  }
n|j,                  }
|
dkD  r|
} |||       |j/                  |f      S )NrL   r   r   r`  rb  rs  r   )r   r   r   r   r   r   r   r   r   re  ra  rf  rc  r   r   rg  rh  r   ri  rj  rk  rM   rl  r   )rr   rS   r   maskr   r   r   r   ra  rc  num_elementsro  rp  s                r0   masked_selectr    s    
 	#""AA *$//



4
4
6C [[1_F 7;
 DJJL)4::<(IIdjj)..	 1D1D1Q1QR
j&&4;;?L%++Lacv.>>3&!!r2   )r7   layoutc                  |2|j                         |k7  rt        d| d|j                                |2|j                         |k7  rt        d| d|j                                |*|j                  |k7  rt        d| d|j                         |*|j                  |k7  rt        d| d|j                         |+|j
                  |k7  rt        d| d|j
                         y y )Nz!Tensor sizes mismatch! Expected: z, Got: z#Tensor strides mismatch! Expected: z!Tensor dtype mismatch! Expected: z"Tensor layout mismatch! Expected: z"Tensor device mismatch! Expected: )r   rN   r   rV  r  r7   )rr   rS   tr  r7  rV  r7   r  s           r0   assert_tensor_metadatar  *  s    668u 3E7'!&&(L  88:  5gYgahhj\R  77e 3E7'!''K  88v 4VHGAHH:N  88v 4VHGAHH:N   r2   c                N    t         j                  j                  | j                  v S r;   )r@   r   data_dependent_outputr   r   s    r0   r   r   R  s    uyy>>$))K r2   c                    t        |      r;   )r   rq   s       r0   data_depr  R  s     't
,,r2   c                    |D ]<  }||j                   t        j                  t        j                  fv s3t	        |        y r;   )rV  r@   r   uint8r   )rS   r   indicesr   s       r0   check_no_bool_index_tensorsr  [  s<      4U[[0I!I-d334r2   c                   t        |||d      \  }}|d   j                  }t        |       5   ||i |}t        |      s|j	                  |j
                        }d d d        |d   u r|S t        | ||      S # 1 sw Y   xY wNTrw   rz   )r   r7   r   r8   r   r   r   )rr   rS   rs   rt   r   r   r   rH  s           r0   )run_and_return_new_tensor_of_input_devicer  c  s     14TMAz G$++J	%i	0 +D#F#)*5--		*C+
 j!!
ij11+ +s   /A::Br   primsprimc                &    | j                   t        v S r;   )	namespace_is_builtin_namespacesrh   s    r0   
is_builtinr  {  s    <<111r2   c                ^    t         j                  j                  | j                         d      S )NMeta)r@   rA   ._dispatch_has_computed_kernel_for_dispatch_keyr   r   s    r0   r+   r+     s     88BB499;PVWWr2   c                t    t        |       xr, | j                         j                  d      xr t        |       S )Nzaten::_foreach_)r  r   
startswithr+   r   s    r0   r   r     s4    D! 		01 r2   c           	     l   t        j                  ||j                               D cg c]B  }t        |t        t
        f      r*t        |      rt        |d   t        j                        r|D }}	 t        |       5   ||i |}d d d        s|S |st        d      g }t        |      D ][  \  }}	t        j                  ||D 
cg c]  }
|
|   	 c}
      \  }}|j!                  | j"                  j%                  | |	|             ] |S c c}w # 1 sw Y   xY w# t        $ r	 t        cY S w xY wc c}
w )Nr   ztensor_lists must not be empty)r   r   r   rM   rY   rZ   rQ   r@   r   r   rY  r   rN   	enumerater   _find_common_devicer]   r   r   )rr   rS   rs   rt   rK   tensor_listsout_metaout_fakeimeta_ttlr7   r   s                r0    foreach_run_and_map_input_devicer    s1    ??49cD%=)Hs1vu||,	 	L ))4 	-T,V,H	-
 =>>Hx( 
	6224,9WB"Q%9WX	++@@66	

 O;	- 	-  :Xs6   AD1D <	DD D1DD D.-D.c                    ddl m} t        |||d      \  }}|d   j                  }| 5   ||i |}|j	                  |      cd d d        S # 1 sw Y   y xY w)Nr   )meta_index_TensorTrw   rz   )torch._meta_registrationsr  r   r7   to)	rr   rS   rs   rt   r  r   r   r   rH  s	            r0   index_tensorr    sc     <04TMAz G$++J	 "00vvj!" " "s   AAc                N    ddl m} | 5   ||i |cd d d        S # 1 sw Y   y xY w)Nr   )meta_embedding_bag)r  r  )rr   rS   rs   rt   r  s        r0   embedding_bagr    s,     =	 3!42623 3 3s   $c                    t        | |||      S r;   )r  rq   s       r0   multi_device_op_defaultr    s     5YdFSSr2   c                    t        |       5   ||i | d d d        t        |||d      \  }}|d   S # 1 sw Y    xY wr  )r   r   )rr   rS   rs   rt   r   r   s         r0   multi_device_op_outr    sT    
 
&i	0 df 14TMAz g s   	4=c                R   t        ||d      \  }}|d   |d   j                  t        j                  j                  k(  xs$ j                  dk(  xr j                         dk(  fd       t        | ||      }t        j                  j                  u r|d   S |S )NTrw   r   rz   r   rL   c                 0    d  d dj                    dS )NzMismatching z device between self (z) and values ()r6   )rS   self_devicer   s   r0   r   z index_put_impl.<locals>.<lambda>  s&    ,tf$:;-~V\VcVcUddef r2   )
r   r   r@   r*  r   r   r  r   
index_put_r   )	rr   rS   rs   rt   r   r   rH  r  r   s	    `     @@r0   index_put_implr    s    
 14TMAz !FW%11K	LLv)))WfkkQ.>.V6<<>UVCVf
 4ItT6
RCt&&&'""
r2   c                    t        |      r;   )r   rq   s       r0   nested_tensors_unsupportedr    s     't
,,r2   c                0    |t         v rt        d|       y )NzNYI: )_device_not_kwarg_opsrN   rq   s       r0   nyir    s#      $$uTF^,, %r2   c                $    t        |||d      \  }}|d   j                   5  |d   j                  }|d   j                  d   }ddlm}  ||      sd }	n|t        j                  j                  u r t        j                  j                  di |}
nDt        j                  j                  |d   |d   d |d   |d   |d	   |d
   |d   |d   |d   
      }
|dk(  r|d   j                  s|d   j                  s|d   j                         j                  d      |d<   |d   j                  d      |d<   t!        |d         dk(  rT|d   j#                  dd       |d   j#                  dd       |d	   j#                  dd       |d   j#                  dd       t        j                  j%                  |d   |d   |
      }	|dk(  r|d   j                  s|d   j                  s|d   j'                  d      |d<   |d   j'                  d      |d<   t!        |d         dk(  rP|d   j)                  d       |d   j)                  d       |d	   j)                  d       |d   j)                  d       d d d        	 	 	 	 	 	 d fd}t+               5   |di |}|t        j                  j                  u r ||	      cd d d        S  ||d   	       ||d   |	       ||d   d       fcd d d        S # 1 sw Y   xY w# 1 sw Y   y xY w)NTrw   rz   weightr   r  r   paddingdilation
transposedoutput_paddinggroups
bias_sizes)biasr   r  r  r  r  r  r     rs  rL   c                    | | S |i| j                         dk(  rD|t        j                  k(  r1| j                  d      j	                  |      j                  d      } n| j	                  |      } t        |       S )Nr  rs  r<  )r   r@   channels_lastr,  r  r-  r   )r  mem_fmtr7   rr   s     r0   convertzconv.<locals>.convertb  st     9Huuw!|5+>+> >KKN%%G%<DDQGDDwD/)Q//r2   re   )r  ztorch.Tensor | Noner  ztorch.memory_format | Nonerd   FakeTensor | None)r   r   r   r   r   r  r   convolutionr   r@   rA   _select_conv_backendr>  is_xpu
contiguousr,  rQ   insert%_conv_determine_backend_memory_formatr-  rk   r   )rr   rS   rs   rt   r   r   kbatchr  r  conv_backendr  rH  r7   s   `            @r0   convr    sc    14TMAz  ,,F	 ;8x %%7#))!, 	C Gt''///$xx<<JzJ$xx<<w'x(%h/&y1'
3),7#-.>#?%h/),7  =    Q"7+55"7+22 '1&9&D&D&F&P&PQR&S
7#'1(';'E'Ea'H
8$z(+,1x(//15y)00A6z*11!Q7/0771=hhDD7#Z%9<G
 Q"7+55"7+22&0&9&A&A!&D
7#'1(';'C'CA'F
8$z(+,1x(,,Q/y)--a0z*..q1/044Q7w;8z00)C0	0 
&i	0 
 Z 4##+++3(	
 
 A(A(A%
 
U;8 ;8T
 
s   IK:-L"L:LLc                    | j                   | j                   j                  st        |      | j                   j                         }ddlm}  ||       t        j                  ||k\         |j                  |      S rO  )	r   r   r   r   r   r   r@   r*  r   )rr   rS   inputsweights	minlengthr   r   s          r0   bincountr  |  sm     	#""AA *$//""99;HOh'	LLY&'H%%r2   c                @   | j                   | j                   j                  st        |      | j                   j                         }ddlm}  ||       |s|j                  dd      }|j                  dd  }|j                  |      }|j                  |f      }	||	fS )Nr   rP  rL   )	r   r   r   r   r   r   	transposer   r   )
rr   rS   r  lengthsbatch_firstnew_batch_sizer   res_sizepacked_data
batch_sizes
             r0   _pack_padded_sequencer    s     	#""AA *$//((??ANOn-!!!Q'||ABH""8,K!!>"34J$$r2   c                     d fd}|S )Nc                    | t         <   | S r;   )FAST_OP_IMPLEMENTATIONS)r^   rS   s    r0   ra   z-register_fast_op_impl.<locals>.impl_decorator  s    (/%r2   rb   re   )rS   ra   s   ` r0   register_fast_op_implr    s     r2   c                  
 ddl m} t        |       }t        |      }t        ||      }dg|z  }t	        |dz
  dd      D ]|  
|dz
  
z
  }|dz
  |z
  }|dz
  |z
  }	|dk\  r| |   nd|	dk\  r||	   ndt        j                   |dk(        xs  |dk(        xs k(  
fd        |dk(        rn|
<   ~ t        |      S )Nr   r   rL   r  c                     d d d  dS )NzThe size of tensor a (z#) must match the size of tensor b (z) at non-singleton dimension r  re   )r  sizeAsizeBs   r0   r   zinfer_size.<locals>.<lambda>  s'    ,UG 4005w 7**+A/ r2   )r   r   rQ   r   r  r@   r*  rZ   )r  br   dimsAdimsBr   expandedSizesoffsetdimAdimBr  r  r  s             @@@r0   r)  r)    s     EFEFEueD()sTzM4!8R$ JAqy6!qy6!19$!19$! 	5A:&V.!*DVQV/	
 %35A:$>5Ea1J2 r2   c                     d fd}|S )Nc           	         d fd}t        d       }d }|D ]:  }t        |t        j                        r|j                  nd}||}t        ||      }< |t        d      ddlm}m	}	 |D ]Z  }t        |t        j                        st        |j                        t        |      k(  s@ | |	|j                  |            sZ n	  |d      S t        j                  d      }
|
}d }d	}|D ]  }t        |t        j                        sd
} ||
k(  r%|j                  j                  dk7  r|j                  }|#t        j                  k7  rd
}b|j                  }o||j                  k7  sd
} |rt!        |di\  }}d}d}|D ]r  }t        |t        j                        s||
k7  r7|j#                         dk(  r$|j                  |
k(  r||k\  r
 |d      c S |dz  }Z|j                  |k7  sj |d      c S  d
}d
}t%        |      r`|D ][  }t        |t        j                        s|xr t'        |t        j(                        }|xr t'        |t        j*                        }] |r>t        d       t-         t        j.                  ||dt        j(                        |      S |r>t        d       t-         t        j.                  ||dt        j*                        |      S  |d      S )Nc                `    t        d|         5   i cd d d        S # 1 sw Y   y xY w)Nzslow r   )r9  rs   rt   modeslow_refs    r0   slowz=make_fast_binary_impl.<locals>.fast_binary_impl.<locals>.slow  s6    %u& 1001 1 1s   $-zattempt fastre   zfinal_shape must not be Noner   r#  z#both tensors nontrivially broadcastr{   FTtype_promotion_kindrL   errorr<  zfast is_contiguousr|   )rV  r7   r=  r6   zfast channels_lastzno contiguity match)r9  strrd   r   )r    rM   r@   r   r   r)  rN   r   r   r   rQ   r7   r5   r   DEFAULTrV  r   r   r8   r   rB  r  r   empty)r  rs   rt   r   operandsfinal_shaper_   r   r   r   r{   common_devicecommon_dtypehas_different_input_dtypesr   current_cpu_scalars_on_non_cpumax_cpu_scalars_on_non_cpudefinitely_contiguousdefinitely_channels_lastr  r  s   ```                r0   fast_binary_implz/make_fast_binary_impl.<locals>.fast_binary_impl  s   	1 	1
 	N#  )- 	9B+5b%,,+GrxxRE"#
 %[%8K	9  !?@@P  
	?B2u||,MS%55"6"((K#@A
	? =>> ll5!&)+/%*" 	2Bb%,,/-1*#		%(? "		#&*I*Q*QQ15.#%88L)-1*	2 & 1/BOA| *+&%&" 	%Bb%,,/#A"))s:J15OO=(.!3.m+G}$	% !%#' 
 &m4 !"ell3) @%*A*A & - @%*=*= ) !,-&!"'"9"9	 %	 	 $,-&!"'"5"5	 %	 	 )**r2   )r  r#   rs   r   rt   r   rd   r   re   )r  r  r  s   `` r0   make_fast_binary_implr    s    K+Z r2   c                ^   t               5  t        |       5  t        j                  j                  j
                  j                  |      }d d d        d d d        |r#t        | |j                  |j                        S t        | |j                        S # 1 sw Y   MxY w# 1 sw Y   QxY w)N)real_tensor)
r   r   r@   r\  r   detachr   r   r7   r  )rr   r   include_realrH  s       r0   fast_detachr    s     
	 /!=i!H /iinn##++A./ /)S!((NNiahh//	/ / / /s"   B#4BB#B 	B##B,c                 `   dd l }  t        | j                  j                  j                  j
                        t        | j                  j                                t        | j                  j                  j                  j
                        t        | j                  j                                t        | j                  j                  j                  j
                        t        | j                  j                                t        | j                  j                  j                  j
                        t        | j                  j                  t        j                                t        | j                  j                  j                  j                        t               t         S )Nr   )r  )torch._refsr  r\  r   addr   r  r+  subr  divr   INT_TO_FLOATr  r   r  r  )r@   s    r0   r)   r)     s   4%))..,,334ekkoo. 5%))..,,334ekkoo. 5%))..,,334ekkoo. 5%))..,,334KKOO ? L L	
 9%))..//778E""r2   )r/   r'   rd   zdict[_T, bool])r7   ztorch.devicerd   r   )rG   r   rd   r   )rS   r   rd   r   )r`   zUCallable[[OpOverload], bool] | OpOverload | list[OpOverload] | tuple[OpOverload, ...]rd   .Callable[[Callable[_P, _R]], Callable[_P, _R]])r_   r   rd   r   )r_   r   rd   None)
rr   r#   rS   r   rs   r   rt   r   rd   r   )
rr   r#   rS   r   rs   r   rt   r   rd   r   )
rr   r#   rS   r   rs   r   rt   r   rd   r   r;   )
rr   r#   rS   r   r   r  rs   object | Nonerd   r   )rr   r#   rS   r   r   r   rd   r  )
rr   r#   rS   r   r   r  rs   r  rd   r   )
rr   r#   rS   r   rs   r   rt   r   rd   r  )TFF)rr   r#   rS   r   rK   r   r   
int | Noner   r   r   r   r   r   r   r   rd   )tuple[FakeTensor, FakeTensor, FakeTensor])rr   r#   rS   r   rK   r   r   r   r   r   r   r   rd   r   )rr   r#   rS   r   r   r   r   r   r   r$   rd   r   )rr   r#   rS   r   rK   r   r   r   r   r   r   r   r   r   rd   r   )FFN)rr   r#   rS   r   rK   r   r   r   r   r   r   r  rd   r   )F)
r  Sequence[IntLikeType]r	  r!  r
  r!  r   r   rd   zlist[IntLikeType] | None)r  torch.Tensorr   ShapeType | tuple[ShapeType]rd   r   )T)r  r"  r   r#  r'  r   rd   r"  )
rr   r#   rS   r   r  r   r   r   rd   zFakeTensor | Exception)
rr   r#   rS   r   r  r   r   r   rd   r   )rr   r#   rS   r   r  r   r   r$   rH  r  rd   r   )
rr   r#   rS   r   rQ  r   rR  IntLikeType | Nonerd   r   )rr   r#   rS   r   rK   r   rd   zBint | float | bool | torch.SymInt | torch.SymFloat | torch.SymBool)rr   r#   rS   r   rK   r   rd   list[FakeTensor])rr   r#   rS   r   rK   r   rd   r   )rr   r#   rS   r   rt  r   ru  r%  rv  r$  rd   r   )r   r$   r   r$   rd   r$  )r   NNrL   )rr   r#   rS   r   r   r   r   r   r  r  r  r  r  r   rd   r   )
rr   r#   rS   r   r   r   r  r   rd   r   )NNN)rr   r#   rS   r   r  r   r  ztorch.Size | Noner7  ztuple[int, ...] | NonerV  ztorch.dtype | Noner7   ztorch.device | Noner  ztorch.layout | Nonerd   r  )rS   r   r   r   r  zlist[FakeTensor | None]rd   r  )
rr   r#   rS   r   rs   ztuple[Any, ...]rt   zdict[str, Any]rd   r   )
rr   r#   rS   r   rs   r   rt   r   rd   zlist[FakeTensor] | None)
rr   r#   rS   r   rs   r   rt   r   rd   z5tuple[FakeTensor, FakeTensor, FakeTensor, FakeTensor])
rr   r#   rS   r   rs   r   rt   r   rd   zKFakeTensor | tuple[FakeTensor | None, FakeTensor | None, FakeTensor | None])Nr   )rr   r#   rS   r   r  r   r  r  r  r$   rd   r   )rr   r#   rS   r   r  r   r  r   r  r   rd   ztuple[FakeTensor, FakeTensor])rS   r   rd   r  )r  r!  r  r!  rd   ztuple[IntLikeType, ...])r  zCallable[..., Any]r  r   rd   zCallable[..., FakeTensor])rr   r#   r   r   r  r   rd   r   )rd   z$dict[OpOverload, Callable[..., Any]])
__future__r   	functoolsr   rg  r  r   r   typingr   r   r@  r   r   r	   typing_extensionsr
   r@   torch._custom_optorch._loggingtorch._prims_common_prims_commonr  torch._dispatch.pythonr   
torch._opsr   r   r   r   r   r   r   r   r   r   r   r   torch._subclasses.fake_tensorr   r   r   r   r   r   torch.fx.operator_schemasr   torch.utils._statsr    collections.abcr!   r"   r#   torch.typesr$   r   FakeTensorLiker%   r&   r'   _pytreer   __all__rX   r(   _opsr\  r   r1   r8   r   r   rH  	full_like	ones_like	rand_like	generatorgenerator_out
randn_likerandint_likeTensor_generator
Tensor_outTensor_generator_out	low_dtypelow_generator_dtypelow_dtype_outlow_generator_dtype_out
zeros_liker   rm  new_full	new_zerosnew_onesr~   _resize_output__nested_tensor_from_tensor_list
pin_memoryr  r7   prim_Device	is_pinned_pin_memory_resize_outputr  _list_to_tensorr}   r<   cacherU   r[   ri   ro   __contains__ru   r   r   profilerr   r   r   r   r*   r   r   r   r   r   _unique2r   selectr   r   r   r   r  r   r2  rD  rC  _unsafe_viewr?  	view_copyrM  r   rS  item_local_scalar_denserZ  r^  r   rx  r{  slicer  r  _assert_tensor_metadatar  r  r  r  r  r  r+   r  r   r  _embedding_bagr  _unsafe_index_putcopycopy_slice_scatterdiagonal_scatterr  r  	index_putr  r  _nested_view_from_buffer_nested_view_from_buffer_copyr  r  r  convolution_backwardr  r  r  r  r  r)  r  r  r  r)   r   s   0r0   <module>rh     s   "     
  J J '    # 7 !     C * 2<' z5<</0t_T]T]			    zz~~&  ( 'OO'OO' 	NN' 	NN	'
 	NN' 	NN' 	NN' 	NN' 	NN' 	NN  ' 	OO' 	OO' 	OO' 	OO!!' 	'  	!'" 	#'$ 	&&%'& 	  ''( 	**)'* 	+', 	##-'. 	/'0 	))1'2 	##3'4 	--5'6 	OO7'8 	OO9': 	NN;'< 	NN='> 	""?'@ 	A'B 	MMC'D 	MME'F 	NNG'H 	NNI'J 	MMK'L 	MMM' T $  ((00((,,OOGGNNGGNN  #'"6"6!8  	 	
 44) )667KK%/K8;KGJKK 8K ().-./00%/08;0GJ00 0 *0@ $..(()%/8;GJ	 *  %))$$;;CCDRV	C	C%/	C7:	CBO	C	C E	C %))$$::BBC		%/	9<			 D	 %))$$??GGHRV  %/ 7: BO   I  $''%%&$''..!%/8;GJ " '$
 %&--%/-8;-GJ-- '-D $//))*%%%/%8;%GJ%% +% $??GGH::%/:8;:GJ:: I: T
,,%/,8;,GJ,	,
,  K  %KK
K 
K 
	K
 K K K K /K\ $--''(
  VV
V 
V 	V
 V V /V )V $++//".E.E
.E .E 
	.E
 .E .E #.Eb $//))*  
 
 
	
    / +* $))112
 !
 
 	
  
 / 32 !	L$L%L %L 	L
 L^8	" $(FF'F !F 	FR $$$,,-

%/
4>
HK

 .
, $))##$$##++,



 
 	

 
 - %
  $..(() "
  	
 
  *$ $((//0
 '+	**
* * $	*
 * 1*. %))..%%--.%))..44<<=%/6@G > /. %))....66799%/96@99 89 %))..((001/P 2/Pd %))..@@HHI #'%*%*
%* %* 	%*
  %* %* J%*P %))..&&--.
 D?D?
D? D? 
	D?
 D? 
D? D? D? /D?N %))....667("("%/("7A("IS("(" 8("V %))..88@@A
  $&* $# #'"&##
# # 	#
 $# #  #  # 
# B#N KL--%/-8;-GJ-	- M-4
4&41H4	422
2 2 	2
 2* %VWf= 2X
 
  %/ 8; GJ  
 L $**##$""%/"8;"GJ"" %"$ $%%--.33%/38;3GJ3:3 /3 $((001$))##$$**$$%$$$,,-$''//0TT%/T8;TGJTT 1 . & % 2
T $))-- $$$(()

%/
8;
GJ

 * !
 $..(()$//))*%/8;GJ + *( $66>>?$66::;$//778$44<<=--%/-8;-GJ-	- > 9 < @-  ' NN""GGNNGG00880044

 	
--
 4##++T-F-F-N-NOP\\%/\8;\GJ\P\ Q\~ %))..))112
 "&&&
& & 	&
 & & 3&. %))..66>>?%%
% % 	%
 % #% @%>  

3" " !6" " N <[;b;bQ Q8Q Qn DI00",0<@00 # #Cs   ,A6
