
    9j}                    j   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	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 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#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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< d dl=m>Z>m?Z?m@Z@mAZAmBZBmCZC d d	lDmEZE g d
ZFej                  ZGej                  j                  ZIej                  j                  j                  ZLd ZMd ZNd ZOdddZPd dlQmRZR  eS       ZTeTddddefdZUd ZVd ZW eUe,j                  d      d        ZY eUe,j                        d        Z[ eUe,j                        d        Z\ eUe,j                        d        Z] eUe,j                        d        Z^ eUe,j                        d        Z_ eUe,j                        d        Z` eUe,j                        d         Zb eUe,j                  d      d!        Zc eReLj                        d"e:fd#       Zd eReLj                         eC       d"e:fd$              Ze eUe,j                        d%        Zf eUe,j                        d&        Zg eUe,j                        d'        Zh eUe,j                        d(        Zi eUe,j                        d)        Zj eUe,j                        d*        Zk eUe,j                        d+        Zl eUe,j                        d,        Zm eUe,j                        d-        Zn eC        eAd.e,j                  /      d0e:d1e4de:fd2              Zpd0e:d1e4de:fd3Zq eReLj                         eC       d"e:de:fd4              Zr eUe,j                  d      d5        Zs eUe,j                  d      d6e:de:fd7       Ztd0e:de:fd8Zu eUe,j                  d9      d0e:de:fd:       Zw eUe,j                        d0e:de:fd;       Zx eUe,j                  d      d0e:de:fd<       Zy eUe,j                  d      d0e:de:fd=       Zz eUe,j                        d0e:de:fd>       Z{ eVej                  j                  d?      Z~ eUe,j                  d9      d0e:de:fd@       Z eUe,j                  eLj                   9      dA        Z eUe,j                        dB        Z eUe,j                        dC        Z eUe,j                        dD        Z eUe,j                        dE        Z eUe,j                        dF        Z eC       	 dd0e:dGedHej                  dz  de:fdI       Z eReLj                         eC        eAdJe,j                  /      	 ddKe:dGe*dLede:fdM                     Z eReLj                         eC       	 	 	 dd0e:dNe4dz  dOe4dz  dPe4dz  de:f
dQ              Zd0e:fdRZ eUe,j                  eS      dT        Zd0e:de:fdUZd0e:de:fdVZ eUe,j                        dW        Z eReLj"                         eC        eAd.e,j                  /      d dXd0e:dYede:fdZ                     Z eUe,j                        d[        Z eUe,j                        d0e:de:fd\       Z eUe,j                  d      d]        Z eUe,j                  d      d^        Z eUe,j                  d      d_        Z eUe,j                        d`        Z eUe,j                        da        Z eUe,j                        db        Z eUe,j                        dc        Z eUe,j6                  d9      d0e:de:fdd       Z eUe,j                        de        Z eUe,j                        df        Z eUe,j                  d      dg        ZdKe:de:fdhZeTddddddfdefdiZd0e:e4z  dje:e4z  dej                  fdkZ eReLjF                         eC        eAdle,j                  /      ddmd0e:e4z  dje:e4z  dne4dz  fdo                     Z ee,j                  ddp      dq        Z ee,j                  r      d0e:dje:de:fds       Z ee,j                  r      d0e:dje:de:fdt       Z ee,j                  r      d0e:dje:de:fdu       Z ee,j                  r      d0e:dje:de:fdv       Z ee,j                  r      d0e:dje:de:fdw       Z ee,j                  dx      d0e:e4z  dje:e4z  fdy       Z eReLjV                         eC       ddzd0e:e4z  dje:e4z  d{edz  fd|              Z ee,j                  dx      d0e:dje:de:fd}       Z ee,j6                  r      d0e:e4z  dje:e4z  de:fd~       Z eC       d0e:e4z  dje:e4z  deGfd       Z eejX                  j                  dd      d0e:e4z  dje:e4z  fd       Zd0eGdjeGdeGfdZd0eGdjeGdeGfdZ ee,j                  ddp      d0e:dje:de:fd       Z ee,j                  ddp      d0e:dje:de:fd       Z ee,j                  ddp      d0e:dje:de:fd       Z eReLjl                         eCdd      dKe:dee:e:f   fd              Z ee,j                  ddp      d0e:dje:de:fd       Z ee,j                  dx      d0e:dje:de:fd       Z ee,j                  dx      d0e:dje:de:fd       Z ee,j                  ddp      d"e:de:de:fd       Z ee,j                  ddp      d0e:dje:de:fd       Z ee,j                  ddp      d0e:dje:de:fd       Z ee,j                  ddp      d0e:dje:de:fd       Zded0e:dje:dededdfdZ	 	 	 dd0e:dje:dededede:fdZ ee,j                  ddp      d0e:dje:fd       Z ee,j                  dx      d0e:dje:de:fd       Z ee,j                  ddp      d0e:dje:de:fd       Z ee,j                  ddp      d0e:dje:de:fd       Z ee,j                  r      d0e:dje:fd       Z eUe,j                        d0e:fd       Z ee,j                  r      d0e:dje:fd       Z ee,j                  r      d0e:dje:fd       Z ee,j                  dx      d0e:dje:de:fd       Z ee,j                  r      d0e:dje:de:fd       Z ee,j                  r      d0e:dje:de:fd       Z ee,j                  d      d0e:dje:de:fd       Z ee,j                  dx      d0e:dje:de:fd       Z ee,j                  ddp      d0e:dje:de:fd       Z ee,j                  r      d0e:dje:de:fd       Z eReLj                         eC       	 dd0e:e4z  dje:e4z  dne4fd              Z eReLj                         eC        eAdle,j                  /      ddmd0e:e4z  dje:e4z  dne4fd                     Z ee,j                  ddd      d0e:dje:de:fd       Z eReLj                         eC        eAdle,j                  /      d0e:e4z  dje:e4z  fd                     Z eejX                  j                  dd      d0e:e4z  dje:e4z  fd       Z eReLj                         eC        eAde,j                  /      dddKe:de:de:d1e4de:f
d                     Z eReLj                         eC        eAde,j                  /      dddKe:de:de:d1e4de:f
d                     Z eReLj                         eC        eAde,j                  /      	 	 dd0e:de;dz  de;dz  de:fd                     Z eReLj                         eC       	 ddKe:de;dz  de:fd              Z eReLj                         eC       	 ddKe:de;dz  de:fd              Z eReLj                  j                        deGdeeGdf   fd       Z eReLj                  j                         eReLj                  j                         eReLj                  j                         eReLj                  j                         eReLj                  j                         eCd       eAdle,j                  /      	 	 ddeGd0e;dz  dje;dz  fd                                                 Z eReLj                         eC       ej                  dd0e:dej                  de:fdÄ              ZddĜd0eGdjeGfdńZ eReLj                        d0e:de4fdƄ       Z	 	 	 	 	 	 	 dd0e:de'dz  dHej                  dz  dedz  dej                  dz  dej                  dz  dedz  dedefd̄Zed̈́        Zej                  	 	 	 ddej                  dHej                  dededej                  dz  deeef   fd΄       Zej                  	 	 	 ddedHej                  dededej                  dz  deeef   fdτ       Zej                  	 	 	 ddHej                  dededej                  dz  deeef   f
dЄ       Zej                  	 	 	 ddeGdededej                  dz  deeef   f
d҄       Zd0eGdefdԄZd0e:de:fdՄZddddddd֜d0e:dededede*dz  dedHej                  dz  deGdz  de6de:fdބZdd߄Z eReLj                         eC       	 	 dd0e:dGe*dz  dLede:fd              Z eReLj                         eC       	 	 dd0e:dGe*dz  dLede:fd              Z eReLj                  j                  eLj                  j                  g      	 	 ddddd0e:dGedz  ee   z  dLedHej                  dz  deGdz  de:fd       Zd0eGdeGfdZ eReLj                        	 	 ddddd0e:dGedz  ee   z  dLedeGdz  de:f
d       Z eReLj                        	 	 dddd0e:dGe*dz  dLedeGdz  de:f
d       Z eReLj                        	 	 dddd0e:dGe*dz  dLedeGdz  de:f
d       ZddZ  eReLj                         eC       	 	 	 dddd0e:dGe*dz  dedz  dLede4dz  de:fd              Z eReLj                         eC       	 	 	 dddd0e:dGedz  ee   z  dedz  dLede4dz  de:fd              Z eReLj                        	 	 ddddd0e:dGe*dz  dLede:fd       Z eReLj                         eCdd      	 dddddd0e:dGe*dz  dedz  dLede4dz  f
d              Z eReLj
                         eCdd      	 	 	 dddd0e:dGe*dz  dedz  dLede4dz  f
d              Z eReLj                         eC        eAde,j                  /      ddddKe:de:de:de4dne4de:fd                     Zde:e
e:   z  de:de:ee:df   z  fdZdedGede:de:fdZde:e
e:   z  de:de:ee:df   z  fd Z	de:e
e:   z  de:de:ee:df   z  fdZ
	 dd0e:de7de8dedz  de:f
dZ eReLj                         eC       	 dd"e:de:de7de8dedz  de:fd              Zde7fdZeLj                  j                  j                  eIj                         eLj                  j                  j                  eIj"                        dee:   fd	              Zd0e:de7de:fd
Z eReLj&                         eC        eAde,j                  /      dde<dGede:fd                     Z eC       de<de:fd       Zd"e:de:fdZ eReLj,                         eC       	 dd"e:dee   d1e4de:fd              Zej.                  dd0eGdej                  deGfdZ eC       de<de:fd       Z eReLj4                        ddd0eGdedeGfd       Zd0eGdjeGdeGfdZdd0e:dedGedee:df   fdZdd0e:dedede:fdZ eReLj<                         eC       d0e:de)de:fd              Zd0e:de:fdZd0e:de:fdZ d0e:dGed ee:z  d!ede:f
d"Z!d0eGd#e*d$edeeGeGeGf   fd%Z"d6e:d&ee   de:fd'Z# eReLjH                  j                        d"eGd(eGdz  d)eGdz  d*ed+ed,ed-ed$edeeGeGeGf   fd.       Z$ eReLjJ                         eCddd/      d"eGd0e7d(eGdz  d)eGdz  d$edeeGeGeGf   fd1              Z%ejL                  jN                  jQ                  eLjJ                  j                        d2        Z) eReLjT                        d0e:de:fd3       Z* eReLjV                         eC       d"e:d4e5dGed5e5de:f
d6              Z+eLjX                  jZ                  j                  eIj                         	 	 	 	 	 	 	 	 	 dd"eGd7ed8edz  d9edz  d:eGdz  d;ed<ed=ed>edz  d?edz  d@edz  deGfdA       Z,eLj\                  j                  j                  eIj                         	 	 	 	 	 	 	 	 dd"eGd7ed8edz  d9edz  d:eGdz  d;ed=ed>edz  d!edz  deGfdB       Z.dCe7dDe8dEededFef
dGZ/ eReLj`                         eC       d0eGdeGfdH              Z0d0e:dIede:fdJZ1d0e:dIede:fdKZ2d0e:dLe7de:fdMZ3dKe:de:de:fdNZ4 eReLjj                         eC       dd0e:dOe*de*de:fdP              Z5 eReLjl                         eC       	 d d0e:dRede)de:fdS              Z6de<ddfdTZ7 eReLjp                         eC       dde<dGede:fdU              Z8 eC       	 dd0e:dGedHej                  dz  de:fdV       Z9 eC       de<de:fdW       Z: eC       de<de:fdX       Z;d0e:dGedYe7de:fdZZ< eReLjz                        dd[e:dGede<fd\       Z= eC       d6e9dGed]e9d^e9fd_       Z>d6e9dGed]e9d^e9fd`Z? eReLj                         eC       d6e9dGed]e9d1e4e9z  fda              Z@ eReLj                        d6e9dGed]e9d1e4e9z  fdb       ZAd6e9dGed]e9d1e4e9z  dcef
ddZB eC       ddmd6e9dGed]e9d^e9dne4f
de       ZC eReLj                         eC       d6e9dGed]e9fdf              ZD eReLj                  j                        dd0e:dGe*dz  de:fdg       ZE eReLj                        	 ddKeGdhee   dGedeeG   fdi       ZG	 dd0e:djeGe*z  dGedee:df   fdkZHd0e:dje*dee:df   fdlZId0e:dje*dee:df   fdmZJ eReLj                  j                         eC       	 ddKe:dnede:fdo              ZK eReLj                         eC       	 	 	 dd"e:de:dnedpedqede:fdr              ZM eReLj                        	 	 	 ddKe:dnedpedqede:f
ds       ZN eReLj                         eC       	 	 	 dd[e:dnedpedqede:f
dt              ZO eReLj                         eC       dee:   de:fdu              ZQdee:   de:fdvZPd0e:dwe*de<fdxZR eReLj                  j                        d0e:fdy       ZSd0e:de:fdzZT eReLj                        d0e:de:fd{       ZU eReLj                        d0e:d|edpede:fd}       ZVeVZW eReLj                        dKe:dEededFede:f
d~       ZX eReLj                         eC       dKe:dEededFefd              ZYdddd0e:dGedHej                  dz  deGdz  de:f
dZZ eReLj                        dddd0e:dGedHej                  dz  deGdz  de:f
d       Z[ eReLj                        dddd0e:dGedHej                  dz  deGdz  de:f
d       Z\ eReLj                        d0e:dGede:fd       Z] eReLj                  j                        d0e:dLe7ee7   z  de:fd       Z^dKe:de:de:fdZ_d0e:de:fdZ` eC       	 dd0ej                  dej                  dGedz  dej                  fd       Za eC       dej                  dddej.                  ddHej                  dz  dej                  de'dz  dededej                  de:fd       Zc eC       dej                  dddfdHej                  dz  dej                  de'dz  dedede:fd       Zd eReLj                         eC       dddddd0e:de7dHej                  dz  dej                  dz  de'dz  dede:fd              Ze eReLj                         eC       dddddd0e:de7de8dHej                  dz  dej                  dz  de'dz  dede:fd              Zf eReLj                  j                         eC       dej                  dddddHej                  dz  dej                  de'dz  dedede:fd              Zg eReLj                         eC       ddddddd0e:de7dHej                  dz  dej                  dz  de'dz  dedede:fd              Zh eReLj                  j                         eC       dej                  dddddHej                  dz  dej                  de'dz  dedede:fd              Zi eReLj                         eC       ddddddd0e:de7dHej                  dz  dej                  dz  de'dz  dedede:fd              Zj eReLj                         eC       dddddd0e:de7de4dHej                  dz  dej                  dz  de'dz  dede:fd              ZkeLj                  j                  j                  eIj                         	 dde:de:dej                  dz  de:fd       Zl eReLj                         eC       dddddej                  dd0e:dHej                  dz  de'dz  dej                  dz  dededej                  de:fd              Zm eReLj                  j                  eLj                  j                  g       eC       	 	 	 ddej                  ddddd e4de4dz  dFe4dHej                  dz  dej                  de'dz  dedede:fd              Zn eReLj                         eC        eAde,j                  /      d eGdeGd(eGe4z  fd                     Zq eReLj                         eC       ddej                  dddd e4e:z  de4e:z  de4dHej                  dz  de'dz  dej                  dedede:fd              Zr eReLj                         eC       	 dddej                  dddd e4e:z  de4e:z  de4de4dHej                  dz  de'dz  dej                  dedede:fd              Zsede
e:   defd       Ztede:defd       Zt eReLj                        de:ee:   z  ee:   z  dedee:   fd       Ztd"e:dee)z  dee)z  de:fdZu eReLj                         eC       ddej                  ddddLe7ee7   z  de8dHej                  dz  de'dz  dej                  dedede:fd              Zvdedej                  fdZw eReLj                         eC       	 ddej                  dddddededz  dHej                  dz  dej                  de'dz  dedede:fd              Zx eReLj                  j                  eLj                  j                  g       eC       dej                  dddddLe7de4dHej                  dz  dej                  de'dz  dedede:fd              Zydddddej                  dd0e:de4dHej                  dz  dej                  dz  de'dz  dededej                  de:fdZz eReLj                         eC       dddddej                  dd0e:dHej                  dz  dej                  dz  de'dz  dededej                  de:fd              Z{ eReLj                         eC       dddddej                  dd0e:dHej                  dz  dej                  dz  de'dz  dededej                  de:fd              Z| eReLj                  j                         eC       dddddddHej                  dz  de'dz  dej                  dz  dedede:fd              Z}dej                  dddd0e4dHej                  dz  dej                  de'dz  dede:fdZ~	 	 ddLe7deez  ez  deez  ez  de7dHej                  de'de:fdZ eReLj                          eC       d0e:de:d1e;fd              Z eReLj                        d0e:de:d1e;de:fd       Z	 	 	 dd0e:dje:dedededefdZd0e:dje:defdZ eReLj                         eCd      	 	 	 dddd"e:d4eez  dz  dGe*dz  dLedHej                  dz  de:fd              Z eReLj
                         eC       dKe:de:fdÄ              ZdĄ Z eeӫ      Z ee      Z ee      Z eReLj                         eC       dd0e:dede:fdƄ              Z eReLj                         eC       dd0e:dede:fdǄ              Zdedednedeeeef   fdʄZdedededHej                  dej                  defd˄Z eReLj                         eC       	 dej                  ej                  ddddedednedHej                  dej                  de'dede:fd̈́              Zdedednedeeeef   fd΄Z eReLj"                         eC       	 dej                  ej                  ddddedednedHej                  dej                  de'dede:fdτ              Z eReLj$                         eCd      dddМd0e;de:dedefdԄ              Z eReLj&                         eC        eAdJe,j                  /      ddՄ                     Z eReLj(                         eC        eAdJe,j                  /      ddք                     Z eReLj*                         eC        eAdJe,j                  /      ddׄ                     Z eReLj,                         eC        eAdJe,j                  /      d	d؄                     Z eReLj.                         eC        eAde,j                  /      	 	 	 dddddddڜdۄ                     Z eReLj0                        dQddܜd݄       Z eUe,j                        dKe:fdބ       Z eUe,j                        dKe:fd߄       Z eReLj6                         eC       ddGe*dz  fd              Zd Zd Z eReLj<                         eCd      e eAde,j                  /      d                             Z eReLj>                         eCd      e eAde,j                  /      d                             Z eReLj@                         eC       d6e:de:dGed]efd              Z eWeY      Z eWe[      Z eWe\      Z eWe      Z eWe׫      Z eWe֫      Z eWe]      Z eWe^      Z eWe_      Z eWe`      Z eWe      Z eWe      Z eWe      Z eWeb      Z eWe      Z eWe      Z eWe      Z eWec      Z eWeث      Z eWe٫      Z eWeګ      Z eWee      Z eWe      Z eWef      Z eWeg      Z eWe[      Z eWe\      Z eWe      Z eWeh      Z eWe      Z eWe      Z eWei      Z eWek      Z eWej      Z eWel      Z eWen      Z eWem      Z eWe      Z eWes      Z eWe      Z eWe      Z eWet      Z eWe      Z eWe      Z eWe      Z eWe      Z eWe      Z eWe      Z eWe      Z eWe      Z eWe«      Z eWeë      Z eWeq      Z eWe      Z eWe      Z eWe      Z eWe      Z eWe      Z eWeƫ      Z eWeǫ      Z eWeȫ      Z eWeɫ      Z eWeʫ      Z eWeͫ      Z eWe~      Z eWe      Z eWeΫ      Z eWe      Z eWeϫ      Z eWe      Z eWe      Z eWe      Z eWeЫ      Z eWe      Z eWe      Z eWe      Z eWe      Z eWe      Z eWe      Z eWe      Z eWe      Z eWe      Z eWeҫ      Z eWe      Z eWe      Z eWe      Z eWe      Z eWeӫ      Z eWe      Z eWeԫ      Z eWe      Z eWe      Z eWe      Z eWe      Z eWer      Z eeLj                        Z  eeLj                        Z eeLj                        Z eeLj4                        Z eeLjB                        Z eeLj                        Z eeLjT                        Z eeLj                        Z eeLj                        Z eeLjz                  d      Z	 eeLj                        Z
 eeLj                        Zd Zd Zd Zdej                  de;e<z  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y(
      N)CallableIterableSequence)Enum)partialreducesingledispatchwraps)AnycastOptionaloverloadUnion)	sym_floatsym_intsym_maxsym_min)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)highest_precision_float(  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 xs | j                   dk7  S )Nhputypedevices    T/media/conek/DATA/Code/OCR/venv/lib/python3.12/site-packages/torch/_refs/__init__.pyis_noncontiguous_supportedr;  q  s    T>1V[[E11    c                     d }ddl m} | D ]  }t        ||      s|j                  } n t	        |      s|j                         }|S )Nr   )
FakeTensor)torch._subclasses.fake_tensorr>  
isinstancefake_devicer;  r   )input_tlistoutputr9  r>  r   s        r:  handle_noncontiguous_outputsrD  u  sL    F8 a$]]F
 &f-""$Mr<  c            	        	
 ddl m}m}m}m} t
        j                  j                  j                  j                  }t        d t        d |       D              }t        |      dk(  ry |D ]   t        t              rt        d        dgt!        t"        d |D              z  
t%        |      D ]@  \  	t'        ddt              z
  d      D ]   |         r |
         r |   
   k(        r,|rv |         rk |
         r` |         } |
         }|dk(  r |dk7  rt        j(                     dk(         |dk(  r |dk7  rt        j(                  
   dk(          |   
   k(        r |
   dk(        r   dk  rt+        d	         
<    |         s |   dk(        rt        j(                  
      k(  	
fd
         C 
S )Nr   )guard_or_falseguarding_hint_or_throwhas_guarding_hintis_nested_intc              3   F   K   | ]  }t        |t              r|fn|  y wNr@  r   .0xs     r:  	<genexpr>z$_broadcast_shapes.<locals>.<genexpr>  s(       1g&A-s   !c                 
    | d uS rK   rO  s    r:  <lambda>z#_broadcast_shapes.<locals>.<lambda>  s
    !4- r<  zMInput shapes should be of type ints, a tuple of ints, or a list of ints, got    c              3   2   K   | ]  }t        |        y wrK  len)rN  shapes     r:  rP  z$_broadcast_shapes.<locals>.<genexpr>  s     4ESZ4s   z9Attempting to broadcast a dimension with negative length!c            
      ,    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 rR  )arg_idxcommon_shapeidxrY  s   r:  rT  z#_broadcast_shapes.<locals>.<lambda>  s<    LUSVZLX\]`\a b55<IU5' J22>A r<  )%torch.fx.experimental.symbolic_shapesrF  rG  rH  rI  torchfxexperimental_configbacked_size_oblivioustuplefilterrX  r@  r   RuntimeErrorr   max	enumeraterange_check
ValueError)_shapesrF  rG  rH  rI  	backed_soshapesabr\  r]  r^  rY  s            @@@@r:  _broadcast_shapesrr    sA     %%--CCI /9 F 6{a %*_`e_fg  	
.s4V45.6L $F+ 3R#e*_b1 2	CU3Z( !c!23#J,s"339  )%*5),s*;<.uSz:A.|C/@AAAv!q&U3Z1_5Av!q&\#%6!%;<!%*S0A"ABl3/145:>$S  %*#JS! s,c
a1P  %s3A[2	3j r<  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   X   K   | ]"  }t        |t              r|j                  nd  $ y wrK  )r@  r'   rY  rN  r   s     r:  rP  z#_maybe_broadcast.<locals>.<genexpr>  s"     	GQZ:.!''D
8	Gs   (*rp  rq  returnc                    ddl m}m}m} t	        |       t	        |      k7  ryt        | |      D ]Y  \  }} |||k7        r y | ||dk(  |dk(              rn | ||dk(  |dk(              r yt        j                  ||k(  d        [ y)Nr   )rF  sym_andsym_orTrU  c                       y)NzCsizes assumed to be the same due to unbacked broadcasting semanticsrR  rR  r<  r:  rT  z9_maybe_broadcast.<locals>.should_expand.<locals>.<lambda>      r<  F)r_  rF  ry  rz  rX  zipr`  rk  )rp  rq  rF  ry  rz  rO  ys          r:  should_expandz'_maybe_broadcast.<locals>.should_expand  s    	
 	
 q6SV1I 	DAqa1f%
 ga1fa1f56qAvqAv 67 LLQ]	( r<  c                    | y t        | t              r| S t        | t              r?rt        j                  |       r| S  | j
                        r| j                        S | S t        dt        t        |             z   dz         )Nz#Unexpected type when broadcasting: !)
