
    ¯wg*k                   X   d Z 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	m
Z
mZ ddlZddlmc m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mZmZ erdd	lmZ g d
Z ej@                  ejB                  d      Z"ddZ#d Z$ e"d      dd       Z% e"d      dd       Z& e"d       ejN                  d      dd              Z( e"d       ejN                  d      dd              Z) e"d      dאdd       Z* e"d      dאdd       Z+ e"d      dאdd       Z, e"d      dd       Z- e"d       dd!       Z. e"d"       ej^                  d#d#d#d$      dؐdd%              Z0 ej^                  d#d#d&      dd'       Z1dd(Z2dd)Z3 e"d*      dd+       Z4 e"d,      dd-       Z5 e"d.      dd/       Z6 e"d0      dd1       Z7 e"d2       ej^                  d#d3      dd4              Z8 e"d5       ej^                  d#d3      dd6              Z9 e"d7      dd8       Z: e"d9      dd:       Z; e"d;      dd<       Z< e"d=      dd>       Z= e"d?       ej^                  d#d#d#d@d@      ddA              Z> e"dB      ddC       Z? e"dD      ddE       Z@ e"dF      ddG       ZA e"dH       ejN                  ddIdJK      ddL              ZB e"dM      ddN       ZC e"dO      ddP       ZD e"dQ      ddR       ZE e"dS      ddT       ZF e"dU      ddV       ZG e"dW      ddX       ZH e"dY      ddZ       ZI e"d[       ejN                  dd\dK      dd]              ZJ e"d^      dd_       ZK ejN                  d      dd`       ZL e"da ej                  dbdc      gd       e"de ej                  dfdg      gd       e"dh ej                  didjdkl      gd      dِddm                     ZN e"dn       ej^                  d#d3do      ddp              ZO e"dq      ddr       ZP e"ds      ddt       ZQ e"du      ddv       ZR e"dw       ejN                  d      ddx              ZS e"dy       ejN                  d      ddz              ZT e"d{       ejN                  d      dd|              ZU e"d}       ejN                  dd      dd~              ZV e"d       ejN                  d       ej^                  d#d#d3dd#      	 	 dd                     ZW e"d       ejN                  d       ej^                  d#d#d#d3d3d3d#d3d3	      	 	 dd                     ZX e"d       ejN                  ddk      dאdd              ZY e"d       ejN                  d       ej^                  d#d3d3      dd                     ZZ e"d       ej^                  d#d      dd              Z[ e"d       ejN                  d      dd              Z\ e"d      dd       Z] e"d       ej^                  d#d3d3d3      dאdd              Z^ e"d       ej^                  d#d#d3d3      dאdd              Z_ e"d      	 d	 dd       Z` e"d       ej^                  d#dd3d3      dאdd              Za e"d      	 d	 dd       Zb e"d       ej^                  d#d3d3      dېdd              Zc e"d       ejN                  d       ej^                  d#d3d#      dd                     Zd e"d      dd       Ze e"d      dאdd       Zf e"d      dd       Zg e"d      dd       Zh e"d      dd       Zi e"d       ejN                  d      dd              Zj e"d       ejN                  d      dd              Zk e"d      dd       Zl e"d      dd       Zm e"d      dd       Zn e"d       ej^                  d#d@d@      dd              Zo e"d       ejN                  d       ej^                  d#d$d      	 d	 	 	 	 	 	 	 dd                     Zp e"d       ej^                  d#d3      dd              Zq e"d       ej^                  d#d3do      dאdd              Zr e"d      dd       Zs e"d      d        Zt e"d ej                  dej                  j                  j                  j                  ddk       e#d      gd       e"d ej                  dej                  j                  j                  j                  ddk       e#dë      gd       e"d ej                  dej                  j                  j                  j                  ddk       e#dƫ      gd      dȄ                      Z{  e"dɫ       e{dej                  j                  j                  j                  dd            Z|  e"d˫       e{dej                  j                  j                  j                  dd            Z}  e"dͫ       e{dej                  j                  j                  j                  dd            Z~ e"d ej                  dej                  j                  j                  j                         e#dЫ      gd       e"d ej                  dej                  j                  j                  j                         e#dҫ      gd       e"d ej                  dej                  j                  j                  j                         e#dԫ      gd      dՄ                      Z e"d ej                  ddej                  j                  j                  j                         e#d׫      gd       e"d ej                  ddej                  j                  j                  j                         e#dګ      gd       e"d ej                  ddej                  j                  j                  j                         e#dܫ      gd       e"d ej                  ddej                  j                  j                  j                  e|       e#dޫ      gd       e"d ej                  ddej                  j                  j                  j                  e}       e#d      gd       e"d ej                  ddej                  j                  j                  j                  e~       e#d      gd      dd                                          ZddZd Z e"d      dd       ZddZ e"d       e"d       e"d      dd                     Z e"d       e"d       e"d      dd                     Z e"d      	 	 	 	 	 	 	 	 	 	 dd       Z e"d ej                  ddd       e#d      gd       e"d ej                  ddd       e#d      gd       e"d ej                  ddd       e#d      gd       e"d ej                  ddd       e#d      gd       e"d  ej                  ddd       e#d      gd       e"d ej                  ddd       e#d      gd      dd                                          Z e"d      	 	 d֐d       Z e"d      d֐d       Z e"d	      d
        Zd ZddZ e"d      d֐d       Z e"d       ejN                  dd      d֐d              Z e"d       ejN                  dd      ed֐d                     Z e"d       ejN                  dd      d֐d              Zd֐dZ e"d       ejN                  dd      d֐d              Zd֐dZ e"d       ejN                  dd      ed֐d                     Z e"d       ejN                  dd      ed֐d                     Z e"d      d֐d       Z e"d      d֐d        Z e"d!      d֐d"       Z e"d#       ed$      d֐d%              Z e"d&       ed$      d֐d'              Z e"d(       ed$      d֐d)              Z e"d*      d֐d+       Z e"d,      d֐d-       Z e"d.      d֐d/       Z e"d0       ej^                  d#d#d#d3      dd֐d1              Z e"d2       ej^                  d#d3do      dאd֐d3              Z e"d4       ej^                  d#d3d3      d֐d5              Z e"d6       ej^                  d#d#d#dddd3dd3d3d3d3d3      	 d	 d֐d7              Z e"d8       ej^                  d#d#d#dd&dd3      	 	 d֐d9              Z e"d:       ej^                  d#d#d#dddd3dd3	      	 	 d֐d;              Z e"d<       ej^                  d#d#d#dd#dd3      	 	 d֐d=              Z e"d>       ej^                  d#d#d#dd#dd3      	 	 d֐d?              Z e"d@       ej^                  d#d#d#dd#dd3      	 	 d֐dA              Z e"dB       ej^                  d#d#d#dddd3d      	 	 d֐dC              Z e"dD       ej^                  d#d#d#dddd3d      	 	 d֐dE              Z e"dF       ej^                  d#d#d#dddd3d      	 	 d֐dG              Z e"dH       ej^                  d#d#d#d#d#d3d$d$d3	      	 	 d֐dI              Z e"dJ       ejN                  ddkdkdk       ej^                  d#dd#d#d$      	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddK                     Z e"dL       ejN                  ddkdkdk       ej^                  d#dd#d#d$d      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddM                     Z e"dN       ej^                  d#d#d#d#d#dd$d$d	      	 	 	 	 	 	 	 	 	 	 ddO              Z e"dP       ej^                  d#d3d3d3      d֐dQ              Z e"dR       ejN                  d       ej^                  d#d@d@d@      d֐dS                     Z e"dT       ejN                  d      d֐dU              Z e"dV       ej^                  d#d3d#      d֐dW              Z e"dX      d֐dY       Z e"dZ      d֐d[       Z e"d\      d֐d]       Z e"d^       ej^                  d#d#dd      	 d	 d֐d_              Z e"d`      d֐da       Z e"db       ej^                  d#d#d3d$      d֐dc              Z e"dd      d֐de       Z e"df      d֐dg       Z e"dh      d֐di       Z e"dj      d֐dk       Z e"dl      d֐dm       Z e"dn      d֐do       Z e"dp      d֐dq       Z e"dr      d֐ds       Z e"dt       ej^                  d#d#      d֐du              Z e"dv       ej^                  d#d#      d֐dw              Z e"dx      dd֐dy       Z e"dz       ejN                  dd      d֐d{              Z e"d|      dd֐d}       Z e"d~       ejN                  dd      d֐d              Z e"d       ejN                  d       ej^                  d#dd3      d֐d                     Z e"d       ejN                  d       ej^                  d#dd3      d֐d                     Z e"d       ejN                  d       ej^                  d#d#d3      d֐d                     Z e"d      d֐d       Z e"d       e"d       ej^                  d#d$d3      d֐d                     Z e"d ej                  d      gd       e"d ej                  d      gd       e"d ej                  d      gd       e"d ej                  d      gd       e"d ej                  d      gd       e"d ej                  d      gd      dՐd                                          Z e"d       ej^                  d#d@dd3d#      dאd֐d              Z e"d       ej^                  d#d#d#d3      d֐d              Z e"d       ej^                  d#d3d3      d֐d              Z e"d       ej^                  d#d3d3d3      d֐d              Z e"d       ej                  ddd      d֐d              Z e"d       ej                  ddd      d֐d              Z e"d       ej                  ddd      d֐d              Z e"d       ej                  ddd      d֐d              Z e"d       ej                  ddd      d֐d              Z e"d       ej                  ddd      d֐d              Z e"d       ej                  ddd      d֐d              Z e"d       ej                  ddd      d֐d              Z e"d       ej                  ddd      d֐d              Z e"d       ej^                  d#d3d#d#d#d#      	 	 d	 d֐d              Z e"d       ej^                  d#d3d#d#d#d#      	 	 	 	 	 d	 d֐d              Z e"d      	 d	 d֐d       Z e"d      d֐d       Z e"d      	 d	 d֐d       Z e"d      dd֐d       Z e"d       ej^                  d#d3d#d#d#      dܐd֐d              Z e"d       ej^                  d#d3d#d#d#d#      	 	 	 	 	 d	 d֐d              Z e"d      	 d	 d֐d       Z e"d      d֐d       Z e"dë       ej^                  d#d3d#d#d#      dܐd֐dĄ              Z e"dū       ej^                  d#d3d#d#d#d#      	 	 	 	 	 d	 d֐dƄ              Z e"dǫ      	 d	 d֐dȄ       Z e"dɫ      	 d	 d֐dʄ       Z e"d˫      	 	 	 	 	 d	 d֐d̄       Z e"dͫ      	 d	 d֐d΄       Z e"dϫ      d֐dЄ       Z e"dѫ      d֐d҄       Z e"dӫ       ejN                  d       ej^                  d#d$d$      ddԄ                     Z e"dի       ejN                  d       ej^                  d#      d֐dք                     Z e"d׫       ejN                  dd\dK       ej^                  d#      d֐d؄                     Z e"d٫       ej^                  d#      d֐dڄ              Z e"d۫       ej^                  d#d$      d֐d܄              Z e"dݫ       ej^                  d#d$      d֐dބ              Z e"d߫      d֐d       Z e"d       ej^                  d#d3      d֐d              Z e"d       ej^                  d#d3d3do      dאd֐d              Z e"d      d֐d       Z e"d       ej^                  d#d3d3d3d3do      dאd֐d              Z e"d      d֐d       Z e"d      d֐d       Z e"d      d֐d       Z e"d      	 d	 d֐d       Z e"d       ej^                  d#d3      d֐d              Z e"d       ej^                  d#d3      d֐d              Z	 	 d	 d֐dZ ej^                  d#d#d#d3d3d$d3d3d3	      	 	 d֐d       Z  ej^                  d#d#d#d#d3d3d$d3d3	      	 	 d֐d       Z e"d      d֐d       Z e"d      d֐d       Z e"d ej                  d       e#d      gd       e"d ej                  d        e#d      gd       e"d ej                  d       e#d      gd      dd                     Z e"d       ej^                  d#d3      d֐d              Z e"d      d֐d	       Z e"d
       ej^                  d#d3      d֐d              Z e"d       ej^                  d#d#d3      d֐d              Z e"d       ej^                  d#d#d3d@d#      	 	 d֐d              Z	 e"d      d֐d       Z
 e"d      d֐d       Z e"d      d֐d       Z e"d      d֐d       Z e"d      	 	 	 	 d	 d֐d       Z e"d      	 	 	 	 d	 d֐d       Z e"d       ej^                  d#d$d$d3do      d֐d              Z e"d      dd֐d       Z e"d        ej^                  d#      d֐d!              Z e"d"       ej^                  d#      d֐d#              Z e"d$       ejN                  ddkdk       ej^                  d#d3d3      d֐d%                     Z e"d&       ej^                  d#      d֐d'              Z e"d(      dאd֐d)       Z e"d*       ej^                  d#      d֐d+              Z e"d,      d֐d-       Z e"d.      d֐d/       Z e"d0       ej^                  d#d3d3d3      d֐d1              Z e"d2       ej^                  d#d#d      	 	 	 	 	 	 	 	 dd3              Z e"d4       ej^                  d#d#d      	 	 	 	 	 	 	 	 dd5              Z e"d6       ej^                  d#d3d#d#      d֐d7              Z e"d8       ej^                  d#d3d#d#      d֐d9              Z e"d:      d֐d;       Z e"d<      d֐d=       Z  e"d>      d֐d?       Z! e"d@      ed֐dA              Z" e"dB      d֐dC       Z# e"dD       ej^                  d#d3d#d#      dܐd֐dE              Z$ ej^                  d#dd3d3      d֐dF       Z% e"dG      d֐dH       Z& e"dI      d֐dJ       Z' e"dK      d֐dL       Z( e"dM      d֐dN       Z) e"dO       ej^                  d#dd3      d֐dP              Z* e"dQ      d֐dR       Z+ e"dS      	 	 d֐dT       Z, e"dU      d֐dV       Z- e"dW      d֐dX       Z. e"dY      d֐dZ       Z/ e"d[      d֐d\       Z0 e"d]       ej^                  d#d#ddd#      	 	 	 	 	 	 	 	 	 	 	 	 dd^              Z1 e"d_       ej^                  d#d$ddd#      	 	 	 	 	 	 	 	 	 	 	 	 dd`              Z2 e"da       ej^                  d#d#ddd#      	 	 	 	 	 	 	 	 	 	 	 	 ddb              Z3 e"dc       ej^                  d#d#d3      dd֐dd              Z4 e"de       ej^                  d#dd      dd֐df              Z5 e"dg       ej^                  d#d3dd#      	 d	 d֐dh              Z6 e"di      d֐dj       Z7 e"dk       ej^                  d#d&      dאddl              Z8 e"dm      d֐dn       Z9 e"do       ej^                  d#d&      dddp              Z: e"dq       ejN                  ddkdkdk       ej^                  d#d3d#d#d$d3      	 	 d֐dr                     Z; e"ds       ej^                  d#d#d3      d֐dt              Z< e"du      d֐dv       Z= e"dw      d֐dx       Z> e"dy      d֐dz       Z? e"d{      d֐d|       Z@ e"d}      d֐d~       ZAd֐dZBd֐dZC e"d       ej^                  d#d#d3d      d֐d              ZD e"d       ej^                  d#d#d3      d֐d              ZE e"d       ejN                  d       ej^                  d#d#dd3      dאd֐d                     ZF e"d      d֐d       ZG e"d      d֐d       ZH e"d      d֐d       ZI e"d       ej^                  d#dd3d#d#d#d#      	 	 	 	 	 	 d	 	 	 dd              ZJ e"d      d֐d       ZK e"d      d֐d       ZL e"d       ej^                  d#d@d@      d֐d              ZM e"d       ej^                  d#d#      d֐d              ZN e"d      dאd֐d       ZO e"d       ej^                  d#dd      d֐d              ZP e"d       ej^                  d#d#d3      dאd֐d              ZQ e"d      	 	 d	 d֐d       ZR e"d      d֐d       ZS e"d      d֐d       ZT e"d      dאd֐d       ZU e"d      d֐d       ZV e"d      d֐d       ZW e"d      d֐d       ZX e"d      d֐d       ZY e"d      dאd֐d       ZZ e"d      d֐d       Z[ e"d      d֐d       Z\ e"d      d֐d       Z] e"d      	 	 	 	 dd       Z^ e"d      d֐d       Z_ e"d      d֐d       Z` e"d      d֐d       Za e"d      d֐d       Zb e"d      d֐d       Zc e"d      dd       Zd e"dë      ddĄ       Ze e"dū      ddƄ       Zf e"dǫ      d֐dȄ       Zg e"dɫ      ddʄ       Zh e"d˫      d֐d̄       Zi e"dͫ       e"dΫ      ddτ              Zj e"dЫ       e"dѫ      dd҄              Zk e"dӫ      d dԄ       Zly(  zhThis file exports ONNX ops for opset 9.

Opset 9 is supported by ONNX release 1.4.1
release on 01/23/19
    )annotationsN)CallableSequenceTYPE_CHECKING)_C)
_constants_deprecation_type_utilserrorssymbolic_helper)GLOBALS)	jit_utilsregistration)Number(  absacosaddaddcmuladdmmaliasamaxaminaminmaxarangeargmaxargmin
as_strided	as_tensorasinatanatan2baddbmm
batch_norm	bernoullibitwise_not
bitwise_orbmmbroadcast_tensorsbroadcast_to	bucketizecatcdistceil	clamp_max	clamp_minclampcloneconstant_pad_nd
contiguousconv_tbcconv_transpose1dconv_transpose2dconv_transpose3dconv1dconv2dconv3dconvert_element_typeconvolutioncoscosine_similaritycrosscumsumdetachdimdivdotdropouteluembedding_bag	embedding
empty_likeemptyeqerfexp	expand_asexpandeyefillflattenfloor_dividefloorfloordivfrobenius_norm	full_likefullgathergegeluget_pool_ceil_paddingglu
group_normgthann_window
hardshrinkhardsigmoid	hardswishhardtanh	index_add
index_copy
index_fill	index_putindex_selectindexinstance_normis_floating_point	is_pinnedisnanitemkl_div
layer_normle
leaky_relulerpliftlinalg_crosslinalg_matrix_normlinalg_normlinalg_vector_normlinearlinspacelog_sigmoidlog_softmaxloglog10log1plog2logical_andlogical_not
logical_orlogical_xorlogit	logsumexp	lstm_celllstmltmasked_fillmasked_fill_matmulmax_pool1d_with_indicesmax_pool2d_with_indicesmax_pool3d_with_indicesmaxmaximummeshgridminminimummishmmmovedimmse_lossmulmultinomialmvnarrownative_layer_normneneg	new_emptynew_fullnew_ones	new_zerosnonzero_numpynonzeronormnumelnumpy_Tone_hot	ones_likeonesonnx_placeholderpadpairwise_distancepermutepixel_shufflepixel_unshufflepowpreluprim_constant_chunkprim_constant_splitprim_constant	prim_dataprim_device
prim_dtypeprim_ifprim_layoutprim_list_constructprim_list_unpack	prim_loopprim_maxprim_min
prim_shapeprim_tolistprim_tuple_construct	prim_typeprim_unchecked_castprim_uninitialized	rand_likerandrandint_likerandint
randn_likerandn
reciprocalreflection_padrelurelu6	remainderrepeat_interleaverepeatreplication_pad
reshape_asreshaperollrrelursqrtrsubscalar_tensorscatter_addscatterselectselusigmoidsignsilusinsizeslicesoftmaxsoftplus
softshrinksortsplit_with_sizessplitsqrtsquaresqueezestackstd_meanstdsubttaketantanh
tanhshrinktensor	thresholdtotopk	transposetrue_dividetype_asunbindunfoldunsafe_chunkunsafe_split_with_sizesunsafe_split	unsqueezeunsupported_complex_operatorsnoop_complex_operatorsunusedvar_meanvarview_asviewwherewrap_logical_op_with_cast_towrap_logical_op_with_negation
zeros_likezeroszero	   )opsetc                      fd}|S )z5Exports the function in the current global namespace.c                L    | t               <   t        j                         | S N)globals__all__append)funcnames    _/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/torch/onnx/symbolic_opset9.pywrapperz_export.<locals>.wrapper1  s    	$t     )r  r  s   ` r  _exportr!  .  s    
 Nr  c                    | j                  d      }|j                  t        j                  j	                                |S )z%Represents "missing" optional inputs.prim::Constant)opsetTyper   OptionalTypeofTensor)gns     r  r  r  9  s/    	AIIboo&&()Hr  zaten::_shape_as_tensorc                &    | j                  d|      S NShaper$  r(  inputs     r  _shape_as_tensorr0  @      44r  zaten::_reshape_from_tensorc                h    t        |t              r | j                  dg|ddi}t        | ||      S )NConcataxis_ir   )
isinstancelistr$  r   )r(  r/  shapes      r  _reshape_from_tensorr8  E  s5    %X00a01eU##r  zaten::reshapeTc                0    t        j                  | ||      S r  )r   _reshape_helperr(  selfr7  s      r  r   r   L  s     **1dE::r  zaten::reshape_asc                @    | j                  d|      }t        | ||      S r+  r$  r   r(  r<  otherr7  s       r  r   r   R  s#     DD% E1dE""r  z	aten::addc                .   t        j                  |      r.t        j                  |      rt        j                  dddd|      S |r>t        j                  t        j
                  |            dk7  r| j                  d||      }| j                  d||      S )a  
    This function takes the add function and returns the corresponding ONNX operator.

    This function is not meant to be called directly by the user.

    Args:
        g (GraphContext): The graph context.
        self (Tensor): The first operand.
        other (Tensor): The second operand.
        alpha (float, optional): The scaling factor for the second operand. Defaults to None.

    Returns:
        ONNX operator.
    Addr     z)Add between list of tensors not supported   Mul)r   	_is_value_is_tensor_list _onnx_opset_unsupported_detailed_scalar_maybe_get_scalarr$  r(  r<  r@  alphas       r  r   r   Y  s        &?+J+J4+P??1bEt
 	
 (()J)J5)QRVWWUE5)44tU##r  z	aten::subc                    |r>t        j                  t        j                  |            dk7  r| j                  d||      }| j                  d||      S )a  
    Consumes sub function and returns the corresponding ONNX operator.

    This function is not meant to be called directly by the user.

    Args:
        g (GraphContext): The graph context.
        self (Tensor): The first operand.
        other (Tensor): The second operand.
        alpha (Optional[Tensor]): A scaling factor to apply to the second operand.
            If `alpha` is not provided, it defaults to 1.

    Returns:
        ONNX operator
    rD  rE  Sub)r   rI  rJ  r$  rK  s       r  r   r   r  sJ    " (()J)J5)QRVWWUE5)44tU##r  z
aten::rsubc                     t        | |||      S )N)rL  )r   rK  s       r  r   r     s    q%U++r  z	aten::mulc                    t        j                  |      r(t        j                  |      r| j                  d||      S | j                  d||      S )NAndrE  )r   _is_boolr$  r(  r<  r@  s      r  r   r     sC    %/*B*B5*IttE4''ttE4''r  z	aten::divc                T    t        |      dk(  rt        | ||      S t        | ||g| S Nr   )lenr   _div_rounding_mode)r(  r<  r@  argss       r  rC   rC     s0    
4yA~1dE**!!T58488r  zaten::addcmulvfc                    | j                  dt        j                  |g            }t        | |t	        | t	        | ||      |            S NConstantvalue_t)r$  torchr   r   r   )r(  r<  tensor1tensor2value
value_tenss         r  r   r     sB     j%,,w*?@Jq$As1gw7DEEr  sc                    |t        | ||      S |dk(  rt        | ||      S |dk(  rt        | ||      S t        j                  d| d|      )NrT   trunczUnsupported rounding mode: "z$". Expected None, "floor" or "trunc")r   _floor_divide_trunc_divider   SymbolicValueError)r(  r<  r@  rounding_modes       r  rW  rW    sh    1dE**	'	!Qe,,	'	!Qe,,''*=/9]^
 	
r  c                ~   | j                  d||      }| j                  d|t        j                  j                        }t        j
                  j                  |t        j
                  j                        }|t        j
                  j                  k7  r|t        j                  |      sCt        j                  |      r.| j                  d|t        j                  j                        }|S | j                  d||j                               }|S | j                  d|t        j                  j                        }|S )NDivCastto_i)r$  _C_onnxTensorProtoDataTypeINT64r
   JitScalarType
from_value	UNDEFINEDr   _is_fpFLOAT	onnx_type)r(  r<  r@  outscalar_types        r  ri  ri    s   
$$udE
"C $$vs!<!<!B!B$
CC ++66k''11K k//999%%d+0F0Fu0M$$vs)D)D)J)J$KC J $$ **,  C J dd63W%@%@%F%FdGJr  c                   t        j                  |      st        j                  |      rt        | ||      }| j                  d|      S | j                  d||      }| j                  dt	        j
                  dt        j                              }| j                  dt        j                  | ||      t        j                  | ||            }| j                  d|| j                  d	||            }| j                  d
|| j                  d| j                  d||                  }| j                  dt	        j
                  dt        j                              }	| j                  d	||	      }
| j                  d||
      S )NFloorrm  r]  r   dtyper^  XorrN  rE  rQ  NotEqualrD  )r   rw  r   r$  r`  r   int64
