
    %VjitV                    o   d dl Z d dl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	 d dl
mZ d dlmZmZmZmZ d dlmZmZmZmZmZmZ d dlZd dlmZ d dlmZ d dlmc m Z! d dlm"Z"m#Z# d dlm$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: d dl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA g d	ZBejC        ZCejD        jE        ZEejF        jG        jH        ZHd
 ZId ZJd ZKdddZLd dlMmNZN  eO            ZPePddddefdZQd ZRd ZS eQe*jT        d          d             ZU eQe*jV                  d             ZW eQe*jV                  d             ZX eQe*jV                  d             ZY eQe*jV                  d             ZZ eQe*jV                  d             Z[ eQe*jV                  d             Z\ eQe*j]                  d             Z^ eQe*j]        d          d              Z_ eNeHj`                  d!e8fd"            Z` eNeHja                   eA            d!e8fd#                        Za eQe*jV                  d$             Zb eQe*jV                  d%             Zc eQe*jV                  d&             Zd eQe*jV                  d'             Ze eQe*jV                  d(             Zf eQe*jV                  d)             Zg eQe*jV                  d*             Zh eQe*jV                  d+             Zi eQe*jV                  d,             Zj eA             e?d-e*jk        .          d/e8d0e2de8fd1                        Zld/e8d0e2de8fd2Zm eNeHjn                   eA            d!e8de8fd3                        Zn eQe*j]        d          d4             Zo eQe*j]        d          d5e8de8fd6            Zpd/e8de8fd7Zq eQe*jr        d8          d/e8de8fd9            Zs eQe*jr                  d/e8de8fd:            Zt eQe*jr        d          d/e8de8fd;            Zu eQe*jr        d          d/e8de8fd<            Zv eQe*jr                  d/e8de8fd=            Zw eRejx        jy        d>          Zz eQe*jr        d8          d/e8de8fd?            Z{ eQe*jV        eHj|        8          d@             Z| eQe*jV                  dA             Z} eQe*jV                  dB             Z~ eQe*jV                  dC             Z eQe*jV                  dD             Z eQe*jV                  dE             Z eA            	 dd/e8dFedGeej                 de8fdH            Z eNeHj                   eA             e?dIe*jV        .          	 ddJe8dFe(dKede8fdL                                    Z eNeHj                   eA            	 	 	 dd/e8dNee2         dOee2         dPee2         de8f
dQ                        Zd/e8fdRZ eQe*j]        eS          dT             Zd/e8de8fdUZd/e8de8fdVZ eQe*jV                  dW             Z eNeHj                   eA             e?dXe*j]        .          d dYd/e8dZede8fd[                                    Z eQe*jV                  d\             Z eQe*jV                  d/e8de8fd]            Z eQe*j]        d          d^             Z eQe*j]        d          d_             Z eQe*jr        d          d`             Z eQe*jV                  da             Z eQe*jV                  db             Z eQe*jV                  dc             Z eQe*jV                  dd             Z eQe*j        d8          d/e8de8fde            Z eQe*jV                  df             Z eQe*jV                  dg             Z eQe*j]        d          dh             ZdJe8de8fdiZePddddddfdefdjZ eNeHj                   eA             e?dke*j]        .          ddld/ee8e2f         dmee8e2f         dnee2         fdo                                    Z ee*jV        ddp          dq             Z ee*j]        r          d/e8dme8de8fds            Z ee*j]        r          d/e8dme8de8fdt            Z ee*j]        r          d/e8dme8de8fdu            Z ee*j]        r          d/e8dme8de8fdv            Z ee*j]        r          d/e8dme8de8fdw            Z ee*jV        dx          d/ee8e2f         dmee8e2f         fdy            Z eNeHj                   eA            ddzd/ee8e2f         dmee8e2f         d{ee         fd|                        Z ee*jr        dx          d/e8dme8de8fd}            Z ee*j        r          d/ee8e2f         dmee8e2f         de8fd~            Z eA            d/ee8e2f         dmee8e2f         deCfd            Z eej*        j]        dd          d/ee8e2f         dmee8e2f         fd            Zd/eCdmeCdeCfdZd/eCdmeCdeCfdZ ee*j]        ddp          d/e8dme8de8fd            Z ee*j]        ddp          d/e8dme8de8fd            Z ee*j]        ddp          d/e8dme8de8fd            Z eNeHj                   eAdd          dJe8dee8e8f         fd                        Z ee*j]        ddp          d/e8dme8de8fd            Z ee*jr        dx          d/e8dme8de8fd            Z ee*jr        dx          d/e8dme8de8fd            Z ee*j]        ddp          d!e8de8de8fd            Z ee*j]        ddp          d/e8dme8de8fd            Z ee*jV        ddp          d/e8dme8de8fd            Z ee*jV        ddp          d/e8dme8de8fd            Zded/e8dme8dededdfdZ	 	 	 dd/e8dme8dededede8fdZ ee*j]        ddp          d/e8dme8fd            Z ee*jr        dx          d/e8dme8de8fd            Z ee*j]        ddp          d/e8dme8de8fd            Z ee*j]        ddp          d/e8dme8de8fd            Z ee*jr        r          d/e8dme8fd            Z eQe*jr                  d/e8fd            Z ee*jr        r          d/e8dme8fd            Z ee*jr        r          d/e8dme8fd            Z ee*jr        dx          d/e8dme8de8fd            Z ee*j]        r          d/e8dme8de8fd            Z ee*j]        r          d/e8dme8de8fd            Z ee*j]        d          d/e8dme8de8fd            Z ee*jr        dx          d/e8dme8de8fd            Z ee*jk        ddp          d/e8dme8de8fd            Z ee*j]        r          d/e8dme8de8fd            Z eNeHj                   eA            	 dd/ee8e2f         dmee8e2f         dne2fd                        Z eNeHj                   eA             e?dke*j]        .          ddld/ee8e2f         dmee8e2f         dne2fd                                    Z ee*jV        ddd          d/e8dme8de8fd            Z eNeHj                   eA             e?dke*jV        .          d/ee8e2f         dmee8e2f         fd                                    Z eej*        j]        dd          d/ee8e2f         dmee8e2f         fd            Z eNeHj                   eA             e?de*jV        .          dddJe8de8de8d0e2de8f
d                                    Z eNeHj                   eA             e?de*j]        .          dddJe8de8de8d0e2de8f
d                                    Z eNeHj                   eA             e?de*j]        .          	 	 dd/e8dee9         dee9         de8fd                                    Z eNeHj                   eA            	 ddJe8dee9         de8fd                        Z eNeHj                   eA            	 ddJe8dee9         de8fd                        Z eNeHj                   eA             e?dke*jk        .          	 	 ddeCd/ee9         dmee9         fd                                    Z eNeHj                   eA            ej        dd/e8dej        de8fdÄ                        ZddĜd/eCdmeCfdńZ eNeHj                  d/e8de2fdƄ            Z	 	 	 	 	 	 	 dd/e8dee%         dGeej                 dee         deej                 deej                 dee         dedefd̄Zed̈́             Zej        	 	 	 ddej        dGej        dededeej                 deeef         fd΄            Zej        	 	 	 ddedGej        dededeej                 deeef         fdτ            Zej        	 	 	 ddGej        dededeej                 deeef         f
dЄ            Zej        	 	 	 ddeCdededeej                 deeef         f
d҄            Zd/eCdefdԄZd/e8de8fdՄZddddddd֜d/e8dedededee(         dedGeej                 deeC         de4de8fdބZdd߄Z eNeHj                   eA            	 	 d d/e8dFee(         dKede8fd                        Z eNeHj                   eA            	 	 d d/e8dFee(         dKede8fd                        Z eNeHj        j        eHj        j        g          	 	 d dddd/e8dFeee         eee                  f         dKedGeej                 deeC         de8fd            Zd/eCdeCfdZ eNeHj                  	 	 d dddd/e8dFeee         eee                  f         dKedeeC         de8f
d            Z eNeHj                  	 	 d ddd/e8dFee(         dKedeeC         de8f
d            Z eNeHj                  	 	 d ddd/e8dFee(         dKedeeC         de8f
d            ZddZ eNeHj                   eA            	 	 	 dddd/e8dFee(         dee         dKedee2         de8fd                        Z eNeHj                   eA            	 	 	 dddd/e8dFeee         eee                  f         dee         dKedee2         de8fd                        Z eNeHj                  	 	 d dddd/e8dFee(         dKede8fd            Z eNeHj                   eAdd          	 dddddd/e8dFee(         dee         dKedee2         f
d                        Z eNeHj                   eAdd          	 	 	 dddd/e8dFee(         dee         dKedee2         f
d                        Z eNeHj                   eA             e?de*j]        .          ddddJe8de8de8de2dne2de8fd                                    Zdee8e	e8         f         de8dee8ee8df         f         fdZdedFede8de8fd Zdee8e	e8         f         de8dee8ee8df         f         fdZdee8e	e8         f         de8dee8ee8df         f         fdZ	 dd/e8de5de6dee         de8f
dZ eNeHj                    eA            	 dd!e8de8de5de6dee         de8fd                        Z de5fd	ZeHj        j                            eEj                  eHj        j                            eEj                  dee8         fd
                        Zd/e8de5de8fdZ eNeHj                   eA             e?de*jk        .          dde:dFede8fd                                    Z eA            de:de8fd            Z	d!e8de8fdZ
 eNeHj                   eA            	 dd!e8dee         d0e2de8fd                        Zej        dd/eCdej        deCfdZ eA            de:de8fd            Z eNeHj                  ddd/eCdedeCfd            Zd/eCdmeCdeCfdZdd/e8dedFedee8df         fdZdd/e8dedede8fdZ eNeHj                   eA            d/e8de'de8fd                        Zd/e8de8fd Zd/e8de8fd!Zd/e8dFed"eee8f         d#ede8f
d$Zd/eCd%e(d&edeeCeCeCf         fd'Zd5e8d(ee         de8fd)Z eNeHj        j                  d!eCd*eeC         d+eeC         d,ed-ed.ed/ed&edeeCeCeCf         fd0            Z eNeHj                   eAddd1          d!eCd2e5d*eeC         d+eeC         d&edeeCeCeCf         fd3                        Zej        j                            eHj        j                  d4             Z eNeHj                  d/e8de8fd5            Z eNeHj                    eA            d!e8d6e3dFed7e3de8f
d8                        Z eHj!        j"                            eEj                  	 	 	 	 	 	 	 	 	 dd!eCd:ed;ee         d<ee         d=eeC         d>ed?ed@edAee         dBee         dCee         deCfdD            Z!eHj#        j                            eEj                  	 	 	 	 	 	 	 	 dd!eCd:ed;ee         d<ee         d=eeC         d>ed@edAee         d#ee         deCfdE            Z#dFe5dGe6dHededIef
dJZ$ eNeHj%                   eA            d/eCdeCfdK                        Z%d/e8dLede8fdMZ&d/e8dLede8fdNZ'd/e8dOe5de8fdPZ(dJe8de8de8fdQZ) eNeHj*                   eA            dd/e8dSe(de(de8fdT                        Z* eNeHj+                   eA            	 dd/e8dVede'de8fdW                        Z+de:ddfdXZ, eNeHj-                   eA            dde:dFede8fdY                        Z- eA            	 dd/e8dFedGeej                 de8fdZ            Z. eA            de:de8fd[            Z/ eA            de:de8fd\            Z0d/e8dFed]e5de8fd^Z1 eNeHj2                  dd_e8dFede:fd`            Z2 eA            d5e7dFedae7dbe7fdc            Z3d5e7dFedae7dbe7fddZ4 eNeHj5                   eA            d5e7dFedae7d0ee2e7f         fde                        Z5 eNeHj6                  d5e7dFedae7d0ee2e7f         fdf            Z6d5e7dFedae7d0ee2e7f         dgef
dhZ7 eA            ddld5e7dFedae7dbe7dne2f
di            Z8 eNeHj9                   eA            d5e7dFedae7fdj                        Z9 eNeHj:        j;                  dd/e8dFee(         de8fdk            Z: eNeHj<                  	 ddJeCdlee         dFedeeC         fdm            Z<	 dd/e8dneeCe(f         dFedee8df         fdoZ=d/e8dne(dee8df         fdpZ>d/e8dne(dee8df         fdqZ? eNeHj@        jA                   eA            	 ddJe8drede8fds                        Z@ eNeHjB                   eA            	 	 	 dd!e8de8dredteduede8fdv                        ZB eNeHjC                  	 	 	 ddJe8dredteduede8f
dw            ZC eNeHjD                   eA            	 	 	 d	d_e8dredteduede8f
dy                        ZD eNeHjE                   eA            dee8         de8fdz                        ZFdee8         de8fd{ZEd/e8d|e(de:fd}ZG eNeHjH        j                  d/e8fd~            ZHd/e8de8fdZI eNeHjJ                  d/e8de8fd            ZJ eNeHjK                  d/e8dedtede8fd            ZKeKZL eNeHjM                  dJe8dHededIede8f
d            ZM eNeHjN                   eA            dJe8dHededIefd                        ZNdddd/e8dFedGeej                 deeC         de8f
dZO eNeHjP                  dddd/e8dFedGeej                 deeC         de8f
d            ZP eNeHjQ                  dddd/e8dFedGeej                 deeC         de8f
d            ZQ eNeHjR                  d/e8dFede8fd            ZR eNeHjS        j                  d/e8dOe5de8fd            ZSdJe8de8de8fdZTd/e8de8fdZU eA            	 dd/ejC        dejC        dFee         dejC        fd            ZV eA            dejW        dddej        ddGeej                 dej        dee%         dededej        de8fd            ZX eA            dejW        dddfdGeej                 dej        dee%         dedede8fd            ZY eNeHjZ                   eA            dddddd/e8de5dGeej                 deej                 dee%         dede8fd                        ZZ eNeHj[                   eA            dddddd/e8de5de6dGeej                 deej                 dee%         dede8fd                        Z[ eNeHj\        j                   eA            dejW        dddddGeej                 dej        dee%         dedede8fd                        Z\ eNeHj]                   eA            ddddddd/e8de5dGeej                 deej                 dee%         dedede8fd                        Z] eNeHj^        j                   eA            dejW        dddddGeej                 dej        dee%         dedede8fd                        Z^ eNeHj_                   eA            ddddddd/e8de5dGeej                 deej                 dee%         dedede8fd                        Z_ eNeHj`                   eA            dddddd/e8de5de2dGeej                 deej                 dee%         dede8fd                        Z`eHjX        jA                            eEj                  	 dde8de8deej                 de8fd            Za eNeHjb                   eA            dddddej        dd/e8dGeej                 dee%         deej                 dededej        de8fd                        Zb eNeHjc        jd        eHjc        je        g           eA            	 	 	 d
dejW        ddddd"e2dee2         dIe2dGeej                 dej        dee%         dedede8fd                        Zc eNeHjf                   eA             e?de*j]        .          d"eCdeCd*eeCe2f         fd                                    Zf eNeHjg                   eA            ddejW        dddd"ee2e8f         dee2e8f         de2dGeej                 dee%         dej        dedede8fd                        Zg eNeHjh                   eA            	 dddejW        dddd"ee2e8f         dee2e8f         de2de2dGeej                 dee%         dej        dedede8fd                        Zhede	e8         defd            Ziede8defd            Zi eNeHji                  dee8ee8         ee8         f         dedee8         fd            Zid!e8deee'f         deee'f         de8fdZj eNeHjk                   eA            ddejW        ddddOee5ee5         f         de6dGeej                 dee%         dej        dedede8fd                        Zk eNeHjl                   eA            	 ddejW        dddddedee         dGeej                 dej        dee%         dedede8fd                        Zl eNeHjm        j        eHjm        jA        g           eA            dejW        dddddOe5de2dGeej                 dej        dee%         dedede8fd                        Zmdddddej        dd/e8de2dGeej                 deej                 dee%         dededej        de8fdZn eNeHjo                   eA            dddddej        dd/e8dGeej                 deej                 dee%         dededej        de8fd                        Zo eNeHjp                   eA            dddddej        dd/e8dGeej                 deej                 dee%         dededej        de8fd                        Zp eNeHjq        j                   eA            dddddddGeej                 dee%         deej                 dedede8fd                        ZqdejW        dddd/e2dGeej                 dej        dee%         dede8fdZr	 	 ddOe5deeeef         deeeef         dGej        de%de8fdZs eNeHjt                   eA            d/e8de8d0e9fd                        Zt eNeHju                  d/e8de8d0e9de8fdÄ            Zu	 	 	 dd/e8dme8dedededefdĄZvd/e8dme8defdńZw eNeHjx                   eAd          	 	 	 dddǜd!e8d6eeeef                  dFee(         dKedGeej                 de8fdȄ                        Zx eNeHjy                   eA            dJe8de8fdɄ                        Zydʄ Zz ezeΦ          Z{ eze          Z| eze          Z} eNeHj~                   eA            dd/e8dede8fd̄                        Z~ eNeHj                   eA            dd/e8dede8fd̈́                        Zdededredeeeef         fdЄZdedededGej        dej        defdфZ eNeHj                   eA            	 dej        ejW        ddddededredGej        dej        de%dede8fdӄ                        Zdededredeeeef         fdԄZ eNeHj                   eA            	 dej        ejW        ddddededredGej        dej        de%dede8fdՄ                        Z eNeHj                   eAd          ddd֜d/e9de8dedefdڄ                        Z eNeHj                   eA             e?dIe*j]        .          ddۄ                                    Z eNeHj                   eA             e?dIe*j]        .          dd܄                                    Z eNeHj                   eA             e?dIe*j]        .          dd݄                                    Z eNeHj                   eA             e?dIe*j]        .          dd߄                                    Z eNeHj                   eA             e?de*j]        .          	 	 	 dddddddd                                    Z eNeHj                  dUddd            Z eQe*jV                  dJe8fd            Z eQe*jV                  dJe8fd            Z eNeHj                   eA            ddFee(         fd                        Zd Zd Z eNeHj                   eAd          e e?de*j]        .          d                                                 Z eNeHj                   eAd          e e?de*j]        .          d                                                 Z eNeHj                   eA            d5e8de8dFedaefd                        Z eSeU          Z eSeW          Z eSeX          Z eSe          Z eSeҦ          Z eSeѦ          Z eSeY          Z eSeZ          Z eSe[          Z eSe\          Z eSe          Z eSe          Z eSe          Z eSe^          Z eSe          Z eSe          Z eSe          Z eSe_          Z eSeӦ          Z eSeԦ          Z eSeզ          Z eSea          Z eSe          Z eSeb          Z eSec          Z eSeP          Z eSeQ          Z eSe          Z eSed          Z eSe          Z eSe          Z eSee          Z eSeg          Z eSef          Z eSeh          Z eSej          Z eSei          Z eSe          Z eSeo          Z eSe          Z eSe          Z eSep          Z eSe          Z eSe          Z eSe          Z eSe          Z eSe          Z eSe          Z eSe          Z eSe|          Z eSe          Z eSe          Z eSef          Z eSe}          Z eSe          Z eSe          Z eSe          Z eSe~          Z eSe          Z eSe¦          Z eSeæ          Z eSeĦ          Z eSeŦ          Z eSeȦ          Z eSez          Z eSe          Z eSeɦ          Z eSe          Z eSeʦ          Z eSe          Z eSe          Z eSe          Z eSe˦          Z eSe          Z eSe          Z eSe          Z eSe          Z eSe          Z eSe          Z eSe          Z eSe          Z eSe          Z eSeͦ          Z eSe          Z eSe          Z eSe          Z eSe~          Z eSeΦ          Z eSe          Z eSeϦ          Z eSe          Z eSe          Z eSe          Z eSe          Z eSen          Z eeHjJ                  Z eeHj                  Z eeHjC                  Z eeHj                  Z eeHj                  Z eeHj:                  Z eeHj                  Z eeHjH                  Z eeHjK                  Z eeHj2        d          Z eeHjR                  Z eeHjS                  Zd Z d Zd Zdej        dee9e:f         fdZ	 ddZddddddZd dlZd dlZd dlZd dl	Zd dl
ZdS (      N)IterableSequence)Enum)partialreducesingledispatchwraps)AnyCallablecastOptionaloverloadUnion)	sym_floatsym_int)BoolLikeDeviceLikeTypeDimDimsSequenceTypeDimsTypedtype_to_typeELEMENTWISE_TYPE_PROMOTION_KIND	FloatLikeFloatWithoutSymFloatIntLike(is_contiguous_for_memory_format_or_falseis_contiguous_or_falseis_weakly_lesser_typeNumber
NumberTypeRealNumberTypeREDUCTION_OUTPUT_TYPE_KIND	ShapeType
StrideType
TensorLikeTensorLikeTypeTensorOrNumberLikeTypeTensorSequenceType)_maybe_convert_to_dtype_maybe_resize_out_safe_copy_out"elementwise_type_promotion_wrapper elementwise_unary_scalar_wrapperout_wrapper(  absacosacoshasinhasinatanatanhbitwise_notceilconj_physicalcoscoshcount_nonzerodeg2raddigammaerferfinverfcexpexpm1exponentialexp2fillfill_floorfrac	geometric	index_add
index_copyindex_copy_index_select
index_fillindex_fill_isfiniteisinfisposinfisneginfisnanisreali0lerplgammaloglog1plog2log10
log_normallog_softmaxmvlgammanormnormal
nan_to_numnegpositiverad2deg
reciprocalroundsigmoidsgnsignsignbitsinsincsinhsoftmaxsqrtsquaretantanhtracetruncaddatan2bitwise_andbitwise_left_shift
bitwise_orbitwise_right_shiftbitwise_xor	clamp_min	clamp_maxcopysigndiveqfloat_powerfloor_dividefmaxfminfmodgcdgegt	heavisidehypotigammaigammacimagiscloselcmle	logaddexp
logaddexp2logical_andlogical_not
logical_orlogical_xor	logsumexpltmaximumminimummulne	nextafterpowrealrpow	remainderrsubrtruediv	rfloordivsubtrue_dividetrunc_dividexlogyaddcdivaddcmulclampmasked_fillmasked_fill_whereclonecopy_toitemtoallamaxaminanycumsumcumprodmeandotvdotstdstd_meansumsum_to_sizeprodvarvar_meanaddralias
alias_copy
atleast_1d
atleast_2d
atleast_3d
as_stridedas_strided_copyas_strided_scatter
block_diagbroadcast_shapesbroadcast_tensorsbroadcast_tocatchunkcolumn_stackconjconstant_pad_nd
contiguous
diag_embeddiagdiagonaldiagonal_copydiagonal_scatterdsplitdstackexpand	expand_asexpand_copyflattenflipfliplrflipudhsplithstackmeshgridmovedimnarrownarrow_copynative_group_normnative_layer_normpermutepermute_copyravelrepeatreshape
reshape_asrollrot90rsqrtsplit_with_sizesstack	swap_axessqueezesqueeze_copytt_copyTtake_along_dimtensor_split	transposetranspose_copyunbind_copyunfoldunfold_copy	unsqueezeunsqueeze_copyviewview_as	view_copyvsplitvstackview_as_complex	unflattenunbindtriutriltriu_indicestril_indicesarangecauchyempty
empty_likeempty_permutedempty_stridedeyefull	full_likelinspacelogspace	new_emptynew_empty_stridednew_fullnew_ones	new_zerosones	ones_likerandnscalar_tensorzerozeros
zeros_likeallcloseequal	bucketize
is_complexrenormstftistftc                      | d u p
| j         dk    S )Nhputypedevices    N/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/_refs/__init__.pyis_noncontiguous_supportedr8  p  s    T>1V[E11    c                     d }ddl m} | D ]}t          ||          r	|j        } nt	          |          s|                                }|S )Nr   )
FakeTensor)torch._subclasses.fake_tensorr;  
isinstancefake_devicer8  r   )input_tlistoutputr6  r;  r   s        r7  handle_noncontiguous_outputsrA  t  ss    F888888  a$$ 	]FE	 &f-- %""$$Mr9  c            	      x   ddl m}m} t          d t	          d |           D                       }t          |          dk    rd S |D ]'t          t                    st          d          (dgt          t          d |D                       z  t          |          D ]\  t          ddt                    z
  d          D ] |                   r. |                   r |                  k              r@n |                  k              r] |         dk              r&         dk     rt          d	                   <    |                   s |         dk              rt          j                          k    fd
           S )Nr   )guard_or_falseis_nested_intc              3   J   K   | ]}t          |t                    r|fn|V  d S Nr=  r   .0xs     r7  	<genexpr>z$_broadcast_shapes.<locals>.<genexpr>  sK         1g&&-A     r9  c                 
    | d uS rF   rJ  s    r7  <lambda>z#_broadcast_shapes.<locals>.<lambda>  s
    !4- r9  zMInput shapes should be of type ints, a tuple of ints, or a list of ints, got    c              3   4   K   | ]}t          |          V  d S rF  len)rI  shapes     r7  rK  z$_broadcast_shapes.<locals>.<genexpr>  s(      44ESZZ444444r9  z9Attempting to broadcast a dimension with negative length!c            
      2    d          d d  d d 
S )Nz.Attempting to broadcast a dimension of length z at z ! Mismatching argument at index z had z0; but expected shape should be broadcastable to rM  )arg_idxcommon_shapeidxrT  s   r7  rO  z#_broadcast_shapes.<locals>.<lambda>  sZ     AUSVZ A A]` A A5<A ACHA A2>A A r9  )%torch.fx.experimental.symbolic_shapesrC  rD  tuplefilterrS  r=  r   RuntimeErrorr   max	enumeraterange
ValueErrortorch_check)_shapesrC  rD  shapesrW  rX  rY  rT  s       @@@@r7  _broadcast_shapesrf    s|   SSSSSSSS  //99    F 6{{at  %** 	_  	 	
4s44V4445546L $F++  R#e**_b11 	 	C}U3Z(( 	 !=c!233 #J,s"339 9  !>%*S0A"ABB ~l3/1455 /:>>$S   %*#JS! =s,, 
c
a1P1P 
  %s3A A A A A A A   3	@ r9  T)preserve_cpu_scalar_tensorsc                      t          d |D              dt          dt          dt          fd fdt          fd|D                       S )Nc              3   R   K   | ]"}t          |t                    r|j        nd V  #d S rF  )r=  r%   rT  rI  r   s     r7  rK  z#_maybe_broadcast.<locals>.<genexpr>  s7      	G	GQZ:..
