§
    ÎÐj×ú  ã                   óè  — d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlZd dlmZ ddlmZmZmZmZmZmZ dd	lmZ dd
lmZ dZdZe› d�Ze› d�ZdZ e › d�Z!e › d�Z"dZ#dZ$dZ%dZ&g d¢Z'g d¢Z(da)dZ*ddddddd d!d"d#d$œ
Z+d%d%d&d'd(d)d*d+œZ,d,d-d.d/d0d1d2d1d3d4œ	Z-i d5d6“d7d8“d9d:“d;d<“dd=“dd>“dd?“d@dA“dBdC“dDdE“dFdG“dHdI“dJdK“dLdM“dNdO“dPdQ“dRdS“dTdMi¥i d5d6“d7dU“d9dV“d;dW“ddX“ddY“ddZ“dd[“dd\“d d]“d!d^“d"d_“d#d`“dadb“dcdd“d@de“dfe%“dgdhdidjdMdOdQdSdMdkœ	¥i d5d6“d7dl“d9dm“d;dn“ddo“ddp“ddq“dd[“dd\“d d]“d!d^“d"dr“d#ds“dadt“dcdu“d@dv“dfe%“dwdxdydzd{d|d}dMd~dQdSdMdœ¥d€œZ.i e.d�         ¥d‚dƒd„d…d†œ¥e.d‡<   i e.dˆ         ¥d‰dŠd‹dŒd†œ¥e.d�<   dŽD ]"\  Z/Z0i e.dˆ         ¥e0e0› d��e0› d��e0› d‘�d†œ¥e.e/<   Œ#h d’£Z1h d“£Z2e1D ]Z/e/d�k    re/e.vre.d�         e.e/<   Œd”e3dz  d•e4fd–„Z5d”e3dz  d•e6fd—„Z7d”e3dz  d•e6fd˜„Z8d•e9fd™„Z:dš„ Z;d›„ Z<dœ„ Z=d³d”e3dz  d�e4dz  d•e6fdž„Z>d´d „Z?d³dŸdŸd¡dd¢œd£„Z@d¤„ ZAd¥e4d•e4fd¦„ZBd”e3dz  d•eCe9         fd§„ZDd”e3dz  d•e4fd¨„ZEd•e6fd©„ZFd•e6fdª„ZGd•e6fd«„ZHd¬„ ZId­„ ZJdµd®„ZKd¯„ ZLd°„ ZM G d±„ d²¦  «        ZNdS )¶é    N)Úresolve_lora_dir)Úfiles_locator)Úbuild_hf_url)Úparse_loras_multipliers)ÚPathé   )ÚLTX2_25_DEEPY_INFOSÚLTX2_25_INFOSÚLTX2_25_MSR_INFOSÚ
LTX2_INFOSÚLTX2_MSR_INFOSÚLTX2_MSR_V2_INFOS)Úcontrol_video_phase2_message©ÚLTX2_OUTPAINTING_METHODz[https://huggingface.co/DeepBeepMeep/LTX-2/resolve/main/gemma-3-12b-it-qat-q4_0-unquantized/z#gemma-3-12b-it-qat-q4_0-unquantizedz.safetensorsz_quanto_bf16_int8.safetensorszgemma4-12b-ltx-v1z_bf16.safetensorsz_int8_convrot.safetensorsz#ltx-2.3-22b_PrunaAI_vae.safetensorszltx-2.3-22b_PrunaAI_vae.jsonz0ltx-2.5-22b_diffusion_video_vae_bf16.safetensorsz5LTX-2.5-Licon-MSR-V1_slot_embeddings_bf16.safetensors)
zadded_tokens.jsonzchat_template.jsonzconfig_light.jsonzgeneration_config.jsonzpreprocessor_config.jsonzprocessor_config.jsonzspecial_tokens_map.jsonútokenizer.jsonztokenizer.modelútokenizer_config.json)zconfig.jsonzchat_template.jinjar   r   F)
Údistilled_loraÚdistilled_1_1_loraÚpixel_spatial_upscaler_loraÚrefine_details_loraÚunion_control_loraÚid_loraÚoutpaint_loraÚinpaint_loraÚingredients_loraÚhdr_lorar   r   r   r   r   r   r   r   r   r   )
Ú	distilledÚdistilled_1_1Úpixel_spatial_upscalerÚrefine_detailsÚunion_controlÚidÚoutpaintÚinpaintÚingredientsÚhdrTé   é#   g{®Gáz„?g      Ð?g       @)Últx2_edit_anythingÚltx2_edit_anything_refÚ"ltx2_edit_anything_ref_start_blockÚ ltx2_edit_anything_ref_end_blockÚ$ltx2_edit_anything_ref_context_scaleÚ"ltx2_edit_anything_ref_token_scaleÚltx2_edit_anything_adaln_scaleÚprompt_relay_epsilonzPrompt Relay Epsilonz>Prompt Relay Epsilon (higher values create softer transitions)Úfloatgü©ñÒMbP?g-Cëâ6?g®Gáz®ï?Ú?)	r#   ÚnameÚlabelÚtypeÚdefaultÚminÚmaxÚincÚvideo_prompt_typeÚrepo_idúDeepBeepMeep/LTX-2Úconfig_filezltx2_19b_config.jsonÚspatial_upscalerz)ltx-2-spatial-upscaler-x2-1.0.safetensorsÚtemporal_upscalerz*ltx-2-temporal-upscaler-x2-1.0.safetensorsz(ltx-2-19b-distilled-lora-384.safetensorsz2ltx-2-19b-ic-lora-union-control-ref0.5.safetensorsz!id-lora-celebvhq-ltx2.safetensorsÚ	video_vaezltx-2-19b_vae.safetensorsÚ	audio_vaezltx-2-19b_audio_vae.safetensorsÚvocoderzltx-2-19b_vocoder.safetensorsÚtext_embedding_projectionz/ltx-2-19b_text_embedding_projection.safetensorsÚdev_embeddings_connectorz.ltx-2-19b-dev_embeddings_connector.safetensorsÚdistilled_embeddings_connectorz4ltx-2-19b-distilled_embeddings_connector.safetensorsÚprofiles_dirÚltx2Údev_profiles_dirÚltx2_dev_acceleratorsÚpreset_profiles_dirÚltx2_presetsÚdistilled_preset_profiles_dirÚltx2_distilled_presetsÚlora_dirzltx2_22b_config.jsonz+ltx-2.3-spatial-upscaler-x2-1.1.safetensorsz,ltx-2.3-temporal-upscaler-x2-1.0.safetensorsz*ltx-2.3-22b-distilled-lora-384.safetensorsz.ltx-2.3-22b-distilled-lora-384-1.1.safetensorsz=ltx-2.3-22b-ic-lora-pixel-spatial-upscaler-x2-0.9.safetensorsz4ltx-2.3-22b-ic-lora-union-control-ref0.5.safetensorsz#id-lora-celebvhq-ltx2.3.safetensorsz(ltx-2.3-22b-ic-lora-outpaint.safetensorsz2ltx-2.3-22b-ic-lora-in-outpainting-0.9.safetensorsz/ltx-2.3-22b-ic-lora-ingredients-0.9.safetensorsz'ltx-2.3-22b-ic-lora-hdr-0.9.safetensorsÚhdr_scene_embeddingsz-ltx-2.3-22b-ic-lora-hdr-scene-emb.safetensorsÚhdr_transformÚlogc3zltx-2.3-22b_vae.safetensorsÚdiffusion_video_vaez!ltx-2.3-22b_audio_vae.safetensorszltx-2.3-22b_vocoder.safetensorsz1ltx-2.3-22b_text_embedding_projection.safetensorsz,ltx-2.3-22b_embeddings_connector.safetensors)	rB   rC   rD   Úembeddings_connectorrG   rI   rK   rM   rO   zltx2_25_22b_config.jsonz0ltx-2.5-spatial-upscaler-x2-1.0_bf16.safetensorsz1ltx-2.5-temporal-upscaler-x2-1.0_bf16.safetensorsz/ltx-2.5-22b-distilled-lora-450_bf16.safetensorsz=ltx-2.5-22b-ic-lora-pixel-spatial-upscaler-x2-1.0.safetensorsz2ltx-2.5-22b-ic-lora-refine-details-1.0.safetensorsz/ltx-2.5-22b-ic-lora-ingredients-0.9.safetensorsz.ltx-2.5-22b-ic-lora-sdr-to-hdr-1.0.safetensorsz4ltx-2.5-22b-ic-lora-sdr-to-hdr-scene-emb.safetensorsÚacescctz&ltx-2.5-22b_video_vae_bf16.safetensorsz&ltx-2.5-22b_audio_vae_bf16.safetensorsz$ltx-2.5-22b_vocoder_bf16.safetensorsz6ltx-2.5-22b_text_embedding_projection_bf16.safetensorsz7ltx-2.5-22b_video_embeddings_connector_bf16.safetensorsz?ltx-2.5-22b_video_embeddings_connector_int8_convrot.safetensorsz7ltx-2.5-22b_audio_embeddings_connector_bf16.safetensorsz?ltx-2.5-22b_audio_embeddings_connector_int8_convrot.safetensorsÚltx2_25_dev_accelerators)rB   rC   rD   Úvideo_embeddings_connector_bf16Úvideo_embeddings_connector_int8Úaudio_embeddings_connector_bf16Úaudio_embeddings_connector_int8rG   rI   rK   rM   rO   )Últx2_19BÚltx2_22BÚltx2_25_22Br\   Últx2_msrÚltx2_msr_dev_acceleratorsÚltx2_msr_presetsÚltx2_msr_distilled_presets)rG   rI   rK   rM   Últx2_22B_msrr]   Últx2_25_msrÚltx2_25_msr_dev_acceleratorsÚltx2_25_msr_presetsÚltx2_25_msr_distilled_presetsÚltx2_25_22B_msr))Últx2_25_22B_alpha_genÚltx2_25_alpha_gen)Últx2_25_22B_layout_to_renderÚltx2_25_layout_to_renderÚ_dev_acceleratorsÚ_presetsÚ_distilled_presets>   r\   Ú
joyai_echorb   Últx2_22B_edit_anything>   r]   rg   rh   rj   Úbase_model_typeÚreturnc                 óR   — t                                | pdt           d         ¦  «        S )NÚ r[   )Ú_ARCH_SPECSÚget©rq   s    ú@C:\Users\johnn\OneDrive\Documents\AI\models\ltx2\ltx2_handler.pyÚ_get_arch_specry   ¹   s    € Ý�?Š?˜?Ð0¨bµ+¸jÔ2IÑJÔJÐJó    c                 ó   — | t           v S ©N)ÚLTX2_25_CLASSrw   s    rx   Ú	_is_ltx25r~   ½   s   € Ø�mÐ+Ð+rz   c                 ó,   — | dk    pt          | ¦  «        S )Nr\   )r~   rw   s    rx   Ú_supports_main_22b_lorasr€   Á   s   € Ø˜jÒ(ÐF­I°oÑ,FÔ,FÐFrz   c                  ó   — t           S r|   r   © rz   rx   Ú_ltx2_outpainting_methodrƒ   Å   s   € Ý"Ð"rz   c                 ó   — | od|pdvS )NÚ2rt   r‚   )r;   Úaudio_prompt_typeÚany_outpaintings      rx   Últx2_uint8_guidesrˆ   É   s   € ð ÐÐG 3Ð/@Ð/FÀBÐ#GÐGrz   c                 ó0   — d| pdv s|rt           dk    rdS dS )NÚMrt   é   Ú66FF00r   r   )r;   r‡   Úextra_settingss      rx   Últx2_guide_inpaint_colorrŽ   Ï   s.   € Ø
Ð Ð& BÐ'Ð'¨OÐ'Õ@WÐ[\Ò@\Ð@\ØˆxØˆ1rz   c                 ó
   — g d¢S )N)éÿ   r�   r�   r‚   )r;   r�   Úkwargss      rx   Últx2_background_removal_colorr’   Õ   s   € Øˆ?ˆ?Ðrz   Ú	model_defc                 óX   — | dk    p$t          |pi                      dd¦  «        ¦  «        S )Nro   F)Úboolrv   ©rq   r“   s     rx   Ú_is_joyai_echor—   Ù   s/   € Ø˜lÒ*Ð^­d°I°OÀ×3HÒ3HÈÐW\Ñ3]Ô3]Ñ.^Ô.^Ð^rz   rt   c                 ó:   — d| pdv rdndd|pdv rdn	d|pdv rdndfS )NÚVrt   ÚV1ÚSr‚   )r;   Úimage_prompt_types     rx   Ú_joyai_prompt_typesr�   Ý   sm   € ØÐ,Ð2°Ð3Ð3ˆ4ˆ4¸ÀCÐL]ÐLcÐacÐDdÐDd¸S¸SÐqtð  zKð  zQð  OQð  rRð  rRÐjmÐjmð  XZð  Zð  Zrz   r‹   ©r;   rœ   Úguidance_phasesÚruntimec                óÚ   — t          ||¦  «        \  }}t          | t          ¦  «        si } dddddt          dt	          dt          |pd¦  «        ¦  «        ¦  «        d||| ddœ}|rd|d	<   |S )
