§
    ©²Åj—¶  ã                   ój  — U d dl Z d dlmZmZmZmZmZmZmZ ee	e
f         Zd dlZdee	         dee	         fd„Zdee	         dee	         dee	         fd„Zdee	         dedee	         fd„Zd	ee	         d
ee	         fd„Zd	ee	         fd„Zd	ee	         fd„Zdee	         dee	         fd„Zd	ee	         dee	         fd„Zd	ee	         dee	         defd„Zdee	         de	dee	         fd„Zdee	         fd„Zd	ee	         dee	         fd„Zddœd	ee	         dee	         defd„Zd	ee	         deee	                  dedefd „Zd	ee	         d!e	defd"„Zd#e	d$e	fd%„Zd&e	d'e	d(e	d)e	d*e	d+e	d,efd-„Zd&e	d'e	d(e	d*e	d+e	d,efd.„Zd/ee	         d0e	d1e	d2e	d3e	d4e	d5e	d6e	d7e	d8e	d9e	d:e	d;e	d<e	fd=„Z d/ee	         d>ee	         d*ee	         d?ee	         d+ee	         d,efd@„Z!d/ee	         d>ee	         d*ee	         d?ee	         d+ee	         d,efdA„Z"d/ee	         dBeee	                  dCeee
                  fdD„Z#d	ee	         dEee	         fdF„Z$d	ee	         dGee	         fdH„Z%d	ee	         dIee	         fdJ„Z&dKee	         d!e	fdL„Z'dKee	         fdM„Z(dKee	         d!e	fdN„Z)dKee	         dOee	         fdP„Z*d	ee	         d!e	dQee	         fdR„Z+	 	 	 �ddTee	         dUee	         dVe	dWedXef
dY„Z,dZ„ Z-d	ee	         d!e	d[ee	         d\ee	         d]e	f
d^„Z.d_eee	                  fd`„Z/d!e	daeee	                  fdb„Z0dGee	         fdc„Z1ddee	         deee	         dfe	dQe	fdg„Z2d_eee	                  d!e	fdh„Z3d_eee	                  d!e	fdi„Z4d	ee	         d!e	dQe	fdj„Z5dkee	         dlee	         fdm„Z6d	ee	         fdn„Z7d	ee	         doe	dpe	fdq„Z8d/ee	         dTee	         dreee	                  fds„Z9d	ee	         dtee	         dEee	         duedvef
dw„Z:dxee	         defdy„Z;d/ee	         dzee	         dreee	                  d*ee	         d?ee	         d+ee	         d{e	fd|„Z<d}ee	         d~ee	         dreee	                  d*ee	         d?ee	         d+ee	         d{e	fd„Z=d/ee	         dTee	         dreee	                  d*ee	         d?ee	         d+ee	         d{e	fd€„Z>d/ee	         dTee	         dreee	                  d*ee	         d?ee	         d+ee	         d{e	fd�„Z?d‚ee	         d/ee	         dTee	         dƒeee	                  fd„„Z@	 	 	 	 	 	 �dd/ee	         dTee	         dreee	                  d*eee	                  d?eee	                  d†eee	                  d{e	d+eee	                  dee	         fd‡„ZAd/ee	         dTee	         dreee	                  d*ee	         d?ee	         d+ee	         dˆed†ee	         d{e	dee	         fd‰„ZBd/ee	         dTee	         dreee	                  d*ee	         d?ee	         d+ee	         dˆed†ee	         d{e	dŠed‹edŒed�edee	         fdŽ„ZCd/ee	         dTeee	                  dreee	                  d�eee	                  d�eee	                  d‘ed’e
d“e
dŒefd”„ZDd/ee	         dTee	         dreee	                  d*ee	         d?ee	         d+ee	         d{e	fd•„ZE�dd!e	d—e	d˜efd™„ZFd/efdš„ZGdKee	         fd›„ZHd\ededœed�edžef
dŸ„ZId[ed\ededœed�edžefd „ZJd[ed\ed]ededœed�edžefd¡„ZKd/ee	         dOee	         fd¢„ZLd	ee	         d£ee	         d¤ee	         dee	         fd¥„ZMd/ee	         d¦e	d§e	fd¨„ZNd/ee	         fd©„ZOd/ee	         fdª„ZPd	ee	         d!e	d«efd¬„ZQ	 �dd	ee	         d!ee	         d«edee	         fd­„ZRd	ee	         dEee	         dee	         fd®„ZSd	ee	         dee	         fd¯„ZT�dd	ee	         d°e	d!e	deee	         ee	         f         fd±„ZUd	ee	         d²ee	         dTeee	                  d³e	deee	         ee	         f         f
d´„ZVd/ee	         dµee	         deee	         ee	         ee	         f         fd¶„ZWd/ee	         dTeee	                  dreee	                  d�eee	                  d�eee	                  d‘edeee	         ee	         ee	         f         fd·„ZXd/ee	         dTeee	                  dreee	                  d�eee	                  d�eee	                  deee	         ee	         ee	         ee	         f         fd¸„ZY	 	 	 	 �dd	ee	         d²ee	         dTeee	                  d³e	d»e	d¼e
dee	         fd½„ZZ	 ej[        j\        Z]i a^ee_e]f         e`d¾<   i Zaee_ee]e]f         f         e`d¿<   i Zbeee]f         e`dÀ<   dÁefdÂ„ZcdÃe_dÁefdÄ„ZddÃe_dÅedÆefdÇ„Ze eddÈe¦  «          eddÉe¦  «          eddÊe¦  «          eddËe¦  «          eddÌeG¦  «          eddÍeG¦  «          eddÎe¦  «          eddÏe¦  «          eddÐeI¦  «          eddÑeJ¦  «          eddÒeK¦  «          eddÓe(¦  «          eddÔe)¦  «          eddÕe*¦  «          eddÖe'¦  «          edd×e.¦  «          eddØe5¦  «          eddÙe+¦  «          eddÚe¦  «          eddÛe¦  «          eddÜe¦  «          eddÝe¦  «          eddÞe,¦  «          eddße$¦  «          eddàe%¦  «          eddáe&¦  «          eddâe6¦  «          eddãe9¦  «          eddäe!¦  «          eddåe"¦  «          eddæe7¦  «          eddçe8¦  «          eddèe>¦  «          eddée?¦  «          eddêeD¦  «          eddëeE¦  «          eddìe@¦  «          eddíeB¦  «          eddîeC¦  «          eddïeA¦  «          eddðeN¦  «          eddñe3¦  «          eddòe4¦  «          eddóeL¦  «          eddôeM¦  «          eddõe¦  «          eddöe¦  «          edd÷e¦  «          eddøe¦  «          eddùe¦  «          eddúe¦  «          eddûeG¦  «          eddüeG¦  «          eddýe:¦  «          eddþe#¦  «          eddÿe¦  «          ed�d e¦  «          ed�de¦  «          ed�de¦  «          ed�deR¦  «          ed�deS¦  «          ed�deT¦  «          ed�deU¦  «          ed�deV¦  «          ed�deW¦  «          ed�d	eX¦  «          ed�d
eX¦  «          ed�deX¦  «          ed�deY¦  «          ed�deZ¦  «          ed�de¦  «          ed�de¦  «          ed�de¦  «          ee�deOeP¦  «         dS (  é    N)ÚAnyÚCallableÚDictÚListÚOptionalÚTupleÚUnionÚaÚbc           	      óˆ  — t          | ¦  «        }t          |¦  «        }t          ||¦  «        }g }t          |¦  «        D ]�}|dz
  |z
  }|dz
  |z
  }|dz
  |z
  }	|dk    r| |         nd}
|	dk    r||	         nd}|
|k    r$|
dk    r|dk    rt          d|
› d|› d|› �¦  «        ‚|                     |
dk    r|n|
¦  «         Œ‚|S )Né   r   zThe size of tensor a z" must match the size of tensor b (z) at non-singleton dimension )ÚlenÚmaxÚrangeÚAssertionErrorÚappend)r
   r   ÚdimsAÚdimsBÚndimÚexpandedSizesÚiÚoffsetÚdimAÚdimBÚsizeAÚsizeBs               úKC:\Projects\Historical\venv\Lib\site-packages\torch/jit/_shape_functions.pyÚ	broadcastr      s  € Ý�‰FŒF€EÝ�‰FŒF€EÝˆu�eÑÔ€DØ!€Må�4‰[Œ[ð =ð =ˆØ˜‘˜A‘ˆØ�q‰y˜6Ñ!ˆØ�q‰y˜6Ñ!ˆØ  AšI˜I��$”�¨AˆØ  AšI˜I��$”�¨Aˆà�EŠ>ˆ>˜e qšj˜j¨U°aªZ¨Zå Øx¨ÐxÐxÐQVÐxÐxÐuvÐxÐxñô ð ð 	×Ò e¨q¢j j˜U˜U°eÑ<Ô<Ð<Ð<àÐó    Úcc                 ó>   — t          t          | |¦  «        |¦  «        S ©N©r   ©r
   r   r    s      r   Úbroadcast_threer%   3   s   € Ý•Y˜q !‘_”_ aÑ(Ô(Ð(r   c                 ó"   — t          | |¦  «        S r"   r#   r$   s      r   Úbroadcast_one_threer'   7   s   € Ý�Q˜‰?Œ?Ðr   ÚselfÚoutc                 ó�  — t          |¦  «        dk    sJ ‚t          | ¦  «        dk    st          | ¦  «        dk    sJ ‚t          dt          | ¦  «        ¦  «        D ]}| |         dk    sJ ‚Œg }t          dt          | ¦  «        dz
  ¦  «        D ]}|                     | |         ¦  «         Œ|D ]}|                     |¦  «         Œ|S )Né   é   é   r   r   )r   r   r   )r(   r)   r   ÚshapeÚelems        r   Úadaptive_avg_pool2dr0   ;   sÓ   € Ýˆs‰8Œ8�qŠ=ˆ=ˆ=ˆ=Ýˆt‰9Œ9˜Š>ˆ>�S ™YœY¨!š^˜^˜^Ð+Ý�1•c˜$‘i”iÑ Ô ð ð ˆØ�AŒw˜!Š|ˆ|ˆ|ˆ|ˆ|à€EÝ�1•c˜$‘i”i !‘mÑ$Ô$ð ð ˆØ�Š�T˜!”WÑÔÐÐØð ð ˆØ�Š�TÑÔÐÐØ€Lr   c                 ó>   — g }| D ]}|                      |¦  «         Œ|S r"   ©r   )r(   r)   r/   s      r   Ú_copyr3   I   s0   € Ø€CØð ð ˆØ�
