§
     ’ÞjÄ™  ã            	      óÖ  — U d 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	m
Z
 ddlmZ dd	lmZ dd
lmZmZmZmZmZmZmZ dZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&e%e&dœZ'dZ(dZ)e(e)z   Z*g d¢Z+g Z,de-d<    e.¦   «         Z/de-d <   da0d!e-d"<   da1d#e-d$<   e G d%„ d&¦  «        ¦   «         Z2d'Z3d¨d*„Z4d©d,„Z5dªd.„Z6d«d¬d5„Z7d­d7„Z8d®d9„Z9d¯d<„Z:d°d>„Z;d«d±dB„Z<d²dD„Z=d«d³dG„Z>d«d´dH„Z?dµd¶dL„Z@dªdM„ZAd¨dN„ZBd­dO„ZCd­dP„ZDd·dQ„ZEd¨dR„ZFd¸dS„ZGd¹dT„ZHdºdV„ZId»dW„ZJd«d¼dY„ZKd½dZ„ZLd«d¾d[„ZMd¿d\„ZNdÀdÁd_„ZOd`„ ZPdadIdIdaddd]dIdbœdÂdi„ZQdadadd]dIdjœdÃdk„ZRdIdad]dIdlœdÄdm„ZSdadnœdÅdo„ZTdp„ ZUdq„ ZVdr„ ZWds„ ZXdIdIdtœdÆdw„ZYdIdxœdÇdz„ZZdIdxœdÈd{„Z[dadIdd]dIdjœdÉd|„Z\d«dÊd}„Z]dËd€„Z^dÌdÍd‚„Z_dÎd„„Z`d¨d…„ZadÏd‰„Zbd¨dŠ„Zcd¨d‹„ZddÐd�„ZedÑd�„Zfd«dÒd�„Zgd«dÓd‘„Zhd«dÓd’„ZidÔd“„Zjd½d”„ZkdÕd–„ZldÐd—„ZmdÖd˜„Znd×d™„ZodIdšœdØd�„ZpdÙdŸ„ZqdÚd¡„ZrdÛd£„ZsdÜd¤„ZtdÝd§„ZudS )Þa  Audio post-processor plugin API.

Audio processors are interchangeable handlers for post-generation audio work.
Each handler declares methods through ``query_audio_processor_def()`` and may
expose config controls under ``wgp_config["audio_processors"][config_key]``.
Definitions may also expose an optional ``description`` plus optional
``method_descriptions`` and ``method_parameters`` mappings for reusable
discovery interfaces. Existing handlers without these fields remain valid.
Discovery tests the existing optional ``enabled()`` method first. When it is
absent, handlers may expose a ``status`` property containing ``"enabled"`` or
``"disabled"``. Discovery reports ``"unknown"`` only when neither contract
provides a valid status. Disabled handlers may expose ``reason_disabled``. This
instance property is separate from the definition's existing per-method
``status`` progress labels.
Handlers may implement ``method_available(method)`` and ``method_visible(method)``.
Both default to True: hidden methods remain usable and are added to menus only
when restoring their selection; unavailable methods are excluded even then.
The shared Postprocessor VRAM Usage policy controls profile 0. Dispatch retains at most one
audio processor handler and releases it before another handler runs.

Plugin authors can register processors from ``plugin_info.json`` with:

```json
{
  "audio_processors": ["my_plugin.audio.MyProcessor"]
}
```

Relative paths are resolved by WanGP's plugin manager, matching spatial
upsampler plugin registration.
é    )Úannotations)Ú	dataclass)ÚpartialN)ÚAnyÚCallable)Úoffload_registryé   )Úmemory)ÚPROCESSOR_STATUS_DISABLEDÚPROCESSOR_STATUS_ENABLEDÚPROCESSOR_STATUS_UNKNOWNÚhandler_reason_disabledÚhandler_statusÚhandler_method_availableÚhandler_method_in_choicesÚ
soundtrackÚvoice_replacementÚ
audio_editÚlate_postprocessingÚaudio_processorsÚpersistenceé   é   ÚmmaudioÚcustomÚremove_backgroundÚremove_vocalsÚseedvc_one_speakerÚseedvc_two_speakers)ÚseedvcÚseedvc2ÚYÚZ)zJpostprocessing.custom_soundtrack.audio_processor.CustomSoundtrackProcessorz7postprocessing.mmaudio.audio_processor.MMAudioProcessorz=postprocessing.prismaudio.audio_processor.PrismAudioProcessorz?postprocessing.seedvc_processor.audio_processor.SeedVCProcessorzRpostprocessing.audio_background_removal.audio_processor.BackgroundRemovalProcessorú	list[Any]Ú_audio_processor_handlerszset[str]Ú)_registered_audio_processor_handler_pathsú
Any | NoneÚ_active_audio_processor_handlerúdict[str, Any] | NoneÚ_audio_processor_server_configc                  ó.   — e Zd ZU ded<   ded<   ded<   dS )ÚAudioProcessorConfigBindingr'   ÚhandlerÚstrÚ
config_keyzlist[tuple[str, Any]]ÚcontrolsN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úGC:\Users\johnn\OneDrive\Documents\AI\postprocessing\audio_processors.pyr,   r,   T   s3   € € € € € € àÐÐÑØ€O€O�OØ#Ð#Ð#Ñ#Ð#Ð#r6   r,   ÚcontrolÚreturnr.   c                ó~   — t          | pd¦  «                             ¦   «         } t                               | | ¦  «        S ©NÚ )r.   ÚstripÚLEGACY_SEEDVC_METHODSÚget)Úmethods    r7   Únormalize_methodrA   ^   s5   € Ý��˜2ÑÔ×$Ò$Ñ&Ô&€FÝ ×$Ò$ V¨VÑ4Ô4Ð4r6   Úlettersc                ó^   — t          | pd¦  «        }|D ]}|                     |d¦  «        }Œ|S r;   )r.   Úreplace)ÚvaluerB   ÚtextÚletters       r7   Ú_remove_flag_lettersrH   c   s<   € Ýˆuˆ{˜ÑÔ€DØð (ð (ˆØ�|Š|˜F BÑ'Ô'ˆˆØ€Kr6   Úboolc                ó’  — | €dS t          | t          t          t          f¦  «        rt	          d„ | D ¦   «         ¦  «        S t          | t
          ¦  «        r+t	          d„ |                      ¦   «         D ¦   «         ¦  «        S t          | t          ¦  «        r%t          |  	                    ¦   «         ¦  «        dk    S t          | ¦  «        S )NFc              3  ó4   K  — | ]}t          |¦  «        V — Œd S ©N©Ú_attachment_has_path_values©Ú.0Úitems     r7   ú	<genexpr>z._attachment_has_path_values.<locals>.<genexpr>n   s+   è è € ÐGÐG¸Õ.¨tÑ4Ô4ÐGÐGÐGÐGÐGÐGr6   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S rL   rM   rO   s     r7   rR   z._attachment_has_path_values.<locals>.<genexpr>p   s+   è è € ÐPÐP¸Õ.¨tÑ4Ô4ÐPÐPÐPÐPÐPÐPr6   r   )Ú
isinstanceÚlistÚtupleÚsetÚanyÚdictÚvaluesr.   Úlenr=   rI   ©rE   s    r7   rN   rN   j   s´   € Ø€}ØˆuÝ�%�$¥¥sÐ+Ñ,Ô,ð HÝÐGÐGÀÐGÑGÔGÑGÔGÐGÝ�%�ÑÔð QÝÐPÐPÀÇÂÁÄÐPÑPÔPÑPÔPÐPÝ�%�ÑÔð &Ý�5—;’;‘=”=Ñ!Ô! AÒ%Ð%Ý�‰;Œ;Ðr6   Úui_defaultsúdict[str, Any]Úsettings_versionÚfloatÚattachment_has_path_valuesúCallable[[Any], bool] | Nonec                ó\  — |                       dd ¦  «        }|pd}|�t          |dt          z   ¦  «        }|| d<   |                      dd ¦  «        }|pt          }|dk     sd| vru|                       dd¦  «        pd}t          |¦  «        dk    r7|rt          }n-d|v rd}n& ||                       d	d ¦  «        ¦  «        rt          }t          |¦  «        | d<   n(t          |                       dd¦  «        pd¦  «        | d<   |d
k     rBdddœ}| 	                    ¦   «         D ](\  }	}
|	| v r|  
                    |
| |	         ¦  «         | |	= Œ)|dk     rŠdD ](\  }	}
|	| v r|  
                    |
| |	         ¦  «         | |	= Œ)t          |                       dd¦  «        pd¦  «        }t          |¦  «        dk    r!t          |v rt          }nt          |v rt          }|| d<   n(t          |                       dd¦  «        pd¦  «        | d<   |  
                    dd ¦  «         |  
                    dd ¦  «         |S )NÚaudio_prompt_typer<   ÚRÚMMAudio_settingg¸…ëQ¸@Úpostprocess_audior   r8   Úaudio_sourcegö(\�Âõ@Úpostprocess_audio_promptÚpostprocess_audio_neg_prompt)ÚMMAudio_promptÚMMAudio_neg_promptg