r@  r!   r'   utilsis_cpu_scalar_tensorrY  r   rg  strr7  )rO  rY  r]  rs  r  s     r:  __maybe_broadcastz+_maybe_broadcast.<locals>.__maybe_broadcast  s}    96"H:&*u/I/I!/LQWWl3xx--H5DGDsJ r<  c              3   0   K   | ]  } |        y wrK  rR  )rN  rO  r  r]  s     r:  rP  z#_maybe_broadcast.<locals>.<genexpr>  s     B"1l3Bs   )rr  r%   boolre  )rs  argsr  r]  r  s   ` @@@r:  _maybe_broadcastr    sH    $	G$	GL y T @$ BTBBBr<  )register_decompositionF)aten_op
extra_metaexact_dtyperw  c                ,     dt         f fd}|S )Nprimc                     t               t              t        t        d      dt        dt        f fd                            }t
        u r t        j                    j                         t              |       |S )Nr  rp  type_promoting_argstype_promotion_kindrp  rw  c                 B     |         |       }t        | g|      S rK  )rD  )rp  rC  r  r  s     r:  _refz>_make_elementwise_unary_reference.<locals>.inner.<locals>._ref*  s*     %1!WF/V<<r<  )
r
   r0   r/   r.   r(   infer_aten_opr  get_aten_op__name__r  )r  r  r  r  r  r  s   ` r:  innerz0_make_elementwise_unary_reference.<locals>.inner'  s     
t		-	)	+ & 3

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

 
* 
. 
	= m#''dmm<G+"7+D1r<  r   )r  r  r  r  r  s   ```` r:  !_make_elementwise_unary_referencer     s    H  0 Lr<  c                       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 rK  rR  )r  kwargsfns     r:  _fnz_make_alias.<locals>._fnJ  s    4"6""r<  r  )r  inspectcurrentframef_back	f_globals
__module__)r  namer  s   `  r:  _make_aliasr  B  s7    # CL))+22<<ZHCNJr<  c                      t                fd       } j                   d}||_         t        t        t        |            |      }ddlm}  |       j                  }||vr|j                  |       |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|d| i|S )NoutrR  )rp  r  r  r  s      r:  r  z_make_inplace.<locals>._fnY  s    !,d,,V,,r<  _r   )	getmodule)	r
   r  r  getattratenr  r  __all__append)r  r  inplace_namer  _alls   `    r:  _make_inplacer  R  sz     2Y- - kk]!$LCL
=
 |!<
=c
BC "R=  D4L!Jr<  r  c                 ,    t        j                  |       S rK  )primsr2   r  s    r:  r2   r2   k  s    
 99Q<r<  c                 ,    t        j                  |       S rK  )r  r3   r  s    r:  r3   r3   s      ::a=r<  c                 ,    t        j                  |       S rK  )r  r4   r  s    r:  r4   r4   x      ;;q>r<  c                 ,    t        j                  |       S rK  )r  r6   r  s    r:  r6   r6   }  r  r<  c                 ,    t        j                  |       S rK  )r  r5   r  s    r:  r5   r5     r  r<  c                 ,    t        j                  |       S rK  )r  r7   r  s    r:  r7   r7     r  r<  c                 ,    t        j                  |       S rK  )r  r8   r  s    r:  r8   r8     r  r<  c                 ,    t        j                  |       S rK  )r  r9   r  s    r:  r9   r9     s    Qr<  c                 ,    t        j                  |       S rK  )r  r:   r  s    r:  r:   r:         
 ::a=r<  inputc                 @    t        j                  | j                        S rK  )r  is_complex_dtypedtyper  s    r:  r0  r0    s    !!%++..r<  c                 n    t        j                  | j                        s| S t        j                  |       S rK  )r  r  r  r  r;   r  s    r:  r;   r;     s,     !!%++.u%%r<  c                 ,    t        j                  |       S rK  )r  r<   r  s    r:  r<   r<         99Q<r<  c                 ,    t        j                  |       S rK  )r  r=   r  s    r:  r=   r=     r  r<  c                 ,    t        j                  |       S rK  )r  r@   r  s    r:  r@   r@         ==r<  c                 ,    t        j                  |       S rK  )r  rA   r  s    r:  rA   rA     r  r<  c                 ,    t        j                  |       S rK  )r  erf_invr  s    r:  rB   rB     r  r<  c                 ,    t        j                  |       S rK  )r  rC   r  s    r:  rC   rC     r  r<  c                 ,    t        j                  |       S rK  )r  rD   r  s    r:  rD   rD     r  r<  c                 ,    t        j                  |       S rK  )r  rE   r  s    r:  rE   rE     r  r<  c                 ,    t        j                  |       S rK  )r  rG   r  s    r:  rG   rG     r  r<  r  r  rp  valuec                    t        | t              st        dt        |              t        |t              st        dt        |             t        j                  | j                        }t        j                  t        |      |      sdt        |       d| d}t        |      t        j                  | |      S )Na must be TensorLike, got zvalue must be Number, got value argument of type  cannot be safely cast to type r  )r@  r'   AssertionErrorr7  r!   r  r   r  r    rl  r  rH   )rp  r  python_typemsgs       r:  rH   rH     s     a$9$q'CDDeV$9$u+GHH%%agg.K&&tE{K@'U}4ST_S``abo::ar<  c                 ^    t        j                  | |      }t        j                  | |       | S rK  )r  rH   r   )rp  r  rs      r:  rI   rI     s%    

1eA	MM!QHr<  c                 ,    t        j                  |       S rK  )r`  r,  r  s    r:  r*  r*    s     E""r<  c                 ,    t        j                  |       S rK  )r  rJ   r  s    r:  rJ   rJ         
 ;;q>r<  rO  c                     t        j                  t        j                  t        j                  |             t        j                  |             }t        j
                  | |      S rK  )r`  r   rJ   r2   rm   r   )rO  trunc_xs     r:  rK   rK     s>    
 iiEIIaL15::a=AG99Q  r<  c                     t        | t              st        dt        |              t	        j
                  t        j                  | j                        d        t        j                  |       S )Nr  c                       y)Nz#imag only supports complex tensors.rR  rR  r<  r:  rT  zimag.<locals>.<lambda>  r|  r<  )r@  r'   r  r7  r`  rk  r  r  r  r  r   r  s    r:  r   r     sT    a$9$q'CDD	LLqww')V ::a=r<  )r  c                     t        j                  | j                        st        j                  | j                        rt	        j
                  |       S t        | t        j                        S )Nr  )	r  is_float_dtyper  r  r  rS   r'  r`  r  r  s    r:  rS   rS     sG    
 AGG$(>(>qww(G~~a  Qejj))r<  c                    t        j                  | j                        rNt        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  )r  r  r  r`  r   rT   r   r   r  r2   floatr,  r  r  s    r:  rT   rT     s    agg&ejjm 4eEJJqM6JKKAGG$yy|uU|++AUZZ00r<  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   r:  rT  zisposinf.<locals>.<lambda>/      I!''S r<  r  r  	r`  rk  r  r  r  r  r  r,  r  r  s   `r:  rU   rU   (  sc    
 
LL""177++S AGG$E%L  AUZZ00r<  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   r:  rT  zisneginf.<locals>.<lambda>=  r  r<  z-infr  r  r  s   `r:  rV   rV   6  sc    
 
LL""177++S AGG$E&M!!AUZZ00r<  c                 .    t        j                  | |       S rK  r  r   r  s    r:  rW   rW   D  s    88Aq>r<  rb   c                     t        j                  | j                        rt        j                  |       dk(  S t        j
                  | t        j                        S )Nr   r  )r  r  r  r`  r   r'  r  r  s    r:  rX   rX   M  s>    
 agg&zz!}!!??1EJJ//r<  c                 ,    t        j                  |       S rK  )r  	bessel_i0r  s    r:  rY   rY   X  s     ??1r<  c                 ,    t        j                  |       S rK  )r  r[   r  s    r:  r[   r[   _  s    <<?r<  c                 ,    t        j                  |       S rK  )r  r\   r  s    r:  r\   r\   d  r  r<  c                 ,    t        j                  |       S rK  )r  r]   r  s    r:  r]   r]   i  r  r<  c                 ,    t        j                  |       S rK  )r  r^   r  s    r:  r^   r^   n  r  r<  c                 ,    t        j                  |       S rK  )r  r_   r  s    r:  r_   r_   s  r  r<  dimr  c                     |xs | j                   }t        j                  |      }t        | |      }t        |t	        ||d      z
  |      S )NTkeepdim)r  r  get_computation_dtyper+   r   )rp  r  r  result_dtypecomputation_dtypea_s         r:  ra   ra   y  sK     #AGGL33LA	 $5	6B"2	"c4(H#H,WWr<  selfr  r  c                 B   t        |t              s|f}| j                         dk(  r8t        j                  t        j
                  |       ||      j                         S t        j                  t        j                  |       |d      }t        j                  ||j                         t        d      k(  d      }|r|nt        j                  ||      }t        j                  t        j
                  | |z
        ||      }|j                         j                  |      S )Nr   Tr  r  )r@  r   numelr`  r   rD   r\   r   r   r   r2   r  r   ry   )r  r  r  maxesmaxes_squeezedresults         r:  r   r     s     c8$fzz|qyy4#w7;;==JJuzz$'d;EeUYY[E%L%@!DE%U5==+DNYYuyy.W=F::<N++r<  nanposinfneginfc                    t        | t              st        dt        |              t	        j
                  | j                        st	        j                  | j                        r| j                         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'   r  r7  r  is_boolean_dtyper  is_integer_dtyper   r`  finforh  minr   rW   rV   rU   )rp  r  r  r  r
  s        r:  re   re     s     a$9$q'CDDagg&%*@*@*Iwwy
{~QWW%))~QWW%))[[Qa0F[[*FF;F[[*FF;FMr<  c                 f    t        j                  | j                  t         j                  ud        y )Nc                       	 y)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.rR  rR  r<  r:  rT  z_neg_meta.<locals>.<lambda>  s      r<  )r`  rk  r  r  r  s    r:  	_neg_metar    s#    	LL	uzz!	
r<  )r  c                 ,    t        j                  |       S rK  )r  rf   r  s    r:  rf   rf     s     99Q<r<  c                     t        | t              st        dt        |              | j                  t
        j                  u rd}t        |      | S )Nr  z'positive does not support bool tensors.)r@  r'   r  r7  r  r`  r  rg  )rp  r  s     r:  rg   rg     sH    a$9$q'CDDww%**73Hr<  c                     t        | t              st        dt        |              t	        j
                  | j                        rt        j                  |       S | S )Nr  )	r@  r'   r  r7  r  r  r  r  r   r  s    r:  r   r     sH    a$9$q'CDDagg&zz!}Hr<  c                 ,    t        j                  |       S rK  )r  ri   r  s    r:  ri   ri     s    Ar<  )decimalsr  c                    |dk(  rt        j                  |       S d|z  }d| z  }t        j                  t        j                  t        j                  | |            |      S )Nr   
   )r  rj   r   )rp  r  ten_powten_neg_pows       r:  rj   rj     sS     1}{{1~h,hY'yyUYYq'%:;[IIr<  c                 ,    t        j                  |       S rK  )r  r   r  s    r:  r   r     r  r<  c                 R    t        dt        dt        t        |                         S NrU  )r   ry   rD   rf   r  s    r:  rk   rk     s    q#aSV-..r<  c                     t        j                  | j                        r-| j                         }t	        j
                  |dk(  d| |z        S | j                         S Nr   )r  r  r  r2   r`  r   rm   )rp  a_abss     r:  rl   rl     sG    
 agg&{{5A:q!e)44vvxr<  c                 ,    t        j                  |       S rK  )r  rm   r  s    r:  rm   rm   	  r  r<  c                 ,    t        j                  |       S rK  )r  rn   r  s    r:  rn   rn     s    
 ==r<  c                 ,    t        j                  |       S rK  )r  ro   r  s    r:  ro   ro     r  r<  c                     t         j                  | z  } t        j                  | dk(  dt        j                  |       | z        S Nr   rU  )mathpir`  r   ro   r  s    r:  rp   rp      s3    !A;;qAvq%))A,"233r<  c                 ,    t        j                  |       S rK  )r  rq   r  s    r:  rq   rq   &  r  r<  c                 ,    t        j                  |       S rK  )r  rs   r  s    r:  rs   rs   +  r  r<  c                     t        | |       S rK  )r   r  s    r:  rt   rt   0  s    
 q!9r<  c                 ,    t        j                  |       S rK  )r  ru   r  s    r:  ru   ru   8  r  r<  c                 ,    t        j                  |       S rK  )r  rv   r  s    r:  rv   rv   =  r  r<  c                 ,    t        j                  |       S rK  )r  rx   r  s    r:  rx   rx   B  r  r<  c                    | j                   t        j                  t        j                        fd       | j                         }t        j                  t        |      dk7  d        t        j                  |d   dk(  d        | j                         }t        j                  |d   dk(  d        |d d }t        j                  t        j                  d	 |D              d
        t        j                  | j                         dz  dk(  d        t        j                  | t        j                              j                  d      S )Nc                      d  S )Nz^view_as_complex is only supported for floating pointtensors, but got a tensor of scalar type: rR  )input_dtypes   r:  rT  z!view_as_complex.<locals>.<lambda>O  s     55@MC r<  r   c                       y)Nz-Input tensor must have one or more dimensionsrR  rR  r<  r:  rT  z!view_as_complex.<locals>.<lambda>U  r|  r<  rZ     c                       y)Nz+Tensor must have a last dimension of size 2rR  rR  r<  r:  rT  z!view_as_complex.<locals>.<lambda>Y  r|  r<  rU  c                       y)Nz/Tensor must have a last dimension with stride 1rR  rR  r<  r:  rT  z!view_as_complex.<locals>.<lambda>_  r|  r<  c              3   ,   K   | ]  }|d z  dk(    yw)r7  r   NrR  )rN  strides     r:  rP  z"view_as_complex.<locals>.<genexpr>c  s     8VaZ1_8   c                       y)NzCTensor must have a stride divisible by 2 for all but last dimensionrR  rR  r<  r:  rT  z!view_as_complex.<locals>.<lambda>d  r|  r<  c                       y)Nz0Tensor must have a storage_offset divisible by 2rR  rR  r<  r:  rT  z!view_as_complex.<locals>.<lambda>h  r|  r<  )r  r`  rk  r  r  sizerX  r;  builtinsr   storage_offsetr  view_element_typecorresponding_complex_dtyper   )r  sizesold_stridesdimsr5  s       @r:  r  r  K  s   **K	LL[)	C
 IIKE	LLE
a? 
LLb	Q=
 ++-K	LLB1A sD	LL8488U 
LL!Q&B ""e//<gbkr<  c           	      <     dt         f fd}|S )Nr  c                 N     j                   t               t        d	      dt        t        z  dt        t        z  dt        f fd              }r t               |      }|_         t        u rt        j                         r t              |       |S )Nrp  rq  r  rp  rq  rw  c                 |   t        j                  xs t        | t               fd       t        j                  xs t        |t               fd       t        j                  xs# t        | t              xr 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!rR  r  s   r:  rT  zQ_make_elementwise_binary_reference.<locals>.inner.<locals>._ref.<locals>.<lambda>      4& !> > r<  c                        dS )Nzc: Received a rhs Python scalar to an elementwise binary operation that does not accept rhs scalars!rR  rL  s   r:  rT  zQ_make_elementwise_binary_reference.<locals>.inner.<locals>._ref.<locals>.<lambda>  rM  r<  c                        dS )Nz?: Receive two Number inputs to an elementwise binary operation!rR  rL  s   r:  rT  zQ_make_elementwise_binary_reference.<locals>.inner.<locals>._ref.<locals>.<lambda>  s    4& _` r<  )r`  _check_valuer@  r!   r  rD  )rp  rq  rC  r  r  supports_lhs_python_scalarsupports_rhs_python_scalarsupports_two_python_scalarss      r:  r  z?_make_elementwise_binary_reference.<locals>.inner.<locals>._ref~  s     *G*Q2G.G>
 *G*Q2G.G>
 + I"1f-G*Q2GH`
 $Aq)DAq!QZF/A??r<  )
r  r
   r.   Tensorr"   r0   r  r  r  r  )
r  r  r  has_outr  should_register_decompositionrQ  rR  rS  r  s
   ` r:  r  z1_make_elementwise_binary_reference.<locals>.innery  s    <==D	t	+ * 3

	@
"	@
"	@ 	@ 	@	

 

	@.  ;=&Dm#''d3G#@+"7+D1r<  r  )	r  r  r  rU  rQ  rR  rS  rV  r  s	   ```````` r:  "_make_elementwise_binary_referencerW  o  s    *H * *X Lr<  rq  c                     t        | t              r| j                  S t        |t              r|j                  S t        j                  t        |             S rK  )r@  r'   r  r  type_to_dtyper7  rI  s     r:  _binary_op_dtyperZ    s?     !Z ww!Z wwtAw''r<  rI  alphar\  c                   t        | |      \  } }|t        | |      }t        j                  |      }|t        ur<t        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
    alpha argument of type r  r  )r  rZ  r  r   r  r    r7  rl  r@  r'   r  r   ry   rD  rp  rq  r\  r  r  r  rC  s          r:  ry   ry     s      Aq!DAq A&))%0d"5+F+FK,
 ,DK=8WXcWddefCS/!a$		!U#AE	AYYq!_F'A77r<  )r  rQ  rR  c                 .    t        j                  | |      S rK  )r  rz   rI  s     r:  rz   rz          ;;q!r<  )r  c                 .    t        j                  | |      S rK  )r  r{   rI  s     r:  r{   r{          Q""r<  c                 .    t        j                  | |      S rK  )r  
shift_leftrI  s     r:  r|   r|          Aq!!r<  c                 .    t        j                  | |      S rK  )r  r}   rI  s     r:  r}   r}     rf  r<  c                 .    t        j                  | |      S rK  )r  shift_right_arithmeticrI  s     r:  r~   r~     s     ''1--r<  c                 .    t        j                  | |      S rK  )r  r   rI  s     r:  r   r     rc  r<  )r  rQ  c                    t        |t              r3t        | t              r#t        || j                  | j
                        }nat        | t              rQt        |t              rA| j
                  |j
                  k7  r(d| j
                   d|j
                   d}t        |      t        t        |      t        t        |             t        |             S )Nr  r9  /Expected divisor (b) to be on the same device (&) as dividend (a), but it is found on r  )r@  r!   rT  r)  r  r9  rg  r   rn   rf   r2   )rp  rq  r  s      r:  r   r     s    
 !VAv!6!177188<	Av	:a#8QXX=Q?zIopqpxpxoyyz{3SQ[#a&11r<  )rounding_modero  c                    |t        | |      S |dk(  rt        | |      S |dk(  rt        | |      S d| d}t        |      )z/
    Reference implementation of torch.div
    rx   rJ   zLdiv expected rounding_mode to be one of None, 'trunc', or 'floor' but found .)r   r   r   rl  )rp  rq  ro  r  s       r:  r   r     s\     1a  	'	!Aq!!	'	!Aq!!\]j\kklmor<  c                 .    t        j                  | |      S rK  )r  r   rI  s     r:  r   r   *      
 88Aq>r<  c                    t        | t              st        |t              st        d      t        |t              r9|dk(  r| j	                         S |dk(  r| | z  S |dk(  rt        j                  |       S t        | t              rs| dk(  rt        j                  |d      S | dk(  rSt        j                  |j                        st        j                  |j                        rt        j                  |      S t        j                  | |      S )Nz-at least one of a or b must be TensorLikeType      ?g       @      ?T)r@  r(   r  r!   r   r`  rs   rH   r  r  r  r  rG   r  r   rI  s     r:  r   r   2  s     q.)Z>-JLMM!V8779#Xq5L#X::a= 	Av	8::a&&8  )U-C-CAGG-L::a= 99Q?r<  c                 p   t        | t              rt        |t              rt        d      t        j                  | |      }|t        d      t        j                  |      rt        j                  }nt        j                  }t        | |      } t        ||      }t        | |      \  } }t        | |      S )Nz=Receive two Number inputs to an elementwise binary operation!z/dtype should not be None after get_higher_dtype)r@  r!   rl  r  get_higher_dtyper  r  r`  
complex128float64r+   r  r   rp  rq  r  s      r:  r   r   P  s    
 !VAv!6K
 	

 ""1a(E}NOOe$  
 	 5)A5)AAq!DAqq!9r<  )r  rS  rV  c                    t        | t              r(t        |t              rt        |       } t        |      }n*t        |t              r3t        | t              r#t        || j                  | j
                        }nt        | t              r3t        |t              r#t        | |j                  |j
                        } nt        | t              rt        |t              r| j
                  |j
                  k7  rk| j
                  t        j
                  d      k(  r(d| j
                   d|j
                   d}t        |      t        j                  || j
                        }t        | t              rt        |t              st        d      | j                  t        j                        rt        | |      S t        j                        rt        | |      S t        j                   dfd	       y )
Nrl  cpurm  rn  r  r8  z*a and b must both be Tensors at this pointFc                        dS )Nz not supported for floor_dividerR  r  s   r:  rT  zfloor_divide.<locals>.<lambda>  s    ug-L$M r<  )r@  r!   r)  rT  r  r9  r`  rg  r  
device_putr  r  r  _floor_divide_floatr  _floor_divide_integerrk  )rp  rq  r  r  s      @r:  r   r     se    !VAv!6!!	Av	:a#8!177188<	Av	:a#8!177188<	Av	:a#8QXX=Q88u||E**CAHH:Mstut|t|s}}~Cs##  1884Aq&!jF&;IJJGGEE""1a((				&$Q**UMNr<  c                 t   t        | |      \  } }| j                  j                  st        j                  | |      S t        j                  |       t        j                  |      k7  j                  t        j                  | |      dk7        }t        j                  | |      t        || j                        z
  S r$  )
r  r  	is_signedr  r   r`  rn   r   r   r+   )rp  rq  offsets      r:  r  r    s    Aq!DAq77yyA mmA%--"22??

1a@PTU@UVF99Q?4VQWWEEEr<  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   rU  rv  rl  )r   r   r   r   r   r   r{   r   rJ   r   ry   r)  r  r9  r   )
rp  rq  modr   different_signed_inputsnon_zero_remaindermask	floor_div	basic_divzero_tensors
             r:  r  r    s    