Š
�4ÑÔÐÐØ€Jr   c                 ó    — t          | ¦  «        S r"   ©r3   ©r(   s    r   Úunaryr7   P   s   € Ý�‰;Œ;Ðr   c                 óX  — t          | ¦  «        }t          |¦  «        }||k    rt          d|› d|› d�¦  «        ‚t          |¦  «        D ]R}||z
  |z   }| |         }|dk    r||         nd}||k    r*|dk    r$t          d                     |||¦  «        ¦  «        ‚ŒSt	          | ¦  «        S )NzThe dims of tensor b (z5) must be less than or equal tothe dims of tensor a (z) r   r   zZThe size of tensor a {} must match the size of tensor b ({}) at non-singleton dimension {})r   r   r   Úformatr3   )r
   r   r   r   r   r   r   r   s           r   Úbroadcast_inplacer:   T   sÔ   € Ý�‰FŒF€EÝ�‰FŒF€EØˆu‚}€}ÝØj UÐjÐjÐafÐjÐjÐjñ
ô 
ð 	
õ �e‘”ð 	ð 	ˆØ�u‰}˜tÑ#ˆØ�$”ˆØ  AšI˜I��$”�¨AˆØ�EŠ>ˆ>˜e qšj˜jå ð4ß4:²F¸5À%ÈÑ4NÔ4Nñô ð øõ �‰8Œ8€Or   Úsizesc                 ó’  — t          |¦  «        t          | ¦  «        k    sJ ‚t          |¦  «        }t          | ¦  «        }|dk    rt          |¦  «        S g }t          |¦  «        D ]_}|dz
  |z
  }|dz
  |z
  }|dk    r| |         nd}||         }	|	dk    r
|dk    sJ ‚|}	||	k    r
|dk    sJ ‚|	}|                     |¦  «         Œ`|S )Nr   r   éÿÿÿÿ)r   r3   r   r   )
r(   r;   r   Ú
tensor_dimr)   r   r   ÚdimÚsizeÚ
targetSizes
             r   ÚexpandrB   h   sñ   € Ýˆu‰:Œ:�˜T™œÒ"Ð"Ð"Ð"Ýˆu‰:Œ:€DÝ�T‘”€JØˆq‚y€yÝ�U‰|Œ|ÐØ€CÝ�4‰[Œ[ð ð ˆØ˜‘˜A‘ˆØ˜1‰n˜vÑ%ˆØ 1šH˜Hˆt�CŒyˆy¨!ˆØ˜1”Xˆ
Ø˜ÒÐØ˜!’8�8�8�8ØˆJØ�:ÒÐØ˜1’9�9�9�9ØˆDØ�
Š
�4ÑÔÐÐØ€Jr   Úinp0c                 ó"   — t          | |¦  «        S r"   )rB   )r(   r;   rC   s      r   Úexpand_one_unusedrE   ~   s   € Ý�$˜ÑÔÐr   r.   ÚnumelÚreturnc                 óV  — d}d }t          t          | ¦  «        ¦  «        D ]H}| |         dk    r|�t          d¦  «        ‚|}Œ"| |         dk    r|| |         z  }Œ:t          d¦  «        ‚||k    s |�|dk    r	||z  dk    st          d¦  «        ‚t          | ¦  «        }|�||z  ||<   |S )Nr   r=   z"only one dimension can be inferredr   zinvalid shape dimensionszinvalid shape)r   r   r   r3   )r.   rF   ÚnewsizeÚ	infer_dimr?   r)   s         r   Úinfer_size_implrK   ‚   sÙ   € Ø€GØ#€IÝ•S˜‘Z”ZÑ Ô ð =ð =ˆØ�Œ:˜ÒÐØÐ$Ý$Ð%IÑJÔJÐJØˆIˆIØ�3ŒZ˜1Š_ˆ_Ø�u˜S”zÑ!ˆGˆGå Ð!;Ñ<Ô<Ð<à�ÒÐØÐ! g°¢k k°e¸g±oÈÒ6JÐ6Jå˜_Ñ-Ô-Ð-Ý
�‰,Œ,€CØÐØ 'Ñ)ˆˆI‰Ø€Jr   c                 ó   — d}| D ]}||z  }Œ|S ©Nr   © )r;   rF   r/   s      r   rF   rF   ™   s&   € Ø€EØð ð ˆØ�‰ˆˆØ€Lr   c                 ó<   — t          |t          | ¦  «        ¦  «        S r"   )rK   rF   )r(   r;   s     r   ÚviewrP       s   € Ý˜5¥%¨¡+¤+Ñ.Ô.Ð.r   F)ÚimplicitrQ   c                ó"   — t          | |¦  «        S r"   )rP   )r(   r;   rQ   s      r   Úview_one_unusedrS   ¤   s   € Ý��eÑÔÐr   Úopt_dimsÚkeep_dimÚdtc           	      óˆ  — g }|�t          |¦  «        dk    r*t          t          t          | ¦  «        ¦  «        ¦  «        }n|}t          t          | ¦  «        ¦  «        D ]a}d}|D ]%}|t          |t          | ¦  «        ¦  «        k    rd}Œ&|r|r|                     d¦  «         ŒF|                     | |         ¦  «         Œb|S )Nr   FTr   )r   Úlistr   Úmaybe_wrap_dimr   )	r(   rT   rU   rV   r)   ÚdimsÚidxÚis_mean_dimÚ
reduce_dims	            r   Úsum_mean_dimr^   ¨   sÑ   € ð €CØÐ�3˜x™=œ=¨AÒ-Ð-Ý�u¥S¨¡Y¤YÑ/Ô/Ñ0Ô0ˆˆàˆå•S˜‘Y”YÑÔð 	"ð 	"ˆØ!ˆØð 	#ð 	#ˆJØ•n Zµ°T±´Ñ;Ô;Ò;Ð;Ø"�øØð 	"Øð Ø—
’
˜1‘”�øà�JŠJ�t˜C”yÑ!Ô!Ð!Ð!Ø€Jr   r?   c                 ó0   — t          | |g|d ¦  «        }||fS r"   )r^   )r(   r?   rU   r)   s       r   Úmax_dimr`   ¾   s    € Ý
�t˜c˜U H¨dÑ
3Ô
3€CØ�ˆ8€Or   ÚxÚyc                 ó   — | |z  S r"   rN   )ra   rb   s     r   Údiv_rtnrd   Ä   s   € Ø�‰6€Mr   Ú	inputSizeÚ
kernelSizeÚpad_lÚpad_rÚstrideÚdilationÚ	ceil_modec                 ó�   — 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 ©Nr   r   )rd   )re   rf   rg   rh   ri   rj   rk   Ú
outputSizes           r   Úpooling_output_shape_pad_lrro   È   sž   € õ 	ØØñàñð ˜* q™.Ñ)ñ*ð ñ	ð
 'Ð-ˆv˜‰zˆz¨Añ/ð ñ	
ô 	
ð ñ		ð ð ð (Ø˜‰N˜fÑ$¨	°EÑ(9Ò9Ð9Ø# a™ˆJØÐr   c           	      óL   — |dk    s
J d¦   «         ‚t          | ||||||¦  «        S )Nr   zstride should not be zeero)ro   )re   rf   rg   ri   rj   rk   s         r   Úpooling_output_shaperq   ã   s9   € ð �QŠ;ˆ;ˆ;Ð4‰;Œ;ˆ;Ý&Ø�:˜u e¨V°X¸yñô ð r   ÚinputÚkHÚkWÚdHÚdWÚpadHÚpadWÚ	dilationHÚ	dilationWÚnInputPlaneÚinputHeightÚ
inputWidthÚoutputHeightÚoutputWidthc                 ó@  — t          | ¦  «        }|dk    r|dk    sJ ‚|dk    r|dk    sJ ‚|dk    r|dk    sJ ‚| d         dk    o| d         dk    }|dk    r| d         dk    r|s|dk    r|r| d         dk    sJ ‚|dz  |k    r	|dz  |k    sJ ‚|dk    r|dk    sJ ‚d S )Nr   r   r+   r,   r-   ©r   )rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   Ú
valid_dimss                   r   Úpool2d_shape_checkrƒ   ñ   sê   € õ  ˆu‰:Œ:€Dà�Š6ˆ6�b˜1’f�f�fÐØ�Š6ˆ6�b˜1’f�f�fÐØ�qŠ=ˆ=˜Y¨š]˜]˜]Ð*à�q”˜Q’Ð0 5¨¤8¨q¢=€Jà�Š	ˆ	Ø�!ŒH˜ŠMˆMØð à�AŠIˆI˜*ˆI¨¨q¬°Qª¨¨ð	8ð �‰7�dŠ?ˆ?˜r Q™w¨$š˜˜Ð.Ø˜!ÒÐ °Ò 1Ð 1Ð 1Ð1Ð 1Ð 1r   Úkernel_sizeÚpaddingc                 ó¦  — t          |¦  «        dk    st          |¦  «        dk    s
J d¦   «         ‚|d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    s0t          |¦  «        dk    st          |¦  «        dk    s
J d¦   «         ‚t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|}	nt          |¦  «        dk    r|}	n|d         }	t          |¦  «        dk    st          |¦  «        dk    s
J d¦   «         ‚|d         }
t          |¦  «        dk    r|
n|d         }t          |¦  «        dk    st          |¦  «        dk    s
J d¦   «         ‚|d         }t          |¦  «        dk    r|n|d         }t          | ¦  «        dk    st          | ¦  «        d	k    sJ ‚t          | ¦  «        d	k    r| d
         nd}| d         }| d         }| d         }t          |||
