o
    phPC                     @   s(  d dl Zd dlZd dlZd dlZd dlZ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mZ 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#m$Z$m%Z% d dl&m'Z' dd	 Z(d
ej)fddZ*dd Z+dd Z,e"  de	j- Z.e/ej0j1e2re.dej0j1 7 Z.ej3e.d4 e_5ej5a e6ej)g dZ7e6dZ8e9 = ej:ddb e9   ej;dddddgdZ<ej=ddddddd gd!Z>W d   n1 sw   Y  ej?ej@Ad"d#dd$d$d%ZBej=d&ddddg d'd(d)ZCe9  ej:d*d+ ejDdd+d,dd-d.ZEejFjGZGe/eGe2rEeGd/krEej5jHd0d1 eEd2 W d   n	1 sPw   Y  ej:d-d d3W ejId4d4d5d6dd7ZJejId8d8d5d9dd7ZKejId:d:d5d;dd7ZLejId<d<d=d>dd7ZMejId?d?d=d@dd7ZNdAdB ZOdCdD ZPeNjQeOe7e7dddEdF eMjQePe7e7dddG W d   n	1 sw   Y  W d   n	1 sw   Y  ej9dHdI) ejRdJejFjSddKdLZTejRdMejFjUddKdLZVejRdNejFjWddKdLZXW d   n	1 sw   Y  ej9ejFjSdOJZYejZejFj[dP0 ej\dQdRdS`Z]e9 K e:  ej;dTdUdVddWZ^W d   n	1 s>w   Y  e:  ej_dXej`ejFjadYZbe?dZ W d   n	1 scw   Y  W d   n	1 ssw   Y  W d   n	1 sw   Y  ej\d[d\dSZce9  g Zdg Zeg Zfg Zgg Zhg ZiejejFjkD ]Zleld]7 Zle:  ej;dTdUdVdd^ejFjmel d_Znedoen ehoen ej:ejFjpdOtZqe9 8 ejrd`dadbdcejFjsel ddZtefoet ehoet ejrdedadfdcejFjuel ddZvegoev ehoev W d   n	1 sw   Y  ej_dgejwejFjxel ddhZyeeoey ehoey eyjzdid1 eygetevgdddG W d   n	1 sLw   Y  eioeq W d   n	1 saw   Y  qW d   n	1 ssw   Y  ejRdNejFjpddjZ{e?dk dldm Z|e{jze|e{eiee ef eg dddG W d   n	1 sw   Y  ej\dndodSQZ}e9 ; e: Z ej;dTdUdVdpdqdrdsddtZ~ejRduejFjdvZejejjejFjdwdxZejDdydzd{dd|Zejg d}g d~dxZejejFjdegddZe?d ejQdd1 eeddd W d   n	1 sw   Y  ej:ejFjdOZej;ddUdVdpdqdrd]ddZejRdejFjdvZejdejejFjdYZejdejejFjddZejDdd/ddddZejejFjdegejFjdkdZejQdd1 eeddd ejdddd5ZejdejejFjdYZejrddadbdddZejrddadbdddZejrddd dejFjd]ddZW d   n	1 sw   Y  ejIddZdd Zejzdd1 eeeeegdddG W d   n	1 sw   Y  W d   n	1 sw   Y  W d   n	1 sw   Y  ej\dddSZe9 p e:  ej;dTdUdVddWZW d   n	1 s3w   Y  e: = ejdejejFjdYZejRdejFjdvZejIddZejDddddZe?d dd Zejeeeddd W d   n	1 s}w   Y  W d   n	1 sw   Y  W d   n	1 sw   Y  ej\dMddS?Ze9 * e:  ej;ddUdVdZe?d W d   n	1 sw   Y  W d   n	1 sw   Y  W d   n	1 sw   Y  ej\dddS?Ze:  ej;ddUddZejddZejIddZW d   n	1 sw   Y  dd ZejeeedddG W d   n	1 s;w   Y  W d   n	1 sKw   Y  W d   n	1 s[w   Y  ej9ejFjUdO>ZeZ ( ej\dQdl e9 W e: B ej_dXej`ejFjdYZej_ddejejFjdZej_ddejejFjejFjejkdZejzdd1 eedddG e?d W d   n	1 sw   Y  W d   n	1 sw   Y  W d   n	1 sw   Y  g Zg Zg Zg ZejejFjD ]Zej\ded]  d2ZejRdddKddčZejDddddejFjdkdōZejejFjdegejFjdkdZejQdd1 eeddd ejDddddʍZejDddddʍZejdddύq ejdejejFjdYZejdejejFjejFjdkddэZejdejFjdkdd8ZejdejejFjddӍZejrddadbddddԍZejrddadbddddԍZejrddd dejFjd]ddZW d   n	1 sw   Y  W d   n	1 sw   Y  ejddddP ejejjejFjdwdd֍ZejRdddvZejdejFjejddڍZejrddadbdcdbddݍZejrddadbdcdddݍZejrdddd]d ddݍZejRdddvZW d   n	1 s)w   Y  e?d W d   n	1 s>w   Y  eeeeeeeeeeeeeeeeeg7 Zeeg7 Zeeg7 Zeeeeeegg7 Zejze,ee8geeeeeeegddd ejzdd1 eeeeegdddG qW d   n	1 sw   Y  W d   n	1 sw   Y  dZdZeTjzdd1 eTeYddedF e{jzdd1 dded ejDdddZe]jdd1 ededd e}jdd1 ededd ecjdd1 ededd ejdd1 ededd ejdd1 ededd ejdd1 ededd eVjzdd1 eVeddedF W d   n	1 	s3w   Y  ej:d]ejFjWdZej\dd ej0jߐ	scejdejFjej0j1	r^ej0j1ndddӍZej_dej ejFjdgdZejdddd9Zej_ddejFjejFjd ddZejzdd1 edddd ej5jHdd1 edddd W d   n	1 	sw   Y  ejrdd]ejFjd]ejFjddZej_dej ejFjdYZejDd	dd
dddejFjdZejRdddvZejDdd d]ddZdd Zdd ZejzeegegdddG dd Ze? Zej5jHeeddd W d   n	1 
s7w   Y  ej\ddgd| ejeejFjd ejDdddd/ddZejddeejeejFjdd gd!ZejDd"dd#Zej5jHd$d1 ed2 ejzej eegedddGjd%d1 d&d' ejejeedddGjd(d1 d&d' W d   n	1 
sw   Y  ej\d)d= e p e9 0 ejd*ejFjejFjdd+Zejd,d-gejFj ejFjdd+Z	W d   n	1 sw   Y  ejrd.d/dbd0d1ejFj
ejFjd-kd2Ze	jzd3d1 e	eddd W d   n	1 sNw   Y  e  g ZeejFjD ]q\Z\ZZZe9 X ejRdÐed4dKgd]d5Zejd6ed]  d-gejFj ed7d8d9ZejrdeejFjejFjd:ed;d8d<Zeeeeg7 ZW d   n	1 sw   Y  qdW d   n	1 sw   Y  e9  ejId=d>d?d@dAZW d   n	1 sw   Y  W d   n	1 sw   Y  ej\dNd  ejrdBdbdCd:ejFjdDdݍZejrdEdadCdcejFjdFdݍZe?dG ejRdHejFjddjZej:ejFjdOZ ej\dId ejrdJd/dKdcdLdMdݍZ!ejrdNd/dKdcdOdPdݍZ"ejrdQdadbdcddRdݍZ#ejdSej$g dTdUZ$ejrdVdbdCd:ejFj%dWdݍZ&ejrdXd]ej'd]ejFj(dYdݍZ)ejdZej*ejFj+dYZ,ejd[ej-ejFj.dYZ/ejd\ejj0gejFj1 ejFj0dd+Z2ejRd]d^dd_Z3ejrd`dadbd]ejFj4dcdݍZ5ejrdddadbd]ejFj6dcdݍZ7ejrdedadfd]dadgdݍZ8ejrdhdadfd]dadgdݍZ9ejrdidadbdcdadjdݍZ:ejrdkdadbdcejFj;djdݍZ<ejRdlejFj=ejFj= dmdnZ>ejRdoej?ejFjdpdqZ@ejRdrdsdd_ZAejRdtddvZBejRduejFj=ejFj= dvdnZCeCjzdwd1 eCe>dddG ej0jDsejRdxejFjEdvZFej0jGs0ejRdyejFjHdzdqZIej_d{ejJejFjKd|ejFjHd}ZJeIjzd~d1 eIgeJgdddG W d   n	1 s;w   Y  ej\dds ejRddddqZLejRddddqZMejRdddvZNejRdddvZOejrddadbdcdddݍZPej\dd# ejrdd]dd]dddZQejrdd]dd]dddZRW d   n	1 sw   Y  W d   n	1 sw   Y  ej\dd ejRdddvZSejRddddqZTejRddddqZUejRdddvZVejdejFjejddڍZWejrddadbdcdbddݍZXejrddadbdcdddݍZYejrdddd]d ddݍZZejrdddd]d ddݍZ[ej\ddrddZ]eSeVeWeXeYeeeZgZ^ejzdd1 eeegdddG e]jzdd1 e]e~dddG W d   n	1 syw   Y  ej\ddX ejRdddvZ_ejrdd dd:dddZ`ejrdd dd:dddZaejrdd dd:dddZbejrdd dd:dddZce_e`eaebecgZdW d   n	1 sw   Y  W d   n	1 sw   Y  dd Zeejzeeege gdddG dd Zfee	e2gZgej0jߐs)egeg7 ZgejQefg ege ddd W d   n	1 sEw   Y  W d   n	1 sUw   Y  e6dZheXeeEeeee5e7ee8e9eee!e"e#e$e&e)ee	ee,e/e2eeeWe8ege eJeLg ed e Ziej0jߐsdd Zjdd ZkejzejeehegeidddGjejeedddjdd1 d&d'jeke8ge edddG ejzdd1 eeee#e!e"ee	e,e/e&e$ee@gdddG ejdd1 ed eXjzdd1 eXedddjdd1 dddd ejze,ee8geeeeVeWeXeYgddd eeVeWeXeYgZlelge D ]&\ZmZnZoZpZqej5jHe,eme8geeeeneoepeqgddd q]ejQee~eeeeeeee[eUg
eddd e7e3gZrereEeeeeeeeeBeeg7 Zreree	ege 7 ZrereTeg7 Zrerebe^g7 Zreree~eeg7 Zrere>e@eAeCg7 Zrere!e"e#e&e)g7 Zrere,e/e2g7 Zrere5e7e8e9e:g7 Zrere<eNeOg7 ZrereLeMeQeRg7 Zrere$ePg7 Zrered7 Zrere^7 Zrej0jDsXereFg7 Zrej0jGshereIeJg7 Zrereh7 ZrereUe[eTeeVeeeg7 Zrere7 Zrdd ZseEjeseEehgeEeJeLgdddG eLjQejtjueEehegeidddG dd ZvejQeveehgeidddGjejeedddG eJjQdd1 eNeMeJeCehgd2jeeegedje(ere7dje*e7eBe<e>eCgdjdd1 eJeNeMehgd2jeedjdd1 ddjdd1 dd eKjQdd1 e7eheJeKeNeMeBe<e>eCg
ddÍ dD ]Zwejxyewrbejzdewdddƍ  nqFdǐdȄ Z{ejQe{eeegeEegdddjejeedddjdd1 d&d' ej0j|rdʐd˄ Z}e^je}ee^eEegeEegdddjejeedddjdd1 d&d' ejdd1 eVdddje}eeeEegeEegdddjejeedddjdd1 d&d' W d   n	1 sw   Y  W d   n	1 sw   Y  dϐdЄ Z~ej5jej0jej0jej0jej0jej0jsAej0jrFe$rFe%ndejFjgejgdэ dS (      N)
SAMOptions)legal_style_names)get_current_html_path)reload_javascript)auth_enabled
check_auth)is_jsonc                  G   s   t | } | d tj| dS )Nr   args)listpopworker	AsyncTaskr	    r   SC:\Users\intelai3\Desktop\creaza imagini local\Fooocus_win64_2-5-0\Fooocus\webui.pyget_task   s   
r   taskc                 c   s:   dd l m  m} |j d|_W d    n1 sw   Y  t| jdkr)d S t }d}t	j
dtjdddt	j
dd dt	j
dd dt	j
ddfV  tj|  |std t| jdkr
| jd\}}|d	krt| jdkr| jd d d	krqT|\}}}t	j
dtj||d|d urt	j
d|dnt	
 t	
 t	j