Né   ç      ð?ç        r   r‹   rt   ÚPW)Únum_inference_stepsÚguidance_scaleÚaudio_guidance_scaleÚalt_guidance_scaleÚ	alt_scalerŸ   r†   r;   rœ   Úcustom_settingsÚmulti_prompts_gen_typeÚaudio_cfg_scale)r�   Ú
isinstanceÚdictr9   r8   Úint)r«   r;   rœ   rŸ   r    Úsettingss         rx   Ú_joyai_settingsr²   á   s™   € Ý+>Ð?PÐRcÑ+dÔ+dÑ(ÐÐ(Ý�o¥tÑ,Ô,ð Øˆà ØØ #Ø!ØÝ˜q¥# a­¨_Ð-AÀÑ)BÔ)BÑ"CÔ"CÑDÔDØØ.Ø.Ø*Ø"&ðð €Hð ð *Ø&)ˆÐ"Ñ#Ø€Orz   c           	      óì  — ddl m} ddlm}m}m}m}m}m} | 	                    dd ¦  «        }	t          |	t          ¦  «        si }	d}
| 	                    di ¦  «        pi  	                    dg ¦  «        D �]}| 	                    d	i ¦  «        pi }d
|v r|
st          j        d¦  «         d}
| 	                    dd ¦  «        }|�5	  ||¦  «         n(# t          $ r}t          |¦  «        cY d }~c S d }~ww xY w| 	                    dd ¦  «        }|�5	  ||¦  «         n(# t          $ r}t          |¦  «        cY d }~c S d }~ww xY w| 	                    dd ¦  «        }|�5	  ||¦  «         Œö# t          $ r}t          |¦  «        cY d }~c S d }~ww xY w�Œ t          |	 	                    |d¦  «        pd¦  «                             ¦   «         }t#          | 	                    dd¦  «        | 	                    dd¦  «        ¦  «        \  }}|sd S | 	                    d¦  «        €dS  || 	                    d¦  «        d¬¦  «        dk    rdS  ||t%          |  	                    dd¦  «        pd¦  «        |¬¦  «        S )Nr   )Úextract_audio_tracksr   )Ú JOYAI_CONTROL_MEMORY_MAX_SECONDSÚJOYAI_CONTROL_MEMORY_SETTINGÚparse_drop_mem_optionÚparse_load_mem_optionÚparse_store_mem_optionÚ!validate_control_memory_positionsr«   FÚframe_schedulerÚwindowsÚmodel_optionsÚno_memz¢JoyAI-Echo /no_mem is deprecated because memories are no longer saved automatically. It will be ignored; use /store_mem=name only on windows you want to remember.TÚ	store_memÚload_memÚdrop_memrt   r;   rœ   Úvideo_guidez9JoyAI-Echo Control Video Memory requires a Control Video.)Ú
query_onlyzMJoyAI-Echo Control Video Memory requires a Control Video with an audio track.Úfpsé   )Úmax_seconds)Úshared.utils.audio_videor´   ro   rµ   r¶   r·   r¸   r¹   rº   rv   r®   r¯   ÚgrÚInfoÚ
ValueErrorÚstrÚstripr�   r2   )r“   Úinputsr´   rµ   r¶   r·   r¸   r¹   rº   r«   Úno_mem_notifiedÚwindowr½   r¿   ÚexcrÀ   rÁ   Úmemory_positionsr;   Ú_s                       rx   Ú_validate_joyai_inputsrÓ   ÷   sn  € Ø=Ð=Ð=Ð=Ð=Ð=ð Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  Dð  DØ—j’jÐ!2°DÑ9Ô9€OÝ�o¥tÑ,Ô,ð ØˆØ€OØ—:’:Ð/°Ñ4Ô4Ð:¸×?Ò?À	È2ÑNÔNð  ñ  ˆØŸ
š
 ?°BÑ7Ô7Ð=¸2ˆØ�}Ð$Ð$¨_Ð$ÝŒGð  yñ  zô  zð  zØ"ˆOØ!×%Ò% k°4Ñ8Ô8ˆ	ØÐ ð Ø&Ð& yÑ1Ô1Ð1Ð1øÝð  ð  ð  Ý˜3‘x”x��������øøøøð øøøà ×$Ò$ Z°Ñ6Ô6ˆØÐð Ø%Ð% hÑ/Ô/Ð/Ð/øÝð  ð  ð  Ý˜3‘x”x��������øøøøð øøøà ×$Ò$ Z°Ñ6Ô6ˆØÐð Ø%Ð% hÑ/Ô/Ð/Ð/øÝð  ð  ð  Ý˜3‘x”x��������øøøøð øøøñ  õ
 ˜?×.Ò.Ð/KÈRÑPÔPÐVÐTVÑWÔW×]Ò]Ñ_Ô_ÐÝ.¨v¯zªzÐ:MÈrÑ/RÔ/RÐTZ×T^ÒT^Ð_rÐtvÑTwÔTwÑxÔxÑÐ�qØð ØˆtØ‡z‚z�-Ñ Ô Ð(ØJÐJØÐ˜FŸJšJ }Ñ5Ô5À$ÐGÑGÔGÈ1ÒLÐLØ^Ð^Ø,Ð,Ð-=½uÀYÇ]Â]ÐSXÐZ\ÑE]ÔE]ÐEcÐacÑ?dÔ?dð  sSð  Tñ  Tô  Tð  TsZ   ÃCÃ
