Ë
    g^(hI	  ã                   óJ   — d dl Z ddlmZmZ ddlmZmZmZmZ  G d„ de«      Z	y)é    Né   )Ú_TensorÚTensor)Ú_dimsÚ_enable_layersÚllistÚltuplec                   ót   ‡ — e Zd Zd„ Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zeˆ fd„«       Z	d„ Z
ˆ xZS )ÚDelayedMulTensorc                 ó˜   — ||c| _         | _        d | _        d | _        |j                  xs |j                  | _        d | _        d | _        y ©N)Ú_lhsÚ_rhsÚ_dataÚ_levels_dataÚ_has_deviceÚ_batchtensor_dataÚ_tensor_data)ÚselfÚlhsÚrhss      ú^/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/functorch/dim/delayed_mul_tensor.pyÚ__init__zDelayedMulTensor.__init__   sF   € Ø" CÐˆŒ	�4”9ØˆŒ
Ø ˆÔØŸ?™?Ò=¨c¯o©oˆÔØ!%ˆÔØ ˆÕó    c                 óò   — | j                   €`t        | j                  j                  «      }| j                  j                  D ]  }||vsŒ|j                  |«       Œ t        |«      | _         | j                   S r   )r   r   r   Ú_levelsr   Úappendr	   )r   ÚlevelsÚls      r   r   zDelayedMulTensor._levels   sh   € à×ÑÐ$Ü˜4Ÿ9™9×,Ñ,Ó-ˆFØ—Y‘Y×&Ñ&ò %�Ø˜F’?Ø—M‘M !Õ$ð%ô !' v£ˆDÔØ× Ñ Ð r   c                 ó.  — | j                   €gt        | j                  «      5  t        d«       | j                  j
                  | j                  j
                  z  | _         d d d «       | j                   S | j                   S # 1 sw Y   | j                   S xY w)Nzbt multiply fallback)r   r   r   Úprintr   Ú_batchtensorr   ©r   s    r   r"   zDelayedMulTensor._batchtensor   s~   € à×!Ñ!Ð)Ü §¡Ó-ñ YÜÐ,Ô-Ø)-¯©×)?Ñ)?À$Ç)Á)×BXÑBXÑ)X�Ô&÷Yð ×%Ñ%Ð%ˆt×%Ñ%Ð%÷Yð ×%Ñ%Ð%ús   ¢>B Â Bc                 ó¤   — | j                   €9t        j                  | j                  | j                  «      j
                  | _         | j                   S r   )r   r   Úfrom_batchedr"   r   Ú_tensorr#   s    r   r&   zDelayedMulTensor._tensor'   sH   € à×ÑÐ$Ü &× 3Ñ 3Ø×!Ñ! 4×#3Ñ#3ó!ç‰gð Ôð × Ñ Ð r   c                 ó.   — | j                   j                  S r   )r"   Úndimr#   s    r   r(   zDelayedMulTensor.ndim/   s   € à× Ñ ×%Ñ%Ð%r   c                 ó*   •— t        t        ‰| �  «      S r   )r	   ÚsuperÚdims)r   Ú	__class__s    €r   r+   zDelayedMulTensor.dims3   s   ø€ ä”e‘g‘lÓ#Ð#r   c                 ó  ‡‡‡— t        |ddd«      }t        d«      Š| j                  Šˆˆfd„Š| j                  j                  | j                  j                  }}| j
                  j                  | j
                  j                  }}| j                  D �cg c]	  }||vsŒ|‘Œ }}dj                  g ˆfd„|D «       ¢d‘ˆfd„|D «       ¢d	‘ˆfd
„|D «       ¢«      }	t        j                  |	||f«      }
t        j                  |
|d«      S c c}w )Nr   FÚac                 ó>   •— t        ‰‰j                  | «      z   «      S r   )ÚchrÚindex)ÚdÚ
all_levelsÚns    €€r   Úto_charz%DelayedMulTensor.sum.<locals>.to_char<   s   ø€ Ü�q˜:×+Ñ+¨AÓ.Ñ.Ó/Ð/r   Ú c              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wr   © ©Ú.0r2   r5   s     €r   ú	<genexpr>z'DelayedMulTensor.sum.<locals>.<genexpr>D   ó   øè ø€ Ò0 ‘'˜!—*Ñ0ùó   ƒú,c              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wr   r8   r9   s     €r   r;   z'DelayedMulTensor.sum.<locals>.<genexpr>F   r<   r=   z->c              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wr   r8   r9   s     €r   r;   z'DelayedMulTensor.sum.<locals>.<genexpr>H   s   øè ø€ Ò1 ‘'˜!—*Ñ1ùr=   T)r   Úordr   r   r&   r   ÚjoinÚtorchÚeinsumr   Úfrom_positional)r   Údimr+   ÚplhsÚ	levelslhsÚprhsÚ	levelsrhsr   Ú
new_levelsÚfmtÚresult_datar3   r4   r5   s              @@@r   ÚsumzDelayedMulTensor.sum7   s  ú€ Ü�S˜!˜U EÓ*ˆÜ�‹HˆØ—\‘\ˆ
õ	0ð Ÿ)™)×+Ñ+¨T¯Y©Y×->Ñ->ˆiˆØŸ)™)×+Ñ+¨T¯Y©Y×->Ñ->ˆiˆØ!%§¡Ö?˜A°¸$²’aÐ?ˆ
Ð?Ø�g‰gðÛ0 iÔ0ðàðó 1 iÔ0ðð ð	ó
 2 jÔ1ðó
ˆô —l‘l 3¨¨t¨Ó5ˆÜ×%Ñ% k°:¸tÓDÐDùò @s   Â	D
ÂD
)Ú__name__Ú
__module__Ú__qualname__r   Úpropertyr   r"   r&   r(   r+   rN   Ú__classcell__)r,   s   @r   r   r      sr   ø„ ò!ð ñ!ó ð!ð ñ&ó ð&ð ñ!ó ð!ð ñ&ó ð&ð ó$ó ð$öEr   r   )
rC   r6   r   r   Ú	referencer   r   r   r	   r   r8   r   r   ú<module>rU      s#   ðó ç ß ;Ó ;ô@E�wõ @Er   