8!''D	G	G	G	G	G	Gr9  abreturnc                 \   ddl m}m}m} t	          |           t	          |          k    rdS t          | |          D ]n\  }} |||k              r dS  | ||dk    |dk                        rn  | ||dk    |dk                        r dS t          j        ||k    d           odS )Nr   )rC  sym_andsym_orTrP  zCsizes assumed to be the same due to unbacked broadcasting semanticsF)rZ  rC  ro  rp  rS  ziprb  rc  )rk  rl  rC  ro  rp  rJ  ys          r7  should_expandz'_maybe_broadcast.<locals>.should_expand  s   	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 q66SVV41II 	 	DAq~a1f%% tt
 ~gga1fa1f5566 qAvqAv 6 677 tt LQU   
 ur9  c                 B   | d S t          | t                    r| S t          | t                    r@rt          j        |           r| S  | j                  r|                               S | S t          dt          t          |                     z   dz             )Nz#Unexpected type when broadcasting: !)
r=  r   r%   utilsis_cpu_scalar_tensorrT  r   r]  strr4  )rJ  rT  rX  rg  rs  s     r7  __maybe_broadcastz+_maybe_broadcast.<locals>.__maybe_broadcast  s    946"" 	H:&& 	* u/I!/L/L }QWl33 .xx---H5DGGDsJ  r9  c              3   0   K   | ]} |          V  d S rF  rM  )rI  rJ  ry  rX  s     r7  rK  z#_maybe_broadcast.<locals>.<genexpr>  s1      BB""1l33BBBBBBr9  )rf  r#   boolr[  )rg  argsry  rX  rs  s   ` @@@r7  _maybe_broadcastr}    s    $	G	G$	G	G	GL y T    @      $ BBBBBTBBBBBBr9  )register_decompositionF)aten_op
extra_metaexact_dtyperm  c                .     dt           f fd}|S )Nprimc                 L    t                     t                    t          t          d          dt          dt          f fd                                                }t
          u rt          j          j                   t                    |           |S )Nr  rk  type_promoting_argstype_promotion_kindrk  rm  c                 V     |             |           }t          | g|          S rF  )rA  )rk  r@  r  r  s     r7  _refz>_make_elementwise_unary_reference.<locals>.inner.<locals>._ref  s7     %
1T!WWF/V<<<r9  )
r	   r.   r-   r,   r&   infer_aten_oprv  get_aten_op__name__r~  )r  r  r  r  r  r  s   ` r7  innerz0_make_elementwise_unary_reference.<locals>.inner  s     
t		-	-	-	)	+ & 3

 

 

	=N 	=~ 	= 	= 	= 	= 	= 	=	

 

 
*	) 
.	- 
	= m##'dm<<G+"7++D111r9  r   )r  r  r  r  r  s   ```` r7  !_make_elementwise_unary_referencer    sA    H         0 Lr9  c                 p      fd}||_         t          j                    j        j        d         |_        |S )a%  
    This function defines an alias of another function and sets its __name__ argument.
    It also sets its __module__ argument to the module of the caller.
    Note that when naively doing `alias = fn`, we have that `alias.__name__ == "fn"`, and
    `alias.__module__ == fn.__module__`.
    c                       | i |S rF  rM  )r|  kwargsfns     r7  _fnz_make_alias.<locals>._fn/  s    r4"6"""r9  r  )r  inspectcurrentframef_back	f_globals
__module__)r  namer  s   `  r7  _make_aliasr  '  sE    # # # # # CL)++2<ZHCNJr9  c                     t                      fd            } j         d}||_         t          t          t          |                    |          }ddlm}  |           j        }||vr|                    |           |S )z
    Given a function with out variant (i.e. using `out_wrapper()), it returns its in-place variant
    See https://github.com/pytorch/pytorch/wiki/Developer-FAQ#how-do-in-place-operations-work-in-pytorch
    c                       | g|R d| i|S )NoutrM  )rk  r|  r  r  s      r7  r  z_make_inplace.<locals>._fn>  s(    r!,d,,,,V,,,r9  _r   )	getmodule)	r	   r  r~  getattratenr  r  __all__append)r  r  inplace_namer  _alls   `    r7  _make_inplacer  7  s     2YY- - - - Y- k$$$LCL
=
 |!<!<
=
=c
B
BC "!!!!!9R== D4L!!!Jr9  r  c                 *    t          j        |           S rF  )primsr/   r  s    r7  r/   r/   P  s    
 9Q<<r9  c                 *    t          j        |           S rF  )r  r0   r  s    r7  r0   r0   X      :a==r9  c                 *    t          j        |           S rF  )r  r1   r  s    r7  r1   r1   ]      ;q>>r9  c                 *    t          j        |           S rF  )r  r3   r  s    r7  r3   r3   b  r  r9  c                 *    t          j        |           S rF  )r  r2   r  s    r7  r2   r2   g  r  r9  c                 *    t          j        |           S rF  )r  r4   r  s    r7  r4   r4   l  r  r9  c                 *    t          j        |           S rF  )r  r5   r  s    r7  r5   r5   q  r  r9  c                 *    t          j        |           S rF  )r  r6   r  s    r7  r6   r6   v  s    Qr9  c                 *    t          j        |           S rF  )r  r7   r  s    r7  r7   r7   {      
 :a==r9  inputc                 4    t          j        | j                  S rF  )rv  is_complex_dtypedtyper  s    r7  r-  r-    s    !%+...r9  c                 `    t          j        | j                  s| S t          j        |           S rF  )rv  r  r  r  r8   r  s    r7  r8   r8     s/     !%+.. u%%%r9  c                 *    t          j        |           S rF  )r  r9   r  s    r7  r9   r9         9Q<<r9  c                 *    t          j        |           S rF  )r  r:   r  s    r7  r:   r:     r  r9  c                 *    t          j        |           S rF  )r  r=   r  s    r7  r=   r=         =r9  c                 *    t          j        |           S rF  )r  r>   r  s    r7  r>   r>     r  r9  c                 *    t          j        |           S rF  )r  erf_invr  s    r7  r?   r?     r  r9  c                 *    t          j        |           S rF  )r  r@   r  s    r7  r@   r@     r  r9  c                 *    t          j        |           S rF  )r  rA   r  s    r7  rA   rA     r  r9  c                 *    t          j        |           S rF  )r  rB   r  s    r7  rB   rB     r  r9  c                 *    t          j        |           S rF  )r  rD   r  s    r7  rD   rD     r  r9  za,r  rk  valuec                 H   t          | t                    sJ t          |t                    sJ t          j        | j                  }t          j        t          |          |          s%dt          |           d| d}t          |          t          j
        | |          S Nzvalue argument of type  cannot be safely cast to type ru  )r=  r%   r   rv  r   r  r   r4  ra  r  rE   )rk  r  python_typemsgs       r7  rE   rE     s     a$$$$$eV$$$$$%ag..K&tE{{K@@ bUbbT_bbboo:ar9  c                 Z    t          j        | |          }t          j        | |           | S rF  )r  rE   r   )rk  r  rs      r7  rF   rF     s*    
1eA	M!QHr9  c                 *    t          j        |           S rF  )rb  r)  r  s    r7  r'  r'    s     E"""r9  c                 *    t          j        |           S rF  )r  rG   r  s    r7  rG   rG         
 ;q>>r9  rJ  c                     t          j        t          j        t          j        |                     t          j        |                     }t          j        | |          S rF  )rb  r   rG   r/   rj   r   )rJ  trunc_xs     r7  rH   rH     sA    
 iEIaLL115:a==AAG9Q   r9  c                     t          | t                    sJ t          j        t	          j        | j                  d            t          j        |           S )Nc                      dS )Nz#imag only supports complex tensors.rM  rM  r9  r7  rO  zimag.<locals>.<lambda>  s    1V r9  )	r=  r%   rb  rc  rv  r  r  r  r   r  s    r7  r   r     sR    a$$$$$	Lqw'')V)V   :a==r9  )r  c                     t          j        | j                  st          j        | j                  rt	          j        |           S t          | t          j                  S )Nr  )	rv  is_float_dtyper  r  r  rP   r$  rb  r{  r  s    r7  rP   rP     sR    
 AG$$ !(>qw(G(G !~a   Qej))))r9  c                    t          j        | j                  rSt          j        t          t          j        |                     t          t          j        |                               S t          j        | j                  r%t          j	        |           t          d          k    S t          j        | t          j                  S )Ninfr  )rv  r  r  rb  r   rQ   r   r   r  r/   floatr)  r{  r  s    r7  rQ   rQ     s    ag&& Lejmm 4 4eEJqMM6J6JKKKAG$$ ,y||uU||++AUZ0000r9  c                      t          j        t          j         j                    fd           t          j         j                  r t          d          k    S t          j         t           j                  S )Nc                      d j          S )Nz7Complex dtype is not supported for isposinf, got dtype r  r  s   r7  rO  zisposinf.<locals>.<lambda>      S!'SS r9  r  r  	rb  rc  rv  r  r  r  r  r)  r{  r  s   `r7  rR   rR   
  sx    
 
L"17+++SSSS   AG$$ !E%LL  AUZ0000r9  c                      t          j        t          j         j                    fd           t          j         j                  r t          d          k    S t          j         t           j                  S )Nc                      d j          S )Nz7Complex dtype is not supported for isneginf, got dtype r  r  s   r7  rO  zisneginf.<locals>.<lambda>  r  r9  z-infr  r  r  s   `r7  rS   rS     sx    
 
L"17+++SSSS   AG$$ "E&MM!!AUZ0000r9  c                 ,    t          j        | |           S rF  r  r   r  s    r7  rT   rT   &  s    8Aq>>r9  r_   c                     t          j        | j                  rt          j        |           dk    S t          j        | t          j                  S )Nr   r  )rv  r  r  rb  r   r$  r{  r  s    r7  rU   rU   /  sC    
 ag&& "z!}}!!?1EJ////r9  c                 *    t          j        |           S rF  )r  	bessel_i0r  s    r7  rV   rV   :  s     ?1r9  c                 *    t          j        |           S rF  )r  rX   r  s    r7  rX   rX   A  s    <??r9  c                 *    t          j        |           S rF  )r  rY   r  s    r7  rY   rY   F  r  r9  c                 *    t          j        |           S rF  )r  rZ   r  s    r7  rZ   rZ   K  r  r9  c                 *    t          j        |           S rF  )r  r[   r  s    r7  r[   r[   P  r  r9  c                 *    t          j        |           S rF  )r  r\   r  s    r7  r\   r\   U  r  r9  dimr  c                     |p| j         }t          j        |          }t          | |          }t          |t	          ||d          z
  |          S )NTkeepdim)r  rv  get_computation_dtyper)   r   )rk  r  r  result_dtypecomputation_dtypea_s         r7  r^   r^   [  sU     #AGL3LAA	 $5	6	6B"2	"c4(H(H(H#H,WWWr9  selfr  r  c                 p   t          |t                    s|f}|                                 dk    r:t          j        t          j        |           ||                                          S t          j        t          j        |           |d          }t          j	        ||
                                t          d          k    d          }|r|nt          j        ||          }t          j        t          j        | |z
            ||          }|                                                    |          S )Nr   Tr  r  )r=  r   numelrb  r   rA   rY   r   r   r   r/   r  r   rv   )r  r  r  maxesmaxes_squeezedresults         r7  r   r   g  s     c8$$ fzz||qy4#w77;;===Juz$''d;;;EeUYY[[E%LL%@!DDE%DUU5=+D+DNYuy..W==F::<<N+++r9          nanposinfneginfc                 8   t          | t                    sJ t          j        | j                  st          j        | j                  r|                                 S |d}|t          j        | j                  j	        }|t          j        | j                  j
        }t          j        t          j        |           ||           }t          j        t          j        |           ||          }t          j        t          j        |           ||          }|S )Nr  )r=  r%   rv  is_boolean_dtyper  is_integer_dtyper   rb  finfor^  minr   rT   rS   rR   )rk  r  r  r   r  s        r7  rb   rb   {  s     a$$$$$ag&& %*@*I*I wwyy
{~QW%%)~QW%%)[Qa00F[**FF;;F[**FF;;FMr9  c                 T    t          j        | j        t           j        ud            d S )Nc                      dS )NzNegation, the `-` operator, on a bool tensor is not supported. If you are trying to invert a mask, use the `~` or `logical_not()` operator instead.rM  rM  r9  r7  rO  z_neg_meta.<locals>.<lambda>  s      r9  )rb  rc  r  r{  r  s    r7  	_neg_metar    s6    	L	uz!	
 	
    r9  )r  c                 *    t          j        |           S rF  )r  rc   r  s    r7  rc   rc     s     9Q<<r9  c                 |    t          | t                    sJ | j        t          j        u rd}t          |          | S )Nz'positive does not support bool tensors.)r=  r%   r  rb  r{  r]  )rk  r  s     r7  rd   rd     s?    a$$$$$w%*73Hr9  c                     t          | t                    sJ t          j        | j                  rt          j        |           S | S rF  )r=  r%   rv  r  r  r  r   r  s    r7  r   r     s@    a$$$$$ag&& z!}}Hr9  c                 *    t          j        |           S rF  )r  rf   r  s    r7  rf   rf     s    Ar9  r  )decimalsr  c                    |dk    rt          j        |           S d|z  }d| z  }t          j        t          j        t          j        | |                    |          S )Nr   
   )r  rg   r   )rk  r  ten_powten_neg_pows       r7  rg   rg     sX     1}}{1~~h,hY'yUYq'%:%:;;[IIIr9  c                 *    t          j        |           S rF  )r  r   r  s    r7  r   r     r  r9  c                 r    t          dt          dt          t          |                                         S )NrP  )r   rv   rA   rc   r  s    r7  rh   rh     s(    q#aSVV--...r9  c                     t          j        | j                  r1|                                 }t	          j        |dk    d| |z            S |                                 S Nr   )rv  r  r  r/   rb  r   rj   )rk  a_abss     r7  ri   ri     sO    
 ag&& {5A:q!e)444vvxxr9  c                 *    t          j        |           S rF  )r  rj   r  s    r7  rj   rj     r  r9  c                 *    t          j        |           S rF  )r  rk   r  s    r7  rk   rk     s    
 =r9  c                 *    t          j        |           S rF  )r  rl   r  s    r7  rl   rl     r  r9  c                 ~    t           j        | z  } t          j        | dk    dt          j        |           | z            S Nr   rP  )mathpirb  r   rl   r  s    r7  rm   rm     s2    !A;qAvq%)A,,"2333r9  c                 *    t          j        |           S rF  )r  rn   r  s    r7  rn   rn     r  r9  c                 *    t          j        |           S rF  )r  rp   r  s    r7  rp   rp     r  r9  c                 "    t          | |           S rF  )r   r  s    r7  rq   rq     s    
 q!99r9  c                 *    t          j        |           S rF  )r  rr   r  s    r7  rr   rr     r  r9  c                 *    t          j        |           S rF  )r  rs   r  s    r7  rs   rs     r  r9  c                 *    t          j        |           S rF  )r  ru   r  s    r7  ru   ru     r  r9  c                    | j         t          j        t          j                  fd           |                                 }t          j        t          |          dk    d            t          j        |d         dk    d            |                                 }t          j        |d         dk    d            |d d         }t          j        t          j	        d	 |D                       d
            t          j        | 
                                dz  dk    d            t          j        | t          j                                                d          S )Nc                      d  S )Nz^view_as_complex is only supported for floating pointtensors, but got a tensor of scalar type: rM  )input_dtypes   r7  rO  z!view_as_complex.<locals>.<lambda>+  s     C5@C C r9  r   c                      dS )Nz-Input tensor must have one or more dimensionsrM  rM  r9  r7  rO  z!view_as_complex.<locals>.<lambda>1      ? r9  rU     c                      dS )Nz+Tensor must have a last dimension of size 2rM  rM  r9  r7  rO  z!view_as_complex.<locals>.<lambda>5      = r9  rP  c                      dS )Nz/Tensor must have a last dimension with stride 1rM  rM  r9  r7  rO  z!view_as_complex.<locals>.<lambda>;      A r9  c              3   (   K   | ]}|d z  dk    V  dS )r)  r   NrM  )rI  strides     r7  rK  z"view_as_complex.<locals>.<genexpr>?  s*      88VaZ1_888888r9  c                      dS )NzCTensor must have a stride divisible by 2 for all but last dimensionrM  rM  r9  r7  rO  z!view_as_complex.<locals>.<lambda>@  s    U r9  c                      dS )Nz0Tensor must have a storage_offset divisible by 2rM  rM  r9  r7  rO  z!view_as_complex.<locals>.<lambda>D  s    B r9  )r  rb  rc  rv  r  sizerS  r/  builtinsr   storage_offsetr  view_element_typecorresponding_complex_dtyper   )r  sizesold_stridesdimsr&  s       @r7  r  r  '  s   *K	L[))	C 	C 	C 	C  
 IIKKE	LE

a??   
Lb	Q==  
 ++--K	LB1AA   ssD	L88488888UU   
L!Q&BB   "e/<< gbkkr9  c           	      >     dt           f fd}|S )Nr  c                      j         t                     t          d	          dt          t          t
          f         dt          t          t
          f         dt          f fd                        }r t                      |          }|_         t          u rt          j	                   r t                    |           |S )Nrk  rl  r  rk  rl  rm  c                    t          j        pt          | t                     fd           t          j        pt          |t                     fd           t          j        p*t          | t                    ot          |t                     fd           t	          | |          \  } } | |          }t          | |g|          S )Nc                        dS )Nzc: Received a lhs Python scalar to an elementwise binary operation that does not accept lhs scalars!rM  r  s   r7  rO  zQ_make_elementwise_binary_reference.<locals>.inner.<locals>._ref.<locals>.<lambda>e      4 > > > r9  c                        dS )Nzc: Received a rhs Python scalar to an elementwise binary operation that does not accept rhs scalars!rM  r?  s   r7  rO  zQ_make_elementwise_binary_reference.<locals>.inner.<locals>._ref.<locals>.<lambda>j  r@  r9  c                        dS )Nz?: Receive two Number inputs to an elementwise binary operation!rM  r?  s   r7  rO  zQ_make_elementwise_binary_reference.<locals>.inner.<locals>._ref.<locals>.<lambda>p  s    4``` r9  )rb  _check_valuer=  r   r}  rA  )rk  rl  r@  r  r  supports_lhs_python_scalarsupports_rhs_python_scalarsupports_two_python_scalarss      r7  r  z?_make_elementwise_binary_reference.<locals>.inner.<locals>._refZ  s    *G*Q2G2G.G> > > >  
 *G*Q2G2G.G> > > >  
 + I"1f--G*Q2G2GH````  
 $Aq))DAqT!QZZF/A???r9  )r  r	   r,   r   Tensorr    r.   r  rv  r  r~  )
r  r  r  has_outr  should_register_decompositionrD  rE  rF  r  s
   ` r7  r  z1_make_elementwise_binary_reference.<locals>.innerU  s   <=D	t	+ * 3

 

 

	@VZ'(	@VZ'(	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@	

 

 

	@.  	' ;==&&Dm##'d33G#@+"7++D111r9  r  )	r  r  r  rH  rD  rE  rF  rI  r  s	   ```````` r7  "_make_elementwise_binary_referencerJ  K  sZ    *H * * * * * * * * * * * * *X Lr9  r<  alpharl  rL  c                   t          | |          \  } }|t          | t                    r| j        n|j        }t	          j        |          }|t          k    rGt	          j        t          |          |          s%dt          |           d| d}t          |          t          |t                    rt          j        ||          }n||z  }t          j        | |          }t          | |g|          S )z/
    Reference implementation of torch.add
    Nalpha argument of type r  ru  )r}  r=  r%   r  rv  r   r{  r   r4  ra  r  r   rv   rA  rk  rl  rL  r  r  r  r@  s          r7  rv   rv     s      Aq!!DAq%a44A!')%00$u'BKK(
 (
 gDKKffXcfffCS//!a$$ 		!U##AAE	AYq!__F'A777r9  )r  rD  rE  c                 ,    t          j        | |          S rF  )r  rw   r<  s     r7  rw   rw          ;q!r9  )r  c                 ,    t          j        | |          S rF  )r  rx   r<  s     r7  rx   rx          Q"""r9  c                 ,    t          j        | |          S rF  )r  
shift_leftr<  s     r7  ry   ry          Aq!!!r9  c                 ,    t          j        | |          S rF  )r  rz   r<  s     r7  rz   rz     rV  r9  c                 ,    t          j        | |          S rF  )r  shift_right_arithmeticr<  s     r7  r{   r{     s     '1---r9  c                 ,    t          j        | |          S rF  )r  r|   r<  s     r7  r|   r|     rS  r9  )r  rD  c                    t          |t                    r2t          | t                    rt          || j        | j                  }n\t          | t                    rGt          |t                    r2| j        |j        k    r"d| j         d|j         d}t          |          t          t          |          t          t          |                     t          |                     S )Nr  r6  /Expected divisor (b) to be on the same device (&) as dividend (a), but it is found on ru  )r=  r   rG  r&  r  r6  r]  r   rk   rc   r/   )rk  rl  r  s      r7  r   r     s     !V  Av!6!6  !1718<<<	Av		  :a#8#8  QX=Q=Q{{{pqpx{{{3SQ[[#a&&111r9  )rounding_moder_  c                    |t          | |          S |dk    rt          | |          S |dk    rt          | |          S d| d}t          |          )z/
    Reference implementation of torch.div
    Nru   rG   zLdiv expected rounding_mode to be one of None, 'trunc', or 'floor' but found .)r   r   r   ra  )rk  rl  r_  r  s       r7  r   r     sm     1a   	'	!	!Aq!!!	'	!	!Aq!!!m]jmmmoor9  c                 ,    t          j        | |          S rF  )r  r   r<  s     r7  r   r         
 8Aq>>r9  c                 &   t          | t                    st          |t                    sJ t          |t                    r@|dk    r|                                 S |dk    r| | z  S |dk    rt	          j        |           S n|t          | t                    rg| dk    rt	          j        |d          S | dk    rFt          j        |j	                  st          j
        |j	                  rt	          j        |          S t          j        | |          S )N      ?g       @      ?T)r=  r&   r   r   rb  rp   rE   rv  r  r  r  rD   r  r   r<  s     r7  r   r     s     a((IJq.,I,IIII!V !887799#XXq5L#XX:a==  	Av		 !88:a&&&88 )) -2-CAG-L-L  :a== 9Q??r9  c                    t          | t                    r$t          |t                    rt          d          t          j        | |          }|J t          j        |          rt          j        }nt          j        }t          | |          } t          ||          }t          | |          \  } }t          | |          S )Nz=Receive two Number inputs to an elementwise binary operation!)r=  r   ra  rv  get_higher_dtyper  rb  
complex128float64r)   r}  r   rk  rl  r  s      r7  r   r   !  s    
 !V 
Av!6!6 
K
 
 	

 "1a((Ee$$   	 5))A5))AAq!!DAqq!99r9  )r  rF  rI  c                    t          | t                    r5t          |t                    r t          |           } t          |          }n"t          |t                    r2t          | t                    rt          || j        | j                  }nt          | t                    r2t          |t                    rt          | |j        |j                  } nt          | t                    rt          |t                    rj| j        |j        k    rZ| j        t          j        d          k    r"d| j         d|j         d}t          |          t          j	        || j                  }t          | t                    rt          |t                    sJ | j        t          j                  rt          | |          S t          j                  rt          | |          S t          j        dfd           d S )	Nr\  cpur]  r^  ru  r5  Fc                        dS )Nz not supported for floor_dividerM  r  s   r7  rO  zfloor_divide.<locals>.<lambda>v  s    u$M$M$M r9  )r=  r   r&  rG  r  r6  rb  r]  r  
device_putrv  r  _floor_divide_floatr  _floor_divide_integerrc  )rk  rl  r  r  s      @r7  r   r   X  s    !V 5Av!6!6 5!!	Av		 	5:a#8#8 	5!1718<<<	Av		 5:a#8#8 5!1718<<<	Av		 5:a#8#8 5QX=Q=Q8u|E****AHtut|Cs### 18444Aa  :Z6%:%::::GEE"" O"1a(((			&	& O$Q***UMMMMNNNNNr9  c                 h   t          | |          \  } }| j        j        st          j        | |          S t          j        |           t          j        |          k                        t          j        | |          dk              }t          j        | |          t          || j                  z
  S r  )
r}  r  	is_signedr  r   rb  rk   r   r   r)   )rk  rl  offsets      r7  rq  rq  y  s    Aq!!DAq7 yA mA%-"2"22??
1a@P@PTU@UVVF9Q??4VQWEEEEr9  c                    t          | |          }t          t          | |          |          }t          t	          | d          t	          |d                    }t          |d          }t          ||          }t          |t          |d          |          }t          |          }t          t          ||          d          }t          |t          |d          |          }t          | |          }t          d|j        |j                  }	t          t          |d          |t          |	|                    }t          t          |d          ||          S )Nr   rP  rf  r\  )r   r   r   r|   r   r   rx   r   rG   r   rv   r&  r  r6  r   )
rk  rl  modr   different_signed_inputsnon_zero_remaindermask	floor_div	basic_divzero_tensors
             r7  rp  rp    s*   
q!**C
c!Skk1
%
%C *"Q((Bq!HH==C)+BCCD
c#qkk3
'
'C c

