
    3j'                    
   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
rS SKJrJr  S SKJr  S SKJrJr  S SKr " S S\R*                  5      r " S S\R*                  5      r " S	 S
\R*                  5      r " S S\R*                  5      r " S S\R*                  5      r " S S\R*                  5      r " S S\R*                  5      r " S S\R*                  5      r " S S\R*                  5      rS rSES\R@                  S\\!\!4   S\!4S jjr"Sr#S r$SFS\RJ                  S\RJ                  S \!4S! jjr&S"\RJ                  S#\RJ                  S$\RJ                  4S% jr'S&\RP                  S'\RP                  S(\)S)\*S*\!4
S+ jr+   SGS&\RP                  S'\RP                  S(\)S)\*S*\!4
S, jjr, " S- S.\R*                  5      r-SHS/ jr. SHS0 jr/SIS1 jr0SJS2 jr1 " S3 S4\R*                  5      r2 " S5 S6\R*                  5      r3SKS7 jr4 " S8 S9\R*                  5      r5 " S: S;\R*                  5      r6 " S< S=\R*                  5      r7S S>K8J9r9J:r:J;r;J<r<   " S? S@\R*                  5      r= " SA SB\5      r>SC\>4SD jr?g)L    N)Tuple	TypedDict)override)ComfyExtensionioc                   T    \ rS rSr\S 5       r\SS\R                  4S jj5       rSr	g)WanImageToVideo   c                 R   [         R                  " SS[         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      [         R
                  R                  SSS[        R                  SS	9[         R
                  R                  S
SS[        R                  SS	9[         R
                  R                  SSS[        R                  SS	9[         R
                  R                  SSSSS9[         R                  R                  SSS9[         R                  R                  SSS9/	[         R                  R                  SS9[         R                  R                  SS9[         R                  R                  SS9/S9$ )Nr	   model/conditioning/wanpositivenegativevaewidth@  r
   defaultminmaxstepheight  lengthQ         
batch_size   r   r   r   clip_vision_outputToptionalstart_imagedisplay_namelatentnode_idcategoryinputsoutputsr   SchemaConditioningInputVaeIntnodesMAX_RESOLUTIONClipVisionOutputImageOutputLatentclss    6/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_wan.pydefine_schemaWanImageToVideo.define_schema   sA   yy%-%%j1%%j1U#Wcru?S?SZ\]Xs@T@T[]^Xrqe>R>RYZ[\1!F##))*>)N}t<
 &&J&?&&J&?		  h 7
 	
    Nreturnc
                    [         R                  " USUS-
  S-  S-   US-  US-  /[        R                  R	                  5       S9n
UGb^  [        R
                  R                  US U R                  SS5      XESS5      R                  SS5      n[         R                  " XeXHR                  S   4UR                  UR                  S	9S
-  nXS UR                  S   & UR                  US S 2S S 2S S 2S S24   5      n[         R                  " SSU
R                  S   UR                  S   UR                  S   4UR                  UR                  S	9nSUS S 2S S 2S UR                  S   S-
  S-  S-   24'   [        R                  " XUS.5      n[        R                  " X,US.5      nU	b2  [        R                  " USU	05      n[        R                  " USU	05      n0 nXS'   [        R                   " XU5      $ )Nr
   r   r      devicebilinearcenterrB   dtype      ?r                 concat_latent_imageconcat_maskr    samples)torchzeroscomfymodel_managementintermediate_deviceutilscommon_upscalemovedimonesshaperB   rG   encodenode_helpersconditioning_set_valuesr   
NodeOutput)r9   r   r   r   r   r   r   r   r#   r    r&   imagerN   mask
out_latents                  r:   executeWanImageToVideo.execute(   s^   j"
q/@A.EvQR{TY]^T^_hmh~h~  iS  iS  iU  V"++44[&5I5Q5QRTVW5XZ_isu}~  G  G  HI  KM  NKJJ7H7H7LMVaVhVhp{  qB  qB  C  FI  IE+6';$$Q'("%**U1aBQB;-?"@::q!V\\!_6I6O6OPR6SUhUnUnoqUrs  }H  }O  }O  Wb  Wh  Wh  iDADDA=+++A.2q8A===>#;;H  CG  GH  IH#;;H  CG  GH  IH)#;;HG[]oFpqH#;;HG[]oFpqH
 &9}}X<<r=    NN
__name__
__module____qualname____firstlineno__classmethodr;   r   r^   rb   __static_attributes__rd   r=   r:   r	   r	      sB    
 
, =  @B  @M  @M = =r=   r	   c                   T    \ rS rSr\S 5       r\SS\R                  4S jj5       rSr	g)WanFunControlToVideo@   c                    [         R                  " SS[         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      [         R
                  R                  SSS[        R                  SS	9[         R
                  R                  S
SS[        R                  SS	9[         R
                  R                  SSS[        R                  SS	9[         R
                  R                  SSSSS9[         R                  R                  SSS9[         R                  R                  SSS9[         R                  R                  SSS9/
[         R                  R                  SS9[         R                  R                  SS9[         R                  R                  SS9/S9$ )Nrn   "model/conditioning/wan/fun controlr   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   r    Tr!   r#   control_videor$   r&   r'   r,   r8   s    r:   r;   "WanFunControlToVideo.define_schemaA   sU   yy*9%%j1%%j1U#Wcru?S?SZ\]Xs@T@T[]^Xrqe>R>RYZ[\1!F##))*>)N}t<> &&J&?&&J&?		  h 7
 	
r=   Nr>   c                    [         R                  " USUS-
  S-  S-   US-  US-  /[        R                  R	                  5       S9n[         R                  " USUS-
  S-  S-   US-  US-  /[        R                  R	                  5       S9n[        R
                  R                  5       R                  U5      nUR                  SSSSS5      nUb  [        R                  R                  US U R                  SS5      XESS	5      R                  SS5      nUR                  US S 2S S 2S S 2S S
24   5      nUS S 2S S 2S UR                  S   24   US S 2SS 2S UR                  S   24'   U
b  [        R                  R                  U
S U R                  SS5      XESS	5      R                  SS5      n
UR                  U
S S 2S S 2S S 2S S
24   5      nUS S 2S S 2S UR                  S   24   US S 2S S2S UR                  S   24'   [        R                  " USU05      n[        R                  " USU05      nU	b2  [        R                  " USU	05      n[        R                  " USU	05      n0 nXS'   [         R"                  " XU5      $ )Nr
   r   r   r@   rA   rJ   rC   rD   rE   rI   rN   r    rP   )rQ   rR   rS   rT   rU   latent_formatsWan21process_outrepeatrV   rW   rX   r[   rZ   r\   r]   r   r^   )r9   r   r   r   r   r   r   r   r#   r    rr   r&   concat_latentrN   ra   s                  r:   rb   WanFunControlToVideo.executeY   s   j"
q/@A.EvQR{TY]^T^_hmh~h~  iS  iS  iU  VZvza6G15LfXYk[`de[e$fot  pF  pF  pZ  pZ  p\  ],,224@@O%,,Q1a;"++44[&5I5Q5QRTVW5XZ_isu}~  G  G  HI  KM  NK"%**[Aq"1"-E"FATUVWXYpZgZmZmnoZpYpUpAqM!BC =!4!:!:1!= ==>$!KK66}Wf7M7U7UVXZ[7\^cmw  zB  C  K  K  LM  OQ  RM"%**]1aBQB;-G"HATUVWXYpZgZmZmnoZpYpUpAqM!CRC =!4!:!:1!= ==>77CXZgBhi77CXZgBhi)#;;HG[]oFpqH#;;HG[]oFpqH
 &9}}X<<r=   rd   NNNrf   rd   r=   r:   rn   rn   @   sB    
 
. =  TV  Ta  Ta = =r=   rn   c                   T    \ rS rSr\S 5       r\SS\R                  4S jj5       rSr	g)Wan22FunControlToVideou   c                 R   [         R                  " SS[         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      [         R
                  R                  SSS[        R                  SS	9[         R
                  R                  S
SS[        R                  SS	9[         R
                  R                  SSS[        R                  SS	9[         R
                  R                  SSSSS9[         R                  R                  SSS9[         R                  R                  SSS9/	[         R                  R                  SS9[         R                  R                  SS9[         R                  R                  SS9/S9$ )Nr}   rq   r   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   	ref_imageTr!   rr   r$   r&   r'   r   r-   r.   r/   r0   r1   r2   r3   r5   r6   r7   r8   s    r:   r;   $Wan22FunControlToVideo.define_schemav   s;   yy,9%%j1%%j1U#Wcru?S?SZ\]Xs@T@T[]^Xrqe>R>RYZ[\1!F{T:>
 &&J&?&&J&?		  h 7
 	
r=   Nr>   c                    UR                  5       nUR                  n[        R                  " X|US-
  S-  S-   X[-  XK-  /[        R
                  R                  5       S9n[        R                  " X|US-
  S-  S-   X[-  XK-  /[        R
                  R                  5       S9nUS:X  a.  [        R                  R                  5       R                  U5      nO-[        R                  R                  5       R                  U5      nUR                  SSSSS5      n[        R                  " SSUR                  S   S-  UR                  S   UR                  S   45      nU	b  [        R                  R                  U	S U R!                  SS5      XESS	5      R!                  SS5      n	UR#                  U	S S 2S S 2S S 2S S
24   5      nUS S 2S S 2S UR                  S   24   US S 2US 2S UR                  S   24'   SUS S 2S S 2S U	R                  S   S
-   24'   S nUbe  [        R                  R                  US S R!                  SS5      XESS	5      R!                  SS5      nUR#                  US S 2S S 2S S 2S S
24   5      nU
b  [        R                  R                  U
S U R!                  SS5      XESS	5      R!                  SS5      n
UR#                  U
S S 2S S 2S S 2S S
24   5      nUS S 2S S 2S UR                  S   24   US S 2S U2S UR                  S   24'   UR%                  SUR                  S   S-  SUR                  S
   UR                  S   5      R'                  SS5      n[(        R*                  " XXS.5      n[(        R*                  " X.XS.5      nUb2  [(        R*                  " USU/0SS9n[(        R*                  " USU/0SS9n0 nUUS'   [,        R.                  " XU5      $ )Nr   r   rA   0   rJ   rK   rC   rD   rE   rI   rL   r   )rN   rO   concat_mask_indexreference_latentsTappendrP   )spacial_compression_encodelatent_channelsrQ   rR   rS   rT   rU   ru   Wan22rw   rv   rx   rY   rZ   rV   rW   rX   r[   view	transposer\   r]   r   r^   )r9   r   r   r   r   r   r   r   r   r#   rr   spacial_scaler   r&   ry   r`   rN   
ref_latentra   s                      r:   rb   Wan22FunControlToVideo.execute   sx   668--jVaZA<MQR;RTZTkmr  nD  E  NS  Nd  Nd  Nx  Nx  Nz  {ZFQJSTCTXYBY[a[rty  uK  %L  UZ  Uk  Uk  U  U  UA  Bb !00668DD]SM!00668DD]SM%,,Q1a;zz1aa1!4fll26FUWHXYZ"++44[&5I5Q5QRTVW5XZ_isu}~  G  G  HI  KM  NK"%**[Aq"1"-E"FNabcdef}gtgzgz{|g}f}b}N~M!O,-J.A.G.G.J-JJK47DA0))!,q0001
 229Ra=3H3HQ3OQV`jltu}}~  BD  EIIaArrk$:;J$!KK66}Wf7M7U7UVXZ[7\^cmw  zB  C  K  K  LM  OQ  RM"%**]1aBQB;-G"HNabcdef}gtgzgz{|g}f}b}N~M!,_,-J.A.G.G.J-JJKyyDJJqMQ.4::a=$**Q-PZZ[\^_`77x|  Cd  e77x|  Cd  e!#;;HGZ]g\hFirvwH#;;HGZ]g\hFirvwH
 &
9}}X<<r=   rd   r{   rf   rd   r=   r:   r}   r}   u   sB    
 
, &=  KM  KX  KX &= &=r=   r}   c                   T    \ rS rSr\S 5       r\SS\R                  4S jj5       rSr	g)WanFirstLastFrameToVideo   c                    [         R                  " SS[         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      [         R
                  R                  SSS[        R                  SS	9[         R
                  R                  S
SS[        R                  SS	9[         R
                  R                  SSS[        R                  SS	9[         R
                  R                  SSSSS9[         R                  R                  SSS9[         R                  R                  SSS9[         R                  R                  SSS9[         R                  R                  SSS9/[         R                  R                  SS9[         R                  R                  SS9[         R                  R                  SS9/S9$ )Nr   r   r   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   clip_vision_start_imageTr!   clip_vision_end_imager#   	end_imager$   r&   r'   r,   r8   s    r:   r;   &WanFirstLastFrameToVideo.define_schema   so   yy.-%%j1%%j1U#Wcru?S?SZ\]Xs@T@T[]^Xrqe>R>RYZ[\1!F##))*Cd)S##))*AD)Q}t<{T: &&J&?&&J&?		  h 7!
 	
r=   Nr>   c                    UR                  5       n[        R                  " XsR                  US-
  S-  S-   X\-  XL-  /[        R
                  R                  5       S9nUbE  [        R                  R                  US U R                  SS5      XESS5      R                  SS5      nU	bE  [        R                  R                  X* S  R                  SS5      XESS5      R                  SS5      n	[        R                  " XeUS45      S-  n[        R                  " SSUR                  S	   S-  UR                  S
   UR                  S   45      nUb/  XS UR                  S   & SUS S 2S S 2S UR                  S   S-   24'   U	b.  XU	R                  S   * S & SUS S 2S S 2U	R                  S   * S 24'   UR                  US S 2S S 2S S 2S S24   5      nUR                  SUR                  S	   S-  SUR                  S   UR                  S   5      R                  SS	5      n[        R                   " UUUS.5      n[        R                   " UUUS.5      nS nU
b  U
nUbV  UbQ  [        R"                  " UR$                  UR$                  /S
S9n[        R&                  R)                  5       nUUl        OUnUb2  [        R                   " USU05      n[        R                   " USU05      n0 nUUS'   [*        R,                  " XU5      $ )Nr   r   rA   rC   rD   rE   rI   rH   rJ   rK   r   rL   rM   dimr    rP   )r   rQ   rR   r   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r   r   r\   r]   catpenultimate_hidden_statesclip_visionr6   r   r^   )r9   r   r   r   r   r   r   r   r#   r   r   r   r   r&   r_   r`   rN   r    statesra   s                       r:   rb    WanFirstLastFrameToVideo.execute   sw   668j*=*=!PQ@QUV?VX^Xoqv  rH  I  RW  Rh  Rh  R|  R|  R~  "++44[&5I5Q5QRTVW5XZ_isu}~  G  G  HI  KM  NK 229WX3F3N3NrST3UW\fprz{  D  D  EF  HJ  KI

FE156<zz1aa1!4fll26FUWHXYZ"+6';$$Q'(47DA0))!,q0001 *39??1%%&'/2DA	**++,!jjq!Q{);<yyDJJqMQ.4::a=$**Q-PZZ[\^_`77Zm  C  CD  E77Zm  C  CD  E!".!8 ,!-$6$P$PRg  SB  SB  $C  IK  L%*%6%6%=%=%?"?E"<%:")#;;HG[]oFpqH#;;HG[]oFpqH
 &
9}}X<<r=   rd   NNNNrf   rd   r=   r:   r   r      sB    
 
0 *=  qs  q~  q~ *= *=r=   r   c                   T    \ rS rSr\S 5       r\SS\R                  4S jj5       rSr	g)WanFunInpaintToVideo   c                    [         R                  " SS[         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      [         R
                  R                  SSS[        R                  SS	9[         R
                  R                  S
SS[        R                  SS	9[         R
                  R                  SSS[        R                  SS	9[         R
                  R                  SSSSS9[         R                  R                  SSS9[         R                  R                  SSS9[         R                  R                  SSS9/
[         R                  R                  SS9[         R                  R                  SS9[         R                  R                  SS9/S9$ )Nr   z"model/conditioning/wan/fun inpaintr   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   r    Tr!   r#   r   r$   r&   r'   r,   r8   s    r:   r;   "WanFunInpaintToVideo.define_schema   sU   yy*9%%j1%%j1U#Wcru?S?SZ\]Xs@T@T[]^Xrqe>R>RYZ[\1!F##))*>)N}t<{T: &&J&?&&J&?		  h 7
 	
r=   Nr>   c                 <    [        5       nUR                  XX4XVXxXS9
$ )N)r#   r   r   )r   rb   )r9   r   r   r   r   r   r   r   r#   r   r    flfvs               r:   rb   WanFunInpaintToVideo.execute  s.    ')||HFJ  |E|  r  	rr=   rd   r{   rf   rd   r=   r:   r   r      sE    
 
. r  PR  P]  P] r rr=   r   c                   T    \ rS rSr\S 5       r\SS\R                  4S jj5       rSr	g)WanVaceToVideoi  c                 
   [         R                  " SSS/S[         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      [         R
                  R                  SS	S
[        R                  S
S9[         R
                  R                  SSS
[        R                  S
S9[         R
                  R                  SSS[        R                  SS9[         R
                  R                  SSSSS9[         R                  R                  SSSSSS9[         R                  R                  SSS9[         R                  R                  SSS9[         R                  R                  SSS9/[         R                  R                  SS9[         R                  R                  SS9[         R                  R                  S S9[         R
                  R                  S!S9/S"9$ )#Nr   zvideo conditioningzvideo controlzmodel/conditioning/wan/vacer   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   strength      ?rL        @@{Gz?rr   Tr!   control_masksreference_imager$   r&   trim_latentr(   search_aliasesr)   r*   r+   )r   r-   r.   r/   r0   r1   r2   r3   Floatr5   Maskr6   r7   r8   s    r:   r;   WanVaceToVideo.define_schema  s   yy$0/B2%%j1%%j1U#Wcru?S?SZ\]Xs@T@T[]^Xrqe>R>RYZ[\1!Fz3CVRVW>o=04@ &&J&?&&J&?		  h 7=9	#
 	
r=   Nr>   c                    US-
  S-  S-   nU	b  [         R                  R                  U	S U R                  SS5      XESS5      R                  SS5      n	U	R                  S   U:  a@  [
        R                  R                  R                  U	SSSSSSSXiR                  S   -
  4SS9n	O[
        R                  " XeUS	45      S-  n	Ub  [         R                  R                  US S R                  SS5      XESS5      R                  SS5      nUR                  US S 2S S 2S S 2S S	24   5      n[
        R                  " U[         R                  R                  5       R                  [
        R                  " U5      5      /SS
9nU
c  [
        R                  " XeUS45      nOU
nUR                   S	:X  a  UR#                  S5      n[         R                  R                  US U XESS5      R                  SS5      nUR                  S   U:  a@  [
        R                  R                  R                  USSSSSSSXmR                  S   -
  4SS9nU	S-
  n	U	SU-
  -  S-   nX-  S-   nUR                  US S 2S S 2S S 2S S	24   5      nUR                  US S 2S S 2S S 2S S	24   5      n[
        R                  " X4SS
9nUb  [
        R                  " UU4SS
9nSnUU-  nUU-  nUR%                  UUUUU5      nUR'                  SSSSS	5      nUR)                  UU-  UUU5      n[
        R                  R                  R+                  UR#                  S5      UUU4SS9R-                  S5      nSnUbi  [
        R                  " US S 2S UR                  S   2S S 2S S 24   5      n[
        R                  " UU4SS
9nXR                  S   -  nUR                  S   nUR#                  S5      n[.        R0                  " UU/U/U/S.SS9n[.        R0                  " UU/U/U/S.SS9n[
        R2                  " USXS-  US-  /[         R4                  R7                  5       S9n0 nUUS'   [8        R:                  " XUU5      $ )Nr   r   rC   rD   rE   r   rH   )valuerI   r   r   rJ   r@   nearest-exactsizemode)vace_frames	vace_maskvace_strengthTr   r
   rA   rP   )rS   rV   rW   rX   rZ   rQ   nn
functionalpadrY   r[   r   ru   rv   rw   
zeros_likendim	unsqueezer   permutereshapeinterpolatesqueezer\   r]   rR   rT   rU   r   r^   )r9   r   r   r   r   r   r   r   r   rr   r   r   latent_lengthr`   inactivereactivecontrol_video_latent
vae_strideheight_mask
width_maskr   mask_padr&   ra   s                           r:   rb   WanVaceToVideo.execute9  s"    1**a/$!KK66}Wf7M7U7UVXZ[7\^cmw  zB  C  K  K  LM  OQ  RM""1%. % 3 3 7 71aQRTUWXZ[]cfyfyz{f|]|G}  FI 7  !J!JJq'ABSHM&#kk88!9L9T9TUWYZ9[]blv  yA  B  J  J  KL  NP  QO!jjAq"1")EFO#ii%:N:N:T:T:V:b:bchcscs  uD  dE  ;F  )G  MN  OO ::vua89D DyyA~~~a(;;--d7FmUJX`aiijkmopDzz!}v%xx**..taAq!Q6T^T^_`TaKa5bjm.n%+!QX.#5!(C/::hq!Q{34::hq!Q{34$yy()=1E&#(99o?S-TZ[#\ 

*j(
yyj*jQ||Aq!Q*||J3V[*Uxx""..t~~a/@WbdnGo  wF.  G  O  O  PQ  R&''Q0I1F1Fq1I0I1a-O(PQH99h-15D22155M)//2K~~a 77SgRhx|w}  RZ  Q[  C\  ei  j77SgRhx|w}  RZ  Q[  C\  ei  jj"mq[%ST*U^c^t^t  _I  _I  _K  L
 &
9}}X[IIr=   rd   r{   rf   rd   r=   r:   r   r     sE    
 
4 9J  ]_  ]j  ]j 9J 9Jr=   r   c                   P    \ rS rSr\S 5       r\S\R                  4S j5       rSr	g)TrimVideoLatentiu  c                     [         R                  " SSS[         R                  R                  S5      [         R                  R                  SSSSS9/[         R                  R                  5       /S	9$ )
Nr   zTrim Video Latentzmodel/latentrP   trim_amountr   i r   )r(   r%   r)   r*   r+   )r   r-   r7   r/   r1   r6   r8   s    r:   r;   TrimVideoLatent.define_schemav  s`    yy%,#			*]A1%H
 		  "
 	
r=   r>   c                 z    UR                  5       nUS   nUS S 2S S 2US 24   US'   [        R                  " U5      $ )NrP   )copyr   r^   )r9   rP   r   samples_outs1s        r:   rb   TrimVideoLatent.execute  s>    llnY!#Aq+,$6!7I}}[))r=   rd   Nrf   rd   r=   r:   r   r   u  s3    
 
 *bmm * *r=   r   c                   T    \ rS rSr\S 5       r\SS\R                  4S jj5       rSr	g)WanCameraImageToVideoi  c                    [         R                  " SS[         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      [         R
                  R                  SSS[        R                  SS	9[         R
                  R                  S
SS[        R                  SS	9[         R
                  R                  SSS[        R                  SS	9[         R
                  R                  SSSSS9[         R                  R                  SSS9[         R                  R                  SSS9[         R                  R                  SSS9/
[         R                  R                  SS9[         R                  R                  SS9[         R                  R                  SS9/S9$ )Nr   zmodel/conditioning/wan/camerar   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   r    Tr!   r#   camera_conditionsr$   r&   r'   )r   r-   r.   r/   r0   r1   r2   r3   r4   r5   WanCameraEmbeddingr6   r7   r8   s    r:   r;   #WanCameraImageToVideo.define_schema  s[   yy+4%%j1%%j1U#Wcru?S?SZ\]Xs@T@T[]^Xrqe>R>RYZ[\1!F##))*>)N}t<%%++,?$+O &&J&?&&J&?		  h 7
 	
r=   Nr>   c                    [         R                  " USUS-
  S-  S-   US-  US-  /[        R                  R	                  5       S9n[         R                  " USUS-
  S-  S-   US-  US-  /[        R                  R	                  5       S9n[        R
                  R                  5       R                  U5      nUGb}  [        R                  R                  US U R                  SS5      XESS5      R                  SS5      nUR                  US S 2S S 2S S 2S S	24   5      nUS S 2S S 2S UR                  S
   24   US S 2S S 2S UR                  S
   24'   [         R                  " SSUR                  S
   S-  UR                  S   UR                  S   45      nSUS S 2S S 2S UR                  S   S	-   24'   UR                  SUR                  S
   S-  SUR                  S	   UR                  S   5      R                  SS
5      n[         R"                  " XUS.5      n[         R"                  " X,US.5      nU
b2  [         R"                  " USU
05      n[         R"                  " USU
05      nU	b2  [         R"                  " USU	05      n[         R"                  " USU	05      n0 nXS'   [$        R&                  " XU5      $ )Nr
   r   r   r@   rA   rC   rD   rE   rI   rJ   rK   rL   r   rM   r   r    rP   )rQ   rR   rS   rT   rU   ru   rv   rw   rV   rW   rX   r[   rZ   rY   r   r   r\   r]   r   r^   )r9   r   r   r   r   r   r   r   r#   r    r   r&   ry   rN   r`   ra   s                   r:   rb   WanCameraImageToVideo.execute  s   j"
q/@A.EvQR{TY]^T^_hmh~h~  iS  iS  iU  VZvza6G15LfXYk[`de[e$fot  pF  pF  pZ  pZ  p\  ],,224@@O"++44[&5I5Q5QRTVW5XZ_isu}~  G  G  HI  KM  NK"%**[Aq"1"-E"F?RSTUVWnXeXkXklmXnWnSn?oM!A;288;;;<::q!V\\!_q%8&,,r:JFLLY[L\]^D47DA0))!,q000199Q

1 2Atzz!}djjQRmT^^_`bcdD#;;H  }A  GB  CH#;;H  }A  GB  CH(#;;HGZ\mFnoH#;;HGZ\mFnoH)#;;HG[]oFpqH#;;HG[]oFpqH
 &9}}X<<r=   rd   r{   rf   rd   r=   r:   r   r     sB    
 
. =  XZ  Xe  Xe = =r=   r   c                   P    \ rS rSr\S 5       r\S\R                  4S j5       rSr	g)WanPhantomSubjectToVideoi  c                 P   [         R                  " SS[         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      [         R
                  R                  SSS[        R                  SS	9[         R
                  R                  S
SS[        R                  SS	9[         R
                  R                  SSS[        R                  SS	9[         R
                  R                  SSSSS9[         R                  R                  SSS9/[         R                  R                  SS9[         R                  R                  SS9[         R                  R                  SS9[         R                  R                  SS9/S9$ )Nr   z&model/conditioning/wan/phantom subjectr   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   imagesTr!   r$   negative_textnegative_img_textr&   r'   r   r8   s    r:   r;   &WanPhantomSubjectToVideo.define_schema  s=   yy.=%%j1%%j1U#Wcru?S?SZ\]Xs@T@T[]^Xrqe>R>RYZ[\1!Fx$7	 &&J&?&&O&D&&4G&H		  h 7	
 	
r=   r>   c	           
         [         R                  " USUS-
  S-  S-   US-  US-  /[        R                  R	                  5       S9n	Un
UGb!  [        R
                  R                  US U R                  SS5      XESS5      R                  SS5      n/ nU H5  nXR                  UR                  S	5      S S 2S S 2S S 2S S
24   5      /-  nM7     [         R                  " USS9n[        R                  " USU05      n[        R                  " USU05      n
[        R                  " US[        R                  R                  5       R                  [         R                   " U5      5      05      n0 nXS'   ["        R$                  " XX.5      $ )Nr
   r   r   r@   rA   rC   rD   rE   r   rI   rJ   r   time_dim_concatrP   )rQ   rR   rS   rT   rU   rV   rW   rX   r[   r   r   r\   r]   ru   rv   rw   r   r   r^   )r9   r   r   r   r   r   r   r   r   r&   cond2latent_imagesirN   ra   s                  r:   rb    WanPhantomSubjectToVideo.execute  s   j"
q/@A.EvQR{TY]^T^_hmh~h~  iS  iS  iU  V[[//w0G0GA0NPU_ikst||}~  AC  DFM**Q[[^Aq!RaRK-H"I!JJ "'))Mq"A#;;HGXZmFnoH 88DUWjCklE#;;HGXZ_ZnZnZtZtZv  [C  [C  DI  DT  DT  Uh  Di  [j  Gk  lH
 &9}}XhCCr=   rd   Nrf   rd   r=   r:   r   r     s9    
 
, D\^\i\i D Dr=   r   c                 b   / n [        U [        5      (       a8  [        R                  " U R	                  SS5      5      nUR                  U5        O@U  H:  n[        R                  " UR	                  SS5      5      nUR                  U5        M<     U(       a&  [        US   [        5      (       a  SUS   ;   a  U/nU$ U(       aL  [        US   [        5      (       a4  US   (       a*  [        US   S   [        5      (       a  SUS   S   ;   a   U$  U$ ! [        R                   a    / n U$ f = f)z0Parse JSON track data into a standardized format'"r   x)

isinstancestrjsonloadsreplaceextendr   dictlistJSONDecodeError)trackstracks_dataparsed	track_strs       r:   parse_json_tracksr    sF   Kfc""ZZsC 89Fv& $	I$5$5c3$?@""6* $
 :k!nd;;{ST~@U&-K  ZA==+a.U_`klm`nop`qswUxUx  ~A  EP  QR  ES  TU  EV  ~V 	    s   B8D >AD D.-D.	tracks_np
frame_sizequant_multic                    [         R                  " U 5      R                  5       nUR                  S   S:X  a  [         R                  " US5      nUSS S24   USSS24   pe[        U6 n[         R                  " / UQ5      R                  U5      S-  nXX-
  nXW-  S-  nUS-  S-
  n[         R                  " SSUR                  S   5      R                  SSSS5      R                  " UR                  6 n	[         R                  " XU/SS	9R                  SSS
5      n
U
S S nU
SS  nS[        R                  " SU5      -  nU[        R                  " SU5      -  n[         R                  " XSS	9SS U2   n[         R                  " X/SS	9nU$ )Nr   y   )r   r   rJ   rI   .rJ   rI   rC   r   r   r   x   )rQ   
from_numpyfloatrZ   r   r   tensortype_aslinspacer   expandr   mathgcdrepeat_interleave)r  r  
num_framesr  kwargsr  visibles
short_edgeframe_centertrangeout_out_0out_labfinal_results                   r:   process_tracksr!    s    i(..0F||A#v|4c2A2gsAaCx(8Hj!J<<*.66v>BL"F 1$F!|aH^^B6<<?388Q1ELLhnn]F99fh/R8==c2qID!HEHEtxxZ((AdhhsJ//A##E!4QTT:E99e^3Lr=   r
  c                 ~   [         R                  " U  Vs/ s H  oS   US   S/PM     sn[         R                  S9nUR                  S   nU[        :  aD  [         R
                  " [        U-
  S4[         R                  S9n[         R                  " X$45      nO	US[         nUR                  [        SS5      $ s  snf )zFConvert list of {x,y} to (FIXED_LENGTH,1,3) array, padding/truncating.r   yr   )rG   r   rI   N)nparrayfloat32rZ   FIXED_LENGTHrR   vstackr   )trpptsnr   s        r:   pad_ptsr-  .  s    
((4AsVQsVQ'4BJJ
GC		!A<hhq(!,BJJ?ii
#-< ;;|Q** 5s   B:targetindr   c           	         [        UR                  5      U:  d   SU[        UR                  5      4-  5       eU R                  " [	        [        U5       Vs/ s H&  o0R                  U   S:X  a  UR                  U   OSPM(     snS/[        U R                  5      U-
  -  -   5      6 n Un[        U R                  5      US-   :  af  [        [        U R                  5      US-   -
  5       H  nUR                  S5      nM     UR                  " / SUS-   -  QU R                  US-   S Q76 n[        R                  " XUS9$ s  snf )z Index selection utility functionz>Index must have the target dim, but get dim: %d, ind shape: %sr   rC   )rC   N)r   index)	lenrZ   r   r  tupleranger   rQ   gather)r.  r/  r   kind_pad_s         r:   ind_selr9  9  s<    	CII`G3PSTWT]T]P^J__` ]]	CH:N:a\\!_1SYYq\r9:N 6<< 3&((

F G
6<<37"s6<<(C!G45A''+G 6..R%37"3RfllC!G=6QR<<w77 Os   -E	vert_attrweightvert_assignc                    [        UR                  5      S-
  n[        U R                  5      S:X  ax  U R                  S   UR                  5       :  d   eS/U-  [        U R                  5      -   nU R	                  U5      n[        XRR                  [        R                  5      US9nOU R                  S   UR                  5       :  d   eU R                  S   /S/US-
  -  -   [        U R                  SS 5      -   nU R	                  U5      n[        XRR                  [        R                  5      US9n[        R                  " XaR                  S5      -  SS9nU$ )z$Merge vertex attributes with weightsr   rJ   r   r   NrC   rK   )r2  rZ   r   r   r   r9  typerQ   longsumr   )r:  r;  r<  
target_dim	new_shaper  sel_attr
final_attrs           r:   merge_finalrE  R  s0   [&&'!+J
9??q q!KOO$5555C*$tIOO'<<	""9-6#3#3EJJ#?ZPq!KOO$5555__Q'(A3*q.+AADYZY[I\D]]	""9-6#3#3EJJ#?ZP8&6&6r&::CJr=   r  vidtemperature
vae_dividetopkc           	         UR                   u  pVpxU R                   S   n	[        R                  " U / SQSS9u  pZnU
[        R                  " U[	        Xx5      -  U[	        Xx5      -  /U
R
                  S9-  nUR                  SS5      nUR                  SS5      n[        R                  " U* [	        Xx5      -  U[	        Xx5      -  U5      n[        R                  " U* [	        Xx5      -  U[	        Xx5      -  U5      n[        R                  " [        R                  " XSS	9S
S
S2   SS9R                  U
R
                  5      nU
S
S
2SS
24   nUS
S
2SS
24   nUR                  " US-
  S/UR                   SS
 Q76 R                  S5      nUU-  R                  " US-
  S/UR                   SS
 Q76 R                  S5      US-   -  nUS
S
2S
S
4   US
S
S
2S
S
2S
4   -
  R                  S5      R                  S5      n[        R                  " U* U-  5      UR                  SS5      R                  US-
  SSU	5      -  n[        R                  " U[	        UUR                   S   5      SS9u  nnSn[        R                   R"                  R%                  UR'                  SSSS5      S
S US
S
2S
S24   R)                  UR*                  5      USSS9nUR-                  S5      R-                  S5      R'                  SS5      n[/        UUU5      R'                  SSSS5      nUR                  S5      nUUS
S
2SS
24   SUR                  SS5      -
  -  -   n[        R0                  " US
S
2S
S24   U/SS9n[        R0                  " [        R2                  " US
S 5      U/SS9nUS
   R5                  US   SSS5      U4$ )z%Apply motion patching based on tracksrJ   )r   rJ   r   rC   r   rA   r   r   ij)indexingNr   gh㈵>)r6  r   rD   rI   rR   F)r   padding_modealign_corners)rZ   rQ   splitr  r   rB   clampr  stackmeshgridtor   r@  powexprI  r   r   grid_sampler   r>  rG   r   rE  r   	ones_liker  )r  rF  rG  rH  rI  r8  THWN	tracks_xyvisibletracks_nxxyygrid
tracks_padvisible_padvisible_aligntracks_aligndist_r;  vert_weight
vert_index	grid_modepoint_featureout_feature
out_weightmix_featureout_feature_fullout_mask_fulls                                  r:   _patch_motion_singlerp  d  s    JA!QA!KK	rA' 5<<SYCI(FyO_O_``H~~b!$HmmAq!G	SYCIq	9B	SYCIq	9B;;u~~bt<TrTBKNND 1ab5!J!QR%.K$$QUAF0A0A!"0EFJJ1MM,221q5!Sj>N>Nqr>RSWW			L 
atm	$tD!Q,<'=	=BB1EII"M 
 YYv+,}/B/B1a/H/M/M	Aq!Q0 F $jj#dFLL,-2K IHH''33Aq!Q#BQBSYY' 4 M "))!,44Q7??1EMm[*EMMaQRTUWXYK$J AqrE
a*2B2B1a2H.H IIKyy#a!e*k!:BIIuz"1~>
KQRSM%%jmRR@BRRRr=   c                    [        U 5      n/ n/ n[        U5       H:  n[        X   X   UUU5      u  pUR                  U	5        UR                  U
5        M<     [        R
                  " USS9n[        R
                  " USS9nX4$ )Nr   r   )r2  r4  rp  r   rQ   rQ  )r  rF  rG  rH  rI  B	out_masksout_featuresr  r`   featurero  rn  s                r:   patch_motionrv    s     	FA IL1X,IF
 	G$  KK	q1M{{<Q7**r=   c                   V    \ rS rSr\S 5       r\ SS\R                  4S jj5       rSr	g)WanTrackToVideoi  c                    [         R                  " S/ SQS[         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      [         R
                  R                  SSS	S
9[         R                  R                  SSS[        R                  SS9[         R                  R                  SSS[        R                  SS9[         R                  R                  SSS[        R                  SS9[         R                  R                  SSSSS9[         R                  R                  SSSSSSS9[         R                  R                  SSSS SS!9[         R                  R                  S"5      [         R                  R                  S#SS$9/[         R                  R                  SS%9[         R                  R                  SS%9[         R                  R                  S&S%9/S'9$ )(Nrx  )zmotion trackingztrajectory videozpoint trackingzkeypoint animationzmodel/conditioning/wan/mover   r   r   r  Tz[])	multiliner   r   r   r
   r   r   r   r   r   r   r   r   r   r   rG       k@r   r   g?)r   r   r   r   advancedrI  rJ   
   )r   r   r   r|  r#   r    r!   r$   r&   r   )r   r-   r.   r/   r0   Stringr1   r2   r3   r   r5   r4   r6   r7   r8   s    r:   r;   WanTrackToVideo.define_schema  s   yy%j2%%j1%%j1U#		D$GWcru?S?SZ\]Xs@T@T[]^Xrqe>R>RYZ[\1!F}e&WZeijVQA2M}-##))*>)N &&J&?&&J&?		  h 7%
 	
r=   Nr>   c                    [        U5      nU(       d  [        5       R                  XX5XgXUS9	$ [        R                  " USUS-
  S-  S-   US-  US-  /[
        R                  R                  5       S9n[        US   S   [        5      (       a  U/n/ nU Hn  n/ nU H  n[        U5      nUR                  U5        M!     [        R                  " USS9nUR                  [        UXV4US-
  5      R                  S5      5        Mp     UGb  [
        R                   R#                  US U R%                  S	S5      XVS
S5      R%                  SS	5      n[        R&                  " UR(                  S   XvX[R(                  S	   4UR*                  UR,                  S9S-  n[/        UR(                  S   5       H  nUU   UUS4'   M     / n[
        R                   R1                  UU5      n[/        U5       H(  nUUR3                  UUS S 2S S 2S S 2S S24   5      /-  nM*     [        R4                  " USS9n[
        R6                  R9                  5       R;                  U5      n[
        R                   R=                  X5      n[?        UUXSS9nUu  nn[
        R6                  R9                  5       RA                  U5      nU* S-   n[B        RD                  " UUUS.5      n[B        RD                  " UUUS.5      nUb2  [B        RD                  " USU05      n[B        RD                  " USU05      n0 nUUS'   [F        RH                  " XU5      $ )N)r#   r    r
   r   r   r@   rA   r   )axisrC   rD   rE   rF   rH   rI   r   r   r
   )rG  rI  rH  r   )rO   rN   r    rP   )%r  r	   rb   rQ   rR   rS   rT   rU   r   r   r-  r   r$  rQ  r!  r   rV   rW   rX   rY   rZ   rB   rG   r4  resize_to_batch_sizer[   r   ru   rv   
process_inresize_list_to_batch_sizerv  rw   r\   r]   r   r^   )r9   r   r   r   r  r   r   r   r   rG  rI  r#   r    r  r&   processed_tracksbatcharrstrackr+  r  videosr   latent_videosr#  resr`   rN   ra   s                                r:   rb   WanTrackToVideo.execute  s}    (/"$,,XV]g  Vh,  i  ij"
q/@A.EvQR{TY]^T^_"'"8"8"L"L"NP k!nQ'..&-K EDenC   A.I##N9uovXYz$Z$d$def$gh ! "++44[*5M5U5UVXZ[5\^cmw  zB  C  K  K  LM  OQ  RKZZ!2!21!5vuN_N_`bNc dmxmm  HS  HY  HY  Z  ]`  `F;,,Q/0*1~q!t 1 M[[55fjIF:&#**VAq!QN-C"D!EE '		-Q/A $$**,77:A${{DDEUb !T[C ),%D%"'"6"6"<"<">"J"JK^"_53;D#;;HLPSf=hiH $;;HLPSf=hiH )#;;HG[]oFpqH#;;HG[]oFpqH
 &
9}}X<<r=   rd   re   rf   rd   r=   r:   rx  rx    s9    
 
4 GK<=PRP]P]<= <=r=   rx  c                     U R                  SS5      n U R                  S   [        U5      -  nUc  [        XB-  5      n[        R
                  R                  R                  XSSS9nUR                  SS5      $ )zs
features: shape=[1, T, 512]
input_fps: fps for audio, f_a
output_fps: fps for video, f_m
output_len: video length
r   rJ   Tlinear)r   rN  r   )r   rZ   r  intrQ   r   r   r   )features	input_fps
output_fps
output_lenseq_lenoutput_featuress         r:   linear_interpolationr    s}     !!!Q'HnnQ%	"22G-.
hh))55 6 O $$Q**r=   c                    X2-  n[        [        R                  " XP-  5      5      nXQU -  :  a  [        S5      eUb	  US:  a  UnO8X-
  nUS:  a  [        S5      e[        R                  R                  SUS-   5      nXp-  n	X-   n
[        R                  " XUSS9n[        R                  " [        R                  " U5      U -  5      R                  [         5      n[        R                  " USUS-
  5      nU$ )Nz0required_duration must be less than video lengthr   zvideo length is too shortr   F)endpoint)r  r$  ceil
ValueErrorrandomrandintr  roundr%  astypeclip)original_fpstotal_frames
target_fps
num_samplefixed_startrequired_durationrequired_origin_framesstart_frame	max_start
start_timeend_timetime_pointsframe_indicess                r:   get_sample_indicesr  .  s    
 #/ ):)I!JK,66KLL;!#3! 9	q=899ii''9q=9+J-H++jJOKHHRXXk2\ABII#NMGGM1lQ.>?Mr=   c           	         U R                   u  pVnUS:  a  SnOSnXA-  n	[        XbU	-  -  5      S-   n
X-  n[        R                  " X-  U-  U-  5      U-
  n[	        UXl-   UUSS9n/ n[        XA-  5      nU GH  nUU:  a  [        [        UX?-  -
  UUS-   U-  -   U5      5      nU Vs/ s H  nUS:  a  SOUPM     nnU Vs/ s H  nUU:  a  US-
  OUPM     nnU(       a  U S S 2U4   R                  SSS9nOpU S   U   R                  5       nOYU(       d)  [        R                  " US	U-  S-   -  /U R                  S
9O([        R                  " XWS	U-  S-   -  /U R                  S
9nUR                  U5        GM     [        R                  " U Vs/ s H  nUR                  S5      PM     snSS9nX4$ s  snf s  snf s  snf )Nr   TFr   )r  r  r  r  r  rK   rC   )	start_dimend_dimrJ   rA   r   )rZ   r  r  r  r  r   r4  flattenrQ   rR   rB   r   r   r   )audio_embedfpsbatch_framesm
video_rate
num_layersaudio_frame_num	audio_dimreturn_all_layersscalemin_batch_num
bucket_numpadd_audio_num	batch_idxbatch_audio_ebaudio_sample_stridebi
chosen_idxcframe_audio_embeds                       r:   get_audio_embed_bucket_fpsr  I  s   -8->->*JA~ !E%+?@AAEM-JYY};cAJNORaaN"$5I Nj./b122B!a%CV9V4VXklnJ5?@Zq1u!!+ZJ@ $#A ()O';!#B#  
 !$/:$>$F$F " %G %.! %0N:$>$F$F$H!izY!a%!)-D,EkN`N` a[[*1q519.E!F{OaOab /0' ( YYG1AGQON((# A  Hs   )F9F>Gc                    US-
  S-  S-   nU	Gb  [         R                  " U	S   5      nSnSn[        USUS9nUS-  n[        UUUSUS	9u  nnUR	                  S5      n[        UR                  5      S
:X  a  UR                  SSS5      nO-[        UR                  5      S:X  a  UR                  SSS
S5      nUS S 2S S 2S S 2XwU-   24   nUR                  S
   S:  a:  [        R                  " U SU05      n [        R                  " USUS-  05      nUU-  nUb  [        R                  R                  US S R                  SS5      X4SS5      R                  SS5      nUR                  US S 2S S 2S S 2S S
24   5      n[        R                  " U SU/0SS9n [        R                  " USU/0SS9nUb  UR                  S   S:  a  USS  n[        R                  R                  UR                  SS5      X4SS5      R                  SS5      nUR                  S   S:  a1  [         R                  " SXCS
/5      S-  nUUUR                  S   * S & UnUR                  US S 2S S 2S S 2S S
24   5      nUb@  US S 2S S 2SS 24   n[        R                  " U SU05      n [        R                  " USU05      n[         R                   " USXS-  US-  /[        R"                  R%                  5       S9n[        R&                  R)                  5       R+                  [         R,                  " U5      5      nU
b  [        R                  R                  U
S U R                  SS5      X4SS5      R                  SS5      n
UR                  U
S S 2S S 2S S 2S S
24   5      n
U
US S 2S S 2S U
R                  S   24'   [        R                  " U SU05      n [        R                  " USU05      n0 nUUS'   XUU4$ )Nr   r   encoded_audio_all_layers   r
   2   r  r  r   )r  r  r  r  rI   rJ   r  rL   rC   rD   rE   r   Tr   I   irH   ireference_motionr@   rA   rr   rP   )rQ   r   r  r  r   r2  rZ   r   r\   r]   rS   rV   rW   rX   r[   rY   rR   rT   rU   ru   rv   rw   r   )r   r   r   r   r   r   r   frame_offsetr   audio_encoder_outputrr   
ref_motionref_motion_latentlatent_tfeatr  r  r  audio_embed_bucket
num_repeatr   rr&   control_video_outra   s                            r:   wan_sound_to_videor  x  sN   !!Q&H'yy-.HIJ
#DB:N!|)CDc`lpq  I  *J&J/99!<!''(A-!3!;!;Aq!!D#))*a/!3!;!;Aq!Q!G/1aUaFa9a0ab##A&*#;;H}VhFijH#;;H}VhknVnFopHL(LKK..y!}/D/DR/KU\fhpqyyz{}  A	ZZ	!Q2A2+ 67
77CVYcXdBenrs77CVYcXdBenrsA##CD)J[[//
0B0B2q0I5Zdfnowwxy{}~
A#

Bq12S8A'1Az""#$JJJz!Q2A2+'>?$-aCDj977CUWhBij77CUWhBij[[*b(aK!LUZUkUkUU  VB  CF,,224@@AQAQRXAYZ 22=&3I3Q3QRTVW3XZ_isu}~  G  G  HI  KM  N

=Aq"1"#=>;H!Q 7!4!4Q!7 778 33HPa>bcH33HPa>bcHJ"Jyz<77r=   c                   T    \ rS rSr\S 5       r\SS\R                  4S jj5       rSr	g)WanSoundImageToVideoi  c                    [         R                  " SS[         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      [         R
                  R                  SSS[        R                  SS	9[         R
                  R                  S
SS[        R                  SS	9[         R
                  R                  SSS[        R                  SS	9[         R
                  R                  SSSSS9[         R                  R                  SSS9[         R                  R                  SSS9[         R                  R                  SSS9[         R                  R                  SSS9/[         R                  R                  SS9[         R                  R                  SS9[         R                  R                  SS9/S9$ )Nr  model/conditioning/wan/soundr   r   r   r   r   r
   r   r   r   r   M   r   r   r   r   r   r  Tr!   r   rr   r  r$   r&   r'   r   r-   r.   r/   r0   r1   r2   r3   AudioEncoderOutputr5   r6   r7   r8   s    r:   r;   "WanSoundImageToVideo.define_schema  si   yy*3%%j1%%j1U#Wcru?S?SZ\]Xs@T@T[]^Xrqe>R>RYZ[\1!F%%++,BT+R{T:>|d; &&J&?&&J&?		  h 7!
 	
r=   Nr>   c                 R    [        XX4XVXxU	XS9u  pp[        R                  " XU5      $ )N)r   r  rr   r  )r  r   r^   )r9   r   r   r   r   r   r   r   r   r  rr   r  ra   r  s                 r:   rb   WanSoundImageToVideo.execute  s<    7I(^ajp  {E  qEXe8~4J}}X<<r=   rd   r   rf   rd   r=   r:   r  r    sB    
 
0 =  eg  er  er = =r=   r  c                   T    \ rS rSr\S 5       r\SS\R                  4S jj5       rSr	g)WanSoundImageToVideoExtendi  c                    [         R                  " SS[         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      [         R
                  R                  SSS[        R                  S	S
9[         R                  R                  S5      [         R                  R                  SSS9[         R                  R                  SSS9[         R                  R                  SSS9/[         R                  R                  SS9[         R                  R                  SS9[         R                  R                  SS9/S9$ )Nr  r  r   r   r   r   r  r   r   r   video_latentr  Tr!   r   rr   r$   r&   r'   )r   r-   r.   r/   r0   r1   r2   r3   r7   r  r5   r6   r8   s    r:   r;   (WanSoundImageToVideoExtend.define_schema  s   yy03%%j1%%j1U#Xrqe>R>RYZ[		/%%++,BT+R{T:>	 &&J&?&&J&?		  h 7
 	
r=   Nr>   c	                     US   nUR                   S   S-  n	UR                   S   S-  n
UR                   S   nUR                   S   S-  n[        XX9XXXgUS US9u  pp[        R                  " XU5      $ )	NrP   rC   r@   rK   r   r   )r  r   r  rr   r  r  )rZ   r  r   r^   )r9   r   r   r   r   r  r   r  rr   r   r   r   r  ra   s                 r:   rb   "WanSoundImageToVideoExtend.execute  s    #I.""2&*##B'!+!''*
#))"-17I(^ajp  {E  luXerv  KW8X4J}}X<<r=   rd   r{   rf   rd   r=   r:   r  r    sB    
 
* =  GI  GT  GT = =r=   r  c           	         [         R                  " U R                  S   U R                  S   4U R                  U R                  S9n[         R                  " SU R                  S   U R                  S   4U R                  U R                  S9nSUS-
  S-  -   n/ n[        U5       H  nUS:X  au  X(-   S-
  n	X(-   S-   n
[         R                  " [        X5       Vs/ s H&  nSUs=::  a  U R                  S   :  a  O  OX   OUPM(     snSS9n[         R                  " X\4SS9nOoUS-   SUS-
  -  -   U-
  n	US-   SU-  -   U-   n
[         R                  " [        X5       Vs/ s H&  nSUs=::  a  U R                  S   :  a  O  OX   OUPM(     snSS9nUR                  U5        GM     [         R                  " USS9nUW
U-
  4$ s  snf s  snf )Nr   rJ   )rG   rB   rI   r   r   r   )	rQ   rR   rZ   rG   rB   r4  rQ  r   r   )	audio_emb	frame_num
frame0_idxaudio_shiftzero_audio_embedzero_audio_embed_3iter_audio_emb_windlt_istedr   	wind_feats                r:   get_audio_emb_windowr    s   {{IOOA$6	8J#KS\SbSbktk{k{|a);Y__Q=O%PXaXgXgpy  qA  qA  BQ1$$ENe19"Q&B"Q&Br%&A "#a!<)//!*<!<	CSS&% I 		#5"AqIIa!tax.0;>Ba!d(*[8Br%&A "#a!<)//!*<!<	CSS&% I 	i(! " [[Q7N2+++%%s   -G
 -G

c                   T    \ rS rSr\S 5       r\SS\R                  4S jj5       rSr	g)WanHuMoImageToVideoi  c                 T   [         R                  " SS[         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      [         R
                  R                  SSS[        R                  SS	9[         R
                  R                  S
SS[        R                  SS	9[         R
                  R                  SSS[        R                  SS	9[         R
                  R                  SSSSS9[         R                  R                  SSS9[         R                  R                  SSS9/	[         R                  R                  SS9[         R                  R                  SS9[         R                  R                  SS9/SS9$ )Nr  zmodel/conditioning/wan/humor   r   r   r   r   r
   r   r   r   r   a   r   r   r   r   r   r  Tr!   r   r$   r&   r(   r)   r*   r+   is_experimentalr  r8   s    r:   r;   !WanHuMoImageToVideo.define_schema  sF   yy)2%%j1%%j1U#Wcru?S?SZ\]Xs@T@T[]^Xrqe>R>RYZ[\1!F%%++,BT+R{T:
 &&J&?&&J&?		  h 7
 !'
 	
r=   Nr>   c
                    US-
  S-  S-   n
[         R                  " USXS-  US-  /[        R                  R	                  5       S9nUb  [        R
                  R                  US S R                  SS5      XESS5      R                  SS5      nUR                  US S 2S S 2S S 2S S	24   5      n[        R                  " US
U/0SS9n[        R                  " US
[         R                  " U5      /0SS9nOn[         R                  " USSUS-  US-  /[        R                  R	                  5       S9n[        R                  " US
U/0SS9n[        R                  " US
U/0SS9nU	Gba  [         R                  " U	S   SS9nU	S   S-  nUS S 2S US-  24   n[        US S 2S S 2SS24   R                  SS9SS5      n[        US S 2S S 2SS24   R                  SS9SS5      n[        US S 2S S 2SS24   R                  SS9SS5      n[        US S 2S S 2SS24   R                  SS9SS5      n[        US S 2S S 2S4   SS5      n[         R                  " UUUUU/SS9S   n[        XSS9u  nnUR!                  S5      n[         R                  " U5      n[        R                  " USU05      n[        R                  " USU05      nOj[         R                  " XzS-   SSS/[        R                  R	                  5       S9n[        R                  " USU05      n[        R                  " USU05      n0 nUUS'   ["        R$                  " XU5      $ )Nr   r   r
   r@   rA   rC   rD   rE   rI   r   Tr   r  rJ   r   audio_samplesi  r   r            )r  r        rP   )rQ   rR   rS   rT   rU   rV   rW   rX   r[   r\   r]   r   rQ  r  meanr  r   r   r^   )r9   r   r   r   r   r   r   r   r   r  r  r&   r   zero_latentr  	audio_lenfeat0feat1feat2feat3feat4r8  audio_emb_neg
zero_audiora   s                            r:   rb   WanHuMoImageToVideo.execute.  s   aZA%*j"h!UaZPY^YoYo  ZD  ZD  ZF  G 229Ra=3H3HQ3OQV`jltu}}~  BD  EIIaArrk$:;J#;;HGZ]g\hFirvwH#;;HGZ]b]m]mnx]y\zF{  EI  JH++z2q&A+uPQz&R[`[q[q  \F  \F  \H  IK#;;HGZ]h\iFjswxH#;;HGZ]h\iFjswxH+$89S$TZ[\I,_=DI!!^i!m^"34I(1aA:)>)C)C)C)JBPRSE(1aB;)?)D)D)D)KRQSTE(1aR<)@)E)E!)E)LbRTUE(1aR<)@)E)E!)E)LbRTUE(1a8)<b"EEUE5%$GQOPQRI/	aPLIq!++A.I!,,Y7M#;;H}V_F`aH#;;H}VcFdeHjQ,1d%KTYTjTjT~T~  UA  BJ#;;H}V`FabH#;;H}V`FabH
 &
9}}X<<r=   rd   re   rf   rd   r=   r:   r  r    sB    
 
. &=  @B  @M  @M &= &=r=   r  c                   T    \ rS rSr\S 5       r\SS\R                  4S jj5       rSr	g)WanAnimateToVideoiW  c                    [         R                  " SS[         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      [         R
                  R                  SSS[        R                  SS	9[         R
                  R                  S
SS[        R                  SS	9[         R
                  R                  SSS[        R                  SS	9[         R
                  R                  SSSSS9[         R                  R                  SSS9[         R                  R                  SSS9[         R                  R                  SSS9[         R                  R                  SSS9[         R
                  R                  SSS[        R                  SS	9[         R                  R                  SSS9[         R                  R                  SSS9[         R                  R                  SSS9[         R
                  R                  SSS[        R                  SS S!9/[         R                  R                  SS"9[         R                  R                  SS"9[         R                  R                  S#S"9[         R
                  R                  S$S"9[         R
                  R                  S%S"9[         R
                  R                  SS"9/SS&9$ )'Nr  zmodel/conditioning/wan/animater   r   r   r   r   r
   r   r   r   r   r  r   r   r   r   r   r    Tr!   r   
face_video
pose_videocontinue_motion_max_framesr  background_videocharacter_maskcontinue_motionvideo_frame_offsetr   zThe amount of frames to seek in all the input videos. Used for generating longer videos by chunk. Connect to the video_frame_offset output of the previous node for extending a video.)r   r   r   r   tooltipr$   r&   r   
trim_imager  )r   r-   r.   r/   r0   r1   r2   r3   r4   r5   r   r6   r7   r8   s    r:   r;   WanAnimateToVideo.define_schemaX  s4   yy'5%%j1%%j1U#Wcru?S?SZ\]Xs@T@T[]^Xrqe>R>RYZ[\1!F##))*>)N04@|d;|d;91!QVQeQelmn1DA.>04@11!I]I]de  ph  i!& &&J&?&&J&?		  h 7=9<8+?@ !;
 	
r=   Nr>   c                    SnUS-
  S-  S-   nUS-  nUS-  nSnU
c  [         R                  " SXTS45      n
[        R                  R	                  U
S U R                  SS5      XESS	5      R                  SS5      nUR                  US S 2S S 2S S 2S S24   5      n[         R                  " SSUR                  S
   UR                  S   UR                  S   4UR                  UR                  S9nUUR                  S   -  nSnUc  [         R                  " XeUS45      S-  nOX* S  nXR                  S   -  n	[        SU	5      n	[        R                  R	                  X* S  R                  SS5      XESS	5      R                  SS5      n[         R                  " XeXNR                  S   4UR                  UR                  S9S-  nUUS UR                  S   & UUR                  S   S-
  S-  S-   -  nUb2  [        R                  " USU05      n[        R                  " USU05      nUb  UR                  S   U	::  a  S nOXS  nUGb  [        R                  R	                  US U R                  SS5      XESS	5      R                  SS5      nU(       dB  UR                  S   U:  a/  [         R                  " U4USS  4XmR                  S   -
  -  -   SS9nUR                  US S 2S S 2S S 2S S24   5      n[        R                  " USU05      n[        R                  " USU05      nU(       a  UR                  S   nUS-  S-
  nUS U nUb  UR                  S   U	::  a  S nOXS  nUb  [        R                  R	                  US U R                  SS5      SSSS	5      S-  S-
  nUR                  SS5      R                  S5      n[        R                  " USU05      n[        R                  " USUS-  S-
  05      n[        SUS-  S-
  5      nUb  UR                  S   U	:  aq  XS  n[        R                  R	                  US U R                  SS5      XESS	5      R                  SS5      nUR                  S   U:  a  UUS  UUUR                  S   & [         R                  " SSUS-  UR                  S   UR                  S   4UR                  UR                  S9nUb  SUS S 2S S 2S US-  24'   UGb<  UR                  S   U	:  d  UR                  S   S:X  Ga  UR                  S   S:X  a&  UR!                  U4SUR"                  S-
  -  -   5      nOUU	S  nUR"                  S:X  a#  UR                  S5      nUR                  SS5      nUR"                  S:X  a  UR                  S5      n[        R                  R	                  US S 2S S 2S U24   UR                  S   UR                  S   SS	5      nUR                  S   U:  a'  US S 2S S 2US 24   US S 2S S 2UUR                  S   24'   [         R                  " UUR                  US S 2S S 2S S 2S S24   5      4SS9nUR%                  SUR                  S   S-  SUR                  S   UR                  S   5      R'                  SS5      n[         R                  " UU4SS9n[        R                  " UUUS.5      n[        R                  " UUUS.5      n[         R                  " USUU-   UU/[        R(                  R+                  5       S9n0 nUUS'   [,        R.                  " XUU[        SUS-  S-
  5      X-   5      $ )NFr   r   r@   r   rI   rC   arearE   r  rK   rF   rJ   rH   r    r   pose_video_latenti   g       @r   face_video_pixelsrL   r   r   rM   r
   rA   rP   )rQ   rR   rS   rV   rW   rX   r[   rZ   rB   rG   rY   r   r\   r]   r   r   rx   r   r   r   rT   rU   r   r^   )r9   r   r   r   r   r   r   r   r  r  r   r    r  r  r  r  r  trim_to_pose_videor   latent_widthlatent_heightr   r_   rN   r`   ref_motion_latent_lengthr"  ref_images_nummask_refmotionr&   ra   s                                  r:   rb   WanAnimateToVideo.executez  s%	   " 1**a/z!"#kk1fQ*?@O**?7F+C+K+KBPQ+RTYcikst||}~  AC  D!jjq!Q{);<{{Aq"5";";B"?ATAZAZ[]A^`s`y`yz|`}~  H[  Hb  Hb  j}  jC  jC  D*0033#$ "JJq9:S@E-.I.JKO"7"7"::!$Q(:!;#kk889R9Z9Z[]_`9achrx  {C  D  L  L  MN  PR  SOJJ7L7LR7PQZiZpZp  yH  yN  yN  O  RU  UE/>E+?((+,$/*?*?*BQ*F1)LPQ(QQ$)#;;HG[]oFpqH#;;HG[]oFpqH!"&88!
'(;<
!33Jw4G4O4OPRTU4VX]gmowx  A  A  BC  EG  HJ%##A&/!&J=JrsO;MQWZjZjklZmQm;n+ntu!vJ #

:aArrk+B C#;;HGZ\mFnoH#;;HGZ\mFnoH! 1 7 7 :&*Q.gv!"&88!
'(;<
!33Jw4G4O4OPRTU4VX[]`bhjrsvyy|J#++Aq1;;A>J#;;HGZ\fFghH#;;HGZ\fil\lor\rFstHQ 81 <q @A'%%a(+==#34G#H #(;;#=#=>NwPV>W>_>_`bde>fhmw}  @H  $I  $Q  $Q  RS  UW  $X #))!,~=FVWeWfFgE.)9)?)?)BCQ=1+<>Q>W>WXZ>[]p]v]vwy]z${  EI  EP  EP  X\  Xb  Xb  c&BEN1a!>":Q">!>>?%##A&);;~?S?STU?VZ[?[!''*a/%3%:%:F9t~ObObefOfGg;g%hN%34F4G%HN!&&!+%3%=%=a%@N%3%;%;Aq%AN!&&!+%3%=%=a%@N!&!;!;N1aQXRXQX=<Y[n[t[tuw[x  {N  {T  {T  UW  {X  Zi  ks  "t!''*^;SabcefhvhwbwSxN1a8L8LQ8O)O#OP#ii)<cjjqRSUVXZYZXZ{I[>\(]cde (,,Q0D0DQ0G10LaQ_QeQefgQhjxj~j~  @A  kB  C  M  M  NO  QR  Syy$/Q777Zm  C  CD  E77Zm  C  CD  Ej"mk.I=Zfgpu  qG  qG  q[  q[  q]  ^
 &
9}}X[#aQilmQmpqQqJr  uG  uP  Q  	Qr=   rd   NNNNNNNrf   rd   r=   r:   r  r  W  sI    
 
B fQ  XZ  Xe  Xe fQ fQr=   r  c                   T    \ rS rSr\S 5       r\SS\R                  4S jj5       rSr	g)Wan22ImageToVideoLatenti  c                 2   [         R                  " SS[         R                  R                  S5      [         R                  R                  SSS[
        R                  SS9[         R                  R                  SS	S[
        R                  SS9[         R                  R                  S
SS[
        R                  SS9[         R                  R                  SSSSS9[         R                  R                  SSS9/[         R                  R                  5       /S9$ )Nr.  r   r   r   r  r  r   r   i  r   1   r   r   r   r   r   r#   Tr!   r'   )
r   r-   r0   r/   r1   r2   r3   r5   r7   r6   r8   s    r:   r;   %Wan22ImageToVideoLatent.define_schema  s    yy--U#Wd@T@T[]^Xs@T@T[]^Xrqe>R>RYZ[\1!F}t< 		  "
 	
r=   Nr>   c                    [         R                  " SSUS-
  S-  S-   US-  US-  /[        R                  R	                  5       S9nUc  0 nXxS'   [
        R                  " U5      $ [         R                  " UR                  S   SUS-
  S-  S-   UR                  S   UR                  S	   /[        R                  R	                  5       S9n	Ub  [        R                  R                  US U R                  S	S5      X#S
S5      R                  SS	5      nUR                  U5      n
XS S 2S S 2S U
R                  S   24'   U	S S 2S S 2S U
R                  S   24==   S-  ss'   0 n[        R                  R                  5       nUR                  U5      U	-  USU	-
  -  -   nUR!                  U4SUR"                  S-
  -  -   5      US'   U	R!                  U4SU	R"                  S-
  -  -   5      US'   [
        R                  " U5      $ )Nr   r   r   r
   rA   rP   r   rK   rC   rD   rE   r  rL   r   r$  
noise_mask)rQ   rR   rS   rT   rU   r   r^   rY   rZ   rV   rW   rX   r[   ru   r   rw   rx   r   )r9   r   r   r   r   r   r#   r&   ra   r`   latent_templatent_formats               r:   rb   Wan22ImageToVideoLatent.execute  s.   avza&71%<flEUWKXafawaw  bL  bL  bN  OJ$*y!==,,zz6<<?A!0AQ/FUWHXZ`ZfZfgiZjkty  uK  uK  u_  u_  ua  b"++44[&5I5Q5QRTVW5XZ_isu}~  G  G  HI  KM  NK**[1K3>1a/+++B///0A-))"---.#5.
,,224**62T9FcDj<QQ &zntv{{UV?W.W X
9#';;
~		TU@V/V#W
< }}Z((r=   rd   Nrf   rd   r=   r:   r.  r.    s6    
 
" )RTR_R_ ) )r=   r.  )InfiniteTalkOuterSampleWrapperMultiTalkCrossAttnPatchMultiTalkGetAttnMapPatchproject_audio_featuresc                   p    \ rS rSr " S S\5      r\S 5       r\ S
S\S\R                  4S jj5       r
S	rg)WanInfiniteTalkToVideoi  c                       \ rS rSr% \\S'   \R                  R                  \S'   \R                  R                  \S'   Sr
g)WanInfiniteTalkToVideo.DCValuesi  r   audio_encoder_output_2r`   rd   N)rg   rh   ri   rj   r   __annotations__r   r  Typer   rl   rd   r=   r:   DCValuesr?    s'    	 " 5 5 : ::ggllr=   rC  c                 ^   [         R                  " SS[         R                  R                  S[         R                  R	                  S/ 5      [         R                  R	                  S[         R
                  R                  SSS9[         R                  R                  S	SS
S9[         R                  R                  SSSS9/5      /S9[         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      [         R                  R                  S5      [         R                  R                  SSS[        R                  SS9[         R                  R                  SSS[        R                  SS9[         R                  R                  SSS[        R                  SS9[         R                  R                  SSS9[         R                  R                  SSS9[         R
                  R                  S 5      [         R                  R                  S!S"SS#SS$SS%9[         R                   R                  S&S'S(S)S*S9[         R                  R                  S+SS9/[         R                  R#                  SS,9[         R                  R#                  SS,9[         R                  R#                  SS,9[         R$                  R#                  S-S,9[         R                  R#                  S.S,9/S/9$ )0Nr=  z$model/conditioning/wan/infinite talkr   single_speakertwo_speakersr@  Tr!   mask_1z?Mask for the first speaker, required if using two audio inputs.)r"   r  mask_2z@Mask for the second speaker, required if using two audio inputs.)optionsmodelmodel_patchr   r   r   r   r   r
   r   r   r   r   r   r   r   r    r#   audio_encoder_output_1motion_frame_count	   !   z3Number of previous frames to use as motion context.)r   r   r   r   r  r|  audio_scaler   g      $g      $@r   previous_framesr$   r&   r  r'   )r   r-   DynamicCombor/   Optionr  r   Model
ModelPatchr.   r0   r1   r2   r3   r4   r5   r   r6   r7   r8   s    r:   r;   $WanInfiniteTalkToVideo.define_schema  s   yy,;%%f&&'7<&&~))//0HSW/XGGMM(T  DEM  FGGMM(T  DFM  G8 7%  w'##M2%%j1%%j1U#Wcru?S?SZ\]Xs@T@T[]^Xrqe>R>RYZ[##))*>)N}t<%%++,DE11!RS  ^S  ^b  c}cu$UYZ04@-2 W5&&J&?&&J&?		  h 7<87"
 "	
r=   Nr   r>   c           
         Ub  UR                   S   U:  a  [        S5      eUS   S:X  a  US   nUS   nUS   nUb  Ub  Uc  [        S5      eS nUb)  Ub&  Uc  [        S	5      e[        R                  " UU/5      n[        R                  " S
SU	S
-
  S-  S
-   US-  US-  /[
        R                  R                  5       S9nUGba  [
        R                  R                  US U	 R                  SS
5      XxSS5      R                  S
S5      n[        R                  " XX|R                   S   4UR                  UR                  S9S-  nUUS UR                   S   & UR                  US S 2S S 2S S 2S S24   5      n[        R                  " S
S
UR                   S   UR                   S   UR                   S   4UR                  UR                  S9nSUS S 2S S 2S UR                   S   S
-
  S-  S
-   24'   [        R                   " UUUS.5      n[        R                   " UUUS.5      nUb2  [        R                   " USU05      n[        R                   " USU05      nUR#                  5       n/ n/ nU
U4 H~  nUc  M  US   n[        R$                  " USS9R'                  S
5      S
S  n[)        USSS9R                  SS
5      nUR+                  U5        UR+                  UR                   S   5        M     Sn[-        U5      S
:  Ga  US :X  a  [/        U5      n/ n U H  n!U!R                   S   U:  aX  [        R                  " UU!R                   S   -
  /U!R                   S
S  Q7S!U!R                  06n"[        R                  " U!U"/SS9n!U R+                  U!5        M     U nO|US:X  av  [1        U5      n#/ n$Sn%[3        UU5       HU  u  n!n&[        R                  " U#/U!R                   S
S  Q7S!U!R                  06n'U!U'U%U%U&-   & U$R+                  U'5        U%U&-  n%MW     U$nS n(Ub  [        R4                  R6                  R9                  UR;                  S5      UR                   S   S-  UR                   S   S-  4S"S#9S   n(U(S:  R=                  U(R                   S   S5      n(Ub  [
        R                  R                  X* S  R                  SS
5      XxSS5      R                  S
S5      n)UR                   S   U-
  n*U*n+U+U	-   n,[>        R@                  " S$U+ S%U, 35        UR                  U)S S 2S S 2S S 2S S24   5      n-Un.OS=n+n.U	n,WS S 2S S 2S S
24   n-[C        URD                  RF                  UU+U,5      RI                  URK                  5       5      n/U/URL                  S&   S''   URO                  [
        RP                  RR                  RT                  S([W        U-UUS LS)95        URY                  [[        X>5      S*5        U(b  URY                  []        U(5      S+5        0 n0UU0S,'   [^        R`                  " UXEU0U.5      $ )-Nr   z$Not enough previous frames provided.r   rF  r@  rG  rH  z=Masks must be provided if two audio encoder outputs are used.zCSecond audio encoder output must be provided if two masks are used.r   r
   r   r@   rA   rC   rD   rE   rF   rH   rI   rJ   rK   rL   rM   r    r  r   r  r  r  addpararG   nearestr   z&InfiniteTalk: Processing audio frames z - transformer_optionsaudio_embedsinfinite_talk_outer_sample)	is_extendattn2_patchattn1_patchrP   )1rZ   r  rQ   r   rR   rS   rT   rU   rV   rW   rX   rY   rB   rG   r[   r\   r]   clonerQ  r   r  r   r2  r   r@  zipr   r   r   r   r   logginginfor;  rJ  
audio_projrS  model_dtypemodel_optionsadd_wrapper_with_keypatcher_extension
WrappersMPOUTER_SAMPLEr8  set_model_patchr9  r:  r   r^   )1r9   r   rJ  rK  r   r   r   r   r   r   rL  rM  r#   rQ  rP  r    r@  rG  rH  	ref_masksr&   r_   rN   rO   model_patchedencoded_audio_listseq_lengthsr  
all_layersencoded_audiomulti_audio_typemax_lenpaddedembr   	total_len	full_listoffsetr  fulltoken_ref_target_masksmotion_framesr  audio_start	audio_endmotion_frames_latentr  r  ra   s1                                                    r:   rb   WanInfiniteTalkToVideo.execute<  s2    &?+@+@+CFX+XCDD<>)%)*B%C"(^F(^F!-~ !`aa	&"4%- !fgg		66"23Iavza&71%<fk5TU:V_d_u_u  `J  `J  `L  M"++44[&5I5Q5QRTVW5XZ_isu}~  G  G  HI  KM  NKJJ7H7H7LMVaVhVhp{  qB  qB  C  FI  IE+6E';$$Q'("%**U1aBQB;-?"@**aFLLO=P=V=VWY=Z\o\u\uvx\y%z  DO  DV  DV  ^i  ^o  ^o  pKHKK1D!2!21!5!9a ?1DDDE#;;H^q  CN  GO  PH#;;H^q  CN  GO  PH)#;;HG[]oFpqH#;;HG[]oFpqH%;=S$T #+-.HIJ!KK
:BB1EabIM0"Y[\ddefhijM%%m4}22156 %U !!"Q&6)k*-Cyy|g-#kk'CIIaL*@b399QR=bX[XaXab#iic
:MM#&	 .
 &,"!U*,		$'(:K$HLC ;;yR399QR=R		RD25Dw/$$T*g%F	 %I
 &/"!% %*XX%8%8%D%D##A&fll2.>!.CV\\RTEUYZEZ-[bk &E &mmn&p"&<q&@%F%FG]GcGcdeGfhj%k" &!KK66GZG[7\7d7degij7kmr  }G  IQ  R  Z  Z  [\  ^`  aM*0036HHL&K#f,ILLA+cR[Q\]^#&::mAq!RaRK.H#I +J'((K*I#6q!RaRx#@ ,[->->-I-IK]_jluvyy  {H  {T  {T  {V  WMX##$9:>J 	**##..;;(*$)5	 	%%&=k&WYfg!-))*BCY*Z\ij
 &
9}}]H
JWWr=   rd   r,  )rg   rh   ri   rj   r   rC  rk   r;   r   r^   rb   rl   rd   r=   r:   r=  r=    sg    9 
 #
 #
J  UYtX8 tX ^`  ^k  ^ktX tXr=   r=  c                   L    \ rS rSr\S\\\R                        4S j5       r	Sr
g)WanExtensioni  r>   c                    #    [         [        [        [        [        [
        [        [        [        [        [        [        [        [        [        [        /$ 7fr7  )rx  r	   rn   r}   r   r   r   r   r   r   r  r  r  r  r.  r=  )selfs    r:   get_node_listWanExtension.get_node_list  sA       " $!$ &#"!
 	
s   AArd   N)rg   rh   ri   rj   r   r   r>  r   	ComfyNoder  rl   rd   r=   r:   r  r    s)    
T$r||*<%= 
 
r=   r  r>   c                     #    [        5       $ 7fr7  )r  rd   r=   r:   comfy_entrypointr    s     >s   )r@   r$  )r{  r  rJ   r7  )r
   r   r   r  )r   NNNNN)rJ   )@r  r2   r\   rQ   comfy.model_managementrS   comfy.utilscomfy.latent_formatscomfy.clip_visionr   numpyr$  typingr   r   typing_extensionsr   comfy_api.latestr   r   rc  r  r	   rn   r}   r   r   r   r   r   r   r  ndarrayr  r!  r'  r-  Tensorr9  rE  FloatTensorr  r3  rp  rv  rx  r  r  r  r  r  r  r  r  r  r.  comfy.ldm.wan.model_multitalkr8  r9  r:  r;  r=  r  r  rd   r=   r:   <module>r     s             # & / -=bll -=`3=2<< 3=j?=R\\ ?=BE=r|| E=Pr2<< r>VJR\\ VJp*bll *04=BLL 4=l)Dr|| )DV: bjj  eCHo  `c  D 	+8ELL 8u|| 8# 825<<  ELL $<S<S			<S <S 	<S
 <SD ++			+ + 	+
 +<Y=bll Y=x+* $(	6,)^;8|=2<< =B =  =F,6@=",, @=DJQ JQX))bll ))X T  TaXR\\ aXH
> 
, r=   