|||¦  «        }t          ||||	||¦  «        }t          | ||||	|
||||||||¦  «         t          | ¦  «        dk    r|||gS ||||gS )Nr   r+   zKmax_pool2d: kernel_size must either be a single int, or a tuple of two intsr   zOmax_pool2d: stride must either be omitted, a single int, or a tuple of two intszGmax_pool2d: padding must either be a single int, or a tuple of two intszHmax_pool2d: dilation must be either a single int, or a tuple of two intsr,   r-   éüÿÿÿéýÿÿÿéþÿÿÿr=   )r   rq   rƒ   )rr   r„   ri   r…   rj   rk   rs   rt   ru   rv   rw   rx   ry   rz   Únbatchr{   r|   r}   r~   r   s                       r   Ú
max_pool2dr‹     s   € õ 	ˆKÑÔ˜AÒÐ¥ [Ñ!1Ô!1°QÒ!6Ð!6Ð!6ØTñ "7Ô!6Ð6à	�QŒ€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€Bõ 	ˆF‰Œ�qÒÐ�C ™KœK¨1Ò,Ð,µ°F±´¸qÒ0@Ð0@Ð0@ØXñ 1AÔ0@Ð@å�6‰{Œ{˜aÒÐˆˆ V¨A¤Y€BÝ
ˆ6�{„{�aÒÐØˆˆÝ	ˆV‰Œ˜Ò	Ð	Øˆˆà�AŒYˆõ 	ˆG‰Œ˜ÒÐ�S ™\œ\¨QÒ.Ð.Ð.ØPñ /Ô.Ð.à�1Œ:€DÝ�w‘<”< 1Ò$Ð$ˆ4ˆ4¨'°!¬*€Dõ 	ˆH‰Œ˜ÒÐ�c (™mœm¨qÒ0Ð0Ð0ØQñ 1Ô0Ð0à˜”€IÝ  ™]œ]¨aÒ/Ð/�	�	°X¸a´[€Iåˆu‰:Œ:˜Š?ˆ?�c %™jœj¨Ašo˜o˜oÐ-å˜e™*œ*¨š/˜/ˆU�2ŒYˆY¨q€FØ˜”)€KØ˜”)€KØ�r”€Jå'¨°R¸¸rÀ9ÈiÑXÔX€LÝ& z°2°t¸RÀÈIÑVÔV€KåØØ
Ø
Ø
Ø
ØØØØØØØØØñô ð õ" ˆ5�z„z�Q‚€Ø˜\¨;Ð7Ð7à˜ \°;Ð?Ð?r   c                 ó2   — t          | |||||¦  «        }||fS r"   )r‹   )rr   r„   ri   r…   rj   rk   r)   s          r   Úmax_pool2d_with_indicesr�   Y  s%   € õ �U˜K¨°¸(ÀIÑ
NÔ
N€CØ�ˆ:Ðr   Úoutput_sizeÚscale_factorsc                 óN  — g }|                      | d         ¦  «         |                      | d         ¦  «         |€|€
J d¦   «         ‚|�W|�
J d¦   «         ‚t          |¦  «        dk    sJ ‚|                      |d         ¦  «         |                      |d         ¦  «         |�ƒ|�
J d¦   «         ‚t          |¦  «        dk    sJ ‚|                      t          | d         |d         z  ¦  «        ¦  «         |                      t          | d         |d         z  ¦  «        ¦  «         |S )Nr   r   z5Either output_size or scale_factors must be presentedz9Must specify exactly one of output_size and scale_factorsr+   r,   )r   r   Úint)rr   rŽ   r�   r)   s       r   Úupsample_nearest2dr’   e  s;  € ð
 €CØ‡J‚Jˆu�QŒxÑÔÐØ‡J‚Jˆu�QŒxÑÔÐàÐ Ð!4ØIÐIÑIÔIˆqàÐàÐ!Ð!ØFñ "Ô!Ð!å�;ÑÔ 1Ò$Ð$Ð$Ð$Ø�
Š
�;˜q”>Ñ"Ô"Ð"Ø�
Š
�;˜q”>Ñ"Ô"Ð"àÐ àÐÐØFñ  ÔÐå�=Ñ!Ô! QÒ&Ð&Ð&Ð&Ø�
Š
•3�u˜Q”x -°Ô"2Ñ2Ñ3Ô3Ñ4Ô4Ð4Ø�
Š
•3�u˜Q”x -°Ô"2Ñ2Ñ3Ô3Ñ4Ô4Ð4à€Jr   Úmat2c                 ó¾   — t          | ¦  «        dk    s
J d¦   «         ‚t          |¦  «        dk    s
J d¦   «         ‚| d         |d         k    sJ ‚| d         |d         gS )Nr+   zself must be a matrixzmat2 must be a matrixr   r   r�   ©r(   r“   s     r   Úmmr–   „  sb   € Ýˆt‰9Œ9˜Š>ˆ>ˆ>Ð2‰>Œ>ˆ>Ýˆt‰9Œ9˜Š>ˆ>ˆ>Ð2‰>Œ>ˆ>à�Œ7�d˜1”gÒÐÐÐØ�ŒG�T˜!”WÐÐr   Útensorc                 ó‚   — t          | ¦  «        dk    rt          |¦  «        dk    sJ ‚| d         |d         k    sJ ‚g }|S rm   r�   )r(   r—   r)   s      r   Údotr™   Œ  sJ   € Ýˆt‰9Œ9˜Š>ˆ>�c &™kœk¨QÒ.Ð.Ð.Ð.Ø�Œ7�f˜Q”iÒÐÐÐØ€CØ€Jr   Úvecc                 óŒ   — t          | ¦  «        dk    rt          |¦  «        dk    sJ ‚| d         |d         k    sJ ‚| d         gS ©Nr+   r   r   r�   )r(   rš   s     r   Úmvr�   “  sI   € Ýˆt‰9Œ9˜Š>ˆ>�c #™hœh¨!šm˜m˜mÐ+Ø�Œ7�c˜!”fÒÐÐÐà�ŒGˆ9Ðr   Úlic                 ó�   — t          |t          | ¦  «        dz   ¦  «        }t          | ¦  «        }|                     |d¦  «         |S rM   )rY   r   r3   Úinsert)rž   r?   r)   s      r   Ú	unsqueezer¡   š  s?   € Ý
˜�c "™gœg¨™kÑ
*Ô
*€CÝ
�‰)Œ)€CØ‡J‚Jˆs�AÑÔÐØ€Jr   c                 ó–   — g }t          t          | ¦  «        ¦  «        D ])}| |         dk    r|                     | |         ¦  «         Œ*|S rM   )r   r   r   )rž   r)   r   s      r   Úsqueeze_nodimr£   ¡  sK   € Ø€CÝ•3�r‘7”7‰^Œ^ð ð ˆØˆaŒ5�AŠ:ˆ:Ø�JŠJ�r˜!”uÑÔÐøØ€Jr   c                 ó  — g }t          |t          | ¦  «        ¦  «        }t          t          | ¦  «        ¦  «        D ]K}||k    r(| |         dk    r|                     | |         ¦  «         Œ0|                     | |         ¦  «         ŒL|S rM   )rY   r   r   r   )rž   r?   r)   Úwrapped_dimr   s        r   Úsqueezer¦   ©  s„   € Ø€CÝ  ¥c¨"¡g¤gÑ.Ô.€KÝ•3�r‘7”7‰^Œ^ð ð ˆØ�ÒÐØ�!Œu˜ŠzˆzØ—
’
˜2˜aœ5Ñ!Ô!Ð!øà�JŠJ�r˜!”uÑÔÐÐØ€Jr   rZ   c                 ó¨  — t          |¦  «        dk    r| S t          |¦  «        }t          t          |¦  «        ¦  «        D ](}t          ||         t          | ¦  «        ¦  «        ||<   Œ)g }t          t          | ¦  «        ¦  «        D ]I}| |         dk    r ||vr|                     | |         ¦  «         Œ.|                     | |         ¦  «         ŒJ|S ©Nr   r   )r   r3   r   rY   r   )rž   rZ   Úwrapped_dimsr   Úresults        r   Úsqueeze_dimsr«   µ  sÌ   € Ý
ˆ4�y„y�A‚~€~Øˆ	Ý˜‘;”;€LÝ•3�t‘9”9ÑÔð Cð CˆÝ(¨°a¬½#¸b¹'¼'ÑBÔBˆ�Q‰ˆØ€FÝ•3�r‘7”7‰^Œ^ð !ð !ˆØˆaŒ5�AŠ:ˆ:Ø˜Ð$Ð$Ø—’˜b œeÑ$Ô$Ð$øà�MŠM˜"˜Qœ%Ñ Ô Ð Ð Ø€Mr   Úindexc                 ón  — t          |t          | ¦  «        ¦  «        }t          |¦  «        }t          |¦  «        dk    sJ ‚|dk    s|t          | ¦  «        k     sJ ‚g }t          t          | ¦  «        ¦  «        D ]9}||k    r|                     |¦  «         Œ|                     | |         ¦  «         Œ:|S rm   )rY   r   Úmultiply_integersr   r   )r(   r?   r¬   rF   Úresult_sizer   s         r   Úindex_selectr°   Å  s¶   € Ý
˜�c $™iœiÑ
(Ô
(€CÝ˜eÑ$Ô$€EÝˆu‰:Œ:˜Š?ˆ?ˆ?ˆ?Ø�!Š8ˆ8�s�S ™YœY’��Ð&Ø€KÝ•3�t‘9”9ÑÔð (ð (ˆØ�!Š8ˆ8Ø×Ò˜uÑ%Ô%Ð%Ð%à×Ò˜t AœwÑ'Ô'Ð'Ð'ØÐr   r=   ÚweightÚindicesÚpadding_idxÚscale_grad_by_freqÚsparsec                 óÌ   — t          | ¦  «        dk    sJ ‚t          |¦  «        dk    rt          | d|¦  «        S t          |¦  «        }|                     | d         ¦  «         |S rœ   )r   r°   r3   r   )r±   r²   r³   r´   rµ   r@   s         r   Ú	embeddingr·   Ó  sd   € õ ˆv‰;Œ;˜!ÒÐÐÐÝ
ˆ7�|„|�qÒÐÝ˜F A wÑ/Ô/Ð/Ý�‰>Œ>€DØ‡K‚K��q”	ÑÔÐØ€Kr   c                  ó   — dS )Nl   ÿÿÿÿ rN   rN   r   r   Úmax_intr¹   â  s   € ØÐr   ÚstartÚendÚstepc                 ó¸  — t          | ¦  «        }|dk    sJ ‚t          ||¦  «        }|�|nd}|�|nt          ¦   «         }|dk    sJ ‚|t          ¦   «         k    rd}|dk     r|| |         z  }|dk     r|| |         z  }|dk     rd}n|| |         k    r| |         }||k     r|}n|| |         k    r| |         }||z
  }t          | ¦  «        }	||z   dz
  |z  |	|<   |	S r¨   )r   rY   r¹   r3   )
r(   r?   rº   r»   r¼   r   Ú	start_valÚend_valÚ	slice_lenr)   s
             r   ÚslicerÁ   æ  s  € õ ˆt‰9Œ9€DØ�1Š9ˆ9ˆ9ˆ9Ý