Ic#y!!3''DdC	1--y99IAq!!IAQRRRK bajj)Xk9-M-MNNI Aq9i000r9  c                 ,    t          j        | |          S rF  )r  r   r<  s     r7  r   r          :ar9  c                 ,    t          j        | |          S rF  )r  r   r<  s     r7  r   r     r~  r9  c                 ,    t          j        | |          S rF  )r  r   r<  s     r7  r   r     r~  r9  mantissaexponentc                 d    t           j                            t          j        |                     S rF  )rb  return_typesfrexpr  r  s    r7  r  r    s%     ##EK$5$5666r9  c                 ,    t          j        | |          S rF  )r  r   r<  s     r7  r   r     s     9Q??r9  c                 ,    t          j        | |          S rF  )r  r   r<  s     r7  r   r     rc  r9  c                 ,    t          j        | |          S rF  )r  r   r<  s     r7  r   r     rc  r9  valuesc                     t          j        | d          }t          j        t          j        | d          t          j        |                     }t          j        |dd          }t          j        |||          }|S r  )rb  r   r   r   rT   r   )r  r  input_eq_zeroinput_lt_zerozeros_and_onesr@  s         r7  r   r     sh     HUA&&M$UXeQ%7%7U9K9KLLM[155N[??FMr9  c                 ,    t          j        | |          S rF  )r  r   r<  s     r7  r   r     rQ  r9  c                 ,    t          j        | |          S rF  )r  r   r<  s     r7  r   r     s     <1r9  c                 ,    t          j        | |          S rF  )r  r   r<  s     r7  r   r     s     =Ar9  r  rtolatolc                      t          j        j        j        k     fd           t          j        dk     fd           t          j        dk     fd           d S )Nc                  .     d j          dj          dS )Nz4: Attempting to compare tensors of different dtypes  and ru  r  )rk  rl  r  s   r7  rO  z#_check_close_args.<locals>.<lambda>  s&    4eeQWee[\[beee r9  r   c                        d dS )Nz6: rtol must be greater than or equal to zero, but got ru  rM  )r  r  s   r7  rO  z#_check_close_args.<locals>.<lambda>      4VVtVVV r9  c                       d  dS )Nz6: atol must be greater than or equal to zero, but got ru  rM  )r  r  s   r7  rO  z#_check_close_args.<locals>.<lambda>  r  r9  )rb  rC  r  rc  r  rk  rl  r  r  s   `````r7  _check_close_argsr    s     
	17eeeeee   
L	VVVVV   
L	VVVVV    r9  h㈵>:0yE>	equal_nanc           
      @   t          d| |||           t          | |          }|rjt          j        | j                  st          j        | j                  r8t          |t          t          |           t          |                              }|dk    r|dk    r|S t          j        | j                  set          j        | j                  sLt          j
        | t          j                              } t          j
        |t          j                              }t          |t          t          ||                              }t          t!          | |                    }t          |t          t#          |          t%          ||                              }|S )Nztorch.iscloser  r   )r  r   rv  r  r  r  r   r   rT   r  convert_element_typerb  get_default_dtyperv   r/   r   r   rP   r   )	rk  rl  r  r  r  closeallowed_erroractual_errorr  s	            r7  r   r     sh    ?a14dKKKKq!HHE Ce*1733 Cu7Mag7V7V C5+eAhha"A"ABB qyyTQYY (( E1G1P1P E&q%*A*C*CDD&q%*A*C*CDDc#a,,//00Ms1ayy>>L {8L112lM3R3RSS F Mr9  c                    | j         }|t          j        t          j        fv }|r>t	          j        | t          j                  } t	          j        |t          j                  }t          j        | |          }t          j        |dk    d|          }t          j	        t	          j
        | |          |z            }|s|nt	          j        ||          S r  )r  rb  int8int16r  r  int32r   r   r/   r   )rk  rl  r  promote_to_intgress         r7  r   r   @  s     GE uz5;77N 7&q%+66&q%+66	!QAAFAq!!A
)EIaOOa'
(
(C$P33%*DS%*P*PPr9  c                 ,    t          j        | |          S rF  )r  r   r<  s     r7  r   r   U  rc  r9  c                 j   t          j        |           t          j        |          k    }t          j        || |          }t          j        |||           }t          j        t          j        t          j        t          j        |                               t          j        |           t          j        |          k              }t          j        | j                  st          j        |j                  rt          j        |          dk     }t          j        ||t          j	        t          j
        |          t          j
        |          z                       }t          j        |||t          j        t          j
        ||z
                      z             }t          j        |          }	t          j        |	t          t          d          t          d                    |          S t          j        || |t          j        t          j
        ||z
                      z             S )Nr   r  )rb  r   r   r   r   rP   rv  r  r  rY   rA   rZ   rT   complexr  )
rk  rl  ry  max_min_inf_maskneg_min_maskinf_valsnon_nan_valsnan_masks
             r7  r   r   ]  s    :a==EJqMM)D;tQ""D;tQ""D %.A7788%*Q--5:VW==:X H ag&& T%*@*I*I Tz$''!+;$	%)D//EIdOO*K L L
 
 {hu{59TD[3I3I'J'J J
 
 ;t$${8WU5\\5<<%H%H,WWW{8Qu{59TD[;Q;Q/R/R(RSSSr9  c                    t          j        t          j        | j                  pt          j        |j                   d            | |k    }t          j        || |          }t          j        |||           }t          j        t          j        |           | |k              }dt          j	        d          z  }|t          j
        t          j        ||z
                      |z  z   }t          j        || |          S )Nc                      dS )Nz)logaddexp2 doesn't support complex dtypesrM  rM  r9  r7  rO  zlogaddexp2.<locals>.<lambda>      ; r9  re  r)  )rb  rc  rv  r  r  r   r   rQ   r  rY   rZ   rD   )rk  rl  ry  r  r  r  	inv_log_2r  s           r7  r   r   z  s     
L#AG,,O0Fqw0O0OP;;  
 6D;tQ""D;tQ""D Qa88Hdhqkk!IEK
4$; 7 7889DDF;xF+++r9  c                     t          j        | j                  s| dk    } t          j        |j                  s|dk    }| |z  S r  rv  r  r  r<  s     r7  r   r     I     !!'** F!!'** Fq5Lr9  c                 F    t          j        | j                  s| dk    S |  S r  r  r  s    r7  r   r     s'    !!'** Av2Ir9  c                     t          j        | j                  s| dk    } t          j        |j                  s|dk    }t          | |          S r  )rv  r  r  rz   r<  s     r7  r   r     sP     !!'** F!!'** Far9  c                     t          j        | j                  s| dk    } t          j        |j                  s|dk    }| |z  S r  r  r<  s     r7  r   r     r  r9  c                 ,    t          j        | |          S rF  )r  r   r<  s     r7  r   r     rc  r9  c                 ,    t          j        | |          S rF  )r  r   r<  s     r7  r   r          =Ar9  c                 ,    t          j        | |          S rF  )r  r   r<  s     r7  r   r     r  r9  )r  rF  c                 ,    t          j        | |          S rF  )r  r   r<  s     r7  r   r     s    
 9Q??r9  c                 ,    t          j        | |          S rF  r  r<  s     r7  r   r     rc  r9  c                 ,    t          j        | |          S rF  )r  r   r<  s     r7  r   r     s     ?1a   r9  c                 ,    t          j        | |          S rF  )r  r   r<  s     r7  r   r     s     ?1a   r9  rP  c                 |    t          | t                    rd}t          |          t          j        || |          S )Nz?Received a Number for the first argument, but expected a TensorrK  )r=  r   ra  rb  r   )rk  rl  rL  r  s       r7  r   r     s>     !V Ooo9Q''''r9  c                   t          | |          \  } }t          | t                    r]t          |t                    rHt          j        t          j        | j                   ot          j        |j                   d            |dk    rt          | t                    r| j        n|j        }t          j        |          }t          j	        t          |          |          s%dt          |           d| d}t          |          t          |t          j                  rt          j        ||          }n||z  }t          j        | |          }t!          | |g|          S )z/
    Reference implementation of torch.sub
    c                      dS )NzwSubtraction, the `-` operator, with two bool tensors is not supported. Use the `^` or `logical_xor()` operator instead.rM  rM  r9  r7  rO  zsub.<locals>.<lambda>  s    C r9  rP  rN  r  ru  )r}  r=  r%   rb  rc  rv  r  r  r   r   r4  ra  rG  r  r   r   rA  rO  s          r7  r   r     sR     Aq!!DAq!Z   
Z:%>%> 
&qw///W8Nqw8W8W4W 	
 	
 	
 zz%a44A!')%00*4;;DD 	"fDKKffXcfffCS//!a&& 		!U##AA
 E	AYq!__F'A777r9  r   )r  r  r  rF  c                 ,    t          j        | |          S rF  )r  r   r<  s     r7  r   r   +  s     9Q??r9  c           
         t          j        t          | t                    pt          |t                    d            t          |t                    r2t          | t                    rt          | |j        |j                  } nFt          | t                    r1t          |t                    rt          || j        | j                  }t          | t                    sJ t          |t                    sJ t          j        t          j	        | d          dt          j
        | t          j        |                              }t          j        t          j        |          t          d          |          S )Nc                      dS )Nz/Expected either argument a or b to be a Tensor"rM  rM  r9  r7  rO  zxlogy.<locals>.<lambda>>  r-  r9  r\  r   r  )rb  rc  r=  r%   r   r&  r  r6  r   r   r   rY   rT   r  )rk  rl  rhss      r7  r   r   5  s5    
L1j!!>Z:%>%>AA   !Z   =Z6%:%: =!1718<<<	Az	"	" =z!V'<'< =!1718<<< a$$$$$a$$$$$
+ehq!nna1eill)C)C
D
DC;u{1~~uU||S999r9  )r  r  rF  c                     t          j        |           }t          j        |          rt          j        | |          S t          t          j        | |                    S rF  )rv  	get_dtyper  r  r   ru   rk  s      r7  r   r   N  sN     OAEe$$ yA1a!!!r9  )r  tensor1tensor2r  r  r  c                    T| j         }t          j        |          t          j        t          j        t                              fd           | |z  |z  z   S )z3
    Reference implementation of torch.addcdiv
    Nc                  0    dt                     d  dS r  r3  r  r  s   r7  rO  zaddcdiv.<locals>.<lambda>w  "    hd5kkhhZehhh r9  r  rv  r   rb  rC  r   r4  r  r  r  r  r  r  s      ` @r7  r   r   b  s      
)%00'U[AAhhhhh	
 	
 	

 %'/G+++r9  c                    T| j         }t          j        |          t          j        t          j        t                              fd           | |z  |z  z   S )z3
    Reference implementation of torch.addcmul
    Nc                  0    dt                     d  dS r  r3  r  s   r7  rO  zaddcmul.<locals>.<lambda>  r  r9  r  r  s      ` @r7  r   r   }  r  r9  )rk  r  r^  r  r^  c                    ||d}t          |          |Rt          j        |           }t          j        t          j        | |          |          }t          j        || |          } |Rt          j        |           }t          j        t          j        | |          |          }t          j        || |          } | S )Nz+clamp called but both min and max are none!)ra  rb  rT   rz   r   r   r   )rk  r  r^  r  a_isnan	conditions         r7  r   r     s     {s{;oo
+a..$UXa%5%5w??	
 K	1c**
+a..$UXa%5%5w??	K	1c**Hr9  c                 .    t          j        | |          S )N)r  rb  r   )r  r  s     r7  r}   r}          ;t%%%%r9  c                 .    t          j        | |          S )N)r^  r  )r  r^  s     r7  r~   r~     r  r9  predc                      ||t           t          j         ||d           t          j         j        t          j        u  fd           t           ||          \   }}t          j	         ||          S ) NTallow_cpu_scalar_tensorsc                      d j          S )Nz#expected predicate to be bool, got r  )r  s   r7  rO  zwhere.<locals>.<lambda>  s    BdjBB r9  )
NotImplementedErrorrv  check_same_devicerb  rc  r  r{  r}  r  r   )r  rk  rl  s   `  r7  r   r     s     	yAI!!	D!QFFFF	L
ej BBBB  
 "$1--JD!Q;tQ"""r9  memory_formatr  c                2    t          j        | |          }|S Nr  )r  r   )rk  r  r  s      r7  r   r     s    
 [-888FMr9  )allow_cross_devicec                    |s2| j         |j         k    r"d|j          d| j          d}t          |          t          j        | |          S )NzAttempting to copy from device z to device z*, but cross-device copies are not allowed!)r6  r]  r  r   )rk  rl  r  r  s       r7  r   r     sT      !(ah"6"6yyyQXyyy3=Ar9  c                     |                                  dk    r'd|                                   d}t          |          t          j        | j                  } |t          j        |                     S )NrP  zCan't convert a tensor with z elements to a number!)r  ra  rv  r   r  r  r   )rk  r  number_types      r7  r   r     sc    wwyyA~~NQWWYYNNNoo %ag..K;uz!}}%%%r9  r6  copylayout
pin_memorynon_blockingc                     | oV|d u p
| j         |k    oG|d u p
| j        |k    o8|d u p
| j        |k    o)|d u p%|t          j        k    pt          j        | |          S r  )r6  r  r  rb  preserve_formatrv  is_contiguous_for_memory_format)rk  r6  r  r  r  r  r  r  s           r7  _to_will_aliasr    s      
	
t^1qx61
	
d].ag.
	
 t^1qx61
	
 T! U 55U4QmTTTr9  c                      t           rF  )r  )r|  r  s     r7  _to_dispatchr  %  s    
r9  c                     | ||||d}|S N)r6  r  r  r  r  rM  r6  r  r  r  r  r  s         r7  
_to_devicer   *  s&     $& F Mr9  c                 :    t          j        |           ||||d}|S r  )rb  r6  r  s         r7  _to_device_strr  <  s0     ,v&&$& F Mr9  c                     | |||d}|S )N)r  r  r  r  rM  )r  r  r  r  r  s        r7  	_to_dtyper  N  s#     $&	 F Mr9  otherc                 B    | j         }| j        }| j        }||||||d}|S )N)r6  r  r  r  r  r  )r6  r  r  )r  r  r  r  r6  r  r  r  s           r7  	_to_otherr  ^  s@     \FKE\F $& F Mr9  	to_kwargsc                    g d}d|v r8t          |d         t                    rt          j        |d                   |d<   |D ]}||v r|dk    r||         t          j        u sd|dk    rC||         j        | j        j        k    r(||         j        r6||         j        | j        j        k    st          | |d           ||         k    r|                    |           d S )N)r  r6  r  r  r6  r  )	r=  rx  rb  r6  r  r4  indexr  pop)rk  r  options_to_checkkws       r7  _canonicalize_to_argumentsr  v  s    EEE9Ih,?!E!E#l9X+>??	( " "??&&9R=E<Q+Q+Q(NN!"*ahm;;%bM/ <3<R=3F!(.3X3X Ar4((IbM99 b!!!" "r9  c                    t          |          dk    rt          |i |}d|vsJ t          | |           t          | fi |r| S d|v r|                    d          nd}d|v r|                    d          nd}|s$|                    d| j                  | j        k    r<|s:d|vr6d|vr2d	|vr.t          j        | |                    d| j                            S t          j
        | fi |}t          ||            |S )
Nr   r  r  Fr  r  r  r6  r  )rS  r  r  r  r  getr  r  r  rb  r  r   )rk  r|  r  r  r  r  s         r7  r   r     sF   
4yyA~~t.v.. v%%%%q&)))a""6"" !'6!1!16::fuD1?61I1I6::n---uL 
	K**Wag..!'99 :F**V##V## )!VZZ-I-IJJJa**6**FFAMr9  )has_identityaccepts_dim_tupler9  keepdimsr  r  r  r  r  r9  r  r  output_dtype_kindc                    t           t                    sJ  j        dk    rt          d j         d          |3t          |t                    sJ |||j        k    rt          d          |st          t
                    sJ t          t
                    rft          j         j                  |s< j        dk    pt          j
         fdD                       }	|	st          d          t          j         ||          \  }
}t           |
            |           }|rW fdt           j                  D             }fd	t           j                  D             }t          j        |||          }|F|J |||j        k    rt          d
          t!          ||j                  }t#          ||          S |j        |k    r|t          j        ||          }|S )N@   zReceived a tensor with z? dimensions, but only tensors with up to 64 dims are supported!z4dtype argument and out dtype must match in reductionr   c              3   2   K   | ]}j         |         V  d S rF  rT  rI  irk  s     r7  rK  z_reduction.<locals>.<genexpr>  s)      1K1K!'!*1K1K1K1K1K1Kr9  zJreducing over zero-size dimension for reduction operation without identityc                 6    g | ]}|vrj         |         nd S rP  r  )rI  r  rk  r9  s     r7  
<listcomp>z_reduction.<locals>.<listcomp>  s+    RRRqatmm

RRRr9  c                     g | ]}|v|	S rM  rM  )rI  r  r9  s     r7  r  z_reduction.<locals>.<listcomp>  s    DDDatmm!mmmr9  z7Expected the dtype of reduction result and out to match	copy_fromr   )r=  r%   ndimr]  r  r   rv  reduction_dimsrT  r3  r   reduction_dtypesr)   r`  r  broadcast_in_dimr*   r+   r  )rk  r  r  r  r9  r  r  r  r  valid_shaper  r  r  output_shapebroadcast_dimss   `   `          r7  
_reductionr(    s]    a$$$$$v{{mafmmm
 
 	
 #z*****	!!"J    5|z$44||4$ w..D fkKX\1K1K1K1Kd1K1K1K%K%K 	\   ',&<	e' '#| 	 #455AT!T]]F NRRRRRE!&MMRRRDDDDU16]]DDD'nMM
'''!:!:I    V\22<<<<||##(@+FLAAMr9  c                 z    t          t           j                  }t           di           } t          d          |           t	                     dd fd
            } j         d}||_        |j                            |            t          t          t          |                    |           |S )zk
    Given a view function (e.g. torch.diagonal) generates its copy variant (e.g. torch.diagonal_copy)
    __annotations__Tr  Nr  c                 X     |d| i|}r| d S | |S t          j        d |          S )Nr  c                 B    |                      t          j                  S r  )r   rb  contiguous_formatrN  s    r7  rO  z3_make_copy_from_view.<locals>._fn.<locals>.<lambda>	  s    aggE,CgDD r9  )pytreetree_map)r  r|  r  r  r  return_none_on_out_variants       r7  r  z!_make_copy_from_view.<locals>._fn  sT    T-s-f--% 	#/4?MDD
 
 	
r9  _copy)r  r  r  r.   r	   r*  updater~  )r  r1  aten_fnannotationsr  	copy_names   ``    r7  _make_copy_from_viewr7    s     dBK((G"/44K 
'	&	&	&w	/	/B
2YY 

 

 

 

 

 

 

 Y

 ;%%%ICL{+++4743344S999Jr9  c                     t          j        t          j        t          j        |           ||                    }| j        t           j        k    r |                    t           j                  }|S )Nr  r  )rb  r   r   r  uint8r   )rk  r  r  r  s       r7  r   r   	  sY     uy):1)=)=sGTTTUUFw%+--Mr9  c                 z   t          | t          j                  }t          |t          t
          f          r(t          |          dk    r|                                }n*|                    ||          	                    d          }| j
        t          j        u rt          j        |t          j                  S |S )Nr   )r  r  F)r)   rb  r{  r=  listr[  rS  r   r   r   r  r9  r  r  )rk  r  r  r  r  s        r7  r   r   !	  s     
!EJ	/	/B#e}%% <#c((a--C1144U;; 	w%+)&%+>>>Mr9  )r  r  c          	         |P||j         }nFt          j        | j                   st          j        | j                   rt          j        }n| j         }|dk    s|g k    rd }t          | t          j        ||||t          j
                  S NrM  r9  r  r  r  r  )r  rv  r  r  rb  int64r(  r  r   r"   SAMErk  r  r  r  r  s        r7  r   r   5	  s     }?IEE#AG,, 	0Fqw0O0O 	KEEGE
byyC2II		49   r9  c           
           t          j        d          t          j        t          j         j                   fd           t          j         j                  r't                    dk    rt          j	                   S  j
        t                    z
  t          t                              t           fdt          t                              D                       z   }t          j         |dd           S )NFvalidatec                       d d j          dS )Nzsum_to_size: size "z" is not expandable to size ""r  rk  rT  s   r7  rO  zsum_to_size.<locals>.<lambda>Z	  s    TeTT!'TTT r9  r   c              3   \   K   | ]&}|z
           d k    j         |         d k    "|V  'dS rP  Nr  )rI  r  rk  leading_dimsrT  s     r7  rK  zsum_to_size.<locals>.<genexpr>a	  sO       5 5\!"a''AGAJ!OO 	
,;OOO5 5r9  T)r  r  r  )rv  extract_shape_from_varargsrb  rc  is_expandable_torT  is_same_shaperS  r  view_ofr!  r[  r`  r   )rk  rT  reduce_dimsrJ  s   `` @r7  r   r   S	  s    ,UUCCCE	Luag..TTTTT   5!'**  s5zzA~~}Q6CJJ&Ll++,,u 5 5 5 5 5 5|SZZ005 5 5 0 0 K
 9QKTBBBBr9  c          	         |P||j         }nFt          j        | j                   st          j        | j                   rt          j        }n| j         }|dk    s|g k    rd }t          | t          j        ||||t          j
                  S r=  )r  rv  r  r  rb  r?  r(  r  r   r"   r@  rA  s        r7  r   r   i	  s     }?IEE#AG,, 	0Fqw0O0O 	KEEGE
byyC2II	
49   r9  r+  c          
      t    |dk    s|g k    rd }t          | t          j        ||d |dt          j                  S NrM  Fr9  r  r  r  r  r  )r(  r  r   r"   r@  rk  r  r  r  s       r7  r   r   	  N     byyC2II	
49	 	 	 	r9  c          
      t    |dk    s|g k    rd }t          | t          j        ||d |dt          j                  S rR  )r(  r  r   r"   r@  rT  s       r7  r   r   	  rU  r9  c                 @    |t          | t                    r| }d } | |fS rF  )r=  r{  )r  unbiaseds     r7  _dim_var_dispatchrY  	  s-     JsD11=r9  
correctionrX  r[  c          
          t          ||          \  }}t          j        ||          }|dk    s|g k    rd }t          | t	          t
          j        |          ||d d dt          j                  }|S )NrM  rZ  TrS  )	rY  rv  set_correctionr(  r   r  r   r"   COMPLEX_TO_FLOAT)rk  r  rX  r  r[  r  s         r7  r   r   	  s     &c844MC%h
;;J
byyC2II		j1114E	 	 	F Mr9  c                6   t          ||          \  }}t          j        ||          }t          j        | t          j                  \  }}t          | |          } t          j        | |||          }t          j	        |          }|J t          ||          S N)r[  r  )
rY  rv  r]  r#  r"   r^  r)   rb  r   rp   )	rk  r  rX  r  r[  opmath_dtyper  a_vara_stds	            r7  r   r   	  s     &c844MC%h
;;J0	%6 L% 	 <00AIaWEEEEJuE"5%000r9  c          	         	 |dk    s|g k    rd }	 j         t           t          j        ||d t          j                  }t          j        t          j	                  pt          j
                  	fd           t          |t                    r|f}t          j         j        |          } j        dk    rdn&t!          t"          j         fd|D             d          }t'          ||          } j         n}t)          ||          }|=t          |t*                    sJ t-          ||j                  }t/          ||          S |S )NrM  r>  c                      ddnd d  S )Nz&mean(): could not infer output dtype. Inputr   z> dtype must be either a floating point or complex dtype. Got: rM  )r  
orig_dtypes   r7  rO  zmean.<locals>.<lambda>
  s0    ?$,ww*? ?7<? ? r9  r   rP  c              3   2   K   | ]}j         |         V  d S rF  r  r  s     r7  rK  zmean.<locals>.<genexpr>
  s)      7Q7Qq
7Q7Q7Q7Q7Q7Qr9  r  )r  r(  r  r   r"   KEEP_PROMOTED_TYPErb  rc  rv  r  r  r=  r   r"  rT  r!  r   operatorr   r   r)   r%   r*   r+   )
rk  r  r  r  r  r  r9  nelemr  rg  s
   `  `     @r7  r   r   	  s    byyC2IIJ}		4G  F 
LU##Du'=e'D'D	
 	
 	
 	
 	
   #s f--D1AA&7Q7Q7Q7QD7Q7Q7QST"U"UE''F#m177L$V\::F
#z*****V\22<<<<Mr9  out0out1)rX  r  r[  c                j   t          ||          \  }}t          j        ||          }t          j        | t          j                  \  }}| j        }t          | |          } t          j	        | |||          \  }}	t          j
        |          }
|J t          |
|          t          |	|          fS r`  )rY  rv  r]  r#  r"   r^  r  r)   rb  r   rp   )rk  r  rX  r  r[  ra  r  original_dtyperb  a_meanrc  s              r7  r   r   #
  s     &c844MC%h
