Ë
    g^(hlO  ã                   óì  — d dl Z d dlmZ ddlmZ ddlmZ ddlm	Z	mZ ej                  Z
d dlZd dlmZ  eej                  «      Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd#d„Zd„ Z G d„ d«      Z G d„ dee«      Z G d„ dee«      Zi Zeefd„«       Zd„ Z d„ Z!d„ Z" e#«       Z$d„ Z%d„ Z&	 d$d„Z'd„ Z( e)d«      Z*e jV                  jX                  Z- G d„ d«      Z.d „ Z/d%d!„Z0e jV                  jb                  Z2d&d"„Z1y)'é    N©Údimé   )Úop_properties)Ú_enable_layers)Útree_flattenÚtree_map)Úreducec                 ó8   — t        t        j                  | d«      S ©Nr   )r
   ÚoperatorÚmul)Úxs    úU/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/functorch/dim/reference.pyÚprodr      s   € Ü”(—,‘,  1Ó%Ð%ó    c                 óT   — ddl m} t        | |«      r|rJ d«       ‚| S | dk\  r| |z
  S | S )Nr   ©ÚDimz8cannot preserve first-class dimensions with keepdim=Truer   ©Ú r   Ú
isinstance)ÚdÚNÚkeepdimr   s       r   Ú	_wrap_dimr      s7   € Ýä�!�SÔÙÐVÐVÓVˆ{ØˆØ	
ˆaŠØ�1‰uˆàˆr   c                 ó¦   ‡‡— ddl m} t        | |t        f«      rt	        t        | ‰‰«      f«      S |r
J d| › �«       ‚t	        ˆˆfd„| D «       «      S )Nr   r   z.expected a single dimension or int but found: c              3   ó8   •K  — | ]  }t        |‰‰«      –— Œ y ­w©N)r   )Ú.0r   r   r   s     €€r   ú	<genexpr>z_dims.<locals>.<genexpr>/   s   øè ø€ Ò6¨q”)˜A˜q '×*Ñ6ùs   ƒ)r   r   r   ÚintÚltupler   )r   r   r   Ú
single_dimr   s    ``  r   Ú_dimsr%   )   sQ   ù€ Ýä�!�cœ3�ZÔ Ü”y  A wÓ/Ð1Ó2Ð2ÙÐOÐKÈAÈ3ÐOÓOˆ>ÜÔ6°AÔ6Ó6Ð6r   c           
      ó²  — ddl m} t        d„ t        |«      D «       «      }t	        |«      dk(  rO|d   \  }}t        d„ |D «       «      }| |z  dk7  r t        d„ |D «       «      } |d| › d|› �«      ‚| |z  }	|	|_        y t	        |«      dkD  r t        d	„ |D «       «      } |d