˜˜dÑ
#Ô
#€CØÐ*��°€IØ�_ˆcˆc­'©)¬)€GØ�!Š8ˆ8ˆ8ˆ8Ø•G‘I”IÒÐØˆ	Ø�1‚}€}Ø�T˜#”YÑˆ	Ø�‚{€{Ø�4˜”9ÑˆØ�1‚}€}Øˆ	ˆ	Ø	�T˜#”YÒ	Ð	Ø˜”Iˆ	Ø�ÒÐØˆˆØ	�D˜”IÒ	Ð	Ø�s”)ˆØ˜)Ñ#€IÝ
�‰+Œ+€CØ˜DÑ  1Ñ$¨Ñ-€Cˆ�HØ€Jr   Útensorsc                 ó:   — | D ]}t          |¦  «        dk    sJ ‚Œd S ©Nr   r�   )rÂ   r—   s     r   Úcheck_cat_no_zero_dimrÅ     s0   € Øð ð ˆÝ�6‰{Œ{˜QŠˆˆˆˆðð r   Útensor_sizesc                 ó˜   — d }|D ]@}t          |¦  «        dk    r|d         dk    s|€t          | t          |¦  «        ¦  «        }ŒA|€| }|S rm   )r   rY   )r?   rÆ   Úout_dimr@   s       r   Úlegacy_cat_wrap_dimrÉ     s[   € Ø!€GØð 9ð 9ˆÝ�D‘	”	˜Q’� 4¨¤7¨a¢< <ØˆÝ(¨­c°$©i¬iÑ8Ô8�øØ€ØˆØ€Nr   c                 óN   — t          | ¦  «        dk    ot          | ¦  «        dk    S r¨   ©rF   r   )r—   s    r   Úshould_skiprÌ     s#   € Ý�‰=Œ=˜AÒÐ2¥# f¡+¤+°Ò"2Ð2r   ÚfirstÚsecondÚ	dimensionc                 óÌ   — t          | ¦  «        }t          |¦  «        }||k    s
J d¦   «         ‚t          d|¦  «        D ]$}||k    r| |         ||         k    s
J d¦   «         ‚Œ%d S )Nz+Tensors must have same number of dimensionsr   z/Sizes of tensors must match except in dimension)r   r   )rÍ   rÎ   rÏ   r¬   Ú
first_dimsÚsecond_dimsr?   s          r   Úcheck_cat_shape_except_dimrÓ     s‹   € õ �U‘”€JÝ�f‘+”+€KØ˜Ò$Ð$Ð$Ð&SÑ$Ô$Ð$Ý�Q˜
Ñ#Ô#ð Að AˆØ�)ÒÐà�c”
˜f SœkÒ)Ð)Ð)Ø@ñ *Ô)Ð)øðAð Ar   c                 óz  — t          | ¦  «         t          || ¦  «        }t          | ¦  «        dk    sJ ‚d }| D ]}t          |¦  «        s|}Œ|€dgS d}t	          t          | ¦  «        ¦  «        D ]6}| |         }t          |¦  «        st          ||||¦  «         |||         z   }Œ7t          |¦  «        }|||<   |S rÄ   )rÅ   rÉ   r   rÌ   r   rÓ   r3   )rÂ   r?   Únot_skipped_tensorr—   Úcat_dim_sizer   r¯   s          r   Úcatr×   $  sì   € Ý˜'Ñ"Ô"Ð"Ý
˜c 7Ñ
+Ô
+€CÝˆw‰<Œ<˜!ÒÐÐÐØ.2ÐØð (ð (ˆÝ˜6Ñ"Ô"ð 	(Ø!'ÐøØÐ!Øˆsˆ
à€Lå•3�w‘<”<Ñ Ô ð 6ð 6ˆØ˜”ˆÝ˜6Ñ"Ô"ð 	6Ý&Ð'9¸6À3ÈÑJÔJÐJØ'¨&°¬+Ñ5ˆLøåÐ*Ñ+Ô+€KØ#€K�ÑØÐr   c                 óz   — g }| D ]'}t          ||¦  «        }|                     |¦  «         Œ(t          ||¦  «        S r"   )r¡   r   r×   )rÂ   r?   Úunsqueezed_tensorsr—   Ú
unsqueezeds        r   ÚstackrÛ   <  sN   € Ø*,ÐØð .ð .ˆÝ˜v sÑ+Ô+ˆ
Ø×!Ò! *Ñ-Ô-Ð-Ð-ÝÐ! 3Ñ'Ô'Ð'r   c                 ó  — t          | ¦  «        }|dk    sJ ‚t          ||¦  «        }| |         }|| k     s||k    rJ ‚|dk     r||z  }g }t          |¦  «        D ]#}||k    r|                     | |         ¦  «         Œ$|S rÄ   )r   rY   r   r   )r(   r?   r¬   r   r@   r)   r   s          r   ÚselectrÝ   D  s›   € Ýˆt‰9Œ9€DØ�1Š9ˆ9ˆ9ˆ9Ý
˜˜dÑ
#Ô
#€CØ�Œ9€DØ˜˜’� ¨$¢  Ð/Øˆq‚y€yØ�‰ˆØ€CÝ�4‰[Œ[ð  ð  ˆØ�Š8ˆ8Ø�JŠJ�t˜A”wÑÔÐøØ€Jr   Útensor1Útensor2c                 ó  — t          | ¦  «        }t          |¦  «        }|dk    r|dk    rt          | |¦  «        S |dk    r|dk    rt          | |¦  «        S |dk    r2|dk    r,t          t	          t          | d¦  «        |¦  «        d¦  «        S |dk    r|dk    rt	          | |¦  «        S |dk    rÌ|dk    rÆ|dk    r| d         nd}g }t          |dz
  ¦  «        D ]}|                     | |         ¦  «         Œ|d         }g }t          |dz
  ¦  «        D ]}|                     ||         ¦  «         Œt          ||¦  «        }	|	}
|dk    r|
                     |¦  «         |dk    r|
                     |¦  «         |
S J d¦   «         ‚)Nr   r+   r   r‰   r=   Fz0both  arguments to matmul need to be at least 1D)	r   r™   r�   r¦   r–   r¡   r   r   r   )rÞ   rß   Údim_tensor1Údim_tensor2ÚnÚbatch_tensor1r   ÚpÚbatch_tensor2Úexpand_batch_portionÚoutput_shapes              r   Úmatmulré   S  sÒ  € Ý�g‘,”,€KÝ�g‘,”,€KØ�aÒÐ˜K¨1Ò,Ð,Ý�7˜GÑ$Ô$Ð$Ø	˜Ò	Ð	˜k¨QÒ.Ð.Ý�'˜7Ñ#Ô#Ð#Ø	˜Ò	Ð	˜k¨QÒ.Ð.Ý•r�) G¨QÑ/Ô/°Ñ9Ô9¸1Ñ=Ô=Ð=Ø	˜Ò	Ð	˜k¨QÒ.Ð.Ý�'˜7Ñ#Ô#Ð#Ø	˜Ò	Ð	˜k¨QÒ.Ð.ð '¨š?˜?ˆG�BŒKˆK°ˆØ#%ˆå�{ Q‘Ñ'Ô'ð 	-ð 	-ˆAØ× Ò  ¨¤Ñ,Ô,Ð,Ð,Ø�BŒKˆØ#%ˆå�{ Q‘Ñ'Ô'ð 	-ð 	-ˆAØ× Ò  ¨¤Ñ,Ô,Ð,Ð,õ  )¨¸ÑFÔFÐð ,ˆØ˜Š?ˆ?Ø×Ò Ñ"Ô"Ð"à˜Š?ˆ?Ø×Ò Ñ"Ô"Ð"àÐàHÐHÑHÔHˆur   c                 óœ   — t          | ¦  «        dk    sJ ‚t          | ¦  «        }|dk    rg }|S |dk    r	| d         gS | d         | d         gS )Nr+   r   r   r�   )r(   Úself_lenr)   s      r   Útrì   |  s[   € Ýˆt‰9Œ9˜Š>ˆ>ˆ>ˆ>Ý�4‰yŒy€HØ�1‚}€}ØˆØˆ
Ø	�QŠˆØ�Q”ˆyÐà�Q”˜˜aœÐ!Ð!r   Údim0Údim1c                 ót  — t          | ¦  «        }t          ||¦  «        }t          ||¦  «        }||k    rt          | ¦  «        S g }t          |¦  «        D ]a}||k    r|                     | |         ¦  «         Œ$||k    r|                     | |         ¦  «         ŒF|                     | |         ¦  «         Œb|S r"   )r   rY   r3   r   r   )r(   rí   rî   Úndimsr)   r   s         r   Ú	transposerñ   ˆ  s¼   € Ý�‰IŒI€EÝ˜$ Ñ&Ô&€DÝ˜$ Ñ&Ô&€DØˆt‚|€|Ý�T‰{Œ{ÐØ€CÝ�5‰\Œ\ð  ð  ˆØ�Š9ˆ9Ø�JŠJ�t˜D”zÑ"Ô"Ð"Ð"Ø�$ŠYˆYØ�JŠJ�t˜D”zÑ"Ô"Ð"Ð"à�JŠJ�t˜A”wÑÔÐÐØ€Jr   Úbiasc                 óp   — t          | t          |¦  «        ¦  «        }|�t          ||¦  «        |k    sJ ‚|S r"   )ré   rì   r   )rr   r±   rò   r)   s       r   Úlinearrô   ™  s=   € Ý
��˜&™	œ	Ñ
"Ô
"€CØÐÝ˜˜sÑ#Ô# sÒ*Ð*Ð*Ð*Ø€Jr   Úmat1ÚbetaÚalphac                 ó>   — t          | t          ||¦  «        ¦  «        S r"   )r   r–   )r(   rõ   r“   rö   r÷   s        r   Úaddmmrù      s   € Ý�T�2˜d D™>œ>Ñ*Ô*Ð*r   Úarrayc                 ó$   — d}| D ]
}|dk     rd}Œ|S )NFr   TrN   )rú   Únon_negativeÚvals      r   Úcheck_non_negativerþ   ¤  s+   € à€LØð  ð  ˆØ�Š7ˆ7ØˆLøØÐr   Úweight_sizesÚgroupsc                 óä  — t          | ¦  «        }t          |¦  «        }t          |¦  «        rJ ‚t          |¦  «        rJ ‚||k    sJ ‚|d         |k    sJ ‚|d         |z  dk    sJ ‚| d         |d         |z  k    sJ ‚|�'t          |¦  «        dk    r|d         |d         k    sJ ‚t          d|¦  «        D ]7}	| |	         d||	dz
           z  z   ||	dz
           ||	         dz
  z  dz   k    sJ ‚Œ8d S ©Nr   r   r+   )r   rþ   r   )
rr   rÿ   rò   ri   r…   rj   r   ÚkÚ
weight_dimr   s
             r   Úcheck_shape_forwardr  ­  s<  € õ 	ˆE‰
Œ
€AÝ�\Ñ"Ô"€Jõ " 'Ñ*Ô*Ð*Ð*Ð*Ý! &Ñ)Ô)Ð)Ð)Ð)à˜Š?ˆ?ˆ?ˆ?Ø˜Œ?˜fÒ$Ð$Ð$Ð$Ø˜ŒO˜fÑ$¨Ò*Ð*Ð*Ð*à�Œ8�| A”¨Ñ/Ò/Ð/Ð/Ð/Øˆ<�C ™IœI¨šN˜N¨t°A¬w¸,Àq¼/Ò/IÐ/IÐ/IÐJå�1�a‰[Œ[ð 
ð 
ˆØ�a”˜1˜w q¨1¡uœ~Ñ-Ñ-Ø�Q˜‘UŒO˜|¨Aœ°Ñ2Ñ3°aÑ7ò
ð 
ð 
ð 
ð 
ð
ð 
r   Ú
input_sizeÚweight_sizec           	      óÊ  — t          | ||||||¦  «         t          |¦  «        dk    }t          | ¦  «        }g }	d}
d}|	                     | |
         ¦  «         |	                     ||         ¦  «         t          d|¦  «        D ]^}|r||dz
           nd}|||         dz
  z  dz   }|	                     | |         d||dz
           z  z   |z
  ||dz
           z  dz   ¦  «         Œ_|	S )Nr   r+   r   )r  r   r   r   )r  r  rò   ri   r…   rj   r   Úhas_dilationr?   rŽ   Úinput_batch_size_dimÚweight_output_channels_dimÚdÚ	dilation_Úkernels                  r   Úconv_output_sizer  Ì  s!  € õ Ø�K  v¨w¸À&ñô ð õ �x‘=”= 1Ò$€LÝ