;;J0	%6 L% WN<00AN1cj'RRRME6JuEu--77 r9  c                z    t          ||          \  }}t          | ||||          }t          | ||          }||fS )NrZ  )rY  r   r   )rk  r  rX  r  r[  vms          r7  r   r   =
  sI     &c844MCAsHg*===AQWAa4Kr9  )r  vec1vec2)betarL  rt  ru  rv  c                n    t          j        j        dk    fd           t          j        j        dk    fd           dfdffD ]{\  }t          |t                    rat          j        t          j         j                  o1t          j        j                  ot          j        j                  fd           |                     j	        d         j	        d                    t          j         j                  rt          j        t          t                    t                    fd           t          j        t          t                    t                    fd	           s,rt          j                  nt          j         d
          S t          j         rt          j                  nt          j         d
                    S t          j        t          t                    t!           j                             fd           t          j        t          t                    t!           j                             fd           dk    rt          j                  z  S  z  t          j                  z  z   S )NrP  c                      d j          dS )Nz*addr: Expected 1-D argument vec1, but got -Dr!  )rt  s   r7  rO  zaddr.<locals>.<lambda>]
      JTYJJJ r9  c                      d j          dS )Nz*addr: Expected 1-D argument vec2, but got ry  rz  )ru  s   r7  rO  zaddr.<locals>.<lambda>a
  r{  r9  rL  rv  c                      d  dS )NzBoolean z$ only supported for Boolean results.rM  )arg_names   r7  rO  zaddr.<locals>.<lambda>i
  s    Q8QQQ r9  r   c                  (    dt                      S )Nzexpected bool/int beta but got r3  rv  s   r7  rO  zaddr.<locals>.<lambda>p
  s    Bd4jjBB r9  c                  (    dt                      S )Nz expected bool/int alpha but got r3  r  s   r7  rO  zaddr.<locals>.<lambda>t
  s    CtDzzCC r9  Fc                  8    dt                      dj         S Nzcannot safely convert z to r4  r  )rv  r  s   r7  rO  zaddr.<locals>.<lambda>
  s     IT$ZZIITZII r9  c                  8    dt                      dj         S r  r  )rL  r  s   r7  rO  zaddr.<locals>.<lambda>
  s     JT%[[JJdjJJ r9  )rb  rc  r!  r=  r{  rv  r  r  r   rT  r   r4  intouterr  r   r   )r  rt  ru  rv  rL  argr~  s   ````` @r7  r   r   M
  s    
L	QJJJJ   
L	QJJJJ   !'*T6N;  Xc4   	L&tz22 7*4:667*4:66QQQQ	   ;;tz!}djm44Ddj)) A!$t**c22BBBB	
 	
 	
 	!$u++s33CCCC	
 	
 	
  	.3U5;tT***u9U9UU#+0RD$'''eodE6R6R  
 	!$t**mDJ.G.GHHIIIII	
 	
 	
 	!$u++}TZ/H/HIIJJJJJ	
 	
 	
 1995;tT2222$;T4)@)@!@@@r9  r  r|  .c                    |s"t          | t          j        j                  r| }n't          | t          j        j                  rJ | f|z   }t	          d |D                       }t          |          dk    r|n|d         S )z5Reference implementation of :func:`torch.atleast_1d`.c              3   P   K   | ]!}|j         d k    r|nt          |d          V  "dS )rP  r   N)r!  r  rI  rk  s     r7  rK  zatleast_1d.<locals>.<genexpr>
  s8      EE!QVq[[i1ooEEEEEEr9  rP  r   )r=  collectionsabcr   r[  rS  )r  r|  args_r  s       r7  r   r   
  s      JsKO$<== c;?#;<<<<<
EEuEEE
E
ECc((Q,,33CF*r9  at_least_fnc                 f     | |          }t          |t                    sJ t          ||          S rF  )r=  r%   r  )r  r  r  arg_s       r7  _unsqueeze_atleastr  
  s9     ;sDdJ'''''T3r9  c                 @   |s"t          | t          j        j                  r| }n't          | t          j        j                  rJ | f|z   }t	          t
          t          d          t          fd|D                       }t          |          dk    r|n|d         S )z5Reference implementation of :func:`torch.atleast_2d`.r   c              3   H   K   | ]}|j         d k    r|n
 |          V  dS )r)  Nrz  )rI  rk  unsqueeze_atleast_1ds     r7  rK  zatleast_2d.<locals>.<genexpr>
  =      MM!QVq[[&:&:1&=&=MMMMMMr9  rP  )	r=  r  r  r   r   r  r   r[  rS  )r  r|  r  r  r  s       @r7  r   r   
  s      JsKO$<== c;?#;<<<<<"#5z1EE
MMMMuMMM
M
MCc((Q,,33CF*r9  c                 @   |s"t          | t          j        j                  r| }n't          | t          j        j                  rJ | f|z   }t	          t
          t          d          t          fd|D                       }t          |          dk    r|n|d         S )z5Reference implementation of :func:`torch.atleast_3d`.rU  c              3   H   K   | ]}|j         d k    r|n
 |          V  dS )   Nrz  )rI  rk  unsqueeze_atleast_2ds     r7  rK  zatleast_3d.<locals>.<genexpr>
  r  r9  rP  r   )	r=  r  r  r   r   r  r   r[  rS  )r  r|  r  r  r  s       @r7  r   r   
  s      JsKO$<== c;?#;<<<<<"#5z2FF
MMMMuMMM
M
MCc((Q,,33CF*r9  r2  r/  r4  c                 `    ||n|                                  }t          j        | |||          S rF  )r4  r  r   )rk  r2  r/  r4  storage_offset_ints        r7  r   r   
  s;     )4!:J:J:L:L  AtV-?@@@r9  srcc                 >    |dn|}t          j        | ||||          S r  )r  r   )r  r  r2  r/  r4  r  s         r7  r   r   
  s-     -4.#E3f>PQQQr9  c                  8    t          j        t          |            S rF  )rb  Sizerf  )re  s    r7  r   r   
  s    :'0111r9  c                      t          |           dk    r#t          | d         t                    s| d         } t          t	          | ddi          S )NrP  r   rg  F)rS  r=  rG  r;  r}  tensorss    r7  r   r   
  sM     7||qGAJ!?!?!* 'MuMMNNNr9  c                     t          |          t          | j                  z
  }t          t          |t          | j                  |z                       }t	          j        | ||          S rF  )rS  rT  r[  r`  r  r$  )rk  r2  startr9  s       r7  r   r   
  sS    IIAG$Euc!'llU23344D!!T4000r9  r  r  c                   
 d }t          |           dk    rd}t          |          | D ]}t          |t                    sJ t	          j        | ddi ddlm} d 
t          |           D ]H\  
j	        dk    r
j	        dk    r(t          j        j	        
j	        k    
fd           I
| d         

j        }g }t          |           D ]\  }t          |          t          |j                  k    r?|j	        dk    sJ t          j         ||j        d         dk              
fd	           i|j	        dk    r ||j        d         dk              r|                    |            ||           }t          |          dk    r`| d         	 t          t          d
 | D                                 }	n# t           $ r d}	Y nw xY wt#          dj        j        |	|          S t	          j        |d         j	        |          }t	          j        |d         j	        |           t-          j        ||                              |          S )Nc                     d }| D ]B}t          j        |          }|t          j        k    r|c S |||k    rt          j        c S |}C|J |S rF  )rv  suggest_memory_formatrb  r.  )inputsformatr   fs       r7   cat_compute_output_memory_formatz-cat.<locals>.cat_compute_output_memory_format
  sr     	 	A+A..AE+++!fkk....FF!!!r9  r   z3cat expects at least one tensor, but received zero!r  FrC  rP  c                  0    d j          dj          d dS )N6Number of dimensions of tensors must match.  Expected z-D tensors, but got z-D for tensor number  in the listrz  )exampler  r   s   r7  rO  zcat.<locals>.<lambda>&  s:     5 '5 5BC&5 5%&5 5 5 r9  c                       d j          d dS )Nr  z*-D tensors, but got 1-D for tensor number r  rz  )r  
tensor_idxs   r7  rO  zcat.<locals>.<lambda>B  s+     :#L: :!+: : : r9  c              3   $   K   | ]}|j         V  d S rF  )requires_gradrH  s     r7  rK  zcat.<locals>.<genexpr>Y  s$      $F$FQ_$F$F$F$F$F$Fr9  r   r  r6  r  r  r  )rS  ra  r=  r%   rv  r  rZ  rC  r_  r!  rb  rc  rT  r  r{  r   	Exceptionr  r  r6  canonicalize_dimvalidate_idxr  r   r   )r  r  r  r  tensorrC  rT  filteredr  r  r  r  r   r  s             @@@@r7  r   r   
  s   
 
 
 7||qCoo . .&*------	WEuEEEDDDDDD$ G'""  1?v{{v{{Fgl*5 5 5 5 5 5    !*MEH'00 $ $
Fu::V\****;!####L v|A!344: : : : :   $ {aNN6<?a3G$H$HOOF####44W==M
8}}AJ	" !$F$Fg$F$F$F!F!FGGMM 	" 	" 	"!MMM	" '8''
 
 
 	
 
 !!13
7
7C	x{'---9Xs##)))FFFs   '&G GGc                 T    t          d | D                       }t          |d          S )Nc              3      K   | ]:}|j         d k    r|n(|                    |                                d f          V  ;dS rI  )r!  r   r  rH  s     r7  rK  zcolumn_stack.<locals>.<genexpr>n  sY        ;<QVaZZQYY		1~66     r9  rP  )r[  r   r  aligned_tensorss     r7  r   r   l  s?      @G    O """r9  c                     t          j        | j                  s| S | j        rt	          j        |           S t          j        |           S rF  )rv  r  r  	is_sparserb  r8   r  r   r  s    r7  r   r   t  sG    !%+..  *"5))):er9  padc           	        
 t          j        t                    dz  dk    fd           | j        t                    t                    dz  }|z
  t          j        |k    fd           | }t	                    D ]
d
z
  dz
  z           dk     r2|                    
          |j        
                  z             }dz            dk     r.|                    
d|j        
         dz            z             }t          j        d D                       r|                                S t          d                    }t	          |          D ]o
t                    
dz   dz  z
  
z                     z   dz            z   }t          j        |dk    
fd           |
                    |           pt          j        |           }t          j        || j        | j        | j        |          }|dk    r| j        t           j        k    rd	}t          j        ||          }|}	t	                    D ]
d
z
  dz
  z           dk    r1|	                    
         |	j        
                  z
            }	dz            dk    r.|	                    
d|	j        
         dz            z
            }	t'          j        |	|           |S )
Nr)  r   c                  (    dt                      S )Nz1Length of pad must be even but instead it equals rR  )r  s   r7  rO  z!constant_pad_nd.<locals>.<lambda>  s    NCHHNN r9  c                  0    dt                     d  dS )Nz`Length of pad should be no more than twice the number of dimensions of the input. Pad length is z while the input has  dimensions.rR  )l_inpr  s   r7  rO  z!constant_pad_nd.<locals>.<lambda>  s/     25c((    r9  rP  c              3   "   K   | ]
}|d k     V  dS )r   NrM  )rI  ps     r7  rK  z"constant_pad_nd.<locals>.<genexpr>  s&      ''aAE''''''r9  c            	      X    d z             d          ddz             d z    d	S )NzThe input size z, plus negative padding r  rP  zG resulted in a negative output size, which is invalid. Check dimension z of your input.rM  )r  input_sizesl_diffr  pad_idxs   r7  rO  z!constant_pad_nd.<locals>.<lambda>  sf     Mk&1*&= M M7|M M"%gk"2M M17!M M M r9  r  F)rb  rc  rS  rT  r`  r   r3  r   r   r;  r  rv  r  r  r  r6  r  r{  rE   r  r   )r  r  r  l_padc_input	new_shapenew_dimr  r@  c_outputr  r  r  r  r  s    `        @@@@@r7  r   r   }  sz   
 
LC1NNNN  
 +KEHHMEU]F	L	 	 	 	 	   G65!! P Puqy1}%w<!nnQWw}Q7G#g,7VWWGw{annQ7=+;c'A+>N+NOOG |''3''''' }}[&)**I5\\ 	" 	"c((q1uk*fqj)CL83w{;KKaKM M M M M M M M	
 	
 	
 	!!!!/66M[k|)#  F zzekUZ//Z&&FH65!! S Suqy1}%w<13w<!2S\!A H w{q  q!X^A->Wq[AQ-QRRH	M(G$$$Mr9  c                    t          j        |t           j        k    d            t          | |          r| S t          j        | |          S )Nc                      dS )Nz@preserve memory format is unsupported by the contiguous operatorrM  rM  r9  r7  rO  zcontiguous.<locals>.<lambda>  s    R r9  r  )rb  rc  r  r   r   )rk  r  s     r7  r   r     sZ     
L..RR   0OOO ;q6666r9  c                     t          j        t          |           dk    d            t          |  }t	          |d          S )Nr   c                      dS )Nz%dstack expects a non-empty TensorListrM  rM  r9  r7  rO  zdstack.<locals>.<lambda>      +R r9  r)  )rb  rc  rS  r   r   r  s     r7  r   r     =    	LW!#R#RSSS '*O"""r9  )implicitr  c                0  	
 ddl m}m} t          |          dk    r0t	          |d         t
                    rt          |d                   }t          j        t          |          t          | j	                  k    d            t          |          t          | j	                  z
  }t          |          }t          | j	                  D ]o\  }
||z   }||         	 |	dk              r
||<   't          j         |
dk    	
k              	
fd           t          j        	dk               	||<   pt          j        |           t          j        | |t          t!          |t          | j	                  |z                                 S )Nr   )rC  rp  rP  c                      dS )Nz3expand: the requested shape has too few dimensions!rM  rM  r9  r7  rO  zexpand.<locals>.<lambda>  s    E r9  rU  c                      d d  dS )Nz3expand: attempting to expand a dimension of length  -> ru  rM  )requested_lengthrJ  s   r7  rO  zexpand.<locals>.<lambda>  s    hahhUehhh r9  )rZ  rC  rp  rS  r=  r   r[  rb  rc  rT  r;  r_  rv  validate_shaper  r$  r`  )rk  r  rT  rC  rp  rt  shape_rY  
offset_idxr  rJ  s            @@r7  r   r     s   LLLLLLLL
 5zzQ:eAh99eAh	LE

c!'ll"EE  
 ZZ#ag,,&F%[[FAG$$ 2 2Q6\
 , >*b011 	2!"F:LqAv/1455hhhhh   L)Q.///!1F: 
   !	65vs17||f'<==>>  r9  c                 6    |                      |j                  S rF  )r   rT  r<  s     r7  r   r     s    88AGr9  chunksc                     |dk    rd| d}t          |          t          j         j                   j                 }t          j        ||z            t          j        |z            }|z  } fdt          |          D             }|dk    r(|	                    t           |z  |                     t          |          S )Nr   z%Expected at least one chunk, but got ru  c                 :    g | ]}t          |z            S rM  )r   )rI  r  rk  
chunk_sizer  s     r7  r  zchunk.<locals>.<listcomp>*  s+    UUUQfQQ^Z88UUUr9  )ra  rv  r  r!  rT  r  r7   rG   r`  r  r   r[  )	rk  r  r  r  lengthfull_chunkstail_chunk_sizer  r  s	   ` `     @r7  r   r     s    {{?f???oo

 
-
-CWS\F6F?++J*Vj011Kz)OUUUUUU%BTBTUUUF!fQ[:%=OOPPP==r9  rU  	start_dimend_dimc                    t          j        | j        |          }t          j        | j        |          }||k    r| j        dk    r| S t          j        | ||          \  }}|t          j        | ||          S t          j        | ||          S r  )rv  r  r!  r  _collapse_view_helpercollapse_viewcollapse)rk  r  r  r  _new_stridess        r7  r   r   5  s    &qvy99I$QVW55G G! $9!YPPI|"1i999 >!Y000r9  c                     t          |t                    s$t          |t                    st          d          t	          j        | j        |          }t	          j        |           t          j	        | |          S )Nz!dims has to be a sequence of ints)
r=  r[  r;  ra  rv  canonicalize_dimsr!  validate_no_repeating_dimsr  rev)rk  r9  s     r7  r   r   G  sm     dE"" >:dD+A+A ><==="16400D	$T***9Qr9  c                 V    | j         dk     rt          d          t          | d          S )Nr)  zInput must be >= 2-d.r  r!  r]  r   r  s    r7  r   r   R  *    vzz23334==r9  c                 V    | j         dk     rt          d          t          | d          S )NrP  zInput must be >= 1-d.r  r  r  s    r7  r   r   Z  r  r9  r  r  c                 ~   t          t                    rYt          j                                        dk    ot          j        j                  d                                            t          t                    t          j        |                                 dk    d            t          j        dk    d            t          j        | j        |          }|                     |          t          j        t           k    ok    fd           dk     rz   t          j        z
  k    fd           t!          | j                  }||<   |                     ||                                 |                                 |                     |          z  z             S )Nr   c                      dS )Nz'start must be an 0-dim integral Tensor.rM  rM  r9  r7  rO  znarrow.<locals>.<lambda>j  s    = r9  c                      dS )Nz-narrow() cannot be applied to a 0-dim tensor.rM  rM  r9  r7  rO  znarrow.<locals>.<lambda>n  s    &U r9  c                      dS )Nz&narrow(): length must be non-negative.rM  rM  r9  r7  rO  znarrow.<locals>.<lambda>o  s    &N r9  c                      d   d  d dS )Nz0start out of range (expected to be in range of [, z], but got )rM  )
dim_lengthr  s   r7  rO  znarrow.<locals>.<lambda>u  s'    qJ;qqR\qqinqqq r9  c                      d d d  dS )Nzstart (z) + length (z) exceeds dimension size (z).rM  )r  r  r  s   r7  rO  znarrow.<locals>.<lambda>{  s#    ]%]]V]]z]]] r9  )r=  r%   rb  rc  r  rv  r  r  r   r   r  r  r!  r2  _check_with
IndexErrorr;  rT  r   r/  r4  )rk  r  r  r  r  r  s     `` @r7  r   r   b  s   
 %$$ IIKK1D!7!D!D==	
 	
 	
 

eE	L1UUVVV	L1NNOOO

 
-
-CJ		u4*!4qqqqq  
 qyy
"	Lf$$]]]]]]   QWIIcN<<188::q//11AHHSMME4II  r9  	norm_dimsepsc                 4   t          j        | j        |          }t          j        | j                  }t          | |          }t          |t                    sJ t          j	        ||dd          \  }}t          j
        ||z             }||z
  |z  }|||fS )a  Computes mean and 1/std of a tensor along norm_dims.

    Used as a helper function for normalization layers.

    Args:
        a (Tensor): input tensor
        norm_dims (DimsType): dimensions to normalize over
        eps (float): epsilon for numerical stability

    Returns:
        out (Tensor): normalized tensor.
        mean (Tensor): mean of the tensor along norm_dims.
        rstd (Tensor): 1/std of the tensor along norm_dims.
    FTr  rX  r  )rv  r  r!  r  r  r)   r=  r%   rb  r   r   )	rk  r  r  r  a_acc
biased_varr   rstdr  s	            r7  
_normalizer    s    " '	::I3AG<<#A'899EeZ(((((~9ud  J ;zC'((D4<4
Cd?r9  
dimensionsc                 T    t          |          D ]}t          j        | |          } | S rF  )sortedrb  r  )rJ  r  r  s      r7  _unsqueeze_multipler    s1    j!! $ $OAs##Hr9  weightbias
batch_sizenum_channelsflattened_inner_size
num_groupsc                 x    t          j         j        dk     fd           t          j        |z  dk     fd           t          j         j                  }t           |          }	ddg}
t          j        |	||z  |g          }t          j        |j        |
          }
t          j	        ||
dd          \  }}t          j
        ||z             } j        j        d	k    r|t          j        |d
|z  d
g          }||z  }| |z  }|!t          j        |d
|z  d
g          }||z   }|                                                    ||g|d
g          }|                                                    ||g|d
g          }t          t!          d j                            }t#          ||          }t#          ||          }|	|z  |z   }nv||z
  |z  }|                     j                  }dgt          t!          d j                            z   }|t#          ||          }||z  }|t#          ||          }||z   }t          | j                  }t          | j                  }t          | j                  }t          j        ||
          }t          j        ||
          }|||fS )Nr)  c                      d j          S )Nz=Expected at least 2 dimensions for input tensor but received rz  r  s   r7  rO  z#native_group_norm.<locals>.<lambda>  s    \PUPZ\\ r9  r   c                  $    dd j          d z   S )NzDExpected number of channels in input to be divisible by num_groups, zbut got input of shape z and num_groups = r  )r  r  s   r7  rO  z#native_group_norm.<locals>.<lambda>  s#    V
OEK
O
O:
O
OP r9  r  FTr  rm  rP  )rb  rc  r!  rv  r  r  r)   r   r  r   r   r6  r4  r   r   r;  r`  r  r  rT  r   )r  r  r  r  r  r  r  r  r  	input_accr"  input_reshapedr
  r   r  weight_reshapedwrl  bias_reshapedr'  unsqueeze_wunsqueeze_br  unsqueeze_weightunsqueeze_biass   `     `                  r7  r   r     s    
L
a\\\\   
Lz!Q&	P 	P 	P 	P 	P   3EK@@'/@AAIVN]	Z!;=QR N ,^-@.QQN~NUD  J ;zC'((D|E!!f&8-Q
LJ$>B
 
 ?"EAI!Mq*lj&@!D M M!ALLNN%%z<&@<QRBSTTLLNN%%z<&@<QRBSTTeAuz2233)!^<<)!^<<+%3$,hhu{##tE!UZ$8$899926>JJ((C0~FFN&C
!#u{
3
3C"455D"455D =~..D=~..Dtr9  out2normalized_shapec                     ddl m} t                    }t          j        |dk    fd           t          j        d u p |j        t                              fd           t          j        d u p |j        t                              fd           t          j         j        |k    o- | j         j        |z
  d          t                               fd           t                      t                    t                     j        |z
  }t          t          | j                            }t           ||          \  }	}
}|	z   }	n|	z  }	n
|	z  z   }	t          |	 j                  }	 j        j        dv r*t          |
 j                  }
t          | j                  }|	|
|fS )	Nr   )sym_eqrP  c                  (    dt                     z   S )NzzExpected normalized_shape to be at least 1-dimensional, i.e., containing at least one element, but got normalized_shape = )rx  )r$  s   r7  rO  z#native_layer_norm.<locals>.<lambda>  s     I


  r9  c                  X    dt          j                  z   dz   t                     z   S )NzQExpected weight to be of same shape as normalized_shape, but got weight of shape  and normalized_shape = rx  rT  )r$  r  s   r7  rO  z#native_layer_norm.<locals>.<lambda>  s9     
fl

 %% 

	  r9  c                  X    dt           j                  z   dz   t                    z   S )NzMExpected bias to be of same shape as normalized_shape, but got bias of shape r)  r*  )r  r$  s   r7  rO  z#native_layer_norm.<locals>.<lambda>  s7     
dj// %% 

	  r9  c                  ~    dt                    z   dz   t                    z   dz   t           j                  z   S )NzGiven normalized_shape=z, expected input with shape z, but got input of size r*  )r  r$  s   r7  rO  z#native_layer_norm.<locals>.<lambda>  sR    )


 
() 

  %	%
 ek

 r9  )rm  mtia)rZ  r&  rS  rb  rc  rT  r[  r!  r   r;  r`  r  r)   r  r6  r4  )r  r$  r  r  r  r&  normalized_ndimaxisr"  r  r   r  s   ````        r7  r   r     so    =<<<<<*++O	L1	  	  	  	    
L$G&&u5E/F/FGG	  	  	  	  	    
LCtz51A+B+BCC	  	  	  	  	    
L
o% 	
FKo58895AQ;R;R
 
	 	 	 	 	   uEF##$:'D%ej1122N <<OCt~$*Dj		Fl		 0FlT!
!#u{
3
3C|O++&tU[99&tU[99tr9  c                     t          | S rF  )r   )	fake_modefuncr|  r  s       r7  native_layer_norm_faker3  :  s    d##r9  c                     t          j        | j        t          j        |                    }t	          j        | |          S rF  )rv  r  r!  extract_dims_from_varargsr  r   )rk  r9  _permutations      r7  r   r   A  s:    *	/55 L ?1l+++r9  r  maxnormc                 \  	 t          j        t          |t                     d            t          j        |dk    d            t          j        t          t                     d            t          j        dk    fd           | j        	t          j        	dk    	fd           t          j        	|          }t          t          	                    }||= t          j	        | j
                  }|| j
        k    r%t           j                            | ||d|	          }n#t           j                            | ||d
          }d}t          j        |k    ||z   z  d          }|| j
        k    rt          j        || j
                  }| |z                                  S )Nc                      dS )Nzrenorm: p must be real-valuedrM  rM  r9  r7  rO  zrenorm.<locals>.<lambda>N  s    5T r9  r   c                      dS )Nz'renorm: non-positive norm not supportedrM  rM  r9  r7  rO  zrenorm.<locals>.<lambda>O  s     I r9  c                      dS )Nz#renorm: maxnorm must be real-valuedrM  rM  r9  r7  rO  zrenorm.<locals>.<lambda>Q  s    2W r9  c                      d  S )Nz,renorm: expected maxnorm to be >= 0 but got rM  )r7  s   r7  rO  zrenorm.<locals>.<lambda>T  s    VWVV r9  rP  c                      d  dS )Nz/renorm: input needs at least 2 dimensions, got  dimensionsrM  rz  s   r7  rO  zrenorm.<locals>.<lambda>Y  s    S$SSS r9  T)r  r  r  gHz>re  )rb  rc  r=  r  r!  rv  r  r;  r`  r  r  linalgvector_normr   r  r  r   )
r  r  r  r7  rO  acc_typer`   r  norm_factorr!  s
      `     @r7  r.  r.  I  s   
 