_lt_helper)r(  r<  r@  rz  rC   r  negativemod
fixup_maskonefixups              r  rh  rh    s7   d#'='=e'D!T5)ttGS!! dd5$&ttJQekk(JtK44&&q$5&&q%6
 dd5$UC 78TT%144qttGS$7O+PQ
dd:u||AU[['IdJUJ,ttE3&&r  zaten::floor_dividec                    t        | ||      S r  )ri  rS  s      r  rS   rS     s     D%((r  zaten::floordivc                    t        | ||      S r  )rS   rS  s      r  rU   rU     s    4''r  zaten::true_dividec                   t        j                  |      st        j                  |      r| j                  d||      S t        j                         }t
        j                  j                  }|t        j                  u s|t        j                  u sJ t        j                         t        j                  u rt
        j                  j                  }| j                  d||      }| j                  d||      }| j                  d||      S )a  Division where both inputs are cast to floating types

    If both inputs are floating, performs div as usual
    If only one input is a floating type, the other input is cast to its type
    If neither input is a floating type, both inputs are cast to the default scalar type
    rm  rn  ro  )r   rw  r$  r`  get_default_dtyperq  rr  rx  floatdoubleDOUBLE)r(  r<  r@  r{  onnx_scalar_types        r  r   r     s     d#'='=e'DttE4'' ))+K2288%++%)DDD ELL0"66==44#344DDD%5D6E44tU##r  zaten::reciprocalc                    t        j                  |      s,| j                  d|t        j                  j
                        }| j                  d|      S )Nrn  ro  
Reciprocal)r   rw  r$  rq  rr  rx  r(  r<  s     r  r   r     sC     !!$'ttFDw'B'B'H'HtI44d##r  z	aten::catic                   t        j                  |      }g |D ]?  }t        j                  |      rt        j                  |d      s/j	                  |       A t              dkD  sJ t        fdD              sJ |j                         j                          D ]!  }|j                         j                  |       # t        j                  |      } | j                  dg|d|iS )a{  Implement concatenation of pytorch tensors in ONNX along the specified `dim` dimension.

    Parameters:
        g (jit_utils.GraphContext): Graph context.
        tensor_list (List[torch.Tensor]): List of tensors to concatenate.
        dim (int): Dimension along which to concatenate the tensors.

    Returns:
        ONNX graph node representing the concatenated tensor.
    r   c              3     K   | ]g  }t        j                  d          du xsG t        j                  |      du xs. t        j                  |      t        j                  d          k(   i ywr   N)r   _get_tensor_rank).0r   nonempty_tensorss     r  	<genexpr>zcat.<locals>.<genexpr>3  s~      
 	 	(()9!)<=E 	A++A.$6	A++A.++,<Q,?@A	As   A-A0r3  r4  )r   _unpack_list_is_constant_get_tensor_dim_sizer  rV  allnoderemoveAllInputsaddInputr$  )r(  tensor_listrB   tensorsr   r  s        @r  r+   r+     s     **;7G  #''*?3W3Wq4
 "#  1$$$ 
 "    &&( '##A&' **;7G144/7/3//r  zaten::stackc                    t        j                  |      D cg c]  }t        j                  | ||g       }} | j                  dg|d|iS c c}w )Nr3  r4  )r   r  _unsqueeze_helperr$  )r(  r  rB   r   
unsqueezeds        r  r   r   B  s_    
 !--k: 	))!Q6J  1442:2c22	s   Az
aten::listc                    |S r  r   r  s     r  _listr  L      Kr  zaten::mmc                ~    | j                  dt        j                  dg            }| j                  d|||dd      S )Nr]  rD  r^  Gemm              ?beta_falpha_fr$  r`  r   )r(  r<  r@  Cs       r  r   r   Q  s<     	
Zqc!23A44eQsC4@@r  z	aten::bmmc                (    | j                  d||      S NMatMulr-  rS  s      r  r'   r'   Y      44$&&r  zaten::matmulc                (    | j                  d||      S r  r-  rS  s      r  r   r   ^  r  r  zaten::addmmr   c           
        d }t        j                  |      }t        j                  |      }t        j                  |      }	||}n	||}n|	|	}t        j                  |      }
t        j                  |      }d }| ||
d      s
 ||d      r| j                  d||      }|}t        j                  |      }t        j                  |      }|dk7  rI| j                  dt        j                  ||j                                     }| j                  d||      }|dk7  r\| j                  dt        j                  t        j                  |      |j                                     }| j                  d||      }| j                  d	||      S | j                  d
|||t        j                  |      t        j                  |            S )Nc                    | d uxr | |k7  S r  r   )rY  us     r  is_not_none_norzaddmm.<locals>.is_not_none_nort  s    }'a'r     r  rD  r]  r~  r^  rE  rB  r  r  )r   _try_get_scalar_typer  r$  rI  r`  r   r  )r(  r<  mat1mat2betarL  r{  self_scalar_typemat1_scalar_typemat2_scalar_type	mat1_rank	mat2_rankr  res1res2s                  r  r   r   c  s    K&;;DA&;;DA&;;DA#&		%&		%&006I006I( 	1%A)FttHdD)''.&&t,A:DDELLk>O>O>Q$R  E 44tU+D1944#++D19J9J9L  D 44tT*DttE4&&44&&t,''.   r  z	aten::negc                &    | j                  d|      S )NNegr-  r  s     r  r   r         44tr  z
aten::sqrtc                   t         j                  j                  |t         j                  j                        t         j                  j                  t         j                  j
                  t         j                  j                  t         j                  j                  t         j                  j                  hv r,| j                  d|t        j                  j                        }| j                  d|      S )Nrn  ro  Sqrt)r
   rt  ru  rv  UINT8INT8INT16INTrs  r$  rq  rr  rx  r  s     r  r   r     s      ++k''11 	!!''!!&&!!''!!%%!!''
 ttFDw'B'B'H'HtI44r  zaten::rsqrtc                    | j                  dt        j                  t        j                  d      |      t        | |            S )Nrm  rD  )r$  r   _if_scalar_type_asr`  r   r   r  s     r  r   r     s6    4411%**Q-FQPT r  z
aten::tanhg      ?   )scale
zero_pointc                &    | j                  d|      S )NTanhr-  r  s     r  r   r     s     44r  z	aten::sinc                &    | j                  d|      S )NSinr-  r  s     r  r   r     r  r  z	aten::cosc                &    | j                  d|      S )NCosr-  r  s     r  r=   r=     r  r  z	aten::tanc                &    | j                  d|      S )NTanr-  r  s     r  r   r     r  r  z
aten::asinc                &    | j                  d|      S )NAsinr-  r  s     r  r   r         44r  z
aten::acosc                &    | j                  d|      S )NAcosr-  r  s     r  r   r     r  r  z
aten::atanc                &    | j                  d|      S )NAtanr-  r  s     r  r    r      r  r  zaten::atan2c           
        | j                  d||      }| j                  d|      }| j                  dt        j                  d            }| j                  dt        j                  t        j                              }| j                  d||      }| j                  d|| j                  d||      | j                  d	||            }| j                  d
||      }	| j                  d|	||      }
|
S )Nrm  r  r]  r   r^  GreaterWhererB  rN  Less)r$  r`  r   mathpi)r(  r<  r@  sloper    
const_zeroconst_pi"condition_second_or_third_quadrantsecond_third_quadrantcondition_14_or_23_quadrantresults              r  r!   r!     s     DDe$E44Dj%,,q/:JttJTWW(=t>H)*iz)J&DD*	UD(#	UD(#	 #$$$vuj"ATT'68MtTFMr  zaten::sigmoidg      p?c                &    | j                  d|      S )a  Converts the corresponding PyTorch function into ONNX operators.

    It is not meant to be called directly by a user.

    Args:
        g (jit_utils.GraphContext): Graph context.
        self (Tensor): the input tensor.
    Returns:
        ONNX operator
    Sigmoidr-  r  s     r  r   r     s     44	4  r  z
aten::signc                &    | j                  d|      S )NSignr-  r  s     r  r   r     r  r  c                    t        |      t        |      k(  sJ t        |      dk(  r |d   dk(  r|d   t        j                  k(  r|S | j                  d||||      S )NrD  r   Slice)axes_istarts_iends_i)rV  r   	INT64_MAXr$  )r(  r/  axesstartsendss        r  _slicer    s]    v;#d)###
6{aF1INtAw*:N:N/N44tfT4JJr  z	aten::sum	ReduceSumsum)decoratez
aten::mean
ReduceMeanmeanz
aten::prod
ReduceProdprodF)allow_multi_dim_supportc                0    t        j                  | ||      S r  )r   _reduce_with_dtype_helper)onnx_opr  r	  s      r  _reduce_with_dtyper    s      44. r  zaten::cumsumnonec                4    t        j                  ddd|       y )Nr@   r  rC  r   _onnx_opset_unsupported)r(  r/  rB   r  s       r  r@   r@   %  s     ++HaUCr  zaten::_sample_dirichletc                .    t        j                  d|      S )N_sample_dirichletr   _onnx_unsupportedr(  r<  	generators      r  r  r  +  s    ,,-@$GGr  zaten::_standard_gammac                .    t        j                  d|      S )N_standard_gammar  r  s      r  r  r  0  s    ,,->EEr  zaten::tc                    t        j                  |      }||dk  r| j                  d|      S | j                  d|d      S )Nr  Identity	Transpose)rD  r   perm_i)r   r  r$  )r(  r<  ranks      r  r   r   5  sE    ++D1D|tax ttJ%%44T&411r  zaten::numpy_Tc                    t        j                  |      }|J t        t        t	        d|                  }| j                  d||      S Nr   r  r  )r   r  r6  reversedranger$  )r(  r/  ndimperms       r  r   r   @  sJ     ++E2Dq$()D44U4400r  zaten::expandc           
     r   t        j                  |d      }t        j                  |      s'| j                  dt	        j
                  |            }n\t        j                  |      rGt        j                  | t        | |d      | j                  dt	        j                  dg                  }t        j                  j                  }t        | ||      }t        | || j                  dt	        j                  d                  }t        | | j                  d||      ||      }| j                  d||      S )zXImplement the expand function for a pytorch tensor in ONNX according to specified `size`isr]  r^  r   r  Expandr   _maybe_get_constrF  r$  r`  
LongTensor_is_packed_listr:  r   r   r
   rt  rs  r   r   r  )r(  r<  r   implicitr  r   neg_oness          r  rO   rO   I  s     ++D$7D$$T*ttJ(8(8(>t?		(	(	. ..uQa !$$z5<<;M$"N
 %%++EQe$D1dADDU\\"5EDFGHADD$14>D44$%%r  zaten::broadcast_toc           
     r   t        j                  |d      }t        j                  |      s'| j                  dt	        j
                  |            }n\t        j                  |      rGt        j                  | t        | |d      | j                  dt	        j                  dg                  }t        j                  j                  }t        | ||      }t        | || j                  dt	        j                  d                  }t        | | j                  d||      ||      }| j                  d||      S )Nr'  r]  r^  r   r(  r  r)  r*  )r(  r<  r   r  r   r/  s         r  r)   r)   ^  s     ++D$7D$$T*ttJ(8(8(>t?		(	(	. ..uQa !$$z5<<;M$"N
 %%++EQe$D1dADDU\\"5EDFGHADD$14>D44$%%r  zaten::expand_asc                R   t        j                  |d      }t        |t        j                        r|j
                  }|j                  t        j                        }g }t        |j                               D ]  }t        j                  |j                  |      j                  |      j                  |      |      sG|j                  |       | j                  d|j                  |d      j                  |            } | j                  d|      }| j                  d||      S )Nr   r]  T)keepdimr^  r,  r)  )r   r+  r5  r`  Tensorr  r   r  r#  rB   equalr  r  rN   r  r$  )r(  r<  r@  self_t	orig_typedimsdr7  s           r  rN   rN   r  s     --dC8F&%,,'LL	5<<(vzz|$ 	A{{6;;q>33A6@@H&QAttD$(G(J(J9(U  	 DD% E44$&&r  zaten::embeddingbc                    |r&t         j                  rt        j                  d|      |dk\  r%t         j                  rt	        j
                  d       | j                  d||      S )NzUnsupported: ONNX export of embedding with scale_grad_by_freq=True for training mode. ONNX does not support scaling the gradients.r   zWarning: ONNX export of embedding with padding_idx >= 0 for training mode. ONNX does not support not updating the embedding vector at padding_idx during training.Gather)r   export_trainingr   rj  warningswarnr$  )r(  weightindicespadding_idxscale_grad_by_freqsparses         r  rH   rH     sd     g55''N
 	

 aG33f	
 44&'**r  zaten::embedding_bagc
                    t        j                  |      st        j                  d      S t        j                  d|      S )Nz%embedding_bag with per_sample_weightsrG   )r   _is_noner  )
r(  embedding_matrixr@  offsetsrB  moderC  per_sample_weightsinclude_last_offsetrA  s
             r  rG   rG     s?     ##$67003
 	
 ,,_>NOOr  z
aten::size)quantize_outputc                6   || j                  d|      S t        j                  |d      dk  rVt        j                  |      }|?t        j                  |d      |z   }| j                  dt	        j
                  |            }t        j                  | ||      S )Nr,  r  r   r]  r^  )r$  r   r+  r  r`  r   _size_helperr(  r<  rB   r  s       r  r   r     s     {ttGT""''S1A5//5!223<tCC$$z5<<+<$=C''455r  zaten::transposec                    ||k(  r|S t        j                  |      }|9t        t        |            }||   ||   c||<   ||<   | j	                  d||      S t        j                  d|      )Nr  r  zAUnsupported: ONNX export of transpose for tensor of unknown rank.)r   r  r6  r#  r$  r   rj  )r(  r<  dim0dim1r  r  s         r  r   r     s     t| ++D1DE$K !%dT$ZT
DJttKdt33''O
 	
r  zaten::permuter'  c           	     p    |t        t        dt        |                  k(  r|S | j                  d||      S r!  )r6  r#  rV  r$  )r(  r<  r7  s      r  r   r     s6     tE!SY'((44T$4//r  z
aten::viewc                    t        | ||      S r  )r   )r(  r<  r   s      r  r  r    s     1dD!!r  zaten::view_asc                @    | j                  d|      }t        | ||      S r+  r>  r?  s       r  r  r    s!    DD% E1dE""r  zaten::unsafe_chunkc                   |t        j                  dddd|      S t        j                  ||      }|t        j                  dd|      S ||z   dz
  |z  }|g||z  z  }||z  }|r|j	                  |       | j                  d||||      S )	Nr  r  rC  'Dynamic number of outputs not supportedunknown dimension sizerD  Splitsplit_ir4  outputs)r   rH  r  _unimplementedr  r$  )	r(  r<  chunksrB   _outputsr   
split_sizesplitsleftovers	            r  r  r    s     ??Ar#Ld
 	
 //c:D|--4d
 	
 -!#.J\TZ/0Fj Hh44vc84LLr  zaten::splitc                   t        j                  ||      st        j                  dddd|      S t        j                  |j	                         d      }|j                         dkD  rt        | ||||      S t        j                  |dd      }t        j                  ||      }|!|||z  }nt        j                  dddd	|      S |g||z  z  }||z  }	|	r|j                  |	       | j                  d
||||      S )Nr   r  rC  rV  rc  r   r  r_  z$Unknown dimension size not supportedrX  rY  )r   _is_split_staticrH  	_node_getr  rB   r   
_get_constr  r  r$  )
r(  r<  split_size_or_sizesrB   r^  	split_valr_  r   r`  ra  s
             r  r   r      s    ++,?J??QEt
 	
  ))*=*B*B*DgNI}}4)<c8LL ++,?lSJ//c:D|(D"CCB F  \TZ/0Fj Hh44vc84LLr  zaten::unsafe_splitc                     t        | ||||      S r  )r   )r(  r<  rf  rB   r^  s        r  r  r    s     D-sH==r  zaten::split_with_sizesc                    t        j                  ||      st        j                  dddd|      S | j                  d||||      S )Nr   r  rC  rV  rX  rY  )r   rc  rH  r$  r(  r<  split_sizesrB   r^  s        r  r   r   "  sO     ++KB??2'PRV
 	
 44{34QQr  zaten::unsafe_split_with_sizesc                     t        | ||||      S r  )r   rj  s        r  r  r  ,  s     At[#x@@r  zaten::unbindc                    |t        j                  dddd|      S | j                  d|dg|z  ||      }|dk(  r|gn|}|D cg c]  }t        j                  | ||g       }}|S c c}w )Nr   r  rC  rV  rX  rD  rY  )r   rH  r$  _squeeze_helper)r(  r<  rB   r^  r[  rz  squeezed_outputss          r  r   r   3  s     ??aF
 	
 dd7D1#.hdWG#q=wigGBI;>''36  s   A'zaten::selectc                *   t        j                  |      }t        j                  |      sU|dk  rP|dk(  rt        j                  }n|dz   }t        j
                  | ||g|g|g      }t        j                  | ||g      S | j                  d|||      S )zImplement the select functionality for a pytorch tensor in ONNX.

    Selects elements from the input tensor along the specified `dim` dimension based on the `index` tensor.
    r   r(  rD  r  r  r   r;  r4  )r   rJ  rF  r   r  _slice_helperrn  r$  )r(  r<  rB   rj   	end_index
slice_nodes         r  r   r   C  s     --e4E%%e,519B;",,I	I$22t3%yk

 ..q*seDD ttHdE#t66r  zaten::squarec                (    | j                  d||      S NrE  r-  r  s     r  r   r   Z  s    44tT""r  zaten::squeezec                4   || j                  d|      S t        j                  |dd      }|dk  rst        j                  |      }|Et	        j
                  dt        |      z   dz   dz   dz   t        ||z         z   d	z   d
z          ||z  }nt        j                  dd|      S t        j                  ||      }|Xt	        j
                  dt        |      z   dz   dz   t        |      z   dz   dz   dz   dz          t        j                  | ||g      S |dkD  rAt	        j
                  dt        |      z   dz   dz   t        |      z   dz   dz   dz   dz          |S t	        j
                  dt        |      z   dz   dz          t        j                  | ||g      S )NSqueezer  rB   r   z'ONNX export squeeze with negative axis - might cause the onnx model to be incorrect. (Negative axis is not supported in ONNX. Axis is converted to & based on input shape at export time. CPassing an tensor of different rank in execution will be incorrect.r   %negative axis with unknown input rankz5This model contains a squeeze operation on dimension z on an input z7with unknown shape. Note that if the size of dimension z of the input zVis not 1, the ONNX model will return an error. Opset version 11 supports squeezing on zMnon-singleton dimensions, it is recommended to export this model using opset zversion 11 or higher.r  rD  z. The size of z%this dimension in the given input is z. The model will zWbe exported without the squeeze node. If the model is intended to be used with dynamic z-input shapes, please use opset version 11 to zexport the model.z. If the model is z_intended to be used with dynamic input shapes, please use opset version 11 to export the model.)
r$  r   re  r  r=  r>  strr\  r  rn  )r(  r<  rB   squeeze_dimr  dim_sizes         r  r   r   _  s.   
{ttIt$$!,,S#u=KQ//5MM9k"#AB == *	*
 kD()* ;; XX	 4K"11BD  33D+FHC+ HH +	
  gg ^^ &&
	
 ..q$}MM!|C+ 66 (m	
 "" hh >> ""
	
 MM?
k
	
	 l	l **1dK=IIr  zaten::preluc                r   t        j                  |      }t        j                  |      }t        |      }|X|dkD  r.t        j                  | |t        t        d|dz
                    }n%|dk(  r |dgk(  rt        j                  | |dg      }d}||||k\  sJ d| d|        | j                  d||      S )Nr  rD  r   z)rank(x) should be >= rank(slope) but got z < PRelu)	r   r  _get_tensor_sizesrV  r  r6  r#  rn  r$  )r(  r<  r?  	self_rankweight_sizesweight_ranks         r  r   r     s    006I"44V<Ll#Kq=$6664aQ 78F !^ 3$44QDFK!8$	S6yk[MR	S$44v&&r  z
aten::siluc                H    | j                  d|| j                  d|            S )NrE  r  r-  r.  s     r  r   r     s     44uadd9e455r  z
aten::mishc                h    | j                  d|| j                  d| j                  d|                  S )NrE  r  Softplusr-  r.  s     r  r   r     s+    44uadd6144
E+BCDDr  z
aten::reluc                4    t        j                  | d|d      S )NRelu   opset_beforer   _op_with_optional_float_castr.  s     r  r   r     s      77	65r r  zaten::relu6c                    t        | |dd      S )Nr      )r0   r.  s     r  r   r     s     E1a  r  z
aten::ceilc                &    | j                  d|      S )NCeilr-  r.  s     r  r-   r-     s    44r  zaten::floorc                &    | j                  d|      S )Nr}  r-  r.  s     r  rT   rT     r1  r  z	aten::lenc           
         t        | || j                  dt        j                  dg                  }t	        j
                  | |dg      S Nr]  r   r^  )r   r$  r`  r,  r   rn  )r(  r<  sz_0s      r  _lenr    sA    4j%2B2BA32GHID**1dQC88r  zaten::thresholdc                    t        j                  |      dk7  rt        j                  dd|      S t        j                  |      dk7  rt        j                  dd|      S | j                  d|      S )Nr   r   znon-zero thresholdznon-zero valuer  )r   rI  r\  r$  )r(  r<  r   rc  s       r  r   r     sh     y)Q.--k;OQUVVu%*--k;KTRR44r  zaten::leaky_reluc                *    | j                  d||      S )N	LeakyRelur  r-  )r(  r/  negative_slopeinplaces       r  rs   rs     s     44UN4;;r  z	aten::gluc                    t        j                  ||      }|