ˆj‰/Œ/€CØ€KØÐØ!"ÐØ×Ò�zÐ"6Ô7Ñ8Ô8Ð8Ø×Ò�{Ð#=Ô>Ñ?Ô?Ð?å�1�c‰]Œ]ð 
ð 
ˆØ'3Ð:�H˜Q ™U”O�O¸ˆ	Ø˜k¨!œn¨qÑ0Ñ1°AÑ5ˆØ×ÒØ˜Œ]˜a '¨!¨a©%¤.Ñ0Ñ1°FÑ:¸vÀaÈ!Áe¼}ÑLÈqÑPñ	
ô 	
ð 	
ð 	
ð Ðr   c           	      ó€   — t          |¦  «        dk    sJ ‚t          | ¦  «        dk    sJ ‚t          | ||||||¦  «        S )Nr,   ©r   r  ©rr   r±   rò   ri   r…   rj   r   s          r   Úconv1dr  ê  óH   € õ ˆv‰;Œ;˜!ÒÐÐÐÝˆu‰:Œ:˜Š?ˆ?ˆ?ˆ?Ý˜E 6¨4°¸À(ÈFÑSÔSÐSr   c           	      ó€   — t          |¦  «        dk    sJ ‚t          | ¦  «        dk    sJ ‚t          | ||||||¦  «        S )Nr-   r  r  s          r   Úconv2dr  ø  r  r   Úgrad_outputÚbiasesc                 óN   — t          |¦  «        t          |¦  «        | d         gfS rM   r5   )r  rr   r±   r  s       r   Úconv_backwardsr    s$   € õ �‰<Œ<�˜v™œ¨°Q¬Ð(8Ð8Ð8r   r   Úoutput_paddingc                 óî  — |€ddg}|€ddg}|€ddg}|€ddg}t          |¦  «        dk    }t          | ¦  «        }	g }
d}d}|
                     | |         ¦  «         |
                     ||         |z  ¦  «         t          d|	¦  «        D ]j}|r||dz
           nd}|||         dz
  z  }|
                     | |         dz
  ||dz
           z  d||dz
           z  z
  |z   ||dz
           z   dz   ¦  «         Œk|
S )Nr   r   r+   ©r   r   r   )rr   r±   rò   ri   r…   r  r   rj   r	  r?   rŽ   r
  r  r  r  r  s                   r   Úconv_transpose2d_inputr    sY  € ð €~Ø�Q�ˆØ€Ø�a�&ˆØÐØ˜Q˜ˆØÐØ�q�6ˆÝ�x‘=”= 1Ò$€LÝ
ˆe‰*Œ*€CØ€KØÐØ!"ÐØ×Ò�uÐ1Ô2Ñ3Ô3Ð3Ø×Ò�vÐ8Ô9¸FÑBÑCÔCÐCå�1�c‰]Œ]ð 	
ð 	
ˆØ'3Ð:�H˜Q ™U”O�O¸ˆ	Ø˜f Qœi¨!™mÑ,ˆØ×ÒØ�1ŒX˜‰\˜V A¨¡Eœ]Ñ*Ø�'˜!˜a™%”.Ñ ñ!àñð ˜Q ™UÔ#ñ$ð ñ	ñ	
ô 	
ð 	
ð 	
ð Ðr   Ú
transposedc	                 óÔ  — t          |¦  «        dk    }	t          |¦  «        dk    }
t          | ¦  «        }g }d}|rdnd}|                     | |         ¦  «         |r|                     ||         |z  ¦  «         n|                     ||         ¦  «         t          d|¦  «        D ]À}|	r||dz
           nd}|
r||dz
           nd}|rQ|||         dz
  z  }|                     | |         dz
  ||dz
           z  d||dz
           z  z
  |z   |z   dz   ¦  «         Œs|||         dz
  z  dz   }|                     | |         d||dz
           z  z   |z
  ||dz
           z  dz   ¦  «         ŒÁ|S r  r  )rr   r±   rò   ri   r…   rj   r  r  r   r	  Úhas_output_paddingr?   rŽ   r
  r  r  r  Úoutput_padding_r  s                      r   Úconv_forwardsr#  7  sÝ  € õ �x‘=”= 1Ò$€LÝ˜^Ñ,Ô,¨qÒ0ÐÝ