q!*C
c!Sk1
%C *"Q(Bq!H=C)+BCD
c#qk3
'C c
Ic#y!3'DdC	1-y9IAq!IAQAQRK baj)Xk9-MNI Aq9i00r<  c                 .    t        j                  | |      S rK  )r  r   rI  s     r:  r   r          ::ar<  c                 .    t        j                  | |      S rK  )r  r   rI  s     r:  r   r     r  r<  c                 .    t        j                  | |      S rK  )r  r   rI  s     r:  r   r     r  r<  mantissaexponentc                 f    t         j                  j                  t        j                  |             S rK  )r`  return_typesfrexpr  r  s    r:  r  r    s$     ##EKK$566r<  c                 .    t        j                  | |      S rK  )r  r   rI  s     r:  r   r     s     99Q?r<  c                 .    t        j                  | |      S rK  )r  r   rI  s     r:  r   r     rs  r<  c                 .    t        j                  | |      S rK  )r  r   rI  s     r:  r   r     rs  r<  valuesc                    t        j                  | d      }t        j                  t        j                  | d      t        j                  |             }t        j
                  |dd      }t        j
                  |||      }|S r*  )r`  r   r   r   rW   r   )r  r  input_eq_zeroinput_lt_zerozeros_and_onesrC  s         r:  r   r     sc     HHUA&M$$UXXeQ%7U9KLM[[15N[[?FMr<  c                 .    t        j                  | |      S rK  )r  r   rI  s     r:  r   r     ra  r<  c                 .    t        j                  | |      S rK  )r  r   rI  s     r:  r   r   #  s     <<1r<  c                 .    t        j                  | |      S rK  )r  r   rI  s     r:  r   r   ,  s     ==Ar<  r  rtolatolc                      t        j                  j                  j                  k(   fd       t        j                  dk\   fd       t        j                  dk\   fd       y )Nc                  B     d j                    dj                    dS )Nz4: Attempting to compare tensors of different dtypes  and r  r  )rp  rq  r  s   r:  rT  z#_check_close_args.<locals>.<lambda>>  s)    4&LQWWIUZ[\[b[bZccde r<  r   c                        d dS )Nz6: rtol must be greater than or equal to zero, but got r  rR  )r  r  s   r:  rT  z#_check_close_args.<locals>.<lambda>B      4&NtfTUV r<  c                       d  dS )Nz6: atol must be greater than or equal to zero, but got r  rR  )r  r  s   r:  rT  z#_check_close_args.<locals>.<lambda>F  r  r<  )r`  rP  r  rk  r  rp  rq  r  r  s   `````r:  _check_close_argsr  5  sV     
	177e 
LL	V 
LL	Vr<  	equal_nanc           
         t        d| |||       t        | |      }|rft        j                  | j                        st        j
                  | j                        r(t        |t        t        |       t        |                  }|dk(  r|dk(  r|S t        j                  | j                        sot        j
                  | j                        sPt        j                  | t        j                               } t        j                  |t        j                               }t        |t        t        ||                  }t        t!        | |            }t        |t        t#        |      t%        ||                  }|S )Nztorch.iscloser  r   )r  r   r  r  r  r  r   r   rW   r  convert_element_typer`  get_default_dtypery   r2   r   r   rS   r   )	rp  rq  r  r  r  closeallowed_erroractual_errorr
  s	            r:  r   r   K  s    ?a14dKq!HEe**1773u7M7Magg7V5+eAha"AB qyTQY (1G1G1P&&q%*A*A*CD&&q%*A*A*CDc#a,/0Ms1ay>L {8L12lM3RSF Mr<  c                    | j                   }|t        j                  t        j                  fv }|rHt	        j
                  | t        j                        } t	        j
                  |t        j                        }t        j                  | |      }t        j                  |dk(  d|      }t        j                  t	        j                  | |      |z        }|s|S t	        j
                  ||      S r*  )r  r`  int8int16r  r  int32r   r   r2   r   )rp  rq  r  promote_to_intgress         r:  r   r   v  s     GGE uzz5;;77N&&q%++6&&q%++6		!QAAFAq!A
))EIIaOa'
(C$3P%*D*DS%*PPr<  c                 .    t        j                  | |      S rK  )r  r   rI  s     r:  r   r     rs  r<  c                    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  )r`  r   r   r   r   rS   r  r  r  r\   rD   r]   rW   complexr  )
rp  rq  r  max_min_inf_maskneg_min_maskinf_valsnon_nan_valsnan_masks
             r:  r   r     s    ::a=EJJqM)D;;tQ"D;;tQ"D  %..A78%**Q-5::VW=:XH agg&%*@*@*Izz$'!+;;$		%))D/EIIdO*K L
 {{hu{{599TD[3I'J J
 ;;t${{8WU5\5<%H,WW{{8Qu{{599TD[;Q/R(RSSr<  c                 ,   t        j                  t        j                  | j                        xs 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                       y)Nz)logaddexp2 doesn't support complex dtypesrR  rR  r<  r:  rT  zlogaddexp2.<locals>.<lambda>  r|  r<  ru  r7  )r`  rk  r  r  r  r   r   rT   r+  r\   r]   rG   )rp  rq  r  r  r  r  	inv_log_2r
  s           r:  r   r     s     
LL##AGG,O0F0Fqww0OP;
 6D;;tQ"D;;tQ"D  Qa8Hdhhqk!IEKK

4$; 789DDF;;xF++r<  c                     t        j                  | j                        s| dk7  } t        j                  |j                        s|dk7  }| |z  S r$  r  r  r  rI  s     r:  r   r     C     !!!''*F!!!''*Fq5Lr<  c                 P    t        j                  | j                        s| dk(  S |  S r$  r  r  s    r:  r   r     s$    !!!''*Av2Ir<  c                     t        j                  | j                        s| dk7  } t        j                  |j                        s|dk7  }t        | |      S r$  )r  r  r  r}   rI  s     r:  r   r     sG     !!!''*F!!!''*Far<  c                     t        j                  | j                        s| dk7  } t        j                  |j                        s|dk7  }| |z  S r$  r  rI  s     r:  r   r     r  r<  c                 .    t        j                  | |      S rK  )r  r   rI  s     r:  r   r     rs  r<  c                 .    t        j                  | |      S rK  )r  r   rI  s     r:  r   r          ==Ar<  c                 .    t        j                  | |      S rK  )r  r   rI  s     r:  r   r     r  r<  )r  rS  c                 .    t        j                  | |      S rK  )r  r   rI  s     r:  r   r     s    
 99Q?r<  c                 .    t        j                  | |      S rK  r  rI  s     r:  r   r     rs  r<  c                 .    t        j                  | |      S rK  )r  r   rI  s     r:  r   r     s     ??1a  r<  c                 .    t        j                  | |      S rK  )r  r   rI  s     r:  r   r     s     ??1a  r<  rU  c                 l    t        | t              rd}t        |      t        j                  || |      S )Nz?Received a Number for the first argument, but expected a Tensorr[  )r@  r!   rl  r`  r   )rp  rq  r\  r  s       r:  r   r   $  s0     !VOo99Q''r<  c                   t        | |      \  } }t        | t              rgt        |t              rWt        j                  t        j                  | j                         xr  t        j                  |j                         d        |dk7  rt        | |      }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                       	 y)NzwSubtraction, the `-` operator, with two bool tensors is not supported. Use the `^` or `logical_xor()` operator instead.rR  rR  r<  r:  rT  zsub.<locals>.<lambda>I  s    C r<  rU  r^  r  r  )r  r@  r'   r`  rk  r  r  r  rZ  r   r    r7  rl  rT  r  r   r   rD  r_  s          r:  r   r   4  s     Aq!DAq!Z Z:%>&&qww//W8N8Nqww8W4W	
 z A&))%0**4;D+DK=8WXcWddefCS/!a&		!U#A
 E	AYYq!_F'A77r<  r   )r  r  r  rS  c                 .    t        j                  | |      S rK  )r  r   rI  s     r:  r   r   a  s     99Q?r<  c           
          t        j                  t        | t              xs t        |t              d        t        |t              r3t        | t              r#t        | |j                  |j                        } nBt        | t              r2t        |t              r"t        || j                  | j                        }t        | t              st        dt        |              t        |t              st        dt        |             t        j                  t        j                  | d      dt        j                  | t        j                  |                  }t        j                  t        j                  |      t        d      |      S )Nc                       y)Nz/Expected either argument a or b to be a Tensor"rR  rR  r<  r:  rT  zxlogy.<locals>.<lambda>t  r|  r<  rl  r  zb must be TensorLike, got r   r  )r`  rk  r@  r'   r!   r)  r  r9  r  r7  r   r   r   r\   rW   r  )rp  rq  rhss      r:  r   r   k  s    
LL1j!>Z:%>A !Z Z6%:!177188<	Az	"z!V'<!177188< a$9$q'CDDa$9$q'CDD
++ehhq!na1eiil)C
DC;;u{{1~uU|S99r<  )r  r  rS  c                     t        j                  |       }t        j                  |      rt        j                  | |      S t        t        j                  | |            S rK  )r  	get_dtyper  r  r   rx   r{  s      r:  r   r     sE     OOAEe$yyA1a!!r<  )r  tensor1tensor2r  r  r  c                    X| j                   }t        j                  |      t        j                  t        j
                  t                    fd       | |z  |z  z   S )z3
    Reference implementation of torch.addcdiv
    c                  (    dt               d  dS Nr  r  r  r6  r  r  s   r:  rT  zaddcdiv.<locals>.<lambda>      -d5k]:YZeYffgh r<  r  r  r   r`  rP  r    r7  r  r  r  r  r  r  s      ` @r:  r   r     _      

))%0''U[Ah	

 %'/G+++r<  c                    X| j                   }t        j                  |      t        j                  t        j
                  t                    fd       | |z  |z  z   S )z3
    Reference implementation of torch.addcmul
    c                  (    dt               d  dS r  r6  r  s   r:  rT  zaddcmul.<locals>.<lambda>  r  r<  r  r  s      ` @r:  r   r     r  r<  )rp  r  rh  r  rh  c                    ||d}t        |      |Vt        j                  |       }t        j                  t        j                  | |      |      }t        j
                  || |      } |Vt        j                  |       }t        j                  t        j                  | |      |      }t        j
                  || |      } | S )Nz+clamp called but both min and max are none!)rl  r`  rW   r}   r   r   r   )rp  r  rh  r  a_isnan	conditions         r:  r   r     s     {s{;o
++a.$$UXXa%5w?	
 KK	1c*
++a.$$UXXa%5w?	KK	1c*Hr<  c                 0    t        j                  | |      S )N)r  r`  r   )r  r  s     r:  r   r          ;;t%%r<  c                 0    t        j                  | |      S )N)rh  r  )r  rh  s     r:  r   r     r  r<  pred.c                 0    t        j                  | d      S )NT)as_tuple)r`  nonzeror  s    r:  _where_defaultr  	  s    ==--r<  c                      ||t         t        j                   ||d       t        j                   j
                  t        j                  u  fd       t         ||      \   }}t        j                   ||      S ) Tallow_cpu_scalar_tensorsc                  "    d j                    S )Nz#expected predicate to be bool, got r  r  s   r:  rT  zwhere.<locals>.<lambda>%  s    5djj\B r<  )
NotImplementedErrorr  check_same_devicer`  rk  r  r  r  r  r   )r  rp  rq  s   `  r:  r   r     sp    " 	yAI!!	D!QF	LL

ejj B
 "$1-JD!Q;;tQ""r<  memory_formatr  c                4    t        j                  | |      }|S Nr  )r  r   )rp  r  r
  s      r:  r   r   /  s    
 [[-8FMr<  )allow_cross_devicec                    |sA| j                   |j                   k7  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!)r9  rg  r  r   )rp  rq  r  r  s       r:  r   r   8  sM    !((ahh"6/zQXXJNxy3==Ar<  c                     | j                         dk7  rd| j                          d}t        |      t        j                  | j                        } |t        j                  |             S )NrU  zCan't convert a tensor with z elements to a number!)r  rl  r  r   r  r  r   )rp  r  number_types      r:  r   r   @  sW    wwyA~,QWWYK7MNo %%agg.Kuzz!}%%r<  r9  copylayout
pin_memorynon_blockingc                     | xrw |d u xs | j                   |k(  xr` |d u xs | j                  |k(  xrI |d u xs | j                  |k(  xr2 |d u xs, |t        j                  k(  xs t        j                  | |      S r  )r9  r  r  r`  preserve_formatr  is_contiguous_for_memory_format)rp  r9  r  r  r  r  r  r	  s           r:  _to_will_aliasr  M  s      
	
t^1qxx61
	
d].agg.
	
 t^1qxx61
	
 T! U 5 55U44QmTr<  c                      t         rK  )r  )r  r  s     r:  _to_dispatchr  f  s    
r<  c                     | ||||d}|S N)r9  r  r	  r  r  rR  r9  r  r	  r  r  r  s         r:  
_to_devicer  k  s!     $&F Mr<  c                 <    t        j                  |       ||||d}|S r  )r`  r9  r  s         r:  _to_device_strr  }  s*     ,,v&$&F Mr<  c                     | |||d}|S )N)r  r	  r  r  rR  )r  r	  r  r  r  s        r:  	_to_dtyper    s     $&	F Mr<  otherc                 `    | j                   }| j                  }| j                  }||||||d}|S )N)r9  r  r  r	  r  r  )r9  r  r  )r  r	  r  r  r9  r  r  r  s           r:  	_to_otherr    sA     \\FKKE\\F $&F Mr<  	to_kwargsc                    g d}d|v r.t        |d   t              rt        j                  |d         |d<   |D ]  }||v s|dk(  r||   t        j                  u st|dk(  r[||   j
                  | j                  j
                  k(  r5||   j                  r:||   j                  | j                  j                  k(  st        | |d       ||   k(  s|j                  |        y )N)r  r9  r  r  r9  r  )	r@  r  r`  r9  r  r7  indexr  pop)rp  r  options_to_checkkws       r:  _canonicalize_to_argumentsr!    s    E9Ih,?!E#ll9X+>?	( "?&9R=E<Q<Q+Q(N!"**ahhmm;%bM//9R=3F3F!((..3X Ar4(IbM9 b!"r<  c                    t        |      dk7  rt        |i |}d|v rt        d      t        | |       t	        | fi |r| S d|v r|j                  d      nd}d|v r|j                  d      nd}|s)|j                  d| j                        | j                  k7  r>|s<d|vr8d	|vr4d
|vr0t        j                  | |j                  d| j                              S t        j                  | fi |}t        ||        |S )Nr   r  z#pin_memory is not supported in refsr  Fr	  r  r  r9  r  )rX  r  r  r!  r  r  getr  r  r  r`  r  r   )rp  r  r  r  r	  r
  s         r:  r   r     s    
4yA~t.v. vBCCq&)a"6"!'6!16::fuD1?61I6::n-uL 
&**Wagg.!''9F*V#V# ))!VZZ-IJJa*6*FFAMr<  )has_identityaccepts_dim_tuplerF  keepdimsr  r  r  r$  r%  rF  r&  r  output_dtype_kindc                    t         t              st        dt                       j                  dkD  rt        d j                   d      |Ct        |t              st        dt        |             |||j                  k7  rt        d      |s)|'t        |t              st        dt        |             t        |t              r|f}t        j                   j                  |      }|s<dd	lm}	  j                  dk(  xs  |	 fd
|D         }
t        j                  |
d        t        j                   ||      \  }}t!         |        | |      }|rst#         j                        D cg c]  }||vr j                  |   nd }}t#         j                        D cg c]	  }||vs| }}t%        j&                  |||      }|L|t        d      |||j                  k7  rt        d      t)        ||j                        }t+        ||      S |j                  |k7  r|t%        j,                  ||      }|S c c}w c c}w )Nr  @   zReceived a tensor with z? dimensions, but only tensors with up to 64 dims are supported!out must be TensorLike, got z4dtype argument and out dtype must match in reductionzdims must be None or Dim, got r   )ry  c              3   B   K   | ]  }j                   |   d kD    ywr   NrY  rN  irp  s     r:  rP  z_reduction.<locals>.<genexpr>	  s     .L!qwwqzA~.Ls   c                       y)NzJreducing over zero-size dimension for reduction operation without identityrR  rR  r<  r:  rT  z_reduction.<locals>.<lambda> 	  r|  r<  rU  z4result_dtype should not be None when out is providedz7Expected the dtype of reduction result and out to match	copy_fromr   )r@  r'   r  r7  ndimrg  r  r   r  reduction_dimsrY  r_  ry  r`  rk  reduction_dtypesr+   rj  r  broadcast_in_dimr,   r-   r  )rp  r  r$  r%  rF  r&  r  r  r'  ry  valid_shaper  r  r
  r/  output_shapebroadcast_dimss   `                r:  
_reductionr:    sG    a$9$q'CDDvv{%affX-lm
 	
 #z* #?S	{!KLL		!"J  
4 5 #A$t*!NOO$w.DAffkMW.Lt.L%M`	

 ',&<&<	e'#| 	 #45A!T]FDI!&&MRqatm
:RR%*166]Datm!DD''nM
 !WXX!:I   V\\2<<|||#(@++FLAM# SDs   :I/	I9Ic                 J    t        t         j                        }t         di       } t        d      |       t	               dd fd
       } j                   d}||_        |j
                  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| y | |S t        j                  d |      S )Nr  c                 B    | j                  t        j                        S r  )r   r`  contiguous_formatrS  s    r:  rT  z3_make_copy_from_view.<locals>._fn.<locals>.<lambda>P	  s    aggE,C,CgD r<  )pytreetree_map)r  r  r  r
  r  return_none_on_out_variants       r:  r  z!_make_copy_from_view.<locals>._fnG	  sB    T-s-f-%#/?MD
 	
r<  _copy)r  r  r  r0   r
   r<  updater  )r  rC  aten_fnannotationsr  	copy_names   ``    r:  _make_copy_from_viewrI  =	  s     dBKK(G"/4K 
'	&w	/B
2Y 

 

 ;;-u%ICL{+47434S9Jr<  c                     t        j                  t        j                  t        j                  |       ||            }| j                  t         j                  k(  r |j                  t         j                        }|S )Nr  r  )r`  r   r   r  uint8r   )rp  r  r  r
  s       r:  r   r   [	  sU     uyy):):1)=sGTUFww%++-Mr<  c                 h   t        | t        j                        }t        |t        t
        f      rt        |      dk(  r|j                         }n"|j                  ||      j                  d      }| j                  t        j                  u r$t        j                  |t        j                        S |S )Nr   )r  r  F)r+   r`  r  r@  listre  rX  r   r   r   r  rK  r  r  )rp  r  r  r  r
  s        r:  r   r   j	  s     
!EJJ	/B#e}%#c(a-C144U; 	ww%++))&%++>>Mr<  )r  r  c          	      N   |j||j                   }n[t        j                  | j                         st        j                  | j                         rt        j
                  }n| j                   }|dk(  s|g k(  rd }t        | t        j                  ||||t        j                        S NrR  rF  r&  r  r  r'  )r  r  r  r  r`  int64r:  r  r   r$   SAMErp  r  r  r  r  s        r:  r   r   ~	  s     }?IIE##AGG,0F0Fqww0OKKEGGE
byC2I			499 r<  c           
      
    t        j                  d      t        j                  t        j                   j
                         fd       t        j                   j
                        r#t              dkD  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-  rp  rY  s   r:  rT  zsum_to_size.<locals>.<lambda>	  s    %eW,I!''RST r<  r   c              3   \   K   | ]#  }|z
     d k(  rj                   |   d k7  r| % ywrU  Nr-  )rN  r/  rp  leading_dimsrY  s     r:  rP  zsum_to_size.<locals>.<genexpr>	  s9      5\!"a'AGGAJ!O 	
5s   ),T)r  r  r  )r  extract_shape_from_varargsr`  rk  is_expandable_torY  is_same_shaperX  r  view_ofr3  re  rj  r   )rp  rY  reduce_dimsr\  s   `` @r:  r   r   	  s     ,,UUCE	LLuagg.T 5!''*s5zA~}}Q66CJ&Ll+,u 5|SZ05 0 K
 99QKTBBr<  c          	      N   |j||j                   }n[t        j                  | j                         st        j                  | j                         rt        j
                  }n| j                   }|dk(  s|g k(  rd }t        | t        j                  ||||t        j                        S rO  )r  r  r  r  r`  rQ  r:  r  r   r$   rR  rS  s        r:  r   r   	  s     }?IIE##AGG,0F0Fqww0OKKEGGE
byC2I	

499 r<  r=  c          
      x    |dk(  s|g k(  rd }t        | t        j                  ||d |dt        j                        S NrR  FrF  r&  r  r  r$  r'  )r:  r  r   r$   rR  rp  r  r  r  s       r:  r   r   	  E     byC2I	

499	 	r<  c          
      x    |dk(  s|g k(  rd }t        | t        j                  ||d |dt        j                        S rd  )r:  r  r   r$   rR  rf  s       r:  r   r   	  rg  r<  c                 6    |t        | t              r| }d } | |fS rK  )r@  r  )r  unbiaseds     r:  _dim_var_dispatchrk   
  s'     JsD1=r<  
correctionrj  rm  c          
          t        ||      \  }}t        j                  ||      }|dk(  s|g k(  rd }t        | t	        t
        j                  |      ||d d dt        j                        }|S )NrR  rl  Tre  )	rk  r  set_correctionr:  r   r  r   r$   COMPLEX_TO_FLOAT)rp  r  rj  r  rm  r
  s         r:  r   r   

  sr     &c84MC%%h
;J
byC2I			j14EE	F Mr<  c                @   t        ||      \  }}t        j                  ||      }t        j                  | t        j
                        \  }}t        | |      } t        j                  | |||      }t        j                  |      }|t        d      t        ||      S N)rm  r  z/dtype should not be None after reduction_dtypes)rk  r  ro  r5  r$   rp  r+   r`  r   rs   r  )	rp  r  rj  r  rm  opmath_dtyper  a_vara_stds	            r:  r   r   '
  s     &c84MC%%h
;J00	%66L% 	 <0AIIaWEEJJuE}NOO"5%00r<  c          	         	 |dk(  s|g k(  rd }	 j                   t         t        j                  ||d t        j
                        }t        j                  t        j                        xs 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)        ||      }|Jt        |t*              st-        dt/        |             t1        ||j                        }t3        ||      S |S )	NrR  rP  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: rR  )r  
orig_dtypes   r:  rT  zmean.<locals>.<lambda>Y
  s'    4$,w*= >77<g? r<  r   rU  c              3   <   K   | ]  }j                   |     y wrK  r-  r.  s     r:  rP  zmean.<locals>.<genexpr>b
  s     7Qq
7Qs   r*  r1  )r  r:  r  r   r$   KEEP_PROMOTED_TYPEr`  rk  r  r  r  r@  r   r4  rY  r3  r   operatorr   r   r+   r'   r  r7  r,   r-   )
rp  r  r  r  r  r
  rF  nelemr  ry  s
   `  `     @r:  r   r   ?
  sA    byC2IJ}			4GGF 
LLU#Du'='=e'D	
 #sf-D1A&7QD7QST"UE'F#m177L$V\:F
#z* #?S	{!KLLV\\2<<Mr<  out0out1)rj  r  rm  c                v   t        ||      \  }}t        j                  ||      }t        j                  | t        j
                        \  }}| j                  }t        | |      } t        j                  | |||      \  }}	t        j                  |      }