|› d|› �«      ‚t        d„ |D «       «      }
| |
k7  r |d| › d|
› d|› d|› �«      ‚y )Nr   )ÚDimensionMismatchErrorc              3   óD   K  — | ]  \  }}|j                   rŒ||f–— Œ y ­wr   )Úis_bound)r    ÚiÚrs      r   r!   z%_bind_dims_to_size.<locals>.<genexpr>5   s   è ø€ ÒJ¡  A¸q¿z»z�q˜!”fÑJùs   ‚ —	 r   c              3   óN   K  — | ]  }|j                   sŒ|j                  –— Œ y ­wr   )r)   Úsize©r    r+   s     r   r!   z%_bind_dims_to_size.<locals>.<genexpr>8   s   è ø€ Ò< Q°·³˜!Ÿ&�&Ñ<ùs   ‚%”%c              3   ób   K  — | ]'  }|j                   sd nt        |j                  «      –— Œ) y­w©ú?N©r)   Ústrr-   r.   s     r   r!   z%_bind_dims_to_size.<locals>.<genexpr>:   s#   è ø€ ÒNÀQ Q§Z¢Z™#´S¸¿¹³[Ó@ÑNùó   ‚-/z>inferred dimension does not evenly fit into larger dimension: ú vs c              3   ób   K  — | ]'  }|j                   sd nt        |j                  «      –— Œ) y­wr0   r2   r.   s     r   r!   z%_bind_dims_to_size.<locals>.<genexpr>A   s#   è ø€ ÒJÀ §¢‘c´°Q·V±V³Ó<ÑJùr4   z1cannot infer the size of two dimensions at once: z with sizes c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   ©r-   r.   s     r   r!   z%_bind_dims_to_size.<locals>.<genexpr>F   s   è ø€ Ò, 1˜Ÿ�Ñ,ùó   ‚z!Dimension sizes to do not match (z != z) when matching z to )r   r'   ÚtupleÚ	enumerateÚlenr   r-   )Úlhs_sizeÚrhsÚ	lhs_debugr'   Ú	not_boundÚidxr   Ú
rhs_so_farÚrhs_sÚnew_sizeÚrhs_sizes              r   Ú_bind_dims_to_sizerF   2   s  € Ý(äÑJ¬°3«ÔJÓJ€IÜ
ˆ9ƒ~˜ÒØ˜1‘‰ˆˆQÜÑ<¨#Ô<Ó<ˆ
Ø�jÑ  AÒ%ÜÑNÈ#ÔNÓNˆEÙ(ØPÐQYÐPZÐZ^Ð_dÐ^eÐfóð ð ˜zÑ)ˆØˆ�Ü	ˆY‹˜!Ò	ÜÑJÀcÔJÓJˆÙ$Ø?À¸uÀLÐQVÐPWÐXó
ð 	
ô Ñ,¨Ô,Ó,ˆØ�xÒÙ(Ø3°H°:¸TÀ(ÀÐK[Ð\eÐ[fÐfjÐknÐjoÐpóð ð  r   c                 óÄ   — ddl m} t        | |«      r,| j                  t	        | j
                  «      | j                  fS | t	        t        | j                   d«      «      dfS )Nr   ©Ú_Tensorr   T)	r   rI   r   Ú_tensorÚllistÚ_levelsÚ_has_deviceÚrangeÚndim)ÚinprI   s     r   Ú_tensor_levelsrQ   M   sL   € Ýä�#�wÔØ�{‰{œE #§+¡+Ó.°·±Ð?Ð?à”Eœ% §¡ 	¨1Ó-Ó.°Ð4Ð4r   c                 ór  — g }g }d}| j                  «       }|D ]9  }	 |j                  |«      }|j                  |«       |j                  ||   «       Œ; |t	        t        t        |«      «      «      k7  r | j                  |Ž } |r | j                  |Ž } | S # t        $ r |j                  d«       d}Y Œœw xY w)NFr   T)	r-   ÚindexÚappendÚ
ValueErrorÚlistrN   r<   ÚpermuteÚview)	ÚvÚfrom_levelsÚ	to_levelsrX   rW   Úrequires_viewr-   ÚtrA   s	            r   Ú_match_levelsr^   V   s¼   € Ø€DØ€GØ€MØ�6‰6‹8€DØò !ˆð	!Ø×#Ñ# AÓ&ˆCØ�N‰N˜3ÔØ�K‰K˜˜S™	Õ"ð	!ð ”$”uœS ›\Ó*Ó+Ò+ØˆA�I‰I�wÐˆÙØˆA�F‰F�DˆMˆØ€Høô ò 	!Ø�K‰K˜ŒNØ ŠMð	!ús   �6BÂB6Â5B6c                 óÖ  — ddl m} | j                  t        | j                  «      }}	 |j                  |«      }d}t        |«      D ](  }t        ||   t        «      sŒ||xx   dz  cc<   |dz  }Œ* | dz
  ||<   |j                  ||| j                  «      |fS # t        $ rE |s‚ d} |j                  |j                  g|j                  «       ¢­Ž }|j                  dd«       Y Œ­w xY w)Nr   )ÚTensorr   )r   r`   rJ   rK   rL   rS   rU   Úexpandr-   ÚinsertrN   r   r"   Úfrom_positionalrM   )	Úselfr   Ú