ˆe‰*Œ*€CØ€KØÐØ&0Ð!7  °aÐØ×Ò�uÐ1Ô2Ñ3Ô3Ð3Øð ?Ø×Ò˜6Ð"<Ô=ÀÑFÑGÔGÐGÐGà×Ò˜6Ð"<Ô=Ñ>Ô>Ð>å�1�c‰]Œ]ð ð ˆØ'3Ð:�H˜Q ™U”O�O¸ˆ	Ø3EÐL˜.¨¨Q©Ô/Ð/È1ˆØð 	Ø &¨¤)¨a¡-Ñ0ˆFØ×ÒØ�q”˜A‘ ¨¨A©¤Ñ.Ø�g˜a !™e”nÑ$ñ%àñð "ñ"ð ñ	ñô ð ð ð  &¨¤)¨a¡-Ñ0°1Ñ4ˆFØ×ÒØ�q”˜Q ¨¨Q©¤Ñ/Ñ0°6Ñ9¸fÀQÈÁU¼mÑKÈaÑOñô ð ð ð Ðr   Ú	benchmarkÚdeterministicÚcudnn_enabledÚ
allow_tf32c                 ó0   — t          | ||||||||¦	  «	        S r"   )r#  )rr   r±   rò   ri   r…   rj   r  r  r   r$  r%  r&  r'  s                r   Ú_conv_forwardsr)  b  s1   € õ ØØØØØØØØØñ
ô 
ð 
r   Úrunning_meanÚrunning_varÚtrainingÚmomentumÚepsc	                 ó>   — g }	| D ]}
|	                      |
¦  «         Œ|	S r"   r2   )rr   r±   rò   r*  r+  r,  r-  r.  r&  r)   r/   s              r   Ú
batch_normr0  ~  s2   € ð €CØð ð ˆØ�
Š
�4ÑÔÐÐØ€Jr   c           	      ó€   — t          |¦  «        dk    sJ ‚t          | ¦  «        dk    sJ ‚t          | ||||||¦  «        S )Né   r  r  s          r   Úconv3dr3  �  r  r   TÚdim_post_exprÚwrap_scalarc                 ó`   — |dk    r|sJ ‚d}| }|dz
  }| |k     s| |k    rJ ‚| dk     r| |z  } | S r¨   rN   )r?   r4  r5  Úminr   s        r   rY   rY   �  s\   € Ø˜ÒÐØÐÐˆ{ØˆØˆ.€CØ
˜!Ñ
€CØ�c’	�	˜S 3šY˜Y˜YÐ'Ø
ˆQ‚w€wØˆ}ÑˆØ€Jr   c                 ó
   — g }|S r"   rN   )rr   r)   s     r   Úzero_dim_tensorr9  ©  s   € Ø€CØ€Jr   c                 ó   — d}| D ]}||z  }Œ|S rM   rN   )rž   r)   r/   s      r   r®   r®   ®  s&   € Ø
€CØð ð ˆØ�D‰jˆˆØ€Jr   Úinp1Úinp2Úinp3c                 óV   — | dk    sJ ‚t          t          j        | ¦  «        ¦  «        gS rÄ   ©r‘   ÚmathÚceil)r»   rC   r;  r<  r=  s        r   Ú
arange_endrB  µ  s(   € Ø�!Š8ˆ8ˆ8ˆ8Ý•”	˜#‘”ÑÔÐ Ð r   c                 ól   — |dk    sJ ‚|| k    sJ ‚t          t          j        || z
  ¦  «        ¦  «        gS rÄ   r?  )rº   r»   rC   r;  r<  r=  s         r   Úarange_startrD  º  s=   € ð �!Š8ˆ8ˆ8ˆ8Ø�%Š<ˆ<ˆ<ˆ<Ý•”	˜# ™+Ñ&Ô&Ñ'Ô'Ð(Ð(r   c                 ó�   — |dk    sJ ‚|dk     r	| |k    sJ ‚n|| k    sJ ‚t          t          j        || z
  |z  ¦  «        ¦  «        gS rÄ   r?  )rº   r»   r¼   rC   r;  r<  r=  s          r   Úarange_start_steprF  Â  sZ   € ð �1Š9ˆ9ˆ9ˆ9Øˆa‚x€xØ˜Š|ˆ|ˆ|ˆ|ˆ|à�eŠ|ˆ|ˆ|ˆ|Ý•”	˜3 ™;¨$Ñ.Ñ/Ô/Ñ0Ô0Ð1Ð1r   c                 ó’  — t          | ¦  «        t          |¦  «        k    sJ ‚t          |¦  «        }g }g }t          |¦  «        D ]H}t          ||         |¦  «        }|                     |¦  «         |                     | |         ¦  «         ŒIt          d|¦  «        D ](}t          |¦  «        D ]}||         ||         k    sJ ‚ŒŒ)|S rM   )r   r   rY   r   )rr   rZ   r   Ú	seen_dimsÚnewSizesr   r?   Újs           r   ÚpermuterK  Í  sÛ   € Ýˆu‰:Œ:�˜T™œÒ"Ð"Ð"Ð"Ýˆt‰9Œ9€DØ€IØ€HÝ�4‰[Œ[ð $ð $ˆÝ˜T !œW dÑ+Ô+ˆØ×Ò˜ÑÔÐØ�Š˜˜cœ
Ñ#Ô#Ð#Ð#Ý�1�d‰^Œ^ð 0ð 0ˆÝ�q‘”ð 	0ð 	0ˆAØ˜Q”< 9¨Q¤<Ò/Ð/Ð/Ð/Ð/ð	0à€Or   ÚsourceÚdestinationc                 óN  — t          | ¦  «        }|dk    r| S g }g }t          t          |¦  «        ¦  «        D ]T}|                     t          ||         |¦  «        ¦  «         |                     t          ||         |¦  «        ¦  «         ŒUd„ t          |¦  «        D ¦   «         }d„ t          |¦  «        D ¦   «         }d„ t          |¦  «        D ¦   «         }	t          t          |¦  «        ¦  «        D ])}||         |||         <   d|||         <   d|	||         <   Œ*g }
g }|D ]}|dk    r|
                     |¦  «         Œ|	D ]}|dk    r|                     |¦  «         Œ|t          |¦  «        z
  }t          |¦  «        D ]}|
|         |||         <   Œt	          | |¦  «        S )Nr   c                 ó   — g | ]}d ‘ŒS ©r=   rN   ©Ú.0r   s     r   ú
<listcomp>zmovedim.<locals>.<listcomp>å  s   € Ð)Ð)Ð)�AˆRÐ)Ð)Ð)r   c                 ó   — g | ]}|‘ŒS rN   rN   rQ  s     r   rS  zmovedim.<locals>.<listcomp>æ  ó   € Ð+Ð+Ð+�a�Ð+Ð+Ð+r   c                 ó   — g | ]}|‘ŒS rN   rN   rQ  s     r   rS  zmovedim.<locals>.<listcomp>ç  rU  r   r=   )r   r   r   rY   rK  )r(   rL  rM  Úself_dimÚnormalized_srcÚnormalized_dstr   ÚorderÚsrc_dimsÚdst_dimsÚsource_dimsÚdestination_dimsÚeleÚrest_dims                 r   Úmovedimra  Ü  sÙ  € Ý�4‰yŒy€HØ�1‚}€}ØˆØ "€NØ "€NÝ•3�v‘;”;ÑÔð Hð HˆØ×Ò�n¨V°A¬Y¸ÑAÔAÑBÔBÐBØ×Ò�n¨[¸¬^¸XÑFÔFÑGÔGÐGÐGØ)Ð)�˜x™œÐ)Ñ)Ô)€EØ+Ð+�5 ™?œ?Ð+Ñ+Ô+€HØ+Ð+�5 ™?œ?Ð+Ñ+Ô+€Hå•3�v‘;”;ÑÔð )ð )ˆØ#1°!Ô#4ˆˆn˜QÔÑ Ø&(ˆ� Ô"Ñ#Ø&(ˆ� Ô"Ñ#Ð#à€KØ"$ÐØð $ð $ˆØ�"Š9ˆ9Ø×Ò˜sÑ#Ô#Ð#øØð )ð )ˆØ�"Š9ˆ9Ø×#Ò# CÑ(Ô(Ð(øà�#˜f™+œ+Ñ%€HÝ�8‰_Œ_ð 4ð 4ˆØ%0°¤^ˆÐ˜qÔ!Ñ"Ð"Ý�4˜ÑÔÐr   Ú	start_dimÚend_dimc                 óH  — t          |t          | ¦  «        ¦  «        }t          |t          | ¦  «        ¦  «        }||k    sJ ‚t          | ¦  «        dk    rdgS ||k    rg }| D ]}|                     |¦  «         Œ|S d}t          ||dz   ¦  «        D ]}|| |         z  }Œg }t          |¦  «        D ]}|                     | |         ¦  «         Œ|                     |¦  «         t          |dz   t          | ¦  «        ¦  «        D ]}|                     | |         ¦  «         Œ|S r¨   )rY   r   r   r   )rr   rb  rc  r)   r/   Úslice_numelr   r.   s           r   Úflattenrf  ý  sH  € Ý˜y­#¨e©*¬*Ñ5Ô5€IÝ˜W¥c¨%¡j¤jÑ1Ô1€GØ˜ÒÐÐÐÝ
ˆ5�z„z�Q‚€Øˆsˆ
Ø�GÒÐàˆØð 	ð 	ˆDØ�JŠJ�tÑÔÐÐØˆ
Ø€KÝ�9˜g¨™kÑ*Ô*ð  ð  ˆØ�u˜Q”xÑˆˆð €EÝ�9ÑÔð ð ˆØ�Š�U˜1”XÑÔÐÐØ	‡L‚L�ÑÔÐÝ�7˜Q‘;¥ E¡
¤
Ñ+Ô+ð ð ˆØ�Š�U˜1”XÑÔÐÐØ€Lr   c                 ó$   — dt          | ¦  «        gS rÄ   r�   ©rr   s    r   Únonzero_lower_boundri    s   € Ø�s�5‰zŒzˆ?Ðr   c                 ó>   — t          | ¦  «        t          | ¦  «        gS r"   rË   rh  s    r   Únonzero_upper_boundrk    s   € Ý�%‰LŒL�#˜e™*œ*Ð%Ð%r   Úkeepdimc                 óÔ   — t          |t          | ¦  «        ¦  «        }g }t          | ¦  «        D ]8\  }}||k    r|r|                     d¦  «         Œ#|                     |¦  «         Œ9|S rM   )rY   r   Ú	enumerater   )r(   r?   rl  r)   r   rW  s         r   Ú_reduce_along_dimro    sp   € Ý
˜�c $™iœiÑ
(Ô
(€CØ€CÝ  ‘”ð !ð !‰ˆˆ8Ø�Š8ˆ8Øð Ø—
’
˜1‘”�øà�JŠJ�xÑ Ô Ð Ð Ø€Jr   c                 ó,   — |€g S t          | ||¦  «        S r"   )ro  )r(   r?   rl  s      r   Úargmaxrq  +  s    € ð €{Øˆ	Ý˜T 3¨Ñ0Ô0Ð0r   c                 ó  — t          | ¦  «        dk    s
J d¦   «         ‚t          |¦  «        dk    s
J d¦   «         ‚| d         |d         k    s
J d¦   «         ‚| d         |d         k    s
J d¦   «         ‚| d         | d         |d         gS )Nr,   zbmm only supports 3D tensorsr   zmismatching batch dimensionr+   r   z!mismatching contracting dimensionr�   r•   s     r   Úbmmrs  3  s“   € Ýˆt‰9Œ9˜Š>ˆ>ˆ>Ð9‰>Œ>ˆ>Ýˆt‰9Œ9˜Š>ˆ>ˆ>Ð9‰>Œ>ˆ>Ø�Œ7�d˜1”gÒÐÐÐ<ÑÔÐØ�Œ7�d˜1”gÒÐÐÐBÑÔÐØ�ŒG�T˜!”W˜d 1œgÐ&Ð&r   c                 ó"   — t          | ¦  «        gS r"   r�   r6   s    r   Ú_shape_as_tensorru  ;  s   € Ý�‰IŒIˆ;Ðr   r  c                 ó¨   — t          | ¦  «        dk    rg }n9|| |         k    sJ d|› d|› d| |         › �¦   «         ‚t          | ¦  «        }|||<   ||fS )Nr   zk (z) is too big for dimension z	 of size )r   r3   )r(   r  r?   rª   s       r   Útopkrw  ?  so   € Ý
ˆ4�y„y�A‚~€~Øˆˆð ��c”ŠNˆNˆNØH�ÐHÐH¨sÐHÐH¸TÀ#¼YÐHÐHñ ŒNˆNå�t‘”ˆØˆˆs‰Ø�6ˆ>Ðr   ÚtargetÚ	reductionc                 óF  — t          | ¦  «        }t          |¦  «        }d|cxk     rdk    sn J ‚|dk    sJ ‚|dk    o|dk    }|s| d         |d         k    sJ ‚| d         }g }|�!t          |¦  «        dk    r|d         |k    sJ ‚|dk    r|dk    r
| d         g}	n|}	|	|fS )Nr   r+   r   r=   r�   )
r(   rx  r±   ry  rW  Ú
target_dimÚno_batch_dimÚ	n_classesÚscalar_shapeÚreduction_shapes
             r   Únll_loss_forwardr€  K  sá   € õ �4‰yŒy€HÝ�V‘”€JØˆxÐÐÒÐ˜1ÒÐÐÐÐÐØ˜Š?ˆ?ˆ?ˆ?Ø˜q’=Ð4 Z°1¢_€LØÐ1˜D œG v¨a¤yÒ0Ð0Ð0Ð1Ø�R”€IØ €LØˆ>�c &™kœk¨QÒ.Ð.°6¸!´9À	Ò3IÐ3IÐ3IÐJØ�A‚~€~˜( aš-˜-Ø œ7˜)ˆˆà&ˆØ˜LÐ(Ð(r   Únormalized_shapec                 ó<  — g }t          | ¦  «        t          |¦  «        z
  }|dk    sJ ‚t          |¦  «        D ]}|                     | |         ¦  «         Œt          |t          | ¦  «        ¦  «        D ]}|                     d¦  «         Œt          | ¦  «        ||fS r¨   )r   r   r   r3   )rr   r�  r  Únum_unreduced_dimensionsr   s        r   Únative_layer_normr„  _  s±   € ð "$€OÝ" 5™zœz­CÐ0@Ñ,AÔ,AÑAÐØ# qÒ(Ð(Ð(Ð(ÝÐ+Ñ,Ô,ð )ð )ˆØ×Ò˜u QœxÑ(Ô(Ð(Ð(ÝÐ+­S°©Z¬ZÑ8Ô8ð "ð "ˆØ×Ò˜qÑ!Ô!Ð!Ð!Ý�‰<Œ<˜¨/Ð9Ð9r   c                 óD   — |r
| d         g}ndg}t          | ¦  «        ||fS rm   r5   )rr   r±   rò   r*  r+  r,  Ú_sizes          r   Únative_batch_normr‡  l  s3   € ð ð Ø�q”�
ˆˆà�ˆÝ�‰<Œ<˜ Ð%Ð%r   c                 ó<   — | d         g}t          | ¦  «        ||dgfS rm   r5   )rr   r±   rò   r*  r+  r†  s         r   Ú_batch_norm_with_updater‰  {  s&   € ð �1ŒXˆJ€EÝ�‰<Œ<˜ ¨ sÐ*Ð*r   éœÿÿÿç        Úignore_indexÚlabel_smoothingc                 ó6   — t          | |||¦  «        d         }|S rÄ   )r€  )r(   rx  r±   ry  rŒ  r�  Úresult_shapes          r   Úcross_entropy_lossr�  †  s"   € õ $ D¨&°&¸)ÑDÔDÀQÔG€LØÐr   Úshape_compute_graph_mappingÚbounded_compute_graph_mappingÚscript_func_mapÚfuncc                 ó|  — | t           vr§t          j                             | ¦  «        }t          j                             |j        ¦  «         t          d¦  «        D ]J}t          j                             |j        ¦  «         t          j         	                    |j        ¦  «         ŒK|t           | <   t           |          S )Nr+   )
r“  ÚtorchÚjitÚscriptÚ_CÚ_jit_pass_inlineÚgraphr   Ú_jit_pass_peepholeÚ_jit_pass_constant_propagation)r”  Úscripted_funcÚ_s      r   Úprocess_funcr   «  sœ   € Ø•?Ð"Ð"Ýœ	×(Ò(¨Ñ.Ô.ˆåŒ×!Ò! -Ô"5Ñ6Ô6Ð6å�q‘”ð 	Ið 	IˆAÝŒH×'Ò'¨Ô(;Ñ<Ô<Ð<ÝŒH×3Ò3°MÔ4GÑHÔHÐHÐHà -�˜ÑÝ˜4Ô Ð r   Úoperator_schemac                 ó4   — t          |¦  «        t          | <   d S r"   )r   r‘  )r¡  r”  s     r   Úadd_shape_compute_mappingr£  ¹  s   € õ 4@ÀÑ3EÔ3EÕ Ñ0Ð0Ð0r   Úlower_bound_funcÚupper_bound_funcc                 óV   — t          |¦  «        t          |¦  «        f}|t          | <   d S r"   )r   r’  )r¡  r¤  r¥  Úfnss       r   Úadd_bounded_compute_mappingr¨  ¿  s1   € õ Ð(Ñ)Ô)­<Ð8HÑ+IÔ+IÐ
J€CØ58Õ! /Ñ2Ð2Ð2r   z^aten::contiguous(Tensor(a) self, *, MemoryFormat memory_format=contiguous_format) -> Tensor(a)zFaten::rsub.Tensor(Tensor self, Scalar other, Scalar alpha=1) -> Tensorz:aten::dropout(Tensor input, float p, bool train) -> TensorzDaten::adaptive_avg_pool2d(Tensor self, int[2] output_size) -> Tensorz,prim::NumToTensor.Scalar(Scalar a) -> Tensorz(prim::NumToTensor.bool(bool a) -> Tensorzuaten::zeros(int[] size, *, int? dtype=None, int? layout=None, Device? device=None, bool? pin_memory=None) -> (Tensor)z{aten::to.dtype(Tensor(a) self, int dtype, bool non_blocking=False, bool copy=False, int? memory_format=None) -> (Tensor(a))zvaten::arange(Scalar end, *, int? dtype=None, int? layout=None, Device? device=None, bool? pin_memory=None) -> (Tensor)z’aten::arange.start(Scalar start, Scalar end, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensorz¤aten::arange.start_step(Scalar start, Scalar end, Scalar step, *, ScalarType? dtype=None, Layout? layout=None, Device? device=None, bool? pin_memory=None) -> Tensorz*aten::squeeze(Tensor(a) self) -> Tensor(a)z7aten::squeeze.dim(Tensor(a) self, int dim) -> Tensor(a)z:aten::squeeze.dims(Tensor(a) self, int[] dim) -> Tensor(a)z5aten::unsqueeze(Tensor(a) self, int dim) -> Tensor(a)zfaten::slice.Tensor(Tensor(a) self, int dim=0, int? start=None, int? end=None, int step=1) -> Tensor(a)zAaten::select.int(Tensor(a) self, int dim, int index) -> Tensor(a)z@aten::index_select(Tensor self, int dim, Tensor index) -> Tensorz‘aten::layer_norm(Tensor input, int[] normalized_shape, Tensor? weight=None, Tensor? bias=None, float eps=1e-05, bool cudnn_enable=True) -> TensorzIaten::softmax.int(Tensor self, int dim, ScalarType? dtype=None) -> Tensorzhaten::_no_grad_embedding_renorm_(Tensor weight, Tensor input, float max_norm, float norm_type) -> Tensorzgaten::embedding_renorm_(Tensor(a!) self, Tensor indices, float max_norm, float norm_type) -> Tensor(a!)z~aten::embedding(Tensor weight, Tensor indices, int padding_idx=-1, bool scale_grad_by_freq=False, bool sparse=False) -> Tensorz,aten::mm(Tensor self, Tensor mat2) -> Tensorz/aten::dot(Tensor self, Tensor tensor) -> Tensorz+aten::mv(Tensor self, Tensor vec) -> Tensorz1aten::matmul(Tensor self, Tensor other) -> TensorzFaten::linear(Tensor input, Tensor weight, Tensor? bias=None) -> Tensorzˆaten::max_pool2d(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> TensorzŸaten::max_pool2d_with_indices(Tensor self, int[2] kernel_size, int[2] stride=[], int[2] padding=0, int[2] dilation=1, bool ceil_mode=False) -> (Tensor, Tensor)z$aten::t(Tensor(a) self) -> Tensor(a)zDaten::transpose.int(Tensor(a) self, int dim0, int dim1) -> Tensor(a)zŠaten::conv1d(Tensor input, Tensor weight, Tensor? bias=None, int[1] stride=1, int[1] padding=0, int[1] dilation=1, int groups=1) -> TensorzŠaten::conv2d(Tensor input, Tensor weight, Tensor? bias=None, int[2] stride=1, int[2] padding=0, int[2] dilation=1, int groups=1) -> Tensorz¯aten::batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps, bool cudnn_enabled) -> TensorzŠaten::conv3d(Tensor input, Tensor weight, Tensor? bias=None, int[3] stride=1, int[3] padding=0, int[3] dilation=1, int groups=1) -> Tensorzïaten::convolution_backward(Tensor grad_output, Tensor input, Tensor weight, int[]? bias_sizes, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups, bool[3] output_mask) -> (Tensor, Tensor, Tensor)z¦aten::convolution(Tensor input, Tensor weight, Tensor? bias, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups) -> Tensorzðaten::_convolution(Tensor input, Tensor weight, Tensor? bias, int[] stride, int[] padding, int[] dilation, bool transposed, int[] output_padding, int groups, bool benchmark, bool deterministic, bool cudnn_enabled, bool allow_tf32) -> Tensorz³aten::conv_transpose2d.input(Tensor input, Tensor weight, Tensor? bias=None, int[2] stride=1, int[2] padding=0, int[2] output_padding=0, int groups=1, int[2] dilation=1) -> TensorzVaten::flatten.using_ints(Tensor(a) self, int start_dim=0, int end_dim=-1) -> Tensor(a)z0aten::cat(Tensor[] tensors, int dim=0) -> Tensorz2aten::stack(Tensor[] tensors, int dim=0) -> Tensorz6aten::permute(Tensor(a) self, int[] dims) -> Tensor(a)zSaten::movedim.intlist(Tensor(a) self, int[] source, int[] destination) -> Tensor(a)z3aten::view(Tensor(a) self, int[] size) -> Tensor(a)z:aten::expand_as(Tensor(a) self, Tensor other) -> Tensor(a)zMaten::expand(Tensor(a) self, int[] size, *, bool implicit=False) -> Tensor(a)zaaten::mean.dim(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None) -> Tensorzhaten::sum.dim_IntList(Tensor self, int[1]? dim, bool keepdim=False, *, ScalarType? dtype=None) -> TensorzZaten::max.dim(Tensor self, int dim, bool keepdim=False) -> (Tensor values, Tensor indices)z<aten::mean(Tensor self, *, ScalarType? dtype=None) -> Tensorz;aten::sum(Tensor self, *, ScalarType? dtype=None) -> Tensorz^aten::addmm(Tensor self, Tensor mat1, Tensor mat2, *, Scalar beta=1, Scalar alpha=1) -> Tensorzbaten::upsample_nearest2d.vec(Tensor input, int[]? output_size, float[]? scale_factors) -> (Tensor)z_aten::quantize_per_tensor(Tensor self, float scale, int zero_point, ScalarType dtype) -> Tensorzraten::quantize_per_tensor.tensor_qparams(Tensor self, Tensor scale, Tensor zero_point, ScalarType dtype) -> Tensorz'aten::dequantize(Tensor self) -> TensorzNquantized::add(Tensor qa, Tensor qb, float scale, int zero_point) -> Tensor qczFaten::argmax(Tensor self, int? dim=None, bool keepdim=False) -> Tensorz-aten::bmm(Tensor self, Tensor mat2) -> Tensorz-aten::_shape_as_tensor(Tensor self) -> Tensorzraten::topk(Tensor self, int k, int dim=-1, bool largest=True, bool sorted=True) -> (Tensor values, Tensor indices)z‹aten::nll_loss_forward(Tensor self, Tensor target, Tensor? weight, int reduction, int ignore_index) -> (Tensor output, Tensor total_weight)z‚aten::native_layer_norm(Tensor input, int[] normalized_shape, Tensor? weight, Tensor? bias, float eps) -> (Tensor, Tensor, Tensor)z´aten::native_batch_norm(Tensor input, Tensor? weight, Tensor? bias, Tensor? running_mean, Tensor? running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor)z¹aten::_native_batch_norm_legit(Tensor input, Tensor? weight, Tensor? bias, Tensor running_mean, Tensor running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor)zÂaten::_native_batch_norm_legit.no_stats(Tensor input, Tensor? weight, Tensor? bias, Tensor running_mean, Tensor running_var, bool training, float momentum, float eps) -> (Tensor, Tensor, Tensor)z³_batch_norm_with_update(Tensor input, Tensor? weight, Tensor? bias, Tensor(a!) running_mean, Tensor(b!) running_var, float momentum, float eps) -> (Tensor, Tensor, Tensor, Tensor)zœaten::cross_entropy_loss(Tensor self, Tensor target, Tensor? weight=None, int reduction=Mean, SymInt ignore_index=-100, float label_smoothing=0.0) -> TensorzCaten::lerp.Tensor(Tensor self, Tensor end, Tensor weight) -> TensorzMaten::where.ScalarSelf(Tensor condition, Scalar self, Tensor other) -> TensorzQaten::add_.Tensor(Tensor(a!) self, Tensor other, *, Scalar alpha=1) -> Tensor(a!)z&aten::nonzero(Tensor self) -> (Tensor))r=   FF)NNNNr   N)T)NFrP  )Nr   rŠ  r‹  )fr@  Útypingr   r   r   r   r   r   r	   r‘   ÚfloatÚnumberr–  r   r%   r'   r0   r3   r7   r:   rB   rE   rK   rF   rP   ÚboolrS   r^   r`   rd   ro   rq   rƒ   r‹   r�   r’   r–   r™   r�   r¡   r£   r¦   r«   r°   r·   r¹   rÁ   rÅ   rÉ   rÌ   rÓ   r×   rÛ   rÝ   ré   rì   rñ   rô   rù   rþ   r  r  r  r  r  r  r#  r)  r0  r3  rY   r9  r®   rB  rD  rF  rK  ra  rf  ri  rk  ro  rq  rs  ru  rw  r€  r„  r‡  r‰  r�  r™  ÚScriptFunctionÚScriptFnr‘  ÚstrÚ__annotations__r’  r“  r   r£  r¨  rN   r   r   ú<module>r±     s­  ðà €€€€Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dð 
ˆs�EˆzÔ	€ð$ €€€ð��c”ð ˜t Cœyð ð ð ð ð0)�t˜C”yð ) T¨#¤Yð )°4¸´9ð )ð )ð )ð )ð˜4 œ9ð ¨ð °°c´ð ð ð ð ð˜d 3œið ¨d°3¬ið ð ð ð ð��S”	ð ð ð ð ð��S”	ð ð ð ð ð˜˜cœð  t¨C¤yð ð ð ð ð(��c”ð  4¨¤9ð ð ð ð ð,˜D œIð ¨d°3¬ið ¸sð ð ð ð ð˜4 œ9ð ¨Sð °T¸#´Yð ð ð ð ð.��c”ð ð ð ð ð/ˆt�CŒyð /  c¤ð /ð /ð /ð /ð LQð ð ð ˜$˜sœ)ð ¨D°¬Ið ÀDð ð ð ð ðØ
ˆsŒ)ðØ'¨¨S¬	Ô2ðØ>BðØHKðð ð ð ð,�$�s”)ð  #ð °ð ð ð ð ðˆsð �sð ð ð ð ðØðàðð ðð ð	ð
 ðð ðð ðð ð ð ð6Øðàðð ðð ð	ð
 ðð ðð ð ð ð2Ø�Œ9ð2àð2ð 	ð2ð 	ð	2ð
 	ð2ð ð2ð ð2ð ð2ð ð2ð ð2ð ð2ð ð2ð ð2ð ð2ð 2ð 2ð 2ðDC@Ø�Œ9ðC@à�c”ðC@ð �ŒIðC@ð �#ŒYð	C@ð
 �3ŒiðC@ð ðC@ð C@ð C@ð C@ðL	Ø�Œ9ð	à�c”ð	ð �ŒIð	ð �#ŒYð		ð
 �3Œið	ð ð	ð 	ð 	ð 	ðØ�Œ9ðà˜$˜sœ)Ô$ðð ˜D œKÔ(ðð ð ð ð>ˆT�#ŒYð ˜d 3œið ð ð ð ðˆd�3Œið   c¤ð ð ð ð ðˆT�#ŒYð ˜T #œYð ð ð ð ð�$�s”)ð  #ð ð ð ð ð�d˜3”ið ð ð ð ð	��S”	ð 	 ð 	ð 	ð 	ð 	ð�T˜#”Yð  d¨3¤ið ð ð ð ð �t˜C”yð  sð °4¸´9ð ð ð ð ð" Ø$Øñð Ø�ŒIðà�#ŒYðð ðð ð	ð
 ðð ð ð ðð ð ðØ
ˆsŒ)ðØðØ&.¨s¤mðØ:BÀ3¼-ðØORðð ð ð ð: 4¨¨S¬	¤?ð ð ð ð ð
˜Sð °°T¸#´Y´ð ð ð ð ð3˜˜Sœ	ð 3ð 3ð 3ð 3ð
AØ�Œ9ð
AØ" 3œið
AØ47ð
AØ@Cð
Að 
Að 
Að 
Að��d˜3”i”ð  sð ð ð ð ð0(�4˜˜Sœ	”?ð (¨ð (ð (ð (ð (ð��c”ð  ð ¨Sð ð ð ð ð&I�D˜”Ið &I¨¨S¬	ð &Ið &Ið &Ið &IðR	"ˆD�ŒIð 	"ð 	"ð 	"ð 	"ð�D˜”Ið  Sð °ð ð ð ð ð"�$�s”)ð  T¨#¤Yð °h¸tÀC¼yÔ6Ið ð ð ð ð+��S”	ð +  c¤ð +°$°s´)ð +À3ð +Èsð +ð +ð +ð +ð˜d 3œið ¨Dð ð ð ð ð
Ø�Œ9ð
à�s”)ð
ð �4˜”9Ô
ð
ð �ŒIð	
ð
 �#ŒYð
ð �3Œið
ð ð
ð 
ð 
ð 
ð>Ø�S”	ðà�c”ðð �4˜”9Ô
ðð �ŒIð	ð
 �#ŒYðð �3Œiðð ðð ð ð ð<TØ�Œ9ðTà�ŒIðTð �4˜”9Ô
ðTð �ŒIð	Tð
 �#ŒYðTð �3ŒiðTð ðTð Tð Tð TðTØ�Œ9ðTà�ŒIðTð �4˜”9Ô
ðTð �ŒIð	Tð
 �#ŒYðTð �3ŒiðTð ðTð Tð Tð Tð9Ø�c”ð9à�Œ9ð9ð �ŒIð9ð �T˜#”YÔð	9ð 9ð 9ð 9ð !%Ø"&Ø#'Ø*.ØØ$(ñ$ð $Ø�Œ9ð$à�ŒIð$ð �4˜”9Ô
ð$ð �T˜#”YÔð	$ð
 �d˜3”iÔ ð$ð ˜T #œYÔ'ð$ð ð$ð �t˜C”yÔ!ð$ð 
ˆ#„Yð$ð $ð $ð $ðN(Ø�Œ9ð(à�ŒIð(ð �4˜”9Ô
ð(ð �ŒIð	(ð
 �#ŒYð(ð �3Œið(ð ð(ð ˜”Ið(ð ð(ð 
ˆ#„Yð(ð (ð (ð (ðVØ�Œ9ðà�ŒIðð �4˜”9Ô
ðð �ŒIð	ð
 �#ŒYðð �3Œiðð ðð ˜”Iðð ðð ðð ðð ðð ðð 
ˆ#„Yðð ð ð ð8Ø�Œ9ðà�T˜#”YÔðð �4˜”9Ô
ðð ˜4 œ9Ô%ð	ð
 ˜$˜sœ)Ô$ðð ðð ðð 
ðð ðð ð ð ð"TØ�Œ9ðTà�ŒIðTð �4˜”9Ô
ðTð �ŒIð	Tð
 �#ŒYðTð �3ŒiðTð ðTð Tð Tð Tñ	ð 	˜ð 	¨Cð 	¸dð 	ð 	ð 	ð 	ð˜3ð ð ð ð ð
˜$˜sœ)ð ð ð ð ð!�Fð ! #ð !¨Sð !¸ð !À3ð !ð !ð !ð !ð
)Øð)Øð)Ø&)ð)Ø14ð)Ø<?ð)ØGJð)ð )ð )ð )ð2Øð2Øð2Ø&,ð2Ø47ð2Ø?Bð2ØJMð2ØUXð2ð 2ð 2ð 2ð�4˜”9ð  D¨¤Ið ð ð ð ð �$�s”)ð   T¨#¤Yð  ¸TÀ#¼Yð  È4ÐPSÌ9ð  ð  ð  ð  ðB�4˜”9ð ¨ð °sð ð ð ð ð4˜t Cœyð ð ð ð ð&˜t Cœyð &ð &ð &ð &ð	˜D œIð 	¨Cð 	¸$ð 	ð 	ð 	ð 	ð AFñ1ð 1Ø
ˆsŒ)ð1Ø" 3œ-ð1Ø9=ð1à	ˆ#„Yð1ð 1ð 1ð 1ð'ˆd�3Œið '˜t Cœyð '¨T°#¬Yð 'ð 'ð 'ð 'ð˜4 œ9ð ¨¨c¬ð ð ð ð ñ	ð 	ˆt�CŒyð 	˜Sð 	 sð 	°E¸$¸s¼)ÀTÈ#ÄYÐ:NÔ4Oð 	ð 	ð 	ð 	ð)Ø
ˆsŒ)ð)Ø! #œYð)Ø08¸¸c¼Ô0Cð)ØPSð)à
ˆ4�Œ9�d˜3”iÐÔ ð)ð )ð )ð )ð(
:Ø�Œ9ð
:Ø(,¨S¬	ð
:à
ˆ4�Œ9�d˜3”i  c¤Ð*Ô+ð
:ð 
:ð 
:ð 
:ð&Ø�Œ9ð&à�T˜#”YÔð&ð �4˜”9Ô
ð&ð ˜4 œ9Ô%ð	&ð
 ˜$˜sœ)Ô$ð&ð ð&ð ˆ4�Œ9�d˜3”i  c¤Ð*Ô+ð&ð &ð &ð &ð+Ø�Œ9ð+à�T˜#”YÔð+ð �4˜”9Ô
ð+ð ˜4 œ9Ô%ð	+ð
 ˜$˜sœ)Ô$ð+ð ˆ4�Œ9�d˜3”i  c¤¨D°¬IÐ5Ô6ð+ð +ð +ð +ð #'ØØØ ñ	ð 	Ø