|dz  dk(  sJ | j                  d||d      \  }}| j                  d|| j                  d|            S )Nr  r   rX  )r4  r[  rE  r  )r   r  r$  )r(  r/  rB   r  firstseconds         r  r]   r]     sf     33E3?H!|q   DD%QD?ME644uadd9f566r  zaten::softmaxc           
        t        j                  |      }||dk  r||z   }||dz   k7  }|r>t        t        |            }|d   ||   c||<   |d<   | j	                  d||      }|dz
  }| j	                  d||      }|rm|j                         j                         dk7  rLt        j                  |d	d
      }| j	                  d|t        j                  |      j                               }|r| j	                  d|      }|S | j	                  d|| j	                  d||gd            }| j	                  d|      }	t        j                  | |	|g      }
| j	                  d|	|
      }|rm|j                         j                         dk7  rLt        j                  |d	d
      }| j	                  d|t        j                  |      j                               }|S )Nr   rD  r(  r  r  Softmaxrr  r#  r  r  rn  ro  rN  	ReduceMaxr  
keepdims_iExpr  rm  )r   r  r6  r#  r$  r  kindre  r
   rt  ry  _reducesum_helper)r(  r/  rB   r  	input_dimis_transpose_requiredr  r   parsed_dtyperM   r  s              r  r   r      s   .  007I7c/C )S1W 4 i()D"&r(DIDItBxDDeDD9Ea-C$$y%$4UZZ\&&(,<<*55eS'JLdd ..|<FFH  G !dd;d=G DDqttKuQRtSTE
$$ue
C

+
+AsC5
ACdd5#s#G""$(88&11%gF$$G+";";L"I"S"S"U  
 Nr  zaten::softplusc                    t        j                  |d      }|dk7  r4| j                  d| j                  d| j                  d||            |      S | j                  d|      S )NrZ  rD  rm  r  rE  )r   r+  r$  )r(  r<  r  r   
beta_consts        r  r   r   @  sW     11$<JQttE144
ADDd,CDdKK44
D!!r  zaten::get_pool_ceil_paddingc                   t        j                  |       }||t        |       d  nd }|t        d |D              rt        j                  dd|       S t        dt        |            D cg c]D  }t        t        j                  ||   d||   z  z   ||   z
  t        ||         z              dz   F }}t        dt        |            D cg c])  }||   dz
  ||   z  ||   ||   z   k\  r||   dz
  n||   + }}t        dt        |            D cg c]2  }||   dk(  rdn%||   ||   d||   z  z   ||   dz
  ||   z  dz   z
  z
  4 }}t        dt        |            D cg c]Q  }||   d||   z  z   ||   k\  r-||   ||   dz
  k  rt        ||         nt        ||   dz
        nt        ||         S }}|S c c}w c c}w c c}w c c}w )Nc              3  $   K   | ]  }|d u  
 y wr  r   r  r  s     r  r  z(get_pool_ceil_padding.<locals>.<genexpr>M  s     1!t)1   r\   input size not accessibler   r  rD  )
r   r  rV  anyr\  r#  intr  r-   r  )	r/  kernel_sizestridepaddingsizesrB   r  ceiled_output_dimpadding_ceils	            r  r\   r\   H  sg    --e4E$)$5%W
 4C
{c1S11--#%@%
 	
 q#g,'  	DIIs1vGAJ.Q?5PQCSSTU
	  q#/01  $A&*fQi7SVgaj=PQ a 1$"1%& * q#g,'  q	Q  AF'!*n%)!,q0F1I=AC	L 4 q#l+,  a1wqz>1{1~F  ?[^a%77 LO$Q!+, \!_%&L  U s   +A	F>.G7G$AGzaten::max_pool1d
max_pool1drD  )return_indiceszaten::max_pool2d
max_pool2dr  zaten::max_pool3d
max_pool3d   c           	          t        j                  dddddd      t        j                  dddddd       fd              }|S )NTFrY  r'  r  c                   t         |            dhk7  rt        j                  d|      S |s|}t         |            }|r.t	        ||||      }|t        d t        ||      D              z   }n|dz  } |      | |      d}r | j                  d|fddi|\  }	}
| j                  d|dt              D cg c]  }d c}t              D cg c]  }d c}      \  }}t        j                  | |t              D cg c]  }d|z   	 c}t         d	            t         d            
      }t        | |
|      }
|	|
fS  | j                  d|fddi|}	|	S c c}w c c}w c c}w )NrD  dilationc              3  ,   K   | ]  \  }}||z     y wr  r   r  ar9  s      r  r  z1_max_pool.<locals>.symbolic_fn.<locals>.<genexpr>  s     %UAa!e%U   r  )kernel_shape_ipads_i	strides_iMaxPoolr[  )r[  r  r  r   rq  )setr   r\  tupler\   zipr$  r#  rs  r6  r   )r(  r/  r  r  r  r  	ceil_moder  kwargsrr@  _flattened_indicesr  re  r  ndimsr  tuple_fns                  r  symbolic_fnz_max_pool.<locals>.symbolic_fn  s    x!"qc)"11$
EJJ F)*0VWUL%U#lG:T%U UUGkG&{3!&)
$ iDDVDJAw#$44+0<8a8&+El313 $( $ A   --!%*5\2a!e2HQK((1+&A !Wa(Gg:Y;q;F;AH  93 3s    	E'	E,
E1r   quantized_args
parse_args)r  r  r  r  r  s   ```` r  	_max_poolr  ~  sT    8 ##D%ueLT4tSA2 B M2h r  zaten::max_pool1d_with_indicesr   zaten::max_pool2d_with_indicesr   zaten::max_pool3d_with_indicesr   zaten::avg_pool1d
avg_pool1dzaten::avg_pool2d
avg_pool2dzaten::avg_pool3d
avg_pool3dc           
          t        j                  d      t        j                  ddddddd      	 d	 	 	 	 	 	 	 	 	 	 	 d fd              }|S )	NTrY  r'  r  r  c           	     ~   |s|}t        j                  ||||      }t        |t              sJ |}|r0t        j                  | d|d|z   dz  ddd      }dt        |      z  }|r.t        ||||      }	|t        d	 t        |	|      D              z   }n|dz  }| j                  d
| |       |      |      }
|
S )NPad)r   r   r  constantr  rC  r  mode_svalue_fr  r   c              3  ,   K   | ]  \  }}||z     y wr  r   r  s      r  r  z1_avg_pool.<locals>.symbolic_fn.<locals>.<genexpr>(  s      8 1aA8r  AveragePool)r  r  r  )	r   _avgpool_helperr5  r  r  rV  r\   r  r$  )r(  r/  r  r  r  r  count_include_paddivisor_overrideadjusted_paddingr  outputr  r  s              r  r  z_avg_pool.<locals>.symbolic_fn  s     F!11g{F4Dd
 '5)))" #@@ 7*a/!E  $c'l20VWUL/% 8$'6F$G8 3    0!3#K0v&#  
 r  r  )r/  _C.Valuer  Sequence[int]r  r  r  zint | Sequence[int]r  r  r  r  r  )r  r  r  s   `` r  	_avg_poolr    s    , ##D)T4sCH // #/ 	/
 %/ / / I */b r  zaten::adaptive_avg_pool1dadaptive_avg_pool1dr  zaten::adaptive_avg_pool2dadaptive_avg_pool2dzaten::adaptive_avg_pool3dadaptive_avg_pool3dzaten::adaptive_max_pool1dadaptive_max_pool1dr  zaten::adaptive_max_pool2dadaptive_max_pool2dzaten::adaptive_max_pool3dadaptive_max_pool3dc                P     t        j                  dd       fd       }|S )NTFc                   |}	 t        j                  |d      }|dgt	        |      z  k(  rdk(  r| j                  d|      S t        j                  |      }	 |dd  }|t        d |D              r=|dgt	        |      z  k(  r| j                  d|      d fS t        j                  d	|      S t        d
t	        |            D cg c]  }||   ||   z   }}|d
gt	        |      z  k7  r=|dgt	        |      z  k(  r| j                  d|      d fS t        j                  d|      S t        d
t	        |            D cg c]  }t        ||   ||   z         }}dk(  r& 
| |||dt	        |      z  dt	        |      z  d      S | j                  | |       |            }	|	S # t        $ r t        j                  d|      cY S w xY w# t        $ r d }Y w xY wc c}w c c}w )Nr'  z4adaptive pooling, since output_size is not constant.rD  r  GlobalAveragePoolr  c              3  $   K   | ]  }|d u  
 y wr  r   r  s     r  r  z6_adaptive_pool.<locals>.symbolic_fn.<locals>.<genexpr>  s     5Aa4i5r  GlobalMaxPoolr  r   z-output size that are not factor of input sizer  r  )rD  F)r  r  )r   
_parse_arg	Exceptionr  rV  r$  r  r  r\  r#  r  )r(  r/  output_sizeoutput_size_valuer  rB   r  r  kr  fnr  r  types             r  r  z#_adaptive_pool.<locals>.symbolic_fny  s"    (	)44[$GK 1#K 000T]5J44+U3311%8	)C
 ;#555qcC$444ttOU3T99"1115  16aS0BC1s1vA&CC1#C. qcC$444ttOU3T99"11EGX  49CH3EFaSQ+a.()FF9a1dSXotc#hNNdE(1+RSUE  	 #44F 	  	 C	 D Gs/   F, G G#G(,GGG G )r   r  )r  r  r  r  r  s   ```` r  _adaptive_poolr  9  s.    @ ##D%0/ 1/b r  c                p    t        |dd       dg| dz  t        |      z
  z  z   }|ddd   |ddd   z   }|S )zGenerate paddings in ONNX order based on pad in pytorch.
    Args:
        dim: the dimension of the tensor.
        pad: the paddings in pytorch.
            The order is dim_n_begin, dim_n_end, dim_n-1_begin, dim_n-1_end, ...
    Nr   r  r(  )r6  rV  )rB   r   paddingss      r  _prepare_onnx_paddingsr
    sO     CF|qcS1Ws3x%788HB(26r6"22HOr  c                X   t        j                  | d      }t        j                  |      rQt        j                  |      r<t        j                  |      }	 |D cg c]  }t        j
                  |dd       }}|S |S c c}w # t        $ r t        j                  dddd|       cY S w xY w)Nr'  r  r  r  r  rC  z)The sizes of the padding must be constant)r   r+  rF  r-  r  re  r   rH  )r/  r  
input_listrY  s       r  _convert_padding_noder    s    ..ud;G  )o.M.Mg.V$11':
		GQBC**1c9=G  N7N  	 #CCq"I5 	s$   B A?9B ?B "B)(B)zaten::constant_pad_ndc           	        d}	 t        j                  |dd      }t	        |      }t        t        j                  |      |      }t        j                  | d||||d      S # t        $ r t        j                  dddd|      cY S w xY w)	Nr  rZ  rc  r  r  rC  z*The value for the padding must be constantr  )r   re  r   rH  r  r
  r  r  )r(  r/  r  rc  rH  r	  s         r  r2   r2     s    D
**5#w? $G,G%o&F&Fu&MwWH77	5%uSU   
 ??1bF
 	

s   A! !"BBc                   t        |      }t        |      dz  dk(  sJ t        |      dz  }|}t        |      D ]-  }|d|z  dz       }|d|z  dz       }g }	|dkD  r@t        j                  | |d|z   g| gt
        j                  g      }
|	j                  |
       |dk  s|dk  rat        j                  d|       }t        j                  d|        }t        j                  | |d|z   g|g|g      }|	j                  |       n|	j                  |       |dkD  r1t        j                  | |d|z   gdg|g      }|	j                  |        | j                  dg|	dd|z   i}0 |S )Nr  r   rD  rq  r3  r4  )r  rV  r#  r   rs  r   r  r  builtinsr   r$  )r(  r/  r   r  r$  curidxpad_rpad_lr  leftstartendmiddlerights                  r  _pad_circularr    s   #C(Gw<!q   w<1D
CT{ 9!c'A+'!c'A+'19"003a#gY%zAUAU@VD NN4 19	LLUF+ELLUF+,C$22#gYwUF NN6"NN319#113a#gYs%E NN5!add88g8q3w8=9@ Jr  zaten::reflection_pad1dzaten::reflection_pad2dzaten::reflection_pad3dc                    d}t        |      }t        t        j                  |      |      }t        j                  | d|||d      S )Nreflectr  rC  r  r  r  r  r
  r   r  r  r(  r/  r  rH  r	  s        r  r   r     sJ     D#G,G%o&F&Fu&MwWH77	5%B r  zaten::replication_pad1dzaten::replication_pad2dzaten::replication_pad3dc                    d}t        |      }t        t        j                  |      |      }t        j                  | d|||d      S )Nedger  rC  r  r  r  s        r  r   r     sJ     D#G,G%o&F&Fu&MwWH77	5%B r  z	aten::padc                    t        j                  |d      }|dk(  rt        | ||      S |dk(  rt        | ||      S |dk(  rt	        | |||      S |dk(  rt        | ||      S t        j                  d| |      )Nre  	replicater  r  circularzUnrecognized padding mode )r   r  r   r   r2   r  r   rj  )r(  r/  r   rH  rc  s        r  r   r   $  s     %%dC0D{q%--		a,,		q%e44		Qs++''*DTF(KUSSr  zaten::upsample_nearest1dupsample_nearest1dnearestzaten::upsample_nearest2dupsample_nearest2d   zaten::upsample_nearest3dupsample_nearest3d   zaten::upsample_linear1dupsample_linear1drz   zaten::upsample_bilinear2dupsample_bilinear2dzaten::upsample_trilinear3dupsample_trilinear3dc                      fd}|S )Nc                   t        j                  | |      \  }}t        j                         t        j                  |      }|rt        j                  d|      S |t        j
                  | ||      }| j                  d||      S )Nzalign_corners == TrueUpsampler  )r   _get_interpolate_attributes_interpolate_warningrJ  r\  _interpolate_size_to_scalesr$  )	r(  r/  r  rX  scalesalign_cornersrB   interpolate_moder  s	         r  r  z!_interpolate.<locals>.symbolic_fnd  s     / K K!
 	,,-=>'99-H"11$8OQVWW>$@@5+sF ttJv6FtGGr  r   )r  rB   r7  r  s   ``` r  _interpolater8  9  s    VH r  zaten::__interpolatec                f    t        j                  | |||||      \  }}| j                  d|||      S )Nr0  r1  )r    _interpolate_get_scales_and_moder$  )	r(  r/  r   scale_factorrH  r6  recompute_scale_factor	antialiasr5  s	            r  __interpolater>  u  s>     #CC	5$dMLFD 44
E6$477r  zaten::bitwise_notc                |    t        j                  |      st        j                  d|      | j	                  d|      S NzOONNX export does NOT support exporting bitwise Not for non-boolean input valuesr  r   rR  r   rj  r$  r.  s     r  r%   r%     s>    ##E*''+
 	

 44ur  zaten::bitwise_orc                    t        j                  |      st        j                  d|      t        j                  |      st        j                  d|      | j	                  d||      S )NzVONNX export does NOT support exporting bitwise OR for non-boolean input values. self: zWONNX export does NOT support exporting bitwise OR for non-boolean input values. other: OrrA  rS  s      r  r&   r&     sk    ##D)''3
 	

 ##E*''4
 	

 44dE""r  c                      fd}|S )Nc                F     t        j                          fd       }|S )Nc           	     X    t               d    } |  || |d       || |d            S )N_cast_F)r  )r(  r/  r@  to_cast_funcr  to_types       r  wrap_with_castzGwrap_logical_op_with_cast_to.<locals>.decorator.<locals>.wrap_with_cast  s7    "9vgY%78Laa6Qu8UVVr  	functoolswraps)r  rJ  rI  s   ` r  	decoratorz/wrap_logical_op_with_cast_to.<locals>.decorator  s(    			W 
	W r  r   )rI  rN  s   ` r  r  r    s     r  c                B     t        j                          fd       }|S )Nc                8    | j                  d | ||            S )Nr  r-  )r(  r/  r@  r  s      r  wrap_with_notz4wrap_logical_op_with_negation.<locals>.wrap_with_not  s    ttE45%011r  rK  )r  rQ  s   ` r  r  r    s&    __T2 2 r  zaten::__not_c                |    t        j                  |      st        j                  d|      | j	                  d|      S r@  rA  r  s     r  __not_rS    s>    ##D)''+
 	

 44tr  zaten::eqc           	        t        |j                         t        j                        r^t        |j                         t        j                        r6| j	                  dt        j                  dt
        j                              S |j                         }|j                         }|j                         |j                         cxk(  rdk(  rn n|j                  d      |j                  d      cxk(  rdk(  rZn nW| j	                  dt        j                  |j                  d      |j                  d      k(  t
        j                              S | j	                  d||      S )	Nr]  Tr~  r^  onnx::Constantrc  re  r  )r5  r  r   DeviceObjTyper$  r`  r   boolr  r  kindOfre  )r(  r<  r@  	self_node
other_nodes        r  rK   rK     s    $))+r//0Z

b&&6
 ttJT(LtMM		IJ~~:??,@0@@G$
(9(9'(BIcI 44KK(JLL,AA**    44u%%r  zaten::nec                    t        | ||      S r  )rK   rS  s      r  r   r     s     aur  zaten::gtc                    t        | ||      S r  _gt_implr(  r/  r@  s      r  r_   r_          Aue$$r  c                ,   t        j                  |      rmt        j                  |      rX| j                  d|t        j                  j
                        }| j                  d|t        j                  j
                        }| j                  d||      S )Nrn  ro  r  r   rR  r$  rq  rr  INT32r_  s      r  r^  r^    sp    &?+C+CE+JVU)D)D)J)JKVU)D)D)J)JK44	5%((r  zaten::ltc                    t        | ||      S r  _lt_implr_  s      r  r   r     r`  r  c                ,   t        j                  |      rmt        j                  |      rX| j                  d|t        j                  j
                        }| j                  d|t        j                  j
                        }| j                  d||      S )Nrn  ro  r  rb  r_  s      r  rf  rf    sp    &?+C+CE+JVU)D)D)J)JKVU)D)D)J)JK44u%%r  zaten::gec                    t        | ||      S r  re  r_  s      r  rZ   rZ          Aue$$r  zaten::lec                    t        | ||      S r  r]  r_  s      r  rr   rr     ri  r  zaten::__and_c                    t        j                  |      st        j                  d|      t        j                  |      st        j                  d|      | j	                  d||      S )NzOONNX export does NOT support exporting bitwise AND for non-boolean input valuesrQ  rA  r_  s      r  __and_rl    k    ##E*''+
 	

 ##E*''+
 	

 44ue$$r  zaten::__or_c                    t        j                  |      st        j                  d|      t        j                  |      st        j                  d|      | j	                  d||      S )NzNONNX export does NOT support exporting bitwise OR for non-boolean input valuesrC  rA  r_  s      r  __or_ro    sk    ##E*''+
 	

 ##E*''+
 	

 44eU##r  zaten::__xor_c                    t        j                  |      st        j                  d|      t        j                  |      st        j                  d|      | j	                  d||      S )NzOONNX export does NOT support exporting bitwise XOR for non-boolean input valuesr  rA  r_  s      r  __xor_rq  -  rm  r  zaten::logical_andBoolc                (    | j                  d||      S )NrQ  r-  r_  s      r  r   r   >       44ue$$r  zaten::logical_orc                (    | j                  d||      S )NrC  r-  r_  s      r  r   r   D  s     44eU##r  zaten::logical_xorc                (    | j                  d||      S )Nr  r-  r_  s      r  r   r   J  rt  r  zaten::logical_notc                z    | j                  d| j                  d|t        j                  j                              S )Nr  rn  ro  r$  rq  rr  BOOLr.  s     r  r   r   P  s.    44qttFE0K0K0P0PtQRRr  zaten::__rshift_c                |   t         j                  j                  |      }t         j                  j                  |t         j                  j                        |k7  r"| j	                  d||j                               }| j	                  dt        j                  dt        j                              }t        j                  |      s,| j	                  d|t        j                  j                        }| j	                  d||      }| j	                  d||j                               }| j	                  d||      }|S )	Nrn  ro  r]  r  r~  r^  Powrm  r
   rt  ru  rv  r$  ry  r`  r   float32r   rw  rq  rr  rx  )r(  r<  r@  r  twotwo_powrshifts          r  	__rshift_r  U      #00;;DA!!,,UK4M4M4W4WX	 !++-  
 $$z5<<#G$
HC!!$'VU)D)D)J)JKdd5#u%Gdd'')  G
 TT%w'FMr  zaten::__lshift_c                |   t         j                  j                  |      }t         j                  j                  |t         j                  j                        |k7  r"| j	                  d||j                               }| j	                  dt        j                  dt        j                              }t        j                  |      s,| j	                  d|t        j                  j                        }| j	                  d||      }| j	                  d||j                               }| j	                  d||      }|S )	Nrn  ro  r]  r  r~  r^  r{  rE  r|  )r(  r<  r@  r  r~  r  lshifts          r  	__lshift_r  r  r  r  zaten::wherec           
     @   t        j                  |      s,| j                  d|t        j                  j
                        }|Ht        | |      }t        j                  | || j                  dt        j                  d            |      S | j                  d|||      S )Nrn  ro  r]  rD  r^  r  )
r   rR  r$  rq  rr  ry  r   _unbind_helperr`  r   )r(  	conditionr<  r@  r^  s        r  r  r    s     ##I.DD1L1L1Q1QDR	|Ay)	--y!$$z5<<?$CX
 	
 44D%00r  zaten::log_softmaxc                6   t        j                  |      }|t        j                  dd      S |dk  r||z   }||dz   k7  }|r>t        t	        |            }|d   ||   c||<   |d<   | j                  d||      }|dz
  }| j                  d||	      }|rm|j                         j                         d
k7  rLt        j                  |dd      }| j                  d|t        j                  |      j                               }|r| j                  d|      }|S )NrB   fONNX and PyTorch use different strategies to split the input. Input rank must be known at export time.r   rD  r(  r  r  
LogSoftmaxrr  r#  r  r  rn  ro  )r   r  r\  r6  r#  r$  r  r  re  r
   rt  ry  )	r(  r/  rB   r  r  r  r  	return_opr  s	            r  r}   r}     s0     007I--7
 	

 Qw#o%q0E)$%"2hS	S	48[%5!m\55I""$(88&11%gFDDIK$=$=l$K$U$U$W  
	 DDiD=	r  zaten::_log_softmaxc                   |rt         j                  j                  |t         j                  j                        t         j                  j                  k(  r,| j                  d|t        j                  j                        }t        | ||      S Nrn  ro  )