×£p=
@))Úseedvc_voice_sampleÚreplace_voice_sample)Úseedvc_voice_sample2Úreplace_voice_sample2Úreplace_voice_methodrn   rp   )r?   rH   ÚLEGACY_REPLACE_VOICE_FLAGSÚpoprN   r[   ÚMMAUDIO_METHODÚCUSTOM_SOUNDTRACK_METHODrA   ÚitemsÚ
setdefaultÚ&LEGACY_REPLACE_VOICE_TWO_SPEAKERS_FLAGÚSEEDVC_TWO_SPEAKERS_METHODÚ%LEGACY_REPLACE_VOICE_ONE_SPEAKER_FLAGÚSEEDVC_ONE_SPEAKER_METHOD)r]   r_   ra   rd   Úlegacy_audio_prompt_typeÚlegacy_mmaudio_settingÚhas_path_valuesrg   Úrenamed_settingsÚold_nameÚnew_namerq   s               r7   Úfix_settingsr‚   v   sÄ  € Ø#ŸšÐ(;¸TÑBÔBÐØ0Ð6°BÐØÐ$Ý0Ð1BÀCÕJdÑDdÑeÔeÐØ+<ˆÐ'Ñ(Ø(Ÿ_š_Ð->ÀÑEÔEÐØ0ÐOÕ4O€OØ˜$ÒÐÐ"5¸[Ð"HÐ"HØ'ŸOšOÐ,?ÀÑDÔDÐJÈÐÝÐ Ñ!Ô! QÒ&Ð&Ø%ð =Ý$2Ð!Ð!ØÐ0Ð0Ð0Ø$-Ð!Ð!Ø � §¢°ÀÑ!FÔ!FÑGÔGð =Ý$<Ð!Ý+;Ð<MÑ+NÔ+NˆÐ'Ñ(Ð(å+;¸K¿OºOÐL_ÐacÑ<dÔ<dÐ<jÐhjÑ+kÔ+kˆÐ'Ñ(Ø˜$ÒÐà8Ø"@ð
ð 
Ðð #3×"8Ò"8Ñ":Ô":ð 	*ð 	*ÑˆH�hØ˜;Ð&Ð&Ø×&Ò& x°¸XÔ1FÑGÔGÐGØ Ð)øØ˜$ÒÐð #Gð 	*ð 	*ÑˆH�hØ˜;Ð&Ð&Ø×&Ò& x°¸XÔ1FÑGÔGÐGØ Ð)øÝ/°·²Ð@VÐXZÑ0[Ô0[Ð0aÐ_aÑbÔbÐÝÐ#Ñ$Ô$¨Ò)Ð)Ý5Ð9QÐQÐQÝ'AÐ$Ð$Ý6Ð:RÐRÐRÝ'@Ð$Ø.BˆÐ*Ñ+Ð+å.>¸{¿ºÐOeÐgiÑ?jÔ?jÐ?pÐnpÑ.qÔ.qˆÐ*Ñ+Ø×ÒÐ1°4Ñ8Ô8Ð8Ø×ÒÐ2°DÑ9Ô9Ð9ØÐr6   ÚNonec                óP   — | t           vrt                                | ¦  «         d S d S rL   )r%   Úappend©r-   s    r7   Úregister_audio_processorr‡   ¦   s0   € ØÕ/Ð/Ð/Ý!×(Ò(¨Ñ1Ô1Ð1Ð1Ð1ð 0Ð/r6   Úpathc                óx   — |                       dd¦  «        \  }}t          t          j        |¦  «        |¦  «        S )Nú.r	   )ÚrsplitÚgetattrÚ	importlibÚimport_module)rˆ   Úmodule_pathÚ
class_names      r7   Ú_load_processor_classr‘   «   s5   € Ø"Ÿkšk¨#¨qÑ1Ô1Ñ€K�Ý•9Ô*¨;Ñ7Ô7¸ÑDÔDÐDr6   Úhandler_defúlist[tuple[str, str]]c                óB   — d„ |                       dg ¦  «        D ¦   «         S )Nc                ó   — g | ]	\  }}||f‘Œ
S r5   r5   ©rP   Úlabelr@   s      r7   ú
<listcomp>z#_method_choices.<locals>.<listcomp>±   s    € ÐPÐPÐP¡  vˆU�FˆOÐPÐPÐPr6   Úmethods)r?   ©r’   s    r7   Ú_method_choicesr›   °   s$   € ØPÐP°·²ÀÈBÑ1OÔ1OÐPÑPÔPÐPr6   údict[str, str]c                ó4   — d„ t          | ¦  «        D ¦   «         S )Nc                ó   — i | ]\  }}||“Œ	S r5   r5   r–   s      r7   ú
<dictcomp>z"_method_labels.<locals>.<dictcomp>µ   s   € ÐLÐLÐL™m˜e VˆF�EÐLÐLÐLr6   )r›   rš   s    r7   Ú_method_labelsr    ´   s   € ØLÐL­¸{Ñ/KÔ/KÐLÑLÔLÐLr6   r@   Úlabel_contextú
str | Nonec                ó  — |rb|                       di ¦  «        }t          |t          ¦  «        r7|                      |i ¦  «        }t          |t          ¦  «        r||v r||         S t          | ¦  «                              ||¦  «        S )NÚmethod_context_labels)r?   rT   rY   r    )r’   r@   r¡   Úcontext_labelsÚlabelss        r7   Ú_method_labelr§   ¸   s‰   € Øð &Ø$ŸšÐ)@À"ÑEÔEˆÝ�n¥dÑ+Ô+ð 	&Ø#×'Ò'¨°rÑ:Ô:ˆFÝ˜&¥$Ñ'Ô'ð &¨F°fÐ,<Ð,<Ø˜f”~Ð%Ý˜+Ñ&Ô&×*Ò*¨6°6Ñ:Ô:Ð:r6   Úfallback_namec                óÞ   — t          |                      dd¦  «        pd¦  «                             ¦   «         }|r|S t          | ¦  «        }|r|d         d         S |                     ¦   «         S ©Nr/   r<   r   r	   )r.   r?   r=   r›   Úlower)r’   r¨   r/   Úmethod_choicess       r7   Ú_config_key_from_handler_defr­   Â   ss   € Ý�[—_’_ \°2Ñ6Ô6Ð<¸"Ñ=Ô=×CÒCÑEÔE€JØð ØÐÝ$ [Ñ1Ô1€NØð $Ø˜aÔ  Ô#Ð#Ø×ÒÑ Ô Ð r6   Úhandler_modulesúlist[str] | Nonec                ó~  — i }| €t           n| D ]®}t          t          |pd¦  «                             ¦   «         ¦  «        }t	          |d¦  «        sŒCt          |                     ¦   «         ¦  «        }|                     t          d ¦  «         |sŒ‚| 	                    ¦   «         }||t          ||j        ¦  «        <   Œ¯|S )Nr<   Údefault_config)Úaudio_processor_handlersr‘   r.   r=   ÚhasattrrY   r±   rs   ÚPERSISTENCE_CONFIG_KEYÚquery_audio_processor_defr­   r1   )r®   Úsectionsrˆ   Úhandler_clsÚconfigr’   s         r7   Údefault_config_sectionsr¹   Ì   sÆ   € Ø€HØ,;Ð,CÕ(Ð(Èð 	[ð 	[ˆÝ+­C°°
¸©O¬O×,AÒ,AÑ,CÔ,CÑDÔDˆÝ�{Ð$4Ñ5Ô5ð 	ØÝ�k×0Ò0Ñ2Ô2Ñ3Ô3ˆØ�
Š
Õ)¨4Ñ0Ô0Ð0Øð 	ØØ!×;Ò;Ñ=Ô=ˆØTZˆÕ-¨k¸;Ô;OÑPÔPÑQÐQØ€Or6   c                ó  — | a |€t          n|}|D ]q}t          |pd¦  «                             ¦   «         }|r	|t          v rŒ1t           t          |¦  «        | |¦  «        ¦  «         t                               |¦  «         Œrd S r;   )r*   r²   r.   r=   r&   r‡   r‘   Úadd)Úserver_configÚfiles_locatorr®   Úmodulesrˆ   s        r7   Úregister_audio_processorsr¿   Û   sŸ   € ð &3Ð"Ø*9Ð*AÕ&Ð&À€GØð <ð <ˆÝ�4�:˜2‰Œ×$Ò$Ñ&Ô&ˆØð 	�tÕHÐHÐHØÝ Ð!<Õ!6°tÑ!<Ô!<¸]ÈMÑ!ZÔ!ZÑ[Ô[Ð[Ý1×5Ò5°dÑ;Ô;Ð;Ð;ð<ð <r6   FÚprocessor_typeÚenabled_onlyc                óð   ‡ ‡— g }t           D ]i}|                     ¦   «         Š‰ �*t          ˆˆ fd„t          ‰¦  «        D ¦   «         ¦  «        sŒB|rt	          |¦  «        sŒT|                     |¦  «         Œj|S )Nc              3  ó@   •K  — | ]\  }}t          ‰|‰¦  «        V — Œd S rL   )Ú_method_has_type)rP   Ú_r@   r’   rÀ   s      €€r7   rR   z%processor_handlers.<locals>.<genexpr>ì   sQ   øè è € ð  2Wð  2WÑluÐlmÐouÕ2BÀ;ÐPVÐXfÑ2gÔ2gð  2Wð  2Wð  2Wð  2Wð  2Wð  2Wr6   )r%   rµ   rX   r›   Úhandler_enabledr…   )rÀ   rÁ   Úhandlersr-   r’   s   `   @r7   Úprocessor_handlersrÈ   è   sÃ   øø€ Ø€HÝ,ð !ð !ˆØ×7Ò7Ñ9Ô9ˆØÐ%­cð  2Wð  2Wð  2Wð  2Wð  2Wõ  zIð  JUñ  zVô  zVð  2Wñ  2Wô  2Wñ  /Wô  /WÐ%ØØð 	¥°Ñ 8Ô 8ð 	ØØ�Š˜Ñ Ô Ð Ð Ø€Or6   c                óL   — t          | d¦  «         p|                      ¦   «         S )NÚenabled)r³   rÊ   r†   s    r7   rÆ   rÆ   ô   s$   € Ý�w 	Ñ*Ô*Ð*Ð?¨g¯oªoÑ.?Ô.?Ð?r6   c                óP   — t          |                      ¦   «         d         ¦  «        S )NÚname)r.   rµ   r†   s    r7   Ú_handler_namerÍ   ø   s!   € Ýˆw×0Ò0Ñ2Ô2°6Ô:Ñ;Ô;Ð;r6   c                ó°   — t          j        t          | ¦  «        g¦  «        }|s$t          | d¦  «        r|                      ¦   «          t
          | u rd ad S d S )NÚrelease_vram)r   Úrelease_allrÍ   r³   rÏ   r(   )r-   Úreleaseds     r7   Ú _release_audio_processor_handlerrÒ   ü   si   € õ  Ô+­]¸7Ñ-CÔ-CÐ,DÑEÔE€HØð � ¨Ñ8Ô8ð Ø×ÒÑÔÐÝ&¨'Ð1Ð1Ø*.Ð'Ð'Ð'ð 2Ð1r6   c                óV   — t           | u rd S t           �t          t           ¦  «         | a d S rL   )r(   rÒ   r†   s    r7   Ú_activate_audio_processorrÔ     s5   € õ '¨'Ð1Ð1ØˆÝ&Ð2Ý(Õ)HÑIÔIÐIØ&-Ð#Ð#Ð#r6   c                ó¢   — t          | ¦  «        } | sd S t          D ]3}| d„ t          |                     ¦   «         ¦  «        D ¦   «         v r|c S Œ4d S )Nc                ó   — g | ]\  }}|‘ŒS r5   r5   )rP   rÅ   Úkeys      r7   r˜   z"find_processor.<locals>.<listcomp>  s   € Ð]Ð]Ð]™f˜a �cÐ]Ð]Ð]r6   )rA   r%   r›   rµ   ©r@   r-   s     r7   Úfind_processorrÙ     sm   € Ý˜fÑ%Ô%€FØð ØˆtÝ,ð ð ˆØÐ]Ð]­¸×8YÒ8YÑ8[Ô8[Ñ(\Ô(\Ð]Ñ]Ô]Ð]Ð]ØˆNˆNˆNð ^àˆ4r6   c                óŠ   — t          | ¦  «        } t          | ¦  «        }|€| S t          |                     ¦   «         | ¦  «        S rL   )rA   rÙ   r§   rµ   rØ   s     r7   Úmethod_labelrÛ     sB   € Ý˜fÑ%Ô%€FÝ˜VÑ$Ô$€GØ€ØˆÝ˜×:Ò:Ñ<Ô<¸fÑEÔEÐEr6   c                óz   — 	 t          |                      dd¦  «        ¦  «        S # t          t          f$ r Y dS w xY w)NÚposiè  )r`   r?   Ú	TypeErrorÚ
ValueErrorrš   s    r7   Ú_handler_posrà   "  sJ   € ðÝ�[—_’_ U¨DÑ1Ô1Ñ2Ô2Ð2øÝ•zÐ"ð ð ð Øˆtˆtðøøøs   ‚"% ¥:¹:c                óØ   — |                       di ¦  «        }t          |t          ¦  «        r1||v r-	 t          ||         ¦  «        S # t          t
          f$ r Y nw xY wt          | ¦  «        S )NÚ