expand_dimr`   ÚptensorÚlevelsrA   Úidx_batchedr*   s	            r   Ú_positional_no_permuteri   m   sè   € Ýà—l‘l¤E¨$¯,©,Ó$7ˆV€GðØ�l‰l˜3Óˆð €KÜ�3‹Zò ˆÜ�f˜Q‘i¤Õ%Ø�1‹I˜‰N‹IØ˜1Ñ‰Kðð �, Ñ"€Fˆ3�KØ×!Ñ! '¨6°4×3CÑ3CÓDÀkÐQÐQøô ò ÙØØˆØ �'—.‘. §¡Ð;¨G¯L©L«NÒ;ˆØ�‰�a˜Öðús   ©B ÂAC(Ã'C(c                 ól   — ddl m} t        | |«      t        ||«      k7  ryt        | |«      r| |u S | |k(  S )Nr   r   Fr   )ÚaÚbr   s      r   Úseqrm   ‚   s:   € Ýä�!�SÓœZ¨¨3Ó/Ò/ØÜ�!�SÔØ�Aˆvˆà�A‰vˆr   c                   ó   — e Zd ZdZd„ Zd„ Zy)Úisin© c                 ó.   — | D ]  }t        ||«      sŒ y y)NTF)rm   )rd   Úitemr   s      r   Ú__contains__zisin.__contains__�   s"   € Øò 	ˆAÜ�4˜�|Ùð	ð r   c                 óT   — t        | «      D ]  \  }}t        ||«      sŒ|c S  t        ‚r   )r;   rm   rU   )rd   rr   r*   r   s       r   rS   z
isin.index–   s/   € Ü˜d“Oò 	‰DˆAˆqÜ�4˜�|Ø’ð	ô Ðr   N)Ú__name__Ú
__module__Ú__qualname__Ú	__slots__rs   rS   rp   r   r   ro   ro   �   s   „ Ø€Iòór   ro   c                   ó   — e Zd ZdZy)rK   rp   N©ru   rv   rw   rx   rp   r   r   rK   rK   �   ó   „ Ø�Ir   rK   c                   ó   — e Zd ZdZy)r#   rp   Nrz   rp   r   r   r#   r#   ¡   r{   r   r#   c                 óx  ‡‡‡‡‡‡— ddl mŠmŠmŠ ddlm} |t        j                  j                  u rD|\  }}t        |‰«      r3t        |‰«      r'|j                  dk(  r|j                  dk(  r	 |||«      S t        «       }t        ||f«      \  }	}
d Š|	D ]N  }t        |‰«      sŒ|j                  r|j                  Š|j                  D ]  }||vsŒ|j                  |«       Œ ŒP ˆˆfd„Š|t         v rêt        «       Šg }t#        |	«      D ]Œ  \  }}t        |‰«      sŒt%        |«      \  }}}t        |‰«      r*|j                  s‰�|j'                  ‰j(                  ¬«      }||	|<   |D ]  }|‰vsŒ‰j                  |«       Œ |j                  ||f«       ŒŽ |D ]  \  }}t+        |	|   |‰«      |	|<   Œ  |
|	«      \  }} ||i |¤Ž}ˆˆˆˆfd„}t-        ||«      S ˆˆˆfd„}t/        |«      5  t1        d	|› �«        |
ˆfd
„|	D «       «      \  }} ||i |¤Ž}t-        ||«      cd d d «       S # 1 sw Y   y xY w)Nr   )rI   r`   Ú
TensorLike)ÚDelayedMulTensorr   c                 ó�   •— t        | ‰«      r8| j                  }‰�(| j                  s|j                  ‰j                  ¬«      }|S | S )N©Údevice)r   Ú_batchtensorrM   Útor‚   )r]   r+   rI   Údevice_holding_tensors     €€r   Úunwrapz"__torch_function__.<locals>.unwrapÁ   sC   ø€ Ü�a˜Ô!Ø—‘ˆAØ$Ð0¸¿ºØ—D‘DÐ 5× <Ñ <�DÓ=�ØˆHØˆr   r�   c                 óJ   •— t        | ‰«      r‰j                  | ‰‰d u«      S | S r   )r   rc   )r]   r`   r~   r…   Úresult_levelss    €€€€r   Úwrapz __torch_function__.<locals>.wrapà   s4   ø€ Ü˜!˜ZÔ(Ø×-Ñ-Ø�}Ð&;À4Ð&Góð ð ˆHr   c                 óH   •— t        | ‰«      r‰j                  | ‰d u«      S | S r   )r   Úfrom_batched)r]   r`   r~   r…   s    €€€r   r‰   z __torch_function__.<locals>.wrapê   s+   ø€ Ü˜!˜ZÔ(Ø×*Ñ*¨1Ð.CÈ4Ð.OÓPÐPØˆHr   zbatch_tensor for c              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wr   rp   )r    Úfr†   s     €r   r!   z%__torch_function__.<locals>.<genexpr>ñ   s   øè ø€ Ò$B°1¡V¨A§YÑ$Bùs   ƒ)r   rI   r`   r~   Údelayed_mul_tensorr   ÚtorchÚ__mul__r   rO   rK   r   rM   rƒ   ÚdimsrT   Ú	pointwiser;   rQ   r„   r‚   r^   r	   r   Úprint)rd   ÚorigÚclsÚargsÚkwargsr   Úlhsr>   Úall_dimsÚ	flat_argsÚ	unflattenr�   r   Ú	to_expandr*   rf   rg   Ú_ÚlÚresultr‰   r`   r~   rI   r…   rˆ   r†   s                        @@@@@@r   Ú__torch_function__r    ¨   sL  ý€ ç-Ñ-Ý4àŒu�|‰|×#Ñ#Ñ#Ø‰ˆˆSä�s˜GÔ$Ü˜3 Ô(Ø—‘˜A’Ø—‘˜A’á# C¨Ó-Ð-Ü‹w€HÜ'¨¨v¨Ó7Ñ€IˆyØ ÐØò 'ˆÜ�a˜Õ!Ø�}Š}Ø()¯©Ð%Ø—V‘Vò '�Ø˜HÒ$Ø—O‘O AÕ&ñ'ð	'õð ŒyÑÜ›ˆØˆ	Ü˜iÓ(ò 	.‰DˆAˆqÜ˜!˜ZÕ(Ü%3°AÓ%6Ñ"�˜ ä˜q 'Ô*ØŸMšMØ-Ð9à%Ÿj™jÐ0E×0LÑ0L˜jÓM�GØ&�	˜!‘Øò 0�AØ Ò-Ø%×,Ñ,¨QÕ/ð0ð × Ñ  ! V Õ-ð	.ð #ò 	N‰IˆAˆvÜ(¨°1©°v¸}ÓMˆI�aŠLð	Ná  Ó+‰ˆˆfÙ�tÐ&˜vÑ&ˆ÷	ô ˜˜fÓ%Ð%ö	ô
 ˜HÓ%ñ 	*ÜÐ% d VÐ,Ô-Ù$Ó$B¸	Ô$BÓB‰LˆD�&Ù˜4Ð* 6Ñ*ˆFä˜D &Ó)÷	*÷ 	*ò 	*ús   Ç06H0È0H9c                 óö  — ddl m}m}m} | j                  t        | j                  «      }}t        «       }g }d}	| j                  }