LZ7+++-T-TUUU	LQIIJJJ	Lw(((*W*W   
L1VVVV   :D	LqSSSS  
 
 s
+
+CuT{{##KC *5;77H5;|''1k4x ( 
 
 |''q+t'LL
C+dWng.DcJJK5;0ekJJK++---r9  reflectn_fft
hop_length
win_lengthwindowcenterpad_mode
normalizedonesidedreturn_complexalign_to_windowc                     t          j        d u pj         j        k     fd           t          j        | p|
d u d           ||ndz  ||n|	G                                 pd uot	          j        j                  }t          j        |d           n|	}t          j        t	          j         j                  pt	          j         j                  d            t          j        d j        cxk    odk    nc d             j        }|dk    r 	                    d	           |rd
 j        z
  }dz  }g t          j        d|           j        }t                                                   |          ||g|                                                                 |d                                          d          t          j        d	cxk     ok    nc fd           t          j        d	k    fd           t          j        d	cxk     ok    nc fd           t          j        d u pj        fk    fd           k     rN!t          j         j         j                  z
  dz  }t                              |z
  |z
  g          |s(|
r&z
  dz  }t                               ||g|                                d            z   t	          j         j                  }||n| }|rdnd }|r:t          j        | d            t           j                             d|          }n"t           j                             d|          }|                    dd           |dk    r|                    d	          }|r|nt          j        |          S )Nc                  .    d j          dj          z   S )NzAstft input and window must be on the same device but got self on  and window on r5  r  rG  s   r7  rO  zstft.<locals>.<lambda>  s)    ^PUP\^^///0 r9  z6stft only supports align_to_window for center = False.   zstft requires the return_complex parameter be given for real inputs, and will further require that return_complex=True in a future PyTorch release.c                      dS )Nz:stft expected a tensor of floating point or complex valuesrM  rM  r9  r7  rO  zstft.<locals>.<lambda>  s    L r9  rP  r)  c                      dS )Nzstft expected a 1D or 2D tensorrM  rM  r9  r7  rO  zstft.<locals>.<lambda>  s    /P r9  r   r  c                      d  d S )Nzstft expected 0 < n_fft <= z, but got n_fft=rM  )r  rD  s   r7  rO  zstft.<locals>.<lambda>  s    MfMMeMM r9  c                      d  S )Nz0stft expected hop_length > 0 but got hop_length=rM  )hop_length_s   r7  rO  zstft.<locals>.<lambda>  s    P;PP r9  c                      d  S )Nz9stft expected 0 < win_length <= n_fft but got win_length=rM  )win_length_s   r7  rO  zstft.<locals>.<lambda>  s    YKYY r9  c                  &    d  ddj          z   S )Nz8expected a 1D window tensor of size equal to win_length=r  zbut got window with size r  )rY  rG  s   r7  rO  zstft.<locals>.<lambda>  s(    V{VVV8&,889 r9  r\  rU  )	dimensionr2  steporthoc                      dS )Nz9Cannot have onesided output if window or input is complexrM  rM  r9  r7  rO  zstft.<locals>.<lambda>      O r9  r  r`   )rb  rc  r6  r-  rv  r  r  r  r!  r  	itertoolsr   rT  r  r  r  r2  r#  r   r  fftrfft
transpose_squeeze_view_as_real)r  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rM  return_complex_original_ndim
extra_dims
pad_amountextended_shapeleftinput_pad_amountcomplex_fftr`   r  rW  r  rY  s   ``  `                @@@r7  r/  r/  r  s    
L$7&-5<7	
 	
 	
 	
 	
   
L
-o-@  
 !+ 6**EQJK * 6**EK**,, 
$G5#9&,#G#G 	 	c	
 	
 	
 	
 )	LU[))PU-CEK-P-PLL   
Lej%%%%A%%%%'P'PQQQJM"" 6^
aZ
I9+Az::IU[IN33j*5MxXX

5::<<
455ZZ]]F	L	EVMMMMM   
LaPPPP   
L	K    5    YYYY   
L$8&,;.8	
 	
 	
 	
 	
   U>Z5;u|TTTF#)%%ftU[5H45O.PQQ Po P!K/A5!13C DhOOLL2ELDDE(55K#/xx_H *77dD 6OOO	
 	
 	
 innUn66immErm55NN1all1oo!>33u'9#'>'>>r9  c
                 	    t          j        d u pj         j        k     fd           ||n|dz  }
||n|}t          j        t          j         j                   fd                                d          }                     d          }||
|dz
  z  z   }t          j                                         dk    d            t          j        d	 j        cxk    od
k    nc  fd           ||n||k    }|r!t          j        |d	z  dz   |k    d            nt          j        ||k    d            t          j        d|
cxk     o|k    nc d            t          j        d|cxk     o|k    nc d            t          j        d u pj	        |fk    d            6t          j
         j                  }t          j        || j                  }n}||k    r,||z
  d	z  }t                              ||||z
  |z
  fd          } j        } j        d	k    r                     d                                dd	           |rdnd }|	r:t          j        | d            t           j                             d|           ntt          j        d u pt          j        j                   d            |s                     dd|d	z  dz              t           j                             d|                                d	          |k    sJ  |                    dd|g          z  }t                              ||                    d          |fd||
          }t                              |                    d	                              d||f          |                    d          |fd||
          }||                    d          k    sJ ||                    d          k    sJ |r|d	z  nd}|||z   }n|r	||d	z  z
  }n|}t1          d||z
            }|                    d||          }|                    d||          }||z  }|d	k    r|                    d          }||k    r5t5          j        d           t                              |d||z
  fd          }|S )Nc                  .    d j          dj          z   S NzBistft input and window must be on the same device but got self on rP  r5  rQ  s   r7  rO  zistft.<locals>.<lambda>  s)    _QVQ]__///0 r9  rR  c                  ,    d j          dj          z   S rq  r5  rQ  s   r7  rO  zistft.<locals>.<lambda>  s%    P==fm==> r9  rU  rP  r   c                      dS )Nz"istft input tensor cannot be emptyrM  rM  r9  r7  rO  zistft.<locals>.<lambda>
  s    ,P r9  r)  r  c                      d j          S )Nz8istft expected a tensor with 2 or 3 dimensions, but got rz  r  s   r7  rO  zistft.<locals>.<lambda>  s    W5:WW r9  c                      dS )Nzistft expected the frequency dimension (3rd to the last) of the input tensor to match n_fft / 2 + 1 when onesided=True, but got {fft_size}rM  rM  r9  r7  rO  zistft.<locals>.<lambda>  s    R r9  c                      dS )N)zistft expected the frequency dimension (3rd to the last) of the input tensor to match n_fft when onesided=False, but got {fft_size}rM  rM  r9  r7  rO  zistft.<locals>.<lambda>  s	      r9  c                      dS )Nz+istft expected 0 < hop_length <= win_lengthrM  rM  r9  r7  rO  zistft.<locals>.<lambda>$  r+  r9  c                      dS )Nz&istft expected 0 < win_length <= n_fftrM  rM  r9  r7  rO  zistft.<locals>.<lambda>'  s    *R r9  c                      dS )NzDInvalid window shape. window has to be 1D and length of `win_length`rM  rM  r9  r7  rO  zistft.<locals>.<lambda>+  s    V r9  r\  r]  c                      dS )Nz9cannot have onesided output if window or input is complexrM  rM  r9  r7  rO  zistft.<locals>.<lambda>A  r_  r9  r`  c                      dS )Nz:Complex windows are incompatible with return_complex=FalserM  rM  r9  r7  rO  zistft.<locals>.<lambda>G      P r9  )r  r  r  )r  r  r2  r\  zThe length of signal is shorter than the length parameter. Result is being padded with zeros in the tail. Please check your center and hop_length settings)rb  rc  r6  rv  r  r  r2  r  r!  rT  corresponding_real_dtyper#  r  r   r  r   rb  ifftr   irfftr  unfold_backwardr   r   r^  r   warningswarn)r  rD  rE  rF  rG  rH  rJ  rK  r  rL  rW  rY  n_framesfft_sizeexpected_output_signal_len	onesided_
real_dtypewindow_rl  rh  r`   y_tmprr  window_envelopr  ends   `   `                     r7  r0  r0    s    
L$7&-5<7	
 	
 	
 	
 	
   !+ 6**EQJK * 6**EK	Lu{++	
 	
 	
 	
 	
   zz"~~Hzz"~~H!&1)E!E	L"$P$PQQQ	L	UZ1WWWW   %0h%6GI 
QJNh& 	
 	
 	
 	
 	X 	
 	
 	
 
L	K&&&&;&&&&==   
L	K    5    "R"R   
L$8&,;.8VV  
 ~3EK@@
*[
5<PPPe#)&&wu{7JT7Q0RTUVVJMzQ""OOAq!!E *77dD :MOO	
 	
 	
 	u"488dNF%"8"F"FFPP	
 	
 	
  	ILLRq!aLHHE	2D99::a==E!!!!GLL!Q///EZZ]]$>? 	 	 	A ))Aq(E233ZZ]]$>? *  N &2222%)<)<Q)?)????? 'EQJJaEfn	 )(5A:5(C%K  F	QeF33A#**qf*MMN	NAIIaLL
'''`	
 	
 	
   Q.H(H$I1MMHr9  a_shapea_strider[  r\  c                   	
 t          |           }t          j        ||d          	|dk    rdn| 	         
|dk    rdn|	         }t          j        
k    	
fd           t          j        dk    fd           t          |           }t          |          }|                               |                    |           	|k     r$|	         z
  z  dz   |	<   |	xx         z  cc<   ||fS )NT)wrap_scalarr   rP  c                      d  d d S )Nz%Maximum size for tensor at dimension z is z but size is rM  )r  max_sizer2  s   r7  rO  z*_get_unfold_shape_stride.<locals>.<lambda>  s!    ^^^^^X\^^ r9  c                      d  dS )NzStep is z but must be > 0rM  r\  s   r7  rO  z*_get_unfold_shape_stride.<locals>.<lambda>  s    14111 r9  )rS  rv  r  rb  rc  r;  r  )r  r  r[  r2  r\  a_ndimlast_striderT  stridesr  r  s      ``    @@r7  _get_unfold_shape_strider  |  s,    \\F

 
E
E
ECaKKqqWS\H{{!!K	L^^^^^^  
 
Lq1111  
 MME8nnG	LLNN;
V||Cj4'D014c
'>r9  c                    t          j        |d          }t          j        t	          |          t	          | j                  k    d            t	          |          dk    rt          j        |           S t	          |          | j        z
  }dg|z  }| j        D ]}|                    |           t          d t          ||          D                       }d|v r:t          j        || j        | j        | j        t          j        |                     S |}t          j        |          }t#          |          D ])\  }}t%          ||||t'          |d                    \  }}*t)          t#          |                    }	|	                    t-          j        d          d	           t          |	 \  }
}|                     |          }t          j        |          }|                    |
          }|                    |          S )
NFrC  c                      dS )Nzbrepeat: Number of dimensions of repeat dims can not be smaller than number of dimensions of tensorrM  rM  r9  r7  rO  zrepeat.<locals>.<lambda>  s    t r9  r   rP  c              3   &   K   | ]\  }}||z  V  d S rF  rM  )rI  padded_sizerepeat_sizes      r7  rK  zrepeat.<locals>.<genexpr>  s?        $K 	k!     r9  r  T)keyreverse)rv  rK  rb  rc  rS  rT  r   r!  r  r[  rq  r  r  r6  r  r  make_contiguous_strides_forr_  r  r^  r;  sortrj  
itemgetterr   r   r   )rk  repeat_shapenum_new_dimensionspadded_shapedim_sizetarget_shapeurtensor_shapeurtensor_strider  enumerated_stridepermute_order_sorted_striderepeat_xtensorcloned_resultpermuted_results                  r7  r   r     s+    3L5QQQL	LLS\\)tt  
 <A{1~~\**QV33++LG & &H%%%%  (+L,(G(G    L 	L{'8/5a88
 
 
 	
 "N7EEO"<00 
 
X*BOS(C!<L<L+
 +
'
 Y7788x2155tDDD$'):$;!M> XXn--N K//M $++M::O ""<000r9  
allow_copyc                 J  
 d| 
|D ]2}
j         k    r9|dk    sJ 
j         dz
  }t          j        
|
j        |                   
dz   G|
j                 k    rdz   ^
j                 }}||z  dk    r|dz  }|
j        |         z  }||z  dk    |k    rwt          j        
|          \  }}|K|rt          j        | |          c S d| j         d|                                  d| d}	t          |	          t          
|          
||k    rt          j        
|          
dz   4
j         k     rCt          j
        
j                 dk    
fd           t          
          

j         k     C
| u rt          j        |           S 
S )Nr   rP  z Cannot view a tensor with shape z and strides  as a tensor with shape ru  c                  *    d d j                   S )Nza.size(z) expected to be 1 but got r  )r  rY  s   r7  rO  z/_reshape_view_helper_core_alg.<locals>.<lambda>  s    McMMbhsmMM r9  )r!  r  	split_dimrT  r  r   r/  ra  r   rb  rc  r   rN  )rk  rT  r  r  last_dimaccumr  r  r  r  r  rY  s             @@r7  _reshape_view_helper_core_algr    s   ( C	
B * *"'>>Q;;;;w{H Xrx/ABBB'C RXc]""'Cfn!!1HCRXc]"E fn!! #:: ',&A"c3&O&O#I|  3 =E22222{{{qxxzz{{sx{{{ oo%S#&&B F??S&11BAg --HSMQMMMMM	
 	
 	
 R -- 
Qww}Q	r9  c                    t          j        |d          }t          j        ||                                           }|                                 dk    r#t	          | |t          j        |                    S | j        dk    r9| }|D ]}|dk    sJ t          |d          }|| u rt          j	        |           S |S t          |          dk    r>| }| j        D ]}|dk    sJ t          |d          }|| u rt          j	        |           S |S t          |           rt          |          dk    r5| j        dk    r*t          j        | |                                 gdg          S t          |          dk    r5| j        dk    r*|d         }|d         }t          j        | ||g|dg          S t          t           j        |d          }t          j        |                                 |k    d| j         d| d	           t'          | ||          S )
NFrC  r   rP  rU  r)  z&Could not reshape a tensor with shape r  ru  )rv  rK  
infer_sizer  r   r  r!  r  r  rN  rS  rT  r   r   rb  r   rj  r   rc  r  )rk  r  rT  _ar  dim0dim1shape_numels           r7  _reshape_view_helperr  "  s   ,UUCCCE UAGGII..E 	wwyyA~~!UE$Ee$L$LMMM 	v{{ 	# 	#FQ;;;;2r""BB77=###I 5zzQg 	! 	!FQ;;;;RBB77=###Ia   @u::??qvzz#A		{QC888u::??qv{{8D8D#Ad|dAY???ua00K	L			[ ZZZRWZZZ   )E:>>>r9  rT  c                 "    t          | g|R ddiS )Nr  Tr  rG  s     r7  r   r   [  s     ;E;;;d;;;r9  c                 P    |                      |                                          S rF  )r   r2  r  r  s     r7  r   r   `  s    <<

%%%r9  rM  shiftsc                 @   t          j        | j        |          }t          |t                    s|f}t          |t                    s|f}|                                 dk    r|                                 S |                                 dk    r,t          |          dk    rt          d|d          d          t          |          }t          |          }|dk    s|dk    r|dk    rt          d          |dk    rF|dk    r@t          j        t          j        |           |d                              | j                  S ||k    rt          d| d|           |dk    sJ |dd         }|dd         }t          j        | |d         f|d                   }t          j        |||          S |d         }| j        |         }	|	|d         z
  |	z  }
t          j        |	| j        	          }|                     |t          j        |
|z   |	                    S )
z/Reference implementation of :func:`torch.roll`.r   zDimension specified as z but tensor has no dimensionsrP  z`shifts` requiredz*shifts and dimensions must align. shifts: z, dims: Nr5  )rv  r  r!  r=  r   r  r   r  rS  r  r]  rb  r   r   r  rT  r  r6  rM   r   )rk  r  r9  
len_shiftslen_dimstail_shifts	tail_dimsfirst_dim_rolledr  r2  r  rY  s               r7  r   r   d  s     "16400Dfh'' dH%% w 	wwyyA~~wwyyuuww!||D		ALd1gLLL
 
 	
 VJ4yyHQ(a--??2333 q==Z1__:emA..::??HHH!![Z[[QY[[   !||||QRRjH	 :a&)tAw??z*KCCC q'C73<DF1I%E
,tAH
-
-
-C>>#uz%#+t<<===r9  r   rP  kc                    t          |          dk    rt          dt          |                     | j        dk     rt          d| j                   t          j        | j        |          }|d         |d         k    r!t          d|d          d|d                    |dz  }|dk    r<t          j        t          j        | |d         f          |d         |d                   S |dk    rt          j        | |          S |d	k    r<t          j        t          j        | |d         f          |d         |d                   S |                     t
          j	        
          S )z0Reference implementation of :func:`torch.rot90`.r)  z2expected total rotation dims == 2, but got dims = z/expected total dims >= 2, but got total dims = r   rP  z7expected rotation dims to be different, but got dim0 = z and dim1 = rR  r  r  )
rS  r]  r!  rv  r  rb  r   r   r   r.  )rk  r  r9  s      r7  r   r     s`    4yyA~~LTLL
 
 	
 	vzzUQVUUVVV "16400DAw$q'dd1gdd[_`a[bdd
 
 	
 	
AAAvvuz!d1gZ88$q'47KKK	
az!T"""	
auz!d1gZ88$q'47KKKwwU%<w===r9  c                     | d         j         }t          dt          |                     D ]1}| |         j         |k    sJ d| d| |         j          d|             2d S )Nr   rP  z4stack expects each tensor to be equal size, but got z at entry 0 and z
 at entry )rT  r`  rS  )r  entry_shaper  s      r7  _check_stack_inputsr    s    !*"K1c'll## 
 
qz;...3; 3 31:#3 3/03 3 /...
 
r9  c                    t          |           dk    s
J d            t          j        | d         j        dz   |          | d         j        k     rvt	          |            t          | d         j                  }|                    t          |                      t          j	        |           }|
                    |          S t          j	        fd| D             |          S )Nr   z$stack expects a non-empty TensorListrP  c                 :    g | ]}|                               S rM  )r  )rI  r   wrapped_dims     r7  r  zstack.<locals>.<listcomp>  s%    @@@1akk+..@@@r9  )rS  rv  r  r!  r  r;  rT  insertrb  r   r  )r  r  result_sizesr  r  s       @r7  r   r     s     w<<!C(1)<cBBKWQZ_$$G$$$GAJ,--KW666i--xx%%% 9@@@@@@@#FFFr9  c           
      P   |p| j         }t          j        |          }t          | |          }|                                 dk    rt          |          }n$t          ||d          }t          ||z
            }t          t          |t          ||d                    |          S )Nr   Tr  )	r  rv  r  r)   r  rA   r   r   r   )rk  r  r  r  r  r  a_expa_maxs           r7  ro   ro     s     #AGL3LAA	 $5	6	6BwwyyA~~BRd+++BJ"E3uc488899<  r9  c                     t          j        t          |           dk    d            t          |  }|d         j        dk    rt          |d          S t          |d          S )Nr   c                      dS )Nz%hstack expects a non-empty TensorListrM  rM  r9  r7  rO  zhstack.<locals>.<lambda>  r  r9  rP  )rb  rc  rS  r   r!  r   r  s     r7  r   r     s`    	LW!#R#RSSS '*Oq!##?A&&&"""r9  c                     t          j        t          |           dk    d            t          |  }t	          |d          S )Nr   c                      dS )Nz%vstack expects a non-empty TensorListrM  rM  r9  r7  rO  zvstack.<locals>.<lambda>  r  r9  )rb  rc  rS  r   r   r  s     r7  r  r    r  r9  r7  c                 B   t          j        | j        |          }t          j        t          |          dk    d            |                     t          | j        d |                   t          |          z   t          | j        |dz   d                    z             S )Nr   c                      dS )Nz"unflatten: sizes must be non-emptyrM  rM  r9  r7  rO  zunflatten.<locals>.<lambda>  s    *N r9  rP  )	rv  r  r!  rb  rc  rS  r  r[  rT  )rk  r  r7  s      r7  r  r    s    

 
-
-C	LUq"N"NOOO66%&&u5agcAgii>P8Q8QQRRRr9  r   c                 *   t          j        | j                  t          j        t          | j                  dk    d            | j                 dk    rdS t          fdt          j        | | j                           D                       S )Nr   c                      dS )Nz5Dimension specified as 0 but tensor has no dimensionsrM  rM  r9  r7  rO  zunbind.<locals>.<lambda>  s    G r9  rM  c              3   B   K   | ]}t          j        |          V  d S rF  )rb  r   )rI  sr  s     r7  rK  zunbind.<locals>.<genexpr>	  s@       
 
&'EM!S!!
 
 
 
 
 
r9  )	rv  r  r!  rb  _check_indexrS  rT  r[  r   )r   r  s    `r7  r  r    s    

 
-
-C	AGqGG   	ws|qr 
 
 
 
+0+=as+S+S
 
 
 
 
 	
r9  r
  r  c                 l    |                      t          j                                      |||          S r  )r   rb  r.  rL   )rJ  r  r
  r  s       r7  rK   rK     s2    77!8799EEUF  r9  c                     t          j        | j        |          }t          j        j        dk    fd           | j        dk    r|                     d          n| }t          d           f|z  fz   }|||<   | S )NrP  c                      d j          dS Nz(Index should have dimension 1 or 0 (got r   rz  r
  s   r7  rO  zindex_copy_.<locals>.<lambda>      H5:HHH r9  r   )rv  r  r!  rb  rc  r  slice)rJ  r  r
  r  rr  rY  s     `   r7  rL   rL     s    

!!&#
.
.C	L
aHHHH  
 &A++A1A;;.3
%
)CAcFHr9  c                 *    t          | |||d          S )NFinplace_index_fillrJ  r  r
  r  s       r7  rN   rN   "  s    
 q#ueU;;;;r9  c                 *    t          | |||d          S )NTr  r  r  s       r7  rO   rO   *  s     q#ueT::::r9  r  c                $   t          j        j        dk    fd           t          t                    r"t          j        j        dk    fd           n't          j        | j        | j        | j                  | j        dk    }|r| 	                    d          n| }t          |j                  }                                ||<                       |          |rt          j        nt           j        } |||          }	|r| S |r'|	                    d                                          }	|	                                |                                 k    r+t          j        |           }
|
                    |	           |
}	|	S )NrP  c                      d j          dS r  rz  r  s   r7  rO  z_index_fill.<locals>.<lambda>;  r  r9  r   c                      d j          dS )Nz<Only supports 0-dimensional value tensor. Got a tensor with r  rz  r  s   r7  rO  z_index_fill.<locals>.<lambda>@  s     :!&: : : r9  )r  r  r6  )rb  rc  r!  r=  r%   r&  r  r  r6  r  r;  rT  r  r   rG  rL   rK   r   r   r/  r  copy_)rJ  r  r
  r  r  zero_dimrr  rT  rK   r  new_outs     ``       r7  r  r  1  s    
L
aHHHH   %$$ 
J!O: : : :	
 	
 	
 	
 #'88	
 
 
 v{H")AAMMEE#JLLE'.D##E4DJ
*QUE
*
*C  	)++a..&&((C::<<188::%%&q))GMM#C
r9  c                p    |                      t          j                                      ||||          S )Nr  rK  )r   rb  r.  
index_add_)rJ  r  r
  r  rL  s        r7  rJ   rJ   b  s?     77!8799DD	 E   r9  c                    t          j        | j        |          }t          j        j        dk    fd           j        dk    r                    d          | j        dk    r<t          j        |                               d|                                         S t          d           f|z  fz   }| |         S )NrP  c                      d j          dS r  rz  r  s   r7  rO  zindex_select.<locals>.<lambda>z  r  r9  r   )
rv  r  r!  rb  rc  r  r  rK   r   r  )rJ  r  r
  rY  s     ` r7  rM   rM   t  s     
!!&#
.
.C	L
aHHHH   zQ""v{{ ""--aE8J8JKKK;;.3
%
)CS6Mr9  c                     ddl m |Vt          d t           j                  D                       }|rt          j         |          nt          j                   S  j        }t          j
        ||          }t          |t                    r|fn|}|dk    r/t          |          dk    s|dk    sJ t          j                   S t           fd|D                       }t          |          dk    rt          j                   S t          |          dk    rt          j         |          S t          |          }t          |d          }|D ]}t           |            S )	Nr   r  c              3   ,   K   | ]\  }}|d k    |V  dS rI  rM  )rI  rY  r2  s      r7  rK  zsqueeze.<locals>.<genexpr>  s*      JJYS$		S				JJr9  r  c              3   P   K   | ] } j         |         d k              |V  !dS rI  r  )rI  drk  rC  s     r7  rK  zsqueeze.<locals>.<genexpr>  s<      DDqNN171:?$C$CDDDDDDDr9  rP  T)r  )rZ  rC  r[  r_  rT  r  r   rN  r!  rv  r  r=  r   rS  r;  r  )rk  r  r9  r!  	dims_listr  rC  s   `     @r7  r   r     sv   DDDDDD
{JJ)AG*<*<JJJJJ)-Cu}Q%%%5=3C3CC6D

!$
,
,CS))2C66sDqyy4yyA~~-}Q DDDDDDDDDDDD
4yyA~~}Q
4yyA~~}Q%%%T

Iy$///I  AqMMHr9  split_sizesc                 $    t          t                              D ]}t          j        |         d            t          j        t
          t          j                   j                 k     fd           g } 	                                }D ]w}t           j                  }||<   |                                         |                                 |                     |                                          |z  z   }x|S )Nc                      dS )NzCsplit_with_sizes expects split_sizes have only non-negative entriesrM  rM  r9  r7  rO  z"split_with_sizes.<locals>.<lambda>  s    Y r9  c                  N    dt          j                   dj                   S )NzSplit sizes add up to z but got the tensor's size of )r3  r   rT  )r  r  r   s   r7  rO  z"split_with_sizes.<locals>.<lambda>  s,    sk)B)Bssbfblmpbqss r9  )r`  rS  rb  _check_is_sizer  ra  r3  r   rT  r4  r;  r  r   r/  )r  r   r  r  splitsrt  
split_sizer  s   ```     r7  r   r     s    3{##$$ 
 
NYY	
 	
 	
 	
 
[!!TZ_4ssssss   F  ""F! : :
$$	#	# 	dooiGGHHH$++--,z99Mr9  indices_or_sectionsc                    t          j        | j        |          }| j        dk    rd}t          |          t	          |t
                    rW|j        j        dk    sd|j         }t          |          |j        t          j
        k    rd|j         }t          |          t	          |t                    s t	          |t
                    r|j        dk    rt	          |t                    r|n|                                }|dk    rd| }t          |          | j        |         }t          j        ||z            }||z  }g }	t#          |          D ]$}