method_pos)r?   rT   rY   r`   rÞ   rß   rà   )r’   r@   râ   s      r7   Ú_method_posrã   )  s|   € Ø—’ ¨rÑ2Ô2€JÝ�*�dÑ#Ô#ð ¨°*Ð(<Ð(<ð	Ý˜ FÔ+Ñ,Ô,Ð,øÝ�:Ð&ð 	ð 	ð 	ØˆDð	øøøå˜Ñ$Ô$Ð$s   ±A ÁAÁAútuple[str, ...]c                ó   — |                       di ¦  «        }t          |t          ¦  «        rM||v rI||         }t          |t          t          t
          f¦  «        rt	          |¦  «        nt          |¦  «        fS |                       dd¦  «        }t          |t          t          t
          f¦  «        rt	          |¦  «        nt          |¦  «        fS )NÚmethod_typesÚprocessor_typesr5   )r?   rT   rY   rU   rV   rW   r.   )r’   r@   ræ   rE   s       r7   Ú_method_typesrè   3  s¬   € Ø—?’? >°2Ñ6Ô6€LÝ�,¥Ñ%Ô%ð X¨&°LÐ*@Ð*@Ø˜VÔ$ˆÝ)¨%µ$½½sÐ1CÑDÔDÐW�u�U‰|Œ|ˆ|Í3ÈuÉ:Ì:È-ÐWØ�OŠOÐ-¨rÑ2Ô2€EÝ% e­dµE½3Ð-?Ñ@Ô@ÐS�5�‰<Œ<ˆ<ÅsÈ5ÁzÄzÀmÐSr6   c                ó&   — |t          | |¦  «        v S rL   )rè   )r’   r@   rÀ   s      r7   rÄ   rÄ   <  s   € Ø�]¨;¸Ñ?Ô?Ð?Ð?r6   r×   c                óˆ   — |                       ||¦  «        }t          |t          ¦  «        r|                      ||¦  «        S |S rL   )r?   rT   rY   )r’   r×   r@   ÚdefaultrZ   s        r7   Ú_method_valuerì   @  s@   € Ø�_Š_˜S 'Ñ*Ô*€FÝ�&�$ÑÔð +Ø�zŠz˜& 'Ñ*Ô*Ð*Ø€Mr6   c                ó
  — t          | ¦  «        } t          | ¦  «        }| | ddddddddd|dœ}|€|S |                     ¦   «         }|                     t	          || ¦  «        t          t          |d| | ¦  «        pd¦  «        t          || ¦  «        dœ¦  «         dD ]$}t          t          ||| d¦  «        ¦  «        ||<   Œ%	 t          t          |d	| d¦  «        pd¦  «        |d	<   n# t          t          f$ r d|d	<   Y nw xY w|S )
Nr<   r5   Fr   )r@   r—   ÚstatusÚtypesÚneeds_promptÚneeds_negative_promptÚneeds_audio_sourceÚneeds_voice_sampleÚneeds_voice_sample2Úsupports_repeatÚspeaker_countr-   rî   )r—   rî   rï   )rð   rñ   rò   ró   rô   rõ   rö   )rA   rÙ   rµ   Úupdater§   r.   rì   rè   rI   ÚintrÞ   rß   )r@   r-   Úmetadatar’   r×   s        r7   Úmethod_metadatarú   G  s[  € Ý˜fÑ%Ô%€FÝ˜VÑ$Ô$€GàØØØØØ!&Ø#Ø#Ø$Ø ØØðð €Hð €ØˆØ×3Ò3Ñ5Ô5€KØ‡O‚OÝ˜{¨FÑ3Ô3Ý•m K°¸6À6ÑJÔJÐPÈbÑQÔQÝ˜{¨FÑ3Ô3ðð ñ ô ð ð
 Oð Mð MˆÝ�]¨;¸¸VÀUÑKÔKÑLÔLˆ�‰ˆð&Ý$'­°kÀ?ÐTZÐ\]Ñ(^Ô(^Ð(cÐbcÑ$dÔ$dˆ�Ñ!Ð!øÝ•zÐ"ð &ð &ð &Ø$%ˆ�Ñ!Ð!Ð!ð&øøøà€Os   Ã$C' Ã'D Ã?D c                ó   — t          | ¦  «        } | sdS t          | ¦  «        }|€| S t          |d¦  «        r&t          |                     | |¬¦  «        p| ¦  «        S t          |                     ¦   «         | |¦  «        S )Nr<   Úformat_method_label)r¡   )rA   rÙ   r³   r.   rü   r§   rµ   )r@   r¡   r-   s      r7   rü   rü   i  sŒ   € Ý˜fÑ%Ô%€FØð ØˆrÝ˜VÑ$Ô$€GØ€ØˆÝˆwÐ-Ñ.Ô.ð _Ý�7×.Ò.¨vÀ]Ð.ÑSÔSÐ]ÐW]Ñ^Ô^Ð^Ý˜×:Ò:Ñ<Ô<¸fÀmÑTÔTÐTr6   c                ó0   — |t          | ¦  «        d         v S )Nrï   ©rú   )r@   rÀ   s     r7   Úmethod_has_typerÿ   u  s   € Ø�_¨VÑ4Ô4°WÔ=Ð=Ð=r6   r<   Úchoicesc                óH   — t          |¦  «        }d„ | D ¦   «         }||v r|n|S )Nc                ó   — h | ]\  }}|’ŒS r5   r5   ©rP   rÅ   r@   s      r7   ú	<setcomp>z _choice_value.<locals>.<setcomp>{  s   € Ð1Ð1Ð1™I˜A˜v�Ð1Ð1Ð1r6   )rA   )r   rE   rë   Ú	availables       r7   Ú_choice_valuer  y  s6   € Ý˜UÑ#Ô#€EØ1Ð1¨Ð1Ñ1Ô1€IØ˜YÐ&Ð&ˆ5ˆ5¨GÐ3r6   c                 ó$   — dd l } |j        di | ¤ŽS )Nr   r5   )Úgradior÷   )ÚkwargsÚgrs     r7   Ú
_gr_updater    s&   € ØÐÐÐàˆ2Œ9ÐÐ�vÐÐÐr6   T)Úinclude_noneÚinclude_controlÚinclude_voicerÁ   r¡   Úvoice_label_contextÚselected_methodÚinclude_hiddenr  r  r  r  r  r  c           	     ó¸   — t          t          | ||||¬¦  «        }|r|                     dt          f¦  «         |r|t          t          d||p|||¬¦  «        z  }|S )N©r  rÁ   r¡   r  r  z;Control Video Audio Track (Reuse Control Video Audio Track)F)Úquery_method_choicesÚAUDIO_PROCESSOR_TYPE_SOUNDTRACKr…   ÚCONTROL_AUDIO_METHODÚ&AUDIO_PROCESSOR_TYPE_VOICE_REPLACEMENT)	r  r  r  rÁ   r¡   r  r  r  r   s	            r7   Úsoundtrack_choicesr  …  s³   € Ý"Õ#BÐQ]Ðlxð  IVð  hwð  HVð  Wñ  Wô  W€GØð nØ�ŠÐUÕWkÐlÑmÔmÐmØð sØÕ'Õ(NÐ]bÐq}ð  Nað  Nrð  erð  DSð  drð  sñ  sô  sñ  	sˆØ€Nr6   r  c                ó6   — t          t          | ||||¬¦  «        S ©Nr  )r  r  r  s        r7   Úvoice_replacement_choicesr  Ž  s;   € ÝÕ FÐUaÐp|ð  MZð  l{ð  LZð  [ñ  [ô  [ð  [r6   ©r  rÁ   r  r  c                ó@   — t          t          | |t          ||¬¦  «        S r  )r  ÚAUDIO_PROCESSOR_TYPE_AUDIO_EDITÚ1AUDIO_PROCESSOR_LABEL_CONTEXT_LATE_POSTPROCESSINGr  s       r7   Úaudio_edit_choicesr   ’  s:   € ÝÕ ?ÈlÐiuõ  Fwð  IXð  iwð  xñ  xô  xð  xr6   ©rÁ   c                ó^   — t          d„ t          t          d| ¬¦  «        D ¦   «         ¦  «        S )Nc              3  óF   K  — | ]\  }}t          |¦  «        d          V — ŒdS )rò   Nrþ   r  s      r7   rR   z.has_audio_source_soundtrack.<locals>.<genexpr>—  sL   è è € ð  tð  tÁÀÀF�˜vÑ&Ô&Ð';Ô<ð  tð  tð  tð  tð  tð  tr6   F)r  rÁ   )rX   r  r  r!  s    r7   Úhas_audio_source_soundtrackr$  –  sb   € Ýð  tð  tÕNbõ  dCð  RWð  frð  Osñ  Osô  Osð  tñ  tô  tñ  tô  tð  tr6   c                óÒ   — t          | ¦  «        }t          |d         p|d         ¬¦  «        t          t          | ¦  «        t          k    ¬¦  «        t          |d         ¬¦  «        fS )Nrð   rñ   ©Úvisiblerò   )rú   r  rA   r  ©r@   rù   s     r7   Úsoundtrack_refresh_updatesr)  š  sh   € Ý˜vÑ&Ô&€Hå˜8 NÔ3ÐX°xÐ@WÔ7XÐYÑYÔYÝÕ+¨FÑ3Ô3Õ7KÒKÐLÑLÔLÝ˜8Ð$8Ô9Ð:Ñ:Ô:ðð r6   c                óx   — t          | ¦  «        }t          |d         ¬¦  «        t          |d         ¬¦  «        fS ©Nró   r&  rô   ©rú   r  r(  s     r7   Ú!voice_replacement_refresh_updatesr-  £  ó=   € Ý˜vÑ&Ô&€HÝ˜hÐ';Ô<Ð=Ñ=Ô=½zÐRZÐ[pÔRqÐ?rÑ?rÔ?rÐrÐrr6   c                óx   — t          | ¦  «        }t          |d         ¬¦  «        t          |d         ¬¦  «        fS r+  r,  r(  s     r7   Úaudio_edit_refresh_updatesr0  ¨  r.  r6   c                óÜ   — t          | ¦  «        }t          |d         p|d         ¬¦  «        t          |d         ¬¦  «        t          |d         ¬¦  «        t          |d         ¬¦  «        fS )Nrð   rñ   r&  rò   ró   rô   r,  r(  s     r7   Úlate_remux_refresh_updatesr2  ­  ss   € Ý˜vÑ&Ô&€Hå˜8 NÔ3ÐX°xÐ@WÔ7XÐYÑYÔYÝ˜8Ð$8Ô9Ð:Ñ:Ô:Ý˜8Ð$8Ô9Ð:Ñ:Ô:Ý˜8Ð$9Ô:Ð;Ñ;Ô;ð	ð r6   )Úany_control_videoÚupdate_formr3  r4  c               ó  ‡ ‡— t          d‰t           |d¦  «        ¦  «        ¬¦  «        }t          | |d¦  «        d¦  «        }t          |¦  «        }‰                      ||ddd¬¦  «        }‰                      |d         p|d	         ¬
¦  «        5 }	‰                      ¦   «         5  ‰                       |d¦  «        d¬¦  «        }
‰                       |d¦  «        d¬¦  «        }d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   ‰                      |t          k    ¬
¦  «        5 }‰  	                    d¦  «         d d d ¦  «         n# 1 swxY w Y   ‰                      |d         ¬
¦  «        5 }‰  
                    |                     dd ¦  «        ddd¬¦  «        }d d d ¦  «         n# 1 swxY w Y   t          dt           |d¦  «        ¦  «        ¬¦  «        }t          | |d¦  «        d¦  «        }t          |¦  «        }‰                      t          |¦  «        dk    ¬
¦  «        5 }‰                      ||d¬¦  «        }‰                      |d         ¬
¦  «        5 }‰  
                    |                     dd ¦  «        ddd¬¦  «        }d d d ¦  «         n# 1 swxY w Y   ‰                      |d         ¬
¦  «        5 }‰  
                    |                     dd ¦  «        ddd¬¦  «        }d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |sDˆˆ fd „}ˆ fd!„}|                     ||g||	||g¬"¦  «         |                     ||g|||g¬"¦  «         ||	|
||||||||||d#œS )$NTrg   )r  r  r  r<   r	   zPostprocess Remux Audio)r   rE   r'  Úscaler—   rð   rñ   r&  ri   ÚPrompt)r—   rj   úNegative Promptz*<B>Reuse the Control Video audio track</B>rò   rh   ÚfilepathÚ
Soundtrack)rE   Útyper—   Úshow_download_buttonrq   )r  r  zReplace Voice)r   rE   r—   ró   rn   úVoice Sample #1rô   rp   úVoice Sample #2c                ó°   •— t          ‰t          | ¦  «        ¬¦  «        }t          || ¦  «        }‰                     ||¬¦  «        gt	          |¦  «        ¢R S )N)r  r  ©r   rE   )r  rA   r  r÷   r)  )r@   r   rE   r3  r
  s      €€r7   Úrefresh_soundtrackz6create_generation_audio_ui.<locals>.refresh_soundtrackÐ  sZ   ø€ Ý(Ð9JÕ\lÐmsÑ\tÔ\tÐuÑuÔuˆGÝ! '¨6Ñ2Ô2ˆEØ—9’9 W°E�9Ñ:Ô:Ð^Õ=WÐX]Ñ=^Ô=^Ð^Ð^Ð^r6   c                ó®   •— t          t          | ¦  «        ¬¦  «        }t          || ¦  «        }‰                     ||¬¦  «        gt	          |¦  «        ¢R S )N)r  r@  )r  rA   r  r÷   r-  )r@   r   rE   r
  s      €r7   Úrefresh_voicez1create_generation_audio_ui.<locals>.refresh_voiceÕ  sW   ø€ Ý/Õ@PÐQWÑ@XÔ@XÐYÑYÔYˆGÝ! '¨6Ñ2Ô2ˆEØ—9’9 W°E�9Ñ:Ô:ÐeÕ=^Ð_dÑ=eÔ=eÐeÐeÐer6   ©ÚfnÚinputsÚoutputs)rg   Úpostprocess_audio_prompt_colri   rj   Úpostprocess_audio_control_colÚpostprocess_audio_source_colrh   Úreplace_voice_colrq   Úreplace_voice_sample_rowrn   Úreplace_voice_sample2_rowrp   )r  rA   r  rú   ÚDropdownÚColumnÚRowÚTextr  ÚMarkdownÚAudior?   r  r[   Úinput)r
  Úui_getr]   r3  r4  Úpostprocess_choicesÚpostprocess_valueÚpostprocess_metadatarg   rH  ri   rj   rI  rJ  rh   Úreplace_voice_choicesÚreplace_voice_valueÚreplace_voice_metadatarK  rq   rL  rn   rM  rp   rA  rC  s   `  `                      r7   Úcreate_generation_audio_uir\  ·  sÏ  øø€ Ý,¸$ÐPaõ  tDð  EKð  EKð  L_ñ  E`ô  E`ñ  taô  tað  bñ  bô  bÐÝ%Ð&9¸6¸6ÐBUÑ;VÔ;VÐXZÑ[Ô[ÐÝ*Ð+<Ñ=Ô=ÐØŸšÐ,?ÐGXÐbfÐnoð  xQ˜ñ  Rô  RÐØ	�ŠÐ/°Ô?ÐpÐCWÐXoÔCpˆÑ	qÔ	qð tð  vRØ�VŠV‰XŒXð 	tð 	tØ')§w¢w¨v¨vÐ6PÑ/QÔ/QÐYa wÑ'bÔ'bÐ$Ø+-¯7ª7°6°6Ð:XÑ3YÔ3YÐar¨7Ñ+sÔ+sÐ(ð	tð 	tð 	tñ 	tô 	tð 	tð 	tð 	tð 	tð 	tð 	tøøøð 	tð 	tð 	tð 	tðtð tð tñ tô tð tð tð tð tð tð tøøøð tð tð tð tð 
�ŠÐ,Õ0DÒDˆÑ	EÔ	Eð BÐIfØ
�ŠÐ@ÑAÔAÐAðBð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bà	�ŠÐ/Ð0DÔEˆÑ	FÔ	Fð MÐJfØ—x’x k§o¢o°nÀdÑ&KÔ&KÐR\Ðdpð  HL�xñ  Mô  MˆðMð Mð Mñ Mô Mð Mð Mð Mð Mð Mð Møøøð Mð Mð Mð Mõ 6À4ÕYiÐjpÐjpð  rHñ  kIô  kIñ  ZJô  ZJð  Kñ  Kô  KÐÝ'Ð(=¸v¸vÐF\Ñ?]Ô?]Ð_aÑbÔbÐÝ,Ð-@ÑAÔAÐØ	�Š�3Ð4Ñ5Ô5¸Ò9ˆÑ	:Ô	:ð hÐ>OØ!Ÿ{š{Ð3HÐPcÐkz˜{Ñ{Ô{ÐØ�VŠVÐ2Ð3GÔHˆVÑIÔIð 	fÐMeØ#%§8¢8°+·/²/ÐBXÐZ^Ñ2_Ô2_Ðfpð  yJð  ae 8ñ  $fô  $fÐ ð	fð 	fð 	fñ 	fô 	fð 	fð 	fð 	fð 	fð 	fð 	føøøð 	fð 	fð 	fð 	fà�VŠVÐ2Ð3HÔIˆVÑJÔJð 	hÐNgØ$&§H¢H°;·?²?ÐCZÐ\`Ñ3aÔ3aÐhrð  {Lð  cg Hñ  %hô  %hÐ!ð	hð 	hð 	hñ 	hô 	hð 	hð 	hð 	hð 	hð 	hð 	høøøð 	hð 	hð 	hð 	hð	hð hð hñ hô hð hð hð hð hð hð høøøð hð hð hð hð ð ið	_ð 	_ð 	_ð 	_ð 	_ð 	_ð
	fð 	fð 	fð 	fð 	fð
 	×ÒÐ#5Ð?PÐ>QÐ\mð  pLð  Nkð  mIð  \JÐñ  	Kô  	Kð  	KØ×"Ò" mÐ=QÐ<RÐ]qð  tLð  Ngð  ]hÐ"ñ  	iô  	ið  	ið /Ø(DØ$<Ø(DØ)FØ(DØ$Ø.Ø 4Ø$<Ø 4Ø%>Ø!6ðð ð sµ   ÂDÂ'AC4Ã(DÃ4C8	Ã8DÃ;C8	Ã<DÄDÄDÄ5EÅEÅEÅ>.F8Æ8F<Æ?F<È:5L!É/.J)ÊL!Ê)J-	Ê-L!Ê0J-	Ê1L!Ë.L
Ë>L!Ì
L	ÌL!ÌL	ÌL!Ì!L%Ì(L%)r4  Údefault_visibility_falsec          	     ó  — t          ¦   «         }|r|d         d         nd}t          |¦  «        }|                      ||ddddd¬¦  «        }|                      |d	         ¬
¦  «        5 }|                      ddd¬¦  «        }d d d ¦  «         n# 1 swxY w Y   |                      |d         ¬
¦  «        5 }	|                      ddd¬¦  «        }
d d d ¦  «         n# 1 swxY w Y   |s |                     t          |g||	g¬¦  «         ||||	|
dœS )Nr   r	   r<   TúAudio ActionFÚpostprocess)r   rE   r'  r6  r—   Ú
show_labelÚelem_classesró   r&  r=  r9  ©r—   r;  r<  rô   r>  rD  )rg   rL  rn   rM  rp   )r   rú   rN  rP  rS  Úchanger0  )r
  r]  r4  r   rE   rù   rg   rL  rn   rM  rp   s              r7   Úcreate_late_audio_edit_uire  î  së  € Ý Ñ"Ô"€GØ$Ð,ˆG�AŒJ�qŒMˆM¨"€EÝ˜uÑ%Ô%€HØŸš¨G¸5È$ÐVWÐ_mÐzð  O\˜ñ  ]ô  ]ÐØ	�Š˜Ð!5Ô6ˆÑ	7Ô	7ð mÐ;SØ!ŸxšxÐ.?ÀjÐgk˜xÑlÔlÐðmð mð mñ mô mð mð mð mð mð mð møøøð mð mð mð mà	�Š˜Ð!6Ô7ˆÑ	8Ô	8ð nÐ<UØ "§¢Ð/@ÀzÐhl Ñ mÔ mÐðnð nð nñ nô nð nð nð nð nð nð nøøøð nð nð nð nàð [Ø× Ò Õ$>ÐHYÐGZÐe}ð  @Yð  eZÐ ñ  	[ô  	[ð  	[à.Ø$<Ø 4Ø%>Ø!6ðð ð s$   Á(BÂBÂBÂ4CÃCÃ Cc               óP  — t          dddt          ¬¦  «        }t          d„ |D ¦   «         v rt          n|r|d         d         nd}|rdn|}t          |¦  «        }|                      d¬¦  «        5 }|                      ¦   «         5   | j        d#|ddd	dd
dœ|ri nd|i¤Ž}d d d ¦  «         n# 1 swxY w Y    | j        d#i |ri nd|d         p|d         i¤Ž5 }	|                      ¦   «         5  |                      ddd
¬¦  «        }
|                      ddd
¬¦  «        }d d d ¦  «         n# 1 swxY w Y   |                      dddddd¬¦  «        }|                      dddddd¬¦  «        }d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y    | j        d#i |ri n	d|d         i¤Ž5 }|  	                    ddd¬¦  «        }d d d ¦  «         n# 1 swxY w Y    | j        d#i |ri n	d|d         i¤Ž5 }|  	                    ddd¬¦  «        }d d d ¦  «         n# 1 swxY w Y    | j        d#i |ri n	d|d         i¤Ž5 }|  	                    d dd¬¦  «        }d d d ¦  «         n# 1 swxY w Y   |s"| 
                    t          |g|	|||g¬!¦  «         |||	|
|||||||||d"œS )$NFT)r  r  r  r  c                ó   — h | ]\  }}|’ŒS r5   r5   r  s      r7   r  z'create_late_remux_ui.<locals>.<setcomp>  s   € ÐLmÐLmÐLmÑXaÐXYÐ[aÈVÐLmÐLmÐLmr6   r   r	   r<   r&  r_  r`  )r   r'  r6  r—   ra  rb  rE   r'  rð   rñ   r7  )r—   rb  r8  éÿÿÿÿiÿÉš;zSeed (-1 for random))rE   Ústepr—   Úshow_reset_buttong      9@z#Number of Sample Videos to Generaterò   r:  r9  rc  ró   r=  rô   r>  rD  )Úpostprocess_audio_colrg   Úpostprocess_audio_prompt_rowri   rj   Úpostprocess_audio_seedÚrepeat_generationÚaudio_source_rowrh   rL  rn   rM  rp   r5   )r  r  ru   rú   rO  rP  rN  rQ  ÚSliderrS  rd  r2  )r
  r4  r]  r   Údefault_valuerE   rù   rk  rg   rl  ri   rj   rm  rn  ro  rh   rL  rn   rM  rp   s                       r7   Úcreate_late_remux_uirr    s  € Ý ¨eÀUÐZ^õ  ufð  gñ  gô  g€GÝ0HÐLmÐLmÐelÐLmÑLmÔLmÐ0mÐ0mÕ,Ð,ð  FMð  uUÐt{Ð|}Ôt~ð  @Aô  uBð  uBð  SU€MØÐ0ˆBˆB =€EÝ˜uÑ%Ô%€HØ	�Š˜4ˆÑ	 Ô	 ð JÐ$9Ø�VŠV‰XŒXð 	Eð 	EØ + ¤ð  !E°GÀTÐQRÐZhÐuzð  JWð  !Eð  !Eð  bmð  \Cð  \^ð  \^ð  t{ð  }Bð  sCð  !Eð  !EÐð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	EàˆRŒYÐ}Ð} Ð{˜"˜"°)¸XÀnÔ=UÐ=zÐYaÐbyÔYzÐ1{Ð}Ð}ð 	Jð  B^Ø—’‘”ð pð pØ+-¯7ª7°2¸XÐTa¨7Ñ+bÔ+bÐ(Ø/1¯wªw°rÐARÐan¨wÑ/oÔ/oÐ,ðpð pð pñ pô pð pð pð pð pð pð pøøøð pð pð pð pð &(§Y¢Y¨r°9ÀBÈQÐVlð  AF Yñ  &Gô  &GÐ"Ø "§	¢	¨!¨T¸ÀÐJoð  DI 	ñ  !Jô  !JÐð	Jð 	Jð 	Jñ 	Jô 	Jð 	Jð 	Jð 	Jð 	Jð 	Jð 	Jøøøð 	Jð 	Jð 	Jð 	JðJð Jð Jñ Jô Jð Jð Jð Jð Jð Jð Jøøøð Jð Jð Jð Jð 
ˆŒÐ	WÐ	W˜ÐU�2�2¨9°hÐ?SÔ6TÐ*UÐ	WÐ	Wð `Ð[kØ—x’x l¸ÐZ^�xÑ_Ô_ˆð`ð `ð `ñ `ô `ð `ð `ð `ð `ð `ð `øøøð `ð `ð `ð `à	ˆŒÐ	WÐ	W˜ÐU�2�2¨9°hÐ?SÔ6TÐ*UÐ	WÐ	Wð mÐ[sØ!ŸxšxÐ.?ÀjÐgk˜xÑlÔlÐðmð mð mñ mô mð mð mð mð mð mð møøøð mð mð mð mà	ˆŒÐ	XÐ	X˜ÐV�2�2¨9°hÐ?TÔ6UÐ*VÐ	XÐ	Xð nÐ\uØ "§¢Ð/@ÀzÐhl Ñ mÔ mÐðnð nð nñ nô nð nð nð nð nð nð nøøøð nð nð nð nàð KØ× Ò Õ$>ÐHYÐGZð  fBð  DTð  Vnð  pIð  eJÐ ñ  	Kô  	Kð  	Kà!6Ø.Ø(DØ$<Ø(DØ"8Ø.Ø,Ø$Ø$<Ø 4Ø%>Ø!6ðð ð s´   Á0FÂB,Â FÂ,B0	Â0FÂ3B0	Â4$FÃE7Ã-1D*ÄE7Ä*D.Ä.E7Ä1D.Ä29E7Å+FÅ7E;	Å;FÅ>E;	Å?FÆFÆFÆ2GÇGÇGÇ;H È H$È'H$ÉI)É)I-É0I-c          	     óL  — |rdgng }t          | |¬¦  «        D ]Å}|                     ¦   «         }t          |¦  «        D ]Ÿ\  }	}
t          ||
| ¦  «        r‰t	          ||
t          |¦  «        |¬¦  «        rit          ||
|¦  «        }|                     t          ||
¦  «        t          |pd¦  «         
                    ¦   «         t          |
pd¦  «        ||
f¦  «         Œ ŒÆ|r,|d d…         d„ t          |dd …         ¦  «        D ¦   «         z   nd„ t          |¦  «        D ¦   «         S )N)rƒ   r<   r!  )r  r  r<   r	   c                ó"   — g | ]\  }}}}}||f‘ŒS r5   r5   ©rP   rÅ   r—   r@   s       r7   r˜   z(query_method_choices.<locals>.<listcomp>1  s'   € Ð\Ð\Ð\Ñ.D¨a°°A°u¸f˜5 &˜/Ð\Ð\Ð\r6   c                ó"   — g | ]\  }}}}}||f‘ŒS r5   r5   ru  s       r7   r˜   z(query_method_choices.<locals>.<listcomp>1  sg   € ð  srð  srð  srñ  H^ð  HIð  KLð  NOð  QVð  X^Ðtyð  |Bð  tCð  srð  srð  srr6   )rÈ   rµ   r›   rÄ   r   rA   r§   r…   rã   r.   ÚcasefoldÚsorted)rÀ   r  rÁ   r¡   r  r  r   r-   r’   r—   r@   Úchoice_labels               r7   r  r  )  s¿  € Ø ,Ð4ˆ|ˆnˆn°"€GÝ% nÀ<ÐPÑPÔPð Pð PˆØ×7Ò7Ñ9Ô9ˆÝ,¨[Ñ9Ô9ð 	Pð 	P‰MˆE�6Ý ¨V°^ÑDÔDð PÕIbÐcjÐlrõ  EUð  Veñ  Efô  Efð  wEð  JFñ  JFô  JFð PÝ,¨[¸&À-ÑPÔP�Ø—’¥¨K¸Ñ @Ô @Å#ÀlÐFXÐVXÑBYÔBY×BbÒBbÑBdÔBdÕfiÐjpÐjvÐtvÑfwÔfwð  zFð  HNð   Oñ  Pô  Pð  Pøð	Pð amð  rˆ7�2�A�2Œ;Ð\Ð\ÍÈwÐWXÐWYÐWYÌ{ÑH[ÔH[Ð\Ñ\Ô\Ñ\Ð\ð  srð  srõ  bhð  ipñ  bqô  bqð  srñ  srô  srð  rr6   c                óH  — t          | ¦  «        } t          | ¦  «        }|€| rdndS |�5t          |                     ¦   «         | |¦  «        st	          | ¦  «        › d�S t          || ¦  «        st	          | ¦  «        › d�S t          |d¦  «        r |j        | fi |¤Ž}|r|S dS )Nz/You must choose a valid audio processing methodz4You must choose at least one audio processing methodz1 is not available for this audio processing stagez is not availableÚvalidate_methodr<   )rA   rÙ   rÄ   rµ   rÛ   r   r³   r{  )r@   rÀ   r	  r-   Úerrors        r7   r{  r{  4  sâ   € Ý˜fÑ%Ô%€FÝ˜VÑ$Ô$€GØ€ØDJð  GÐ@Ð@ð  QGð  	GØÐ!Õ*:¸7×;\Ò;\Ñ;^Ô;^Ð`fÐhvÑ*wÔ*wÐ!Ý˜vÑ&Ô&ÐYÐYÐYÐYÝ# G¨VÑ4Ô4ð :Ý˜vÑ&Ô&Ð9Ð9Ð9Ð9ÝˆwÐ)Ñ*Ô*ð Ø'�Ô'¨Ð9Ð9°&Ð9Ð9ˆØð 	ØˆLØˆ2r6   Úprocess_filesúCallable[..., Any]c                óž   — t          | ¦  «        } t          | ¦  «        }t          |d uot          |d¦  «        o |j        | |fi |¤Ž¦  «        S )NÚdownload)rA   rÙ   rI   r³   r€  )r@   r}  r	  r-   s       r7   Údownload_for_methodr�  D  s^   € Ý˜fÑ%Ô%€FÝ˜VÑ$Ô$€GÝ�˜tÐ#Ðz­°¸Ñ(DÔ(DÐzÐIYÈÔIYÐZ`ÐboÐIzÐIzÐsyÐIzÐIzÑ{Ô{Ð{r6   úlist[dict[str, Any]]c                ó¤   — g }t           D ];}t          |d¦  «        r)|                     |                     | ¬¦  «        ¦  «         Œ<d„ |D ¦   «         S )NÚquery_download_defsr!  c                ó   — g | ]}|¯|‘ŒS r5   r5   )rP   Úones     r7   r˜   z'query_download_defs.<locals>.<listcomp>O  s   € Ð'Ð'Ð'�C 3Ð'ˆCÐ'Ð'Ð'r6   )r%   r³   Úextendr„  )rÁ   Údefsr-   s      r7   r„  r„  J  sd   € Ø€DÝ,ð Pð PˆÝ�7Ð1Ñ2Ô2ð 	PØ�KŠK˜×3Ò3ÀÐ3ÑNÔNÑOÔOÐOøØ'Ð'˜4Ð'Ñ'Ô'Ð'r6   Ú	operationc                óÐ  — t          | ¦  «         dx|d<   |d<   |                     d¦  «        €#t          t          j        t
          ¬¦  «        |d<   t          ¦   «         }	  t          | |¦  «        |g|¢R i |¤Ž|r#t          j	        t          | ¦  «        g¦  «         S t          | ¦  «         S # |r#t          j	        t          | ¦  «        g¦  «         w t          | ¦  «         w xY w)Nr   ÚprofileÚ