|t        d      t        |
|      t        |	|      fS rr  )rk  r  ro  r5  r$   rp  r  r+   r`  r   rs   r  )rp  r  rj  r  rm  rs  r  original_dtypert  a_meanru  s              r:  r   r   n
  s     &c84MC%%h
;J00	%66L% WWN<0ANN1cj'RME6JJuE}NOOu-7 r<  c                b    t        ||      \  }}t        | ||||      }t        | ||      }||fS )Nrl  )rk  r   r   )rp  r  rj  r  rm  vms          r:  r   r   
  s=     &c84MCAsHg*=AQWAa4Kr<  )r  vec1vec2)betar\  r  r  r  c                    t        j                  j                  dk(  fd       t        j                  j                  dk(  fd       dfdffD ]  \  }t        |t              st        j                  t        j                   j                        xr@ t        j                  j                        xr t        j                  j                        fd         j                  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                        S t        j                   d
      S t        j                   rt        j                              S 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 )NrU  c                  $    d j                    dS )Nz*addr: Expected 1-D argument vec1, but got -Dr3  )r  s   r:  rT  zaddr.<locals>.<lambda>
      <TYYKrJ r<  c                  $    d j                    dS )Nz*addr: Expected 1-D argument vec2, but got r  r  )r  s   r:  rT  zaddr.<locals>.<lambda>
  r  r<  r\  r  c                      d  dS )NzBoolean z$ only supported for Boolean results.rR  )arg_names   r:  rT  zaddr.<locals>.<lambda>
  s    (8*,PQ r<  r   c                       dt                S )Nzexpected bool/int beta but got r6  )r  s   r:  rT  zaddr.<locals>.<lambda>
  s    5d4j\B r<  c                       dt                S )Nz expected bool/int alpha but got r6  r[  s   r:  rT  zaddr.<locals>.<lambda>
  s    6tE{mD r<  Fc                  :    dt                dj                   S Nzcannot safely convert z to r7  r  )r  r  s   r:  rT  zaddr.<locals>.<lambda>
  s    ,T$ZLTZZLI r<  c                  :    dt                dj                   S r  r  )r\  r  s   r:  rT  zaddr.<locals>.<lambda>
  s    ,T%[Mdjj\J r<  )r`  rk  r3  r@  r  r  r  r  r   rY  r    r7  intouterr  r   r   )r  r  r  r  r\  argr  s   ````` @r:  r   r   
  s    
LL		QJ 
LL		QJ !'*T6N; Xc4 LL&&tzz2 7**4::67**4::6Q	 ;;tzz!}djjm4Ddjj)!$t*c2B	
 	!$u+s3D	
 .35;;tT*Uu9UU##+0D$' 6;oodE6R 
 	!$t*mDJJ.GHI	
 	!$u+}TZZ/HIJ	
 195;;tT222$;T4)@!@@@r<  r  r  c                    |s't        | t        j                  j                        r| }n5t        | t        j                  j                        rt	        d      | f|z   }t        d |D              }t        |      dkD  r|S |d   S )z5Reference implementation of :func:`torch.atleast_1d`.2arg should not be a Sequence when args is providedc              3   V   K   | ]!  }|j                   d k\  r|nt        |d       # yw)rU  r   N)r3  r  rN  rp  s     r:  rP  zatleast_1d.<locals>.<genexpr>
  s%     E!QVVq[i1o5Es   ')rU  r   )r@  collectionsabcr   r  re  rX  )r  r  args_r  s       r:  r   r   
  ss     JsKOO$<$<=c;??334 !UVV
EuE
ECc(Q,3*CF*r<  at_least_fnc                 x     | |      }t        |t              st        dt        |             t	        ||      S )Nz(at_least_fn must return TensorLike, got )r@  r'   r  r7  r  )r  r  r  arg_s       r:  _unsqueeze_atleastr  
  s<     sDdJ'GT
|TUUT3r<  c                 <   |s't        | t        j                  j                        r| }n5t        | t        j                  j                        rt	        d      | f|z   }t        t        t        d      t        fd|D              }t        |      dkD  r|S |d   S )z5Reference implementation of :func:`torch.atleast_2d`.r  r   c              3   P   K   | ]  }|j                   d k\  r|n |        yw)r7  Nr  )rN  rp  unsqueeze_atleast_1ds     r:  rP  zatleast_2d.<locals>.<genexpr>
  &     M!QVVq[&:1&==M   #&rU  )
r@  r  r  r   r  r   r  r   re  rX  )r  r  r  r  r  s       @r:  r   r   
  s     JsKOO$<$<=c;??334 !UVV"#5z1E
MuM
MCc(Q,3*CF*r<  c                 <   |s't        | t        j                  j                        r| }n5t        | t        j                  j                        rt	        d      | f|z   }t        t        t        d      t        fd|D              }t        |      dkD  r|S |d   S )z5Reference implementation of :func:`torch.atleast_3d`.r  rZ  c              3   P   K   | ]  }|j                   d k\  r|n |        yw)   Nr  )rN  rp  unsqueeze_atleast_2ds     r:  rP  zatleast_3d.<locals>.<genexpr>  r  r  rU  r   )
r@  r  r  r   r  r   r  r   re  rX  )r  r  r  r  r  s       @r:  r   r     s     JsKOO$<$<=c;??334 !UVV"#5z2F
MuM
MCc(Q,3*CF*r<  r?  r;  rA  c                 Z    ||n| j                         }t        j                  | |||      S rK  )rA  r  r   )rp  r?  r;  rA  storage_offset_ints        r:  r   r     s6     )4!:J:J:L  AtV-?@@r<  srcc                 @    |dn|}t        j                  | ||||      S r$  )r  r   )r  r  r?  r;  rA  r  s         r:  r   r     s+     -4.##E3f>PQQr<  c                  8    t        j                  t        |        S rK  )r`  Sizerr  )ro  s    r:  r   r   ,  s    ::'011r<  c                  v    t        |       dk(  rt        | d   t              s| d   } t        t	        | ddi      S )NrU  r   rs  F)rX  r@  rT  rM  r  tensorss    r:  r   r   0  s<     7|qGAJ!?!* 'MuMNNr<  c                     t        |      t        | j                        z
  }t        t        |t        | j                        |z               }t	        j
                  | ||      S rK  )rX  rY  re  rj  r  r6  )rp  r?  startrF  s       r:  r   r   9  sK    IAGG$Euc!''lU234D!!!T400r<  r  r  c                   
 d }t        |       dk(  rd}t        |      | D ])  }t        |t              rt	        dt        |              t        j                  | ddi ddlm	} d 
t        |       D ]\  \  
j                  dk7  s
j                  dk7  s+t        j                  j                  
j                  k(  
fd	       ^ 
| d   

j                  }g }t        |       D ]  \  }t        |      t        |j                        k7  rX|j                  dk7  rt	        d
|j                         t        j                   ||j                  d   dk(        
fd       |j                  dk(  r ||j                  d   dk(        r|j                  |         ||       }t        |      dk(  rE| d   	 t!        t#        d | D                    }	t'        dj(                  j*                  |	|      S t        j,                  |d   j                  |      }t        j.                  |d   j                  |       t1        j2                  ||      j5                  |      S # t$        $ r d}	Y w xY w)Nc                     d }| D ]I  }t        j                  |      }|t        j                  k(  r|c S |||k7  rt        j                  c S |}K |t	        d      |S )Nz,format should not be None if len(inputs) > 0)r  suggest_memory_formatr`  r@  r  )inputsformatr   fs       r:   cat_compute_output_memory_formatz-cat.<locals>.cat_compute_output_memory_formatF  sn     	A++A.AE+++!fk...F	 > !OPPr<  r   z3cat expects at least one tensor, but received zero!ztensor must be TensorLike, got r  FrF  rU  c                  D    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 listr  )exampler/  r   s   r:  rT  zcat.<locals>.<lambda>y  s0       '~-A!&& J%%&C|5 r<  z+tensor.ndim should be 1 at this point, got c                  *    d j                    d dS )Nr  z*-D tensors, but got 1-D for tensor number r  r  )r  
tensor_idxs   r:  rT  zcat.<locals>.<lambda>  s$     #LL> *!!+L: r<  c              3   4   K   | ]  }|j                     y wrK  )requires_gradrM  s     r:  rP  zcat.<locals>.<genexpr>  s     $FQ__$F   r   r  r9  r  r  r  )rX  rl  r@  r'   r  r7  r  r  r_  rF  ri  r3  r`  rk  rY  r  r  r   	Exceptionr  r  r9  canonicalize_dimvalidate_idxr  r   r   )r  r  r  r  tensorrF  rY  filteredr  r  r  r/  r   r  s             @@@@r:  r   r   ?  so    7|qCo S&*- #B4<.!QRRS 
WEuED$ G'" 1?vv{vv{FFgll*5  !*MMEH'0 $
Fu:V\\**{{a$A&++O  LL v||A!34:$ {{aN6<<?a3G$HOOF#9$< 5W=M
8}AJ	" !$Fg$F!FGM ''88''
 	
 
 
 !!1!13
7C	x{''-99Xs#)))FF  	"!M	"s   I9 9JJc                 >    t        d | D              }t        |d      S )Nc              3      K   | ]6  }|j                   d kD  r|n |j                  |j                         d f       8 ywr[  )r3  r   r  rM  s     r:  rP  zcolumn_stack.<locals>.<genexpr>  s7      ;<QVVaZQYY	1~66s   <>rU  )re  r   r  aligned_tensorss     r:  r   r     s(     @G O ""r<  c                     t        j                  | j                        s| S | j                  rt	        j
                  |       S t        j                  |       S rK  )r  r  r  	is_sparser`  r;   r  r   r  s    r:  r   r     s@    !!%++.""5))::er<  padc           	        
 t        j                  t              dz  dk(  fd       | j                  t              t              dz  }|z
  t        j                  |k\  fd       | }t	              D ]t  
d
z
  dz
  z     dk  r*|j                  
    |j                  
      z         }dz      dk  sL|j                  
d|j                  
   dz      z         }v t        j                  d D              r|j                         S t        d        }t	        |      D ]^  
t              
dz   dz  z
  
z         z   dz      z   }t        j                  |dk\  
fd       |j                  |       ` t        j                  |       }t        j                  || j                  | j                  | j                   |      }|dk(  r| j                  t         j"                  k(  rd	}t        j$                  ||      }|}	t	              D ]s  
d
z
  dz
  z     dk\  r)|	j                  
   |	j                  
      z
        }	dz      dk\  sK|	j                  
d|	j                  
   dz      z
        }	u t'        j(                  |	|       |S )
Nr7  r   c                       dt                S )Nz1Length of pad must be even but instead it equals rW  )r  s   r:  rT  z!constant_pad_nd.<locals>.<lambda>  s    CCH:N r<  c                  (    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.rW  )l_inpr  s   r:  rT  z!constant_pad_nd.<locals>.<lambda>  s"     225c(;P' r<  rU  c              3   &   K   | ]	  }|d k    ywr,  rR  )rN  ps     r:  rP  z"constant_pad_nd.<locals>.<genexpr>  s     'aAE's   c            	      F    d z       d    ddz       d z    d	S )NzThe input size z, plus negative padding r  rU  zG resulted in a negative output size, which is invalid. Check dimension z of your input.rR  )r/  input_sizesl_diffr  pad_idxs   r:  rT  z!constant_pad_nd.<locals>.<lambda>  sG    ok&1*&=%>>V7|nE#gk"2!3 4117!OM r<  r  F)r`  rk  rX  rY  rj  r   r@  r   r   rM  r  r  r  r  r  r9  r  r  rH   r  r   )r  r  r  l_padc_input	new_shapenew_dimr  rC  c_outputr/  r  r  r  r  s    `        @@@@@r:  r   r     s   
 
LLC1N
 ++KEHMEU]F	LL	 G65! Puqy1}%w<!nnQWw}}Q7G#g,7VWGw{annQ7==+;c'A+>N+NOGP" ||'3''}}[&)*I5\ 	"c(q1uk*fqj)CL83w{;KKqLM	
 	!	" //6M[[kk||))#F zekkUZZ/ZZ&FH65! Suqy1}%w<13w<!2S\!AH w{q q!X^^A->Wq[AQ-QRHS 
MM(G$Mr<  c                    t        j                  |t         j                  k7  d        t        | |      r| S t        j                  | |      S )Nc                       y)Nz@preserve memory format is unsupported by the contiguous operatorrR  rR  r<  r:  rT  zcontiguous.<locals>.<lambda>-  r|  r<  r  )r`  rk  r  r   r   )rp  r  s     r:  r   r   (  sC     
LL...R 0O;;q66r<  c                 p    t        j                  t        |       dkD  d        t        |  }t	        |d      S )Nr   c                       y)Nz%dstack expects a non-empty TensorListrR  rR  r<  r:  rT  zdstack.<locals>.<lambda>9  r|  r<  r7  )r`  rk  rX  r   r   r  s     r:  r   r   7  1    	LLW!#RS '*O""r<  )implicitr  c                   ddl m}m}m}m} t
        j                  j                  j                  j                  }t        |      dk(  r!t        |d   t              rt        |d         }t        j                  t        |      t        | j                        k\  d        t        |      t        | j                        z
  }t!        |      }	t#        | j                        D ]  \  }
|
|z   }||    |dk(        r|	|<   !|rB |      r: |      r2 |      } |      }|dk(  r|dk7  rt        j                  dk(         t        j                   |dk(  k(        fd       t        j                  dk\         |	|<    t%        j&                  |	       t)        j*                  | |	t        t-        |t        | j                        |z                     S )Nr   )rF  rG  rH  rz  rU  c                       y)Nz3expand: the requested shape has too few dimensions!rR  rR  r<  r:  rT  zexpand.<locals>.<lambda>Q  r|  r<  rZ  c                      d d  dS )Nz3expand: attempting to expand a dimension of length  -> r  rR  )requested_lengthrO  s   r:  rT  zexpand.<locals>.<lambda>{  s    MaSPTUeTffgh r<  )r_  rF  rG  rH  rz  r`  ra  rb  rc  rd  rX  r@  r   re  rk  rY  rM  ri  r  validate_shaper  r6  rj  )rp  r  rY  rF  rG  rH  rz  rn  r  shape_r^  
offset_idxx_hintrequested_hintr  rO  s                 @@r:  r   r   >  s     %%--CCI
 5zQ:eAh9eAh	LLE
c!''l"E
 Z#agg,&F%[FAGG$ (2Q6\
 , *b01!"F: %a(%&67/2!78H!IQ;>Q#6LLa(LLqAv/145h LL)Q./!1F:Q(2V 
 !!	65vs177|f'<=> r<  c                 8    | j                  |j                        S rK  )r   rY  rI  s     r:  r   r     s    88AGGr<  chunksc           	         |dk  rd| d}t        |      t        j                  | j                  |      }| j                  |   }t        j                  ||z        }t        j                  ||z        }||z  }t        |      D cg c]  }t        | |||z  |       }	}|dk7  r |	j                  t        | |||z  |             t        |	      S c c}w )Nr   z%Expected at least one chunk, but got r  )rl  r  r  r3  rY  r+  r:   rJ   rj  r   r  re  )
rp  r  r  r  length
chunk_sizefull_chunkstail_chunk_sizer/  r
  s
             r:  r   r     s    {5fXQ?o

 
 
-CWWS\F6F?+J**Vj01Kz)OBGBTUQfQQ^Z8UFU!fQ[:%=OP= Vs   C	start_dimend_dimc                 F   t        j                  | j                  |      }t        j                  | j                  |      }||k(  r| j                  dk7  r| S t        j                  | ||d       \  }}|t        j
                  | ||      S t        j                  | ||      S )Nr   must_be_valid)r  r  r3  r  _collapse_view_helpercollapse_viewcollapse)rp  r  r   r  _new_stridess        r:  r   r     s    &&qvvy9I$$QVVW5G G!
 $99	9gTI| ""1i99 >>!Y00r<  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@  re  rM  rl  r  canonicalize_dimsr3  validate_no_repeating_dimsr  rev)rp  rF  s     r:  r   r     sX     dE":dD+A<==""16640D	$$T*99Qr<  c                 N    | j                   dk  rt        d      t        | d      S )Nr7  zInput must be >= 2-d.rU  r3  rg  r   r  s    r:  r   r     %    vvz2334=r<  c                 N    | j                   dk  rt        d      t        | d      S )NrU  zInput must be >= 1-d.r  r  r  s    r:  r   r     r  r<  r  r  c                 F   t        t              rYt        j                  j	                         dk(  xr t        j                  j                        d        j                         t        t              t        j                  | j	                         dkD  d        t        j                  dk\  d        t        j                  | j                  |      }| j                  |      t        j                  t         k  xr k  fd       dk  rz   t        j                  z
  k  fd       t!        | j"                        }||<   | j%                  || j'                         | j)                         | j'                  |      z  z         S )Nr   c                       y)Nz'start must be an 0-dim integral Tensor.rR  rR  r<  r:  rT  znarrow.<locals>.<lambda>  r|  r<  c                       y)Nz-narrow() cannot be applied to a 0-dim tensor.rR  rR  r<  r:  rT  znarrow.<locals>.<lambda>  r|  r<  c                       y)Nz&narrow(): length must be non-negative.rR  rR  r<  r:  rT  znarrow.<locals>.<lambda>  r|  r<  c                      d   d  d dS )Nz0start out of range (expected to be in range of [, z], but got )rR  )
dim_lengthr  s   r:  rT  znarrow.<locals>.<lambda>  s%    BJ;-rR\Q]]hinhoopq r<  c                      d d d  dS )Nzstart (z) + length (z) exceeds dimension size (z).rR  )r  r  r  s   r:  rT  znarrow.<locals>.<lambda>  s    '%VH4NzlZ\] r<  )r@  r'   r`  rk  r  r  r  r  r   r   r  r  r3  r?  _check_with
IndexErrorrM  rY  r   r;  rA  )rp  r  r  r  r  r  s     `` @r:  r   r     sP   
 %$IIK1D!7!7!D=	
 

eE	LL1UV	LL1NO

 
 
-CJ		u4*!4q
 qy
"	LLf$$] QWWIIcN<<188:q//1AHHSME4II r<  	norm_dimsepsc                 h   t        j                  | j                  |      }t        j                  | j                        }t        | |      }t        |t              st        dt        |             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.
    za_acc must be TensorLike, got FTr  rj  r  )r  r	  r3  r   r  r+   r@  r'   r  r7  r`  r   r   )	rp  r  r  r  a_acc
biased_varr   rstdr  s	            r:  
_normalizer#    s    $ ''	:I33AGG<#A'89EeZ(=d5k]KLL~~9udJ ;;zC'(D4<4
Cd?r<  
dimensionsc                 R    t        |      D ]  }t        j                  | |      }  | S rK  )sortedr`  r  )rO  r$  r  s      r:  _unsqueeze_multipler'    s+    j! $OOAs#$Hr<  weightbias
batch_sizenum_channelsflattened_inner_size
num_groupsc                 n    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   }|j                         j                  ||g|d
g      }|j                         j                  ||g|d
g      }t        t!        d j                              }t#        ||      }t#        ||      }|	|z  |z   }nl||z
  |z  }|j%                   j&                        }dgt        t!        d j                              z   }|t#        ||      }||z  }|t#        ||      }||z   }t        | j
                        }t        | j
                        }t        | j
                        }t        j(                  ||
      }t        j(                  ||
      }|||fS )Nr7  c                  "    d j                    S )Nz=Expected at least 2 dimensions for input tensor but received r  r  s   r:  rT  z#native_group_norm.<locals>.<lambda>(  s    OPUPZPZ|\ r<  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   r:  rT  z#native_group_norm.<locals>.<lambda>,  s#    V#EKK=0B:,
OP r<  r  FTr  r}  rU  )r`  rk  r3  r  r   r  r+   r   r	  r   r   r9  r7  r   r   rM  rj  r'  r
  rY  r   )r  r(  r)  r*  r+  r,  r-  r  r  	input_accr4  input_reshapedr!  r   r"  weight_reshapedwrq  bias_reshapedr9  unsqueeze_wunsqueeze_br  unsqueeze_weightunsqueeze_biass   `     `                  r:  r   r     s    
LL

a\ 
LLz!Q&	P 33EKK@'/@AIVN]]	Z!;=QRN ,,^-@-@.QN~~NUDJ ;;zC'(D||E!f&8--Q
LJ$>B
 ?"EAI!MMq*lj&@!DM M!ALLN%%z<&@<QRBSTLLN%%z<&@<QRBSTeAuzz23)!^<)!^<+%3$,hhu{{#tE!UZZ$89926>J((C0~FN&C
!#u{{
3C"45D"45D ==~.D==~.Dtr<  out2normalized_shapec                     ddl m} t              }t        j                  |dk\  fd       t        j                  d u xs  |j
                  t                    fd       t        j                  d u xs  |j
                  t                    fd       t        j                   j                  |k\  xr,  | j
                   j                  |z
  d  t                     fd       t        j                   j                          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_eqrU  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 = )r  )r;  s   r:  rT  z#native_layer_norm.<locals>.<lambda>q  s     I

  r<  c                  R    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 = r  rY  )r;  r(  s   r:  rT  z#native_layer_norm.<locals>.<lambda>{  s5     
fll
 %% 
	  r<  c                  R    dt         j                        z   dz   t              z   S )NzMExpected bias to be of same shape as normalized_shape, but got bias of shape rA  rB  )r)  r;  s   r:  rT  z#native_layer_norm.<locals>.<lambda>  s4     
djj/ %% 
	  r<  c                  p    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 rB  )r  r;  s   r:  rT  z#native_layer_norm.<locals>.<lambda>  sK    )

 
() 
  %	%
 ekk
 r<  c                       y)Nz1native_layer_norm does not support complex inputsrR  rR  r<  r:  rT  z#native_layer_norm.<locals>.<lambda>  r|  r<  )r}  mtia)r_  r>  rX  r`  rk  rY  re  r3  r0  r   rM  rj  r#  r+   r  r9  r7  )r  r;  r(  r)  r  r>  normalized_ndimaxisr4  r  r   r"  s   ````        r:  r   r   c  s    =*+O	LL1	  
LL$G&u5E/FG	  
LLCtzz51A+BC	  
LL

o% 	
KKo589"#
	 
LLC
 uEF#$::'D%ejj12N <OCt~$*Dj		Fl		 0FlT!
!#u{{
3C||O+&tU[[9&tU[[9tr<  c                     t        | S rK  )r   )	fake_modefuncr  r  s       r:  native_layer_norm_fakerL    s    d##r<  c                     t        j                  | j                  t        j                  |            }t	        j
                  | |      S rK  )r  r	  r3  extract_dims_from_varargsr  r  )rp  rF  _permutations      r:  r   r     s9    **	//5L ??1l++r<  r  maxnormc                 h  	 t        j                  t        |t               d        t        j                  |dkD  d        t        j                  t        t               d        t        j                  dk\  fd       | j                  	t        j                  	dkD  	fd       t        j                  	|      }t        t        	            }||= t        j                  | j                        }|| j                  k7  r%t         j                  j                  | ||d|	      }n#t         j                  j                  | ||d
      }d}t        j                  |kD  ||z   z  d      }|| j                  k7  r t        j                  || j                        }| |z  j!                         S )Nc                       y)Nzrenorm: p must be real-valuedrR  rR  r<  r:  rT  zrenorm.<locals>.<lambda>  r|  r<  r   c                       y)Nz'renorm: non-positive norm not supportedrR  rR  r<  r:  rT  zrenorm.<locals>.<lambda>  r|  r<  c                       y)Nz#renorm: maxnorm must be real-valuedrR  rR  r<  r:  rT  zrenorm.<locals>.<lambda>  r|  r<  c                      d  S )Nz,renorm: expected maxnorm to be >= 0 but got rR  )rP  s   r:  rT  zrenorm.<locals>.<lambda>  s     LWIV r<  rU  c                      d  dS )Nz/renorm: input needs at least 2 dimensions, got  dimensionsrR  r  s   r:  rT  zrenorm.<locals>.<lambda>  s    A${S r<  T)r  r  r  gHz>ru  )r`  rk  r@  r  r3  r  r  rM  rj  r   r  linalgvector_normr   r  r  r   )