r
   rt  ru  rv  HALFr$  rq  rr  rx  r}   )r(  r/  rB   half_to_floats       r  _log_softmaxr    ss     	%%00;,,66
 $$))*
 VU)D)D)J)JKq%%%r  zaten::_convolutionc                p   t        j                  |      }	 |dd  }|t        d |D              rt	        j
                  d|      ||g}t        j                  |      s)t        j                  |      dk(  r|j                  |       |dd  |||z   ||	d}t        d |D              r"|sJ t        |      t        |      k(  sJ ||d<    | j                  |rdnd	g|i |}t        j                  |      s+t        j                  |      dk7  r| j                  d
||      S |S # t        $ r d }Y w xY w)Nr  c              3  $   K   | ]  }|d u  
 y wr  r   r  s     r  r  z_convolution.<locals>.<genexpr>       "C19"Cr  DUnsupported: ONNX export of convolution for kernel of unknown shape.rD  )r  r  r  dilations_igroup_ic              3  &   K   | ]	  }|d k7    ywr  r   )r  os     r  r  z_convolution.<locals>.<genexpr> 	  s     
*a16
*s   output_padding_iConvTransposeConvrB  )r   r  r   r  r   rj  rE  r  r  rV  r$  )r(  r/  r?  biasr  r  r  
transposedoutput_paddinggroups	benchmarkdeterministiccudnn_enabled
allow_tf32weight_sizekernel_shaperX  r  r)  s                      r  _convolutionr    s_   ( "33F;K"12 s"Cl"CC''R
 	

 6?D $$T*,,T2a7D &ab/ G#F 
*>
** z6{c.1111%3!"
_HHHA $$T*,,T2a7ttE1d##[   s   D& &D54D5zaten::_convolution_modec                   t        j                  |      }	 |dd  }	|	t        d |	D              rt	        j
                  d|      ||g}
t        j                  |      s)t        j                  |      dk(  r|
j                  |       |dk(  rd}n|dk(  rd}|dd  ||||d	} | j                  d
g|
i |}t        j                  |      s+t        j                  |      dk7  r| j                  d||      S |S # t        $ r d }	Y w xY w)Nr  c              3  $   K   | ]  }|d u  
 y wr  r   r  s     r  r  z$_convolution_mode.<locals>.<genexpr>/	  r  r  r  rD  validVALIDsame
SAME_UPPER)r  r  
auto_pad_sr  r  r  rB  )
r   r  r   r  r   rj  rE  r  r  r$  )r(  r/  r?  r  r  r  r  r  r  r  rX  r  r)  s                r  _convolution_moder  	  s2   ( "33F;K"12 s"Cl"CC''R
 	

 6?D $$T*,,T2a7D'	F	%ab/F 	V%d%f%A $$T*,,T2a7ttE1d##O   s   C: :DDzaten::convolutionc
                2    t        | |||||||||	d d d d       S r  r  )
r(  r/  r?  r  r  r  r  r  r  r  s
             r  r<   r<   T	  s;     	 r  zaten::conv1dc                    t        j                  |d      }|dv rt        | |||||||      S t        j                  |d      }t        | ||||||dd|d d d d       S Nre  )r  r  r'  Fr   r   r  r  r  	r(  r/  r?  r  r  r  r  r  str_paddings	            r  r8   r8   t	      
 ",,Wc:K'' 	
 		
 ",,Wd;
 	
r  zaten::conv2dc                    t        j                  |d      }|dv rt        | |||||||      S t        j                  |d      }t        | ||||||dd|d d d d       S r  r  r  s	            r  r9   r9   	  r  r  zaten::conv3dc                    t        j                  |d      }|dv rt        | |||||||      S t        j                  |d      }t        | ||||||dd|d d d d       S r  r  r  s	            r  r:   r:   	  r  r  zaten::conv_transpose1dc	                2    t        | ||||||d||d d d d       S NTr  	r(  r/  r?  r  r  r  r  r  r  s	            r  r5   r5   	  ;     	 r  zaten::conv_transpose2dc	                2    t        | ||||||d||d d d d       S r  r  r  s	            r  r6   r6   
  r  r  zaten::conv_transpose3dc	                2    t        | ||||||d||d d d d       S r  r  r  s	            r  r7   r7   !
  r  r  zaten::batch_normc
                   t        j                  |d       t        j                         rFt        j                  |||||g      s,t
        j                  dk  rt        j                  dddd|      S t        j                  | |||||      \  }}}}| j                  d||||||d|z
  |sdnd	      }
|s|
S |
\  }}}}}|j                  |j                                |j                  |j                                |j                  d	|j                         z          |j                  d	|j                         z          |S )
Nr#      BatchNormalizationr  zaAll input tensors must have the same `dtype`. Turn off Autocast or export using opset version 15.rD  r*  )	epsilon_f
momentum_fr[  zbatch_norm_dead_output-)r   check_training_moder`  is_autocast_enabledargs_have_same_dtyper   export_onnx_opset_versionrH  _batchnorm_helperr$  r%  r  setDebugName	debugName)r(  r/  r?  r  running_meanrunning_vartrainingmomentumepsr  rz  resnew_running_meannew_running_var
saved_mean	saved_vars                   r  r#   r#   @
  s[    '',? 	!!#44FD,<
 --2?? C
 	
 />.O.O	5&$k/+FD, $$x<!q  
C 
HKE
I  !2!2!45 0 0 23 9J<P<P<R RS89;N;N;PPQ
r  zaten::native_layer_normc                   t        t        |      dd      D cg c]  }|  }}t        j                  | d      }t        j                  | |      }	| j                  dk  r| j                  d||      }
nG| j                  d|| j                  dt        j                  |t        j                        	            }
t        | ||
      }t        j                  j                  |      t        j                  j                  k(  }|rTt        j                  j                  |	      }| j                  d
|t        j                  |      j                               }| j                  dk  r | j                  dt        | ||      |      }nR| j                  dt        | ||      | j                  dt        j                  |t        j                        	            }t!        | | j                  d||	            }| j                  d||      }|rTt        j                  j                  |      }| j                  d
|t        j                  |      j                               }|"t        j"                  |      st%        | ||      }|"t        j"                  |      st'        | ||      }|rH| j                  d
|t        j                        j                               }| j                  d|      }nt)        | |      }||
|fS c c}w )Nr   r(         @   r  r  r]  r~  r^  rn  ro  rB  rm  r  )r#  rV  r   _generate_wrapped_numberr  r$  r`  r   longr   r
   rt  ru  r  ry  r   r   rE  r   r   r   )r(  r/  normalized_shaper?  r  r  r  r  two_csteps_cstr  	numeratoris_type_half	eps_dtypevariancedenominator
normalizedinput_dtyperdenominators                      r  r   r   y
  s    c"23Q;<1QB<D<66q#>G66q#>Gww|ttL%t5ttDDU\\$ejj%IDJ
 Aud#I 	!!,,Y7$$))	*  --88A	DDIK$=$=i$H$R$R$T  
	
 	ww|44c!Y&@4N449g&DDU\\$ejj%IDJ
 q!$$uh89KeY4J !//::5ATTJ[%>%>{%K%U%U%W  

 No66v>J/
LO44T:J-

 dd**;7AAC  

 ttL+6!![1t\))C =s   
Lzaten::layer_normc                .    t        | |||||      \  }}}|S r  )r   )	r(  r/  r  r?  r  r  cudnn_enabler  r  s	            r  rq   rq   
  s'     )E3CVTSVWJ1r  zaten::instance_normc
                   t        j                  |d       t        j                  |d      }
|t        j                  |      rq|
t	        j
                  d|      t        j                  dg|
z  t        j                  j                  |      j                               }| j                  d|      }|t        j                  |      rq|
t	        j
                  d|      t        j                  dg|
z  t        j                  j                  |      j                               }| j                  d|      }|,t        j                  |      s|t        j                  |      r| j                  d	||||
      S t        j                  |      }|j                         }|d   }|t	        j
                  d|      |d   }d|d<   ||z  |d<   t        | || j                  dt        j                  |gt        j                                     }t        | || j                  dt        j                  |gt        j                                     }t        | || j                  dt        j                  |gt        j                                     }t        | || j                  dt        j                  |gt        j                                     }| j                  d|| j                  dt        j"                  |                  }t%        | |||||||||	
      }t'        | || j                  dt        j                  |                  S )Nrk   rD  zCUnsupported: ONNX export of instance_norm for unknown channel size.r  r~  r]  r^  r  InstanceNormalizationr  r   zJUnsupported: ONNX export of instance_norm training for unknown batch size.Reshape)r   r  r  rE  r   rj  r`  r   r
   rt  ru  r  r$  r  copyr   r  r,  r#   r  )r(  r/  r?  r  r  r  use_input_statsr  r  r  channel_sizeweight_value
bias_value
input_sizeinput_size_reshaper)  cweight_bias_running_mean_running_var_input_reshapedrz  s                          r  rk   rk   
  s    ''I"77qAL~11&9++U  ||EL ++66u=CCE
 j,7|//5++U  \\EL ++66u=CCE

 ttJ
t3##L1##K0tt+UFDCtPP$66u=
 (__.qM9++ 
 qM !1 !A1vqttJaS0TtU
 tQTT*ellA3ekk.RTS
 DDU\\1#U[[%IDJ

 DDU\\1#U[[%IDJ

 DDU%5%56H%IDJ

 
 AsADDU\\*5MDNOOr  zaten::unfoldc                j   t        j                  |      }	 ||   }|t        d||      }t        ||dz   |      }t	        ||      D 	
cg c]"  \  }	}
t        j
                  | ||g|	g|
g      $ }}	}
t        |      }t        t        d|            }|j                  |j                  |             |D cg c],  }t        j                  | | j                  d||      |g      . }} | j                  dg|d|iS t        j                  dd	|      S # t        $ r d }Y 
w xY wc c}
}	w c c}w )
Nr   rD  rq  r  r  r3  r4  Unfoldr  )r   r  r   r#  r  rs  rV  r6  r  popr  r$  r\  )r(  r/  	dimensionr   stepr  sizedimlow_indices
hi_indiceslowhir   r$  r%  r   r  s                   r  r  r  9  s`    --e4E	"
 Aw-41d3

 {J7	
 R ))5	{C5t
 
 5zE!TN#DHHY'(
 	
  --144Qt44yk
	 
 qttH;y;;;--15
 	
1   

s   D 
'D*81D0D'&D'z	aten::eluc                    |r|dk7  rt        j                  dd|      S |r|dk7  rt        j                  dd|      S | j                  d|t        j                  |            S )Nr  r  zdoes not support scale in Eluinput_scalez#does not support input_scale in EluElur  )r   r\  r$  rI  )r(  r/  rL  r  r  s        r  rF   rF   ]  sq     #--4e
 	
 {c)--@+
 	
 44uo&=&=e&D4EEr  z
aten::seluc                &    | j                  d|      S )NSelur-  r.  s     r  r   r   m  s     44r  zaten::index_selectc                2    t        j                  | |||      S r  )r   _select_helper)r(  r<  rB   rj   s       r  ri   ri   s  s     ))!T3>>r  zaten::index_putc                    t        j                  |      rt        j                  |      }n|g}t        j                  |d      }t	        |      dk(  r|rt        | ||      S |S t        j                  ddd|       y )Nr9  r   rh   r  rC  )r   r-  r  r  rV  r   r  )r(  r<  indices_list_valuevalues
accumulateindices_lists         r  rh   rh   |  st    &&'9:&334FG*+ ++J<J
<Aq$''++KBEr  zaten::index_fillc                    t        j                  |d      }t        j                  | |||      \  }}t        j                  |      }t        j                  ||      }t        | ||d       }t        | ||||      S Nr  )r   r  _index_fill_reshape_helperrJ  r  rO   r   )	r(  r<  rB   rj   rc  	dim_valueexpanded_index_shapeexpanded_indexexpanded_values	            r  rg   rg     s{    **34I+:+U+U	4e,(. --e4E..ud;EAu&:DAN1dC@@r  zaten::index_copyc                    t        j                  |d      }t        j                  | |||      \  }}t        | ||||      S r  )r   r  r  r   )r(  r<  rB   rj   sourcer  r  r  s           r  rf   rf     sH    **34I+:+U+U	4e,(. 1dC88r  zaten::bucketizec                   t         j                  j                  }|rt         j                  j                  }| j	                  d| j	                  d|      | j	                  d|      d      }t        j                  |      }|J t        t        d|dz               }t        | t        j                  | ||      |d       }	|rt        | ||	      }
nt        | ||	      }
| j	                  d|
|      }t        j                  | |dgd      S )	Nr3  r,  r   rr  rD  rn  ro  r  )rq  rr  rs  rc  r$  r   r  r6  r#  rO   r  rZ   r_   r  )r(  r<  
boundaries	out_int32r  out_type	new_shapetensor_rankunsqueeze_axesexpanded_boundariescondcond_outs               r  r*   r*     s   
 **00H..44 XqttGZ8!$$w:MVWXI "2248K"""%;?34N 	))!ZH	 !T./!T./ttFDxt0H ,,Q!QRSSr  zaten::type_asc                    t        j                  |      }t        j                  |      }||k(  r||S |"| j                  d||j                               S t	        j
                  d|      )Nrn  ro  zUnsupported: ONNX export of type_as for tensor of unknown dtype. Please check if the dtype of the parameter passed to the type_as function is correct.)r   r  r$  ry  r   rj  )r(  r<  r@  
self_dtypeother_dtypes        r  r   r     s     55d;J!66u=K[ Z%;tt&&(  
 	
 
#
#	? 		 r  zaten::cosine_similarityc                   t        j                  | t        | ||      |gd      }t        j                  | t        | ||      |gd      }t        j                  | t        | ||      |gd      }t        | t	        | t        | ||            | j                  dt        j                  |g                  }t        | ||      S )Nr   r  r]  r^  )	r   r  r   r   r   r$  r`  r   rC   )	r(  x1x2rB   r  r?   x1_l2x2_l2div_tenss	            r  r>   r>     s     --	3q"b>3%AE --	3q"b>3%AE --	3q"b>3%AE 	43q%'(!$$z5<<QTPUCV$*WH q%""r  zaten::pairwise_distancec                   t        j                  |      s'| j                  dt        j                  |g            }t        | | j                  dt        j                  dgt        j                              t        | ||            }t        j                  | t        | t        | ||      |      dgt        j                  |d            }t        | ||      S )Nr]  r^  rD  r~  r(  r  r  )r   rF  r$  r`  r   rC   r  r   r  r   r   r  )r(  input1input2pr  r2  inv_p	summations           r  r   r     s    $$S)dd:u||SE':d;		Zqc!EFAq#E
  11	As1ff%q)t"--gs;	I q)U##r  zaten::clonec                    |S r  r   )r(  r/  unused_memory_formats      r  r1   r1      	     Lr  z	aten::absc                &    | j                  d|      S )NAbsr-  r  s     r  r   r     r  r  z	aten::logc                &    | j                  d|      S )NLogr-  r  s     r  r~   r~     r  r  zaten::log1pc                ~    t        | t        | t        j                  t	        j
                  d      |      |            S )NrD  )r~   r   r   r  r`  r   r  s     r  r   r     s.    q#a;;EJJqM4PRVWXXr  zaten::log10c           
         d}| j                  dt        | |      | j                  dt        j                  |g                  S )NgUk@rm  r]  r^  r$  r~   r`  r   )r(  r<  _ln10s      r  r   r     s8    "E44s1d|QTT*ellE7>ST%TUUr  z	aten::powc                z   t         j                  j                  |      }t        j                  |      s<t         j                  j
                  }| j                  d||j                               }t        j                  |      s"| j                  d||j                               }| j                  d||      }|S )Nrn  ro  r{  )r
   rt  ru  r   rw  rx  r$  ry  )r(  r<  exponentf_dtyper   s        r  r   r     s    ''2248G!!$'++11ttFDw'8'8':t;!!(+44""$  

 $$udH
%CJr  zaten::clampc           
        t        j                  |      rt        | ||      S t        j                  |      rt        | ||      S t        j                  |      rXt        j                  |      rCt        j
                  | d|t        j                  |d      t        j                  |d      d      S t        | t        | ||      |      S )NCliprZ     min_fmax_fr  )r   rE  r.   r/   r  r  r  )r(  r<  r   r   s       r  r0   r0   +  s     $D#&&		!	!#	&D#&&'',1M1Mc1R"??%00c:%00c:  Q	!T3 7==r  zaten::clamp_minc           	     >   t        j                  |      r.t        j                  | d|t        j                  |d      d      S t        j
                  j                  |      }| j                  d||j                               }t        j                  | d||d      S )	Nr@  rZ  rA  )rC  r  rn  ro  Maxr  	r   r  r  r  r
   rt  ru  r$  ry  )r(  r<  r   r  s       r  r/   r/   A       ##C(;;vt?#=#=c3#GVX
 	
 ))44T:dd63U__%6d7;;udCb
 	
r  zaten::clamp_maxc           	     >   t        j                  |      r.t        j                  | d|t        j                  |d      d      S t        j
                  j                  |      }| j                  d||j                               }t        j                  | d||d      S )	Nr@  rZ  rA  )rD  r  rn  ro  Minr  rG  )r(  r<  r   r  s       r  r.   r.   P  rH  r  z	aten::maxc                2    t        j                  | |||      S r  )r   _max_helperr(  r<  dim_or_yr2  s       r  r   r   _  s    
 &&q$'BBr  zaten::maximumc                    t        | ||      S N)rN  )r   r_  s      r  r   r   g       q%%((r  z	aten::minc                2    t        j                  | |||      S r  )r   _min_helperrM  s       r  r   r   m  s     &&q$'BBr  zaten::minimumc                    t        | ||      S rP  )r   r_  s      r  r   r   s  rQ  r  z
aten::amaxc                ,    | j                  d|||      S )Nr  r  r-  r(  r<  rB   r2  s       r  r   r   y       44T#'4BBr  z
aten::aminc                ,    | j                  d|||      S )N	ReduceMinr  r-  rV  s       r  r   r     rW  r  zaten::aminmaxc                    d|i}t        j                  |      st        j                  |dd      }|g|d<    | j                  d|fi | | j                  d|fi |fS )Nr  r  rB   r  rY  r  )r   rE  re  r$  )r(  r<  rB   r2  reduce_kwargss        r  r   r     su     "7+M##C(((c59#&%h144T3]3TQTTT6*6  r  z	aten::expc                &    | j                  d|      S )Nr  r-  r  s     r  rM   rM     r  r  zaten::dropout_zaten::dropoutc                j    t        j                  |d       |s|S | j                  d||d      \  }}|S )NrE   Dropoutr  )ratio_fr[  )r   r  r$  )r(  r/  r.  trainr  r  s         r  rE   rE     s;     ''y944	5!Q47DAqHr  zaten::alpha_dropout_zaten::feature_alpha_dropout_zaten::feature_dropout_zaten::feature_alpha_dropoutzaten::alpha_dropoutzaten::feature_dropoutc                F     t        j                  ddd       fd       }|S )NrY  r  r9  c                :    |rt        j                  d|      S |S )Nztraining mode)r   r\  )r(  r/  r.  r`  r  s       r  feature_dropoutz-_unsupported_dropout.<locals>.feature_dropout  s"     "11$OOr  r   r  )r  rc  s   ` r  _unsupported_dropoutre    s.    2 VS1 2 r  z
aten::normc                R   |dk(  rt        j                  d      }n1|dk(  rt        j                  d      }nt        j                  d|       || |||      }|Lt        j                  |dd      }| j                  d	|t        j                  |      j                         
      }|S )NrD  ReduceL1r  ReduceL2z)ONNX export only p-norms with p of 1 or 2)rB   r2  r  r  rn  ro  )	r   _reduce_op_symbolic_helperr   rj  re  r$  r
   rt  ry  )r(  r<  r.  rB   r2  r  rZ  r  s           r  r   r     s     	Av66zB	
a66zB''7
 	
 q$C1F**5#w?ff;+D+DU+K+U+U+WXMr  zaten::conv_tbcc           
         | j                  d|g d      }| j                  d|g d      }t        | |||dg|gdgd      }| j                  d|g d      S )Nr  )rD  r  r   r  )r  rD  r   rD  )r  r   rD  )r$  r8   )r(  r/  r?  r  r   convs         r  r4   r4     s_     DDeID6ETT+viT8F!UFD1#uqc1=D44T)444r  zaten::_uniquec                .    t        j                  d|      S )N_uniquer  )r(  r/  sortedreturn_inverses       r  rm  rm    s     ,,Y>>r  zaten::_unique2c                4    t        j                  ddd|       y )N_unique2r  rC  r  )r(  r/  rn  ro  return_countss        r  rq  rq    s     ++J2uEr  zaten::_cast_Bytez2.0z
the futurez8Avoid using this function and create a Cast node insteadc                Z    | j                  d|t        j                  j                        S r  )r$  rq  rr  r  r(  r/  non_blockings      r  
_cast_Byterv    %     44G$?$?$E$E4FFr  zaten::_cast_Charc                Z    | j                  d|t        j                  j                        S r  )r$  rq  rr  r  rt  s      r  
_cast_Charry    %     44G$?$?$D$D4EEr  zaten::_cast_Shortc                Z    | j                  d|t        j                  j                        S r  )r$  rq  rr  r  rt  s      r  _cast_Shortr|  	  rw  r  zaten::_cast_Intc                Z    | j                  d|t        j                  j                        S r  )r$  rq  rr  rc  rt  s      r  	_cast_Intr~    rw  r  zaten::_cast_Longc                Z    | j                  d|t        j                  j                        S r  )r$  rq  rr  rs  rt  s      r  
_cast_Longr    rw  r  zaten::_cast_Halfc                Z    | j                  d|t        j                  j                        S r  )r$  rq  rr  FLOAT16rt  s      r  
_cast_Halfr  '  s%     44G$?$?$G$G4HHr  zaten::_cast_Floatc                Z    | j                  d|t        j                  j                        S r  )r$  rq  rr  rx  rt  s      r  _cast_Floatr  1  rw  r  zaten::_cast_Doublec                Z    | j                  d|t        j                  j                        S r  )r$  rq  rr  r  rt  s      r  _cast_Doubler  ;  s%     44G$?$?$F$F4GGr  zaten::_cast_Boolc                Z    | j                  d|t        j                  j                        S r  rx  rt  s      r  
_cast_Boolr  E  rz  r  zaten::emptyc                "    t        | |||||      S r  )r  )r(  r  r  layoutdevice
pin_memorymemory_formats          r  rJ   rJ   O  s     E5&&*==r  zaten::empty_likec                "    t        | |||||      S r  )r  )r(  r/  r  r  r  r  r  s          r  rI   rI   ]  s     avvzBBr  zaten::new_emptyc                ~    t        j                  |      }t        j                  |      r||}t        | |||||      S r  )r   r  rE  rJ   r(  r<  r  r  r  r  r  r#  s           r  r   r   k  sA     !55d;J&:+AE5&&*==r  zaten::scalar_tensorc                    t        j                  |dd      }|t        j                  j                  }| j                  d|t        j                  |      j                               }|S )Nr  r  rn  ro  )r   re  r
   rt  rx  r$  ry  )r(  scalarr  optionss       r  r   r   u  sY    &&uc7;E}))//TT&&{'@'@'G'Q'Q'STTFMr  zaten::tensorc                   t        j                  |dd      }t        j                  |      r|5t        j                  j                  t        j                  |      d         }g }t        j                  |      D ]  }| j                  dt        j                  dg            }t        j                  | ||      }| j                  d|t        j                  |      j                               }|j                  |         | j                  d	g|d