C3ÃC.Ã&C3Ã.C3ÄDÄ
E Ä%D;Ä3E Ä;E ÅE(Å(
FÅ2FÆ FÆFÚspecc                 óN   ‡ — ˆ fd„t                                ¦   «         D ¦   «         S )Nc                 ó€   •— i | ]:\  }}‰                      |¦  «        ¯d |› �t          ‰d         ‰|         ¦  «        “Œ;S )Ú
ltx2_lora_r<   )rv   r   )Ú.0r4   Úspec_keyrÔ   s      €rx   ú
<dictcomp>z)_get_system_lora_urls.<locals>.<dictcomp>!  s[   ø€ ð ð ð áˆD�(Ø�8Š8�HÑÔðØ�TÐÐ�\¨$¨y¬/¸4À¼>ÑJÔJðð ð rz   )Ú_SYSTEM_LORA_SPEC_KEYSÚitems)rÔ   s   `rx   Ú_get_system_lora_urlsrÝ      s:   ø€ ðð ð ð å4×:Ò:Ñ<Ô<ðñ ô ð rz   c                 ó>   — | t           v st          | ¦  «        rdgndgS )Né   é   )ÚLTX2_22B_CLASSr~   rw   s    rx   Ú_default_perturbation_layersrâ   (  s)   € Ø"¥nÐ4Ð4½	À/Ñ8RÔ8RÐ4ˆBˆ4ˆ4ÐY[ÐX\Ð\rz   c           	      ó^  — t          | ¦  «        r?i dd“dd“dd“dd“d	d
“dd
“dd
“dd“dd“dt          | ¦  «        “dd“dd“dd“dd“dd“dd“S | t          v r?i dd“dd“dd“dd“d	d
“dd
“dd
“dd“dd“dt          | ¦  «        “dd“dd“dd“dd“dd“dd“S ddt          | ¦  «        ddddddœS ) Nr¦   r¢   Úvideo_lengthéñ   Ú
resolutionÚ1280x704Úsample_solverÚdistilled_8_steps_ancestralr§   r£   r¨   r©   rª   r¤   Úperturbation_switchr   Úperturbation_layersÚperturbation_start_percÚperturbation_end_percéd   Ú
apg_switchÚcfg_star_switchÚself_refiner_settingrŸ   r‹   éy   Ú1280x720Údistilled_8_stepsé(   g      @)r¦   r§   rë   rì   rí   rï   rð   rŸ   )r~   râ   rá   rw   s    rx   Ú_default_dev_settingsrö   ,  sò  € Ý�Ñ!Ô!ð 
ð
Ø! 1ð
à˜Cð
ð ˜*ð
ð Ð:ð	
ð
 ˜cð
ð # Cð
ð ! #ð
ð ˜ð
ð " 1ð
ð "Õ#?ÀÑ#PÔ#Pð
ð & qð
ð $ Sð
ð ˜!ð
ð ˜qð
ð # Að
ð  ˜qð!
ð 	
ð$ �.Ð(Ð(ð
Ø! 1ð
à˜Cð
ð ˜*ð
ð Ð0ð	
ð
 ˜cð
ð # Cð
ð ! #ð
ð ˜ð
ð " 1ð
ð "Õ#?ÀÑ#PÔ#Pð
ð & qð
ð $ Sð
ð ˜!ð
ð ˜qð
ð # Að
ð  ˜qð!
ð 	
ð&  "Øõ
  <¸OÑLÔLØ#$Ø!$ØØØðð ð rz   c                 ób   — |                       dd¦  «        p|                       dd¦  «        dk    S )Nr*   FÚarchitecturert   rp   ©rv   ©r“   s    rx   Ú_is_editanything_modelrû   c  s1   € Ø�=Š=Ð-¨uÑ5Ô5Ðs¸¿ºÀ~ÐVXÑ9YÔ9YÐ[sÒ9sÐsrz   c                 ó6   — | dv p|                      dd¦  «        S )N>   rb   rg   r^   Frù   r–   s     rx   Ú_is_msr_modelrý   g  s#   € ØÐAÐAÐeÀYÇ]Â]ÐS]Ð_dÑEeÔEeÐerz   c                 ó6   — |                       dd¦  «        dk    S )NÚltx2_pipelinert   r   rù   rú   s    rx   Ú_is_distilled_modelr   k  s   € Ø�=Š=˜¨"Ñ-Ô-°Ò<Ð<rz   c                 ó®   — t          |¦  «        }|                     d¦  «        }|r|S | pi                      dd¦  «        }|dk    r|d         S |d         S )NrT   rÿ   Ú	two_stager   rF   rE   )ry   rv   )r“   rq   rÔ   Úshared_connectorÚpipeline_kinds        rx   Ú"_get_embeddings_connector_filenamer  o  sl   € Ý˜/Ñ*Ô*€DØ—x’xÐ 6Ñ7Ô7ÐØð  ØÐØ�_ "×)Ò)¨/¸;ÑGÔG€MØ˜Ò#Ð#ØÐ4Ô5Ð5ØÐ*Ô+Ð+rz   c                 óF  — t          |¦  «        }|                      d|d         ¦  «        |d         |d         |d         dœ}t          |¦  «        r<t          j        d         j        dk    rdnd	}|d
|› �         |d<   |d|› �         |d<   nt          | |¦  «        |d<   |S )NÚltx2_video_vae_filerA   rB   rC   rD   )rA   rB   rC   rD   ÚwgpÚbf16Úint8Úvideo_embeddings_connector_Úvideo_embeddings_connectorÚaudio_embeddings_connector_Úaudio_embeddings_connectorÚtext_embeddings_connector)ry   rv   r~   ÚsysÚmodulesÚtransformer_quantizationr  )r“   rq   rÔ   ÚnamesÚconnector_variants        rx   Ú_get_multi_file_namesr  z  sÐ   € Ý˜/Ñ*Ô*€Dà—]’]Ð#8¸$¸{Ô:KÑLÔLØ˜+Ô&Ø˜	”?Ø%)Ð*EÔ%Fð	ð €Eõ �Ñ!Ô!ð lå&)¤k°%Ô&8Ô&QÐU[Ò&[Ð&[˜F˜FÐagÐØ.2Ð3dÐQbÐ3dÐ3dÔ.eˆÐ*Ñ+Ø.2Ð3dÐQbÐ3dÐ3dÔ.eˆÐ*Ñ+Ð+å-OÐPYÐ[jÑ-kÔ-kˆÐ)Ñ*Ø€Lrz   c                 óÖ  — t          |¦  «        }d„ t          | |¦  «                             ¦   «         D ¦   «         }|rt          j        |d         ¦  «        |d<   t
          j                             t
          j                             t          ¦  «        d|d         ¦  «        }t
          j         
                    |¦  «        st          d|› �¦  «        ‚||d<   |                      d¦  «        }|rxt
          j                             t
          j                             t          ¦  «        |¦  «        }t
          j         
                    |¦  «        st          d	|› �¦  «        ‚||d
<   |S )Nc                 ó>   — i | ]\  }}|t          j        |¦  «        “ŒS r‚   )ÚflÚlocate_file)rØ   Úkeyr4   s      rx   rÚ   z-_resolve_multi_file_paths.<locals>.<dictcomp>Ž  s(   € ÐrÐrÐr©9¨3°ˆS•"”. Ñ&Ô&ÐrÐrÐrrz   r?   Úspatial_upsamplerÚconfigsr>   zMissing LTX config file: Úmodel_configÚltx2_video_vae_config_filez#Missing LTX video VAE config file: Úvideo_vae_config)ry   r  rÜ   r  r  ÚosÚpathÚjoinÚdirnameÚ__file__ÚisfileÚFileNotFoundErrorrv   )r“   rq   Úinclude_spatial_upsamplerrÔ   Úpathsr  Úvideo_vae_config_filer  s           rx   Ú_resolve_multi_file_pathsr*  Œ  s@  € Ý˜/Ñ*Ô*€DØrÐrÕ8MÈiÐYhÑ8iÔ8i×8oÒ8oÑ8qÔ8qÐrÑrÔr€EØ ð NÝ%'¤^°DÐ9KÔ4LÑ%MÔ%MˆÐ!Ñ"Ý”7—<’<¥¤§¢µÑ 9Ô 9¸9ÀdÈ=ÔFYÑZÔZ€LÝŒ7�>Š>˜,Ñ'Ô'ð LÝÐ J¸LÐ JÐ JÑKÔKÐKØ(€Eˆ.ÑØ%ŸMšMÐ*FÑGÔGÐØð 5Ýœ7Ÿ<š<­¬¯ª½Ñ(AÔ(AÐCXÑYÔYÐÝŒw�~Š~Ð.Ñ/Ô/ð 	^Ý#Ð$\ÐJZÐ$\Ð$\Ñ]Ô]Ð]Ø$4ˆÐ Ñ!Ø€Lrz   c                  ó  — t           rd S t          j                             d¦  «        } |                      ¦   «         }t          ¦   «         }t                               ¦   «         D �]}t          t          |d         || j
        j        ¦  «        ¦  «        }t          D ]á}|                     |d ¦  «        }|�||v rŒt          j        |d¬¦  «        }|€Œ8||z  }t          |¦  «                             ¦   «         |                     ¦   «         k    s|                     ¦   «         r|                     |¦  «         Œžt%          j        ||¦  «         t)          d|› d|› d|› d�¦  «         |                     |¦  «         Œâ�Œd	a d S )
Nr  rO   F)Úerror_if_nonez[WAN2GP][LTX2] Moved z LoRA 'z' -> 'ú'T)Ú_LORAS_MIGRATEDr  r  rv   Úget_lora_rootÚsetru   Úvaluesr   r   ÚargsÚlora_configÚ_LORA_SPEC_KEYSr  r  ÚresolveÚexistsÚaddÚshutilÚmoveÚprint)	r  Ú	lora_rootÚmovedrÔ   rO   r  ÚfilenameÚsourceÚtargets	            rx   Ú_migrate_lorasr@  ž  s€  € åð ØˆÝ
Œ+�/Š/˜%Ñ
 Ô
 €CØ×!Ò!Ñ#Ô#€Iå‰EŒE€EÝ×"Ò"Ñ$Ô$ð  ñ  ˆÝÕ(¨¨jÔ)9¸9ÀcÄhÔFZÑ[Ô[Ñ\Ô\ˆÝ"ð 	 ð 	 ˆCØ—x’x  TÑ*Ô*ˆHØÐ 8¨uÐ#4Ð#4ØÝ”^ H¸EÐBÑBÔBˆFØˆ~ØØ Ñ(ˆFÝ�F‰|Œ|×#Ò#Ñ%Ô%¨¯ªÑ)9Ô)9Ò9Ð9¸V¿]º]¹_¼_Ð9Ø—	’	˜(Ñ#Ô#Ð#ØÝŒK˜ Ñ'Ô'Ð'ÝÐM¨#ÐMÐM°fÐMÐMÀFÐMÐMÐMÑNÔNÐNØ�IŠI�hÑÔÐÐñ	 ð €O€O€Orz   c                 ó  ‡‡‡— |                      dd¦  «        pdŠt          |                      dd¦  «        ¦  «        dk    sd‰vs|                      d¦  «        €dS d‰v rt          | ¦  «        rdS t          j                              d	¦  «        }|�%t          |d
¦  «        r|                     | ¦  «        nd Šd„ |                      dg ¦  «        pg D ¦   «         Št          | ¦  «        }t          ¦   «         }|o|dk    }t          | ¦  «        rd‰v r|                      d¦  «        nd t          ˆfd„dD ¦   «         ¦  «        r|                      d¦  «        nd t          | ¦  «        r|r|dk    r|                      d¦  «        nd t          | ¦  «        rd‰v rd‰v s|r|                      d¦  «        nd g}ˆˆfd„|D ¦   «         }	dgt          |	¦  «        z  }
ˆfd„|                      dg ¦  «        pg D ¦   «         }t          |                      dd¦  «        ¦  «        |                      dd¦  «        }}t          |
t          |	¦  «        |d|¬¦  «        \  }}}|s:t          |                      dd¦  «        t          |¦  «        |d||¬¦  «        \  }}}|rd|› �S |	|z   }|                      dd¦  «        }t          |||pt          |¦  «        |rd nd!¬"¦  «        }t          |¦  «         t!          j        |¦  «         dS )#Nr;   rt   rŸ   r   r‹   r™   rÂ   ú&r  Úget_lora_dirc                 óp   — h | ]3}t           j                             |¦  «                             ¦   «         ’Œ4S r‚   )r   r!  ÚbasenameÚlower)rØ   Úloras     rx   ú	<setcomp>z/_notify_control_video_phase2.<locals>.<setcomp>Â  s4   € ÐcÐcÐc°4•”× Ò  Ñ&Ô&×,Ò,Ñ.Ô.ÐcÐcÐcrz   Úactivated_lorasr   c              3   ó    •K  — | ]}|‰v V — Œ	d S r|   r‚   ©rØ   Úletterr;   s     €rx   ú	<genexpr>z/_notify_control_video_phase2.<locals>.<genexpr>È  s)   øè è € Ð-_Ð-_Èf¨fÐ8IÐ.IÐ-_Ð-_Ð-_Ð-_Ð-_Ð-_rz   ÚOPDEr   r   rŠ   ÚAr   c                 óˆ   •— g | ]>}|¯|                      ¦   «         ‰v¯‰r t          j                             ‰|¦  «        n|‘Œ?S r‚   )rF  r   r!  r"  )rØ   r4   rO   Úselecteds     €€rx   ú
<listcomp>z0_notify_control_video_phase2.<locals>.<listcomp>Ì  su   ø€ ð  Eð  Eð  EÈ$Ð^bð  EÐgk×gqÒgqÑgsÔgsð  |Dð  hDð  hD°8ÐE•2”7—<’< ¨$Ñ/Ô/Ð/Àð  hDð  hDð  hDrz   r£   c                 ó’   •— g | ]C}‰r=t           j                             ‰t           j                             |¦  «        ¦  «        n|‘ŒDS r‚   )r   r!  r"  rE  )rØ   rG  rO   s     €rx   rR  z0_notify_control_video_phase2.<locals>.<listcomp>Î  sW   ø€ ð  Qð  Qð  QÐ`dÈÐ[•r”w—|’| H­b¬g×.>Ò.>¸tÑ.DÔ.DÑEÔEÐEÐW[ð  Qð  Qð  Qrz   r¦   Úmodel_switch_phase)Ú	nb_phasesrT  Úloras_multipliers)rU  Úmerge_slistrT  zError parsing Loras: Últx2_layout_to_renderFzLayout to RenderÚEditAnything)Úforce_phase2_controlÚ
force_name)rv   r°   r~   r  r  ÚhasattrrC  ry   rƒ   r€   ÚanyÚlenr   r   rû   r:  rÈ   rÉ   )rq   r“   rÍ   r‡   r  rÔ   Úoutpainting_methodÚnew_outpaintingÚbuiltinsÚextra_lorasÚextra_multsrI  ÚstepsÚswitch_phaserÒ   Úloras_slistsÚerrorsÚloras_selectedÚlayoutÚmsgrO   rQ  r;   s                       @@@rx   Ú_notify_control_video_phase2rk  º  s9  øøø€ ØŸ
š
Ð#6¸Ñ;Ô;ÐA¸rÐÝ
ˆ6�:Š:Ð'¨Ñ+Ô+Ñ,Ô,°Ò1Ð1°SÐ@QÐ5QÐ5QÐU[×U_ÒU_Ð`mÑUnÔUnÐUvØˆrØ
ÐÐÐ¥I¨oÑ$>Ô$>ÐØˆrÝ
Œ+�/Š/˜%Ñ
 Ô
 €CØ47°OÍÐPSÐUcÑHdÔHd°Oˆs×Ò Ñ0Ô0Ð0Ðjn€HØcÐc¸6¿:º:ÐFWÐY[Ñ;\Ô;\Ð;bÐ`bÐcÑcÔc€HÝ˜/Ñ*Ô*€DÝ1Ñ3Ô3ÐØ%ÐAÐ*<ÀÒ*A€Oå 8¸Ñ IÔ IÐpÈcÐUfÐNfÐNfˆ�Š�ÑÔÐÐlpÝ*-Ð-_Ð-_Ð-_Ð-_ÐX^Ð-_Ñ-_Ô-_Ñ*_Ô*_Ðiˆ�ŠÐ%Ñ&Ô&Ð&ÐeiÝ%=¸oÑ%NÔ%Nð  	IÐSbð  	IÐgyÐ}~Òg~Ðg~ˆ�Š�Ñ!Ô!Ð!ð  EIÝ$<¸_Ñ$MÔ$Mð  	gÐSVÐZkÐSkÐSkÐpsð  xIð  qIð  qIð  M\ð  qIˆ�Š�Ñ Ô Ð ð  cgð	€Hð Eð  Eð  Eð  Eð  EÐRZð  Eñ  Eô  E€KØ�%�#˜kÑ*Ô*Ñ*€Kð Qð  Qð  Qð  QÐhn×hrÒhrð  tEð  GIñ  iJô  iJð  iPð  NPð  Qñ  Qô  Q€OÝ˜fŸjšjÐ)>ÀÑBÔBÑCÔCÀVÇZÂZÐPdÐfgÑEhÔEhˆ<€EÝ5°kÅ3À{ÑCSÔCSÐUZÐfgð  }Ið  Jñ  Jô  JÑ€A€|�VØð DÝ"9¸&¿*º*ÐEXÐZ\Ñ:]Ô:]Õ_bÐcrÑ_sÔ_sÐuzð  GHð  Vbð  wCð  #Dñ  #Dô  #DÑˆˆ<˜Øð 0Ø/ vÐ/Ð/Ð/Ø  ?Ñ2€NØ�]Š]Ð2°EÑ:Ô:€FÝ
& ~°|ÐZ`ð  [FÕdzð  |Eñ  eFô  eFð  ioð  SCð  Seð  Seð  uCð  Dñ  Dô  D€CÝ	ˆ#�J„J€JÝ„GˆC�L„L€LØˆ2rz   c            	       óZ  — e Zd Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed„ ¦   «         Zedd
„¦   «         Zd„ Zedd	ej        ej        ddd	d	fd„¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd	S )Úfamily_handlerc                  ó&   — t          ¦   «          g d¢S )N)	r[   r\   r]   rp   rb   rg   rh   rj   ro   )r@  r‚   rz   rx   Úquery_supported_typesz$family_handler.query_supported_typesÞ  s&   € åÑÔÐð {ð  {ð  {ð  	{rz   c                  ó*   — ddddddddœ} dg d¢i}| |fS )Nr\   )r[   r]   rp   rb   rg   rh   rj   r[   )r\   rp   rb   r‚   )Úmodels_eqv_mapÚmodels_comp_maps     rx   Úquery_family_mapsz family_handler.query_family_mapsã  sG   € ð $Ø&Ø'1Ø'Ø *Ø&0Ø-7ð
ð 
ˆð Ð!XÐ!XÐ!Xðˆð ˜Ð.Ð.rz   c                  ó   — dS ©NrH   r‚   r‚   rz   rx   Úquery_model_familyz!family_handler.query_model_familyõ  ó   € àˆvrz   c                  ó
   — ddiS )NrH   )rõ   zLTX-2r‚   r‚   rz   rx   Úquery_family_infosz!family_handler.query_family_infosù  s   € à˜Ð&Ð&rz   c                 óL  ‡‡ ‡!— |                      d¦  «        }t          | ¦  «        Š!t          | ¦  «        }t          | |¦  «        }t	          | |¦  «        }|ost          d„ t          |                      dg ¦  «        t          t          f¦  «        r|                      dg ¦  «        n|                      dd¦  «        gD ¦   «         ¦  «        }t          |t          ¦  «        r)ˆ!fd„t          D ¦   «         Š ˆ fd„Šˆfd„|D ¦   «         |d<   t          |¦  «        }|st          |¦  «        rdnd	}|dk    }	|rt          nt          }