r  r  r  rP  ra  acc_typerc   r  norm_factorr3  s
      `     @r:  r1  r1    so   
 
LLZ7++-TU	LLQIJ	LLw((*W 
LL1V ::D	LLqS
 
 
 s
+CuT{#KC **5;;7H5;;||''1k4x ( 
 ||''q+t'L
C++dWng.DcJK5;;00ekkJK++--r<  n_fft
hop_length
win_lengthwindowcenterpad_mode
normalizedonesidedreturn_complexalign_to_windowc                     t        j                  d u xs j                   j                  k(   fd       t        j                  | xs |
d u d        ||ndz  ||n|	O j                         xs% d uxr t	        j
                  j                        }t        j                  |d        n|	}t        j                  t	        j                   j                        xs t	        j
                   j                        d        t        j                  d j                  cxk  xr dk  nc d         j                  }|dk(  r j                  d	       |rd
 j                  z
  }dz  }g t        j                  d|       j                  }t        j                   j                  |      ||g|        j                   j!                         |d          j!                  d      t        j                  d	cxk  xr k  nc fd       t        j                  d	kD  fd       t        j                  d	cxk  xr k  nc fd       t        j                  d u xs j                  fk(  fd       k  rT,t        j"                   j                   j                        z
  dz  }t        j%                  |z
  |z
  g      |s#|
r!z
  dz  }t        j                   ||g|        j'                  d        z   t	        j
                   j                        }||n| }|rdnd }|r;t        j                  | d        t         j(                  j+                   d|      }n"t         j(                  j)                   d|      }|j-                  dd       |dk(  r|j/                  d	      }|r|S t        j0                  |      S )Nc                  B    d j                    dj                    z   S )NzAstft input and window must be on the same device but got self on  and window on r8  r  r_  s   r:  rT  zstft.<locals>.<lambda>  s,    OPUP\P\~^/0 r<  c                       y)Nz6stft only supports align_to_window for center = False.rR  rR  r<  r:  rT  zstft.<locals>.<lambda>  r|  r<     c                       	 y)Nzstft requires the return_complex parameter be given for real inputs, and will further require that return_complex=True in a future PyTorch release.rR  rR  r<  r:  rT  zstft.<locals>.<lambda>  s    c r<  c                       y)Nz:stft expected a tensor of floating point or complex valuesrR  rR  r<  r:  rT  zstft.<locals>.<lambda>  r|  r<  rU  r7  c                       y)Nzstft expected a 1D or 2D tensorrR  rR  r<  r:  rT  zstft.<locals>.<lambda>  r|  r<  r   r  c                      d  d S )Nzstft expected 0 < n_fft <= z, but got n_fft=rR  )r  r\  s   r:  rT  zstft.<locals>.<lambda>+  s    -fX5EeWM r<  c                      d  S )Nz0stft expected hop_length > 0 but got hop_length=rR  )hop_length_s   r:  rT  zstft.<locals>.<lambda>/  s    B;-P r<  c                      d  S )Nz9stft expected 0 < win_length <= n_fft but got win_length=rR  )win_length_s   r:  rT  zstft.<locals>.<lambda>3  s    KK=Y r<  c                  0    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-  )rs  r_  s   r:  rT  zstft.<locals>.<lambda>7  s(    F{mSUV)&,,89 r<  rl  rZ  )	dimensionr?  steporthoc                       y)Nz9Cannot have onesided output if window or input is complexrR  rR  r<  r:  rT  zstft.<locals>.<lambda>R  r|  r<  r  rc   )r`  rk  r9  r0  r  r  r  r  r3  r  	itertoolsr   rY  r  r  r
  r?  r&  r   r  fftrfft
transpose_squeeze_view_as_real)r  r\  r]  r^  r_  r`  ra  rb  rc  rd  re  return_complex_original_ndim
extra_dims
pad_amountextended_shapeleftinput_pad_amountcomplex_fftrc   r  rq  r  rs  s   ``  `                @@@r:  r2  r2    s    
LL$7&--5<<7	
 
LL
-o-H
 !+ 6*EQJK * 6*EK**, 
$G5#9#9&,,#G 	 		
 )	LLU[[)PU-C-CEKK-PL 
LLejj%A%'PQJJM"^
aZ
I9++Az:IU[[IN3j*5MxX

5::<
45ZZ]F	LL	EVM 
LLaP 
LL	K 5 Y 
LL$8&,,;.8	
 U>ZZ5;;u||TF#)%%ftU[5H45O.PQo!K/A5!13C DhOLL2ELDE((5K#/x_H 7dDOO	
 iinnUn6iimmErm5NN1all1o!3>u'9'9#'>>r<  c
                 
    t        j                  d u xs j                   j                  k(   fd       ||n|dz  }
||n|}t        j                  t        j                   j
                         fd        j                  d      } j                  d      ||
|dz
  z  z   }t        j                   j                         dkD  d        t        j                  d	 j                  cxk  xr d
k  nc  fd       ||n|k7  }|r#t        j                  |d	z  dz   k(  fd       nt        j                  |k(  fd       t        j                  d|
cxk  xr |k  nc d        t        j                  d|cxk  xr |k  nc d        t        j                  d u xs j                  |fk(  d        Bt        j                   j
                        }t        j                  || j                        }n}||k7  r'||z
  d	z  }t        j                  ||||z
  |z
  fd      } j                  } j                  d	k(  r j                  d        j                  dd	       |rdnd }|	r;t        j                  | d        t         j                   j#                   d|       nyt        j                  d u xs  t        j                  j
                         d        |s j%                  dd|d	z  dz          t         j                   j'                   d|        j                  d	      |k7  r t)        d j                  d	       d|        |j+                  dd|g      z  }t        j-                  ||j                  d      |fd||
      }t        j-                  |j/                  d	      j1                  d||f      |j                  d      |fd||
      }||j                  d      k7  r!t)        d| d|j                  d       d      ||j                  d      k7  r!t)        d| d|j                  d       d      |r|d	z  nd}|||z   }n|r	||d	z  z
  }n|}t3        d||z
        }|j%                  d||      }|j%                  d||      }||z  }|d	k(  r|j5                  d      }||kD  r3t7        j8                  dd	       t        j                  |d||z
  fd      }|S ) Nc                  B    d j                    dj                    z   S NzBistft input and window must be on the same device but got self on rh  r8  ri  s   r:  rT  zistft.<locals>.<lambda>p  s-    PQVQ]Q]P^_/0 r<  rk  c                  @    d j                    dj                    z   S r  r8  ri  s   r:  rT  zistft.<locals>.<lambda>{  s&    Pofmm_=> r<  rZ  rU  r   c                       y)Nz"istft input tensor cannot be emptyrR  rR  r<  r:  rT  zistft.<locals>.<lambda>  r|  r<  r7  r  c                  "    d j                    S )Nz8istft expected a tensor with 2 or 3 dimensions, but got r  r  s   r:  rT  zistft.<locals>.<lambda>  s    J5::,W r<  c                      dd  z   S )NMistft expected the frequency dimension (3rd to the last) of the input tensor z3to match n_fft / 2 + 1 when onesided=True, but got rR  fft_sizes   r:  rT  zistft.<locals>.<lambda>  s    _GzRS r<  c                      dd  z   fS )Nr  z,to match n_fft when onesided=False, but got rR  r  s   r:  rT  zistft.<locals>.<lambda>  s    _@
KL r<  c                       y)Nz+istft expected 0 < hop_length <= win_lengthrR  rR  r<  r:  rT  zistft.<locals>.<lambda>  r|  r<  c                       y)Nz&istft expected 0 < win_length <= n_fftrR  rR  r<  r:  rT  zistft.<locals>.<lambda>  r|  r<  c                       y)NzDInvalid window shape. window has to be 1D and length of `win_length`rR  rR  r<  r:  rT  zistft.<locals>.<lambda>  r|  r<  rl  rw  c                       y)Nz9cannot have onesided output if window or input is complexrR  rR  r<  r:  rT  zistft.<locals>.<lambda>  r|  r<  ry  c                       y)Nz:Complex windows are incompatible with return_complex=FalserR  rR  r<  r:  rT  zistft.<locals>.<lambda>  r|  r<  )r  r  r  z%Expected input.size(2) == n_fft, got z != )r  r  r?  rv  zexpected_output_signal_len (z) != y.size(1) (r  z) != window_envelop.size(1) (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
stacklevel)r`  rk  r9  r  r  r  r?  r  r3  rY  corresponding_real_dtyper&  r  r   r  r  r{  ifftr   irfftr  r
  unfold_backwardr   r   rh  r   warningswarn)r  r\  r]  r^  r_  r`  rb  rc  r  rd  rq  rs  n_framesexpected_output_signal_len	onesided_
real_dtypewindow_r  r  rc   y_tmpr~  window_envelopr  endr  s   `   `                    @r:  r3  r3  a  s    
LL$7&--5<<7	
 !+ 6*EQJK * 6*EK	LLu{{+	
 zz"~Hzz"~H!&1)E!E	LL"$PQ	LL	UZZ1W %0h%6GIQJNh&	
 	X	
 
LL	K&;&= 
LL	K 5 "R 
LL$8&,,;.8V
 ~33EKK@
**[
5<<Pe#)&&wu{7JT7Q0RTUVJJMzzQ"OOAq!E 7dDMO	
 		u"48dNF%"8"8"FFP	
 LLRq!aLHE		2D9zz!}3EJJqM?$ugN
 	
 GLL!Q//EZZ]$>? 	 	A ))Aq(E23ZZ]$>? * N "QVVAY.*+E*FFVWXW]W]^_W`Vaabc
 	
 "^%8%8%;;*+E*FFcdrdwdwxydzc{{|}
 	
 !EQJaEfn	(5A:5(C%K F	QeF3A#**qf*MN	NAIIaL
''`	

   Q.H(H$I1MHr<  a_shapea_strideru  rv  c                   	
 t        |       }t        j                  ||d      	|dk(  rdn| 	   
|dk(  rdn|	   }t        j                  
k  	
fd       t        j                  dkD  fd       t        |       }t        |      }|j                         |j                  |       	|k  r|	   z
  z  dz   |	<   |	xx   z  cc<   ||fS )NT)wrap_scalarr   rU  c                      d  d d S )Nz%Maximum size for tensor at dimension z is z but size is rR  )r  max_sizer?  s   r:  rT  z*_get_unfold_shape_stride.<locals>.<lambda>
  s    7uD
-X\W]^ r<  c                      d  dS )NzStep is z but must be > 0rR  rv  s   r:  rT  z*_get_unfold_shape_stride.<locals>.<lambda>  s    (4& 01 r<  )rX  r  r  r`  rk  rM  r  )r  r  ru  r?  rv  a_ndimlast_striderY  stridesr  r  s      ``    @@r:  _get_unfold_shape_strider     s     \F

 
 
ECaKqWS\H{!K	LL^
 
LLq1
 ME8nG	LLNN;
V|Cj4'D014c
'>r<  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 ]  }|j                  |        t        d t        ||      D              }d|v rKt        j                  || j                  | j                  | j                  t        j                  |             S |}t        j                   |      }t#        |      D ]!  \  }}t%        ||||t'        |d            \  }}# t)        t#        |            }	|	j+                  t-        j.                  d      d	       t        |	 \  }
}| j1                  |      }t        j                  |      }|j3                  |
      }|j5                  |      S )
NFrU  c                       y)Nzbrepeat: Number of dimensions of repeat dims can not be smaller than number of dimensions of tensorrR  rR  r<  r:  rT  zrepeat.<locals>.<lambda>"  r|  r<  r   rU  c              3   ,   K   | ]  \  }}||z    y wrK  rR  )rN  padded_sizerepeat_sizes      r:  rP  zrepeat.<locals>.<genexpr>-  s!      $K 	k!r<  r  T)keyreverse)r  r]  r`  rk  rX  rY  r   r3  r  re  r}  r  r  r9  r  r  make_contiguous_strides_forri  r  rh  rM  sortr|  
itemgetterr   r   r   )rp  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                  r:  r   r     s    33L5QL	LLLS\)t
 <A{{1~\*QVV33++LGG &H%&  (+L,(G L 	L{{''88//55a8
 	
 "N77EO"<0 
X*BOS(C!<L+
'
 Y78x2215tD$'):$;!M> XXn-N KK/M $++M:O ""<00r<  
allow_copyc                   
 d| 
|D ]J  }
j                   k\  rM|dk7  rt        d| d      
j                   dz
  }t        j                  
|
j                  |         
dz   `|
j                     k(  rdz   x
j                     }}||z  dk7  r |dz  }|
j                  |   z  }||z  dk7  r |k7  rtt        j
                  
|d       \  }}|I|rt        j                  | |      c S d| j                   d| j                          d| d	}	t        |	      t        
|      
||k7  rt        j                  
|      
dz   M 
j                   k  rFt        j                  
j                     dk(  
fd
       t        
      

j                   k  rF
| u rt        j                  |       S 
S )Nr   rU  z'Cannot unsqueeze dimension with length z, expected 1r  z Cannot view a tensor with shape z and strides  as a tensor with shape r  c                  .    d d j                       S )Nza.size(z) expected to be 1 but got r-  )r  r^  s   r:  rT  z/_reshape_view_helper_core_alg.<locals>.<lambda>  s    gcU"=bhhsm_M r<  )r3  r  r  	split_dimrY  r  r   r;  rl  r   r`  rk  r   r`  )rp  rY  r  r  last_dimaccumr  r  r  r  r  r^  s             @@r:  _reshape_view_helper_core_algr  V  s   ( C	
B /"''>{$=fX\R  ww{H Xrxx/ABB'C RXXc]"'Cfn!1HCRXXc]"E fn! #: ',&A&ACD'#I|   ==E228	qxxzlZrsxryyz{ o%S#&B F?S&1BAg_/d -HHSMQM	
 R - 
Qw}}Q	r<  c                    t        j                  d      t        j                   j                                j                         dk(  r t	         t        j
                              S  j                  dk(  rC }D ]!  }|dk7  rt        d|       t        |d      }# | u rt        j                         S |S t              dk(  rM } j                  D ]!  }|dk7  rt        d|       t        |d      }# | u rt        j                         S |S t               rt              dk(  r6 j                  dkD  r't        j                    j                         gdg      S t              dk(  r4 j                  dk(  r%d   }d   }t        j                   ||g|dg      S t!        t"        j$                  d      }t        j&                   j                         |k(   fd	       t)         |      S )
NFrU  r   rU  z<Cannot reshape 0-dim tensor: shape dimension must be 1, got rZ  z?Cannot reshape to 0-dim tensor: shape dimension must be 1, got r7  c                  *    d j                    d dS )Nz&Could not reshape a tensor with shape r  r  r-  rY  s   r:  rT  z&_reshape_view_helper.<locals>.<lambda>  s    8	AYZ_Y``ab r<  )r  r]  
infer_sizer  r   r  r3  r  r  r  r`  rX  rY  r   r   r`  r   r|  r   rk  r  )rp  r  rY  _ar  dim0dim1shape_numels   ` `     r:  _reshape_view_helperr    s   ,,UUCE UAGGI.E 	wwyA~!UE$E$Ee$LMM 	vv{ 	#F{$RSYRZ[  2r"B	# 7==##I 5zQgg 	!F{$UV\U]^  RB	! 7==##Ia u:?qvvz##A	{QC88u:?qvv{8D8D##Ad|dAY??ua0K	LL		[ b )E:>>r<  rY  c                      t        | g|ddiS )Nr  T)r  rY  s     r:  r   r     s    ;E;d;;r<  c                 @    | j                  |j                               S rK  )r   r?  r  r  s     r:  r   r     s    <<

%%r<  shiftsc                    t        j                  | j                  |      }t        |t              s|f}t        |t              s|f}| j                         dk(  r| j                         S | j                         dk(  r t        |      dkD  rt        d|d    d      t        |      }t        |      }|dk7  s|dk7  r|dk(  rt        d      |dk(  rH|dk(  rCt        j                  t        j                  |       |d      j                  | j                        S ||k7  rt        d| d|       |dk  rt!        d|       |dd	 }|dd	 }t        j                  | |d   f|d         }t        j                  |||      S |d   }| j                  |   }	|	|d   z
  |	z  }
t        j"                  |	| j$                  
      }| j'                  |t        j(                  |
|z   |	            S )z/Reference implementation of :func:`torch.roll`.r   zDimension specified as z but tensor has no dimensionsrU  z`shifts` requiredz*shifts and dimensions must align. shifts: z, dims: zExpected len_dims > 1, got Nr8  )r  r	  r3  r@  r   r  r   r  rX  r  rg  r`  r   r   r
  rY  r  r  r9  rP   r   )rp  r  rF  
len_shiftslen_dimstail_shifts	tail_dimsfirst_dim_rolledr  r?  r  r^  s               r:  r   r     s   
 ""16640Dfh'dH%w 	wwyA~wwy 	uuw!|D	A%d1gY.KL
 	
 VJ4yHQ(a-?233 q=Z1_::emmA.:??HH!<ZLQYPZ[  q= #>xj!IJJQRjH	 !::a&)tAw?zz*KCC
 q'C773<DF1I%E
,,tAHH
-C>>#uzz%#+t<==r<  r   rU  kc                    t        |      dk7  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(  r5t        j                  t        j                  | |d   f      |d   |d         S |dk(  rt        j                  | |      S |d	k(  r5t        j                  t        j                  | |d   f      |d   |d         S | j                  t
        j                  
      S )z0Reference implementation of :func:`torch.rot90`.r7  z2expected total rotation dims == 2, but got dims = z/expected total dims >= 2, but got total dims = r   rU  z7expected rotation dims to be different, but got dim0 = z and dim1 = rk  r  r  )
rX  rg  r3  r  r	  r`  r  r   r   r@  )rp  r  rF  s      r:  r   r   0  s?    4yA~@TL
 	
 	vvzLQVVHUVV ""16640DAw$q'Ed1gYl[_`a[bZcd
 	
 	
AAAvuzz!d1gZ8$q'47KK	
azz!T""	
auzz!d1gZ8$q'47KKwwU%<%<w==r<  c                     ddl m} | d   j                  t        dt	        |             D ]/  }t        j                   || |   j                        fd       1 y )Nr   r=  rU  c                      d  dS )Nz4stack expects each tensor to be equal size, but got z at entry 0 rR  )entry_shapes   r:  rT  z%_check_stack_inputs.<locals>.<lambda>W  s    J;-Wcd r<  )r_  r>  rY  rj  rX  r`  rk  )r  r>  r/  r  s      @r:  _check_stack_inputsr  P  sR    <!*""K1c'l# 
71:##[1d	

r<  c                    t        |       dk(  rt        d      t        j                  | d   j                  dz   |      }|| d   j                  k  ret        |        t        | d   j                        }|j                  |t        |              t        j                  | |      }|j                  |      S t        j                  | D cg c]  }|j                  |       c}|      S c c}w )Nr   z$stack expects a non-empty TensorListrU  )rX  r  r  r  r3  r  rM  rY  insertr`  r   r
  r  )r  r  wrapped_dimresult_sizesr  r   s         r:  r   r   [  s     7|qCDD((1)<cBKWQZ__$G$GAJ,,-KW6ii-xx%% 99@1akk+.@#FF@s   
C*c           
         |xs | j                   }t        j                  |      }t        | |      }| j	                         dk(  rt        |      }nt        ||d      }t        ||z
        }t        t        |t        ||d            |      S )Nr   Tr  )	r  r  r   r+   r  rD   r   r   r   )rp  r  r  r  r  r  a_expa_maxs           r:  rr   rr   n  s     #AGGL33LA	 $5	6BwwyA~BRd+BJ"E3uc489 r<  c                     t        j                  t        |       dkD  d        t        |  }|d   j                  dk(  rt        |d      S t        |d      S )Nr   c                       y)Nz%hstack expects a non-empty TensorListrR  rR  r<  r:  rT  zhstack.<locals>.<lambda>  r|  r<  rU  )r`  rk  rX  r   r3  r   r  s     r:  r   r     sQ    	LLW!#RS '*Oq!#?A&&""r<  c                 p    t        j                  t        |       dkD  d        t        |  }t	        |d      S )Nr   c                       y)Nz%vstack expects a non-empty TensorListrR  rR  r<  r:  rT  zvstack.<locals>.<lambda>  r|  r<  )r`  rk  rX  r   r   r  s     r:  r  r    r  r<  rD  c                 &   t        j                  | j                  |      }t        j                  t        |      dk7  d        | j                  t        | j                  d |       t        |      z   t        | j                  |dz   d        z         S )Nr   c                       y)Nz"unflatten: sizes must be non-emptyrR  rR  r<  r:  rT  zunflatten.<locals>.<lambda>  r|  r<  rU  )	r  r  r3  r`  rk  rX  r
  re  rY  )rp  r  rD  s      r:  r  r    so    

 
 
-C	LLUq"NO66%&u5aggcAgi>P8QQRRr<  r   c                 0   t        j                  | j                        t        j                  t        | j                        dkD  d        | j                     dk(  ryt        fdt        j                  | | j                           D              S )Nr   c                       y)Nz5Dimension specified as 0 but tensor has no dimensionsrR  rR  r<  r:  rT  zunbind.<locals>.<lambda>  r|  r<  rR  c              3   J   K   | ]  }t        j                  |        y wrK  )r`  r   )rN  sr  s     r:  rP  zunbind.<locals>.<genexpr>  s!      
&'EMM!S!
s    #)	r  r  r3  r`  _check_indexrX  rY  re  r  )r   r  s    `r:  r  r    s    

 
 
-C	AGGqG 	wws|q 
+0+=+=as+S
 
 	
r<  r  r  c                 d    | j                  t        j                        j                  |||      S r  )r   r`  r@  rO   )rO  r  r  r  s       r:  rN   rN     s-    77!8!879EEUF r<  c                    t        j                  | j                  |      }t        j                  j                  dk  fd       | j                  dk(  r| j                  d      n| }t        d       f|z  fz   }|||<   | S )NrU  c                  $    d j                    dS Nz(Index should have dimension 1 or 0 (got r  r  r  s   r:  rT  zindex_copy_.<locals>.<lambda>      :5::,aH r<  r   )r  r	  r3  r`  rk  r  slice)rO  r  r  r  r~  r^  s     `   r:  rO   rO     ss    

!
!!&&#
.C	LL

aH
 &&A+A1A;.3
%
)CAcFHr<  c                 "    t        | |||d      S )NFinplace_index_fillrO  r  r  r  s       r:  rQ   rQ     s    
 q#ueU;;r<  c                 "    t        | |||d      S )NTr  r	  r  s       r:  rR   rR     s     q#ueT::r<  r  c                D   t        j                  j                  dk  fd       t        t              r't        j                  j                  dk(  fd       n7t        j
                  | j                  | j                  | j                        | j                  dk(  }|r| j                  d      n| }t        |j                        }j                         ||<   j                  |      |rt        j                  nt         j                   } |||      }	|r| S |r|	j#                  d      j%                         }	|	j'                         | j'                         k7  r9t)        j*                  |       r$t-        j.                  |	| j'                               }	|	S )NrU  c                  $    d j                    dS r  r  r  s   r:  rT  z_index_fill.<locals>.<lambda>  r  r<  r   c                  $    d j                    dS )Nz<Only supports 0-dimensional value tensor. Got a tensor with r  r  r  s   r:  rT  z_index_fill.<locals>.<lambda>  s     !!&L: r<  )r  r  r9  )r`  rk  r3  r@  r'   r)  r  r  r9  r  rM  rY  r  r   rT  rO   rN   r   r   r;  r  %is_non_overlapping_and_dense_or_falser  copy_strided)
rO  r  r  r  r  zero_dimr~  rY  rN   r  s
     ``      r:  r
  r
    sF    
LL