diS |t        j                  j                  |      }t        j                  |      r?t        j                  |      st        j                  |      r| j                  d|dd      }| j                  d|t        j                  |      j                               S )Nr  r  r   r]  rD  r^  rn  ro  r3  r4  ConcatFromSequence)r4  
new_axis_i)r   re  r-  r
   rt  ru  r  r$  r`  r,  r:  ry  r  _is_listrG  _is_scalar_list)r(  datar  r  requires_gradr  r   shape_references           r  r   r   ~  s    &&uc7;E&&t,=--88,,T215E 
 --d3 	!Add:u7G7G7LdMO//1oFAVQ[%>%>u%E%O%O%QRAa 		!
 qttH4z4!44=--88>E##D)++D1..t444,d14KD44;#<#<U#C#M#M#O4PPr  zaten::as_tensorc                    t        | |||      S r  )r   )r(  r  r  r  s       r  r   r     s    !T5&))r  zaten::zerosc           	        |t         j                  j                  }nt        j                  |      }t        j                  |d      }t        |t              rQt        |      dk(  rC| j                  dt        j                  g       j                  t        j                              }| j                  d|t        j                  dg|j                                     S )Nr'  r   r]  r^  ConstantOfShaper~  r
   rt  rx  r   r+  r5  r6  rV  r$  r`  r   r   r  r  r(  r  r  r  r  r  r{  sizes_s           r  r  r    s     }!//55!//6--eT:F&$CK1$4Zb)9)<)<U[[)IJ44aS(9(9(;<   r  zaten::zeros_likec           	     \   | j                  d|      }t        j                  |      r9t        j                  j                  |t        j                  j                        }nt        j                  |      }| j                  d|t        j                  dg|j                                     S )Nr,  r  r   r~  r^  
r$  r   rE  r
   rt  ru  rx  r`  r   r  	r(  r/  r  r  r  r  r  r7  r{  s	            r  r  r         DD% E&!//::;,,22
 "//644aS(9(9(;<   r  zaten::new_zerosc                ~    t        j                  |      }t        j                  |      r||}t        | |||||      S r  )r   r  rE  r  r  s           r  r   r     sA     !55d;J&:+AE5&&*==r  z
aten::zeroc                F    t        j                  |      }t        | ||      S r  )r   r  r  )r(  r<  r#  s      r  r  r    s!     55d;Jaz**r  z
aten::onesc           	        |t         j                  j                  }nt        j                  |      }t        j                  |d      }t        |t              rQt        |      dk(  rC| j                  dt        j                  g       j                  t        j                              }| j                  d|t        j                  dg|j                                     S )Nr'  r   r]  r^  r  rD  r~  r  r  s           r  r   r     s     }!//55!//6--eT:F&$CK1$4Zb)9)<)<U[[)IJ44aS(9(9(;<   r  zaten::ones_likec           	     \   | j                  d|      }t        j                  |      r9t        j                  j                  |t        j                  j                        }nt        j                  |      }| j                  d|t        j                  dg|j                                     S )Nr,  r  rD  r~  r^  r  r  s	            r  r   r     r  r  zaten::new_onesc                ~    t        j                  |      }t        j                  |      r||}t        | |||||      S r  )r   r  rE  r   r  s           r  r   r     sA     !55d;J&:+A5%<<r  z
aten::fullc                   t        j                  |d      }t        j                  |      r_|t        j                  j
                  n|}t        | ||||      }t        | ||| j                  dt        j                  d                  S t        j                  |dd      }|t        j                  j
                  }	nt        j                  |      }	t        j                  |d      }
t        |
t              rQt        |
      dk(  rC| j                  dt        j                  g       j                  t        j                               }| j                  d	||j#                  d      j                  |	j%                                     S )
Nr   r]  rD  r^  r  r  r'  r   r  )r   r+  rF  r
   rt  rx  r  r   r$  r`  r   re  r5  r6  rV  r   r  r  r  )r(  r  rc  r  r  r  r  const_valuetmpr{  r  s              r  rX   rX     s<    "225#>K  -38=))//eAueVV41c5!$$z5<<?$"KLL**5#w?=%3399K%33E:K 11%>fd#Fq(8DDU\\"-=-@-@-MDNEtt$$Q'**;+<+<+>?  
 	
r  zaten::full_likec                   t        j                  |d      }t        j                  |dd      }|9t        j                  j                  |t        j                  j                        }nt        j                  |      }t        j                  |      rct        | ||||      }	| j                  d||j                               }t        | |	|| j                  dt        j                  d                  S | j                  d	|      }
| j                  d
|
t        j                  |g|j                                     S )NrZ  r  r  rn  ro  r]  rD  r^  r,  r  r~  )r   r+  re  r
   rt  ru  rx  rF  r  r$  ry  r   r`  r   r  )r(  r/  
fill_valuer  r  r  r  r  r{  r  r7  s              r  rW   rW   (  s    !11*cBJ&&uc7;E}!//::;,,22
 "//6  ,E5&&9TT&*;3H3H3JTK
1c:qttJQt'PQQWe$ttLL*[5F5F5HI  
 	
r  zaten::new_fullc           	         t        j                  |      }t        j                  |      r||}t        | ||||||      S r  )r   r  rE  rX   )	r(  r<  r   r  r  r  r  r  r#  s	            r  r   r   H  sC     !55d;J&:+A4UFFJGGr  	aten::eyec           	        t        |      dk(  rV|\  }}}}}t        j                  | |dg      }| j                  d||d      }t	        | ||||      }	| j                  d|	      S t        |      dk(  rk|\  }}
}}}}| j                  dt        j                  | |dg      t        j                  | |
dg      d      }t	        | ||||      }	| j                  d|	      S t        j
                  ddt        |       d	      S )
Nr*  r   r3  rr  EyeLiker  r  with 
 arguments)rV  r   r  r$  r  r\  )r(  rX  r)  r  r  r  r  r  r7  r   ms              r  rP   rP   Y  s   
4yA~/3,5&&*"44QA3?Xx!<q%7ttIv&&
4yA~26/1eVVZ--aQC8--aQC8	  
 q%7ttIv&&))+s4yk7TUUr  aten::slicec                   t        |      dk(  rL|\  }}}}t        j                  |d      }|dk7  rt        j                  d|      |j                         j                         dk(  xr( t        |j                         t        j                        }|j                         j                         dk(  xr( t        |j                         t        j                        }|j                         j                         dk(  }	|j                         j                         dk(  }
|s|	r%|s|
r!|j                         j                         dk7  rt        j                  t        j                  j                  k(  rt        j                  d|      t        j                   | |dg      }t        j                   | |dg      }t        j                   | |dg      }| j#                  d	||||      S |rdnt        j                  |d      }|rt$        j&                  nt        j                  |d      }t        j                  |d      }t        j(                  | ||g|g|g
      S t        |      dk(  r|\  }}}d}|j                         j                         dk(  xr( t        |j                         t        j                        }|j                         j                         dk(  xr( t        |j                         t        j                        }|rdnt        j                  |d      }|rt$        j&                  nt        j                  |d      }t        j(                  | ||g|g|g
      S t        j*                  ddt        |       d      S )Nr(  r  rD  z"step!=1 is currently not supportedr#  rU  zUnsupported: ONNX export of Slice with dynamic inputs. DynamicSlice is a deprecated experimental op. Please use statically allocated variables or export to a higher opset version.r   DynamicSlicerq  r  r  r  r  )rV  r   r  r   rj  r  r  r5  r  r   NoneTyper   operator_export_typerq  OperatorExportTypesONNXr  r$  r   r  rs  r\  )r(  r<  rX  rB   r  r  r  is_start_noneis_end_noneis_start_onnx_constis_end_onnx_conststart_unsqueezedend_unsqueezeddim_unsqueezeds                 r  r   r   q  s/   
4yA~ $UC))$419++,PRVWW

))+/?? 
JJJL"++E
 hhjoo'+;; 

HHJA
 $jjl//15EEHHJOO-1AA*= +<xxz $44++w/J/J/O/OO//E 	  $3#D#DQPQs#S !0!B!B1cA3!O!0!B!B1cA3!Ott"$""  'AO,F,Fuc,RE  $$$//S9 
 ",,S#6C"004seUG3%  
TasD

))+/?? 
JJJL"++E
 hhjoo'+;; 

HHJA
 #(B(B5#(N     ++C5 	
 ,,t3%se
 	
 ))-5T:9VWWr  zaten::hardtanhc                8    t        j                  | d|||d      S )Nr@  rA  rB  r  )r(  r<  min_valmax_vals       r  rd   rd     s$     77	64wgB r  zaten::hardswishc                @    t        | |      }| j                  d||      S rw  )rb   r$  )r(  r<  hss      r  rc   rc     s#     
Q	B44tR  r  zaten::hardsigmoidc                *    | j                  d|d      S )NHardSigmoidgUUUUUU?r  r-  r  s     r  rb   rb     s     44tU433r  zaten::tanhshrinkc                <    | j                  d|t        | |            S )NrN  )r$  r   r  s     r  r   r     s     44tT!T]++r  zaten::hardshrinkc                   t         j                  j                  |t         j                  j                        }| j	                  dt        j                  ||j                                     }t        | t        | ||      t        | |t        | |                  }| j	                  d||| j	                  dt        j                  d|j                                           S Nr]  r~  r^  r  r   )r
   rt  ru  rx  r$  r`  r   r  r   r_   r   r   )r(  r<  lambdr{  lambd_opr   s         r  ra   ra     s     ++66k''--K ttU+*;*;*=>  H aAtX.1dC8<L0MND44	LL+*;*;*=> 	 	
	 r  zaten::softshrinkc                   t         j                  j                  |t         j                  j                        }| j	                  dt        j                  ||j                                     }t        | ||      }| j	                  d|t        | ||      | j	                  dt        j                  d|j                                           }t        | |t        | |            }| j	                  d|t        | ||      | j	                  dt        j                  d|j                                           }t        | ||      S r  )r
   rt  ru  rx  r$  r`  r   r  r_   r   r   r   r   )	r(  r<  r  r{  r  gt_condgt_outlt_condlt_outs	            r  r   r     s(    ++66k''--K ttU+*;*;*=>  H D(#GTTAtX	LL+*;*;*=> 	 	
	F D#a*+GTTAtX	LL+*;*;*=> 	 	
	F q&&!!r  zaten::aliasc                    |S r  r   r  s     r  r   r     r  r  zaten::unsqueezec                0   |dk  ryt        j                  |      }|Kt        j                  dt	        |      z   dz   dz   dz   t	        ||z   dz         z   dz   dz          ||z   dz   }nt        j
                  d	d
|      S t        j                  | ||g      S )zbImplement unsqueezing a pytorch tensor in ONNX by inserting a new dimension at the specified `dim`r   z)ONNX export unsqueeze with negative axis rz  r{  r|  rD  r}  r~  r  r  r  )r   r  r=  r>  r  r\  r  rN  s       r  r  r    s    
 Qw//5MM;c(AB == *	*
 cDj1n%& ;; XX	 *q.C"11Dd  ,,QcUCCr  z
aten::sortc                    |t        j                  dd|       t        j                  |      }	 ||   }|t        j                  dd|      S | j	                  d|||d      S # t        $ r d }Y <w xY w)NSortz'Out parameter is not supported for sortr  TopKr  k_ir4  r[  )r   r\  r  r   r$  )r(  r<  rB   	decendingrz  
self_sizesr  s          r  r   r   2  s     &&=t	
 !2248Jc? --f6QSWXX44(34BB   s   A$ $A21A2zaten::numelc                .    t        j                  | |      S r  )r   _numel_helperr  s     r  r   r   H  s    ((D11r  z
aten::topkc                    |t        j                  dd|       |st        j                  dd|       | j                  d|||d      S )Nr  z'Out parameter is not supported for topkzAscending TopK is not supportedr  r  )r   r\  r$  )r(  r<  r  rB   largestrn  rz  s          r  r   r   M  sQ     &&=t	
 &&v/PRVW44!C4;;r  zprim::convert_element_typec                    t        j                  |d   dd      }| j                  d|t        j                  |      j                               S )Nr   r  r  rn  ro  )r   re  r$  r
   rt  ry  )r(  r<  rX  r  s       r  r;   r;   [  sC    &&tAwW=E44;#<#<U#C#M#M#O4PPr  zaten::toc                T   d } ||      r|S t        |      dk(  r`|d   }t        j                  |d         r|d   j                         j	                         dk(  rwt        j
                  |d   j                         d      }t        |t        j                        r6t        |j                        dk(  r|j                         }t        |      }n|}t        j                  |      st        |t        j                        rDt        j                  j                  |d         }| j                  d||j!                               S | j                  d|t        j                  |      j!                               S t        |      dk(  rOt        j"                  |d	   d
d      }| j                  d|t        j                  |      j!                               S t        |      dk(  rOt        j"                  |d   d
d      }| j                  d|t        j                  |      j!                               S t        |      dk(  rOt        j"                  |d   d
d      }| j                  d|t        j                  |      j!                               S t        j$                  d|      S )Nc                   t        |       dk(  r| d   j                         j                         dk(  xsk | d   j                         j	                  t
        j                  j                               xs+ t        | d   j                         t
        j                        S t        |       dk(  rt        j                  | d   dd      }|d u S t        |       dv rt        j                  | d   dd      }|d u S y	)
Nr(  r   prim::devicer*  rD  r  r  )r     F)rV  r  r  r  isSubtypeOfr   ListTypeofIntsr5  rV  r   re  )rX  r  s     r  is_aten_to_device_onlyz"to.<locals>.is_aten_to_device_onlyc  s    t9> Q##%7 @7<<>--bkk.@.@.BC@d1gllnb.>.>?
 Y!^ $..tAwWEED= Y&  $..tAwWEED= r  r(  r   rU  rc  rn  ro  r*  rD  r  r  r  r  zUnknown aten::to signature)rV  r   rF  r  r  rd  r5  r`  r3  r7  ro   r  r
   rt  ru  r$  ry  re  r  )r(  r<  rX  r  r  tvals         r  r   r   a  s+   , d#
4yA~ Q%%d1g.Q##%)99",,T!W\\^WED$-tzz?a'99;DIE E$$U+z%/N--88aAE44__&    44;+D+DU+K+U+U+W4XX	Ta**47CAttFD{'@'@'G'Q'Q'StTT	Ta**47CAttFD{'@'@'G'Q'Q'StTT	Ta**47CAttFD{'@'@'G'Q'Q'StTT,,-I4PPr  zaten::repeatc                    t         j                  j                  }t        | ||      }| j	                  d||      }| j	                  d||      S )Nr)  Tile)r
   rt  rs  r   r$  )r(  r<  repeatsr  shape_s        r  r   r     sF    %%++Eq'5)F44$'D44g&&r  zaten::repeat_interleavec                   t        j                  |      }t        j                  |      }t        j                  |      }|t        j                  d|      |t        j                  d|      |t        j                  d|      t        j
                  |      rbt        j                  | || j                  dt        j                  dg                  }t        j                  dt        j                        }nt        j                  |      }|dk  r|t        |      z  }|j                         }t        |      D ]  \  }	}
|
	d	\  ||	<   ||	<    |dk(  s|d
k(  rA|d   d
k(  r9||   dk(  rt        j                  dddd|      S t        j                   | |||      S |d
k(  rW||   dk(  rt        j                  dddd|      S |d   t        j                  dddd|      S |d   ||   k(  sJ d       |d   }nt        j                  d|      g }t        j"                  | ||d      }t        j"                  | |||      }d\  ||<   ||<   t        |      D ]  \  }	}t%        | ||	   |d
z         }| j                  dt        j&                  |d |d
z                || j                  dt        j&                  ||d
z   d              g} | j                  dg|ddi}t)        | ||d       }t        j                  | || j                  dt        j&                  |            d      }|j+                  |         | j                  dg|d|iS )NzGUnsupported: ONNX export of repeat_interleave for unknown repeats rank.zGUnsupported: ONNX export of repeat_interleave for unknown repeats size.zEUnsupported: ONNX export of repeat_interleave for unknown input size.r]  r(  r^  r   r~  )r   r(  rD  r   r     z3Unsupported along dimension with unknown input sizez*Unsupported for cases with dynamic repeatsz2repeats must have the same size as input along dimz%repeats must be 0-dim or 1-dim tensor)r(  rD  r3  r4  	allowzero)r   r  r  r   rj  rE  r:  r$  r`  r   r  rJ  rV  r  	enumeraterH  -_repeat_interleave_single_value_repeat_helper_repeat_interleave_split_helperr  r,  rO   r  )r(  r<  r  rB   r  repeats_dimrepeats_sizesinput_sizesinput_sizes_tempr  r  repsfinal_splitsr_splitsi_splitsr_spliti_splitr_concats                     r  r   r     s    "227;K#55g>M!33D9K''U
 	
 ''U
 	
 ''S
 	
 $..tQTT*ellB4.@TA
 ll1EKK0//4 Qws;"'')$[1 <Z6;3K.s3<
 aK1,q1AQ1Fsq "CC#E  LLtWc
 	

 
	sq "CC#E  #"CC#<  !C 00	@?	@0Q''(OQUVVL>>q'4QRSH>>q$cRH.3+K&s+!(+ %WAx}cAg6DDU%5%56Fyq6Q%RDSDDU%5%56FsQwy6Q%RDS

 144686A6GXt4!11DDU%5%5k%BDC	
 	G$%  1444<444r  zaten::pixel_shufflec                   t        j                  |      }t        |      dk7  rt        j                  dd|      S t	        d |dd  D              rt        j
                  | t        j                  | |ddg      | j                  dt        j                  d	d
||d	d	g            d	      }| j                  d|g d      }t        j
                  | || j                  dt        j                  g d            d	      }t        j
                  | || j                  dt        j                  g d            d	      }t        j                  | |ddg      S |d   |z  |z  }t        j
                  | || j                  dt        j                  d
||||d   |d   g            d	      }| j                  d|g d      }t        j
                  | || j                  dt        j                  d
||d   |z  |d   |z  g            d	      S )Nr(  r   only support 4d inputc              3  $   K   | ]  }|d u  
 y wr  r   r  s     r  r  z pixel_shuffle.<locals>.<genexpr>$       
'19
'r  rD  r  r  r]  r   r(  r^  r  r  )r   rD  r(  r  r*  r  r  )r   r   r(  rD  r   r   )r   r   r   r   r(  rD  r*  r   r  rV  r\  r  r:  r  r$  r`  r   rn  )	r(  r<  upscale_factorr7  
after_viewafter_transpose	reshape_h	reshape_woutput_channels	            r  r   r     s+    ,,T2D
4yA~--4d
 	
 
'd12h
''$44--a1v>DDa^^QPQ%RS   

 $${J?Q$R#33DDU\\2E%FDG	
	 $33DDU\\2E%FDG	
	 ..q)aVDDaN2nD$44DD&&&QQ	   !

$ $${J?Q$R..DD&Q.0Q.0	  
 
 	
r  zaten::pixel_unshufflec                4   t        j                  |      }t        |      dk7  rt        j                  dd|      S t	        d |dd  D              r	t        j
                  | t        j                  | |dg      | j                  dt        j                  ddd	|dg      
      d      }t        j
                  | || j                  dt        j                  ddddd	|g      
      d      }| j                  d|g d      }t        j
                  | || j                  dt        j                  g d      
      d      }t        j                  | |ddg      S |d   |z  |z  }t        j
                  | || j                  dt        j                  d	|d   |d   |z  ||d   |z  |g      
      d      }	| j                  d|	g d      }t        j
                  | || j                  dt        j                  d	||d   |z  |d   |z  g      
      d      S )Nr(  r   r  c              3  $   K   | ]  }|d u  
 y wr  r   r  s     r  r  z"pixel_unshuffle.<locals>.<genexpr>l  r  r  rD  r  r]  r   r(  r^  r  r  )r   rD  r  r*  r  r(  r  )r   r(  rD  rD  r   r   r  r  )
r(  r<  downscale_factorr7  r  r  r  final_reshaper  r
  s
             r  r   r   d  s?    ,,T2D
4yA~--4d
 	
 
'd12h
''#33--as;DDU\\1a=Mq2Q%RDS	
	 $33DDU\\1aArCS2T%UDV	
	 $${I>P$Q'77DDU\\2E%FDG	
 ..q-!QHHa#336FF$44DDQQ#33(Q#33(	   !

$ $${J?Q$R..DD&Q#33Q#33	  
 
 	
r  c                   ,-./ t        j                  dz   dz   dz   dz   dz          g d}t        t        |D cg c]  }|j	                          c}|            }|rdnd}d	k(  r.t        |      |z  d
|	z   z  k7  rt        j                  d	d|      S t        |      |z  d
|	z   z  k(  sJ t        dt        |      |      D cg c]
  }||||z     c}-|
r j                  d|g d      }|r|rt        j                  dd|      S j                  d      r|dd  j	                            }d|d
   }t        j                  |d
      ,,t        j                  dd|      S |	 }|}g }dk(  sdk(  r|}nd	k(  r|\  }}g }|t               n|}dk(  rg d.n	d	k(  rg d.d / ,-./fd} ,-./fd} fd}t              D ]!  }|r0|dk(  r ||      \  }}}n ||      \  }}t               }||d
z   f} n|dk(  r7 |d|z        \  }!}"}# |d|z  d
z         \  }$}%}& j                  d|#|&d      }n* |d|z        \  }!}" |d|z  d
z         \  }$}%t               } j                  d|!|$d      } j                  d|"|%d      }d|z  d|z  dz   f} |||||g}'|'j                   |g|         d	k(  r|'j                   |g|         |ri nddi}(dk(  r(|	r|g})ng})  j                  dg|'d,|)d|(\  }}*nEdk(  r  j                  dg|'d,d
d |(\  }}*n"d	k(  r  j                  d	g|'d!,d"|(\  }}*}+|	rV j                  d|g d#      }t        j                   | j                  d$t        j                   g d%      &      d'      }nt        j"                   |d
g      }|j                  *       d	k(  sj                  +       $ |
r j                  d|g d      }d
k(  r*n  j                  dg|d(di}dk(  sdk(  r||fS d	k(  r"d
k(  r+n  j                  dgd(di}|||fS y c c}w c c}w ))NzVExporting a model to ONNX with a batch_size other than 1, with a variable length with z can cause an error z9when running the ONNX model with a different batch size. z4Make sure to save the model with a batch size of 1, z=or define the initial states (h0/c0) as inputs of the model. )r  r  r  Affiner  ThresholdedRelu
ScaledTanhr  r  Softsignr  r(  r  LSTMrD  zLSTMs with projectionsr   r  rD  r   r  r  zRNN/GRU/LSTMzdropout in training modeRNNzunknown hidden sizeGRU))rD  r  r   rD  )r  r  )r  )r  r(  )rD  r  c                    |D cg c](  \  }}t        j                  | |dg||z  g||z  g      * }}} | j                  dg|ddiS c c}}w )Nr   rq  r3  r4  )r   rs  r$  )r(  wr)  	intervalsxyslicess          r  reform_weightsz$_generic_rnn.<locals>.reform_weights  sk     "
1 ))!QaS!a%PQTUPUwW
 
 qttH0v0a00	