|rt          t          fnt           t"          f}i d
d“dddg“dt$          “d| t&          v p|“d|“d|                      d|r	|rt(          n!|rt*          n|rt,          n|rt.          nt0          ¦  «        “d|
“dt3          d|
|d         ¦  «        t3          d|
|d         ¦  «        g“dd“dd“dd“dd“dd “d!| “d"d“d#d“d$d%“ddd|	r	‰!d&         gn‰!d&         ‰!d'         g‰!d(         ‰!                      d)d¦  «        ‰!                      d*d¦  «        ‰!                      d+¦  «        dd,t4                               ¦   «         gd-d| t&          v s|rd.nd/d0œ¥}d1|d2<   | t&          v s|r"d3d4d5t8          t:          dd6œd7‰!d8         d9œd:œ|d;<   |                     t?          ‰!¦  «        ¦  «         |	rd|d<<   d=|d><   nd?g|d@<   |r|                     t@          ¦  «         tC          | ¦  «        r ddg|dA<   dB|dC<   tD          |dD<   tF          |dE<   |	r‰!                      dF¦  «        n‰!                      dG¦  «        g|dG<   d|dH<   d|dI<   dJdKdLœ|dM<   |r¥ddNl$m%}m&}m'}m(} |                     i dOd“dPd“dQdR“dSdT“dUd“dVdW“dXg dY¢“dZd“d[d“d\d“d|                      d|¦  «        “dd]“d^d_“d`|“dadbdcgdddedfœddgœ“dh|“di|“|djdjdjdkdlgdmddndoœt4                               ¦   «         |dpdqdrddsdtœgduœ¥¦  «         �ndddvl)m*}m+}m,}m-} |r!|s|s|                     t\          |dwœ¦  «         |rddxg}n|r|	sg dy¢}ng dz¢}d{d|d}d~ddzœ}|r!d€„ |D ¦   «         }| /                    d�¦  «         |                     i d^d‚“dƒd“d„d“d…d“d†d“d‡dˆ“d‰dŠ“d‹|||r
dŒ|dŒ         ind�d~dŽœd�d�|rd‘ndd’œ“d`|“dag d“¢d”d•d–d—d˜œddgœ“dh|“di|“d™dš“d›dš“dœd“d�d“džd“d|	ddddŸœ¥¦  «         d d¡dLœ|d¢<   d£d¤dLœ|d¥<   |rd¦g}n/| d§v rd¨g}n'd©g}|g dª¢z  }tC          | ¦  «        r|d«d¬dõgz  }|d¯gz  }d°„ |D ¦   «         }|s|d±|rd²ndd³| d´œ}||dµ<   i |¥|d¶d·œ¥|d¸<   d|d¹<   d|dº<   |rd|d»<   |s|rdgd�d¼œnd½g d¾¢i|d¿<   |rê|                     ddÀdÁdÂgdÃdÃdÄddÅœd�dd�d�ddÆd�ta          |                      dÇdÈ¦  «        ¦  «        dÉœ¦  «         |rtb          |dÊ<   dË|dÌ         dÍ         d<   |r�t          |                      dÎg ¦  «        t          ¦  «        r#t          |                      dÎg ¦  «        ¦  «        ng |dÎ<   |dÎ          2                    dÏdÐdÐdÑddÒgdÓ„ dÔD ¦   «         z   dÕœ¦  «         ddÖd d×dØdÙdÚdÛdÜœ|dÝ<   |	r|                     dÞdi¦  «         n:|                     dddddßdàg dá¢dâdãœ¦  «         |rg dä¢|då<   n| t&          v rg dæ¢|då<   d,|dç<   |	rdnd|dè<   |rd�|dé<   ddêl3m4} ddël5m6}  || |||||¬ì¦  «        ¦  «        }|p|p| |dí<   |dí         rdî}dïD ]}||v r||xx         |z  cc<   Œddðl7m8} |                      ||¦  «        ¦  «         |rdñ|dò<   |dí         rdó|dô<   |S )öNÚpreload_URLsc              3   ó\   K  — | ]'}d t          |¦  «                             ¦   «         v V — Œ(dS )zmsr-v2N)rË   rF  ©rØ   Úvalues     rx   rM  z1family_handler.query_model_def.<locals>.<genexpr>  sM   è è € ð 
ð 
àð �˜E™
œ
×(Ò(Ñ*Ô*Ð*ð
ð 
ð 
ð 
ð 
ð 
rz   Úlorasrt   c                 ó(   •— h | ]}|‰v ¯‰|         ’ŒS r‚   r‚   )rØ   r  rÔ   s     €rx   rH  z1family_handler.query_model_def.<locals>.<setcomp>
  s"   ø€ ÐRÐRÐR¨CÀcÈTÀkÀk˜d 3œiÀkÀkÀkrz   c                 óì   •— t          | t          ¦  «        rd| v r| S |                      dd¦  «        d         }|                     d¦  «        r&t          j                             |¦  «        ‰v r|› d�S | S )Nz
|%lora_dirú|r   r   Úhttp)r®   rË   ÚsplitÚ
startswithr   r!  rE  )ÚentryÚsource_entryÚlora_filenamess     €rx   Úadd_lora_dir_suffixz;family_handler.query_model_def.<locals>.add_lora_dir_suffix  s�   ø€ Ý! %­Ñ-Ô-ð !°ÀÐ1FÐ1FØ �LØ$Ÿ{š{¨3°Ñ2Ô2°1Ô5�Ø×*Ò*¨6Ñ2Ô2ð 7µr´w×7GÒ7GÈÑ7UÔ7UÐYgÐ7gÐ7gØ*Ð6Ð6Ð6Ð6Ø�rz   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r‚   r‚   )rØ   r†  r‰  s     €rx   rR  z2family_handler.query_model_def.<locals>.<listcomp>  s%   ø€ Ð(^Ð(^Ð(^ÈÐ)<Ð)<¸UÑ)CÔ)CÐ(^Ð(^Ð(^rz   r   r  Údevice_explicitTÚcuda_graphsÚtransformerÚtransformer2Úuint8_guidesÚltx2_22B_classr*   ÚinfosÚtext_encoder_folderÚtext_encoder_URLsr=   r   r   Údtyper	  rÄ   é   Úprompt_enhancer_video_durationÚframes_minimumé   Úframes_stepsr¢   Úsliding_windowÚreturns_audioÚaudio_window_alignmentÚaudio_overlap_repair_mséP   rG   rI   r?   r   rP   rQ   r‹   é@   r\   r[   )Úauto_null_audioÚmultimedia_generationÚimage_end_frame_positionrG   Últx2_spatial_upscaler_fileÚltx2_hdr_lora_fileÚltx2_hdr_scene_embeddings_fileÚltx2_hdr_transformÚself_refinerÚself_refiner_max_plansr«   Úvae_block_sizeÚ%keep_frames_video_guide_not_supportedÚtiny_vae_architectureÚWriteÚprompt_enhancer_button_labelÚVAEzDefault VAEz,PrunaAI VAE (faster, slightly worse quality))r4   r  r  Últx2_pruna_vaez:NAD Diffusion Decoder (slower, higher VRAM, better motion)rS   )r4   r  )Ú_nameÚ_default_labelzPrunaAI VAEzNAD Diffusion DecoderÚsystem_configsrÿ   ÚnativeÚacceleratedÚltx2_lora_distilledÚfinetune_custom_urlsÚvideo_guide_outpaintingzJEnable Spatial Outpainting on Control Video using LTX2 Outpainting IC-LoRAÚvideo_guide_outpainting_labelÚguide_inpaint_colorÚbackground_removal_colorrM   rK   Úextra_control_framesÚdont_cat_preguidezCStart Image / Source Strength (lower values may create more motion)zStart Image / Source Strength)r5   r4   Úinput_video_strength)r¶   ÚJOYAI_ECHO_INFOSÚJOYAI_ECHO_PROMPT_ENHANCERÚJOYAI_ECHO_PROMPT_INFOSro   Újoyai_audio_memoryÚjoyai_memory_max_sizeé   Újoyai_memory_num_fix_framesé   Újoyai_memory_downscale_factorÚjoyai_audio_memory_window_sizeé`   Úprompt_slash_commands)r¾   r¿   rÀ   rÁ   Úpreserve_empty_prompt_linesÚskip_video_guide_preprocessÚNAGrÅ   Úimage_prompt_types_allowedÚTSVÚprompt_infosÚprompt_enhancer_defÚTMÚTIMz9A JoyAI-Echo multi-shot prompt using existing Text PromptzLA JoyAI-Echo multi-shot prompt using existing Text Prompt and {image_inputs})rÑ  rÒ  )Ú	selectionÚlabelsr7   Ú"text_prompt_enhancer_instructions1Ú#video_prompt_enhancer_instructions1i   )zNo Control Video Memoryrt   )zJoyAI-Echo Control Video Memoryrš   rš   zControl Video Memory)ÚchoicesÚletters_filterr7   r5   zControl Video Memory PositionszLJoy Memory Positions from Control Video (frames or seconds, comma-separated)ÚtextÚ1)r#   r4   r5   r6   r7   r;   )Ú#image_prompt_enhancer_instructions1Ú text_prompt_enhancer_max_tokens1Ú!video_prompt_enhancer_max_tokens1Ú!image_prompt_enhancer_max_tokens1Úguide_custom_choicesr«   )ÚLTX2_25_DEEPY_PROMPT_INFOSÚLTX2_PROMPT_INFOSÚLTX2_RELAYED_IMAGE_PROMPTÚLTX2_RELAYED_PROMPT)Údeepy_infosÚdeepy_prompt_infosrO  )rt   rO  ÚK)rt   rO  ræ  r…   ÚA1OFz0Generate Video & Soundtrack based on Text Promptz2Generate Video based on Soundtrack and Text PromptzGGenerate Video based on Control Video + its Audio Track and Text Promptz5Generate Audio based on Control Video and Text PromptzAGenerate Video based on Reference Voice (ID-LoRA) and Text Promptc                 ó   — g | ]
}|d k    ¯|‘ŒS )rç  r‚   )rØ   Úchoices     rx   rR  z2family_handler.query_model_def.<locals>.<listcomp>ž  s$   € Ð)jÐ)jÐ)j°VÐY_ÐciÒYiÐYi¨&ÐYiÐYiÐYirz   rç  ÚTSEVLÚend_frames_always_enabledÚany_audio_promptÚaudio_prompt_choicesÚone_speaker_onlyÚaudio_guide_labelz=Audio Prompt (Soundtrack, leave blank to to use a Null Audio)Úaudio_scale_namezPrompt Audio StrengthÚaudio_prompt_type_sourcesr…   zReference Voice (ID-LoRA))rÚ  r…   ÚA1OFK2Fræ  )rÓ  rÔ  Úcustom_flagsrØ  Ú
show_labelr7   )ÚTÚTIÚT1ÚTI1z-An Enhanced Prompt using existing Text Promptz@An Enhanced Prompt using existing Text Prompt and {image_inputs}z5An Enhanced Relayed Prompt using existing Text PromptzHAn Enhanced Relayed Prompt using existing Text Prompt and {image_inputs})rõ  ÚTIVÚT1VÚTI1VrÜ  i   rÝ  Úaudio_guide_window_slicingÚ!video_length_not_limited_by_audioÚoutput_audio_is_input_audio)Úmultiple_images_as_text_promptsÚcustom_denoising_strengthrÌ  Úv2i_switch_supportedÚimage_batch_size_maxz=Control Video Strength (higher = closer to the Control Video)zControl Video StrengthÚdenoising_strengthzGUnmasked Area Strength (higher = unmasked area closer to control video)zUnmasked Area StrengthÚmasking_strength)zNo Control Videort   )rp   )zEditAnything Source VideoÚVGI)zNo Video Processrt   ))zTransfer Human MotionÚPVG)z)Transfer Human Motion With Pose AlignmentÚOVG)zTransfer DepthÚDVG)zTransfer Canny EdgesÚEVG)z+LTX2 Raw Format / Control Video for Ic LoraÚVG)zInpaint Masked AreaÚMVG)zIngredients Reference SheetÚIúConvert SDR to HDR (IC-LoRA)úV&G)zInject FramesÚKFIc                 ó$   — g | ]\  }}|d v¯	||f‘ŒS ))r  r  r  r  r  r‚   )rØ   r5   r~  s      rx   rR  z2family_handler.query_model_def.<locals>.<listcomp>ß  sM   € ð  %Kð  %Kð  %K¹¸¸uÐ[`ð  iJð  \Jð  \J e¨U ^ð  \Jð  \Jð  \Jrz   zOPDEMVG&KFIr  z Control Video / Frames Injection)r×  rØ  r7   r5   Úvisiblerß  zControl Image)r×  r5   Úguide_custom_choices_imageÚcustom_frames_injectionÚone_image_ref_onlyÚone_image_ref_needed)rÓ  r  rÓ  )rt   rO  ÚNAÚXAÚXNAÚmask_preprocessingÚTE)zUp to 5 Subjects / Objectsr  )zBackground + Up to 4 SubjectsÚKIr  zMSR Reference Images)r×  rØ  r7   r5   rô  z/Remove Background behind MSR Subjects / ObjectsÚltx2_msr_frame_counté)   )r^   rÍ  Úimage_ref_choicesr  Úat_least_one_image_ref_neededr  Ú!all_image_refs_are_background_refÚfit_into_canvas_image_refsÚbackground_removal_labelrÿ  r  Últx2_msr_slot_embeddings_file)zUp to 4 Subjects / Objectsr  r  r×  r«   Úmsr_reference_frameszMSR Reference Video LengthÚdropdown)ÚAutort   c                 ó0   — g | ]}t          |¦  «        |f‘ŒS r‚   )rË   r}  s     rx   rR  z2family_handler.query_model_def.<locals>.<listcomp>  s$   € Ð8wÐ8wÐ8wÐQV½#¸e¹*¼*ÀeÐ9LÐ8wÐ8wÐ8wrz   )r˜  rÅ   é!   r  é1   é9   éA   )r#   r4   r5   r6   r7   r×  éa   é	   é   iõ  é   rå   )Úoverlap_minÚoverlap_maxÚoverlap_stepÚoverlap_defaultÚ
window_minÚ
window_maxÚwindow_stepÚwindow_defaultÚsliding_window_defaultsÚlock_inference_stepszModality GuidancezGuidance Rescale))ÚOffr   )zSkip Layer Guidancer   )zSkip Self Attentionr‹   é0   )Úaudio_guidanceÚadaptive_projected_guidanceÚcfg_starÚperturbationÚalt_guidancerª   Úperturbation_choicesÚperturbation_layers_max))z#Distilled 8 Steps (Euler Ancestral)ré   )zDistilled 8 Steps (Euler)rô   ©ÚEulerÚeuler©z
HQ (res2s)Úres2sÚsample_solvers))zDistilled 8 Stepsrô   rC  rF  Úguidance_max_phasesÚvisible_phasesr§  )Ú
merge_help)Úcompact_help)ÚmsrÚjoyÚeditanythingÚltx25Úphase_2_spatial_tilinga  

**Two Phases with Tiling** refines overlapping spatial tiles in phase 2, blending predictions at every step. Phase 1 establishes the whole scene. This reduces each transformer call's spatial extent, takes more calls, and can change fine detail. VAE tiling is independent.)r‘  rä  )Úvfx_model_defÚ	1920x1088Úresolution_budgetÚ	3840x2176Úresolution_budget_tiled)r  r  )9rv   ry   r~   r—   rý   r]  r®   ÚlistÚtupler4  rû   r   Ú_GEMMA4_FOLDERÚ_GEMMA_FOLDERÚ_GEMMA4_FILENAMEÚ_GEMMA4_INT8_FILENAMEÚ_GEMMA_FILENAMEÚ_GEMMA_QUANTO_FILENAMErˆ   rá   r   r
   r   r   r   r   Ú_PROMPT_RELAY_CUSTOM_SETTINGÚcopyÚ_PRUNAAI_VAE_FILENAMEÚ_PRUNAAI_VAE_CONFIG_FILENAMEÚupdaterÝ   Ú_EDITANYTHING_MODEL_DEFr€   rŽ   r’   ro   r¶   r¾  r¿  rÀ  Úprompt_enhancerrà  rá  râ  rã  r	   Úpopr°   Ú_MSR25_SLOT_FILENAMEÚappendÚmodels.help_sharedrK  r‘  rL  ÚvfxrR  )"rq   r“   Úpreload_urlsrP  rN  rM  Úmsr_v2Úeditanything_refr  r   Úgemma_folderÚgemma_filesÚextra_model_defr¶   r¾  r¿  rÀ  rà  rá  râ  rã  Úaudio_prompt_selectionÚaudio_prompt_labelsÚcontrol_choicesÚcontrol_choices_imagerß  rK  rL  Útiling_helpr  rR  r‰  rˆ  rÔ   s"                                  @@@rx   Úquery_model_defzfamily_handler.query_model_defý  sÂ  øøø€ à —}’} ^Ñ4Ô4ˆÝ˜oÑ.Ô.ˆÝ˜/Ñ*Ô*ˆÝ˜_¨iÑ8Ô8ˆÝ˜O¨YÑ7Ô7ˆØð 
�ð 
ð 
å8BÀ9Ç=Â=ÐQXÐZ\ÑC]ÔC]Õ`dÕfkÐ_lÑ8mÔ8mð  P˜)Ÿ-š-¨°Ñ4Ô4Ð4Ðt}÷  uBò  uBð  CJð  LNñ  uOô  uOð  tPð
ñ 
ô 
ñ 
ô 
ˆõ �l¥DÑ)Ô)ð 
	_àRÐRÐRÐRµ?ÐRÑRÔRˆNðð ð ð ð ð )_Ð(^Ð(^Ð(^ÐQ]Ð(^Ñ(^Ô(^ˆI�nÑ%å1°)Ñ<Ô<ÐØ'*Ð]Õ.AÀ)Ñ.LÔ.LÐ]˜˜ÐR]ˆà! [Ò0ˆ	Ø).ÐA•~�~µMˆØCHÐwÕ'Õ)>Ð?Ð?ÍÕ`vÐNwˆð%
Ø˜tð%
à˜M¨>Ð:ð%
ð Õ-ð%
ð ˜oµÐ?ÐHÀ5ð	%
ð
 !Ð"2ð%
ð �Y—]’] 7Àð  -wÈ3ð  -wÕ,=Ð,=Ðejð  UwÕTaÐTað  FLð  qwõ  qBð  qBð  dgð  Rwõ  R`ð  R`õ  mwñ  xô  xð%
ð " <ð%
ð  ÝÐ1°<ÀÈQÄÑPÔPÝÐ1°<ÀÈQÄÑPÔPð"ð%
ð �Vð%
ð �2ð%
ð -¨dð%
ð ˜bð%
ð  ˜Að!%
ð"  #˜gð#%
ð$ ˜Tð%%
ð& % dð'%
ð( & rð)%
ð*  $Ø%)Ø(,Ø6?Ðu˜T .Ô1Ð2Ð2ÀdÈ>ÔFZÐ\`ÐasÔ\tÐEuØ*.Ð/AÔ*BØ"&§(¢(¨:°rÑ":Ô":Ø.2¯hªhÐ7MÈrÑ.RÔ.RØ"&§(¢(¨?Ñ";Ô";Ø Ø&'Ý <× AÒ AÑ CÔ CÐDà Ø59à3BÅnÐ3TÐ3TÐX]Ð3T Z ZÐcmðI%
ð %
ð %
ˆðL ;BˆÐ6Ñ7Ø�nÐ,Ð,°Ð,àØ"/àJÝ+@Ý2NØ&*ð	 ð  ð YØ+/Ð0EÔ+Fð*ð *ð1ð 1ˆOÐ,Ñ-ð 	×ÒÕ4°TÑ:Ô:Ñ;Ô;Ð;Øð 	PØ/:ˆO˜OÑ,Ø-5ˆO˜MÑ*Ð*à9NÐ7OˆOÐ2Ñ3ð ð 	<Ø×"Ò"Õ#:Ñ;Ô;Ð;å# OÑ4Ô4ð 	Xà:;¸A¸ˆOÐ5Ñ6ð @LˆOÐ;Ñ<Ý5MˆOÐ1Ñ2Ý:WˆOÐ6Ñ7à_hð  3N°$·(²(Ð;ZÑ2[Ô2[Ð2[Ðnr×nvÒnvð  xMñ  oNô  oNð  2OˆÐ-Ñ.Ø23ˆÐ.Ñ/Ø/3ˆÐ+Ñ,àZØ3ð3
ð 3
ˆÐ.Ñ/ð ð j	ð Hð  Hð  Hð  Hð  Hð  Hð  Hð  Hð  Hð  Hð  Hð  Hà×"Ò"ðØ  $ðà(¨$ðð ,¨Qðð 2°1ð	ð
 4°Qðð 5°bðð ,Ð-\Ð-\Ð-\ðð 2°4ðð 2°4ðð ˜4ðð ˜YŸ]š]¨7Ð4DÑEÔEðð ˜2ðð 1°%ðð #Ð$;ðð *¸$À¸ð  ZUð  ^lð  Smð  Smð  z|ð  ,}ð  ,}ðð  9Ð:Tð!ð" :Ð;Uð#ð$ <VØ8<Ø9=Ø9=Ø9Xð  [Dð  9Eð  Y]ð  jlð  wMð  -Nð  -Nå4×9Ò9Ñ;Ô;Ø;ÐEeð  qð  IOð  \^ð  uxð  yð  yð(ð/ð ð ñô ð ñ ð> Gð  Gð  Gð  Gð  Gð  Gð  Gð  Gð  Gð  Gð  Gð  Gàð ˜cð Ð%5ð Ø×&Ò&Õ7JÐb|Ð'}Ð'}Ñ~Ô~Ð~àð EØ*,¨c¨Ð&Ð&Ø!ð E¨)ð EØ)7¨¨Ð&Ð&à)DÐ)DÐ)DÐ&àFØIØ^ØLØ[ð#ð #Ðð ð 0Ø)jÐ)jÐ?UÐ)jÑ)jÔ)jÐ&Ø#×'Ò'¨Ñ/Ô/Ð/Ø×"Ò"ð*Ø0°'ð*à/°ð*ð '¨ð*ð +¨Dð	*ð
 '¨ð*ð (Ð)hð*ð 'Ð(?ð*ð 0Ø%;Ø"5ØKPð )¨Ð.AÀ#Ô.FÐ(GÐ(GØ!<Ø!XðWð Wð +3Ø&+Ø*:Ð#B 3 3Àð
2ð 
2ð*ð& #Ð$5ð'*ð( *Ø%=Ð%=Ð%=à!PØ#eØ#ZØ$nð	#ð #ð $&ð	,ð 	,ð)*ð< 9Ð:Mð=*ð> :Ð;Tð?*ð@ 7¸ðA*ðB 8¸ðC*ðD 1°$ðE*ðF 8¸ðG*ðH 2°4ðI*ðJ 8<Ø1:ØØ,0Ø,-ðS*ð *ð *ñ,ô ,ð ,ð\ YØ0ð5ð 5ˆOÐ0Ñ1ð
 cØ0ð3ð 3ˆOÐ.Ñ/ð ð 	>Ø#;Ð"<��Ø Ð$>Ð>Ð>Ø#GÐ"H��à#;Ð"<�Øð  $oð  $oð  $oñ  o�Ý+¨OÑ<Ô<ð XØ#Ð(FÐHlð  oWð  (Xñ  X�OØÐ$<Ð#=Ñ=�ð %Kð  %KÈð  %Kñ  %Kô  %KÐ!Øð 	Uà.Ø&3Ø(8Ð@˜u˜u¸bØ?Ø$4Ð 4ð(ð (Ð$ð ;O�Ð 6Ñ7ð AUÐCWð  AUÐdyð  ETð  AUð  AUð  AU�Ð <Ñ=Ø9=ˆOÐ5Ñ6Ø48ˆOÐ0Ñ1Øð ?Ø:>�Ð 6Ñ7Ø]mð  5fÐqtð  5fÀ2À$ÐSXÐ4YÐ4YÐ4Yð  |Gð  Ieð  Ieð  Ieð  {fˆOÐ0Ñ1Øð $Ø×&Ò&à$(Ø6:à(KÐMtÐ'uØ.2Ø'+Ø%;Ø*.ð.ð .ð /4Ø9=Ø38Ø=BØ67Ø4eØ;@Ý03°I·M²MÐBXÐZ\Ñ4]Ô4]Ñ0^Ô0^ð#ð ñô ð ð* ð mÝG[�OÐ$CÑDØIl�OÐ$7Ô8¸ÔCÀAÑFØð ÝgqÐr{×rÒrð  ARð  TVñ  sWô  sWõ  Y]ñ  h^ô  h^ð  :f½¸i¿mºmÐL]Ð_aÑ>bÔ>bÑ9cÔ9cÐ9cð  df�OÐ$5Ñ6Ø#Ð$5Ô6×=Ò=à"8Ø$@Ø%AØ$.Ø')Ø(4 ~Ð8wÐ8wÐZvÐ8wÑ8wÔ8wÑ'wðð ñ	ô 	ð 	ð ØØØ ØØØØ!ð	6
ð 	6
ˆÐ1Ñ2ð ð 	NØ×"Ò"à*¨Dðñô ð ð ð ×"Ò"à&*Ø37Ø $Ø$(Ø$7Ø!3ð-ð -ð -ð
 02ðð ñô ð ð  ð Nð 5^ð  5^ð  5^�Ð 0Ñ1Ð1Ø ¥NÐ2Ð2ð 5Nð  5Nð  5N�Ð 0Ñ1Ø12ˆÐ-Ñ.Ø1:Ð,A¨A¨AÀˆÐ(Ñ)Øð 	4Ø.3ˆO˜NÑ+ð 	2Ð1Ð1Ð1Ð1Ð1Ø'Ð'Ð'Ð'Ð'Ð'Ø$˜* _°l°lÀsÐPSÐbrÐzð  7Añ  7Aô  7Añ  Bô  BˆØ9<Ð9WÀÐ9WÐGWÐ4XˆÐ0Ñ1ØÐ3Ô4ð 	8ð pˆKØ/ð 8ð 8�Ø˜/Ð)Ð)Ø# CÐ(Ð(Ô(¨KÑ7Ð(Ð(Ñ(øØ&Ð&Ð&Ð&Ð&Ð&Ø×Ò˜}˜}¨YÑ7Ô7Ñ8Ô8Ð8Øð 	IØ3>ˆOÐ/Ñ0ØÐ7Ô8ð IØ=H�Ð 9Ñ:ØÐrz   c                 ó(   — ddl m}  ||||¦  «        S )Nr   )Úpreprocess_alpha_source)rj  rx  )rq   rÂ   Ú
video_maskr;   r‘   rx  s         rx   Úcustom_preprocessz family_handler.custom_preprocess\  s*   € à0Ð0Ð0Ð0Ð0Ð0Ø&Ð& {°JÐ@QÑRÔRÐRrz   c                 óZ   — ddl m}  |d| t          v st          | ¦  «        rdn| ¦  «        S )Nr   )Úget_rgb_factorsrH   r\   )Úshared.RGB_factorsr|  rá   r~   )rq   r|  s     rx   r|  zfamily_handler.get_rgb_factorsa  sQ   € à6Ð6Ð6Ð6Ð6Ð6àˆ˜v°_ÍÐ5VÐ5VÕZcÐdsÑZtÔZtÐ5V z zð  {Jñ  Kô  Kð  	Krz   c                 ó   — dS ru  r‚   rw   s    rx   rC  zfamily_handler.get_lora_dirg  rw  rz   Nc                 ó4  — t          |¦  «        }t          ||¦  «        r	|d         gn|d         |d         g}t          ||¦  «        }t          |¦  «        r|d         |d<   |                     ¦   «         D ]}||vr|                     |¦  «         Œt          |¦  «        r*t          ||¦  «        r|                     t          ¦  «         |d         dg|gdœdt          |¦  «        rt          nt          gt          |¦  «        rt          nt          gdœg}|S )Nr?   r@   rS   r<   rt   )ÚrepoIdÚsourceFolderListÚfileListr=   )ry   r—   r  r~   r1  rh  rý   rg  rY  rZ  Ú_GEMMA4_TOKENIZER_FILESÚ_GEMMA_TOKENIZER_FILES)ÚcomputeListrq   r“   rÔ   Ú	file_listÚcomponent_namesr4   Údownload_defs           rx   Úquery_model_filesz family_handler.query_model_filesk  sg  € å˜oÑ.Ô.ˆå2@ÀÐR[Ñ2\Ô2\ð  X�TÐ,Ô-Ð.Ð.ÐcgÐhzÔc{ð  ~Bð  CVô  ~Wð  cXˆ	Ý/°	¸?ÑKÔKˆÝ�_Ñ%Ô%ð 	QØ59Ð:OÔ5PˆOÐ1Ñ2Ø#×*Ò*Ñ,Ô,ð 	'ð 	'ˆDØ˜9Ð$Ð$Ø× Ò  Ñ&Ô&Ð&øÝ�_Ñ%Ô%ð 	3­-¸ÈÑ*SÔ*Sð 	3Ø×ÒÕ1Ñ2Ô2Ð2ð ˜yœ/Ø%' DØ&˜Kðð ð /Ý7@ÀÑ7QÔ7QÐ%d¥^ ^ÕWdÐ$eÝ8AÀ/Ñ8RÔ8RÐnÕ4Ð4ÕXnÐoðð ð
ˆð Ðrz   c                 óV  ‡‡‡— |                      dd¦  «        }|                      dd¦  «        }|                      dd¦  «        }|s|rƒ|                      d¦  «        rd|                      dd	¦  «        vr|rd
ndS |r7|                      dd¦  «        dk    rdS |                     dddd	d	¬¦  «         n|                      d¦  «        sdS t          | ¦  «        rd|d<   t          | |¦  «        rŒt	          ||¦  «        }|r|S |                     t          |                      d¦  «        |                      dd	¦  «        |                      dd	¦  «        |                      dd¦  «        d¬¦  «        ¦  «         d S |dk    r<|                     ddddddd œ¦  «         |                      d!d¦  «        dk    rd|d!<   nü| t          v pt          | ¦  «        }|                      d"|rd#nd	¦  «                             ¦   «         }|r©h d$£}	t          | ¦  «        r|	                     d%¦  «         ||	vrd&|› d'�S ||d"<   |d(v rd|d)<   |d*k    rb|                      d+d¦  «        rd,S |                      d-d¦  «        rd.S |                      dd¦  «        rd/S |                      d0d¦  «        d1vrd2S n|d3vr	d4|› d5| › d6�S |                      d7d ¦  «        }
|                      d8d	¦  «        }|                      dd	¦  «        pd	Š|                      dd	¦  «        pd	Š|                      d9d	¦  «        pd	Šdd:l	m
}  ||
|¦  «        d u}t          | |¦  «        rµt          ˆfd;„d<D ¦   «         ¦  «        rd=S d>‰vrd?S t          ˆfd@„dAD ¦   «         ¦  «        rdBS t          ˆfdC„dDD ¦   «         ¦  «        rdES |                      d¦  «        pg }dF‰v rdt          |¦  «        cxk    rdGk    sn dHS ndt          |¦  «        cxk    rdIk    sn dJS dK‰v r]t          ˆfdL„dMD ¦   «         ¦  «        rdNS d‰vsdO‰vrdPS t          ˆfdQ„dRD ¦   «         ¦  «        s|rdSS |                      d¦  «        €dTS dU‰v rft          | ¦  «        sdVS t          ˆfdW„dXD ¦   «         ¦  «        s|rdYS dZ‰v rd[S t          | ¦  «        r!t          ˆfd\„d]D ¦   «         ¦  «        sd^‰v rd_S d`‰v rit          | ¦  «        sdaS d^‰vrdbS t          |                      dcd¦  «        ¦  «        dk    rddS t          |                      ded¦  «        ¦  «        dk    rdfS |rEd‰v rAt          ˆfdg„dXD ¦   «         ¦  «        rdhS di‰v rdjS dZ‰v rdkS d^‰v rt!          ¦   «         dk    rdlS |                      dd¦  «        }|dk    r1d‰v r-|r+t!          ¦   «         dk    rd|d<   t#          j        dm¦  «         dK‰vrt'          | |||¦  «        }|r|S d^‰v r3|                      dn¦  «        € |                      do¦  «        }|�||dn<   d S d S d S d S )pNrÿ   r  Últx2_alpha_genFrX  rÂ   r™   r;   rt   z"Alpha Gen requires a Source Video.z)Layout to Render requires a Layout Video.rä   rò   é‘   zEAlpha Gen supports at most 145 frames. Trim or split the source clip.r   r¤   r£   )rŸ   r  r  re  r†   Ú
image_refszULayout to Render requires an Appearance Reference made from the layout's first frame.r   rñ   r«   rœ   rŸ   r‹   Trž   r   r¢   )r¦   r§   r¨   r­   r©   rª   r?  rè   rE  >   rE  rG  rô   ré   zUnsupported LTX2 sampler 'z'.>   rô   ré   r¦   rG  rï   z$HQ sampler does not support APG yet.rð   z)HQ sampler does not support CFG Star yet.z-HQ sampler does not support Self Refiner yet.rê   )r   r‹   z=HQ sampler supports only Off or Skip Self Attention guidance.>   rt   rE  z	Sampler 'z' is not supported for ú.r·  Úvideo_guide_outpainting_ratior†   )Úget_outpainting_dimsc              3   ó    •K  — | ]}|‰v V — Œ	d S r|   r‚   ©rØ   rL  rœ   s     €rx   rM  z>family_handler.validate_generative_settings.<locals>.<genexpr>É  s)   øè è € ÐCÐC°6�6Ð.Ð.ÐCÐCÐCÐCÐCÐCrz   ÚSVLzNLTX2 MSR does not support Start Image, Continue Video, or Continue Last Video.r  z0LTX2 MSR requires the MSR Reference Images mode.c              3   ó    •K  — | ]}|‰v V — Œ	d S r|   r‚   rK  s     €rx   rM  z>family_handler.validate_generative_settings.<locals>.<genexpr>Í  ó)   øè è € ÐIÐI°6�6Ð.Ð.ÐIÐIÐIÐIÐIÐIrz   z	OPDEVG&FAzCLTX2 MSR supports only MSR reference images for video conditioning.c              3   ó    •K  — | ]}|‰v V — Œ	d S r|   r‚   ©rØ   rL  r†   s     €rx   rM  z>family_handler.validate_generative_settings.<locals>.<genexpr>Ï  ó)   øè è € ÐBÐB°6�6Ð.Ð.ÐBÐBÐBÐBÐBÐBrz   ÚK2z6LTX2 MSR does not support Control Video audio options.ræ  r.  zfLTX2 MSR Background + Subjects mode requires 2 to 5 reference images, with the background image first.r/  zGLTX2 MSR Subjects / Objects only mode requires 1 to 4 reference images.r…   c              3   ó    •K  — | ]}|‰v V — Œ	d S r|   r‚   r—  s     €rx   rM  z>family_handler.validate_generative_settings.<locals>.<genexpr>Ø  r˜  rz   ÚAKzŠLTX2 audio generation from Control Video must use the dedicated audio option, without an Audio Source or Control Video Audio Track prompt.ÚGz`LTX2 audio generation from Control Video requires 'LTX2 Raw Format / Control Video for Ic Lora'.c              3   ó    •K  — | ]}|‰v V — Œ	d S r|   r‚   rK  s     €rx   rM  z>family_handler.validate_generative_settings.<locals>.<genexpr>Ü  r•  rz   z	OPDE&AFKIzƒLTX2 audio generation from Control Video supports only raw Control Video, without Pose/Depth/Canny/HDR/Outpaint/Mask/Inject Frames.z;You must provide a Control Video to generate audio from it.rB  z<LTX2 HDR IC-LoRA is supported only with the main 22B models.c              3   ó    •K  — | ]}|‰v V — Œ	d S r|   r‚   rK  s     €rx   rM  z>family_handler.validate_generative_settings.<locals>.<genexpr>ã  s)   øè è € ÐDÐD°6�6Ð.Ð.ÐDÐDÐDÐDÐDÐDrz   rN  zPLTX2 HDR IC-LoRA is not compatible with Pose/Depth/Canny/Outpaint control modes.ÚFz:LTX2 HDR IC-LoRA is not yet compatible with Inject Frames.c              3   ó    •K  — | ]}|‰v V — Œ	d S r|   r‚   r’  s     €rx   rM  z>family_handler.validate_generative_settings.<locals>.<genexpr>ç  s*   øè è € Ð2bÐ2bÐSY°6Ð=NÐ3NÐ2bÐ2bÐ2bÐ2bÐ2bÐ2brz   ÚSErO  z~LTX-2.5 SDR to HDR conversion is driven by the whole Control Video only: Start / End Images and Video Masks are not supported.rŠ   zCLTX2 inpainting IC-LoRA is supported only with the main 22B models.z&LTX2 inpainting requires a Video Mask.r  zoLTX2 inpainting IC-LoRA requires Unmasked Area Strength to be 0 as Unmasked Area is managed also by Inpainting.r  z@LTX2 inpainting IC-LoRA requires Control Video Strength to be 1.c              3   ó    •K  — | ]}|‰v V — Œ	d S r|   r‚   rK  s     €rx   rM  z>family_handler.validate_generative_settings.<locals>.<genexpr>ô  s)   øè è € ÐHÐH°v�vÐ!2Ð2ÐHÐHÐHÐHÐHÐHrz   z\LTX2 outpainting on Control Video supports only LTX2 Raw Format  / Contro Video for Ic Lora.rÚ  zLLTX2 outpainting on Control Video is not compatible with the ID-LoRA option.z:LTX2 outpainting is not yet compatible with Inject Frames.z+LTX2 outpainting doesnt support Video Mask.z<Number of Phases has been set to 1 as Outpainting is enabledÚaudio_guideÚaudio_source)rv   rc  r~   r—   rÓ   r²   rá   rF  r7  Úshared.utils.utilsr�  rý   r]  r^  r€   r2   rƒ   rÈ   rÉ   rk  )rq   r“   rÍ   r  Úalphari  ÚerrorÚsampler_enabledrè   Úsupported_samplersr·  r�  r�  r‡   r�  Úguide_phasesr¤  r†   rœ   r;   s                    @@@rx   Úvalidate_generative_settingsz+family_handler.validate_generative_settings‡  sÿ  øøø€ Ø!Ÿš o°{ÑCÔCˆØ—’Ð.°Ñ6Ô6ˆØ—’Ð6¸Ñ>Ô>ˆØð 	o�Fð 	oØ—:’:˜mÑ,Ô,ð v°¸6¿:º:ÐFYÐ[]Ñ;^Ô;^Ð0^Ð0^Ø?DÐuÐ;Ð;ÐJuÐuØð oØ—:’:˜n¨cÑ2Ô2°SÒ8Ð8ØbÐbØ—’¨aÀ#ÐZ]Ðoqð  FH�ñ  Iô  Ið  Ið  IØ—Z’Z Ñ-Ô-ð oØnÐnÝ�_Ñ%Ô%ð 	/Ø-.ˆFÐ)Ñ*Ý˜/¨9Ñ5Ô5ð 	Ý*¨9°fÑ=Ô=ˆEØð Ø�Ø�MŠM�/¨&¯*ª*Ð5FÑ*GÔ*GÐ[a×[eÒ[eÐfyÐ{}Ñ[~Ô[~ð  SY÷  S]ò  S]ð  ^qð  suñ  Svô  Svð  HN÷  HRò  HRð  Sdð  fgñ  Hhô  Hhð  rvð  wñ  wô  wñ  xô  xð  xØˆFØ˜KÒ'Ð'Ø�MŠMà+,Ø&)Ø,/Ø'*Ø*-Ø!$ðð ñ	ô 	ð 	ð �zŠz˜.¨Ñ+Ô+¨qÒ0Ð0Ø)*��~Ñ&øà-µÐ?Ð]Å9È_ÑC]ÔC]ˆOØ"ŸJšJ À?Ð8Z¸¸ÐXZÑ[Ô[×aÒaÑcÔcˆMØð \Ø%LÐ%LÐ%LÐ"Ý˜_Ñ-Ô-ð JØ&×*Ò*Ð+HÑIÔIÐIØ Ð(:Ð:Ð:ØI¸ÐIÐIÐIÐIØ*7��Ñ'Ø Ð$XÐXÐXØ45�FÐ0Ñ1Ø  GÒ+Ð+Ø—z’z ,°Ñ2Ô2ð FØEÐEØ—z’zÐ"3°QÑ7Ô7ð KØJÐJØ—z’zÐ"8¸!Ñ<Ô<ð OØNÐNØ—z’zÐ"7¸Ñ;Ô;À6ÐIÐIØ^Ð^øØ mÐ3Ð3Ø[ =Ð[Ð[ÈÐ[Ð[Ð[Ð[Ø"(§*¢*Ð-FÈÑ"MÔ"MÐØ(.¯
ª
Ð3RÐTVÑ(WÔ(WÐ%Ø"ŸJšJÐ':¸BÑ?Ô?ÐEÀ2ÐØ"ŸJšJÐ':¸BÑ?Ô?ÐEÀ2ÐØ"ŸJšJÐ':¸BÑ?Ô?ÐEÀ2ÐØ;Ð;Ð;Ð;Ð;Ð;à.Ð.Ð/FÐHeÑfÔfÐnrÐrˆÝ˜¨)Ñ4Ô4ð 	aÝÐCÐCÐCÐC¸UÐCÑCÔCÑCÔCð hØgÐgØÐ+Ð+Ð+ØIÐIÝÐIÐIÐIÐI¸[ÐIÑIÔIÑIÔIð ]Ø\Ð\ÝÐBÐBÐBÐB¸TÐBÑBÔBÑBÔBð PØOÐOØŸš LÑ1Ô1Ð7°RˆJØÐ'Ð'Ð'Ø�C 
™OœOÐ0Ð0Ò0Ð0¨qÒ0Ð0Ð0Ð0ð Dð  Dð 1à�#˜j™/œ/Ð.Ð.Ò.Ð.¨QÒ.Ð.Ð.Ð.Ø`Ð`ØÐ#Ð#Ð#ÝÐBÐBÐBÐB¸TÐBÑBÔBÑBÔBð dð dð  dØÐ+Ð+Ð+¨sÐ:KÐ/KÐ/KØyÐyÝÐIÐIÐIÐI¸[ÐIÑIÔIÑIÔIð ]È_ð ]ð ]ð  ]Ø�zŠz˜-Ñ(Ô(Ð0ØTÐTØÐ#Ð#Ð#Ý+¨OÑ<Ô<ð VØUÐUÝÐDÐDÐDÐD¸VÐDÑDÔDÑDÔDð jÈð jØiÐiØÐ'Ð'Ð'ØSÐSÝ˜Ñ)Ô)ð X­sÐ2bÐ2bÐ2bÐ2bÐ]aÐ2bÑ2bÔ2bÑ/bÔ/bð XÐfiÐm~Ðf~Ðf~ð Xð  XØÐ#Ð#Ð#Ý+¨OÑ<Ô<ð ]Ø\Ð\ØÐ+Ð+Ð+Ø?Ð?Ý�V—Z’ZÐ 2°AÑ6Ô6Ñ7Ô7¸3Ò>Ð>ð Ið  IÝ�V—Z’ZÐ 4°aÑ8Ô8Ñ9Ô9¸SÒ@Ð@ØYÐYØð 		IØÐ'Ð'Ð'ÝÐHÐHÐHÐHÀÐHÑHÔHÑHÔHð zØyÐyØÐ+Ð+Ð+ØiÐiØÐ+Ð+Ð+ØWÐWØÐ+Ð+Ð+Õ0HÑ0JÔ0JÈaÒ0OÐ0OØHÐHà—z’zÐ"3°QÑ7Ô7ˆØ˜!ÒÐ Ð'8Ð 8Ð 8¸_Ð 8ÕQiÑQkÔQkÐopÒQpÐQpØ()ˆFÐ$Ñ%ÝŒGÐRÑSÔSÐSØÐ'Ð'Ð'Ý0°À)ÈVÐUdÑeÔeˆEØð Ø�ØÐ#Ð#Ð#¨¯
ª
°=Ñ(AÔ(AÐ(IØ!Ÿ:š: nÑ5Ô5ˆLØÐ'Ø(4��}Ñ%Ð%Ð%ð $Ð#Ð(IÐ(Ià'Ð'rz   Fc                 ó  — ddl m}m} g }t          | t          t
          f¦  «        re|
pdgt          | ¦  «        z  }
d„ t          | |
¦  «        D ¦   «         }d„ t          | |
¦  «        D ¦   «         }t          |¦  «        dk    r|d         }n| }t          ||| 	                    d¦  «         ¬¦  «        }||d<   |r||d	<    || ||||||| 
                    d