|
|k     r|dz   n|}|	                    |           %t'          t(                              | |	|                    S |t	          |t
                    r9|j        dk    rd	|j         d
}t          |          |                                dgt/                    z   | j        |         gz   fdt#          t1                    dz
            D             }	t'          t(                              | |	|                    S )Nr   zXtensor_split: received a rank zero tensor, but expected a tensor of rank one or greater!rm  z\tensor_split: if indices_or_sections is a tensor it must be on the CPU, but received one on zgtensor_split: if indices_or_sections is a tensor it must have long dtype,  but received one with dtype zAtensor_split: number of sections must be greater than 0, but was rP  r  zntensor_split: non-scalar indices_or_sections tensors must have only one dimension, but received a tensor with r>  c                 8    g | ]}|d z            |         z
  S r  rM  )rI  r  indicess     r7  r  z tensor_split.<locals>.<listcomp>  s*    TTTqwq1u~
2TTTr9  )rv  r  r!  ra  r=  r%   r6  r4  r  rb  longr   r   r   rT  r  rG   r`  r  r[  r  r   tolistr;  rS  )rk  r  r  _dimr  sectionsr  min_split_sizenum_splits_one_extrar   	split_idxr  r  s               @r7  r   r     s   
 !!&#..Dv{{hoo %z22 "").%77D':'AD D  S//!$
22L0C0IL L  S//! %w// *F&
33*F8K8PTU8U8U -v66,$))++ 	 q==`V^``CS//!74=Hx$788'(2x 	+ 	+I  444 ""# 
 z****T**1kt*DDEEE &):66 	3"'1,,X2E2JX X X  !oo%)0022G#W%7TTTTE#g,,QRBR<S<STTTT**1kt*DDEEEr9  c                     t          j         j        dk     fd            j        dk    rdndt          t                    rEt          j        dk    o j                 z  dk     fd           t                     S t          j        t          t          t          f          fd           }t           |          S )NrP  c                  8    dt           j                  z   dz   S )NzPtorch.hsplit requires a tensor with at least 1 dimension, but got a tensor with  dimensions!rx  r!  r  s   r7  rO  zhsplit.<locals>.<lambda>  #    ^!&kk r9  r   c                      dt                    z   dz   t           j                           z   dz   t                    z   dz   S )Nz0torch.hsplit attempted to split along dimension z , but the size of the dimension $ is not divisible by the split_size ru  r*  )rk  r  r  s   r7  rO  zhsplit.<locals>.<lambda>  s]    Bc((45 agcl##$ 9	9
 j//"  r9  c                  (    dt                      S )Nzhsplit(): received an invalid combination of arguments. Expected indices_or_sections to be of type int, list of ints or tuple of ints but got type r3  r  s   r7  rO  zhsplit.<locals>.<lambda>+  #    8 !4558 8 r9  
rb  rc  r!  r=  r   rT  r   _check_typer;  r[  )rk  r  r   r  r  s   `` @@r7  r   r     s    
L	!	
 	
 	
 	
   v{{!!C%w// 0(
1_?
!:a!?     	
 	
 	
 Az3///	&u66	
 	
 	
 	
   &K;,,,r9  c                     t          j         j        dk     fd           t          t                    rDt          j        dk    o j        d         z  dk     fd           t           d          S t          j        t          t          t          f          fd           }t           |d          S )Nr)  c                  8    dt           j                  z   dz   S )NzPtorch.vsplit requires a tensor with at least 2 dimension, but got a tensor with r  r  r  s   r7  rO  zvsplit.<locals>.<lambda><  r  r9  r   c                  ,    d j         d          d dS )NzQtorch.vsplit attempted to split along dimension 0, but the size of the dimension r   r  ru  r  )rk  r  s   r7  rO  zvsplit.<locals>.<lambda>F  s4    71:  	   r9  c                  (    dt                      S )Nzvsplit(): received an invalid combination of arguments. Expected indices_or_sections to be of type int, list of ints or tuple of ints but got type r3  r  s   r7  rO  zvsplit.<locals>.<lambda>S  r  r9  r  )rk  r  r   r  s   `` @r7  r
  r
  7  s    
L	!	
 	
 	
 	
   %w// .(
1_=j!8A!=    
	
 
	
 
	
 Az1---	&u66	
 	
 	
 	
   &K;***r9  rt  c                     |                                  t          j        dv fd           dk    rt          j        | |          S t          j        | |          S )N)rP  r)  c                      d  dS )Nz'diag(): Supports 1D or 2D tensors. Got DrM  rz  s   r7  rO  zdiag.<locals>.<lambda>f  s     Q$ Q Q Q r9  rP  )r  rb  rc  r   r   )r  rt  r!  s     @r7  r   r   ^  sj     88::D	LQQQQ   qyyf---"4000r9  r  dim2c                     t          j        |           }|                    |||          t          j        j        j        k    fd           t                     |S )Nc                  (    dj          d j          S )NzCexpected src to have a size equal to the diagonal of the input.Got z for a diagonal of shape r  )r   r  s   r7  rO  z"diagonal_scatter.<locals>.<lambda>{  s-     @y@ @37:@ @ r9  )rv  clone_preserve_stridesr   rb  rc  rT  r   )r  r  rt  r  r&  r  r   s    `    @r7  r   r   n  s     
&u
-
-C<<d++D	L
ci	@ 	@ 	@ 	@ 	@  
 D#Jr9  c                 z   |                                  }t          j        |          t          j        |          t          j        k    fd           |                                 }|dk    rRt          t          |                                          |                                          |z
            d          }nQt          t          |                                          |z   |                                                    d          }|dk    rG|dk    r!||| 	                                         z  z  }n ||| 	                                         z  z  }fdt          |                                           D             }|                    |           fdt          | 	                                          D             }|                    | 	                                         | 	                                         z              |                     |||          }	|	S )z4
    Reference implementation of torch.diagonal
    )rY  rankc                      d  d S Nz(diagonal dimensions cannot be identical r  rM  r  r&  s   r7  rO  zdiagonal.<locals>.<lambda>      WWWQUWW r9  r   c                 &    g | ]\  }}|fv|S rM  rM  rI  r  r  r  r&  s      r7  r  zdiagonal.<locals>.<listcomp>  s+    KKK41aQtTl5J5JQ5J5J5Jr9  c                 &    g | ]\  }}|fv|S rM  rM  r1  s      r7  r  zdiagonal.<locals>.<listcomp>  s+    OOOTQ4,9N9Nq9N9N9Nr9  )r2  r/  r4  )r  rv  r  rb  rc  r4  r^  r  r2  r/  r_  r  r   )
r  rt  r  r&  num_dimsr4  	diag_sizer7  r  r  s
     ``      r7  r   r     s    xxzzH!d:::D!d:::D	LWWWWW   ((**N{{DIIKK-tyy{{4/@6/IJJANN		DIIKK-6		D8IJJANN	1}}Q;;ft{{}}T':::NNft{{}}T':::NKKKKK9TYY[[11KKKE	LLOOOOOYt{{}}55OOOGNN4;;==&t)<<===__%_WWFMr9  rs  c                 
   | j         dz   }t          j        |          t          j        |          k    rc| }t          j        k    fd           |                     d          |dk    rt          | j                  }t          j	        |          |d<   t          j
        || j        | j        d          }|dk    r|| fn| |f}t          j        |d          } t          j	        |          z  |                                                   d          } t          j        | j        t          j        	          }t          j        ||z   | j        t          j        	          }	||	                    d          k    }
fd
t%          t'          | j                            D             }|
                    |          }
t          j        |
|                                           S )z6
    Reference implementation of torch.diag_embed
    rP  )r+  rY  c                      d  d S r-  rM  r.  s   r7  rO  zdiag_embed.<locals>.<lambda>  r/  r9  rU  r   Fr  r6  r  r	  r6  r  c                 $    g | ]}|fv rnd S r  rM  )rI  r  r  r&  r  s     r7  r  zdiag_embed.<locals>.<listcomp>  s+    TTT1aD$<//((QTTTr9  )r!  rv  r  rb  rc  r2  r;  rT  r3  r/   r(  r  r6  r   r  r   r  r?  r`  rS  r   mask_tensorr   )r   rt  r  r&  r+  t_shapezpaira_rangeb_rangecond
cond_shaper  s     ``        @r7  r   r     s    6A:D!t666D!t666D d{{4
d	LWWWWW  
 vvbzzH{{qw--l6**KqwqxuUUU!1vv!QId###HL((( 	
D!!"d++A l8AHEKHHHGl6!!(%+  G
 g''+++DTTTTTTc!'ll@S@STTTJ<<
##D T1%%00222r9  c                 T  	
 d | D             }t          j        d |D                       }|d         j        	g }d}t          |          D ]\  
t	          j                                        dk    
fd           t	          j        j        	k    	
fd           j        \  }}t	          j        ||f	j	                  }t	          j        |||z
  |z
  f	j	                  }|t	          j
        ||fd	          gz  }||z  }t	          j
        |d	          S )
z6
    Reference implementation of torch.block_diag
    c                 n    g | ]2}|                                 d k    r|                    d d          n|3S )rP  rU  )r  r  rI  r  s     r7  r  z(_block_diag_iterable.<locals>.<listcomp>  sJ       @Ffjjlla//ArV  r9  c              3   0   K   | ]}|j         d          V  dS rI  r  rD  s     r7  rK  z'_block_diag_iterable.<locals>.<genexpr>  s(      BBVaBBBBBBr9  r   r)  c                  :    d  d                                  dS )Nz5Input tensors must have 2 or fewer dimensions. Input z has r>  r	  )r  r  s   r7  rO  z&_block_diag_iterable.<locals>.<lambda>  s1     77 7#ZZ\\7 7 7 r9  c                  &    d  d dj          dS )NzCInput tensors must all be on the same device. Input 0 is on device z and input z is on device ra  r5  )r6  r  r  s   r7  rO  z&_block_diag_iterable.<locals>.<lambda>  s@     Y$*Y Y78Y YHNY Y Y r9  r8  rP  r	  )r3  r   r6  r_  rb  rc  r  rT  r(  r  r   )r  
tensors_2dncolsr  	col_startrowcolrl  rightr6  r  r  s            @@@r7  _block_diag_iterablerN    s    JQ  J LBBzBBBBBE]!FFIz**  	6JJLLA7 7 7 7 7	
 	
 	

 	MV#Y Y Y Y Y Y	
 	
 	

 <S{C+F&,OOO%)#c)*6
 
 
 	59dFE2:::;;S		9V####r9  c                       t          |           S )z
    This is used as an input to PythonRefInfo. `torch.block_diag`
    expects arguments splatted, but `aten.block_diag` expects only
    one argument that is a list of Tensors.
    )rN  r  s    r7  r   r     s      (((r9  r  c                    | j         dk     rt          d| j          d          t          |t                    r>|dk    s| j        d         |z  dk    r$t          dd| j        d          d| d	z             t          | |d          S )
Nr  zPtorch.dsplit requires a tensor with at least 3 dimension, but got a tensor with r  r   r)  z3torch.dsplit attempted to split along dimension 2, zbut the size of the dimension r  ru  )r!  r]  r=  r   rT  r   )rk  r  s     r7  r   r     s    vzzs_`_esss
 
 	
 (G$$ 
(a--171:;PTU;U;UAjqwqzjj_gjjjk
 
 	
 8Q'''r9  c                     | j         dk    rt          d| j          d          t          j        | d| j         dk     rdnd          S )Nr)  z7t() expects a tensor with <= 2 dimensions, but self is r%  r   rP  )r!  r]  rb  r   r  s    r7  r   r   #  sU     	vzzOafOOO
 
 	
 ?1aafqjja888r9  c                 d    t          j        | j        dv d            |                                 S )N)r   r)  c                      dS )NzcThe use of `x.T` on tensors of dimension other than 0 or 2 to reverse their shape is not supported.rM  rM  r9  r7  rO  zT.<locals>.<lambda>:  s    7 r9  )rb  rc  r!  r   r  s    r7  r   r   6  s9    	L	&	
 	
   3355Lr9  c                 *    t          j        |           S rF  )r  rN  r  s    r7  r   r   B  r  r9  r  c                 "   t          j        | j        ||f          \  }}| j        dk    s||k    rt          j                            |           S t          t          d| j                            }|||<   |||<   t          j	        | |          S )NrP  r   )
rv  r  r!  r  r   defaultr;  r`  rb  r   )rk  r  r  _dim0_dim1r6  s         r7  r   r   G  s    *16D$<@@LE5v{{ddllz!!!$$$a(())LLL=L)))r9  c                     t          | j        |                                 |||          \  }}|                     ||          S rF  )r  rT  r/  r   )r  r[  r2  r\  rT  r  s         r7  r  r  X  sB     .
DKKMM9dD NE7 ??5'***r9  c                 l    |                      |||                              t          j                  S r  )r  r   rb  r.  )r  r[  r2  r\  s       r7  r  r  b  s7     ;;y$--33- 4   r9  c                   |j         }t          j        ||          }|dk    r" | |                    d          d||          S |                    |dz             }t	          j        |j        |         |j                  }|                    d          |k    }t          ||z
  dz
            D ]}	|                    d          }t	          j	        |||          }
 | |
|||          S )Nr   )r  r  r  rP  r5  rU  )
r!  rv  r  r  rb  r  rT  r6  r`  r   )r2  initrk  r  r  r  r!  rgry  r  masked_as              r7  _cumsumprod_commonr_  j  s     6D

 s
+
+CqyytAKKNNC@@@@	C!GA	agcl18	4	4	4B<<??b D4#:>"" " "~~b!!{4D))H4cC8888r9  c                6    t          t          d| |||          S )Nr   r2  r\  rk  r  r  r  )r_  r   rk  r  r  r  s       r7  r   r     s     3Q!EsSSSSr9  c                6    t          t          d| |||          S )NrP  ra  )r_  r   rb  s       r7  r   r     s      4a1#UPSTTTTr9  c                 p    | j         dz   }t          j        ||          }t          j        | |f|          S )NrP  rz  )r!  rv  r  r  expand_dims)rk  r  r!  s      r7  r  r    s;     6A:D

 s
+
+CQT2222r9  c                 "    t          | g|R ddiS )Nr  Fr  rG  s     r7  r  r    s     <E<<<e<<<r9  c                 P    |                      |                                          S rF  )r  r2  r  s     r7  r  r    s    99UZZ\\"""r9  c                 "    t          | d          S )N)rU  )r   r  s    r7  r   r     s    1er9  r  c                     t          j         j        j        k     fd           t          j        t          j        j                  fd           |<t          j                             d          d                    d                    S t           j	                  }
                    |          ||<   t          j        |
                                          }t          |          }t          j	                  } 
                    |          ||<   t          j        | 
                                          }t           |          }t          j        |||          S )Nc                  *    d j          dj          dS )Nz]torch.take_along_dim(): input and indices should have the same number of dimensions, but got z dimensions for input, and z dimensions for indicesrz  )rk  r  s   r7  rO  z take_along_dim.<locals>.<lambda>  s0    5-.V5 5|5 5 5 r9  c                      d j          dS )Nz?torch.take_along_dim(): dtype of indices should be int but got z insteadr  )r  s   r7  rO  z take_along_dim.<locals>.<lambda>  s!    '}' ' ' r9  rU  r   )rb  rc  r!  rv  r  r  gatherr  r;  rT  r2  infer_size_shapesr   )rk  r  r  
self_sizesbroadcast_shapeindices_broadcastindices_sizesself_broadcasts   ``      r7  r   r     sW    
L	',	
 	
 	
 	
 	
   
Lw}--	
 	
 	
 	
   {|AFF2JJ7<<+;+;<<<!']]
!,,s++
31*gllnnMM(/BBW]++VVC[[c1-JJ%a99|NC1BCCCr9  r  r  r6  r  r  r  r  c           	         t          j        t           j        k    d            t          j        |          }t           j        k    rt          j        |          }n_t           j        k    rt          j        |          }n:t          j        t           j	        k    fd           t          j
        |          }t          j        ||| ||||          S )Nc                      dS )Nz8torch.empty: the Preserve memory format is not supportedrM  rM  r9  r7  rO  zempty.<locals>.<lambda>  s    J r9  c                      d  dS )Nz/torch.empty: received an unknown memory format ru  rM  r  s   r7  rO  zempty.<locals>.<lambda>  s    VmVVV r9  r  r  r6  r  r  )rb  rc  r  rv  rK  r.  r  channels_last_3d!make_channels_last_3d_strides_forchannels_last!make_channels_last_2d_strides_forr  )r  r  r6  r  r  r  rT  r  s        `  r7  r  r    s     
L..JJ  
 ,U33E///3E::	%0	0	09%@@U00VVVV	
 	
 	
 9%@@#   r9  c                 4    t          j        | ||||          S )Nr7  )r  r  )rT  physical_layoutr  r  r6  r  r  s          r7  r  r    s-     #   r9  r  r  r6  r  c                v    || j         n|}|| j        n|}|| j        n|}t          j        |||||          S )Nr  r6  r  r  )r  r  r6  rb  r  )rk  r2  r  r  r6  r  s         r7  r  r    sY     }AGG%EQXXVFQXXVF;   r9  c                x    || j         n|}|| j        n|}|| j        n|}t          j        ||||||          S )zD
    Reference implementation of torch.Tensor.new_empty_strided
    Nr  )r  r  r6  rb  r  )rk  r2  r/  r  r  r6  r  s          r7  r  r  .  s]      }AGG%EQXXVFQXXVF   r9  rw  c           	          t          j        |          }| t          j                    } t          j        || t          j        k    rdnd| ||||          S NFr   rw  rv  rK  rb  r  r  r{  r  r  r6  r  r  r2  s         r7  r(  r(  L  se     +D11D}')):%*$$!#   r9  c          	          || j         n|}|| j        n|}|| j        n|}t          j        ||p| j         t          j        k    rdnd|||||          S r  r  r  r6  rb  r  r{  rk  r2  r  r  r6  r  r  s          r7  r"  r"  f  sv     }AGG%EQXXVFQXXVF:"17uz11q#   r9  c           	          t          j        |          }| t          j                    } t          j        || t          j        k    rdnd| ||||          S NTrP  rw  r  r  s         r7  r#  r#    se     +D11D}')):###   r9  c          	          || j         n|}|| j        n|}|| j        n|}t          j        ||p| j         t          j        k    rdnd|||||          S r  r  r  s          r7  r!  r!    sv     }AGG%EQXXVFQXXVF:!!'ej00a#   r9  
fill_valuec                x    || j         n|}|| j        n|}|| j        n|}t          j        ||||||          S )Nr~  )r  r  r6  rb  r  )rk  r2  r  r  r  r6  r  s          r7  r   r     s\     }AGG%EQXXVFQXXVF:   r9  c                     |S rF  rM  )r2  r  r  s      r7  	empty_outr    s	     Jr9  )r  r6  r  r  r  r  c          	         || j         n|}|| j        n|}|| j        n|}|t          j        k    r t          j        | j        ||||||          S t          j        |           }t          j	        | j        ||||||          S )Nrs  rw  )
r  r  r6  rb  r  r  rT  rv  3compute_elementwise_output_logical_to_physical_permr  )rk  r  r6  r  r  r  r  logical_to_physical_perms           r7  r  r    s     }AGG%EQXXVFQXXVF---{G'!'
 
 
 	
 	A!DD  	 #   r9  r  c                    t          j        |           t          j        |           t          j        t          j        |                    }t           t                    rJ t          t                    rJ t          t                    rJ  d t          j        dk    d            dk    rt          j         k    d            n dk     rt          j         k    d            d }t          j         |           o
 |           fd           t          j         |          fd            f}	t          j
        d |	D                       }
|!|
rt          j        nt          j                    }t          j        |          }|s|
r-t                     }t                    }t                    }|t          j        k    s|
r6t          |dk              t          |dk               z
  }||z
  |z   |z
  |z  }nt!          j         z
  z            }|rt%          j        ||||||	          S t%          j        |dd
t          j        |d	          }|
rt          j        nt          j        ||          }t-          ||          } |z  z   }t-          ||          }|r|                    d           |S )Nr   c                      dS )Nzstep must be nonzerorM  rM  r9  r7  rO  zarange.<locals>.<lambda>  s    $: r9  c                      dS Nz7upper bound and lower bound inconsistent with step signrM  rM  r9  r7  rO  zarange.<locals>.<lambda>!      M r9  c                      dS r  rM  rM  r9  r7  rO  zarange.<locals>.<lambda>&  r  r9  c                 V    t          | t                     pt          j        |           S rF  )r=  r   r  rP   rN  s    r7  	is_finitezarange.<locals>.is_finite)  s%    a!5666J$-:J:JJr9  c                      d d  S )Nzunsupported range: r  rM  )r  r  s   r7  rO  zarange.<locals>.<lambda>.  s    6e6666 r9  c                      d  S )Nzstep must be finite but got rM  r  s   r7  rO  zarange.<locals>.<lambda>2  s    5t55 r9  c              3   @   K   | ]}t          |t                    V  d S rF  rG  rI  r  s     r7  rK  zarange.<locals>.<genexpr>6  s,      IIS
3 8 8IIIIIIr9  )r  r\  r  r6  r  rP  FT)rv  check_layoutcheck_pin_memoryrb  r6  device_or_defaultr=  r  rc  r3  r   r?  r  r  r   r{  r  r7   r  iotar  get_acc_typer)   requires_grad_)r  r  r\  r  r  r6  r  r  r  r|  integer_args
is_integerxstartxendxstepri   r  r
  r  r  s   ```                 r7  r  r    sH    
v	:&&&\%1&99::F%)))))#w'''''$((((( {	L::;;;axx5LMM	
 	
 	
 	
 
5LMM	
 	
 	

K K K 
L	%+YYs^^66666   
L	$5555  
 3D<IIDIIIIIL}+J1H1J1J'..J \ s|| |519ooUQY/-%'#-%7C%K4/00 
z'
 
 
 	
 Jk  E #I

(:5&(I(I  $E+<==ETE\!F$VU33F $d###Mr9  )r  r  r  c                    | |g}t          |t                    r|                     d|          }n|                    |           t          |t                    sJ |                                dk    }t          j        ||dz
  |          }t          j        |||           }||| z
  z  |z   }t          j	        t          |  }|                                |k    rt          j        ||          }t          ||          S )NrM  rf  rP  )r=  r   r   r  rG  r/   rb  r   rv  "compute_elementwise_output_stridesr}  r/  r  copy_stridedrA  )	r  r  r  r  ry  coeffbaser@  r/  s	            r7  rW   rW   i  s     S\F&&!! F++fff%%%%% ::<<3DKfqj&11E;tS%((DcEk"T)F57G7PQF}}&  #FF33'777r9  )r  r6  r  r  r  stepsc          
      `    t           t                    rFt          j                                         dk    d            t           t          j                   t          t                    rFt          j                                        dk    d            t          t          j                  t          j        d  fD                       rVt          j
        t          j                              nAt          j        t          j                  fd           npt          j                    t          t          j                  sJ t          j        t          t                     fd           t          t                    sJ t          j        dk    d            ||||d}dk    rt          j        dd
i|S dk    rjt           t                    r?t          j        ffd
i|}	t          j        j        j                            |	           S t          j        f fd
i|S t          j        dfi |}
t          j                  st          j                  rt          j        n}t          j        |
t6          j        |          \  }}t;          t
          |          } z
  dz
  z  }t          j        |
dz  k      | ||
          z  z   | |dz
  |
z
            z  z
            }t          |          S )Nr   c                      dS Nz:linspace only supports 0-dimensional start and end tensorsrM  rM  r9  r7  rO  zlinspace.<locals>.<lambda>  r}  r9  c                      dS r  rM  rM  r9  r7  rO  zlinspace.<locals>.<lambda>  r}  r9  c              3   @   K   | ]}t          |t                    V  d S rF  r=  r  r  s     r7  rK  zlinspace.<locals>.<genexpr>  ,      LLJsG,,LLLLLLr9  c                      d  d S )Nzlinspace(): inferred dtype z& can't be safely cast to passed dtype rM  )default_complex_dtyper  s   r7  rO  zlinspace.<locals>.<lambda>  s    z6Kzzsxzz r9  c                      dt                    j         dt                     j         dt                    j         dS )Nz4received an invalid combination of arguments - got (r  r   )r4  r  )r  r  r  s   r7  rO  zlinspace.<locals>.<lambda>  sY     Hu++H Hs)),H H04U0DH H H r9  c                      dS )Nz$number of steps must be non-negativerM  rM  r9  r7  rO  zlinspace.<locals>.<lambda>  s    %K r9  )r  r6  r  r  r  r  rP  r  r)  )r  r   )r=  r&   rb  rc  r  r)   rj  r3  r   rv  r6  r  r  r  r  r   r  r  opsr  r  rV  r  r  r  r?  r#  r"   r@  r   r   )r  r  r  r  r6  r  r  r  factory_kwargsempty_tensorr]  	dtype_redr  r  cast_rgr\  r  r  s   ````             @r7  r  r    s    %(( >IIKK1PP	
 	
 	
 (u}==#~&& :GGIINPP	
 	
 	
 &c5=99|LLU8KLLLLL 3 % A#%%!
 !
 =)EEL&u--zzzzz   
 2022eU[))))) 
5'""	H 	H 	H 	H 	H 	H  
 eW%%%%%	L!KKLLL  &	 N zzzAAA.AAAzze^,, 	N ;xOOuOOOL9>&..|UCCC:uhMMUMnMMM 