ˆsŒ)ð	à�ŒIð	ð �T˜#”YÔð	ð ð		ð
 ð	ð ð	ð 
ˆ#„Yð	ð 	ð 	ð 	ðð& Œ8Ô"€Ø35Ð ˜T # x -Ô0Ð 5Ð 5Ñ 5ØFHÐ ˜t C¨¨x¸Ð/AÔ)BÐ$BÔCÐ HÐ HÑ HØ,.€��h Ð(Ô)Ð .Ð .Ñ .ð!�xð !ð !ð !ð !ðF¨sð F¸(ð Fð Fð Fð Fð9Øð9Ø,4ð9ØHPð9ð 9ð 9ð 9ð Ð ØdØ	ñô ð ð Ð ØLÈeñô ð ð Ð Ø@À%ñô ð ð Ð ØJØñô ð ð Ð Ø2°Oñô ð ð Ð ÐDÀoÑ VÔ VÐ VØ Ð Ø{Ø	ñô ð ð Ð ð BØ	ñô ð ð Ð Ø|Øñô ð ð Ð ð YØñô ð ð Ð ð kØñô ð ð Ð ÐFÈÑ VÔ VÐ VØ Ð Ø=¸wñô ð ð Ð Ø@À,ñô ð ð Ð Ø;¸Yñô ð ð Ð ØlØ	ñô ð ð Ð ØGÈñô ð ð Ð ØFÈñô ð ð Ð ð9à	ñô ð ð
 Ð ØOÐQVñô ð ð Ð ØnØ	ñô ð ð Ð ØmØ	ñô ð ð Ð ð EØñô ð ð Ð ÐHÈ"Ñ MÔ MÐ MØ Ð ÐKÈSÑ QÔ QÐ QØ Ð ÐGÈÑ LÔ LÐ LØ Ð ÐMÈvÑ VÔ VÐ VØ Ð ØLÈfñô ð ð Ð ð OØñô ð ð Ð ð fØñô ð ð Ð Ð@À!Ñ DÔ DÐ DØ Ð ØJÈIñô ð ð Ð ð QØ