aH %$JJ!O:	
 ##''8888	
 vv{H"AAMEE#JLLE'.##E4D4DJ
QUE
*C++a.&&(C ::<188:%%*U*U+
 $$S!((*5C
r<  c                h    | j                  t        j                        j                  ||||      S )Nr  r[  )r   r`  r@  
index_add_)rO  r  r  r  r\  s        r:  rM   rM     s:     77!8!879DD	 E  r<  c                    t        j                  | j                  |      }t        j                  j                  dk  fd       j                  dk(  rj                  d      | j                  dk(  r5t        j                  |       j                  d| j                              S t        d       f|z  fz   }| |   j                  t        j                  |             S )NrU  c                  $    d j                    dS r  r  r  s   r:  rT  zindex_select.<locals>.<lambda>  r  r<  r   r  )r  r	  r3  r`  rk  r  r  rN   r   r  r   r  )rO  r  r  r^  s     ` r:  rP   rP     s     
!
!!&&#
.C	LL

aH zzQ"vv{ "--aE8JKK;.3
%
)CS65+F+Fq+IJJr<  c                     ddl m |Rt        d t         j                        D              }|rt        j                   |      S t        j                         S  j                  }t        j                  ||      }t        |t              r|fn|}|dk(  r6t        |      dk(  s|dk(  st        d|       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   2   K   | ]  \  }}|d k(  s|  ywr[  rR  )rN  r^  r?  s      r:  rP  zsqueeze.<locals>.<genexpr>-  s     JYS$	SJs   r  z8Expected dims to be empty or (0,) for 0-dim tensor, got c              3   T   K   | ]  } j                   |   d k(        s| ! ywr[  r-  )rN  drp  rF  s     r:  rP  zsqueeze.<locals>.<genexpr>>  s$     DqN1771:?$CDs   ((rU  T)r  )r_  rF  re  ri  rY  r  r   r`  r3  r  r	  r@  r   rX  r  rM  r&  )rp  r  rF  r3  	dims_listr/  rF  s   `     @r:  r   r   (  s.   D
{J)AGG*<JJ)-u}}Q%C5==3CC66D

!
!$
,CS)C6sDqyD	Q$$, J4&Q  }}Q DDDDD
4yA~}}Q
4yA~}}Q%%T
Iy$/I AqMHr<  split_sizesc                     t        t                    D ]  }t        j                  |   dk\  d        ! t        j                  t
        t        j                         j                     k(   fd       g } j                         }D ]e  }t         j                        }||<   |j                   j                  | j                         |             | j                            |z  z   }g |S )Nr   c                       y)NzCsplit_with_sizes expects split_sizes have only non-negative entriesrR  rR  r<  r:  rT  z"split_with_sizes.<locals>.<lambda>S  r|  r<  c                  T    dt        j                         dj                       S )NzSplit sizes add up to z but got the tensor's size of )r@  r   rY  )r  r  r  s   r:  rT  z"split_with_sizes.<locals>.<lambda>X  s.    (k)B(CCabfblblmpbqars r<  )rj  rX  r`  rk  r  rl  r@  r   rY  rA  rM  r  r   r;  )r  r  r  r/  splitsr  
split_sizer  s   ```     r:  r   r   J  s     3{#$ 
NaY	


 
[!TZZ_4s F  "F! :
$	#	# 	dooiGH$++-,z99: Mr<  indices_or_sectionsc                    t        j                  | j                  |      }| j                  dk(  rd}t        |      t	        |t
              rj|j                  j                  dk7  rd|j                   }t        |      |j                  t        j                  k7  rd|j                   }t        |      t	        |t              st	        |t
              r|j                  dk(  rt	        |t              r|n|j                         }|dk  rd| }t        |      | j                  |   }t        j                   ||z        }||z  }g }	t#        |      D ]  }
|
|k  r|dz   n|}|	j%                  |       ! t'        t(        j+                  | |	|            S |}t	        |t
              r:|j                  dk7  rd	|j                   d
}t        |      |j-                         }dgt/        |      z   | j                  |   gz   }t#        t1        |      dz
        D cg c]  }||dz      ||   z
   }	}t'        t(        j+                  | |	|            S c c}w )Nr   zXtensor_split: received a rank zero tensor, but expected a tensor of rank one or greater!r}  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 rU  r  zntensor_split: non-scalar indices_or_sections tensors must have only one dimension, but received a tensor with rW  )r  r  r3  rl  r@  r'   r9  r7  r  r`  longr   r!   r   rY  r+  rJ   rj  r  re  r  r   tolistrM  rX  )rp  r"  r  _dimr  sectionsr  min_split_sizenum_splits_one_extrar  	split_idxr!  indicesr/  s                 r:  r  r  j  s~   
 !!!&&#.Dvv{ho %z2%%**e3'':'A'A&BD  S/!$$

200C0I0I/JL  S/! %w/&
38K8P8PTU8U -v6  $))+ 	 q=UV^U_`CS/!774=Hx$78'(2x 	+I  44 "# 
 z*	+ T**1kt*DEE &):6"''1,22E2J2J1K;X  !o%)002G#W%7<A#g,QRBR<STqwq1u~
2TTT**1kt*DEE Us   Ic                     t        j                   j                  dk\   fd        j                  dk(  rdndt        t              rDt        j                  dk7  xr  j
                     z  dk(   fd       t               S t        j                  t        t        t        f      fd       }t         |      S )NrU  c                  :    dt         j                        z   dz   S )NzPtorch.hsplit requires a tensor with at least 1 dimension, but got a tensor with  dimensions!r  r3  r  s   r:  rT  zhsplit.<locals>.<lambda>  #    ^!&&k r<  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 r  rB  )rp  r  r!  s   r:  rT  zhsplit.<locals>.<lambda>  sX    Bc(45 aggcl#$ 9	9
 j/"  r<  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 r6  r"  s   r:  rT  zhsplit.<locals>.<lambda>       !4568 r<  
r`  rk  r3  r@  r   rY  r  _check_typerM  re  )rp  r"  r  r  r!  s   `` @@r:  r   r     s     
LL	!	
 vv{!C%w/(
1_?
!:a!?	
 Az3//	&u6	
 &K;,,r<  c                 r    t        j                   j                  dk\   fd       t        t              rCt        j                  dk7  xr  j
                  d   z  dk(   fd       t         d      S t        j                  t        t        t        f      fd       }t         |d      S )Nr7  c                  :    dt         j                        z   dz   S )NzPtorch.vsplit requires a tensor with at least 2 dimension, but got a tensor with r/  r0  r  s   r:  rT  zvsplit.<locals>.<lambda>  r1  r<  r   c                  0    d j                   d    d dS )NzQtorch.vsplit attempted to split along dimension 0, but the size of the dimension r   r3  r  r-  )rp  r!  s   r:  rT  zvsplit.<locals>.<lambda>  s*    3771:,6, r<  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 r6  r5  s   r:  rT  zvsplit.<locals>.<lambda>  r6  r<  r7  )rp  r"  r  r!  s   `` @r:  r  r    s     
LL	!	
 %w/(
1_=j!8A!=	
 Az1--	&u6	
 &K;**r<  r  c                     | j                         t        j                  dv fd       dk(  rt        j                  | |      S t        j                  | |      S )N)rU  r7  c                      d  dS )Nz'diag(): Supports 1D or 2D tensors. Got DrR  r  s   r:  rT  zdiag.<locals>.<lambda>  s    "I$q Q r<  rU  )r  r`  rk  r   r   )r  r  r3  s     @r:  r   r     sU     88:D	LLQ qyf--""400r<  r  dim2c                 J   ddl m}m} t        j                  |       }|j                  |||      t        j                  j                  j                  k(  xr1  | |d t        j                  j                        D                fd       t               |S )Nr   )rF  rz  c              3   ,   K   | ]  \  }}||k7    y wrK  rR  )rN  d1d2s      r:  rP  z#diagonal_scatter.<locals>.<genexpr>(  s     G&"bR2XGr<  c                  <    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   r:  rT  z"diagonal_scatter.<locals>.<lambda>*  s$     yyk24::,@ r<  )r_  rF  rz  r  clone_preserve_stridesr   r`  rk  r3  r}  rY  r   )	r  r  r  r  r@  rF  rz  r  r   s	    `      @r:  r   r     s     M

&
&u
-C<<d+D	LL		SXX 	
GC

CII,FGH
 
	@ D#Jr<  c                    | j                         }t        j                  |      t        j                  |      t        j                  k7  fd       | j                         }|dk\  rUt        t        | j                            | j                            |z
        d      }||| j                            z  z  }nTt        t        | j                            |z   | j                                  d      }||| j                            z  z  }t        | j                               D cg c]  \  }}|fvs| }	}}|	j                  |       t        | j                               D cg c]  \  }}|fvs| }
}}|
j                  | j                            | j                            z          | j                  |	|
|      }|S c c}}w c c}}w )z4
    Reference implementation of torch.diagonal
    )r^  rankc                      d  d S Nz(diagonal dimensions cannot be identical r  rR  r  r@  s   r:  rT  zdiagonal.<locals>.<lambda>@       HbQUPVW r<  r   )r?  r;  rA  )r  r  r  r`  rk  rA  r   r   r?  r;  ri  r  r   )r  r  r  r@  num_dimsrA  	diag_sizer/  r  rD  r  r
  s     ``        r:  r   r   1  s    xxzH!!d:D!!d:D	LLW ((*N {GDIIK$5tyy{47H67QRTUV	&4;;=#666GDIIK$5$>		D@QRTUV	&4;;=#666$TYY[1K41aQtTl5JQKEK	LL&t{{}5OTQ4,9NqOGONN4;;=&t)<<=__%_WFM L Ps   8GG;G#
G#c                 8   | j                   dz   }t        j                  |      t        j                  |      kD  rc| }t        j                  k7  fd       | j                  d      }|dk7  rt        | j                        }t        j                  |      |d<   t        j                  || j                  | j                  d      }|dkD  r|| fn| |f}t        j                  |d      } |t        j                  |      z  }| j                        j                  d      } t        j                   || j                  t        j"                  	      }	t        j                   |||z   | j                  t        j"                  	      }
|	|
j                  d      k(  }t%        t'        | j                              D cg c]  }|fv r|nd }}|j)                  |      }t        j*                  ||       j-                         S c c}w )
z6
    Reference implementation of torch.diag_embed
    rU  )rH  r^  c                      d  d S rJ  rR  rK  s   r:  rT  zdiag_embed.<locals>.<lambda>o  rL  r<  rZ  r   Fr  r9  r  r$  r9  r  )r3  r  r  r`  rk  r?  rM  rY  r@  r2   r+  r  r9  r   r  r   r  rQ  rj  rX  r   mask_tensorr   )r   r  r  r@  rH  r  t_shapezpaira_rangeb_rangecondr/  
cond_shapes     ``          r:  r   r   X  s    66A:D!!t6D!!t6D d{4
d	LLW
 vvbzH{qww-ll6*KKqwwqxxuU!1v!QIId#HLL(( 	
D!!"d+A ll8AHHEKKHGll6!!((%++G
 g''++D@Ec!''l@ST1aD$</(Q6TJT<<
#D T1%0022 Us   Hc                   
 | D cg c])  }|j                         dk  r|j                  dd      n|+ }}t        j                  d |D              }|d   j                  
g }d}t        |      D ]  \  t        j                  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 c c}w )
z6
    Reference implementation of torch.block_diag
    rU  rZ  c              3   :   K   | ]  }|j                   d      ywr[  r-  )rN  r  s     r:  rP  z'_block_diag_iterable.<locals>.<genexpr>  s     BVaBs   r   r7  c                  2    d  dj                          dS )Nz5Input tensors must have 2 or fewer dimensions. Input z has rW  r$  )r/  r  s   r:  rT  z&_block_diag_iterable.<locals>.<lambda>  s"     CuVZZ\N+7 r<  c                  0    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 rq  r8  )r9  r/  r  s   r:  rT  z&_block_diag_iterable.<locals>.<lambda>  s(     $$*8;qcVWY r<  rR  r$  )r  r
  r@  r   r9  ri  r`  rk  rY  r+  r  r   )r  r  
tensors_2dncolsr
  	col_startrowcolr  rightr9  r/  s    `        @@r:  _block_diag_iterablere    sY    KR@Ffjjla/ArV;J  LLBzBBE]!!FFIz* 	6JJLA7	

 	MMV#Y	

 <<S{{C+F&,,O%)#c)*6
 	599dFE2:;;S	#& 99V##;s   .E$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.
    )re  r  s    r:  r   r     s      ((r<  r(  c                    | j                   dk  rt        d| j                    d      t        |t              r<|dk(  s| j                  d   |z  dk7  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   r7  z3torch.dsplit attempted to split along dimension 2, zbut the size of the dimension r3  r  )r3  rg  r@  r   rY  r  )rp  r(  s     r:  r   r     s    vvz^_`_e_e^ffrs
 	
 (G$(a-1771:;PTU;UA.qwwqzl:^_g^hhijk
 	
 8Q''r<  c                     | j                   dkD  rt        d| j                    d      t        j                  | d| j                   dk  rd      S d      S )Nr7  z7t() expects a tensor with <= 2 dimensions, but self is r?  r   rU  )r3  rg  r`  r  r  s    r:  r   r     sS     	vvzEaffXQO
 	
 ??1aaffqj88a88r<  c                 h    t        j                  | j                  dv d        | j                         S )N)r   r7  c                       	 y)NzcThe use of `x.T` on tensors of dimension other than 0 or 2 to reverse their shape is not supported.rR  rR  r<  r:  rT  zT.<locals>.<lambda>  s    7 r<  )r`  rk  r3  r   r  s    r:  r   r     s,    	LL	&	
 335Lr<  c                 ,    t        j                  |       S rK  )r  r`  r  s    r:  r   r     r  r<  r  c                 .   t        j                  | j                  ||f      \  }}| j                  dk  s||k(  rt        j                  j                  |       S t        t        | j                              }|||<   |||<   t        j                  | |      S r"  )
r  r	  r3  r  r   defaultrM  rj  r`  r   )rp  r  r  _dim0_dim1rO  s         r:  r  r    s}    **166D$<@LE5vv{ddlzz!!!$$aff&LLL==L))r<  c                 z    t        | j                  | j                         |||      \  }}| j                  ||      S rK  )r  rY  r;  r   )r  ru  r?  rv  rY  r  s         r:  r  r    s:     .

DKKM9dDNE7 ??5'**r<  c                 d    | j                  |||      j                  t        j                        S r  )r  r   r`  r@  )r  ru  r?  rv  s       r:  r  r    s2     ;;y$-33-- 4  r<  c                   |j                   }t        j                  ||      }|dk(  r | |j                  d      d||      S |j                  |dz         }t	        j
                  |j                  |   |j                        }|j                  d      |k  }t        ||z
  dz
        D ]  }	|j                  d      } t	        j                  |||      }
 | |
|||      S )Nr   )r  r  r  rU  r8  rZ  )
r3  r  r  r  r`  r  rY  r9  rj  r   )rK  initrp  r  r  r  r3  rgr  r  masked_as              r:  _cumsumprod_commonrv    s     66D

 
 s
+CqyAKKNC@@	C!GA	aggcl188	4B<<?b D4#:>" "~~b!"{{4D)HcC88r<  c                ,    t        t        d| |||      S )Nr   rK  rs  rp  r  r  r  )rv  r   rp  r  r  r  s       r:  r   r   /  s     3Q!EsSSr<  c                ,    t        t        d| |||      S )NrU  rx  )rv  r   ry  s       r:  r   r   :  s     4a1#UPSTTr<  c                 ~    | j                   dz   }t        j                  ||      }t        j                  | |f|      S )NrU  r  )r3  r  r  r  expand_dims)rp  r  r3  s      r:  r  r  F  s:     66A:D

 
 s
+CQT22r<  c                    ddl m}m} t        j                  t        t        t        t           z  |      d      }t        j                  j                  j                  j                  s	 || |      r	 || |      S t        | g|ddiS )Nr   )_view_has_unbacked_input_view_unbacked_metaFrU  r  )torch._subclasses.fake_implsr~  r  r  r]  r   r%   re  r`  ra  rb  rc  rd  r  )rp  rY  r~  r  shape_tuples        r:  r
  r
  S  s|     22Yy))51EK xx$$::>V	? #1k22<E<e<<r<  c                 @    | j                  |j                               S rK  )r
  r?  r  s     r:  r  r  i  s    99UZZ\""r<  c                     t        | d      S )N)rZ  )r   r  s    r:  r   r   n  s    1er<  r,  c                      t        j                   j                  j                  k(   fd       t        j                  t        j                  j
                        fd       |5t        j                   j                  d      dj                  d            S t         j                        }j                  |      ||<   t        j                  |j                               }t        |      }t        j                        } j                  |      ||<   t        j                  | j                               }t         |      }|j                  |      }||z  }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 indicesr  )rp  r,  s   r:  rT  z take_along_dim.<locals>.<lambda>z  s*    --.VVH4O||n35 r<  c                  $    d j                    dS )Nz?torch.take_along_dim(): dtype of indices should be int but got z insteadr  )r,  s   r:  rT  z take_along_dim.<locals>.<lambda>  s    M}}oX' r<  rZ  r   )r`  rk  r3  r  r  r  gatherr
  rM  rY  r?  infer_size_shapesr   )	rp  r,  r  
self_sizesbroadcast_shapeindices_broadcastindices_sizesself_broadcastr  s	   ``       r:  r  r  t  s/    
LL	',,	
 
LLw}}-	
 {||AFF2J7<<+;<<!'']
!,,s+
311*gllnM(/BW]]+VVC[c11-J%a9 "&&s+-8||NC1BCCr<  r  r  r9  r  r  r  r  c           	         t        j                  t         j                  k7  d        t        j                  |      }t         j
                  k(  rt        j                  |      }nht         j                  k(  rt        j                  |      }n?t        j                  t         j                  k(  fd       t        j                  |      }t        j                  ||| ||||      S )Nc                       y)Nz8torch.empty: the Preserve memory format is not supportedrR  rR  r<  r:  rT  zempty.<locals>.<lambda>  r|  r<  c                      d  dS )Nz/torch.empty: received an unknown memory format r  rR  r  s   r:  rT  zempty.<locals>.<lambda>  s    Em_TUV r<  r  r  r9  r  r  )r`  rk  r  r  r]  r@  r  channels_last_3d!make_channels_last_3d_strides_forchannels_last!make_channels_last_2d_strides_forr  )r  r  r9  r  r  r  rY  r  s        `  r:  r  r    s     
LL...J
 ,,U3E///33E:	%00	099%@U000V	

 99%@# r<  c                 6    t        j                  | ||||      S )NrQ  )r  r  )rY  physical_layoutr  r  r9  r  r  s          r:  r  r    s&     # r<  r  r  r9  r  c                    || j                   n|}|| j                  n|}|| j                  n|}t        j                  |||||      S )Nr  r9  r  r  )r  r  r9  r`  r  )rp  r?  r  r  r9  r  s         r:  r!  r!    sQ     }AGG%EQXXVFQXXVF;; r<  c                    || j                   n|}|| j                  n|}|| j                  n|}t        j                  ||||||      S )zD
    Reference implementation of torch.Tensor.new_empty_strided
    r  )r  r  r9  r`  r  )rp  r?  r;  r  r  r9  r  s          r:  r"  r"    sV      }AGG%EQXXVFQXXVF r<  r  c           	          t        j                  |      }| t        j                         } t        j                  || t        j
                  k(  rdnd| ||||      S NFr   r  r  r]  r`  r  r  r  r  r  r9  r  r  r?  s         r:  r+  r+    sZ     ++D1D}'')::%**$!# r<  c          	          || j                   n|}|| j                  n|}|| j                  n|}t        j                  ||xs | j                   t        j
                  k(  rdnd|||||      S r  r  r  r9  r`  r  r  rp  r?  r  r  r9  r  r  s          r:  r%  r%  )  sm     }AGG%EQXXVFQXXVF::"177uzz1q# r<  c           	          t        j                  |      }| t        j                         } t        j                  || t        j
                  k(  rdnd| ||||      S NTrU  r  r  r  s         r:  r&  r&  D  sZ     ++D1D}'')::## r<  c          	          || j                   n|}|| j                  n|}|| j                  n|}t        j                  ||xs | j                   t        j
                  k(  rdnd|||||      S r  r  r  s          r:  r$  r$  ^  sm     }AGG%EQXXVFQXXVF::!!''ejj0a# r<  
fill_valuec                    || j                   n|}|| j                  n|}|| j                  n|}t        j                  ||||||      S )Nr  )r  r  r9  r`  r  )rp  r?  r  r  r  r9  r  s          r:  r#  r#  y  sT     }AGG%EQXXVFQXXVF:: r<  c                     |S rK  rR  )r?  r  r  s      r:  	empty_outr    s	     Jr<  )r  r9  r  r  r  r  c          	      P   || j                   n|}|| j                  n|}|| j                  n|}|t        j                  k7  r&t        j
                  | j                  ||||||      S t        j                  |       \  }}t        j                  | j                  ||||||      S )Nr  r  )
r  r  r9  r`  r  r  rY  r  3compute_elementwise_output_logical_to_physical_permr  )	rp  r  r9  r  r  r  r  logical_to_physical_permr  s	            r:  r  r    s     }AGG%EQXXVFQXXVF---{{GG'!'
 	
 	AA!D  a 	 # r<  r  c                    t        j                  |       t        j                  |       t        j                  t        j
                  |            }t         t              rt        d      t        t              rt        d      t        t              rt        d       d t        j                  dk7  d        dkD  rt        j                   k\  d        ndk  rt        j                   k  d        d }t        j                   |       xr  |       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|
r,t!        dkD        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|j1                  d       |S )Nz%arange does not support complex startz#arange does not support complex endz$arange does not support complex stepr   c                       y)Nzstep must be nonzerorR  rR  r<  r:  rT  zarange.<locals>.<lambda>  r|  r<  c                       yNz7upper bound and lower bound inconsistent with step signrR  rR  r<  r:  rT  zarange.<locals>.<lambda>  r|  r<  c                       yr  rR  rR  r<  r:  rT  zarange.<locals>.<lambda>  r|  r<  c                 R    t        | t               xs t        j                  |       S rK  )r@  r   r+  rS   rS  s    r:  	is_finitezarange.<locals>.is_finite  s!    a!566J$--:JJr<  c                      d d  S )Nzunsupported range: r  rR  )r  r  s   r:  rT  zarange.<locals>.<lambda>  s    %eWD6 r<  c                      d  S )Nzstep must be finite but got rR  r  s   r:  rT  zarange.<locals>.<lambda>  s    .tf5 r<  c              3   <   K   | ]  }t        |t                y wrK  rL  rN  r  s     r:  rP  zarange.<locals>.<genexpr>  s     IS
3 8I   )r  rv  r  r9  r  rU  FT)r  check_layoutcheck_pin_memoryr`  r9  device_or_defaultr@  r  r  rk  r@  r   rQ  r  r  r   r  r+  r:   r  iotar%  get_acc_typer+   requires_grad_)r  r  rv  r  r  r9  r  r  r  r  integer_args
is_integerxstartxendxsteprl   r  r  r  r
  s   ```                 r:  r  r    s    
v	:&\\%11&9:F%!DEE#wBCC$ CDD {	LL:;ax5LM	
 
5LM	

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

(:(:5&(I  $E+<=ETE\!F$VU3Fd#Mr<  )r  r  r(  c                    | |g}t        |t              r| j                  d|      }n|j                  |       t        |t              st        dt        |             |j                         dk\  }t        j                  ||dz
  |      }t        j                  |||       }||| z
  z  |z   }t        j                  t        |  }|j                         |k7  rt        j                  ||      }t!        ||      S )NrR  z)weight must be Tensor at this point, got rv  rU  )r@  r!   r#  r  rT  r  r7  r2   r`  r   r  "compute_elementwise_output_stridesr  r;  r  r  rD  )	r  r  r(  r  r  coeffbaserC  r;  s	            r:  rZ   rZ   /  s     S\F&&!F+fff%HfWXX ::<3DKKfqj&1E;;tS%(DcEk"T)F557G7PQF}}& ##FF3'77r<  )r  r9  r  r  r  stepsc          
          t         t              r=t        j                   j	                         dk(  d        t         t        |             t        t              r=t        j                  j	                         dk(  d        t        t        |            t        j                  d  fD              rZt        j                  t        j                               nFt        j                  t        j                        fd       nxs t        j                         t        t        j                        st        dt                     t        j                   t        t"               fd       t        t"              st        dt                     t        j                  dk\  d	        ||||d
}dk(  rt        j$                  ddi|S dk(  rwt         t              rMt        j&                  ffdi|}	t        j(                  j*                  j,                  j/                  |	       S t        j$                  f fdi|S t        j0                  dfi |}
t        j2                        st        j4                        rt        j6                  n}t        j8                  |
t:        j<                  |      \  }}t?        t
        |      } z
  dz
  z  }t        j@                  |