¦  «        p"|rt          j                             |¦  «        nd |¬¦	  «	        }|	r\ddlm} t          |t          t
          f¦  «        r|d         n|}t!          |j        d|j        ¦  «        } ||||||d         ¦  «         |j        |j        |j        |j        |j        |j        |j        |j        dœ}|j        �
|j        |d<   |j        r|j        j        |d<   |j        j        |d<   n
|j        |d<   |j        �
|j        |d<   |r|j        rg d¢nddg}||dœ}||fS )Nr   )ÚLTX2ÚLTX2_ENABLE_EMBEDDING_LORASc                 ó$   — g | ]\  }}|d k    ¯|‘ŒS )r   r‚   ©rØ   r!  Úsubmodel_nos      rx   rR  z-family_handler.load_model.<locals>.<listcomp>  s)   € ÐxÐxÐxÑ):¨¨{ÐgrÐvwÒgwÐgw ÐgwÐgwÐgwrz   c                 ó$   — g | ]\  }}|d k    ¯|‘ŒS )r   r‚   r°  s      rx   rR  z-family_handler.load_model.<locals>.<listcomp>   s)   € Ð"{Ð"{Ð"{Ñ,=¨D°+ÐjuÐyzÒjzÐjz 4ÐjzÐjzÐjzrz   r   Últx2_upsampler_)r'  r�  Útransformer_modulesr’  )	Úmodel_filenameÚ
model_typerq   r“   r”  Ú	VAE_dtypeÚtext_encoder_filenameÚtext_encoder_filepathÚcheckpoint_paths)Úsave_quantized_modelÚvelocity_modelr  )r�  Útext_encoderrD   ÚvaeÚvideo_encoderÚaudio_encoderÚaudio_decoderrC   r  r  r  r  rŽ  )rD   r  r  rD   )Úpiper  )rH   r­  r®  r®   rW  rX  r^  Úzipr*  r…  rv   r   r!  r#  r  r»  ÚgetattrÚmodelr½  rD   Úvideo_decoderr¿  rÀ  rÁ  rC   r  Úsplit_text_connectorsr  r  r  Úmodel2)rµ  r¶  rq   r“   ÚquantizeTransformerÚtext_encoder_quantizationr”  r·  Úmixed_precision_transformerÚsave_quantizedÚsubmodel_no_listr¸  r‘   r­  r®  r´  Útransformer_pathrº  Ú
ltx2_modelr»  Úquantized_sourceÚquantized_transformerrÂ  Úembedding_lora_moduless                           rx   Ú
load_modelzfamily_handler.load_model
  s  € ð  	<Ð;Ð;Ð;Ð;Ð;Ð;Ð;à ÐÝ�n¥t­U mÑ4Ô4ð 	.Ø/ÐL°A°3½¸^Ñ9LÔ9LÑ3LÐØxÐx½cÀ.ÐRbÑ>cÔ>cÐxÑxÔxÐØ"{Ð"{ÅÀ^ÐUeÑAfÔAfÐ"{Ñ"{Ô"{ÐÝÐ#Ñ$Ô$¨Ò)Ð)Ø#3°AÔ#6Ð øà-ÐÝ4°YÀÐoy÷  pEò  pEð  FWñ  pXô  pXð  lXð  Yñ  Yô  YÐØ*:Ð˜Ñ'Øð 	JØ6IÐÐ2Ñ3à�TØ)Ø!Ø+ØØØØ"7à—’Ð3Ñ4Ô4ð _Ø>SÐ]•B”G—O’OÐ$9Ñ:Ô:Ð:ÐY]à-ð