|D ]ø  }t        |t        «      r*|j                  |«       |j                  d„ |D «       «       Œ=t        ||«      r-|j                  |«       |j                  |j                  «       Œvt        |t        «      r?t        ||
d«      }|j                  |«       |j                  |j                  |«      «       ŒÅ|j                  |«       |j                  t        d„ |D «       «      «       d}	Œú t!        t#        t%        |«      «      «      }t'        |«      D ]F  \  }}	 |j)                  |«      }||   }||= ||= |j/                  |d	«       |j/                  ||«       ŒH  |j0                  |Ž }d	}t#        t%        |«      dz
  d
d
«      D ]!  }t        ||   t        «      sŒ|dz  }| ||<   Œ# |j3                  ||| j4                  «      }|	r. |j6                  g |¢|j                  «       t%        |«      d  ¢­Ž }|S # t*        $ r} |d| j,                  › d|› �«      |‚d }~ww xY w)Nr   )r   ÚDimensionBindErrorr`   Fc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   r8   ©r    Úes     r   r!   zpositional.<locals>.<genexpr>  s   è ø€ Ò* 1˜Ÿ�Ñ*ùr9   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   r8   r¤   s     r   r!   zpositional.<locals>.<genexpr>  s   è ø€ Ò/¨˜QŸV�VÑ/ùr9   Tztensor of dimensions z does not contain dim r   éÿÿÿÿ)r   r   r¢   r`   rJ   rK   rL   rO   r   ÚDimListÚextendrT   r-   r"   r   r   rV   rN   r<   r;   rS   rU   r‘   rb   rW   rc   rM   Úreshape)rd   r‘   r   r¢   r`   rf   rg   Ú	flat_dimsrX   Ú
needs_viewrO   r   rW   r*   rA   r¥   ÚpÚseenrŸ   s                      r   Ú
positionalr¯   ÷   sO  € ß1Ñ1à—l‘l¤E¨$¯,©,Ó$7ˆV€GÜ“€IØ€DØ€JØ�9‰9€DØò ˆÜ�aœÔ!Ø×Ñ˜QÔØ�K‰KÑ*¨Ô*Õ*Ü˜˜3ÔØ×Ñ˜QÔØ�K‰K˜Ÿ™ÕÜ˜œ3ÔÜ˜!˜T 5Ó)ˆAØ×Ñ˜QÔØ�K‰K˜Ÿ™ Q›Õ(à×Ñ˜QÔØ�K‰KœÑ/¨QÔ/Ó/Ô0Ø‰Jðô  ”5œ˜V›Ó%Ó&€GÜ˜)Ó$ò ‰ˆˆ1ð	Ø—,‘,˜q“/ˆCð
 �C‰LˆØ�3ˆKØ�CˆLØ�‰�a˜ÔØ�‰�q˜!Õðð ˆg�o‰o˜wÐ'€GØ€DÜ”3�v“; ‘? B¨Ó+ò ˆÜ�f˜Q‘i¤Õ%Ø�A‰IˆDØ˜ˆF�1ŠIðð ×#Ñ# G¨V°T×5EÑ5EÓF€FÙØ�—‘ÐH ÐH¨¯©«´c¸)³nÐ6FÐ(GÒHˆØ€Møô% ò 	Ù$Ø'¨¯	©	 {Ð2HÈÈÐLóàðûð	ús   Å2IÉ	I8ÉI3É3I8c                 ó:   — ddl m} | D ]  }t        ||«      sŒ y y )Nr   r   Tr   )Úinputr   r*   s      r   Ú_contains_dimr²   (  s!   € Ýàò ˆÜ�a˜ÕÙñr   c                 ó  — t        |«      s/| j                  t        j                  j                  d | g|¢­«      S |}|D �cg c]  }|j
                  ‘Œ c}dg| j                  z  z   } | j                  |Ž } | |   S c c}w )Nr§   )r²   r    r�   r`   ra   r-   rO   )rd   Úsizesr‘   r   s       r   ra   ra   0  sw   € Ü˜ÔØ×&Ñ&¤u§|¡|×':Ñ':¸DÀ4À.È%Á.ÓQÐQØ€DØ!Ö"˜ˆQ�V‹VÒ" b T¨D¯I©IÑ%5Ñ5€EØˆ4�;‰;˜Ð€DØ�‰:Ðùò #s   ÁA<c                 óL   — t        |«      |kD  r||   S |j                  | |«      S r   )r<   Úget)ÚnameÚoffsetr–   r—   Údefaults        r   Ú_getargrº   <  s)   € Ü
ˆ4ƒy�6ÒØ�F‰|ÐØ�:‰:�d˜GÓ$Ð$r   c                 ó6   — t        |«      |kD  r|||<   y ||| <   y r   )r<   )r·   r¸   r–   r—   Úvalues        r   Ú	_patchargr½   B  s    € Ü
ˆ4ƒy�6ÒØˆˆVŠàˆˆtŠr   c           	      óF   ‡ ‡‡‡‡‡‡‡‡	— ddl mŠmŠmŠ	 ˆˆˆ	ˆˆˆˆ ˆˆf	d„}|S )Nr   )r   r`   r~   c                 ó^  •	‡ ‡‡— t        ‰‰||t        «      }|t        u s‰rit        |‰«      s]t        ‰ j                  «      5  t        d‰› �«       ‰j                   ‰‰ j                  g|¢­i |¤Ž‰ j                  «      cd d d «       S ‰rt        d‰||d«      nd}‰ j                  t        ‰ j                  «      c}Št        |‰ j                  j                  |‰«      }t        ˆfd„|D «       «      }‰r&|s$t        ‰«      D ��	cg c]  \  }}	||vsŒ|	‘Œ c}	}Šn‰Št!        |«      dk(  r|d   }t#        |«      }t%        ‰‰|||«       ˆˆˆˆ fd„}
t        ‰«      5  t        d‰› �«        ‰|g|¢­i |¤Ž}t'        |
|«      cd d d «       S # 1 sw Y   �ŒxY wc c}	}w # 1 sw Y   y xY w)	Nzdim fallback batch_tensor for r   Fc              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr   ©rS   )r    r   rg   s     €r   r!   z$_wrap.<locals>.fn.<locals>.<genexpr>[  s   øè ø€ Ò:°˜FŸL™L¨ŸOÑ:ùs   ƒr   r   c                 óZ   •— t        | ‰«      r‰j                  | ‰‰j                  «      S | S r   )r   rc   rM   )r]   r`   r~   Ú
new_levelsrd   s    €€€€r   r‰   z_wrap.<locals>.fn.<locals>.wraph  s-   ø€ Ü˜!˜ZÔ(Ø×-Ñ-¨a°¸T×=MÑ=MÓNÐNØˆHr   zdim used batch_tensor for )rº   Ú_not_presentr   r   r‘   r“   r‹   rƒ   rM   rJ   rK   rL   r%   rO   r:   r;   r<   rV   r½   r	   )rd   r–   r—   r   r   r]   r‘   Údim_indicesr*   rž   r‰   r+   rg   rÃ   r   r`   r~   Údim_nameÚ
dim_offsetÚkeepdim_offsetr”   r
   r$   s   `           @@€€€€€€€€€r   Úfnz_wrap.<locals>.fnN  s«  û€ Ü�h 