ddfV  |d
krt	j
ddt	j
ddt	j
d|dt	j
ddfV  |dkr
tjjst|| }t	j
ddt	j
ddt	j
ddt	j
d|dfV  d}tjjr
|D ]}	t|	tr	tj|	r	t|	 q|rWt | }
td|
dd d S )Nr   FT   zWaiting for task to start ...visiblevaluer   {Gz?previewresultsfinishzTotal time: z.2fz seconds)$ldm_patched.modules.model_managementmodulesmodel_managementZinterrupt_processing_mutexZinterrupt_processinglenr
   timeperf_countergrupdatehtmlmake_progress_htmlr   Zasync_tasksappendsleepZyieldsr   args_managerdisable_enhance_output_sortingsort_enhance_imagesdisable_image_log
isinstancestrospathexistsremoveprint)r   r   Zexecution_start_timefinishedflagproduct
percentagetitleimagefilepathZexecution_timer   r   r   generate_clicked!   sj   













&r:   c                 C   s   |j r
t| |jkr| S g }|j}t| d |j D ]1\}}|| ||jvr)q||j|  }|t| k rD|t| krD|| || 7 }||j| 7 }q|S N)Zshould_enhancer   Zimages_to_enhance_count	enumerater&   Zenhance_stats)Zimagesr   Zsorted_imagesZ
walk_indexindexZenhanced_imgZtarget_indexr   r   r   r*   `   s   

r*   c                 C   s   | t jjv sJ | t jjkr(tjddtjdg dtjjdt jjdddddgS |d	kr0t jj	}| t jj
krPtjddtjdg dtjjdt jjdd|d
dgS tjdddtjddtjjdt jjdd|d
dgS )NTr   Fr   r   samplesNoneg      ?        empty      ? -?)r   flagsinpaint_optionsinpaint_option_detailr"   r#   Datasetconfigexample_inpaint_promptsdefault_inpaint_engine_versioninpaint_option_modify)modeinpaint_engine_versionr   r   r   inpaint_mode_changes   s"   rP   zFooocus  )r7   r	   rB      )scaleZPreviewTFi   	main_view)label
show_labelr   heightelem_classeszFinished ImagesZcontainimage_gallery)rU   rV   
object_fitrW   r   rX       zProgress 32%zprogress-bar)r   r   elem_idrX   Gallery)Zresizable_arearT   final_galleryrY   r^   )rU   rV   rZ   r   rW   rX   r\      z%Type prompt here or paste parameters.Zpositive_prompt   )rV   placeholderr\   Z	autofocuslinesrD   c                   C   s   t S r;   )default_promptr   r   r   r   <lambda>       rd   )outputs)rS   Z	min_widthZGenerateZtype_rowgenerate_button)rU   r   rX   r\   r   Z	Reconnectreset_buttonzLoad Parametersload_parameter_buttonZSkipZtype_row_halfskip_buttonZStopstop_buttonc                 C   *   dd l m  m} d| _| jr|  | S )Nr   stopr   r   r   Z	last_stopZ
processingZinterrupt_current_processingcurrentTaskr   r   r   r   stop_clicked   
   rq   c                 C   rl   )Nr   skiprn   ro   r   r   r   skip_clicked   rr   rt   ZcancelGenerateForever)inputsrf   queueshow_progress_js)ru   rf   rv   rw   Zadvanced_check_row)rX   zInput ImageZ	min_check)rU   r   	containerrX   ZEnhanceZAdvancedr   )selectedzUpscale or Variationuov_tab)rU   idImageuploadnumpy)rU   sourcetyperV   zUpscale or Variation:)rU   choicesr   uf   <a href="https://github.com/lllyasviel/Fooocus/discussions/390" target="_blank">📔 Documentation</a>zImage Promptip_tabr   i,  )rU   r   r   rV   rW   r   zStop AtrA   rC   gMbP?)rU   minimummaximumstepr   ZWeightg       @Type)rU   r   r   ry   c                 C   s
   t j|  S r;   )rF   default_parametersxr   r   r   rd      s   
 )rU   r   ry   u   * "Image Prompt" is powered by Fooocus Image Mixture Engine (v1.0.1). <a href="https://github.com/lllyasviel/Fooocus/discussions/557" target="_blank">📔 Documentation</a>c                 C   sZ   t j| dgtt tjgtt  tjtj d gtt  tjtj d gtt	  S )Nr   r   r   )
r"   r#   r   
ip_ad_colsrF   
default_ipip_typesr   ip_stops
ip_weightsr   r   r   r   ip_advance_checked   s   r   zInpaint or Outpaintinpaint_tabZsketchi  z#FFFFFFZinpaint_canvas)rU   r   r   toolrW   brush_colorr\   rV   z Enable Advanced Masking Features)rU   r   Method)r   r   rU   z"Describe what you want to inpaint.inpaint_additional_promptzInpaint Additional Prompt)ra   r\   rU   r   )LeftRightTopBottomzOutpaint DirectionzAdditional Prompt Quick List)r?   rU   
componentsr   u   * Powered by Fooocus Inpaint Engine <a href="https://github.com/lllyasviel/Fooocus/discussions/414" target="_blank">📔 Documentation</a>c                 C      | d S Nr   r   r   r   r   r   rd         )ru   rf   rw   rv   zMask UploadZinpaint_mask_canvas)rU   r   r   r   rW   r   Zmask_opacityr\   zInvert Mask When GeneratingzMask generation modelzCloth category)rU   r   r   r   zDetection promptzUse singular whenever possiblez!Describe what you want to detect.)rU   r   r   infora   zDetection Prompt Quick Listsamc                 C   r   r   r   r   r   r   r   rd   !  r   zAdvanced options)r   openz	SAM modelzBox Thresholdg333333?g?)rU   r   r   r   r   zText Thresholdg      ?zMaximum number of detectionszSet to 0 to detect all
   )rU   r   r   r   r   r   interactivezGenerate mask from imager   c
              	   C   s^   ddl m}
 i }d }|dkr||d< n|dkr"t|||||	||d}|
| |||\}}}}|S )Nr   )generate_mask_from_imageu2net_cloth_segcloth_categoryr   )Zdino_promptZdino_box_thresholdZdino_text_thresholddino_erode_or_dilate
dino_debugZmax_detectionsZ
model_type)extras.inpaint_maskr   r   )r8   Z
mask_modelr   Zdino_prompt_text	sam_modelZbox_thresholdZtext_thresholdZsam_max_detectionsr   r   r   extrassam_optionsmask_r   r   r   generate_mask-  s"   

r   c                 C   B   t j| dkdgt j| dkdgd  t jj| dktjjdg S Nr   r   r   rR   r>   r"   r#   rI   r   rJ   !example_enhance_detection_promptsr   r   r   r   rd   D      ZDescribedescribe_tabzContent TypezApply StyleszDescribe this Image into PromptzImage Size and Recommended Sizedescribe_image_size)rU   r\   r   ug   <a href="https://github.com/lllyasviel/Fooocus/discussions/1363" target="_blank">📔 Documentation</a>c                 C   s    t j| t jj}tj|ddS )NTr   r   )r   utilget_image_size_inforF   sdxl_aspect_ratiosr"   r#   )r8   r   r   r   r   trigger_show_image_properties]  s   r   enhance_tabz(Use with Enhance, skips image generation)rU   r   r   ug   <a href="https://github.com/lllyasviel/Fooocus/discussions/3281" target="_blank">📔 Documentation</a>ZMetadatametadata_tabzFor images created by Fooocuspil)rU   zApply Metadatac                 C   s>   t j| \}}i }|d ur||d< t|tjr|j|d< |S )N
parametersmetadata_scheme)r   meta_parserread_info_from_imager,   rF   MetadataSchemer   )filer   r   r   r   r   r   trigger_metadata_previewp  s   
r   zOrder of ProcessingzEUse before to enhance small details and after to enhance large areas.)rU   r   r   r   ZPromptz4Choose which prompt to use for Upscale or Variation.)rU   r   r   r   r   c                 C   s   t j| tjkdS Nr   )r"   r#   rF   enhancement_uov_afterr   r   r   r   rd         #ZEnable)rU   r   rX   ry   )rU   r   ra   r   r   c                 C   r   r   r   r   r   r   r   rd     r   zEnhancement positive promptz&Uses original prompt instead if empty.enhance_prompt)rU   ra   r\   zEnhancement negative promptz/Uses original negative prompt instead if empty.enhance_negative_promptZ	Detection)r   r   )rU   r   r   r   r   zSAM Options)rU   r   r   r   )rU   r   r   r   r   r   ZInpaint)r   r   rU   r   z!Disable initial latent in inpaintzInpaint EnginezsVersion of Fooocus inpaint model. If set, use performance Quality or Speed (no performance LoRAs) for best results.)rU   r   r   r   zInpaint Denoising StrengthzvSame as the denoising strength in A1111 inpaint. Only used in inpaint, not used in outpaint. (Outpaint always use 1.0))rU   r   r   r   r   r   zInpaint Respective FieldrE   zThe area to inpaint. Value 0 is same as "Only Masked" in A1111. Value 1 is same as "Whole Image" in A1111. Only used in inpaint, not used in outpaint. (Outpaint always use 1.0)zMask Erode or Dilatei@   zPositive value will make white area in the mask larger, negative value will make white area smaller. (default is 0, always processed before any mask invert)zInvert Maskc                 C   r   r   r   r   r   r   r   rd     r   z\(x) => {if(x){viewer_to_bottom(100);viewer_to_bottom(500);}else{viewer_to_top();} return x;}z() => {viewer_to_bottom();}c                 C      t j| dS r   r"   r#   r   r   r   r   rd          c                   C      d S r;   r   r   r   r   r   rd   "  re   )rv   rw   rx   uovr   c                   C      dS )Nr   r   r   r   r   r   rd   %  re   )rf   rv   rx   rw   c                   C   r   )Ninpaintr   r   r   r   r   rd   &  re   c                   C   r   )Nipr   r   r   r   r   rd   '  re   c                   C   r   )Ndescr   r   r   r   r   rd   (  re   c                   C   r   )NZenhancer   r   r   r   r   rd   )  re   c                   C   r   )Nmetadatar   r   r   r   r   rd   *  re   c                 C   r   r   r   r   r   r   r   rd   +  r   )rS   r   SettingsZPresetinitialPerformanceperformance_selection)rU   r   r   rX   zAspect Ratiosaspect_ratios_accordion)rU   r   r\   u   width × heightaspect_ratios)rU   rV   r   r   r   rX   c                 C   r   r;   r   r   r   r   r   rd   B  re   z&(x)=>{refresh_aspect_ratios_label(x);})ru   rv   rw   rx   c                 C   r   r;   r   r   r   r   r   rd   C  re   zImage NumberzOutput FormatzNegative PromptzType prompt here.z'Describing what you do not want to see.negative_prompt)rU   rV   ra   r   rb   r\   r   RandomZSeed)rU   r   	max_linesr   c                 C   s   t j|  dS r   r   rr   r   r   random_checkedR  s   r   c                 C   sb   | r
t tjtjS zt|}tj|  krtjkr|W S  W n	 ty(   Y nw t tjtjS r;   )randomrandint	constantsZMIN_SEEDZMAX_SEEDint
ValueError)r   Zseed_stringZ
seed_valuer   r   r   refresh_seedU  s   r   c                   C   s,   t jjr
tjddS tjdtt ddS )NrD   r   z<a href="file=u&   " target="_blank">📚 History Log</a>)r(   r
   r+   r"   r#   r   output_formatr   r   r   r   update_history_linkd  s   r   )rf   rv   rw   ZStylesZstyle_selections_tab)rU   rX   )Zstyle_namesZdefault_selectedu#   🔎 Type here to search styles ...zSearch Styles)rV   ry   ra   r   rU   zSelected Stylesstyle_selections)rV   ry   r   r   rU   rX    gradio_receiver_style_selections)r\   r   c                   C   s   t jttjdS )Nr   )r"   r#   copydeepcopystyle_sorter
all_stylesr   r   r   r   rd   }  s    c                   C   r   r;   r   r   r   r   r   rd     re   z#()=>{refresh_style_localization();})rx   c                   C   r   r;   r   r   r   r   r   rd     re   ZModelszBase Model (SDXL only))rU   r   r   rV   zRefiner (SDXL or SD 1.5)r@   zRefiner Switch Atg?g-C6?zUse 0.4 for SD1.5 realistic models; or 0.667 for SD1.5 anime models; or 0.8 for XL-refiners; or any value for switching two SDXL models.)rU   r   r   r   r   r   r   c                 C   s   t j| dkdS )Nr@   r   r   r   r   r   r   rd         Zlora_enable)rU   r   rX   rS   zLoRA 
lora_model   )rU   r   r   rX   rS   r   lora_weight)rU   r   r   r   r   rX   rS   ZRefreshu   🔄 Refresh All FilesZ	secondaryZrefresh_button)rU   r   variantrX   zGuidance Scaleg      >@z@Higher value means style is cleaner, vivider, and more artistic.zImage Sharpnessz1Higher value means image and texture are sharper.uf   <a href="https://github.com/lllyasviel/Fooocus/discussions/117" target="_blank">📔 Documentation</a>zDeveloper Debug ModezDebug ToolszPositive ADM Guidance Scalerg      @g      ?z<The scaler multiplied to positive ADM (use 1.0 to disable). zNegative ADM Guidance Scalerg?z<The scaler multiplied to negative ADM (use 1.0 to disable). zADM Guidance End At Stepz5When to end the guidance from positive/negative ADM. zRefiner swap method)jointseparatevae)rU   r   r   zCFG Mimicking from TSNRzeEnabling Fooocus's implementation of CFG mimicking for TSNR (effective when real CFG > mimicked CFG).z	CLIP SkipzYBypass CLIP layers to avoid overfitting (use 1 to not skip any layers, 2 is recommended).SamplerZ	SchedulerZVAEz"Generate Image Grid for Each Batchze(Experimental) This may cause performance problems on some computers and certain internet conditions.)rU   r   r   z!Forced Overwrite of Sampling Step   z.Set as -1 to disable. For developer debugging.z'Forced Overwrite of Refiner Switch Stepz$Forced Overwrite of Generating Widthi   zzSet as -1 to disable. For developer debugging. Results will be worse for non-standard numbers that SDXL is not trained on.z%Forced Overwrite of Generating Heightz0Forced Overwrite of Denoising Strength of "Vary"z;Set as negative number to disable. For developer debugging.z3Forced Overwrite of Denoising Strength of "Upscale"zDisable Previewz"Disable preview during generation.)rU   r   r   r   zDisable Intermediate ResultszHDisable intermediate results during generation, only show final gallery.)rU   r   r   zDisable seed incrementz:Disable automatic seed increment when image number is > 1.zRead wildcards in orderzBlack Out NSFWz$Use black image if NSFW is detected.c                 C   s   t j| |  dS )N)r   r   r   r   r   r   r   rd     r   zSave only final enhanced imagezSave Metadata to ImageszAAdds parameters to generated images allowing manual regeneration.zMetadata Schemez[Image Prompt parameters are not included. Use png and a1111 for compatibility with Civitai.)rU   r   r   r   r   c                 C   r   r   r   r   r   r   r   rd     r   ZControlzDebug Preprocessorsz#See the results from preprocessors.zSkip PreprocessorszLDo not preprocess images. (Inputs are already canny/depth/cropped-face/etc.)z$Mixing Image Prompt and Vary/UpscalezMixing Image Prompt and InpaintzSoftness of ControlNetz;Similar to the Control Mode in A1111 (use 0.0 to disable). CannyzCanny Low Threshold   zCanny High Threshold   zDebug Inpaint PreprocessingzDebug Enhance Masksz/Show enhance masks in preview and final resultszDebug GroundingDINOz:Use GroundingDINO boxes instead of more detailed SAM masksz!GroundingDINO Box Erode or DilatezPositive value will make white area in the mask larger, negative value will make white area smaller. (default is 0, processed before SAM)zInpaint brush colorZinpaint_brush_color)rU   r   r\   c                 C   s   t j| dgd S )Nr   rR   r   r   r   r   r   rd   P  r   c                 C   r   )N)r   r   r   r   r   r   rd   U  r   ZFreeUEnabledB1g)\(?B2gRQ?S1   gGz?S2gffffff?c                 C   r   r   r   r   r   r   r   dev_mode_checkeda  s   r  c                  C   s   t j  tjt jjdg} | tjdgt jj dg7 } | tjtjgt jj dg7 } t	j
js:| tjt jjdg7 } tt jjD ]}| tjddtjdgt jj dt g7 } q@| S )Nr   r@   Tr   )r   rJ   update_filesr"   r#   model_filenamesrF   default_vaevae_filenamesr(   r
   disable_preset_selectionavailable_presetsrangedefault_max_lora_numberlora_filenames)r   ir   r   r   refresh_files_clickedg  s   
r  )rv   rw   c                 C   s   | dkr
t j| ni }t j|}|d}|dg }|di }|di }|di }	|di }
t|||||	|
\|d< |d< d|v rS|dd	krS|d= t jt	
|||S )
Nr   
base_modelprevious_default_modelscheckpoint_downloadsembeddings_downloadslora_downloadsvae_downloadspromptrD   )r   rJ   try_get_preset_contentr   Zparse_meta_from_presetgetlaunchdownload_modelsload_parameter_button_clickjsondumps)presetis_generatinginpaint_modeZpreset_contentZpreset_prepareddefault_modelr  r  r  r  r  r   r   r   preset_selection_change  s   

r%  c                 G   sP   | dkrt jj} g }|D ]}|t jjkr|tj| d q|t  q|S )NrB   r   )r   rJ   rL   rF   rH   r&   r"   r#   )rO   r
   resultr#  r   r   r   inpaint_engine_state_change  s   r'  )fnru   rf   rv   rw   c                   C   r   r;   r   r   r   r   r   rd     re   c                 C   sR   t jtj|  dgd t jtj|  dgd  t jtj| dgd  S )Nr     r   r   r   )r"   r#   rF   r   has_restricted_featuresr   r   r   r   rd     s
    c                 C   r   )N)r   r   r   r   r   r   rd     r   )ru   c                 C   r   r   r   r   r   r   r   rd     r   c                   C   r   r;   r   r   r   r   r   rd     re   Zrefresh_grid_delayed)r(  rx   rv   rw   )r(  ru   rf   rw   rv   c                 C   sv   d }t | rt| }|d u r+|rt t t fS t tjddtjddfS t|tjddtjddfS )NTr   F)r   r  loadsr"   r#   r   )Zraw_prompt_txtr"  loaded_jsonr   r   r   
parse_meta  s   
 r-  c                 C   sL   t j| \}}|d u rtd i }nt j|}||}t j||tS )Nz%Could not find metadata in the image!)r   r   r   r2   Zget_metadata_parserZto_jsonr  r#  )r   state_is_generatingr   r   Zparsed_parametersZmetadata_parserr   r   r   trigger_metadata_import  s   
r/  c                   C   s,   t jdddt jdddt jdddg dfS NTr   r   Fr   r   r   r   r   rd     s   , )r(  ru   rf   c                   C   s*   t jdddt jdddt jddddfS r0  r   r   r   r   r   rd     s   * )r(  rf   c                   C   r   r;   r   r   r   r   r   rd     re   ZplayNotification)r(  rx   c                   C   s>   t jg ddtjdddgtjddgd  tjdg dg S )Nr	   FTr1  r      r   )r   r   r"   r#   r   r   r   r   rd     s
    )rf   rv   )znotification.oggznotification.mp3Zaudio_notification)r   r   r\   r   c                 C   s   g }t  }tj| v rddlm} ||| |g d tj| v r7ddlm} ||| |ddg t	|dks?|sDt
 }nt|}t	|dkrVt
 }||fS d|}||fS )Nr   )default_interrogator)
Fooocus V2zFooocus EnhancezFooocus Sharpr4  zFooocus Masterpiecez, )setrF   describe_type_photoZextras.interrogater3  r&   r#   describe_type_animeZextras.wd14taggerr   r"   r   join)modesimgapply_stylesZdescribe_promptsstylesZdefault_interrogator_photoZdefault_interrogator_animeZdescribe_promptr   r   r   trigger_describe(  s$   



r=  c                   C   r   r;   r   r   r   r   r   rd   E  re   c                 C   s$   |dkr
t | ||S t t fS )NrD   )r=  r"   r#   )rN   r:  r  r;  r   r   r   trigger_auto_describeH  s   r>  c                   C   r   r;   r   r   r   r   r   rd   Q  re   c                   C   s   t jddS )NTr   r   r   r   r   r   rd   S  r   c                   C   r   r;   r   r   r   r   r   rd   W  re   c                  C   s   ddl m}  | tj d S )Nr   dump_english_config)Zmodules.localizationr@  grhall_componentsr?  r   r   r   dump_default_english_configY  s   rC  )Z	inbrowserZserver_nameZserver_portshareauthZallowed_pathsZblocked_paths(  Zgradior"   r   r.   r  r    sharedZmodules.configr   fooocus_versionZmodules.htmlZmodules.async_workerZasync_workerr   Zmodules.constantsr   modules.flagsrF   Zmodules.gradio_hijackZgradio_hijackrA  Zmodules.style_sorterr   Zmodules.meta_parserr(   r   r  r   r   modules.sdxl_stylesr   Zmodules.private_loggerr   Zmodules.ui_gradio_extensionsr   Zmodules.authr   r   modules.utilr   r   r   r:   r*   rP   versionr7   r,   r
   r!  r-   ZBlocksrv   Zgradio_rootStaterp   Zinpaint_engine_stateRowZColumnr}   Zprogress_windowr]   Zprogress_galleryZHTMLr$   r%   Zprogress_htmlZgalleryZTextboxr  rJ   rc   loadZButtonrg   rh   ri   rj   rk   rq   rt   ZclickZCheckboxdefault_image_prompt_checkboxZinput_image_checkboxdefault_enhance_checkboxZenhance_checkboxdefault_advanced_checkboxZadvanced_checkboxZimage_input_panelZTabs#default_selected_image_input_tab_idZTabr{   Zuov_input_imageZRadiouov_listdefault_uov_methodZ
uov_methodr   Z	ip_imagesr   r   r   Zip_ctrlsr   r  default_controlnet_image_countimage_countdefault_ip_imagesZip_imager&   &default_image_prompt_advanced_checkboxZad_colZSliderdefault_ip_stop_atsZip_stopdefault_ip_weightsZ	ip_weightip_listdefault_ip_typesZip_typechangeZip_advancedr   r   Zinpaint_input_image)default_inpaint_advanced_masking_checkboxZ!inpaint_advanced_masking_checkboxZDropdownrG   default_inpaint_methodr#  r   ZCheckboxGroupZoutpaint_selectionsrI   rK   Zinpaint_mask_generation_colZinpaint_mask_imagedefault_invert_mask_checkboxZinvert_mask_checkboxinpaint_mask_modelsdefault_inpaint_mask_modelZinpaint_mask_modelinpaint_mask_cloth_category#default_inpaint_mask_cloth_categoryZinpaint_mask_dino_prompt_textr   Z%example_inpaint_mask_dino_prompt_textZ	AccordionZinpaint_mask_advanced_optionsinpaint_mask_sam_modeldefault_inpaint_mask_sam_modelZinpaint_mask_box_thresholdZinpaint_mask_text_thresholddefault_sam_max_detectionsZinpaint_mask_sam_max_detectionsZgenerate_mask_buttonr   r   Zdescribe_input_imagedescribe_typesdefault_describe_content_typeZdescribe_methods'default_describe_apply_prompts_checkboxZdescribe_apply_stylesZdescribe_btnr   r   r~   r   Zenhance_input_imager   Zmetadata_input_imageZJSONZmetadata_jsonZmetadata_import_buttonr   Zenhance_input_paneldefault_enhance_uov_methodZenhance_uov_method enhancement_uov_processing_order$default_enhance_uov_processing_orderZenhance_uov_processing_orderenhancement_uov_prompt_typesdefault_enhance_uov_prompt_typer   Zenhance_uov_prompt_typeZenhance_ctrlsZenhance_inpaint_mode_ctrlsZenhance_inpaint_engine_ctrlsZenhance_inpaint_update_ctrlsdefault_enhance_tabsr=   Zenhance_tab_itemZenhance_enabled"default_enhance_inpaint_mask_modelZenhance_mask_dino_prompt_textZ%example_enhance_mask_dino_prompt_textr   r   Zenhance_mask_modelZenhance_mask_cloth_categoryr   Zenhance_mask_sam_modelZenhance_mask_box_thresholdZenhance_mask_text_thresholdZenhance_mask_sam_max_detectionsZenhance_inpaint_modeZ&enhance_inpaint_disable_initial_latentrL   inpaint_engine_versionsZenhance_inpaint_engineZenhance_inpaint_strengthZ enhance_inpaint_respective_fieldZenhance_inpaint_erode_or_dilateZenhance_mask_invertZ	switch_jsZdown_jsZcurrent_tabselectZadvanced_columnr  r  Zpreset_selectionr   valuesdefault_performancer   r   available_aspect_ratios_labelsdefault_aspect_ratioZaspect_ratios_selectiondefault_max_image_numberdefault_image_numberimage_numberOutputFormatr   default_output_formatr   default_prompt_negativer   Zseed_randomZ
image_seedr   r   r   Zhistory_linkZtry_load_sorted_stylesdefault_stylesZstyle_search_barr   r   r   r   Zsearch_stylestheninputZsort_stylesZGroupr	  default_base_model_namer  default_refiner_model_namerefiner_modeldefault_refiner_switchrefiner_switchZ
lora_ctrlsr<   default_lorasr  enabledfilenameweightZlora_enabledr  r   default_loras_min_weightdefault_loras_max_weightr   Zrefresh_filesdefault_cfg_scaleguidance_scaledefault_sample_sharpness	sharpness%default_developer_debug_mode_checkboxdev_modeZ	dev_toolsZadm_scaler_positiveZadm_scaler_negativeZadm_scaler_endrefiner_swap_methoddefault_cfg_tsnradaptive_cfgclip_skip_maxdefault_clip_skip	clip_skipsampler_listdefault_samplerZsampler_namescheduler_listdefault_schedulerZscheduler_namer
  r  Zvae_nameZgenerate_image_griddefault_overwrite_stepZoverwrite_stepdefault_overwrite_switchoverwrite_switchZoverwrite_widthZoverwrite_heightZoverwrite_vary_strengthdefault_overwrite_upscaleZoverwrite_upscale_strengthdefault_black_out_nsfwZdisable_previewr*  Zdisable_intermediate_resultsZdisable_seed_incrementread_wildcards_in_orderZblack_out_nsfwr+   &default_save_only_final_enhanced_imageZsave_final_enhanced_image_onlydisable_metadatadefault_save_metadata_to_imagesZsave_metadata_to_imagesr   default_metadata_schemeZdebugging_cn_preprocessorZskipping_cn_preprocessorZ$mixing_image_prompt_and_vary_upscaleZmixing_image_prompt_and_inpaintZcontrolnet_softnessZcanny_low_thresholdZcanny_high_thresholdZdebugging_inpaint_preprocessorZ debugging_enhance_masks_checkboxZdebugging_dinoZinpaint_disable_initial_latentZinpaint_engineZinpaint_strengthZinpaint_respective_fieldZinpaint_erode_or_dilater   ZColorPickerZinpaint_mask_colorZinpaint_ctrlsZfreeu_enabledZfreeu_b1Zfreeu_b2Zfreeu_s1Zfreeu_s2Zfreeu_ctrlsr  r  Zrefresh_files_outputr.  Zload_data_outputsr%  r'  Zdefault_inpaint_ctrlsrN   Zdisable_initial_latentengineZstrengthZrespective_fieldZctrlsr-  r   r  r/  Znotification_filer/   r0   ZAudior=  enable_auto_describe_imager>  rC  
in_browserlistenportrD  path_outputsZAUTH_FILENAMEr   r   r   r   <module>   s   ?






 










	

 
+





M






  2










X


       
"
>


!
$.
&






 "
















X








1  (

    M


	
$



  $&



              E$
