§
    ­˜ºhøÕ ã            -       óÐn  — d dl Z d dlZd dlmZ d dlmZ d dlmZmZ d dl	m
Z
mZmZmZ d dlmZ d dlZd dlmZ d dlmZmZmZ d dlmZmZmZmZ d d	lmZ d d
l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+m,Z,m-Z-m.Z. d dl/m0Z0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6m7Z7 d dl8m9Z: d dl;m<Z=  ed¦  «        Z> ed¦  «        Z?ej@        jA        ZAejB         C                    ddd¦  «        ZD eEd¦  «        \  ZFZGZHde
e
e?e>f         ge
e?e>f         f         fd„ZIde'fd„ZJd„ ZKd„ ZL eIeAjM        eAjN        g¦  «         e4¦   «         dddejO        ddfd„¦   «         ¦   «         ZP eIeAjQ        jR        eAjQ        jS        g¦  «         e4¦   «         d„ ¦   «         ¦   «         ZT eIeAjU        jR        eAjU        jS        g¦  «         e4¦   «         dd œd!„¦   «         ¦   «         ZU�d0d"„ZVd#„ ZW�d1d%„ZX eIeAjY        jR        ¦  «        d&„ ¦   «         ZZ eIeAj[        ¦  «         e4¦   «         d'„ ¦   «         ¦   «         Z[ eIeAj\        jR        eAj\        jS        eAj]        jR        eAj]        jS        g¦  «         e4d(d)¦  «        d*„ ¦   «         ¦   «         Z^ eIeAj_        jR        eAj_        jS        g¦  «         e4¦   «         d+„ ¦   «         ¦   «         Z_d,„ Z`�d0d-ed.eaeb         d/ecfd0„Zd eIeAje        jR        eAje        jS        g¦  «         e4¦   «         d1„ ¦   «         ¦   «         ZfdZgd.eaeb         fd2„Zh eIeAji        jR        eAji        jS        g¦  «         e4¦   «         d3„ ¦   «         ¦   «         Zj eIeAjk        jl        ¦  «        dd4œd5„¦   «         Zm eIeAjk        jR        ¦  «        ejn        dddd6œd7„¦   «         Zo eIeAjp        jR        eAjp        jS        g¦  «         e4¦   «         ejn        dddd6œd8„¦   «         ¦   «         Zq eIeAjp        jr        eAjp        js        g¦  «         e4¦   «         ejn        dddd6œd9„¦   «         ¦   «         Zt eIeAju        jR        eAju        jS        g¦  «         e4¦   «         ddddd6œd:„¦   «         ¦   «         Zv eIeAjw        jR        eAjw        jS        g¦  «         e4¦   «         d-ed.eaeb         d;ebd<ebfd=„¦   «         ¦   «         Zx eIeAjy        jR        ¦  «        �d0d>„¦   «         Zzd?„ Z{ eIeAj|        jR        ¦  «        d@„ ¦   «         Z} eIeAj~        ¦  «        	 	 	 �d2dAedBedCedDee         dEee         dFeej€                 fdG„¦   «         Z� eIeAj‚        ¦  «        	 �d3dHedIedJedFeej€                 fdK„¦   «         Zƒ eIeAj„        ¦  «        dLdLddMœdAedHedIedJedFeej€                 f
dN„¦   «         Z… eIeAj†        ¦  «        	 	 	 	 	 	 	 �d4dOej        dPej        dDee         dQee         dFeej€                 dRecdSebdTebdUebfdV„¦   «         Z‡ eIeAjˆ        jR        ¦  «        d$dWœd-ed.ebdXedYej        dZed[ecdefd\„¦   «         Z‰ eIeAjŠ        jR        ¦  «        d$dWœd-ed.ebdXedYej        dZed[ecdefd]„¦   «         Z‹ e4¦   «          eIeAjŒ        jR        ¦  «        d^„ ¦   «         ¦   «         Z� eIeAjŽ        jR        ¦  «        dddd ddd_œd`edZedaee         d)ee         dbee         dcebddecdefde„¦   «         Z� eIeAj�        jR        eAj�        j‘        g¦  «         e4¦   «         df„ ¦   «         ¦   «         Z’ eIeAj�        j“        ¦  «        �d0dg„¦   «         Z” eIeAj•        jR        eAj•        j‘        g¦  «         e4¦   «         dh„ ¦   «         ¦   «         Z– eIeAj•        j“        ¦  «        �d0di„¦   «         Z— eIeAj˜        jR        ¦  «        dj„ ¦   «         Z™ eIeAj˜        jS        ¦  «        dk„ ¦   «         Zš eIeAj›        jR        ¦  «        dl„ ¦   «         Zœ eIeAj›        j�        ¦  «        dm„ ¦   «         Zž eIeAjŸ        jR        ¦  «        dn„ ¦   «         Z  eIeAj¡        jR        ¦  «        ddddddoœdp„¦   «         Z¢ eIeAj£        jR        ¦  «        �d5dq„¦   «         Z£ eIeAj¤        jR        ¦  «        �d2dr„¦   «         Z¥ eIeAj¦        jR        ¦  «        �d5ds„¦   «         Z¦ eIeAj§        jR        ¦  «        dt„ ¦   «         Z¨ eIeAj©        j�        ¦  «        du„ ¦   «         Zªd-edvefdw„Z«d-edxedyefdz„Z¬	 �d1d{edved|ecfd}„Z­�d6dxedved~efd„Z®dxed€ed�ecdvefd‚„Z¯	 �d7d„edƒedAed…efd†„Z°d‡efdˆ„Z± eIeAj²        jR        eAj²        j³        g¦  «         e4d‰dŠ¦  «        �d8dxed‡edŒecfd�„¦   «         ¦   «         Z´ eIeAjµ        jR        eAj¶        jS        g¦  «         e4¦   «         dAedefdŽ„¦   «         ¦   «         Z· eIeAj¸        g¦  «         e4d‰dŠ¦  «        dAefd�„¦   «         ¦   «         Z¹d�edefd‘„Zº eIeAj»        ¦  «         e4¦   «         d-edxed’ecdefd“„¦   «         ¦   «         Z» eIeAj¼        ¦  «         e4¦   «         �d0d-edxed’ecdefd”„¦   «         ¦   «         Z¼ eIeAj½        ¦  «         e4¦   «         �d0d-ed’ecdefd•„¦   «         ¦   «         Z½ eIeAj¾        ¦  «         e4¦   «         �d0d-ed’ecdefd–„¦   «         ¦   «         Z¾ eIeAj¿        jR        ¦  «        �d9dxed’ecd—ecfd˜„¦   «         Z¿ eIeAjÀ        jR        eAjÀ        jS        g¦  «         e4¦   «         dAed™edefdš„¦   «         ¦   «         ZÀ eIeAjÁ        jR        ¦  «        �d0dxed—ecfd›„¦   «         ZÂ eIeAjÃ        jR        eAjÃ        jS        g¦  «         e4dœd�dž¦  «        dddŸœd-ed ecd—ecdeÄeeef         fd¡„¦   «         ¦   «         ZÅ eIeAjÆ        jR        eAjÆ        jS        g¦  «         e4¦   «         dd¢œdœed�ed€ed ecdef
d£„¦   «         ¦   «         ZÇ eIeAjÈ        jR        eAjÈ        jS        g¦  «         e4d¤d‹d¥¦  «        d$d¦œdxed§ecdeÄeeef         fd¨„¦   «         ¦   «         ZÉ eIeAjÊ        jR        eAjÊ        jS        g¦  «         e4d©d�dž¦  «        d$ddªœdxed§ecd—ecdeÄeeef         fd«„¦   «         ¦   «         ZË eIeAjÌ        jR        eAjÌ        jS        g¦  «         e4¦   «         d$dd¬œd©ed�ed€ed�ecd­ecdefd®„¦   «         ¦   «         ZÍ eIeAjÎ        ¦  «         e4d¤d‹d¥¦  «        	 	 �d:d©ed�ed¯ecd°ecdeÄeeef         f
d±„¦   «         ¦   «         ZÏd²edeÄececf         fd³„ZÐ eIeAjÑ        jR        eAjÑ        jS        g¦  «         e4d´dµ¦  «        �d;dxed²edeÄeef         fd·„¦   «         ¦   «         ZÒ eIeAjÓ        jR        eAjÓ        jÔ        g¦  «         e4d¸d¹d©d�¦  «        dxedeÄeeeef         fdº„¦   «         ¦   «         ZÓ eIeAjÕ        jR        ¦  «        	 	 	 �d<dxed»ecd¼ecd½ee         fd¾„¦   «         ZÖd¿edÀedeÄeaeb         eaeb         f         fdÁ„Z×d¿edÀedyee         deÄeef         fdÂ„ZØdAedÃedecfdÄ„ZÙ eIeAjÚ        ¦  «        d$ddddddÅœdxed€ed�ecd—ecdƒee         d©ee         d�ee         džee         deÄeeeef         fdÆ„¦   «         ZÚ eIeAjÛ        jR        eAjÛ        jS        g¦  «        d$dddÇœdxed€ed’ecd�ecdÈecdÉee         defdÊ„¦   «         ZÜ eIeAjÝ        ¦  «         e4dËdÌd$¬Í¦  «        	 	 	 �d=d-edxed’ecdÎecdÈecdeÄeef         fdÏ„¦   «         ¦   «         ZÞ eIeAjß        jR        ¦  «        dÐ„ ¦   «         Zà eIeAjá        ¦  «         e4¦   «         	 	 �d>dAed™edÃed�ecdÎecdefdÑ„¦   «         ¦   «         ZádÒ„ ZâdÓ„ Zã eIeAjä        ¦  «         e4¦   «         dÔ„ ¦   «         ¦   «         Zå eIeAjæ        ¦  «         e4¦   «         dÕ„ ¦   «         ¦   «         ZçdÖ„ Zè eIeAjé        ¦  «         e4d×¦  «        dØ„ ¦   «         ¦   «         Zê eIeAjë        ¦  «         e4d×¦  «        dÙ„ ¦   «         ¦   «         ZìdÚ„ Zí eIeAjî        ¦  «         e4¦   «         dÛ„ ¦   «         ¦   «         Zï eIeAjð        ¦  «         e4¦   «         dÜ„ ¦   «         ¦   «         Zñ eIeAjò        jR        eAjò        jó        eAjô        jR        eAjô        jó        g¦  «         e4d×¦  «        dÝ„ ¦   «         ¦   «         ZõdÞ„ Zö eIeAj÷        ¦  «         e4¦   «         dß„ ¦   «         ¦   «         Zø eIeAjù        ¦  «         e4¦   «         dà„ ¦   «         ¦   «         Zú eIeAjû        jR        eAjû        jó        eAjü        jR        eAjü        jó        g¦  «         e4d×¦  «        dá„ ¦   «         ¦   «         Zý eIeAjþ        ¦  «         e4¦   «         �d?d-edãeÿdefdä„¦   «         ¦   «         �Z  eIeA�j        ¦  «         e4¦   «         dåed-edãeÿdæedef
dç„¦   «         ¦   «         �Z eIeA�j        jR        eA�j        jS        g¦  «         e4d$¬Í¦  «        dLdLdèœdé„¦   «         ¦   «         �Z eIeA�j        jR        eA�j        jS        g¦  «         e4¦   «         dd4œdê„¦   «         ¦   «         �Z eIeA�j        jÿ        ¦  «        �d@dì„¦   «         �Z eIeA�j        �j	        ¦  «        �d@dí„¦   «         �Z
 eIeA�j        jR        eA�j        jS        g¦  «         e4¦   «         �d3dî„¦   «         ¦   «         �Z eIeA�j        jR        ¦  «        	 	 �d9dï„¦   «         �Z eIeA�j        ¦  «         e4d$¬Í¦  «        dð„ ¦   «         ¦   «         �Zdñ„ �Z�dAdó„�Z	 �d3dôej        dBej        dõeeaeb         ebf         döeeaeb         ebf         d÷eeaeb         ebf         døecdùebdúeeeaeb         ebf                  fdû„�Zdü„ �Z eIeA�j        jR        ¦  «        dôej        dBej        dDeej                 dýeej                 dþeej                 dÿec�d eÿ�deÿf�d„¦   «         �Z eIeA�j        jR        ¦  «        dôej        dBej        dDej        dõeaeb         döeaeb         d÷eaeb         døecdúeaeb         dùebf�d„¦   «         �Ze�j        �j        �rÕejB         C                    �ddd¦  «        �Z eIej@        �j        �j        jR        ¦  «        �d„ ¦   «         �Z eIej@        �j        �j        jR        ¦  «        �d„ ¦   «         �Z e�j        �j!        rEejB         C                    �ddd¦  «        �Z" eIej@        �j#        �j$        ¦  «        �d„ ¦   «         �Z%ejB         C                    �d	dd¦  «        �Z& eIej@        �j'        �j(        jR        ¦  «         eIej@        �j'        �j)        jR        ¦  «        �d
„ ¦   «         ¦   «         �Z* eIej@        �j'        �j(        �j+        ¦  «        �d„ ¦   «         �Z, eIej@        �j'        �j-        jR        ¦  «         eIej@        �j'        �j-        �j.        ¦  «        �d„ ¦   «         ¦   «         �Z/ eIej@        �j'        �j-        �j+        ¦  «         eIej@        �j'        �j-        �j0        ¦  «        �d„ ¦   «         ¦   «         �Z1 eIej@        �j'        �j2        jR        ¦  «         eIej@        �j'        �j3        jR        ¦  «        �d„ ¦   «         ¦   «         �Z4ejB         C                    �ddd¦  «        �Z5 eIej@        �j6        �j7        ¦  «        	 	 	 	 �dB�d„¦   «         �Z8 eIej@        �j6        �j9        ¦  «        �d„ ¦   «         �Z:�d„ �Z; eIeA�j<        jR        ¦  «        	 	 	 	 	 �dC�d„¦   «         �Z=�d„ �Z> eIeA�j?        jR        ¦  «        �d„ ¦   «         �Z@ eIeA�jA        ¦  «         e4¦   «         	 	 	 	 	 �dC�d„¦   «         ¦   «         �ZB eIeA�jC        ¦  «         e4d×¦  «        �d„ ¦   «         ¦   «         �ZD eIeA�jE        jR        ¦  «        �d„ ¦   «         �ZF eIeA�jG        jR        ¦  «        �d„ ¦   «         �ZH eIeA�jI        jR        ¦  «        �d„ ¦   «         �ZJ eIeA�jK        ¦  «         e4d×¦  «        �d„ ¦   «         ¦   «         �ZL�ded~ef�d „�ZM eIeA�jN        ¦  «         e4dÉd)¦  «        �d!„ ¦   «         ¦   «         �ZO eIeA�jP        ¦  «         e4d×¦  «        �d"„ ¦   «         ¦   «         �ZQ eIeA�jR        ¦  «         e4dÉd)¦  «        �d#„ ¦   «         ¦   «         �ZS eIeA�jT        ¦  «         e4d×¦  «        �d$„ ¦   «         ¦   «         �ZU eIeA�jV        j        ¦  «        �d3�d%„¦   «         �ZW eIeA�jX        jR        eA�jX        jS        g¦  «         e4¦   «         �d&„ ¦   «         ¦   «         �ZY eIeA�jZ        jR        eA�jZ        jS        g¦  «         e4¦   «         d�d'œ�d(ebf�d)„¦   «         ¦   «         �ZZ eIej@        jA        �j[        jR        ej@        jA        �j[        jS        g¦  «         e4¦   «         �d*„ ¦   «         ¦   «         �Z[ eIeA�j\        j        eA�j]        j        g¦  «        �d+„ ¦   «         �Z^ eIeA�j_        jR        g¦  «        �d,„ ¦   «         �Z` eIeA�ja        jR        eA�ja        jS        g¦  «         e4d$¬Í¦  «        dLdLdèœ�d-„¦   «         ¦   «         �Zb eIeA�jc        j        g¦  «        �d.„ ¦   «         �Zd eIeA�je        jR        eA�jf        jR        g¦  «        dd�d/œ�d0„¦   «         �Zg eIeA�jh        jR        g¦  «        dd�d/œ�d1„¦   «         �Zi eIeA�jj        g¦  «         e4¦   «         �d2„ ¦   «         ¦   «         �Zk eIeA�jl        g¦  «        �d3„ ¦   «         �Zm eIeA�jn        g¦  «        �d4„ ¦   «         �Zo eIeA�jp        g¦  «        �d5„ ¦   «         �Zq eIeA�jr        g¦  «        �d6„ ¦   «         �Zs eIeA�jt        g¦  «        �d7„ ¦   «         �Zt�d8eb�d9ebdebf�d:„�Zu�d;„ �Zv eIeA�jw        g¦  «        dDee         f�d<„¦   «         �Zx eIeA�jy        g¦  «        �d=„ ¦   «         �Zz eIeA�j{        g¦  «        �d>„ ¦   «         �Z| eIeA�j}        jR        ¦  «        �d?„ ¦   «         �Z~ eIeA�j        ¦  «         e4¦   «         �d@„ ¦   «         ¦   «         �Z€ eIeA�j�        jR        ¦  «        	 	 	 	 	 	 �dD�dA„¦   «         �Z‚ eIeA�jƒ        jR        ¦  «        �dB„ ¦   «         �Z„�d1�dC„�Z… eIeA�j†        jR        eA�j†        jS        g¦  «         e4¦   «         �dEd�dDœ�dE„¦   «         ¦   «         �Z‡ eIeA�jˆ        jR        eA�j‰        jR        g¦  «        �dF„ ¦   «         �ZŠ eIeA�jˆ        j“        eA�jˆ        �j‹        eA�j‰        j“        eA�j‰        �j‹        eA�jŒ        jR        eA�jŒ        �j�        g¦  «         e4d(d)¦  «        �dF�dG„¦   «         ¦   «         �ZŽ eIeA�j�        jR        ¦  «        �dH„ ¦   «         �Z� eIeA�j‘        jR        ¦  «        �dI„ ¦   «         �Z’ eIeA�j“        jR        ¦  «        �dJ„ ¦   «         �Z” eIeA�j•        �j–        eA�j—        �j–        eA�j•        j        eA�j—        j        eA�j˜        jR        eA�j™        jR        eA�jš        jR        g¦  «        �dK„ ¦   «         �Z› eIeA�jœ        �j–        eA�j�        �j–        eA�jœ        j        eA�j�        j        g¦  «        �d�dL„¦   «         �Zž eIeA�jŸ        jR        eA�jŸ        �j         g¦  «        �dM„ ¦   «         �Z¡�dN„ �Z¢ eIeA�j£        j        eA�j£        �j–        g¦  «        �dO„ ¦   «         �Z¤ eIeA�j¥        j        eA�j¥        �j–        g¦  «        �dP„ ¦   «         �Z¦ eIeA�j§        jR        ¦  «        �dQ„ ¦   «         �Z¨ eIeA�j©        j        eA�j©        �j–        g¦  «        �dR„ ¦   «         �Zª eIeA�j«        j        eA�j«        �j–        g¦  «        �dS„ ¦   «         �Z¬ eIeA�j­        jR        ¦  «        �dT„ ¦   «         �Z® eIeA�j¯        j        ¦  «         e4¦   «         �ddef�dU„¦   «         ¦   «         �Z° eIeA�j±        g¦  «         e4¦   «         	 �dG�dX„¦   «         ¦   «         �Z² eIeA�j³        g¦  «        	 �dG�dY„¦   «         �Z´ eIeA�jµ        g¦  «        	 �dG�dZ„¦   «         �Z¶ eIeA�j·        jR        eA�j¸        jR        g¦  «        �d0�d[„¦   «         �Z¹ eIeA�jº        �j–        ¦  «        �d\„ ¦   «         �Z» eIeA�j¼        jR        ¦  «        �d]„ ¦   «         �Z½ eIeA�j¾        ¦  «        �d^„ ¦   «         �Z¿ eIeA�jÀ        ¦  «         e4¦   «         �d_„ ¦   «         ¦   «         �ZÁ eIeA�jÂ        ¦  «        �d`„ ¦   «         �ZÃ eIeA�jÄ        jR        ¦  «        �d0�da„¦   «         �ZÅ eIeA�jÆ        jR        ¦  «        �db„ ¦   «         �ZÇ�d5�dc„�ZÈ eIeA�jÉ        jR        ¦  «        �dd„ ¦   «         �ZÊ eIeA�jÉ        j€        ¦  «        �de„ ¦   «         �ZË�df„ �ZÌ�dg„ �ZÍ�dh„ �ZÎ�di„ �ZÏ	 �d0dAe�djeb�dkeb�dleb�dmeb�dneb�doeb�dpeb�dqeb�dreb�dseb�dteb�dueb�dveb�dweb�dxeb�dyeb�dzeb�d{eb�d|ebd„e�d}ecf,�d~„�ZÐ�d„ �ZÑdAe�de�djeb�dkeb�dleb�dmeb�dneb�doeb�dpeb�dqeb�dreb�dseb�dweb�dxeb�dyeb�dzeb�d{eb�d|ebd„ef&�d€„�ZÒ�d�„ �ZÓ eIeA�jÔ        jR        ¦  «        �d‚„ ¦   «         �ZÕ eIeA�jÖ        jR        ¦  «        	 	 	 	 �dB�dƒ„¦   «         �Z× eIeA�jØ        jR        ¦  «        �d„„ ¦   «         �ZÙ eIeA�jÚ        ¦  «         e4dÉd)¦  «        	 	 	 	 �dB�d…„¦   «         ¦   «         �ZÛ eIeA�jÜ        ¦  «         e4d×¦  «        �d†„ ¦   «         ¦   «         �ZÝdAe�d‡ef�dˆ„�ZÞ G �d‰„ �dŠe¦  «        �ZßdAe�d‡e�d‹ebf�dŒ„�Zà eIeA�já        jR        ¦  «        �d�„ ¦   «         �Zâ eIeA�jã        ¦  «         e4¦   «         �dŽ„ ¦   «         ¦   «         �Zã eIeA�jä        ¦  «         e4d×�d�¦  «        �d�„ ¦   «         ¦   «         �Zä eIeA�jå        jR        g¦  «        �d‘„ ¦   «         �Zå eIeA�jæ        jR        ¦  «        	 	 	 	 	 �dH�d’„¦   «         �Zæ eIeA�jç        jR        eA�jç        jS        g¦  «         e4¦   «         ddddd�d“œ�d”„¦   «         ¦   «         �Zè eIeA�jé        jR        eA�jé        jS        g¦  «         e4¦   «         ddddd�d“œ�d•„¦   «         ¦   «         �Zê eIeA�jë        jb        ¦  «        �d–„ ¦   «         �Zì eIeA�jí        jR        ¦  «        �d—„ ¦   «         �Zî eIeA�jï        jR        ¦  «        �dI�d˜„¦   «         �Zð�d1d.eb�d™eb�dšecf�d›„�Zñ�dœ„ �Zò�d�„ �Zó eIeA�jô        jR        ¦  «        �d0�dž„¦   «         �Zõ�d0�dŸ„�Zö�d3�d „�Z÷�d¡„ �Zø�d3�d¢„�Zù�dJ�d£„�Zú eIeA�jû        jR        ¦  «        �d¤„ ¦   «         �Zü eIeA�jý        ¦  «        �d¥„ ¦   «         �Zþ eIeA�jÿ        �j         eA�jÿ        �j        eA�jÿ        j        eA�jÿ        �j        g¦  «         e4¦   «         �d3�d¦„¦   «         ¦   «         �Z eIeA�j        �j         eA�j        �j        eA�j        j        eA�j        �j        g¦  «        �d3�d§„¦   «         �Z eIeA�j        g¦  «        	 	 	 	 �dK�d©e�dªe�d«e�d¬eÿ�d­ec�d®ec�d¯eeÿ         f�d°„¦   «         �Z�d©e�d±eÄeb�d²f         f�d³„�Z eIeA�j	        g¦  «        	 	 	 	 �dK�d©e�dªe�d«e�d´ee         �dµec�d¬eÿ�d­ec�d®ec�d¯eeÿ         f�d¶„¦   «         �Z
 eIeA�j        g¦  «        	 	 	 	 	 �dL�d©e�dªe�d«e�d´ee         �d¬eÿ�d­ec�d®ec�d¯eeÿ         f�d·„¦   «         �Z eIeA�j        g¦  «        	 �d3�d¸e�d©e�dªe�d«edÉe�d¹e�dºe�d»e�d¼eb�d½eb�d¬eÿ�d­ec�d¾e�d¿e�d¯eeÿ         f�dÀ„¦   «         �Z eIeA�j        g¦  «        	 	 	 	 �dM�d©e�dªe�d«e�d¬eÿ�d­ec�dÁee         �d¯eeÿ         f�dÂ„¦   «         �Z eIeA�j        g¦  «        	 	 �d5�d¸e�d©e�dªe�d«edÉe�d¹e�d¬eÿ�d­ec�dÁee         �d¯eeÿ         f�dÃ„¦   «         �Z eIeA�j        g¦  «        	 	 	 �dN�d©e�dªe�d«e�d´ee         �dµec�d­ec�d¯eeÿ         f�dÄ„¦   «         �Z eIeA�j        g¦  «        	 	 �dO�d¸e�d©e�dªe�d«e�d´ee         dÉe�d¹e�d¾e�d¿e�d¬eÿ�dÅeaec         �d­ec�d¯eeÿ         f�dÆ„¦   «         �Z eIeA�j        g¦  «        	 �d3�d¸e�d©e�dªe�d«edÉe�d¹e�d¾e�d¿e�d´e�dºe�d»e�d¼eb�d½eb�d¬eÿ�d­ec�d¯eeÿ         f �dÇ„¦   «         �Z eIeA�j        g¦  «        	 	 	 	 	 �dH�d©e�dªe�d«e�dºee         �d»ee         �d¼eb�d½eb�d¬eÿ�d­ec�d®ec�d¯eeÿ         �dÈeeb         �dÉeeb         �dÊee         �dËee         f�dÌ„¦   «         �Z eIeA�j        g¦  «        	 	 	 �d2�d¸e�d©e�dªe�d«edÉe�d¹e�dºe�d»e�d¼eb�d½eb�d¬eÿ�d­ec�d¾e�d¿e�d¯eeÿ         �dÈeeb         �dÉeeb         f"�dÍ„¦   «         �Z eIeA�j        g¦  «        	 	 	 	 	 �dP�d©e�dªe�d«edDee         �dÎee         �dÏee         �dÐeeb         �dÑeeb         �d¬eÿ�dÒeb�dµec�d¯eeÿ         �dÓee         �dÔee         �dÕeeb         f�dÖ„¦   «         �Z eIeA�j        g¦  «        	 	 	 �dJ�d¸e�d©e�dªe�d«edDee         �dÎee         �dÏee         �dÐe�j         �dÑe�j         �d¹e�d¬eÿ�d¾e�d¿e�dÒeb�d×ec�d¯eeÿ         �dØeeb         �dÙecf$�dÚ„¦   «         �Z! eIeA�j"        jR        g¦  «        	 	 	 	 �dQd-ej        dJej        �dÛej        �dÜej        dDeej                 �dÝeej                 dFeej€                 �dÞecf�dß„¦   «         �Z# eIeA�j$        �j%        eA�j$        �j&        g¦  «         e4¦   «         �d1�dà„¦   «         ¦   «         �Z' eIeA�j(        �j%        ¦  «        �d1�dá„¦   «         �Z) eIeA�j*        jR        eA�j*        jS        g¦  «         e4¦   «         �d0dd4œ�dâ„¦   «         ¦   «         �Z+�dã„ �Z,�dä„ �Z- eIeA�j.        jR        eA�j/        jR        g¦  «        �d3�då„¦   «         �Z. eIeA�j0        jR        eA�j1        jR        g¦  «        �d5�dæ„¦   «         �Z0 eIeA�j2        jR        eA�j3        jR        g¦  «        	 	 �d5�de�dçeeebe�j         f                  �dèeeebe�j         f                  �déeeÿ         �dêeeÿ         f
�dë„¦   «         �Z2 eIeA�j4        jR        eA�j5        jR        g¦  «        �d2�dì„¦   «         �Z4 eIeA�j6        jR        eA�j6        �j7        eA�j6        �j�        eA�j6        �j8        g¦  «        �dR�dí„¦   «         �Z9�dî„ �Z: eIeA�j;        jR        ¦  «        	 	 �d5�dï„¦   «         �Z< eIeA�j=        jR        ¦  «        �dð„ ¦   «         �Z= eIeA�j>        jR        ¦  «        �dñ„ ¦   «         �Z>�dò„ �Z?�dó„ �Z@ eIeA�jA        jR        eA�jB        jR        g¦  «        �dE�dô„¦   «         �ZC eIeA�jD        jR        ¦  «        �dS�dõ„¦   «         �ZD eIeA�jE        jR        ¦  «        �dT�dö„¦   «         �ZF eIeA�jG        ¦  «         e4¦   «         	 �dU�d÷„¦   «         ¦   «         �ZH eIeA�jI        jR        eA�jI        �j�        g¦  «         e4d(d)¦  «        �dF�dø„¦   «         ¦   «         �ZJe�jK        �ZL�dù„ �ZM eIeA�jN        jR        ¦  «        �dú„ ¦   «         �ZN eIeA�jO        jR        ¦  «        �dû„ ¦   «         �ZO eIeA�jP        jR        ¦  «        �dü„ ¦   «         �ZQ eIeA�jR        jR        ¦  «        �dý„ ¦   «         �ZR eIeA�jS        j        eA�jS        �jT        g¦  «         e4¦   «         dd�dþœ�dÿ„¦   «         ¦   «         �ZU eIeA�jV        g¦  «         e4¦   «         �dV�d„¦   «         ¦   «         �ZW eIeA�jX        jR        eA�jY        jR        g¦  «        	 	 �d5�d„¦   «         �ZZ eIeA�j[        jR        g¦  «        	 	 �d5�d„¦   «         �Z\ eIeA�j]        jR        ¦  «        �d„ ¦   «         �Z] eIeA�j^        jR        eA�j^        jS        g¦  «         e4¦   «         �d2�d„¦   «         ¦   «         �Z^ eIej@        jA        �j_        ¦  «        �d„ ¦   «         �Z_ eIej@        jA        �j`        ¦  «        �d„ ¦   «         �Z` eIeA�ja        ¦  «         e4¦   «         dddd�dœ�d	„¦   «         ¦   «         �Zb�d
„ �Zc eIeA�jd        ¦  «        �d„ ¦   «         �Ze eIeA�jf        ¦  «        	 �dW�d„¦   «         �Zg eIeA�jh        ¦  «        	 �dW�d„¦   «         �Zi eIeA�jj        ¦  «        	 �dW�d„¦   «         �Zk eIeA�jl        ¦  «         e4¦   «         dd�dœ�d„¦   «         ¦   «         �Zm eIeA�jn        ¦  «         e4¦   «         �debd-edef�d„¦   «         ¦   «         �Zo eIeA�jp        ¦  «        d-ef�d„¦   «         �Zq eIeA�jr        ¦  «         e4d$¬Í¦  «        d-edef�d„¦   «         ¦   «         �Zr eIeA�js        ¦  «         e4¦   «         d-edef�d„¦   «         ¦   «         �Zs�d„ �Zt	 	 	 	 	 �dX�de�de�dÛeej                 �dÜeej                 �dee         dDee         �dÝeej                 dFeej€                 �dÞecf�d„�Zu eIeA�jv        ¦  «         e4¦   «         	 	 	 �d2�de�de�dee         dDee         dFeej€                 def�d„¦   «         ¦   «         �Zw eIeA�jx        jR        g¦  «        	 	 	 	 	 �dX�dej        �dej        �dÛej        �dÜej        �deej                 dDeej                 �dÝeej                 dFeej€                 �dÞecf�d„¦   «         �Zy eIeA�jz        ¦  «         e4¦   «         �ded.eb�decdef�d„¦   «         ¦   «         �Z{ eIeA�j|        ¦  «         e4¦   «         �d�d „¦   «         ¦   «         �Z} eIeA�j~        ¦  «         e4¦   «         	 	 	 �dYdBed)e�d!eb�d"ec�d#ecdef�d$„¦   «         ¦   «         �Z~ eIeA�j        jR        ¦  «        	 �dZd(edbeae         �d%eaeb         �d&eÿf�d'„¦   «         �Z€�d(„ �Z��d)„ �Z‚ �e�eA�jƒ        ¦  «          �e�eA�j„        ¦  «          �e�eA�j…        ¦  «          �e�eA�j†        ¦  «          �e�eA�j‡        ¦  «          �e�eA�jˆ        ¦  «          �e�eA�j‰        ¦  «          �e�eA�jŠ        ¦  «          �e�eA�j‹        ¦  «          �e‚eA�jŒ        ¦  «          �e‚eA�j�        ¦  «          �e‚eA�jŽ        ¦  «          �e‚eA�j�        ¦  «          �e‚eA�j�        ¦  «          �e‚eA�j‘        ¦  «          �e‚eA�j’        ¦  «          �e‚eA�j“        ¦  «          �e‚eA�j”        ¦  «          �e‚eA�j•        ¦  «          �e‚eA�j–        ¦  «          �e‚eA�j—        ¦  «         �d*„ �Z˜ eIeA�j™        ¦  «         e4¦   «         �d+„ ¦   «         ¦   «         �Z™ eIeA�jš        ¦  «         e4¦   «         dL�d,œ�d-„¦   «         ¦   «         �Zš eIeA�j›        ¦  «         e4¦   «         dL�d,œ�d.„¦   «         ¦   «         �Z› �e˜eA�j™        ¦  «        �Zœ �e˜eA�jš        ¦  «        �Z� �e˜eA�j›        ¦  «        �Zžd dl5Zd d�lŸZd d�l Z�d/„ �Z¡ �e¡¦   «          dS ([  é    N)ÚSequence)ÚEnum)ÚreduceÚwraps)ÚCallableÚOptionalÚTypeVarÚUnion)Ú	ParamSpec)ÚSymBoolÚSymFloatÚTensor)Ú_add_op_to_registryÚ_convert_out_paramsÚglobal_decomposition_tableÚ
meta_table)Ú
OpOverload)Ú_prim_elementwise_metaÚ$ELEMENTWISE_PRIM_TYPE_PROMOTION_KINDÚview_of)ÚBoolLikeÚcorresponding_complex_dtypeÚcorresponding_real_dtypeÚdefinitely_contiguousÚelementwise_dtypesÚELEMENTWISE_TYPE_PROMOTION_KINDÚ	FloatLikeÚIntLikeÚis_contiguousÚmake_contiguous_strides_forÚNumberÚsuggest_memory_formatÚ
TensorLike)Ú_maybe_convert_to_dtypeÚ_maybe_resize_outÚ_resize_output_checkÚ_safe_copy_outÚout_wrapper)Ú_broadcast_shapesÚ_maybe_broadcast)Ú_config)Ú_pytreeÚ_TÚ_PÚatenÚIMPLÚMetaé   Úreturnc                 ó   ‡ — ˆ fd„}|S )Nc                 ó\   •‡ — t          ‰ ¦  «        Š ˆ fd„}t          j        |‰¦  «         ‰ S )Nc                 ó4   •— t          t          | ‰¦  «         d S ©N)r   r   )ÚopÚfns    €úa/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/torch/_meta_registrations.pyÚregisterz0register_meta.<locals>.wrapper.<locals>.registerA   s   ø€ Ý¥
¨B°Ñ3Ô3Ð3Ð3Ð3ó    )r   ÚpytreeÚ	tree_map_)r9   r;   r8   s   ` €r:   Úwrapperzregister_meta.<locals>.wrapper>   sD   øø€ Ý  Ñ$Ô$ˆð	4ð 	4ð 	4ð 	4ð 	4õ 	Ô˜ 2Ñ&Ô&Ð&Øˆ	r<   © )r8   r?   s   ` r:   Úregister_metarA   =   s#   ø€ ðð ð ð ð ð €Nr<   Útype_promotionc                 ó†   ‡— t          j        |d| iŽ\  }Šˆfd„|D ¦   «         }t          |Ž }t          |dt          j        iŽS )NÚtype_promotion_kindc                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS r@   )r$   )Ú.0ÚxÚresult_dtypes     €r:   ú
<listcomp>z$elementwise_meta.<locals>.<listcomp>S   s$   ø€ ÐCÐCÐC¸Õ# A |Ñ4Ô4ÐCÐCÐCr<   rB   )Úutilsr   r*   r   r   ÚDEFAULT)rB   ÚargsÚ_rH   s      @r:   Úelementwise_metarN   J   sp   ø€ õ
 Ô.Ø	ðà*ðð �O€A€|ð DÐCÐCÐC¸dÐCÑCÔC€Dõ ˜TÐ"€Dõ "Ø	ðÝBÔJðð ð r<   c                 ó¶   — t           j        t           j        t           j        t           j        t           j        t           j        i}|                     | | ¦  «        S r7   )ÚtorchÚ	complex32ÚhalfÚcfloatÚfloatÚcdoubleÚdoubleÚget)ÚdtypeÚfrom_complexs     r:   ÚtoRealValueTyperZ   ^   s<   € åŒ�œÝŒ•e”kÝŒ•u”|ð€Lð
 ×Ò˜E 5Ñ)Ô)Ð)r<   c                 óx   ‡ ‡— t          t          ‰ g|¢R Ž ¦  «        Št          j        ‰‰ k    ˆˆ fd„¦  «         d S )Nc                  ó   •— d‰› d‰ › �S )Nzoutput with shape z# doesn't match the broadcast shape r@   )Úbroadcasted_shapeÚ
self_shapes   €€r:   ú<lambda>z)check_inplace_broadcast.<locals>.<lambda>k   s   ø€ Ðg ZÐgÐgÐTeÐgÐg€ r<   )Útupler)   rP   Ú_check)r^   Ú
args_shaper]   s   ` @r:   Úcheck_inplace_broadcastrc   g   sX   øø€ ÝÕ/°
ÐH¸ZÐHÐHÐHÑIÔIÐÝ	„LØ˜ZÒ'ØgÐgÐgÐgÐgñô ð ð ð r<   Fc	                 ó\  ‡ ‡‡‡‡	— t          ‰ t          j        ¦  «        r,t          j        ‰                      ¦   «         dk    d„ ¦  «         t          ‰t          j        ¦  «        r,t          j        ‰                     ¦   «         dk    d„ ¦  «         t          d„ ‰ ‰‰fD ¦   «         ¦  «        rVt          j        t          j        ¦   «         ¦  «        Š	‰€‰	ŠnAt          j        t          j	        ‰¦  «        ˆ	ˆfd„¦  «         n‰pt          j        ¦   «         Št          ‰t          j
        ¦  «        sJ ‚t          j        t          ‰t          ¦  «        ˆˆ ˆfd„¦  «         t          ‰t          ¦  «        sJ ‚t          j        ‰dk    d„ ¦  «         t          j        ‰f‰|d||¬	¦  «        S )
Nr   c                  ó   — dS ©Nz:linspace only supports 0-dimensional start and end tensorsr@   r@   r<   r:   r_   z(meta_linspace_logspace.<locals>.<lambda>   ó   € ÐP€ r<   c                  ó   — dS rf   r@   r@   r<   r:   r_   z(meta_linspace_logspace.<locals>.<lambda>„   rg   r<   c              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S r7   )Ú
isinstanceÚcomplex)rF   Úargs     r:   ú	<genexpr>z)meta_linspace_logspace.<locals>.<genexpr>‡   s,   è è € Ð
CÐ
C¨�:�c�7Ñ#Ô#Ð
CÐ
CÐ
CÐ
CÐ
CÐ
Cr<   c                  ó   •— d‰ › d‰› �S )Nzlinspace(): inferred dtype z& can't be safely cast to passed dtype r@   )Údefault_complex_dtyperX   s   €€r:   r_   z(meta_linspace_logspace.<locals>.<lambda>�   s   ø€ ÐzÐ6KÐzÐzÐsxÐzÐz€ r<   c                  óˆ   •— dt          ‰¦  «        j        › dt          ‰ ¦  «        j        › dt          ‰¦  «        j        › d�S )Nz4received an invalid combination of arguments - got (ú, ú))ÚtypeÚ__name__)ÚendÚstartÚstepss   €€€r:   r_   z(meta_linspace_logspace.<locals>.<lambda>™   sY   ø€ ð HÝ€u�+„+ÔðHð HÝ˜s™)œ)Ô,ðHð HÝ04°U±´Ô0DðHð Hð H€ r<   c                  ó   — dS )Nz$number of steps must be non-negativer@   r@   r<   r:   r_   z(meta_linspace_logspace.<locals>.<lambda>�   s   € Ð%K€ r<   Úmeta©rX   ÚlayoutÚdeviceÚ
pin_memoryÚrequires_grad)rj   rP   r   ra   ÚdimÚanyrJ   r   Úget_default_dtypeÚis_complex_dtyperX   Ú_check_typer   Úempty)
rv   ru   rw   ÚbaserX   r|   r{   r}   r~   ro   s
   ``` `    @r:   Úmeta_linspace_logspacer†   o   så  øøøøø€ õ �%�œÑ&Ô&ð 
ÝŒØ�IŠI‰KŒK˜1ÒØPÐPñ	
ô 	
ð 	
õ �#•u”|Ñ$Ô$ð 
ÝŒØ�GŠG‰IŒI˜ŠNØPÐPñ	
ô 	
ð 	
õ
 Ð
CÐ
C°°s¸EÐ/BÐ
CÑ
CÔ
CÑCÔCð 3Ý %Ô AÝÔ#Ñ%Ô%ñ!
ô !
Ðð ˆ=Ø)ˆEˆEåŒLÝÔ& uÑ-Ô-ØzÐzÐzÐzÐzñô ð ð ð
 Ð2�Ô0Ñ2Ô2ˆÝ�e�Uœ[Ñ)Ô)Ð)Ð)Ð)õ 
ÔÝ�5�'Ñ"Ô"ð	Hð 	Hð 	Hð 	Hð 	Hð 	Hñô ð õ
 �e�WÑ%Ô%Ð%Ð%Ð%Ý	„L�˜!’ÐKÐKÑLÔLÐLåŒ;Ø	ˆØØØØØ#ðñ ô ð r<   c                 ó  ‡— t          j        ‰j        t           j        k    ˆfd„¦  «         t          j        |                      ¦   «         dk    o‰                     ¦   «         dk     d„ ¦  «         |                      ‰j        ¦  «        S )Nc                  ó   •— d‰ j         › �S )Nz2take(): Expected a long tensor for index, but got ©rX   ©Úindexs   €r:   r_   zmeta_take.<locals>.<lambda>¯   s   ø€ ÐRÀUÄ[ÐRÐR€ r<   r   c                  ó   — dS )Nz*take(): tried to take from an empty tensorr@   r@   r<   r:   r_   zmeta_take.<locals>.<lambda>´   s   € Ð<€ r<   )rP   ra   rX   ÚlongÚ_check_indexÚnumelÚ	new_emptyÚshape)Úselfr‹   s    `r:   Ú	meta_taker“   ©   s‰   ø€ õ 
„LØŒ•u”zÒ!ØRÐRÐRÐRñô ð õ
 
ÔØ�ZŠZ‰\Œ\˜QÒÐ5 5§;¢;¡=¤=°AÒ#5Ð6Ø<Ð<ñô ð ð �>Š>˜%œ+Ñ&Ô&Ð&r<   éÿÿÿÿ©r   c                óJ  ‡ ‡‡— ‰ j         }‰j         }t          j        ||k    d„ ¦  «         t          j        ‰                      ‰¦  «        dk    o‰                     ‰¦  «        dk    ˆˆˆ fd„¦  «         t	          ‰ j        ‰j        ¦  «        }‰                      |¦  «        S )Nc                  ó   — dS )Nz=linalg.cross: inputs must have the same number of dimensions.r@   r@   r<   r:   r_   zlinalg_cross.<locals>.<lambda>À   ó   € ÐO€ r<   r2   c                  óf   •— d‰ › d‰                      ‰ ¦  «        › d‰                      ‰ ¦  «        › �S )Nzlinalg.cross: inputs dimension z must have length 3. Got ú and ©Úsize)r   Úotherr’   s   €€€r:   r_   zlinalg_cross.<locals>.<lambda>Ä   sG   ø€ ð:¨cð :ð :Ø—9’9˜S‘>”>ð:ð :Ø(-¯
ª
°3©¬ð:ð :ð r<   )ÚndimrP   ra   rœ   r)   r‘   r�   )r’   r�   r   Úx_dÚy_dÚ	out_shapes   ```   r:   Úlinalg_crossr¢   ¹   s·   øøø€ ð Œ)€CØ
Œ*€CÝ	„LØˆsŠ
ØOÐOñô ð õ 
„LØ�	Š	�#‰Œ˜!ÒÐ4 §
¢
¨3¡¤°1Ò 4ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ " $¤*¨e¬kÑ:Ô:€IØ�>Š>˜)Ñ$Ô$Ð$r<   c                 óJ  ‡‡‡— ddl mŠmŠm} ˆˆfd„}ˆˆfd„}t	          | ¦  «        dk    rdgt	          |¦  «        z  S t          t          j        | d¦  «        } ||dk    ¦  «        }|r | || |¦  «        ¦  «        r|S dgt	          |¦  «        z  }	|rjt          t	          |¦  «        dz
  dd¦  «        D ]F}
|
t	          |¦  «        dz
  k    rd|	|
<   Œt          ||
dz            d¦  «        |	|
dz            z  |	|
<   ŒG|	S t	          |¦  «        dz
  }
|d         }d}d}t          t	          | ¦  «        dz
  dd¦  «        D ]Ù}|| |         z  }|dk    s3 || |dz
           dk    ¦  «        r® |||dz
           ||z  k    ¦  «        r“|
dk    rf |||k     ¦  «        s |||
         dk    ¦  «        rB||z  |	|
<   |||
         z  }|
dz  }
|
dk    r$ |||k     ¦  «        °- |||
         dk    ¦  «        °B |||k    ¦  «        r d S |dk    r||dz
           }d}d}ŒÚ|
dk    rd S |	S )Nr   )Úguard_or_falseÚguard_or_trueÚsym_eqc                 ó"   •— ‰r ‰| ¦  «        S | S r7   r@   )rG   r¤   Úsize_obliviouss    €€r:   Úmaybe_guard_or_falsez-_compute_stride.<locals>.maybe_guard_or_falseÕ   s    ø€ Øð 	%Ø!�> !Ñ$Ô$Ð$àˆr<   c                 ó"   •— ‰r ‰| ¦  «        S | S r7   r@   )rG   r¥   r¨   s    €€r:   Úmaybe_guard_or_truez,_compute_stride.<locals>.maybe_guard_or_trueÛ   s    ø€ Øð 	$Ø �= Ñ#Ô#Ð#àˆr<   é   r”   )
Ú%torch.fx.experimental.symbolic_shapesr¤   r¥   r¦   Úlenr   ÚoperatorÚmulÚrangeÚmax)Ú	old_shapeÚ
old_strideÚ	new_shaper¨   r¦   r©   r«   r�   Ú
zero_numelÚ
new_strideÚview_dÚchunk_base_strideÚtensor_numelÚ
view_numelÚtensor_dr¤   r¥   s      `           @@r:   Ú_compute_strider½   Î   s<  øøø€ ðð ð ð ð ð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð õ ˆ9�~„~˜ÒÐØˆs•S˜‘^”^Ñ#Ð#å•8”< ¨AÑ.Ô.€EØ%Ð% e¨q¢jÑ1Ô1€JØð Ð*Ð*¨6¨6°)¸YÑ+GÔ+GÑHÔHð ØÐà�•s˜9‘~”~Ñ%€Jàð Ý�C 	™NœN¨QÑ.°°BÑ7Ô7ð 	ð 	ˆFØ�˜Y™œ¨!Ñ+Ò+Ð+Ø%&�
˜6Ñ"Ð"õ ˜	 &¨1¡*Ô-¨qÑ1Ô1°J¸vÈ¹zÔ4JÑJð ˜6Ñ"Ð"ð Ðå�‰^Œ^˜aÑ€FØ" 2œÐØ€LØ€Jå�#˜i™.œ.¨1Ñ,¨b°"Ñ5Ô5ð ð ˆØ˜	 (Ô+Ñ+ˆà�qŠ=ˆ=ØÐ 	¨(°Q©,Ô 7¸1Ò <Ñ=Ô=ð à#Ð#Ø˜8 a™<Ô(¨LÐ;LÑ,LÒLñô ð ð ˜A’+�+Ø#Ð# J°Ò$=Ñ>Ô>ð à'Ð'¨	°&Ô(9¸QÒ(>Ñ?Ô?ð ð &0Ð2CÑ%C�
˜6Ñ"Ø˜i¨Ô/Ñ/�
Ø˜!‘�ð ˜A’+�+Ø#Ð# J°Ò$=Ñ>Ô>ð à'Ð'¨	°&Ô(9¸QÒ(>Ñ?Ô?ð ð #Ð" :°Ò#=Ñ>Ô>ð Ø�t�tà˜!Š|ˆ|Ø$.¨x¸!©|Ô$<Ð!Ø �Ø�
øØ�‚|€|ØˆtØÐr<   c                 óú   ‡— ddl mŠ t          ˆfd„|                      ¦   «         D ¦   «         ¦  «        pGt          ˆfd„|                      ¦   «         D ¦   «         ¦  «        pt          ˆfd„|D ¦   «         ¦  «        S )Nr   )Úhas_hintc              3   ó0   •K  — | ]} ‰|¦  «         V — Œd S r7   r@   ©rF   Úsr¿   s     €r:   rm   z+_view_has_unbacked_input.<locals>.<genexpr>  s-   øè è € Ð.Ð. ��˜‘”ˆOÐ.Ð.Ð.Ð.Ð.Ð.r<   c              3   ó0   •K  — | ]} ‰|¦  «         V — Œd S r7   r@   rÁ   s     €r:   rm   z+_view_has_unbacked_input.<locals>.<genexpr>  s-   øè è € Ð3Ð3 1�8�8˜A‘;”;ˆÐ3Ð3Ð3Ð3Ð3Ð3r<   c              3   ó0   •K  — | ]} ‰|¦  «         V — Œd S r7   r@   rÁ   s     €r:   rm   z+_view_has_unbacked_input.<locals>.<genexpr>  s-   øè è € Ð.Ð. 1�8�8˜A‘;”;ˆÐ.Ð.Ð.Ð.Ð.Ð.r<   )r­   r¿   r€   rœ   Ústride)Úar‘   r¿   s     @r:   Ú_view_has_unbacked_inputrÇ     s–   ø€ Ø>Ð>Ð>Ð>Ð>Ð>õ 	Ð.Ð.Ð.Ð. Q§V¢V¡X¤XÐ.Ñ.Ô.Ñ.Ô.ð 	/ÝÐ3Ð3Ð3Ð3¨¯ª©
¬
Ð3Ñ3Ô3Ñ3Ô3ð	/åÐ.Ð.Ð.Ð.¨Ð.Ñ.Ô.Ñ.Ô.ðr<   Tc                 ól  ‡ ‡— ddl m}m} t          j        ‰d¬¦  «        Št          j        ‰‰                      ¦   «         ¦  «        Š‰ j        dk    rT‰ }‰D ]:}t          j	        |dk    ¦  «         t          j
                             |d¦  «        }Œ;|‰ u rt          ‰ ¦  «        S |S t          ‰¦  «        dk    rY‰ }‰ j        D ]:}t          j	        |dk    ¦  «         t          j
                             |d¦  «        }Œ;|‰ u rt          ‰ ¦  «        S |S t!          t"          j        ‰d¦  «        }t          j	        ‰                      ¦   «         |k    ˆ ˆfd„¦  «         t          ‰¦  «        t          ‰ j        ¦  «        k    r) | |‰‰ j        ¦  «        ¦  «        rt          ‰ ¦  «        S |rt'          ‰ ¦  «        r:nt)          ‰ ¦  «        r*t          j        ‰¦  «        }‰                      ‰|¦  «        S t/          ‰                      ¦   «         ‰                      ¦   «         ‰|¬¦  «        }	|	�‰                      ‰|	¦  «        S |r=t          j        j        j        j        st=          ‰ ‰¦  «        rt?          ‰ ‰d¬	¦  «        S d
‰ j        › d‰                      ¦   «         › d‰› d�}
tA          |
¦  «        ‚)Nr   )r¤   r¦   F)Úvalidater¬   r”   c                  ó    •— d‰ j         › d‰› d�S )Nz&Could not reshape a tensor with shape ú as a tensor with shape ú!©r‘   ©rÆ   r‘   s   €€r:   r_   z%_view_unbacked_meta.<locals>.<lambda>E  s   ø€ Ðb¸¼ÐbÐbÐZ_ÐbÐbÐb€ r<   )r¨   )Úsize_oblivious_enabledz Cannot view a tensor with shape z and strides rË   rÌ   )!r­   r¤   r¦   rJ   Úextract_shape_from_varargsÚ
infer_sizer�   rž   rP   ra   Ú_refsÚ	unsqueezer   r®   r‘   Úsqueezer   r¯   r°   r   r   r    Ú
as_stridedr½   rœ   rÅ   ÚfxÚexperimentalr+   Úbacked_size_obliviousrÇ   Ú_view_unbacked_metaÚ
ValueError)rÆ   r‘   rÏ   r¤   r¦   Ú_aÚlengthÚshape_numelÚstridesÚnew_stridesÚmsgs   ``         r:   rÙ   rÙ   !  sÉ  øø€ ØLÐLÐLÐLÐLÐLÐLÐLõ Ô,¨U¸UÐCÑCÔC€Eõ Ô˜U A§G¢G¡I¤IÑ.Ô.€Eð 	„v�‚{€{ØˆØð 	/ð 	/ˆFÝŒL˜ 1šÑ%Ô%Ð%Ý”×&Ò& r¨2Ñ.Ô.ˆBˆBØ�ˆ7ˆ7Ý˜1‘:”:ÐàˆIõ ˆ5�z„z�Q‚€ØˆØ”gð 	-ð 	-ˆFÝŒL˜ 1šÑ%Ô%Ð%Ý”×$Ò$ R¨Ñ,Ô,ˆBˆBØ�ˆ7ˆ7Ý˜1‘:”:ÐàˆIå�œ u¨aÑ0Ô0€Kå	„LØ	�Š‰	Œ	�[Ò ØbÐbÐbÐbÐbñô ð õ
 ˆ5�z„z•S˜œ‘\”\Ò!Ð! n n°V°V¸EÀ1Ä7Ñ5KÔ5KÑ&LÔ&LÐ!Ý�q‰zŒzÐà#9ð ,Õ˜QÑÔð ,ð ,½}ÈQÑ?OÔ?Oð ,ÝÔ3°EÑ:Ô:ˆØ�|Š|˜E 7Ñ+Ô+Ð+å!Ø	�Š‰Œ�!—(’(‘*”*˜eÐ4Jðñ ô €Kð ÐØ�|Š|˜E ;Ñ/Ô/Ð/ð ð KÝŒÔÔ%Ô;ðKå# A uÑ-Ô-ðKõ # 1 eÀEÐJÑJÔJÐJà
o¨Q¬WÐ
oÐ
oÀ1Ç8Â8Á:Ä:Ð
oÐ
oÐglÐ
oÐ
oÐ
o€CÝ
�S‰/Œ/Ðr<   c                 ó¬   — t           j        j        j        j        st          | |¦  «        rt          | |¦  «        S t          j        j        | g|¢R ddiŽS )NÚ
allow_copyF)	rP   rÖ   r×   r+   rØ   rÇ   rÙ   rÒ   Ú_reshape_view_helperrÎ   s     r:   Ú
_view_metarä   e  sc   € å„xÔÔ$Ô:ð MÕ>VØ	ˆ5ñ?ô ?ð Mõ # 1 eÑ,Ô,Ð,åŒ{Ô/°ÐL°EÐLÐLÐLÀeÐLÐLÐLr<   c                 ó‚   — t          | d¦  «         t          | d¦  «         t          j        | t          j        ¬¦  «        S )Nzlinalg.matrix_exp©Úmemory_format)ÚsquareCheckInputsÚcheckFloatingOrComplexrP   Ú
empty_likeÚcontiguous_format©r’   s    r:   Úlinalg_matrix_exprí   o  s?   € õ �dÐ/Ñ0Ô0Ð0Ý˜4Ð!4Ñ5Ô5Ð5ÝÔ˜DµÔ0GÐHÑHÔHÐHr<   ÚvaluesÚindicesc                 ó  — t          j        | j        | j        | j        ¬¦  «        }t          j        | j        | j        t           j        ¬¦  «        }|                      ¦   «         dk    r | j        dk    rt          || j        ¦  «         ||fS )N©r|   rX   r   )	rP   r„   r‘   r|   rX   Úint64r�   rž   Úmaybe_wrap_dim)r’   r   rî   rï   s       r:   Ú	cummaxminrô   w  su   € õ
 Œ[˜œ¨D¬K¸t¼zÐJÑJÔJ€FÝŒk˜$œ*¨T¬[ÅÄÐLÑLÔL€GØ‡z‚z�|„|�qÒÐ˜TœY¨!š^˜^å�s˜DœIÑ&Ô&Ð&Ø�7ˆ?Ðr<   c                 ól   — t          || j        ¦  «         t          j        | t          j        ¬¦  «        S ©Nræ   )ró   rž   rP   rê   rë   )r’   r   s     r:   Úlogcumsumexpr÷   „  s/   € õ �3˜œ	Ñ"Ô"Ð"ÝÔ˜DµÔ0GÐHÑHÔHÐHr<   c                óú  ‡— |j         }t          |¦  «        }||z
  }t          t          |¦  «        ¦  «        }d„ t          |¦  «        D ¦   «         }	|D ]}
d|	|
<   Œg g }}|D ]5}
|	|
         s|                     |
¦  «         Œ |                     |
¦  «         Œ6||z   }t          |¦  «        }|                     ¦   «         Š|d |…         }|                     ˆfd„d¬¦  «         |||d …         z   }|                     |¦  «        }dgt          |j        |d …         ¦  «        z   }| 	                    |¦  «        }| 
                    d¦  «        }||d<   t          |¦  «        }t          t          |¦  «        ¦  «        D ]}|||                  ||dz   <   Œ|                      |t          j        ¬¦  «         d	„ t          |¦  «        D ¦   «         }d}|dz
  }|dk    r=||                      d¦  «        z  |||         <   ||||                  z  }|dz  }|dk    °=t          ||¦  «        D ]&}|                      d||z
  z   ¦  «        |||         <   Œ'|                      |||                      ¦   «         ¦  «         | S )
Nc                 ó   — g | ]}d ‘ŒS ©Fr@   ©rF   rM   s     r:   rI   z_exec_fft.<locals>.<listcomp>™  s   € Ð5Ð5Ð5 A˜%Ð5Ð5Ð5r<   Tc                 ó   •— ‰|          S r7   r@   )rG   Úself_stridess    €r:   r_   z_exec_fft.<locals>.<lambda>©  s   ø€ ˜<¨œ?€ r<   ©ÚkeyÚreverser”   r   r¬   ræ   c                 ó   — g | ]}d ‘ŒS ©r   r@   rû   s     r:   rI   z_exec_fft.<locals>.<listcomp>¹  s   € Ð*Ð*Ð*˜�1Ð*Ð*Ð*r<   )rž   r®   Úlistr±   ÚappendrÅ   ÚsortÚpermuter‘   Úreshaperœ   Úresize_rP   rë   Úas_strided_Ústorage_offset)Úoutr’   Ú	out_sizesr   Úforwardrž   Úsignal_ndimÚ
batch_dimsÚdim_permuteÚis_transformed_dimÚdÚleftÚrightÚ	batch_endÚtmpÚinputÚbatched_sizesÚ
batch_sizeÚbatched_out_sizesÚiÚout_stridesÚbatch_numelrý   s                         @r:   Ú	_exec_fftr  ‘  s°  ø€ ØŒ9€DÝ�c‘(”(€KØ˜Ñ#€Jõ •u˜T‘{”{Ñ#Ô#€Kà5Ð5­¨t©¬Ð5Ñ5Ô5ÐØð %ð %ˆØ $Ð˜1ÑÐð �bˆ%€DØð ð ˆØ! !Ô$ð 	Ø�KŠK˜‰NŒNˆNˆNà�LŠL˜‰OŒOˆOˆOØ˜‘,€KÝ�D‘	”	€Ià—;’;‘=”=€LØ
�j�y�jÔ
!€CØ‡H‚HÐ*Ð*Ð*Ð*°D€HÑ9Ô9Ð9Ø˜ I J JÔ/Ñ/€KØ�LŠL˜Ñ%Ô%€Eð �D�4 ¤¨J¨K¨KÔ 8Ñ9Ô9Ñ9€MØ�MŠM˜-Ñ(Ô(€Eà—’˜A‘”€JØ!€M�!ÑÝ˜]Ñ+Ô+ÐÝ•3�s‘8”8‰_Œ_ð 5ð 5ˆØ#,¨S°¬VÔ#4Ð˜!˜a™%Ñ Ð Ø‡K‚KÐ!µÔ1H€KÑIÔIÐIð +Ð*�e D™kœkÐ*Ñ*Ô*€KØ€KØ�Q‰€AØ
ˆqŠ&ˆ&Ø&1°C·J²J¸q±M´MÑ&Aˆ�K ”NÑ#Ø�y ¨Q¤Ô0Ñ0ˆØ	ˆQ‰ˆð ˆqŠ&ˆ&õ �:˜tÑ$Ô$ð Gð GˆØ&)§j¢j°°a¸*±nÑ1EÑ&FÔ&Fˆ�K ”NÑ#Ð#Ø‡O‚O�I˜{¨C×,>Ò,>Ñ,@Ô,@ÑAÔAÐAà€Jr<   r’   r   Úexclude_lastc                 óÊ   ‡— t          |¦  «        }|                      ¦   «         Š|d t          |¦  «        t          |¦  «        z
  …                              ˆfd„¬¦  «         |S )Nc                 ó   •— ‰|          S r7   r@   )r  rý   s    €r:   r_   z_sort_dims.<locals>.<lambda>Ë  s   ø€ �l 1”o€ r<   )rÿ   )r  rÅ   r®   Úintr  )r’   r   r  Úsorted_dimsrý   s       @r:   Ú
_sort_dimsr$  Ç  sl   ø€ Ý�s‘)”)€KØ—;’;‘=”=€LØÐ6•#�kÑ"Ô"¥S¨Ñ%6Ô%6Ñ6Ð6Ô7×<Ò<Ø%Ð%Ð%Ð%ð =ñ ô ð ð Ðr<   c                 ó$  — t          j        | j        j        ¦  «         |s|                      ¦   «         S t          | |¦  «        }|                      |                      ¦   «         ¦  «        }t          || |                      ¦   «         ||¬¦  «        S )N©r  )	rP   ra   rX   Ú
is_complexÚcloner$  r�   rœ   r  )r’   r   Únormalizationr  r#  r  s         r:   Úmeta_fft_c2cr*  Ò  sx   € õ 
„L�”Ô&Ñ'Ô'Ð'Øð Ø�zŠz‰|Œ|Ðå˜T 3Ñ'Ô'€KØ
�.Š.˜Ÿš™œÑ
%Ô
%€CÝ�S˜$ §	¢	¡¤¨[À'ÐJÑJÔJÐJr<   c                 ó�   — t          | ¦  «        t          k    s+t          | ¦  «        dk    r| d         dk    r| d         dk    rdS dS )Né   r   r¬   FT)r®   Úcufft_max_ndimr•   s    r:   Úuse_optimized_cufft_pathr.  á  sD   € Ý
ˆ3�x„x•.Ò Ð ¥S¨¡X¤X°¢] ]°s¸1´vÀ²{°{ÀsÈ1ÄvÐQRÂ{À{Øˆuàˆtr<   c                 ó6  ‡— t          j        | j        j        ¦  «         t	          |                      ¦   «         ¦  «        }t	          |¦  «        }|d         }||         dz  dz   }t	          |¦  «        }|||<   |r|||<   t          | ¦  «        dk    st          | ¦  «        dk    �rÅ|                      |t          j	        | j        ¦  «        ¬¦  «        }	| }
t          | ¦  «        dk    r%t          |¦  «        rt          |	|
||d¬¦  «         �nt          |¦  «        dk    r|n|}t          |	|
||gd¬¦  «         t          |¦  «        dk    r.|                      |t          j	        | j        ¦  «        ¬¦  «        }
|d d…         }|rž|
|	}
}	|
                     ¦   «         Š|                     ˆfd	„d¬
¦  «         t          t           t          |¦  «        ¦  «        }|t          |¦  «        |z
  d …         }t          |	|
||d¬¦  «         |d t          |¦  «        |z
  …         }|°ž|sB|	                     |¦  «        ||         k    r#|
                     |t           j        ¬¦  «         |
}	|	S |                      |t          j	        | j        ¦  «        ¬¦  «        S )Nr”   r,  r¬   ÚcudaÚxpur‰   Tr&  c                 ó   •— ‰|          S r7   r@   )r  rÞ   s    €r:   r_   zmeta_fft_r2c.<locals>.<lambda>  s   ø€  '¨!¤*€ r<   rþ   ræ   )rP   ra   rX   Úis_floating_pointr  rœ   Údevice_hintr�   rJ   r   r.  r  r®   rÅ   r  Úminr-  r  rë   )r’   r   r)  ÚonesidedÚinput_sizesr  Úlast_dimÚlast_dim_halfsizeÚonesided_sizesÚoutputÚworking_tensorÚtarget_sizesr#  Úmax_dimsÚ	last_dimsrÞ   s                  @r:   Úmeta_fft_r2cr@  è  sà  ø€ õ 
„L�”Ô-Ñ.Ô.Ð.Ý�t—y’y‘{”{Ñ#Ô#€KÝ�[Ñ!Ô!€IØ�2Œw€HØ# HÔ-°Ñ2°QÑ6ÐÝ˜+Ñ&Ô&€NØ0€N�8Ñàð 0Ø/ˆ	�(Ñå�4ÑÔ˜FÒ"Ð"¥k°$Ñ&7Ô&7¸5Ò&@Ñ&@ð —’Ø�UÔ>¸t¼zÑJÔJð  ñ 
ô 
ˆð ˆÝ�tÑÔ Ò&Ð&Õ+CÀCÑ+HÔ+HÐ&Ý�f˜n¨i¸ÀdÐKÑKÔKÐKÑKõ ),¨C©¬°Aª¨˜9˜9¸>ˆLÝ�f˜n¨l¸X¸JÐPTÐUÑUÔUÐUÝ�3‰xŒx˜!Š|ˆ|Ø!%§¢Ø¥UÔ%FÀtÄzÑ%RÔ%Rð "0ñ "ô "�ð
 ˜c˜r˜cœ(ˆKØð IØ)7¸˜�Ø(×/Ò/Ñ1Ô1�Ø× Ò Ø,Ð,Ð,Ð,°dð !ñ ô ð õ �~­s°;Ñ/?Ô/?Ñ@Ô@�Ø'­¨KÑ(8Ô(8¸8Ñ(CÐ(EÐ(EÔF�	ÝØ˜N¨N¸IÈtðñ ô ð ð *Ð*G­C°Ñ,<Ô,<¸xÑ,GÐ*GÔH�ð ð Ið ð 	(Ø�{Š{˜8Ñ$Ô$¨	°(Ô(;Ò;Ð;Ø×&Ò& yÅÔ@WÐ&ÑXÔXÐXØ'�àˆð �~Š~Ø�UÔ>¸t¼zÑJÔJð ñ 
ô 
ð 	
r<   )Ú	generatorc                óH   — t          |t          j        | g¦  «        ¦  «        S r7   )r%   rP   ÚSize)ÚnrA  r  s      r:   Úmeta_randpermrE  %  s   € å˜S¥%¤*¨a¨S¡/¤/Ñ2Ô2Ð2r<   ©rX   r{   r|   r}   c                ó4   — t          j        | ||||¬¦  «        S ©NrF  ©rP   r„   )rD  rX   r{   r|   r}   s        r:   Úmeta_randperm_defaultrJ  *  s(   € õ Œ;Ø	�˜v¨fÀðñ ô ð r<   c                óv   ‡ ‡— dŠt          j        ‰ ‰k    ˆ ˆfd„¦  «         t          j        |||||¬¦  «        S )Nr   c                  ó   •— d‰› d‰ › �S ©Nz:random_ expects 'from' to be less than 'to', but got from=z >= to=r@   ©ÚhighÚlows   €€r:   r_   zmeta_randint.<locals>.<lambda>F  ó   ø€ Ð_ÈSÐ_Ð_ÐY]Ð_Ð_€ r<   rF  ©rP   ra   r„   )rO  rœ   rX   r{   r|   r}   rP  s   `     @r:   Úmeta_randintrS  8  s[   øø€ ð €CÝ	„LØˆsŠ
Ø_Ð_Ð_Ð_Ð_ñô ð õ Œ;Ø�E &°ÀJðñ ô ð r<   c                ór   ‡ ‡— t          j        ‰‰ k    ˆˆ fd„¦  «         t          j        |||||¬¦  «        S )Nc                  ó   •— d‰› d‰ › �S rM  r@   rN  s   €€r:   r_   z"meta_randint_low.<locals>.<lambda>[  rQ  r<   rF  rR  )rP  rO  rœ   rX   r{   r|   r}   s   ``     r:   Úmeta_randint_lowrV  M  sV   øø€ õ 
„LØˆsŠ
Ø_Ð_Ð_Ð_Ð_ñô ð õ Œ;Ø�E &°ÀJðñ ô ð r<   c                ó4   — t          j        | ||||¬¦  «        S rH  rI  )rœ   rX   r{   r|   r}   s        r:   Úmeta_rand_defaultrX  b  s(   € õ Œ;Ø�E &°ÀJðñ ô ð r<   r)  Úlastdimc                 ó¬  — t          j        | j        j        ¦  «         t	          | ¦  «        dk    rÿt          |                      ¦   «         ¦  «        }|||d         <   |                      |t          | j        ¦  «        ¬¦  «        }t          |¦  «        r2t          ||                      t           j        ¬¦  «        ||d¬¦  «        S t          |¦  «        dk    rt          | |d d…         d|¦  «        }n |                      t           j        ¬¦  «        }t          ||||d         gd¬¦  «        S | }t          |¦  «        dk    r'|d d…         }t          | ||d¬¦  «        }|dd …         }t          |                     ¦   «         ¦  «        }|||d         <   |                      |t          | j        ¦  «        ¬¦  «        }	t          |	|||d¬¦  «        S )	Nr0  r”   r‰   ræ   Fr&  r¬   r   )rP   ra   rX   r'  r4  r  rœ   r�   rZ   r.  r  r(  rë   r®   r*  )
r’   r   r)  rY  r  r;  Útempr  Úc2c_dimsr  s
             r:   Úmeta_fft_c2rr]  j  sº  € õ 
„L�”Ô&Ñ'Ô'Ð'å�4ÑÔ˜FÒ"Ð"Ý˜Ÿš™œÑ%Ô%ˆ	Ø$ˆ	�#�b”'Ñà—’ 	µÀÄÑ1LÔ1L�ÑMÔMˆå# CÑ(Ô(ð 	PÝØØ—
’
­Ô)@�
ÑAÔAØØØðñ ô ð õ �3‰xŒx˜!Š|ˆ|Ý# D¨#¨c¨r¨c¬(°A°wÑ?Ô?��à—z’zµÔ0G�zÑHÔH�Ý˜V T¨9°s¸2´w°iÈÐOÑOÔOÐOð ˆÝˆs‰8Œ8�aŠ<ˆ<Ø˜3˜B˜3”xˆHÝ   x°ÈÐNÑNÔNˆEØ�b�c�c”(ˆCå˜Ÿš™œÑ&Ô&ˆ	Ø$ˆ	�#�b”'ÑØ�nŠn˜Y­o¸d¼jÑ.IÔ.IˆnÑJÔJˆÝ˜˜e Y°¸UÐCÑCÔCÐCr<   c                 ó„  — ddl m}  || ¦  «        s't          j        | ¦  «        dk    rt	          d¦  «        ‚t          |t          ¦  «        rr|                     | |¦  «        }|                      ¦   «         |                     ¦   «         k    r2t          j
                             ||                      ¦   «         ¦  «         | S )Nr   )Úfree_unbacked_symbolsr¬   zQmore than one element of the written-to tensor refers to a single memory location)r­   r_  rP   Ú_debug_has_internal_overlapÚRuntimeErrorrj   r   Útorœ   r/   Úexpand_copyÚdefault)r’   ÚsrcÚnon_blockingr_  Úintermediates        r:   Ú
meta_copy_rh  “  sÅ   € ð LÐKÐKÐKÐKÐKð "Ð! $Ñ'Ô'ð
Ý,1Ô,MÈdÑ,SÔ,SÐWXÒ,XÐ,XåØ_ñ
ô 
ð 	
õ �#•vÑÔð @Ø—v’v˜d LÑ1Ô1ˆØ�9Š9‰;Œ;˜,×+Ò+Ñ-Ô-Ò-Ð-ÝÔ×$Ò$ \°4·9²9±;´;Ñ?Ô?Ð?Ø€Kr<   c                 ó<  — t          |                      ¦   «         ¦  «        }t          |                      ¦   «         ¦  «        }||                      ¦   «         k    rdn||         ||         z  }|                     |d¦  «         |                     ||¦  «         ||fS ©Nr¬   )r  rœ   rÅ   r   Úinsert)Útensorr   Úresult_sizesÚresult_stridesr·   s        r:   ÚinferUnsqueezeGeometryro  ¬  sŽ   € Ý˜Ÿš™œÑ&Ô&€LÝ˜&Ÿ-š-™/œ/Ñ*Ô*€NØ˜VŸZšZ™\œ\Ò)Ð)��¨|¸CÔ/@À>ÐRUÔCVÑ/V€JØ×Ò˜˜QÑÔÐØ×Ò˜#˜zÑ*Ô*Ð*Ø˜Ð'Ð'r<   c                 ó¢   — t          ||                      ¦   «         dz   ¦  «        }t          | |¦  «        \  }}|                      ||¦  «         | S rj  )ró   r   ro  r	  )r’   r   Úg_sizesÚ	g_stridess       r:   Úmeta_unsqueeze_rs  µ  sL   € å
˜˜dŸhšh™jœj¨1™nÑ
-Ô
-€CÝ/°°cÑ:Ô:Ñ€GˆYØ×Ò�W˜iÑ(Ô(Ð(Ø€Kr<   r  ÚweightÚ_metaÚbiasÚ_activation_optÚ	out_dtypec                 ól  — t          | j        ¦  «        }|�6|                     d¦  «        |                     d¦  «        k    s
J d¦   «         ‚|                     d¦  «        |                      d¦  «        dz  k    sJ ‚|                     d¦  «        |d<   t          | j        ¦  «        dk    s
J d¦   «         ‚d|                      d¦  «        f}|�/| j        t
          j        k    r|t
          j        k    s
J d¦   «         ‚|                      ||€| j        n|¬¦  «         	                    ||¦  «        }|S )	Nr   zoutput size mismatchr¬   r”   r,  z*we can only handle the squashed input caseú9out_dtype is only supported for i8i8->i32 linear operatorr‰   )
r  r‘   rœ   r®   rX   rP   Úint8Úint32r�   rÕ   )	r  rt  ru  rv  rw  rx  Úoutput_sizesÚtransposed_stridesr;  s	            r:   Úmeta_sparse_structured_linearr  ½  s:  € õ ˜œÑ$Ô$€LØÐØ�{Š{˜1‰~Œ~ §¢¨1¡¤Ò-Ð-Ð-Ð/EÑ-Ô-Ð-Ø�;Š;�q‰>Œ>˜UŸZšZ¨™^œ^¨aÑ/Ò/Ð/Ð/Ð/Ø—{’{ 1‘~”~€L�Ñõ ˆuŒ{ÑÔ˜qÒ Ð Ð Ð"NÑ Ô Ð Ø˜UŸZšZ¨™]œ]Ð+ÐàÐØŒ{�eœjÒ(Ð(¨Y½%¼+Ò-EÐ-EÐ-EØGñ .FÔ-EÐ-Eð �_Š_ØØ&Ð.ˆeŒkˆk°Ið ñ ô ÷ ‚j�Ð1Ñ2Ô2ð ð
 €Mr<   Úmat1Ú	mat1_metaÚmat2c                 óú  — t          | j        ¦  «        dk    sJ ‚t          |j        ¦  «        dk    sJ ‚t          |j        ¦  «        dk    sJ ‚|                      d¦  «        |                     d¦  «        dz  k    sJ ‚|                      d¦  «        |                     d¦  «        g}|�/|j        t          j        k    r|t          j        k    s
J d¦   «         ‚|                     ||€|j        n|¬¦  «        }|S )Nr,  r¬   r   rz  r‰   ©r®   r‘   rœ   rX   rP   r{  r|  r�   )r€  r�  r‚  rx  r}  r;  s         r:   Úmeta_sparse_structured_mmr…  ß  sþ   € õ ˆtŒz‰?Œ?˜aÒÐÐÐÝˆyŒÑÔ 1Ò$Ð$Ð$Ð$ÝˆtŒz‰?Œ?˜aÒÐÐÐØ�9Š9�Q‰<Œ<˜4Ÿ9š9 Q™<œ<¨!Ñ+Ò+Ð+Ð+Ð+Ø—I’I˜a‘L”L $§)¢)¨A¡,¤,Ð/€LàÐØŒz�UœZÒ'Ð'¨I½¼Ò,DÐ,DÐ,DØGñ -EÔ,DÐ,Dð �^Š^ØØ%Ð-ˆdŒjˆj°9ð ñ ô €Fð
 €Mr<   r¬   )ÚalphaÚbetarx  c                óª  — t          | j        ¦  «        dk    s
J d¦   «         ‚t          |j        ¦  «        dk    sJ ‚t          |j        ¦  «        dk    sJ ‚t          |j        ¦  «        dk    sJ ‚|                      d¦  «        |                     d¦  «        k    s
J d¦   «         ‚|                     d¦  «        |                     d¦  «        dz  k    sJ ‚|                     d¦  «        |                     d¦  «        g}|�/|j        t          j        k    r|t          j        k    s
J d¦   «         ‚|                     ||€|j        n|¬¦  «        }|S )Nr¬   zEonly input broadcasted to columns of mat1 * mat2 product is supportedr,  r   rz  r‰   r„  )	r  r€  r�  r‚  r†  r‡  rx  r}  r;  s	            r:   Úmeta_sparse_structured_addmmr‰  ø  sX  € õ ˆuŒ{ÑÔ˜qÒ Ð Ð ØOñ !Ô Ð õ ˆtŒz‰?Œ?˜aÒÐÐÐÝˆyŒÑÔ 1Ò$Ð$Ð$Ð$ÝˆtŒz‰?Œ?˜aÒÐÐÐØ�:Š:�a‰=Œ=˜DŸIšI a™LœLÒ(Ð(Ð(ØOñ )Ô(Ð(ð �9Š9�Q‰<Œ<˜4Ÿ9š9 Q™<œ<¨!Ñ+Ò+Ð+Ð+Ð+Ø—I’I˜a‘L”L $§)¢)¨A¡,¤,Ð/€LàÐØŒz�UœZÒ'Ð'¨I½¼Ò,DÐ,DÐ,DØGñ -EÔ,DÐ,Dð �^Š^ØØ%Ð-ˆdŒjˆj°9ð ñ ô €Fð
 €Mr<   Úcompressed_AÚdense_Br†  Útranspose_resultÚalg_idÚsplit_kÚsplit_k_modec	                 ó  — |j         t          j        t          j        t          j        t          j        t          j        hv s
J d¦   «         ‚| j         |j         k    s
J d¦   «         ‚t          |j        ¦  «        dk    s
J d¦   «         ‚| j         t          j        t          j        fv }	|	rdnd}
|	r| 	                    ¦   «         r
J d¦   «         ‚| 
                    d¦  «        }| 
                    d	¦  «        }|                      ¦   «         d
z  |
|z  z  }|�|| 
                    d¦  «        k    sJ ‚|�<|	r0|t          j        t          j        t          j        t          j        hv s
J d¦   «         ‚|r||fn||f}|                     ||¬¦  «        S )Nz;_cslt_sparse_mm only supports fp16, bf16, int8, and fp8e4m3zinputs must have the same dtyper,  z'_cslt_sparse_mm only supports 2d inputsé
   é	   z.dense input must be transposed for 8bit dtypesr   r¬   é   z\out_dtype is not supported for {compressed_A.dtype} x {dense_B.dtype} -> {out_dtype} matmul!r‰   )rX   rP   Úfloat32Úfloat16Úbfloat16r{  Úfloat8_e4m3fnr®   r‘   r   rœ   r�   r|  r�   )rŠ  r‹  rv  r†  rx  rŒ  r�  rŽ  r�  Úis_8bit_input_typeÚcompression_factorÚkrD  ÚmÚoutput_shapes                  r:   Úmeta__cslt_sparse_mmr�    sÌ  € ð Œ=ÝŒÝŒÝŒÝŒ
ÝÔðð ð ð ð Eñô ð ð Ô ¤Ò.Ð.Ð.Ð0QÑ.Ô.Ð.ÝˆwŒ}ÑÔ Ò"Ð"Ð"Ð$MÑ"Ô"Ð"à%Ô+µ´
½EÔ<OÐ/PÐPÐØ1Ð8˜˜°qÐàð 
Ø×(Ò(Ñ*Ô*ð 	
ð 	
Ø<ñ	
ô 	
ð 	
ð 	�Š�Q‰Œ€AØ�Š�Q‰Œ€AØ	×	Ò	Ñ	Ô	 Ñ	"Ð(:¸QÑ(>Ñ?€AØÐØ�D—I’I˜a‘L”LÒ Ð Ð Ð àÐØ!ð 	
 iÝŒMÝŒNÝŒKÝÔð	4
ð '
ð '
ð '
ð kñ'
ô '
ð '
ð .Ð9�A�q�6�6°A°q°6€LØ×Ò˜\°ÐÑ;Ô;Ð;r<   )Úinclude_selfr‹   Úsourcer   rž  c                óB   — t          j        | t           j        ¬¦  «        S rö   ©rP   rê   rë   ©r’   r   r‹   rŸ  r   rž  s         r:   Úmeta_index_reducer£  L  s   € õ Ô˜DµÔ0GÐHÑHÔHÐHr<   c                ó   — | S r7   r@   r¢  s         r:   Úmeta_index_reduce_r¥  Y  s	   € ð €Kr<   c                 óÌ   — t          |                      ¦   «         ¦  «        }|                      ¦   «         dk    r|                     ¦   «         ||<   |                      |¦  «        S ©Nr   )r  rœ   r   r�   r�   )r’   r   r‹   Úresult_sizes       r:   Úmeta_index_selectr©  g  sN   € õ �t—y’y‘{”{Ñ#Ô#€KØ‡x‚x�z„z�A‚~€~Ø Ÿ;š;™=œ=ˆ�CÑØ�>Š>˜+Ñ&Ô&Ð&r<   )Úlengthsrï   ÚoffsetsÚaxisÚunsafeÚinitialÚdatarª  r«  r¬  r­  c                óÒ   ‡ ‡— |�t          d¦  «        ‚ˆˆ fd„}|� ||j        ¦  «        S |�,|j        d d…         |j        d         dz
  fz   }	 ||	¦  «        S t          d¦  «        ‚)Nz?segment_reduce(): indices based reduction is not supported yet.c                 óx   •— t          j        | ‰j        ‰dz   d …         z   ‰j        dt           j        ¬¦  «        S )Nr¬   ry   ©rX   r|   rç   )rP   r„   r‘   rX   rë   )Úlengths_shaper¬  r¯  s    €€r:   Úsegment_reduce_lengths_tensorz:meta_segment_reduce.<locals>.segment_reduce_lengths_tensor�  sA   ø€ ÝŒ{Ø˜DœJ t¨a¡x z zÔ2Ñ2Ø”*ØÝÔ1ð	
ñ 
ô 
ð 	
r<   r”   r¬   z<segment_reduce(): Either lengths or offsets must be defined.)ÚNotImplementedErrorr‘   ra  )
r¯  r   rª  rï   r«  r¬  r­  r®  r´  r³  s
   `    `    r:   Úmeta_segment_reducer¶  p  s¦   øø€ ð ÐÝ!ØMñ
ô 
ð 	
ð
ð 
ð 
ð 
ð 
ð 
ð ÐØ,Ð,¨W¬]Ñ;Ô;Ð;ð Ðàœ c r cÔ*¨g¬m¸BÔ.?À!Ñ.CÐ-EÑEˆØ,Ð,¨]Ñ;Ô;Ð;Ý
ÐUÑ
VÔ
VÐVr<   c                 ó,   — |                       d¦  «        S ©Nr@   ©r�   rì   s    r:   Úmeta_maxrº  ”  ó   € ð �>Š>˜"ÑÔÐr<   c                 óÆ   — t          j        | j        |f¦  «        }t          | ||¦  «        }|                      |¦  «        |                      |t
          j        ¬¦  «        fS ©Nr‰   ©rJ   Úreduction_dimsr‘   Ú_compute_reduction_shaper�   rP   r�   ©r’   r   Úkeepdimrœ  s       r:   Úmeta_max_dimrÃ  š  óW   € å
Ô
˜tœz¨C¨6Ñ
2Ô
2€CÝ+¨D°#°wÑ?Ô?€Là�Š�|Ñ$Ô$Ø�Š�|­5¬:ˆÑ6Ô6ðð r<   c                 ó,   — |                       d¦  «        S r¸  r¹  rì   s    r:   Úmeta_minrÆ  ¤  r»  r<   c                 óÆ   — t          j        | j        |f¦  «        }t          | ||¦  «        }|                      |¦  «        |                      |t
          j        ¬¦  «        fS r½  r¾  rÁ  s       r:   Úmeta_min_dimrÈ  ª  rÄ  r<   c                 ó¼   — |                       ¦   «         rt          | j        ¦  «        }nt          | t          j        ¬¦  «        \  }}t          j        | |¬¦  «        S ©N©rD   r‰   )r'  r   rX   r   r   ÚINT_TO_FLOATrP   rê   )r’   rH   rM   s      r:   Ú
meta_anglerÍ  ´  s^   € à‡‚ÑÔð 
Ý/°´
Ñ;Ô;ˆˆå,ØÝ ?Ô Lð
ñ 
ô 
‰ˆˆ<õ Ô˜D¨Ð5Ñ5Ô5Ð5r<   c                 óª   — t          j        ||                      ¦   «         | j        ¦  «         |                     t          j        | ¦  «        ¦  «        S r7   )rP   Ú_resize_output_rœ   r|   Úcopy_Úangle)r’   r  s     r:   Úmeta_angle_outrÒ  À  s=   € å	Ô˜#˜tŸyšy™{œ{¨D¬KÑ8Ô8Ð8Ø�9Š9•U”[ Ñ&Ô&Ñ'Ô'Ð'r<   c                 ó   — d S r7   r@   )Úvals    r:   Úassert_asyncrÕ  Æ  ó   € à
€Fr<   c                 ó   — d S r7   r@   )rÔ  Ú
assert_msgs     r:   Úassert_async_metarÙ  Ë  rÖ  r<   c                 ó   — d S r7   r@   )rÂ   s    r:   Ú
print_metarÛ  Ð  rÖ  r<   ©rX   r{   r|   r}   rç   c                 ó.   — t          j        dd¬¦  «        S )Nr   ry   ©r|   rI  rÜ  s        r:   Úmake_dep_tokenrß  Õ  s   € õ Œ;�q Ð(Ñ(Ô(Ð(r<   c                 ó„   — ddl m} t          | t          t          f¦  «        rt          d¦  «        ‚ || ||¬¦  «         d S )Nr   )Úconstrain_rangeú'Constraining SymFloat or Symbool is nyi©r5  r²   )r­   rá  rj   r   r   rÚ   )rœ   r5  r²   rá  s       r:   Úsym_constrain_rangerä  á  s[   € ð FÐEÐEÐEÐEÐEå�$�¥7Ð+Ñ,Ô,ð DÝÐBÑCÔCÐCØ€O�D˜c sÐ+Ñ+Ô+Ð+Ð+Ð+r<   c                 ó@   — t                                | ||¬¦  «         |S ©Nrã  )r/   rä  ©rœ   r5  r²   Ú	dep_tokens       r:   Úfunctional_sym_constrain_rangeré  ë  s#   € å×Ò˜T s°ÐÑ4Ô4Ð4ØÐr<   c                 óP  — ddl m} |€|€t          j        | ¦  «         d S t	          | t
          t          f¦  «        rt          d¦  «        ‚t          | ¦  «        t          u r6|�t          j
        | |k    ¦  «         |�t          j
        | |k    ¦  «         d S  || ||¬¦  «         d S )Nr   )Ú_constrain_range_for_sizerâ  rã  )r­   rë  rP   Ú_check_is_sizerj   r   r   rÚ   rs   r"  ra   )rœ   r5  r²   rë  s       r:   Úsym_constrain_range_for_sizerí  ñ  sÃ   € ð PÐOÐOÐOÐOÐOà
€{�s�{ÝÔ˜TÑ"Ô"Ð"Øˆå�$�¥7Ð+Ñ,Ô,ð DÝÐBÑCÔCÐCÝˆD�z„z•SÐÐØˆ?ÝŒL˜ šÑ%Ô%Ð%Øˆ?ÝŒL˜ šÑ%Ô%Ð%ØˆØÐ˜d¨°Ð5Ñ5Ô5Ð5Ð5Ð5r<   c                 ó@   — t                                | ||¬¦  «         |S ræ  )r/   rí  rç  s       r:   Ú'functional_sym_constrain_range_for_sizerï    s#   € å×%Ò% d°¸Ð%Ñ=Ô=Ð=ØÐr<   c                 ó   — |S r7   r@   )rÔ  rØ  rè  s      r:   Úfunctional_assert_async_metarñ    s   € àÐr<   Úf_namec                 ó  — |                       ¦   «         dk    sJ |› d�¦   «         ‚|                      d¦  «        |                      d¦  «        k    s9J |› d|                      d¦  «        › d|                      d¦  «        › d�¦   «         ‚d S )Nr,  z3: The input tensor must have at least 2 dimensions.r”   éþÿÿÿz5: A must be batches of square matrices, but they are ú by ú	 matrices)r   rœ   )r’   rò  s     r:   rè   rè     s–   € Ø�8Š8‰:Œ:˜Š?ˆ?ˆ?ØÐFÐFÐFñ Œ?ˆ?ð �9Š9�R‰=Œ=˜DŸIšI b™MœMÒ)Ð)Ð)ØÐsÐsÈÏ	Ê	ÐRTÉÌÐsÐsÐ[_×[dÒ[dÐegÑ[hÔ[hÐsÐsÐsñ *Ô)Ð)Ð)Ð)r<   ÚAÚnamec                 ó´  ‡ ‡‡— t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         t          j        ‰                     d¦  «        ‰                     d¦  «        k    ˆfd„¦  «         t          j        ‰                     d¦  «        ‰                      d¦  «        k    ˆˆˆ fd„¦  «         d S )Nc                  ó*   •— d‰j         › d‰ j         › d�S )Nz:Expected b and A to be on the same device, but found b on z
 and A on ú	 instead.rÞ  ©r÷  r’   s   €€r:   r_   z(linearSolveCheckInputs.<locals>.<lambda>   s0   ø€ ð:ØŒ{ð:ð :Ø&'¤hð:ð :ð :ð r<   c                  ó*   •— d‰j         › d‰ j         › d�S )Nz=Expected b and A to have the same dtype, but found b of type z and A of type rû  r‰   rü  s   €€r:   r_   z(linearSolveCheckInputs.<locals>.<lambda>(  s0   ø€ ð=ØŒzð=ð =Ø*+¬'ð=ð =ð =ð r<   r”   rô  c                  ób   •— d‰                       d¦  «        › d‰                       d¦  «        › d�S )Nz3A must be batches of square matrices, but they are rô  rõ  r”   rö  r›   ©r÷  s   €r:   r_   z(linearSolveCheckInputs.<locals>.<lambda>0  sF   ø€ ðBØŸFšF 2™JœJðBð BØ,-¯FªF°2©J¬JðBð Bð Bð r<   c                  ó¾   •— d‰› d‰                       d¦  «        › d‰                       d¦  «        › d‰                      d¦  «        › d‰                      d¦  «        › �
S )NzIncompatible matrix sizes for z: each A matrix is r”   rõ  z but each b matrix is rô  r›   )r÷  rø  r’   s   €€€r:   r_   z(linearSolveCheckInputs.<locals>.<lambda>8  s€   ø€ ðH¨Tð Hð HØŸš ™œðHð HØ)*¯ª°©¬ðHð Hà%)§Y¢Y¨r¡]¤]ðHð Hà8<¿	º	À"¹¼ðHð Hð r<   )rP   ra   r|   rX   rœ   )r’   r÷  rø  s   ```r:   ÚlinearSolveCheckInputsr    s  øøø€ Ý	„LØŒ�q”xÒð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ
�a”gÒð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ	�Šˆr‰
Œ
�a—f’f˜R‘j”jÒ ð	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ	�Šˆr‰
Œ
�d—i’i ‘m”mÒ#ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð r<   ÚtÚallow_low_precision_dtypesc                 ó,  ‡‡— | j         Št          j        |                      ¦   «         p|                      ¦   «         ˆˆfd„¦  «         |sIt          j        ‰t          j        t          j        t          j        t          j        fv ˆˆfd„¦  «         d S d S )Nc                  ó   •— ‰› d‰ › �S )Nz<: Expected a floating point or complex tensor as input. Got r@   ©rX   rò  s   €€r:   r_   z(checkFloatingOrComplex.<locals>.<lambda>I  s   ø€ �6Ð^Ð^ÐW\Ð^Ð^€ r<   c                  ó   •— ‰› d‰ › �S )Nz*: Low precision dtypes not supported. Got r@   r  s   €€r:   r_   z(checkFloatingOrComplex.<locals>.<lambda>N  s   ø€ �vÐPÐPÈÐPÐP€ r<   )	rX   rP   ra   r3  r'  rT   rV   rS   rU   )r  rò  r  rX   s    ` @r:   ré   ré   A  s¦   øø€ ð
 ŒG€EÝ	„LØ	×ÒÑÔÐ/ §¢¡¤Ø^Ð^Ð^Ð^Ð^ñô ð ð &ð 
ÝŒØ•e”k¥5¤<µ´½u¼}ÐMÐMØPÐPÐPÐPÐPñ	
ô 	
ð 	
ð 	
ð 	
ð
ð 
r<   Úarg_namec                 óh   ‡‡— t          j        |                      ¦   «         dk    ˆˆfd„¦  «         d S )Nr,  c                  ó   •— ‰› d‰ › d�S )Nz: The input tensor z! must have at least 2 dimensions.r@   )r  rò  s   €€r:   r_   zcheckIsMatrix.<locals>.<lambda>V  s   ø€ �6ÐYÐY¨hÐYÐYÐY€ r<   )rP   ra   r   )r÷  rò  r  s    ``r:   ÚcheckIsMatrixr  S  s@   øø€ Ý	„LØ	�Š‰Œ�1ŠØYÐYÐYÐYÐYñô ð ð ð r<   ÚBr  c                 ó4  ‡ ‡‡‡— t          ‰ ‰¦  «         t          ‰‰¦  «         t          j        ‰r,‰                      d¦  «        ‰                     d¦  «        k    n+‰                      d¦  «        ‰                     d¦  «        k    ˆ ˆˆˆfd„¦  «         d S )Nrô  r”   c                  óÌ   •— ‰› d‰rdnd› d‰                       d¦  «        › d‰                       d¦  «        › d‰                      d¦  «        › d‰                      d¦  «        › d	�S )
Nz2: Incompatible shapes of A and B for the equation zAX = BzXA = Bz (rô  rG   r”   rš   rr   r›   )r÷  r  rò  r  s   €€€€r:   r_   z#checkInputsSolver.<locals>.<lambda>_  s™   ø€ Øð Jð JØÐ-ˆxˆx XðJð Jà—’˜‘”ðJð JàŸfšf R™jœjðJð Jà/0¯vªv°b©z¬zðJð Jà<=¿FºFÀ2¹J¼JðJð Jð Jð r<   )rè   r  rP   ra   rœ   )r÷  r  r  rò  s   ````r:   ÚcheckInputsSolverr  Z  s¦   øøøø€ Ý�a˜Ñ Ô Ð Ý�!�VÑÔÐÝ	„LØ$(ÐFˆ�Šˆr‰
Œ
�a—f’f˜R‘j”jÒ Ð ¨a¯fªf°R©j¬j¸A¿FºFÀ2¹J¼JÒ.Fð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð r<   ÚresultÚfn_nameÚresult_namec                 ó`   ‡ ‡‡‡— t          j        ‰j        ‰j        k    ˆ ˆˆˆfd„¦  «         d S )Nc            	      ó8   •— ‰ › d‰› d‰› d‰j         › d‰j         › �	S )Nz: Expected z5 and input tensors to be on the same device, but got z on z and input on rÞ  )r  r  r  r  s   €€€€r:   r_   z!checkSameDevice.<locals>.<lambda>o  sV   ø€ Øð Lð L ;ð Lð LØðLð LØ &¤ðLð LØ=B¼\ðLð Lð r<   )rP   ra   r|   )r  r  r  r  s   ````r:   ÚcheckSameDevicer  g  sU   øøøø€ õ 
„LØŒ˜œÒ%ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð r<   ÚUPLOc                 óš   ‡ — ‰                       ¦   «         }t          j        t          ‰ ¦  «        dk    o|dk    p|dk    ˆ fd„¦  «         d S )Nr¬   ÚUÚLc                  ó   •— d‰ › �S )Nz1Expected UPLO argument to be 'L' or 'U', but got r@   )r  s   €r:   r_   zcheckUplo.<locals>.<lambda>z  s   ø€ ÐJÀDÐJÐJ€ r<   )ÚupperrP   ra   r®   )r  ÚUPLO_uppercases   ` r:   Ú	checkUplor  v  s[   ø€ Ø—Z’Z‘\”\€NÝ	„LÝˆD‰	Œ	�QŠÐK˜N¨cÒ1ÐJ°^ÀsÒ5JØJÐJÐJÐJñô ð ð ð r<   ÚeigenvaluesÚeigenvectorsr  Ú	compute_vc                 ó�  — t          | d¦  «         t          |¦  «         t          | j        ¦  «        }|r;|                      |¦  «        }|                     |t          |d¬¦  «        ¦  «         n|                      dg¦  «        }|                     ¦   «          |                      |t          | j	        ¦  «        ¬¦  «        }||fS )Nzlinalg.eighF©Ú	row_majorr   r‰   )
rè   r  r  r‘   r�   r	  r    ÚpoprZ   rX   )r÷  r  r   r‘   ÚvecsÚvalss         r:   Úmeta__linalg_eighr'  ~  sµ   € õ �a˜Ñ'Ô'Ð'Ýˆd�O„O€Oå�”‰MŒM€EØð  Ø�{Š{˜5Ñ!Ô!ˆØ×Ò˜Õ ;¸EÈUÐ SÑ SÔ SÑTÔTÐTÐTà�{Š{˜A˜3ÑÔˆà	‡I‚I�K„K€KØ�;Š;�u¥O°A´GÑ$<Ô$<ˆ;Ñ=Ô=€Dà�ˆ:Ðr<   c                 óÜ   — t          | d¦  «         t          j        | j        ¦  «        r| j        nt          j        | j        ¦  «        }|                      | j        d d…         |¬¦  «        S )Nzlinalg.eigvalsr”   r‰   ©rè   rJ   r‚   rX   r   r�   r‘   )r  Úcomplex_dtypes     r:   Úmeta__linalg_eigvalsr+  ‘  sj   € õ �eÐ-Ñ.Ô.Ð.õ Ô! %¤+Ñ.Ô.ð	<ˆŒˆåÔ.¨u¬{Ñ;Ô;ð ð
 �?Š?˜5œ; s¨ sÔ+°=ˆ?ÑAÔAÐAr<   c                 ó  — t          | d¦  «         t          j        | j        ¦  «        r| j        nt          j        | j        ¦  «        }|                      | j        d d…         |¬¦  «        }|                      | j        |¬¦  «        }||fS )Nz
linalg.eigr”   r‰   r)  )r  r*  rî   Úvectorss       r:   Úmeta_linalg_eigr.  �  s‰   € õ �e˜\Ñ*Ô*Ð*õ Ô! %¤+Ñ.Ô.ð	<ˆŒˆåÔ.¨u¬{Ñ;Ô;ð ð
 �_Š_˜Uœ[¨¨"¨Ô-°]ˆ_ÑCÔC€FØ�oŠo˜eœk°ˆoÑ?Ô?€GØ�7ˆ?Ðr<   re  c                 ót   — | j                              t          j        ¬¦  «                             dd¦  «        S )Nræ   rô  r”   )ÚmTr(  rP   rë   Ú	transpose)re  s    r:   ÚcloneBatchedColumnMajorr2  «  s+   € ØŒ6�<Š<¥eÔ&=ˆ<Ñ>Ô>×HÒHÈÈRÑPÔPÐPr<   r  c                 ó    — t          | ¦  «        S r7   )r2  )r’   r÷  r  s      r:   Ú_cholesky_solve_helperr4  ¯  s   € õ # 4Ñ(Ô(Ð(r<   c                 óÔ   ‡ ‡— t          j        ‰ j        dk    ˆ fd„¦  «         t          j        ‰j        dk    ˆfd„¦  «         t          ‰ ‰d¦  «        \  }}t	          |||¦  «        S )Nr,  c                  ó   •— d‰ j         › d�S )Nz-b should have at least 2 dimensions, but has ú dimensions instead©rž   rì   s   €r:   r_   z cholesky_solve.<locals>.<lambda>º  s   ø€ Ð^ÀÄ	Ð^Ð^Ð^€ r<   c                  ó   •— d‰ j         › d�S )Nz-u should have at least 2 dimensions, but has r7  r8  rÿ  s   €r:   r_   z cholesky_solve.<locals>.<lambda>¾  s   ø€ Ð[ÀÄÐ[Ð[Ð[€ r<   Úcholesky_solve)rP   ra   rž   Ú!_linalg_broadcast_batch_dims_namer4  )r’   r÷  r  Úself_broadcastedÚA_broadcasteds   ``   r:   r:  r:  µ  s�   øø€ õ 
„LØŒ	�QŠØ^Ð^Ð^Ð^ñô ð õ 
„LØ	Œ�!ŠØ[Ð[Ð[Ð[ñô ð õ 'HØˆaÐ!ñ'ô 'Ñ#Ð�mõ "Ð"2°MÀ5ÑIÔIÐIr<   c                 ó°   — |                       ¦   «         dk    r t          j        | t          j        ¬¦  «        S t	          | d¦  «         t          | ¦  «        S )Nr   ræ   Úcholesky)r�   rP   rê   Úlegacy_contiguous_formatrè   r2  ©r’   r  s     r:   r?  r?  Æ  sN   € ð ‡z‚z�|„|�qÒÐÝÔ µEÔ4RÐSÑSÔSÐSÝ�d˜JÑ'Ô'Ð'Ý" 4Ñ(Ô(Ð(r<   c                 ó@   — t          | d¦  «         t          | ¦  «        S )NÚcholesky_inverse)rè   r2  rA  s     r:   rC  rC  Ï  s#   € õ �dÐ.Ñ/Ô/Ð/Ý" 4Ñ(Ô(Ð(r<   Úcheck_errorsc                 óD  — t          | d¦  «         t          | d¦  «         | j        }t          |¦  «        }t	          |d¦  «        }|                      |¦  «        }|                     ||¦  «         |                      |d|dz
  …         t          j        ¬¦  «        }||fS )Nzlinalg.choleskyFr   r,  r‰   )	rè   ré   r‘   r®   r    r�   r	  rP   r|  )r÷  r  rD  ÚA_shaperž   Ú	L_stridesr  Úinfoss           r:   Úlinalg_cholesky_exrI  ×  s›   € å�aÐ*Ñ+Ô+Ð+Ý˜1Ð/Ñ0Ô0Ð0àŒg€GÝˆw‰<Œ<€Dõ ,¨G°UÑ;Ô;€IØ	�Š�GÑÔ€AØ‡M‚M�'˜9Ñ%Ô%Ð%ð �KŠK˜  D¨1¡H Ô-µU´[ˆKÑAÔA€EØˆeˆ8€Or<   Útauc                 ó  ‡ ‡‡— t          j        ‰ j        dk    d„ ¦  «         t          j        ‰                      d¦  «        ‰                      d¦  «        k    d„ ¦  «         t          j        ‰                      d¦  «        ‰                     d¦  «        k    d„ ¦  «         t          j        ‰ j        ‰j        z
  dk    ˆ ˆfd„¦  «         ‰ j        dk    r:‰ j        d d…         }‰j        d d…         Št          j        ‰|k    ˆfd	„¦  «         t          j        ‰j        ‰ j        k    ˆ ˆfd
„¦  «         t          d‰‰ d¦  «         t          j        ‰ j        t          ‰ j        d¬¦  «        ‰ j        ‰ j	        ¬¦  «        S )Nr,  c                  ó   — dS )NzHtorch.linalg.householder_product: input must have at least 2 dimensions.r@   r@   r<   r:   r_   z,linalg_householder_product.<locals>.<lambda>ð  ó   € ÐZ€ r<   rô  r”   c                  ó   — dS )Nzbtorch.linalg.householder_product: input.shape[-2] must be greater than or equal to input.shape[-1]r@   r@   r<   r:   r_   z,linalg_householder_product.<locals>.<lambda>ô  s   € Ðt€ r<   c                  ó   — dS )Nz`torch.linalg.householder_product: input.shape[-1] must be greater than or equal to tau.shape[-1]r@   r@   r<   r:   r_   z,linalg_householder_product.<locals>.<lambda>ø  s   € Ðr€ r<   r¬   c                  ó(   •— d‰j         › d‰ j         › �S )Nzptorch.linalg.householder_product: Expected tau to have one dimension less than input, but got tau.ndim equal to ú and input.ndim is equal to r8  ©r  rJ  s   €€r:   r_   z,linalg_householder_product.<locals>.<lambda>ý  ó0   ø€ ð\Ø),¬ð\ð \ØOTÌzð\ð \ð r<   c                  ó   •— d‰ › �S )Nzltorch.linalg.householder_product: Expected batch dimensions of tau to be equal to input.shape[:-2], but got r@   ©Úactual_batch_tau_shapes   €r:   r_   z,linalg_householder_product.<locals>.<lambda>  ó   ø€ ðOØ6LðOð Oð r<   c                  ó(   •— d‰j         › d‰ j         › �S )Nz,torch.linalg.householder_product: tau dtype z does not match input dtype r‰   rR  s   €€r:   r_   z,linalg_householder_product.<locals>.<lambda>  s*   ø€ ð9¸3¼9ð 9ð 9Ø+0¬;ð9ð 9ð r<   z torch.linalg.householder_productrJ  Fr"  ©rœ   rÅ   rX   r|   )
rP   ra   rž   rœ   r‘   rX   r  Úempty_stridedr    r|   )r  rJ  Úexpected_batch_tau_shaperV  s   `` @r:   Úlinalg_householder_productr\  é  sÆ  øøø€ õ
 
„LØŒ
�aŠØZÐZñô ð õ 
„LØ�
Š
�2‰Œ˜%Ÿ*š* R™.œ.Ò(ØtÐtñô ð õ 
„LØ�
Š
�2‰Œ˜#Ÿ(š( 2™,œ,Ò&ØrÐrñô ð õ
 
„LØŒ
�S”XÑ Ò"ð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð „z�A‚~€~Ø#(¤;¨s°¨sÔ#3Ð Ø!$¤¨3¨B¨3¤ÐÝŒØ"Ð&>Ò>ðð ð ð ñ	
ô 	
ð 	
õ 
„LØŒ	�U”[Ò ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ Ð6¸¸UÀEÑJÔJÐJåÔØŒ[Ý*¨5¬;À%ÐHÑHÔHØŒkØŒ|ð	ñ ô ð r<   c                 ó<  — t          | d¦  «         t          | dd¬¦  «         |                      | j        ¦  «        }|                     | j        t          | j        d¬¦  «        ¦  «         |                      | j        d d…         t          j        ¬¦  «        }||fS )Nzlinalg.inv_exF)r  r"  rô  r‰   ©rè   ré   r�   r‘   r	  r    rP   r|  )r÷  rD  r  rH  s       r:   Úlinalg_inv_ex_metar_    sŠ   € å�a˜Ñ)Ô)Ð)Ý˜1˜oÈ%ÐPÑPÔPÐPà	�Š�A”GÑÔ€AØ‡M‚M�!”'Õ6°q´wÈ%ÐPÑPÔPÑQÔQÐQà�KŠK˜œ   œ­E¬KˆKÑ8Ô8€EØˆeˆ8€Or<   ÚLDÚpivotsÚinfo)Ú	hermitianrD  rc  c                óz  — t          | d¦  «         t          | d¦  «         t          j        | j        t          | j        d¬¦  «        | j        | j        ¬¦  «        }|                      | j        d d…         t          j	        ¬¦  «        }|                      | j        d d…         t          j	        ¬¦  «        }|||fS )Nztorch.linalg.ldl_factor_exFr"  rY  r”   r‰   rô  )
rè   ré   rP   rZ  r‘   r    rX   r|   r�   r"  )r’   rc  rD  r`  ra  rb  s         r:   Úlinalg_ldl_factor_ex_metare  +  s¯   € õ �dÐ8Ñ9Ô9Ð9Ý˜4Ð!=Ñ>Ô>Ð>Ý	Ô	ØŒZÝ*¨4¬:ÀÐGÑGÔGØŒjØŒ{ð	
ñ 
ô 
€Bð �^Š^˜DœJ s¨ sœOµ5´9ˆ^Ñ=Ô=€FØ�>Š>˜$œ* S b Sœ/µ´ˆ>Ñ;Ô;€DØˆv�tÐÐr<   )rc  c                ó@  ‡ ‡‡— t          ‰ d¦  «         t          ‰ d¦  «         t          ‰‰ d¦  «         t          j        ‰j        dk    ˆfd„¦  «         ‰ j        d d…         }t          j        |‰j        k    ˆfd„¦  «         t          j        t          j        ‰j	        ¦  «        ˆfd„¦  «         t          j        ‰ j	        ‰j	        k    ˆˆ fd„¦  «         t          ‰‰ ¦  «        \  }}t          j        |t          |d¬	¦  «        ‰j	        ‰j        ¬
¦  «        S )Nztorch.linalg.ldl_solver,  c                  ó   •— d‰ j         › d�S )NzMtorch.linalg.ldl_solve: Expected B to have at least 2 dimensions, but it has r7  r8  )r  s   €r:   r_   z'linalg_ldl_solve_meta.<locals>.<lambda>N  ó!   ø€ ð6Øœ&ð6ð 6ð 6ð r<   r”   c                  ó   •— d‰ j         › d�S )Nzjtorch.linalg.ldl_solve: Expected LD.shape[:-1] and pivots.shape to be the same, but got pivots with shape ú insteadrÍ   ©ra  s   €r:   r_   z'linalg_ldl_solve_meta.<locals>.<lambda>V  ó%   ø€ ð@Ø)/¬ð@ð @ð @ð r<   c                  ó   •— d‰ j         › �S )Nz<torch.linalg.ldl_solve: Expected pivots to be integers. Got r‰   rk  s   €r:   r_   z'linalg_ldl_solve_meta.<locals>.<lambda>]  s   ø€ Ð]ÈvÌ|Ð]Ð]€ r<   c                  ó(   •— d‰j         › d‰ j         › �S )Nz!torch.linalg.ldl_solve: LD dtype z does not match b dtype r‰   )r  r`  s   €€r:   r_   z'linalg_ldl_solve_meta.<locals>.<lambda>a  s   ø€ Ð_°B´HÐ_Ð_ÐVWÔV]Ð_Ð_€ r<   Fr"  rY  )rè   ré   r  rP   ra   rž   r‘   rJ   Úis_integer_dtyperX   Ú_linalg_broadcast_batch_dimsrZ  r    r|   )r`  ra  r  rc  Úexpected_pivots_shapeÚB_broadcast_sizerM   s   ```    r:   Úlinalg_ldl_solve_metars  @  sc  øøø€ õ �bÐ2Ñ3Ô3Ð3Ý˜2Ð7Ñ8Ô8Ð8Ý˜1˜bÐ":Ñ;Ô;Ð;Ý	„LØ	Œ�!Šð	
ð 	
ð 	
ð 	
ñô ð ð œH S b SœMÐÝ	„LØ ¤Ò-ð	
ð 	
ð 	
ð 	
ñô ð õ 
„LÝÔ˜vœ|Ñ,Ô,Ø]Ð]Ð]Ð]ñô ð õ 
„LØ
Œ�A”GÒØ_Ð_Ð_Ð_Ð_ñô ð õ 7°q¸"Ñ=Ô=ÑÐ�aÝÔØÝ*Ð+;ÀuÐMÑMÔMØŒgØŒxð	ñ ô ð r<   ÚPr  )Úpivotru  c                ó�  ‡ — t          j        ‰ j        dk    ˆ fd„¦  «         t          ‰ j        ¦  «        }|d         }|d         }t          ||¦  «        }||d<   |r‰                      |¦  «        }n‰                      dg¦  «        }||d<   ‰                      |¦  «        }||d<   ||d<   ‰                      |¦  «        }|||fS )Nr,  c                  ó   •— d‰ j         › d�S )Nz@linalg.lu: Expected tensor with 2 or more dimensions. Got size: rj  rÍ   rÿ  s   €r:   r_   z linalg_lu_meta.<locals>.<lambda>q  s   ø€ ÐdÐSTÔSZÐdÐdÐd€ r<   rô  r”   r   )rP   ra   rž   r  r‘   r5  r�   )	r÷  ru  Úsizesr›  rD  rš  rt  r  r  s	   `        r:   Úlinalg_lu_metary  l  sÛ   ø€ õ 
„LØ	Œ�!ŠØdÐdÐdÐdñô ð õ
 �”‰MŒM€EØˆbŒ	€AØˆbŒ	€AÝˆAˆq‰	Œ	€Aà€Eˆ"�IØð Ø�KŠK˜ÑÔˆˆà�KŠK˜˜ÑÔˆà€Eˆ"�IØ	�Š�EÑÔ€Aà€Eˆ"�IØ€Eˆ"�IØ	�Š�EÑÔ€AØˆa�ˆ7€Nr<   ÚLU)ru  rD  c                óô  ‡ — t          j        ‰ j        dk    ˆ fd„¦  «         t          ‰ j        ¦  «        }|d         }|d         }t          j        |t          |d¬¦  «        ‰ j        ‰ j        ¬¦  «        }| 	                    ¦   «          t          ||¦  «        |d<   ‰                      |t           j        ¬¦  «        }| 	                    ¦   «          ‰                      |t           j        ¬¦  «        }|||fS )	Nr,  c                  ó   •— d‰ j         › d�S )NzFtorch.lu_factor: Expected tensor with 2 or more dimensions. Got size: rj  rÍ   rÿ  s   €r:   r_   z*linalg_lu_factor_ex_meta.<locals>.<lambda>’  s   ø€ ÐjÐYZÔY`ÐjÐjÐj€ r<   rô  r”   Fr"  rY  r‰   )rP   ra   rž   r  r‘   rZ  r    rX   r|   r$  r5  r�   r"  )	r÷  ru  rD  rx  r›  rD  rz  ra  rb  s	   `        r:   Úlinalg_lu_factor_ex_metar}  ˆ  sí   ø€ õ 
„LØ	Œ�!ŠØjÐjÐjÐjñô ð õ
 �”‰MŒM€EØˆbŒ	€AØˆbŒ	€Aå	Ô	ØÝ*¨5¸EÐBÑBÔBØŒgØŒxð	
ñ 
ô 
€Bð 
‡I‚I�K„K€KÝ�A�q‘	”	€Eˆ"�IØ�[Š[˜¥e¤iˆ[Ñ0Ô0€Fð 
‡I‚I�K„K€KØ�;Š;�u¥E¤Iˆ;Ñ.Ô.€Dàˆv�tÐÐr<   )r  Úadjointr~  c                óú  ‡ ‡‡— t          ‰ d¦  «         t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         t          j        ‰j        t          j        k    d„ ¦  «         t          ‰ d¦  «         t          ‰ ‰|d¦  «         t          j        ‰                      d¦  «        ‰                     d¦  «        k    d„ ¦  «         t          j        ‰ j        d d…         ‰j        k    ˆfd„¦  «         t          ‰‰ ¦  «        \  }}t          j
        |t          || ¬¦  «        ‰j        ‰j        ¬	¦  «        }|                     ¦   «         d
k    r*|s(|                     ¦   «         r|                     ¦   «         }|S )Nztorch.linalg.lu_solvec                  ó*   •— d‰j         › d‰ j         › d�S )NzPlinalg.lu_solve: Expected LU and B to have the same dtype, but found LU of type ú and B of type rj  r‰   )r  rz  s   €€r:   r_   z&linalg_lu_solve_meta.<locals>.<lambda>º  s6   ø€ ðOØ$&¤HðOð OØ=>¼WðOð Oð Oð r<   c                  ó   — dS )NzElinalg.lu_solve: pivots should be a Tensor of scalar type torch.int32r@   r@   r<   r:   r_   z&linalg_lu_solve_meta.<locals>.<lambda>Á  s   € ÐW€ r<   zlinalg.lu_solver”   c                  ó   — dS )NzYlinalg.lu_solve: Number of pivots per batch should be same as the dimension of the matrixr@   r@   r<   r:   r_   z&linalg_lu_solve_meta.<locals>.<lambda>É  s   € Ðk€ r<   c                  ó   •— d‰ j         › d�S )Nzclinalg.lu_solve: Expected LU.shape[:-1] and pivots.shape to be the same, but got pivots with shape rj  rÍ   rk  s   €r:   r_   z&linalg_lu_solve_meta.<locals>.<lambda>Ï  rl  r<   r"  rY  r   )ré   rP   ra   rX   r"  rè   r  rœ   r‘   rp  rZ  r    r|   r�   r'  Úconj)rz  ra  r  r  r~  rr  rM   r  s   ```     r:   Úlinalg_lu_solve_metar†  ¬  s£  øøø€ õ ˜2Ð6Ñ7Ô7Ð7Ý	„LØ
Œ�A”GÒð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ�œ	Ò!ØWÐWñô ð õ �bÐ1Ñ2Ô2Ð2Ý�b˜!˜TÐ#4Ñ5Ô5Ð5Ý	„LØ
�Š�‰Œ�v—{’{ 2‘”Ò&ØkÐkñô ð õ 
„LØ
Œ��"�Œ˜œÒ%ð	
ð 	
ð 	
ð 	
ñô ð õ 7°q¸"Ñ=Ô=ÑÐ�aåÔ ØÝ*Ð+;È4ÀxÐPÑPÔPØŒgØŒxð	ñ ô €Fð ‡|‚|�~„~˜ÒÐ 4ÐØ×ÒÑÔð 	#Ø—[’[‘]”]ˆFà€Mr<   Úunpack_dataÚunpack_pivotsc                 óD  ‡ — t          j        ‰ j        dk    ˆ fd„¦  «         |r)t          j        |j        t           j        k    d„ ¦  «         t          ‰ j        ¦  «        }|d         }|d         }t          ||¦  «        }||d<   |r‰                      |¦  «        }n‰                      dg¦  «        }|r:||d<   ‰                      |¦  «        }	||d<   ||d<   ‰                      |¦  «        }
n,‰                      dg¦  «        }	‰                      dg¦  «        }
||	|
fS )Nr,  c                  ó   •— d‰ j         › d�S )NzFtorch.lu_unpack: Expected tensor with 2 or more dimensions. Got size: rj  rÍ   )rz  s   €r:   r_   z lu_unpack_meta.<locals>.<lambda>ï  s   ø€ ÐkÐY[ÔYaÐkÐkÐk€ r<   c                  ó   — dS )Nz´torch.lu_unpack: LU_pivots is expected to be a contiguous tensor of torch.int32 dtype.
Note: this function is intended to be used with the output produced by torch.linalg.lu_factorr@   r@   r<   r:   r_   z lu_unpack_meta.<locals>.<lambda>ô  s   € ðpð r<   rô  r”   r   )	rP   ra   rž   rX   r|  r  r‘   r5  r�   )rz  ra  r‡  rˆ  rx  r›  rD  rš  rt  r  r  s   `          r:   Úlu_unpack_metarŒ  å  s?  ø€ õ 
„LØ
Œ�1ŠØkÐkÐkÐkñô ð ð ð 
ÝŒØŒL�EœKÒ'ðð ñ	
ô 	
ð 	
õ �”‰NŒN€EØˆbŒ	€AØˆbŒ	€AÝˆAˆq‰	Œ	€AØ€Eˆ"�IØð Ø�LŠL˜ÑÔˆˆà�LŠL˜!˜ÑÔˆØð Øˆˆb‰	Ø�LŠL˜ÑÔˆØˆˆb‰	Øˆˆb‰	Ø�LŠL˜ÑÔˆˆà�LŠL˜!˜ÑÔˆØ�LŠL˜!˜ÑÔˆØˆa�ˆ7€Nr<   Úmodec                 ó~   ‡ — ‰ dk    rd}d}n.‰ dk    rd}d}n#‰ dk    rd}d}nt          j        dˆ fd„¦  «         ||fS )NÚreducedTÚcompleteFÚrc                  ó   •— d‰ › d�S )Nzqr received unrecognized mode 'z=' but expected one of 'reduced' (default), 'r', or 'complete'r@   )r�  s   €r:   r_   z _parse_qr_mode.<locals>.<lambda>  s"   ø€ ðO°$ð Oð Oð Oð r<   ©rP   ra   )r�  Ú	compute_qr�  s   `  r:   Ú_parse_qr_moder•    s~   ø€ ØˆyÒÐØˆ	ØˆˆØ	�Ò	Ð	Øˆ	ØˆˆØ	�ŠˆØˆ	ØˆˆåŒØðð ð ð ñ	
ô 	
ð 	
ð �gÐÐr<   ÚQÚRr�  c                 óT  — t          | d¦  «         t          | d¦  «         t          |¦  «        \  }}| j        d         }| j        d         }t	          ||¦  «        }|rXt          | j        ¦  «        }|r|n||d<   |                      |¦  «        }|                     |t          |d¬¦  «        ¦  «         n|                      dg¦  «        }t          | j        ¦  «        }	|s|s|n||	d<   |                      |	¦  «        }
|
                     |	t          |	d¬¦  «        ¦  «         ||
fS )Nz	linalg.qrrô  r”   Fr"  r   )	r  ré   r•  r‘   r5  r  r�   r	  r    )r÷  r�  r”  Úreduced_moder›  rD  rš  ÚQ_shaper–  ÚR_shaper—  s              r:   Úlinalg_qr_metarœ  $  s+  € õ �!�[Ñ!Ô!Ð!Ý˜1˜kÑ*Ô*Ð*å,¨TÑ2Ô2Ñ€Iˆ|à	Œ�Œ€AØ	Œ�Œ€AÝˆAˆq‰	Œ	€Aàð Ý�q”w‘-”-ˆØ'Ð.�a�a¨Qˆ�‰Ø�KŠK˜Ñ Ô ˆØ	�Š�gÕ:¸7ÈeÐTÑTÔTÑUÔUÐUÐUà�KŠK˜˜ÑÔˆõ �1”7‰mŒm€GØ#Ð;¨9Ð;�!�!¸!€GˆB�KØ	�Š�GÑÔ€AØ‡M‚M�'Õ6°wÈ%ÐPÑPÔPÑQÔQÐQØˆaˆ4€Kr<   ÚsignÚ	logabsdetc                 ó¬  — t          | d¦  «         t          | dd¦  «         | j        }|                      |d d…         ¦  «        }|                      |d d…         t	          | j        ¦  «        ¬¦  «        }t          j        |t          |d¦  «        | j        | j	        ¬¦  «        }|                      |d d…         t          j
        ¬¦  «        }||||fS )Nzlinalg.slogdetFrô  r‰   rY  r”   )rè   ré   r‘   r�   rZ   rX   rP   rZ  r    r|   r|  )r÷  r‘   r�  rž  rz  ra  s         r:   Ú_linalg_slogdetr   @  sÐ   € õ �aÐ)Ñ*Ô*Ð*Ý˜1Ð.°Ñ6Ô6Ð6ØŒG€EØ�;Š;�u˜S˜b˜S”zÑ"Ô"€DØ—’˜E # 2 #œJ­o¸a¼gÑ.FÔ.F�ÑGÔG€IÝ	Ô	ØÝ*¨5°%Ñ8Ô8ØŒgØŒxð	
ñ 
ô 
€Bð �[Š[˜˜s ˜sœ­5¬;ˆ[Ñ7Ô7€FØ�˜B Ð&Ð&r<   Úfull_matricesÚ
compute_uvÚdriverc                 óÊ  — t          | d¦  «         t          | d¦  «         t          | j        d d…         ¦  «        }| j        d         }| j        d         }t	          ||¦  «        }|rž|||r|n|gz   }|                      |¦  «        }	|	                     |t          |d¬¦  «        ¦  «         ||r|n||gz   }
|                      |
¦  «        }t          | ¦  «        dk    }|                     |
t          |
|¬¦  «        ¦  «         n,|                      dg¦  «        }	|                      dg¦  «        }|                      ||gz   t          | j
        ¦  «        ¬¦  «        }|	||fS )	Nz
linalg.svdrô  r”   Fr"  r0  r   r‰   )r  ré   r  r‘   r5  r�   r	  r    r4  rZ   rX   )r÷  r¡  r¢  r£  r  r›  rD  rš  ÚU_shaper  ÚV_shapeÚVÚis_cudaÚSs                 r:   Ú_linalg_svd_metarª  T  sl  € õ �!�\Ñ"Ô"Ð"Ý˜1˜lÑ+Ô+Ð+å�a”g˜c˜r˜c”lÑ#Ô#€JØ	Œ�Œ€AØ	Œ�Œ€AÝˆAˆq‰	Œ	€Aàð Ø ¨Ð#< 1 1¸1Ð=Ñ=ˆØ�KŠK˜Ñ Ô ˆØ	�Š�gÕ:¸7ÈeÐTÑTÔTÑUÔUÐUà ]Ð 9  ¸¸1Ð=Ñ=ˆØ�KŠK˜Ñ Ô ˆõ
 ˜a‘.”. FÒ*ˆØ	�Š�gÕ:¸7ÈgÐVÑVÔVÑWÔWÐWÐWð �KŠK˜˜ÑÔˆØ�KŠK˜˜ÑÔˆð 	
�Š�J ! Ñ$­O¸A¼GÑ,DÔ,DˆÑEÔE€AØˆa�ˆ7€Nr<   Úarg1Úarg2c                 óV  — | j         d d…         }|j         d d…         }t          ||¦  «        }t          |¦  «        }||                      d¦  «        |                      d¦  «        gz  }t          |¦  «        }||                     d¦  «        |                     d¦  «        gz  }||fS )Nrô  r”   )r‘   r)   r  rœ   )r«  r¬  Úarg1_batch_sizesÚarg2_batch_sizesÚexpand_batch_portionÚarg1_expand_sizeÚarg2_expand_sizes          r:   rp  rp  z  s¨   € ð
 ”z # 2 #”ÐØ”z # 2 #”ÐÝ,Ð-=Ð?OÑPÔPÐåÐ0Ñ1Ô1ÐØ˜Ÿš 2™œ¨¯	ª	°"©¬Ð6Ñ6ÐåÐ0Ñ1Ô1ÐØ˜Ÿš 2™œ¨¯	ª	°"©¬Ð6Ñ6ÐØÐ-Ð-Ð-r<   c                 óÞ   — |rt          | ||¦  «         t          | |¦  «        \  }}|| j        k    r| n|                      |¦  «        }||j        k    r|n|                     |¦  «        }||fS r7   )r  rp  r‘   Úexpand)r«  r¬  rø  r±  r²  Úarg1_broadcastedÚarg2_broadcasteds          r:   r;  r;  ‹  s�   € ð ð 1Ý˜t T¨4Ñ0Ô0Ð0å)EÀdÈDÑ)QÔ)QÑ&ÐÐ&ð ! D¤JÒ.Ð.ˆˆ°D·K²KÐ@PÑ4QÔ4Qð ð ! D¤JÒ.Ð.ˆˆ°D·K²KÐ@PÑ4QÔ4Qð ð Ð-Ð-Ð-r<   r�   c                 óv   — | j         d d…         }|j        dk    p| j        dz
  |j        k    o
|j         |k    }|S )Nr”   r¬   )r‘   rž   )r  r�   Úexpected_batched_rhs_shapeÚvector_cases       r:   Úlinalg_solve_is_vector_rhsrº  Ÿ  sK   € Ø!&¤¨S¨b¨SÔ!1ÐØ”* ’/ð ØŒ
�Q‰˜%œ*Ò$ÐR¨¬Ð8RÒ)Rð ð Ðr<   )r  rD  r  rz  ra  rb  c                óô  ‡ ‡— t          ‰ d¦  «         t          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         t	          ‰ ‰¦  «        }|r‰                     d¦  «        n‰}	t          ‰ |	|d¦  «         t          |	‰ ¦  «        \  }
}t          j        |p| d„ ¦  «         |r
|
d d…         n|
}t          j        |t          || ¦  «        ‰j        ‰j
        ¬¦  «        }‰ j        }t          j        |t          |d¦  «        ‰ j        ‰ j
        ¬¦  «        }‰                      |d d…         t          j        ¬¦  «        }‰                      |d d…         t          j        ¬¦  «        }||||f}||||f}t          d	„ |D ¦   «         ¦  «        rjt          ||¦  «        D ]Y\  }}t!          ||j        ¦  «         |                     |j        |                     ¦   «         ¦  «         t'          ||d¬
¦  «         ŒZ|S )Nzlinalg.solvec                  ó*   •— d‰ j         › d‰j         › d�S )NzKlinalg.solve: Expected A and B to have the same dtype, but found A of type r�  rj  r‰   )r÷  r  s   €€r:   r_   z"_linalg_solve_ex.<locals>.<lambda>¶  s0   ø€ ð9ØŒwð9ð 9Ø'(¤wð9ð 9ð 9ð r<   r”   c                  ó   — dS )Nz•linalg.solve: Vector broadcasting of the left hand side is not supported for left=False. In this case linalg.solve is equivalent to B / A.squeeze(-1)r@   r@   r<   r:   r_   z"_linalg_solve_ex.<locals>.<lambda>Á  s   € ðKð r<   rY  Fr‰   rô  c              3   ó   K  — | ]}|d uV — Œ	d S r7   r@   ©rF   rG   s     r:   rm   z#_linalg_solve_ex.<locals>.<genexpr>Ø  s&   è è € Ð
&Ð
&˜Qˆ1�Dˆ=Ð
&Ð
&Ð
&Ð
&Ð
&Ð
&r<   )Ú	copy_fromÚcopy_toÚexact_dtype)ré   rP   ra   rX   rº  rÓ   r  rp  rZ  r    r|   r‘   r�   r|  ÚallÚzipr%   r	  rÅ   r'   )r÷  r  r  rD  r  rz  ra  rb  r¹  ÚB_ÚB_broad_shaperM   Úresult_shapeÚresult_r‘   ÚLU_Úpivots_Úinfo_r  Úresr‘  Úos   ``                    r:   Ú_linalg_solve_exrÎ  §  s5  øø€ õ ˜1˜nÑ-Ô-Ð-Ý	„LØ	Œ�1”7Òð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ -¨Q°Ñ2Ô2€KØ'Ð	.ˆ�Š�R‰Œˆ¨Q€BÝ�a˜˜T >Ñ2Ô2Ð2Ý3°B¸Ñ:Ô:Ñ€M�1Ý	„LØÐ�K�ð	
ð 	
ñô ð ð *5ÐG�=  " Ô%Ð%¸-€LÝÔ!ØÝ*¨<¸T¸ÑBÔBØŒgØŒxð	ñ ô €Gð ŒG€EÝ
Ô
ØÝ*¨5°%Ñ8Ô8ØŒgØŒxð	ñ ô €Cð �kŠk˜%   œ*­E¬KˆkÑ8Ô8€GØ�KŠK˜˜c˜r˜cœ
­%¬+ˆKÑ6Ô6€EØ�2�v˜tÐ
$€CØ�C˜ %Ð
(€CÝ
Ð
&Ð
& #Ð
&Ñ
&Ô
&Ñ&Ô&ð FÝ˜˜S‘M”Mð 	Fð 	F‰DˆAˆqå˜a ¤Ñ)Ô)Ð)à�MŠM˜!œ' 1§8¢8¡:¤:Ñ.Ô.Ð.Ý Q°¸uÐEÑEÔEÐEÐEØ€Jr<   )r  Úunitriangularr  rÏ  r  c                ó
  — |€|                       dg¦  «        }t          |t          ¦  «        sJ ‚t          | ||d¦  «         t	          || d ¦  «        \  }}|                     dd¦  «                             ¦   «         o|                     ¦   «         }|rt          ||j	        ¦  «        }nYt          ||j	        ¦  «        rD|                     |                     dd¦  «        j	        ¦  «         |                     dd¦  «         |S )Nr   zlinalg.solve_triangularrô  r”   )r�   rj   r#   r  r;  r1  r   Úis_conjr%   r‘   r&   r  Ú
transpose_)	r÷  r  r  r  rÏ  r  rÅ  ÚA_Úavoid_copy_As	            r:   Úlinalg_solve_triangular_metarÕ  â  sõ   € ð €{Ø�kŠk˜1˜#ÑÔˆÝ�c�:Ñ&Ô&Ð&Ð&Ð&Ý�a˜˜DÐ";Ñ<Ô<Ð<Ý.¨q°!°TÑ:Ô:�F€BˆØ—<’<  BÑ'Ô'×5Ò5Ñ7Ô7ÐH¸B¿JºJ¹L¼L€LØð #Ý  R¤XÑ.Ô.ˆˆõ    R¤XÑ.Ô.ð 	#Ø�KŠK˜Ÿš R¨Ñ,Ô,Ô2Ñ3Ô3Ð3Ø�NŠN˜2˜rÑ"Ô"Ð"Ø€Jr<   ÚXÚM)rÂ  r1  c                 ó   ‡ ‡— t          j        ‰ j        dk    ˆ fd„¦  «         t          j        ‰j        dk    ˆfd„¦  «         t          ‰ ‰d¦  «         ‰j        t           j        k    rvt          ‰ ‰¦  «        \  }}t          j        |t          |d¬¦  «        ‰ j	        ‰ j
        ¬¦  «        }t          j        |t          |d¬¦  «        ‰j	        ‰j
        ¬¦  «        }nk‰j        t           j        k    s‰j        t           j        k    r+t          j        ‰ ¦  «        }‰                      dg¦  «        }nt          j        dd	„ ¦  «         ||fS )
Nr,  c                  ó   •— d‰ j         › d�S )NzMtorch.triangular_solve: Expected b to have at least 2 dimensions, but it has r7  r8  rì   s   €r:   r_   z'triangular_solve_meta.<locals>.<lambda>  s!   ø€ ð9Øœ)ð9ð 9ð 9ð r<   c                  ó   •— d‰ j         › d�S )NzMtorch.triangular_solve: Expected A to have at least 2 dimensions, but it has r7  r8  rÿ  s   €r:   r_   z'triangular_solve_meta.<locals>.<lambda>  rh  r<   Útriangular_solveFr"  rY  r   c                  ó   — dS )Nz+triangular_solve: Got an unexpected layout.r@   r@   r<   r:   r_   z'triangular_solve_meta.<locals>.<lambda>(  s   € Ð$Q€ r<   )rP   ra   rž   r  r{   Ústridedrp  rZ  r    rX   r|   Ú
sparse_csrÚ
sparse_bsrrê   r�   )	r’   r÷  r  r1  rÏ  Úself_broadcast_sizeÚA_broadcast_sizeÚsolutionÚcloned_coefficients	   ``       r:   Útriangular_solve_metarä  ü  s  øø€ õ 
„LØŒ	�QŠð	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ	Œ�!Šð	
ð 	
ð 	
ð 	
ñô ð õ ˜4 Ð$6Ñ7Ô7Ð7à„x•5”=Ò Ð Ý0LÈTÐSTÑ0UÔ0UÑ-ÐÐ-ÝÔ&Ø$Ý.Ð/BÈeÐTÑTÔTØ”*Ø”;ð	
ñ 
ô 
ˆõ #Ô0Ø!Ý.Ð/?È5ÐQÑQÔQØ”'Ø”8ð	
ñ 
ô 
ÐÐð 
Œ•UÔ%Ò	%Ð	%¨¬µUÔ5EÒ)EÐ)EÝÔ# DÑ)Ô)ˆØ!Ÿ^š^¨Q¨CÑ0Ô0ÐÐåŒ�UÐQÐQÑRÔRÐRØÐ'Ð'Ð'r<   c                 ó~  — t          | d¦  «         t          | d¦  «         |                      | j        d d…         ¦  «        }|                      | j        ¦  «        }|                     | j        t          | j        d¬¦  «        ¦  «         |                      | j        d d…         t          j        ¬¦  «        }|||fS )Nz
linalg.detrô  Fr"  r”   r‰   r^  )r÷  Údetrz  ra  s       r:   Ú_linalg_det_metarç  -  s£   € å�a˜Ñ&Ô&Ð&Ý˜1˜lÑ+Ô+Ð+à
�+Š+�a”g˜c˜r˜c”lÑ
#Ô
#€Cà	
�Š�Q”WÑ	Ô	€BØ‡N‚N�1”7Õ7¸¼È5ÐQÑQÔQÑRÔRÐRà�[Š[˜œ  " œ­U¬[ˆ[Ñ9Ô9€FØ��Fˆ?Ðr<   c                 óš  ‡ ‡‡‡‡‡— t          j        ‰ j        dk    d„ ¦  «         t          j        ‰j        dk    d„ ¦  «         |rdndŠt          j        ‰j        ‰         ‰j        d         k    ˆfd„¦  «         t          j        ‰j        ‰         ‰ j        d         k    ˆfd„¦  «         t          j        ‰j        d         ‰ j        d         k    d„ ¦  «         t          j        ‰ j        ‰j        z
  d	k    ˆ ˆfd
„¦  «         t          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         ‰ j        dk    re‰ j        d d…         }‰j        d d…         Št          j        ‰|k    ˆfd„¦  «         ‰j        d d…         Št          j        ‰|k    ˆfd„¦  «         t          j        ‰j        ‰ j        k    ˆ ˆfd„¦  «         t          j        ‰j        ‰ j        k    ˆ ˆfd„¦  «         t          d‰‰ d¦  «         t          d‰‰ d¦  «         t          j        ‰j        t          ‰j        d¬¦  «        ‰j        ‰j        ¬¦  «        S )Nr,  c                  ó   — dS )Nz3torch.ormqr: input must have at least 2 dimensions.r@   r@   r<   r:   r_   zormqr.<locals>.<lambda>E  ó   € Ð!V€ r<   c                  ó   — dS )Nz3torch.ormqr: other must have at least 2 dimensions.r@   r@   r<   r:   r_   zormqr.<locals>.<lambda>H  rê  r<   rô  r”   c                  ó   •— d‰ › d�S )Nútorch.ormqr: other.shape[z0] must be greater than or equal to tau.shape[-1]r@   ©Úleft_size_conditions   €r:   r_   zormqr.<locals>.<lambda>N  s   ø€ ÐqÐ,?ÐqÐqÐq€ r<   c                  ó   •— d‰ › d�S )Nrí  z"] must be equal to input.shape[-2]r@   rî  s   €r:   r_   zormqr.<locals>.<lambda>R  s   ø€ ÐcÐ,?ÐcÐcÐc€ r<   c                  ó   — dS )NzHtorch.ormqr: tau.shape[-1] must be less than or equal to input.shape[-1]r@   r@   r<   r:   r_   zormqr.<locals>.<lambda>W  rM  r<   r¬   c                  ó(   •— d‰j         › d‰ j         › �S )Nz[torch.ormqr: Expected tau to have one dimension less than input, but got tau.ndim equal to rQ  r8  rR  s   €€r:   r_   zormqr.<locals>.<lambda>\  rS  r<   c                  ó(   •— d‰j         › d‰ j         › �S )Nzhtorch.ormqr: Expected other to have the same number of dimensions as input, but got other.ndim equal to rQ  r8  ©r  r�   s   €€r:   r_   zormqr.<locals>.<lambda>c  s1   ø€ ð`Ø+0¬:ð`ð `ØSXÔS]ð`ð `ð r<   c                  ó   •— d‰ › �S )NzWtorch.ormqr: Expected batch dimensions of tau to be equal to input.shape[:-2], but got r@   rU  s   €r:   r_   zormqr.<locals>.<lambda>n  rW  r<   c                  ó   •— d‰ › �S )NzYtorch.ormqr: Expected batch dimensions of other to be equal to input.shape[:-2], but got r@   )Úactual_batch_other_shapes   €r:   r_   zormqr.<locals>.<lambda>w  s   ø€ ðQØ6NðQð Qð r<   c                  ó(   •— d‰ j         › d‰j         › �S )NzPtorch.ormqr: Expected input and tau to have the same dtype, but input has dtype z and tau has dtype r‰   rR  s   €€r:   r_   zormqr.<locals>.<lambda>  s0   ø€ ðOØ#(¤;ðOð OØCFÄ9ðOð Oð r<   c                  ó(   •— d‰ j         › d‰j         › �S )NzRtorch.ormqr: Expected input and other to have the same dtype, but input has dtype z and other has dtype r‰   rô  s   €€r:   r_   zormqr.<locals>.<lambda>†  s0   ø€ ðSØ#(¤;ðSð SØEJÄ[ðSð Sð r<   ztorch.ormqrrJ  r�   Fr"  rY  )	rP   ra   rž   r‘   rX   r  rZ  r    r|   )	r  rJ  r�   r  r1  Úexpected_batch_shaper÷  rV  rï  s	   ```   @@@r:   Úormqrrû  ;  sú  øøøøøø€ õ 
„LØŒ
�aŠÐVÐVñô ð õ 
„LØŒ
�aŠÐVÐVñô ð ð !%Ð,˜"˜"¨"ÐÝ	„LØŒÐ'Ô(¨C¬I°b¬MÒ9ØqÐqÐqÐqñô ð õ 
„LØŒÐ'Ô(¨E¬K¸¬OÒ;ØcÐcÐcÐcñô ð õ
 
„LØŒ	�"Œ˜œ RœÒ(ØZÐZñô ð õ
 
„LØŒ
�S”XÑ Ò"ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ
�e”jÒ ð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð „z�A‚~€~Ø$œ{¨3¨B¨3Ô/ÐØ!$¤¨3¨B¨3¤ÐÝŒØ"Ð&:Ò:ðð ð ð ñ	
ô 	
ð 	
ð $)¤;¨s°¨sÔ#3Ð ÝŒØ$Ð(<Ò<ðð ð ð ñ	
ô 	
ð 	
õ 
„LØŒ	�U”[Ò ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ�u”{Ò"ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ �M 3¨¨uÑ5Ô5Ð5Ý�M 5¨%°Ñ9Ô9Ð9åÔØŒ[Ý*¨5¬;À%ÐHÑHÔHØŒkØŒ|ð	ñ ô ð r<   c                ó„  ‡ ‡‡— t          j        t          ‰¦  «        d‰z  k    ˆˆfd„¦  «         ‰ j        }|‰dz   k    }|}| }|r/t	          d|¦  «        D ]}|o‰                      |¦  «        dk    }Œn.t	          d|¦  «        D ]}|o‰                      |¦  «        dk    }Œt          j        |p|ˆˆ fd„¦  «         d S )Nr,  c                  ó4   •— dd‰ z  › dt          ‰¦  «        › �S )Nzpadding size is expected to be r,  z, but got: ©r®   )r   Úpaddings   €€r:   r_   z,_padding_check_valid_input.<locals>.<lambda>š  s"   ø€ ÐT°!°c±'ÐTÐTÅcÈ'ÁlÄlÐTÐT€ r<   r¬   r   c                  ó0   •— d‰ dz   › d‰ dz   › d‰j         › �S )Nú	Expected r¬   zD or r,  zcD (batch mode) tensor with possibly 0 batch size and other non-zero dimensions for input, but got: rÍ   )r   r  s   €€r:   r_   z,_padding_check_valid_input.<locals>.<lambda>¯  sC   ø€ ðO˜˜a™ð Oð O c¨A¡gð Oð OØAFÄðOð Oð r<   )rP   ra   r®   rž   r±   rœ   )r  rÿ  r   Ú	input_dimÚis_batch_modeÚvalid_batch_modeÚvalid_non_batch_moder  s   ```     r:   Ú_padding_check_valid_inputr  —  s#  øøø€ Ý	„LÝˆG‰Œ˜˜C™ÒØTÐTÐTÐTÐTñô ð ð
 ”
€Ià #¨¡'Ò*€Mà$ÐØ,Ð,Ðàð Oå�q˜)Ñ$Ô$ð 	Gð 	GˆAØ/ÐF°E·J²J¸q±M´MÀQÒ4FÐÐð	Gõ �q˜)Ñ$Ô$ð 	Oð 	OˆAØ#7Ð#N¸E¿JºJÀq¹M¼MÈQÒ<NÐ Ð õ 
„LØÐ0Ð0ð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð r<   c                óü  ‡ ‡‡‡‡	‡
— d}dŠd}‰ j         dk    r‰                      d¦  «        }‰dz  Š|dz  }t          ‰ |d¬¦  «         |\  Š	Š
‰                      |¦  «        }‰                      ‰¦  «        Š‰‰	z   ‰
z   Š|r%t          j        ‰	‰k     o‰
‰k     ˆˆ ˆ	ˆ
fd„¦  «         t          j        ‰dk    ˆˆfd„¦  «         ‰ j         dk    r‰                      |‰f¦  «        S ‰                      ||‰f¦  «        S )Nr   r¬   r2   r•   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S ©NzcArgument #4: Padding size should be less than the corresponding input dimension, but got: padding (rq   ú) at dimension ú
 of input rÍ   ©Údim_wr  Úpad_lÚpad_rs   €€€€r:   r_   z_pad1d_common.<locals>.<lambda>Ë  óM   ø€ ðcØ%*ðcð cØ.3ðcð cØDIðcð cØUZÔU`ðcð cð r<   c                  ó   •— d‰ › d‰› �S )Nz
input (W: z%) is too small. Calculated output W: r@   )Úinput_wÚoutput_ws   €€r:   r_   z_pad1d_common.<locals>.<lambda>Ó  s   ø€ ÐU˜WÐUÐUÈ8ÐUÐU€ r<   r,  )rž   rœ   r  rP   ra   r�   )r  rÿ  Úis_reflectionÚ	dim_planeÚnbatchÚnplaner  r  r  r  r  s   `     @@@@@r:   Ú_pad1d_commonr  ¶  sI  øøøøøø€ Ø€IØ€EØ€Fà„z�Q‚€Ø—’˜A‘”ˆØ�‰
ˆØ�Q‰ˆ	å˜u g°1Ð5Ñ5Ô5Ð5à�L€Eˆ5à�ZŠZ˜	Ñ"Ô"€FØ�jŠj˜ÑÔ€GØ˜‰ Ñ&€Hàð 
ÝŒØ�GŠOÐ/ ¨¢ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 
„LØ�AŠØUÐUÐUÐUÐUñô ð ð
 „z�Q‚€Ø�Š ¨Ð1Ñ2Ô2Ð2à�Š ¨°Ð9Ñ:Ô:Ð:r<   c                 ó&   — t          | |d¬¦  «        S ©NT©r  )r  ©r  rÿ  s     r:   Úmeta_reflection_pad1dr  Ü  ó   € õ ˜ °tÐ<Ñ<Ô<Ð<r<   c                 ó~   ‡ — t          j        ‰ j        t           j        k    ˆ fd„¦  «         t	          ‰ |d¬¦  «        S )Nc                  ó>   •— d‰ j                              ¦   «         › d�S )Nz)"replication_pad1d" not implemented for 'ú'©rX   Ú__str__©r  s   €r:   r_   z(meta_replication_pad1d.<locals>.<lambda>ç  ó!   ø€ ÐX¸e¼k×>QÒ>QÑ>SÔ>SÐXÐXÐX€ r<   Fr  )rP   ra   rX   Úboolr  r  s   ` r:   Úmeta_replication_pad1dr'  â  óH   ø€ õ 
„LØŒ•u”zÒ!ØXÐXÐXÐXñô ð õ ˜ °uÐ=Ñ=Ô=Ð=r<   c                ó¬  ‡ ‡‡‡‡‡— dŠ|s't          j        t          |¦  «        dk    d„ ¦  «         ‰j        dk    r‰dz  Š|\  ŠŠ‰                     ‰¦  «        }|‰z   ‰z   Š|r%t          j        ‰|k     o‰|k     ˆˆˆˆfd„¦  «         t          j        ‰‰                      ‰¦  «        k    ˆˆ ˆfd„¦  «         ‰                     ‰j        ¦  «        S )Nr¬   r,  c                  ó   — dS )Nz padding size is expected to be 2r@   r@   r<   r:   r_   z(_pad1d_backward_common.<locals>.<lambda>ï  s   € Ð0R€ r<   r2   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S r	  rÍ   r  s   €€€€r:   r_   z(_pad1d_backward_common.<locals>.<lambda>ü  r  r<   c                  ó:   •— d‰› d‰                      ‰ ¦  «        › �S ©Nz(grad_output width unexpected. Expected: ú, Got: r›   ©r  Úgrad_outputr  s   €€€r:   r_   z(_pad1d_backward_common.<locals>.<lambda>  ó'   ø€ Ðe¸8ÐeÐeÈK×L\ÒL\Ð]bÑLcÔLcÐeÐe€ r<   ©rP   ra   r®   rž   rœ   r�   r‘   )	r0  r  rÿ  r  r  r  r  r  r  s	   ``   @@@@r:   Ú_pad1d_backward_commonr3  ì  s  øøøøøø€ Ø€EØð TÝŒ•S˜‘\”\ QÒ&Ð(RÐ(RÑSÔSÐSà„z�Q‚€Ø�‰
ˆà�L€Eˆ5à�jŠj˜ÑÔ€GØ˜‰ Ñ&€Hàð 
ÝŒØ�GŠOÐ/ ¨¢ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 
„LØ�K×$Ò$ UÑ+Ô+Ò+ØeÐeÐeÐeÐeÐeñô ð ð
 �?Š?˜5œ;Ñ'Ô'Ð'r<   Ú
grad_inputc                 ó(   — t          | ||d¬¦  «        S r  ©r3  ©r0  r  rÿ  s      r:   Úmeta_reflection_pad1d_backwardr8  
  s   € õ " +¨u°gÈTÐRÑRÔRÐRr<   c                 ó(   — t          | ||d¬¦  «        S )NFr  r6  r7  s      r:   Úmeta_replication_pad1d_backwardr:    s   € õ " +¨u°gÈUÐSÑSÔSÐSr<   c                ó´  ‡ ‡‡‡	‡
‡‡‡‡‡‡— dŠdŠd}d}t          ‰ |d¬¦  «         ‰ j        }|dk    r$‰                      d¦  «        }‰dz  Š‰dz  Š|dz  }|\  ŠŠŠŠ‰                      |¦  «        }‰                      ‰¦  «        Š	‰                      ‰¦  «        Š
‰	‰z   ‰z   Š‰
‰z   ‰z   Š|rJt          j        ‰‰
k     o‰‰
k     ˆˆ ˆˆfd„¦  «         t          j        ‰‰	k     o‰‰	k     ˆˆ ˆˆfd„¦  «         t          j        ‰dk    p‰dk    ˆ	ˆ
ˆˆfd„¦  «         ‰ j        d	k    r‰                      |‰‰f¦  «        S ‰                      ||‰‰f¦  «        S )
Nr,  r¬   r   r•   é   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S r	  rÍ   r  s   €€€€r:   r_   z_pad2d_common.<locals>.<lambda>0  r  r<   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S ©NzcArgument #6: Padding size should be less than the corresponding input dimension, but got: padding (rq   r
  r  rÍ   ©Údim_hr  Úpad_bÚpad_ts   €€€€r:   r_   z_pad2d_common.<locals>.<lambda>7  r  r<   c                  ó    •— d‰ › d‰› d‰› d‰› �S )Nz
input (H: ú W: z%) is too small. Calculated output H: r@   )Úinput_hr  Úoutput_hr  s   €€€€r:   r_   z_pad2d_common.<locals>.<lambda>?  s?   ø€ ð=˜ð =ð = gð =ð =Ø$,ð=ð =Ø2:ð=ð =ð r<   r2   ©r  rž   rœ   rP   ra   r�   )r  rÿ  r  Ú
dim_slicesr  rž   r  rA  r  rF  r  rG  r  rB  r  r  rC  s   `      @@@@@@@@@@r:   Ú_pad2d_commonrJ    sï  øøøøøøøøøøø€ Ø€EØ€EØ€JØ€Få˜u g°1Ð5Ñ5Ô5Ð5àŒ:€DØˆq‚y€yØ—’˜A‘”ˆØ�‰
ˆØ�‰
ˆØ�a‰ˆ
à!(Ñ€Eˆ5�%˜à�ZŠZ˜
Ñ#Ô#€FØ�jŠj˜ÑÔ€GØ�jŠj˜ÑÔ€GØ˜‰ Ñ&€HØ˜‰ Ñ&€Hàð 
ÝŒØ�GŠOÐ/ ¨¢ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 	ŒØ�GŠOÐ/ ¨¢ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 
„LØ�AŠÐ&˜ Qšð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð „z�Q‚€Ø�Š ¨°(Ð;Ñ<Ô<Ð<à�Š ¨°¸(ÐCÑDÔDÐDr<   c                 ó&   — t          | |d¬¦  «        S r  )rJ  r  s     r:   Úmeta_reflection_pad2drL  K  r  r<   c                 ó~   ‡ — t          j        ‰ j        t           j        k    ˆ fd„¦  «         t	          ‰ |d¬¦  «        S )Nc                  ó>   •— d‰ j                              ¦   «         › d�S )Nz)"replication_pad2d" not implemented for 'r!  r"  r$  s   €r:   r_   z(meta_replication_pad2d.<locals>.<lambda>V  r%  r<   Fr  )rP   ra   rX   r&  rJ  r  s   ` r:   Úmeta_replication_pad2drO  Q  r(  r<   c                 óº  ‡ ‡‡‡‡— dŠdŠd}|j         }|                     ¦   «         dk    r‰dz  Š‰dz  Š|dz  }|\  }}}}|‰         }	|‰         }
|	|z   |z   Š|
|z   |z   Št          j        ‰‰                      ‰¦  «        k    ˆˆ ˆfd„¦  «         t          j        ‰‰                      ‰¦  «        k    ˆˆ ˆfd„¦  «         |                     |j         ¦  «        S )Nr,  r¬   r   r<  c                  ó:   •— d‰› d‰                      ‰ ¦  «        › �S r-  r›   r/  s   €€€r:   r_   z%meta_pad2d_backward.<locals>.<lambda>x  r1  r<   c                  ó:   •— d‰› d‰                      ‰ ¦  «        › �S ©Nz)grad_output height unexpected. Expected: r.  r›   ©rA  r0  rG  s   €€€r:   r_   z%meta_pad2d_backward.<locals>.<lambda>|  ó'   ø€ Ðf¸HÐfÐfÈ[×M]ÒM]Ð^cÑMdÔMdÐfÐf€ r<   )r‘   r   rP   ra   rœ   r�   )r0  r’   rÿ  r  r^   r  r  rC  rB  rF  r  rA  r  rG  r  s   `          @@@@r:   Úmeta_pad2d_backwardrV  [  s  øøøøø€ ð €EØ€EØ€Ià”€JØ‡x‚x�z„z�Q‚€Ø�‰
ˆØ�‰
ˆØ�Q‰ˆ	à!(Ñ€Eˆ5�%˜à˜Ô€GØ˜Ô€GØ˜‰ Ñ&€HØ˜‰ Ñ&€Hå	„LØ�K×$Ò$ UÑ+Ô+Ò+ØeÐeÐeÐeÐeÐeñô ð õ 
„LØ�K×$Ò$ UÑ+Ô+Ò+ØfÐfÐfÐfÐfÐfñô ð ð �>Š>˜$œ*Ñ%Ô%Ð%r<   c          	      óR  ‡ ‡‡‡	‡
‡‡‡‡‡‡‡‡‡‡‡— dŠ	dŠdŠd}t          ‰ |d¬¦  «         ‰ j        dk    }|r)‰                      d¦  «        }‰	dz  Š	‰dz  Š‰dz  Š|dz  }|\  ŠŠŠŠŠŠ‰                      |¦  «        }‰                      ‰¦  «        Š
‰                      ‰¦  «        Š‰                      ‰	¦  «        Š‰
‰z   ‰z   Š‰‰z   ‰z   Š‰‰z   ‰z   Š|rot          j        ‰‰k     o‰‰k     ˆ	ˆ ˆˆfd„¦  «         t          j        ‰‰k     o‰‰k     ˆˆ ˆˆfd„¦  «         t          j        ‰‰
k     o‰‰
k     ˆˆ ˆˆfd	„¦  «         t          j        ‰dk    p‰dk    p‰dk    ˆ
ˆˆˆˆˆfd
„¦  «         |r‰                      ||‰‰‰f¦  «        S ‰                      |‰‰‰f¦  «        S )Nr2   r,  r¬   r   r•   é   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S r	  rÍ   r  s   €€€€r:   r_   z_pad3d_common.<locals>.<lambda>ž  r  r<   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S r?  rÍ   r@  s   €€€€r:   r_   z_pad3d_common.<locals>.<lambda>¥  r  r<   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S )NzcArgument #8: Padding size should be less than the corresponding input dimension, but got: padding (rq   r
  r  rÍ   )Údim_dr  Úpad_bkÚpad_fs   €€€€r:   r_   z_pad3d_common.<locals>.<lambda>¬  sM   ø€ ðdØ%*ðdð dØ.4ðdð dØEJðdð dØV[ÔVaðdð dð r<   c                  ó,   •— d‰ › d‰› d‰› d‰› d‰› d‰› �S )Nz
input (D: ú H: rE  z%) is too small. Calculated output D: r@   )Úinput_drF  r  Úoutput_drG  r  s   €€€€€€r:   r_   z_pad3d_common.<locals>.<lambda>´  se   ø€ ðK˜ð Kð K gð Kð K°7ð Kð KØ$,ðKð KØ2:ðKð KØ@HðKð Kð r<   rH  )r  rÿ  r  r  Ú
batch_moder  r  r\  rA  r  ra  rF  r  rb  rG  r  rB  r]  r^  r  r  rC  s   `      @@@@@@@@@@@@@@@r:   Ú_pad3d_commonrd  �  s‚  øøøøøøøøøøøøøøøø€ Ø€EØ€EØ€EØ€Iå˜u g°1Ð5Ñ5Ô5Ð5à”˜q’€JØð Ø—’˜A‘”ˆØ�‰
ˆØ�‰
ˆØ�‰
ˆØ�Q‰ˆ	à07Ñ-€Eˆ5�%˜  và�ZŠZ˜	Ñ"Ô"€FØ�jŠj˜ÑÔ€GØ�jŠj˜ÑÔ€GØ�jŠj˜ÑÔ€GØ˜‰ Ñ'€HØ˜‰ Ñ&€HØ˜‰ Ñ&€Hàð 
ÝŒØ�GŠOÐ/ ¨¢ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 	ŒØ�GŠOÐ/ ¨¢ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 	ŒØ�GŠOÐ0 ¨Ò 0ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 
„LØ�AŠÐ7˜ QšÐ7¨(°aª-ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð GØ�Š ¨°¸(ÀHÐMÑNÔNÐNà�Š ¨°(¸HÐEÑFÔFÐFr<   c                 ó&   — t          | |d¬¦  «        S r  )rd  r  s     r:   Úmeta_reflection_pad3drf  À  r  r<   c                 ó~   ‡ — t          j        ‰ j        t           j        k    ˆ fd„¦  «         t	          ‰ |d¬¦  «        S )Nc                  ó>   •— d‰ j                              ¦   «         › d�S )Nz)"replication_pad3d" not implemented for 'r!  r"  r$  s   €r:   r_   z(meta_replication_pad3d.<locals>.<lambda>Ë  r%  r<   Fr  )rP   ra   rX   r&  rd  r  s   ` r:   Úmeta_replication_pad3dri  Æ  r(  r<   c                 óö  ‡ ‡‡‡‡‡‡— t          j        t          |¦  «        dk    d„ ¦  «         |j        dk    sJ ‚‰ j        |j        k    sJ ‚dŠdŠdŠ|j        dk    r‰dz  Š‰dz  Š‰dz  Š|\  }}}}}}|                     ‰¦  «        }	|                     ‰¦  «        }
|                     ‰¦  «        }|	|z   |z   Š|
|z   |z   Š||z   |z   Št          j        ‰‰                      ‰¦  «        k    ˆˆ ˆfd„¦  «         t          j        ‰‰                      ‰¦  «        k    ˆˆ ˆfd„¦  «         t          j        ‰‰                      ‰¦  «        k    ˆˆ ˆfd	„¦  «         |                     |j        ¦  «        S )
Né   c                  ó   — dS )Nz padding size is expected to be 6r@   r@   r<   r:   r_   z%meta_pad3d_backward.<locals>.<lambda>Ú  s   € Ð,N€ r<   r2   r,  r¬   rX  c                  ó:   •— d‰› d‰                      ‰ ¦  «        › �S r-  r›   r/  s   €€€r:   r_   z%meta_pad3d_backward.<locals>.<lambda>ò  r1  r<   c                  ó:   •— d‰› d‰                      ‰ ¦  «        › �S rS  r›   rT  s   €€€r:   r_   z%meta_pad3d_backward.<locals>.<lambda>ö  rU  r<   c                  ó:   •— d‰› d‰                      ‰ ¦  «        › �S )Nz(grad_output depth unexpected. Expected: r.  r›   )r\  r0  rb  s   €€€r:   r_   z%meta_pad3d_backward.<locals>.<lambda>ú  r1  r<   r2  )r0  r  rÿ  r  r  rC  rB  r^  r]  ra  rF  r  r\  rA  r  rb  rG  r  s   `           @@@@@@r:   Úmeta_pad3d_backwardrp  Ð  sÃ  øøøøøøø€ õ 
„L•�W‘” Ò"Ð$NÐ$NÑOÔOÐOØŒ:˜Š>ˆ>ˆ>ˆ>ØÔ˜uœzÒ)Ð)Ð)Ð)à€EØ€EØ€Eà„z�Q‚€Ø�‰
ˆØ�‰
ˆØ�‰
ˆà07Ñ-€Eˆ5�%˜  và�jŠj˜ÑÔ€GØ�jŠj˜ÑÔ€GØ�jŠj˜ÑÔ€GØ˜‰ Ñ'€HØ˜‰ Ñ&€HØ˜‰ Ñ&€Hå	„LØ�K×$Ò$ UÑ+Ô+Ò+ØeÐeÐeÐeÐeÐeñô ð õ 
„LØ�K×$Ò$ UÑ+Ô+Ò+ØfÐfÐfÐfÐfÐfñô ð õ 
„LØ�K×$Ò$ UÑ+Ô+Ò+ØeÐeÐeÐeÐeÐeñô ð ð
 �?Š?˜5œ;Ñ'Ô'Ð'r<   r,  Úpc                 ój  — t          j        |                      ¦   «         d„ ¦  «         |                      d¦  «        }|dk    r4|                      dg¦  «                             t           j        ¬¦  «        S |                      ||dz
  z  dz  f¦  «                             t           j        ¬¦  «        S )Nc                  ó   — dS )Nz(_pdist_forward requires contiguous inputr@   r@   r<   r:   r_   z%meta__pdist_forward.<locals>.<lambda>	  s   € Ð&P€ r<   r   r¬   ræ   r,  )rP   ra   r   rœ   r�   rb  r@  )r’   rq  rD  s      r:   Úmeta__pdist_forwardrt   	  s®   € õ 
„LØ×ÒÑÔÐPÐPñô ð ð 	�	Š	�!‰Œ€AØˆA‚v€vØ�~Š~˜q˜cÑ"Ô"×%Ò%µEÔ4RÐ%ÑSÔSÐSà�~Š~˜q A¨¡E™{¨aÑ/Ð1Ñ2Ô2×5Ò5ÝÔ8ð 6ñ 
ô 
ð 	
r<   ÚgradÚpdistc                 óâ   — t          j        |                     ¦   «         d„ ¦  «         t          j        |                     ¦   «         d„ ¦  «         t          j        |t           j        ¬¦  «        S )Nc                  ó   — dS )Nz._pdist_backward requires self to be contiguousr@   r@   r<   r:   r_   z&meta__pdist_backward.<locals>.<lambda>	  s   € Ð&V€ r<   c                  ó   — dS )Nz/_pdist_backward requires pdist to be contiguousr@   r@   r<   r:   r_   z&meta__pdist_backward.<locals>.<lambda>	  s   € Ð'X€ r<   ræ   )rP   ra   r   rê   r@  )ru  r’   rq  rv  s       r:   Úmeta__pdist_backwardrz  	  ss   € õ 
„LØ×ÒÑÔÐVÐVñô ð õ 
„LØ×ÒÑÔÐXÐXñô ð õ Ô˜DµÔ0NÐOÑOÔOÐOr<   )r‡  r†  c          
      óJ  ‡ ‡‡‡‡‡— ddl m}m} ‰                     d¦  «        }‰                     d¦  «        }‰                     d¦  «        }	 |t	          j         |‰ j        |||	f¦  «        ¦  «        ¦  «        r‰                      |||	f¦  «        Š t	          j        ‰ 	                    ¦   «         dk    d„ ¦  «         t	          j        ‰ 	                    ¦   «         dk    d„ ¦  «         t          j        s7t	          j        ‰ j        ‰j        cxk    o
‰j        k    nc ˆˆˆ fd„¦  «         ‰j        }
‰j        Š|
d         Š|
d         Št	          j        ‰d         ‰k    o‰d         ‰k    ˆˆˆfd	„¦  «         ‰                      ‰                      ¦   «         ¦  «        S )
Nr   )r¥   r¦   r¬   r,  r2   c                  ó   — dS ©Nzbatch1 must be a 3D tensorr@   r@   r<   r:   r_   zmeta_baddbmm.<locals>.<lambda>%	  ó   € Ð,H€ r<   c                  ó   — dS ©Nzbatch2 must be a 3D tensorr@   r@   r<   r:   r_   zmeta_baddbmm.<locals>.<lambda>&	  r~  r<   c                  ó8   •— d‰j         › d‰ j         › d‰j         › �S )Nz+Input dtypes must be the same, got: input: z
, batch1: z
, batch2: r‰   )Úbatch1Úbatch2r’   s   €€€r:   r_   zmeta_baddbmm.<locals>.<lambda>*	  s*   ø€ Ð~À$Ä*Ð~Ð~ÐX^ÔXdÐ~Ð~ÐpvÔp|Ð~Ð~€ r<   c            	      ó:   •— d‰› d‰› d‰ d         › d‰ d         › d�	S ©Nz@Expected size for first two dimensions of batch2 tensor to be: [rq   z] but got: [r   r¬   ú].r@   ©Úbatch2_sizesÚbsÚcontraction_sizes   €€€r:   r_   zmeta_baddbmm.<locals>.<lambda>2	  sY   ø€ ð[Øð[ð [Ø&ð[ð [Ø4@À´Oð[ð [ØGSÐTUÄð[ð [ð [ð r<   )r­   r¥   r¦   rœ   rP   Úsym_notr‘   r´  ra   r   Ú
exp_configÚ&skip_dtype_check_in_meta_registrationsrX   r�   )r’   r‚  rƒ  r‡  r†  r¥   r¦   Údim1Údim2Údim3Úbatch1_sizesrˆ  r‰  rŠ  s   ```        @@@r:   Úmeta_baddbmmr’  	  sÁ  øøøøøø€ ð LÐKÐKÐKÐKÐKÐKÐKà�;Š;�q‰>Œ>€DØ�;Š;�q‰>Œ>€DØ�;Š;�q‰>Œ>€DØ€}•U”] 6 6¨$¬*°t¸TÀ4Ð6HÑ#IÔ#IÑJÔJÑKÔKð /Ø�{Š{˜D $¨Ð-Ñ.Ô.ˆÝ	„L�—’‘” Ò"Ð$HÐ$HÑIÔIÐIÝ	„L�—’‘” Ò"Ð$HÐ$HÑIÔIÐIÝÔ<ð 
ÝŒØŒJ˜&œ,Ð6Ð6Ò6Ð6¨&¬,Ò6Ð6Ð6Ð6Ø~Ð~Ð~Ð~Ð~Ð~ñ	
ô 	
ð 	
ð ”<€LØ”<€LØ	�aŒ€BØ# A”ÐÝ	„LØ�QŒ˜2ÒÐE ,¨q¤/Ð5EÒ"Eð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð �>Š>˜$Ÿ)š)™+œ+Ñ&Ô&Ð&r<   c                óB   — t          j        | t           j        ¬¦  «        S rö   r¡  ©r’   rA  s     r:   Úmeta_bernoullir•  :	  s   € õ Ô˜DµÔ0GÐHÑHÔHÐHr<   ç      à?c                 ó   — | S r7   r@   ©r’   rq  rA  s      r:   Úmeta_bernoulli_r™  A	  ó   € à€Kr<   c                 óB   — t          j        | t           j        ¬¦  «        S rö   r¡  r˜  s      r:   Úmeta_bernoulli_prœ  F	  s   € õ Ô˜DµÔ0GÐHÑHÔHÐHr<   c                 ó*   — t          j        | ¦  «        S r7   ©rP   rê   r”  s     r:   Úmeta_poissonrŸ  L	  ó   € õ Ô˜DÑ!Ô!Ð!r<   c                 óÆ   — t          j        |
|                      ¦   «         k     d„ ¦  «         t          j        | t           j        ¬¦  «        }t          j        | ¦  «        |fS )Nc                  ó   — dS )NzJError in fused_moving_avg_obs_fake_quant_cpu: ch_axis must be < self.dim()r@   r@   r<   r:   r_   z6meta__fused_moving_avg_obs_fq_helper.<locals>.<lambda>d	  ó   € Ð\€ r<   r‰   )rP   ra   r   rê   r&  )r’   Úobserver_onÚfake_quant_onÚrunning_minÚrunning_maxÚscaleÚ
zero_pointÚaveraging_constÚ	quant_minÚ	quant_maxÚch_axisÚper_row_fake_quantÚsymmetric_quantÚmasks                 r:   Ú$meta__fused_moving_avg_obs_fq_helperr±  R	  s]   € õ  
„LØ�$—(’(‘*”*ÒØ\Ð\ñô ð õ Ô˜D­¬
Ð3Ñ3Ô3€DÝÔ˜TÑ"Ô" DÐ)Ð)r<   c                 óL  ‡‡‡‡— t          j        |                      ¦   «         dk    d„ ¦  «         t          j        |                     ¦   «         dk    d„ ¦  «         | j        \  ŠŠ|j        \  ŠŠt          j        ‰‰k    ˆˆˆˆfd„¦  «         |                      ‰‰¦  «        S )Nr,  c                  ó   — dS )Nza must be 2Dr@   r@   r<   r:   r_   zmeta_mm.<locals>.<lambda>m	  ó   €  ~€ r<   c                  ó   — dS )Nzb must be 2Dr@   r@   r<   r:   r_   zmeta_mm.<locals>.<lambda>n	  r´  r<   c            	      ó"   •— d‰› d‰ › d‰› d‰› d�	S )Nz/a and b must have same reduction dim, but got [rq   z] X [r†  r@   )ÚM1ÚM2ÚNrt  s   €€€€r:   r_   zmeta_mm.<locals>.<lambda>s	  s-   ø€ Ð[À!Ð[Ð[ÀrÐ[Ð[ÐPRÐ[Ð[ÐVWÐ[Ð[Ð[€ r<   )rP   ra   r   r‘   r�   )rÆ   Úbr·  r¸  r¹  rt  s     @@@@r:   Úmeta_mmr»  j	  s¨   øøøø€ õ 
„L�—’‘”˜A’Ð5Ð5Ñ6Ô6Ð6Ý	„L�—’‘”˜A’Ð5Ð5Ñ6Ô6Ð6ØŒG�E€A€rØŒG�E€BˆÝ	„LØ
ˆbŠØ[Ð[Ð[Ð[Ð[Ð[Ð[ñô ð ð �;Š;�q˜!ÑÔÐr<   c                 óš   ‡ ‡— |r.t          ˆˆ fd„t          ‰ j        ¦  «        D ¦   «         ¦  «        S t          j        ‰ j        ‰¦  «        S )Nc              3   ó>   •K  — | ]}|‰vr‰j         |         nd V — ŒdS )r¬   NrÍ   )rF   r  Údimsr’   s     €€r:   rm   z+_compute_reduction_shape.<locals>.<genexpr>z	  s5   øè è € ÐUÐU¸q a¨t m m�T”Z ”]�]¸ÐUÐUÐUÐUÐUÐUr<   )r`   r±   rž   rJ   Úcompute_reduction_output_shaper‘   )r’   r¾  rÂ  s   `` r:   rÀ  rÀ  x	  sR   øø€ Øð VÝÐUÐUÐUÐUÐUÅEÈ$Ì)ÑDTÔDTÐUÑUÔUÑUÔUÐUåÔ/°´
¸DÑAÔAÐAr<   Ústrc                 óÞ   — t          | t          j        j        ¦  «        r| j        j        S t          | d¦  «        r1t          | j        d¦  «        r| j        j        dk    r| j        j        S dS )Nr|   rs   ry   r0  )rj   rP   Ú_subclassesÚ
FakeTensorÚfake_devicers   Úhasattrr|   )rl  s    r:   r4  r4  ƒ	  sn   € Ý�&�%Ô+Ô6Ñ7Ô7ð 	ØÔ!Ô&Ð&å�˜Ñ!Ô!ðå�F”M 6Ñ*Ô*ðð ŒMÔ &Ò(Ð(àŒ}Ô!Ð!àˆvr<   Úinput_tensorrÅ   rÿ  ÚdilationÚis_transposedÚgroupsÚoutput_paddingc                 ó>  ‡‡— dt           dt           dt           dt           dt           dt           fd„}dt           dt           dt           dt           dt           dt           dt           fd	„}	|j        d
d …         }
| j        d
d …         Š|r||j        d         z  }n;|j        d         }|j        d         |z  | j        d         k    rt          d¦  «        ‚| j        d         |gŠt          |t          ¦  «        r|gt          ‰¦  «        z  }n,t          |¦  «        dk    r|d         gt          ‰¦  «        z  }t          |t          ¦  «        r|gt          ‰¦  «        z  }n,t          |¦  «        dk    r|d         gt          ‰¦  «        z  }t          |t          ¦  «        r|gt          ‰¦  «        z  }n,t          |¦  «        dk    r|d         gt          ‰¦  «        z  }d }|rXt          |t          ¦  «        r|gt          ‰¦  «        z  }n/t          |¦  «        dk    r|d         gt          ‰¦  «        z  }n|}t          t          ‰¦  «        ¦  «        D ]Œ}|rH‰                      |	‰|         ||         ||         |
|         ||         ||         ¦  «        ¦  «         ŒL‰                      |‰|         ||         ||         |
|         ||         ¦  «        ¦  «         Œ�t          j	        t          d„ ‰d
d …         D ¦   «         ¦  «        ˆˆfd„¦  «         ‰S )NÚlnrq  r  rš  rÂ   r3   c                 ó6   — | d|z  z   ||dz
  z  z
  dz
  |z  dz   S )a�  
        Formula to apply to calculate the length of some dimension of the output

        See: https://pytorch.org/docs/stable/generated/torch.nn.Conv2d.html

        Args:
            ln: length of the dimension
            p: padding in that dim
            d: dilation in that dim
            k: kernel size in that dim
            s: stride in that dim
        Returns:
            The output length
        r,  r¬   r@   )rÌ  rq  r  rš  rÂ   s        r:   Ú_formulaz+calc_conv_nd_return_shape.<locals>._formulaš	  s.   € ð �Q˜‘U‘
˜Q ! a¡%™[Ñ(¨1Ñ,°Ñ2°QÑ6Ð6r<   r8   c                 ó<   — | dz
  |z  d|z  z
  ||dz
  z  z   |z   dz   S )aü  
        Formula to apply to calculate the length of some dimension of the output
        if transposed convolution is used.
        See: https://pytorch.org/docs/stable/generated/torch.nn.ConvTranspose2d.html

        Args:
            ln: length of the dimension
            p: padding in that dim
            d: dilation in that dim
            k: kernel size in that dim
            s: stride in that dim
            op: output padding in that dim

        Returns:
            The output length
        r¬   r,  r@   )rÌ  rq  r  rš  rÂ   r8   s         r:   Ú_formula_transposedz6calc_conv_nd_return_shape.<locals>._formula_transposed«	  s2   € ð" �Q‘˜!‰|˜a !™eÑ# a¨1¨q©5¡kÑ1°BÑ6¸Ñ:Ð:r<   r,  r¬   r   zInvalid channel dimensionsc              3   ó"   K  — | ]
}|d k    V — ŒdS ©r   Nr@   r¿  s     r:   rm   z,calc_conv_nd_return_shape.<locals>.<genexpr>ó	  s&   è è € Ð)Ð)�aˆA�ŠEÐ)Ð)Ð)Ð)Ð)Ð)r<   c                  ó@   •— dt          ‰ ¦  «        › d‰dd …         › d�S )NzGiven input size per channel: z&. Calculated output size per channel: r,  z. Output size is too small)r  )r¾  Ú	ret_shapes   €€r:   r_   z+calc_conv_nd_return_shape.<locals>.<lambda>ô	  s6   ø€ ð $µ°d±´ð $ð $Ø/8¸¸¸¬}ð$ð $ð $€ r<   )r"  r‘   ra  rj   r   r®   r±   r  rP   ra   r€   )rÆ  rt  rÅ   rÿ  rÇ  rÈ  rÉ  rÊ  rÎ  rÐ  Úkernel_sizeÚout_channelsÚoutput_padding_listr  r¾  rÔ  s                 @@r:   Úcalc_conv_nd_return_shaperØ  �	  s�  øø€ ð7•Sð 7�Sð 7¥Sð 7­Sð 7µSð 7½Sð 7ð 7ð 7ð 7ð";¥ð ;­ð ;µð ;½ð ;Åð ;Íð ;ÕQTð ;ð ;ð ;ð ;ð& ”,˜q˜r˜rÔ"€KØÔ˜a˜b˜bÔ!€DØð =Ø ¤¨Q¤Ñ/ˆˆà”| A”ˆØŒ<˜Œ?˜VÑ# |Ô'9¸!Ô'<Ò<Ð<ÝÐ;Ñ<Ô<Ð<àÔ# AÔ&¨Ð5€IÝ�&�'Ñ"Ô"ð )Ø��C ™IœIÑ%ˆˆÝ	ˆV‰Œ˜Ò	Ð	Ø˜”)��s 4™yœyÑ(ˆå�'�7Ñ#Ô#ð +Ø�)�c $™iœiÑ'ˆˆÝ	ˆW‰Œ˜Ò	Ð	Ø˜1”:�,¥ T¡¤Ñ*ˆå�(�GÑ$Ô$ð -Ø�:¥ D¡	¤	Ñ)ˆˆÝ	ˆX‰Œ˜!Ò	Ð	Ø˜Q”K�=¥3 t¡9¤9Ñ,ˆà/3ÐØð 1Ý�n¥gÑ.Ô.ð 	1Ø#1Ð"2µS¸±Y´YÑ">ÐÐÝ�Ñ Ô  AÒ%Ð%Ø#1°!Ô#4Ð"5½¸D¹	¼	Ñ"AÐÐà"0Ðå•3�t‘9”9ÑÔð ð ˆàð 	Ø×ÒØ#Ð#Ø˜”GØ˜A”JØ˜Q”KØ ”NØ˜1”IØ'¨Ô*ñô ñ	ô 	ð 	ð 	ð ×ÒØ�˜˜aœ '¨!¤*¨h°q¬k¸;Àq¼>È6ÐRSÌ9ÑUÔUñô ð ð õ 
„LÝÐ)Ð)˜9 Q R Rœ=Ð)Ñ)Ô)Ñ)Ô)ð	$ð 	$ð 	$ð 	$ð 	$ñô ð ð Ðr<   c                 ó\   — t           j                             | ¦  «        t           j        k    S r7   ©rP   Ú_prims_commonr"   Úchannels_last©Útens    r:   Úis_channels_lastrß  ü	  s!   € ÝÔ×4Ò4°SÑ9Ô9½UÔ=PÒPÐPr<   Úrunning_meanÚrunning_varÚtrainingÚexponential_average_factorÚepsilonc                 óv  ‡ — ‰ j         }|�|j         n|j         }	|�|j         n|j         }
ˆ fd„}‰                      |¦  «                              |¦   «         ¬¦  «        }|r+‰                      |	¦  «        }‰                      |
¦  «        }n*‰                      d¦  «        }‰                      d¦  «        }|||fS )Nc                  óª   •— t          ‰ ¦  «        rt          j        S ‰                      t          j        ¬¦  «        rt          j        S t          j        S rö   )rß  rP   rÜ  r   rë   )rÆ  s   €r:   Úpick_memory_formatz2meta_miopen_batch_norm.<locals>.pick_memory_format
  sJ   ø€ Ý˜LÑ)Ô)ð 	'ÝÔ&Ð&Ø×%Ò%µEÔ4KÐ%ÑLÔLð 	+ÝÔ*Ð*ÝÔ&Ð&r<   ræ   r  )r‘   r�   rb  )rÆ  rt  rv  rà  rá  râ  rã  rä  r¡   Úsave_mean_shapeÚsave_var_shaperç  r  Ú	save_meanÚsave_vars   `              r:   Úmeta_miopen_batch_normrì   
  sã   ø€ ð Ô"€Ið -9Ð,D�lÔ(Ð(È&Ì,€OØ*5Ð*A�[Ô&Ð&ÀvÄ|€Nð'ð 'ð 'ð 'ð 'ð ×
 Ò
  Ñ
+Ô
+×
.Ò
.Ð=OÐ=OÑ=QÔ=QÐ
.Ñ
RÔ
R€Càð 0Ø ×*Ò*¨?Ñ;Ô;ˆ	Ø×)Ò)¨.Ñ9Ô9ˆˆà ×*Ò*¨4Ñ0Ô0ˆ	Ø×)Ò)¨$Ñ/Ô/ˆà�	˜8Ð#Ð#r<   c	           
      óô   ‡ ‡— ˆ ˆfd„}	t          ‰ ‰||||||r|nd ¦  «        }
d}d}‰                      |¦  «        dk    rd|
|<   ‰                      |
¦  «        }|                      |	¦   «         ¬¦  «        }|S )Nc                  ój  •— t          ‰ ¦  «        dk    r+t          ‰ ¦  «        st          ‰¦  «        rt          j        S nt          ‰ ¦  «        rt          j        S ‰                      t          j        ¬¦  «        rt          j        S ‰                      t          j        ¬¦  «        rt          j        S d S ©Nr0  ræ   )r4  rß  rP   rÜ  r   rë   Úpreserve_format)rÆ  rt  s   €€r:   rç  z%meta_conv.<locals>.pick_memory_format2
  s³   ø€ Ý�|Ñ$Ô$¨Ò.Ð.Ý Ñ-Ô-ð +Õ1AÀ&Ñ1IÔ1Ið +ÝÔ*Ð*ð+õ   Ñ-Ô-ð +ÝÔ*Ð*Ø×%Ò%µEÔ4KÐ%ÑLÔLð 	)ÝÔ*Ð*Ø×'Ò'µeÔ6KÐ'ÑLÔLð 	)ÝÔ(Ð(ð	)ð 	)r<   r¬   r   ræ   )rØ  rœ   r�   rb  )rÆ  rt  rv  rÅ   rÿ  rÇ  rÈ  rÊ  rÉ  rç  Ú	shape_outÚinput_channels_dimÚoutput_channels_dimr  s   ``            r:   Ú	meta_convrô  &
  s¼   øø€ ð
)ð 
)ð 
)ð 
)ð 
)ð 
)õ *ØØØØØØØØ'Ð1ˆˆ¨Tñ	ô 	€Ið ÐØÐØ×ÒÐ+Ñ,Ô,°Ò1Ð1Ø)*ˆ	Ð%Ñ&à
×
 Ò
  Ñ
+Ô
+€CØ
�&Š&Ð1Ð1Ñ3Ô3ˆ&Ñ
4Ô
4€CØ€Jr<   Úmkldnnc
           
      óè   — t          | ||||d|g ¦  «        }
|                      |
¦  «        }t          j        }|                      ¦   «         dk    rt          j        }|                     |¬¦  «        }|S )NFrX  ræ   )rØ  r�   rP   rÜ  r   Úchannels_last_3drb  )rÆ  rt  rv  rÿ  rÅ   rÇ  rÉ  ÚattrÚscalarsÚ	algorithmrñ  r  Úout_memory_formats                r:   Úmeta_mkldnn_convolution_defaultrü  X
  s{   € õ .Ø˜& &¨'°8¸UÀFÈBñ
ô 
ˆ	ð ×$Ò$ YÑ/Ô/ˆÝ!Ô/ÐØ×ÒÑÔ Ò"Ð"Ý %Ô 6ÐØ�fŠfÐ#4ˆfÑ5Ô5ˆØˆ
r<   c                 óf   — |                       g | j        d d…         ¢|j        d         ‘R ¦  «        S ©Nr”   r   ©r�   r‘   )rÆ  rt  rv  rø  rù  rú  s         r:   Úmeta_linear_pointwise_defaultr   o
  s8   € ð ×%Ò%Ð&Q¨Ô(:¸3¸B¸3Ô(?Ð&QÀÄÈaÄÐ&QÐ&QÑRÔRÐRr<   Úmklc                 óf   — |                       g | j        d d…         ¢|j        d         ‘R ¦  «        S rþ  rÿ  )rÆ  Úpacked_weightÚorig_weightrv  r  s        r:   Úmeta_mkl_linearr  z
  s>   € à×)Ò)Ø@�,Ô$ S b SÔ)Ð@¨;Ô+<¸QÔ+?Ð@Ð@ñô ð r<   Úonednnc           
      ó|  — t          | ||||	d|
d ¦  «        }|t          j        t          j        t          j        t          j        fv sJ ‚|                      ||¬¦  «        }t          |¦  «        dv s
J d¦   «         ‚t          |¦  «        dk    rt          j        nt          j	        }| 
                    |¬¦  «        }|S )NFr‰   ©r2   r<  zonly conv1d/2d are supportedr<  ræ   )rØ  rP   r”  r–  Úuint8r{  r�   r®   rÜ  rë   rb  )rG   Úx_scaleÚx_zpÚwÚw_scaleÚw_zprv  rÅ   rÿ  rÇ  rÉ  Úoutput_scaleÚoutput_zero_pointÚoutput_dtyperø  rù  rú  rñ  r  Úformats                       r:   Úmeta_qconv_pointwiser  „
  s¼   € õ* .ØØØØØØØØñ	
ô 	
ˆ	ð ¥¤­u¬~½u¼{ÍEÌJÐWÐWÐWÐWÐWØ�kŠk˜)¨<ˆkÑ8Ô8ˆÝ�9‰~Œ~ Ð'Ð'Ð'Ð)GÑ'Ô'Ð'Ý(+¨I©¬¸!Ò(;Ð(;•Ô$Ð$ÅÔAXˆØ�fŠf 6ˆfÑ*Ô*ˆØˆ
r<   c                 ó   — |dk    sJ ‚|S )NÚsumr@   )rG   r
  r  r  r  r  Úaccumrv  rÅ   rÿ  rÇ  rÉ  r  r  r  Úaccum_scaleÚaccum_zero_pointÚbinary_op_namer†  Úunary_op_nameÚunary_op_argsÚunary_op_algorithms                         r:   Úmeta_qconv2d_pointwise_binaryr  ª
  s   € ð2  Ò&Ð&Ð&Ð&Øˆr<   c                 óà   — t          | j        ¦  «        }|j        d         |d<   |	t          j        t          j        t          j        t          j        fv sJ ‚|                      ||	¬¦  «        }|S )Nr¬   r”   r‰   )r  r‘   rP   r”  r–  r{  r	  r�   )rG   r
  r  r  r  r  rv  r  r  r  Úpost_op_nameÚpost_op_argsÚpost_op_algorithmrœ  r  s                  r:   Úmeta_qlinear_pointwiser"  Æ
  s]   € õ" ˜AœG‘}”}ˆàœ7 1œ:ˆ�RÑØ¥¤­u¬~½u¼zÍ5Ì;ÐWÐWÐWÐWÐWØ�kŠk˜,¨lˆkÑ;Ô;ˆØˆ
r<   c                 óð   — |dk    r|S t          | j        ¦  «        }|j        d         |d<   |
t          j        t          j        t          j        t          j        fv sJ ‚|                      ||
¬¦  «        }|S )Nr  r¬   r”   r‰   )r  r‘   rP   r”  r–  r	  r{  r�   )rG   r
  r  r  r  r  Úx_2rv  r  r  r  Úx2_scaleÚx2_zpr  r†  r  r  r  rœ  r  s                       r:   Úmeta_qlinear_pointwise_binaryr'  Þ
  sm   € ð, ˜UÒ"Ð"ØˆJÝ˜AœG‘}”}ˆàœ7 1œ:ˆ�RÑØ¥¤­u¬~½u¼{ÍEÌJÐWÐWÐWÐWÐWØ�kŠk˜,¨lˆkÑ;Ô;ˆØˆ
r<   c                 óx   — t          | j        ¦  «        }|j        d         |d<   |                      |¦  «        }|S )Nr¬   r”   )r  r‘   r�   )rG   r  rv  rœ  r  s        r:   Úmeta_linear_dynamic_fp16r)  ý
  s7   € õ ˜AœG‘}”}ˆàœ7 1œ:ˆ�RÑØ�kŠk˜,Ñ'Ô'ˆØˆ
r<   Ú	quantizedr@   r  ©r¬   c                 ó4  — t          | |||||¦  «        \  }}}|                      ¦   «         dk    r|                      d¦  «        nd}	t          j        }
|                      ¦   «         dk    r|||g}n|	|||g}t          j        || j        | j        |
¬¦  «        S ©Nr<  éüÿÿÿr¬   r2   r²  )Ú#max_pool2d_checks_and_compute_shaper   rœ   rP   rÜ  r„   rX   r|   ©r  rÕ  rÅ   rÿ  rÇ  Ú	ceil_modeÚnInputPlaneÚoutputHeightÚoutputWidthr  rç   rœ   s               r:   Úmeta_quantized_max_pool2dr5    s³   € õ 0Ø�; ¨°¸9ñ
ô 
ñ		
ØØØð $)§9¢9¡;¤;°!Ò#3Ð#3�—’˜B‘”�¸ˆÝÔ+ˆØ�9Š9‰;Œ;˜!ÒÐØ ¨{Ð;ˆDˆDà˜K¨°{ÐCˆDÝŒ{ØØ”+Ø”<Ø'ð	
ñ 
ô 
ð 	
r<   c                 ó,  — t          j        |                      ¦   «         dk    d|                      ¦   «         › d�¦  «         t          j        |                     ¦   «         dk    d|                     ¦   «         › d�¦  «         t          j        | j        t           j        t           j        t           j        fv d| j        › �¦  «         t          j        |j        t           j        k    d|j        › �¦  «         t          j        |j        t           j        k    d|j        › �¦  «         t          j        |j        | j        k    d|j        › �¦  «         |  	                    |  
                    d	¦  «        | 
                    d	¦  «        | j        ¬
¦  «        S )Nr,  zx must be a 2D tensor, got ÚDzw must be a 2D tensor, got ú#expected x to be f32/f16/bf16, got úexpected w to be uint8, got z q_group_size must be int64, got z5q_scale_and_zeros must have the same dtype as x, got r   r‰   )rP   ra   r   rX   r”  r•  r–  r	  rò   r�   rœ   ©rG   r  Úq_group_sizeÚq_scale_and_zeross       r:   Úmeta_int4mm_packed_weight_cpur=  +  sW  € åŒ�Q—U’U‘W”W ’\Ð#KÀÇÂÁÄÐ#KÐ#KÐ#KÑLÔLÐLÝŒ�Q—U’U‘W”W ’\Ð#KÀÇÂÁÄÐ#KÐ#KÐ#KÑLÔLÐLÝŒØŒG�œ¥u¤}µe´nÐEÐEØ;°!´'Ð;Ð;ñ	
ô 	
ð 	
õ 	Œ�Q”W¥¤Ò+Ð-UÈAÌGÐ-UÐ-UÑVÔVÐVÝŒØÔ¥%¤+Ò-ØC¨|Ô/AÐCÐCñ	
ô 	
ð 	
õ 	ŒØÔ# q¤wÒ.Ø]ÐDUÔD[Ð]Ð]ñ	
ô 	
ð 	
ð �{Š{˜1Ÿ6š6 !™9œ9 a§f¢f¨Q¡i¤i°q´wˆ{Ñ?Ô?Ð?r<   c                 ó’   ‡ ‡‡‡— t          j        ‰                      ¦   «         ‰k    o‰ j        ‰         ‰k    ˆˆˆˆ fd„¦  «         d S )Nc                  ón   •— d‰ › d‰› d‰› d�d‰                      ¦   «         › d‰› d‰j        ‰         › �z   S )NzExpected a tensor of dimension z and tensor.size[z] == rq   zbut got : dimension z] = ©r   r‘   )r   Údim_sizerœ   rl  s   €€€€r:   r_   z check_dim_size.<locals>.<lambda>C  sU   ø€ Ð_°#Ð_Ð_ÈÐ_Ð_ÐW[Ð_Ð_Ð_Ø
f §¢¡¤Ð
fÐ
fÀÐ
fÐ
fÈfÌlÐ[cÔNdÐ
fÐ
fñg€ r<   )rP   ra   r   r‘   )rl  r   rA  rœ   s   ````r:   Úcheck_dim_sizerB  @  so   øøøø€ Ý	„LØ�
Š
‰Œ˜ÒÐ> ¤¨XÔ 6¸$Ò >ð	gð 	gð 	gð 	gð 	gð 	gð 	gñô ð ð ð r<   c                 ó  ‡ — d„ } |d|¦  «        \  }}	t          j        t          |¦  «        dv d„ ¦  «         t          j        ‰ j        t           j        t           j        t           j        t           j        fvˆ fd„¦  «         t          |¦  «        dk    r||	}}
n3t          |¦  «        dk    r|d         |d         }}
n |d|¦  «        \  }
} |d	|¦  «        \  }}t          j        |d u p|dk    d
„ ¦  «         ‰                      ¦   «         dk    r‰  	                    d¦  «        nd}‰  	                    d¦  «        }‰  	                    d¦  «        }‰  	                    d¦  «        }t          ||||
d|¦  «        }t          ||	||d|¦  «        }t          j        ‰ ¦  «        }t          ‰ ||	|
|||dd||||||¦  «         ‰                      ¦   «         dk    r|||g}n||||g}t          j        |‰ j        ‰ j        |¬¦  «        S )Nc                 ó¤   ‡ — t          j        t          |¦  «        dv ˆ fd„¦  «         |d         }t          |¦  «        dk    r|n|d         }||fS )N©r¬   r,  c                  ó   •— d‰ › d�S )Nzavg_pool2d: ú4 must either be a single int, or a tuple of two intsr@   ©rø  s   €r:   r_   z1meta_avg_pool2d.<locals>.unpack.<locals>.<lambda>U  ó   ø€ Ð] 4Ð]Ð]Ð]€ r<   r   r¬   ©rP   ra   r®   ©rø  rÔ  ÚHÚWs   `   r:   Úunpackzmeta_avg_pool2d.<locals>.unpackR  ó`   ø€ ÝŒÝ�‰HŒH˜ÐØ]Ð]Ð]Ð]ñ	
ô 	
ð 	
ð �ŒFˆÝ�S‘”˜Q’�ˆAˆA C¨¤FˆØ�!ˆtˆr<   rÕ  ©r   r¬   r,  c                  ó   — dS ©NzOavg_pool2d: stride must either be omitted, a single int, or a tuple of two intsr@   r@   r<   r:   r_   z!meta_avg_pool2d.<locals>.<lambda>^  ó   € Ða€ r<   c                  ó>   •— d‰ j                              ¦   «         › d�S )Nz""avg_pool2d" not implemented for 'r!  r"  r$  s   €r:   r_   z!meta_avg_pool2d.<locals>.<lambda>b  ó!   ø€ ÐQ°u´{×7JÒ7JÑ7LÔ7LÐQÐQÐQ€ r<   r   r¬   rÅ   rÿ  c                  ó   — dS ©Nzdivisor must be not zeror@   r@   r<   r:   r_   z!meta_avg_pool2d.<locals>.<lambda>o  ó   € Ð*€ r<   r<  r.  éýÿÿÿrô  r”   r2   r²  )rP   ra   r®   rX   r	  Úuint16Úuint32Úuint64r   rœ   Úpooling_output_shaperJ   r"   Úpool2d_shape_checkr„   r|   )r  rÕ  rÅ   rÿ  r1  Úcount_include_padÚdivisor_overriderN  ÚkHÚkWÚdHÚdWÚpadHÚpadWr  r2  ÚinputHeightÚ
inputWidthr3  r4  rç   rœ   s   `                     r:   Úmeta_avg_pool2dri  H  sR  ø€ ðð ð ð ˆV�M ;Ñ/Ô/�F€BˆÝ	„LÝˆF‰Œ�yÐ ØaÐañô ð õ 
„LØŒ�EœK­¬µu´|ÅUÄ\ÐRÐRØQÐQÐQÐQñô ð õ ˆ6�{„{�aÒÐØ�RˆBˆˆÝ	ˆV‰Œ˜Ò	Ð	Ø˜”˜F 1œIˆBˆˆà�˜ &Ñ)Ô)‰ˆˆBà�˜	 7Ñ+Ô+�J€Dˆ$å	„LØ˜DÐ Ð9Ð$4¸Ò$9Ø*Ð*ñô ð ð
  %Ÿyšy™{œ{¨aÒ/Ð/ˆU�ZŠZ˜‰^Œ^ˆ^°Q€FØ—*’*˜R‘.”.€KØ—*’*˜R‘.”.€KØ—’˜B‘”€Jå'¨°R¸¸rÀ1ÀiÑPÔP€LÝ& z°2°t¸RÀÀIÑNÔN€KåÔ/°Ñ6Ô6€MÝØØ
Ø
Ø
Ø
ØØØ	Ø	ØØØØØØñô ð ð$ ‡y‚y�{„{�aÒÐØ˜\¨;Ð7ˆˆà˜ \°;Ð?ˆÝŒ;ØØŒkØŒ|Ø#ð	ñ ô ð r<   c                 óê   — t          | ||||||dd|	|
||||¦  «         |                      ¦   «         }|	}t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         d S )Nr¬   r2   r,  )r^  r   rB  )r  Ú
gradOutputr  ra  rb  rc  rd  re  rf  r2  rg  rh  r3  r4  Ú
mem_formatrž   ÚnOutputPlanes                    r:   Úavg_pool2d_backward_shape_checkrn  š  s¥   € õ" ØØ
Ø
Ø
Ø
ØØØ	Ø	ØØØØØØñô ð ð$ �9Š9‰;Œ;€DØ€Lå�:˜t T¨A¡X¨|Ñ<Ô<Ð<Ý�:˜t T¨A¡X¨|Ñ<Ô<Ð<Ý�:˜t T¨A¡X¨{Ñ;Ô;Ð;Ð;Ð;r<   c                 ój  — t          j        t          |¦  «        dk    pt          |¦  «        dk    d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }	t          j        t          |¦  «        dk    p%t          |¦  «        dk    pt          |¦  «        dk    d„ ¦  «         t          |¦  «        dk    r|n|d         }
t          |¦  «        dk    r|	nt          |¦  «        dk    r|
n|d         }t          j        t          |¦  «        dk    pt          |¦  «        dk    d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          j        |d u p|dk    d„ ¦  «         |j        }|                     ¦   «         dk    r|d	         nd}|d
         }|d         }|d         }t          ||||
d|¦  «        }t          ||	||d|¦  «        }t          j        |¦  «        }t          || |||	|
|||||||||¦  «         t          j	        ||j
        |j        |¬¦  «        S )Nr¬   r,  c                  ó   — dS )NzKavg_pool2d: kernel_size must either be a single int, or a tuple of two intsr@   r@   r<   r:   r_   z*meta_avg_pool2d_backward.<locals>.<lambda>Ô  s   € Ð]€ r<   r   c                  ó   — dS rR  r@   r@   r<   r:   r_   z*meta_avg_pool2d_backward.<locals>.<lambda>Ú  rS  r<   c                  ó   — dS )NzGavg_pool2d: padding must either be a single int, or a tuple of two intsr@   r@   r<   r:   r_   z*meta_avg_pool2d_backward.<locals>.<lambda>à  s   € ÐY€ r<   c                  ó   — dS rW  r@   r@   r<   r:   r_   z*meta_avg_pool2d_backward.<locals>.<lambda>ç  rX  r<   r<  r.  rY  rô  r”   r²  )rP   ra   r®   r‘   r   r]  rJ   r"   rn  r„   rX   r|   )ÚgradOutput_r  rÕ  rÅ   rÿ  r1  r_  r`  ra  rb  rc  rd  re  rf  Ú
input_sizer  r2  rg  rh  r3  r4  rl  s                         r:   Úmeta_avg_pool2d_backwardrv  Æ  sz  € õ 
„LÝˆKÑÔ˜AÒÐ6¥ [Ñ!1Ô!1°QÒ!6Ø]Ð]ñô ð ð 
�QŒ€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€BÝ	„LÝˆF‰Œ�qÒÐ@�C ™KœK¨1Ò,Ð@µ°F±´¸qÒ0@ØaÐañô ð õ �6‰{Œ{˜aÒÐˆˆ V¨A¤Y€BÝ�6‰{Œ{˜aÒÐˆˆ­3¨v©;¬;¸!Ò+;Ð+; R RÀÈÄ€BÝ	„LÝˆG‰Œ˜ÒÐ.�S ™\œ\¨QÒ.ØYÐYñô ð ð �1Œ:€DÝ�w‘<”< 1Ò$Ð$ˆ4ˆ4¨'°!¬*€Då	„LØ˜DÐ Ð9Ð$4¸Ò$9Ø*Ð*ñô ð ð
 ”€JØ$Ÿyšy™{œ{¨aÒ/Ð/ˆZ˜Œ^ˆ^°Q€FØ˜R”.€KØ˜R”.€KØ˜B”€Jå'¨°R¸¸rÀ1ÀiÑPÔP€LÝ& z°2°t¸RÀÀIÑNÔN€KåÔ,¨UÑ3Ô3€Jå#ØØØØ
Ø
Ø
Ø
ØØØØØØØØñô ð õ$ Œ;ØØŒkØŒ|Ø ð	ñ ô ð r<   c                 ó¦  ‡ — t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }	t          j        | pt          |¦  «        dv d„ ¦  «         t          j        ‰ j        t           j        t           j        t           j        t           j        fvˆ fd„¦  «         |s|n|d         }
|s|nt          |¦  «        dk    r|
n|d         }|s|	nt          |¦  «        dk    r|
n|d         }t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        ‰ j        d	v d
„ ¦  «         t          j        | p|dk    d„ ¦  «         ‰  	                    d¦  «        }‰  	                    d¦  «        }‰  	                    d¦  «        }‰  	                    d¦  «        }‰  	                    d¦  «        }t          ||||
d|¦  «        }t          ||||d|¦  «        }t          ||	||d|¦  «        }t          ‰ ||||	|
|||||ddd||||||dd¬¦  «         ‰ j        dk    r‰                      ||||f¦  «        S ‰                      |||||f¦  «        S )N©r¬   r2   c                  ó   — dS ©NzFavg_pool3d: kernel_size must be a single int, or a tuple of three intsr@   r@   r<   r:   r_   z!meta_avg_pool3d.<locals>.<lambda>  ó   € ÐX€ r<   r   r¬   r,  c                  ó   — dS ©NzJavg_pool3d: stride must be omitted, a single int, or a tuple of three intsr@   r@   r<   r:   r_   z!meta_avg_pool3d.<locals>.<lambda>$  r£  r<   c                  ó>   •— d‰ j                              ¦   «         › d�S )Nz""avg_pool3d" not implemented for 'r!  r"  r$  s   €r:   r_   z!meta_avg_pool3d.<locals>.<lambda>(  rU  r<   c                  ó   — dS ©NzBavg_pool3d: padding must be a single int, or a tuple of three intsr@   r@   r<   r:   r_   z!meta_avg_pool3d.<locals>.<lambda>0  ó   € ÐT€ r<   ©r<  rX  c                  ó   — dS ©Nz9non-empty 4D or 5D (batch mode) tensor expected for inputr@   r@   r<   r:   r_   z!meta_avg_pool3d.<locals>.<lambda>8  ó   € ÐK€ r<   c                  ó   — dS rW  r@   r@   r<   r:   r_   z!meta_avg_pool3d.<locals>.<lambda>=  rX  r<   r.  rY  rô  r”   zavg_pool3d()T)Úcheck_input_sizer<  )rP   ra   r®   rX   r	  rZ  r[  r\  rž   rœ   r]  Úpool3d_shape_checkr�   )r  rÕ  rÅ   rÿ  r1  r_  r`  ÚkTra  rb  ÚdTrc  rd  ÚpadTre  rf  r  ÚnslicesÚitimeÚiheightÚiwidthÚotimeÚoheightÚowidths   `                       r:   Úmeta_avg_pool3dr“    s2  ø€ õ 
„LÝˆKÑÔ˜FÐ"ØXÐXñô ð ð 
�QŒ€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€Bå	„LØˆ
Ð+•c˜&‘k”k VÐ+Ø\Ð\ñô ð õ 
„LØŒ�EœK­¬µu´|ÅUÄ\ÐRÐRØQÐQÐQÐQñô ð ð Ð	(ˆˆ˜v aœy€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€Bå	„LÝˆG‰Œ˜ÐØTÐTñô ð ð �1Œ:€DÝ�w‘<”< 1Ò$Ð$ˆ4ˆ4¨'°!¬*€DÝ�w‘<”< 1Ò$Ð$ˆ4ˆ4¨'°!¬*€Då	„LØŒ
�fÐØKÐKñô ð õ
 
„LØÐÐ5Ð 0°AÒ 5Ø*Ð*ñô ð ð
 �ZŠZ˜‰]Œ]€FØ�jŠj˜‰nŒn€GØ�JŠJ�r‰NŒN€EØ�jŠj˜‰nŒn€GØ�ZŠZ˜‰^Œ^€Få  ¨¨D°"°a¸ÑCÔC€EÝ" 7¨B°°b¸!¸YÑGÔG€GÝ! &¨"¨d°B¸¸9ÑEÔE€FåØØØ
Ø
Ø
Ø
Ø
Ø
ØØØØ	Ø	Ø	ØØØØØØØØð-ñ ô ð ð2 „z�Q‚€Ø�Š ¨°¸Ð@ÑAÔAÐAà�Š ¨°¸ÀÐHÑIÔIÐIr<   c                 ó”  — t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }	t          |¦  «        dk    r|n|d         }
t          j        | pt          |¦  «        dv d„ ¦  «         |s|n|d         }|s|	nt          |¦  «        dk    r|n|d         }|s|
nt          |¦  «        dk    r|n|d         }t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        |j        dv d	„ ¦  «         t          j        | p|dk    d
„ ¦  «         |                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }t          ||||d|¦  «        }t          ||	||d|¦  «        }t          ||
||d|¦  «        }t          || |||	|
||||||||||||d¦  «         |                     |j        ¦  «        S )Nrx  c                  ó   — dS rz  r@   r@   r<   r:   r_   z*meta_avg_pool3d_backward.<locals>.<lambda>w  r{  r<   r   r¬   r,  c                  ó   — dS r}  r@   r@   r<   r:   r_   z*meta_avg_pool3d_backward.<locals>.<lambda>  r£  r<   c                  ó   — dS r€  r@   r@   r<   r:   r_   z*meta_avg_pool3d_backward.<locals>.<lambda>‡  r�  r<   r‚  c                  ó   — dS r„  r@   r@   r<   r:   r_   z*meta_avg_pool3d_backward.<locals>.<lambda>�  r…  r<   c                  ó   — dS rW  r@   r@   r<   r:   r_   z*meta_avg_pool3d_backward.<locals>.<lambda>”  rX  r<   r.  rY  rô  r”   zavg_pool3d_backward())	rP   ra   r®   rž   rœ   r]  Úavg_pool3d_backward_shape_checkr�   r‘   )r0  r  rÕ  rÅ   rÿ  r1  r_  r`  r‰  ra  rb  rŠ  rc  rd  r‹  re  rf  rŒ  r�  rŽ  r�  Úotime_for_shape_checkÚoheight_for_shape_checkÚowidth_for_shape_checks                           r:   Úmeta_avg_pool3d_backwardrž  i  s«  € õ 
„LÝˆKÑÔ˜FÐ"ØXÐXñô ð ð 
�QŒ€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€Bå	„LØˆ
Ð+•c˜&‘k”k VÐ+Ø\Ð\ñô ð ð Ð	(ˆˆ˜v aœy€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€Bå	„LÝˆG‰Œ˜ÐØTÐTñô ð ð �1Œ:€DÝ�w‘<”< 1Ò$Ð$ˆ4ˆ4¨'°!¬*€DÝ�w‘<”< 1Ò$Ð$ˆ4ˆ4¨'°!¬*€Då	„LØŒ
�fÐØKÐKñô ð õ
 
„LØÐÐ5Ð 0°AÒ 5Ø*Ð*ñô ð ð
 �jŠj˜‰nŒn€GØ�JŠJ�r‰NŒN€EØ�jŠj˜‰nŒn€GØ�ZŠZ˜‰^Œ^€Få0°¸¸DÀ"ÀaÈÑSÔSÐÝ2°7¸BÀÀbÈ!ÈYÑWÔWÐÝ1°&¸"¸dÀBÈÈ9ÑUÔUÐå#ØØØØ
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØñ'ô ð ð, �?Š?˜5œ;Ñ'Ô'Ð'r<   c                 ó  ‡ — t          j        ‰ j        dk    p
‰ j        dk    ˆ fd„¦  «         ‰ j        d d…         t	          |¦  «        z   }t          j        ‰ ¦  «        }t          j        |‰ j        ‰ j	        |¬¦  «        S )Nr2   r<  c                  ó   •— d‰ j         › �S )Nz"Expected 3D or 4D tensor, but got rÍ   rì   s   €r:   r_   z*meta_adaptive_avg_pool2d.<locals>.<lambda>½  ó   ø€ ÐA°T´ZÐAÐA€ r<   rô  r²  )
rP   ra   rž   r‘   r`   rJ   r"   r„   rX   r|   )r’   Úoutput_sizerœ  rç   s   `   r:   Úmeta_adaptive_avg_pool2dr£  ¹  s�   ø€ å	„LØŒ	�QŠÐ(˜$œ) qš.ØAÐAÐAÐAñô ð ð ”:˜c˜r˜c”?¥U¨;Ñ%7Ô%7Ñ7€LÝÔ/°Ñ5Ô5€Mõ Œ;ØØŒjØŒ{Ø#ð	ñ ô ð r<   c                 óÀ   ‡ — t          j        ‰ j        dk    p
‰ j        dk    ˆ fd„¦  «         ‰                      ‰ j        d d…         t          |¦  «        z   ¦  «        S )Nr<  rX  c                  ó   •— d‰ j         › �S )Nz"Expected 4D or 5D tensor, but got rÍ   rì   s   €r:   r_   z*meta_adaptive_avg_pool3d.<locals>.<lambda>Ï  r¡  r<   rY  )rP   ra   rž   r�   r‘   r`   )r’   r¢  s   ` r:   Úmeta_adaptive_avg_pool3dr¦  Ë  sb   ø€ å	„LØŒ	�QŠÐ(˜$œ) qš.ØAÐAÐAÐAñô ð ð �>Š>˜$œ* S b Sœ/­E°+Ñ,>Ô,>Ñ>Ñ?Ô?Ð?r<   c                 óØ  ‡ ‡‡— ‰ j         }t          d|¦  «        D ]2Št          j        ‰                      ‰¦  «        dk    ˆ ˆfd„¦  «         Œ3t          j        |dk    p|dk    ˆfd„¦  «         t          j        ‰j        ‰ j        k    ˆ ˆfd„¦  «         t          j        }t          ‰¦  «        rt          j        }‰ 	                    ‰j
        ¦  «                             |¬¦  «        S )	Nr¬   r   c                  ó    •— d‰ j         › d‰› d�S )Nz{adaptive_avg_pool2d_backward(): Expected grad_output to have non-zero                       size for non-batch dimensions, ú with dimension ú being emptyrÍ   )Úgrad_outr  s   €€r:   r_   z4meta__adaptive_avg_pool2d_backward.<locals>.<lambda>Ú  s1   ø€ ð fØ6>´nðfð fØVWðfð fð f€ r<   r2   r<  c                  ó   •— d‰ j         › �S )NzBadaptive_avg_pool2d_backward(): Expected 3D or 4D tensor, but got rÍ   rì   s   €r:   r_   z4meta__adaptive_avg_pool2d_backward.<locals>.<lambda>ß  s   ø€ ÐaÐUYÔU_ÐaÐa€ r<   c                  ó(   •— d‰j         › d‰ j         › �S ©Núexpected dtype z! for `grad_output` but got dtype r‰   )r«  r’   s   €€r:   r_   z4meta__adaptive_avg_pool2d_backward.<locals>.<lambda>ã  s   ø€ Ð_ $¤*Ð_Ð_ÈxÌ~Ð_Ð_€ r<   ræ   )rž   r±   rP   ra   rœ   rX   rë   rß  rÜ  r�   r‘   rb  )r«  r’   rž   rç   r  s   ``  @r:   Ú"meta__adaptive_avg_pool2d_backwardr°  Ô  s  øøø€ àŒ=€DÝ�1�d‰^Œ^ð 
ð 
ˆÝŒØ�MŠM˜!ÑÔ˜qÒ ðfð fð fð fð fñ	
ô 	
ð 	
ð 	
õ
 
„LØ�Š	Ð�T˜Q’YØaÐaÐaÐañô ð õ 
„LØŒ
�h”nÒ$Ø_Ð_Ð_Ð_Ð_ñô ð õ Ô+€MÝ˜ÑÔð ,ÝÔ+ˆØ�>Š>˜$œ*Ñ%Ô%×(Ò(°}Ð(ÑEÔEÐEr<   c                 ób   — t          | d¦  «         t          j        |t          j        ¬¦  «        S )NÚadaptive_avg_pool3d_backwardræ   )Ú!_adaptive_pool_empty_output_checkrP   rê   r@  ©r0  r’   s     r:   Ú"meta__adaptive_avg_pool3d_backwardrµ  ë  s.   € õ & kÐ3QÑRÔRÐRÝÔ˜DµÔ0NÐOÑOÔOÐOr<   r0  c                 ó¢   ‡ ‡‡— ‰ j         }t          d|¦  «        D ]3Št          j        ‰                      ‰¦  «        dk    ˆˆ ˆfd„¦  «         Œ4d S )Nr¬   r   c                  ó$   •— ‰ › d‰j         › d‰› d�S )Nzc(): Expected grad_output to have non-zero size for non-batch dimensions, but grad_output has sizes r©  rª  rÍ   )r  r0  r  s   €€€r:   r_   z3_adaptive_pool_empty_output_check.<locals>.<lambda>÷  s>   ø€ Øð `ð `Ø-8Ô->ð`ð `ØPQð`ð `ð `ð r<   )rž   r±   rP   ra   rœ   )r0  r  rž   r  s   `` @r:   r³  r³  ò  s{   øøø€ ØÔ€DÝ�1�d‰^Œ^ð 
ð 
ˆÝŒØ×Ò˜QÑÔ !Ò#ðð ð ð ð ð ñ	
ô 	
ð 	
ð 	
ð
ð 
r<   c                 ó8  ‡ ‡— ‰ j         }t          j        |dv ˆ fd„¦  «         t          d|¦  «        D ]2Št          j        ‰                      ‰¦  «        dk    ˆˆ fd„¦  «         Œ3t          j        t          |¦  «        dk    d„ ¦  «         d}d}d}‰ j         dk    r‰                      d¦  «        }|dz  }‰                      |dz
  ¦  «        }|\  }}‰ j         d	k    r?|||f}‰                      |¦  «        }	‰                      |t          j        ¬
¦  «        }
|	|
fS ||||f}t          j	        ‰ ¦  «        }‰                      |¦  «         
                    |¬¦  «        }	‰                      |t          j        ¬
¦  «         
                    |¬¦  «        }
|	|
fS )Nr  c                  ó   •— d‰ j         › �S )Nz:adaptive_max_pool2d(): Expected 3D or 4D tensor, but got: rÍ   r$  s   €r:   r_   z*meta_adaptive_max_pool2d.<locals>.<lambda>  ó   ø€ ÐZÈUÌ[ÐZÐZ€ r<   r¬   r   c                  ó    •— d‰j         › d‰ › d�S )Nzjadaptive_max_pool2d(): Expected input to have non-zero size for non-batch dimensions, but input has sizes r©  rª  rÍ   ©r  r  s   €€r:   r_   z*meta_adaptive_max_pool2d.<locals>.<lambda>	  ó4   ø€ ðTØ',¤{ðTð TØDEðTð Tð Tð r<   r,  c                  ó   — dS )NzCadaptive_max_pool2d(): internal error: output_size.size() must be 2r@   r@   r<   r:   r_   z*meta_adaptive_max_pool2d.<locals>.<lambda>  ó   € ÐU€ r<   r<  r2   r‰   ræ   )rž   rP   ra   r±   rœ   r®   r�   rò   rJ   r"   rb  )r  r¢  rž   ÚdimHÚsizeBÚsizeDÚosizeHÚosizeWr¡   r  rï   rç   r  s   `           @r:   Úmeta_adaptive_max_pool2drÅ  þ  sÔ  øø€ ð Œ:€DÝ	„LØ�ˆØZÐZÐZÐZñô ð õ �1�d‰^Œ^ð 
ð 
ˆÝŒØ�JŠJ�q‰MŒM˜AÒðð ð ð ð ñ	
ô 	
ð 	
ð 	
õ 
„LÝˆKÑÔ˜AÒØUÐUñô ð ð
 €DØ€EØ€Eà„z�Q‚€Ø—
’
˜1‘”ˆØ�‰	ˆà�JŠJ�t˜a‘xÑ Ô €EØ �N€FˆFà„z�Q‚€Ø˜F FÐ+ˆ	Ø�oŠo˜iÑ(Ô(ˆØ—/’/ )µ5´;�/Ñ?Ô?ˆØ�Gˆ|Ðà˜E 6¨6Ð2ˆ	ÝÔ3°EÑ:Ô:ˆØ�oŠo˜iÑ(Ô(×+Ò+¸-Ð+ÑHÔHˆØ—/’/ )µ5´;�/Ñ?Ô?×BÒBØ'ð Cñ 
ô 
ˆð �Gˆ|Ðr<   c                 ó:  ‡ ‡— ‰ j         }t          j        |dv ˆ fd„¦  «         t          ‰ d¦  «         t          j        ‰j        ‰ j        k    ˆ ˆfd„¦  «         t          j        ‰¦  «        }‰                     ‰j        ¦  «         	                    |¬¦  «        S )Nr  c                  ó   •— d‰ j         › �S )NzKadaptive_max_pooling2d_backward(): Expected 3D or 4D grad_output, but got: rÍ   ©r0  s   €r:   r_   z3meta_adaptive_max_pool2d_backward.<locals>.<lambda>4  s   ø€ ÐqÐ^iÔ^oÐqÐq€ r<   Úadaptive_max_pool2d_backwardc                  ó(   •— d‰j         › d‰ j         › �S r®  r‰   )r0  r  s   €€r:   r_   z3meta_adaptive_max_pool2d_backward.<locals>.<lambda>;  s   ø€ Ðc %¤+ÐcÐcÐP[ÔPaÐcÐc€ r<   ræ   )
rž   rP   ra   r³  rX   rJ   r"   r�   r‘   rb  )r0  r  rï   rž   rç   s   ``   r:   Ú!meta_adaptive_max_pool2d_backwardrË  .  s¯   øø€ ð Ô€DÝ	„LØ�ˆØqÐqÐqÐqñô ð õ
 & kÐ3QÑRÔRÐRå	„LØŒ�{Ô(Ò(ØcÐcÐcÐcÐcñô ð õ
 Ô/°Ñ6Ô6€MØ�?Š?˜5œ;Ñ'Ô'×*Ò*¸Ð*ÑGÔGÐGr<   c                 ó:  ‡ ‡— ‰ j         }t          j        |dv ˆ fd„¦  «         t          d|¦  «        D ]2Št          j        ‰                      ‰¦  «        dk    ˆˆ fd„¦  «         Œ3t          j        t          |¦  «        dk    d„ ¦  «         d}d}d}|dk    r‰                      d¦  «        }|dz  }‰                      |¦  «        }|\  }}}|d	k    r||||f}	n|||||f}	‰                      |	¦  «        }
‰                      |	t          j        ¬
¦  «        }|
|fS )Nr‚  c                  ó   •— d‰ j         › �S )Nz:adaptive_max_pool3d(): Expected 4D or 5D tensor, but got: rÍ   r$  s   €r:   r_   z*meta_adaptive_max_pool3d.<locals>.<lambda>H  rº  r<   r¬   r   c                  ó    •— d‰j         › d‰ › d�S )Nzjadaptive_max_pool3d(): Expected input to have non-zero size for non-batch dimensions, but input has sizes r©  rª  rÍ   r¼  s   €€r:   r_   z*meta_adaptive_max_pool3d.<locals>.<lambda>M  r½  r<   r2   c                  ó   — dS )NzCadaptive_max_pool3d(): internal error: output_size.size() must be 3r@   r@   r<   r:   r_   z*meta_adaptive_max_pool3d.<locals>.<lambda>U  r¿  r<   rX  r<  r‰   )rž   rP   ra   r±   rœ   r®   r�   rò   )r  r¢  rž   ÚdimDrÁ  rÂ  ÚosizeTrÃ  rÄ  r¡   r  rï   r  s   `           @r:   Úmeta_adaptive_max_pool3drÒ  B  sg  øø€ ð Œ:€DÝ	„LØ�ˆØZÐZÐZÐZñô ð õ �1�d‰^Œ^ð 
ð 
ˆÝŒØ�JŠJ�q‰MŒM˜AÒðð ð ð ð ñ	
ô 	
ð 	
ð 	
õ 
„LÝˆKÑÔ˜AÒØUÐUñô ð ð
 €DØ€EØ€Eàˆq‚y€yØ—
’
˜1‘”ˆØ�‰	ˆà�JŠJ�tÑÔ€EØ(Ñ€FˆF�Fàˆq‚y€yØ˜F F¨FÐ3ˆ	ˆ	à˜E 6¨6°6Ð:ˆ	à
�/Š/˜)Ñ
$Ô
$€CØ�oŠo˜i­u¬{ˆoÑ;Ô;€Gà�ˆ<Ðr<   c                 óV   — t          | d¦  «         |                     |j        ¦  «        S )NÚadaptive_max_pool3d_backward)r³  r�   r‘   )r0  r  rï   s      r:   Ú!meta_adaptive_max_pool3d_backwardrÕ  n  s)   € õ & kÐ3QÑRÔRÐRØ�?Š?˜5œ;Ñ'Ô'Ð'r<   c                 óN   — |€t          d¦  «        ‚|                      |¦  «        S )Nz:cannot repeat_interleave a meta tensor without output_size)ra  r�   )Úrepeatsr¢  s     r:   Úmeta_repeat_interleave_TensorrØ  u  s+   € àÐÝÐWÑXÔXÐXØ×Ò˜[Ñ)Ô)Ð)r<   c                 óÀ   — | j         j        sJ ‚|j         j        sJ ‚t          | j        |j        ¦  «        }|                      |t          | j         ¦  «        ¬¦  «        S r½  )rX   r3  r)   r‘   r�   r   )ÚrealÚimagr¡   s      r:   Úmeta_complexrÜ  |  sZ   € ð Œ:Ô'Ð'Ð'Ð'ØŒ:Ô'Ð'Ð'Ð'Ý! $¤*¨d¬jÑ9Ô9€IØ�>Š>˜)Õ+FÀtÄzÑ+RÔ+Rˆ>ÑSÔSÐSr<   )Ú
fill_valuerÝ  c                ól   — |                       ||                      ¦   «         ft          j        ¬¦  «        S r½  )r�   r   rP   r�   )r’   rœ   rÝ  s      r:   Únonzero_staticrß  …  s)   € ð �>Š>˜4 §¢¡¤Ð,µE´Jˆ>Ñ?Ô?Ð?r<   c                 ó  — t          j        t          j        d„ ¦  «         t          j        |                      ¦   «         |                      ¦   «         fd|                      ¦   «         ft           j        | j        ¬¦  «        S )Nc                  ó   — dS )NaY  The register_meta function for torch.nonzero() raises unimplemented by default, as a correct data-independent implementation does not exist. This implementation returns a fake value, assuming all elements of the tensor are non-zero. To enable this registration, please set 'torch.fx.experimental._config.meta_nonzero_assume_all_nonzero' to True.r@   r@   r<   r:   r_   znonzero.<locals>.<lambda>�  s
   € ð S€ r<   r¬   ©rX   r|   )	rP   Ú_check_not_implementedrŒ  Úmeta_nonzero_assume_all_nonzerorZ  r�   r   r�   r|   rì   s    r:   Únonzerorå  ‹  sy   € õ 
Ô ÝÔ2ð	Sð 	Sñô ð õ ÔØ	�Š‰Œ�t—x’x‘z”zÐ"Ø	
ˆD�JŠJ‰LŒLÐÝŒjØŒ{ð	ñ ô ð r<   c           
      ó&	  ‡ ‡‡‡‡‡‡‡‡— t          j        t          ‰¦  «        d„ ¦  «         g }t          ‰¦  «        D �]d\  ŠŠ‰��Ft          j        ‰j        t           j        t           j        t           j        t           j        fv d„ ¦  «         ‰j        t           j        t           j        fv rÇ‰                     ¦   «         }t          |¦  «        Št          j
        ‰‰j        z   ‰ j        k    ˆ fd„¦  «         t          ‰j        ¦  «        D ]dŠt          j
        ‰j        ‰         ‰ j        ‰‰z            k    ˆˆˆˆˆ fd„¦  «         |                     |                     d‰¦  «        ¦  «         Œe�Œ8|                     ‰¦  «         �ŒO|                     ‰¦  «         �Œf|Št          j        t          ‰¦  «        ‰ j        k    ˆˆ fd„¦  «         dd lm} t%           |j        ‰Ž ¦  «        Št          ‰¦  «        ‰ j        k     r-‰                     d ¦  «         t          ‰¦  «        ‰ j        k     °-d}d}‰D ]Š|dk    r‰�d}Œ|dk    r‰€d	}Œ‰� nŒd
}|s�g }g }t          ‰¦  «        D ]1\  ŠŠ‰�*|                     ‰¦  «         |                     ‰¦  «         Œ2t          ‰¦  «        D ]1\  ŠŠ‰€*|                     ‰¦  «         |                     ‰¦  «         Œ2‰                      |¦  «        Š |Šg Šg Šg Št          ‰¦  «        D ]_\  }	Š‰€D‰r!‰                     ‰ j        |	         ¦  «         Œ*‰                     ‰ j        |	         ¦  «         ŒKt%          ‰j        ¦  «        ŠŒ`ˆˆˆfd„}
‰                      ‰‰z   ‰z   ¦  «        }ddlm}  |‰                      ¦   «         dk    ¦  «        r|S  |
‰ ¦  «        }t3          j        |¦  «        }t%          |¦  «        t%          t          t          |¦  «        ¦  «        ¦  «        k    r}t3          j        |j        |¦  «        }t3          j        |¦  «        }t3          j        |t3          j        |¦  «        ¦  «        }|                     |                     ¦   «         |¦  «        }|S )Nc                  ó   — dS )Nz#at least one index must be providedr@   r@   r<   r:   r_   z#meta_index_Tensor.<locals>.<lambda>   s   € Ð(M€ r<   c                  ó   — dS )Nz?tensors used as indices must be long, int, byte or bool tensorsr@   r@   r<   r:   r_   z#meta_index_Tensor.<locals>.<lambda>¨  s   € ÐY€ r<   c                  ó   •— d‰ j         › �S )Nú)too many indices for tensor of dimension r8  rì   s   €r:   r_   z#meta_index_Tensor.<locals>.<lambda>¯  s   ø€ ÐSÈÌ	ÐSÐS€ r<   c            	      ó:   •— d‰j         › d‰ › d‰j         › d‰‰z   › �S )NzThe shape of the mask ú
 at index z0 does not match the shape of the indexed tensor rÍ   )r  r‹   Újrš  r’   s   €€€€€r:   r_   z#meta_index_Tensor.<locals>.<lambda>´  sP   ø€ ð !h¸¼ð !hð !hÐPQð !hð !hØJNÌ*ð!hð !hØ`aÐdeÑ`eð!hð !h€ r<   r¬   c                  ó:   •— d‰j         › dt          ‰ ¦  «        › d�S )Nrê  z (got rr   )rž   r®   )rï   r’   s   €€r:   r_   z#meta_index_Tensor.<locals>.<lambda>¿  s$   ø€ Ð\¸D¼IÐ\Ð\ÍSÐQXÉ\Ì\Ð\Ð\Ð\€ r<   r   Fr,  Tc                 ó  •— ‰‰z   ‰z   }t          |                      ¦   «         ¦  «        }dgt          ‰¦  «        z  |t          ‰¦  «        t          | j        ¦  «        t          ‰¦  «        z
  …<   |                      ||¦  «        S )zI
        This follows restride_src in TensorAdvancedIndexing.cpp
        r   )r  rÅ   r®   r‘   rÕ   )r’   r‘   rÞ   Úafter_shapeÚbefore_shapeÚreplacement_shapes      €€€r:   Ú_restride_srcz(meta_index_Tensor.<locals>._restride_src   s†   ø€ ð Ð0Ñ0°;Ñ>ˆÝ�t—{’{‘}”}Ñ%Ô%ˆØKLÈ#ÕPSØñQ
ô Q
ñ K
ˆ•�LÑ!Ô!¥C¨¬
¡O¤Oµc¸+Ñ6FÔ6FÑ$FÐFÑGð �Š˜u gÑ.Ô.Ð.r<   ©Úguard_size_oblivious) rP   ra   r&  Ú	enumeraterX   r�   r"  r{  rå  r®   rŽ   rž   r±   r‘   r  ÚselectÚtorch._refsrÒ   r  r*   r  r�   r­   rõ  r�   rJ   Ú3compute_elementwise_output_logical_to_physical_permÚ
apply_permr    Úinvert_permrÕ   rœ   )r’   rï   r  rå  ÚrefsÚstateÚhas_contiguous_subspacer¾  Útransposed_indicesr   ró  r  rõ  Úrestrided_selfÚpermÚ
perm_shaper·   rð  rñ  r  r‹   rí  rš  rò  s   ``               @@@@@@@r:   Úmeta_index_Tensorr  ž  s  øøøøøøøøø€ å	„L•�g‘”Ð MÐ MÑNÔNÐNð &(€FÝ˜gÑ&Ô&ð !ñ !‰ˆˆ5ØÑÝŒLØ”¥¤
­E¬Iµu´zÅ5Ä:ÐNÐNØYÐYñô ð ð Œ{�uœz­5¬:Ð6Ð6Ð6ØŸ-š-™/œ/�Ý˜‘K”K�ÝÔ"Ø˜œ
‘N d¤iÒ/ØSÐSÐSÐSñô ð õ ˜uœzÑ*Ô*ð 8ð 8�AÝÔ&Øœ Aœ¨$¬*°Q¸±UÔ*;Ò;ðhð hð hð hð hð hð hð hñô ð ð
 —M’M '§.¢.°°AÑ"6Ô"6Ñ7Ô7Ð7Ð7ñ8ð —’˜eÑ$Ô$Ð$Ñ$à�MŠM˜%Ñ Ô Ð Ñ Ø€GÝ	„LÝˆG‰Œ˜œ	Ò!Ø\Ð\Ð\Ð\Ð\ñô ð ð
 ÐÐÐÐÐåÐ(�4Ô(¨'Ð2Ñ3Ô3€Gå
ˆg‰,Œ,˜œÒ
"Ð
"Ø�Š�tÑÔÐõ ˆg‰,Œ,˜œÒ
"Ð
"ð €EØ#ÐØð 'ð 'ˆØ�AŠ:ˆ:ØÐ Ø�øØ�aŠZˆZØˆ}Ø�øàÐ Ø�ð !ð #'Ðð
 #ð %ØˆØÐÝ! 'Ñ*Ô*ð 	1ð 	1‰HˆAˆuØÐ Ø—’˜A‘”�Ø"×)Ò)¨%Ñ0Ô0Ð0øÝ! 'Ñ*Ô*ð 	1ð 	1‰HˆAˆuØˆ}Ø—’˜A‘”�Ø"×)Ò)¨%Ñ0Ô0Ð0øØ�|Š|˜DÑ!Ô!ˆØ$ˆð !€LØ€KØ#%ÐÝ Ñ(Ô(ð 2ð 2‰
ˆˆUØˆ=Ø ð 5Ø×"Ò" 4¤:¨c¤?Ñ3Ô3Ð3Ð3à×#Ò# D¤J¨s¤OÑ4Ô4Ð4Ð4å $ U¤[Ñ 1Ô 1ÐÐð	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð �.Š.˜Ð(9Ñ9¸KÑGÑ
HÔ
H€CØJÐJÐJÐJÐJÐJàÐ˜DŸJšJ™LœL¨AÒ-Ñ.Ô.ð àˆ
ð
 #�] 4Ñ(Ô(€NÝÔDÀ^ÑTÔT€Dõ ˆD�z„z•T�%¥ D¡	¤	Ñ*Ô*Ñ+Ô+Ò+Ð+ÝÔ% c¤i°Ñ6Ô6ˆ
ÝÔ6°zÑBÔBˆ
ÝÔ% jµ%Ô2CÀDÑ2IÔ2IÑJÔJˆ
Ø�nŠn˜SŸXšX™ZœZ¨Ñ4Ô4ˆØ€Jr<   c                 ó  — d }d }d }|
d         r'|                       |                     ¦   «         ¦  «        }|
d         r'|                       |                     ¦   «         ¦  «        }|
d         r|                       |¦  «        }|||fS )Nr   r¬   r,  ©r�   rœ   )Úgrad_output_Úinput_Úweight_Úbias_sizes_optrÅ   rÿ  rÇ  Ú
transposedrÊ  rÉ  Úoutput_maskÚbackend_grad_inputÚbackend_grad_weightÚbackend_grad_biass                 r:   Úmeta_convolution_backwardr  !  s˜   € ð  ÐØÐØÐà�1„~ð CØ)×3Ò3°F·K²K±M´MÑBÔBÐØ�1„~ð EØ*×4Ò4°W·\²\±^´^ÑDÔDÐØ�1„~ð CØ(×2Ò2°>ÑBÔBÐàÐ 3Ð5FÐGÐGr<   c                ó  ‡‡— ‰                      d¦  «        }‰                      d¦  «        }|                      ||f¦  «        } t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰                      d¦  «        ‰                      d¦  «        k    ˆˆfd„¦  «         t          j        ‰                      d¦  «        ‰                      d¦  «        k    ˆˆfd„¦  «         t          j        |                       d¦  «        |k    o|                       d¦  «        |k    d	„ ¦  «         |                      |                       ¦   «         ¦  «        S )
Nr¬   r,  r2   c                  ó   — dS r}  r@   r@   r<   r:   r_   zmeta_addbmm.<locals>.<lambda>E  r~  r<   c                  ó   — dS r€  r@   r@   r<   r:   r_   zmeta_addbmm.<locals>.<lambda>F  r~  r<   r   c                  ó`   •— d‰                       d¦  «        › d‰                      d¦  «        › �S )Nz8batch1 and batch2 must have same number of batches, got r   rš   r›   ©r‚  rƒ  s   €€r:   r_   zmeta_addbmm.<locals>.<lambda>I  s3   ø€ ÐpÈ6Ï;Ê;ÐWXÉ>Ì>ÐpÐpÐ`f×`kÒ`kÐlmÑ`nÔ`nÐpÐp€ r<   c            
      óº   •— d‰                       d¦  «        › d‰                       d¦  «        › d‰                      d¦  «        › d‰                      d¦  «        › d�	S )Nz#Incompatible matrix sizes for bmm (r¬   rG   r,  rš   rr   r›   r  s   €€r:   r_   zmeta_addbmm.<locals>.<lambda>M  sl   ø€ ð6°&·+²+¸a±.´.ð 6ð 6À6Ç;Â;ÈqÁ>Ä>ð 6ð 6Ø—;’;˜q‘>”>ð6ð 6Ø$*§K¢K°¡N¤Nð6ð 6ð 6ð r<   c                  ó   — dS )Nz.self tensor does not match matmul output shaper@   r@   r<   r:   r_   zmeta_addbmm.<locals>.<lambda>T  s   € Ð@€ r<   )rœ   r´  rP   ra   r   r�   )r’   r‚  rƒ  r‡  r†  rŽ  r�  s    ``    r:   Úmeta_addbmmr  ?  sg  øø€ ð �;Š;�q‰>Œ>€DØ�;Š;�q‰>Œ>€DØ�;Š;˜˜d�|Ñ$Ô$€DÝ	„L�—’‘” Ò"Ð$HÐ$HÑIÔIÐIÝ	„L�—’‘” Ò"Ð$HÐ$HÑIÔIÐIÝ	„LØ�Š�A‰Œ˜&Ÿ+š+ a™.œ.Ò(ØpÐpÐpÐpÐpñô ð õ 
„LØ�Š�A‰Œ˜&Ÿ+š+ a™.œ.Ò(ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ�	Š	�!‰Œ˜ÒÐ5 §¢¨1¡¤°Ò!5Ø@Ð@ñô ð ð �>Š>˜$Ÿ)š)™+œ+Ñ&Ô&Ð&r<   c                 óP   — |                       |                      ¦   «         ¦  «        S r7   r  )r’   rO  Úkwargss      r:   Úmeta_randint_liker  Y  s   € à�>Š>˜$Ÿ)š)™+œ+Ñ&Ô&Ð&r<   )Ú
grad_scaleÚ	found_infc       	         ót   ‡— | |||||fD ]-Št          j        t          ‰t          ¦  «        ˆfd„¦  «         Œ.d S )Nc                  ó(   •— dt          ‰ ¦  «        › �S ©Nz'exponent must be a tensor list but got ©rs   ©Úls   €r:   r_   z#meta__fused_adam_.<locals>.<lambda>t  ó   ø€ ÐG½dÀ1¹g¼gÐGÐG€ r<   ©rP   ra   rj   r  )r’   ÚgradsÚexp_avgsÚexp_avg_sqsÚmax_exp_avg_sqsÚstate_stepsÚlrÚbeta1Úbeta2Úweight_decayÚepsÚamsgradÚmaximizer  r  r"  s                  @r:   Úmeta__fused_adam_r1  ^  s]   ø€ ð& �E˜8 [°/À;ÐOð 
ð 
ˆÝŒÝ�q�$ÑÔØGÐGÐGÐGñ	
ô 	
ð 	
ð 	
ð
ð 
r<   c       	         óÞ   ‡— | |||||fD ]-Št          j        t          ‰t          ¦  «        ˆfd„¦  «         Œ.d„ } || ¦  «         ||¦  «         ||¦  «         ||¦  «         ||¦  «        fS )Nc                  ó(   •— dt          ‰ ¦  «        › �S r  r   r!  s   €r:   r_   z"meta__fused_adam.<locals>.<lambda>Ž  r#  r<   c                 ó   — d„ | D ¦   «         S )Nc                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r@   rž  )rF   r  s     r:   rI   z=meta__fused_adam.<locals>.empty_like_list.<locals>.<listcomp>’  s#   € Ð9Ð9Ð9¨•Ô  Ñ#Ô#Ð9Ð9Ð9r<   r@   )Útensor_lists    r:   Úempty_like_listz)meta__fused_adam.<locals>.empty_like_list‘  s   € Ø9Ð9¨[Ð9Ñ9Ô9Ð9r<   r$  )r’   r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r  r  r7  r"  s                   @r:   Úmeta__fused_adamr8  x  s¯   ø€ ð& �E˜8 [°/À;ÐOð 
ð 
ˆÝŒÝ�q�$ÑÔØGÐGÐGÐGñ	
ô 	
ð 	
ð 	
ð
:ð :ð :ð 	ˆ˜ÑÔØˆ˜ÑÔØˆ˜Ñ!Ô!Øˆ˜Ñ$Ô$Øˆ˜Ñ(Ô(ðð r<   c                 ór  ‡ ‡— t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        u ˆ fd„¦  «         t          j        ‰j        t           j        u ˆfd„¦  «         t          j        ‰                      d¦  «        ‰                     d¦  «        k    ˆ ˆfd„¦  «         ‰                      ‰                      d¦  «        ‰                     d¦  «        ft           j        ¬	¦  «        S )
Nr,  c                  ó   — dS )Nza must be a 2D tensorr@   r@   r<   r:   r_   zmeta__int_mm.<locals>.<lambda>   ó   € Ð'>€ r<   c                  ó   — dS )Nzb must be a 2D tensorr@   r@   r<   r:   r_   zmeta__int_mm.<locals>.<lambda>¡  r;  r<   c                  ó   •— d‰ j         › �S )Nzexpected self to be int8, got r‰   )rÆ   s   €r:   r_   zmeta__int_mm.<locals>.<lambda>¤  ó   ø€ Ð:°´Ð:Ð:€ r<   c                  ó   •— d‰ j         › �S )Nzexpected mat2 to be int8, got r‰   )rº  s   €r:   r_   zmeta__int_mm.<locals>.<lambda>¨  r>  r<   r¬   r   c            
      óº   •— d‰                       d¦  «        › d‰                       d¦  «        › d‰                      d¦  «        › d‰                      d¦  «        › d�	S )Nz'Incompatible matrix sizes for _int_mm (r   rG   r¬   rš   rr   r›   ©rÆ   rº  s   €€r:   r_   zmeta__int_mm.<locals>.<lambda>¬  sl   ø€ ð,°a·f²f¸Q±i´ið ,ð ,À!Ç&Â&ÈÁ)Ä)ð ,ð ,Ø—6’6˜!‘9”9ð,ð ,Ø Ÿvšv a™yœyð,ð ,ð ,ð r<   r‰   )rP   ra   r   rX   r{  rœ   r�   r|  rA  s   ``r:   Úmeta__int_mmrB  �  s"  øø€ õ 
„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•5”:ÐØ:Ð:Ð:Ð:ñô ð õ 
„LØ	Œ•5”:ÐØ:Ð:Ð:Ð:ñô ð õ 
„LØ	�Šˆq‰	Œ	�Q—V’V˜A‘Y”YÒð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð �;Š;˜Ÿš˜q™	œ	 1§6¢6¨!¡9¤9Ð-µU´[ˆ;ÑAÔAÐAr<   c                 ój  ‡ — t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        u ˆ fd„¦  «         ‰                      d¦  «        }‰                      d¦  «        dz  }‰                      |dz  ||dz  z  d|dz  ft           j        ¬	¦  «        S )
Nr,  c                  ó   — dS ©Nzw must be a 2D tensorr@   r@   r<   r:   r_   z2meta__convert_weight_to_int4pack.<locals>.<lambda>¶  r;  r<   c                  ó   •— d‰ j         › �S ©Nr9  r‰   ©r  s   €r:   r_   z2meta__convert_weight_to_int4pack.<locals>.<lambda>¹  ó   ø€ Ð8¨q¬wÐ8Ð8€ r<   r   r¬   é   r“  é    r‰   )rP   ra   r   rX   r	  rœ   r�   r|  ©r  Úinner_k_tilesrD  rš  s   `   r:   Ú meta__convert_weight_to_int4packrN  ´  s»   ø€ å	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•5”;ÐØ8Ð8Ð8Ð8ñô ð ð 	
�Šˆq‰	Œ	€AØ	�Šˆq‰	Œ	�A‰€AØ�;Š;à�‰FØ�- "Ñ$Ñ%ØØ˜QÑð		
õ Œkð ñ ô ð r<   c                 óN  ‡ — t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        u ˆ fd„¦  «         ‰                      d¦  «        }‰                      d¦  «        }‰                      ||dz  ft           j        ¬¦  «        S )Nr,  c                  ó   — dS rE  r@   r@   r<   r:   r_   z:meta__convert_weight_to_int4pack_for_cpu.<locals>.<lambda>Ê  r;  r<   c                  ó   •— d‰ j         › �S ©Nzexpected w to be int32, got r‰   rH  s   €r:   r_   z:meta__convert_weight_to_int4pack_for_cpu.<locals>.<lambda>Í  rI  r<   r   r¬   r‰   )rP   ra   r   rX   r|  rœ   r�   r	  rL  s   `   r:   Ú(meta__convert_weight_to_int4pack_for_cpurS  È  sœ   ø€ å	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•5”;ÐØ8Ð8Ð8Ð8ñô ð ð 	
�Šˆq‰	Œ	€AØ	�Šˆq‰	Œ	€AØ�;Š;Ø	
ˆA�‰FˆÝŒkð ñ ô ð r<   c                 ó  ‡ ‡— t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        t           j        t           j        fv ˆ fd„¦  «         t          j        ‰j        t           j        u ˆfd„¦  «         ‰                      ‰  	                    d¦  «        ‰ 	                    d¦  «        dz  ‰ j        ¬	¦  «        S )
Nr,  c                  ó   — dS ©Nzx must be a 2D tensorr@   r@   r<   r:   r_   z*meta__weight_int4pack_mm.<locals>.<lambda>Ù  r;  r<   r<  c                  ó   — dS )Nzw must be a 4D tensorr@   r@   r<   r:   r_   z*meta__weight_int4pack_mm.<locals>.<lambda>Ú  r;  r<   c                  ó   •— d‰ j         › �S ©Nr8  r‰   ©rG   s   €r:   r_   z*meta__weight_int4pack_mm.<locals>.<lambda>Ý  ó   ø€ Ð?°a´gÐ?Ð?€ r<   c                  ó   •— d‰ j         › �S rR  r‰   rH  s   €r:   r_   z*meta__weight_int4pack_mm.<locals>.<lambda>á  rI  r<   r   rJ  r‰   ©
rP   ra   r   rX   r”  r•  r–  r|  r�   rœ   r:  s   ``  r:   Úmeta__weight_int4pack_mmr^  ×  sá   øø€ å	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•E”M¥5¤=µ%´.ÐAÐAØ?Ð?Ð?Ð?ñô ð õ 
„LØ	Œ•5”;ÐØ8Ð8Ð8Ð8ñô ð ð �;Š;�q—v’v˜a‘y”y !§&¢&¨¡)¤)¨a¡-°q´wˆ;Ñ?Ô?Ð?r<   c                 ó  ‡ ‡— t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        t           j        t           j        fv ˆ fd„¦  «         t          j        ‰j        t           j        u ˆfd„¦  «         ‰                      ‰  	                    d¦  «        ‰ 	                    d¦  «        ‰ j        ¬¦  «        S )Nr,  c                  ó   — dS rV  r@   r@   r<   r:   r_   z2meta__weight_int4pack_mm_for_cpu.<locals>.<lambda>è  r;  r<   c                  ó   — dS rE  r@   r@   r<   r:   r_   z2meta__weight_int4pack_mm_for_cpu.<locals>.<lambda>é  r;  r<   c                  ó   •— d‰ j         › �S rY  r‰   rZ  s   €r:   r_   z2meta__weight_int4pack_mm_for_cpu.<locals>.<lambda>ì  r[  r<   c                  ó   •— d‰ j         › �S rG  r‰   rH  s   €r:   r_   z2meta__weight_int4pack_mm_for_cpu.<locals>.<lambda>ð  rI  r<   r   r‰   )
rP   ra   r   rX   r”  r•  r–  r	  r�   rœ   r:  s   ``  r:   Ú meta__weight_int4pack_mm_for_cpurd  æ  óÝ   øø€ å	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•E”M¥5¤=µ%´.ÐAÐAØ?Ð?Ð?Ð?ñô ð õ 
„LØ	Œ•5”;ÐØ8Ð8Ð8Ð8ñô ð ð �;Š;�q—v’v˜a‘y”y !§&¢&¨¡)¤)°1´7ˆ;Ñ;Ô;Ð;r<   c                 ó  ‡ ‡— t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        t           j        t           j        fv ˆ fd„¦  «         t          j        ‰j        t           j        u ˆfd„¦  «         ‰                      ‰  	                    d¦  «        ‰ 	                    d¦  «        ‰ j        ¬¦  «        S )Nr,  c                  ó   — dS rV  r@   r@   r<   r:   r_   z;_weight_int4pack_mm_with_scales_and_zeros.<locals>.<lambda>÷  r;  r<   c                  ó   — dS rE  r@   r@   r<   r:   r_   z;_weight_int4pack_mm_with_scales_and_zeros.<locals>.<lambda>ø  r;  r<   c                  ó   •— d‰ j         › �S rY  r‰   rZ  s   €r:   r_   z;_weight_int4pack_mm_with_scales_and_zeros.<locals>.<lambda>û  r[  r<   c                  ó   •— d‰ j         › �S rR  r‰   rH  s   €r:   r_   z;_weight_int4pack_mm_with_scales_and_zeros.<locals>.<lambda>ÿ  rI  r<   r   r‰   r]  )rG   r  r;  ÚqScaleÚqZeross   ``   r:   Ú)_weight_int4pack_mm_with_scales_and_zerosrm  õ  re  r<   rÆ   rº  c                 ó   — | |z   dz
  |z  |z  S rj  r@   rA  s     r:   Úkai_roundupro    s   € Ø�‰U�Q‰Y˜1Ñ Ñ!Ð!r<   c                 ó0  ‡	‡
‡‡‡‡‡‡‡‡‡— | dk    r€||k    r+d}d}d}dŠdŠdŠd„ Šˆˆˆˆfd„Šˆfd„} ||||||¦  «        S |dz  d	k    rH||z  d	k    rAd}d}d}dŠdŠdŠdŠ	ˆ	ˆˆfd
„}ˆ	ˆ
ˆˆˆˆˆfd„Šd„ Š
ˆ	fd„Šˆ	fd„Š |||||||¦  «        S d S d S d S )Nr<  rJ  r“  r,  c                 óH   — t          ||z  d¦  «        }t          | |¦  «        S )Nr<  ©ro  )rš  ÚkrÚsrÚkr_sr_roundedup4s       r:   Úkai_k_roundedupz3get_kai_packed_weight_size.<locals>.kai_k_roundedup  s)   € õ $/¨r°B©w¸Ñ#:Ô#:Ð Ý" 1Ð&6Ñ7Ô7Ð7r<   c                 óf   •—  ‰| ||¦  «        }|dz  dk    s
J d¦   «         ‚||dz  ‰z   ‰z   ‰z   z  S )Nr,  r   zk_internal must be evenr@   )	rš  Únrrs  rt  Ú
k_internalrv  Úkai_num_bytes_biasÚkai_num_bytes_multiplier_rhsÚkai_num_bytes_sum_rhss	        €€€€r:   Ú9kai_get_rhs_packed_stride_rhs_pack_nxk_qsi4cxp_qsu4cxs1s0z]get_kai_packed_weight_size.<locals>.kai_get_rhs_packed_stride_rhs_pack_nxk_qsi4cxp_qsu4cxs1s0  sd   ø€ ð -˜_¨Q°°BÑ7Ô7�
à" Q™¨1Ò,Ð,Ð,Ð.GÑ,Ô,Ð,àØ 1‘_Ø2ñ3à+ñ,ð )ñ)ñð r<   c                 óL   •— t          | |¦  «        |z  }| ‰||||¦  «        z  S r7   rr  )rD  rš  rx  rs  rt  Únum_rowsr}  s         €r:   Ú7kai_get_rhs_packed_size_rhs_pack_nxk_qsi4cxp_qsu4cxs1s0z[get_kai_packed_weight_size.<locals>.kai_get_rhs_packed_size_rhs_pack_nxk_qsi4cxp_qsu4cxs1s0'  sA   ø€ õ ' q¨"Ñ-Ô-°Ñ3�ð ØOÐOØ˜2˜r 2ñô ñðr<   rK  r   c                 ó�   •— ||z  dk    sJ ‚|‰	z  dk    sJ ‚|‰z  dk    sJ ‚t          | |¦  «        |z  }| ‰|||||¦  «        z  S r§  rr  )
rD  rš  rx  rs  rt  Úblr  Úkai_bl_multiple_ofÚ;kai_get_rhs_packed_stride_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0Úkai_nr_multiple_ofs
          €€€r:   Ú9kai_get_rhs_packed_size_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0z]get_kai_packed_weight_size.<locals>.kai_get_rhs_packed_size_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0?  s‚   ø€ ð ˜R™ A’~�~�~�~ØÐ/Ñ/°AÒ5Ð5Ð5Ð5ØÐ/Ñ/°AÒ5Ð5Ð5Ð5å& q¨"Ñ-Ô-°Ñ3�ð ØQÐQØ˜2˜r 2 rñô ñðr<   c                 ó¦   •— ||z  dk    sJ ‚|‰
z  dk    sJ ‚|‰z  dk    sJ ‚ ‰	¦   «         } ‰| |¦  «        } ‰||¦  «        }|||z  ‰z   ‰z   z  S r§  r@   )rš  rx  rs  rt  r‚  Únum_bytes_multiplier_rhsÚnum_blocks_per_rowÚnum_bytes_per_blockrƒ  Ú#kai_get_bf16_datatype_size_in_bytesr…  Úkai_num_blocks_per_rowrz  Úkai_num_bytes_per_blockr|  s           €€€€€€€r:   r„  z_get_kai_packed_weight_size.<locals>.kai_get_rhs_packed_stride_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0O  sª   ø€ ð ˜R™ A’~�~�~�~ØÐ/Ñ/°AÒ5Ð5Ð5Ð5ØÐ/Ñ/°AÒ5Ð5Ð5Ð5ð ,OÐ+NÑ+PÔ+PÐ(Ø%;Ð%;¸A¸rÑ%BÔ%BÐ"Ø&=Ð&=ØÐ0ñ'ô 'Ð#ð Ø(Ð+=Ñ=Ø+ñ,à(ñ)ñð r<   c                  ó   — dS )Nr,  r@   r@   r<   r:   r‹  zGget_kai_packed_weight_size.<locals>.kai_get_bf16_datatype_size_in_bytese  s   € Ø�qr<   c                 ó@   •— |‰z  dk    sJ ‚t          | |¦  «        |z  S r§  rr  )rš  r‚  rƒ  s     €r:   rŒ  z:get_kai_packed_weight_size.<locals>.kai_num_blocks_per_rowh  s/   ø€ ØÐ/Ñ/°AÒ5Ð5Ð5Ð5Ý" 1 bÑ)Ô)¨RÑ/Ð/r<   c                 ó*   •— | ‰z  dk    sJ ‚| dz  |z   S )Nr   r,  r@   )r‚  rˆ  rƒ  s     €r:   r�  z;get_kai_packed_weight_size.<locals>.kai_num_bytes_per_blockl  s*   ø€ ØÐ/Ñ/°AÒ5Ð5Ð5Ð5Ø˜a™Ð#;Ñ;Ð;r<   r@   )Ún_bitsr¹  ÚKÚ	groupsizeÚkai_nrÚkai_krÚkai_srr€  r†  rƒ  r‹  r„  r}  rv  r…  rŒ  rz  r{  r�  r|  s            @@@@@@@@@@@r:   Úget_kai_packed_weight_sizer—    sÐ  øøøøøøøøøøø€ Ø�‚{€{Ø˜Š>ˆ>àˆFØˆFØˆFØ$%Ð!Ø+,Ð(Ø!"Ðð8ð 8ð 8ðð ð ð ð ð ð ð ð
ð 
ð 
ð 
ð 
ð KÐJØ�1�f˜f fñô ð ð ˜‰^˜qÒ Ð  Q¨¡]°aÒ%7Ð%7ØˆFØˆFØˆFØ$%Ð!Ø!"ÐØ!"ÐØ!#Ððð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð,ð ð ð0ð 0ð 0ð 0ð 0ð<ð <ð <ð <ð <ð MÐLØ�1�f˜f f¨iñô ð ðO €{ðZ !Ð Ð%7Ð%7r<   c                 ó@  ‡ — t          j        ‰ j        t           j        u ˆ fd„¦  «         t           j        j                             ¦   «         rˆ||k    r|j        t           j        k    s-||k     rg|dz  dk    r^||z  dk    rU|j        t           j        k    r@t          d|||¦  «        }‰  
                    t          |¦  «        t           j        ¬¦  «        S ‰                      ¦   «         |                     ¦   «         z   }‰  
                    |t           j        ¬¦  «        S )Nc                  ó   •— d‰ j         › �S rG  r‰   )Úweightss   €r:   r_   z2meta__dyn_quant_pack_4bit_weight.<locals>.<lambda>{  s   ø€ Ð>¨w¬}Ð>Ð>€ r<   rK  r   r<  r‰   )rP   ra   rX   r	  ÚbackendsÚkleidiaiÚis_availablerT   r–  r—  r�   r"  r�   )rš  Úscales_zerosrv  Ú
block_sizeÚin_featuresÚout_featuresÚpacked_weight_sizes   `      r:   Ú meta__dyn_quant_pack_4bit_weightr£  u  s  ø€ õ 
„LØŒ�œÐ$Ø>Ð>Ð>Ð>ñô ð õ „~Ô×+Ò+Ñ-Ô-ð MØ	�{Ò	"Ð	" |Ô'9½U¼[Ò'HÐ'Hà˜Ò$Ð$Ø˜R‘ 1Ò$Ð$Ø˜jÑ(¨AÒ-Ð-ØÔ"¥e¤nÒ4Ð4õ 8Øˆ|˜[¨*ñ
ô 
Ðð × Ò ¥Ð%7Ñ!8Ô!8ÅÄÐ ÑLÔLÐLØ Ÿš™œ¨<×+=Ò+=Ñ+?Ô+?Ñ?ÐØ×ÒÐ/µu´{ÐÑCÔCÐCr<   c                 ó  ‡ — t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        fv ˆ fd„¦  «         ‰                      d¦  «        }‰                      ||‰ j        ¬¦  «        S )Nr,  c                  ó   — dS )Nzinput must be a 2D tensorr@   r@   r<   r:   r_   z-meta__dyn_quant_matmul_4bit.<locals>.<lambda>–  s   € Ð)D€ r<   c                  ó   •— d‰ j         › �S )Nzexpected input to be f32, got r‰   )Úinps   €r:   r_   z-meta__dyn_quant_matmul_4bit.<locals>.<lambda>™  s   ø€ Ð<°´Ð<Ð<€ r<   r   r‰   )rP   ra   r   rX   r”  rœ   r�   )r§  Úpacked_weightsrŸ  r   r¡  r×  s   `     r:   Úmeta__dyn_quant_matmul_4bitr©  Ž  s€   ø€ õ 
„L�—’‘”˜a’Ð!DÐ!DÑEÔEÐEÝ	„LØŒ	•e”m�_Ð$Ø<Ð<Ð<Ð<ñô ð ð 	�Š�‰Œ€AØ�=Š=˜˜L°´	ˆ=Ñ:Ô:Ð:r<   c                 ó  ‡ ‡— t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        t           j        t           j        fv ˆ fd„¦  «         t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰j        t           j        u ˆfd„¦  «         ‰                      ‰  	                    d¦  «        ‰ 	                    d¦  «        ‰ j        ¬¦  «        S )Nr,  c                  ó   — dS rV  r@   r@   r<   r:   r_   z*meta__weight_int8pack_mm.<locals>.<lambda>¡  r;  r<   c                  ó   •— d‰ j         › �S rY  r‰   rZ  s   €r:   r_   z*meta__weight_int8pack_mm.<locals>.<lambda>¤  r[  r<   c                  ó   — dS rE  r@   r@   r<   r:   r_   z*meta__weight_int8pack_mm.<locals>.<lambda>¦  r;  r<   c                  ó   •— d‰ j         › �S )Nzexpected w to be int8, got r‰   rH  s   €r:   r_   z*meta__weight_int8pack_mm.<locals>.<lambda>©  s   ø€ Ð7¨a¬gÐ7Ð7€ r<   r   r‰   )
rP   ra   r   rX   r”  r•  r–  r{  r�   rœ   )rG   r  Úq_scaless   `` r:   Úmeta__weight_int8pack_mmr°  Ÿ  sÝ   øø€ å	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•E”M¥5¤=µ%´.ÐAÐAØ?Ð?Ð?Ð?ñô ð õ 
„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•5”:ÐØ7Ð7Ð7Ð7ñô ð ð �;Š;�q—v’v˜a‘y”y !§&¢&¨¡)¤)°1´7ˆ;Ñ;Ô;Ð;r<   c                 óŽ  ‡ ‡‡— t          j        ‰                      ¦   «         dk    ˆ fd„¦  «         t          j        ‰                     ¦   «         dk    ˆfd„¦  «         t          j        ‰                      d¦  «        ‰                     d¦  «        k    ˆ ˆfd„¦  «         t          j        t	          j        ‰ j        ¦  «        d„ ¦  «         t          j        t	          j        ‰j        ¦  «        d„ ¦  «         t          j        |dk    d	„ ¦  «         t          j        ‰d
v ˆfd„¦  «         ‰                      d¦  «        }‰                     d¦  «        }‰ j        d d…         }‰j        d d…         }t          t          j	        ||¦  «        ¦  «        }| 
                    ||g¦  «         ‰                      |¦  «        S )Nr,  c                  ó4   •— d‰                       ¦   «         › d�S )Nz1cdist only supports at least 2D tensors, X1 got: r7  r•   )Úx1s   €r:   r_   z$meta_cdist_forward.<locals>.<lambda>²  ó   ø€ ÐOÀBÇFÂFÁHÄHÐOÐOÐO€ r<   c                  ó4   •— d‰                       ¦   «         › d�S )Nz1cdist only supports at least 2D tensors, X2 got: r7  r•   )Úx2s   €r:   r_   z$meta_cdist_forward.<locals>.<lambda>¶  r´  r<   r”   c                  ó`   •— d‰                       d¦  «        › d‰                      d¦  «        › �S )Nz4X1 and X2 must have the same number of columns. X1: r”   z X2: r›   )r³  r¶  s   €€r:   r_   z$meta_cdist_forward.<locals>.<lambda>º  s2   ø€ ÐfÀrÇwÂwÈrÁ{Ä{ÐfÐfÐY[×Y`ÒY`ÐacÑYdÔYdÐfÐf€ r<   c                  ó   — dS )Nz=cdist only supports floating-point dtypes, X1 got: {x1.dtype}r@   r@   r<   r:   r_   z$meta_cdist_forward.<locals>.<lambda>¾  r˜   r<   c                  ó   — dS )Nz=cdist only supports floating-point dtypes, X2 got: {x2.dtype}r@   r@   r<   r:   r_   z$meta_cdist_forward.<locals>.<lambda>Â  r˜   r<   r   c                  ó   — dS )Nz)cdist only supports non-negative p valuesr@   r@   r<   r:   r_   z$meta_cdist_forward.<locals>.<lambda>Ä  s   € Ð!L€ r<   ©Nr¬   r,  c                  ó   •— d‰ › �S )Nz%possible modes: None, 1, 2, but was: r@   )Úcompute_modes   €r:   r_   z$meta_cdist_forward.<locals>.<lambda>Ç  s   ø€ ÐF¸ÐFÐF€ r<   rô  )rP   ra   r   rœ   rJ   Úis_float_dtyperX   r‘   r  Úbroadcast_shapesÚextendr�   )	r³  r¶  rq  r½  Úr1Úr2Úbatch_tensor1Úbatch_tensor2rœ  s	   `` `     r:   Úmeta_cdist_forwardrÅ  ®  sÄ  øøø€ å	„LØ
�Š‰Œ�AŠØOÐOÐOÐOñô ð õ 
„LØ
�Š‰Œ�AŠØOÐOÐOÐOñô ð õ 
„LØ
�Š�‰Œ�r—w’w˜r‘{”{Ò"ØfÐfÐfÐfÐfñô ð õ 
„LÝÔ˜RœXÑ&Ô&ØOÐOñô ð õ 
„LÝÔ˜RœXÑ&Ô&ØOÐOñô ð õ 
„L��a’ÐLÐLÑMÔMÐMÝ	„LØ˜Ð$ØFÐFÐFÐFñô ð ð 
�Š�‰Œ€BØ	�Š�‰Œ€BØ”H˜S˜b˜S”M€MØ”H˜S˜b˜S”M€MÝ�Ô.¨}¸mÑLÔLÑMÔM€LØ×Ò˜˜R˜Ñ!Ô!Ð!Ø�<Š<˜Ñ%Ô%Ð%r<   c                 ó@  — |j         d         }|j         d         }|j         d         }|j         d d…         }|j         d d…         }	t          t          j        ||	¦  «        ¦  «        }
|
                     ¦   «         }|                     ||g¦  «         t          j        |
¦  «        }|dk    s|dk    s|dk    s|dk    rt          j        |¦  «        S |t          |j         ¦  «        k    r| 	                    |¦  «        }t          j
        |t          j        ¬¦  «        S )Nr”   rô  r   ræ   )r‘   r  rP   r¿  ÚcopyrÀ  ÚmathÚprodÚ
zeros_liker´  rê   rë   )ru  r³  r¶  rq  ÚcdistÚc1rÁ  rÂ  rÃ  rÄ  r°  Útensor1_expand_sizeÚbatch_products                r:   Úmeta_cdist_backwardrÏ  Ò  s
  € ð 
Œ�"Œ€BØ	Œ�"Œ€BØ	Œ�"Œ€BØ”H˜S˜b˜S”M€MØ”H˜S˜b˜S”M€MÝ¥Ô 6°}ÀmÑ TÔ TÑUÔUÐØ.×3Ò3Ñ5Ô5ÐØ×Ò  B˜xÑ(Ô(Ð(Ý”IÐ2Ñ3Ô3€MØ	ˆQ‚w€w�"˜’'�'˜R 1šW˜W¨¸Ò(:Ð(:ÝÔ Ñ#Ô#Ð#Ø�d 2¤8™nœnÒ,Ð,Ø�YŠYÐ*Ñ+Ô+ˆÝÔ˜B­eÔ.EÐFÑFÔFÐFr<   c	                 ór  ‡ ‡‡‡‡‡— t          j        ‰j        t           j        t           j        fv ˆfd„¦  «         t          j        ‰j        t           j        t           j        fv ˆfd„¦  «         t          j        t          j        ‰ j        ¦  «        ˆ fd„¦  «         ‰                     d¦  «        }	|rt          j        |	dk    d„ ¦  «         |	dz  }	‰                      |	‰                      d¦  «        ¦  «        }
‰��t          j        |t          k    d„ ¦  «         t          j        ‰j
        dk    ˆfd„¦  «         t          j        ‰                     ¦   «         ‰                     ¦   «         k    ˆˆfd	„¦  «         ˆfd
„Šd„ Šˆˆfd„}t          ‰¦  «        dk    r›‰                     ‰                     d¦  «        ¦  «        }‰                     ‰                     ¦   «         ¦  «        }|t          k    r+‰                     |	‰                      d¦  «        ¦  «        }�n‰                     d¦  «        }nõ |‰ ‰|
|¦  «        }|t          t          fv s|s)‰                     ‰                     d¦  «        ¦  «        }n‰                     d¦  «        }‰                     |	¦  «        }‰j        d         }|t          k    rC|rt          j        |dk    d„ ¦  «         |dz  }‰                     |‰ j        d         ¦  «        }n'‰                     |                     ¦   «         ¦  «        }|
|||fS )Nc                  ó   •— d‰ j         › �S )Nz(expected indices to be long or int, got r‰   )rï   s   €r:   r_   z$meta_embedding_bag.<locals>.<lambda>÷  ó   ø€ ÐJ¸7¼=ÐJÐJ€ r<   c                  ó   •— d‰ j         › �S )Nz(expected offsets to be long or int, got r‰   )r«  s   €r:   r_   z$meta_embedding_bag.<locals>.<lambda>û  rÒ  r<   c                  ó   •— d‰ j         › �S )Nz/expected weight to be floating point type, got r‰   )rt  s   €r:   r_   z$meta_embedding_bag.<locals>.<lambda>ÿ  s   ø€ ÐPÀ&Ä,ÐPÐP€ r<   r   r¬   c                  ó   — dS ©Nz1include_last_offset: numBags should be at least 1r@   r@   r<   r:   r_   z$meta_embedding_bag.<locals>.<lambda>  s   € ÐG€ r<   c                  ó   — dS )Nz@embedding_bag: per_sample_weights only supported with mode='sum'r@   r@   r<   r:   r_   z$meta_embedding_bag.<locals>.<lambda>  s   € ÐV€ r<   c                  ó   •— d‰ j         › d�S )Nz1expected per_sample_weights to be 1D tensor, got r7  r8  )Úper_sample_weightss   €r:   r_   z$meta_embedding_bag.<locals>.<lambda>  s   ø€ ÐbÐHZÔH_ÐbÐbÐb€ r<   c                  ó^   •— d‰                      ¦   «         › d‰                       ¦   «         › d�S )Nz%expected per_sample_weights.numel() (z$ to be the same as indices.numel() (rr   ©r�   )rï   rÙ  s   €€r:   r_   z$meta_embedding_bag.<locals>.<lambda>  sF   ø€ ðIÐ8J×8PÒ8PÑ8RÔ8Rð Ið IØ6=·m²m±o´oðIð Ið Ið r<   c                 óP   •—  ‰| ||¦  «        o|                      d¦  «        dk    S ©Nr   r¬   ©rÅ   )re  r¨  r;  Úpadding_idxÚis_fast_path_index_selects       €r:   Úis_fast_path_index_select_scalez;meta_embedding_bag.<locals>.is_fast_path_index_select_scale  s0   ø€ à%Ð% c¨6°;Ñ?Ô?ÐXÀEÇLÂLÐQRÁOÄOÐWXÒDXð	
r<   c                 óÆ   — | j         t          j        k    s| j         t          j        k    o7|                      d¦  «        dk    o|                     d¦  «        dk    o|dk     S ©Nr¬   r   )rX   rP   rT   rR   rÅ   )re  r;  rß  s      r:   rà  z5meta_embedding_bag.<locals>.is_fast_path_index_select"  s_   € àŒY�%œ+Ò%Ð@¨¬µe´jÒ)@ð  Ø—
’
˜1‘” Ò"ð à—’˜aÑ Ô  AÒ%ð ð ˜a’ð		
r<   c                 ó>   •— |� ‰| |||¦  «        S  ‰| ||¦  «        S r7   r@   )re  r¨  r;  rß  rà  rá  s       €€r:   Úis_fast_pathz(meta_embedding_bag.<locals>.is_fast_path*  s5   ø€ ØÐØ2Ð2°3¸¸vÀ{ÑSÔSÐSà,Ð,¨S°&¸+ÑFÔFÐFr<   Úcpuc                  ó   — dS rÖ  r@   r@   r<   r:   r_   z$meta_embedding_bag.<locals>.<lambda>D  s   € ÐO€ r<   )rP   ra   rX   r�   r"  rJ   r¾  rœ   r�   ÚMODE_SUMrž   r�   r4  ÚMODE_MAXÚ	MODE_MEANr‘   )rt  rï   r«  Úscale_grad_by_freqr�  ÚsparserÙ  Úinclude_last_offsetrß  Únum_bagsr;  rå  Ú
offset2bagÚbag_sizeÚmax_indicesÚfast_path_sumÚnumBagsrà  rá  s   ```   `          @@r:   Úmeta_embedding_bagrô  é  s„  øøøøøø€ õ 
„LØŒ�%œ*¥e¤iÐ0Ð0ØJÐJÐJÐJñô ð õ 
„LØŒ�%œ*¥e¤iÐ0Ð0ØJÐJÐJÐJñô ð õ 
„LÝÔ˜Vœ\Ñ*Ô*ØPÐPÐPÐPñô ð ð
 �|Š|˜A‰Œ€HØð ÝŒØ˜ŠMØGÐGñ	
ô 	
ð 	
ð 	�A‰ˆà×Ò˜h¨¯ª°A©¬Ñ7Ô7€FàÐ%ÝŒØ•HÒØVÐVñ	
ô 	
ð 	
õ 	ŒØÔ# qÒ(ØbÐbÐbÐbñ	
ô 	
ð 	
õ 	ŒØ×$Ò$Ñ&Ô&¨'¯-ª-©/¬/Ò9ðð ð ð ð ñ	
ô 	
ð 	
ð
ð 
ð 
ð 
ð 
ð

ð 
ð 
ðGð Gð Gð Gð Gð Gõ �7ÑÔ˜uÒ$Ð$Ø×&Ò& w§|¢|°A¡¤Ñ7Ô7ˆ
Ø×$Ò$ W§\¢\¡^¤^Ñ4Ô4ˆØ•8ÒÐØ!×+Ò+¨H°f·k²kÀ!±n´nÑEÔEˆK‰Kà!×+Ò+¨AÑ.Ô.ˆKˆKà$˜ VÐ-?ÀÈÑUÔUˆØ•I�xÐ(Ð(Ð(°Ð(Ø ×*Ò*¨7¯<ª<¸©?¬?Ñ;Ô;ˆJˆJà ×*Ò*¨1Ñ-Ô-ˆJØ×$Ò$ XÑ.Ô.ˆà”- Ô"ˆØ•8ÒÐØ"ð Ý”Ø˜q’LØOÐOñô ð ð ˜1‘�Ø!×+Ò+¨G°V´\À!´_ÑEÔEˆKˆKà!×+Ò+¨H¯MªM©O¬OÑ<Ô<ˆKØ�:˜x¨Ð4Ð4r<   c                 óª   — t          | ||g|¢R Ž \  }}}}t          |¦  «        dk    r'|                     |                     ¦   «         ¦  «        }||||fS )Nræ  )rô  r4  r�   rœ   )rt  rï   r«  rL   r;  rï  rð  rñ  s           r:   Úmeta_embedding_bag_forward_onlyrö  M  sm   € å0BØ�˜ð1Ø#'ð1ð 1ð 1Ñ-€FˆJ˜ +õ �7ÑÔ˜uÒ$Ð$Ø×$Ò$ W§\¢\¡^¤^Ñ4Ô4ˆØ�:˜x¨Ð4Ð4r<   c                 ór   — |r|S | j         j        s| j         j        r| j         S |rt          j        S | j         S r7   )rX   r3  r'  rP   r�   )r  rX   Úpromote_int_to_longs      r:   Ú_get_reduction_dtyperù  W  sH   € àð Øˆà„{Ô$ð ¨¬Ô(>ð ØŒ{ÐØ	ð ÝŒzÐàŒ;Ðr<   r‰   c                óª   — t          | |d¬¦  «        }t          j        | j        |¦  «        }t	          | ||¦  «        }|                      ||¬¦  «        S )NT)rø  r‰   )rù  rJ   r¿  r‘   rÀ  r�   )r  r¾  rÂ  rX   r  rœ  s         r:   Úmeta_nansumrû  d  sS   € õ (¨¨uÈ$ÐOÑOÔO€LÝÔ ¤¨TÑ2Ô2€DÝ+¨E°4¸ÑAÔA€LØ�?Š?˜<¨|ˆ?Ñ<Ô<Ð<r<   c           	      ó¸   — t          j        | j        t          t	          |                      ¦   «         ¦  «        ¦  «        ¦  «        }|                      |¦  «        S r7   )rJ   r¿  r‘   r`   r±   r   r�   )r  rœ  s     r:   Úmeta_medianrý  m  sG   € åÔ7ØŒ•U�5 §¢¡¤Ñ-Ô-Ñ.Ô.ñô €Lð �?Š?˜<Ñ(Ô(Ð(r<   c                 ó  — t          | ¦  «        dk    rt          j        d¦  «         t          j        | j        |f¦  «        }t          | ||¦  «        }|                      |¦  «        |                      |t          j        ¬¦  «        fS )Nr0  zmedian CUDA with indices outputr‰   )	r4  rJ   Úalert_not_deterministicr¿  r‘   rÀ  r�   rP   r�   )r  r   rÂ  rœ  s       r:   Úmeta_median_mode_dimr   u  s~   € õ �5ÑÔ˜VÒ#Ð#ÝÔ%Ð&GÑHÔHÐHÝ
Ô
˜uœ{¨S¨FÑ
3Ô
3€CÝ+¨E°3¸Ñ@Ô@€Là�Š˜Ñ%Ô%Ø�Š˜­E¬JˆÑ7Ô7ðð r<   c                 ó   — | S r7   r@   rì   s    r:   Úmeta_logical_not_r  ‹  rš  r<   c                 óØ  ‡‡‡‡— t          j        t          ‰¦  «        |                      ¦   «         k    d„ ¦  «         t	          ‰¦  «        D ]"\  ŠŠt          j        ‰dk    ˆˆfd„¦  «         Œ#t          ‰¦  «        |                      ¦   «         z
  }d|z  t          | j        ¦  «        z   Šˆˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         }|                      |¦  «        S )Nc                  ó   — dS )NzZNumber of dimensions of repeat dims can not be smaller than number of dimensions of tensorr@   r@   r<   r:   r_   zmeta_repeat.<locals>.<lambda>”  s   € Ðl€ r<   r   c                  ó   •— d‰› d‰ › �S )Nz"Repeats cannot be negative, found rì  r@   )r  Úreps   €€r:   r_   zmeta_repeat.<locals>.<lambda>™  s   ø€ ÐK¸ÐKÐKÈÐKÐK€ r<   r+  c                 ó2   •— g | ]}‰|         ‰|         z  ‘ŒS r@   r@   )rF   r  Úpadded_sizer×  s     €€r:   rI   zmeta_repeat.<locals>.<listcomp>   s&   ø€ ÐLÐLÐL°1�;˜q”> G¨A¤JÑ.ÐLÐLÐLr<   )	rP   ra   r®   r   rö  r`   r‘   r±   r�   )r’   r×  Únum_new_dimensionsÚtarget_sizer  r  r  s    `  @@@r:   Úmeta_repeatr  �  só   øøøø€ å	„LÝˆG‰Œ˜Ÿš™
œ
Ò"ØlÐlñô ð õ ˜GÑ$Ô$ð 
ð 
‰ˆˆ3ÝŒØ�1ŠHØKÐKÐKÐKÐKñ	
ô 	
ð 	
ð 	
õ ˜W™œ¨¯ª©
¬
Ñ2ÐØÐ+Ñ+­e°D´JÑ.?Ô.?Ñ?€KØLÐLÐLÐLÐL½½cÀ'¹l¼lÑ8KÔ8KÐLÑLÔL€KØ�>Š>˜+Ñ&Ô&Ð&r<   c                 ó   — | S r7   r@   rì   s    r:   Ú
meta_zero_r  ¤  rš  r<   c                 ón   — t          |t          j        ¦  «        rt          | j        |j        ¦  «         | S r7   )rj   rP   r   rc   r‘   ©r’   r�   s     r:   Úmeta_binop_inplacer  ©  s1   € õ �%�œÑ&Ô&ð 9Ý ¤
¨E¬KÑ8Ô8Ð8Ø€Kr<   c                 ó  — d„ }d„ }d„ } || ¦  «        r ||¦  «        rt          d¦  «        ‚ || ¦  «        r ||¦  «        st          d¦  «        ‚t          |t          j        ¦  «        rt	          | j        |j        ¦  «         | S )a*  
    Some checks for inplace ops.
    Checks for promotion rules for some dtypes.
    int.add/sub_(float) and bool.add/sub_(others) are rejected.
    Promoting in these in-place operations would require reallocating
    and copying over elements, hence not allowed.
    Checks for alpha param.
    c                 óˆ   — t          | t          ¦  «        rt          j        | j        ¦  «        S t          | t
          ¦  «        S r7   )rj   r#   rJ   ro  rX   r   ©rl   s    r:   Úis_integericz.meta_binop_inplace_alpha.<locals>.is_integericÌ  s7   € Ý�c�:Ñ&Ô&ð 	,ÝÔ)¨#¬)Ñ4Ô4Ð4å˜c¥7Ñ+Ô+Ð+r<   c                 óˆ   — t          | t          ¦  «        rt          j        | j        ¦  «        S t          | t
          ¦  «        S r7   )rj   r#   rJ   r¾  rX   r   r  s    r:   Ú
is_floaticz,meta_binop_inplace_alpha.<locals>.is_floaticÒ  s7   € Ý�c�:Ñ&Ô&ð 	.ÝÔ'¨¬	Ñ2Ô2Ð2å˜c¥9Ñ-Ô-Ð-r<   c                 óˆ   — t          | t          ¦  «        rt          j        | j        ¦  «        S t          | t
          ¦  «        S r7   )rj   r#   rJ   Úis_boolean_dtyperX   r   r  s    r:   Úis_booleanicz.meta_binop_inplace_alpha.<locals>.is_booleanicØ  s7   € Ý�c�:Ñ&Ô&ð 	-ÝÔ)¨#¬)Ñ4Ô4Ð4å˜c¥8Ñ,Ô,Ð,r<   z]Promotion of int.add/sub_(float) in in-place ops are not possible due to element size change.z_Promotion of book.add/sub_(others) in in-place ops are not possible due to element size change.)ra  rj   rP   r   rc   r‘   )r’   r�   r†  r  r  r  s         r:   Úmeta_binop_inplace_alphar  º  sÒ   € ð$,ð ,ð ,ð.ð .ð .ð-ð -ð -ð €|�DÑÔð 
˜j˜j¨Ñ/Ô/ð 
ÝØkñ
ô 
ð 	
ð
 €|�DÑÔð 
 , ,¨uÑ"5Ô"5ð 
ÝØmñ
ô 
ð 	
õ �%�œÑ&Ô&ð 9Ý ¤
¨E¬KÑ8Ô8Ð8Ø€Kr<   c                 ó8   — t          | t          j        ¬¦  «        S ©N©rB   ©rN   r   rK   )r’   r  s     r:   Ú
meta_roundr  ï  s"   € åØÕ<ÔDðñ ô ð r<   c                 ó\  ‡ ‡‡— t          j        t          j        ‰j        ¦  «        ˆ ˆfd„¦  «         t          ‰t           j        ¦  «        r2t          j        t          j        ‰j        ¦  «        ˆ ˆfd„¦  «         d S t          j        t          ‰t          ¦  «        ˆ ˆfd„¦  «         d S )Nc                  ó   •— ‰ › d‰j         › �S )Nz7: Expected input tensor to have an integral dtype. Got r‰   )r  r’   s   €€r:   r_   z#shift_dtype_check.<locals>.<lambda>ù  s   ø€ �7Ð_Ð_ÐSWÔS]Ð_Ð_€ r<   c                  ó   •— ‰ › d‰j         › �S )Nz6: Expected shift value to have an integral dtype. Got r‰   ©r  rÔ  s   €€r:   r_   z#shift_dtype_check.<locals>.<lambda>þ  s   ø€ �wÐaÐaÐVYÔV_ÐaÐa€ r<   c                  ó   •— ‰ › d‰› �S )Nz): Expected shift value to be an int. Got r@   r#  s   €€r:   r_   z#shift_dtype_check.<locals>.<lambda>  s   ø€ �wÐNÐNÈÐNÐN€ r<   )rP   ra   rJ   ro  rX   rj   r   r   )r  r’   rÔ  s   ```r:   Úshift_dtype_checkr%  ö  sÇ   øøø€ Ý	„LÝÔ˜tœzÑ*Ô*Ø_Ð_Ð_Ð_Ð_ñô ð õ �#•u”|Ñ$Ô$ð 	
ÝŒÝÔ" 3¤9Ñ-Ô-ØaÐaÐaÐaÐañ	
ô 	
ð 	
ð 	
ð 	
õ
 	ŒÝ�s�GÑ$Ô$ØNÐNÐNÐNÐNñ	
ô 	
ð 	
ð 	
ð 	
r<   c                 ó\   — t          d| |¦  «         t          | |t          j        ¬¦  «        S )NÚrshiftr  ©r%  rN   r   rK   r  s     r:   Úmeta_rshiftsr)    ó6   € å�h  eÑ,Ô,Ð,ÝØˆeÕ$CÔ$Kðñ ô ð r<   c                 ó\   — t          d| |¦  «         t          | |t          j        ¬¦  «        S )NÚlshiftr  r(  r  s     r:   Úmeta_lshiftsr-    r*  r<   c                 ó6   — |                       | j        ¦  «        S r7   rÿ  rì   s    r:   Ú	meta_zeror/    s   € à�>Š>˜$œ*Ñ%Ô%Ð%r<   c                 ó   — | S r7   r@   ©r’   rÔ  s     r:   Ú
meta_fill_r2    rš  r<   c                 ó*   — t          j        | ¦  «        S r7   rž  r1  s     r:   Ú	meta_fillr4  !  ó   € åÔ˜DÑ!Ô!Ð!r<   c                 ó   — | S r7   r@   rì   s    r:   Ú
meta_relu_r7  &  rš  r<   c                 ó:   — t          | |t          j        ¬¦  «        S r  r  )r’   r�   r†  s      r:   Úmeta__add_relur9  +  s&   € õ ØˆeÕ$CÔ$Kðñ ô ð r<   ç      À?çUUUUUUÕ?c                 ó*   — t          j        | ¦  «        S r7   rž  ©r’   ÚnoiseÚlowerr  râ  rA  s         r:   Úmeta_rrelu_with_noiser@  3  s   € õ
 Ô˜DÑ!Ô!Ð!r<   c                 óR   — t          j        | ¦  «        t          j        |¦  «        fS r7   rž  r=  s         r:   Ú meta_rrelu_with_noise_functionalrB  ;  s%   € õ Ô˜DÑ!Ô!¥5Ô#3°EÑ#:Ô#:Ð:Ð:r<   c                 ó   — | S r7   r@   )r’   r?  r  râ  rA  s        r:   Úmeta_rrelu_with_noise_rD  B  s	   € ð €Kr<   c                 ó*   — t          j        | ¦  «        S r7   rž  ©r’   rï   rî   Ú
accumulates       r:   Úmeta_index_putrH  I  r5  r<   c                 ó:   — t          | j        |j        ¦  «         | S r7   ©rc   r‘   )r’   r°  Úvalues      r:   Úmeta_masked_fill_rL  N  s   € å˜DœJ¨¬
Ñ3Ô3Ð3Ø€Kr<   c                 ó    — |                       |                      ¦   «         ¦  «                             t          j        | ¦  «        ¬¦  «        }|S rö   )r�   rœ   rb  rJ   r"   )r’   r°  r¨  Úmasked_scales       r:   Úmeta__masked_scalerO  T  sF   € à—>’> $§)¢)¡+¤+Ñ.Ô.×1Ò1ÝÔ1°$Ñ7Ô7ð 2ñ ô €Lð Ðr<   c                 ó¾   ‡ ‡— t          j        |j        t           j        t           j        fv d„ ¦  «         t          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         ‰ S )Nc                  ó   — dS )NzMask must be bool or uint8r@   r@   r<   r:   r_   z&meta_masked_scatter_.<locals>.<lambda>_  s   € Ð9U€ r<   c                  ó(   •— d‰ j         › d‰j         › �S )NzEmasked_scatter: expected self and source to have same dtypes but got rš   r‰   )r’   rŸ  s   €€r:   r_   z&meta_masked_scatter_.<locals>.<lambda>c  s(   ø€ ð :Øœ*ð:ð :Ø+1¬<ð:ð :€ r<   )rP   ra   rX   r&  r	  )r’   r°  rŸ  s   ` `r:   Úmeta_masked_scatter_rS  \  ss   øø€ å	„LØŒ
•u”z¥5¤;Ð/Ð/Ð1UÐ1Uñô ð õ 
„LØŒ
�f”lÒ"ð	:ð 	:ð 	:ð 	:ð 	:ñô ð ð
 €Kr<   c                 óŠ   — t          | |¦  «        \  } }t          j        | t          j        ¬¦  «        }t	          |||¦  «        S rö   )r*   rP   rê   rë   rS  )r’   r°  rŸ  r;  s       r:   Úmeta_masked_scatterrU  i  sA   € õ " $¨Ñ-Ô-�J€Dˆ$ÝÔ˜dµ%Ô2IÐJÑJÔJ€FÝ ¨¨fÑ5Ô5Ð5r<   c                 ó,   — |                       |¦  «        S r7   r¹  )r’   r°  rx  s      r:   Úmeta_masked_scatter_backwardrW  q  s   € à�>Š>˜%Ñ Ô Ð r<   c                 ó   — | S r7   r@   rF  s       r:   Úmeta_index_put_rY  v  rš  r<   c                 ó6   — |                       | j        ¦  «        S r7   )Úviewr‘   rì   s    r:   Ú
meta_aliasr\  {  s   € à�9Š9�T”ZÑ Ô Ð r<   c                 ó®  ‡‡
‡‡‡— t          j        |                      ¦   «         dk    d„ ¦  «         t          j        |                     ¦   «         dk    d„ ¦  «         |                      ¦   «         }|                     ¦   «         Š
|d         Š|d         Š|d         }‰
d         }‰||fŠt          j        ‰
d         ‰k    o‰
d         ‰k    ˆ
ˆˆfd„¦  «         |r„| j        t           j        k    p| j        t           j        k    o|t           j        k    }t          j        || j        k    p|d„ ¦  «         |                     ‰¦  «         	                    |¦  «        }	n|                     ‰¦  «        }	|s]‰�[t          j        ‰                     ¦   «         dk    d	„ ¦  «         t          j        ‰                     ¦   «         ‰k    ˆˆfd
„¦  «         |	S )Nr2   c                  ó   — dS r}  r@   r@   r<   r:   r_   z)common_meta_baddbmm_bmm.<locals>.<lambda>�  r~  r<   c                  ó   — dS r€  r@   r@   r<   r:   r_   z)common_meta_baddbmm_bmm.<locals>.<lambda>‚  r~  r<   r   r,  r¬   c            	      ó:   •— d‰› d‰› d‰ d         › d‰ d         › d�	S r…  r@   r‡  s   €€€r:   r_   z)common_meta_baddbmm_bmm.<locals>.<lambda>�  sU   ø€ ð RÐSUð Rð RØðRð RØ+7¸¬?ðRð RØ>JÈ1¼oðRð Rð R€ r<   c                  ó   — dS )Nzfout_dtype only supported for torch.float32 output with float16/bfloat16 inputs or same as input dtypesr@   r@   r<   r:   r_   z)common_meta_baddbmm_bmm.<locals>.<lambda>˜  s   € Ð|€ r<   c                  ó   — dS )Nzself must be a 3D tensorr@   r@   r<   r:   r_   z)common_meta_baddbmm_bmm.<locals>.<lambda>   s   € Ð6P€ r<   c                  ó8   •— d‰ › d‰                      ¦   «         › �S )Nz*Expected an input tensor shape with shape z but got shape: r›   )r¢  Úself_baddbmms   €€r:   r_   z)common_meta_baddbmm_bmm.<locals>.<lambda>£  s%   ø€ ÐsÀÐsÐsÐ^j×^oÒ^oÑ^qÔ^qÐsÐs€ r<   )
rP   ra   r   rœ   rX   r•  r–  r”  r�   rb  )r‚  rƒ  Úis_bmmrd  rx  r‘  Úres_rowsÚres_colsÚsupported_out_dtyper;  rˆ  r‰  rŠ  r¢  s      `      @@@@r:   Úcommon_meta_baddbmm_bmmri  €  sû  øøøøø€ Ý	„L�—’‘” Ò"Ð$HÐ$HÑIÔIÐIÝ	„L�—’‘” Ò"Ð$HÐ$HÑIÔIÐIà—;’;‘=”=€LØ—;’;‘=”=€Là	�aŒ€BØ# A”ÐØ˜AŒ€HØ˜AŒ€HØ�x Ð*€Kå	„LØ�QŒ˜2ÒÐE ,¨q¤/Ð5EÒ"Eð	Rð 	Rð 	Rð 	Rð 	Rð 	Rñô ð ð
 ð /àŒL�EœMÒ)ÐK¨V¬\½U¼^Ò-Kð)à�5œ=Ò(ð 	õ 	ŒØ˜œÒ%Ð<Ð)<Ø|Ð|ñ	
ô 	
ð 	
ð ×!Ò! +Ñ.Ô.×1Ò1°)Ñ<Ô<ˆˆð ×!Ò! +Ñ.Ô.ˆàð 
�lÐ.ÝŒ�\×%Ò%Ñ'Ô'¨1Ò,Ð.PÐ.PÑQÔQÐQÝŒØ×ÒÑÔ ;Ò.ØsÐsÐsÐsÐsñ	
ô 	
ð 	
ð
 €Mr<   c                 ó$   — t          | |d¦  «        S )NT©ri  )r’   r‚  s     r:   Úmeta_bmmrl  ©  s   € å" 4¨¨tÑ4Ô4Ð4r<   c                 ó(   — t          | |d|¬¦  «        S )NT)rx  rk  )r’   r‚  rx  s      r:   Úmeta_bmm_dtypern  ®  s   € å" 4¨¨t¸yÐIÑIÔIÐIr<   c                 ó€   — | |z  }| |z  }|dk    r-t          |dk     ¦  «        t          |dk     ¦  «        k    r|dz  }|S rÝ  )r&  )rG   ÚyÚqr‘  s       r:   Údiv_rtnrr  ³  sK   € Ø	ˆQ‰€AØ	ˆA‰€Að 	ˆA‚v€v•4˜˜Aš‘;”;¥$ q¨1¢u¡+¤+Ò-Ð-Ø	ˆQ‰ˆØ€Hr<   c                 ó�   — t          | |z   |z   ||dz
  z  z
  dz
  |r|dz
  ndz   |¦  «        dz   }|r|dz
  |z  | |z   k    r|dz  }|S rã  )rr  )Ú	inputSizeÚ
kernelSizer  r  rÅ   rÇ  r1  Ú
outputSizes           r:   Úpooling_output_shape_pad_lrrw  ½  sž   € õ 	ØØñàñð ˜* q™.Ñ)ñ*ð ñ	ð
 'Ð-ˆv˜‰zˆz¨Añ/ð ñ	
ô 	
ð ñ		ð ð ð Ø˜‰N˜fÑ$¨	°EÑ(9Ò9Ð9Ø˜!‰OˆJØÐr<   c           	      óò   ‡‡‡— t          j        |dk    d„ ¦  «         t          j        ‰dk    ˆfd„¦  «         t          j        ‰‰dz
  ‰z  dz   dz  k    ˆˆˆfd„¦  «         t          | ‰‰‰|‰|¦  «        S )Nr   c                  ó   — dS )Nzstride should not be zeror@   r@   r<   r:   r_   z&pooling_output_shape.<locals>.<lambda>Ù  s   € Ð&A€ r<   c                  ó   •— d‰ › �S )Nz'pad must be non-negative, but got pad: r@   ©Úpads   €r:   r_   z&pooling_output_shape.<locals>.<lambda>Ú  s   ø€ Ð#RÈSÐ#RÐ#R€ r<   r¬   r,  c                  ó   •— d‰› d‰› d‰ › �S )NzApad should be at most half of effective kernel size, but got pad=z, kernel_size=z and dilation=r@   )rÇ  ru  r|  s   €€€r:   r_   z&pooling_output_shape.<locals>.<lambda>Ý  s;   ø€ ð@ÐPSð @ð @Ø%ð@ð @Ø5=ð@ð @ð r<   )rP   ra   rw  )rt  ru  r|  rÅ   rÇ  r1  s    `` ` r:   r]  r]  Ø  s¯   øøø€ Ý	„L�˜1’ÐAÐAÑBÔBÐBÝ	„L�˜’ÐRÐRÐRÐRÑSÔSÐSÝ	„LØ�˜a‘ 8Ñ+¨aÑ/°AÑ5Ò5ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 'Ø�:˜s C¨°¸9ñô ð r<   c           	      óL  ‡ ‡‡‡‡‡	‡
‡‡‡‡— ‰                       ¦   «         }‰	Št          j        ‰dk    o‰dk    d„ ¦  «         t          j        |dk    o|dk    d„ ¦  «         t          j        |dk    o|dk    d„ ¦  «         ‰                      d¦  «        dk    o‰                      d¦  «        dk    }|t          j        k    r6t          j        |dk    o|o‰                      d¦  «        dk    d	„ ¦  «         nXt          j        |dk    r‰                      d¦  «        dk    r|p |dk    o|o‰                      d¦  «        dk    ˆ fd
„¦  «         t          j        ‰dz  ‰k    o‰dz  ‰k    ˆˆˆˆfd„¦  «         t          j        ‰dk    o‰dk    ˆ
ˆˆ	ˆˆˆfd„¦  «         d S )Nr   c                  ó   — dS )NzCkernel size should be greater than zero, but got kH: {kH}, kW: {kW}r@   r@   r<   r:   r_   z$pool2d_shape_check.<locals>.<lambda>ý  r¿  r<   c                  ó   — dS )Nz>stride should be greater than zero, but got dH: {dH}, dW: {dW}r@   r@   r<   r:   r_   z$pool2d_shape_check.<locals>.<lambda>  s   € ÐP€ r<   c                  ó   — dS )Nz\dilation should be greater than zero, but got dilationH: {dilationH}, dilationW: {dilationW}r@   r@   r<   r:   r_   z$pool2d_shape_check.<locals>.<lambda>  s   € Ðn€ r<   r¬   r,  r<  r2   c                  ó   — dS )NzŽExpected 4D (batch mode) tensor expected for input with channels_last layout with optional 0 dim batch size for input, but got: {input.size()}r@   r@   r<   r:   r_   z$pool2d_shape_check.<locals>.<lambda>  s
   € ð Q€ r<   c                  ó2   •— d‰                       ¦   «         › �S )NzYExpected 3D or 4D (batch mode) tensor with optional 0 dim batch size for input, but got: r›   r$  s   €r:   r_   z$pool2d_shape_check.<locals>.<lambda>  s   ø€ Ð~Ðpu×pzÒpzÑp|Ôp|Ð~Ð~€ r<   c                  ó    •— d‰› d‰› d‰› d‰ › �S )NzKpad should be smaller than or equal to half of kernel size, but got padW = z	, padH = z, kW = z, kH = r@   )ra  rb  re  rf  s   €€€€r:   r_   z$pool2d_shape_check.<locals>.<lambda>  s>   ø€ ð >Øð>ð >Ø!%ð>ð >Ø.0ð>ð >Ø9;ð>ð >€ r<   c                  ó.   •— d‰› d‰ › d‰› d‰› d‰› d‰› d�S ©NzGiven input size: (rG   z). Calculated output size: (z). Output size is too smallr@   )rg  rh  r2  rm  r3  r4  s   €€€€€€r:   r_   z$pool2d_shape_check.<locals>.<lambda>  sZ   ø€ ð # kð #ð #°Kð #ð #À*ð #ð #Ø$0ð#ð #Ø3?ð#ð #ØBMð#ð #ð #€ r<   )r   rP   ra   rœ   rÜ  )r  ra  rb  rc  rd  re  rf  Ú	dilationHÚ	dilationWr2  rg  rh  r3  r4  rç   rž   Ú
valid_dimsrm  s   ```  ``  `````   @r:   r^  r^  ç  s8  øøøøøøøøøøø€ ð" �9Š9‰;Œ;€DØ€Lå	„LØ
ˆQŠÐ�2˜’6ØUÐUñô ð õ 
„LØ
ˆQŠÐ�2˜’6ØPÐPñô ð õ 
„LØ�AŠÐ'˜) aš-ØnÐnñô ð ð
 —’˜A‘” !Ò#Ð:¨¯
ª
°1©¬¸Ò(:€Jà�Ô+Ò+Ð+ÝŒØ�AŠIÐ;˜*Ð;¨¯ª°A©¬¸!Ò);ðQð Qñ	
ô 	
ð 	
ð 	
õ 	ŒØ�QŠYÐ<˜5Ÿ:š: a™=œ=¨AÒ-Ð<°*ð AØ˜’	Ð?˜jÐ?¨U¯ZªZ¸©]¬]¸aÒ-?Ø~Ð~Ð~Ð~ñ	
ô 	
ð 	
õ 
„LØ
ˆa‰�4ŠÐ+˜B !™G tšOð	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ñô ð õ 
„LØ�qÒÐ.˜\¨QÒ.ð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ñô ð ð ð r<   rŒ  r‰  ra  rb  rŠ  rc  rd  ÚpTÚpHÚpWÚ	dilationTr‡  rˆ  r�  rŽ  r�  r�  r‘  r’  r‡  c           
      ó8  ‡ ‡‡‡‡‡‡‡‡‡	‡
‡‡‡‡‡‡‡‡‡‡‡— ‰ j         }t          j        ‰dk    o‰dk    o‰dk    ˆˆˆfd„¦  «         t          j        ‰dk    o‰dk    o‰dk    ˆˆˆfd„¦  «         t          j        ‰dk    o‰dk    o‰dk    ˆˆˆfd„¦  «         t          j        |dv ˆˆ fd„¦  «         t          |¦  «        D ]@Š|dk    r‰dk    rŒt          j        ‰                      ‰¦  «        dk    ˆˆˆ fd„¦  «         ŒA|r-t          j        ‰‰k    o‰‰k    o‰‰k    ˆˆˆˆˆˆfd	„¦  «         t          j        ‰d
z  ‰k    o‰d
z  ‰
k    o‰d
z  ‰	k    ˆˆˆˆ	ˆˆ
fd„¦  «         t          j        ‰dk    o‰dk    o‰dk    ˆˆˆˆˆˆˆfd„¦  «         d S )Nr   c                  ó   •— d‰› d‰ › d‰› �S )Nz5kernel size should be greater than zero, but got kT: z, kH: z, kW: r@   )ra  r‰  rb  s   €€€r:   r_   z$pool3d_shape_check.<locals>.<lambda>A  s4   ø€ ð,Øð,ð ,Øð,ð ,Ø')ð,ð ,ð r<   c                  ó   •— d‰› d‰ › d‰› �S )Nz0stride should be greater than zero, but got dT: z, dH: z, dW: r@   )rc  rŠ  rd  s   €€€r:   r_   z$pool3d_shape_check.<locals>.<lambda>H  s$   ø€ ØW¸rÐWÐWÈÐWÐWÐSUÐWÐWð r<   c                  ó   •— d‰› d‰ › d‰› �S )Nz9dilation should be greater than zero, but got dilationT: z, dilationH: z, dilationW: r@   )r‡  r�  rˆ  s   €€€r:   r_   z$pool3d_shape_check.<locals>.<lambda>N  s;   ø€ ðVØ#ðVð VØ2;ðVð VØJSðVð Vð r<   r‚  c                  ó   •— ‰ › d‰j         › �S )Nz/: Expected 4D or 5D tensor for input, but got: rÍ   )r  r  s   €€r:   r_   z$pool3d_shape_check.<locals>.<lambda>V  s   ø€ �7ÐXÐXÈ5Ì;ÐXÐX€ r<   rX  c                  óJ   •— ‰ › d‰j         › d‰                     ‰¦  «        › d�S )NzZ: Expected input's non-batch dimensions to have positive length, but input has a shape of z and non-batch dimension z has length zero!)r‘   rœ   )r  r  r  s   €€€r:   r_   z$pool3d_shape_check.<locals>.<lambda>_  sG   ø€ Øð Mð MØ-2¬[ðMð Mà,1¯JªJ°q©M¬MðMð Mð Mð r<   c                  ó.   •— d‰› d‰ › d‰› d‰› d‰› d‰› d�S )Nzinput image (T: r`  rE  z ) smaller than kernel size (kT: ú kH: ú kW: rr   r@   )rŽ  r�  r�  ra  r‰  rb  s   €€€€€€r:   r_   z$pool3d_shape_check.<locals>.<lambda>i  s]   ø€ ð< 5ð <ð <¨gð <ð <¸6ð <ð <Ø$&ð<ð <Ø-/ð<ð <Ø68ð<ð <ð <ð r<   r,  c                  ó,   •— d‰› d‰› d‰ › d‰› d‰› d‰› �S )NzHpad should be smaller than or equal to half of kernel size, but got kT: r–  r•  z padT: z padW: z padH: r@   )ra  r‰  rb  r‹  rŠ  rŒ  s   €€€€€€r:   r_   z$pool3d_shape_check.<locals>.<lambda>q  sh   ø€ ðKØðKð KØðKð KØ%'ðKð KØ02ðKð KØ;=ðKð KØFHðKð Kð r<   r¬   c                  ó:   •— d‰› d‰› d‰ › d‰› d‰› d‰› d‰› d‰› d�S r†  r@   )rŽ  r�  r�  rŒ  r‘  r�  r’  s   €€€€€€€r:   r_   z$pool3d_shape_check.<locals>.<lambda>y  sv   ø€ ð( 'ð (ð (¨Eð (ð (°Gð (ð (¸fð (ð (Ø(/ð(ð (Ø27ð(ð (Ø:Að(ð (ØDJð(ð (ð (ð r<   )rž   rP   ra   r±   rœ   )r  rŒ  r‰  ra  rb  rŠ  rc  rd  rŠ  r‹  rŒ  r�  r‡  rˆ  r�  rŽ  r�  r�  r‘  r’  r  r‡  rž   r  s   `````````````````````  @r:   rˆ  rˆ  %  sÝ  øøøøøøøøøøøøøøøøøøøøøø€ ð0 Œ:€Då	„LØ
ˆQŠÐ$�2˜’6Ð$˜b 1šfð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ
ˆQŠÐ$�2˜’6Ð$˜b 1šfð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ�AŠÐ9˜) aš-Ð9¨I¸ªMð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ�ˆØXÐXÐXÐXÐXñô ð õ
 �4‰[Œ[ð 
ð 
ˆØ�1Š9ˆ9˜˜aš˜àÝŒØ�JŠJ�q‰MŒM˜AÒðð ð ð ð ð ñ	
ô 	
ð 	
ð 	
ð ð 
ÝŒØ�RŠKÐ:˜G ršMÐ:¨f¸ªlðð ð ð ð ð ð ð ð ñ	
ô 	
ð 	
õ 
„LØ
ˆQ‰�"ŠÐ6˜˜a™ 2šÐ6¨"¨q©&°Bª,ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ�Š
Ð3�v ’{Ð3 w°!¢|ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð r<   c                 óª  — | j         }t          | |||||||	|
||||||||||||¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         d S )Nr<  r2   r,  r¬   ©rž   rˆ  rB  )r  r0  rï   rŒ  r‰  ra  rb  rŠ  rc  rd  rŠ  r‹  rŒ  r�  r‡  rˆ  r�  rŽ  r�  r�  r‘  r’  r  rž   s                           r:   Úmax_pool3d_backward_shape_checkr›  �  s$  € ð2 Œ:€DåØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØñ+ô ð õ0 �;  d¨Q¡h°Ñ8Ô8Ð8Ý�;  d¨Q¡h°Ñ6Ô6Ð6Ý�;  d¨Q¡h°Ñ8Ô8Ð8Ý�;  d¨Q¡h°Ñ7Ô7Ð7å�7˜D $¨¡(¨GÑ4Ô4Ð4Ý�7˜D $¨¡(¨EÑ2Ô2Ð2Ý�7˜D $¨¡(¨GÑ4Ô4Ð4Ý�7˜D $¨¡(¨FÑ3Ô3Ð3Ð3Ð3r<   c                 ó  — | j         }t          | ||||||||	|
|ddd|||||||d¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         d S )Nr¬   Tr<  r2   r,  rš  )r  r0  rŒ  r‰  ra  rb  rŠ  rc  rd  rŠ  r‹  rŒ  r�  rŽ  r�  r�  r‘  r’  r  rž   s                       r:   rš  rš  ¿  sÇ   € ð* Œ:€DåØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø	Ø	Ø	ØØØØØØØØñ-ô ð õ2 �;  d¨Q¡h°Ñ8Ô8Ð8Ý�;  d¨Q¡h°Ñ6Ô6Ð6Ý�;  d¨Q¡h°Ñ8Ô8Ð8Ý�;  d¨Q¡h°Ñ7Ô7Ð7Ð7Ð7r<   c                 óP  — d„ } |d|¦  «        \  }}t          j        t          |¦  «        dv d„ ¦  «         t          |¦  «        dk    r||}
}	n |d|¦  «        \  }	}
 |d|¦  «        \  }} |d|¦  «        \  }}|                      d	¦  «        }|                      d
¦  «        }|                      d¦  «        }t	          j        | ¦  «        }|t           j        k    r-t          j        |                      ¦   «         dk    d„ ¦  «         nQ|t           j        k    r+t          j        |                      ¦   «         dv d„ ¦  «         nt          j        dd„ ¦  «         t          ||||	||¦  «        }t          ||||
||¦  «        }t          | |||	|
||||||||||¦  «         |||fS )Nc                 ó¤   ‡ — t          j        t          |¦  «        dv ˆ fd„¦  «         |d         }t          |¦  «        dk    r|n|d         }||fS )NrE  c                  ó   •— d‰ › d�S )Nzmax_pool2d: rG  r@   rH  s   €r:   r_   zEmax_pool2d_checks_and_compute_shape.<locals>.unpack.<locals>.<lambda>  rI  r<   r   r¬   rJ  rK  s   `   r:   rN  z3max_pool2d_checks_and_compute_shape.<locals>.unpackþ  rO  r<   rÕ  rP  c                  ó   — dS )NzOmax_pool2d: stride must either be omitted, a single int, or a tuple of two intsr@   r@   r<   r:   r_   z5max_pool2d_checks_and_compute_shape.<locals>.<lambda>  rS  r<   r   rÅ   rÿ  rÇ  rY  rô  r”   r<  c                  ó   — dS )NzMnon-empty 4D (batch mode) tensor expected for input with channels_last layoutr@   r@   r<   r:   r_   z5max_pool2d_checks_and_compute_shape.<locals>.<lambda>  s   € Ðc€ r<   r  c                  ó   — dS )Nz9non-empty 3D or 4D (batch mode) tensor expected for inputr@   r@   r<   r:   r_   z5max_pool2d_checks_and_compute_shape.<locals>.<lambda>!  ó   € ÐO€ r<   Fc                  ó   — dS )Nz?Unsupport memory format. Supports only ChannelsLast, Contiguousr@   r@   r<   r:   r_   z5max_pool2d_checks_and_compute_shape.<locals>.<lambda>&  s   € ÐU€ r<   )rP   ra   r®   rœ   rJ   r"   rÜ  r   rë   r]  r^  )r  rÕ  rÅ   rÿ  rÇ  r1  rN  ra  rb  rc  rd  re  rf  r‡  rˆ  r2  rg  rh  rç   r3  r4  s                        r:   r/  r/  õ  s  € ðð ð ð ˆV�M ;Ñ/Ô/�F€Bˆå	„LÝˆF‰Œ�yÐ ØaÐañô ð õ ˆ6�{„{�aÒÐØ�RˆBˆˆà�˜ &Ñ)Ô)‰ˆˆBà�˜	 7Ñ+Ô+�J€Dˆ$Ø!˜6 *¨hÑ7Ô7Ñ€IˆyØ—*’*˜R‘.”.€KØ—*’*˜R‘.”.€KØ—’˜B‘”€JåÔ/°Ñ6Ô6€MØ�Ô+Ò+Ð+ÝŒØ�IŠI‰KŒK˜1ÒØcÐcñ	
ô 	
ð 	
ð 	
ð 
�%Ô1Ò	1Ð	1ÝŒØ�IŠI‰KŒK˜6Ð!ØOÐOñ	
ô 	
ð 	
ð 	
õ
 	ŒØØUÐUñ	
ô 	
ð 	
õ
 (¨°R¸¸rÀ9ÈiÑXÔX€LÝ& z°2°t¸RÀÈIÑVÔV€KåØØ
Ø
Ø
Ø
ØØØØØØØØØØñô ð ð$ ˜ kÐ1Ð1r<   c                 óP  ‡ ‡‡‡‡‡— t          ‰|||||¦  «        \  }ŠŠt          j        ‰j        ‰ j        k    ˆ ˆfd„¦  «         |Š‰j        Šˆˆˆˆfd„}	 |	‰ ¦  «          |	|¦  «         t          j        ‰¦  «        }
t          j        ‰j        ‰j        ‰j	        |
¬¦  «        S )Nc                  ó(   •— d‰j         › d‰ j         › �S )NzExpected dtype z  for `gradOutput` but got dtype r‰   r´  s   €€r:   r_   z7meta_max_pool2d_with_indices_backward.<locals>.<lambda>V  s   ø€ Ða $¤*ÐaÐaÈkÔN_ÐaÐa€ r<   c                 ó†   •— t          | ‰‰dz
  ‰¦  «         t          | ‰‰dz
  ‰¦  «         t          | ‰‰dz
  ‰¦  «         d S )Nr2   r,  r¬   )rB  )r  rm  rž   r3  r4  s    €€€€r:   Ú_check_dim_sizez>meta_max_pool2d_with_indices_backward.<locals>._check_dim_size\  sQ   ø€ Ý�q˜$  q¡¨,Ñ7Ô7Ð7Ý�q˜$  q¡¨,Ñ7Ô7Ð7Ý�q˜$  q¡¨+Ñ6Ô6Ð6Ð6Ð6r<   r²  )
r/  rP   ra   rX   rž   rJ   r"   r„   r‘   r|   )r0  r’   rÕ  rÅ   rÿ  rÇ  r1  rï   r2  r¨  rç   rm  rž   r3  r4  s   ``         @@@@r:   Ú%meta_max_pool2d_with_indices_backwardr©  A  s÷   øøøøøø€ õ 	,Øˆk˜6 7¨H°iñ	ô 	ñ	ØØØõ
 
„LØŒ
�kÔ'Ò'ØaÐaÐaÐaÐañô ð ð
 €LØŒ9€Dð7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð
 €O�KÑ Ô Ð Ø€O�GÑÔÐåÔ/°Ñ5Ô5€MÝŒ;ØŒ
ØŒjØŒ{Ø#ð	ñ ô ð r<   c                 ó’  — t          | |||||¦  «        \  }}}|                      ¦   «         dk    r|                      d¦  «        nd}	t          j        | ¦  «        }
|                      ¦   «         dk    r|||g}n|	|||g}t          j        || j        | j        |
¬¦  «        t          j        |t
          j	        | j        |
¬¦  «        fS r-  )
r/  r   rœ   rJ   r"   rP   r„   rX   r|   rò   r0  s               r:   Úmeta_max_pool2d_with_indicesr«  m  sæ   € õ 	,Øˆ{˜F G¨X°yñ	ô 	ñ	ØØØð
  %Ÿyšy™{œ{¨aÒ/Ð/ˆU�ZŠZ˜‰^Œ^ˆ^°Q€FÝÔ/°Ñ6Ô6€MØ‡y‚y�{„{�aÒÐØ˜\¨;Ð7ˆˆà˜ \°;Ð?ˆåŒØØ”+Ø”<Ø'ð		
ñ 	
ô 	
õ 	ŒØÝ”+Ø”<Ø'ð		
ñ 	
ô 	
ðð r<   c           	      óÎ  ‡ ‡‡‡
‡‡— t          j        ‰ j        dv ˆ fd„¦  «         ‰ j        }t          |dz
  |¦  «        D ]GŠ
t          j        ‰                      ‰
¦  «        dk    d‰                      ¦   «         › d‰
› d�¦  «         ŒHt          j        t          ‰¦  «        dk    d	„ ¦  «         t          j        t          |¦  «        dk    d
„ ¦  «         ‰                      d¦  «        }‰                      d¦  «        Š‰                      d¦  «        Š|dk    r‰                      d¦  «        }nd}t          j        ‰ j        ‰j        k    d„ ¦  «         t          j        ‰j        dk    ˆfd„¦  «         ‰                     d¦  «        }‰                     d¦  «        }‰                     d¦  «        Š
t          j        ||k    d¦  «         t          j        ||k    d„ ¦  «         t          j        ‰
dk    ˆ
fd„¦  «         t          j        |d         ‰d         z   dz
  ‰k    ˆˆfd„¦  «         t          j        |d         ‰d         z   dz
  ‰k    ˆˆfd„¦  «         ‰                      ¦   «         dk    r|||d         |d         g}	n||d         |d         g}	t          j        |	‰ j        ‰ j	        ¬¦  «        t          j        |	t           j
        ‰ j	        ¬¦  «        fS )Nr  c                  ó   •— d‰ j         › �S )Nz:fractional_max_pool2d: Expected 3D or 4D tensor, but got: r8  rì   s   €r:   r_   z,meta_fractional_max_pool2d.<locals>.<lambda>˜  s   ø€ ÐXÈTÌYÐXÐX€ r<   r2   r   z^fractional_max_pool2d: Expected input to have non-zero  size for non-batch dimenions, but got r©  z emptyr,  c                  ó   — dS )NzNfractional_max_pool2d: kernel_size musteither be a single int or tuple of Intsr@   r@   r<   r:   r_   z,meta_fractional_max_pool2d.<locals>.<lambda>¦  ó	   € ð 2€ r<   c                  ó   — dS )NzOfractional_max_pool2d: output_size must either be a single int or tuple of Intsr@   r@   r<   r:   r_   z,meta_fractional_max_pool2d.<locals>.<lambda>«  r¯  r<   rY  rô  r”   r<  r¬   c                  ó   — dS )Nz6Expect _random_samples to have the same dtype as inputr@   r@   r<   r:   r_   z,meta_fractional_max_pool2d.<locals>.<lambda>¹  s   € ÐH€ r<   c                  ó   •— d‰ j         › �S )Nz1Expect _random samples to have 3 dimensions got, r8  )Úrandom_sampless   €r:   r_   z,meta_fractional_max_pool2d.<locals>.<lambda>½  s   ø€ ÐYÀNÔDWÐYÐY€ r<   z=Expect _random_samples.size(0) no less then input batch size.c                  ó   — dS )Nz<Expect _random_samples.size(1) equals to input channel size.r@   r@   r<   r:   r_   z,meta_fractional_max_pool2d.<locals>.<lambda>É  ó   € ÐN€ r<   c                  ó   •— d‰ › d�S )Nz/Expect _random_samples.size(2) equals to 2 got ú.r@   )r  s   €r:   r_   z,meta_fractional_max_pool2d.<locals>.<lambda>Ë  s   ø€ Ð!WÐSTÐ!WÐ!WÐ!W€ r<   c                  ó    •— d‰d         › d‰ › �S )Nz%fractional_max_pool2d: kernel height r   z' is too large relative to input height r@   )Úinput_heightrÕ  s   €€r:   r_   z,meta_fractional_max_pool2d.<locals>.<lambda>Ï  s   ø€ Ð}¸ÀA¼Ð}Ð}Ðo{Ð}Ð}€ r<   c                  ó    •— d‰d         › d‰ › �S )Nz$fractional_max_pool2d: kernel width r¬   z& is too large relative to input width r@   )Úinput_widthrÕ  s   €€r:   r_   z,meta_fractional_max_pool2d.<locals>.<lambda>Ó  s   ø€ Ðz°{À1´~ÐzÐzÐmxÐzÐz€ r<   râ  )rP   ra   rž   r±   rœ   r®   rX   r   r„   r|   rò   )r’   rÕ  r¢  r³  rž   Úinput_channelsÚinput_batchrD  Úcrœ   r  r¹  r»  s   `` `      @@@r:   Úmeta_fractional_max_pool2dr¿  ”  sb  øøøøøø€ å	„LØŒ	�VÐØXÐXÐXÐXñô ð ð Œ9€Då�4˜!‘8˜TÑ"Ô"ð 
ð 
ˆÝŒØ�IŠI�a‰LŒL˜1Òð]Ø6:·i²i±k´kð]ð ]ØSTð]ð ]ð ]ñ	
ô 	
ð 	
ð 	
õ 
„LÝˆKÑÔ˜AÒð	2ð 	2ñô ð õ
 
„LÝˆKÑÔ˜AÒð	2ð 	2ñô ð ð —Y’Y˜r‘]”]€NØ—9’9˜R‘=”=€LØ—)’)˜B‘-”-€KØˆq‚y€yØ—i’i ‘l”lˆˆàˆå	„LØŒ
�nÔ*Ò*ØHÐHñô ð õ 
„LØÔ˜qÒ ØYÐYÐYÐYñô ð ð
 	×Ò˜AÑÔ€AØ×Ò˜AÑÔ€AØ×Ò˜AÑÔ€AÝ	„LØ	ˆ[ÒØGñô ð õ 
„LØ	ˆ^ÒØNÐNñô ð õ 
„L��a’ÐWÐWÐWÐWÑXÔXÐXå	„LØ�AŒ˜ QœÑ'¨!Ñ+¨|Ò;Ø}Ð}Ð}Ð}Ð}ñô ð õ 
„LØ�AŒ˜ QœÑ'¨!Ñ+¨{Ò:ØzÐzÐzÐzÐzñô ð ð
 ‡x‚x�z„z�Q‚€Ø˜^¨[¸¬^¸[È¼^ÐLˆˆà ¨A¤°¸A´Ð?ˆõ 	ŒØØ”*Ø”;ð	
ñ 	
ô 	
õ
 	ŒØÝ”+Ø”;ð	
ñ 	
ô 	
ðð r<   c                 óT  — t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        | pt          |¦  «        dv d„ ¦  «         |s|n|d         }	|s|nt          |¦  «        dk    r|	n|d         }
|s|nt          |¦  «        dk    r|	n|d         }t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        | j        d	v d
„ ¦  «         | j        dk    r|                      d¦  «        nd}|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }t          ||||	||¦  «        }t          ||||
||¦  «        }t          ||||||¦  «        }t          | |||||	|
|||||||||||||d¦  «         | j        dk    o!t          j        | ¦  «        t           j	        k    }| j        dk    rQ|  
                    d¦  «        }|                     ¦   «          o|                     t           j	        ¬¦  «        }||||f}n|||||f}|                      |¦  «        }|                      |t           j        ¬¦  «        }|r@|                     t           j	        ¬¦  «        }|                     t           j	        ¬¦  «        }||fS )Nrx  c                  ó   — dS ©NzMmax_pool3d: kernel_size must either be a single int, or a tuple of three intsr@   r@   r<   r:   r_   z.meta_max_pool3d_with_indices.<locals>.<lambda>õ  ó   € Ð_€ r<   r   r¬   r,  c                  ó   — dS ©NzQmax_pool3d: stride must either be omitted, a single int, or a tuple of three intsr@   r@   r<   r:   r_   z.meta_max_pool3d_with_indices.<locals>.<lambda>ý  ó   € Ðc€ r<   c                  ó   — dS ©NzImax_pool3d: padding must either be a single int, or a tuple of three intsr@   r@   r<   r:   r_   z.meta_max_pool3d_with_indices.<locals>.<lambda>  ó   € Ð[€ r<   c                  ó   — dS ©NzJmax_pool3d: dilation must be either a single int, or a tuple of three intsr@   r@   r<   r:   r_   z.meta_max_pool3d_with_indices.<locals>.<lambda>  r£  r<   r‚  c                  ó   — dS r„  r@   r@   r<   r:   r_   z.meta_max_pool3d_with_indices.<locals>.<lambda>  r…  r<   rX  éûÿÿÿr.  rY  rô  r”   zmax_pool3d_with_indices()r<  ræ   r‰   )rP   ra   r®   rž   rœ   r]  rˆ  rJ   r"   r÷  rÓ   r   r�   rò   rb  )r  rÕ  rÅ   rÿ  rÇ  r1  r‰  ra  rb  rŠ  rc  rd  rŠ  r‹  rŒ  r�  r‡  rˆ  r  rŒ  r�  rŽ  r�  r�  r‘  r’  rÜ  Úinput_channels_last_checkr¡   r  rï   s                                  r:   Úmeta_max_pool3d_with_indicesrÏ  é  sÿ  € õ 
„LÝˆKÑÔ˜FÐ"Ø_Ð_ñô ð ð 
�QŒ€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€Bå	„LØˆ
Ð+•c˜&‘k”k VÐ+ØcÐcñô ð ð Ð	(ˆˆ˜v aœy€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€Bå	„LÝˆG‰Œ˜ÐØ[Ð[ñô ð ð 
�Œ€BÝ�7‰|Œ|˜qÒ Ð ˆˆ g¨a¤j€BÝ�7‰|Œ|˜qÒ Ð ˆˆ g¨a¤j€Bå	„LÝˆH‰Œ˜ÐØ\Ð\ñô ð ð ˜”€IÝ  ™]œ]¨aÒ/Ð/�	�	°X¸a´[€IÝ  ™]œ]¨aÒ/Ð/�	�	°X¸a´[€Iå	„LØŒ
�fÐØKÐKñô ð ð
  %œz¨Qš˜ˆU�ZŠZ˜‰^Œ^ˆ^°A€FØ�jŠj˜‰nŒn€GØ�JŠJ�r‰NŒN€EØ�jŠj˜‰nŒn€GØ�ZŠZ˜‰^Œ^€Få  ¨¨B°°I¸yÑIÔI€EÝ" 7¨B°°B¸	À9ÑMÔM€GÝ! &¨"¨b°"°iÀÑKÔK€FåØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØ#ñ+ô ð ð2 	Œ
�aŠÐX�EÔ7¸Ñ>Ô>Å%ÔBXÒXð ð „z�Q‚€Ø$)§O¢O°AÑ$6Ô$6Ð!à)×7Ò7Ñ9Ô9Ð9ð
à'×5Ò5ÝÔ0ð 6ñ 
ô 
ð 	ð
 ˜e W¨fÐ5ˆ	ˆ	à˜W e¨W°fÐ=ˆ	à
�/Š/˜)Ñ
$Ô
$€CØ�oŠo˜i­u¬{ˆoÑ;Ô;€Gàð CØ�fŠf¥5Ô#9ˆfÑ:Ô:ˆØ—*’*­5Ô+A�*ÑBÔBˆà�ˆ<Ðr<   c                 ó‚  — t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }	t          |¦  «        dk    r|n|d         }
t          j        | pt          |¦  «        dv d„ ¦  «         |s|n|d         }|s|	nt          |¦  «        dk    r|n|d         }|s|
nt          |¦  «        dk    r|n|d         }t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        |j        d	v d
„ ¦  «         |                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }t          || ||||	|
|||||||||||||||d¦  «         |j        dk    o!t          j        |¦  «        t           j        k    }|j        dk    rJ| 	                    d¦  «        }| 
                    ¦   «          o| 
                    t           j        ¬¦  «        }|                     |j        ¦  «        }|r |                     t           j        ¬¦  «        }|S )Nrx  c                  ó   — dS rÂ  r@   r@   r<   r:   r_   z7meta_max_pool3d_with_indices_backward.<locals>.<lambda>`  rÃ  r<   r   r¬   r,  c                  ó   — dS rÅ  r@   r@   r<   r:   r_   z7meta_max_pool3d_with_indices_backward.<locals>.<lambda>h  rÆ  r<   c                  ó   — dS rÈ  r@   r@   r<   r:   r_   z7meta_max_pool3d_with_indices_backward.<locals>.<lambda>p  rÉ  r<   c                  ó   — dS rË  r@   r@   r<   r:   r_   z7meta_max_pool3d_with_indices_backward.<locals>.<lambda>x  r£  r<   r‚  c                  ó   — dS r„  r@   r@   r<   r:   r_   z7meta_max_pool3d_with_indices_backward.<locals>.<lambda>€  r…  r<   r.  rY  rô  r”   z"max_pool3d_with_indices_backward()rX  r<  ræ   )rP   ra   r®   rž   rœ   r›  rJ   r"   r÷  rÓ   r   r�   r‘   rb  )r0  r  rÕ  rÅ   rÿ  rÇ  r1  rï   r‰  ra  rb  rŠ  rc  rd  rŠ  r‹  rŒ  r�  r‡  rˆ  rŒ  r�  rŽ  r�  r�  r‘  r’  rÜ  rÎ  r4  s                                 r:   Ú%meta_max_pool3d_with_indices_backwardrÖ  R  s�  € õ 
„LÝˆKÑÔ˜FÐ"Ø_Ð_ñô ð ð 
�QŒ€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€Bå	„LØˆ
Ð+•c˜&‘k”k VÐ+ØcÐcñô ð ð Ð	(ˆˆ˜v aœy€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€Bå	„LÝˆG‰Œ˜ÐØ[Ð[ñô ð ð 
�Œ€BÝ�7‰|Œ|˜qÒ Ð ˆˆ g¨a¤j€BÝ�7‰|Œ|˜qÒ Ð ˆˆ g¨a¤j€Bå	„LÝˆH‰Œ˜ÐØ\Ð\ñô ð ð ˜”€IÝ  ™]œ]¨aÒ/Ð/�	�	°X¸a´[€IÝ  ™]œ]¨aÒ/Ð/�	�	°X¸a´[€Iå	„LØŒ
�fÐØKÐKñô ð ð
 �jŠj˜‰nŒn€GØ�JŠJ�r‰NŒN€EØ�jŠj˜‰nŒn€GØ�ZŠZ˜‰^Œ^€Fà×Ò˜RÑ Ô €EØ×Ò˜rÑ"Ô"€GØ×Ò˜bÑ!Ô!€Få#ØØØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØ,ñ/ô ð ð6 	Œ
�aŠÐX�EÔ7¸Ñ>Ô>Å%ÔBXÒXð ð „z�Q‚€Ø$)§O¢O°AÑ$6Ô$6Ð!à)×7Ò7Ñ9Ô9Ð9ð
à'×5Ò5ÝÔ0ð 6ñ 
ô 
ð 	ð —’ ¤Ñ-Ô-€Jàð IØ—]’]µÔ1G�]ÑHÔHˆ
àÐr<   Úgridc                 ó"  ‡ ‡‡— t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         t          j        ‰ j        t           j        k    o‰j        t           j        k    ˆˆ fd„¦  «         t          j        ‰ j        d         ‰j        d         k    ˆˆ fd„¦  «         t          j        ‰j        d         ‰ j        dz
  k    ˆˆ fd„¦  «         t          d‰ j        ¦  «        D ]*Št          j        ‰ j        ‰         dk    ˆˆ fd„¦  «         Œ+d S )	Nc                  ó(   •— d‰j         › d‰ j         › �S )NzNgrid_sampler(): expected input and grid to be on same device, but input is on z and grid is on rÞ  ©r×  r  s   €€r:   r_   z+check_grid_sampler_common.<locals>.<lambda>¼  s0   ø€ ðAØ”\ðAð AØ37´;ðAð Að r<   c                  ó(   •— d‰j         › d‰ j         › �S )NzTgrid_sampler(): expected input and grid to have torch.strided layout, but input has z and grid has )r{   rÚ  s   €€r:   r_   z+check_grid_sampler_common.<locals>.<lambda>Ã  s0   ø€ ðCØœðCð CØ59´[ðCð Cð r<   r   c                  ó(   •— d‰j         › d‰ j         › �S )NzZgrid_sampler(): expected grid and input to have same batch size, but got input with sizes ú and grid with sizes rÍ   rÚ  s   €€r:   r_   z+check_grid_sampler_common.<locals>.<lambda>Ê  s0   ø€ ðOØ %¤ðOð OØBFÄ*ðOð Oð r<   r”   r,  c                  ó.   •— d‰j         dz
  › d‰ j        › �S )Nz+grid_sampler(): expected grid to have size r,  z, in last dimension, but got grid with sizes )rž   r‘   rÚ  s   €€r:   r_   z+check_grid_sampler_common.<locals>.<lambda>Ñ  s.   ø€ ð?¸%¼*Àq¹.ð ?ð ?Ø26´*ð?ð ?ð r<   c                  ó    •— d‰j         › d‰ › d�S )NzYgrid_sampler(): expected input to have non-empty spatial dimensions, but input has sizes r©  rª  rÍ   r¼  s   €€r:   r_   z+check_grid_sampler_common.<locals>.<lambda>Ú  r½  r<   )rP   ra   r|   r{   rÝ  r‘   rž   r±   )r  r×  r  s   ``@r:   Úcheck_grid_sampler_commonrà  ¹  st  øøø€ Ý	„LØŒ˜œÒ#ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ�œÒ%ÐF¨$¬+½¼Ò*Fð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ�AŒ˜$œ* Qœ-Ò'ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ
�2Œ˜%œ* q™.Ò(ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ �1�e”jÑ!Ô!ð 
ð 
ˆÝŒØŒK˜ŒN˜QÒðð ð ð ð ñ	
ô 	
ð 	
ð 	
ð
ð 
r<   c                   ó   — e Zd ZdZdZdZdS )ÚGridSamplerInterpolationr   r¬   r,  N)rt   Ú
__module__Ú__qualname__ÚBILINEARÚNEARESTÚBICUBICr@   r<   r:   râ  râ  á  s   € € € € € Ø€HØ€GØ€G€G€Gr<   râ  Úinterpolation_modec                 óØ   ‡ ‡— t          j        ‰ j        dk    o‰ j        ‰j        k    ˆˆ fd„¦  «         t          j        ‰ j        dk    o|t          j        j        k     d„ ¦  «         d S )NrX  c                  ó(   •— d‰j         › d‰ j         › �S )Nzdgrid_sampler(): expected 5D input and grid with same number of dimensions, but got input with sizes rÝ  rÍ   rÚ  s   €€r:   r_   z'check_grid_sampler_3d.<locals>.<lambda>ê  s+   ø€ ð1Ø49´Kð1ð 1à$(¤Jð1ð 1ð r<   c                  ó   — dS )Nz<grid_sampler(): bicubic interpolation only supports 4D inputr@   r@   r<   r:   r_   z'check_grid_sampler_3d.<locals>.<lambda>õ  rµ  r<   )rP   ra   rž   râ  rç  rK  )r  r×  rè  s   `` r:   Úcheck_grid_sampler_3drì  ç  s”   øø€ Ý	„LØŒ
�aŠÐ3˜EœJ¨$¬)Ò3ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LàŒJ˜!ŠOð MØ"Õ&>Ô&FÔ&LÒLð	
ð 	OÐNñô ð ð ð r<   c                 ó¤   — |d         }|r!t          j        |t           j        ¬¦  «        }nd }t          j        |t           j        ¬¦  «        }	||	fS ©Nr   ræ   )rP   rÊ  rë   rê   ©
r0  r  r×  rè  Úpadding_modeÚalign_cornersr  Úinput_requires_gradr4  Ú	grad_grids
             r:   Úgrid_sampler_2d_backward_metarô  ù  sX   € ð & aœ.ÐØð ÝÔ% e½5Ô;RÐSÑSÔSˆ
ˆ
àˆ
ÝÔ  µUÔ5LÐMÑMÔM€IØ˜	Ð"Ð"r<   c                 óú   — t          | |¦  «         t          | ||¦  «         | j        d         }| j        d         }|j        d         }|j        d         }|j        d         }	|                      |||||	f¦  «        S )Nr   r¬   r,  r2   )rà  rì  r‘   r�   )
r  r×  rè  rð  rñ  r¹  ÚCÚout_DÚout_HÚout_Ws
             r:   Úgrid_sampler_3drú    s{   € õ ˜e TÑ*Ô*Ð*Ý˜% Ð'9Ñ:Ô:Ð:ØŒ�AŒ€AØŒ�AŒ€AØŒJ�qŒM€EØŒJ�qŒM€EØŒJ�qŒM€EØ�?Š?˜A˜q %¨°Ð6Ñ7Ô7Ð7r<   ró  c                 óæ   — t          ||¦  «         t          |||¦  «         |d         }|r!t          j        |t          j        ¬¦  «        }nd }t          j        |t          j        ¬¦  «        }	||	fS rî  )rà  rì  rP   rÊ  r@  rê   rï  s
             r:   Úgrid_sampler_3d_backwardrü    s„   € õ ˜e TÑ*Ô*Ð*Ý˜% Ð'9Ñ:Ô:Ð:Ø% aœ.ÐØð ÝÔ%Ø¥Ô!?ð
ñ 
ô 
ˆ
ˆ
ð ˆ
ÝÔ  µUÔ5SÐTÑTÔT€IØ�yÐ Ð r<   c                 óŽ   — |                      dd ¦  «        }|st          j        |¦  «        }||d<   t          j        | g|¢R i |¤ŽS )NrX   )rW   rJ   Ú	get_dtyperP   r„   )rœ   rÝ  rL   r  rX   s        r:   Úfullrÿ  7  sU   € à�JŠJ�w Ñ%Ô%€EØð ,Ý” 
Ñ+Ô+ˆØ€Fˆ7�OÝŒ;�tÐ-˜dÐ-Ð-Ð- fÐ-Ð-Ð-r<   c                 ón  — |t           j        k    rêt          j        |d u d„ ¦  «         t          j        d|€| j        n|||€| j        n||¬¦  «        }| j        rN|                     |                      ¦   «         |  	                    ¦   «         |  
                    ¦   «         ¦  «         n;|                     |                      ¦   «         |                      ¦   «         d¦  «         |                     d¦  «         |S t          j                             | |||||¬¦  «        }|                     d¦  «         |S )Nc                  ó   — dS )Nz9memory format option is only supported by strided tensorsr@   r@   r<   r:   r_   zzeros_like.<locals>.<lambda>M  r£  r<   r   rF  TrÜ  )rP   Ú
sparse_coora   r„   rX   r|   Ú	is_sparseÚsparse_resize_and_clear_rœ   Ú
sparse_dimÚ	dense_dimr   Ú_coalesced_r/   rê   rd  Úfill_)r’   rX   r{   r|   r}   rç   rÌ  s          r:   rÊ  rÊ  A  sA  € ð •Ô!Ò!Ð!ÝŒØ˜TÐ!ØOÐOñ	
ô 	
ð 	
õ
 ŒkØØ % �$”*�*°5ØØ"( .�4”;�;°fØ!ð
ñ 
ô 
ˆð Œ>ð 	EØ×(Ò(Ø—	’	‘”˜TŸ_š_Ñ.Ô.°·²Ñ0@Ô0@ñô ð ð ð ×(Ò(¨¯ª©¬°d·h²h±j´jÀ!ÑDÔDÐDà�Š˜ÑÔÐØˆ
Ý
Œ/×
!Ò
!ØØØØØØ#ð "ñ ô €Cð ‡I‚Iˆa�L„L€LØ€Jr<   rz   c                ó¤   — |€t          j        ¦   «         }|€t          j        ¦   «         }|€t           j        }t          j        | ||||¬¦  «        S rH  ©rP   r�   Úget_default_devicerÝ  r„   ©rœ   rX   r{   r|   r}   r~   s         r:   Ú	meta_onesr  n  óZ   € ð €}ÝÔ'Ñ)Ô)ˆØ€~ÝÔ)Ñ+Ô+ˆØ€~Ý”ˆÝŒ;Ø�E &°ÀJðñ ô ð r<   c                ó¤   — |€t          j        ¦   «         }|€t          j        ¦   «         }|€t           j        }t          j        | ||||¬¦  «        S rH  r
  r  s         r:   Ú
meta_zerosr  „  r  r<   c                 ó<  ‡ ‡‡— ddl m} ‰                      ¦   «         }t          j        |dk    d„ ¦  «         ‰dk    r‰n‰|z   Š‰                      ‰¦  «        }t          j         |‰ |k    ¦  «        p |‰|k    ¦  «         ˆˆˆ fd„¦  «         ‰dk    r‰n‰|z   Št          ‰                      ¦   «         ¦  «        }t          ‰                      ¦   «         ¦  «        }‰                      ¦   «         ‰|‰         z  z   }|‰= |‰= ‰  	                    |||¦  «        S )Nr   rô  c                  ó   — dS )Nz-select() cannot be applied to a 0-dim tensor.r@   r@   r<   r:   r_   zmeta_select.<locals>.<lambda>¡  s   € Ð?€ r<   c                  ó>   •— d‰› d‰                      ¦   «         › d‰ › �S )Nzselect(): index z! out of range for tensor of size z at dimension r›   ©r   r‹   r’   s   €€€r:   r_   zmeta_select.<locals>.<lambda>«  s8   ø€ ð , 5ð ,ð ,Ø�9Š9‰;Œ;ð,ð ,Ø&)ð,ð ,€ r<   )
r­   rõ  r   rP   rŽ   rœ   r  rÅ   r
  rÕ   )	r’   r   r‹   rõ  rž   rœ   Únew_sizer·   Únew_storage_offsets	   ```      r:   Úmeta_selectr  š  sT  øøø€ àJÐJÐJÐJÐJÐJà�8Š8‰:Œ:€DÝ	ÔØ�Š	Ø?Ð?ñô ð ð
 ˜’�ˆ#ˆ#˜s T™z€CØ�9Š9�S‰>Œ>€Då	Ôà Ð  % ¨$¢Ñ/Ô/ÐVÐ3GÐ3GÈÐQUÊÑ3VÔ3Vð	
ð	,ð 	,ð 	,ð 	,ð 	,ð 	,ñ	ô ð ð ˜a’Z�ZˆEˆE U¨T¡\€Eå�D—I’I‘K”KÑ Ô €HÝ�d—k’k‘m”mÑ$Ô$€Jà×,Ò,Ñ.Ô.°¸ÀC¼Ñ1HÑHÐØ�ˆØ�3ˆà�?Š?˜8 ZÐ1CÑDÔDÐDr<   c                 ó*   — t          j        | ¦  «        S r7   ©rJ   Úclone_preserve_strides)r’   re  r   r‹   s       r:   Úmeta_select_scatterr  »  ó   € åÔ'¨Ñ-Ô-Ð-r<   c                 ó*   — t          j        | ¦  «        S r7   r  )r’   re  r   rv   ru   Ústeps         r:   Úmeta_slice_scatterr  À  r  r<   Údim_post_exprÚwrap_scalarc                 ó„   — |dk    r|sJ ‚d}| }|dz
  }| |k     s| |k    rJ d| › d|› d|› d�¦   «         ‚| dk     r| |z  } | S )Nr   r¬   zdim z out of bounds (rq   rr   r@   )r   r   r!  r5  r²   s        r:   ró   ró   Æ  s~   € Ø˜ÒÐØÐÐÐØˆØˆ.€CØ
˜!Ñ
€CØ�c’	�	˜S 3šY˜Y˜YÐ)R°Ð)RÐ)RÀSÐ)RÐ)RÈCÐ)RÐ)RÐ)R™YœY˜YØ
ˆQ‚w€wØˆ}ÑˆØ€Jr<   c                 óP   — |                       ¦   «         dk    rdn| j        |         S rÝ  r@  )r  r   s     r:   Úensure_nonempty_sizer$  Ò  s"   € Ø—’‘”˜1’�ˆ1ˆ1 !¤'¨#¤,Ð.r<   c                 óp  ‡ ‡‡‡— t          ‰                      ¦   «         d¦  «        }t          ‰                     ¦   «         d¦  «        }t          j        ||k    d„ ¦  «         t	          |¦  «        D ]CŠ‰‰k    r;t          j        t          ‰‰¦  «        t          ‰ ‰¦  «        k    ˆˆˆˆ fd„¦  «         ŒDd S )Nr¬   c                  ó   — dS )NzDIndex tensor must have the same number of dimensions as input tensorr@   r@   r<   r:   r_   z$gather_shape_check.<locals>.<lambda>Ü  s   € ÐV€ r<   c                  ó:   •— d‰› d‰j         › �d‰j         › d‰ › �z   S )Nz!Size does not match at dimension z expected index ú to be no larger than self ú apart from dimension rÍ   )r   r  r‹   r’   s   €€€€r:   r_   z$gather_shape_check.<locals>.<lambda>â  s6   ø€ Ð\¸AÐ\Ð\ÈuÌ{Ð\Ð\ØW°´
ÐWÐWÐRUÐWÐWñX€ r<   )r²   r   rP   ra   r±   r$  )r’   r   r‹   Ú	self_dimsÚ
index_dimsr  s   ```  @r:   Úgather_shape_checkr,  ×  sÞ   øøøø€ Ý�D—H’H‘J”J Ñ"Ô"€IÝ�U—Y’Y‘[”[ !Ñ$Ô$€JÝ	„LØ�ZÒØVÐVñô ð õ �9ÑÔð ð ˆØ�Š8ˆ8ÝŒLÝ$ U¨AÑ.Ô.Õ2FÀtÈQÑ2OÔ2OÒOðXð Xð Xð Xð Xð Xð Xñô ð øðð r<   c                 óp  ‡— ddl m} t          ||                      ¦   «         ¦  «        } |‰                     ¦   «         dk    ¦  «        }|sQt          j        ‰j        t
          j        k    p‰j        t
          j	        k    ˆfd„¦  «         t          | |‰¦  «         |                      ‰j        ¦  «        S )Nr   rô  c                  ó   •— d‰ j         › �S )Nz8gather(): Expected dtype int32/int64 for index, but got r‰   rŠ   s   €r:   r_   zmeta_gather.<locals>.<lambda>ð  s   ø€ Ð\ÈuÌ{Ð\Ð\€ r<   )r­   rõ  ró   r   r�   rP   ra   rX   r�   r"  r,  r�   r‘   )r’   r   r‹   Úsparse_gradrõ  Úwrapped_dimÚis_index_emptys     `    r:   Úmeta_gatherr2  ç  s³   ø€ àJÐJÐJÐJÐJÐJå   d§h¢h¡j¤jÑ1Ô1€KØ)Ð)¨%¯+ª+©-¬-¸1Ò*<Ñ=Ô=€NØð 5ÝŒØŒK�5œ:Ò%ÐA¨¬½¼	Ò)AØ\Ð\Ð\Ð\ñ	
ô 	
ð 	
õ 	˜4 ¨eÑ4Ô4Ð4Ø�>Š>˜%œ+Ñ&Ô&Ð&r<   c                 óÖ   — |r@| dk    rdS | dk    rdS | dk    rdS | dk    rdS | d	k    rd
S t          j        dd„ ¦  «         d S | dk    rdS | dk    rdS t          j        dd„ ¦  «         d S )Nr  Ú
REDUCE_ADDrÉ  ÚREDUCE_MULTIPLYÚmeanÚREDUCE_MEANÚamaxÚREDUCE_MAXIMUMÚaminÚREDUCE_MINIMUMFc                  ó   — dS )Nz=reduce argument must be either sum, prod, mean, amax or amin.r@   r@   r<   r:   r_   z#get_operator_enum.<locals>.<lambda>  s   € ÐS€ r<   ÚaddÚmultiplyc                  ó   — dS )Nz/reduce argument must be either add or multiply.r@   r@   r<   r:   r_   z#get_operator_enum.<locals>.<lambda>  s   € Ð$U€ r<   r“  )Úreduce_Úuse_new_optionss     r:   Úget_operator_enumrB  ÷  s½   € Øð Ø�eÒÐØ�<Ø˜ÒÐØ$Ð$Ø˜ÒÐØ �=Ø˜ÒÐØ#Ð#Ø˜ÒÐØ#Ð#ÝŒØØSÐSñ	
ô 	
ð 	
ð 	ˆà�eÒÐØ�<Ø˜
Ò"Ð"Ø$Ð$ÝŒ�UÐUÐUÑVÔVÐVØˆr<   c                 ó*  ‡ — ddl m}  ||                     ¦   «         dk    ¦  «        r@t          j        |j        t          j        k    p|j        t          j        k    ˆ fd„¦  «         |�(t          j        |j        |j        k    ˆ fd„¦  «         d S d S )Nr   rô  c                  ó   •— ‰ › d�S )Nz((): Expected dtype int32/int64 for indexr@   ©Úmethod_names   €r:   r_   z,scatter_gather_dtype_check.<locals>.<lambda>  s   ø€ �{ÐLÐLÐL€ r<   c                  ó   •— ‰ › d�S )Nz0(): Expected self.dtype to be equal to src.dtyper@   rE  s   €r:   r_   z,scatter_gather_dtype_check.<locals>.<lambda>  s   ø€ �{ÐTÐTÐT€ r<   )r­   rõ  r�   rP   ra   rX   r�   r"  )rF  r’   r‹   Úsrc_optrõ  s   `    r:   Úscatter_gather_dtype_checkrI    sµ   ø€ ØJÐJÐJÐJÐJÐJàÐ˜EŸKšK™MœM¨QÒ.Ñ/Ô/ð 
ÝŒØŒK�5œ:Ò%ÐA¨¬½¼	Ò)AØLÐLÐLÐLñ	
ô 	
ð 	
ð
 ÐÝŒØŒJ˜'œ-Ò'ØTÐTÐTÐTñ	
ô 	
ð 	
ð 	
ð 	
ð Ðr<   c                 ó"   — t          | d¦  «        S rj  )r²   r•   s    r:   Úensure_nonempty_dimrK  "  s   € Ýˆs�A‰;Œ;Ðr<   c                 óz  ‡ ‡‡‡— ddl m}  |‰                     ¦   «         dk    ¦  «        rd S t          j        t          ‰                      ¦   «         ¦  «        t          ‰                     ¦   «         ¦  «        k    d„ ¦  «         d}t          ‰                      ¦   «         ¦  «        }t          |¦  «        D ]1}t          ‰|¦  «        }|‰k    rŒ|t          ‰ |¦  «        k    rd} nŒ2|s<‰�:t          |¦  «        D ]*}t          ‰|¦  «        }|t          ‰|¦  «        k    rd} nŒ+‰�vt          j        t          ‰                      ¦   «         ¦  «        t          ‰                     ¦   «         ¦  «        k    d„ ¦  «         t          j        | ˆˆˆ ˆfd„¦  «         d S t          j        | ˆˆˆ fd„¦  «         d S )	Nr   rô  c                  ó   — dS ©NzCIndex tensor must have the same number of dimensions as self tensorr@   r@   r<   r:   r_   z%scatter_shape_check.<locals>.<lambda>.  r¿  r<   FTc                  ó   — dS rN  r@   r@   r<   r:   r_   z%scatter_shape_check.<locals>.<lambda>H  s   € ÐY€ r<   c                  óD   •— d‰j         › d‰j         › �d‰ › d‰j         › �z   S )NúExpected index r(  r)  z and to be no larger than src rÍ   )r   r‹   r’   rH  s   €€€€r:   r_   z%scatter_shape_check.<locals>.<lambda>L  s7   ø€ ÐZ e¤kÐZÐZÈdÌjÐZÐZØY sÐYÐYÈ'Ì-ÐYÐYñZ€ r<   c                  ó4   •— d‰j         › d‰j         › �d‰ › �z   S )NrQ  r(  r)  rÍ   r  s   €€€r:   r_   z%scatter_shape_check.<locals>.<lambda>R  s,   ø€ ÐZ e¤kÐZÐZÈdÌjÐZÐZØ, sÐ,Ð,ñ-€ r<   )	r­   rõ  r�   rP   ra   rK  r   r±   r$  )	r’   r   r‹   rH  rõ  Úis_wrong_shaper*  r  Úindex_d_sizes	   ````     r:   Úscatter_shape_checkrU  '  s.  øøøø€ ØJÐJÐJÐJÐJÐJàÐ˜EŸKšK™MœM¨QÒ.Ñ/Ô/ð ØˆÝ	„LÝ˜DŸHšH™JœJÑ'Ô'Õ+>¸u¿yºy¹{¼{Ñ+KÔ+KÒKØUÐUñô ð ð
 €NÝ# D§H¢H¡J¤JÑ/Ô/€Iõ �9ÑÔð ð ˆÝ+¨E°1Ñ5Ô5ˆØ�Š8ˆ8ØØÕ.¨t°QÑ7Ô7Ò7Ð7Ø!ˆNØˆEð 8ð
 ð ˜gÐ1Ý�yÑ!Ô!ð 	ð 	ˆAÝ/°°qÑ9Ô9ˆLØÕ2°7¸AÑ>Ô>Ò>Ð>Ø!%�Ø�ð ?ð ÐÝŒÝ §¢¡
¤
Ñ+Ô+Õ/BÀ5Ç9Â9Á;Ä;Ñ/OÔ/OÒOØYÐYñ	
ô 	
ð 	
õ 	ŒØÐðZð Zð Zð Zð Zð Zð Zñ	
ô 	
ð 	
ð 	
ð 	
õ 	ŒØÐð-ð -ð -ð -ð -ð -ñ	
ô 	
ð 	
ð 	
ð 	
r<   c                 óº   — t          ||                      ¦   «         ¦  «        }t          d| ||¦  «         t          | |||¦  «         |�t	          ||¦  «         d S d S )NÚscatter)ró   r   rI  rU  rB  )r’   r   r‹   re  r@  rA  r0  s          r:   Úscatter_meta_implrX  X  se   € Ý   d§h¢h¡j¤jÑ1Ô1€KÝ˜y¨$°°sÑ;Ô;Ð;Ý˜˜k¨5°#Ñ6Ô6Ð6ØÐå˜' ?Ñ3Ô3Ð3Ð3Ð3ð Ðr<   c                 ó\   — t          | |||d¦  «         |                      | j        ¦  «        S ©Nr=  ©rX  r�   r‘   ©r’   r   r‹   re  s       r:   Úmeta_scatter_addr]  a  s,   € å�d˜C ¨¨UÑ3Ô3Ð3Ø�>Š>˜$œ*Ñ%Ô%Ð%r<   c                 ó,   — t          | |||d¦  «         | S rZ  ©rX  r\  s       r:   Úmeta_scatter_add_r`  g  s   € å�d˜C ¨¨UÑ3Ô3Ð3Ø€Kr<   c                 ó˜   — t          |t          j        ¦  «        r|nd }t          | ||||¦  «         |                      | j        ¦  «        S r7   )rj   rP   r   rX  r�   r‘   ©r’   r   r‹   Úsrc_or_valuer   re  s         r:   Úmeta_scatterrd  m  sH   € õ % \µ5´<Ñ@Ô@Ð
Jˆ,ˆ,Àd€CÝ�d˜C ¨¨VÑ4Ô4Ð4Ø�>Š>˜$œ*Ñ%Ô%Ð%r<   c                 óh   — t          |t          j        ¦  «        r|nd }t          | ||||¦  «         | S r7   )rj   rP   r   rX  rb  s         r:   Úmeta_scatter_rf  |  s9   € õ % \µ5´<Ñ@Ô@Ð
Jˆ,ˆ,Àd€CÝ�d˜C ¨¨VÑ4Ô4Ð4Ø€Kr<   ç        Úqueryrÿ   rK  Ú	dropout_pÚ	is_causalÚreturn_debug_maskr¨  c           	      ó  — |                       d¦  «        }|                       d¦  «        }|                       d¦  «        }	|                       d¦  «        }
|                      d¦  «        }|                      dd¦  «        }t          j        |¦  «                             dd¦  «        }t          j        |||	ft          j        | j        ¬¦  «        }|rX|
dk    rdnd}t          j        |	|z  ¦  «        }|dk    rd}n|dk    rd}t          j        |||	|f| j	        | j        ¬¦  «        }n!t          j        d| j	        | j        ¬¦  «        }t          j
        j        rat          j                             ¦   «         rCt          j        d	t          j        d
¬¦  «        }t          j        d	t          j        d
¬¦  «        }nBt          j        dt          j        d
¬¦  «        }t          j        d	t          j        d
¬¦  «        }||d d |	||||f	S )Nr   r¬   r,  r2   râ  é@   é€   é   r@   ry   )rœ   r1  rP   rê   r„   rT   r|   rÈ  ÚceilrX   ÚversionÚhipr0  r�  r�   r\  )rh  rÿ   rK  ri  rj  rk  r¨  r  Ú	num_headsÚmax_seqlen_batch_qÚhead_dimÚmax_seqlen_batch_kÚquery_tÚ	attentionÚ	logsumexpÚblocksize_cÚmax_seqlen_kÚ
debug_maskÚseedÚoffsets                       r:   Ú(meta__scaled_dot_product_flash_attentionr  Š  sü  € ð —’˜A‘”€JØ—
’
˜1‘”€IØŸš A™œÐØ�zŠz˜!‰}Œ}€HØŸš !™œÐà�oŠo˜a Ñ#Ô#€GÝÔ  Ñ)Ô)×3Ò3°A°qÑ9Ô9€IÝ”Ø	�YÐ 2Ð3ÝŒkØŒ|ðñ ô €Ið ð LØ%¨š]˜]�c�c°ˆÝ”yÐ!3°kÑ!AÑBÔBˆØ Ò$Ð$ØˆLˆLØ 3Ò&Ð&ØˆLÝ”[Ø˜Ð$6¸ÐEØ”+Ø”<ð
ñ 
ô 
ˆ
ˆ
õ ”[ ¨%¬+¸e¼lÐKÑKÔKˆ
õ „}Ôð D�UœZ×4Ò4Ñ6Ô6ð DåŒ{˜2¥U¤Z¸Ð?Ñ?Ô?ˆÝ”˜R¥u¤z¸&ÐAÑAÔAˆˆåŒ{˜A¥e¤l¸6ÐBÑBÔBˆÝ”˜R¥u¤|¸FÐCÑCÔCˆð 	ØØØØØØØØð
ð 
r<   Ú	res_shape.c                 ó¼  ‡ ‡‡— t          ‰ j        ¦  «        ‰k    r?‰                      dd¦  «        }t          j        |¦  «                             dd¦  «        }n�t          g d¢ˆ fd„d¬¦  «        Šˆfd„‰D ¦   «         }ˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         }t          j        |‰ j	        ‰ j
        ¬	¦  «                             |¦  «        }|S )
Nr¬   r,  )r   r¬   r,  r2   c                 ó8   •— ‰                      ¦   «         |          S r7   rÞ  )Úidxrh  s    €r:   r_   z,alloc_with_matching_layout.<locals>.<lambda>Ô  s   ø€ ¨%¯,ª,©.¬.¸Ô*=€ r<   Trþ   c                 ó    •— g | ]
}‰|         ‘ŒS r@   r@   )rF   rƒ  r€  s     €r:   rI   z.alloc_with_matching_layout.<locals>.<listcomp>Ö  s   ø€ Ð>Ð>Ð>¨S˜) Cœ.Ð>Ð>Ð>r<   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r@   rŠ   )rF   r  Ú	dim_orders     €r:   rI   z.alloc_with_matching_layout.<locals>.<listcomp>×  s%   ø€ ÐKÐKÐK°˜Ÿš¨Ñ+Ô+ÐKÐKÐKr<   râ  )r`   r‘   r1  rP   rê   Úsortedr±   r®   r„   rX   r|   r  )rh  r€  rw  rÌ  Úpermuted_shapeÚfinal_permuter†  s   ``    @r:   Úalloc_with_matching_layoutrŠ  Ë  sô   øøø€ õ ˆUŒ[ÑÔ˜YÒ&Ð&Ø—/’/ ! QÑ'Ô'ˆÝÔ˜wÑ'Ô'×1Ò1°!°QÑ7Ô7ˆˆåØˆLˆLÐ=Ð=Ð=Ð=Àtð
ñ 
ô 
ˆ	ð ?Ð>Ð>Ð>°IÐ>Ñ>Ô>ˆØKÐKÐKÐKµU½3¸y¹>¼>Ñ5JÔ5JÐKÑKÔKˆÝŒkØ %¤+°e´lð
ñ 
ô 
ç
Š'�-Ñ
 Ô
 ð 	ð €Jr<   Ú	attn_biasÚcompute_log_sumexpc	           	      óì  — |                       d¦  «        }	|                       d¦  «        }
|                       d¦  «        }|                      d¦  «        }|                      d¦  «        }|	|
||f}t          | |¦  «        }t          j        |	|
|ft          j        | j        ¬¦  «        }t          j        dt          j        d¬¦  «        }t          j        dt          j        d¬¦  «        }||d d ||||d f	S ©Nr   r¬   r,  r”   râ  r@   ry   ©rœ   rŠ  rP   r„   rT   r|   r�   )rh  rÿ   rK  r‹  rŒ  ri  rj  rk  r¨  r  rL  ÚS_QÚS_KVÚD_Vr€  rÌ  Ú
logsum_expr}  r~  s                      r:   Ú(meta__scaled_dot_product_cudnn_attentionr”  ß  sî   € ð 	�
Š
�1‰Œ€AØ�
Š
�1‰Œ€AØ
�*Š*�Q‰-Œ-€CØ�8Š8�A‰;Œ;€DØ
�*Š*�R‰.Œ.€Cà�A�s˜CÐ €IÝ
$ U¨IÑ
6Ô
6€Cå”Ø	
ˆAˆsˆÝŒkØŒ|ðñ ô €Jõ Œ;�r¥¤°FÐ;Ñ;Ô;€DÝŒ[˜¥5¤:°fÐ=Ñ=Ô=€Fð 	ØØØØØØØØð
ð 
r<   c           	      óì  — |                       d¦  «        }|                       d¦  «        }	|                       d¦  «        }
|                      d¦  «        }|                      d¦  «        }||	|
|f}t          | |¦  «        }t          j        ||	|
ft          j        | j        ¬¦  «        }t          j        dt          j        d¬¦  «        }t          j        dt          j        d¬¦  «        }||d d |
|||d f	S rŽ  r�  )rh  rÿ   rK  r‹  ri  rj  rk  r¨  r  ÚH_Qr�  r‘  r’  r€  rÌ  r“  r}  r~  s                     r:   Ú5meta__scaled_dot_product_fused_attention_overrideabler—    sî   € ð 	�
Š
�1‰Œ€AØ
�*Š*�Q‰-Œ-€CØ
�*Š*�Q‰-Œ-€CØ�8Š8�A‰;Œ;€DØ
�*Š*�R‰.Œ.€Cà�C˜˜cÐ"€IÝ
$ U¨IÑ
6Ô
6€Cå”Ø	
ˆC�ˆÝŒkØŒ|ðñ ô €Jõ Œ;�r¥¤°FÐ;Ñ;Ô;€DÝŒ[˜¥5¤:°fÐ=Ñ=Ô=€Fð 	ØØØØØØØØð
ð 
r<   r«  ry  Ú	cum_seq_qÚ	cum_seq_kÚmax_qÚmax_kÚphilox_seedÚphilox_offsetc                 ót  — t          j        |                     dd¦  «        ¦  «                             dd¦  «        }t          j        |                     dd¦  «        ¦  «                             dd¦  «        }t          j        |                     dd¦  «        ¦  «                             dd¦  «        }|||fS r»  )rP   rê   r1  )r«  rh  rÿ   rK  r  ry  r˜  r™  rš  r›  ri  rj  rœ  r�  r¨  Úgrad_qÚgrad_kÚgrad_vs                     r:   Ú'meta__scaled_dot_product_flash_backwardr¢  6  s›   € õ, Ô˜eŸošo¨a°Ñ3Ô3Ñ4Ô4×>Ò>¸qÀ!ÑDÔD€FÝÔ˜cŸmšm¨A¨qÑ1Ô1Ñ2Ô2×<Ò<¸QÀÑBÔB€FÝÔ˜eŸošo¨a°Ñ3Ô3Ñ4Ô4×>Ò>¸qÀ!ÑDÔD€FØ�6˜6Ð!Ð!r<   Ú	attn_maskc                 ó*  — |                       d¦  «        }|                       d¦  «        }|                       d¦  «        }	t          j        | ¦  «        }
t          j        ||	|ft          j        | j        ¬¦  «                             dd¦  «        }|
|fS )Nr   r¬   r,  râ  )rœ   rP   rê   r„   rT   r|   r1  )rh  rÿ   rK  ri  rj  r£  r¨  r  rs  rt  rx  ry  s               r:   Ú0meta__scaled_dot_product_flash_attention_for_cpur¥  R  s–   € ð —’˜A‘”€JØ—
’
˜1‘”€IØŸš A™œÐåÔ  Ñ'Ô'€IÝ”àØØð	
õ
 ŒkØŒ|ðñ ô ÷ ‚i��1�o„oð ð 	Øðð r<   c
                 óÂ  — |                      d¦  «        }
|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }t          j        |
|||fd|j        |j        ¬¦  «        }t          j        |
|||fd|j        |j        ¬¦  «        }t          j        |
|||fd|j        |j        ¬¦  «        }|||fS )Nr   r¬   r2   r,  ©r   r,  r¬   r2   râ  )rœ   rP   Úempty_permutedrX   r|   )r«  rh  rÿ   rK  r  ry  ri  rj  r£  r¨  r  rs  ru  Úlen_qÚlen_krŸ  r   r¡  s                     r:   Ú9meta__scaled_dot_product_flash_attention_for_cpu_backwardr«  t  sò   € ð& —’˜A‘”€JØ—
’
˜1‘”€IØ�zŠz˜!‰}Œ}€HØ�JŠJ�q‰MŒM€EØ�HŠH�Q‰KŒK€EåÔ!Ø	�Y  xÐ0ØØŒkØŒ|ð	ñ ô €Fõ Ô!Ø	�Y  xÐ0ØØŒiØŒzð	ñ ô €Fõ Ô!Ø	�Y  xÐ0ØØŒkØŒ|ð	ñ ô €Fð �6˜6Ð!Ð!r<   c                 ó.  — |                       dd¦  «        } |                      dd¦  «        }|                      dd¦  «        }|                      d¦  «        }|                      d¦  «        }	|                      d¦  «        }
|                     d¦  «        }t          j        ||	|
|| j        | j        ¬¦  «        }t          j        j        r&t          j         	                    ¦   «         r	 |r|	nd}n|rt          j        |	dz  ¦  «        dz  nd}t          j        ||
|ft          j        | j        ¬¦  «        }|                      dd¦  «        }t          j        dt          j        d	¬¦  «        }t          j        dt          j        d	¬¦  «        }||||fS )
Nr¬   r,  r   rô  r”   râ  rK  r@   ry   )r1  rœ   rP   r„   rX   r|   rq  rr  r0  r�  rÈ  rp  rT   r�   )rh  rÿ   rK  r‹  rŒ  ri  rj  r¨  r  r×  rs  ÚKvrÌ  Úlogsumexp_dimr“  r}  r~  s                    r:   Ú,meta__scaled_dot_product_efficient_attentionr¯  £  sv  € ð �OŠO˜A˜qÑ!Ô!€EØ
�-Š-˜˜1Ñ
Ô
€CØ�OŠO˜A˜qÑ!Ô!€Eà�
Š
�1‰Œ€AØ�
Š
�1‰Œ€AØ—
’
˜2‘”€IØ	�Š�B‰Œ€Bå
Œ+�a˜˜I r°´ÀUÄ\Ð
RÑ
RÔ
R€Cå„}Ôð L�UœZ×4Ò4Ñ6Ô6ð Lð	ð 0Ð6˜˜°Qˆˆà2DÐK�œ	 ! b¡&Ñ)Ô)¨BÑ.Ð.È!ˆå”Ø	
ˆI�}Ð%ÝŒkØŒ|ðñ ô €Jð �-Š-˜˜1Ñ
Ô
€Cõ Œ;�r¥¤°FÐ;Ñ;Ô;€DÝŒ[˜¥5¤:°fÐ=Ñ=Ô=€Fà�
˜D &Ð(Ð(r<   Úgrad_input_maskc                 ó  — |                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }t          j        ||||fd|j        |j        ¬¦  «        }t          j        ||||fd|j        |j        ¬¦  «        }t          j        ||||fd|j        |j        ¬¦  «        }d }|�†|
d         r~|                      d¦  «        }|dz  dk    r|n
|dz   |dz  z
  }t          |                      ¦   «         ¦  «        }||d<   t          j        ||j        |j        ¬¦  «        }|d	d |…f         }||||fS )
Nr   r¬   r,  r2   r§  râ  r”   r“  .)rœ   rP   r¨  rX   r|   r  r„   )r«  rh  rÿ   rK  r‹  r  ry  rœ  r�  ri  r°  rj  r¨  r  rs  rš  ru  Ú
head_dim_vr›  rŸ  r   r¡  Ú	grad_biasÚlastDimÚlastDimAlignedÚ	new_sizess                             r:   Ú+meta__scaled_dot_product_efficient_backwardr·  Ð  s¤  € ð( —’˜A‘”€JØ—
’
˜1‘”€IØ�JŠJ�q‰MŒM€EØ�zŠz˜!‰}Œ}€HØ—’˜A‘”€Jà�HŠH�Q‰KŒK€EåÔ!Ø	�Y  xÐ0ØØŒkØŒ|ð	ñ ô €Fõ Ô!Ø	�Y  xÐ0ØØŒiØŒzð	ñ ô €Fõ Ô!Ø	�Y  zÐ2ØØŒkØŒ|ð	ñ ô €Fð €IØÐ °Ô!3ÐØ—.’. Ñ$Ô$ˆØ$+¨b¡L°AÒ$5Ð$5˜˜¸7ÀR¹<È'ÐTVÉ,Ñ;VˆÝ˜ŸšÑ)Ô)Ñ*Ô*ˆ	Ø&ˆ	�"‰Ý”KØ˜Yœ_°YÔ5Eð
ñ 
ô 
ˆ	ð ˜c 8 G 8˜mÔ,ˆ	à�6˜6 9Ð,Ð,r<   c                 ó„   — t          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        }|||fS r7   rž  )r«  rh  rÿ   rK  r  ry  rœ  r�  r‹  r˜  r™  rš  r›  ri  rj  r¨  rŸ  r   r¡  s                      r:   Ú'meta__scaled_dot_product_cudnn_backwardr¹    sA   € õ. Ô˜eÑ$Ô$€FÝÔ˜cÑ"Ô"€FÝÔ˜eÑ$Ô$€FØ�6˜6Ð!Ð!r<   Úwindow_size_leftÚwindow_size_rightÚ	seqused_kÚalibi_slopesc                 ó†  — |€|                       d¦  «        n|                     ¦   «         dz
  }|€|                       d¦  «        n|}|€|                      d¦  «        n|}|                       d¦  «        }|                       d¦  «        }t          j        | ¦  «        }|€*t          j        |||ft          j        | j        ¬¦  «        }n=|                       d¦  «        }t          j        ||ft          j        | j        ¬¦  «        }|	rX|dk    rdnd}t          j        ||z  ¦  «        }|dk    rd}n|dk    rd}t          j        ||||f| j	        | j        ¬¦  «        }n!t          j        d| j	        | j        ¬¦  «        }d	\  }}t          j
        j        rat          j                             ¦   «         rCt          j        d
t          j        d¬¦  «        }t          j        d
t          j        d¬¦  «        }nBt          j        dt          j        d¬¦  «        }t          j        d
t          j        d¬¦  «        }|||||fS )Nr   r¬   rô  r”   râ  rm  rn  ro  ©NNr@   ry   r,  )rœ   r�   rP   rê   r„   rT   r|   rÈ  rp  rX   rq  rr  r0  r�  r�   r\  )rh  rÿ   rK  r˜  r™  rš  r›  ri  rj  rk  r¨  rº  r»  r¼  r½  r  rt  rv  rs  ru  rx  ry  Útotal_qrz  r{  r|  r}  r~  s                               r:   Úmeta__flash_attention_forwardrÁ  )  s?  € ð4 #,Ð"3�—’˜A‘”�¸¿ºÑ9JÔ9JÈQÑ9N€JØ*3Ð*;˜Ÿš A™œ˜ÀÐØ(1Ð(9˜Ÿš !™œ˜¸uÐØ—
’
˜2‘”€IØ�zŠz˜"‰~Œ~€Hõ Ô  Ñ'Ô'€IØÐÝ”KØ˜Ð$6Ð7Ý”+Ø”<ð
ñ 
ô 
ˆ	ˆ	ð —*’*˜Q‘-”-ˆÝ”KØ˜Ð ­¬¸E¼Lð
ñ 
ô 
ˆ	ð ð LØ%¨š]˜]�c�c°ˆÝ”yÐ!3°kÑ!AÑBÔBˆØ Ò$Ð$ØˆLˆLØ 3Ò&Ð&ØˆLÝ”[Ø˜Ð$6¸ÐEØ”+Ø”<ð
ñ 
ô 
ˆ
ˆ
õ ”[ ¨%¬+¸e¼lÐKÑKÔKˆ
ð �L€Dˆ&Ý„}Ôð D�UœZ×4Ò4Ñ6Ô6ð DåŒ{˜2¥U¤Z¸Ð?Ñ?Ô?ˆÝ”˜R¥u¤z¸&ÐAÑAÔAˆˆåŒ{˜A¥e¤l¸6ÐBÑBÔBˆÝ”˜R¥u¤|¸FÐCÑCÔCˆàØØØØðð r<   c                 ó„   — t          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        }|||fS r7   rž  )r«  rh  rÿ   rK  r  ry  r˜  r™  rš  r›  ri  rj  rœ  r�  r¨  rº  r»  Ú
grad_queryÚgrad_keyÚ
grad_values                       r:   Úmeta__flash_attention_backwardrÆ  y  sA   € õ0 Ô! %Ñ(Ô(€JÝÔ Ñ$Ô$€HÝÔ! %Ñ(Ô(€Jà�x Ð+Ð+r<   Úcu_seqlens_qÚcu_seqlens_kÚmax_seqlen_qr{  Úcustom_mask_typeÚcausal_diagonalÚseqlen_kÚwindow_sizec                 ó–  — |                       d¦  «        }|                       d¦  «        }|                      d¦  «        }|                       d¦  «        }|                      d¦  «        }t          j        ||||| j        | j        ¬¦  «        }|�|                      d¦  «        dz
  n|}|}|�|€J ‚|}|�|n|}|
rt          j        |dz  ¦  «        dz  nd}t          j        |||ft          j        | j        ¬¦  «        }t          j        dt          j        d¬¦  «        }t          j        dt          j        d¬¦  «        }||||||fS )	Nr   r¬   rô  r”   râ  rK  r@   ry   )	rœ   rP   r„   rX   r|   rÈ  rp  rT   r�   )rh  rÿ   rK  rv  rÇ  rÈ  rÉ  r{  ri  rÊ  rŒ  r¨  rË  rÌ  rÍ  r  r×  r¹  rs  r­  rÌ  Úlogsumexp_batch_dimÚactual_max_seqlen_qÚactual_max_seqlen_kr®  r“  r}  r~  s                               r:   Ú!meta__efficient_attention_forwardrÒ  ˜  sZ  € ð, 	�
Š
�1‰Œ€AØ�
Š
�1‰Œ€AØ�Š�‰Œ€AØ—
’
˜2‘”€IØ	�Š�B‰Œ€Bå
Œ+�a˜˜I r°´ÀUÄ\Ð
RÑ
RÔ
R€Cà7CÐ7O˜,×+Ò+¨AÑ.Ô.°Ñ2Ð2ÐVWÐØÐØÐØÐ'Ð'Ð'Ø*ÐØ*6Ð*B˜,˜,ÈÐà4FÐM�Œ	Ð%¨Ñ*Ñ+Ô+¨bÑ0Ð0ÈAð õ ”Ø	˜i¨Ð7ÝŒkØŒ|ðñ ô €Jõ Œ;�r¥¤°FÐ;Ñ;Ô;€DÝŒ[˜¥5¤:°fÐ=Ñ=Ô=€Fà�
˜D &Ð*=Ð?RÐRÐRr<   Úbias_requires_gradÚnum_splits_keyÚshared_storage_dqdkdvc                 ó¢  — |rðt          j        |j        d         |j        d         k    d„ ¦  «         t          j        |j        d         |j        d         k    d„ ¦  «         t          j        g |j        dd…         ¢d‘|j        d         ‘|j        d         ‘R |j        |j        ¬¦  «        }|                     d	d¦  «        }|                     d	d¦  «        }|                     d	d
¦  «        }n<t          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        }|�|                     d¦  «        }|dz  dk    r|n
|dz   |dz  z
  }t          |                     ¦   «         ¦  «        }||d<   t          j        ||j        |j        ¬¦  «        }|dd |…f         }nt          j        d|j        ¬¦  «        }||||fS )Nr¬   c                  ó   — dS )Nz,seqlen must match for `shared_storage_dqdkdvr@   r@   r<   r:   r_   z4meta__efficient_attention_backward.<locals>.<lambda>è  s   € ÐB€ r<   r2   c                  ó   — dS )Nz3embedding dim must match for `shared_storage_dqdkdvr@   r@   r<   r:   r_   z4meta__efficient_attention_backward.<locals>.<lambda>ì  s   € ÐI€ r<   r   rô  r”   râ  rY  r,  r“  .r@   rÞ  )
rP   ra   r‘   r„   rX   r|   r÷  rê   rœ   r  )r«  rh  rÿ   rK  rv  rÇ  rÈ  rÉ  r{  ry  ri  rœ  r�  rÊ  rÓ  r¨  rÔ  rÕ  ÚchunkrÃ  rÄ  rÅ  r´  rµ  r¶  r³  s                             r:   Ú"meta__efficient_attention_backwardrÚ  Ì  sÕ  € ð2 ð -ÝŒØŒK˜ŒN˜cœi¨œlÒ*ØBÐBñ	
ô 	
ð 	
õ 	ŒØŒK˜ŒN˜cœi¨œlÒ*ØIÐIñ	
ô 	
ð 	
õ ”ØEˆeŒk˜!˜B˜$ÔÐE ÐE E¤K°¤OÐE°U´[À´_ÐEÐEØ”+Ø”<ð
ñ 
ô 
ˆð
 —\’\ " aÑ(Ô(ˆ
Ø—<’<  AÑ&Ô&ˆØ—\’\ " aÑ(Ô(ˆ
ˆ
åÔ% eÑ,Ô,ˆ
ÝÔ# CÑ(Ô(ˆÝÔ% eÑ,Ô,ˆ
àÐØ—)’)˜B‘-”-ˆØ$+¨b¡L°AÒ$5Ð$5˜˜¸7ÀR¹<È'ÐTVÉ,Ñ;VˆÝ˜Ÿš™œÑ%Ô%ˆ	Ø&ˆ	�"‰Ý”K 	°´ÀDÄKÐPÑPÔPˆ	Ø˜c 8 G 8˜mÔ,ˆ	ˆ	å”K ¨5¬<Ð8Ñ8Ô8ˆ	à�x ¨YÐ6Ð6r<   Úscale_aÚscale_bÚscale_resultÚuse_fast_accumc                 ó4
  ‡ ‡‡‡‡‡‡‡— d„ }t          j        ‰                      ¦   «         dk    o‰                     ¦   «         dk    ˆˆ fd„¦  «         t          j         |‰ j        ¦  «        o |‰j        ¦  «        ˆˆ fd„¦  «         t	          ‰ ¦  «        dk    �r.d„ }	d„ }
d„ }t          j         |	‰                      ¦   «         ¦  «        p
 |‰ ¦  «        ˆ fd	„¦  «         t          j         |
‰                     ¦   «         ¦  «        p
 |‰¦  «        ˆfd
„¦  «         t          j        ‰                      d¦  «        dz  dk    ˆ fd„¦  «         t          j        ‰                     d¦  «        dz  dk    o‰                     d¦  «        dz  dk    ˆfd„¦  «         ‰ j        \  Š}‰                     d¦  «        Š‰j        t           j        k    o‰j        t           j        k    p)‰j        t           j	        k    o‰j        t           j	        k    }‰ 
                    ¦   «         dk    rX‰ 
                    ¦   «         dk    r@t          j        ‰j        t           j        k    o‰j        t           j        k    d„ ¦  «         �nF|�r‰j        t           j	        k    rd}|dz  }nd}d}d„ } |||¦  «        } ||d¦  «        dz  }| |‰|¦  «        z  |z  Š| |‰|¦  «        z  |z  Š‰ 
                    ¦   «         ‰k    rj‰ 
                    ¦   «         ‰k    rRt          j        ‰                     ¦   «         d„ ¦  «         t          j        ‰                     ¦   «         d„ ¦  «         �n^t          j        dˆˆˆˆfd„¦  «         �nAt          j        ‰j        t           j        k    o‰j        t           j        k    d„ ¦  «         t          j        ‰                     ¦   «         dk    o‰                     ¦   «         dk    ˆˆfd„¦  «         ‰                     d¦  «        ‰k    rˆ‰                     d¦  «        dk    ro‰                     d¦  «        dk    rV‰                     d¦  «        ‰k    r=t          j        ‰                     ¦   «         o‰                     ¦   «         d„ ¦  «         nt          j        dˆˆˆˆfd„¦  «         |�|n‰ j        }t          j        ‰                      d¦  «        ‰                     d¦  «        |‰ j        ¬¦  «        S )Nc                 óx   — | t           j        t           j        t           j        t           j        t           j        fv S r7   )rP   r—  Úfloat8_e5m2Úfloat8_e4m3fnuzÚfloat8_e5m2fnuzÚfloat4_e2m1fn_x2r‰   s    r:   Úis_fp8_or_fp4_typez*meta_scaled_mm.<locals>.is_fp8_or_fp4_type  s2   € ØÝÔÝÔÝÔ!ÝÔ!ÝÔ"ð
ð 
ð 	
r<   r,  c                  ó\   •— d‰                      ¦   «         › d‰                       ¦   «         › �S )Nz%Inputs must be 2D but got self.dim()=z and mat2.dim()=r•   ©r‚  r’   s   €€r:   r_   z meta_scaled_mm.<locals>.<lambda>  s-   ø€ Ð`¸¿º¹
¼
Ð`Ð`ÐTX×T\ÒT\ÑT^ÔT^Ð`Ð`€ r<   c                  ó(   •— d‰j         › d‰ j         › �S )Nz?Expected both inputs to be fp8 or fp4 types but got self.dtype=z and mat2.dtype=r‰   rç  s   €€r:   r_   z meta_scaled_mm.<locals>.<lambda>"  s    ø€ ÐzÐRVÔR\ÐzÐzÐnrÔnxÐzÐz€ r<   r0  c                 ó>   — | d         | d         k    o| d         dk    S rÝ  r@   rÞ  s    r:   Úis_row_majorz$meta_scaled_mm.<locals>.is_row_major'  s"   € Ø˜!”9˜v aœyÒ(Ð;¨V°A¬Y¸!ª^Ð;r<   c                 ó2   — | d         dk    o| d         dk    S rÝ  r@   rÞ  s    r:   Úis_col_majorz$meta_scaled_mm.<locals>.is_col_major*  s   € Ø˜!”9 ’>Ð3 f¨Q¤i°!¢mÐ3r<   c                 óf   — |                       d¦  «        dk    p|                       d¦  «        dk    S rÝ  r›   )Ú	tensor_2ds    r:   Úhas_zero_dimz$meta_scaled_mm.<locals>.has_zero_dim-  s/   € Ø—>’> !Ñ$Ô$¨Ò)ÐC¨Y¯^ª^¸AÑ->Ô->À!Ò-CÐCr<   c                  ó2   •— d‰                       ¦   «         › �S )Nz#self must be row_major, got stride rÞ  rì   s   €r:   r_   z meta_scaled_mm.<locals>.<lambda>2  ó   ø€ ÐI¸$¿+º+¹-¼-ÐIÐI€ r<   c                  ó2   •— d‰                       ¦   «         › �S )Nz#mat2 must be col_major, got stride rÞ  ©r‚  s   €r:   r_   z meta_scaled_mm.<locals>.<lambda>6  rñ  r<   r¬   r“  r   c                  ó4   •— d‰                       d¦  «        › �S )NzBExpected self.size(1) to be divisible by 16, but got self.size(1)=r¬   r›   rì   s   €r:   r_   z meta_scaled_mm.<locals>.<lambda>:  s    ø€ ÐgÐY]×YbÒYbÐcdÑYeÔYeÐgÐg€ r<   c                  ó   •— d‰ j         › �S )Nz>Expected both dimensions of mat2 to be divisble by 16 but got rÍ   ró  s   €r:   r_   z meta_scaled_mm.<locals>.<lambda>>  s   ø€ ÐaÐUYÔU_ÐaÐa€ r<   c                  ó   — dS )NzNFor tensorwise scaling, both scale_a and scale_b must be float (fp32) tensors.r@   r@   r<   r:   r_   z meta_scaled_mm.<locals>.<lambda>R  s   € Ðh€ r<   rK  rn  c                 ó   — | |z   dz
  |z  S rj  r@   rA  s     r:   Úceil_divz meta_scaled_mm.<locals>.ceil_divb  s   € Ø˜A™ ™	 aÑ'Ð'r<   r<  c                  ó   — dS )Nzscale_a must be contiguousr@   r@   r<   r:   r_   z meta_scaled_mm.<locals>.<lambda>u  ó   € Ð8€ r<   c                  ó   — dS )Nzscale_b must be contiguousr@   r@   r<   r:   r_   z meta_scaled_mm.<locals>.<lambda>y  rú  r<   Fc            	      ój   •— d‰ › d‰                      ¦   «         › d‰› d‰                      ¦   «         › d�	S )NzTInvalid blockwise scaling configuration. For blockwise scaling, scale_a should have ú elements, got z, scale_b should have r·  rÛ  )Úexpected_a_sizeÚexpected_b_sizerÛ  rÜ  s   €€€€r:   r_   z meta_scaled_mm.<locals>.<lambda>~  sd   ø€ ðbØFUðbð bØfm×fsÒfsÑfuÔfuðbð bà/>ðbð bàOVÏ}Ê}ÉÌðbð bð bð r<   c                  ó   — dS )NzKFor rowwise scaling, both scale_a and scale_b must be float (fp32) tensors.r@   r@   r<   r:   r_   z meta_scaled_mm.<locals>.<lambda>‡  s   € Ðe€ r<   c                  ó\   •— d‰                       ¦   «         ›d‰                      ¦   «         ›�S )NzLFor non-tensorwise scaling, scale tensors must be 2D, but got scale_a.dim()=z and scale_b.dim()=r•   )rÛ  rÜ  s   €€r:   r_   z meta_scaled_mm.<locals>.<lambda>Œ  s2   ø€ Ð~ÐY`×YdÒYdÑYfÔYfÐ~Ð~Ðnu×nyÒnyÑn{Ôn{Ð~Ð~€ r<   c                  ó   — dS )Nz@Both scale_a and scale_b must be contiguous for rowwise scaling.r@   r@   r<   r:   r_   z meta_scaled_mm.<locals>.<lambda>˜  s   € Ð^€ r<   c                  óÆ   •— d‰ › d‰› d‰                      d¦  «        › d‰                      d¦  «        › d‰                      d¦  «        › d‰                      d¦  «        › d�S )	Nz}Invalid scaling configuration. For tensorwise scaling, both scales should be scalar. For rowwise scaling, scale_a should be (z, 1), scale_b should be (1, z). Got scale_a.size()=(r   rq   r¬   z) and scale_b.size()=(rr   r›   )r›  rD  rÛ  rÜ  s   €€€€r:   r_   z meta_scaled_mm.<locals>.<lambda>ž  s¢   ø€ ðUàCDðUð UàbcðUð Uð 07¯|ª|¸A©¬ðUð Uð CJÇ,Â,ÈqÁ/Ä/ðUð Uð 07¯|ª|¸A©¬ð	Uð Uð CJÇ,Â,ÈqÁ/Ä/ð	Uð Uð Uð r<   râ  )rP   ra   r   rX   r4  rÅ   rœ   r‘   Úfloat8_e8m0fnur—  r�   r”  r   r„   r|   )r’   r‚  rÛ  rÜ  rv  rÝ  rx  rÞ  rå  rê  rì  rï  Ú_kÚis_blockwise_scalingÚblock_size_kÚblock_size_mnrø  Únum_k_blocksÚpadded_num_k_blocksÚ
_out_dtyperþ  rÿ  r›  rD  s   ````                @@@@r:   Úmeta_scaled_mmr    sÑ  øøøøøøøø€ ð
ð 
ð 
õ 
„LØ�Š‰
Œ
�aŠÐ+˜DŸHšH™JœJ¨!šOØ`Ð`Ð`Ð`Ð`ñô ð õ 
„LØÐ˜4œ:Ñ&Ô&ÐIÐ+=Ð+=¸d¼jÑ+IÔ+IØzÐzÐzÐzÐzñô ð õ
 �4ÑÔ˜FÒ"Ñ"ð	<ð 	<ð 	<ð	4ð 	4ð 	4ð	Dð 	Dð 	Dõ 	ŒØˆL˜Ÿš™œÑ'Ô'Ð=¨<¨<¸Ñ+=Ô+=ØIÐIÐIÐIñ	
ô 	
ð 	
õ 	ŒØˆL˜Ÿš™œÑ'Ô'Ð=¨<¨<¸Ñ+=Ô+=ØIÐIÐIÐIñ	
ô 	
ð 	
õ 	ŒØ�IŠI�a‰LŒL˜2Ñ Ò"ØgÐgÐgÐgñ	
ô 	
ð 	
õ 	ŒØ�IŠI�a‰LŒL˜2Ñ Ò"Ð= t§y¢y°¡|¤|°bÑ'8¸AÒ'=ØaÐaÐaÐañ	
ô 	
ð 	
ð ”
‰ˆˆ2Ø�IŠI�a‰LŒLˆð ŒM�UÔ1Ò1ð 6Ø”¥Ô!5Ò5ð 
ð ŒM�UÔ0Ò0ð 5Ø”¥Ô!4Ò4ð 	ð �=Š=‰?Œ?˜aÒÐ G§M¢M¡O¤O°qÒ$8Ð$8åŒLØ”¥¤Ò.ÐQ°7´=ÅEÄMÒ3QØhÐhñô ð ñ ð "ñ Q	ð Œ}¥Ô 3Ò3Ð3ð  "�Ø˜!‘V��à!�àˆMð(ð (ð (ð $˜8 B¨Ñ5Ô5ˆLØ"* (¨<¸Ñ";Ô";¸aÑ"?Ðð   ¨¨MÑ :Ô :Ñ:Ð=PÑPð ð   ¨¨MÑ :Ô :Ñ:Ð=PÑPð ð
 —’‘” ?Ò2Ð2Ø—M’M‘O”O Ò6Ð6å”Ø×)Ò)Ñ+Ô+Ø8Ð8ñô ð õ ”Ø×)Ò)Ñ+Ô+Ø8Ð8ñô ð ñ õ
 ”Øðð ð ð ð ð ð ñô ð ñ õ ŒLØ”¥¤Ò.ÐQ°7´=ÅEÄMÒ3QØeÐeñô ð õ
 ŒLØ—’‘” Ò"Ð9 w§{¢{¡}¤}¸Ò'9Ø~Ð~Ð~Ð~Ð~ñô ð ð —’˜Q‘” 1Ò$Ð$Ø—L’L ‘O”O qÒ(Ð(Ø—L’L ‘O”O qÒ(Ð(Ø—L’L ‘O”O qÒ(Ð(õ ”Ø×)Ò)Ñ+Ô+ÐG°×0EÒ0EÑ0GÔ0GØ^Ð^ñô ð ð õ ”Øðð ð ð ð ð ð ñ	ô 	ð 	ð (Ð3��¸¼€JÝŒ;�t—y’y ‘|”| T§Y¢Y¨q¡\¤\¸ÈDÌKÐXÑXÔXÐXr<   c                 ó`   — t          | ||||d¬¦  «         |                      | j        ¦  «        S ©NT)rA  r[  ©r’   r   r‹   re  r   rž  s         r:   Úmeta_scatter_reduce_twor  «  s3   € õ �d˜C ¨¨VÀTÐJÑJÔJÐJØ�>Š>˜$œ*Ñ%Ô%Ð%r<   c                 ó0   — t          | ||||d¬¦  «         | S r  r_  r  s         r:   Úmeta_scatter_reduce__twor  ²  s"   € å�d˜C ¨¨VÀTÐJÑJÔJÐJØ€Kr<   c                ód  ‡ — t          j        d‰                      ¦   «         cxk     odk    nc ˆ fd„¦  «         ‰                      ¦   «         dk    r&t          j        |t           j        ‰ j        ¬¦  «        S t          j        ‰                      d¦  «        |t           j        ‰ j        ¬¦  «        S )Nr   r,  c                  ó2   •— d‰                       ¦   «         › �S )Nz@The probabilty distributions dimensions must be 1 or 2, but got r•   r$  s   €r:   r_   z"meta_multinomial.<locals>.<lambda>½  s   ø€ Ð`ÐSX×S\ÒS\ÑS^ÔS^Ð`Ð`€ r<   r¬   râ  )rP   ra   r   r„   r�   r|   rœ   )r  Únum_samplesÚreplacementrA  s   `   r:   Úmeta_multinomialr  ¸  s¬   ø€ õ 
„LØ	ˆE�IŠI‰KŒKÐÐÒÐ˜1ÒÐÐÐØ`Ð`Ð`Ð`ñô ð ð ‡y‚y�{„{�aÒÐÝŒ{˜;­e¬jÀÄÐNÑNÔNÐNÝŒ;Ø�
Š
�1‰Œ�{­%¬*¸U¼\ðñ ô ð r<   c                 ó   — d}| D ]}||z  }Œ|S rj  r@   )Úvsr‘  Úvs      r:   Úmultiply_integersr  Æ  s&   € Ø	€AØð ð ˆØ	ˆQ‰ˆˆØ€Hr<   c                 ó†  ‡ ‡‡‡— t          j        t          ‰¦  «        ‰k    ˆˆfd„¦  «         ‰dz   Št          j        t          ‰ ¦  «        ‰k    ˆˆ fd„¦  «         t          j        t          d„ ‰ dd …         D ¦   «         ¦  «        ot          d„ ‰D ¦   «         ¦  «        ˆ ˆfd„¦  «         ‰ d d…         \  }}||g‰¢R S )Nc                  ó.   •— d‰ › dt          ‰¦  «        › �S )Nz%It is expected output_size equals to ú, but got size rþ  )Únum_spatial_dimsr¢  s   €€r:   r_   z'upsample_common_check.<locals>.<lambda>Ð  s#   ø€ ÐkÐ8HÐkÐkÕY\Ð]hÑYiÔYiÐkÐk€ r<   r,  c                  ó.   •— d‰ › dt          ‰¦  «        › �S )Nz$It is expected input_size equals to r  rþ  )Úexpected_input_dimsru  s   €€r:   r_   z'upsample_common_check.<locals>.<lambda>Õ  s#   ø€ ÐlÐ7JÐlÐlÕ[^Ð_iÑ[jÔ[jÐlÐl€ r<   c              3   ó"   K  — | ]
}|d k    V — ŒdS rÒ  r@   ©rF   rÂ   s     r:   rm   z(upsample_common_check.<locals>.<genexpr>Ù  s&   è è € Ð*Ð*�aˆA�ŠEÐ*Ð*Ð*Ð*Ð*Ð*r<   c              3   ó"   K  — | ]
}|d k    V — ŒdS rÒ  r@   r#  s     r:   rm   z(upsample_common_check.<locals>.<genexpr>Ù  s&   è è € Ð2NÐ2N¸Q°1°q²5Ð2NÐ2NÐ2NÐ2NÐ2NÐ2Nr<   c                  ó   •— d‰ › d‰› �S )NzDInput and output sizes should be greater than 0, but got input size z and output size r@   )ru  r¢  s   €€r:   r_   z'upsample_common_check.<locals>.<lambda>Ú  s)   ø€ ð AØ ðAð AØ3>ðAð A€ r<   )rP   ra   r®   rÃ  )ru  r¢  r  r  Úchannelsr!  s   ```  @r:   Úupsample_common_checkr'  Í  s  øøøø€ Ý	„LÝˆKÑÔÐ,Ò,ØkÐkÐkÐkÐkñô ð ð +¨QÑ.ÐÝ	„LÝˆJ‰ŒÐ.Ò.ØlÐlÐlÐlÐlñô ð õ
 
„LÝÐ*Ð*˜: a b bœ>Ð*Ñ*Ô*Ñ*Ô*ÐN­sÐ2NÐ2NÀ+Ð2NÑ2NÔ2NÑ/NÔ/Nð	Að 	Að 	Að 	Að 	Añô ð ð " " 1 "”~Ñ€FˆHØ�HÐ+˜{Ð+Ð+Ð+r<   c                 óp  ‡ — t          j        ‰                      ¦   «         dk    p(t          ‰                      ¦   «         dd …         ¦  «        ˆ fd„¦  «         t          ‰                      ¦   «         |d¬¦  «        }‰                      |¦  «                             t          j	        ‰ ¦  «        ¬¦  «        S )Nr   r¬   c                  ó2   •— d‰                       ¦   «         › �S )Nz>Non-empty 3D data tensor expected but got a tensor with sizes r›   r$  s   €r:   r_   z$upsample_nearest1d.<locals>.<lambda>è  ó   ø€ Ð_ÐQV×Q[ÒQ[ÑQ]ÔQ]Ð_Ð_€ r<   ©r  ræ   ©
rP   ra   r�   r  rœ   r'  r�   rb  rJ   r"   )r  r¢  ÚscalesÚfull_output_sizes   `   r:   Úupsample_nearest1dr/  â  ó´   ø€ õ 
„LØ�Š‰Œ˜ÒÐAÕ/°·
²
±´¸Q¸R¸RÔ0@ÑAÔAØ_Ð_Ð_Ð_ñô ð õ -Ø�
Š
‰Œ�k°Aðñ ô Ðð �?Š?Ð+Ñ,Ô,×/Ò/ÝÔ1°%Ñ8Ô8ð 0ñ ô ð r<   c                 óØ  ‡ — t          j        ‰                      ¦   «         dk    p(t          ‰                      ¦   «         dd …         ¦  «        ˆ fd„¦  «         t          ‰                      ¦   «         |d¬¦  «        }‰                      |¦  «        }t          j        ‰ ¦  «        }‰ j	        \  }}}}‰ j
        j        dk    r|dk     rt           j        }|                     |¬¦  «        }|S )	Nr   r¬   c                  ó2   •— d‰                       ¦   «         › �S ©Nz>Non-empty 4D data tensor expected but got a tensor with sizes r›   r$  s   €r:   r_   z$upsample_nearest2d.<locals>.<lambda>ø  r*  r<   r,  r+  r0  r<  ræ   )rP   ra   r�   r  rœ   r'  r�   rJ   r"   r‘   r|   rs   rë   Ú
contiguous)	r  r¢  Úscales_hÚscales_wr.  r;  rç   rM   Ú
n_channelss	   `        r:   Úupsample_nearest2dr8  ò  sí   ø€ õ 
„LØ�Š‰Œ˜ÒÐAÕ/°·
²
±´¸Q¸R¸RÔ0@ÑAÔAØ_Ð_Ð_Ð_ñô ð õ -Ø�
Š
‰Œ�k°Aðñ ô Ðð �_Š_Ð-Ñ.Ô.€Fõ Ô/°Ñ6Ô6€Mð  œ+Ñ€A€z�1�aØ„|Ô˜FÒ"Ð" z°A¢~ ~ÝÔ/ˆà×Ò¨]ÐÑ;Ô;€Fà€Mr<   r¢  ru  r5  r6  c                 óv  ‡ ‡‡— t          ||d¬¦  «        Št          j        ‰ j        dk    ˆ fd„¦  «         t	          d¦  «        D ]9Št          j        ‰                      ‰¦  «        ‰‰         k    ˆˆ ˆfd„¦  «         Œ:‰                      |¦  «                             t          j	        ‰ ¦  «        ¬¦  «        S )Nr,  r+  r<  c                  ó   •— d‰ j         › �S ©NzFExpected grad_output to be a tensor of dimension 4 but got: dimension r8  rÈ  s   €r:   r_   z-upsample_nearest2d_backward.<locals>.<lambda>  ó   ø€ ÐkÐYdÔYiÐkÐk€ r<   c            
      óR   •— d‰› d‰ ‰         › d‰› d‰                      ‰¦  «        › �S )NzCExpected grad_output to have the same shape as output; output.size(ú) = z but got grad_output.size(r›   ©r.  r0  r  s   €€€r:   r_   z-upsample_nearest2d_backward.<locals>.<lambda>#  s]   ø€ ðJØ !ðJð JØ'7¸Ô':ðJð Jà-.ðJð Jà4?×4DÒ4DÀQÑ4GÔ4GðJð Jð r<   ræ   )
r'  rP   ra   rž   r±   rœ   r�   rb  rJ   r"   )r0  r¢  ru  r5  r6  r.  r  s   `    @@r:   Úupsample_nearest2d_backwardr@    sõ   øøø€ õ -Ø�K°!ðñ ô Ðõ 
„LØÔ˜AÒØkÐkÐkÐkñô ð õ �1‰XŒXð 
ð 
ˆÝŒØ×Ò˜QÑÔÐ#3°AÔ#6Ò6ðð ð ð ð ð ñ	
ô 	
ð 	
ð 	
ð × Ò  Ñ,Ô,×/Ò/ÝÔ1°+Ñ>Ô>ð 0ñ ô ð r<   c                 óp  ‡ — t          j        ‰                      ¦   «         dk    p(t          ‰                      ¦   «         dd …         ¦  «        ˆ fd„¦  «         t          ‰                      ¦   «         |d¬¦  «        }‰                      |¦  «                             t          j	        ‰ ¦  «        ¬¦  «        S )Nr   r¬   c                  ó2   •— d‰                       ¦   «         › �S )Nz>Non-empty 5D data tensor expected but got a tensor with sizes r›   r$  s   €r:   r_   z$upsample_nearest3d.<locals>.<lambda>5  r*  r<   r2   r+  ræ   r,  )r  r¢  Úscales_dr5  r6  r.  s   `     r:   Úupsample_nearest3drD  /  r0  r<   c                 óð  — t          j        | ¦  «        t          j        | t           j        ¬¦  «        }}|�½|�»t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚|j        }|                     ¦   «         }	t          ||¦  «        }t          ||¦  «        }|                     ||	¦  «         |                     ||	¦  «         t          ||¬¦  «         t          ||¬¦  «         ||fS ||fS )Nr‰   )rÀ  rÁ  )
rP   rê   rò   rj   r#   r‘   rÅ   r%   r	  r'   )
r’   Ústabler   Ú
descendingrî   rï   r  r  r¡   Ú
out_strides
             r:   Ú	meta_sortrI  ?  sú   € õ Ô˜DÑ!Ô!¥5Ô#3°DÅÄÐ#LÑ#LÔ#L€q€AØÐ˜gÐ1Ý˜&¥*Ñ-Ô-Ð-Ð-Ð-Ý˜'¥:Ñ.Ô.Ð.Ð.Ð.ð ”Gˆ	Ø—X’X‘Z”Zˆ
Ý" 6¨9Ñ5Ô5ˆÝ# G¨YÑ7Ô7ˆØ×Ò˜9 jÑ1Ô1Ð1Ø×Ò˜I zÑ2Ô2Ð2Ý ¨FÐ3Ñ3Ô3Ð3Ý ¨GÐ4Ñ4Ô4Ð4Ø�wˆÐØˆaˆ4€Kr<   c           	      ó  ‡ ‡‡‡‡‡‡‡— t          j        ‰ j        dk    ˆ fd„¦  «         t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         ‰                      d¦  «        Š‰�wt          j        ‰j        dk    ˆfd„¦  «         t          j        ‰                     ¦   «         ‰k    ˆˆfd„¦  «         t          j        ‰j        ‰j        k    ˆˆfd„¦  «         t          j        ‰j        dk    ˆfd„¦  «         ‰                      d	¦  «        ‰z  ‰z  Št          j        ‰                     ¦   «         ‰k    ˆˆˆˆ ˆfd
„¦  «         t          j        t          ˆ fd„‰‰‰‰fD ¦   «         ¦  «        d„ ¦  «         d S )Nr,  c                  ó   •— ‰ j         › d�S ©Nz != 2r8  )Úinput_gatess   €r:   r_   z%rnn_cell_checkSizes.<locals>.<lambda>b  ó   ø€ °;Ô3CÐ0JÐ0JÐ0J€ r<   c                  ó&   •— ‰j         › d‰ j         › �S ©Nú != rÍ   )Úhidden_gatesrM  s   €€r:   r_   z%rnn_cell_checkSizes.<locals>.<lambda>e  s   ø€ �;Ô$Ð>Ð>¨,Ô*<Ð>Ð>€ r<   r¬   c                  ó   •— ‰ j         › d�S )Nz != 1r8  )Ú
input_biass   €r:   r_   z%rnn_cell_checkSizes.<locals>.<lambda>i  s   ø€ °j´oÐ3LÐ3LÐ3L€ r<   c                  ó6   •— ‰                      ¦   «         › d‰ › �S rP  rÛ  )Ú
gates_sizerT  s   €€r:   r_   z%rnn_cell_checkSizes.<locals>.<lambda>l  s!   ø€ �z×'Ò'Ñ)Ô)Ð;Ð;¨zÐ;Ð;€ r<   c                  ó&   •— ‰j         › d‰ j         › �S rP  rÍ   )Úhidden_biasrT  s   €€r:   r_   z%rnn_cell_checkSizes.<locals>.<lambda>p  s   ø€ �zÔ'Ð@Ð@¨[Ô->Ð@Ð@€ r<   c                  ó   •— ‰ j         › d�S rL  r8  )Úprev_hiddens   €r:   r_   z%rnn_cell_checkSizes.<locals>.<lambda>r  rN  r<   r   c            
      óp   •— ‰                      ¦   «         › d‰                     d¦  «        › d‰› d‰› d‰ › d�
S )NrQ  r   z * z // z (aka rr   )r�   rœ   )Úexpected_prev_hidden_numelÚfactorrV  rM  rZ  s   €€€€€r:   r_   z%rnn_cell_checkSizes.<locals>.<lambda>v  sL   ø€ �;×$Ò$Ñ&Ô&ÐÐ¨K×,<Ò,<¸QÑ,?Ô,?ÐÐÀJÐÐÐTZÐÐÐb|ÐÐÐ€ r<   c              3   ó8   •K  — | ]}|j         ‰j         k    V — Œd S r7   rÞ  )rF   rG   rM  s     €r:   rm   z&rnn_cell_checkSizes.<locals>.<genexpr>y  sA   øè è € ð 
ð 
àð ŒH˜Ô*Ò*ð
ð 
ð 
ð 
ð 
ð 
r<   c                  ó   — dS )Nz%expected all inputs to be same devicer@   r@   r<   r:   r_   z%rnn_cell_checkSizes.<locals>.<lambda>}  s   € Ð7€ r<   )rP   ra   rž   r‘   rœ   r�   rÃ  )rM  rR  rT  rX  r]  rZ  r\  rV  s   ``````@@r:   Úrnn_cell_checkSizesr`  Z  sò  øøøøøøøø€ õ 
„L�Ô! QÒ&Ð(JÐ(JÐ(JÐ(JÑKÔKÐKÝ	„LØÔ˜\Ô/Ò/Ø>Ð>Ð>Ð>Ð>ñô ð ð ×!Ò! !Ñ$Ô$€JØÐÝŒ�Z”_¨Ò)Ð+LÐ+LÐ+LÐ+LÑMÔMÐMÝŒØ×ÒÑÔ *Ò,Ø;Ð;Ð;Ð;Ð;ñ	
ô 	
ð 	
õ 	ŒØÔ Ô 1Ò1Ø@Ð@Ð@Ð@Ð@ñ	
ô 	
ð 	
õ 
„L�Ô! QÒ&Ð(JÐ(JÐ(JÐ(JÑKÔKÐKØ!,×!1Ò!1°!Ñ!4Ô!4°zÑ!AÀVÑ!KÐÝ	„LØ×ÒÑÔÐ9Ò9ØÐÐÐÐÐÐÐñô ð õ 
„LÝð 
ð 
ð 
ð 
à" J°¸[ÐIð
ñ 
ô 
ñ 	
ô 	
ð 	8Ð7ñô ð ð ð r<   c                 óô   — t          | |||d|¦  «         t          j        | t          j        ¬¦  «        }t          j        |t          j        ¬¦  «        }t          j        |t          j        ¬¦  «        }|||fS )Nr<  ræ   )r`  rP   rê   rë   )rM  rR  ÚcxrT  rX  Ú	workspaceÚhyÚcys           r:   Ú_thnn_fused_lstm_cell_metarf  �  sq   € õ ˜ \°:¸{ÈAÈrÑRÔRÐRÝÔ  ½EÔ<SÐTÑTÔT€IÝ	Ô	˜"­EÔ,CÐ	DÑ	DÔ	D€BÝ	Ô	˜"­EÔ,CÐ	DÑ	DÔ	D€BØ��IÐÐr<   c                 ót  — t          |¦  «        dk    }|r%t          |¦  «        }|d         }| j        d         }n:|
r| j        d         n| j        d         }|
r| j        d         n| j        d         }d}|rdnd}|dk    r|n|}|r|||z  g}n|
r||||z  gn||||z  g}|                      |¦  «        }|	|z  ||g}|€t          j        d| j        ¬¦  «        }n|                     |¦  «        }|                     |	|z  ||g¦  «        }|rdnd}|                      |t          j        ¬¦  «        }|||||fS )Nr   r¬   r”   r,  rÞ  r‰   )r®   r‘   r�   rP   r„   r|   r	  )r  rt  Úweight_stride0Ú
weight_bufÚhxrb  r�  Úhidden_sizeÚ	proj_sizeÚ
num_layersÚbatch_firstÚdropoutÚtrainÚbidirectionalÚbatch_sizesÚdropout_stateÚis_input_packedÚ
seq_lengthÚ
mini_batchÚbatch_sizes_sumÚnum_directionsÚout_sizer¡   r;  Ú
cell_shapere  rd  Úreserve_shapeÚreserves                                r:   Ú
_cudnn_rnnr}  �  s‰  € õ& ˜+Ñ&Ô&¨!Ò+€OØð Ý˜Ñ%Ô%ˆ
Ø  ”^ˆ
Øœ+ aœ.ˆˆà'2ÐF�U”[ ”^�^¸¼ÀA¼ˆ
Ø'2ÐF�U”[ ”^�^¸¼ÀA¼ˆ
Øˆà'Ð.�Q�Q¨Q€NØ%¨šN˜Nˆyˆy°€HØð 
Ø$ h°Ñ&?Ð@ˆ	ˆ	ð ðEˆZ˜ X°Ñ%>Ð?Ð?à˜j¨(°^Ñ*CÐDð 	ð
 �_Š_˜YÑ'Ô'€Fà˜~Ñ-¨z¸;ÐG€JØ	€zÝŒ[˜ 5¤<Ð0Ñ0Ô0ˆˆà�\Š\˜*Ñ%Ô%ˆà	�Š�z NÑ2°JÀÐIÑ	JÔ	J€Bð Ð%�A�A A€MØ�oŠo˜mµ5´;ˆoÑ?Ô?€Gà�2�r˜7 JÐ.Ð.r<   c                 óð  — |r| j         d         n| j         d         }|r| j         d         n| j         d         }|
}|r|||gn|||g}|                      |¦  «        }|€t          j        d| j        ¬¦  «        }n|                     |j         ¦  «        }|€t          j        d| j        ¬¦  «        }n|                     |j         ¦  «        }t          j        d| j        t          j        ¬¦  «        }||||fS )Nr¬   r   rÞ  rñ   )r‘   r�   rP   r„   r|   r	  )r  Úw0Úw1Úw2Úw3Úhx_Úcx_r   rr  r�  rk  rm  Ú
has_biasesrq  rn  rp  ru  rv  Úoutput_chanelsr¡   r;  rd  re  rc  s                           r:   Úmkldnn_rnn_layerr‡  È  sþ   € ð& $/ÐB�”˜Q”�°E´KÀ´N€JØ#.ÐB�”˜Q”�°E´KÀ´N€JØ €Nð ð	6ˆ�Z Ð0Ð0à˜* nÐ5ð ð
 �_Š_˜YÑ'Ô'€FØ
€{ÝŒ[˜ 5¤<Ð0Ñ0Ô0ˆˆà�]Š]˜3œ9Ñ%Ô%ˆØ
€{ÝŒ[˜ 5¤<Ð0Ñ0Ô0ˆˆà�]Š]˜3œ9Ñ%Ô%ˆÝ”˜A e¤l½%¼+ÐFÑFÔF€IØ�2�r˜9Ð$Ð$r<   c                 óÊ   ‡‡— | j         dk    r%t          j        ‰dk    p‰dk    ˆˆfd„¦  «         d S t          j        |                      ‰¦  «        dk    ˆˆfd„¦  «         d S )Nr   r”   c                  ó   •— ‰› d‰ › �S )Nz4: Expected reduction dim -1 or 0 for scalar but got r@   ©r   r  s   €€r:   r_   z'zero_numel_check_dims.<locals>.<lambda>ô  s   ø€ �wÐYÐYÐTWÐYÐY€ r<   c                  ó   •— ‰› d‰ › d�S )Nz: Expected reduction dim z to have non-zero size.r@   rŠ  s   €€r:   r_   z'zero_numel_check_dims.<locals>.<lambda>ù  s   ø€ �wÐUÐU¸ÐUÐUÐU€ r<   )rž   rP   rŽ   rœ   )r’   r   r  s    ``r:   Úzero_numel_check_dimsrŒ  ð  s�   øø€ Ø„y�A‚~€~ÝÔØ�1ŠHÐ!˜˜rš	ØYÐYÐYÐYÐYñ	
ô 	
ð 	
ð 	
ð 	
õ
 	ÔØ�IŠI�c‰NŒN˜aÒØUÐUÐUÐUÐUñ	
ô 	
ð 	
ð 	
ð 	
r<   c                 óÒ   ‡ — |�5t          ||                     ¦   «         ¦  «        }t          ||‰ ¦  «         d S t          j        |                     ¦   «         dk    ˆ fd„¦  «         d S )Nr   c                  ó   •— ‰ › d�S )Nz@: Expected reduction dim to be specified for input.numel() == 0.r@   rH  s   €r:   r_   z%check_argmax_argmin.<locals>.<lambda>  s   ø€ �tÐ]Ð]Ð]€ r<   )ró   r   rŒ  rP   ra   r�   )rø  r’   r   s   `  r:   Úcheck_argmax_argminr�  þ  sq   ø€ Ø
€Ý˜S $§(¢(¡*¤*Ñ-Ô-ˆÝ˜d C¨Ñ.Ô.Ð.Ð.Ð.åŒØ�JŠJ‰LŒL˜AÒØ]Ð]Ð]Ð]ñ	
ô 	
ð 	
ð 	
ð 	
r<   c                 óÆ   — t          d| |¦  «         t          j        | j        |�|fnd ¦  «        }t	          | ||¦  «        }|                      |t          j        ¬¦  «        S )NÚargmaxr‰   )r�  rJ   r¿  r‘   rÀ  r�   rP   rò   )r’   r   rÂ  r¾  r‘   s        r:   Úargmax_argmin_metar’  	  s[   € å˜ $¨Ñ,Ô,Ð,ÝÔ ¤
°c°o¨S¨F¨FÈ4ÑPÔP€DÝ$ T¨4°Ñ9Ô9€EØ�>Š>˜%¥u¤{ˆ>Ñ3Ô3Ð3r<   c                 ól   — |t           j        k    rt           j        }t          j        d||||¬¦  «        S )Nr@   rF  )rP   ÚjaggedrÝ  r„   )rÂ   rX   r{   r|   r}   s        r:   Úscalar_tensorr•    s<   € ð
 •”ÒÐÝ”ˆÝŒ;Ø
�% ¨vÀ*ðñ ô ð r<   c                 óÈ  — t          ||                      ¦   «         d¬¦  «        }|                      ¦   «         dk    rdn|                      |¦  «        }t          j        |¦  «         t          j        ||k    d„ ¦  «         t          | j        ¦  «        }t          |¦  «        dk    r|||<   |  	                    |¦  «        |  	                    |t          j
        ¬¦  «        fS )NT©r!  r   r¬   c                  ó   — dS )Nzk not in range for dimensionr@   r@   r<   r:   r_   ztopk_meta.<locals>.<lambda>#  s   € Ð)G€ r<   r‰   )ró   r   rœ   rP   rì  ra   r  r‘   r®   r�   rò   )r’   rš  r   Úlargestr‡  Ú	sliceSizeÚtopKSizes          r:   Ú	topk_metarœ    sÀ   € õ ˜˜dŸhšh™jœj°dÐ
;Ñ
;Ô
;€CØ—X’X‘Z”Z 1’_�_��¨$¯)ª)°C©.¬.€IÝ	Ô˜ÑÔÐÝ	„L��i’Ð!GÐ!GÑHÔHÐHå�D”JÑÔ€HÝ
ˆ8�}„}�qÒÐØˆ�‰Ø�>Š>˜(Ñ#Ô# T§^¢^°HÅEÄK ^Ñ%PÔ%PÐPÐPr<   c                 ó¼   — |€|€
J d¦   «         ‚|                      ¦   «         }|                       ¦   «         }	t          j        ||	j        |	j        |	j        ¬¦  «        S )Nz;segment_reduce(): Either lengths or offsets must be defined)rX   r|   r{   )r4  rP   rê   rX   r|   r{   )
ru  r;  r¯  r   rª  r«  r¬  r®  Údata_contigÚgrad_contigs
             r:   Úmeta__segment_reduce_backwardr   +  so   € ð
 Ð 'Ð"5Ð"5ØEñ #6Ô"5Ð"5ð —/’/Ñ#Ô#€KØ—/’/Ñ#Ô#€KÝÔØØÔØÔ!ØÔ!ð	ñ ô ð r<   c                 ó4  ‡— ddl m} t          ‰|                      ¦   «         d¬¦  «        Š|                      ¦   «         dk    r|                      ‰¦  «        nd}t          j         ||dk    ||k    ¦  «        ˆfd„¦  «         t          | j        d ‰…         | j        ‰dz   d …         z   ¦  «        }|r.|                      ¦   «         dk    r| 	                    ‰d¦  «         |  
                    |¦  «        |  
                    |t
          j        ¬¦  «        fS )Nr   )Úsym_andTr—  r¬   c                  ó   •— d‰ › �S )Nz9kthvalue(): selected number k out of range for dimension r@   r•   s   €r:   r_   zkthvalue_meta.<locals>.<lambda>F  s   ø€ ÐQÈCÐQÐQ€ r<   r‰   )r­   r¢  ró   r   rœ   rP   ra   r  r‘   rk  r�   rò   )r’   rš  r   rÂ  r¢  ÚdimSizer‘   s     `    r:   Úkthvalue_metar¥  =  s  ø€ ð >Ð=Ð=Ð=Ð=Ð=å
˜˜dŸhšh™jœj°dÐ
;Ñ
;Ô
;€CØ $§¢¡
¤
¨Q¢ ˆd�iŠi˜‰nŒnˆn°A€GÝ	„LØˆ��Q’˜˜WšÑ%Ô%ØQÐQÐQÐQñô ð õ
 �”˜D˜S˜DÔ! D¤J¨s°Q©w¨y¨yÔ$9Ñ9Ñ:Ô:€EØð �4—8’8‘:”: ’>�>Ø�Š�S˜!ÑÔÐØ�>Š>˜%Ñ Ô  $§.¢.°½e¼k .Ñ"JÔ"JÐJÐJr<   c                 óÎ  — | �| n|}t          j        |                     ¦   «         dk    d„ ¦  «         |                     ¦   «         }| �,t          j        |                      ¦   «         |k    d„ ¦  «         |�,t          j        |                     ¦   «         |k    d„ ¦  «         t          j        |                     ¦   «         |k    d„ ¦  «         t          j        |                     ¦   «         |k    d„ ¦  «         t          j        |                     ¦   «         dk    d„ ¦  «         t          j        |                     ¦   «         |d         |d	         z  d
z  k    d„ ¦  «         d S )Nr,  c                  ó   — dS ©NÚ r@   r@   r<   r:   r_   z(checkLSTMBackwardSizes.<locals>.<lambda>U  s   € °"€ r<   c                  ó   — dS r¨  r@   r@   r<   r:   r_   z(checkLSTMBackwardSizes.<locals>.<lambda>X  ó   € ¸€ r<   c                  ó   — dS r¨  r@   r@   r<   r:   r_   z(checkLSTMBackwardSizes.<locals>.<lambda>Z  r«  r<   c                  ó   — dS r¨  r@   r@   r<   r:   r_   z(checkLSTMBackwardSizes.<locals>.<lambda>[  ó   € °€ r<   c                  ó   — dS r¨  r@   r@   r<   r:   r_   z(checkLSTMBackwardSizes.<locals>.<lambda>\  r®  r<   c                  ó   — dS r¨  r@   r@   r<   r:   r_   z(checkLSTMBackwardSizes.<locals>.<lambda>]  s   € ¨r€ r<   r   r¬   r<  c                  ó   — dS r¨  r@   r@   r<   r:   r_   z(checkLSTMBackwardSizes.<locals>.<lambda>^  s   € ÈR€ r<   )rP   ra   r   rœ   r�   )Úgrad_hyÚgrad_cyrb  re  rc  Údefined_gradÚexp_sizes          r:   ÚcheckLSTMBackwardSizesr¶  S  s2  € Ø%Ð1�7�7°w€LÝ	„L�×!Ò!Ñ#Ô# qÒ(¨*¨*Ñ5Ô5Ð5Ø× Ò Ñ"Ô"€HØÐÝŒ�W—\’\‘^”^ xÒ/°°Ñ<Ô<Ð<ØÐÝŒ�W—\’\‘^”^ xÒ/°°Ñ<Ô<Ð<Ý	„L�—’‘”˜hÒ&¨
¨
Ñ3Ô3Ð3Ý	„L�—’‘”˜hÒ&¨
¨
Ñ3Ô3Ð3Ý	„L�—’‘” AÒ% z zÑ2Ô2Ð2Ý	„L�—’Ñ"Ô" h¨q¤k°H¸Q´KÑ&?À!Ñ&CÒCÀZÀZÑPÔPÐPÐPÐPr<   c                 óà   — | €|€dS t          | ||||¦  «         t          j        |t          ¬¦  «        }t          j        |t          ¬¦  «        }|r|                     dd¬¦  «        nd }|||fS )N©NNNræ   r   F)rÂ  )r¶  rP   rê   Úlegacy_contiguous_memory_formatr  )	r²  r³  rb  re  rc  Úhas_biasÚ
grad_gatesÚgrad_cxr³  s	            r:   Ú#_thnn_fused_lstm_cell_backward_implr½  b  sˆ   € à€˜7˜?ØÐÝ˜7 G¨R°°YÑ?Ô?Ð?ÝÔ!ØÕ!@ðñ ô €Jõ Ô˜rÕ1PÐQÑQÔQ€GØ4<ÐF�
—’˜q¨%�Ñ0Ô0Ð0À$€IØ�w 	Ð)Ð)r<   c                 ó`  — d }d }d }|d         r'|                      |                      ¦   «         ¦  «        }|d         s|d         re|                      |                     d¦  «        |                      d¦  «        f¦  «        }|                      |                     d¦  «        ¦  «        }|||fS )Nr   r¬   r,  r”   r  )r  r  r  r  r4  Úgrad_weightr³  s          r:   Úlinear_backwardrÀ  p  s°   € à€JØ€KØ€IØ�1„~ð ;Ø!×+Ò+¨F¯KªK©M¬MÑ:Ô:ˆ
Ø�1„~ð B˜ Qœð BØ"×,Ò,¨l×.?Ò.?ÀÑ.CÔ.CÀVÇ[Â[ÐQSÁ_Ä_Ð-UÑVÔVˆØ ×*Ò*¨<×+<Ò+<¸RÑ+@Ô+@ÑAÔAˆ	Ø˜ YÐ/Ð/r<   c                 ó   ‡ ‡— t          ‰ j        ¦  «        dk    r‰ j        d         ||z  z  dk    sJ d‰ j        › d|› �¦   «         ‚d„ Šˆˆ fd„}‰ j        d         ||z  z  }‰ j        d         |z  }‰ j        d	         |z  }g ‰ j        d d…         ¢|‘|‘|‘R }‰                      |¦  «        }|                      |¦   «         ¬
¦  «        }|S )Nr,  rY  r   z'Invalid input shape for pixel_shuffle: z with upscale_factor = c                 ó\   — t           j                             | ¦  «        t           j        k    S r7   rÚ  rÝ  s    r:   rß  z,meta_pixel_shuffle.<locals>.is_channels_last…  s!   € ÝÔ"×8Ò8¸Ñ=Ô=ÅÔATÒTÐTr<   c                  ó$  •—  ‰ ‰¦  «        r+t          ‰¦  «        dk    rt          j        S t          j        S ‰                     t          j        ¬¦  «        rt          j        S ‰                     t          j        ¬¦  «        rt          j        S d S rï  )r4  rP   rë   rÜ  r   rð  )rß  r’   s   €€r:   rç  z.meta_pixel_shuffle.<locals>.pick_memory_formatˆ  s�   ø€ ØÐ˜DÑ!Ô!ð 	)Ý˜4Ñ Ô  FÒ*Ð*ÝÔ.Ð.åÔ*Ð*Ø×Ò­eÔ.EÐÑFÔFð 	)ÝÔ*Ð*Ø×Ò­eÔ.CÐÑDÔDð 	)ÝÔ(Ð(ð	)ð 	)r<   rô  r”   ræ   )r®   r‘   r�   rb  )	r’   Úupscale_factorrç  rö  ÚHrÚWrr¡   r  rß  s	   `       @r:   Úmeta_pixel_shufflerÇ  }  s  øø€ õ 	ˆDŒJ‰Œ˜!ÒÐ ¤
¨2¤°.À>Ñ2QÑ RÐVWÒ WÐ WÐ Wàe°$´*ÐeÐeÐUcÐeÐeñ !XÔ WÐ Wð
Uð Uð Uð	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	Œ
�2Œ˜>¨NÑ:Ñ;€AØ	Œ�BŒ˜.Ñ	(€BØ	Œ�BŒ˜.Ñ	(€BØ-�$”*˜S˜b˜S”/Ð- 1Ð- bÐ-¨"Ð-Ð-€Ià
�.Š.˜Ñ
#Ô
#€CØ
�&Š&Ð1Ð1Ñ3Ô3ˆ&Ñ
4Ô
4€CØ€Jr<   c                 óL  — |                       | j        ¦  «        }|                      |j        ¦  «        }|                      |j        ¦  «        }|                      |j        ¦  «        }|                      |j        ¦  «        }|                      |j        ¦  «        }|||||||fS r7   rÿ  )r  Úweight0Úweight1Úweight2Úweight3rƒ  Úcx_tmpr;  Úhy_Úcy_Úgrad_output_r_optÚgrad_hy_r_optÚgrad_cy_r_optr   r�  rk  rm  r…  rp  rq  rr  rn  rc  Údiff_xÚdiff_hxÚdiff_cxÚdiff_w1Údiff_w2Údiff_bs                                r:   Úmkldnn_rnn_layer_backwardrÙ  �  s“   € ð4 �_Š_˜Uœ[Ñ)Ô)€FØ�mŠm˜CœIÑ&Ô&€GØ×Ò˜vœ|Ñ,Ô,€GØ×Ò ¤Ñ.Ô.€GØ×Ò ¤Ñ.Ô.€GØ×Ò˜wœ}Ñ-Ô-€FØ�7˜G V¨V°W¸gÐEÐEr<   )Ú	out_int32r  c                ót   — t          j        | |rt           j        nt           j        t           j        ¬¦  «        S )N©rX   rç   )rP   rê   r|  rò   rë   )r’   Ú
boundariesrÚ  r  s       r:   Úmeta_bucketizerÞ  À  s7   € õ ÔØØ&Ð7�eŒkˆk­E¬KÝÔ-ðñ ô ð r<   éd   c                 ó¸  ‡ ‡‡‡‡— dŠt          ‰ ¦  «        dk    r*t          j        ‰                      ¦   «         ˆ fd„¦  «         t          ‰ ¦  «        dk    r(‰                      ¦   «         rt	          j        d¦  «         t          j        t          ‰t          ¦  «        ˆˆfd„¦  «         t          j        ‰dk    ˆˆfd„¦  «         t          j        t          ‰t          ¦  «        ˆˆfd	„¦  «         t          j        t          ‰t          ¦  «        ˆˆfd
„¦  «         t          j        ‰‰k    d„ ¦  «         t          j	        ‰‰ j
        ‰ j        ¬¦  «        S )Nzhistc()ræ  c                  ó   •— d‰ j         › d�S )Nz%"histogram_cpu" not implemented for 'r!  r‰   r$  s   €r:   r_   zmeta_histc.<locals>.<lambda>Ñ  s   ø€ ÐL¸e¼kÐLÐLÐL€ r<   r0  z%_histc_cuda with floating point inputc                  ó,   •— ‰› dt          ‰ ¦  «        › �S )Nz#: argument 'bins' must be int, not r   ©Úbinsr  s   €€r:   r_   zmeta_histc.<locals>.<lambda>×  s   ø€ �7ÐKÐK½tÀD¹z¼zÐKÐK€ r<   r   c                  ó   •— ‰› d‰ › �S )Nz: bins must be > 0, but got r@   rã  s   €€r:   r_   zmeta_histc.<locals>.<lambda>Ù  s   ø€  gÐ#QÐ#QÈ4Ð#QÐ#Q€ r<   c                  ó,   •— ‰ › dt          ‰¦  «        › �S )Nz%: argument 'min' must be Number, not r   )r  r5  s   €€r:   r_   zmeta_histc.<locals>.<lambda>Ü  ó   ø€ �7ÐLÐLÅÀcÁÄÐLÐL€ r<   c                  ó,   •— ‰ › dt          ‰¦  «        › �S )Nz%: argument 'max' must be Number, not r   )r  r²   s   €€r:   r_   zmeta_histc.<locals>.<lambda>à  rç  r<   c                  ó   — dS )Nz&{fn_name}: max must be larger than minr@   r@   r<   r:   r_   zmeta_histc.<locals>.<lambda>â  s   € Ð%M€ r<   rñ   )r4  rP   ra   r3  rJ   rÿ  rj   r   r!   r„   r|   rX   )r  rä  r5  r²   r  s   ````@r:   Ú
meta_histcrê  Ê  sv  øøøøø€ ð €GÝ�5ÑÔ˜UÒ"Ð"ÝŒØ×#Ò#Ñ%Ô%ØLÐLÐLÐLñ	
ô 	
ð 	
õ �5ÑÔ˜VÒ#Ð#¨×(?Ò(?Ñ(AÔ(AÐ#ÝÔ%Ð&MÑNÔNÐNÝ	„LÝ�4�Ñ!Ô!ØKÐKÐKÐKÐKñô ð õ 
„L�˜’ÐQÐQÐQÐQÐQÑRÔRÐRÝ	„LÝ�3�ÑÔØLÐLÐLÐLÐLñô ð õ 
„LÝ�3�ÑÔØLÐLÐLÐLÐLñô ð õ 
„L�˜’ÐMÐMÑNÔNÐNÝŒ;�t E¤L¸¼ÐDÑDÔDÐDr<   c                 ó„  ‡ — t          ‰                      ¦   «         |d¬¦  «        }t          j        ‰                      ¦   «         dk    p2t          d„ ‰                      ¦   «         dd …         D ¦   «         ¦  «        ˆ fd„¦  «         ‰                      |¦  «                             t          j	        ‰ ¦  «        ¬¦  «        S )Nr,  r+  r   c              3   ó"   K  — | ]
}|d k    V — ŒdS rÒ  r@   )rF   rœ   s     r:   rm   z,meta_upsample_bimode2d_aa.<locals>.<genexpr>ô  s&   è è € Ð!HÐ!H¨t $¨¢(Ð!HÐ!HÐ!HÐ!HÐ!HÐ!Hr<   r¬   c                  ó2   •— d‰                       ¦   «         › �S r3  r›   r$  s   €r:   r_   z+meta_upsample_bimode2d_aa.<locals>.<lambda>õ  r*  r<   ræ   )
r'  rœ   rP   ra   r�   rÃ  r�   rb  rJ   r"   )r  r¢  rñ  r5  r6  r.  s   `     r:   Úmeta_upsample_bimode2d_aarî  æ  sÂ   ø€ õ -Ø�
Š
‰Œ�k°Aðñ ô Ðõ 
„LØ�Š‰Œ˜ÒÐH�cÐ!HÐ!H°u·z²z±|´|ÀAÀBÀBÔ7GÐ!HÑ!HÔ!HÑHÔHØ_Ð_Ð_Ð_ñô ð ð �?Š?Ð+Ñ,Ô,×/Ò/ÝÔ1°%Ñ8Ô8ð 0ñ ô ð r<   c                 óf  ‡ ‡‡— t          ||d¬¦  «        Št          j        ‰ j        dk    ˆ fd„¦  «         t	          d¦  «        D ]1Št          j        ‰ j        ‰         ‰‰         k    ˆˆ ˆfd„¦  «         Œ2‰                      |¦  «                             t          j	        ‰ ¦  «        ¬¦  «        S )Nr,  r+  r<  c                  ó   •— d‰ j         › �S r;  r8  rÈ  s   €r:   r_   z4meta_upsample_bimode2d_aa_backward.<locals>.<lambda>
  r<  r<   c            
      óR   •— d‰› d‰ ‰         › d‰› d‰                      ‰¦  «        › �S )NzD
Expected grad_output to have the same shape as output; output.size(r>  z
but got grad_output_size(r›   r?  s   €€€r:   r_   z4meta_upsample_bimode2d_aa_backward.<locals>.<lambda>  sR   ø€ ð 9ØDEð9ð 9ØK[Ð\]ÔK^ð9ð 9àð9ð 9à!,×!1Ò!1°!Ñ!4Ô!4ð9ð 9€ r<   ræ   )
r'  rP   ra   rž   r±   r‘   r�   rb  rJ   r"   )r0  r¢  ru  rñ  r5  r6  r.  r  s   `     @@r:   Ú"meta_upsample_bimode2d_aa_backwardrò  ü  sï   øøø€ õ -Ø�K°!ðñ ô Ðõ 
„LØÔ˜AÒØkÐkÐkÐkñô ð õ �1‰XŒXð 
ð 
ˆÝŒØÔ˜aÔ Ð$4°QÔ$7Ò7ð9ð 9ð 9ð 9ð 9ð 9ñ	
ô 	
ð 	
ð 	
ð × Ò  Ñ,Ô,×/Ò/ÝÔ1°+Ñ>Ô>ð 0ñ ô ð r<   c                 ó6  — t          j        |                     ¦   «         dk    d„ ¦  «         t          j        |                     ¦   «         dk    d„ ¦  «         t          j        |j        j        d„ ¦  «         t          j        |j        j        d„ ¦  «         d S )Nr¬   c                  ó   — dS )Nz%found_inf must be a 1-element tensor.r@   r@   r<   r:   r_   z<_amp_foreach_non_finite_check_and_unscale_.<locals>.<lambda>  ó   € Ð(O€ r<   c                  ó   — dS )Nz%inv_scale must be a 1-element tensor.r@   r@   r<   r:   r_   z<_amp_foreach_non_finite_check_and_unscale_.<locals>.<lambda>  rõ  r<   c                  ó   — dS )Nz!found_inf must be a float tensor.r@   r@   r<   r:   r_   z<_amp_foreach_non_finite_check_and_unscale_.<locals>.<lambda>#  ó   € Ð3€ r<   c                  ó   — dS )Nz!inv_scale must be a float tensor.r@   r@   r<   r:   r_   z<_amp_foreach_non_finite_check_and_unscale_.<locals>.<lambda>'  rø  r<   )rP   ra   r�   rX   r3  )r’   r  Ú	inv_scales      r:   Ú*_amp_foreach_non_finite_check_and_unscale_rû    s®   € å	„LØ�ŠÑÔ˜QÒÐ OÐ Oñô ð õ 
„LØ�ŠÑÔ˜QÒÐ OÐ Oñô ð õ 
„LØŒÔ)Ø3Ð3ñô ð õ 
„LØŒÔ)Ø3Ð3ñô ð ð ð r<   c                 ón   — t          |                      ¦   «         ¦  «        }|                      |¦  «        S r7   )r  rœ   r�   )r’   ÚnanÚposinfÚneginfr¨  s        r:   Ú
nan_to_numr 	  ,  s+   € õ �t—y’y‘{”{Ñ#Ô#€KØ�>Š>˜+Ñ&Ô&Ð&r<   c                 ó   — | j         t          j        t          j        t          j        t          j        hvsJ d| j         › d�¦   «         ‚| j        }t          ||¦  «        }t          ||¦  «        }||k    r| S t          |  	                    ¦   «         ¦  «        }t          |  
                    ¦   «         ¦  «        }||         ||         c||<   ||<   ||         ||         c||<   ||<   |                      ||¦  «         | S )Nz>torch.transpose_: in-place transposition is not supported for z layout)r{   rP   rÞ  Ú
sparse_cscrß  Ú
sparse_bscrž   ró   r  rœ   rÅ   r	  )r’   Údim0rŽ  Úndimsrœ   rÅ   s         r:   rÒ  rÒ  3  s  € àŒ;ÝÔÝÔÝÔÝÔð	ð ð ð ð 	^ÈÌÐ]Ð]Ð]ñô ð ð ŒI€Eå˜$ Ñ&Ô&€DÝ˜$ Ñ&Ô&€Dàˆt‚|€|Øˆå�—	’	‘”ÑÔ€DÝ�$—+’+‘-”-Ñ Ô €Fà!'¨¤¨v°d¬|Ð€Fˆ4�L�&˜‘,Ø! $œZ¨¨d¬Ð€Dˆ�J��T‘
à×Ò�T˜6Ñ"Ô"Ð"Ø€Kr<   c                 ó(  — | j         }| j        rF|                      ¦   «         }|                      ¦   «         }|dk    r|dk    sJ d|› d|› d�¦   «         ‚n&|                      ¦   «         dk    sJ d|› d�¦   «         ‚t          | d|dk     rdnd¦  «        S )	Nr,  r   zEt_ expects a tensor with <= 2 sparse and 0 dense dimensions, but got z sparse and z dense dimensionsz6t_ expects a tensor with <= 2 dimensions, but self is r7  r¬   )rž   r  r  r  r   rÒ  )r’   r	  r  r  s       r:   Út_r	  P  sÅ   € àŒI€Eà„~ð 

Ø—_’_Ñ&Ô&ˆ
Ø—N’NÑ$Ô$ˆ	Ø˜QŠˆ 9°¢> > >ðLØ!ðLð LØ/8ðLð Lð Lñ $2¤> > >ð
 �xŠx‰zŒz˜QŠˆˆØMÀUÐMÐMÐMñ Œˆõ �d˜A E¨A¢I I˜q˜q°1Ñ5Ô5Ð5r<   )rÚ  r  ÚsideÚsorterc                ó  ‡ ‡‡— t          j        t          ‰ j        ¦  «        dk    p‰ j        d d…         ‰j        d d…         k    ˆˆ fd„¦  «         t          j        ‰d u p‰ j        ‰j        k    ˆ ˆfd„¦  «         t          j        |dk    p| d¦  «         |rt           j        nt           j        }t          ‰t           j        ¦  «        r!t          j        ‰|t           j	        ¬¦  «        S t          j
        d|‰ j        ¬	¦  «        S )
Nr¬   r”   c                  ó\   •— dt          ‰j        ¦  «        › dt          ‰ j        ¦  «        › �S )Nz¯torch.searchsorted(): boundaries tensor should be 1 dimension or the first N-1 dimensions of boundaries tensor and input value tensor must match, but we got boundaries tensor z and input value tensor ©r  r‘   )r’   Úsorted_sequences   €€r:   r_   z#meta_searchsorted.<locals>.<lambda>s  s>   ø€ ð5å37¸Ô8MÑ3NÔ3Nð5ð 5õ #' t¤zÑ"2Ô"2ð5ð 5ð r<   c                  ód   •— dt          ‰ j        ¦  «        › d‰�t          ‰j        ¦  «        ng › �S )Nz[torch.searchsorted(): boundary and sorter must have the same size, but got boundary tensor z and got sorter tensor r	  )r	  r		  s   €€r:   r_   z#meta_searchsorted.<locals>.<lambda>~  sK   ø€ ðBÝ#'¨Ô(=Ñ#>Ô#>ðBð Bà%+Ð%7�t�F”LÑ!Ô!Ð!¸RðBð Bð r<   r  zetorch.searchsorted(): side and right can't be set to opposites, got side of left while right was TruerÜ  r@   râ  )rP   ra   r®   r‘   r|  rò   rj   r   rê   rë   r„   r|   )r	  r’   rÚ  r  r	  r		  rX   s   ``   ` r:   Úmeta_searchsortedr	  c  sA  øøø€ õ 
„LÝˆOÔ!Ñ"Ô" aÒ'ð 	9ØÔ   " Ô%¨¬°C°R°C¬Ò8ð	
ð 	
ð 	
ð 	
ð 	
ñ	ô 	ð 	õ 
„LØ�$ˆÐ?˜/Ô/°6´<Ò?ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ�ŠÐ#˜e˜)ð	$ñô ð ð %Ð5�EŒKˆK­%¬+€EÝ�$�œÑ%Ô%ð KÝÔØ˜­UÔ-Dð
ñ 
ô 
ð 	
õ Œ{˜2 U°?Ô3IÐJÑJÔJÐJr<   c                 ó~   ‡ — t          j        ‰ t           j        t           j        t           j        fvˆ fd„¦  «         d S )Nc                  ó   •— d‰ › �S )Nz/Unsupported input type encountered for isin(): r@   r‰   s   €r:   r_   z3_check_for_unsupported_isin_dtype.<locals>.<lambda>˜  s   ø€ ÐIÀ%ÐIÐI€ r<   )rP   ra   r&  Ú
complex128Ú	complex64r‰   s   `r:   Ú!_check_for_unsupported_isin_dtyper	  •  sC   ø€ Ý	„LØ•e”j¥%Ô"2µE´OÐDÐDØIÐIÐIÐIñô ð ð ð r<   c                 óZ   — |                       ||                      d¦  «        f¦  «        }|S )Nr”   r  )r0  rï   Únum_weightsrß  rë  r¿  s         r:   Úmeta_embedding_dense_backwardr	  œ  s0   € ð ×'Ò'¨°k×6FÒ6FÀrÑ6JÔ6JÐ(KÑLÔL€KØÐr<   c                 ó|   — |	r#t                                | ||||||||
|¦
  «
        S t          | ||||||||
|¦
  «
        S r7   )r/   Ú_embedding_bag_sparse_backwardÚ!meta_embedding_bag_dense_backward)ru  rï   r«  rï  rð  Úmaximum_indicesr	  rë  r�  rì  rÙ  rß  s               r:   Úmeta_embedding_bag_backwardr	  ¨  st   € ð ð 
Ý×2Ò2ØØØØØØØØØØñ
ô 
ð 	
õ 1ØØØØØØØØØØñ
ô 
ð 	
r<   c
                 ó4  ‡ — t          j        ‰ j        t           j        t           j        t           j        t           j        fv ˆ fd„¦  «         |t          k    rt          j        |d u¦  «         ‰                      |‰  	                    d¦  «        f¦  «        }
|
S )Nc                  ó   •— d‰ j         › �S )Nz$Unsupported input type encountered: r‰   )ru  s   €r:   r_   z3meta_embedding_bag_dense_backward.<locals>.<lambda>â  s   ø€ ÐC°t´zÐCÐC€ r<   r¬   )
rP   ra   rX   r•  r–  r”  Úfloat64ré  r�   rœ   )ru  rï   rï  rð  r	  r	  rë  r�  rÙ  rß  Úindex_grad_weights   `          r:   r	  r	  Ó  s‰   ø€ õ 
„LØŒ
•u”}¥e¤nµe´mÅUÄ]ÐSÐSØCÐCÐCÐCñô ð ð �xÒÐÝŒ�_¨DÐ0Ñ1Ô1Ð1ØŸš¨°T·Y²Y¸q±\´\Ð'BÑCÔCÐØÐr<   c                 ó  — |                       d¦  «        }t          j        |t          k    d¦  «         t          j        |                      ¦   «         dk    ¦  «         t          j        |                     ¦   «         dk    ¦  «         |                      d¦  «        }t          j        |                     ¦   «         dk    ¦  «         t          j        |                      d¦  «        |k    ¦  «         |                      |f¦  «        }	|	S )Nr¬   zHembedding_bag_backward: per_sample_weights only supported for mode='sum'r,  r   )rœ   rP   ra   rè  r   r�   )
ru  rt  rï   r«  rï  r�  rß  Úembedding_featuresr  r;  s
             r:   Ú.meta_embedding_bag_per_sample_weights_backwardr#	  ê  sÒ   € ð Ÿš 1™œÐÝ	„LØ•ÒØRñô ð õ 
„L�—’‘”˜q’Ñ!Ô!Ð!Ý	„L�—’‘” !Ò#Ñ$Ô$Ð$Ø—,’,˜q‘/”/€KÝ	„L�—’‘” Ò"Ñ#Ô#Ð#Ý	„L�—’˜Q‘”Ð#5Ò5Ñ6Ô6Ð6Ø�^Š^˜[˜NÑ+Ô+€FØ€Mr<   )Úassume_uniqueÚinvertc                óÎ  — t          j        t          | t          ¦  «        pt          |t          ¦  «        d„ ¦  «         t          | t          ¦  «        st          j        | |j        ¬¦  «        } t          |t          ¦  «        st          j        || j        ¬¦  «        }t          | j        ¦  «         t          |j        ¦  «         t          j        | t           j	        ¬¦  «        S )Nc                  ó   — dS )Nz<At least one of elements and test_elements must be a Tensor.r@   r@   r<   r:   r_   zmeta_isin.<locals>.<lambda>  rµ  r<   rÞ  r‰   )
rP   ra   rj   r   rl  r|   r	  rX   rê   r&  )ÚelementsÚtest_elementsr$	  r%	  s       r:   Ú	meta_isinr*	    sÈ   € õ 
„LÝ�8�VÑ$Ô$ÐI­
°=Å&Ñ(IÔ(IØNÐNñô ð õ �h¥Ñ'Ô'ð GÝ”< °Ô1EÐFÑFÔFˆå�m¥VÑ,Ô,ð LÝœ ]¸8¼?ÐKÑKÔKˆå% h¤nÑ5Ô5Ð5Ý% mÔ&9Ñ:Ô:Ð:ÝÔ˜H­E¬JÐ7Ñ7Ô7Ð7r<   rD  c                 óž   — t          j        | dk    d„ ¦  «         t          |t          j        ¬¦  «        \  }}t          j        ||¬¦  «        S )Nr   c                  ó   — dS )Nz,polygamma(n, x) does not support negative n.r@   r@   r<   r:   r_   z meta_polygamma.<locals>.<lambda>  s   € Ð!O€ r<   rË  r‰   )rP   ra   r   r   rÌ  rê   )rD  r’   rM   rH   s       r:   Úmeta_polygammar-	    sW   € õ 
„L��a’ÐOÐOÑPÔPÐPÝ(ØÝ;ÔHðñ ô �O€A€|õ Ô˜D¨Ð5Ñ5Ô5Ð5r<   c                 ó    — t          d¦  «        ‚)Nz.Tensor.item() cannot be called on meta tensors)ra  rì   s    r:   Úmeta_local_scalar_denser/	    s   € å
ÐGÑ
HÔ
HÐHr<   c                 ó*   — t          j        | ¦  «        S r7   rž  rì   s    r:   Úsilur1	  $  r   r<   c                 ój   — t          | t          j        ¬¦  «        \  }}t          j        | |¬¦  «        S rÊ  )r   r   rÌ  rP   rê   )r’   rM   rH   s      r:   Úsigmoidr3	  *  s=   € õ )ØÝ;ÔHðñ ô �O€A€|õ Ô˜D¨Ð5Ñ5Ô5Ð5r<   c                 óN  — |                       ¦   «         dk    }|                      ¦   «         dk    }|r¬|r@|                     d¦  «        |                      d¦  «        |                     d¦  «        g}�nSt          j        |                     d¦  «        |                     d¦  «        k    d¦  «         |                      d¦  «        |                     d¦  «        g}né|rjt          j        |                     d¦  «        |                      d¦  «        k    d¦  «         |                      d¦  «        |                     d¦  «        g}n}t          j        |                      d¦  «        |                     d¦  «        k    d¦  «         |                      d¦  «        |                      d¦  «        |                     d¦  «        g}|p| j        }d|j        z  }|d         |z   dz
  |z  |z  }||k    r|d         |z  |dg}	n|dg}	t          j        ||	|| j        ¬¦  «        }
|
S )	Nr,  r   r¬   z matrix batch sizes have to matchr”   zbatched dimension has to matchr“  râ  )r   rœ   rP   ra   rX   ÚitemsizerZ  r|   )r€  r‚  Úoffsrx  Ú
mat1_is_2dÚ
mat2_is_2dry  Ú	alignmentÚsize_paddedrH  r  s              r:   Ú _create_grouped_mm_output_tensorr;	  4  sî  € Ø—’‘”˜q’€JØ—’‘”˜q’€Jàð CØð 	5ØŸ	š	 !™œ d§i¢i°¡l¤l°D·I²I¸a±L´LÐAˆH‰HåŒLØ—	’	˜!‘” §	¢	¨!¡¤Ò,Ð.Pñô ð ð Ÿ	š	 !™œ d§i¢i°¡m¤mÐ4ˆHˆHàð 	CÝŒLØ—	’	˜!‘” §	¢	¨!¡¤Ò,Ð.Pñô ð ð Ÿ	š	 !™œ d§i¢i°¡l¤lÐ3ˆHˆHõ ŒL˜Ÿš 1™œ¨¯ª°1©¬Ò5Ð7WÑXÔXÐXØŸ	š	 !™œ d§i¢i°¡l¤l°D·I²I¸b±M´MÐBˆHàÐ'˜TœZ€Ià�iÔ(Ñ(€IØ˜B”< )Ñ+¨aÑ/°IÑ=À	ÑI€KØ�ZÒÐØ˜q”k KÑ/°¸aÐ@ˆ
ˆ
à! 1Ð%ˆ
Ý
Ô
˜h¨
¸)ÈDÌKÐ
XÑ
XÔ
X€CØ€Jr<   Úmat_aÚmat_br6	  c	                 óú  ‡ ‡‡— t          j        |d u |d u k    d„ ¦  «         |d uo|d u}	|	rBt          j        ‰ j        t           j        k    o‰j        t           j        k    ˆ ˆfd„¦  «         nAt          j        ‰ j        t           j        k    o‰j        t           j        k    ˆ ˆfd„¦  «         t          j        ‰                      ¦   «         dv o‰                     ¦   «         dv ˆ ˆfd„¦  «         ‰                      ¦   «         dk    }
‰                     ¦   «         dk    }|	rHd„ }d„ }t          j         |‰ ¦  «        ˆ fd	„¦  «         t          j         |‰¦  «        ˆfd
„¦  «         d„ } |d‰ ¦  «          |d‰¦  «         |��|��t          j        |j        t           j        k    o|j        t           j        k    d„ ¦  «         dd„}‰�|
r|r‰j        d         nd} |d|‰ d|¦  «          |d|‰d|¦  «         t          j        |d u d„ ¦  «         |
s|rwt          j        ‰d uˆ ˆfd„¦  «         ‰�Yt          j        ‰                     ¦   «         dk    ˆfd„¦  «         t          j        ‰j        t           j        k    ˆfd„¦  «         nt          j        ‰d u d„ ¦  «         t          j        |d u d„ ¦  «         t          j        |d u p|t           j        k    d„ ¦  «         t          ‰ ‰‰|¦  «        S )Nc                  ó   — dS )Nz,Either both scale factors are given, or noner@   r@   r<   r:   r_   z)_meta_grouped_mm_common.<locals>.<lambda>d  s   € Ð>€ r<   c                  ó*   •— d‰ j         › d‰j         › d�S )Nz5Expected inputs of E4M3 FP8 type but got mat_a.dtype=ú and mat_b.dtype=r·  r‰   ©r<	  r=	  s   €€r:   r_   z)_meta_grouped_mm_common.<locals>.<lambda>o  s!   ø€ ÐxÈEÌKÐxÐxÐjoÔjuÐxÐxÐx€ r<   c                  ó*   •— d‰ j         › d‰j         › d�S )Nz1Expected inputs of BF16 type but got mat_a.dtype=rA	  r·  r‰   rB	  s   €€r:   r_   z)_meta_grouped_mm_common.<locals>.<lambda>t  s!   ø€ ÐtÈÌÐtÐtÐfkÔfqÐtÐtÐt€ r<   )r,  r2   c                  ó\   •— d‰                       ¦   «         › d‰                      ¦   «         › �S )Nz3Multiplicands must be 2D or 3D but got mat_a.dim()=z and mat_b.dim()=r•   rB	  s   €€r:   r_   z)_meta_grouped_mm_common.<locals>.<lambda>y  s-   ø€ ÐqÀeÇiÂiÁkÄkÐqÐqÐdi×dmÒdmÑdoÔdoÐqÐq€ r<   r,  c                 óZ   — |                       ¦   «         }|d         dk    o|d         dk    S ©Nrô  r¬   r”   rÞ  ©ÚmatÚ
mat_strides     r:   rê  z-_meta_grouped_mm_common.<locals>.is_row_major�  s,   € ØŸš™œˆJØ˜b”> AÒ%Ð=¨*°R¬.¸AÒ*=Ð=r<   c                 óZ   — |                       ¦   «         }|d         dk    o|d         dk    S rF	  rÞ  rG	  s     r:   rì  z-_meta_grouped_mm_common.<locals>.is_col_major…  s,   € ØŸš™œˆJØ˜b”> QÒ&Ð=¨:°b¬>¸AÒ+=Ð=r<   c                  óB   •— d‰                       ¦   «         dd …         › �S )NzNExpected mat_a tensor to be row major in the last two dimensions, got strides rô  rÞ  )r<	  s   €r:   r_   z)_meta_grouped_mm_common.<locals>.<lambda>‹  s)   ø€ ÐzÐej×eqÒeqÑesÔesÐtvÐtwÐtwÔexÐzÐz€ r<   c                  óB   •— d‰                       ¦   «         dd …         › �S )NzQExpected mat_b tensor to be column major in the last two dimensions, got strides rô  rÞ  )r=	  s   €r:   r_   z)_meta_grouped_mm_common.<locals>.<lambda>�  s)   ø€ Ð}Ðhm×htÒhtÑhvÔhvÐwyÐwzÐwzÔh{Ð}Ð}€ r<   c                 óD  ‡ ‡‡‡— ‰                      ¦   «         dz
  Šd‰                     ¦   «         z  }‰                     ¦   «         Š‰‰dz
           dk    rQ‰‰         t          d‰j        ‰dz
           ¦  «        k    r)t          j        ‰‰         |z  dk    ˆˆ ˆfd„¦  «         d S ‰‰         dk    rT‰‰dz
           t          d‰j        ‰         ¦  «        k    r,t          j        ‰‰dz
           |z  dk    ˆˆ ˆfd„¦  «         d S t          j        dˆˆfd„¦  «         d S )Nr¬   r“  r   c                  ó(   •— d‰› d‰ › d‰‰          › d�S )Nr  ú stride along ú% dim to be multiple of 16 bytes, got r·  r@   ©Úend_dimÚmat_namerI	  s   €€€r:   r_   zF_meta_grouped_mm_common.<locals>.check_valid_strides.<locals>.<lambda>›  sB   ø€ ð  A Hð  Að  A¸Gð  Að  AÐjtÐu|Ôj}ð  Að  Að  A€ r<   c                  ó4   •— d‰› d‰ dz
  › d‰‰ dz
           › d�S )Nr  rO	  r¬   rP	  r·  r@   rQ	  s   €€€r:   r_   zF_meta_grouped_mm_common.<locals>.check_valid_strides.<locals>.<lambda>¢  s\   ø€ ð  I Hð  Ið  I¸GÀa¹Kð  Ið  IÐnxð  zAð  DEñ  zEô  oFð  Ið  Ið  I€ r<   Fc                  ó    •— d‰› d‰ j         › d�S )NzInvalid strides/sizes, got z for strides and z for sizes.rÍ   rG	  s   €€r:   r_   zF_meta_grouped_mm_common.<locals>.check_valid_strides.<locals>.<lambda>§  s   ø€ Ði°jÐiÐiÐSVÔS\ÐiÐiÐi€ r<   )r   Úelement_sizerÅ   r²   r‘   rP   ra   )rS	  rH	  r9	  rR	  rI	  s   `` @@r:   Úcheck_valid_stridesz4_meta_grouped_mm_common.<locals>.check_valid_strides’  s   øøøø€ Ø—'’'‘)”)˜a‘-ˆØ˜#×*Ò*Ñ,Ô,Ñ,ˆ	Ø—Z’Z‘\”\ˆ
Ø�g ‘kÔ" aÒ'Ð'¨J°wÔ,?Å3ØˆsŒy˜ 1™Ô%ñD
ô D
ò -
ð -
õ ŒLØ˜7Ô# iÑ/°1Ò4ð Að  Að  Að  Að  Að  Añô ð ð ð ð ˜Ô  AÒ%Ð%¨*°W¸q±[Ô*AÅSØˆsŒy˜Ô!ñF
ô F
ò +
ð +
õ ŒLØ˜7 Q™;Ô'¨)Ñ3°qÒ8ð Ið  Ið  Ið  Ið  Ið  Iñô ð ð ð õ
 ŒLØØiÐiÐiÐiÐiñô ð ð ð r<   r<	  r=	  c                  ó   — dS )NzBoth scale_a and scale_b must be float (fp32) tensors, but got scale_a.dtype={scale_a.dtype} and scale_b.dtype={scale_b.dtype}.r@   r@   r<   r:   r_   z)_meta_grouped_mm_common.<locals>.<lambda>°  s
   € ð  V€ r<   r¬   c                 óü  ‡ ‡‡‡‡— ‰                      ¦   «         dk    r”t          j        ‰                      ¦   «         dk    ˆˆ fd„¦  «         t          j        ‰                     ¦   «         ˆ fd„¦  «         t          j        ‰j        d         ‰j        ‰         ‰z  k    ˆˆˆˆ ˆfd„¦  «         d S t          j        ‰                      ¦   «         dk    ˆˆ fd„¦  «         t          j        ‰                     d¦  «        dk    ˆ fd„¦  «         t          j        ‰j        d         ‰j        d         k    ˆˆˆ fd	„¦  «         t          j        ‰j        d         ‰j        d‰z            k    ˆˆˆ ˆfd
„¦  «         d S )Nr,  r¬   c                  ó:   •— d‰› d‰                       ¦   «         › d�S )Nr  z to be 1D tensor, but got ú	D tensor.r•   ©r¨  Ú
scale_names   €€r:   r_   z>_meta_grouped_mm_common.<locals>.check_scale.<locals>.<lambda>·  ó#   ø€ Ðd¨
ÐdÐdÈeÏiÊiÉkÌkÐdÐdÐd€ r<   c                  ó   •— d‰ › d�S )Nr  z to be contiguous.r@   ©r]	  s   €r:   r_   z>_meta_grouped_mm_common.<locals>.check_scale.<locals>.<lambda>»  s   ø€ ÐF¨
ÐFÐFÐF€ r<   r   c                  óN   •— d‰› d‰ j         ‰         ‰z  › d‰j         d         › d�S )Nr  z	 to have rý  r   z
 elements.rÍ   )rH	  r¨  Úscale_multiplierr]	  Ú
scaled_dims   €€€€€r:   r_   z>_meta_grouped_mm_common.<locals>.check_scale.<locals>.<lambda>¿  s^   ø€ ð  Q¨
ð  Qð  Q¸S¼YÀzÔ=RÐUeÑ=eð  Qð  QÐv{ô  wBð  CDô  wEð  Qð  Qð  Q€ r<   c                  ó:   •— d‰› d‰                       ¦   «         › d�S )Nr  z to be 2D tensor, but got r[	  r•   r\	  s   €€r:   r_   z>_meta_grouped_mm_common.<locals>.check_scale.<locals>.<lambda>Ä  r^	  r<   c                  ó   •— d‰ › d�S )Nr  z( to be contiguous in the last dimension.r@   r`	  s   €r:   r_   z>_meta_grouped_mm_common.<locals>.check_scale.<locals>.<lambda>È  s   ø€ Ð\¨
Ð\Ð\Ð\€ r<   c                  óH   •— d‰› d‰ j         d         › d‰j         d         › d�S )Nr  z batch dimension to be r   ú, got r·  rÍ   )rH	  r¨  r]	  s   €€€r:   r_   z>_meta_grouped_mm_common.<locals>.check_scale.<locals>.<lambda>Ì  s4   ø€ Ðp¨
ÐpÐpÈ3Ì9ÐUVÌ<ÐpÐpÐ_dÔ_jÐklÔ_mÐpÐpÐp€ r<   c                  óN   •— d‰› d‰ j         d‰z            › d‰j         d         › d�S )Nr  z non-batch dimension to be r¬   rg	  r·  rÍ   )rH	  r¨  r]	  rc	  s   €€€€r:   r_   z>_meta_grouped_mm_common.<locals>.check_scale.<locals>.<lambda>Ð  sS   ø€ ð  B¨
ð  Bð  BÈsÌyÐYZÐ]gÑYgÔOhð  Bð  BÐpuÔp{Ð|}Ôp~ð  Bð  Bð  B€ r<   )r   rP   ra   r   r‘   rÅ   )r]	  r¨  rH	  rc	  rb	  s   `````r:   Úcheck_scalez,_meta_grouped_mm_common.<locals>.check_scale³  sï  øøøøø€ Ø�wŠw‰yŒy˜AŠ~ˆ~Ý”Ø—I’I‘K”K 1Ò$ØdÐdÐdÐdÐdñô ð õ ”Ø×'Ò'Ñ)Ô)ØFÐFÐFÐFñô ð õ ”Ø”K ”N c¤i°
Ô&;Ð>NÑ&NÒNð Qð  Qð  Qð  Qð  Qð  Qð  Qð  Qñô ð ð ð õ
 ”Ø—I’I‘K”K 1Ò$ØdÐdÐdÐdÐdñô ð õ ”Ø—L’L ‘O”O qÒ(Ø\Ð\Ð\Ð\ñô ð õ ”Ø”K ”N c¤i°¤lÒ2ØpÐpÐpÐpÐpÐpñô ð õ ”Ø”K ”N c¤i°°J±Ô&?Ò?ð Bð  Bð  Bð  Bð  Bð  Bð  Bñô ð ð ð r<   r   rÛ  rÜ  c                  ó   — dS )Nz:Scale result tensor provided, but it is not supported yet.r@   r@   r<   r:   r_   z)_meta_grouped_mm_common.<locals>.<lambda>Û  rg   r<   c                  ó^   •— d‰                       ¦   «         › d‰                      ¦   «         › d�S )Nz/Offsets tensor not provided, but is needed for zD/zD multiplicand layouts.r•   rB	  s   €€r:   r_   z)_meta_grouped_mm_common.<locals>.<lambda>á  s0   ø€ ÐyÀeÇiÂiÁkÄkÐyÐyÐUZ×U^ÒU^ÑU`ÔU`ÐyÐyÐy€ r<   c                  ó4   •— d‰                       ¦   «         › d�S )Nz.Offsets tensor must be 1D, but got offs.dim()=r·  r•   ©r6	  s   €r:   r_   z)_meta_grouped_mm_common.<locals>.<lambda>æ  s   ø€ ÐVÈÏÊÉÌÐVÐVÐV€ r<   c                  ó   •— d‰ j         › d�S )Nz7Offsets tensor must be integer (int32) tensor, but got r·  r‰   rm	  s   €r:   r_   z)_meta_grouped_mm_common.<locals>.<lambda>ê  s   ø€ Ð_ÐRVÔR\Ð_Ð_Ð_€ r<   c                  ó   — dS )NzJOffsets tensor provided, but is not needed for 3D/3D multiplicand layouts.r@   r@   r<   r:   r_   z)_meta_grouped_mm_common.<locals>.<lambda>ï  s   € Ð`€ r<   c                  ó   — dS )Nz2Bias tensor provided, but it is not supported yet.r@   r@   r<   r:   r_   z)_meta_grouped_mm_common.<locals>.<lambda>ô  s   € ÐD€ r<   c                  ó   — dS )Nz4If output dtype provided, it must be torch.bfloat16.r@   r@   r<   r:   r_   z)_meta_grouped_mm_common.<locals>.<lambda>ù  s   € ÐF€ r<   r+  )
rP   ra   rX   r—  r–  r   r”  r‘   r|  r;	  )r<	  r=	  rÛ  rÜ  r6	  rv  rÝ  rx  rÞ  ÚscaledÚmat_a_is_2dÚmat_b_is_2drê  rì  rW	  ri	  rb	  s   ``  `            r:   Ú_meta_grouped_mm_commonru	  W  sþ  øøø€ õ 
„LØ	�Dˆ˜g¨˜oÒ.Ø>Ð>ñô ð ð ˜DÐ Ð8 W°DÐ%8€Fð ð 	
ÝŒØŒK�5Ô.Ò.ÐU°5´;Å%ÔBUÒ3UØxÐxÐxÐxÐxñ	
ô 	
ð 	
ð 	
õ
 	ŒØŒK�5œ>Ò)ÐK¨e¬k½U¼^Ò.KØtÐtÐtÐtÐtñ	
ô 	
ð 	
õ
 
„LØ�	Š	‰Œ�vÐÐ7 %§)¢)¡+¤+°Ð"7ØqÐqÐqÐqÐqñô ð ð
 —)’)‘+”+ Ò"€KØ—)’)‘+”+ Ò"€Kàð 
ð	>ð 	>ð 	>ð	>ð 	>ð 	>õ 	ŒØˆL˜ÑÔØzÐzÐzÐzñ	
ô 	
ð 	
õ 	ŒØˆL˜ÑÔØ}Ð}Ð}Ð}ñ	
ô 	
ð 	
ð
ð ð ð0 Ð˜ Ñ'Ô'Ð'ØÐ˜ Ñ'Ô'Ð'àÐ˜wÐ2ÝŒØŒM�Uœ]Ò*ÐM¨w¬}ÅÄÒ/Mð Vð  Vñ	
ô 	
ð 	
ð
	ð 	ð 	ð 	ðB "Ð-°+Ð-À+Ð-ˆDŒJ�qŒMˆMÐSTð 	ð 	ˆ�I˜w¨¨qÐ2BÑCÔCÐCØˆ�I˜w¨¨qÐ2BÑCÔCÐCåŒØ˜DÐ ØPÐPñ	
ô 	
ð 	
ð
 ð 
�kð 
ÝŒØ˜ÐØyÐyÐyÐyÐyñ	
ô 	
ð 	
ð ÐÝŒLØ—’‘
”
˜a’ØVÐVÐVÐVñô ð õ ŒLØ”
�eœkÒ)Ø_Ð_Ð_Ð_ñô ð øõ
 	ŒØ�DˆLØ`Ð`ñ	
ô 	
ð 	
õ
 
„LØ�ˆØDÐDñô ð õ
 
„LØ�TÐÐ8˜Y­%¬.Ò8ØFÐFñô ð õ
 ,¨E°5¸$À	ÑJÔJÐJr<   c           
      ó0   — t          | |d d ||d |¬¦  «        S )N)rÛ  rÜ  r6	  rv  rÝ  rx  ©ru	  )r<	  r=	  r6	  rv  rx  s        r:   Ú
grouped_mmrx	  ÿ  s3   € õ #ØØØØØØØØð	ñ 	ô 	ð 	r<   c	                 ó2   — t          | ||||||||¬¦	  «	        S )N)rÛ  rÜ  r6	  rv  rÝ  rx  rÞ  rw	  )	r<	  r=	  rÛ  rÜ  r6	  rv  rÝ  rx  rÞ  s	            r:   Úmeta_scaled_grouped_mmrz	    s6   € õ #ØØØØØØØ!ØØ%ð
ñ 
ô 
ð 
r<   rG   Úhalf_to_floatc                 óÖ   — |r| j         t          j        k    sJ ‚t          j        | t          j        j        ¬¦  «        \  }}|s|n|}t          j        | |t          j        ¬¦  «        }|S )NrË  rÜ  )	rX   rP   rR   rJ   r   r   rK   rê   rë   )rG   r   r{	  Úcomputation_dtyperH   rÌ  s         r:   Úsoftmaxr~	  -  sy   € ð ð %ØŒw�%œ*Ò$Ð$Ð$Ð$Ý&+Ô&>Ø	�uÔDÔLð'ñ 'ô 'Ñ#Ð�|ð (5ÐK�<�<Ð:K€LÝ
Ô
˜1 LÅÔ@WÐ
XÑ
XÔ
X€CØ€Jr<   c           	      ó�  ‡‡‡‡‡	‡
— t          j        t          ‰¦  «        dz  dk    ˆfd„¦  «         | j        Št          ‰¦  «        Š	t          ‰¦  «        dz  }‰	|z
  Št          j        ‰	|k    ˆ	ˆfd„¦  «         t	          ‰d ‰…         ¦  «        }t          |¦  «        D ]oŠt          ‰¦  «        ‰dz   dz  z
  Š
‰‰‰z            ‰‰
         z   ‰‰
dz            z   }t          j        |dk    ˆˆˆˆˆ
fd„¦  «         |                     |¦  «         Œpt          j        || j        | j	        | j
        t          | ¦  «        ¬¦  «        S )Nr,  r   c                  ó(   •— dt          ‰ ¦  «        › �S )Nz1Length of pad must be even but instead it equals rþ  r{  s   €r:   r_   z'_constant_pad_nd_meta.<locals>.<lambda>A  s   ø€ ÐNÅCÈÁHÄHÐNÐN€ r<   c                  ó0   •— dt          ‰¦  «        › d‰ › d�S )Nz`Length of pad should be no more than twice the number of dimensions of the input. Pad length is z while the input has z dimensions.rþ  )Úl_inpr|  s   €€r:   r_   z'_constant_pad_nd_meta.<locals>.<lambda>K  s/   ø€ ð Ý25°c±(´(ðð àðð ð € r<   r¬   c            	      óX   •— d‰‰‰ z            › d‰‰         › d‰‰dz            › d‰‰ z   › d�	S )NzThe input size z, plus negative padding rš   r¬   zG resulted in a negative output size, which is invalid. Check dimension z of your input.r@   )r  r7  Úl_diffr|  Úpad_idxs   €€€€€r:   r_   z'_constant_pad_nd_meta.<locals>.<lambda>V  sf   ø€ ð M k°&¸1±*Ô&=ð Mð MØ�7Œ|ðMð MØ"% g°¡kÔ"2ðMð Mà17¸!±ðMð Mð M€ r<   )rX   r|   r~   rç   )rP   ra   r®   r‘   r  r±   r  r„   rX   r|   r~   r"   )r  r|  rK  Úl_padrµ   Únew_dimr  r7  r„	  r‚	  r…	  s    `    @@@@@r:   Ú_constant_pad_nd_metarˆ	  ;  s£  øøøøøø€ õ 
„LÝˆC‰Œ�1‰˜ÒØNÐNÐNÐNñô ð ð
 ”+€KÝ�ÑÔ€EÝ�‰HŒH˜‰M€EØ�U‰]€Få	„LØ�Šð	ð 	ð 	ð 	ð 	ñô ð õ �[  & Ô)Ñ*Ô*€IÝ�5‰\Œ\ð 	"ð 	"ˆÝ�c‘(”(˜q 1™u¨™kÑ*ˆØ˜f q™jÔ)¨C°¬LÑ8¸3¸wÈ¹{Ô;KÑKˆÝŒØ�qŠLðMð Mð Mð Mð Mð Mð Mð Mñ	
ô 	
ð 	
ð 	×Ò˜Ñ!Ô!Ð!Ð!åŒ;ØØŒkØŒ|ØÔ)Ý+¨EÑ2Ô2ðñ ô ð r<   rß  rë  rì  c                 ó  — |                       ¦   «         dk    s
J d¦   «         ‚| j        }|j        }|j        dk    r
|d         f}n)|j        dk    r|d         |d         f}ng |¢|d         ‘R }| j        }|                      ||¬¦  «        S )Nr,  z'weight' must be 2-Dr   r¬   r‰   )r   r‘   rž   rX   r�   )	rt  rï   rß  rë  rì  Úweight_shapeÚindices_shaper¡   rx  s	            r:   Ú	embeddingrŒ	  e  s§   € ð �:Š:‰<Œ<˜1ÒÐÐÐ4ÑÔÐØ”<€LØ”M€Mà„|�qÒÐØ&2°1¤oÐ%7ˆ	ˆ	Ø	Œ˜Ò	Ð	Ø" 1Ô% |°A¤Ð7ˆ	ˆ	à5�mÐ5 \°!¤_Ð5Ð5ˆ	à”€IØ×Ò˜I¨YÐÑ7Ô7Ð7r<   Úmax_lengthsÚpadding_valuec                 óä   — t          |¦  «        dk    sJ ‚t          |¦  «        dk    sJ ‚|d         j        d         dz
  }|d         }||g| j        dd …         ¢R }|                      |¦  «        S rã  )r®   r‘   r�   )rî   r«  r�	  rŽ	  r  r©  rœ  s          r:   Ú$meta__jagged_to_padded_dense_forwardr�	  }  s„   € õ ˆw‰<Œ<˜1ÒÐÐÐÝˆ{ÑÔ˜qÒ Ð Ð Ð à�Œ
Ô˜Ô˜aÑ€AØ�AŒ€AØ�qÐ,˜6œ<¨¨¨Ô+Ð,Ð,€LØ×Ò˜LÑ)Ô)Ð)r<   c                 ó^   — t          | ¦  «        t          ¦   «         d„ ¦   «         ¦   «         }|S )Nc                 ó8   — t          | t          j        ¬¦  «        S r  ©rN   r   rÌ  rZ  s    r:   Ú_fz)_create_unary_float_meta_func.<locals>._f�  s$   € õ  ØÕ=ÔJð
ñ 
ô 
ð 	
r<   ©rA   r(   ©Úfuncr”	  s     r:   Ú_create_unary_float_meta_funcr˜	  Ž  ó9   € Ý�4ÑÔÝ�]„]ð
ð 
ñ „]ñ Ôð
ð
 €Ir<   c                 ó^   — t          | ¦  «        t          ¦   «         d„ ¦   «         ¦   «         }|S )Nc                 ó:   — t          | |t          j        ¬¦  «        S r  r“	  )rG   rp  s     r:   r”	  z*_create_binary_float_meta_func.<locals>._fš  s&   € õ  ØˆqÕ!@Ô!Mð
ñ 
ô 
ð 	
r<   r•	  r–	  s     r:   Ú_create_binary_float_meta_funcrœ	  ™  r™	  r<   c                 ó´   ‡ — t          ‰ ¦  «        ˆ fd„¦   «         }‰ j        › d�}||_         t          t          t          |¦  «        ¦  «        |¦  «        }|S )Nc                 óT   •—  ‰| g|¢R i |¤Ž}t          | j        |j        ¦  «         | S r7   rJ  )r’   rL   r  r  r9   s       €r:   Ú_fnz#_register_inplace_meta.<locals>._fn¾  s;   ø€ àˆb�Ð'˜Ð'Ð'Ð' Ð'Ð'ˆÝ ¤
¨C¬IÑ6Ô6Ð6Øˆr<   rM   )r   rt   rA   Úgetattrr/   )r9   rŸ	  Úinplace_names   `  r:   Ú_register_inplace_metar¢	  ½  sk   ø€ Ý
ˆ2�Y„Yðð ð ð ñ „Yðð
 ”kÐ$Ð$Ð$€LØ€C„LØ
4�-�¥ lÑ3Ô3Ñ
4Ô
4°SÑ
9Ô
9€Cà€Jr<   c                 óB  ‡ ‡‡— t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         ‰ ‰g}t          ‰t          ¦  «        rG‰j        dk    r't          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         |                     ‰¦  «         t          |dt          j	        iŽS )Nc                  ó(   •— d‰j         › d‰ j         › �S )Nr¯  z for `end`, but got dtype r‰   )ru   rv   s   €€r:   r_   zlerp.<locals>.<lambda>Ð  s   ø€ ÐT %¤+ÐTÐTÈÌÐTÐT€ r<   r   c                  ó(   •— d‰ j         › d‰j         › �S )Nr¯  z for `weight`, but got dtype r‰   )rv   rt  s   €€r:   r_   zlerp.<locals>.<lambda>×  s   ø€ Ðb¨%¬+ÐbÐbÐTZÔT`ÐbÐb€ r<   rB   )
rP   ra   rX   rj   r#   rž   r  rN   r   rK   )rv   ru   rt  rL   s   ``` r:   Úlerpr¦	  Ë  sÃ   øøø€ õ 
„LØŒ�s”yÒ ØTÐTÐTÐTÐTñô ð ð �3ˆ<€DÝ�&�*Ñ%Ô%ð ØŒ;˜!ÒÐÝŒLØ”˜vœ|Ò+ØbÐbÐbÐbÐbñô ð ð 	�Š�FÑÔÐÝØ	ðÝ=ÔEðð ð r<   )rK  c                ó<   — t          | ||t          j        ¬¦  «        S r  r  ©r  Útensor1Útensor2rK  s       r:   Úaddcmulr«	  ß  s(   € õ Øˆw˜Õ0OÔ0Wðñ ô ð r<   c                óÊ   — t          j        t          j        |j        ¦  «        ot          j        |j        ¦  «         d„ ¦  «         t          | ||t          j        ¬¦  «        S )Nc                  ó   — dS )N)zFInteger division with addcdiv is no longer supported, and in a future zErelease addcdiv will perform a true division of tensor1 and tensor2. z4The historic addcdiv behavior can be implemented as zA(input + value * torch.trunc(tensor1 / tensor2)).to(input.dtype) zfor integer inputs and as z6(input + value * tensor1 / tensor2) for float inputs. z?The future addcdiv behavior is just the latter implementation: z4(input + value * tensor1 / tensor2), for all dtypes.r@   r@   r<   r:   r_   zaddcdiv.<locals>.<lambda>ï  s	   € ð 	
€ r<   r  )rP   ra   rJ   ro  rX   rN   r   rK   r¨	  s       r:   Úaddcdivr®	  ç  sr   € õ 
„LåÔ" 7¤=Ñ1Ô1ð 6ÝÔ& w¤}Ñ5Ô5ð	
ð		
ð 		
ñô ð õ  Øˆw˜Õ0OÔ0Wðñ ô ð r<   c                  ó  — i } dD ]#}t           |         }|D ]}|| vr||         | |<   ŒŒ$|                      ¦   «         D �]É\  }}t          |t          j        j        ¦  «        rŒ&t          |t          ¦  «        sJ ‚ |                     t          j        j	        j
        ¦  «        |¦  «         t          j                             |                     ¦   «         d¦  «        r"|t           d         v rt          |› d�¦  «        ‚ŒÃ|j        rŒË|                     ¦   «         dv rŒâd|                     ¦   «         v rt                               ||¦  «         �Œd|                     ¦   «         v rt"                               ||¦  «         �ŒHd|                     ¦   «         v rt$                               ||¦  «         �Œ{d	|                     ¦   «         v rt&                               ||¦  «         �Œ®t(                               ||¦  «         �ŒËd S )
N)ry   Úpost_autogradÚpre_autogradÚCompositeImplicitAutogradry   z« is a CompositeImplicitAutograd op, we shouldn't register meta function for it. Instead, we should let the decomposition run and write meta kernels for the base operators.>   úaten::cloneúaten::copy_úaten::rot90úaten::_to_copyúaten::empty_stridedúaten::constant_pad_ndúaten::as_strided_scatterzmkldnn::zmkl::zonednn::zquantized::)r   Úitemsrj   rP   Ú_opsÚHigherOrderOperatorr   Úpy_implÚ_CÚDispatchKeyr1   Ú%_dispatch_has_kernel_for_dispatch_keyrø  ra  Úis_viewÚ2_meta_lib_dont_use_me_use_register_meta_for_mkldnnÚimplÚ/_meta_lib_dont_use_me_use_register_meta_for_mklÚ2_meta_lib_dont_use_me_use_register_meta_for_onednnÚ5_meta_lib_dont_use_me_use_register_meta_for_quantizedÚ'_meta_lib_dont_use_me_use_register_meta)Úactivate_meta_tablers   ÚregistryÚopoÚop_overloadr9   s         r:   Úactivate_metarÌ	    sb  € ØÐð :ð 9ð 9ˆÝ-¨dÔ3ˆàð 	9ð 	9ˆCØÐ-Ð-Ð-Ø+3°C¬=Ð# CÑ(øð	9ð /×4Ò4Ñ6Ô6ð 6Nñ 6N‰ˆ�Rõ
 �k¥5¤:Ô#AÑBÔBð 	ØÝ˜+¥zÑ2Ô2Ð2Ð2Ð2à6ˆ×Ò�EœHÔ0Ô5Ñ6Ô6°rÑ:Ô:Ð:åŒ8×9Ò9Ø×ÒÑÔÐ ;ñ
ô 
ð +	Nð Õ8¸Ô@Ð@Ð@Ý"Ø"ð ;ð ;ð ;ñô ð ð Að Ô ð 	Nð à×ÒÑÔðð	ð 	ð à˜[×-Ò-Ñ/Ô/Ð/Ð/ÝB×GÒGÈÐUWÑXÔXÐXÑXØ˜K×,Ò,Ñ.Ô.Ð.Ð.Ý?×DÒDÀ[ÐRTÑUÔUÐUÑUØ˜{×/Ò/Ñ1Ô1Ð1Ð1ÝB×GÒGÈÐUWÑXÔXÐXÑXØ +×"2Ò"2Ñ"4Ô"4Ð4Ð4ÝE×JÒJØ ñô ð ñ õ 8×<Ò<¸[È"ÑMÔMÐMÑMðm6Nð 6Nr<   rú   )Tr¸  r7   )NNNFr   r¬   r”   r¿  rÿ  )r  )r  T)FF)TT)r�  )FTN)TFF)TF)r,  )r–  N)r3   rÀ  )r@   r  r+  F)r@   r  FTN)Fr   FNFr”   )NF)r”   F)r:  r;  FN)NNNNN)r   NNr¬   )NNF)rg  FFN)Nrg  FFN)rg  FNN)rg  FN)FN)FNNNN)NNNF)Nr”   FNN)NNNN)r”   TT)NNr   N)rß  r   r   )r”   )NNNNF)r”   FF)rg  (¢  rÈ  r¯   Úcollections.abcr   Úenumr   Ú	functoolsr   r   Útypingr   r   r	   r
   Útyping_extensionsr   rP   Útorch._prims_commonrÛ  rJ   r   r   r   Útorch._decompr   r   r   r   Ú
torch._opsr   Útorch._primsr   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   Útorch._prims_common.wrappersr$   r%   r&   r'   r(   rø  r)   r*   Útorch.fx.experimentalr+   rŒ  Útorch.utilsr,   r=   r-   r.   Úopsr/   ÚlibraryÚLibraryrÇ	  r±   rè  rê  ré  rA   rN   rZ   rc   ÚlinspaceÚlogspacerÝ  r†   Útakerd  r  r“   r¢   r½   rÇ   rÙ   r[  rä   rí   ÚcummaxÚcumminrô   r÷   r  r  r"  r&  r$  Ú_fft_c2cr*  r-  r.  Ú_fft_r2cr@  ÚrandpermÚgenerator_outrE  r�   rJ  ÚrandintrS  rP  Úlow_outrV  ÚrandrX  Ú_fft_c2rr]  rÐ  rh  ro  Ú
unsqueeze_rs  Ú_sparse_semi_structured_linearrÀ  rX   r  Ú_sparse_semi_structured_mmr…  Ú_sparse_semi_structured_addmmr‰  Ú_cslt_sparse_mmr�  Úindex_reducer£  Úindex_reduce_r¥  Úindex_selectr©  Úsegment_reducer¶  r²   Ú	unary_outrº  r   rÃ  r5  rÆ  rÈ  rÑ  rÍ  rÒ  Ú_assert_asyncrÕ  rà   rÙ  Ú_printrÛ  Ú_make_dep_tokenrß  rä  Ú_functional_sym_constrain_rangeré  rí  Ú(_functional_sym_constrain_range_for_sizerï  Ú_functional_assert_asyncrñ  rè   r  ré   r  r  r  r  Ú_linalg_eighr  r'  Ú_linalg_eigvalsÚlinalg_eigvalsr+  Ú
linalg_eigr.  r2  r4  r:  r?  rC  rI  r\  Úlinalg_inv_exr_  Úlinalg_ldl_factor_exr`   re  Úlinalg_ldl_solvers  Ú	linalg_lury  Úlinalg_lu_factor_exr}  Úlinalg_lu_solver†  Ú	lu_unpackrŒ  r•  Ú	linalg_qrrœ  r   r�  Ú_linalg_svdrª  rp  r;  rº  rÎ  Úlinalg_solve_triangularrÕ  rÛ  rä  Ú_linalg_detrç  rû  r  r  Úreflection_pad1dr  Úreplication_pad1dr'  r3  Úreflection_pad1d_backwardr8  Úreplication_pad1d_backwardr:  rJ  Úreflection_pad2drL  Úreplication_pad2drO  Úreflection_pad2d_backwardr4  Úreplication_pad2d_backwardrV  rd  Úreflection_pad3drf  Úreplication_pad3dri  Úreflection_pad3d_backwardÚreplication_pad3d_backwardrp  Ú_pdist_forwardrT   rt  Ú_pdist_backwardrz  Úbaddbmmr’  Ú	bernoullir•  Ú
bernoulli_r™  rq  rœ  ÚpoissonrŸ  Ú_fused_moving_avg_obs_fq_helperr±  Úmmr»  rÀ  r4  rØ  rß  Úmiopen_batch_normrì  Úconvolutionrô  r¾	  Ú_has_mkldnnrÂ	  rõ  Ú_convolution_pointwiserü  Ú_linear_pointwiser   Úhas_mklrÄ	  r  Ú_mkl_linearr  rÅ	  r  Úqconv2d_pointwiseÚqconv_pointwiser  Úbinaryr  Úqlinear_pointwiserl  r"  Úbinary_tensorr'  Úlinear_dynamic_fp16Úlinear_relu_dynamic_fp16r)  rÆ	  r*  Ú
max_pool2dr5  Úint4mm_packed_weight_cpur=  rB  Ú
avg_pool2dri  rn  Úavg_pool2d_backwardrv  Ú
avg_pool3dr“  Úavg_pool3d_backwardrž  Ú_adaptive_avg_pool2dr£  Ú_adaptive_avg_pool3dr¦  Ú_adaptive_avg_pool2d_backwardr°  Ú_adaptive_avg_pool3d_backwardrµ  r³  Úadaptive_max_pool2drÅ  rÉ  rË  Úadaptive_max_pool3drÒ  rÔ  rÕ  Úrepeat_interleaverØ  rk   rÜ  rß  rå  r‹   Ú_unsafe_indexr  Úconvolution_backwardr  Úaddbmmr  Úrandint_liker  Ú_fused_adam_Ú_fused_adamw_r1  Ú_fused_adamr8  Ú_int_mmrB  Ú_convert_weight_to_int4packrN  Ú#_convert_weight_to_int4pack_for_cpurS  Ú_weight_int4pack_mmr^  Ú_weight_int4pack_mm_for_cpurd  rm  ro  r—  Ú_dyn_quant_pack_4bit_weightr£  Ú_dyn_quant_matmul_4bitr©  Ú_weight_int8pack_mmr°  Ú_cdist_forwardrÅ  Ú_cdist_backwardrÏ  Ú_embedding_bagrô  Ú_embedding_bag_forward_onlyrö  rù  Únansumrû  ÚmedianÚ	nanmedianrý  Ú
dim_valuesr�  rî   r   Úlogical_not_r  Úrepeatr  Úzero_r  Úmul_ÚScalarÚdiv_Úlogical_and_Úlogical_or_Úlogical_xor_r  Úadd_Úsub_r  ÚroundÚdecimalsr  r%  Ú
__rshift__r)  Ú
__lshift__r-  Úzeror/  r  r2  Úfillr4  Úrelu_r7  Ú	_add_relur9  Úrrelu_with_noiser@  Úrrelu_with_noise_functionalrB  Úrrelu_with_noise_rD  Ú	index_putÚ_unsafe_index_putrH  Úmasked_fill_rL  Ú_masked_scalerO  Úmasked_scatter_rS  Úmasked_scatterrU  Úmasked_scatter_backwardrW  Ú
index_put_rY  Úaliasr\  ri  Úbmmrl  rn  rr  rw  r]  r^  rˆ  r›  rš  r/  Ú max_pool2d_with_indices_backwardr©  Úmax_pool2d_with_indicesr«  Úfractional_max_pool2dr¿  Úmax_pool3d_with_indicesrÏ  Ú max_pool3d_with_indices_backwardrÖ  rà  râ  rì  Úgrid_sampler_2d_backwardrô  rú  rü  rÿ  rÊ  Úonesr  Úzerosr  r÷  r  Úselect_scatterr  Úslice_scatterr  ró   r$  r,  Úgatherr2  rB  rI  rK  rU  rX  Úscatter_addr]  Úscatter_add_r`  rW  re  rK  Úvalue_reducerd  Úscatter_rf  Ú#_scaled_dot_product_flash_attentionr  rŠ  Ú#_scaled_dot_product_cudnn_attentionr”  Ú0_scaled_dot_product_fused_attention_overrideabler—  Ú,_scaled_dot_product_flash_attention_backwardr¢  Ú+_scaled_dot_product_flash_attention_for_cpur¥  Ú4_scaled_dot_product_flash_attention_for_cpu_backwardr«  Ú'_scaled_dot_product_efficient_attentionr¯  Ú0_scaled_dot_product_efficient_attention_backwardr·  Ú,_scaled_dot_product_cudnn_attention_backwardr¹  Ú_flash_attention_forwardrÁ  Ú_flash_attention_backwardrÆ  Ú_efficient_attention_forwardrÒ  Ú_efficient_attention_backwardÚSymIntrÚ  Ú
_scaled_mmr  Úscatter_reduceÚtwoÚtwo_outr  Úscatter_reduce_r  Úmultinomialr  r  r'  r/  Ú_upsample_nearest_exact1dr8  Ú_upsample_nearest_exact2dr@  Ú"_upsample_nearest_exact2d_backwardrD  Ú_upsample_nearest_exact3dr  rF  Úvalues_stablerI  r`  Ú_thnn_fused_lstm_cellrf  r}  r‡  rŒ  r�  r‘  Úargminr’  r•  Útopkrœ  Ú_segment_reduce_backwardr   Úkthvaluer¥  rë   r¹  r¶  r½  rÀ  Úpixel_shufflerÇ  rÙ  Ú	bucketizeÚ
Tensor_outrÞ  Úhistcrê  Ú_upsample_bilinear2d_aaÚ_upsample_bicubic2d_aarî  Ú _upsample_bilinear2d_aa_backwardrò  rû  r 	  rÒ  r	  Úsearchsortedr	  r	  Úembedding_dense_backwardr	  Ú_embedding_bag_backwardr	  Ú_embedding_bag_dense_backwardr	  Ú*_embedding_bag_per_sample_weights_backwardr#	  Úisinr*	  Ú	polygammar-	  Ú_local_scalar_denser/	  r1	  r3	  r;	  ru	  Ú_grouped_mmrx	  Ú_scaled_grouped_mmrz	  Ú_softmaxr~	  Úconstant_pad_ndrˆ	  rŒ	  Ú_jagged_to_padded_dense_forwardr�	  r˜	  rœ	  Úspecial_airy_aiÚspecial_bessel_y0Úspecial_bessel_y1Úspecial_modified_bessel_i0Úspecial_modified_bessel_i1Úspecial_modified_bessel_k0Úspecial_modified_bessel_k1Ú!special_scaled_modified_bessel_k0Ú!special_scaled_modified_bessel_k1Úspecial_chebyshev_polynomial_tÚspecial_chebyshev_polynomial_uÚspecial_chebyshev_polynomial_vÚspecial_chebyshev_polynomial_wÚ&special_shifted_chebyshev_polynomial_tÚ&special_shifted_chebyshev_polynomial_uÚ&special_shifted_chebyshev_polynomial_vÚ&special_shifted_chebyshev_polynomial_wÚspecial_hermite_polynomial_hÚspecial_hermite_polynomial_heÚspecial_laguerre_polynomial_lÚspecial_legendre_polynomial_pr¢	  r¦	  r«	  r®	  Úlerp_Úaddcmul_Úaddcdiv_Útorch._refs.nn.functionalÚtorch._refs.specialrÌ	  r@   r<   r:   ú<module>rÉ
     sÖ[  ðà €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'à €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð ð ð "Ð !Ð !Ð !Ð !Ð !ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð <Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø )Ð )Ð )Ð )Ð )Ð )ð €WˆT�]„]€Ø€Yˆt�_„_€à„y„~€à*/¬-×*?Ò*?ÀÈÐPVÑ*WÔ*WÐ 'Ø %  a¡¤Ñ €ˆ)�Xð
˜ 8¨B°¨FÔ#3Ð"4°h¸rÀ2¸vÔ6FÐ"FÔGð 
ð 
ð 
ð 
ðà3ðð ð ð ð(*ð *ð *ðð ð ð €�”˜tœ}Ð-Ñ.Ô.Ø€�„ð
 
Ø
ØØŒ=ØØð5ð 5ð 5ñ „ñ /Ô.ð5ðp €�”	Ô! 4¤9¤=Ð1Ñ2Ô2Ø€�„ð'ð 'ñ „ñ 3Ô2ð'ð €�Ô!Ô)¨4Ô+<Ô+@ÐAÑBÔBØ€�„Ø%'ð %ð %ð %ð %ñ „ñ CÔBð%ñ&Fð Fð Fð FðRð ð ñAð Að Að AðH €ˆtŒyÔ Ñ!Ô!ðMð Mñ "Ô!ðMð €ˆtÔ%Ñ&Ô&Ø€�„ðIð Iñ „ñ 'Ô&ðIð €Ø	„[Ô˜$œ+œ/¨4¬;Ô+>ÀÄÄÐPñô ð €ˆX�yÑ!Ô!ðð ñ "Ô!ñô ðð €�Ô!Ô)¨4Ô+<Ô+@ÐAÑBÔBØ€�„ðIð Iñ „ñ CÔBðIð3ð 3ð 3ñlð �Vð  $ s¤)ð ¸4ð ð ð ð ð €�”Ô% t¤}Ô'8Ð9Ñ:Ô:Ø€�„ðKð Kñ „ñ ;Ô:ðKð €ð $ s¤)ð ð ð ð ð €�”Ô% t¤}Ô'8Ð9Ñ:Ô:Ø€�„ð8
ð 8
ñ „ñ ;Ô:ð8
ðv €ˆtŒ}Ô*Ñ+Ô+Ø"&ð 3ð 3ð 3ð 3ñ ,Ô+ð3ð €ˆtŒ}Ô$Ñ%Ô%ð Œ*ØØØð
ð 
ð 
ð 
ñ &Ô%ð
ð €�”Ô$ d¤lÔ&6Ð7Ñ8Ô8Ø€�„ð
 Œ*ØØØðð ð ð ñ „ñ 9Ô8ðð& €�”Ô  $¤,Ô"6Ð7Ñ8Ô8Ø€�„ð Œ*ØØØðð ð ð ñ „ñ 9Ô8ðð& €�”	Ô! 4¤9¤=Ð1Ñ2Ô2Ø€�„Ø%)°$¸tÐPTð ð ð ð ñ „ñ 3Ô2ðð €�”Ô% t¤}Ô'8Ð9Ñ:Ô:Ø€�„ð$D�vð $D D¨¤Ið $D¸cð $DÈCð $Dð $Dð $Dñ „ñ ;Ô:ð$DðN €ˆtŒzÔ!Ñ"Ô"ñð ð ñ #Ô"ðð0(ð (ð (ð €ˆtŒÔ&Ñ'Ô'ðð ñ (Ô'ðð €ˆtÔ2Ñ3Ô3ð
 "Ø%)Ø'+ñð Øðàðð ðð �6Ô
ð	ð
 ˜c”]ðð ˜œÔ$ðð ð ñ 4Ô3ððB €ˆtÔ.Ñ/Ô/ð
 (,ñ	ð Ø
ðàðð ðð ˜œÔ$ð	ð ð ñ 0Ô/ðð0 €ˆtÔ1Ñ2Ô2ð Ø	
Ø'+ðð ð Øðà
ðð ðð ð	ð ˜œÔ$ðð ð ñ 3Ô2ððD €ˆtÔ#Ñ$Ô$ð "Ø"Ø'+Ø"ØØØñ-<ð -<Ø”,ð-<àŒ\ð-<ð �6Ô
ð-<ð �FÔð	-<ð
 ˜œÔ$ð-<ð ð-<ð ð-<ð ð-<ð ð-<ð -<ð -<ñ %Ô$ð-<ð` €ˆtÔ Ô(Ñ)Ô)ð ð	Ið 	Ið 	IØ
ð	Ià	ð	Ið ð	Ið ŒLð		Ið
 ð	Ið ð	Ið ð	Ið 	Ið 	Iñ *Ô)ð	Ið €ˆtÔ!Ô)Ñ*Ô*ð ð	ð 	ð 	Ø
ð	à	ð	ð ð	ð ŒLð		ð
 ð	ð ð	ð ð	ð 	ð 	ñ +Ô*ð	ð €�„Ø€ˆtÔ Ô(Ñ)Ô)ð'ð 'ñ *Ô)ñ „ð'ð €ˆtÔ"Ô*Ñ+Ô+ð
 !%Ø $Ø $ØØØð Wð  Wð  WØ
ð Wàð Wð �fÔð	 Wð
 �fÔð Wð �fÔð Wð ð Wð ð Wð ð Wð  Wð  Wñ ,Ô+ð WðF €�”Ô  $¤(Ô"4Ð5Ñ6Ô6Ø€�„ðð ñ „ñ 7Ô6ðð €ˆtŒxŒ|ÑÔñð ð ñ Ôðð €�”Ô  $¤(Ô"4Ð5Ñ6Ô6Ø€�„ðð ñ „ñ 7Ô6ðð €ˆtŒxŒ|ÑÔñð ð ñ Ôðð €ˆtŒzÔ!Ñ"Ô"ð6ð 6ñ #Ô"ð6ð €ˆtŒzŒ~ÑÔð(ð (ñ Ôð(ð
 €ˆtÔ!Ô)Ñ*Ô*ðð ñ +Ô*ðð €ˆtÔ!Ô%Ñ&Ô&ðð ñ 'Ô&ðð €ˆtŒ{Ô"Ñ#Ô#ðð ñ $Ô#ðð €ˆtÔ#Ô+Ñ,Ô,ð ØØØØð)ð )ð )ð )ñ -Ô,ð)ð €ˆtÔ'Ô/Ñ0Ô0ñ,ð ,ð ,ñ 1Ô0ð,ð €ˆtÔ3Ô;Ñ<Ô<ñð ð ñ =Ô<ðð
 €ˆtÔ0Ô8Ñ9Ô9ñ6ð 6ð 6ñ :Ô9ð6ð& €ˆtÔ<ÔDÑEÔEðð ñ FÔEðð
 €ˆtÔ,Ô0Ñ1Ô1ðð ñ 2Ô1ðð
˜Fð ¨Cð ð ð ð ð  ð  ¨Fð  ¸#ð  ð  ð  ð  ðN (,ñ
ð 
Øð
àð
ð !%ð
ð 
ð 
ð 
ñ$ð �Vð  Sð °Cð ð ð ð ð
˜ð 
 Fð 
°$ð 
Àð 
ð 
ð 
ð 
ð"  ñ	ð Øðàðð ðð ð	ð ð ð ð�Cð ð ð ð ð €�Ô!Ô)¨4Ô+<Ô+HÐIÑJÔJØ€ˆ]˜NÑ+Ô+ñð ˜ð  sð ¸Tð ð ð ñ ,Ô+ñ KÔJðð" €�Ô$Ô,¨dÔ.AÔ.EÐFÑGÔGØ€�„ðB ð B¨6ð Bð Bð Bñ „ñ HÔGðBð €�”Ð Ñ!Ô!Ø€ˆ]˜NÑ+Ô+ð	˜6ð 	ð 	ð 	ñ ,Ô+ñ "Ô!ð	ðQ ð Q¨Fð Qð Qð Qð Qð €ˆtÔ*Ñ+Ô+Ø€�„ð) ð )¨Fð )¸4ð )ÀFð )ð )ð )ñ „ñ ,Ô+ð)ð €ˆtÔ"Ñ#Ô#Ø€�„ñJð J˜ð J Fð J°4ð JÀFð Jð Jð Jñ „ñ $Ô#ðJð €ˆtŒ}ÑÔØ€�„ñ)ð )�6ð ) $ð )°6ð )ð )ð )ñ „ñ Ôð)ð €ˆtÔ$Ñ%Ô%Ø€�„ñ)ð )˜6ð )¨$ð )¸6ð )ð )ð )ñ „ñ &Ô%ð)ð €ˆtÔ&Ô.Ñ/Ô/ñð ˜&ð ¨ð ÀTð ð ð ñ 0Ô/ðð" €Ø	Ô$Ô,¨dÔ.MÔ.QÐRñô ð €�„ð. fð .°6ð .¸fð .ð .ð .ñ „ñô ð.ðd €ˆtÔ!Ô)Ñ*Ô*ñð ˜&ð °ð ð ð ñ +Ô*ðð €�Ô)Ô1°4Ô3LÔ3PÐQÑRÔRØ€ˆT�8˜VÑ$Ô$ð Øð	ð ð Ø
ðð ðð ð	ð
 ˆ6�6˜6Ð!Ô"ðð ð ñ %Ô$ñ SÔRðð& €�Ô%Ô-¨tÔ/DÔ/HÐIÑJÔJØ€�„ð ð'ð 'ð 'Øð'àð'ð ð'ð
 ð'ð ð'ð 'ð 'ñ „ñ KÔJð'ðT €�”Ô&¨¬Ô(:Ð;Ñ<Ô<Ø€ˆS�#�sÑÔØ/3ð ð ð �fð ¨ð ¸¸fÀfÈfÐ>TÔ8Uð ð ð ñ Ôñ =Ô<ðð4 €�Ô(Ô0°$Ô2JÔ2NÐOÑPÔPØ€ˆT�8˜VÑ$Ô$ð Øð	ð ð Øðð ðð ð	ð
 ˆ6�6˜6Ð!Ô"ðð ð ñ %Ô$ñ QÔPððD €�Ô$Ô,¨dÔ.BÔ.FÐGÑHÔHØ€�„ð Øð4ð 4ð 4Øð4àð4ð ð4ð
 ð4ð ð4ð ð4ð 4ð 4ñ „ñ IÔHð4ðn €ˆtŒ~ÑÔØ€ˆS�#�sÑÔð Øñ	$ð $Øð$àð$ð ð$ð ð	$ð
 ˆ6�6˜6Ð!Ô"ð$ð $ð $ñ Ôñ Ôð$ðP˜ð   t¨T zÔ!2ð ð ð ð ð* €�”Ô&¨¬Ô(:Ð;Ñ<Ô<Ø€ˆS�#ÑÔñð �fð  Cð ¸¸fÀf¸nÔ8Mð ð ð ñ Ôñ =Ô<ðð4 €�Ô$Ô,¨dÔ.BÔ.GÐHÑIÔIØ€ˆV�[ $¨Ñ1Ô1ð'�vð ' %¨°¸ÀÐ(FÔ"Gð 'ð 'ð 'ñ 2Ô1ñ JÔIð'ð$ €ˆtÔÔ'Ñ(Ô(ð  ØØ ñ	"ð "Øð"àð"ð ð"ð �SŒMð	"ð "ð "ñ )Ô(ð"ðJ.Ø
ð.à
ð.ð ˆ4�Œ9�d˜3”iÐÔ ð.ð .ð .ð .ð".Ø
ð.à
ð.ð �3Œ-ð.ð ˆ6�6ˆ>Ôð	.ð .ð .ð .ð( fð °Vð Àð ð ð ð ð €ˆtÔ$Ñ%Ô%ð
 ØØ#ØØ#Ø!ð7ð 7ð 7Øð7àð7ð ð	7ð
 ð7ð �VÔð7ð 	�Ôð7ð �VÔð7ð �6Ô
ð7ð ˆ6�6˜6 6Ð)Ô*ð7ð 7ð 7ñ &Ô%ð7ðt €�Ô,Ô4°dÔ6RÔ6VÐWÑXÔXð ØØ ðð ð Øðàðð ð	ð
 ðð ðð 
�&Ô	ðð ðð ð ñ YÔXðð2 €ˆtÔ$Ñ%Ô%Ø€ˆS�# 4Ð(Ñ(Ô(ð ØØñ+(ð +(Ø
ð+(àð+(ð ð+(ð ð	+(ð
 ð+(ð ˆ6�6ˆ>Ôð+(ð +(ð +(ñ )Ô(ñ &Ô%ð+(ð^ €ˆtÔÔ'Ñ(Ô(ð
ð 
ñ )Ô(ð
ð €ˆtŒzÑÔØ€�„ð
 ØñWð WØðWà	ðWð ðWð ð	Wð
 ðWð ðWð Wð Wñ „ñ ÔðWðtð ð ð>#;ð #;ð #;ðL €ˆtÔ$Ñ%Ô%Ø€�„ð=ð =ñ „ñ &Ô%ð=ð €ˆtÔ%Ñ&Ô&Ø€�„ð>ð >ñ „ñ 'Ô&ð>ð(ð (ð (ð< €ˆtÔ-Ñ.Ô.Ø€ˆ\ÑÔðSð Sñ Ôñ /Ô.ðSð €ˆtÔ.Ñ/Ô/Ø€ˆ\ÑÔðTð Tñ Ôñ 0Ô/ðTð2Eð 2Eð 2Eðj €ˆtÔ$Ñ%Ô%Ø€�„ð=ð =ñ „ñ &Ô%ð=ð €ˆtÔ%Ñ&Ô&Ø€�„ð>ð >ñ „ñ 'Ô&ð>ð €àÔ&Ô.ØÔ&Ô1ØÔ'Ô/ØÔ'Ô2ð	ñô ð €ˆ\ÑÔð&ð &ñ Ôñô ð&ð:<Gð <Gð <Gð~ €ˆtÔ$Ñ%Ô%Ø€�„ð=ð =ñ „ñ &Ô%ð=ð €ˆtÔ%Ñ&Ô&Ø€�„ð>ð >ñ „ñ 'Ô&ð>ð €àÔ&Ô.ØÔ&Ô1ØÔ'Ô/ØÔ'Ô2ð	ñô ð €ˆ\ÑÔð$(ð $(ñ Ôñô ð$(ðN €ˆtÔ"Ñ#Ô#Ø€�„ñ

ð 

˜fð 

¨ð 

°vð 

ð 

ð 

ñ „ñ $Ô#ñ

ð €ˆtÕ#Ñ$Ô$Ø€�„ðP˜vð P¨Vð P¸ð PÀfð PÐQWð Pð Pð Pñ „ñ %Ô$ñPð €�•Ô$ d¥lÔ&6Ð7Ñ8Ô8Ø€˜ÐÑÔØ/0¸ð 'ð 'ð 'ð 'ñ Ôñ 9Ô8ñ'ð: €�•Ô&¨­Ô(:Ð;Ñ<Ô<Ø€�„Ø&*ð Ið Ið Ið Iñ „ñ =Ô<ñIð
 €ˆt�Ô$Ñ%Ô%ñð ð ñ &Ô%ñð €ˆt�~ÕÑ Ô ñIð Ið Iñ !Ô ñIð
 €�•Ô$ d¥lÔ&6Ð7Ñ8Ô8Ø€�„ñ"ð "ð "ñ „ñ 9Ô8ñ"ð €ˆtÕ3Ô;Ñ<Ô<ð Øñ*ð *ð *ñ =Ô<ñ*ð. €ˆt�wÑÔØ€˜ÐÑÔð	ð 	ñ Ôñ Ôñ	ðBð Bñ Bñ
ð 
ð 
ñ 
ð* 7;ñið iØ”,ðiàŒLðið �$�s”)˜S�.Ô!ðið �4˜”9˜c�>Ô"ð	ið
 �D˜”I˜s�NÔ#ðið ðið ðið ˜U 4¨¤9¨c >Ô2Ô3ðið ið iñ iðXQð Qñ Qð €ˆtÕ%Ô-Ñ.Ô.ð"$Ø”,ð"$àŒLð"$ð �5”<Ô
 ð"$ð ˜5œ<Ô(ð	"$ð
 ˜%œ,Ô'ð"$ð ñ"$ð !&ñ"$ð ð"$ñ "$ð "$ñ /Ô.ñ"$ðJ €ˆtÕÔ'Ñ(Ô(ð)Ø”,ð)àŒLð)ð Œ,ð)ð �ŒIð	)ð
 �#ŒYð)ð �3Œið)ð ð)ð ˜”Ið)ð ð)ñ )ð )ñ )Ô(ñ)ðX 	…8Õñ i@Ø9>¼×9NÒ9NÙ�&˜&ñ:ô :Ñ6ð €]�5”9Õ#Õ:ÔBÑCÔCñð ñ DÔCñð, €]�5”9Õ#Õ5Ô=Ñ>Ô>ñSð Sñ ?Ô>ñSð
 …xÕð 	Ø:?¼-×:OÒ:OÙ�6˜6ñ;
ô ;
Ñ7ð 
ˆ�u”y•}Õ0Ñ	1Ô	1ñ	ð 	ñ 
2Ô	1ñ	ð
 :?¼×9NÒ9NÙ�&˜&ñ:ô :Ñ6ð €]�5”9Õ#Õ5Ô=Ñ>Ô>Ø€]�5”9Õ#Õ3Ô;Ñ<Ô<ñ"ð "ñ =Ô<ñ ?Ô>ñ"ðH €]�5”9Õ#Õ5Õ<Ñ=Ô=ñð ñ >Ô=ñð6 €]�5”9Õ#Õ5Ô=Ñ>Ô>Ø€]�5”9Õ#Õ5Õ<Ñ=Ô=ñð ñ >Ô=ñ ?Ô>ñð, €]�5”9Õ#Õ5Õ<Ñ=Ô=Ø€]�5”9Õ#Õ5ÕCÑDÔDñð ñ EÔDñ >Ô=ñð: €]�5”9Õ#Õ7Ô?Ñ@Ô@Ø€]�5”9Õ#Õ<ÔDÑEÔEñ	ð 	ñ FÔEñ AÔ@ñ	ð =B¼M×<QÒ<QÙ�V˜Vñ=ô =Ñ9ð €]�5”9Õ&Õ1Ñ2Ô2ð ØØØñ
ñ 
ð 
ñ 3Ô2ñ
ð8 €]�5”9Õ&Õ?Ñ@Ô@ñ@ð @ñ AÔ@ñ@ñ(ð ñ ð €ˆt�Ô&Ñ'Ô'ð ØØØØñMñ Mð Mñ (Ô'ñMñb(<ð (<ñ (<ðX €ˆtÕ'Ô/Ñ0Ô0ñEð Eñ 1Ô0ñEðP €ˆt�ÑÔØ€�„ð ØØØØñUJñ UJð UJñ „ñ  ÔñUJðp €ˆtÕ'Ñ(Ô(Ø€ˆ\ÑÔñK(ð K(ñ Ôñ )Ô(ñK(ð\ €ˆtÕ(Ô0Ñ1Ô1ñð ñ 2Ô1ñð" €ˆtÕ(Ô0Ñ1Ô1ñ@ð @ñ 2Ô1ñ@ð €ˆtÕ1Ô9Ñ:Ô:ñFð Fñ ;Ô:ñFð, €ˆtÕ1Ñ2Ô2Ø€ˆ\ÑÔñPð Pñ Ôñ 3Ô2ñPñ
	
°6ð 	
ÀSð 	
ñ 	
ð 	
ñ 	
ð €ˆtÕ'Ñ(Ô(Ø€ˆU�IÑÔñ+ð +ñ Ôñ )Ô(ñ+ð\ €ˆtÕ0Ñ1Ô1Ø€ˆ\ÑÔñHð Hñ Ôñ 2Ô1ñHð$ €ˆtÕ'Ñ(Ô(Ø€ˆU�IÑÔñ'ð 'ñ Ôñ )Ô(ñ'ðT €ˆtÕ0Ñ1Ô1Ø€ˆ\ÑÔñ(ð (ñ Ôñ 2Ô1ñ(ð
 €ˆtÕ%Ô,Ñ-Ô-ñ*ñ *ð *ñ .Ô-ñ*ð €�•Ô$ d¥lÔ&6Ð7Ñ8Ô8Ø€�„ñTð Tñ „ñ 9Ô8ñTð €�Õ#Ô+¨TÕ-@Ô-DÐEÑFÔFØ€�„Ø46ñ @ð @ñ @¨cð @ñ @ð @ñ „ñ GÔFñ@ð €�”	”Õ&Ô.°´	´Õ0FÔ0JÐKÑLÔLØ€�„ñð ñ „ñ MÔLñð" €�•
Ô! 4Õ#5Ô#<Ð=Ñ>Ô>ñð ñ ?Ô>ñðD €�Õ)Ô1Ð2Ñ3Ô3ñHð Hñ 4Ô3ñHð: €�•Ô# T¥[¤_Ð5Ñ6Ô6Ø€˜ÐÑÔØ./°qð 'ð 'ñ 'ð 'ñ Ôñ 7Ô6ñ'ð0 €�Õ!Ô(Ð)Ñ*Ô*ñ'ð 'ñ +Ô*ñ'ð €�Õ!Ô)¨4Õ+=Ô+EÐFÑGÔGð  Øñ!
ð 
ñ 
ð 
ñ HÔGñ
ð2 €�Õ Ô(Ð)Ñ*Ô*ð  Øñ!!ð !ñ !ð !ñ +Ô*ñ!ðH €�•ˆ~ÑÔØ€�„ñBð Bñ „ñ ÔñBð* €�Õ0Ð1Ñ2Ô2ñð ñ 3Ô2ñð& €�Õ8Ð9Ñ:Ô:ñð ñ ;Ô:ñð €�Õ(Ð)Ñ*Ô*ñ@ð @ñ +Ô*ñ@ð €�Õ0Ð1Ñ2Ô2ñ<ð <ñ 3Ô2ñ<ð €�Õ>Ð?Ñ@Ô@ñ<ð <ñ AÔ@ñ<ñ"�3ñ "˜3ð " 3ð "ñ "ð "ñ "ñjð jñ jðZ €�Õ0Ð1Ñ2Ô2ðDØ!)¨&Ô!1ðDñ Dð Dñ 3Ô2ñDð0 €�Õ+Ð,Ñ-Ô-ñ;ð ;ñ .Ô-ñ;ð  €�Õ(Ð)Ñ*Ô*ñ<ð <ñ +Ô*ñ<ð €ˆtÕ"Ô*Ñ+Ô+ñ &ð  &ñ ,Ô+ñ &ðF €ˆtÕ#Ñ$Ô$Ø€�„ñGð Gñ „ñ %Ô$ñGð* €ˆtÕ"Ô*Ñ+Ô+ð
 Ø	
ØØØØñ`5ñ `5ð `5ñ ,Ô+ñ`5ðF €ˆtÕ/Ô7Ñ8Ô8ñ5ð 5ñ 9Ô8ñ5ñ
ñ 
ð 
ñ 
ð €�•Ô# T¥[¤_Ð5Ñ6Ô6Ø€�„ñ=¸$ñ =ð =ñ =ð =ñ „ñ 7Ô6ñ=ð €�•Ô# T¥^Ô%;Ð<Ñ=Ô=ñ)ð )ñ >Ô=ñ)ð €à�ŒØ�ÕØ�ÔØ�Õ!Ø�	ÔØ�	Õðñ	ô 	ð €ˆX�yÑ!Ô!ññ ð ñ "Ô!ñ	ô 	ñð €ˆtÕ Ô(Ñ)Ô)ñð ñ *Ô)ñð €ˆt�{Ô"Ñ#Ô#ñ'ð 'ñ $Ô#ñ'ð& €ˆt�zÔ!Ñ"Ô"ñð ñ #Ô"ñð €à�	ÕØ�	ÕØ�	ÔØ�	ÔØÕÔ!ØÕÔ ØÕÔ!ðñ
ô 
ñð ñ
ô 
ñð €à�	ÕØ�	ÕØ�	ÔØ�	Ôð	ñô ñ*ñ *ð *ñô ñ*ðZ €�•
Ô" D¥JÕ$7Ð8Ñ9Ô9ñð ñ :Ô9ññ
ð 
ñ 
ð" €�•Ô&¨­Õ(>Ð?Ñ@Ô@ñð ñ AÔ@ñð €�•Ô&¨­Õ(>Ð?Ñ@Ô@ñð ñ AÔ@ñð €ˆt�yÔ Ñ!Ô!ñ&ð &ñ "Ô!ñ&ð €�•
Ô! 4¥:Õ#4Ð5Ñ6Ô6ñð ñ 7Ô6ñð €�•	Ô  $¥)Õ"2Ð3Ñ4Ô4ñ"ð "ñ 5Ô4ñ"ð €ˆt�zÔ!Ñ"Ô"ñð ñ #Ô"ñð €ˆt�~Ô$Ñ%Ô%Ø€�„ñð ¨Fð ñ ð ñ „ñ &Ô%ñð €�Õ%Ð&Ñ'Ô'Ø€�„àRVñ"ñ "ð "ñ „ñ (Ô'ñ"ð €�Õ0Ð1Ñ2Ô2àRVñ;ñ ;ð ;ñ 3Ô2ñ;ð €�Õ&Ð'Ñ(Ô(àKOññ ð ñ )Ô(ñð €�•Ô&¨Õ(>Ô(FÐGÑHÔHñ"ñ "ð "ñ IÔHñ"ð €ˆtÕ Õ'Ñ(Ô(ñð ñ )Ô(ñð
 €ˆtÕ!Ô)Ñ*Ô*ñð ñ +Ô*ñð €ˆtÕ#Ñ$Ô$ñ	ð 	ñ %Ô$ñ	ð €ˆtÕ"Ñ#Ô#Ø€�„ñ6ð 6ñ „ñ $Ô#ñ6ð €ˆtÕ+Ñ,Ô,ñ!ð !ñ -Ô,ñ!ð €ˆt�Ô&Ñ'Ô'ññ ð ñ (Ô'ñð €ˆt�zÔ!Ñ"Ô"ñ!ð !ñ #Ô"ñ!ñ&ñ &ð &ñ &ðR €ˆt�xÔÑ Ô ñ5ð 5ñ !Ô ñ5ð €ˆt�xŒ~ÑÔñJð Jñ ÔñJñð ñ ñð ñ ñ6ð ñ ñ;ð ;ñ ;ðh #ñ-Yð YØñYàñYð 	ñYð 	ñ	Yð
 	ñYð 	ñYð 	ñYð 	ñYð 	ñYð 	ñYð 	ñYð ñYð ñYð ñYð ñYð  ñ!Yð" ñ#Yð$ ñ%Yð& ñ'Yð( ð)Yð* ñ+Yð, ð-Yñ Yð Yñ Yñx;4ð ;4ñ ;4ð|38Øñ38àñ38ð ñ38ð 	ñ	38ð
 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð ñ38ð ñ38ð ñ38ð  ñ!38ð" ñ#38ð$ ð%38ð& ð'38ñ 38ð 38ñ 38ñlI2ð I2ñ I2ðX €ˆtÕ4Ô<Ñ=Ô=ñ(ð (ñ >Ô=ñ(ðV €ˆtÕ+Ô3Ñ4Ô4ð ØØØñ#ñ #ð #ñ 5Ô4ñ#ðL €ˆtÕ)Ô1Ñ2Ô2ñQð Qñ 3Ô2ñQðh €ˆtÕ+Ñ,Ô,Ø€ˆU�IÑÔð ØØØñdñ dð dñ Ôñ -Ô,ñdðN €ˆtÕ4Ñ5Ô5Ø€ˆ\ÑÔñbð bñ Ôñ 6Ô5ñbðJ%
 Vñ %
°6ð %
ñ %
ð %
ñ %
ðPð ñ ð ñ ˜tñ ô ñ ð ñ ¨vñ È3ð ñ ð ñ ð$ €ˆtÕ,Ô4Ñ5Ô5ñ#ð #ñ 6Ô5ñ#ð$ €ˆtÕ#Ñ$Ô$Ø€�„ñ8ð 8ñ „ñ %Ô$ñ8ð" €ˆtÕ,Ñ-Ô-Ø€ˆ\™;Ñ'Ô'ñ!ð !ñ (Ô'ñ .Ô-ñ!ð, €�•	Ô!Ð"Ñ#Ô#ñ.ð .ñ $Ô#ñ.ð €ˆt�Ô&Ñ'Ô'ð ØØØØñ)ñ )ð )ñ (Ô'ñ)ðX €�•	Ô! 4¥9¤=Ð1Ñ2Ô2Ø€�„ð ØØØØñð ñ ð ñ „ñ 3Ô2ñð( €�•
Ô" D¥J¤NÐ3Ñ4Ô4Ø€�„ð ØØØØñð ñ ð ñ „ñ 5Ô4ñð( €ˆt�{ŒÑÔñEð Eñ  ÔñEð@ €ˆtÕ"Ô*Ñ+Ô+ñ.ð .ñ ,Ô+ñ.ð €ˆtÕ!Ô)Ñ*Ô*ñ.ñ .ð .ñ +Ô*ñ.ñ
	ð 	˜ñ 	¨Cñ 	¸dð 	ñ 	ð 	ñ 	ñ/ð /ñ /ñ
ð ñ ð  €ˆt�{Ô"Ñ#Ô#ñ'ñ 'ð 'ñ $Ô#ñ'ññ ð ñ ñ6
ñ 
ð 
ñ 
ñ ð ñ ñ
-
ñ -
ð -
ñ -
ñb4ñ 4ð 4ñ 4ð €ˆtÕÔ'Ñ(Ô(ñ&ð &ñ )Ô(ñ&ð
 €ˆtÕ Ñ!Ô!ñð ñ "Ô!ñð
 €à�ÕØ�ÕØ�ÔØ�Õ!ð	ñô ð €�„ñ&ñ &ð &ñ „ñô ñ&ð €à�ÕØ�ÕØ�ÔØ�Õ"ð	ñô ññ ð ñô ñð €�Õ8Ð9Ñ:Ô:ð
 ØØ#Ø!ñ=ñ =Øñ=à	ñ=ð ñ=ð ñ	=ð
 ñ=ð ñ=ð �EŒ?ð=ñ =ð =ñ ;Ô:ñ=ñ@Øñà�S™#�XŒðñ ð ñ ð( €�Õ8Ð9Ñ:Ô:ð ØØ#Ø!ñ(ñ (Øñ(à	ñ(ð ñ(ð ˜Ôñ	(ð
 ñ(ð ñ(ð ñ(ð ñ(ð �EŒ?ð(ñ (ð (ñ ;Ô:ñ(ðV €�ÕEÐFÑGÔGð
 #'ØØØ#Ø!ñ'ñ 'Øñ'à	ñ'ð ñ'ð ˜Ôñ	'ð
 ñ'ð ñ'ð ñ'ð �EŒ?ð'ñ 'ð 'ñ HÔGñ'ðT €àÕ9ðñô ð( "ñ"ñ "Øñ"àñ"ð 
ñ"ð ð	"ð
 
ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð �EŒ?ð"ñ "ð "ñô ñ
"ð. €àÕ8ðñô ð ØØ"&Ø!ññ Øñà	ñð ñð ñ	ð
 ñð ˜Ôñð �EŒ?ðñ ð ñô ñ
ð: €àÕAðñô ð #'Ø!ñ'"ñ '"Øñ'"àñ'"ð 
ñ'"ð ð	'"ð
 
ñ'"ð ñ'"ð ñ'"ð ñ'"ð ˜Ôñ'"ð �EŒ?ð'"ñ '"ð '"ñô ñ
'"ðT €�Õ<Ð=Ñ>Ô>ð ØØ!ñ))ñ ))Øñ))à	ñ))ð ñ))ð ˜Ôñ	))ð
 ñ))ð ñ))ð �EŒ?ð))ñ ))ð ))ñ ?Ô>ñ))ðX €àÕ=ðñô ð" Ø!ñ4-ñ 4-Øñ4-àñ4-ð 
ñ4-ð ñ	4-ð
 ˜Ôð4-ð 
ñ4-ð ñ4-ð ñ4-ð ñ4-ð ñ4-ð ˜$”Zñ4-ð ñ4-ð �EŒ?ð4-ñ 4-ð 4-ñô ñ
4-ðn €àÕ9ðñô ð* "ñ!"ñ "Øñ"àñ"ð 
ñ"ð ð	"ð
 
ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð  �EŒ?ð!"ñ "ð "ñô ñ
"ð0 €àÕ%ðñô ð  "Ø&*Ø'+Ø"&Ø%)ñHñ HØñHà	ñHð ñHð ˜Ôñ	Hð
 ˜ÔñHð ñHð ñHð ñHð ñHð ñHð �EŒ?ñHð ˜s”mñHð   ”}ñHð ˜ÔñHð ˜6Ô"ðHñ Hð Hñô ñ
HðV €àÕ&ðñô ð( "Ø&*Ø'+ñ#,ñ ,Øñ,àñ,ð 
ñ,ð ð	,ð
 
ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð �EŒ?ñ,ð  ˜s”mñ!,ð"   ”}ð#,ñ ,ð ,ñô ñ
,ð4 €àÕ)ðñô ð   %Ø!Ø(,Ø!%Ø!%ñ,Sñ ,SØñ,Sà	ñ,Sð ð,Sð �6Ô
ñ	,Sð
 ˜6Ô"ñ,Sð ˜6Ô"ñ,Sð ˜3”-ñ,Sð ˜3”-ñ,Sð ñ,Sð ñ,Sð ñ,Sð �EŒ?ñ,Sð ˜fÔ%ñ,Sð �vÔñ,Sð ˜#”ð,Sñ ,Sð ,Sñô ñ
,Sð^ €àÕ*ðñô ð* "Ø$(Ø"'ñ%47ñ 47Øñ47àñ47ð 
ñ47ð ð	47ð
 �6Ô
ñ47ð ˜6Ô"ñ47ð ˜6Ô"ñ47ð •,ñ47ð •,ñ47ð ñ47ð ñ47ð ñ47ð ñ47ð ñ47ð ñ47ð  �EŒ?ñ!47ð" ˜S”Mñ#47ð$  ð%47ñ 47ð 47ñô ñ
47ðn €�•Ô'Ð(Ñ)Ô)ð $(Ø+/Ø'+Ø ñ_Yð _YØ
Œ,ð_Yà
Œ,ñ_Yð Œ\ñ_Yð Œ\ð	_Yð
 �5”<Ô
 ñ_Yð ˜5œ<Ô(ð_Yð ˜œÔ$ñ_Yð ð_Yñ _Yð _Yñ *Ô)ñ_YðD €�Õ#Õ'¨Õ)<Õ)DÐEÑFÔFØ€�„ñ&ñ &ð &ñ „ñ GÔFñ&ð
 €ˆtÕ#Õ'Ñ(Ô(ññ ð ñ )Ô(ñð
 €�Õ Ô(¨$Õ*:Ô*>Ð?Ñ@Ô@Ø€�„ñ	Èð 	ð 	ñ 	ð 	ñ „ñ AÔ@ñ	ñð ñ ñ,ð ,ñ ,ð* €Ø	ÕÔ$ dÕ&DÔ&LÐMñô ñ
ñ 
ð 
ñô ñ
ð €Ø	ÕÔ$ dÕ&DÔ&LÐMñô ññ ð ñô ñð. €àÕ(Ô0ØÕ/Ô7ðñô ð !%Ø $ññ Øñà˜%  U¥\Ð 1Ô2Ô3ñð ˜˜s E¥LÐ0Ô1Ô2ñð �uŒoñ	ð
 �uŒoðñ ð ñô ñð: €Ø	ÕÔ$ dÕ&DÔ&LÐMñô ñ
ñ 
ð 
ñô ñ
ð €à�	ÔØ�	ÕØ�	ÕØ�	Õð	ñô ññ ð ñô ññ&$ð $ñ $ðN €ˆtÕ)Ô1Ñ2Ô2ð
 Øññ ð ñ 3Ô2ñð €ˆt�Ô&Ñ'Ô'ñ4/ð 4/ñ (Ô'ñ4/ðn €ˆtÕ$Ô,Ñ-Ô-ñ$%ð $%ñ .Ô-ñ$%ñN

ð 

ñ 

ñ
ð 
ñ 
ð €�•Ô# T¥[Ô%8Ð9Ñ:Ô:ñ4ñ 4ð 4ñ ;Ô:ñ4ð €ˆtÕ!Ô)Ñ*Ô*ññ ð ñ +Ô*ñð €ˆt�yÔ Ñ!Ô!ñ
Qñ 
Qð 
Qñ "Ô!ñ
Qð €ˆtÕ,Ñ-Ô-Ø€�„àLPññ ð ñ „ñ .Ô-ñð  €�•Ô% t¥}Õ';Ð<Ñ=Ô=Ø€ˆX�yÑ!Ô!ñKñ Kð Kñ "Ô!ñ >Ô=ñKð  #(Õ"9Ñ ñQð Qñ Qð €ˆtÕ7Ô?Ñ@Ô@ñ	*ð 	*ñ AÔ@ñ	*ð €ˆtÕ#Ô+Ñ,Ô,ñ	0ð 	0ñ -Ô,ñ	0ð €ˆtÕ!Ô)Ñ*Ô*ñð ñ +Ô*ñð> €ˆtÕ-Ô5Ñ6Ô6ñFð Fñ 7Ô6ñFðD €�•Ô% t¥~Õ'@ÐAÑBÔBØ€�„Ø27¸uñ ð ñ ð ñ „ñ CÔBñð €�•
ˆ|ÑÔØ€�„ñEñ Eð Eñ „ñ ÔñEð4 €Ø	Õ!Ô)¨4Õ+FÔ+NÐOñô ð Øññ ð ñô ñð& €�Õ5Ô=Ð>Ñ?Ô?ð Øññ ð ñ @Ô?ñð8 €ˆtÕ>ÔFÑGÔGñð ñ HÔGñð$ €�•Ô'¨­Ô)<Ð=Ñ>Ô>Ø€�„ñ'ñ 'ð 'ñ „ñ ?Ô>ñ'ð
 €ˆuŒyŒ~Õ(Ñ)Ô)ñð ñ *Ô)ñð8 €ˆuŒyŒ~Õ Ñ!Ô!ñ6ð 6ñ "Ô!ñ6ð$ €ˆtÕ Ñ!Ô!Ø€�„ð
 Ø
Ø	Øñ-Kð -Kñ -Kð -Kñ „ñ "Ô!ñ-Kñ`ð ñ ð €ˆtÕ,Ñ-Ô-ñð ñ .Ô-ñð €ˆtÕ+Ñ,Ô,ð ñ'
ñ '
ð '
ñ -Ô,ñ'
ðT €ˆtÕ1Ñ2Ô2ð ññ ð ñ 3Ô2ñð, €ˆtÕ>Ñ?Ô?ð ññ ð ñ @Ô?ñð. €ˆt�yÑÔØ€�„Ø8=Àeñ 8ð 8ñ 8ð 8ñ „ñ Ôñ8ð  €ˆt�~ÑÔØ€�„ñ6�cð 6 ð 6¨Fð 6ñ 6ð 6ñ „ñ Ôñ6ð €ˆtÕ'Ñ(Ô(ðI &ð Iñ Ið Iñ )Ô(ñIð €ˆt�yÑÔØ€˜ÐÑÔð"ˆvð "˜&ð "ñ "ð "ñ Ôñ Ôñ"ð €ˆt�|ÑÔØ€�„ð6�&ð 6˜Vð 6ñ 6ð 6ñ „ñ Ôñ6ñ ð  ñ  ðP "Ø!Ø+/Ø'+Ø ñeKñ eKØñeKàñeKð �e”lÔ#ñeKð �e”lÔ#ñ	eKð
 �6Ô
ðeKð �6Ô
ñeKð ˜5œ<Ô(ðeKð ˜œÔ$ñeKð ðeKñ eKð eKñ eKðP €ˆtÕÑ Ô Ø€�„ð "Ø!Ø'+ññ Øñàñð �6Ô
ðð �6Ô
ð	ð
 ˜œÔ$ðð ðñ ð ñ „ñ !Ô ñð& €�Õ'Ô/Ð0Ñ1Ô1ð $(Ø#'Ø+/Ø'+Ø ññ ØŒ<ñàŒ<ñð Œ\ñð Œ\ñ	ð
 �5”<Ô
 ðð �5”<Ô
 ñð ˜5œ<Ô(ðð ˜œÔ$ñð ðñ ð ñ 2Ô1ñð0 €ˆt�}ÑÔØ€�„ñ	ˆvð 	˜Cñ 	°ð 	¸ð 	ñ 	ð 	ñ „ñ Ôñ	ð €ˆtÕ#Ñ$Ô$Ø€�„ñ%ñ %ð %ñ „ñ %Ô$ñ%ðP €ˆt�~ÑÔØ€�„ð Ø$Øñ8ð 8Øð8àñ8ð ñ8ð ñ	8ð
 ð8ð ð8ñ 8ð 8ñ „ñ Ôñ8ð, €ˆtÕ3Ô;Ñ<Ô<ð
 ñ	*ð *Øð*à�&Œ\ñ*ð �c”ñ*ð ð	*ñ *ð *ñ =Ô<ñ*ñ ð ñ ñð ñ ð Ñ ˜dÕ2Ñ 3Ô 3Ð 3Ø Ñ ˜dÕ4Ñ 5Ô 5Ð 5Ø Ñ ˜dÕ4Ñ 5Ô 5Ð 5Ø Ñ ˜dÕ=Ñ >Ô >Ð >Ø Ñ ˜dÕ=Ñ >Ô >Ð >Ø Ñ ˜dÕ=Ñ >Ô >Ð >Ø Ñ ˜dÕ=Ñ >Ô >Ð >Ø Ñ ˜dÕDÑ EÔ EÐ EØ Ñ ˜dÕDÑ EÔ EÐ Eð Ñ ˜tÕBÑ CÔ CÐ CØ Ñ ˜tÕBÑ CÔ CÐ CØ Ñ ˜tÕBÑ CÔ CÐ CØ Ñ ˜tÕBÑ CÔ CÐ CØ Ñ ˜tÕJÑ KÔ KÐ KØ Ñ ˜tÕJÑ KÔ KÐ KØ Ñ ˜tÕJÑ KÔ KÐ KØ Ñ ˜tÕJÑ KÔ KÐ KØ Ñ ˜tÕ@Ñ AÔ AÐ AØ Ñ ˜tÕAÑ BÔ BÐ BØ Ñ ˜tÕAÑ BÔ BÐ BØ Ñ ˜tÕAÑ BÔ BÐ Bñð ñ ð €ˆt�yÑÔØ€�„ñð ñ „ñ Ôñð$ €ˆt�|ÑÔØ€�„Ø./ñ ð ñ ð ñ „ñ Ôñð €ˆt�|ÑÔØ€�„Ø./ñ ð ñ ð ñ „ñ Ôñð, 	Ñ˜t�yÑ)Ô)�Ø!Ñ! $¥,Ñ/Ô/�Ø!Ñ! $¥,Ñ/Ô/�ð
 Ð Ð Ð Ø  Ð  Ñ  Ð  Ø Ð Ñ Ð ñBNð BNñ BNðJ ��„€€€r<   