s   -Ac                    |    }	dk(  r|\  }}n	dk(  s	dk(  rfd|D        \  }}t        fdfD              S )Nr  r  r  c              3  4   K   | ]  } |        y wr  r   r  r  r(  hidden_sizereform_permutationr#  s     r  r  zB_generic_rnn.<locals>.transform_weights_no_bias.<locals>.<genexpr>  s"      $JKq![2DE$   c              3  N   K   | ]  }t        j                  |d g        ywr  r   r  r  r   r(  s     r  r  zB_generic_rnn.<locals>.transform_weights_no_bias.<locals>.<genexpr>  *      
 --aQC8
   "%)r  )
layer_indexweights	weight_ih	weight_hhr(  r'  layer_weightsr(  r#  variants
       r  transform_weights_no_biasz/_generic_rnn.<locals>.transform_weights_no_bias  sc    ,e#* IyF!2$OV$ Iy  
+
 
 	
r  c                    	|    }dk(  r|\  }}}}ndk(  sdk(  r
fd|D        \  }}}}j                  dd      }t        fd|fD              S )	Nr  r  r  c              3  4   K   | ]  } |        y wr  r   r&  s     r  r  z:_generic_rnn.<locals>.transform_weights.<locals>.<genexpr>  s"      6JKq![2DE6r)  r3  r   rr  c              3  N   K   | ]  }t        j                  |d g        ywr  r+  r,  s     r  r  z:_generic_rnn.<locals>.transform_weights.<locals>.<genexpr>"  r-  r.  )r$  r  )r/  r0  r1  r2  bias_ihbias_hhbias_concatr(  r'  r3  r(  r#  r4  s          r  transform_weightsz'_generic_rnn.<locals>.transform_weights  s    ,e5<2Iy'7F!26OV62Iy'7 dd8Wgad@ 
K8
 
 	
r  c                L    dk(  r| S t        j                  | dg|g|g      S )NrD  r   rq  r   rs  )r   r  r  r(  
num_layerss      r  retrieve_statez$_generic_rnn.<locals>.retrieve_state'  s<     Q 	
 !..1A3wcU	
r  r3  rr  direction_sbidirectional)r[  hidden_size_iactivations_s)r[  rC  linear_before_reset_ir  )r[  rC  )r   r  rD  r  r]  )r   r   r(  r^  r  r4  )r=  r>  dictr  lowerrV  r   r\  r#  r$  
startswithr  r  r  r:  r`  r,  rn  )0r(  r4  r/  initial_statesall_weights
has_biasesr?  rE   r`  rB  batch_firstbatch_sizesonnxActivationsact_funvariantToOnnxActivationMapweights_per_layerr  nonlinearityw_hhunidirectionalprev_outputh_outsh0c0c_outssequence_lensr5  r<  r@  r1  r2  r;  state_indicesweight_ih_fweight_hh_fbias_fweight_ih_bweight_hh_bbias_binputsextra_kwargs
activationh_outc_outr'  r3  r(  r#  s0   ``    `                                     @@@@r  _generic_rnnrg    s    MM	)
	 !	! F		F
 A	A J	JO "&O<W]]_<oN" (Q&S->O1O	M2  --f6NPUVV{z,==]ARSSSS q#k*,=> 	A--.M [%	:5--6
 	
 % 1'!"+2C2C2EFq>D!66tQ?K--15
 	
 '&NKF%7e+	F	B!,!4F1I+M% 6	F	 61
 

 

 : O! A%4Ea4H1	9k'@'C$	9$Qiq1uHM A%3DQU3K0[&3DQUQY3O0[&dd8VVAdF+DQU+K([+DQUQY+O([$QiX{KJIX{KJIE1q519,My)[-PnR8-89fMM.<m<=+r-1Qe*L9
*^
!%"" )(" "K !%"" )&'" "K (,)))*+)IU)%K  $${K$MK)99Z)9)9*)EF	K *99![1#NKefMM% _O!` dd;IdF AoU4144+L6+L!+LF%7e+F""	F	$/tqttH/Pv/Pa/PFF** 
o =s   Q'Q,c
                    t        j                  |      t        j                  |      }}
t        | d||
|||||||	      S )Nr  r   r  rg  )r(  r/  hidden_vweight_vrK  r?  rE   r`  rB  rL  hiddenr?  s               r  
_lstm_fullrm    sW     	$$X.$$X. F 	 r  c
                    t        j                  |      t        j                  |      }}
t        | d||
||||||	|      S )Nr  rM  ri  )r(  r/  rM  rj  rk  rK  r?  rE   r`  rB  rl  r?  s               r  _lstm_packedrp    sW     	$$X.$$X. F 	 r  z
aten::lstmc                b    t        j                  |d         rt        | g| S t        | g| S Nr  )r   rG  rp  rm  )r(  rX  s     r  r   r     s4    &&tAw/A%%%!#d##r  zaten::lstm_cellc                   t        j                  | |dg      }t        j                  |      }|D cg c]  }t        j                  | |dg       }}t        j                  |      r||||fn||f}	t        j                  |      rdnd}
t	        | d|||	|
ddddd      \  }}}t        j
                  | |dg      t        j
                  | |dg      fS c c}w )Nr   TFr  rD  )r?  rE   r`  rB  rL  )r   r  r  
_is_tensorrg  rn  )r(  r<  rl  w_ihrS  b_ihb_hhr/  r   r?  rK  r  rV  rY  s                 r  r   r     s    --as;E))&1FDJKqo//1qc:KFK$3$>$>t$DtT4 4QU,  )33D9uJ$	Avv **	6A3&&q&1#67 7% Ls   Cz	aten::grur  gruzaten::rnn_tanhRNN_TANHrnn_tanhzaten::rnn_reluRNN_RELUrnn_reluc                     t        j                  ddddddddd	       fd       t        j                  ddddddddd	       fd       fd}|S )NrY  r  rZ  c
                X    t        j                  |      }
t        | |||
||||||	      S r  ri  )r(  r/  rl  rk  rK  r?  rE   r`  rB  rL  r?  r  s              r  	_rnn_fullz"_one_hidden_rnn.<locals>._rnn_full  sC     !--h7
 	
r  c
                Z    t        j                  |      }
t        | |||
|||||	|      S )Nro  ri  )r(  r/  rM  rl  rk  rK  r?  rE   r`  rB  r?  r  s              r  _rnn_packedz$_one_hidden_rnn.<locals>._rnn_packed  sC     !--h7#
 	
r  c                X    t        j                  |d         r	 | g| S  | g| S rr  )r   rG  )r(  rX  r  r  s     r  symbolicz!_one_hidden_rnn.<locals>.symbolic2  s5    **473q(4((Q&&&r  rd  )r  r  r  r  s   ` @@r  _one_hidden_rnnr    so     S#sCc3L
 M
6 S#sCc3L
 M
6' Or  zaten::_dim_arangec           
         | j                  d|      }| j                  d|| j                  dt        j                  |            d      }t        | |dd d d       S )Nr,  r;  r]  r^  r   rr  r(  )r$  r`  r   r   )r(  likerB   
like_shapestops        r  _dim_aranger  ;  s^     gt$J44*add:u||C7HdIRS  D !T1dD$//r  zaten::detachc                    |S r  r   r.  s     r  rA   rA   F  r3  r  zaten::contiguousc                <    |dkD  rt        j                  d|      |S )Nr  z-onnx memory_format support is not implemented)r   rj  )r(  r/  r  s      r  r3   r3   L  s+     q'';U
 	
 Lr  zaten::_pack_padded_sequencec                   |r| j                  d|g d      }|j                         j                  t        j                  j
                  j                               st        j                  d|      t        j                  j                  |t        j                  j                        t        j                  j                  k7  r,| j                  d|t        j                  j                         }| j                  d||d	      S )
Nr  r  r  z*'lengths' must be a Tensor for ONNX exportrn  ro  zprim::PackPaddedr  r[  )r$  r  r  r`  r   
TensorTypegetr   rj  r
   rt  ru  rv  r  rq  rr  rc  )r(  r/  lengthsrL  s       r  _pack_padded_sequencer  V  s     [%	:<<>%%ehh&9&9&=&=&?@''8%
 	
 	!!,,[..88	
 $$((	)
 $$vwW-H-H-N-N$O44"E7A4>>r  zaten::_pad_packed_sequencec                j    | j                  d||d      \  }}|r| j                  d|g d      }||fS )Nzprim::PadPackedr  r  r  r  r  r-  )r(  r  rM  rL  padding_valuetotal_lengthr  s          r  _pad_packed_sequencer  o  s@     DD*D+qDIMD'ttKit8=r  zaten::randintc                6   t        j                  |dd      }t        j                  |dd      }t        j                  |dd      }|t        j                  j                  }nt        j                  |      }|t        j
                  d|      |t        j
                  d|      t        j                  |d      }	t        j                  |	      rN| j                  d|t        j                  dgt        j                  	      
      }
| j                  d|
||      }n| j                  d|	||      }t        j                  j                  }| j                  d||j                               }||k7  r"| j                  d||j                               }|S )Nr  r  r  highr   r'  r  r   r~  r^  RandomUniformLikelow_fhigh_fRandomUniform)shape_ir  r  rn  ro  )r   re  r
   rt  rs  r  r+  rF  r$  r`  r   r  ry  )r(  r  r  shapesr  r  low_ihigh_ir{  r7  shape_constr   	int_dtyper   s                 r  r   r     s}   &&uc7;E&&sC7E''c6:F}!//55!//6}//	3??~//	4@@,,VT:E  'ddLL!EKK8  

 	  
 	  
 ))//Idd65y':':'<d=GK$$vw[-B-B-D$ENr  zaten::randint_likec                D   t        j                  |dd      }t        j                  |dd      }t        j                  |dd      }|t        j                  j                  }nt        j                  |      }|t        j
                  d|      |t        j
                  d|      | j                  d|||      }	t        j                  j                  }
| j                  d|	|
j                         	      }|
|k7  r"| j                  d||j                         	      }|S )
Nr  r  r  r  r   r  r  rn  ro  )r   re  r
   rt  rs  r  r$  ry  )r(  r<  r  r  r  r  r  r  r{  r   r  r   s               r  r   r     s   &&uc7;E&&sC7E''c6:F}!//55!//6}//	3??~//	4@@DD	  E ))//Idd65y':':'<d=GK$$vw[-B-B-D$ENr  zaten::randnc                   t        j                  |dd      }|t        j                  j                  }nt        j                  |      }t        j
                  |d      }t        j                  |      rZ| j                  d|t        j                  dgt        j                              }| j                  d||j                         	      S | j                  d
||j                               S )Nr  r  r'  r  r   r~  r^  RandomNormalLikedtype_iRandomNormalr  r  r   re  r
   rt  rx  r+  rF  r$  r`  r   r  ry  r(  r  r  r  r{  r7  r  s          r  r   r     s    &&uc7;E}!//55!//6,,VT:E  'ddLL!EKK8  

 tt))+  
 	

 44%%'   r  z
aten::randc                   t        j                  |dd      }|t        j                  j                  }nt        j                  |      }t        j
                  |d      }t        j                  |      rZ| j                  d|t        j                  dgt        j                              }| j                  d||j                         	      S | j                  d
||j                               S )Nr  r  r'  r  r   r~  r^  r  r  r  r  r  r  s          r  r   r     s    &&uc7;E}!//55!//6,,VT:E  'ddLL!EKK8  

 tt))+  
 	

 44%%'   r  zaten::randn_likec                   t        j                  |dd      }|9t        j                  j	                  |t        j                  j
                        }nt        j                  |      }| j                  d||j                               S )Nr  r  r  r  r   re  r
   rt  ru  rx  r$  ry  )r(  r<  r  r  r  r  r  r{  s           r  r   r     su     &&uc7;E}!//::+++11
 "//644"D+2G2G2I4JJr  zaten::rand_likec                   t        j                  |dd      }|8t        j                  j	                  |t        j                  j
                        }| j                  d|t        j                  |      j                               S )Nr  r  r  r  r  )r(  r<  r  r  r  r  r  s          r  r   r     sw     &&uc7;E}))44+++11
 44T;+D+DU+K+U+U+W   r  zaten::rreluc                    |s||z   dz  }| j                  d||      S | j                  d|||      }| j                  d||      S )Nr  r  r  r  )r  r  r  r-  )r(  r/  rG  upperr  r  r  r.  s           r  r   r   &  sT     #%ttKt66	 %UCA44""r  zaten::bernoullic                z   |,t        j                  |      st        j                  dd|       |,t        j                  |      st        j                  dd|       t        j                  j                  |t        j                  j                        }|t        j                  j                  k(  rt        j                  dd|      S | j                  d|dd|j                               }|t        j                  |      s|n|}| j                  d	||      }| j                  d
||j                               S )N	Bernoulliz,out parameter is not supported for bernoulliz(generator is not supported for bernoulliinput dtype not accessibler  r  r  )r  r  r  r  rn  ro  )	r   rE  r\  r
   rt  ru  rv  r$  ry  )	r(  r/  r.  r  rz  r  randsprobr  s	            r  r$   r$   0  s"   
77<&&G	
 _%=%=i%H&&CU	
 %%00{((22E ))333--5u
 	
 DD!  E o&>&>q&A1uDTT&%&F44U__%6477r  zaten::log_sigmoidc                J    | j                  d|      }| j                  d|      S )Nr  r7  r-  )r(  r/  r.  s      r  r|   r|   O  s$     	
YA44q>r  z	aten::erfc                &    | j                  d|      S )NErfr-  r.  s     r  rL   rL   V  s     44ur  zaten::flattenc                   t        j                  |      }|t        j                  dd|      S |dk(  rt        j                  | |dg      S |dk(  r| j	                  d|      S |dk  r||z   }|dk(  r||dz
  k(  r| j	                  d||      S |dk(  r||dz
  k(  r| j	                  d||dz         S t        j
                  | ||||      S )	NrB   r  r   rD  r  Flattenrr  r  )r   r  r\  r:  r$  _flatten_helper)r(  r/  	start_dimend_dimrB   s        r  rR   rR   \  s     
*
*5
1C
{--7	
 	
 ax..q%!==
axttJ&&{-A~'S1W,ttIuYt77A~'S1W,ttIuWq[t99**1eYMMr  zaten::nonzeroc                :    t        | | j                  d|            S )z/Emitted from `torch.nonzero(x, as_tuple=False)`NonZero)r   r$  r.  s     r  r   r   y  s     QY&''r  zaten::nonzero_numpyc                4    t        | t        | |      d|      S )NrD  )r^  )r   r   )r(  r/  r^  s      r  r   r     s     !WQ&H==r  zaten::isnanc                *    | j                  d|      }|S )NIsNaNr-  )r(  r/  r  s      r  rn   rn     s     TT'5!FMr  z	aten::anyc                   t        |      dk(  r|d   }d\  }}nY|\  }}}t        j                  |d      }|j                  d      D cg c]  }t	        |       }}t        j                  |d      }| j                  d|t        j                  j                        }t        j                  | |||	      }t        | || j                  d
t        j                  dt        j                                    S c c}w )NrD  r   rU  r   r(  r  rn  ro  r  r]  r~  r^  )rV  r   r  r  r  r$  rq  rr  rs  r  r_   r`  r   r  )r(  rX  r/  rB   r2  r8  	input_sums          r  _anyr    s     4yA~QW #sG((c2"xx|,!s1v,,!,,Wc:DDW%@%@%F%FDGE11	5I aADDU\\!5::5VDWXX -s   	C9z	aten::allc           
         | j                  d|d         }t        |      dk(  r| j                  dt        | |            S | j                  dt        | ||d   |d               S )Nr  r   rD  r  )r$  rV  r  )r(  rX  r/  s      r  _allr    s^    DDQ E
4yA~ttE45>** ttE45$q'47;<<r  zaten::narrowc                B    t        j                  | ||g|g||z   g      S )Nrq  r>  )r(  r/  rB   r  lengths        r  r   r     s-     ((	5ueWEFN3C r  zaten::argmaxc                4    t        j                  | |||d      S )NArgMaxr   _argmin_argmax_helperr(  r/  rB   r2  s       r  r   r          00E3RRr  zaten::argminc                4    t        j                  | |||d      S )NArgMinr  r  s       r  r   r     r  r  zaten::scatterc           
        t         j                  j                  |t         j                  j                        }t	        j
                  |      }t	        j                  |      r| j                  d||||      S t         j                  j                  |      }||k7  r"| j                  d||j                               }| j                  d||t        | ||      |      S )NScatterrr  rn  ro  )
r
   rt  ru  rv  r   rJ  rF  r$  ry  rN   )r(  r<  rB   rj   srcsrc_typer  s          r  r   r     s     ((33[&&00H 
+
+C
0C  %ttItUCt<< '44??Ex'$$vs)9)C)C)E$FCttItUIae,DStQQr  zaten::scatter_addc                d   t        j                  |      }|t        j                  dd|      S t        j                  |d      }|r7| j	                  dt        j                  ||j                                     }nt        | ||      }t        j                  | ||||      }t        | ||      S )Nr   r  F)allow_nonstaticr]  r~  r^  )r   r  r\  r  r$  r`  r  r  r  _scatter_helperr   )r(  r<  rB   rj   r  r{  r  to_adds           r  r   r     s     "66t<K--7
 	
 --dEJEj%++e;CTCTCV*WXAt[1,,QUCHFq$r  z
aten::log2c           
         d}| j                  dt        | |      | j                  dt        j                  |                  S )Ng9B.?rm  r]  r^  r:  )r(  r<  _ln2s      r  r   r     s6    D44s1d|QTT*ell4>PT%QRRr  zaten::is_floating_pointc                    t        j                  |      r'| j                  dt        j                  dg            S | j                  dt        j                  dg            S Nr]  rD  r^  r   )r   rw  r$  r`  
BoolTensorr  s     r  rl   rl     sP    d#ttJ(8(8!(=t>>44
E$4$4aS$94::r  zaten::__is_c                   t        j                  |      rct        j                  |      r'| j                  dt        j                  dg            S | j                  dt        j                  dg            S t        | ||      S r  )r   rE  r$  r`  r  rK   rS  s      r  __is_r    sm    &##D)44
E,<,<aS,A4BBttJ(8(8!(=t>>aur  zaten::__isnot_c                    t        | ||      S r  )r  rS  s      r  __isnot_r    s     D%  r  zaten::one_hotc                   | j                  dt        j                  ddg            }t        j                  j                  |t        j                  j                        t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  hv r,| j                  d|t        j                  j                        }| j                  d|||d	      S )
Nr]  r   rD  r^  rn  ro  OneHotr(  rr  )r$  r`  r,  r
   rt  ru  rv  r  r  r  r  rq  rr  rs  )r(  r<  num_classesr  s       r  r   r   	  s    TT*e&6&61v&>T?F  ++[..88 	!!''!!&&!!%%!!''	
 dd6;W5P5P5V5VdW44$VB4??r  zaten::gatherc           
     F   t        j                  |d      rt        j                  dd|      S t        j                  j                  |      }| j                  dt        j                  ddg            }t        | || j                  dt        j                  |g                  }| j                  d| j                  d	||||
      |j                               }| j                  dt        j                  | ||dz   g      |      }t        j                  | ||gd      S )Nr  rY   zsparse_grad == Truer]  r   rD  r^  rn  r  rr  ro  rE  r  )r   r+  r\  r
   rt  ru  r$  r`  r,  r   ry  r  r  )	r(  r<  rB   rj   sparse_gradr{  r  depthr   s	            r  rY   rY     s    ''S9--h8MtTT ++66t<KTT*e&6&61v&>T?FD!$$z53C3CSE3J$KLEDD	XueVC8""$  E
 $$uo774#'KU
SC,,QSEaPPr  c                4    t        j                  | ||||      S r  )r   _var_mean_helper)r(  r/  rB   
correctionr2  s        r  	_var_meanr  ,  s    ++Auc:wOOr  z	aten::stdc                F    t        | |g| \  }}| j                  d|      S Nr  r	  r$  r(  r/  rX  r
  r  s        r  r   r   1  s(    a&&FC44r  z	aten::varc                &    t        | |g| \  }}|S r  )r	  r  s        r  r
  r
  7  s    a&&FCJr  zaten::var_meanc                \    t        |      dk(  rt        | |d |d   d       S t        | |g| S )NrD  r   )rV  r  )r(  r/  rX  s      r  r	  r	  =  s6    
4yA~E4a$77E)D))r  zaten::std_meanc                J    t        | |g| \  }}| j                  d|      |fS r  r  )r(  r/  rX  r
  r  s        r  r   r   E  s-    E)D)IC44d""r  zaten::logsumexpc                ,    | j                  d|||      S )NReduceLogSumExpr  r-  r  s       r  r   r   K  s     44!54IIr  aten::arangec                    d } fd}t        |      dk(  st        |      dk(  rt        |      dk(  rd }n ||d         }t        j                   |d   |      \  }}}}t        j                   |dg      } ||      }t        j                   t         t         ||d d             dg      }	 j                  d|	t        j                  |      j                         	      S t        |      d
k(  st        |      dk(  r>t        |      d
k(  rd }n ||d         }t        j                   |d   |d   |d   |      \  }}}}t        j                   |dg      }t        j                   |dg      }t        j                   |dg      } | j                  d j                  d||      |            }t        j                   t         t         |d d d             dg      }	 j                  d j                  d|	|      |      }	 j                  d|	t        j                  |      j                         	      S t        |      dk(  r ||d         }t        j                   |d   |d   |      \  }}}}t        j                   |dg      }t        j                   |dg      } | j                  d||            } j                  dt        j                   t         t         ||g|dd         dg      |      }	 j                  d|	t        j                  |      j                         	      S t        j                  ddt        |       d      S )Nc                2    t        j                  | d      } | S r  )r   r+  r~  s    r  _get_arange_dtypez!arange.<locals>._get_arange_dtypeS  s    00<r  c                    t        j                  |       rJj                  dj                  d|       t        j                  j
                  j                               } | S )Nrn  r  ro  )r   rw  r$  r
   rt  rs  ry  )range_tensorr(  s    r  _float_step_convertz#arange.<locals>._float_step_convertW  sU    !!,/44V\* ..44>>@   L
 r  r  r*  rD  r   )r  r  rn  ro  r(  r  r  )r  r  r  r  rm  rN  rB  rE  r  )r  r  r  r  r  r  )rV  r   _arange_cast_helperr  rn  r   r   r$  r
   rt  ry  r\  )