a	1	1.	1	1B
 "5))	-2-CE-J-J	 
 !1
&+Y q -5FGGGG %KEAI&D
+
UQYwwr{{""dWWeai2-.... C
 #3...r9  r  r  c          
         |t          j                    }t          j                            |          rt          | t                    rt          |           } nQt          | t                    r<t          j	        | 
                                dk    d            t          | |          } t          |t                    rt          |          }nQt          |t                    r<t          j	        |
                                dk    d            t          ||          }t          j        d | ||fD                       r*t          j        t          j                              }	|	}d }
nt           j        }
t          |t                     rJ |dk     rt"          t          j        | |||
||||          }t          t          j        ||          |          S )Nr   c                      dS Nz:logspace only supports 0-dimensional start and end tensorsrM  rM  r9  r7  rO  zlogspace.<locals>.<lambda>      T r9  c                      dS r  rM  rM  r9  r7  rO  zlogspace.<locals>.<lambda>  r  r9  c              3   @   K   | ]}t          |t                    V  d S rF  r  r  s     r7  rK  zlogspace.<locals>.<genexpr>  r  r9  rw  )rb  r  r  rv  r  r=  r   r   r&   rc  r  r)   r3  r   r6  rj  r  r  r  r   )r  r  r  r  r  r6  r  r  r  r  _dtyperets               r7  r  r    s    }')) {##E** 6eY'' 	:ENNEE~.. 	:L		q TT   ,E599Ec9%% 	6#,,CC^,, 	6L		QTT   *#u55C|LLU8KLLLLL  % A#%%!
 !
 &$(((((axx!!
.#	 	 	C #59T3#7#7???r9  indexingc                     d S rF  rM  )r  r  s     r7  r   r         Dr9  c                     d S rF  rM  )r  r  s     r7  r   r   $  r  r9  c                     t          |d         t          t          f          r*t          |          dk    sJ t          |d                   }t	          j        t          j        d |D                       d            t	          j        t          |          dk    d            t          t          |          dz
            D ]h}t	          j        ||         j	        ||dz            j	        k    d            t	          j        ||         j
        ||dz            j
        k    d            id} d	k    r1t          |          d
k    }|r|d         |d         g|d
d          R }nt	          j         dk     fd           g }|D ]lt          t                    sJ t	          j        j        dk    p
j        dk    fd           |                                                               mg }t          |          D ]f\  }t          t                    sJ j        dk    r                    d          |                    t#          j        ||f                     g|r|d         |d         c|d<   |d<   |S )Nr   rP  c              3   @   K   | ]}t          |t                    V  d S rF  r=  r%   r  s     r7  rK  zmeshgrid.<locals>.<genexpr>6  s,      @@1Z:..@@@@@@r9  c                      dS )Nz)meshgrid expects its inputs to be tensorsrM  rM  r9  r7  rO  zmeshgrid.<locals>.<lambda>7  r  r9  c                      dS )Nz'meshgrid expects a non-empty TensorListrM  rM  r9  r7  rO  zmeshgrid.<locals>.<lambda>:  s    +T r9  c                      dS )Nz3meshgrid expects all tensors to have the same dtyperM  rM  r9  r7  rO  zmeshgrid.<locals>.<lambda>?  s    I r9  c                      dS )Nz4meshgrid expects all tensors to have the same devicerM  rM  r9  r7  rO  zmeshgrid.<locals>.<lambda>C  s    J r9  Fxyr)  ijc                      d  S )NzDtorch.meshgrid: indexing must be one of "xy" or "ij", but received: rM  )r  s   r7  rO  zmeshgrid.<locals>.<lambda>N  s    ,!), , r9  c                      d  S )NzEtorch.meshgrid: Expected 0D or 1D tensor in the tensor list but got: rM  )r   s   r7  rO  zmeshgrid.<locals>.<lambda>Y  s    _\]__ r9  r  )r=  r;  r[  rS  rb  rc  r3  r   r`  r  r6  r%   r!  r  r  r_  r  r  r$  )r  r  r  swap_first_and_second_tensorsresult_shapegridsr   s   `     @r7  r   r   )  s    '!*tUm,, $7||q    
##	L@@@@@@@;;  
 
LW!#T#TUUU3w<<!#$$ 
 
AJA 44II	
 	
 	
 	AJQ!66JJ	
 	
 	
 	

 %*!4(+G(9%( 	=qz71:<<<G   	
 	
 	
 !L ' '!Z(((((FaK&16Q;____	
 	
 	
 	AGGII&&&&"$E'"" D D1!Z(((((6Q;;tAU+A|aTBBCCCC$ 0"1XuQxa%(Lr9  sourcedestinationc                    t                    t          u rft                    t          u rft          j        t	                    t	                    k    fd           | j        }t          t          j        |                    }t          t          j        |                    }t          |          }t          |          }t          j        t	          |          t	          |          k    fd           t          j        t	          |          t	          |          k    fd           t          t          ||                    }g }	d}
t          |          D ]V}|                    |          }||	                    |           /|
|v r	|
dz  }
|
|v 	|	                    |
           |
dz  }
Wt          j        | t          |	                    }|S )z3
    Reference implementation of torch.movedim
    c                  J    dt                     dt                      dS )Nz5movedim: Invalid source or destination dims: source (z> dims) should contain the same number of dims as destination (z dims)r;  )r  r  s   r7  rO  zmovedim.<locals>.<lambda>}  s@    AVA A'+K'8'8A A A r9  )r+  r  c                  *    dt                      dS )Nz#movedim: repeated dim in `source` (r   r  )r  s   r7  rO  zmovedim.<locals>.<lambda>  s    Ed6llEEE r9  c                  *    dt                      dS )Nz(movedim: repeated dim in `destination` (r   r  )r  s   r7  rO  zmovedim.<locals>.<lambda>  s    O4;L;LOOO r9  r   NrP  )r4  r  rb  rc  rS  r!  r[  rv  r  setdictrq  r`  r  r  r   )r  r  r  r+  ssdssssdssrs  r9  sidir  r  s    ``           r7  r   r   l  s    F||sKC"n 