profile_noÚ	init_pipe©r¼   )rÔ   r?   r   Úprocessor_memoryr�  r*   Úpersistent_modelsrŒ   r   Úunload_vramrÍ   rÒ   )r-   r‰  r@   Úargsr	  Ú
persistents         r7   Ú_dispatch_processorr”  R  sÿ   € Ý˜gÑ&Ô&Ð&Ø/0Ð0€Fˆ9Ñ˜˜|Ñ,Ø‡z‚z�+ÑÔÐ&Ý%Õ&6Ô&@ÕPnÐoÑoÔoˆˆ{ÑÝ"Ñ$Ô$€Jð6Ø*�w�w 	Ñ*Ô*¨6ÐC°DÐCÐCÐC¸FÐCÐCàð 	6ÝÔ(­-¸Ñ*@Ô*@Ð)AÑBÔBÐBÐBå,¨WÑ5Ô5Ð5Ð5øð ð 	6ÝÔ(­-¸Ñ*@Ô*@Ð)AÑBÔBÐBÐBå,¨WÑ5Ô5Ð5Ð5øøøs   Á!B/ Â/6C%c                ó¦   — t          | ¦  «        } t          | ¦  «        }|�t          |d¦  «        st          d| › d�¦  «        ‚t	          |d| fi |¤ŽS )NÚgenerate_soundtrackz.No soundtrack audio processor registered for 'ú'©rA   rÙ   r³   ÚRuntimeErrorr”  ©r@   r	  r-   s      r7   r–  r–  a  se   € Ý˜fÑ%Ô%€FÝ˜VÑ$Ô$€GØ€�g gÐ/DÑEÔE€ÝÐUÈFÐUÐUÐUÑVÔVÐVÝ˜wÐ(=¸vÐPÐPÈÐPÐPÐPr6   Úaudio_tracksú	list[str]útuple[list[str], list[str]]c                ó¨   — t          | ¦  «        } t          | ¦  «        }|�t          |d¦  «        st          d| › d�¦  «        ‚t	          |d| |fi |¤ŽS )NÚreplace_voice_tracksz5No voice replacement audio processor registered for 'r—  r˜  )r@   r›  r	  r-   s       r7   rŸ  rŸ  i  si   € Ý˜fÑ%Ô%€FÝ˜VÑ$Ô$€GØ€�g gÐ/EÑFÔF€ÝÐ\ÐSYÐ\Ð\Ð\Ñ]Ô]Ð]Ý˜wÐ(>ÀÈÐ_Ð_ÐX^Ð_Ð_Ð_r6   c                ó¦   — t          | ¦  «        } t          | ¦  «        }|�t          |d¦  «        st          d| › d�¦  «        ‚t	          |d| fi |¤ŽS )NÚprocess_audio_filez(No audio edit processor registered for 'r—  r˜  rš  s      r7   r¡  r¡  q  se   € Ý˜fÑ%Ô%€FÝ˜VÑ$Ô$€GØ€�g gÐ/CÑDÔD€ÝÐOÀfÐOÐOÐOÑPÔPÐPÝ˜wÐ(<¸fÐOÐOÈÐOÐOÐOr6   c                ó  — |                       ¦   «         }t          |                     dd¦  «        pd¦  «                             ¦   «         }|r|S t	          |¦  «        }|r|d         d         S | j        j                             ¦   «         S rª   )rµ   r.   r?   r=   r›   Ú	__class__r1   r«   )r-   r’   r/   r¬   s       r7   Úconfig_key_for_handlerr¤  y  sŠ   € Ø×3Ò3Ñ5Ô5€KÝ�[—_’_ \°2Ñ6Ô6Ð<¸"Ñ=Ô=×CÒCÑEÔE€JØð ØÐÝ$ [Ñ1Ô1€NØð $Ø˜aÔ  Ô#Ð#ØÔÔ%×+Ò+Ñ-Ô-Ð-r6   r¼   c                ó¶   — |                       t          i ¦  «        }t          |t          ¦  «        si }|| t          <   n|                      t          |¦  «         |S rL   )r?   ÚAUDIO_PROCESSOR_CONFIG_KEYrT   rY   rw   )r¼   Úconfigss     r7   Ú_nested_configsr¨  „  sZ   € Ø×ÒÕ :¸BÑ?Ô?€GÝ�g�tÑ$Ô$ð FØˆØ4;ˆÕ0Ñ1Ð1à× Ò Õ!;¸WÑEÔEÐEØ€Nr6   rø   c                óž   — 	 t          | ¦  «        } n# t          t          f$ r
 t          } Y nw xY w| t          t          t
          fv r| nt          S rL   )rø   rÞ   rß   ÚPERSIST_UNLOADÚPERSIST_RAMÚPERSIST_AUTOr\   s    r7   Únormalize_persistencer­  Ž  sX   € ðÝ�E‘