ñ 
ô 
ˆ
ð ð 	Ø0Ð0Ð0Ð0Ð0Ð0å6@ÐAQÕTXÕZ_ÐS`Ñ6aÔ6aÐwÐ/°Ô2Ð2ÐgwÐÝ$+¨JÔ,<Ð>NÐPZÔP`Ñ$aÔ$aÐ!Ø Ð Ø%ØØ ØØ  Ô0ñô ð ð &Ô+Ø&Ô3Ø)3Ô)MØÔ+Ø'Ô5Ø'Ô5Ø'Ô5Ø!Ô)ð	
ð 	
ˆð Ô'Ð3Ø(2Ô(DˆDÐ$Ñ%ØÔ+ð 	UØ1;Ô1UÔ1pˆDÐ-Ñ.Ø1;Ô1UÔ1pˆDÐ-Ñ.Ð.à0:Ô0TˆDÐ,Ñ-ØÔÐ(Ø#-Ô#4ˆD�Ñ à&ð 	Cð CMô  Ccð  &cÐ%~Ð%~Ð%~Ð%~ð  jEð  Gbð  icÐ"Ø Ð+AÐBÐBˆDà˜4ÐÐrz   c                 ó(  — t          | ¦  «        }|                     dd¦  «        }t          | |¦  «        r£|                     dd¦  «         |                     dd¦  «         |                     t          |                     d¦  «        |                     dd	¦  «        |                     d
d	¦  «        |                     dd¦  «        ¬¦  «        ¦  «         d S |dk    r|                     dd	¦  «        dv rd|d<   |dk     r|                     dddœ¦  «         |dk     r|                     d|dœ¦  «         |dk     r|                     ddi¦  «         |dk     r|dk    r|                     ddddœ¦  «         |dk     r>|                     d¦  «        }t          |t          ¦  «        rddlm	}  ||¦  «        |d<   |d k     r|dk    rd|d<   |d!k     r9|                     d"d ¦  «        }|�#d#|v r!| 
                    d#d	¦  «        }||d"<   d S d S d S d S )$Nrÿ   r  ræ   ró   rä   é�   r«   r;   rt   rœ   rŸ   r‹   )r;   rœ   rŸ   r   rè   >   Nrt   rE  gq=