LFs;'''	
 	
 	
 	
 	
   :D	u&D&AAA	B	BB	u&D+FFF	G	GB
b''C
b''C 
LB3s88EEEE   
LB3s88OOOO  
 	SR[[AD	
BDkk  EE"II=KKNNNN ))a ))KKOOO!GBB]5%++..FMr9  )r  r6  r  r  r  r  c                
   t          j        |           t          j        |           t          j        |           } |t	          j                    n|}|t	          j        d          n|}t          j        | ||||          S )Nrm  r7  )	rv  r  r  rK  rb  r  r6  r  r  )rT  r  r  r6  r  r  r  s          r7  r  r    s     
v	:&&&,U33E).E#%%%EE$*NU\%   F#   r9  nrs  c                     t          j         dk     fd           t          j        dk    fd           t          j         t           j        |d          }t          j        t           j        |d          }|                    d          |k    }	|t           j        u r|	S t          j        d||||d	          }
t          j        |	|
d          S )
z/
    Reference implementation of torch.eye
    Nr   c                      d  S )Nz%n must be greater or equal to 0, got rM  )r  s   r7  rO  zeye.<locals>.<lambda>      !L!L!L r9  c                      d  S )Nz%m must be greater or equal to 0, got rM  )rs  s   r7  rO  zeye.<locals>.<lambda>  r  r9  Fr7  rU  r  rw  )rb  rc  r  r?  r  r{  r#  r   )r  rs  r  r  r6  r  r  range_nrange_mr@  ones   ``         r7  r  r    s     	y	LaLLLLMMM	LaLLLLMMMl1EKeTTTGl1EKeTTTGR  G+D
j!
 
 
 {4a(((r9  c                    t          j        |           t          j        |           ||n t          j        t	          |                    }||nt          j        d          }t          | |||||          }t          j        ||          S )Nrm  rw  )	rv  r  r  type_to_dtyper4  rb  r6  r  rE   )rT  r  r  r  r6  r  r  es           r7  r  r    s     
v	:&&&&EEE,?Z@P@P,Q,QE)VVu|E/B/BF#	 	 	A :a$$$r9  r  r  r6  r  r  r  c          	      X    t          j        | ||||||          }t          ||          S )Nr  )rb  r  rE   )	rk  r  r  r  r6  r  r  r  r  s	            r7  r  r    sB     		##	 	 	A :r9  c          
      l    t          j        | |p| j        t           j        k    rdnd||||||          S )NFr   r  rb  r  r  r{  rk  r  r  r6  r  r  r  s          r7  r)  r)  &  sL     ?	"17uz11q##	 	 	 	r9  c          
      l    t          j        | |p| j        t           j        k    rdnd||||||          S )NTrP  r  r  r  s          r7  r$  r$  >  sL     ?	!!'ej00a##	 	 	 	r9  c                     t          j        |           t          j        |          }t          j        |           } t          j        |          }t          j        |dd| ||          S )Nr  re  )r   r   r  r6  r  )rv  r  rK  dtype_or_defaultr  r  ra   )r  r6  r  r  r  rT  r  s          r7  r%  r%  V  sp     
:&&&-e44F"5))E$V,,F<#   r9  c                    t          j        |           t          j        |           ||n t          j        t	          |                     }||nt          j        d          }t          j        | ||          S )Nrm  r\  )	rv  r  r  r  r4  rb  r6  r  r&  )rk  r  r  r6  r  s        r7  r&  r&  q  su     
v	:&&&&EEE,?Q,H,HE)VVu|E/B/BFqf====r9  re  lowhighc                T   t          j        |            t          |t                    sJ t          |t                    sJ t	          |          }t	          |          }t          |t
          j                  sJ t          j        |          }t          j	        | ||||          S )N)r  r  r  r6  )
rv  r  r=  r   r   rb  r  canonicalize_devicer  _uniform_helper)rT  r  r  r  r6  s        r7  r  r    s     
c6"""""dF#####
C..CT??DeU[)))))&v..F Cd%PVWWWWr9  ry  c                    t          j        | j                  t          |t                    rt          |          }n|j        t          j        dk    fd           | j	        j        dddt          j
                                        dfv o|j	        j        dk    }t          j        |p|j	        | j	        k    d            t          j        |j                  }|t          u r+t          j        t          j        |          fd	           t          || j                  }t          j        |||           }|                                S )
Nr   c                      d  dS )Nz@only supports a 0-dimensional value tensor, but got tensor with z
 dimensionrM  )
value_ndims   r7  rO  zmasked_fill.<locals>.<lambda>  s    mWammm r9  cudaxpumpsr2  rm  c                      dS )Nz,Expected `value` to be on same device as `a`rM  rM  r9  r7  rO  zmasked_fill.<locals>.<lambda>  s    B r9  c                      d  dS )Nzcould not convert to type z without overflowrM  )r  s   r7  rO  zmasked_fill.<locals>.<lambda>  s    OOOO r9  )rv  r   r  r=  r   r4  r!  rb  rc  r6  _C_get_privateuse1_backend_namer  r   r)   r   r   )rk  ry  r  
value_typeis_cpu_scalarr  r  r  s         @@r7  r   r     s^    %ag..K%   6%[[

 Z
!Ommmm	
 	
 	
 HMueh&L&L&N&NPUVW +!U* 	
 	5U\QX5BB	
 	
 	
 (55
W
 	'
K@@OOOO	
 	
 	
 $E1733ED%##A <<>>r9  c                 \    t          j        | ||          }|                     |           | S rF  )rb  r   r  )rk  ry  r  rl  s       r7  r   r     s,     	!T5))AGGAJJJHr9  c                     t          d| |||           t          t          j        t          j        | ||||                                                              S )z4
    Reference implementation of torch.allclose
    ztorch.allcloser  )r  r  r  )r  r{  rb  r   r   r   )rk  rl  r  r  r  s        r7  r*  r*    s^     +qADtLLLL	%-14diPPPQQVVXX  r9  c                 X   t          j        | |d           t          j        | |           | j        |j        k    rdS t	          | j        |j                  D ]\  }}||k    r dS |                                 dk    rdS t          t          t          | |                              S )NFr  r   T)
rv  r  check_same_dtyper!  rq  rT  r  r   r   r   )rk  rl  rJ  rr  s       r7  r+  r+    s    	Aq5AAAA	1a    	vuAGQW%%  16655  	wwyyA~~tBq!HHr9  fror  c                   |dk    r*|*t          |t                    st          |          dk    s|d}t          |t                    r|g}t          |t                    rG|!t	          t          | j                            }t          j        	                    | ||||          S t          j        
                    | ||||          S )Nr  r)  r  )r=  r   rS  rx  r[  r`  r!  rb  r?  matrix_normr@  )r  r  r  r  r  s        r7  r`   r`     s     	
U

z#s';';s3xx1}}	
#s e!S M ;ej))**C|''q#we'LLL|''q#we'LLLr9  c                     t          j        | j        dk    d            t          j        t          j        | d                    S )Nr)  c                      dS )Nz6expected a matrix, but got tensor with dim {self.ndim}rM  rM  r9  r7  rO  ztrace.<locals>.<lambda>  s     X r9  r   )rb  rc  r!  r   r   r  s    r7  rt   rt     sE     
L	QXX   9UZa(()))r9  c                      dt           t          t          f         dt           t          t          f         dt          f fd}|S )Nrk  rl  rm  c                      ||           S rF  rM  )rk  rl  base_ops     r7  ropz_make_r_binary_op.<locals>.rop  s     wq!}}r9  )r   r&   r    )r  r  s   ` r7  _make_r_binary_opr    sV    +,+, 
      Jr9  r   c                 t   t          j        | j        dk    d            | j        dd          \  }}t          j        || j                                      d          t          j        || j                                      d          z
  |k    }t          j        ||           	                                S )Nr)  c                      dS )Nz2triu: input tensor must have at least 2 dimensionsrM  rM  r9  r7  rO  ztriu.<locals>.<lambda>-      Q r9  rs  r5  rU  
rb  rc  r!  rT  r  r6  r  rv  r:  r   rk  r   hr  ry  s        r7  r  r  )       
L	!QQ   7233<DAqQqx(((22266
,q
*
*
*
4
4R
8
8	9	D T1%%00222r9  c                 t   t          j        | j        dk    d            | j        dd          \  }}t          j        || j                                      d          t          j        || j                                      d          z
  |k    }t          j        ||           	                                S )Nr)  c                      dS )Nz2tril: input tensor must have at least 2 dimensionsrM  rM  r9  r7  rO  ztril.<locals>.<lambda>>  r  r9  rs  r5  rU  r   r!  s        r7  r  r  :  r#  r9  rK  rL  c                 `   | dk    s|dk    rdS |dk    rt          |d|z             nt          | |z   dk              }t          dt          || |z                       }t          dt          | | |z                       }||z
  dz   }||z   |z  dz  }||z
  }t          d||z            }	||	|fS )Nr   r   r   r   rP  r)  )r  r  r^  )
rK  rL  rt  m_first_row
m_last_row	n_row_alln_row_trapezoidtrapezoid_sizediff_rowrectangle_sizes
             r7  _get_tril_sizesr/  P  s    
axx3!88w*01**#c1v:&&&#cFlQ>N:O:OKQCv..//JAs3f--..I ;.2O "J./AQFN?*HHsN++N>;66r9  c                      t          j        dk    fd           t          j        dk    fd           t          j        t           j        t           j        fv  fd           d S )Nr   c                      d  S )Nzrow must be non-negative, got rM  )rK  s   r7  rO  z_trilu_checks.<locals>.<lambda>j      #IC#I#I r9  c                      d  S )Nzcol must be non-negative, got rM  )rL  s   r7  rO  z_trilu_checks.<locals>.<lambda>k  r2  r9  c                      d d  dS )NrF  z" not implemented for ''rM  )r  r  s   r7  rO  z_trilu_checks.<locals>.<lambda>n  s    ;T;;5;;; r9  )rb  rc  r  r?  )r  rK  rL  r  r  r  s   ````  r7  _trilu_checksr6  b  s     
LIIIIJJJ	LIIIIJJJ	L%+u{++;;;;;    r9  rm  c                   t          d| ||||           t          | ||          \  }}}	t          d|           }
t          t          j        |||          } |d|t          j                  }|	dz
  }t	          j        | t	          j        ||z  d|z  z             z             }t	          j        |d|	z  dz
  |z   |z  dz  z
            }t          ||
z   |          }t          ||          } |d||          }||z  ||	z
  dz   |
z   z   }||z  }t	          j
        t	          j        ||f          t	          j        ||f          f          S )Nr  r   r  r6  r  r  rf  r)  rP  )r6  r/  r^  r   rb  r  rj  rG   rp   r)   r   r   )rK  rL  rt  r  r  r6  r  r,  r.  r(  
row_offset	arange_kwxs1rl  	row_inds1	col_inds1xs2	row_inds2	col_inds2s                      r7  r  r  s  sz    .#sE6:FFF2A#sF2S2S/NNKQJVFz  I
 )A~U]
;
;
;CcAQBAEAGO!<!<<==IC1{?Q#6#Bi"ORU"UUVVI'	J(>FFI'	599I )A~U
3
3
3Cs
cK/!3j@AIc	I;	Iy)	*	*EIy)6L,M,MN  r9  c                     | dk    s|dk    rdS |dk    rt          d||z
            n|}t          dt          | |           |z            }t          | ||dz
            \  }}}| |z  ||z   z
  }||z
  }	|	||fS )Nr   r'  rP  )r^  r  r/  )
rK  rL  rt  r(  r.  trapezoid_size_trilrectangle_size_trilr  	triu_sizer,  s
             r7  _get_triu_sizesrE    s    
axx3!88w*01**#av&&&#K CfW--344N 3B#sFUVJ2W2W/,ac	03FFGI/N>;66r9  c                   t          d| ||||           t          | ||          \  }}}	t          d|          }
t          t          j        |||          } |d||          }||z  }||z  } |d|t          j                  }d|	z
  }t	          j        | t	          j        ||z  d|z  z
            z
            }t	          j        |d|	z  dz
  |z
  |z  dz  z
            }t          ||          }t          ||          }|r|||z  z   }||
z   }t	          j
        t	          j        ||f          t	          j        ||f          f          S )	Nr  r   r8  r  g      r)  rP  rf  )r6  rE  r^  r   rb  r  rj  rG   rp   r)   r   r   )rK  rL  rt  r  r  r6  r  r,  r.  r(  
col_offsetr:  r>  r?  r@  r;  rl  r<  r=  s                      r7  r  r    s    .#sE6:FFF2A#sF2S2S/NNKQJVFz  I
 )A~U
3
3
3Cs
Ic	I )A~U]
;
;
;C{AQBAEAGO!<!<<==ICAOa$7)$Cy#PTW"WWXXI'	599I'	599I
 83!67	J&I;	Iy)	*	*EIy)6L,M,MN  r9  )	out_int32rM  
boundariesrH  rM  c                   t          j                                        dk    fd           t          | t           j                  r| nt          j        |           } |rt           j        nt           j        }j        d         }|dk    rt          j	        |           S t          j
        | j        | j        t           j                  }||z   }|||z
  dz  z   }|         }	|r|	| k    }
n|	| k    }
t          j        |
||dz             }|dk    rt          j        | t           j                  }t          t!          j        |                    }t%          |          D ]t}t          j        |
|z  ||          }||k     }t          j        ||||z
  dz  z   d          }|         }	|r|	| k    }
n|	| k    }
t          j        |
 |z  |dz   |          }u|                    |          S )NrP  c                  4    d                                   dS )Nz2boundaries tensor must be 1 dimension but got dim(r   r	  )rI  s   r7  rO  zbucketize.<locals>.<lambda>  s    XZ^^EUEUXXX r9  rU  r   r8  r)  r  )rb  rc  r  r=  rG  r  r  r?  rT  r)  r(  r6  r   r$  r{  r  r  r[   r`  r   )rk  rI  rH  rM  	out_dtypen_boundariesr  r  midmid_valcond_midcond_updatenitersr  s    `            r7  r,  r,    s    
LAXXXX  
 5<((=el1ooA(9ekI#B'Lq"""
 KDDDE
,
C 3;1$
$CoG  Q;a<K%q11Eaoauz:::TY|,,--v 	K 	KA+h4c3??C#+K+k5C%KA3E+EqIIC oG  ("Q;"a<K(k 937EJJEE88)8$$$r9  c                     |J t          j        t          j         j                   o3t          j         j                   ot          j         j                    fd           t          j        dk    fd           |t          j        t          j	        t          j
                   dz
  z            z  z   S )Nc                      d j          S )NzwCauchy distribution is a continuous probability distribution.         dtype must be a floating point but you specified r  r  s   r7  rO  zcauchy.<locals>.<lambda>"       G:>*G G r9  r  c                      d  S )Nz-cauchy_ expects sigma > 0.0, but found sigma=rM  )sigmas   r7  rO  zcauchy.<locals>.<lambda>'  s    GGG r9  rf  )rb  rc  rv  r  r  r  r  rr   r  r  	rand_like)r  medianrW  	generators   ` ` r7  r  r    s     	L"4:... 	3&tz222	3&tz222	G 	G 	G 	G	   
LGGGG   EEIdg1F1F1L&MNNNNNr9  c                     |J t          j        t          j         j                   o3t          j         j                   ot          j         j                    fd           t          j        dk    fd           t          j                   }t          j        |j                  j	        dz  }|d|z
  k    }t          j
        || t          j        |                    }dz  |z  S )Nc                      d j          S )Nz|Exponential distribution is a continuous probability distribution.         dtype must be a floating point but you specified r  r  s   r7  rO  zexponential.<locals>.<lambda>8  rU  r9  r  c                      d  S )Nz4exponential_ expects lambda > 0.0, but found lambda=rM  )rates   r7  rO  zexponential.<locals>.<lambda>=  s    MtMM r9  r)  re  rU  )rb  rc  rv  r  r  r  r  rX  r  r  r   rY   )r  r^  rZ  uniform_valepsilonr  log_uniforms   ``     r7  rC   rC   ,  s    	L"4:... 	3&tz222	3&tz222	G 	G 	G 	G	   
Ls
MMMM  
 /$''K k++,,014GsW},I+i'59[3I3IJJK9{""r9  c                     |J t          j        t          j         j                   ot          j         j                    fd           t          j        dk     odk     fd           t          j        t          j        t          j                              t          j                   z            dz   S )Nc                      d j          S )Nzgeometric not implemented for r  r  s   r7  rO  zgeometric.<locals>.<lambda>Y  s    === r9  r   rP  c                      d  S )Nz0geometric_ expects p to be in (0, 1), but got p=rM  )r  s   r7  rO  zgeometric.<locals>.<lambda>]  s    F1FF r9  )
rb  rc  rv  r  r  r  rG   rZ   rX  r  )r  r  rZ  s   `` r7  rI   rI   M  s     	L"4:... 	3&tz222====  
 
L	A!a%FFFF   ;u{EOD$9$9#9::TZ^^KLLqPPr9  r)  c                 f    |J t          j        t          j         j                   o3t          j         j                   ot          j         j                    fd           t          j        dk     fd           t          j        t          j                   z  |z             S )Nc                      d j          S )Nzlog_normal not implemented for r  r  s   r7  rO  zlog_normal.<locals>.<lambda>n  s    >$*>> r9  r   c                      d  S )Nz-log_normal_ expects std > 0.0, but found std=rM  r   s   r7  rO  zlog_normal.<locals>.<lambda>r  s    EEE r9  )	rb  rc  rv  r  r  r  r  rA   
randn_liker  r   r   rZ  s   ` ` r7  r]   r]   b  s     	L"4:... 	3&tz222	3&tz222>>>>	   
L	CEEEE   9S5+D111D8999r9  )r   r   )rZ  r  r  r6  r  c          	         ||t           j        k    sJ t          t                    st          j        dk    fd           |t          d | fD                       }t          j        t          |          dk    d            t          j        |d u o|d u d            t          d |D              }|d         j        }|d         j	        }not          j        t          | t                     ot          t                     d            |t          j
                    n|}|t          j	        d          n|}t          j        |d	d
||d|          }	|	z  | z   S )Nr   c                      d  S )Nz)normal expects std >= 0.0, but found std rM  rh  s   r7  rO  znormal.<locals>.<lambda>  s    O#OO r9  c              3   D   K   | ]}t          |t                    |V  d S rF  r  rj  s     r7  rK  znormal.<locals>.<genexpr>  s1      LLa*Q
2K2KLLLLLLLr9  c                      dS )NzFnormal expects that either mean or std is a tensor, or size is definedrM  rM  r9  r7  rO  znormal.<locals>.<lambda>  s    \ r9  c                      dS )Nz.Cannot pass layout, or pin_memory without sizerM  rM  r9  r7  rO  znormal.<locals>.<lambda>  s    D r9  c              3   $   K   | ]}|j         V  d S rF  r  rj  s     r7  rK  znormal.<locals>.<genexpr>  s$      "<"<q17"<"<"<"<"<"<r9  c                      dS )Nz>normal expects mean and std to be scalars when size is definedrM  rM  r9  r7  rO  znormal.<locals>.<lambda>  s    T r9  rm  r  re  F)r   r   r  r6  r  rZ  )rb  stridedr=  r%   rc  r[  rS  rf  r  r6  r  r  ra   )
r   r   r2  rZ  r  r  r6  r  r  normal_sampless
    `        r7  ra   ra   y  s   ( >Vu}4444c:&& 
1HOOOO	
 	
 	
 |LLD#;LLLLLLL1\\	
 	
 	
 	dN1zT1DD	
 	
 	

 !"<"<G"<"<"<=
 "4,,,PZZ5P5P1PTT	
 	
 	
 .3]')))(.e$$$F\  N $&&r9  )rZ  c                4    t          ||| j        | |          S )N)r  rZ  )ra   rT  rj  s       r7  normal_ru    s    $TZTYGGGGr9  c                 l    t          j        t          j        | j                   d            d}| |z  S )Nc                      dS )Nz-rad2deg is not supported for complex tensors.rM  rM  r9  r7  rO  zrad2deg.<locals>.<lambda>  r(  r9  gcܥL@rb  rc  rv  r  r  )r  M_180_PIs     r7  re   re     sA    	L"4:...??   CH(?r9  c                 l    t          j        t          j        | j                   d            d}| |z  S )Nc                      dS )Nz-deg2rad is not supported for complex tensors.rM  rM  r9  r7  rO  zdeg2rad.<locals>.<lambda>  r(  r9  g9RFߑ?rx  )r  M_PI_180s     r7  r<   r<     sA    	L"4:...??   EH(?r9  c                 4    | dk                         |          S r  )r   )r  r  s     r7  r;   r;     s     AI??3r9  c                 l    t          j                                         dk    o                                dk     fd           t          j         j        j        k     fd            fd}t          j                                                                         k    |           d S )NrP  c                  ^    d                                  d                                   dS )Nz1D tensors expected, but got zD and z	D tensorsr	  r  r  s   r7  rO  z_dot_check.<locals>.<lambda>  s+    X

XX%))++XXX r9  c                  (    dj          d j          S )Nz:dot : expected both vectors to have same dtype, but found r  r  r  s   r7  rO  z_dot_check.<locals>.<lambda>  s(     *:* *!K* * r9  c            	          d                                  d                                   d                                  d                                   d	S )Nz+inconsistent tensor size, expected tensor [z] and src [z.] to have thesame number of elements, but got r  z elements respectively)r  r  s   r7  numel_errorz_dot_check.<locals>.numel_error  ss    i$**,, i iSXS^S^S`S` i i04

i iCH;;==i i i	
r9  )rb  rc  r  r  r  )r  r  r  s   `` r7  
_dot_checkr    s    	L

a,EIIKK1,XXXXX  
 
L
ek!	* 	* 	* 	* 	*  
 
 
 
 
 
 
L.<<<<<r9  c                 <     t                      fd            }|S )Nc                 <    t          | |            | |          S rF  )r  )r  r  r  s     r7  wrapperz#_dot_check_wrapper.<locals>.wrapper  s#    4r$r9  )r	   )r  r  s   ` r7  _dot_check_wrapperr    s3    
2YY    Y Nr9  r  c                    |                                  r|                                 r|                                rKt          j        |                                 |                                                                          S t          j        |                                 |          S |                                r't          j        |                                |           S | |z                                  S rF  )r-  is_conjrb  r   r   r   r   r  s     r7  r   r     s      2<<>> 	2}} 6yejjll;;@@BBBz$))++u555]]__ 	2:ejjllD1115Lr9  c                 P   |                                  st          j        | |          S |                                 rt|                                r9t          j        |                                |                                           S t          j        |                                 |          S |                                r9t          j        | |                                                                          S |                                 |z                                  S rF  )r-  rb  r   r  r   r   r8   r   r  s     r7  r   r     s     ?? &yu%%%||~~ 4==?? 	1:ejjllDIIKK8889TYY[[%000	 4yuzz||,,11333   5(--///r9  c                    t          j        | j        |          }dg| j        z  }d||<   |dk     r|| j        |         z   }t	          j        | j        |         | j                                      |          |k    }t	          j        ||          	                    | j                  }t	          j
        |||           S )NrP  rU  r   r5  )rv  r  r!  rT  rb  r  r6  r  r  r   r   )rJ  r  r  r
  
mask_shapery  s         r7  select_scatterr    s     
 
-
-CqvJJsOqyy$<QX666;;JGG5PD
/#s
#
#
*
*17
3
3C;tS!$$$r9  )r1  c                 N    t          | t          j        t          j        f          S rF  )r=  rb  TypedStorageUntypedStorage)objs    r7  
_isStorager    s    cE.0DEFFFr9  c                    d}t          |           }g }t          | t          t          f          rt	          |           }|r
||j        z  }|                    |           t	          |          |k    r%t          dt          |           j	         d          |dk    rn[	 | d         }n3# t          $ r& t          dt          |           j	         d          w xY w|} t          | t          t          f          |S )N   ztoo many dimensions 'r5  r   z.could not determine the shape of object type ')r  r=  r;  r[  rS  itemsizer  ra  r4  r  r  )seqscalar_typeMAX_DIMS
is_storager7  r  handles          r7  _compute_sizesr    s   HCJE
S4-
(
( S 	,{++FVu::  JT#YY5GJJJKKKQ;;	VFF 	 	 	VcASVVV  	  S4-
(
( " Ls    B) )0Cc                 D   t          | t                    rt          j                    S t          | t                    r!t          | t
                    st          j        S t          | t                    rt          j        S t          | t                    rpt          j                    }|t          j	        u rt          j
        S |t          j        u rt          j        S |t          j        u rt          j        S t          d          t          | t          j                  r| j        S t          | t$                    r%t'          dt)          |           j         d          t          | t,          t.          f          rd }t1          |           }|dk    rt          j                    S t3          |          D ]F}| |         }	 t5          |          }|t          j        ||          }n|}|t          j        u r|c S G|S t          dt)          |           j                   )Nz'invalid default scalar type for complexznew(): invalid data type 'r5  r   zCould not infer dtype of )r=  r   rb  r  r   r{  r?  r   r  r  cfloatdoublecdoublehalfchalfr]  rG  r  rx  	TypeErrorr4  r  r;  r[  rS  r`  _infer_scalar_typepromote_types)r  default_dtype
scalarTyper  r  cur_itemitem_scalarTypes          r7  r  r    s   #y!! )&(((#w 
3(=(= {#x   z#w 	J/11EK''<el**= ej((;HIII#u|$$ y#s LJT#YY5GJJJKKK#e}%% 
S Q;;*,,,v 	" 	"A1vH 1::O%"0_MM

,
U]** "!!! + 
G4993EGG
H
HHr9  r  r  c                     t          |t                    rU|                                dk    r=|                                                     dd                              d          S t          |t                    r*|                                                     dd          S t          |t                    rt          j        |           S |}|st          j	        d          nt          j
         fd|D                       S )	NrP  rm  T)r  r6  r  rM  r  r   c                 0    g | ]}t          |          S rM  )_recursive_build)rI  r   r  s     r7  r  z$_recursive_build.<locals>.<listcomp>  s$    MMM*:t<<MMMr9  )r=  rG  r  detachr   r  r   rb  r&  r  r   )r  r  r  s   `  r7  r  r    s     #v :399;;!#3#3zz||ZDIINNrRRR	C	 	  
: zz||ZDIII	C	 	  :"3j9999 C 	OA[MMMMMMMNNr9  c                 (   t          |t          j                  r^t          j        | d            |}|r|                                }|r|j        n|}	||n|j        }
|                    |
|	d|          S t          |d          rt          S ||n| d         }
|rt          |          n|}	t          |          rt          S t          j        |
          j        dk    rt          S t          |	|          }|                    |
|	dd          }|S )Nc                      dS )Nz,Can't pin tensor constructed from a variablerM  rM  r9  r7  rO  z)_internal_new_from_data.<locals>.<lambda>  s    $R r9  F)r6  r  r  r  __cuda_array_interface__r6  meta)r  r  )r=  rb  rG  rc  r  r  r6  r   hasattrNotImplementedr  r  r4  r  )optionsr  
device_optdatacopy_variables
copy_numpytype_inferencer  r   inferred_scalar_typer6  r  s               r7  _internal_new_from_datar  
  sO    $%% 
NRR	
 	
 	
  	**,,C,:Ksyy)53:vv&	  
 
 	
 t/00  &1ZZwx7HF7EV-d333; $ Y<$..!! ""6==6#7eRWXX Mr9  )r  r6  r  r  c          
      ,   t          | t          j                  rt          j        dt
          d           |d u }t          ddi||nt          j                    || dd||          }|                                 |r|	                    |           |S )NzTo copy construct from a tensor, it is recommended to use sourceTensor.detach().clone() or sourceTensor.detach().clone().requires_grad_(True), rather than torch.tensor(sourceTensor)r)  )
stacklevelr6  rm  T)r  r  r  r  )
r=  rb  rG  r  r  UserWarningr  r  detach_r  )r  r  r6  r  r  r  
new_tensors          r7  r  r  C  s    $%% 
l		
 	
 	
 	
 d]N( 
5"(?(A(A%  J  1!!-000r9  rF  )F)r  NN)r  r  Fr  )NN)NNNNNFF)FFN)NF)NNFr  )r   rU  )	NNNTrC  FNNN)NNNTFNNF)rM  )rP  r  )r   r   rP  )r   rs  rU  )r   NrP  )r  )r  re  )r  NF)r   rP  NrI  )rP  r)  N(  r3  r  r  ra  r  rj  r  collections.abcr   r   enumr   	functoolsr   r   r   r	   typingr
   r   r   r   r   r   rb  torch._prims_primsr  torch._prims_common_prims_commonrv  torch.utils._pytree_pytreer/  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(   torch._prims_common.wrappersr)   r*   r+   r,   r-   r.   r  rG  r  DispatchKey_opsr  r  r8  rA  rf  r}  torch._decompr~  objectr  r  r  r  r^  r/   INT_TO_FLOATr0   r1   r3   r2   r4   r5   DEFAULTr6   r7   r-  r8   r9   r:   r=   r>   r?   r@   rA   rB   rD   	NO_OPMATHrE   rF   r'  rG   rH   r   ALWAYS_BOOLrP   rQ   rR   rS   rT   specialmultigammalnr_   rU   rV   rX   rY   rZ   r[   r\   r  r  r^   r   r{  rb   r  rc   rd   r   rf   rg   r   rh   ri   rj   rk   rl   rm   rn   rp   BOOL_TO_LONGrq   rr   rs   ru   r  rJ  rv   rw   rx   ry   rz   r{   r|   r   r   rx  r   r   r   r   rq  rp  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   r   r   r   r   r   r   r   r   r   r   r   r   r}   r~   r   r   r  r  r   r   r  r  r  registerr6  r  r   r  r  r  r  r   r(  r7  r   r   r   dim_IntListIntList_outr;  r   r   r   r   rY  r   r   r   r   r   r   r   r  r   r   r   r   r   r   rV  py_implCompositeImplicitAutogradMetar   r   r   r   r   r.  r   r   r   r   r   r   r   r   r   r   r  r  r   r   _subclasses
fake_implsregister_op_implr3  r   r.  r/  rH  r0  r  r   r  r  r   r   r   r   r  r   ro   r   r  r  r  rK   rL   rN   rO   r  rJ   rM   r   r9  r   r   r   r
  r   r  r   r   r   r   rN  r   r   r   r   r   r   r  r  r_  r   r   r  r  r  r   r   rr  r  r  r  r  r(  r"  r#  r!  r   r  r  r  
start_step	start_outrW   r  r  r   r   r  r  r  r  r)  r$  r%  r&  r  r   r   r*  r+  r`   rt   r  r   r   r   r  r  r/  r6  r  r  rE  r  r,  r  rC   rI   r]   ra   ru  re   r<   r;   r  r  r   r   r  abs_acos_acosh_add_addcmul_addcdiv_asin_asinh_atan_atanh_atan2_bitwise_and_bitwise_left_shift_bitwise_not_bitwise_or_bitwise_right_shift_bitwise_xor_ceil_clamp_
clamp_min_
clamp_max_conj_physical_	copysign_cos_cosh_cumsum_cumprod_deg2rad_digamma_div_eq_erf_erfc_erfinv_exp_exp2_expm1_float_power_floor_floor_divide_fmod_frac_gcd_ge_gt_
heaviside_hypot_igamma_igammac_i0_lcm_le_lerp_lgamma_log10_log1p_log2_log_logical_and_logical_not_logical_or_logical_xor_lt_mul_	mvlgamma_nan_to_num_ne_neg_
nextafter_pow_rad2deg_reciprocal_
remainder_rsqrt_sgn_sigmoid_sign_sin_sinc_sinh_sqrt_square_sub_tan_tanh_tril_triu_true_divide_trunc_xlogy_cauchy_exponential_
geometric_log_normal_zero_r   r   r   r   r   r   r   r   r  r  r  r	  r  r  r  r  r  r  torch._refs._conversionstorch._refs.ffttorch._refs.linalgtorch._refs.nn.functionaltorch._refs.specialrM  r9  r7  <module>rF     s`m                . . . . . . . .       < < < < < < < < < < < < A A A A A A A A A A A A A A A A        # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $                                                 2               l l l\	 
h"z~2 2 2  8 8 8v 9= 8C 8C 8C 8C 8Cx 1 0 0 0 0 0        D     2 #"#4   	  #"#B#OPP  QP #"#B#OPP  QP #"#B#OPP  QP #"#B#OPP  QP #"#B#OPP  QP #"#B#OPP  QP #"#B#JKK    LK  #"#+   	  ((/n / / / )(/ *++& & & &  ,+& #"#B#OPP  QP #"#B#OPP  QP #"#B#OPP  QP #"#B#OPP  QP #"#B#OPP  QP #"#B#OPP  QP #"#B#OPP  QP #"#B#OPP  QP #"#B#OPP  QP ##7A  	 N 	 : 	 . 	  	  	 	  
	 ^ J >     	""# #> # # #  #"# #"#+   	  #"#+  !N !~ ! ! !	 !N ~     #"#/  * *> * * *	 * #"#B#NOO1^ 1 1 1 1 PO1 #"#/  1 1> 1 1 1	 1 #"#/  1 1> 1 1 1	 1 #"#B#NOO^     PO
 ;u}1:>> #"#/  0n 0 0 0 0	 0 #"#0$'     #"#B#OPP  QP #"#B#OPP  QP #"#B#OPP  QP #"#B#OPP  QP #"#B#OPP  QP
  $(X XX	X EK X 	X X X X ''##!7D  
 :?, ,
,',26,, , ,	   (', (( !$#'#'	 	*	 Z  Z 	
     )(4     #"#+	     >    N ~     #"#B#OPP  QP 
####7?   12 J J J^ J# Jn J J J	   $#J #"#B#OPP  QP #"#B#OPP/~ /. / / / QP/ #"#+   	  #"#+   	  #"#/   	  #"#B#OPP  QP #"#B#OPP4 4 QP4
 #"#B#OPP  QP #"#B#OPP  QP #"#0  n    	  #"#B#OPP  QP #"#B#OPP  QP #"#+   	 
!. !^ ! ! ! !L 	## %"&6 6 6 6 6 6t !!##"7?   #'	8 8 8^Z'(8^Z'(8 J	8 8 8	   "!8: $#7D$$  
  
 $#7?  #> #n # # # # # $#7?  ". "^ " " " " " $#7?  ". "^ " " " " " $#7?  .> .n . . . . . $#7?  #> #n # # # # # $#7D$  2^Z'(2-2>:3M-N2 2 2	 2 !!
 $(	  ^Z'(^Z'( C=	    "!( $#7C$  . ^    	  $#7D  ^Z'(^Z'(    4 ^Z'(^Z'(    l $#=E $"'  
O^Z'(O-2>:3M-NO O O 
O8FV F F6 F F F F16 1f 1 1 1 1 12 $#7?$$  
N ~ .    
 $#7?$$  
N ~ .    
 $#7?$#  
N ~ .    
 
##Z$$7 75)G#H 7 7 7 %$ $#7 $#7?$$  
> n     
 $#7C$  . ^    	  $#7C$  . ^    	  $#7?$$  
^ ^     
 $#7?$$  
^  >    
 $#7D$$  
n  N    
 $#7D$$  
~ . ^    

  	
  
   2 ( ((( ( 	(
 ( ( ( ( (V $#7?$$  
Q> Qn Q Q Q 
Q  $#7C$  . ^    	  $#7?$$  
T TN T~ T T T 
T0 $#7?$$  
,. ,^ , , , , 
, $#7C  > n     #"#B#NOO>    PO $#7C  . ^     $#7C  > n     $#7C$  . ^    	  $#7?  ~ . ^     $#7?  ~ . ^     $#7? $  > n    	  $#7C$  . ^    	  $#7A$$  
! !N !~ ! ! ! 
! $#7?  ! !N !~ ! ! ! !
 	"" 	( 	(^Z'(	(^Z'(	( 	( 	( 	(  #"	( !!##"7?   	$8 $8 $8^Z'($8^Z'($8 	$8 $8 $8	   "!$8N $#7D	 $	  > n      
####"7D  :U>:-. :59S3T : : :	   $#:& $#=E $  
"^Z'("-2>:3M-N" " " 
" %%##67D   , , ,
,, ,
 , , , ,	   &%,* %%##67?   , , ,
,, ,
 , , , ,	   &%,* 
####+7?   -1,0 	(	) 
(	) 	  	   $#4 '' -1& &
&	(	)& & & &  ('& '' -1& &
&	(	)& & & &  ('& 
####"7A   +/*.# #
#&'# &'# # #	   $##. 
##?D?T  ).)<    $# 9=   v &     	""&N &z & & & #"& (,#'%)37!& ^$ EK  4.	
 U\" E/0   
   2     37 L;  	
 E/0 
#s(^   "  37 ;  	
 E/0 
#s(^   "  37	 ;  E/0	
 
#s(^     37	   E/0	
 
#s(^   ."& "T " " " "0. n    V "##' < < <<
< 	<
 < 8
< < EK < 
&	< 2< < < < <~   < !! #
 

	(	
 
 	
 
 
  "!
 !! # 	(	  	    "!$ -tx/CDEE 6:
 $(   	x}htCy11	2 
 EK  
&	    FE:CC C C C C, 	"" 6:
    	x}htCy11	2  
&	    #": 	"" #
 !  	(	 
 
&	    #". 	"" #
 !  	(	 
 
&	    #".    !! ##	 (,  	(	 tn 	 $     "!6 !! 6:#	1 (,1 1 11	x}htCy11	21 tn1 	1 $1 1 1 1  "!1* 	"" #*
 * * **	(	* * * * * #"*Z &&VV #  $'+  	(	 tn	
  $    '&0 &&VV ##	 (,  	(	 tn 	 $    '& 	""##07?   7A 7A 7A
7A
7A 7A
 7A 7A 7A 7A 7A	   #"7Av
+	~x77	8
+AO
+
>5!4556
+ 
+ 
+ 
+   # *8        +	~x77	8+AO+
>5!4556+ + + ++	~x77	8+AO+
>5!4556+ + + +$ %)		A 	A	A
	A 	A SM		A
 	A 	A 	A 	A /00 %)R RR	R R 	R
 SMR R R R  10R2 2 2 2 2 ''(MNN''(899O4#7 O O O :9 ONO1N 1) 1 1 1 1 1 !!##$7A  sG sG# sG# sGn sG sG sG	   "!sGn #, # # # # # >     ,--?@P PP $S	P2<PP P P  .-Ph 8=7N7 7 77!&!477 7 7 7 #& #> # # # # $$/4 . . .f . . . . . %$.d F v     ^ S s 5QTAT;U    ,1 1~ 1# 1C 1 1 1 1 1$ 	""N "2 ~     #"n     n     (-c>.A(BLO   D").
666!"   <> tCy ^     .677DDVD 6
D 	D
 D D D 
D 666!"D D D 87DN .//VVV$$EEE VE 6
	E
 
E 666!"E E E %$ 0/EP ..t/E/MNN$ $ ON$ %%,~ , , , , &%, $$#.#.,#.36#.AO#.#. #. #.  %$#.N +?@@ !% $##%)&*p? p?p?p? p? 	p?
 Vp? p? p? p? tnp? TNp? d^p? p? p? p? A@p?h KABB !% $## P PPP P 	P
 VP P P tnP SMP P P P CBPh",9<DGOR   8 $$51f 51 51 51 51  %$51pMM*.MM M M M`2?N 2? 2? 2? 2? 2? 2?r<~ <y <^ < < < <
&^ &N &~ & & & & 	"",> ,>N ,>H ,>H ,>n ,> ,> ,>  #",>^ 
##<B> >>>)9>> > >  $#><
!3 
 
 
 
 
 
##G G% GC G G G G  $#G   $( 	 EK  	   & #& #> # # # # #& #> # # # #S Sc S) S S S S S $$
 
n 
3 
/A 
 
 
 %$
" * 3 z :    
: 
C 

 
J 
 
 
 
 ((<<<$.<7<Z=S7T< < <  )(< ());;;$.;7<Z=S7T; ; ; *);..	. . Z'(	. . . . .b    	  	    " )**J S      +*" )** ~ HX$6 .    +*: -..56 
#Cy/2	&\   /.D DF DFDFvx/0DF 
DF >3	DF DF DF DFP&-&-,4&-
>3&- &- &- &-T$+$+,4$+
>3$+ $+ $+ $+N 	&& 1 1
11 1 1 1  '&1 -..  	  	
      /.$ && 	& &
&& & 	&
 & & & '&&R (( 	53 535353 53 	53
 53 53 53  )(53p ((!$$~"6 !$> !$ !$ !$  )(!$H)n- ). ) ) ) )
(n 
( 
(5G 
( 
( 
( 
( ''9 9 9 9 ('9$	 	N 	 	 	 	 
##^     $# ''	* 	*s 	*# 	*. 	* 	* 	* ('	* 	 $$+
+%(+03+;>++ + + %$+ ())n  C s     *) $( 9 9 9 9 
	9 EK 9 
&	9 9 9 9 90 $$
 $( T T TT	T EK 	T
 
&	T T T T %$T %%
 $( U U UU	U EK 	U
 
&	U U U U &%U ''3 3c 3n 3 3 3 ('3 	)**=N =I =. = = = +*=
#. # #N # # # #
^      AE!D !D|!D#l!D19#!D
\!D !D !D !DH  $( ='+).)@# # #EK # L# ^$	#
 # # &# # # # #L  $( ='+  EK  L	
 ^$      $ ''
 $(%)'+  
 EK 	
 U\" ^$      (', .// $(%)'+  
 
 EK  U\" ^$      0/8 
*++ $( ='+  EK  L ^$	
       ,+0 ''
 $(%)'+  
 EK 	
 U\" ^$       ('2 	)** $( ='+  EK  L ^$	
       +*0 &&
 $(%)'+  
 EK 	
 U\" ^$       '&2 && $(%)'+  
 
 EK  U\" ^$      '&0 =>> 48 
	 E/0 	   ?> (( $('+%)).)>& & && EK & ^$	&
 U\"& & & && & & &  )(&R /1FGHH $`
 $( ='+` ` ``	*	` `
 EK ` L` ^$` ` ` ` ` `  IH`F 	""##27?  8 8V 8U6:3E-F 8 8 8	   #"82 && $('+ =U/ U/ U/^+,U/	z>)	*U/ U/
 EK U/ ^$U/ LU/ U/ U/ U/ U/ U/  '&U/p &&
 	8@ $('+ =8@ 8@ 8@^+,8@	z>)	*8@ 8@ 	8@ EK 8@ ^$8@ L8@ 8@ 8@ 8@ 8@ 8@  '&8@v 
	h~. 	# 	 	 	 
	 
	~ 	 	 	 	 
	 &&>ND$8%:OOP>> 
.> > > '&>D;;#''(; s,,-; 	; ; ; ;~ *++
 $('+ =  E),,- EK 	
 ^$ L       ,+6 !! ") $( ='+") ") ")
")}") EK 	")
 L") ^$") ") ") ") ") ")  "!")P *DIM:;;
 $( ='+% % %%% EK 	%
 L% ^$% % % % % %  <;%> $(%)'+).)>   EK 	
 U\" ^$   &    . (( $(%)'+).)>   EK  U\"	
 ^$   &     )(, '' $(%)'+).)>   EK  U\"	
 ^$   &     (', 
*++ $('+%)  EK  ^$ U\"	
       ,+8 $( ='+> > >> EK > L	>
 ^$> > > > > >, $'$'X XX	tS%	 X c5 
!X
 ;X X X X X X* ()))> ) )@V ) ) )  *))X )**+4J   +*    	
  
   "^  4    & 	"" &+"	M $(M M MMeSj!"M 
(	M 	M EK M M M M  #"M2 
##* *> * * *  $#*   [))l++	 	""3 3N 3c 3. 3 3 3  #"3 	""3 3N 3c 3. 3 3 3  #"3(7 73 7 7c3m8L 7 7 7 7$
	 
 ;	
 L    " )** "
  ="" " "	"	" "
 ;" L" " " " " "  +*"R7 73 7 7c3m8L 7 7 7 7" )** &
  ="& & &	&	& &
 ;& L& & & & & &  +*&R ''
 7% 7% 7%7%7% 	7%
 7% 7% 7%  ('7%t $$##!7?  O O O	   %$O  ())##!7?  # # #	   *)#6 ''##!7?  Q Q Q	   ('Q ((##!7?  : : :	   )(:" $$## 8?   
		1'
 
1' 1' 1' 1'   %$1'h %%Hd H H H H &%H #"#B#OPP.    QP #"#B#OPP.    QP *++   Xh/        ,+ = = =*   !!##)7?  
  
 	    "!
  	""##)7?  0 0	    #"0  +,,%n %> % %C % % %  -,% }Sd	u		}S=!!=!!d	u		d	u			u		}[))#m$677 }[))mJ''$}%899 }[))d	u		]9%%
]9%%
}--M(##	}Sd
-

=!!=!!=!!}SmB}Sd
-

}Sd	u		}[))	u		l++dd}SmBmB]9%%
	u		
-

=!!mB}SmBd
-

	u			u		d}S}[))}[))mJ''}[))mB}SM(##	mJ''mB}S]9%%
}S=!!mJ'']9%%
	u		}S=!!d}Sddd
-

}S}Sddd}[))	u			u		
-

}[))]9%%
mJ''d!!$*--
&&t77$$T]33""4;// #"4;//##DL11##DL11		df	%	%%%dn55""4;4PPP%%dn55  ++	G G G
  4.I .I .If"'(>@R(R"S   F 5 5 5 5r tU     L                           r9  