”
ˆˆøÝ•zÐ"ð ð ð Ýˆˆˆðøøøà�n­k½<ÐHÐHÐHˆ5ˆ5ÍnÐ\s   ‚ ’-¬-c                ó®   — | €t           n| }|€t          d¦  «        ‚t          t          |¦  «                             t
          t          ¦  «        ¦  «        S )Nz#Audio processors are not registered)r*   r™  r­  r¨  r?   r´   r¬  )r¼   r¸   s     r7   r   r   –  sN   € Ø/<Ð/DÕ+Ð+È-€FØ€~ÝÐ@ÑAÔAÐAÝ ¥°Ñ!8Ô!8×!<Ò!<Õ=SÕUaÑ!bÔ!bÑcÔcÐcr6   c                ó   — dS )NTr5   rŽ  s    r7   r�  r�  �  s   € Øˆ4r6   c                ó   — dS )z4Postprocessors use the shared profile 0 VRAM policy.Tr5   rŽ  s    r7   Úautomatic_memoryr±  ¡  s   € àˆ4r6   c                óR   — t          |¦  «        }|t          | ¦  «        t          <   |S rL   )r­  r¨  r´   )r¼   rE   s     r7   Úwrite_persistencer³  ¦  s'   € Ý! %Ñ(Ô(€EØ=B…O�MÑ"Ô"Õ#9Ñ:Ø€Lr6   c                ó¢   — t          | d¦  «        r!t          |                      ¦   «         ¦  «        ni }|                     t          d ¦  «         |S )Nr±   )r³   rY   r±   rs   r´   ©r-   r¸   s     r7   Ú_default_configr¶  ¬  sK   € Ý/6°wÐ@PÑ/QÔ/QÐY�T�'×(Ò(Ñ*Ô*Ñ+Ô+Ð+ÐWY€FØ
