
    [ThlO                        S SK r S SKJr  SSKJr  SSKJr  SSKJ	r	Jr  \R                  r
S SKrS SKJr  \" \R                  5      rS rS	 rS
 rS rS rS rS#S jrS r " S S5      r " S S\\5      r " S S\\5      r0 r\\4S j5       rS r S r!S r"\#" 5       r$S r%S r& S$S jr'S r(\)" S5      r*\ RV                  RX                  r- " S S5      r.S  r/S%S! jr0\ RV                  Rb                  r2S&S" jr1g)'    Ndim   )op_properties)_enable_layers)tree_flattentree_map)reducec                 8    [        [        R                  U S5      $ Nr   )r
   operatormul)xs    O/var/www/auris/envauris/lib/python3.13/site-packages/functorch/dim/reference.pyprodr      s    (,,1%%    c                 f    SSK Jn  [        X5      (       a  U(       a   S5       eU $ U S:  a  X-
  $ U $ )Nr   Dimz8cannot preserve first-class dimensions with keepdim=Truer    r   
isinstance)dNkeepdimr   s       r   	_wrap_dimr      s6    !VVV{	
aur   c                    ^^ SSK Jn  [        X[        45      (       a  [	        [        U TT5      45      $ U(       a
   SU  35       e[	        UU4S jU  5       5      $ )Nr   r   z.expected a single dimension or int but found: c              3   >   >#    U  H  n[        UTT5      v   M     g 7fN)r   ).0r   r   r   s     r   	<genexpr>_dims.<locals>.<genexpr>/   s     6Aq)Aq'**As   )r   r   r   intltupler   )r   r   r   
single_dimr   s    ``  r   _dimsr&   )   sR    !3Z  yAw/122OKA3OO>6A666r   c           
         SSK Jn  [        S [        U5       5       5      n[	        U5      S:X  aL  US   u  pV[        S U 5       5      nX-  S:w  a   [        S U 5       5      nU" SU  SU 35      eX-  n	Xl        g [	        U5      S:  a   [        S	 U 5       5      nU" S
U SU 35      e[        S U 5       5      n
X
:w  a  U" SU  SU
 SU SU 35      eg )Nr   )DimensionMismatchErrorc              3   R   #    U  H  u  pUR                   (       a  M  X4v   M     g 7fr   )is_bound)r    irs      r   r!   %_bind_dims_to_size.<locals>.<genexpr>5   s     Jqzzfqfs   '
'r   c              3   ^   #    U  H#  oR                   (       d  M  UR                  v   M%     g 7fr   )r*   sizer    r,   s     r   r!   r-   8   s     <#Q&!&&#s   --c              3   p   #    U  H,  oR                   (       d  S O[        UR                  5      v   M.     g7f?Nr*   strr/   r0   s     r   r!   r-   :   s!     N#QZZ#S[@#   46z>inferred dimension does not evenly fit into larger dimension:  vs c              3   p   #    U  H,  oR                   (       d  S O[        UR                  5      v   M.     g7fr2   r4   r0   s     r   r!   r-   A   s!     JccQVV<cr6   z1cannot infer the size of two dimensions at once: z with sizes c              3   8   #    U  H  oR                   v   M     g 7fr   r/   r0   s     r   r!   r-   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_sizerH   2   s   (J3JJI
9~1<#<<
 A%N#NNE(PQYPZZ^_d^ef  )	Y!	JcJJ$?uLQVPWX
 	
 ,,,(3H:T(K[\e[ffjknjop   r   c                     SSK Jn  [        X5      (       a,  U R                  [	        U R
                  5      U R                  4$ U [	        [        U R                  * S5      5      S4$ )Nr   _Tensorr   T)	r   rK   r   _tensorllist_levels_has_devicerangendim)inprK   s     r   _tensor_levelsrS   M   sM    #{{E#++.??E%	1-.44r   c                    / n/ nSnU R                  5       nU H9  n UR                  U5      nUR                  U5        UR                  Xh   5        M;     U[	        [        [        U5      5      5      :w  a  U R                  " U6 n U(       a  U R                  " U6 n U $ ! [         a    UR                  S5        Sn M  f = f)NFr   T)	r/   indexappend
ValueErrorlistrP   r>   permuteview)	vfrom_levels	to_levelsrZ   rY   requires_viewr/   trC   s	            r   _match_levelsr`   V   s    DGM668D	!##A&CNN3KK	"	  $uS\*++IIwFFDMH  	!KKN M	!s   5BB?>B?c                    SSK Jn  U R                  [        U R                  5      pT UR                  U5      nSn[        U5       H-  n[        XX   [        5      (       d  M  XX==   S-  ss'   US-  nM/     U* S-
  XV'   UR                  XEU R                  5      U4$ ! [         aJ    U(       d  e SnUR                  " UR                  /UR                  5       Q76 nUR                  SS5         Nf = f)Nr   )Tensorr   )r   rb   rL   rM   rN   rU   rW   expandr/   insertrP   r   r#   from_positionalrO   )	selfr   
expand_dimrb   ptensorlevelsrC   idx_batchedr+   s	            r   _positional_no_permuterk   m   s    llE$,,$7Vll3 K3Zfi%%INI1K  ,"FK!!'43C3CDkQQ  ..;GLLN;as   B AC10C1c                 n    SSK Jn  [        X5      [        X5      :w  a  g[        X5      (       a  XL $ X:H  $ )Nr   r   Fr   )abr   s      r   seqro      s3    !Z//!vvr   c                   $    \ rS rSrSrS rS rSrg)isin    c                 :    U  H  n[        X5      (       d  M    g   g)NTF)ro   )rf   itemr   s      r   __contains__isin.__contains__   s    A4||  r   c                 ^    [        U 5       H  u  p#[        X5      (       d  M  Us  $    [        er   )r=   ro   rW   )rf   ru   r+   r   s       r   rU   
isin.index   s(    dODA4|| $ r   N)__name__
__module____qualname____firstlineno__	__slots__rv   rU   __static_attributes__rs   r   r   rq   rq      s    Ir   rq   c                       \ rS rSrSrSrg)rM      rs   Nrz   r{   r|   r}   r~   r   rs   r   r   rM   rM          Ir   rM   c                       \ rS rSrSrSrg)r$      rs   Nr   rs   r   r   r$   r$      r   r   r$   c                   ^^^^^^ SSK JmJmJm  SSKJn  U[        R                  R                  L aN  Uu  pg[        UT5      (       a9  [        UT5      (       a(  UR                  S:X  a  UR                  S:X  a  U" Xg5      $ [        5       n[        X445      u  pS mU	 H^  n[        UT5      (       d  M  UR                  (       a  UR                  mUR                   H  nX;  d  M
  UR                  U5        M     M`     UU4S jmU[         ;   a  [        5       m/ n[#        U	5       H  u  p[        UT5      (       d  M  [%        U5      u  nnn[        UT5      (       a-  UR                  (       d  Tb  UR'                  TR(                  S9nXU'   U H  nUT;  d  M  TR                  U5        M     UR                  UU45        M     U H  u  nn[+        X   UT5      X'   M     U
" U	5      u  p4U" U0 UD6nUUUU4S jn[-        UU5      $ UUU4S jn[/        U5         [1        S	U 35        U
" U4S
 jU	 5       5      u  p4U" U0 UD6n[-        UU5      sS S S 5        $ ! , (       d  f       g = f)Nr   )rK   rb   
TensorLike)DelayedMulTensorr   c                    > [        U T5      (       a;  U R                  nTb*  U R                  (       d  UR                  TR                  S9nU$ U $ )Ndevice)r   _batchtensorrO   tor   )r_   r,   rK   device_holding_tensors     r   unwrap"__torch_function__.<locals>.unwrap   sF    a!!A$0DD 5 < <D=Hr   r   c                 T   > [        U T5      (       a  TR                  U TTS L5      $ U $ r   )r   re   )r_   rb   r   r   result_levelss    r   wrap __torch_function__.<locals>.wrap   s7    !Z((--}&;4&G  Hr   c                 R   > [        U T5      (       a  TR                  U TS L5      $ U $ r   )r   from_batched)r_   rb   r   r   s    r   r   r      s.    !Z((**1.C4.OPPHr   zbatch_tensor for c              3   4   >#    U  H  nT" U5      v   M     g 7fr   rs   )r    fr   s     r   r!   %__torch_function__.<locals>.<genexpr>   s     $B	1VAYY	s   )r   rK   rb   r   delayed_mul_tensorr   torch__mul__r   rQ   rM   r   rO   r   dimsrV   	pointwiser=   rS   r   r   r`   r	   r   print)rf   origclsargskwargsr   lhsr@   all_dims	flat_args	unflattenr   r   	to_expandr+   rh   ri   _lresultr   rb   r   rK   r   r   r   s                        @@@@@@r   __torch_function__r      s&   --4u||###sG$$3((AA#C--wH'7I a!!}}()%VV$OOA& 	  y	i(DA!Z((%3A%6"q'**MM-9%jj0E0L0LjMG&!A-%,,Q/     !V- ) #IAv(v}MIL # +t&v&	 	 f%%	
 H%%dV,-$$B	$BBLD4*6*FD&) &%%s   !6I!!
I/c                 .   SSK JnJnJn  U R                  [        U R                  5      pe[        5       n/ nSn	U R                  n
U GH
  n[        U[        5      (       a+  UR                  U5        UR                  S U 5       5        MD  [        X5      (       a.  UR                  U5        UR                  UR                  5        M  [        U[        5      (       a?  [        XS5      nUR                  U5        UR                  UR                  U5      5        M  UR                  U5        UR                  [        S U 5       5      5        Sn	GM     [!        [#        [%        U5      5      5      n['        U5       HC  u  p UR)                  U5      nX   nXn	 X	 UR/                  US	5        UR/                  UU5        ME     UR0                  " U6 nS	n[#        [%        U5      S-
  S
S
5       H&  n[        Xm   [        5      (       d  M  US-  nU* Xm'   M(     UR3                  XVU R4                  5      nU	(       a.  UR6                  " / UQUR                  5       [%        U5      S  Q76 nU$ ! [*         a  nU" SU R,                   SU 35      UeS nAff = f)Nr   )r   DimensionBindErrorrb   Fc              3   8   #    U  H  oR                   v   M     g 7fr   r:   r    es     r   r!   positional.<locals>.<genexpr>  s     *1r;   c              3   8   #    U  H  oR                   v   M     g 7fr   r:   r   s     r   r!   r     s     /QVVQr;   Tztensor of dimensions z does not contain dim r   )r   r   r   rb   rL   rM   rN   rQ   r   DimListextendrV   r/   r#   r   r   rX   rP   r>   r=   rU   rW   r   rd   rY   re   rO   reshape)rf   r   r   r   rb   rh   ri   	flat_dimsrZ   
needs_viewrQ   r   rY   r+   rC   r   pseenr   s                      r   
positionalr      s4   11llE$,,$7VIDJ99Da!!QKK***QKK3!5)AQKKQ(QKK/Q//0J   5V%&G)$	,,q/C
 LKLaq! % oow'GD3v;?B+fi%%AIDFI , ##GT5E5EFFHHc)n6F(GHM%  	$'		{2HL	s   I,,
J6JJc                 F    SSK Jn  U  H  n[        X!5      (       d  M    g   g )Nr   r   Tr   )inputr   r+   s      r   _contains_dimr   (  s    a r   c                    [        U5      (       d/  U R                  [        R                  R                  S U /UQ75      $ UnU Vs/ s H  o3R
                  PM     snS/U R                  -  -   nU R                  " U6 n X   $ s  snf )Nr   )r   r   r   rb   rc   r/   rQ   )rf   sizesr   r   s       r   rc   rc   0  sx    &&u||':':D4.%.QQD!"TVVT"bTDII%55E;;D: #s   Bc                 J    [        U5      U:  a  X!   $ UR                  X5      $ r   )r>   get)nameoffsetr   r   defaults        r   _getargr   <  s%    
4y6|::d$$r   c                 4    [        U5      U:  a  XBU'   g XCU '   g r   )r>   )r   r   r   r   values        r   	_patchargr   B  s    
4y6Vtr   c           	      H   ^ ^^^^^^^^	 SSK JmJmJm	  UUU	UUUU UU4	S jnU$ )Nr   )r   rb   r   c                   >	^ ^^ [        TTX[        5      nU[        L d  T(       an  [        UT5      (       d]  [        T R                  5         [        ST 35        TR                  T" T R                  /UQ70 UD6T R                  5      sS S S 5        $ T(       a  [        STXS5      OSnT R                  [        T R                  5      snm[        UT R                  R                  UT5      n[        U4S jU 5       5      nT(       a/  U(       d(  [        T5       VV	s/ s H  u  pX;  d  M  U	PM     sn	nmOTm[!        U5      S:X  a  US   n[#        U5      n[%        TTXU5        UUUU 4S jn
[        T5         [        ST 35        T" U/UQ70 UD6n['        X5      sS S S 5        $ ! , (       d  f       GN'= fs  sn	nf ! , (       d  f       g = f)	Nzdim fallback batch_tensor for r   Fc              3   F   >#    U  H  nTR                  U5      v   M     g 7fr   rU   )r    r   ri   s     r   r!   $_wrap.<locals>.fn.<locals>.<genexpr>[  s     :TFLLOOTs   !r   r   c                 d   > [        U T5      (       a  TR                  U TTR                  5      $ U $ r   )r   re   rO   )r_   rb   r   
new_levelsrf   s    r   r   _wrap.<locals>.fn.<locals>.wraph  s0    !Z((--aT=M=MNNHr   zdim used batch_tensor for )r   _not_presentr   r   r   r   r   r   rO   rL   rM   rN   r&   rQ   r<   r=   r>   rX   r   r	   )rf   r   r   r   r   r_   r   dim_indicesr+   r   r   r,   ri   r   r   rb   r   dim_name
dim_offsetkeepdim_offsetr   r
   r%   s   `           @@r   fn_wrap.<locals>.fnN  s   h
D,G,:jc6J6J		*6tf=>****<T<V<d>N>N +* HNGI~tUCSX 	 LL%"5	6S$++00':F:T::'(1&(9R(9Q=Q!(9RJJ{q %K Dz(JkB	 	
 J'.tf56Q(((AD$ ('9 +* S  ('s$   >F-!F?0F?>%G-
F<
G)r   r   rb   r   )
r   r   r   r   r%   r
   r   r   rb   r   s
   `````` @@@r   _wrapr   I  s     *)"% "%H Ir   c           	      v    SSK Jn  [        [        R                  U 5      n[        X0[        U/UQ70 UD65        g )Nr   rJ   )r   rK   getattrr   rb   setattrr   )r   r   r   rK   r   s        r   _defr   u  s.    5<<&DG57778r   c                   *    \ rS rSrSS jrS rS rSrg)dim_trackeri  Nc                 0    [        5       U l        / U l        g r   )rM   r   count)rf   s    r   __init__dim_tracker.__init__  s    G	
r   c                     XR                   ;  a7  U R                   R                  U5        U R                  R                  S5        g g r   )r   rV   r   rf   r   s     r   recorddim_tracker.record  s5    IIIIQJJa  r   c                 R    U R                   U R                  R                  U5         $ r   )r   r   rU   r   s     r   __getitem__dim_tracker.__getitem__  s    zz$))//!,--r   )r   r   )returnN)rz   r{   r|   r}   r   r   r   r   rs   r   r   r   r     s    !
.r   r   c                   ^+^, SSK Jm+JnJnJnJnJn  [        X5      (       + =(       aH    [        U[        [        45      (       + =(       a&    [        X5      =(       a    UR                  S:H  (       + nU(       a4  [        U T+5      (       a  T+R                  [        S X45      $ [        X5      $ [        U[        5      (       d  U/nO[        U5      nSnS n	/ n
[        U5       H  u  pUSL d!  [        X5      (       a&  UR                  (       d  U	b  SU SU	 3nU" U5      eUn	[        X5      (       a3  XR                  (       a  [        U5      OS-  nU
R!                  U5        M  Uc  M  USLd  M  US-  nM     U R                  nX:  a  [#        SU SU S	35      eU	b.  X-
  nX   nUSL a  [$        /U-  XU	S-   & OUR'                  U5        [)        U
5       H  nX   XUS-   & M     SnS
nU R+                  5       n/ n[-        5       m,U+U,4S jnU" U 5        / n[        U5       GH  u  nnUc  [$        X'   UR!                  S5        SnM'  UU   n[        UU5      (       a*  UUl        T,R/                  U5        UR!                  U5        O[        U[        [        45      (       aq  U(       aj  [        US   U5      (       aV  U H  nT,R/                  U5        M     [1        UUSU 35        UR3                  S U 5       5        SnUR!                  U5        OU" U5        UR!                  U5        US-  nGM     U(       a  U R4                  " U6 n [)        U5       H  nX   XUS-   & M     [        U T+5      (       am  U R6                  [        U R8                  5      nn[;        U5      nU Vs/ s H%  n[        U[<        5      (       a  [?        U5      OUPM'     nnU R@                  nSnOXnnUR                  [        U5      -
  nSn/ n / n!S n"0 n#S
n$[        U5       H  u  nn%[        U%U5      (       a%  T,U%   S:X  a  [$        UU'   U R!                  U%5        M<  [        U%U5      (       aM  Sn$U"c  [        U 5      n"[C        U%5      u  n&nn'UU#U'   U&UU'   U H  nUU!;  d  M  U!R!                  U5        M     M  Sn$U R!                  S5        M     U"b  U!U U"U"& U#RE                  5        H  u  nn[G        UU   UU!5      UU'   M     U$(       a  [        UU5      n(OUn(Sn)US:  a  U R3                  S/U-  5        [        [)        U 5      5       H*  u  nn*[        U*[<        5      (       d  M  U)U SU-
  '   U)S-  n)M,     URI                  U(U U5      $ s  snf )Nr   )rK   r   r   r   rb   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                 r   > [        U T5      (       d  g U R                   H  nTR                  U5        M     g r   )r   r   r   )r_   r   rK   	dims_seens     r   add_dimst__getitem__.<locals>.add_dims  s/    !W%%AQ r   Tzoffset c              3   8   #    U  H  oR                   v   M     g 7fr   r:   )r    r   s     r   r!   t__getitem__.<locals>.<genexpr>  s     !6#Q&&#r;   r   )%r   rK   r   r   r   rb   r   r   r<   rX   rQ   r   _orig_getitemr=   r*   r>   rV   
IndexErrorno_slicebind_lenreversedr/   r   r   rH   r   rZ   rL   rN   iterr#   nextrO   rS   itemsr`   re   )-rf   r   r   r   r   rb   r   	is_simpledims_indexedexpanding_objectdimlistsr+   smsgrQ   expanding_ndimsobjr^   r/   
view_sizesr   	dim_packsrC   szr   ptensor_selfri   input_itr   flat_inputs
has_deviceto_padr   index_levelstensor_insert_pointr   requires_getindexrR   rh   r   r   next_positionalr,   rK   r   s-                                              @@r   t__getitem__r    s   OO u"" 	@55$-00	@ *>uzzQ?  dG$$--mTD=QQ -- eU##ULH% 8z!--ajj+++,#U3C2DF  )-- a!!jjCFa7LOOA]q|AL !  99D~%TUYTZZfg
 	
 #-%#:>> E%5%9: LL)h 8!a%  LM99;DJI  TNIE"3;EHa  Ml#B#s##  %!!"%C%//CJs1vs<S<SA$$S) "2sgaSM:!!!6#!66 $  #!!"%AL+ #, yy*%i  8!a% ! $  #||T$,,-?f;LRSFqAs););tH~BFS%%
$(k""S%55
MLIK(3c3IcNa$7%KN  %Z(( $"*&)-&8#!/!4GVQ!IaL$KNL( ''*  !%  #! )$ &AM)*=>__&	6&{1~v|LA ' |[9OzaS6\*(=121a$3M"q&!q O 3
 !!&-DDe Ts   -,V
c                 z   [        U[        5      (       a&  [        R                  " XU5      R	                  X!5      $ S nUb  [        X2SS9u  p4/ nU  H<  n[        XbSS9u  pxUb  X:w  a  UR                  X5      nOUnUR                  U5        M>     [        R                  " XTUS9n	U	R	                  XDS-   4X45      $ )NT)rg   )outr   )r   r#   r   stackrU   rk   move_dimrV   )
tensorsnew_dimr   r  rU   ptensorsr_   ptpiprs
             r   r  r  B  s    #s{{7-33CAAE
+CF
H'4@R'BE  
X#	.B88UAI&77r   c                 f  ^ SSK JnJn  [        U[        5      (       d  [        S U 5       5      (       a&  [        TU5      (       a  [        S5      e[        XTS9$ [        TU5      (       a)  [        X5      (       d
   ST 35       e[        U T5      u  n mU R                  T5      nSn/ n/ n[        U5       Hc  u  pU
R                  (       a+  UR                  U
R                  5        XjR                  -  nMA  UR                  S5        UR                  U	5        Me     U(       aP  Xe::  d   SU S	U S
U S35       eXV-
  nU* [        U5      -  * nU H  n[        X5      nXU   l	        XU'   X-  nM!     OXe:X  d   SU S	U S
U S35       e[        U4S j[!        U[        XTS95       5       5      $ )Nr   )rK   r   c              3   B   #    U  H  n[        U[        5      v   M     g 7fr   )r   r#   )r    r_   s     r   r!   split.<locals>.<genexpr>Z  s      6$:q
1c$: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: r7   z ()z)result dimensions do not match original: c              3   L   >#    U  H  u  pUR                  TU5      v   M     g 7fr   r   )r    r   r_   r   s      r   r!   r    s&      RDA 	
QRs   !$)r   rK   r   r   r#   anyrW   _orig_splitrk   r/   r=   r*   rV   r>   minr<   zip)rf   split_size_or_sectionsr   rK   r   r/   total_bound_sizeunboundr   r+   r   remaining_size
chunk_sizeur  s     `            r   splitr*  W  s   (#..# 6$:6 3 3 c3]  4SAA#s$((Q,KC5*QQ(*45	c99S>DGE01::LL &LLONN1 2 ' 	
:;K:LDQUPVVXYoXppqr	
' 0&#g,67
AZ0B-/1%*!H N	   ' 	
78H7IdVSUVlUmmno	
'  .DS0Q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&   rH   rS   r`   rk   ro   rq   rX   rM   r<   r$   
empty_dictclassmethodr   r   r   rc   objectr   r   r   r   r   slicer   rb   r   r   r   r  r  r*  r!  rs   r   r   <module>r4     s%    "  ( , **   ''(	&	765.R*  D$ T5  
 5? K* K*\.b x% TX)X9 ;((. .oEf8$ ll  .r   