¨D°&¼,ÓGˆØ”,Ñ¡:´jÀÀcÔ6JÜ §	¡	Ó*ñ ÜÐ6°t°fÐ=Ô>Ø×*Ñ*Ù˜×*Ñ*Ð<¨TÒ<°VÑ<¸d×>NÑ>Nó÷ñ ñ HNŒG�I˜~¨t°V¸UÔCÐSXð 	ð —L‘L¤%¨¯©Ó"5ˆ	ˆˆ6Ü�S˜$×+Ñ+×0Ñ0°'¸:ÓFˆÜÓ:°TÔ:Ó:ˆÙ™'Ü(1°&Ó(9×R¡  1¸QÀkÒ=Qš!ÓR‰JàˆJäˆ{Ó˜qÒ Ø%ØñˆKô �D‹zˆÜ�(˜J¨¨f°kÔB÷	ô
 ˜JÓ'ñ 	%ÜÐ.¨t¨fÐ5Ô6Ù�QÐ(˜Ò( Ñ(ˆAÜ˜D !Ó$÷	%ñ 	%÷9ñ üó S÷ 	%ð 	%ús$   Á>FÄFÄFÅ &F#ÆFÆ#F,)r   r   r`   r~   )
r”   rÇ   rÈ   rÆ   r$   r
   rÉ   r   r`   r~   s
   `````` @@@r   Ú_wraprÊ   I  s   ÿø€ ÷ *Ñ)÷"%ô "%ðH €Ir   c           	      óx   — ddl m} t        t        j                  | «      }t        || t        |g|¢­i |¤Ž«       y )Nr   rH   )r   rI   Úgetattrr�   r`   ÚsetattrrÊ   )r·   r–   r—   rI   r”   s        r   Ú_defrÎ   u  s0   € Ýä”5—<‘< Ó&€DÜˆG�Tœ5 Ð7¨Ò7°Ñ7Õ8r   c                   ó    — e Zd Zdd„Zd„ Zd„ Zy)Údim_trackerNc                 ó0   — t        «       | _        g | _        y r   )rK   r‘   Úcount)rd   s    r   Ú__init__zdim_tracker.__init__‚  s   € Ü“GˆŒ	Øˆ�
r   c                 óŽ   — || j                   vr7| j                   j                  |«       | j                  j                  d«       y y r   )r‘   rT   rÒ   ©rd   r   s     r   Úrecordzdim_tracker.record†  s7   € Ø�D—I‘IÑØ�I‰I×Ñ˜QÔØ�J‰J×Ñ˜aÕ ð r   c                 óR   — | j                   | j                  j                  |«         S r   )rÒ   r‘   rS   rÕ   s     r   Ú__getitem__zdim_tracker.__getitem__‹  s   € Ø�z‰z˜$Ÿ)™)Ÿ/™/¨!Ó,Ñ-Ð-r   )ÚreturnN)ru   rv   rw   rÓ   rÖ   rØ   rp   r   r   rÐ   rÐ   �  s   „ óò!ó
.r   rÐ   c                 óü	  ‡+‡,— ddl mŠ+m}m}m}m}m} t        ||«       xr7 t        |t        t        f«       xr t        ||«      xr |j                  dk(   }|r1t        | ‰+«      r‰+j                  t        d | |f«      S t        | |«      S t        |t        «      s|g}nt        |«      }d}d }	g }
t        |«      D ]|  \  }}|du st        ||«      r |j                  s|	�d|› d|	› �} ||«      ‚|}	t        ||«      r.||j                  rt        |«      ndz  }|
j!                  |«       Œp|€Œs|dusŒx|dz  }Œ~ | j                  }||kD  rt#        d|› d|› d	�«      ‚|	�0||z
  }||	   }|du rt$        g|z  ||	|	dz    n|j'                  |«       t)        |
«      D ]  }||   |||dz    Œ d}d
}| j+                  «       }g }t-        «       Š,ˆ+ˆ,fd„} || «       g }t        |«      D ]ø  \  }}|€t$        ||<   |j!                  d«       d}Œ%||   }t        ||«      r*||_        ‰,j/                  |«       |j!                  |«       n”t        |t        t        f«      re|rct        |d   |«      rT|D ]  }‰,j/                  |«       Œ t1        ||d|› �«       |j3                  d„ |D «       «       d}|j!                  |«       n ||«       |j!                  |«       |dz  }Œú |r | j4                  |Ž } t)        |«      D ]  }||   |||dz    Œ t        | ‰+«      re| j6                  t        | j8                  «      }}t;        |«      }|D �cg c]  }t        |t<        «      rt?        |«      n|‘Œ! }}| j@                  }d}n| |}}|j                  t        |«      z
  }d}g } g }!d }"i }#d
}$t        |«      D ]™  \  }}%t        |%|«      r#‰,|%   dk(  rt$        ||<   | j!                  |%«       Œ5t        |%|«      rFd}$|"€t        | «      }"tC        |%«      \  }&}}'||#|<   |&||<   |D ]  }||!vsŒ|!j!                  |«       Œ Œ‡d}$| j!                  d«       Œ› |"�|!| |"|" |#jE                  «       D ]  \  }}tG        ||   ||!«      ||<   Œ |$rt        ||«      }(n|}(d})|dkD  r| j3                  dg|z  «       t        t)        | «      «      D ]#  \  }}*t        |*t<        «      sŒ|)| d|z
  <   |)dz  })Œ% |jI                  |(| |«      S c c}w )Nr   )rI   r   r¢   r¨   r`   r~   r   .z\at most one ... or unbound dimension list can exist in indexing list but found 2 at offsets z and z	at least z/ indices were supplied but the tensor only has z dimensions.Fc                 ód   •— t        | ‰«      sy | j                  D ]  }‰j                  |«       Œ y r   )r   r‘   rÖ   )r]   r   rI   Ú	dims_seens     €€r   Úadd_dimszt__getitem__.<locals>.add_dimsÛ  s1   ø€ Ü˜!˜WÔ%ØØ—‘ò 	 ˆAØ×Ñ˜QÕñ	 r   Tzoffset c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   r8   )r    r   s     r   r!   zt__getitem__.<locals>.<genexpr>ò  s   è ø€ Ò!6¨Q !§&¥&Ñ!6ùr9   r§   )%r   rI   r   r¢   r¨   r`   r~   r   r:   rV   rO   r    Ú_orig_getitemr;   r)   r<   rT   Ú