‡J‚JÕ% tÑ,Ô,Ð,Ø€Mr6   r¸   c                ó¾   — t          | d¦  «        r"t          |                      |¦  «        ¦  «        nt          |¦  «        }|                     t          d ¦  «         |S )NÚnormalize_config_section)r³   rY   r¸  rs   r´   rµ  s     r7   Ú_normalize_config_sectionr¹  ²  sV   € Ý?FÀwÐPjÑ?kÔ?kÐ}�T�'×2Ò2°6Ñ:Ô:Ñ;Ô;Ð;ÕquÐv|Ñq}Ôq}€FØ
‡J‚JÕ% tÑ,Ô,Ð,Ø€Mr6   c                óF  — |                       t          i ¦  «        }t          |¦  «        }t          |t          ¦  «        r|                      |i ¦  «        ni }t          |t          ¦  «        r|ni }i t          |¦  «        ¥t	          |pi ¦  «        ¥}t          ||¦  «        S rL   )r?   r¦  r¤  rT   rY   r¶  r¹  )r¼   r-   r§  r/   ÚnestedrZ   s         r7   Úread_config_sectionr¼  ¸  s—   € Ø×ÒÕ :¸BÑ?Ô?€GÝ'¨Ñ0Ô0€JÝ,6°wÅÑ,EÔ,EÐMˆW�[Š[˜ RÑ(Ô(Ð(È2€FÝ! &­$Ñ/Ô/Ð7ˆVˆV°R€FØ?• Ñ(Ô(Ð?­D°°¸2Ñ,>Ô,>Ð?€FÝ$ W¨fÑ5Ô5Ð5r6   c                ó¤   — t          |i t          |¦  «        ¥t          |pi ¦  «        ¥¦  «        }|t          | ¦  «        t	          |¦  «        <   |S rL   )r¹  r¶  rY   r¨  r¤  )r¼   r-   r¸   s      r7   Úwrite_config_sectionr¾  Á  sS   € Ý& wÐ0bµ?À7Ñ3KÔ3KÐ0bÍtÐTZÐT`Ð^`ÑOaÔOaÐ0bÑcÔc€FØFL…O�MÑ"Ô"Õ#9¸'Ñ#BÔ#BÑCØ€Mr6   c           	     ón  — t          |                      t          d ¦  «        ¦  «        }t          | ¦  «                             t
          d ¦  «         t          D ]0}t          |¦  «        rt          | |t          | |¦  «        ¦  «         Œ1t          |                      t          d ¦  «        ¦  «        }||k    S rL   )
