
    /j                       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j7        f         Z8 ed          Z9 ed          Z: ed          Z;ej        j<        Z=g dZ>i Z?g Z@ejA        jB        jC        ZCddZDddZE eDg eCjF        jG        eCjF        jH        eCjI        jG        eCjI        jH        eCjJ        jG        eCjJ        jH        eCjK        jG        eCjK        jL        eCjK        jH        eCjK        jM        eCjN        jG        eCjN        jL        eCjN        jH        eCjN        jM        eCjO        jG        eCjO        jL        eCjO        j7        eCjO        jP        eCjO        jQ        eCjO        jR        eCjO        jH        eCjO        jM        eCjO        jS        eCjO        jT        eCjO        jU        eCjO        jV        eCjW        jG        eCjW        jH        eCjX        jG        eCjX        jH        eCjY        jG        eCjY        jH        eCjZ        jG        eCjZ        jH        eCj[        jG        eCj[        jH        eCj\        jG        eCj\        jH        R  Z] eDeCj^        jG        eCj_        jG        eCj_        jH        eCj`        jG        eCja        jb        eCja        jc        eCjd        jG        eCje        jG        eCje        jH        eCjf        jG        eCjf        jH                  ZgeCjh        fZiddZjejk        dd             Zldd$Zmdd&Zndd(Zo eme?jp                  dd-            Zq emel           emg e]          dd/                        Zr emeCjd        jG                  dd0            Zs emejB        jt        ju        jG                  	 ddd4            Zu emejB        jt        jv        jG                  dd6            Zv emejB        jt        jw        jG                  	 ddd7            Zw emeCja        jc                   emeCja        jb                  dd8                        Zxdd9Zy emey          dd:            Zz emeCj{        jG                  dd;            Z{ emeCj|        jG                  dd<            Z| emd=           dd>            Z}	 	 	 dd@dAddJZ~ emeCj        jG                  	 	 	 dddK            Z emeCj        j                  ddP            Z emeCj        jG                  	 	 	 dddQ            Z emeCj        jG                  	 	 	 dddR            Z	 dddYZdd^Z	 ddd`Z emeCj        jG                  ddb            Z emeCj        jG                   emeCj        jG                  ddc                        Z emeCj        jG                  dddddg            Z emeCj        j7                  	 dddk            Z emejB        jC        j        jG                   emejB        jC        j        jG                  ddm                        Z emejB        jC        j        jG                  ddo            Z emejB        jC        j        jG                  ddp            Z emejB        jC        j        jG                  	 dddt            ZddvZ emejB        jC        j        j7                  	 	 	 	 ddd{            Z emejB        jC        j        jG                  dd}            Z emejB        jC        j        jG                  	 	 	 dddd~dd            Z emd           dd            ZddZddZ eDddd          ZddZddZ emd           dd            Z emeCj        j7                  dd            Z emeCj        jG                  dd            Z emeCj        jG                   emeCj        jG                   emeCj        jG                   emeCj        jG                   emeCj        jG                  dd                                                            Z emeCj        jH                   emeCj        jH                  dd                        Z emeCj        jG                   emeCj        jG                  dd                        Z emeCj_        jG                   emeCj_        jH                   emeCj        jG                   emeCj        jG                  dd                                                Z emd egD                       dd            Z emeCj        jG        eCj        jG        g          dd            Z emejB        jC        j        jG                  	 	 ddd            Z emejB        jC        j        jG                  dd            Zi ZddZddZej        fddZ	 dddZejk        dd            ZdS )    )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_metaitemsreturndict[_T, bool]c                 8    t                               | d          S )NT)dictfromkeys)r,   s    a/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/torch/_subclasses/fake_impls.pyordered_setr3   I   s    ==%%%    devicetorch.deviceboolc                    | j         dk    S )Nhpu)typer5   s    r2   is_noncontiguous_supportedr<   O   s    ;%r4   type_r   c                    t           j        j                                        }|                     |          p*t          d |                                 D                       S )Nc              3  4   K   | ]}t          |          V  d S N)contains_tensor_types).0es     r2   	<genexpr>z(contains_tensor_types.<locals>.<genexpr>   s<       1 1%&a  1 1 1 1 1 1r4   )torch_C