ñô ð ð Ð ð QØ
ñô ð ð Ð ð vØñô ð ð Ð ð QØ
ñô ð ð Ð ð vØñô ð ð Ð ð mØñô ð ð Ð ð wØñô ð ð Ð ð zØñô ð ð Ð Ø\Øñô ð ð Ð ÐLÈcÑ RÔ RÐ RØ Ð ÐNÐPUÑ VÔ VÐ VØ Ð Ø<¸gñô ð ð Ð ØYØñô ð ð Ð ÐOÐQUÑ VÔ VÐ VØ Ð Ø@À&ñô ð ð Ð ØSØñô ð ð Ð ØgØñô ð ð Ð ØnØñô ð ð Ð Ø`Øñô ð ð Ð ØBÀOñô ð ð Ð ØAÀ?ñô ð ð Ð ØdØ	ñô ð ð Ð ØhØñô ð ð Ð ØeØ	ñô ð ð Ð ÙxØ	ñô ð ð Ð ÑCÀUÑ KÔ KÐ KØ Ð ÙTØñô ð ð Ð ÙLÈfñô ð ð Ð ÑIÈ3Ñ OÔ OÐ OØ Ð Ù3Ð5Eñô ð ð Ð ÙxØñô ð ð Ð ñ RØñô ð ð Ð ñ IØñô ð ð Ð ñ {Øñô ð ð Ð ñ @Øñô ð ð Ð ñ IØñô ð ð Ð ñ zØñô ð ð
 Ð ñ cØñô ð ð Ð ÙIØñô ð ð Ð ÙSØñô ð ð Ð ÙWØñô ð ð Ð Ù,Ð.AÐCVñô ð ð ð r   