Úreprr?   r¦  r¨  rs   r´   r%   r¶  r¾  r¼  )r¼   Úbeforer-   Úafters       r7   Úmigrate_audio_processor_configrÃ  Ç  s¨   € Ý�-×#Ò#Õ$>ÀÑEÔEÑFÔF€FÝ�MÑ"Ô"×&Ò&Õ'=¸tÑDÔDÐDÝ,ð fð fˆÝ˜7Ñ#Ô#ð 	fÝ  °Õ9LÈ]Ð\cÑ9dÔ9dÑeÔeÐeøÝ�×"Ò"Õ#=¸tÑDÔDÑEÔE€EØ�UŠ?Ðr6   ©Úlock_configrÅ  ú!list[AudioProcessorConfigBinding]c               ó"  — g }d„ t           D ¦   «         }|s|S |                      ¦   «         5  |D ]Ç}t          ||t          ||¦  «        ¦  «        }|                      t          |¦  «        ¦  «        5 }|                     | ||¬¦  «        }d d d ¦  «         n# 1 swxY w Y   t          |¦  «        |_        |r>| 	                    t          |t          |¦  «        t          |¦  «        ¦  «        ¦  «         ŒÈ	 d d d ¦  «         n# 1 swxY w Y   |S )Nc                ó2   — g | ]}t          |d ¦  «        ¯|‘ŒS )Úcreate_config_ui)r³   )rP   r-   s     r7   r˜   z$create_config_ui.<locals>.<listcomp>Ó  s(   € ÐiÐiÐi˜GÅGÈGÐUgÑDhÔDhÐi�ÐiÐiÐir6   rÄ  )r%   ÚTabsr¾  r¼  ÚTabrÍ   rÉ  rI   r'  r…   r,   r¤  rU   )	r
  r¼   rÅ  ÚbindingsrÇ   r-   r¸   Útabr0   s	            r7   rÉ  rÉ  Ñ  s¸  € Ø€HØiÐiÕ'@ÐiÑiÔi€HØð ØˆØ	�Š‰Œð wð wØð 	wð 	wˆGÝ)¨-¸ÕBUÐVcÐelÑBmÔBmÑnÔnˆFØ—’� gÑ.Ô.Ñ/Ô/ð Y°3Ø"×3Ò3°B¸ÈKÐ3ÑXÔX�ðYð Yð Yñ Yô Yð Yð Yð Yð Yð Yð Yøøøð Yð Yð Yð Yå˜x™.œ.ˆCŒKØð wØ—’Õ ;¸GÕE[Ð\cÑEdÔEdÕfjÐksÑftÔftÑ uÔ uÑvÔvÐvøð	wðwð wð wñ wô wð wð wð wð wð wð wøøøð wð wð wð wð €Os7   ¬ADÁ2BÂDÂBÂDÂBÂADÄDÄDrÌ  c                ó   — d„ | D ¦   «         S )Nc                ó,   — g | ]}|j         D ]\  }}|‘ŒŒS r5   )r0   )rP   ÚbindingrÅ   Ú	components       r7   r˜   z%config_components.<locals>.<listcomp>â  s,   € ÐSÐSÐS˜'À'ÔBRÐSÐS±,°!°YˆIÐSÐSÐSÐSr6   r5   )rÌ  s    r7   Úconfig_componentsrÒ  á  s   € ØSÐS XÐSÑSÔSÐSr6   údict[str, dict[str, Any]]c                óf  — t          |pg ¦  «        }i d}}| D ]v}i }|j        D ]7\  }}|t          |¦  «        k    rt          d¦  «        ‚||         ||<   |dz  }Œ8t	          |j        i t          |j        ¦  «        ¥|¥¦  «        ||j        <   Œw|t          |¦  «        k    rt          d¦  «        ‚|S )Nr   zAAudio processor config UI values do not match registered controlsr	   )rU   r0   r[   rß   r¹  r-   r¶  r/   )rÌ  rZ   ÚupdatesÚindexrÐ  r¸   ÚfieldrÅ   s           r7   Úcollect_config_updaterØ  å  sà   € Ý�&�,˜BÑÔ€FØ˜ˆU€GØð Að AˆØˆØÔ(ð 	ð 	‰HˆE�1Ø�˜F™œÒ#Ð#Ý Ð!dÑeÔeÐeØ" 5œMˆF�5‰MØ�Q‰JˆEˆEÝ&?ÀÄÐQÕTcÐdkÔdsÑTtÔTtÐQÐx~ÐQñ  'Aô  'Aˆ�Ô"Ñ#Ð#Ø•�F‘”ÒÐÝÐ\Ñ]Ô]Ð]Ø€Nr6   rÕ  c                ó<  — g }| D ]–}|j         |v r‹t          |j        d¦  «        rv|j                             ||j                  ¦  «        }t	          |t
          ¦  «        r|r|                     |¦  «         Œrt	          |t          ¦  «        r|d„ |D ¦   «         z  }Œ—|S )NÚvalidate_config_sectionc                ó   — g | ]}|¯|‘ŒS r5   r5   )rP   rF   s     r7   r˜   z3validate_config_update_messages.<locals>.<listcomp>ý  s   € Ð>Ð>Ð> d¸Ð>˜TÐ>Ð>Ð>r6   )r/   r³   r-   rÚ  rT   r.   r…   rU   )rÌ  rÕ  ÚmessagesrÐ  Úmessages        r7   Úvalidate_config_update_messagesrÞ  õ  s²   € Ø€HØð ?ð ?ˆØÔ Ð(Ð(­W°W´_ÐF_Ñ-`Ô-`Ð(Ø”o×=Ò=¸gÀgÔFXÔ>YÑZÔZˆGÝ˜'¥3Ñ'Ô'ð ?¨Gð ?Ø—’ Ñ(Ô(Ð(Ð(Ý˜G¥TÑ*Ô*ð ?ØÐ>Ð>¨gÐ>Ñ>Ô>Ñ>�øØ€Or6   c                ód   — |D ],}|j         |v r!t          | |j        ||j                  ¦  «         Œ-d S rL   )r/   r¾  r-   )r¼   rÌ  rÕ  rÐ  s       r7   Úapply_config_updaterà    sJ   € Øð ^ð ^ˆØÔ Ð(Ð(Ý  °´ÀÈÔI[ÔA\Ñ]Ô]Ð]øð^ð ^r6   Ú
old_configÚ
new_configc                ó°  — t          |¦  «        }t          j        | ¦  «        t          j        |¦  «        k    }|rt          nd }|�t	          |¦  «         t
          D ]x}t          |d¦  «        sŒt          | |¦  «        }t          ||¦  «        }t          |d¦  «        r|                     |||¦  «        }n||k    }|s|r||urt	          |¦  «         Œyd S )NrÏ   Úconfig_requires_release)	rW   r�  Úconfig_valuesr(   rÒ   r%   r³   r¼  rä  )	rá  râ  Úchanged_keysÚmemory_changedÚreleased_handlerr-   Úold_sectionÚnew_sectionÚshould_releases	            r7   Ú!release_changed_config_processorsrì    s  € Ý�|Ñ$Ô$€LÝ%Ô3°JÑ?Ô?ÕCSÔCaÐblÑCmÔCmÒm€NØ:HÐRÕ6Ð6ÈdÐØÐ#Ý(Ð)9Ñ:Ô:Ð:Ý,ð 