×£p@r£   r   )r  r  gš™™™™™@)r©   rë   gìQ¸…ë@Úself_refiner_planz2-8:3gffffff@r¤   )r¨   r©   rª   g)\�Âõ(@)Úconvert_refiner_list_to_stringg¤p=
×£@g333333@r†   ÚL)râ   rv   r—   Ú
setdefaultrc  r²   r®   rW  Úshared.utils.self_refinerr×  Úreplace)	rq   Úsettings_versionr“   Úui_defaultsÚdefault_perturbation_layersr  Úplanr×  r†   s	            rx   Úfix_settingszfamily_handler.fix_settings`  s  € å&BÀ?Ñ&SÔ&SÐ#Ø!Ÿš o°{ÑCÔCˆÝ˜/¨9Ñ5Ô5ð 	Ø×"Ò" <°Ñ<Ô<Ð<Ø×"Ò" >°3Ñ7Ô7Ð7Ø×Ò�¨{¯ªÐ?PÑ/QÔ/QÐep×etÒetð  vIð  KMñ  fNô  fNð  bm÷  bqò  bqð  rEð  GIñ  bJô  bJð  \g÷  \kò  \kð  l}ð  @ñ  \Aô  \Að   Bñ   Bô   Bñ  Cô  Cð  CØˆFØ˜KÒ'Ð'¨K¯OªO¸OÈRÑ,PÔ,PÐT^Ð,^Ð,^Ø+2ˆK˜Ñ(à˜dÒ"Ð"Ø×Òà*-Ø()ðð ñô ð ð ˜dÒ"Ð"Ø×Òà*-Ø+Fðð ñô ð ð ˜dÒ"Ð"Ø×Òà'¨ðñô ð ð ˜dÒ"Ð" }¸Ò'CÐ'CØ×ÒØ(+Ø&)Ø ð ð  ñ ô ð ð ˜dÒ"Ð"Ø—?’?Ð#6Ñ7Ô7ˆDÝ˜$¥Ñ%Ô%ð XØTÐTÐTÐTÐTÐTØ3QÐ3QÐRVÑ3WÔ3W�Ð/Ñ0à˜dÒ"Ð" }¸Ò'CÐ'CØ+,ˆKÐ)Ñ*à˜dÒ"Ð"Ø +§¢Ð0CÀTÑ JÔ JÐØ Ð,°Ð8IÐ1IÐ1IØ#4×#<Ò#<¸SÀ"Ñ#EÔ#EÐ!Ø3D�Ð/Ñ0Ð0Ð0ð	 #Ð"à,Ð,Ð1IÐ1Irz   c           
      ó¼  — t          | ¦  «        }|                     |                     dd¦  «        rdnddddd|d	d
œ¦  «         |                     dd¦  «         |                     dd¦  «        }|dk    r8|                     t	          | ¦  «        ¦  «         |                     dd¦  «         t          |¦  «        r|                     ddddœ¦  «         t          | |¦  «        r5|                     t          |                     d¦  «        ¦  «        ¦  «         t          | |¦  «        r0|                     dddt          | ¦  «        rdndddd	dœ¦  «         d S d S )Nr‹  FrŒ  iá  r˜  r£   r   rt   r‹   )Úsliding_window_sizeÚsliding_window_overlapr  r  r†   rë   rŸ   Úaudio_scalerÿ   r  r   rè   rE  ræ  r  r   )r†   r;   Úremove_background_images_refr«   r  rç   ró   )r;   r†   rä   ræ   Ú	force_fpsrå  rŸ   )
râ   rc  rv   rÙ  rö   rû   r—   r²   rý   r~   )rq   r“   rÝ  rÞ  r  s        rx   Úupdate_default_settingsz&family_handler.update_default_settingsœ  s±  € å&BÀ?Ñ&SÔ&SÐ#Ø×Òà.7¯mªmÐ<LÈeÑ.TÔ.TÐ'] s sÐZ]Ø*,Ø&)Ø$%Ø%'Ø'BØ#$ðð ñ
	
ô 
	
ð 
	
ð 	×Ò˜}¨cÑ2Ô2Ð2Ø!Ÿš o°{ÑCÔCˆØ˜KÒ'Ð'Ø×ÒÕ4°_ÑEÔEÑFÔFÐFØ×"Ò" ?°GÑ<Ô<Ð<Ý! )Ñ,Ô,ð 	Ø×Òà),Ø).Ø45ðð ñô ð õ ˜/¨9Ñ5Ô5ð 	TØ×Ò�¨{¯ªÐ?PÑ/QÔ/QÑRÔRÑSÔSÐSÝ˜¨)Ñ4Ô4ð 	Ø×Òà)-Ø)+Ø$'Ý09¸/Ñ0JÔ0JÐ"Z * *ÐPZØ!#Ø45Ø'(ðð ñ
ô 
ð 
ð 
ð 
ð	ð 	rz   c                 óJ   — | dk    r
ddl m} |dfS ddlm}  || |||¦  «        S )Nro   r   )r¿  i   )Ú'get_custom_prompt_enhancer_instructions)ro   r¿  re  ré  )r¶  Úprompt_enhancer_modeÚis_imageÚenhancer_kwargsr¿  ré  s         rx   ré  z6family_handler.get_custom_prompt_enhancer_instructionsÆ  sV   € à˜Ò%Ð%Ø>Ð>Ð>Ð>Ð>Ð>à-¨tÐ3Ð3ØMÐMÐMÐMÐMÐMØ6Ð6°zÐCWÐYaÐcrÑsÔsÐsrz   r|   )Ú__name__Ú
__module__Ú__qualname__Ústaticmethodro  rs  rv  ry  rv  rz  r|  rC  r‰  r«  ÚtorchÚbfloat16Úfloat32rÓ  rà  rç  ré  r‚   rz   rx   rm  rm  Ý  sÈ  € € € € € Øð{ð {ñ „\ð{ð ð/ð /ñ „\ð/ð" ðð ñ „\ðð ð'ð 'ñ „\ð'ð ð\ð \ñ „\ð\ð|
 ðSð Sñ „\ðSð ðKð Kñ „\ðKð
 ðð ñ „\ðð ðð ð ñ „\ðð6A5ð A5ð A5ðF ð "Ø"&ØŒnØ”-Ø$)ØØØ"ðS ð S ð S ñ „\ðS ðj ð8Eð 8Eñ „\ð8Eðv ð'ð 'ñ „\ð'ðR ðtð tñ „\ðtð tð trz   rm  r|   )rt   rt   )T)Or   r8  r  rñ  Úshared.lora_pathsr   Úshared.utilsr   r  Úshared.utils.hfr   Úshared.utils.loras_mutipliersr   ÚgradiorÈ   Úpathlibr   r‘  r	   r
   r   r   r   r   Ú
lora_utilsr   Últx2_runtimer   Ú_GEMMA_FOLDER_URLrZ  r]  r^  rY  r[  r\  ra  rb  Ú_NAD_VAE_FILENAMErg  r„  rƒ  r.  r4  rÛ   rd  r_  ru   r¶  Úprofiles_namerá   r}   rË   r¯   ry   r•   r~   r€   r°   rƒ   rˆ   rŽ   r’   r—   r�   r²   rÓ   rÝ   rW  râ   rö   rû   rý   r   r  r  r*  r@  rk  rm  r‚   rz   rx   ú<module>rÿ     së  ðà 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø .Ð .Ð .Ð .Ð .Ð .Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø (Ð (Ð (Ð (Ð (Ð (Ø AÐ AÐ AÐ AÐ AÐ AØ Ð Ð Ð Ø Ð Ð Ð Ð Ð à wÐ wÐ wÐ wÐ wÐ wÐ wÐ wÐ wÐ wÐ wÐ wÐ wÐ wÐ wÐ wØ 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1àqÐ Ø5€Ø"Ð0Ð0Ð0€Ø)ÐHÐHÐHÐ Ø$€Ø$Ð7Ð7Ð7Ð Ø)ÐDÐDÐDÐ Ø=Ð Ø=Ð ØFÐ ØNÐ ðð ð Ð ð lÐkÐkÐ Ø€ð S€à!Ø)Ø;Ø+Ø)Ø
ØØØ%Øðð Ð ð Ø"Ø*,Ø(*Ø,0Ø*.Ø&)ðð Ð ð !Ø"ØMØØØØØØð
 ð 
 Ð ðØÐ'ðàÐ-ðð 	ÐGðð 	ÐIð	ð
 	ÐDðð 	ÐRðð 	Ð6ðð 	Ð0ðð 	Ð6ðð 	Ð2ðð 	$Ð%Vðð 	#Ð$Tðð 	)Ð*`ðð 	˜ðð 	Ð3ðð  	˜~ð!ð" 	(Ð)Að#ð$ 	�Fð%ð ð(ØÐ'ðàÐ-ðð 	ÐIðð 	ÐKð	ð
 	ÐFðð 	ÐNðð 	&Ð'fðð 	ÐTðð 	Ð8ðð 	ÐCðð 	ÐLðð 	ÐMðð 	Ð=ðð 	Ð Oðð 	˜ðð  	Ð2ð!ð" 	Ð0ð#ð$ 9Ø4Ø%XØ NØØ3Ø-Ø)AØð5ð ð ð8ØÐ'ðàÐ0ðð 	ÐNðð 	ÐPð	ð
 	ÐKðð 	&Ð'fðð 	ÐSðð 	ÐTðð 	Ð8ðð 	ÐCðð 	ÐLðð 	ÐMðð 	ÐDðð 	Ð Vðð 	˜ðð  	Ð=ð!ð" 	Ð0ð#ð$ >Ø9Ø%]Ø+dØ+lØ+dØ+lØØ6Ø-Ø)AØð;ð ð ðcPð P€ðbØ�*ÔðàØ3Ø-Ø%Aðð ð €ˆNÑ ð"Ø�-Ô ð"à!Ø6Ø0Ø%Dð"ð "ð "€ÐÑ ð "Pð ð Ñ€J�ðØ