TensorTypegetisSubtypeOfanycontainedTypes)r=   tensor_types     r2   rA   rA      sg    (%))++K[)) S 1 1*/*>*>*@*@1 1 1 . . r4   funcr   c                R   t          | t                    st          dt          |                      | j        }t          d |j        D                       rdS t          |j                  dk    o4|j        d         j        t          j
        j                                        u S )Nz func must be an OpOverload, got c              3  >   K   | ]}t          |j                  V  d S r@   )rA   r:   rB   args     r2   rD   z)_is_tensor_constructor.<locals>.<genexpr>   s-      
G
Gs **
G
G
G
G
G
Gr4   F   r   )
isinstancer   AssertionErrorr:   _schemarJ   	argumentslenreturnsrE   rF   rG   rH   )rM   schemas     r2   _is_tensor_constructorrZ      s    dJ'' NLT

LLMMM\F

G
Gf6F
G
G
GGG u 	FNq XV^A%6%;ux?R?V?V?X?X%Xr4   run_impl_checkUCallable[[OpOverload], bool] | OpOverload | list[OpOverload] | tuple[OpOverload, ...].Callable[[Callable[_P, _R]], Callable[_P, _R]]c                     d fd}|S )Nop_implCallable[_P, _R]r-   c                   t          t                    r&t          v rt          d           | t          <   nt          t          t
          f          rD ]} t          |          |            nJt                    st          dt                               t          
                    | f           | S )Nzduplicate registration: z%run_impl_check must be callable, got )rS   r   op_implementations_dictrT   listtupleregister_op_implcallabler:   r(   append)r_   opr[   s     r2   impl_decoratorz(register_op_impl.<locals>.impl_decorator   s    nj11 	H!888$%P%P%PQQQ6=#N33u66 	H$ . .$ $$W----. N++ $RD<P<PRR   &,,ng-FGGGr4   r_   r`   r-   r`    )r[   ri   s   ` r2   re   re      s)         " r4   rh   c                    | t           v S r@   rb   rh   s    r2   _is_op_registered_to_fake_rulero      s    (((r4   Nonec                    t                               | d            t          D ](\  }}|| u rt                              ||f            d S )d S r@   )rb   popr(   remove)rh   checkimpls      r2   _deregister_op_implrv      sb    D)))0  tB;;%,,eT];;;EE  r4   	fake_moder#   argskwargsc                0    t          |         | |g|R i |S r@   rm   rw   rM   rx   ry   s       r2   #dispatch_to_op_implementations_dictr|      s)     #4(DJ4JJJ6JJJr4   r   c                   |t           v rt          d|           t          |||d          \  }}d|v rt          |          |t          v r$|d         j        }|                    d          f}nt          j        d          }d}|                    dd           }||n|}t          j        d	          |d<   t          |           5   ||i |}d d d            n# 1 swxY w Y   t          | ||          S )
Nz8func must not be in _non_kwarg_device_constructors, got Trx   ry   normalize_to_only_use_kwargsnamesinputcpurk   r5   meta)
_non_kwarg_device_constructorsrT   r   r   _like_tensor_constructorsr5   rr   rE   r   r   )	rw   rM   rx   ry   _
new_kwargsdefault_device
out_devicers	            r2   constructorsr      sp   
 ---MtMM
 
 	
 14T  MAz &*4000(((#G,3w'') e,,$//J)5>J <//Jx 
&i	0	0 & &D$%*%%& & & & & & & & & & & & & & &iJ///s   
	CC#&C#c                    t          |||d          \  }}|                    d          }t          |           5   ||          }d d d            n# 1 swxY w Y   |S )NTr   r   )r   rr   r   )rw   rM   rx   ry   r   r   inpr   s           r2   non_kwarg_is_pinnedr      s     1dF  MAz ..
!
!C 
&i	0	0  DII              Hs   AAAnamestrobject | Nonec                    t          |           5   |||          }d d d            n# 1 swxY w Y   t          j        |d          }t          | |t          j        d                    S )Nr   r;   r   )r   rE   
empty_liker   r5   )rw   rM   r   rx   real_handlemeta_handles         r2   _record_function_enterr     s    
 
&i	0	0 ' 'd4&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ";v>>>Kiel5.A.ABBBs   )--handlec                    d S r@   rk   )rw   rM   r   s      r2   _record_function_exitr     s	     	Dr4   c                l    t          |           5   |||          cd d d            S # 1 swxY w Y   d S r@   r   )rw   rM   r   rx   s       r2   _record_function_enter_newr     s     
&i	0	0    tD$                                   s   )--c                P   t          |||d          \  }}|d         }|r|n|d         j        }t          j        d          |d<   |                    d          }t	          |           5   ||fi |}	d d d            n# 1 swxY w Y   | j                            | |	|          S )NTr   r5   r   r   )r   r5   rE   rr   r   fake_tensor_converterfrom_meta_and_device)
rw   rM   rx   ry   r   r   input_devicer   r   r   s
             r2   non_kwarg_tor   #  s
   
 1dF  MAz h'L!-M:g3F3MJ <//Jx
..
!
!C	%i	0	0 $ $D##
##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ *??1j  s   +
BBBc                    dS )NFrk   rn   s    r2   r*   r*   7  s    5r4   c           	     :   dd| j         rt          fdt          j        ||                                          D                       }|s?t
                              ||f          \  }}t          | |||t          d                    S t          |          )	Nxobjectr-   r7   c                    t          | t                    r| j        S t          | t          j        t          j        t          j        f          rdS dS )NTF)rS   r   _has_symbolic_sizes_stridesrE   SymIntSymFloatSymBoolr   s    r2   is_symbolicz3workaround_stride_incorrect_op.<locals>.is_symbolicB  sF    a$$ 	100a%,FGG 	4ur4   c              3  .   K   | ]} |          V  d S r@   rk   )rB   r   r   s     r2   rD   z1workaround_stride_incorrect_op.<locals>.<genexpr>K  s<       
 
 KKNN
 
 
 
 
 
r4   z2Cannot run fallback kernel for stride_incorrect_op)r   r   r-   r7   )
allow_fallback_kernelsrJ   	itertoolschainvaluespytreetree_flattenr   RuntimeErrorr   )rw   rM   rx   ry   require_dynamic	flat_args	args_specr   s          @r2   workaround_stride_incorrect_opr   <  s        '  
 
 
 
$-OD&--//$J$J
 
 
 
 
  
	#)#6#6f~#F#F Iy& QRR   't
,
,,r4   c                d    t          |           5   ||i |cd d d            S # 1 swxY w Y   d S r@   r   r{   s       r2   
resize_as_r   _  s     
&i	0	0 % %tT$V$$% % % % % % % % % % % % % % % % % %s   %))c                $    t          | |g|R i |S r@   )r   r{   s       r2   (_sparse_coo_tensor_with_dims_and_tensorsr   g  s$     	49$999&999r4   c                    t           j        j        | j        v o3| t          j        j        t          j        j        t          j	        j        fvS r@   )
rE   Tagdynamic_output_shapetagsatenindexTensornonzerodefaultrepeat_interleaverM   s    r2   <lambda>r   p  s>    /49< TJt|3T5K5RS	T r4   c                     t          |          r@   )r   r{   s       r2   	dyn_shaper   o  s     &d
+
++r4   TFunique_consecutiverQ   dim
int | Nonesortedreturn_inversereturn_countsr   )tuple[FakeTensor, FakeTensor, FakeTensor]c               v   | j         | j         j        st          |          |r|j        n|j        }||ddlm}	m}
  |
|                                          s|                                dk    rd}nz| j         	                                }t          j        dz
  }||                                n|                    |          } |
|          st          |          } |	||           ||r||_        n||_        ||                    |f          g}n/ |j        g |j        d |         ||j        |dz   d          R  g}|d uo|j        t#          j        d          k    }|s|r+|                    ||j        n|j        |         f          }n|                    d          }|                    |           |s|r7|                    ||d         j        n|d         j        |         f          }n|                    d          }|                    |           t)          |          S )Nr   _constrain_range_for_sizehas_free_symbolsrR   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_devicerE   r5   rg   rd   )rw   rM   rQ   r   r   r   r   r   nnzr   r   maxvalr   retreturn_if_dim_and_cpuinversecountss                    r2   _uniquer   z  s    	#"A 	$ *$///);
P#
%
%C #+	
 	
 	
 	
 	
 	
 	
 	

  		,, 	71A1A CC%<<>>C[1_F#&;CIIKKKCHHSMME##E** $U%%cv6666;! &.1++"%
{}}cV$$% s}JcioJsJSYsQwyy5IJJJKtOV5<PUCVCV0V #. #--S[		sy~>OPP--""JJw "- "s{s1v||QcAR@TUUq!!JJv::r4   c           	     ,    t          | ||d |||          S r@   r   )rw   rM   rQ   r   r   r   s         r2   unique2r     s     9dCv~}UUUr4   selfr   r   r$   c                   ddl m} |j        rt          S |                                }t          j        |dk    d            |dk    r|n||z   }|                    |          }t          |                                          }t          |	                                          }	d }
 ||dk              r!|
                                ||	|         z  z   }
n2 ||dk               r#|
                                ||z   |	|         z  z   }
|
B| j        | j        j        s| j        st          |          | j                                        }
||= |	|= |
t          d          |                    ||	|
          S )Nr   guard_or_falsec                     dS )Nz-select() cannot be applied to a 0-dim tensor.rk   rk   r4   r2   r   zmeta_select.<locals>.<lambda>  s    ? r4   z#new_storage_offset must not be None)r   r   	is_sparseNotImplementedr   rE   _check_indexr   rc   stridestorage_offsetr   allow_scalar_outputsr   r   rT   
as_strided)rw   rM   r   r   r   r   ndimr   new_size
new_stridenew_storage_offsets              r2   meta_selectr    s    EDDDDD~ 88::D		??  
 ##sTzC99S>>DDIIKK  Hdkkmm$$J~eqj!! V!0022UZ_5LL			"	" V!0022edljQTo5UU!&#8 '2 ' /t444 '0GGII3!BCCC??8Z1CDDDr4   c           
     h    t          | |||dk    r|n|t          |j        d          z  |||          S )Nr   rR   )r   r   r   )rw   rM   rQ   r   r   r   r   s          r2   
unique_dimr    sH     axxS3sx#3#33	 	 	r4   c           
     0    t          | |||d||d          S )NFTr   r   )rw   rM   rQ   r   r   r   s         r2   r   r     s3     	 	 	 	r4   	old_shapeSequence[IntLikeType]
old_stride	new_shapesize_obliviouslist[IntLikeType] | Nonec                h   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  }	|rjt          t	          |          dz
  d	d	          D ]F}
|
t	          |          dz
  k    rd|	|
<   t          ||
dz            d          |	|
dz            z  |	|
<   G|	S t	          |          dz
  }
|d	         }d}d}t          t	          |           dz
  d	d	          D ]}|| |         z  }|dk    s3 || |dz
           dk              r |||dz
           ||z  k              r|
dk    rf |||k               s |||
         dk              rB||z  |	|
<   |||
         z  }|
dz  }
|
dk    r$ |||k               - |||
         dk              B |||k              r d S |dk    r||dz
           }d}d}|
d	k    rd S |	S )Nr   )r   guard_or_truesym_eqr   r   r-   c                "    r |           S | S r@   rk   )r   r   r
  s    r2   maybe_guard_or_falsez-_compute_stride.<locals>.maybe_guard_or_false>  s      	%!>!$$$r4   c                "    r |           S | S r@   rk   )r   r  r
  s    r2   maybe_guard_or_truez,_compute_stride.<locals>.maybe_guard_or_trueD  s      	$ =###r4   rR   )r   r   r-   r   )r   r   r  r  rW   r   operatormulrc   ranger   )r  r  r	  r
  r  r  r  r   
zero_numelr   view_dchunk_base_stridetensor_numel
view_numeltensor_dr   r  s      `           @@r2   _compute_strider  2  sN                         9~~sS^^##8<A..E%%eqj11J  **66)Y+G+GHH  J%&C#i..$8J C	NNQ.B77 	 	FY!+++%&
6"" 	&1*-q11Jvz4JJ 6"" ^^aF%/^ !LJ#i..1,b"55  	(++q==	(Q, 71 <== ##8a<(L;L,LL   A++##J$=>> ''	&(9Q(>??  &02C%C
6"i//
! A++##J$=>> ''	&(9Q(>??  #":#=>> tt!||$.x!|$<! 
||tr4   atorch.Tensorr   ShapeType | tuple[ShapeType]c                &   ddl m t          j        |d          }t	          fd|                                 D                       pGt	          fd|                                 D                       pt	          fd|D                       S )Nr   has_hintFvalidatec              3  0   K   | ]} |           V  d S r@   rk   rB   sr#  s     r2   rD   z+_view_has_unbacked_input.<locals>.<genexpr>  s-      ..O......r4   c              3  0   K   | ]} |           V  d S r@   rk   r'  s     r2   rD   z+_view_has_unbacked_input.<locals>.<genexpr>  s-      33188A;;333333r4   c              3  0   K   | ]} |           V  d S r@   rk   r'  s     r2   rD   z+_view_has_unbacked_input.<locals>.<genexpr>  s-      ..188A;;......r4   )r   r#  utilsextract_shape_from_varargsrJ   r   r   )r  r   r#  s     @r2   _view_has_unbacked_inputr-    s     ?>>>>>,UUCCCE 	....QVVXX..... 	/3333

33333	/.........r4   size_oblivious_enabledc                V    ddl m} ddlm}m} t          j        d          t          j                                                    j	        dk    rP }D ]:}t          j        |dk               t          j                            |d          };| u r |           S |S t                    dk    rU } j        D ]:}t          j        |dk               t          j                            |d          };| u r |           S |S t#          t$          j        d          }t          j                                         |k     fd           t                    t           j                  k    r% | | j                            r |           S |rt)                     r5nt+                     r%t-                    }	                     |	          S t1                                                                            |	          }
|
                     |
          S |r=t          j        j        j        j        st?                     rtA           d
          S d j         d                                  d d}tC          |          )Nr   )view_ofr   r  Fr$  rR   r  c                      d j          d dS )Nz&Could not reshape a tensor with shape  as a tensor with shape !)r   )r  r   s   r2   r   z%_view_unbacked_meta.<locals>.<lambda>  s    bbbZ_bbb r4   )r
  )r.  z Cannot view a tensor with shape z and strides r3  r4  )"torch._primsr0  r   r   r  r+  r,  
infer_sizer   r   rE   _check_refs	unsqueezerW   r   squeezer   r  r  r   r   r   r   r  r   r   fxexperimental_configbacked_size_obliviousr-  _view_unbacked_meta
ValueError)r  r   r.  r0  r   r  _alengthshape_numelstridesnew_stridesmsgs   ``          r2   r?  r?    s   
 %$$$$$LLLLLLLL ,UUCCCE UAGGII..E 	v{{ 	/ 	/FL1%%%&&r2..BB7771::I 5zzQg 	- 	-FL1%%%$$R,,BB7771::Iua00K	L			[ bbbbb  
 5zzS\\!!nnVVE175K5K&L&L!wqzz$: ,a   , ,a@P@P ,-e44||E7+++!	!((**e4J  K ||E;///  K%;K#Au--K #1eEJJJJ
oQW
o
o188::
o
ogl
o
o
oC
S//r4   FakeTensor | Exceptionc           
        |j         s|j        rt          S t          j        g ||                                R  }t          |          rBt          | ||g|R  }t          t          |
                    t          j                            S t          | |t          t          |
                    t          j                            g|R  S Nmemory_format)r   	is_mkldnnr   r+  r6  r   r   
_view_metatyping_castr   clonerE   contiguous_format)rw   rM   r  r   views        r2   _reshape_copyrR    s     	{ ak  /e/QWWYY///Ea   
)T15u555

1H
II
 
 	
 
AGG%:QG$R$RSS
 	
 
 
 	
r4   c                    t           j        j        j        j        st          ||          r#t          t          t          ||                    S t          t          t          j	        j
        |g|R ddi          S )N
allow_copyF)rE   r;  r<  r=  r>  r-  rN  r   r?  r8  _reshape_view_helper)rw   rM   r  r   s       r2   rM  rM    s     x$: 
>V	5? ? 
 :':1e'D'DEEE8UUUUUuUU
 
 	
r4   )outrV  FakeTensor | Nonec               `    t          | ||g|R  }||S t                              d |          S )Nc                B    |                      t          j                  S rI  )rO  rE   rP  r   s    r2   r   z!_view_meta_copy.<locals>.<lambda>  s    !''(?'@@ r4   )rM  r   tree_map)rw   rM   r  rV  r   results         r2   _view_meta_copyr\    sF     	43U333F
??@@  r4   repeatsoutput_sizeIntLikeType | Nonec                    |L| j         | j         j        st          |          | j                                         }ddlm}  ||           |                    |          S Nr   r   )r   r   r   r   r   r   r   )rw   rM   r]  r^  r   s        r2   repeat_interleave_tensorrc    s     '&E ( .d333)@@BB 	TSSSSS!!+...[)))r4   Bint | float | bool | torch.SymInt | torch.SymFloat | torch.SymBoolc                   |j         x}|S | j        | j        j        s| j        st          |          t	          |j                  r| j                                        }nst          |j                  r| j                                        }nEt          |j                  r| 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)rw   rM   rQ   r   s       r2   local_scalar_denserk  ,  s    
 ]'"4 #. #
 +4000ci   R88::	#)	$	$ R6688	#)	$	$ R7799!"PSY"P"PQQQCMHr4   list[FakeTensor]c                z    t           j        j        j                            |                              d          S )NrR   )rE   opsr   r   r   unbind)rw   rM   rQ   s      r2   nonzero_numpyrp  E  s-     9>!))#..55a888r4   c                "   | j         | j         j        st          |          |j        x},ddlm}m} ddlm} ddl	m
}  ||                                          s|                                dk    rd}n| j                                         }t          j        dz
  } ||                                          s"t          |                                          }net!          j        |j                  j        }	 ||	j        |	j         j                  }
t-          |
j        |          rt          j        dz
  }n|
j        } |||           ||_        |                    ||                                fd|ft4          j                  S )Nr   r   IntInfinitybound_sympyrR   r   )rg  )r   r   r   nonzero_memor   r   r   torch.utils._sympy.numbersrs  torch.utils._sympy.value_rangesru  r   r   r   r   r   mathprodr   nodeexprvar_to_rangerS   uppernew_empty_stridedr   rE   int64)rw   rM   rQ   r   r   r   rs  ru  r   	prod_node
prod_ranges              r2   r   r   L  s    	#"A 	$ *$///(	
 	
 	
 	
 	
 	
 	
 	
 	;:::::??????		,, 	71A1A CC%<<>>C[1_F##CIIKK00 
.SYY[[)) Ici005	([NI$7$D 
 j.<< . [1_FF'-F%%cv6666  #swwyy!1As85; OOOr4   paddedoffsetstotal_Lc                   t          |          dk    r t          dt          |           d          |s| j        | j        j        st	          |          | j                                        }t          j        dz
  }ddlm	}m
}  ||                                          s!t          |                                          } ||d|           |g|j        dd          R }|                    |          S )NrR   z&Only one jagged dim is supported, got z offsetsr   r   )minr      )rW   rT   r   r   r   r   r   r   r   r   r   r   r   r   r   )	rw   rM   r  r  r  r   r   r   output_shapes	            r2   _padded_dense_to_jagged_forwardr    s,    7||qKS\\KKK
 
 	
  >'&E ( .d333%<<>>q	
 	
 	
 	
 	
 	
 	
 	

  // 	)((F!!'qf====/fl122.//LL)))r4   r   c                    ddl m}m}  | ||dk    || k                        r|S  | ||dk     ||  k                        r|| z   S  |||  k               rdS  ||| k              r| S d S )Nr   )r   sym_and)r   r   r  )r   r   r   r  s       r2   _compute_slice_indexr    s    MMMMMMMM~ggeqj%4-8899 		5TE>::	;	; t|		&	& q		%	% 4r4   rR   startendstepc                r   ddl m}m} | j        }	|                                }
|
dk    rt          d          t          |                                |          }t          |                                          }t          |	                                          }|dk    rt          d          |dnt          ||         |          } ||t          j        k              s|||         nt          ||         |          }d }|1|/ |||k              r||z
  |z   dz
  |z  }n |||k              rd}|[|	t          d          |	                                }t          j        |dk               t          j        |||         k               ||         |z  }|!|                                |||         z  z   }n=|	t          d          |	                                }t          j        |dk               |||<   |||<   |j        rt'          d          |                    |||          S )Nr   )r   statically_known_truez,slice() cannot be applied to a 0-dim tensor.zslice step must be positiverR   z$Must have shape_env to create symintz<Slice decomposition for quantized tensors aren't implemented)r   r   r  r   r   r   r   rc   r   r   r  r   r   rT   r   rE   r7  r   is_quantizedrj  r   )rw   rM   r   r   r  r  r  r   r  r   r   sizesrD  start_index	end_indexr   r   r   s                     r2   slice_forwardr    s          
 #I88::DqyyIJJJ
488::s
+
+CE4;;==!!Gqyy8999 }!!*>uSz5*Q*QK ! !344	38; 	c

!%*c22  $(H9#8>){233 	!K/$6:tCHH^K9455 	H  !GHHH3355X]###Xs+,,, $J ,,..ws|1KK !GHHH"99;;^q()))E#JGCL ?!J
 
 	
 ug~>>>r4   maskc                \   | j         | j         j        st          |          | j                                         }t          j        dz
  }ddlm}m} ddl	m
} ddlm}	  ||                                          s"t          |                                          }
net          j        |j                  j        } |	|j        |j         j                  }t+          |j        |          rt          j        dz
  }
n|j        }
|
dk    r|
} |||           |                    |f          S )NrR   r   r   rr  rt  r  r   )r   r   r   r   r   r   r   r   r   rw  rs  rx  ru  r   r   ry  rz  r   r{  r|  r}  rS   r~  r   )rw   rM   r   r  r   r   r   r   rs  ru  num_elementsr  r  s                r2   masked_selectr    s_   
 	#"A 	$ *$///


4
4
6
6C [1_F        766666;;;;;;
 DJJLL)) ,4::<<((Idj)).	 [1D1QRR
j&44 	,;?LL%+Lacv....>>3&!!!r4   )r5   layouttr  torch.Size | NonerD  tuple[int, ...] | Nonerg  torch.dtype | Nonetorch.device | Noner  torch.layout | Nonec                  |?|                                 |k    r't          d| d|                                            |?|                                |k    r't          d| d|                                           |%|j        |k    rt          d| d|j                   |%|j        |k    rt          d| d|j                   |%|j        |k    rt          d| d|j                   d S d S )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   rT   r   rg  r  r5   )rw   rM   r  r  rD  rg  r5   r  s           r2   assert_tensor_metadatar  *  sT    6688u LELL!&&((LL   88::   RgRRahhjjRR   7e KEKK!'KK   8v NVNNAHNN   8v NVNNAHNN   r4   c                2    t           j        j        | j        v S r@   )rE   r   data_dependent_outputr   r   s    r2   r   r   R  s    uy>$)K r4   c                     t          |          r@   )r   r{   s       r2   data_depr  R  s     't
,
,,r4   indiceslist[FakeTensor | None]c                p    |D ]2}|.|j         t          j        t          j        fv rt	          |           3d S r@   )rg  rE   r7   uint8r   )rM   r   r  r   s       r2   check_no_bool_index_tensorsr  [  sG      4 4U[0I!I!I-d3334 4r4   tuple[Any, ...]dict[str, Any]c                2   t          |||d          \  }}|d         j        }t          |           5   ||i |}t          |          s|                    |j                  }d d d            n# 1 swxY w Y   ||d         u r|S t          | ||          S NTr~   r   )r   r5   r   r<   r   r   r   )rw   rM   rx   ry   r   r   r   rV  s           r2   )run_and_return_new_tensor_of_input_devicer  c  s     14T  MAz G$+J	%i	0	0 + +dD#F##)*55 	+--	**C+ + + + + + + + + + + + + + +
 j!!!
ij111s   2A11A58A5r   primsprimc                    | j         t          v S r@   )	namespace_is_builtin_namespacesrn   s    r2   
is_builtinr  {  s    <111r4   c                f    t           j                            |                                 d          S )NMeta)rE   rF   ._dispatch_has_computed_kernel_for_dispatch_keyr   r   s    r2   r+   r+     s#    8BB499;;PVWWWr4   c                    t          |           o5|                                                     d          ot          |           S )Nzaten::_foreach_)r  r   
startswithr+   r   s    r2   r   r     s>    D!! 		011 r4   list[FakeTensor] | Nonec                  
 d t          j        ||                                          D             }	 t          |           5   ||i |}d d d            n# 1 swxY w Y   n# t          $ r
 t
          cY S w xY w|s|S |st          d          g }t          |          D ]X\  
}t          j	        |
fd|D                       \  }}	|
                    | j                            | ||                     Y|S )Nc                    g | ]O}t          |t          t          f          t          |          -t          |d          t          j                  M|PS )r   )rS   rc   rd   rW   rE   r   rP   s     r2   
<listcomp>z4foreach_run_and_map_input_device.<locals>.<listcomp>  sf       cD%=)) HH	
 s1vu|,,  r4   ztensor_lists must not be emptyc                     g | ]
}|         S rk   rk   )rB   tlis     r2   r  z4foreach_run_and_map_input_device.<locals>.<listcomp>  s    9W9W9WB"Q%9W9W9Wr4   )r   r   r   r   rj  r   rT   	enumerater   _find_common_devicerg   r   r   )rw   rM   rx   ry   tensor_listsout_metaout_fakemeta_tr5   r   r  s             @r2    foreach_run_and_map_input_devicer    s    ?499  L))44 	- 	-tT,V,,H	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-      ?=>>>Hx(( 
 
	6249W9W9W9W,9W9W9WXX	+@@66 	
 	
 	
 	
 Os5   A$ 	AA$ AA$ A A$ $A87A8c                    ddl m} t          |||d          \  }}|d         j        }| 5   ||i |}|                    |          cd d d            S # 1 swxY w Y   d S )Nr   )meta_index_TensorTr~   r   )torch._meta_registrationsr  r   r5   to)	rw   rM   rx   ry   r  r   r   r   rV  s	            r2   index_tensorr    s     <;;;;;04T  MAz G$+J	 " "000vvj!!" " " " " " " " " " " " " " " " " "s   AAA5tuple[FakeTensor, FakeTensor, FakeTensor, FakeTensor]c                V    ddl m} | 5   ||i |cd d d            S # 1 swxY w Y   d S )Nr   )meta_embedding_bag)r  r  )rw   rM   rx   ry   r  s        r2   embedding_bagr    s     =<<<<<	 3 3!!426223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s   ""c                &    t          | |||          S r@   )r  r{   s       r2   multi_device_op_defaultr    s     5YdFSSSr4   c                    t          |           5   ||i | d d d            n# 1 swxY w Y   t          |||d          \  }}|d         S r  )r   r   )rw   rM   rx   ry   r   r   s         r2   multi_device_op_outr    s    
 
&i	0	0  df               14T  MAz gs   	%))c                H   t          ||d          \  }}|d         |d         j        t          j        j        k    p"j        dk    o                                dk    fd           t          | ||          }t          j        j	        u r|d         S |S )NTr~   r   r   r   rR   c                 &    d  d dj          dS )NzMismatching z device between self (z) and values ()r;   )rM   self_devicer   s   r2   r   z index_put_impl.<locals>.<lambda>  s'    ftff;ffV\Vcfff r4   )
r   r   rE   r7  r   r   r  r   
index_put_r   )	rw   rM   rx   ry   r   r   rV  r  r   s	    `     @@r2   index_put_implr    s    
 14T  MAz !FW%1K	Lv))WfkQ.>.V6<<>>UVCVffffff  
 4ItT6
R
RCt&&&'""
r4   c                     t          |          r@   )r   r{   s       r2   nested_tensors_unsupportedr    s     't
,
,,r4   c                    g | ]X}|t           j        j        t           j        j        t           j        j        t           j        j        t           j        j        fvV|YS rk   )r   	is_pinnedr   r  r5   prim_Device_nested_tensor_from_tensor_listrV  )rB   r   s     r2   r  r  	  se        N"GNG0804

 
 	

 
 
r4   c                <    |t           v rt          d|           d S )NzNYI: )_device_not_kwarg_opsrT   r{   s       r2   nyir    s,      $$$^T^^,,, %$r4   KFakeTensor | tuple[FakeTensor | None, FakeTensor | None, FakeTensor | None]c                6    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 |}
n_t          j
                            |d         |d         d |d         |d         |d	         |d
         |d         |d         |d         
  
        }
|dk    r|d         j        s|d         j        s|d                                                             d          |d<   |d                             d          |d<   t!          |d                   dk    rp|d                             dd           |d                             dd           |d	                             dd           |d                             dd           t          j
                            |d         |d         |
          }	|dk    r|d         j        s|d         j        s|d                             d          |d<   |d                             d          |d<   t!          |d                   dk    rl|d                             d           |d                             d           |d	                             d           |d                             d           d d d            n# 1 swxY w Y   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xY w Y   d S )NTr~   r   weightr   r"  r   paddingdilation
transposedoutput_paddinggroups
bias_sizes)biasr   r  r  r  r  r  r     r  rR   r  torch.Tensor | Nonemem_fmttorch.memory_format | Noner-   rW  c                (   | | S |{|                                  dk    rM|t          j        k    r=|                     d                              |                              d          } n|                     |          } t          |           S )Nr  r  rJ  )r   rE   channels_lastr9  r  r:  r   )r  r  r5   rw   s     r2   convertzconv.<locals>.convertb  s     9Huuww!||5+> > >KKNN%%G%<<DDQGGDDwD//)Q///r4   rk   )r  r  r  r  r-   rW  )r   r   r   r   r   r#  r   convolutionr   rE   rF   _select_conv_backendrL  is_xpu
contiguousr9  rW   insert%_conv_determine_backend_memory_formatr:  rr   r   )rw   rM   rx   ry   r   r   kbatchr#  r  conv_backendr  rV  r5   s   `            @r2   convr    s    14T  MAz  ,F	 ;8 ;8x %7#)!, 	CBBBBBx 3	8 GGt'///$x<JJzJJ$x<<w'x(%h/&y1'
3),7#-.>#?%h/),7  =      Q"7+5 "7+2 
 '1&9&D&D&F&F&P&PQR&S&S
7#'1(';'E'Ea'H'H
8$z(+,,11x(//1555y)00A666z*11!Q777/0771===hDD7#Z%9< G
 Q"7+5 "7+2  '1&9&A&A!&D&D
7#'1(';'C'CA'F'F
8$z(+,,11x(,,Q///y)--a000z*..q111/044Q777w;8 ;8 ;8 ;8 ;8 ;8 ;8 ;8 ;8 ;8 ;8 ;8 ;8 ;8 ;8z0 0 0 0 0 0 0 
&i	0	0 
 
d  Z  4#+++73((	
 
 
 
 
 
 
 
 A((A((A%%
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s*   KK88K<?K<'N4NNNinputsweights	minlengthc                    | j         | j         j        st          |          | j                                         }ddlm}  ||           t          j        ||k               |                    |          S ra  )	r   r   r   r   r   r   rE   r7  r   )rw   rM   r  r  r  r   r   s          r2   bincountr  |  s     	#"A 	$ *$///"99;;HOOOOOOh'''	LY&'''H%%%r4   lengthsbatch_firsttuple[FakeTensor, FakeTensor]c                F   | j         | j         j        st          |          | j                                         }ddlm}  ||           |s|                    dd          }|j        dd          }|                    |          }|                    |f          }	||	fS )Nr   rb  rR   )	r   r   r   r   r   r   	transposer   r   )
rw   rM   r  r  r	  new_batch_sizer   res_sizepacked_data
batch_sizes
             r2   _pack_padded_sequencer    s     	#"A 	$ *$///(??AANOOOOOOn--- (!!!Q''|ABBH""8,,K!!>"344J$$r4   c                     d fd}|S )Nr_   r`   r-   c                    | t           <   | S r@   )FAST_OP_IMPLEMENTATIONS)r_   rM   s    r2   ri   z-register_fast_op_impl.<locals>.impl_decorator  s    (/%r4   rj   rk   )rM   ri   s   ` r2   register_fast_op_implr    s)          r4   btuple[IntLikeType, ...]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              p |dk              pk    
fd            |dk              rn|
<   t          |          S )Nr   r   rR   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  rk   )r  sizeAsizeBs   r2   r   zinfer_size.<locals>.<lambda>  s5     /U / /05/ /*+/ / / r4   )r   r   rW   r   r  rE   r7  rd   )r  r  r   dimsAdimsBr   expandedSizesoffsetdimAdimBr  r  r  s             @@@r2   r6  r6    sT    EDDDDDFFEFFEueD()sTzM4!8R$$ J JAqy6!qy6!199$!199$! 	N5A:&&V..!*D*DVQV/ / / / / /	
 	
 	
 %3N5A:$>$>I55Ear4   slow_refCallable[..., Any]type_promotion_kindr   Callable[..., FakeTensor]c                     d	 fd}|S )
Nmoder#   rx   r   ry   r-   r   c           	         d fd}t          d           }d }|D ]9}t          |t          j                  r|j        nd}||}t          ||          }:|t          d          d	d
lm}m	}	 |D ]]}t          |t          j                  rAt          |j                  t          |          k    r | |	|j        |                    r n^ |d          S t          j        d          }
|
}d }d}|D ]f}t          |t          j                  sd}||
k    r|j        j        dk    r|j        }|t          j        k    rd}Q|j        }Y||j        k    rd}g|rt!          |di\  }}d	}d}|D ]w}t          |t          j                  s||
k    r<|                                d	k    r$|j        |
k    r||k    r |d          c S |dz  }_|j        |k    r |d          c S xd}d}t%          |          rZ|D ]W}t          |t          j                  s|ot'          |t          j                  }|ot'          |t          j                  }X|rAt          d           t-           t          j        ||dt          j                  |          S |rAt          d           t-           t          j        ||dt          j                  |          S  |d          S )NrF  r   r-   r   c                p    t          d|             5   i cd d d            S # 1 swxY w Y   d S )Nzslow r   )rF  rx   ry   r'  r"  s    r2   slowz=make_fast_binary_impl.<locals>.fast_binary_impl.<locals>.slow  s    &&& 1 1x0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   +//zattempt fastrk   zfinal_shape must not be Noner   r1  z#both tensors nontrivially broadcastr   FTr$  rR   errorrJ  zfast is_contiguousr   )rg  r5   rK  r;   zfast channels_lastzno contiguity match)rF  r   r-   r   )r    rS   rE   r   r   r6  rT   r   r   r  rW   r5   r:   r   DEFAULTrg  r   r   r<   r   rP  r  r   empty)r'  rx   ry   r*  operandsfinal_shaperh   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   ```                r2   fast_binary_implz/make_fast_binary_impl.<locals>.fast_binary_impl  s#   	1 	1 	1 	1 	1 	1 	1 	1 	1
 	N###  )- 	9 	9B+5b%,+G+GOrxxRE"#
 %[%88KK !?@@@PPPPPPPP  
	? 
	?B2u|,,MMS%5%555"N66"(K#@#@AA 6  4=>>> l5!!&)+/%*" 	2 	2Bb%,// -1*##	%(?(? "	#&*I*QQQ15..#%8LL))-1*% 	 1/B OA| *+&%&" 	% 	%Bb%,// ##A")s:J:J15OOO4==(((.!3..m++tG}}$$$ , !%#' 
 &m44 	  !"el33 ) @%*A   & - @%*=   )( ! 	,---&!"'"9	   %	 	 	 	 $ 	,---&!"'"5	   %	 	 	 	 t)***r4   )r'  r#   rx   r   ry   r   r-   r   rk   )r"  r$  r7  s   `` r2   make_fast_binary_implr8    s7    K+ K+ K+ K+ K+ K+ K+Z r4   r   include_realc                X   t                      5  t          |           5  t          j        j        j                            |          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |rt          | ||j        |j	                  S t          | ||j                  S )N)real_tensor)
r   r   rE   rn  r   detachr   r   r5   r;  )rw   r   r9  rV  s       r2   fast_detachr=    s    
		 / /!=i!H!H / /in#++A../ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / O)S!(NNNNiah///s4   A,*A	A,A	A,A	A,,A03A0$dict[OpOverload, Callable[..., Any]]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  rn  r   addr   r8  r8  subr  divr   INT_TO_FLOATr<  r   r=  r  )rE   s    r2   r)   r)     s'   4%).,344eko..   5%).,344eko..   5%).,344eko..   5%).,344KO ? L	
 	
 	
   9%)./788EEE""r4   )r,   r'   r-   r.   )r5   r6   r-   r7   )r=   r   r-   r7   )rM   r   r-   r7   )r[   r\   r-   r]   )rh   r   r-   r7   )rh   r   r-   rp   )
rw   r#   rM   r   rx   r   ry   r   r-   r   )
rw   r#   rM   r   rx   r   ry   r   r-   r   )
rw   r#   rM   r   rx   r   ry   r   r-   r7   r@   )
rw   r#   rM   r   r   r   rx   r   r-   r   )rw   r#   rM   r   r   r   r-   rp   )
rw   r#   rM   r   r   r   rx   r   r-   r   )
rw   r#   rM   r   rx   r   ry   r   r-   rp   )TFF)rw   r#   rM   r   rQ   r   r   r   r   r7   r   r7   r   r7   r   r7   r-   r   )rw   r#   rM   r   rQ   r   r   r7   r   r7   r   r7   r-   r   )rw   r#   rM   r   r   r   r   r   r   r$   r-   r   )rw   r#   rM   r   rQ   r   r   r   r   r7   r   r7   r   r7   r-   r   )FFN)rw   r#   rM   r   rQ   r   r   r7   r   r7   r   r   r-   r   )F)
r  r  r  r  r	  r  r
  r7   r-   r  )r  r  r   r   r-   r7   )T)r  r  r   r   r.  r7   r-   r  )
rw   r#   rM   r   r  r   r   r   r-   rG  )
rw   r#   rM   r   r  r   r   r   r-   r   )rw   r#   rM   r   r  r   r   r$   rV  rW  r-   r   )
rw   r#   rM   r   r]  r   r^  r_  r-   r   )rw   r#   rM   r   rQ   r   r-   rd  )rw   r#   rM   r   rQ   r   r-   rl  )rw   r#   rM   r   rQ   r   r-   r   )rw   r#   rM   r   r  r   r  rl  r  r_  r-   r   )r   r$   r   r$   r-   r_  )r   NNrR   )rw   r#   rM   r   r   r   r   r   r  r   r  r   r  r   r-   r   )
rw   r#   rM   r   r   r   r  r   r-   r   )NNN)rw   r#   rM   r   r  r   r  r  rD  r  rg  r  r5   r  r  r  r-   rp   )rM   r   r   r   r  r  r-   rp   )
rw   r#   rM   r   rx   r  ry   r  r-   r   )
rw   r#   rM   r   rx   r   ry   r   r-   r  )
rw   r#   rM   r   rx   r   ry   r   r-   r  )
rw   r#   rM   r   rx   r   ry   r   r-   r  )Nr   )rw   r#   rM   r   r  r   r  rW  r  r$   r-   r   )rw   r#   rM   r   r  r   r  r   r	  r7   r-   r
  )rM   r   r-   r]   )r  r  r  r  r-   r  )r"  r#  r$  r   r-   r%  )rw   r#   r   r   r9  r7   r-   r   )r-   r>  )
__future__r   	functoolsr   ry  r  r   r   typingr   r   rN  r   r   r	   typing_extensionsr
   rE   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__rb   r(   _opsrn  r   r3   r<   r   r   rV  	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   r  new_full	new_zerosnew_onesr   _resize_output_r  
pin_memoryr  r5   r  r  _pin_memory_resize_outputr  _list_to_tensorr   rA   cacherZ   re   ro   rv   __contains__r|   r   r   profilerr   r   r   r   r*   r   r   r   r   r   _unique2r   selectr   r  r  r   r  r-  r?  rR  rQ  _unsafe_viewrM  	view_copyr\  r   rc  item_local_scalar_denserk  rp  r   r  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  r6  r,  r8  r=  r)   rk   r4   r2   <module>r     s   " " " " " "           



       J J J J J J J J J J J J J J ' ' ' ' ' '          # # # # # # 7 7 7 7 7 7 ! ! ! ! ! !                                         C B B B B B * * * * * *  (22222222<<<<<<'''''' z5</0Yt__WT]]WT]]		      z~& & & &        (K 'O'O' 	N' 	N	'
 	N' 	N' 	N' 	N' 	N' 	N ' 	O' 	O' 	O' 	O!' 	'  	!'" 	#'$ 	&%'& 	 ''( 	*)'* 	+', 	#-'. 	/'0 	)1'2 	#3'4 	-5'6 	O7'8 	O9': 	N;'< 	N='> 	"?'@ 	A'B 	MC'D 	ME'F 	NG'H 	NI'J 	MK'L 	MM' ' ' T $ (0(,OGNGN   #'"6!8     	 	 	 	   4) ) ) )    )677K K K 87K ()).-.//0 0 0 0/ *)0@ $.())   *)  %)$;CDDRV	C 	C 	C 	C ED	C %)$:BCC	 	 	 DC	 %)$?GHHRV        IH  $'%&&$'.!!   "! '&$   
 %&&- - - '&-D $/)**% % % +*% $?GHH: : : IH: T T 
, , , 
,  K  %K K K K K K\ $-'((
  V V V V )(V $+/"".E .E .E #".Eb $/)**      +** $)122
 !    322 !	L L L L L^   " $(F F F F FR $$,--
 
 
 .-
, $)#$$$#+,,
 
 
 -, %$
  $.()) "     *)$ $(/00
 '+	* * * * 10*. %).%-..%).4<==   >= /.. %)..6779 9 9 879 %).(011/P /P /P 21/Pd %).@HII #'%* %* %* %* JI%*P    %).&-..
 D? D? D? D? /.D?N %)..677(" (" (" 87("V %).8@AA
  $&* $# #'"&# # # # # BA#N KKLL- - - ML-4 4 4 42 2 2 2* %VWf== 2 2 2 2X X X X
   
      
 L $*#$$" " " %$"$ $%-..3 3 3 /.3 $(011$)#$$$*$%%$$,--$'/00T T T 10 .- &% %$ 21
T $)-  $$())
 
 
 *) ! 
 $.())$/)**   +* *)( $6>??$6:;;$/788$4<==- - - >= 98 <; @?-  &   - - - -
 4#+T-F-NOPP\ \ \ QP\~ %).)122
 "&& & & & 32&. %).6>??% % % @?%>  
   "  "  "  " N <[;bQ Q Q Q Qn DI0 0 0 0 0 # # # # # #r4   