dz  k   | ||
      z  z   | |dz
  |
z
        z  z
        }t        |      S )Nr   c                       yNz:linspace only supports 0-dimensional start and end tensorsrR  rR  r<  r:  rT  zlinspace.<locals>.<lambda>_  r|  r<  c                       yr  rR  rR  r<  r:  rT  zlinspace.<locals>.<lambda>e  r|  r<  c              3   <   K   | ]  }t        |t                y wrK  r@  r  r  s     r:  rP  zlinspace.<locals>.<genexpr>i       LJsG,Lr  c                      d  d S )Nzlinspace(): inferred dtype z& can't be safely cast to passed dtype rR  )default_complex_dtyper  s   r:  rT  zlinspace.<locals>.<lambda>r  s    56K5LLrsxryz r<  dtype must be torch.dtype, got c                      dt              j                   dt               j                   dt              j                   dS )Nz4received an invalid combination of arguments - got (r  r  )r7  r  )r  r  r  s   r:  rT  zlinspace.<locals>.<lambda>|  sD     u+r$s),,-RU0D0D/EQH r<  zsteps must be IntLike, got c                       y)Nz$number of steps must be non-negativerR  rR  r<  r:  rT  zlinspace.<locals>.<lambda>  r|  r<  )r  r9  r  r  r  rU  r  r7  )r  r   )!r@  r(   r`  rk  r  r+   r1   r@  r   r  rC  r  r  r  r  r7  r8  r   r  r  opsr  r  rm  r  r  r  rQ  r5  r$   rR  r   r   )r  r  r  r  r9  r  r  r  factory_kwargsempty_tensorrt  	dtype_redr  r  cast_rgrv  r  r  s   ````             @r:  r  r  O  s    %(IIK1P	
 (/Fv/NO#~&GGINP	
 &c+B6+JK||LU8KLL % A A##%!
 =)ELL&&u-z
 2002eU[[)>tE{mLMM 
5'"	H
 eW%:4;-HII	LL!KL  &	N zzzAA.AAze^, ;;xOuOOL99>>&&..|UCC::uhMUMnMM 
a	1.	1B
 ""5)U-C-CE-J 	 
 !11
&++Yq -5FGG %KEAI&D
++
UQYwr{""dWeai2-...C
 #3..r<  r  c          
         |t        j                         }t        j                  j	                  |      rt        | t              rt        |       } nDt        | t              r4t        j                  | j                         dk(  d        t        | |      } t        |t              rt        |      }nDt        |t              r4t        j                  |j                         dk(  d        t        ||      }t        j                  d | ||fD              r,t        j                  t        j                               }	|	}d }
nt         j                  }
t        |t               rt#        dt%        |             |dk  rt&        t        j(                  | |||
||||      }t        t        j*                  ||      |      S )Nr   c                       yNz:logspace only supports 0-dimensional start and end tensorsrR  rR  r<  r:  rT  zlogspace.<locals>.<lambda>  r|  r<  c                       yr  rR  rR  r<  r:  rT  zlogspace.<locals>.<lambda>  r|  r<  c              3   <   K   | ]  }t        |t                y wrK  r  r  s     r:  rP  zlogspace.<locals>.<genexpr>  r  r  zbase must not be complex, got r  )r`  r  r  r  r  r@  r   r   r(   rk  r  r+   r@  r   rC  rz  r  r  r7  r  r  r   )r  r  r  r  r  r9  r  r  r  r  _dtyperets               r:  r   r     ss    }'') {{##E*eY'ENE~.LL		q T ,E59Ec9%#,C^,LL	QT *#u5C||LU8KLL % A A##%!
 &$ =d4j\JKKax!!
..#	C #599T3#7??r<  indexingc                      y rK  rR  )r  r  s     r:  r   r     s     	r<  c                      y rK  rR  )r  r  s     r:  r   r     s    r<  c                     t        |d   t        t        f      r3t        |      dk7  rt	        dt        |             t        |d         }t        j                  t        j                  d |D              d        t        j                  t        |      dkD  d        t        t        |      dz
        D ]p  }t        j                  ||   j                  ||dz      j                  k(  d        t        j                  ||   j                  ||dz      j                  k(  d        r d	} d
k(  r!t        |      dk\  }|r-|d   |d   g|dd  }nt        j                   dk(   fd       g }|D ]  t        t              st	        dt                     t        j                  j                  dk(  xs j                  dk(  fd       |j                  j!                                 g }t#        |      D ]s  \  }t        t              st	        dt                     j                  dk(  rj%                  d      |j                  t'        j(                  ||f             u |r|d   |d   c|d<   |d<   |S )Nr   rU  z*Expected exactly 1 tensor list/tuple, got c              3   <   K   | ]  }t        |t                y wrK  r@  r'   r  s     r:  rP  zmeshgrid.<locals>.<genexpr>  s     @1Z:.@r  c                       y)Nz)meshgrid expects its inputs to be tensorsrR  rR  r<  r:  rT  zmeshgrid.<locals>.<lambda>  r|  r<  c                       y)Nz'meshgrid expects a non-empty TensorListrR  rR  r<  r:  rT  zmeshgrid.<locals>.<lambda>	  r|  r<  c                       y)Nz3meshgrid expects all tensors to have the same dtyperR  rR  r<  r:  rT  zmeshgrid.<locals>.<lambda>  r|  r<  c                       y)Nz4meshgrid expects all tensors to have the same devicerR  rR  r<  r:  rT  zmeshgrid.<locals>.<lambda>  r|  r<  Fxyr7  ijc                      d  S )NzDtorch.meshgrid: indexing must be one of "xy" or "ij", but received: rR  )r  s   r:  rT  zmeshgrid.<locals>.<lambda>  s    !!)
, r<  zexpected TensorLike, got c                      d  S )NzEtorch.meshgrid: Expected 0D or 1D tensor in the tensor list but got: rR  )r   s   r:  rT  zmeshgrid.<locals>.<lambda>)  s    [\][^_ r<  r  )r@  rM  re  rX  r  r`  rk  r@  r   rj  r  r9  r'   r7  r3  r  r  ri  r
  r  r6  )r  r  r/  swap_first_and_second_tensorsresult_shapegridsr   s   `     @r:  r   r     so    '!*tUm,w<1 <S\NK  
#	LL@@@;
 
LLW!#TU3w<!#$ 
AJA 4 44I	
 	AJQ!6!66J	

 %*!4(+G(9%(qz71:<<G	
 !L '!Z( #<T!WI!FGGFFaK&166Q;_	
 	AGGI&' #%E'" D1!Z( #<T!WI!FGG66Q;tAU++A|aTBCD %"1XuQxa%(Lr<  sourcedestinationc                 V   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 ]K  }|j                  |      }||	j                  |       (|
|v r
|
dz  }
|
|v r
|	j                  |
       |
dz  }
M t        j                  | t        |	            }|S )z3
    Reference implementation of torch.movedim
    c                  :    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)rM  )r  r  s   r:  rT  zmovedim.<locals>.<lambda>N  s.    V~ ''+K'8&9A r<  )rH  r,  c                  "    dt                dS )Nz#movedim: repeated dim in `source` (r  r  )r  s   r:  rT  zmovedim.<locals>.<lambda>_  s    5d6l^1E r<  c                  "    dt                dS )Nz(movedim: repeated dim in `destination` (r  r  )r  s   r:  rT  zmovedim.<locals>.<lambda>c  s    :4;L:MQO r<  r   rU  )r7  r  r`  rk  rX  r3  re  r  r	  setdictr}  rj  r#  r  r   )r  r  r  rH  ssdssssdssr  rF  sidir  r
  s    ``           r:  r   r   =  ss    F|sKC"n 
LLFs;''	
 ::D	u&&D&A	BB	u&&D+F	GB
b'C
b'C 
LLB3s8E 
LLB3s8O
 	SR[AD	
BDk EE"I=KKN )a )KKO!GB ]]5%+.FMr<  )r  r9  r  r  r  r  c                   t        j                  |       t        j                  |       t        j                  |       } |t	        j
                         n|}|t	        j                  d      n|}t        j                  | ||||      S )Nr}  rQ  )	r  r  r  r]  r`  r  r9  r  r  )rY  r  r  r9  r  r  r  s          r:  r  r  |  sz     
v	:&,,U3E).E##%EE$*NU\\% F# r<  valc                     t         j                  t         j                  t         j                  fD ](  }| t        j                  |      j
                  k  s&|c S  t         j                  S rK  )r`  rK  uint16r  iinforh  rQ  )r  possible_dtypes     r:  _strength_reduce_integerr    sM     ;;ekkB "%++n-111!!" ;;r<  nr  c                     t        j                   dk\   fd       t        j                  dk\  fd       t         j                  }t         t        j
                        r/t        t        j
                        rt        t                     }t        j                   ||d      }t        j                  ||d      }	|j                  d      |	k(  }
|t         j                  dfv r)|s'|
j                  |xs t        j                               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 rR  )r	  s   r:  rT  zeye.<locals>.<lambda>      #H!L r<  c                      d  S )Nz%m must be greater or equal to 0, got rR  )r  s   r:  rT  zeye.<locals>.<lambda>  r  r<  FrQ  rZ  r  r  )r`  rk  rQ  r@  r  IntWithoutSymIntr  rh  r  r  stridedr   r  r&  r   )r	  r  r  r  r9  r  r  range_dtyperange_nrange_mrY  ones   ``          r:  r  r    s    	y	LLaLM	LLaLM++K!U++,Au?U?U1V.s1ay9ll1KeTGll1KeTGR G+D%--&&zwwu9 7 7 9::jj!
 {{4a((r<  c                   t        j                  |       t        j                  |       ||nt        j                  t	        |            }||nt        j                  d      }t        | |||||      }t        j                  ||      S )Nr}  r  )	r  r  r  rY  r7  r`  r9  r  rH   )rY  r  r  r  r9  r  r  es           r:  r  r    s     
v	:&&EE,?,?Z@P,QE)Vu||E/BF#	A ::a$$r<  r  r  r9  r  r  r  c          	      R    t        j                  | ||||||      }t        ||      S )Nr  )r`  r  rH   )	rp  r  r  r  r9  r  r  r  r  s	            r:  r  r    s8     		##	A :r<  c          
          t        j                  | |xs | j                  t         j                  k(  rdnd||||||      S )NFr   r  r`  r  r  r  rp  r  r  r9  r  r  r  s          r:  r,  r,    sC     ??	"177uzz1q##	 	r<  c          
          t        j                  | |xs | j                  t         j                  k(  rdnd||||||      S )NTrU  r  r  r  s          r:  r'  r'    sC     ??	!!''ejj0a##	 	r<  c                     t        j                  |       t        j                  |      }t        j                  |       } t        j                  |      }t        j                  |dd| ||      S )Nr  ru  )r   r   r  r9  r  )r  r  r]  dtype_or_defaultr  r  rd   )r  r9  r  r  r  rY  r  s          r:  r(  r(  1  se     
:&--e4F""5)E$$V,F<<# r<  c                    t        j                  |       t        j                  |       ||nt        j                  t	        |             }||nt        j                  d      }t        j                  | ||      S )Nr}  rl  )	r  r  r  rY  r7  r`  r9  r  r)  )rp  r  r  r9  r  s        r:  r)  r)  L  se     
v	:&&EE,?,?Q,HE)Vu||E/BFqf==r<  lowhighc                   t        j                  |        t        |t              st	        dt        |             t        |t              st	        dt        |             t        |      }t        |      }t        |t        j                        st	        dt        |             t        j                  |      }t        j                  | |||||      S )Nzlow must be Number, got zhigh must be Number, got r  )r  r   r  r9  r;  )r  r  r@  r!   r  r7  r   r`  r  canonicalize_devicer  _uniform_helper)rY  r  r   r;  r  r9  s         r:  r#  r#  `  s     
c6"7S	{CDDdF#8dEFF
C.CT?DeU[[)>tE{mLMM&&v.F  3Tvf r<  r  c                    t        j                  | j                        t        |t              rt        |      }n|j                  t        j                  dk(  fd       | j                  j
                  dddt        j                  j                         dfv xr |j                  j
                  dk(  }t        j                  |xs |j                  | j                  k(  d        t        j                  |j                        }|t        u r-t        j                  t        j                  |      fd	       t        || j                        }t        j                  |||       }|j!                         S )
Nr   c                      d  dS )Nz@only supports a 0-dimensional value tensor, but got tensor with z
 dimensionrR  )
value_ndims   r:  rT  zmasked_fill.<locals>.<lambda>  s    VWaVbblm r<  cudaxpumpsr5  r}  c                       y)Nz,Expected `value` to be on same device as `a`rR  rR  r<  r:  rT  zmasked_fill.<locals>.<lambda>  r|  r<  c                      d  dS )Nzcould not convert to type z without overflowrR  )r  s   r:  rT  zmasked_fill.<locals>.<lambda>  s    0=NO r<  )r  r   r  r@  r!   r7  r3  r`  rk  r9  _C_get_privateuse1_backend_namer  r    r+   r   r   )rp  r  r  
value_typeis_cpu_scalarr  r  r&  s         @@r:  r   r   {  s/    %%agg.K% %[
 ZZ
!Om	
 HHMMuehh&L&L&NPUVW +!!U* 	
 	5U\\QXX5B	
 ((5
W
 	''
K@O	
 $E1773ED%#A <<>r<  c                 V    t        j                  | ||      }| j                  |       | S rK  )r`  r   copy_)rp  r  r  rq  s       r:  r   r     s(     	!T5)AGGAJHr<  c                     t        d| |||       t        t        j                  t        j                  | ||||            j                               S )z4
    Reference implementation of torch.allclose
    ztorch.allcloser  )r  r  r  )r  r  r`  r   r   r   )rp  rq  r  r  r  s        r:  r-  r-    sH     +qADtL		%--14diPQVVX r<  c                 T   t        j                  | |d       t        j                  | |       | j                  |j                  k7  ryt	        | j
                  |j
                        D ]  \  }}||k7  s y | j                         dk(  ryt        t        t        | |                  S )NFr  r   T)
r  r  check_same_dtyper3  r}  rY  r  r   r   r   )rp  rq  rO  r~  s       r:  r.  r.    s    	Aq5A	1a  	vvAGGQWW% 16
 	wwyA~Bq!Hr<  r  c                j   |dk(  r | t        |t              st        |      dk  s|d}t        |t              r|g}t        |t              rD|t	        t        | j                              }t        j                  j                  | ||||      S t        j                  j                  | ||||      S )Nfror7  r  )r@  r   rX  r  re  rj  r3  r`  rX  matrix_normrY  )r  r  r  r  r  s        r:  rc   rc     s     	
U
z#s';s3x1}	
#se!S ;ejj)*C||''q#we'LL||''q#we'LLr<  c                      t        j                   j                  dk(   fd       t        j                  t        j                   d            S )Nr7  c                  "    d j                    S )Nz+expected a matrix, but got tensor with dim r  r  s   r:  rT  ztrace.<locals>.<lambda>  s    =dii[I r<  r   )r`  rk  r3  r   r   r  s   `r:  rw   rw     s;     
LL		QI 99UZZa())r<  c                 T     dt         t        z  dt         t        z  dt         f fd}|S )Nrp  rq  rw  c                      ||       S rK  rR  )rp  rq  base_ops     r:  ropz_make_r_binary_op.<locals>.rop  s     q!}r<  )r(   r"   )r<  r=  s   ` r:  _make_r_binary_opr>    s3    J&J& 
 Jr<  r   c                 ~   t        j                  | j                  dk\  d        | j                  dd  \  }}t        j                  || j
                        j                  d      t        j                  || j
                        j                  d      z
  |k\  }t        j                  ||       j                         S )Nr7  c                       y)Nz2triu: input tensor must have at least 2 dimensionsrR  rR  r<  r:  rT  ztriu.<locals>.<lambda>  r|  r<  r  r8  rZ  
r`  rk  r3  rY  r  r9  r  r  rS  r   rp  r   hr4  r  s        r:  r  r         
LL	!Q 7723<DAqQqxx(2226
,,q
*
4
4R
8	9	D T1%0022r<  c                 ~   t        j                  | j                  dk\  d        | j                  dd  \  }}t        j                  || j
                        j                  d      t        j                  || j
                        j                  d      z
  |k  }t        j                  ||       j                         S )Nr7  c                       y)Nz2tril: input tensor must have at least 2 dimensionsrR  rR  r<  r:  rT  ztril.<locals>.<lambda>!  r|  r<  r  r8  rZ  rA  rB  s        r:  r  r    rD  r<  rb  rc  c                    | dk(  s|dk(  ry|dkD  rt        |d|z         nt        | |z   dkD        }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   rU  r7  )r  r  rh  )
rb  rc  r  m_first_row
m_last_row	n_row_alln_row_trapezoidtrapezoid_sizediff_rowrectangle_sizes
             r:  _get_tril_sizesrP  3  s    
ax3!8*01*#c1v:&#cFlQ>N:OKQCv./JAs3f-.I ;.2O "J./AQFN?*HHsN+N>;66r<  c                      t        j                  dk\  fd       t        j                  dk\  fd       t        j                  t         j                  t         j                  fv  fd       y )Nr   c                      d  S )Nzrow must be non-negative, got rR  )rb  s   r:  rT  z_trilu_checks.<locals>.<lambda>M      %CC5#I r<  c                      d  S )Nzcol must be non-negative, got rR  )rc  s   r:  rT  z_trilu_checks.<locals>.<lambda>N  rS  r<  c                      d d  dS )NrX  z" not implemented for ''rR  )r  r  s   r:  rT  z_trilu_checks.<locals>.<lambda>Q  s    "TF25'; r<  )r`  rk  r  rQ  )r  rb  rc  r  r  r  s   ````  r:  _trilu_checksrW  E  sO     
LLIJ	LLIJ	LL%++u{{++;r<  r}  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  r9  r  r  rv  r7  rU  )rW  rP  rh  r   r`  r  rz  rJ   rs   r+   r   r   )rb  rc  r  r  r  r9  r  rM  rO  rI  
row_offset	arange_kwxs1rq  	row_inds1	col_inds1xs2	row_inds2	col_inds2s                      r:  r  r  V  sK    .#sE6:F2A#sF2S/NNKQJVFzI
 A~U]]
;CcAQBAEAGO!<<=IC1{?Q#6#Bi"ORU"UUVI'	J(>FI'	59I A~U
3Cs
cK/!3j@AIc	I;;	Iy)	*EIIy)6L,MN r<  c                     | dk(  s|dk(  ry|dkD  rt        d||z
        n|}t        dt        | |       |z        }t        | ||dz
        \  }}}| |z  ||z   z
  }||z
  }	|	||fS )Nr   rH  rU  )rh  r  rP  )
rb  rc  r  rI  rO  trapezoid_size_trilrectangle_size_trilr  	triu_sizerM  s
             r:  _get_triu_sizesrf    s    
ax3!8*01*#av&#K CfW-34N 3B#sFUVJ2W/,ac	03FFGI/N>;66r<  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   rY  r  g      r7  rU  rv  )rW  rf  rh  r   r`  r  rz  rJ   rs   r+   r   r   )rb  rc  r  r  r  r9  r  rM  rO  rI  
col_offsetr[  r_  r`  ra  r\  rq  r]  r^  s                      r:  r  r    sL    .#sE6:F2A#sF2S/NNKQJVFzI
 A~U
3Cs
Ic	I A~U]]
;C{AQBAEAGO!<<=ICAOa$7)$Cy#PTW"WWXI'	59I'	59I
3!67	J&I;;	Iy)	*EIIy)6L,MN r<  )	out_int32rd  
boundariesri  rd  c                   t        j                  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|	| kD  }
n|	| k\  }
t        j                  |
||dz         }|dkD  rt        j                  | t         j                        }t        t!        j"                  |            }t%        |      D ]q  }t        j                  |
|z  ||      }||k  }t        j                  ||||z
  dz  z   d      }|   }	|r|	| kD  }
n|	| k\  }
t        j                  |
 |z  |dz   |      }s |j'                  |      S )NrU  c                  ,    d j                          dS )Nz2boundaries tensor must be 1 dimension but got dim(r  r$  )rj  s   r:  rT  zbucketize.<locals>.<lambda>  s    DZ^^EUDVVWX r<  rZ  r   rR  r7  r  )r`  rk  r  r@  rT  r  r  rQ  rY  r,  r+  r9  r   r'  r  r  r+  r^   rj  r   )rp  rj  ri  rd  	out_dtypen_boundariesr  r  midmid_valcond_midcond_updatenitersr  s    `            r:  r/  r/    s    
LLAX
 5<<(ell1oA(ekkI##B'Lq""
 KKDE
,
C 3;1$
$CoGQ;a<KK%q1Eaooauzz:TYY|,-v 	KA++h4c3?C#+K++k5C%KA3E+EqIC oG "Q;"a<KK(k 937EJE	K 88)8$$r<  c                     |t        d      t        j                  t        j                   j
                         xrB t        j                   j
                         xr  t        j                   j
                          fd       t        j                  dkD  fd       |t        j                  t        j                  t        j                         dz
  z        z  z   S )N"generator is not supported in refsc                  "    d j                    S )NzwCauchy distribution is a continuous probability distribution.         dtype must be a floating point but you specified r  r  s   r:  rT  zcauchy.<locals>.<lambda>       ::>**G r<  r  c                      d  S )Nz-cauchy_ expects sigma > 0.0, but found sigma=rR  )sigmas   r:  rT  zcauchy.<locals>.<lambda>  s    ?wG r<  rv  )r  r`  rk  r  r  r  r  r  ru   r+  r,  	rand_like)r  medianry  	generators   ` ` r:  r  r    s     ABB	LL""4::.. 	3&&tzz22	3&&tzz22	G	 
LLG EEIIdgg1F1L&MNNNNr<  c                 F    |t        d      t        j                  t        j                   j
                         xrB t        j                   j
                         xr  t        j                   j
                          fd       t        j                  dkD  fd       t        j                         }t        j                  |j
                        j                  dz  }|d|z
  k\  }t        j                  || t        j                  |            }dz  |z  S )Nru  c                  "    d j                    S )Nz|Exponential distribution is a continuous probability distribution.         dtype must be a floating point but you specified r  r  s   r:  rT  zexponential.<locals>.<lambda>  rw  r<  r  c                      d  S )Nz4exponential_ expects lambda > 0.0, but found lambda=rR  )rates   r:  rT  zexponential.<locals>.<lambda>"  s    FtfM r<  r7  ru  rZ  )r  r`  rk  r  r  r  r  r  rz  r  r  r   r\   )r  r  r|  uniform_valepsilonr  log_uniforms   ``     r:  rF   rF     s     ABB	LL""4::.. 	3&&tzz22	3&&tzz22	G	 