6ð 
6ˆÝ�w Ñ/Ô/ð 	ØÝ)¨*°gÑ>Ô>ˆÝ)¨*°gÑ>Ô>ˆÝ�7Ð5Ñ6Ô6ð 	8Ø$×<Ò<¸[È+ÐWcÑdÔdˆNˆNà(¨KÒ7ˆNØð 	6˜nð 	6°'ÐAQÐ2QÐ2QÝ,¨WÑ5Ô5Ð5øð
6ð 
6r6   )r9   r.   )rB   r.   r9   r.   )r9   rI   rL   )r]   r^   r_   r`   ra   rb   )r9   rƒ   )rˆ   r.   )r’   r^   r9   r“   )r’   r^   r9   rœ   )r’   r^   r@   r.   r¡   r¢   r9   r.   )r’   r^   r¨   r.   r9   r.   )r®   r¯   r9   r^   )r®   r¯   r9   rƒ   )NF)rÀ   r¢   rÁ   rI   r9   r$   )r9   r'   )r’   r^   r9   r`   )r’   r^   r@   r.   r9   r`   )r’   r^   r@   r.   r9   rä   )r’   r^   r@   r.   rÀ   r.   r9   rI   )r’   r^   r×   r.   r@   r.   )r9   r^   )r¡   r¢   r9   r.   )rÀ   r.   r9   rI   )r<   )r   r“   r9   r.   )r  rI   r  rI   r  rI   rÁ   rI   r¡   r¢   r  r¢   r  r.   r  rI   r9   r“   )r  rI   rÁ   rI   r¡   r¢   r  r.   r  rI   r9   r“   )
r  rI   rÁ   rI   r  r.   r  rI   r9   r“   )rÁ   rI   r9   rI   )r3  rI   r4  rI   )r]  r^   r4  rI   )r4  rI   r]  r^   )rÀ   r.   r  rI   rÁ   rI   r¡   r¢   r  r.   r  rI   r9   r“   )rÀ   r¢   r9   r.   )r}  r~  r9   rI   )T)rÁ   rI   r9   r‚  )r‰  r.   )r›  rœ  r9   r�  )r¼   r^   r9   r^   )r9   rø   )r¼   r)   r9   rø   )r¼   r)   r9   rI   )r¼   r^   r9   rø   )r¸   r^   r9   r^   )r¼   r^   r¸   r^   r9   r^   )r¼   r^   r9   rI   )r¼   r^   rÅ  rI   r9   rÆ  )rÌ  rÆ  r9   r$   )rÌ  rÆ  r9   rÓ  )rÌ  rÆ  rÕ  rÓ  r9   rœ  )r¼   r^   rÌ  rÆ  rÕ  rÓ  r9   rƒ   )rá  r^   râ  r^   r9   rƒ   )vÚ__doc__Ú
__future__r   Údataclassesr   Ú	functoolsr   r�   Útypingr   r   Úshared.utilsr   r<   r
   r�  Úprocessor_statusr   r   r   r   r   r   r   r  r  r  r  r¦  r´   rª  r«  r¬  rt   ru   ÚREMOVE_BACKGROUND_METHODÚREMOVE_VOCALS_METHODr{   ry   r>   rz   rx   rr   r²   r%   r4   rW   r&   r(   r*   r,   r  rA   rH   rN   r‚   r‡   r‘   r›   r    r§   r­   r¹   r¿   rÈ   rÆ   rÍ   rÒ   rÔ   rÙ   rÛ   rà   rã   rè   rÄ   rì   rú   rü   rÿ   r  r  r  r  r   r$  r)  r-  r0  r2  r\  re  rr  r  r{  r�  r„  r”  r–  rŸ  r¡  r¤  r¨  r­  r   r�  r±  r³  r¶  r¹  r¼  r¾  rÃ  rÉ  rÒ  rØ  rÞ  rà  rì  r5   r6   r7   ú<module>rö     sÔ  ððð ð ð@ #Ð "Ð "Ð "Ð "Ð "à !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  à )Ð )Ð )Ð )Ð )Ð )Ø (Ð (Ð (Ð (Ð (Ð (ð Jð  Jð  Jð  Jð  Jð  Jð  Jð  Jð  Jð  Jð  Jð  Jð  Jð  Jð  Jð  Jð  Jð  Jð #/Ð Ø)<Ð &Ø".Ð Ø4IÐ 1Ø/Ð Ø&Ð Ø€Ø€Ø€à€Ø#Ð Ø.Ð Ø&Ð Ø0Ð Ø2Ð à'Ø)ðð Ð ð ),Ð %Ø),Ð &ØBÐEkÑkÐ ðð ð Ð ð (*Ð Ð )Ð )Ð )Ñ )Ø69°c±e´eÐ )Ð ;Ð ;Ð ;Ñ ;Ø.2Ð Ð 2Ð 2Ð 2Ñ 2Ø8<Ð Ð <Ð <Ð <Ñ <ð ð$ð $ð $ð $ð $ñ $ô $ñ „ð$ð !Ð ð5ð 5ð 5ð 5ð
ð ð ð ð	ð 	ð 	ð 	ð-ð -ð -ð -ð -ð`2ð 2ð 2ð 2ð
Eð Eð Eð Eð
Qð Qð Qð QðMð Mð Mð Mð;ð ;ð ;ð ;ð ;ð!ð !ð !ð !ðð ð ð ð ð
<ð 
<ð 
<ð 
<ð 
<ð	ð 	ð 	ð 	ð 	ð@ð @ð @ð @ð<ð <ð <ð <ð/ð /ð /ð /ð.ð .ð .ð .ðð ð ð ðFð Fð Fð Fðð ð ð ð%ð %ð %ð %ðTð Tð Tð Tð@ð @ð @ð @ðð ð ð ð ðð ð ð ðD	Uð 	Uð 	Uð 	Uð 	Uð>ð >ð >ð >ð4ð 4ð 4ð 4ð 4ðð ð ð 04ÈUÐjoð  GKð  imð  QUð  npð  INð ð ð ð ð ð ð 7;ÐQUÐswð  QSð  lqð [ð [ð [ð [ð [ð [ð 05È4Ðhjð  DIð xð xð xð xð xð xð 9=ð tð tð tð tð tð tðð ð ðsð sð sð
sð sð sð
ð ð ð V[Ðpuð 4ð 4ð 4ð 4ð 4ð 4ðn dið ð ð ð ð ð ð( 5:ð $ð $ð $ð $ð $ð $ðN GKÐafð  EIð  bdð  }Bð rð rð rð rð rð rðð ð ð ð ð |ð |ð |ð |ð(ð (ð (ð (ð (ð6ð 6ð 6ð 6ðQð Qð Qð Qð`ð `ð `ð `ðPð Pð Pð Pð.ð .ð .ð .ðð ð ð ð]ð ]ð ]ð ]ðdð dð dð dð dðð ð ð ð ðð ð ð ð ð
ð ð ð ðð ð ð ðð ð ð ð6ð 6ð 6ð 6ðð ð ð ðð ð ð ð PUð ð ð ð ð ð ð Tð Tð Tð Tðð ð ð ð 	ð 	ð 	ð 	ð^ð ^ð ^ð ^ð6ð 6ð 6ð 6ð 6ð 6r6   