�mÔ
$ðà%Ø,Ð?Ð?Ð?Ø"/Ð9Ð9Ð9Ø,9Ð)MÐ)MÐ)Mðð ð €K�
ÑÐð VÐUÐU€ØkÐkÐk€Ø ð 8ð 8€JØ�ZÒÐ J°kÐ$AÐ$AØ +¨JÔ 7ˆ�JÑøðK C¨$¡Jð K°4ð Kð Kð Kð Kð,˜s T™zð ,¨dð ,ð ,ð ,ð ,ðG¨c°D©jð G¸Tð Gð Gð Gð Gð# #ð #ð #ð #ð #ðHð Hð Hðð ð ðð ð ð_ð _ C¨$¡Jð _¸4À$¹;ð _ÐRVð _ð _ð _ð _ðZð Zð Zð Zð¸rÐUWÐijÐtyð ð ð ð ð ð,&Tð &Tð &TðR ð ¨ð ð ð ð ð]°#¸±*ð ]ÀÀcÄð ]ð ]ð ]ð ]ð4¨3°©:ð 4¸$ð 4ð 4ð 4ð 4ðnt¨ð tð tð tð tðf°ð fð fð fð fð= dð =ð =ð =ð =ð,ð ,ð ,ðð ð ð$ð ð ð ð$ð ð ð8 ð  ð  ðFptð ptð ptð ptð ptñ ptô ptð ptð ptð ptrz   