LLs
M
 //$'K kk+++,0014GsW},I++i'599[3IJK9{""r<  c                     |t        d      t        j                  t        j                   j
                         xr  t        j                   j
                          fd       t        j                  dk  xr dk  fd       t        j                  t        j                  t        j                                t        j                         z        dz   S )Nru  c                  "    d j                    S )Nzgeometric not implemented for r  r  s   r:  rT  zgeometric.<locals>.<lambda>?  s    0= r<  r   rU  c                      d  S )Nz0geometric_ expects p to be in (0, 1), but got p=rR  )r  s   r:  rT  zgeometric.<locals>.<lambda>C  s    B1#F r<  )r  r`  rk  r  r  r  r  rJ   r]   rz  r+  )r  r  r|  s   `` r:  rL   rL   2  s     ABB	LL""4::.. 	3&&tzz22=
 
LL	A!a%F ;;u{{EOOD$9#9:TZZ^KLqPPr<  c                     |t        d      t        j                  t        j                   j
                         xrB t        j                   j
                         xr  t        j                   j
                          fd       t        j                  dk  fd       t        j                  t        j                         z  |z         S )Nru  c                  "    d j                    S )Nzlog_normal not implemented for r  r  s   r:  rT  zlog_normal.<locals>.<lambda>U  s    1$**> r<  r   c                      d  S )Nz-log_normal_ expects std > 0.0, but found std=rR  r   s   r:  rT  zlog_normal.<locals>.<lambda>Y  s    ?uE r<  )
r  r`  rk  r  r  r  r  r  rD   
randn_liker  r   r   r|  s   ` ` r:  r`   r`   H  s     ABB	LL""4::.. 	3&&tzz22	3&&tzz22>	 
LL	CE 99S5++D11D899r<  )r   r   )r|  r  r  r9  r  c          	         |!|t         j                  k7  rt        d|       t        t              st        j
                  dk\  fd       |t        d | fD              }t        j
                  t        |      dkD  d        t        j
                  |d u xr |d u d        t        d |D         }|d   j                  }|d   j                  }njt        j
                  t        | t               xr t        t               d        |t        j                         n|}|t        j                  d	      n|}t        j                  |d
d||d|      }	|	z  | z   S )Nz*layout must be None or torch.strided, got r   c                      d  S )Nz)normal expects std >= 0.0, but found std rR  r  s   r:  rT  znormal.<locals>.<lambda>y  s     I#O r<  c              3   B   K   | ]  }t        |t              s|  y wrK  r  rv  s     r:  rP  znormal.<locals>.<genexpr>}  s     La*Q
2KLs   c                       y)NzFnormal expects that either mean or std is a tensor, or size is definedrR  rR  r<  r:  rT  znormal.<locals>.<lambda>  r|  r<  c                       y)Nz.Cannot pass layout, or pin_memory without sizerR  rR  r<  r:  rT  znormal.<locals>.<lambda>  r|  r<  c              3   4   K   | ]  }|j                     y wrK  r-  rv  s     r:  rP  znormal.<locals>.<genexpr>  s     "<q177"<r  c                       y)Nz>normal expects mean and std to be scalars when size is definedrR  rR  r<  r:  rT  znormal.<locals>.<lambda>  r|  r<  r}  r  ru  F)r   r   r  r9  r  r|  )r`  r  r  r@  r'   rk  re  rX  rr  r  r9  r  r  rd   )
r   r   r?  r|  r  r  r9  r  r  normal_sampless
    `        r:  rd   rd   `  s[   ( f5I&RSSc:&1HO	
 |LD#;LLL1\	
 	dN1zT1D	

 !"<G"<=
  ""4,,PZZ5P1PT	
 .3]'')(.e$F\\N $&&r<  )r|  c                6    t        ||| j                  | |      S )N)r  r|  )rd   rY  r  s       r:  normal_r    s    $TZZTYGGr<  c                 z    t        j                  t        j                  | j                         d        d}| |z  S )Nc                       y)Nz-rad2deg is not supported for complex tensors.rR  rR  r<  r:  rT  zrad2deg.<locals>.<lambda>  r|  r<  gcܥL@r`  rk  r  r  r  )r  M_180_PIs     r:  rh   rh     s8    	LL""4::..? CH(?r<  c                 z    t        j                  t        j                  | j                         d        d}| |z  S )Nc                       y)Nz-deg2rad is not supported for complex tensors.rR  rR  r<  r:  rT  zdeg2rad.<locals>.<lambda>  r|  r<  g9RFߑ?r  )r  M_PI_180s     r:  r?   r?     s8    	LL""4::..? EH(?r<  c                 *    | dk7  j                  |      S r$  )r   )r  r  s     r:  r>   r>     s     AI??3r<  c                 `    t        j                   j                         dk(  xr j                         dk(   fd       t        j                   j                  j                  k(   fd        fd}t        j                   j	                         j	                         k(  |       y )NrU  c                  N    dj                          d j                          dS )Nz1D tensors expected, but got zD and z	D tensorsr$  r  r  s   r:  rT  z_dot_check.<locals>.<lambda>  s#    /
|6%))+iX r<  c                  <    dj                    d j                    S )Nz:dot : expected both vectors to have same dtype, but found r  r  r  s   r:  rT  z_dot_check.<locals>.<lambda>  s     L::,eEKK=* r<  c            	          dj                          d j                          dj                          d j                          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   r:  numel_errorz_dot_check.<locals>.numel_error  sL    9$**,{SXS^S^S`Ra b004

~U5;;=/Qgi	
r<  )r`  rk  r  r  r  )r  r  r  s   `` r:  
_dot_checkr    sx    	LL
a,EIIK1,X
 
LL

ekk!	*
 
LL.<r<  c                 .     t                fd       }|S )Nc                 .    t        | |        | |      S rK  )r  )r  r  r  s     r:  wrapperz#_dot_check_wrapper.<locals>.wrapper  s    4$r<  )r
   )r  r  s   ` r:  _dot_check_wrapperr    s     
2Y  Nr<  r  c                    | j                         r| j                         rt|j                         r@t        j                  | j	                         |j	                               j	                         S t        j
                  | j	                         |      S |j                         r$t        j
                  |j	                         |       S | |z  j                         S rK  )r0  is_conjr`  r   r   r   r   r  s     r:  r   r     s     <<>}}yyejjl;@@BBzz$))+u55]]_::ejjlD115Lr<  c                     | j                         st        j                  | |      S | j                         rf|j                         r2t        j                  |j                         | j                               S t        j                  | j                         |      S |j                         r2t        j                  | |j                               j                         S | j                         |z  j                         S rK  )r0  r`  r   r  r   r   r;   r   r  s     r:  r   r     s     ??yyu%%||~==?::ejjlDIIK8899TYY[%00	yyuzz|,1133  5(--//r<  c                    t        j                  | j                  |      }dg| j                  z  }d||<   |dk  r|| j                  |   z   }t	        j
                  | j                  |   | j                        j                  |      |k(  }t	        j                  ||      j                  | j                        }t	        j                  |||       S )NrU  rZ  r   r8  )r  r  r3  rY  r`  r  r9  r
  r  r   r   )rO  r  r  r  
mask_shaper  s         r:  select_scatterr    s     
 
 
-CqvvJJsOqy$<<QXX6;;JG5PD
//#s
#
*
*177
3C;;tS!$$r<  )rC  c                 V    t        | t        j                  t        j                  f      S rK  )r@  r`  TypedStorageUntypedStorage)objs    r:  
_isStorager    s     cE..0D0DEFFr<  c                    d}t        |       }g }t        | t        t        f      rt	        |       }|r||j
                  z  }|j                  |       t	        |      |kD  r"t        dt        |       j                   d      |dk(  r	 |S 	 | d   }|} t        | t        t        f      r|S # t        $ r# t        dt        |       j                   d      w xY w)N   ztoo many dimensions 'rV  r   z.could not determine the shape of object type ')r  r@  rM  re  rX  itemsizer  rl  r7  r  r  )seqscalar_typeMAX_DIMS
is_storagerD  r  handles          r:  _compute_sizesr    s    HCJE
S4-
(S{+++FVu: 4T#Y5G5G4HJKKQ; L	VF
  S4-
(" L  	@cASAS@TTUV 	s   B, ,,Cc                 &   t        | t              rt        j                         S t        | t              r t        | t
              st        j                  S t        | t              rt        j
                  S t        | t              rt        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      rzd }t1        |       }|dk(  rt        j                         S t3        |      D ]D  }| |   }	 t5        |      }|t        j6                  ||      }n|}|t        j                  u sB|c S  |S t        dt)        |       j*                         )Nz'invalid default scalar type for complexznew(): invalid data type 'rV  r   zCould not infer dtype of )r@  r   r`  r  r   r  rQ  r   r  r  cfloatdoublecdoublehalfchalfrg  rT  r  r  	TypeErrorr7  r  rM  re  rX  rj  _infer_scalar_typepromote_types)r  default_dtype
scalarTyper  r/  cur_itemitem_scalarTypes          r:  r  r    s   #y!&&((#w
3(={{#x zz#w//1EKK'<<ell*== ejj(;;HII#u||$yy#s4T#Y5G5G4HJKK#e}%
S Q;**,,v 	"A1vH 1:O%"00_M
,
U]]* "!	"  
2493E3E2FG
HHr<  r  r  c           	         t        |t              rD|j                         dk(  r1|j                         j	                  | dd      j                  d      S t        |t              r"|j                         j	                  | dd      S t        |t              rt        j                  ||       S |}|st        j                  d      S t        j                  |D cg c]  }t        | |       c}      S c c}w )NrU  r}  T)r  r9  r  rR  r  r   )r@  rT  r  detachr   r
  r!   r`  r)  r  r   _recursive_build)r  r  r  r   s       r:  r  r    s     #v399;!#3zz|ZDINNrRR	C	  zz|ZDII	C	 ""3j99 C  	A [[M*:t<MN Ns   C4c                    t        |t        j                        rat        j                  | d        |}|r|j	                         }|r|j
                  n|}	||n|j                  }
|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        |	|      }|j                  |
|	dd      }|S )Nc                       y)Nz,Can't pin tensor constructed from a variablerR  rR  r<  r:  rT  z)_internal_new_from_data.<locals>.<lambda>   r|  r<  F)r9  r  r	  r  __cuda_array_interface__r9  meta)r	  r  )r@  r`  rT  rk  r  r  r9  r   hasattrNotImplementedr  r  r7  r  )optionsr  
device_optdatacopy_variables
copy_numpytype_inferencer  r   inferred_scalar_typer9  r  s               r:  _internal_new_from_datar    s    $%NR	
 **,C,:syy)53::vv&	  
 	
 t/0 &1Zwx7HF7E-d3; $<<$$.!! ""6=6#7eRWX Mr<  )r  r9  r  r  c          
         t        | t        j                        rt        j                  dt
        d       |d u }t        ddi||nt        j                         || dd||      }|j                          |r|j                  |       |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)r7  r  r9  r}  T)r  r  r  r  )
r@  r`  rT  r  r  UserWarningr  r  detach_r  )r  r  r9  r  r  r  
new_tensors          r:  r  r  -  s    $%l		
 d]N( 
5"(?(?(A%J !!-0r<  rK  )F)r  NN)gh㈵>g:0yE>Fr  )NN)NNNNNFF)FFN)NF)NNFr  )r   rZ  )	NNNTreflectFNNN)NNNTFNNF)rR  )rU  r  )r   r   rU  )r   r  rZ  )r   NrU  )r  )r  ru  )r6  NF)r   rU  Nr[  )rU  r7  N(  r@  r  r  rz  r+  r|  r  collections.abcr   r   r   enumr   	functoolsr   r   r	   r
   typingr   r   r   r   r   r`  torch._prims_primsr  torch._prims_common_prims_commonr  torch.utils._pytree_pytreerA  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*   torch._prims_common.wrappersr+   r,   r-   r.   r/   r0   $torch.testing._internal.common_dtyper1   r  rT  r,  DispatchKey_opsr  r  r;  rD  rr  r  torch._decompr  objectr  r  r  r  rp  r2   INT_TO_FLOATr3   r4   r6   r5   r7   r8   DEFAULTr9   r:   r0  r;   r<   r=   r@   rA   rB   rC   rD   rE   rG   	NO_OPMATHrH   rI   r*  rJ   rK   r   ALWAYS_BOOLrS   rT   rU   rV   rW   specialmultigammalnrb   rX   rY   r[   r\   r]   r^   r_   r  r  ra   r   r  re   r  rf   rg   r   ri   rj   r   rk   rl   rm   rn   ro   rp   rq   rs   BOOL_TO_LONGrt   ru   rv   rx   r  rW  rZ  ry   rz   r{   r|   r}   r~   r   r   r   r  r   r   r   r   r  r  r   r   r   r  re  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   rm  r  r  
ScalarSelfScalarOtherScalarself_outr   r  r  r   r   r  r  r  registerr9  r  r  r  r  r  r!  r   r:  rI  r   r   r   dim_IntListIntList_outrM  r   r   r   r   rk  r   r   r   r   r   r   r   r  r   r   r   r   r   r   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_implrL  r   r1  r2  r`  r3  r  r   r  r  r   r   r   r   r  r   rr   r   r  r  r  rN   rO   rQ   rR   r
  rM   rP   r   rF  r   r  r   r  r   r  r   r   r   r   re  r   r   r   r   r  r   r  r  rv  r   r   r  r
  r  r   r  r  r  r  r!  r"  r+  r%  r&  r$  r#  r  r  r  
start_step	start_outrZ   r  r   r   r   r  r  r  r  r  r,  r'  r(  r)  r#  r   r   r-  r.  rc   rw   r>  r   r   r   r  r  rP  rW  r  r%  rf  r  r/  r  rF   rL   r`   rd   r  rh   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.specialrR  r<  r:  <module>rk     sP          8 8  < < 7 7   # $ $ 6 6      2  Il\	 
hh""zz~~2Rj 9= 8Cx 1   D 2 ##44	 ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#J#JK  L  ##++	 (/n / )/ **+& &  ,& ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q #7AA N  :  .  	 
 ^ J >  		"# #> #  ## ##++	 ##++!N !~ !	!N ~  ##//* *> *	* ##B#N#NO1^ 1 1 P1 ##//1 1> 1	1 ##//1 1> 1	1 ##B#N#NO^   P
 u}}11:> ##//0n 0 0	0 ##00$'' ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q ##B#O#OP Q
  !%XX	X ;;X 	X X '#!7DD
 :?,
,',26,,	  (," ( ! $ $		d	  	
   )6  ##++	 > N ~  ##B#O#OP Q 

##7?? 12 J^ J# Jn J	  $J ##B#O#OP Q ##B#O#OP/~ /. / Q/ ##++	 ##++	 ##//	 ##B#O#OP Q ##B#O#OP4 Q4
 ##B#O#OP Q ##B#O#OP Q ##00n  	 ##B#O#OP Q ##B#O#OP Q ##++	
!. !^ !L 	## %"&6 6r(
"('5
'B(
[[( !#"7??  $	8
"8
"8 	8	  "8: $7DD$$

 $7??#> #n # ## $7??". "^ " "" $7??". "^ " "" $7??.> .n . .. $7??#> #n # ## $7DD$2+ 20K 2	2 !
 !%	
"
" :	  "( $7CC$. ^  	 $7DD
"
" 6 
"
"  t $==EE $"'
ONZ/ ONZ4O O
O>FV F F6 F16 1f 1 12 $7??$$
N ~ . 
 $7??$$
N ~ . 
 $7??$#
N ~ . 
 

#Z$7 75)G#H 7 % $7 $7??$$
> n  
 $7CC$. ^  	 $7CC$. ^  	 $7??$$
^ ^  
 $7??$$
^  > 
 $7DD$$
n  N 
 $7DD$$
~ . ^ 

  	
  
2 ((( ( 	(
 ( (V $7??$$
Q> Qn Q
Q  $7CC$. ^  	 $7??$$
T TN T~ T
T0 $7??$$
,. ,^ , ,
, $7CC> n  ##B#N#NO>  P $7CC. ^  $7CC> n  $7CC$. ^  	 $7??~ . ^  $7??~ . ^  $7?? $> n  	 $7CC$. ^  	 $7AA$$
! !N !~ !
! $7??! !N !~ !!
 		" 	(
"	(
"	( 	(  #	( !#"7?? 	$8
"$8
"$8 	$8	  "$8N $7DD	 $	> n   

##"7DD:^j( :^j-H :	  $:. $==EE $
"NZ/ "NZ4O "
" %#67DD ,
,, ,
 , ,	  &,* %#67?? ,
,, ,
 , ,	  &,* 

##+7?? *.)-	$	& 
 $	& 		  $6 ' *.&
&	$	&& &  (& ' *.&
&	$	&& &  (& 

**+. .E&#+$6 . ,. 

(

--.

../

))*

++,#"7AA (,'+#
#$# $#	  - + 0 / )#. 

#?D?T?T).)<)<  $ 9= v &  		"&N &z & #& %) $"&04#T! ;; +	
 LL4 &&- t  
2    04LL;;  	
 &&- 
#s(^ "  04;;  	
 &&- 
#s(^ "  04	;;  &&-	
 
#s(^   04	  &&-	
 
#s(^ ."& "T "0 .  n  X "  $CC
C 	C
 C T/C C ;;C 
$C 2C CL< !  

	D
 
 	
  "
 !  	D  	  "$ --txx/C/CDE #'
 !%	td3i	 
 ;; 
$  F:CC C, 		" #'
 	td3i	  
$  #: 		"  
 	D 
 
$  #. 		"  
 	D 
 
$  #. !   	 %)	D Tk 	 T!   "6 ! #' 	1 %)11	td3i	1 Tk1 	1 T!1 1  "1, 		"  +
 ++	D+ + + #+\ &VV   !$(	D Tk	
  T!  '2 &VV   	 %)	D Tk 	 T!  ' 		"#07?? 7A
7A
7A 7A
 7A 7A 7A	  #7Av+	(>2	2+;I+eNC/00+    # *8  +	(>2	2+;I+eNC/00+ +	(>2	2+;I+eNC/00+& "&		A	A
	A 	A $J		A
 	A //0 "&RR	R R 	R
 $JR R  1R2 2 ''(M(MN''(8(89O4#7 O : OO1N 1) 1 1 !#$7AAyG# yG# yGn yG	  "yGz #, # # # >  ,,-?@PP $S	P2<PP  .Ph 8=7N7N77!&!4!477 #& #> # # $/4 Ff F F F %FT F v ^ S s 5QTAT;U ,1~ 1# 1C 1 1* 		"N "2 ~   #n  n  (+n(<FID").
666!"@> tCy ^  ..667DDTMD 4-D 	D
 D D D 
D 666!"D 8DN ../VVV$LLL TML 4-	L
 
L 666!"L % 0L^ ..t/E/E/M/MN$ O$ %,~ , , &, $#.#.,#.36#.AO#.#.  %#.N +??@ "!  "&#'p?p?p? d
p? d
	p?
 TMp? p? p? p? Tkp? 4Kp? D[p? p? Ap?h KAAB "!  ZZZ d
Z d
	Z
 TMZ Z Z TkZ $JZ Z CZ|",9<DGOR8 $51f 51 51  %51pRR*.RRj8?N 8? 8? 8?~<~ <y <^ <
&^ &N &~ & 		"8>N 8>H 8>H 8>n 8>  #8>v 

#<B>>>)9>>  $><
!3 
 
 

#G% GC G G  $G"  !%	 ;; 	 * #& #> # # #& #> # #S Sc S) S S $
n 
3 
/A 
 %
" * 3 z :  
: 
C 

 
J 
 (<<<$.<7AJ7N<  )< (();;;$.;7AJ7N; *;//	/ / 
"	/ /d  	  	  " ))*KJ KS K K  +K" ))*~ HtO ~  +B --.56
#Cy/2	&\ /D DFDF(*DF 
DF >3	DFP(-(-,4(-
>3(-X&+&+,4&+
>3&+R 		& 1
11 1  '1 --. 	  	
    /0 & 	#
## # 	#
 # '#L ( 	535353 53 	53
 53  )53p (!$$~"6 !$> !$  )!$H)n- ). )(n ( (5G ( '9 9 (9$	 	N 	 

#^   $ '	* 	*s 	*# 	*. 	* (	* 	 $+
+%(+03+;>++ %+ (()n  C s   * !%9 9 
	9 ;;9 
$9 90 $
 !%TT	T ;;	T
 
$T T %T %
 !%UU	U ;;	U
 
$U U &U '3 3c 3n 3 (3 		))*=N =Ii0@$@ =^ = +=*#. # #N #
^   >B%D||%D#ll%D14t%D
\\%D %DP  !% ==$().)@)@%;;% LL% T!	%
 % % &&% % %P  !% ==$( ;; LL	
 T!    $ '
 !%"&$(
 ;;	
 LL4 T!    (, ../ !%"&$(
 
 ;; LL4 T!    08 

**+ !% ==$(;; LL T!	
     ,0 '
 !%"&$(
 ;;	
 LL4 T!     (2 		))* !% ==$(;; LL T!	
     +0 &
 !%"&$(
 ;;	
 LL4 T!     '2 & !%"&$(
 
 ;; LL4 T!    '0 ==> 15
	 &&- 	 ? ( !%$("&).)>)>&& ;;& T!	&
 LL4& & & &&& &  )&R //1F1FGH!c
 !% ==$(cc	d	c c
 ;;c LLc T!c c c c  IcL 		"#27??8 8V 8Vj-@ 8	  #84 & !%$( ==X/&X/	n	$X/ X/
 ;;X/ T!X/ LLX/ X/ X/ X/  'X/v &
 	9@ !%$( ==9@&9@	n	$9@ 9@ 	9@ ;;9@ T!9@ LL9@ 9@ 9@ 9@  '9@x 
	h~. 	# 	 
	 
	~ 	 	 
	 &CtN33eN6KKCC 
.C 'CN;;""; ''; 	;~ **+
 !%$( ==uY'' ;;	
 T! LL     ,6# %++  ! %) !% ==$(%)
%)
Tz%) ;;	%)
 LL%) T!%) %) %) %)  "%)V **DIIMM:;
 !% ==$(%%% ;;	%
 LL% T!% % % %  <%> !%"&$().)>)> ;;	
 LL4 T!   && . ( !%"&$().)>)> ;; LL4	
 T!   &&   ), ' !%"&$().)>)> ;; LL4	
 T!   &&   (, 

**+ !%$("&;; T! LL4	
     ,8 !% ==$(>> ;;> LL	>
 T!> > >, ""	e	 *u

  ;;  6 (()*> * *@V *  **Z ))*+4J +   	
  
"^  4 & 		" "	M !%MMs{TM 
DM 	M ;;M M  #M2 

#* *> *  $* [)l+	 		"3N 3c 3. 3  #3 		"3N 3c 3. 3  #3(7 73 7 7c3m8L 7$
	 
 ;;	
 LL " ))* "
  ==""	"	" "
 ;;" LL" " " "  +"R7 73 7 7c3m8L 7" ))* &
  =="&	&	& &
 ;;& LL& & & &  +&R '
 7%7%7% 	7%
 7%  (7%t $#!7??O	  %O" (()#!7??#	  *#8 '#!7??Q	  (Q  (#!7??:	  ):$ $# 8?? 
		2'
 
2'  %2'j %Hd H &H ##B#O#OP.  Q ##B#O#OP.  Q **+ X_    , =* !#)7??
 	   "
  		"#)7??0	   #0  ++,%n %> % %C %  -% Sd	u	S!!d	u	d	u		u	[)#$67 [)J'$%89 [)d	u	9%
9%
}-(#	Sd

!!!SBSd

Sd	u	[)	u	l+ddSBB9%
	u	

!BSBd

	u		u	dS[)[)J'[)BS(#	J'BS9%
S!J'9%
	u	S!dSddd

SSddd[)	u		u	

[)9%
J'd!$**-
&t7$T]]3"4;;/ #4;;/#DLL1#DLL1	dff	%%dnn5"4;;4P%dnn5 +	G
4/Ih"8;M"MH 5r tU L       r<  