r(  rX  r  r  r  r  r  r  r  arange_tensors
   `         r  r   r   Q  s`    4yA~Tat9>E &d1g.E"1"E"E47%#
sE4 //3<*3/'77wq$q,tTBCaS
 ttM(A(A%(H(R(R(T  
 	
 
Ta3t9>t9>E &d1g.E"1"E"ET!W$q'Qu#
sE4 00D1#>//3<11!UQC@*144qttE37NPT+UV'77wq$q,dDABQC
 UADDt$DeLttM(A(A%(H(R(R(T  
 	
 
Ta!$q'*"1"E"ET!W$q'#
sE4 //3<11!UQC@*144sE+BC++71d1lEGT!"XGH1# 
 ttM(A(A%(H(R(R(T  
 	
 )).E#d)J:WXXr  zaten::linspacec                   t        j                  | |d       }t        | t        | ||      t        | || j	                  dt        j                  dt
        j                                          }	t        | t        | ||	      |      S )Nr]  rD  r~  r^  )
r   _arange_helperrC   r   r$  r`  r   r  r   r   )
r(  r  r  stepsr  r  r  r  r  r  s
             r  r{   r{     ss     #11!UDAL	AsEAuadd:u||AU[[/QdRSD
 q#at,e44r  z
aten::liftc                    |S r  r   r  s     r  ru   ru     s	     Kr  zaten::masked_fillc                    | j                  d|t        j                  j                        }t	        j
                  |      }| j                  d|t	        j                  ||      |      S )zImplement the masked_fill functionality available for a pytorch tensor in ONNX.

    Fills elements of the input tensor with `value` where `mask` is True.
    rn  ro  r  )r$  rq  rr  ry  r   rJ  r  r(  r<  maskrc  s       r  r   r     sW     447#>#>#C#C4DD--e4E44AA%NPTUUr  zaten::masked_fill_c                    t        | |||      S r  )r   r  s       r  r   r     s    q$e,,r  aten::indexc                P    t        j                  |      rt        j                  |      }n|g} fd}|D cg c]
  } ||       }}t        |      dk(  rt        j                   d|d   d      S t        |      D cg c]  \  }}t        j                  |      r| }}}t        |      dk(  rS t        |      dk(  rt         |d   ||d            S t        j                        }|t        j                  dd      S t        j                  dt        j                   d	       t        |      }	t               }
t        |      D cg c]<  } j!                  d
|
 j!                  dt#        j$                  |g            d      > }} j!                  d|t        |      D cg c]	  }||vs| c}z          j!                  d|	      ||d      }||d      }t        |	dz
  dd      D ]G  } j!                  d|||      |      } j!                  d||      } j!                  d||||            }I t         d|      t         |      }|t'        t        |d   |d   dz               k(  r+ j!                  dt#        j$                  dg            gt        |      D cg c]  }||vs||    c}z   }  j                   dg|ddi}t        j(                   |      t'        t        d|d   dz               dgz   t'        t        |d   dz   ||	z
  dz               z   } j!                  d|      t        |d         D cg c]  }||   	 c}|gz   t        |d   |      D cg c]  }||vr||    c}z   }  j                   dg|ddi}n5  j                   d|gt        |      D cg c]  }||vr||    c}ddi}t        j(                   |      S c c}w c c}}w c c}w c c}w c c}w c c}w c c}w c c}w )Nc                   t        j                  |       st        j                  j	                  | t        j                  j
                        t        j                  j                  k(  st        j                  |       r\j                  dk  rt        j                  d      t        j                  d       t        j                  t        |       dg      } | S )Nr  z?Exporting masked indices are only supported after ONNX opset 9.zExporting aten::index operator with indices of type Byte. Only 1-D indices are supported. In any other case, this will produce an incorrect ONNX graph.rD  )r   rE  r
   rt  ru  rv  r  rR  r  r   rj  r=  r>  rn  r   )rj   r(  r<  s    r  try_mask_to_indexz index.<locals>.try_mask_to_index  s    ''.%%00{00:: ((../ ''.ww{//U  MM=
 $33Awq%7H1#NEr  rD  r   F)apply_reshaper  z9operator of advanced indexing on tensor of unknown rank. z=Exporting aten::index operator of advanced indexing in opset z is achieved by combination of multiple ONNX operators, including Reshape, Transpose, Concat, and Gather. If indices include negative values, the exported graph will produce incorrect results.r;  r]  r^  rr  r  r  r  r(  r  rE  rB  r3  r4  )r   r-  r  rV  r	  r  rE  ri   r  r\  r=  r>  r   r  r0  r#  r$  r`  r,  r6  r:  )r(  r<  rj   r@  r  r  r  adv_idx_indicesr  adv_idx_countshape_tensorrB   dim_tensor_listcum_adv_index
multiplier	adv_indexcum_adv_index_shape_tensorfolded_adv_idx_shape_listfolded_adv_idx_shapeadv_idx_permutefinal_shape_listfinal_shapes   ``                    r  rj   rj     s   &&u-!..u5'* 299# %9G9
7|q--tQ
%
 	
. &g.
!So6N6Ns6SA
 
 1$K!Q&4+W_Q5G-H  #33D9D|&55!O  MMO445ii  0M+At4L !;   DDU-=-=se-DDE	  O  44&#DkFQo-E1FG  D 44	44>D $OB$78M()<=J=1,b"5 DD0B(CZP	 !UM9 ETT:q7I'J
  4M:D)9!])K& $oa(/"*=*AB# 
 DDU-=-=rd-CDD- 16d+,q?WOA&-)
 (,qtt(8(AB($ '66q$@TU q/!"4q"89:c5!3a!79MPQ9QRST  
 ttKotF 27q7I1JKA_Q'K123 "'q'94!@O3 (* ! #add8I.>IqI"add.	
 "'tO3 (*	 	 #221dKHHK :0
: G6$ LsB   O?P#PAP
6	P P<	PP$PPP#
zaten::linalg_normc                T   d }|t        j                  |      r?t        j                  | |dg      }| j                  dt	        j
                  dg            }t        j                  |      }|t        j                  dd|      S |dk(  rt        j                  |d      }ned	dg}n`t        |      dk(  rRt        j                  |      r'| j                  dt	        j
                  dg            }t        j                  |d      }|rt        | |||||      S t        | |||||      S )
Nr(  r]  r  r^  rB   (Input rank must be known at export time.rD  rZ  r   )r   rE  r:  r$  r`  r,  r  r\  r  rV  ry   rw   )r(  r<  ordrB   r2  r  	ord_valueself_dims           r  rx   rx   e  s    I
{##C("221dRDAD$$z5+;+;QC+@$AC"33D9"11A4  q='223<Ia&Cs8q='',dd:u/?/?/DdE'223<I!!T9c7EJJasC%@@r  zaten::linalg_vector_normc                6    t        j                  | |||||      S r  )r   _linalg_vector_norm_helper)r(  r<  r  rB   r2  r  s         r  ry   ry     s      55asCRWXXr  zaten::linalg_matrix_normc                   t        j                  |d      }|dk(  rt        | |||      S |dk(  rt        j                  dd|      S t        j                  |d      }|t        | |||      S |dk(  s|dk(  rt        j                  dd	|      S t        j                  |      }|t        j                  dd
|      S |d   dk  r|dxx   |z  cc<   |d   dk  r|dxx   |z  cc<   |t
        j                  k(  s|t
        j                   k(  r|d   |d   c|d<   |d<   |d   |d   kD  r|s|dxx   dz  cc<   t        j                  | | j                  d|      |d   g|      }|dkD  r<t        | || j                  dt        j                  |d   g            |      \  }	}
|	S t        | || j                  dt        j                  |d   g            |      \  }	}
|	S )Nre  fronuczlinalg.matrix_normzord==nucrZ  r  r  zord==2r  r   rD  r5  r  r]  r^  )rN  r2  )r   r  rV   r\  r  r  infr  r$  r   r`  r,  r   )r(  r<  r  rB   r2  r  r  r  r  r  r@  s              r  rw   rw     s     **34IEasG44	e	--.BJPTUU#..sC8	!!T388>Y"_ #112FRVWW"33D9"11$&PRV 
 q6A:FhFq6A:FhF I$(($: VSVNCFCFq6CF?7FaKF//qttE4 #a&g
 q=!j%2B2BCF82LM	OFG  "j%2B2BCF82LM	OFG r  zaten::linalg_crossc                    t        | |||      S r  )r?   )r(  r/  r@  rB   s       r  rv   rv     s     E5#&&r  zaten::frobenius_normc                ~    | j                  d||      }t        j                  | |||      }| j                  d|      S )NrE  r  r  )r$  r   r  )r(  r<  rB   r2  sqrsumsqrs         r  rV   rV     s=     $$udD
!C..q#cgVF44r  zaten::multinomialc                   |,t        j                  |      st        j                  dd|       |s|dkD  rt        j                  dd|       t        | |      }| j	                  d|t
        j                  j                  |      S )NMultinomialz*generator is not supported for multinomialrD  zGreplacement=False when num_samples > 1 is not supported for multinomial)r  sample_size_i)r   rE  r\  r~   r$  rq  rr  rs  )r(  r/  num_samplesreplacementr  	log_inputs         r  r   r     s    
 _%=%=i%H&&G	
 ;?&&U	
 AuI44++11!	   r  zaten::baddbmmc           
     (   t         j                  j                  |      }t        | ||      }t	        | || j                  d||j                                     }t	        | || j                  d||j                                     }	t        | ||	      S r  )r
   rt  ru  r   r   r$  ry  r   )
r(  r<  batch1batch2r  rL  r{  	batch_mulmul_amul_bs
             r  r"   r"     s    ++66t<Kq&&)I		VU!6!6!89E
 		VT 5 5 78E
 q%r  zaten::meshgridc                8   |d}n|dvrt        j                  d| |      t        j                  |      }|dk(  r|dd d   |d d |D cg c]>  }t        j                  | || j                  dt        j                  dg      	            @ }}|D cg c]  }| j                  d
|       }} | j
                  dg|ddi}g }t        |      D ]  \  }	}| j                  dt        j                  dt        j                        	      gt        |      z  }
||	   |
|	<   t        | | | j
                  dg|
ddi      }|j                  | j                  d||              |dk(  r|d   |d   c|d<   |d<    | j
                  dg| S c c}w c c}w )Nij>   r6  xyzUnsupported indexing: r7  rD  r(  r  r]  r^  r,  r3  r4  r   r~  r)  prim::ListConstruct)r   rj  r   r  r:  r$  r`  r,  r  r   r  rV  r8  r  )r(  r  indexingunpacked_tensor_listr   r  tensors_shape	out_shaperz  r  r  
t_reshapeds               r  r   r   
  s    		%''$XJ/
 	
 +77D4#72#>Ra 
 &	  	''q!$$z5+;+;RD+A$B	
G  077!QTT'1%7M7X88a8I
C'" :144
EJJq,L4MNQTR
 
 #1%
)!QX0R0RPQ0RS


144*i89: 4QQAA144%,,,% 8s   AFFzaten::remainderc                h    t        | ||      }| j                  d||      }| j                  d||      S )NrE  rN  )rh  r$  )r(  r/  r@  rC   quos        r  r   r   +  s5    
5%
(C
$$uc5
!C44uc""r  z
aten::geluc                   |dk(  r*t        j                  dt         j                  z        }d}t        j                  |t        j
                        }t        j                  |t        j
                        }t        j                  dt        j
                        }t        j                  dt        j
                        }t        | |t        | ||            }	t        | |t        | |t        | ||	                  }
t        | |t        | |t        | || j                  d|
                        S d}| j                  d	| j                  d
|t        j                  |t        j
                                    }t        | || j                  dt        j                  dt        j
                                    }t        | t        | ||      | j                  dt        j                  dt        j
                                    S )Nr   r  gHm?r~  r        ?r  g;f?r  rm  r]  rD  r^  )	r  r   r  r`  r   r  r   r   r$  )r(  r<  approximatekBetakKappar  kappar  half	self_cubeinner_sqrt2rL   erf_plusones                 r  r[   r[   2  su    f		!dgg+&||E6V5<<8ll3ell3||Cu||44Qd!34	AtSD#a	*BCD1dC4QQTT&%5H)IJKK#dd5!$$udELLu||,TUVsADDU\\!5<<-PDQ
 4%DDU\\#U\\%JDK
 	
r  zaten::group_normc                   t        j                  |d      }|
||z  dk(  sJ t        j                  |      }|t        j                  dd|      S d|dg}	t        j                  | || j                  dt        j                  |	                  }
| j                  dt        j                  dg|z  t        j                  j                  |      j                         	            }| j                  dt        j                  d
g|z  t        j                  j                  |      j                         	            }| j                  d|
|||      }t        j                  | || j                  d|            }||j                         j                         rVt        j                  dgt        j                  j                  |      j                         	      }| j                  d|      }||j                         j                         rVt        j                  d
gt        j                  j                  |      j                         	      }| j                  d|      }t        t!        d|dz
              }t#        | t%        | |t        j&                  | ||            t        j&                  | ||            S )NrD  r   r^   zunknown input rankr(  r]  r^  r  r~  r  r  r  r,  )r   r  r  r\  r:  r$  r`  r,  r   r
   rt  ru  r  r  
mustBeNoner6  r#  r   r   r  )r(  r/  
num_groupsr?  r  r  r  r  
input_rankr7  r  r  r  norm_reshapedr   r  r  r  s                     r  r^   r^   N  st    #77qALj(A--- 11%8J--l<PRWXX
BE$44	5!$$z5+;+;E+B$CN ddEJ++66u=CCE
  G DDEJ++66u=CCE
  E DD%3  M **1mQTT'5=QRD~113||E22==eDJJL
 j,7|tyy{--/\\E22==eDJJL

 ttJ
t3 aa()D	At_66q&$GH))!T48 r  zaten::_weight_normc                2   t        j                  |      }|kt        t        |            }| |dk  r||z  }|dk7  r|j	                  |       t        | |d|d      }| j                  d||      }| j                  d||      S t        j                  d|      )Nr(  r  rD  rm  rE  zDUnsupported: ONNX export of _weight_norm for tensor of unknown rank.)	r   r  r6  r#  remover   r$  r   rj  )r(  rk  weight_grB   r  r  norm_vrC   s           r  _weight_normrT    s     ++H5D E$K ?RxtbyC a1dA.dd5(F+ttE3))

#
#N r  z	aten::dimc                J    | j                  d|      }| j                  d|      S )zFImplement the dim functionality available for a pytorch tensor in ONNXr,  Sizer-  r;  s      r  rB   rB     s%     DD$E44r  zaten::__contains_c           	     H   t        j                  |      }t        d |D              rft        j                  |      rQ| j	                  dt        j                  t        j                  |j                         d      d |D        v             S t        j                  d|      )Nc              3  F   K   | ]  }t        j                  |        y wr  )r   r  r  r   s     r  r  z__contains_.<locals>.<genexpr>  s       ,-$$Q's   !r]  rc  c              3  d   K   | ](  }t        j                  |j                         d        * yw)rc  N)r   rd  r  rY  s     r  r  z__contains_.<locals>.<genexpr>  s#     XQO--affh@Xs   .0r^  zJUnsupported: ONNX export of __contains__ for non-constant list or element.)r   r  r  r  r$  r`  r   rd  r  r   rj  )r(  r<  elementunpacked_lists       r  __contains_r]    s    #006M
 1> 

&
&w
/ttLL))',,.'BX-XY  
 	
 
#
#T r  zaten::__getitem_c           
     h    t        | || j                  dt        j                  dg            |      S r  )r   r$  r`  r   )r(  r<  r  s      r  
__getitem_r_    s+    !T144
ELL!4E4FJJr  z
aten::itemc                    |S r  r   r  s     r  ro   ro     r  r  z
aten::takec                    t        j                  | || j                  dt        j                  dgt        j
                                    }t        | |d|      }t        | ||      }|S )Nr]  r(  r~  r^  r   )r   r:  r$  r`  r   r  ri   r   )r(  r<  rj   self_flattenedrz  s        r  r   r     s\    $44	4j%,,t5;;*OPN q.!U
3C
QU
#CJr  c                R    t        | ||      }t        | |      }t        | ||      }|S r  )r   rM   r   )r(  r/  targetdiff_exp_r  s         r  _kl_div_log_target_implrg    s.    65!Eq&>DD% FMr  c           
         t        | |      }t        | ||      }t        | ||      }t        | |      }t	        | || j                  dt        j                  d                  }t        | |||      }|S r  )	r~   r   r   r  r_   r$  r`  r   r  )	r(  r/  rd  log_re  
output_poszeros_mask_r  s	            r  _kl_div_non_log_target_implrm    sm    q&>D4EQ&J:&Fq&!$$z5<<?$CDE1eZ0FMr  zaten::kl_divc                    |rt        | ||      }nt        | ||      }|dk(  r|S |dk(  r| j                  d|d      S |dk(  rt        j                  | |d      S t        j
                  d|      S )Nr   rD  r  r  r  z4kl_div with reduction other than none, mean, or sum.)rg  rm  r$  r   r  r  )r(  r/  rd  	reduction
log_targetr  s         r  rp   rp     s     (E6:,Qv>A~	attL&Qt77	a00FqII00BE
 	
r  zaten::mse_lossc           	         t        | t        | ||      t        | ||            }|dk(  r|S |dk(  r| j                  d|d      S |dk(  rt        j                  | |d      S t        j
                  d|      S )Nr   rD  r  ro  r  z6mse_loss with reduction other than none, mean, or sum.)r   r   r$  r   r  r  )r(  r/  rd  rp  r  s        r  r   r     s     C5&)3q%+@AFA~	attL&Qt77	a00FqII00De
 	
r  zaten::as_stridedc                   t        j                  |d      }t        |      }t        j                  | || j	                  dt        j                  dgt
        j                                    }t        j                  |      st        j                  dgt
        j                        }t        t        ||            D ]=  \  }\  }	}
dg|z  }d||<   |t        j                  |	      j                  |      |
z  z   }? |r||z   }| j	                  d|| j	                  d|            S d }t        |      D ]  \  }}
dg|z  }d||<   t        | || j	                  dt        j                  dg            | j	                  dt        j                  |                  }	t        j                  | t        | |	d	d d d       | j	                  dt        j                  |                  }| j	                  d
|| j	                  dt        j                  |
g                  }||}| j	                  d||      } |r7| j	                  d|| j	                  dt        j                  |g                  }| j	                  d||      S )Nr'  r]  r(  r~  r^  r   rD  r;  r(  rE  rB  )r   r+  rV  r:  r$  r`  r   r  rF  r  r  r  r   r  r   )r(  r<  r  stridesoffsetr  self_1dindr  r   r  r_sizetmp_inds                r  r   r   	  sF    ,,UD9Ew<D--	4j%,,t5;;*OPG $$U+llA3ejj1!*3ug+>!? 	AA~fS4ZFF1IT*//7&@@C	A ,CttHgqttJt'DEE"7+ 	0IAvS4ZFF1IZqc):;Za9	D &55q$4t4Zf)=>G
 ddwZvh9O PG {dd5#w/)	0* $$uc144
ELL&4J#KLCttHgs++r  zaten::__derive_indexc           	     J    | j                  d|| j                  d||            S )NrB  rE  r-  )r(  rj   r  r  s       r  __derive_indexr{  8  s"    44uadd5%677r  zaten::__range_lengthc                    | j                  d||      }| j                  dt        | ||            }| j                  d|t        j                  j                        S )NrN  r  rn  ro  )r$  r   rq  rr  rs  )r(  lor  r  r   rC   s         r  __range_lengthr~  =  sP     $$ub"
C
$$v{1c40
1C44'"="="C"C4DDr  zaten::linearc                   t        j                  |      }t        | |      }|dk(  r|j                         j	                         s~| j                  dt        j                  dt        j                              }| j                  dt        j                  dt        j                              }t        | |||||      }|S t        | ||      }|j                         j	                         st        | ||      }|S )Nr  r]  rD  r~  r^  )r   r  r   r  rL  r$  r`  r   r  r   r   r   )r(  r/  r?  r  r  rL  r  r  s           r  rz   rz   L  s    ++E2Dq&\Fqy//1Zau{{)KLttJQekk(JtKq$vud; M	 5&)yy{%%'D&)FMr  zaten::hann_windowc                   |Rt        j                         }|r|j                  st         j                  }t        j
                  j                  |      }	nt	        j
                  |      }	t        | |dd d d       }
| j                  d|
t        j                  j                        }t        | | j                  dt        j                  t        j                  t         j                              |      }|du rAt!        | || j                  dt        j                  dt         j"                                    }t%        | ||      }| j                  dt'        | t)        | |            |	j+                               }|S )	Nr(  rn  ro  r]  r~  r^  FrD  )r`  r  rl   r  r
   rt  
from_dtyper   r$  rq  rr  rx  r   r   r  r  r   r  rC   r   r   ry  )r(  window_lengthperiodicr  r  r  r  r  dtype_r{  n_arrayr  s               r  r`   r`   \  s6    }((*V55[[F!//::6B!//6Qq$d;GTT&'(C(C(I(ITJF	144
ELL$L4MvF 5}add:u||AUYY7WdX
 FM*FTTq#a.!""$  F Mr  zaten::mvc                    t        | ||      S r  r   )r(  r<  vecs      r  r   r     s    !T3r  z	aten::dotc                    t        | ||      S r  r  rS  s      r  rD   rD     s    !T5!!r  zaten::movedimc                   |j                  d      }|j                  d      }|j                         |j                         k(  sJ ||k(  j                         r|S t        j                  |      }|J t        t        |            }|j                         }|j                         }t        |j                         |j                               D ]  \  }}	|||	<   d||<   d||	<    |D 
cg c]
  }
|
dk7  s	|
 }}
|D 
cg c]
  }
|
dk7  s	|
 }}
t        ||      D ]
  \  }}	|||	<    | j                  d||      S c c}
w c c}
w )Nr(  r  r  )r  r   r  r   r  r6  r#  r  r  tolistr$  )r(  r<  r  destinationr  r%  src_dimsdst_dimsr  dstrB   s              r  r   r     sO    [[_F""2&K;;=K,,....+""$006I   i !Dyy{Hyy{H););)=> SS	
  (53"95H5'53"95H5(+ SS	 44T$4// 65s   +
D>6D> 
EEz
aten::fillc                    t         j                  j                  |t         j                  j                        }t	        | |||      S r  )r
   rt  ru  rx  rW   )r(  r<  rc  r{  s       r  rQ   rQ     s>     ++66k''--K Qe[11r  zaten::index_addc           
        t        j                  d       |rBt        j                  t        j                  |            dk7  rt        j
                  dd|      S t        j                  |d      }|t        j                  d|      t        j                  |      }t        j                  |      }||t        j                  d|      ||k7  r@||z
  }t        |      D ]-  }	t        j                  | |t        j                  |      g      }/ t        j                  ||      }
t        j                  ||      }|
||
|kD  rt        j                  d|      t        t        |            }t        |      D 	cg c]  }	d	 }}	t        |      D 	cg c]  }	|	|k7  rt        j                  nd }}	t        j                   | ||||
      }t#        | ||      }t        |      D ]  }	t        j                  | |d	g      } t        ||z
  dz
        D ]-  }	t        j                  | |t        j                  |      g      }/ t%        | ||t#        | ||      |      S c c}	w c c}	w )NzyWarning: ONNX export does not support duplicated values in 'index' field, this will cause the ONNX model to be incorrect.rD  re   z