IndexErrorÚno_sliceÚbind_lenÚreversedr-   rÐ   rÖ   rF   r©   rX   rJ   rL   Úiterr"   ÚnextrM   rQ   Úitemsr^   rc   )-rd   r±   r   r¢   r¨   r`   r~   Ú	is_simpleÚdims_indexedÚexpanding_objectÚdimlistsr*   ÚsÚmsgrO   Úexpanding_ndimsÚobjr\   r-   Ú
view_sizesrÝ   Ú	dim_packsrA   Úszr   Úptensor_selfrg   Úinput_itrž   Úflat_inputsÚ
has_deviceÚto_padrˆ   Úindex_levelsÚtensor_insert_pointrœ   Úrequires_getindexrP   rf   r�   rŸ   Únext_positionalr+   rI   rÜ   s-                                              @@r   Út__getitem__rû   �  s»  ù€ ßO×Oô �u˜cÓ"Ð"ò 	@Ü˜5¤5¬$ -Ó0Ð0ò	@ô ˜˜zÓ*Ò>¨u¯z©z¸Q©Ð?ð ñ Ü�d˜GÔ$Ø×-Ñ-¬m¸TÀDÈ%À=ÓQÐQä   uÓ-Ð-ô �eœUÔ#Ø�‰ä�U“ˆà€LØÐØ€HÜ˜%Ó ò ‰ˆˆ1Ø�‰8”z ! WÔ-°a·j²jØÐ+ð+Ø+,¨#¨UÐ3CÐ2DðFð ñ )¨Ó-Ð-Ø Ðä�a˜Ô!Ø a§j¢jœC œF°aÑ7ˆLØ�O‰O˜AÕØ‰]˜q¨š|Ø˜AÑ‰Lðð  �9‰9€DØ�dÒÜØ˜�~Ð%TÐUYÐTZÐZfÐgó
ð 	
ð Ð#Ø Ñ-ˆØÐ$Ñ%ˆØ�#‰:äð>àñ> ˆEÐ"Ð%5¸Ñ%9Ñ:ð �L‰L˜Ô)ä�hÓò $ˆØ  ™8ˆˆa�!�a‘%Ñð$à€LØ€MØ�9‰9‹;€DØ€JÜ“€Iõ ñ ˆT„NØ€IÜ˜EÓ"ò ‰ˆˆ3Øˆ;ÜˆE�!‰HØ×Ñ˜aÔ Ø ‰Mà�lÑ#ˆBÜ˜#˜sÔ#Ø�”Ø× Ñ  Ô%Ø×!Ñ! "Õ%Ü˜C¤%¬ Ô/±C¼JÀsÈ1ÁvÈsÔ<SØò *�AØ×$Ñ$ SÕ)ð*ä" 2 s¨g°a°S¨MÔ:Ø×!Ñ!Ñ!6°#Ô!6Ô6Ø $�Ø× Ñ  Õ#á˜”Ø×!Ñ! "Ô%Ø˜AÑ‰Lð+ñ, Øˆt�y‰y˜*Ð%ˆÜ�iÓ ò $ˆØ  ™8ˆˆa�!�a‘%Ñð$ô �$˜Ô Ø#Ÿ|™|¬T°$·,±,Ó-?�fˆä˜“;ˆØLRÖSÀq¬°A´sÔ);”t˜H”~ÀÑBÐSˆÐSØ×%Ñ%ˆ
Ø‰à$(¨%�kˆØ×"Ñ"¤S¨Ó%5Ñ5ˆØˆ
à€MØ€LØÐØ€IØÐÜ˜KÓ(ò $‰ˆˆ3Ü�c˜3Ô I¨c¡N°aÒ$7Ü%ˆK˜‰NØ× Ñ  Õ%Ü˜˜ZÔ(Ø $ÐØ"Ð*Ü&)¨-Ó&8Ð#Ü!/°Ó!4ÑˆG�V˜QØ!ˆI�a‰LØ$ˆK˜‰NØò +�Ø˜LÒ(Ø ×'Ñ'¨Õ*ñ+ð !%ÐØ× Ñ  Õ#ð!$ð$ Ð&ØAMˆÐ)Ð*=Ð>à—_‘_Ó&ò M‰	ˆˆ6Ü& {°1¡~°v¸|ÓLˆ�AŠðMñ Ü˜|¨[Ó9‰àˆà€OØ�‚zØ×Ñ˜a˜S 6™\Ô*Üœ( =Ó1Ó2ò !‰ˆˆ1Ü�aœÕØ$3ˆM˜"˜q™&Ñ!Ø˜qÑ ‰Oð!ð
 ×!Ñ! &¨-¸ÓDÐDùòe Ts   Í	$S9c                 óŠ  — t        |t        «      r't        j                  | ||«      j	                  ||«      S d }|�t        ||d¬«      \  }}g }| D ]@  }t        ||d¬«      \  }}|�||k7  r|j                  ||«      }n|}|j                  |«       ŒB t        j                  |||¬«      }	|	j	                  ||dz   f||f«      S )NT)re   )Úoutr   )r   r"   r�   ÚstackrS   ri   Úmove_dimrT   )
ÚtensorsÚnew_dimr   rý   rS   Úptensorsr]   ÚptÚpiÚprs
             r   rþ   rþ   B  sÍ   € Ü�#”sÔÜ�{‰{˜7 C¨Ó-×3Ñ3°C¸ÓAÐAØ€EØ
€Ü+¨C°ÀÔF‰
ˆˆUØ€HØò ˆÜ'¨¨3¸4Ô@‰ˆˆBØÐ  u¢Ø—‘˜R Ó'‰BàˆEØ�‰˜Õðô 
�‰�X˜u¨#Ô	.€BØ�8‰8�U˜E A™IÐ&¨°#¨Ó7Ð7r   c                 ó4  ‡— ddl m}m} t        |t        «      st        d„ |D «       «      r%t        ‰|«      rt        d«      ‚t        | |‰¬«      S t        ‰|«      r%t        | |«      s
J d‰› �«       ‚t        | ‰«      \  } Š| j                  ‰«      }d}g }g }t        |«      D ]^  \  }	}
|
j                  r+|j                  |
j                  «       ||
j                  z  }Œ=|j                  d«       |j                  |	«       Œ` |rS||k  sJ d|› d	|› d
|› d�«       ‚||z
  }| t        |«      z   }|D ]"  }t        ||«      }|||   _	        |||<   ||z  }Œ$ n||k(  sJ d|› d	|› d
|› d�«       ‚t        ˆfd„t!        |t        | |‰¬«      «      D «       «      S )Nr   )rI   r   c              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr   )r   r"   )r    r]   s     r   r!   zsplit.<locals>.<genexpr>Z  s   è ø€ ò 6Ø Œ
�1”c×ñ6ùs   ‚zKwhen dim is specified as a Dim object, split sizes must also be dimensions.r   zTensor does not have dimension r   z,result dimensions are larger than original: r5   z (ú)z)result dimensions do not match original: c              3   óH   •K  — | ]  \  }}|j                  ‰|«      –— Œ y ­wr   rÁ   )r    r   r]   r   s      €r   r!   zsplit.<locals>.<genexpr>‚  s'   øè ø€ ò áˆAˆqð 	
�‰��Q�ñùs   ƒ")r   rI   r   r   r"   ÚanyrU   Ú_orig_splitri   r-   r;   r)   rT   r<   Úminr:   Úzip)rd   Úsplit_size_or_sectionsr   rI   r   r-   Útotal_bound_sizeÚunboundr´   r*   r   Úremaining_sizeÚ
chunk_sizeÚurñ   s     `            r   Úsplitr  W  sõ  ø€ ßäÐ(¬#Ô.´#ñ 6Ø$:ô6ô 3ô �c˜3ÔÜØ]óð ô ˜4Ð!7¸SÔAÐAä�#�sÔÜ˜$ Ô(ÐQÐ,KÈCÈ5Ð*QÓQÐ(Ü*¨4°Ó5‰	ˆˆcà�9‰9�S‹>€DØÐØ€GØ€EÜÐ0Ó1ò ‰ˆˆ1Ø�:Š:Ø�L‰L˜Ÿ™Ô Ø §¡Ñ&Ñà�L‰L˜ŒOØ�N‰N˜1Õðñ Ø 4Ò'ð 	
Ø:Ð;KÐ:LÈDÐQUÐPVÐVXÐYoÐXpÐpqÐró	
Ð'ð Ð 0Ñ0ˆØ&�¬#¨g«,Ñ6Ð7ˆ
Øò 	!ˆAÜ�Z Ó0ˆBØ-/Ð" 1Ñ%Ô*ØˆE�!‰HØ˜bÑ ‰Nñ		!ð   4Ò'ð 	
Ø7Ð8HÐ7IÈÈdÈVÐSUÐVlÐUmÐmnÐoó	
Ð'ô ó äÐ.´¸DÀ%ÈSÔ0QÓRôó ð r   )F)r   r   r   FT)r   N)r   )3r�   Úfunctorch._Cr   Ú_Cr   r   Úbatch_tensorr   r	   r   r¨   r   Ú	functoolsr
   Úsetr’   r   r   r%   rF   rQ   r^   ri   rm   ro   rV   rK   r:   r#   Ú
empty_dictÚclassmethodr    r¯   r²   ra   ÚobjectrÄ   rº   r½   rÊ   rÎ   Úslicerá   r`   rØ   rß   rÐ   rû   rþ   r  r  rp   r   r   ú<module>r     s%  ðó Ý "å Ý (ß ,ð �*‰*€Û Ý ñ �×'Ñ'Ó(€	ò&ò	ò7òò65òó.Rò*÷ñ ô ˆD�$ô ôˆT�5ô ð €
ð Ø5?ò K*ó ðK*ò\.òbòñ ‹x€ò%òð TXó)òX9ñ �‹;€à—‘×(Ñ(€÷.ñ .òoEóf8ð$ �l‰l× Ñ €ô.r   