alpha != 1r  zXONNX export does NOT support exporting 'index_add_()' function with unknown 'dim' value.z~ONNX export does NOT support exporting 'index_add_()' function while the rank of self tensor or tensor to be added is unknown.zoONNX export does not support exporting 'index_add_()' function with duplicated values in 'index' parameter yet.r   rq  )r=  r>  r   rI  rJ  r\  r+  r   rj  r  r#  r  r  r6  sysmaxsizers  rN   r   )r(  r<  rB   rj   r@  rL  self_dim_rankother_dim_rankdeltar  other_dim_sizeself_dim_sizenew_shape_axesnew_shape_startsnew_shape_endsr  s                   r  re   re     sy   MM	< (()J)J5)QRVWW--k<NN

*
*3
4C
{''#
 	
 $44T:M$55e<N 6''H
 	
 &.u 	A#555?;;EBCE	
 %99%EN#88sCM")BM)++>  %./N#(#78a88@Em@TU1a3hckkQ6UNU--	4n-=NI a	*E3Z A11!UQC@A =3&*+ 
11u77>?


 q$Yq%%?GG! 9Us   =	II$z
aten::rollc           	        t        |      t        |      k(  sJ |}t        t        |            D ]  }g }t        j                  | |||   g||    gt        j
                  g      }|j                  |       t        j                  | |||   gdg||    g      }|j                  |        | j                  dg|d||   i} |S )Nrq  r   r3  r4  )rV  r#  r   rs  r  r  r  r$  )r(  r<  shiftsr7  r  r  r  r7  s           r  r   r     s     v;#d)###F3v; 
9--vT!WIq	zl#++
 	e--vT!WIqc&)
 	eh88Q8
9 Mr  zaten::crossc           	         t        j                  ||      }t        | |dg|g      }t        | |dg|g      }t        | |dg|g      }t        | |dg|g      }t        | t	        | ||      t	        | ||            S )Nr  rD  )r   _get_dim_for_crossr   r   r   )r(  r/  r@  rB   roll_x_1roll_y_1roll_x_2roll_y_2s           r  r?   r?     s     
,
,UC
8C
 AuqcC5)HAuqcC5)H AuqcC5)HAuqcC5)H q#a8,c!Xx.HIIr  zaten::cdistc                    t        j                  |      }|J t        j                  | ||dz
  g      }t        j                  | ||dz
  g      }t        | |||dd      S )NrD  r  gư>F)r  r2  )r   r  r  r   )r(  r&  r'  r.  compute_moder  broadcasted_x1broadcasted_x2s           r  r,   r,   '  sn     ++B/D$66q"taxjIN$66q"taxjIN	>>1% r  z
aten::lerpc                   | j                  d||      }t        | | j                  d|| j                  dt        j                  d                  | j                  d|| j                  d||            | j                  d|| j                  d|| j                  d| j                  dt        j                  d            |                        S )	NrN  r  r]  rA  r^  rB  rE  r  )r$  r  r`  r   )r(  r<  r  r?  diffs        r  rt   rt   >  s     44sD!D		VVQTT*ell36GTHI	UD!$$ufd34	DDUADDU\\#5FDGP	
	 r  zaten::broadcast_tensorsc                    t        j                  |      }t        | |d         }|D ]  }t        | ||      } |D cg c]  }t	        | ||       }} | j
                  dg| S c c}w )Nr   r8  )r   r  r  r   rN   r$  )r(  r<  all_tensorst_with_final_shaper   t_lists         r  r(   r(   S  s    !..t4K#A{1~6  ; $6:; <GGai101GFG144%/// Hs   A&zaten::is_pinnedc                     y r  r   )r(  r<  r  s      r  rm   rm   a  s     r  prim::ConstantSplitc           	         t        j                  ||      }|t        j                  dd|      S |g||z  z  }||z  }|r|j                  |       | j	                  d|||t        |            S )Nr  rW  rX  rY  )r   r  r\  r  r$  rV  )r(  r<  r_  rB   r   r`  ra  s          r  r   r   g  s}    //c:D|--!#;T
 	
 \TZ/0Fj Hh44vc3v;4OOr  prim::ConstantChunkc                    t        j                  ||      }|t        j                  dd|      S ||z   dz
  |z  }t        | |||      S )Nr  rW  rD  )r   r  r\  r   )r(  r<  r]  rB   r  r_  s         r  r   r   y  s\    33D#>H--!#;T
 	
 V#a'F2Jq$
C88r  zprim::shapec                &    | j                  d|      S r+  r-  r  s     r  r   r     s    44r  z	prim::maxc                6    t        j                  | d||d      S )NrF  rA  r  r  rS  s      r  r   r     s     77	5$B r  z	prim::minc           
         |sSt        j                  |      r2t        | || j                  dt	        j
                  dg                  }t        | |      S t        | ||      S r  )r   r-  r   r$  r`  r   r   rS  s      r  r   r     sT    **40D!$$z5<<;L$"MND1d|q$r  z
prim::datac                    |S r  r   r  s     r  r   r     r  r  zprim::layoutc                N    | j                  dt        j                  d            S r  r  r  s     r  r   r     s     44
ELLO444r  r8  c                     y r  r   r(  rb  r  s      r  r   r         r  zprim::ListUnpackc                    t        |      dk(  r<|d   j                         j                         dk(  rt        j                  |d         S y )NrD  r   r8  )rV  r  r  r   r  r  s      r  r   r     sF     6{aF1INN,1137LL ++F1I66r  zprim::TupleConstructc                     y r  r   r  s      r  r   r     r  r  zprim::Uninitializedc                     y r  r   r  s      r  r   r     r  r  zprim::unchecked_castc                    |S r  r   r  s     r  r   r     r  r  zprim::dtypec                    t        j                  |      }|t        j                  j                  }| j                  dt        j                  |            S r\  )r   r  r
   rt  rx  r$  r`  r   )r(  r<  r{  s      r  r   r     sE    !66t<K!//5544
ELL$=4>>r  prim::tolistc                j    t        j                  |d      }|dkD  rt        j                  dd|      S |S )ztolist is currently supported only for 1D input tensors.

    dim_val and elem_ty_val represent dimension and type annotations
    that need to match dimension and type of the input tensor.
    r  rD  r  zdim_val > 1)r   r+  r\  )r(  r/  dim_valelem_ty_valrB   s        r  r   r     s7     
*
*7C
8C
Qw--nmUSSLr  r  c                
   | j                   j                         j                         }t        |t        j
                        ry t        j                  dd|j                          d| j                   j                               S )Nr  z,output type should be 'DeviceObjType', not '')	original_noder  r  r5  r   rV  r   r\  r  )r(  rb  r  output_types       r  r   r     sl    //((*//1K+r//0))
6{7G7G7I6J!L	  r  z
prim::Loopc           	        | j                   }| j                  }| j                  }| j                  }t        j
                  }t        j                  }t        |j                               }	t        j                  | dg||j                         t        |	      d\  }
}}t        |	|      D ]  \  }}t        |j                               D ]  \  }}|dk(  r0|t        |      k  r"|j!                  ||   j#                                |dkD  sA|dz   t        |      k  sSt%        |j#                         t&        j(                        r||j!                  ||dz      j#                                 t*        j&                  j-                  ||j.                  |||d        t*        j&                  j1                  ||      }t        j2                  r!t*        j&                  j5                  |||       |S )NLoopr[  n_blocksr   rD  F)r  envvalues_in_envparams_dictr   r  r  r  blocksr   add_op_with_blocksoutputsSizerV  r  r  rb  r%  r  r5  r   r&  r`  _jit_pass_onnx_blockblock%_jit_pass_fixup_onnx_controlflow_nodeonnx_shape_inference(_jit_pass_onnx_node_shape_type_inference)r(  rb  attrsr  r  r  r  r  opset_version
old_blocksnew_op_outputsnew_block_contextsnew_node	old_blocknew_block_contextr  b_infixed_outputss                     r  r   r     s   ??D
%%COOM--K"7755Mt{{}%J3<3O3O	644$($4$4$6Z40N& ),J8J(K 
$	$ !!1!1!34 	3GAtAv!c&k/VAY^^-.
 AUc&k)"499;@VAE]//12	3 	%%## 	
'
6 HHBB-M ##99k=	
 r  zprim::Ifc           	     0   | j                   }| j                  }| j                  }| j                  }| j                  }t
        j                  }t
        j                  }	|d   j                         j                         dk(  }
|
r0t        j                  |d   j                         d      j                         }t        |t              rt        |      n
t!        |      }|rdnd}t        |j#                               |   }t$        j&                  j)                  |||||d      }t        |j+                               }t        |j+                               }g }t-        t/        |            D ]B  }||   |vr t1        j2                  d||    d||         |||      }|j5                  |       D |S t7        |j#                               }t9        j:                  | dg||j=                         t/        |      d	\  }}}t?        ||      D ]3  \  }}t$        j&                  j)                  ||j                  |||d
       5 t$        j&                  jA                  ||	      }t
        jB                  r!t$        j&                  jE                  |||	       |S )Nr   rU  rc  rD  TzThe sub block ATen output z is not in env.Ifr  F)#r  r  r  r  r  r   r  r  r  r  r   rd  r  r5  r6  r  rW  r  r`  r   r  r[  r#  rV  r   rj  r  r  r   r  r  r  r  r  r  )r(  rb  r  r)  r  r  r  r  r  r  	static_if
input_flagr  	block_idx	current_bif_output_listcurrent_b_listfinal_b_listr  onnx_br  r  r  r  r  r  r  s                              r  r   r   $  so   	AGGE
%%COOM--K"7755Mq	 %%'+;;I4 %..vay~~/?IPPR
)*d;C
OjAQ 	 %A!	$Y/	hh++ 
 aiik*i//12^,- 	(Cc"#-//01D0E_U"3'  ,-F'	( 188:&
7@7S7St8
8
&'mmoJ8
4*H -0
<N,O 	(I(HH))!''$	 FFm
 ''HH==+} r  r#  c           	        | j                   }|j                         ry t        |j                         j	                         t
        j                        ry |j                  d      dk(  r'| j                  dt        j                  |d            S |j                  d      dk(  r'| j                  dt        j                  |d            S |j                         j	                         j                  t
        j                  j                               sI|j                         j	                         j                  t
        j                  j                               r:| j                  dt        j                   t        j                  |d                  S |j                         j	                         j                  t
        j                  j#                               rGt        j                  |d      D cg c]  }| j                  d|       }} | j                  dg| S t%        j&                  d|j                  d       d	t(        j*                   d
|j                               c c}w )Nrc  r   r]  r^  re  value_sr8  z"Unsupported prim::Constant kind: 'z'. Please send a bug report at .)r  rL  r5  r  r  r   rV  rX  r$  r   rd  r  r  r  ofFloatsr`  r   	ofStringsr   rj  r   PYTORCH_GITHUB_ISSUES_URL)r(  rb  r  r  re  str_constantss         r  r   r     s   ??D $++-$$&(8(89{{7s"ttJ(A(A$(PtQQ{{7s"ttJ(A(A$(PtQQ{{}''
					)	)"++*>*>*@	Att_-F-FtW-U V  
 	
 {{}''(=(=(?@ %..tW=
 DDQD'
 
 qtt):M::

#
#
,T[[-A,B C''1'K'K&LA	O 
s   8I/
prim::typec                   |j                         j                         dk(  rOt        j                  |j                         j	                               }|| j                  dt        |            S t        j                  dd|      S )Nr  r]  r  r  z,Device type cannot be statically determined.)	r  r  r   get_device_from_valuer/  r$  r  r   r\  )r(  device_valuerX  r  r  s        r  r   r     sw    !^3001B1B1D1J1J1LM44
CK488))6 r  zonnx::Placeholderc                    | j                   }| j                  }| j                  }| j                  }t        j
                  j                  ||||      S r  )r  r  r  r  r`  r   '_jit_onnx_convert_pattern_from_subblock)r(  rb  r  r  r  r  r  s          r  r   r     sF    ??DGGE
%%COOM88;;tS- r  zaten::resolve_conjzaten::resolve_negc                    |S r  r   r.  s     r  r  r    s	     Lr  zaten::_conjzaten::conj_physicalc                p    t        j                  |      rt        j                  d|      S t        | |      S )Nz aten::_conj, aten::conj_physical)r   is_complex_valuer  r  r.  s     r  r  r    s:     ''.00.
 	
 "!U++r  zaten::logitc                .   | j                  dt        j                  d            }t        j                  |      s| j                  d|t
        j                  j                  |      j                               }| j                  d||      }| j                  d||      }| j                  d|||      }| j                  d	||      }| j                  d|||      }n|}| j                  d||      }	| j                  d
||	      }
| j                  d|
      S )Nr]  r  r^  rn  ro  rN  r  r  r  rm  r7  )	r$  r`  r   r   rE  r
   rt  ru  ry  )r(  r<  r  r  one_sub_epsself_less_equal_one_sub_epstemporary_selftemporary_self_less_epszr   rC   s              r  r   r     s    
$$z5<<#4$
5C##C(ddCk77BB4HRRT  
 dd5#s+&'dd9k4&H#g'BD+V"#$$v~s"CDD13G
$$uc1
C
$$ua
C44sr  )r  r  )r(  jit_utils.GraphContextr  )r  )T)r  r  r  r  r	  rW  r  )F)r(  r  r/  r  r  r  r  rW  )rB   r  )r(  r  r/  r  r   r  )
r(  r  r/  r  r   r  rH  r  rc  r  )r  r  rB   r  r7  r  )r  r   returnr   )NNN)r(  r  r/  r  r  r  r?  r  r  r  r  r  r  z#tuple[_C.Value, _C.Value, _C.Value])r(  r  r/  r  r  r  r?  r  r  r  r  r  r  rW  r  r  )
r(  r  r  rW  r  r   r  r   r  rW  )FF)NN)FN)NNNFN)NNF)r(  r  r<  r  r  r  r  r  )r  r  )NNFN)r(  r  r/  torch._C.ValuerB   r  r2  rW  )r(  r  r<  r  r  r  rB   Sequence[int] | Noner2  rW  r  r  )r(  r  r<  r  r  r  rB   r  r2  rW  r  r  )r(  r  r<  r  r  r  rB   z	list[int]r2  rW  r  r  )r(  )NF)r(  r  r9  z
str | None)r  )r(  r  r<  r  rB  r  )TNNNNF)r(  r  r  z
int | None)r  #use_mm_for_euclid_dist_if_necessary)r(  r  r  zlist[_C.Value] | None)r(  r  r  None)r(  r  r  zlist[_C.Value])r(  r  r  r  )r(  r  r/  r  )r(  r  r<  r  r  r  (m  __doc__
__future__r   r  rL  r  r  r=  typingr   r   r   r`  torch._C._onnxr   _onnxrq  torch.nn.modules.utils
torch.onnxr   r	   r
   r   r   torch.onnx._globalsr   torch.onnx._internalr   r   torch.typesr   r  partialonnx_symbolic_onnx_symbolicr!  r  r0  r8  r  r   r   r   r   r   r   rC   r  r   rW  ri  rh  rS   rU   r   r   r+   r   r  r   r'   r   r   r   r   r   r   r   r=   r   r   r   r    r!   r   r   r  _apply_paramsr  r@   r  r  r   r   rO   r)   rN   rH   rG   r   r   r   r  r  r  r   r  r   r  r   r   r   r   r   r   r   r   r   r-   rT   r  r   rs   r]   r   r   r\   nnmodulesutils_single_pair_tripler  r   r   r   r  r  r
  r  r2   r  r   r   r   r8  r>  r%   r&   r  r  rS  rK   r   r_   r^  r   rf  rZ   rr   rl  ro  rq  r   r   r   r   r  r  r  r}   r  r  r  r<   r8   r9   r:   r5   r6   r7   r#   r   rq   rk   r  rF   r   ri   rh   rg   rf   r*   r   r>   r   r1   r   r~   r   r   r   r0   r/   r.   r   r   r   r   r   r   r   rM   rE   re  r   r4   rm  rq  
deprecatedrv  ry  r|  r~  r  r  r  r  r  rJ   rI   r   r   r   r   r  r  r   r  r   r   r   rX   rW   r   rP   r   rd   rc   rb   r   ra   r   r   r  r   r   r   r;   r   r   r   r   r   rg  rm  rp  r   r   r  r  rA   r3   r  r  r   r   r   r   r   r   r   r$   r|   rL   rR   r   r   rn   r  r  r   r   r   r   r   r   rl   r  r  r   rY   r  r   r
  r	  r   r   r   r{   ru   r   r   rj   rx   ry   rw   rv   rV   r   r"   r   r   r[   r^   rT  rB   r]  r_  ro   r   rg  rm  rp   r   r   r{  r~  rz   r`   r   rD   r   rQ   re   r   r?   r,   rt   r(   rm   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r   r  r  <module>r     s";   #    
  4 4         V U ' 8 "
CL #""<#=#=QG ()  *  ,-$ .$  %; & !; "#%# & $#
 $ $0 $ $* , , ( ( 9 9  Cc3/F 0 !F
 Cc*
 +
>'0 $%) &)
  !( "( #$$ %$6 "#$ $$ C%#0 & #0L C%3 & 3   
A A ' ' '  ' Cc342 5 2j        KCH I               *  KAF! G !!    %K &K 8?88eLM 9O99,OP %%%&%	
	 Cf-D .  D )*H +H '(F )F 	2 2  %1 & !1 %& &  && $%%& & &&$ !"d+' , #'" !"%Cc34++ 5 & #+0 %&%Cc3S#sCHPP I & 'P( e<6 = 6 !"%Cc*
 + & #
"  C&0 ' !0 %" & "  # !#
 $%Cc3/M 0 &M$ Cc3/M 0 M2 $%HL>> &> ()CsC0R 1 *R /0@DAA 1A Cc* +   %Cc*7 + &  7( #  #  ;J !;J| ' ', 6 6 E E % &  %! & !       9 9
 !"Cc* + # "#%Cc*
 	<<< < 	< + & $< C%7 & 7  Cf-; . !;|  !" "" -.2 /2j %%%%((**0088!E	
 		 %%%%((**0066%	
 		 %%%%((**0088!E	
 		767t J.)HI!&&		  J.)HI!$$		  J.)HI!&&		  %%%lEHH4D4D4J4J4R4RS %%%lEHH4D4D4J4J4P4PQ %%%lEHH4D4D4J4J4R4RS4*4n %%%!=%((2B2B2H2H2P2P	
 	%&	 %%%!=%((2B2B2H2H2N2N	
 	%&	 %%%!=%((2B2B2H2H2P2P	
 	%&	 %%%!HH""**#		
 	%& %%%!HH""((#		
 	%& %%%!HH""**#		
 	%&3~3l"" '( )$&R ()()() * * * )*)*)* + + + TTT 
T 	T
 T T( %%%&:AyI$% %%%&:AyI$% %%%&:AyI$% %%%&91hG#$ %%%&;QI%&  %%%&<aJ&'T$ %&88 '8  #$ % "## $# 	    
d+& , &2 
d+  ,  
d+% , %) 
d+% , %& 
d+%  , % 
d+%  , % %  %  $ $  %  %  #$f%% & %% "#f%$ & $$ #$f%% & %% #$S %S !" #8 !" #8 Cc3/	1 0 	1 #$Cf- . %> $%Cc*	& + &	& $%c4tS$S#sC" @@ &@F )*44 +4n #$Cc4tS$L M %< Cc4dC@ 
 
 A   
F Cc4dC@ 
 
 A   
F Cc4dC@ 
 
 A   
F ()Cc4tS$G H *: ()Cc4tS$G H *: ()Cc4tS$G H *: "#Cc3S#sCH44 I $4n )*eUE:CsC5I*I*I* $I* 	I*
 I* 
I* )I* 6 ; +I*X "#eUE:CsCc:


 $
 	

 
 

 
 
 ; ; $
 %&Cc3S#sCH\P\P \P \P 
\P \P I '\P~ Cc3/
 0  
D %Cc3/
F 0 & 
F % &  $%Cc*? + &? !"F #F "#	A $	A "#9 $9 !"Cc3/HM T T 0 # TF   !( )*Cc3/# 0 +#  )*$ +$"       Y Y V V
   > >* !"C%

 & #

 !"C%

 & #

 C	 C  d+) , !) C C  d+) , !) %Cs+C , & C %Cs+C , & C  %Cc* + & !    ! Cc* + ! " +o++,BCD "+o++,JKL +o++,DEF !+o++,IJK +o++,ABC +o++,CDE						0 CdC5 6    !Cc3/	5 0 "	5  Cc*? + !?  !Cc3/F 0 "F "#	>
G $G "#	>
F $F #$	>
G %G !"	>
G #G "#	>
G $G "#	>
I $I #$	>
G %G $%	>
H &H "#	>
F $F Cc3S9 	>	> : 	> "#Cc3S9 	C	C : $	C !"NS>> #> %& ' LQQQ  Q6 !"* #* Cc34 5   "#Cc3S9  : $. !"NS>> #> + +
 Cc34 5  !"Cc3S9  : #.  !NS== "= OT

 
0 !"
 

 #
>  ! HH "H  V V. EX EXP  !%Cc* + & " !"%C ! ! & #!
 #$KAFC 4 ! G %4 "#C , ! $, "#C% & $( "#C%" & $">   !"C%D & #D2 Cc62C 3 C& 2 2 Cc3V<< = < ,-Q .Q
 
GQ GQT '  ' )*DHd5d5 +d5N %&C%C
 & 'C
L '(C%@
 & )@
\ _+_+D Cc3S#sCH I> Cc3S#sCH I> $ $ !"7 #74 8?88?P +o++J79LM +o++J79LM?		?D #$C%0 & %0   
 "#C% & $ -.Cc*? + /?. ,-Cc34 5 ."  ' !'T $% &8  2  2 "#
 KK $K& !"
  #& Cc37# 8 # !"8 #8< #$C  ! %
 C  !   eU3Cc*N + 4 !N4  C ( ! !(
 %&> '> C  ! 
 Y Y& = = Cc3/ 0   Cc*SSS 
S 	S +  S Cc*SSS 
S 	S +  S  Cc3/R 0 !R  #$Cc3/  0 %  S S
 )*; +;    !!  "!  @ !@ Cc3/Q 0  Q" CsC0P 1P  
  
  !* "*  !# "#
 !"Cs+J , #J IY  IYX  !	5	5 "	5  
 #$V %V $%- &- `I `IF #$CdC5AA
A 
A 
	A
 A A 6 %AB *+CdC5YY
Y 
Y 
	Y
 Y Y 6 ,Y *+CdC588
8 
8 
	8
 8 8 6 ,8v $%Cc*' + &' &'Cs+  , (  #$Cc3/PT 0 %.    !    !C%- & "-> !"# ## C%
 & 
4 "#eUE:Cc3S977 : ; $7t $%Cc* + &.   #$ %& "#K $K     Cc3/
 0  
$  !Cc*
 + "
 "#%CdC0), 1 & $),X &'8 (8 &'E (E    #$Cc3S#> ## 	# ? %#L 
    " "  Cc*0 + !0@ C%2 & 2 !"BH #BHJ Ct, - & Cc*J + J" 
 
6 ,  ( )*
0 +
0 !" #
 %&
P '
P" %&9 '9         5  5 %& ' "# $ &' ( %& ' &' ( ? ? 	  	 	  	 1 1h 
W Wt  ! "D 
 
 #$ % $%#$ % & %&, ' ,"  r  