§
    Û×j7}  ã                   ó¶  — d dl Z d dlZd dlZd dlZd dlmZ dZdZg d¢Zg d¢Z	ddd	d
dddddddœ
Z
i e
¥Ze                     d¦  «         e                     d¦  «         ded<   ded<    e ee                     ¦   «         d„ ¬¦  «        ¦  «        Zej        ed<   dddddœZdd d!d"d#d$d%d&d'd(d)d(d*œZd&d'd+œZdad,„ Zd-„ Zefd.„Zeefd/„Zd0„ Zd1„ Zd2„ Zd3„ Zd4„ Zd5„ Zd6„ Z dad8„Z!d9„ Z"dad:„Z#d;„ Z$d<„ Z%d=„ Z&d>„ Z'd?„ Z(d@„ Z)dA„ Z*dB„ Z+dbdC„Z,dbdD„Z-dE„ Z.dF„ Z/dG„ Z0dH„ Z1dI„ Z2dadJ„Z3dK„ Z4dL„ Z5dM„ Z6dN„ Z7dO„ Z8dcdR„Z9dS„ Z:dT„ Z;dcdU„Z<dV„ Z=dcdW„Z>dX„ Z?dYdZd[d\œZ@g d]¢ZAddd^„ZBdad_„ZCdcd`„ZDdS )eé    N)Úmatch_nvidia_architecturezresolutions.jsonÚ	1920x1088))z4096x4096 (1:1)Ú	4096x4096)z5440x3072 (16:9)Ú	5440x3072)z3072x5440 (9:16)Ú	3072x5440)z3840x2176 (16:9)Ú	3840x2176)z2176x3840 (9:16)Ú	2176x3840)z2880x2880 (1:1)Ú	2880x2880)z3840x1664 (21:9)Ú	3840x1664)z1664x3840 (9:21)Ú	1664x3840)z2048x2048 (1:1)Ú	2048x2048)z1920x1920 (1:1)Ú	1920x1920)z2560x1440 (16:9)Ú	2560x1440)z1440x2560 (9:16)Ú	1440x2560)z1920x1440 (4:3)Ú	1920x1440)z1440x1920 (3:4)Ú	1440x1920)z2160x1440 (3:2)Ú	2160x1440)z1440x2160 (2:3)Ú	1440x2160)z1456x1456 (1:1)Ú	1456x1456)z2688x1152 (21:9)Ú	2688x1152)z1152x2688 (9:21)Ú	1152x2688)#)z1920x1088 (16:9)r   )z1088x1920 (9:16)Ú	1088x1920)z1440x1440 (1:1)Ú	1440x1440)z1536x1024 (3:2)Ú	1536x1024)z1024x1536 (2:3)Ú	1024x1536)z1920x832 (21:9)Ú1920x832)z832x1920 (9:21)Ú832x1920)z2048x768 (8:3)Ú2048x768)z1024x1792 (4:7)Ú	1024x1792)z1088x1088 (1:1)Ú	1088x1088)z1024x1024 (1:1)Ú	1024x1024)z1280x720 (16:9)Ú1280x720)z720x1280 (9:16)Ú720x1280)z1600x400 (4:1)Ú1600x400)z1280x544 (21:9)Ú1280x544)z544x1280 (9:21)Ú544x1280)z1104x832 (4:3)Ú1104x832)z832x1104 (3:4)Ú832x1104)z960x960 (1:1)Ú960x960)z960x544 (16:9)Ú960x544)z544x960 (9:16)Ú544x960)z832x624 (4:3)Ú832x624)z624x832 (3:4)Ú624x832)z720x720 (1:1)Ú720x720)z832x480 (16:9)Ú832x480)z480x832 (9:16)Ú480x832)z672x384 (16:9)Ú672x384)z384x672 (9:16)Ú384x672)z512x512 (1:1)Ú512x512)z576x320 (16:9)Ú576x320)z320x576 (9:16)Ú320x576)z448x448 (1:1)Ú448x448)z448x256 (7:4)Ú448x256)z256x448 (4:7)Ú256x448)z320x320 (1:1)Ú320x320i À i  i   i ì i ø i   i à i @8 i € i   )
Ú256pÚ320pÚ384pÚ480pÚ540pÚ720pÚ1080pÚ1440pÚ2160pÚ4096prC   rA   i  @ Ú2048sqÚ4096sqc                 ó   — | d         S ©Né   © )Úitems    ú:C:\Users\johnn\OneDrive\Documents\AI\shared\resolutions.pyú<lambda>rL   h   s
   € È$ÈqÌ'€ ó    ©ÚkeyÚlargerz4.2 MPz4K UHDz16.8 MPÚCustom)rD   rB   rE   rP   é   i@  i€  ià  i  iÐ  i8  i   ip  i   i   )r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   )Ú2kÚ4kc                 ó¢   — t          | t          ¦  «        o:t          j        d|                      ¦   «                              ¦   «         ¦  «        d uS )Nz[1-9]\d*x[1-9]\d*)Ú
isinstanceÚstrÚreÚ	fullmatchÚstripÚlower©Úvalues    rK   Úis_resolution_valuer^   ƒ   s>   € Ý�e�SÑ!Ô!Ðk¥b¤lÐ3GÈÏÊÉÌ×I\ÒI\ÑI^ÔI^Ñ&_Ô&_ÐgkÐ&kÐkrM   c                 óô   — t          | ¦  «        st          d¦  «        ‚|                      ¦   «                              ¦   «                              dd¦  «        \  }}t          |¦  «        t          |¦  «        fS )Nz4resolution must be a positive "WIDTHxHEIGHT" string.ÚxrH   )r^   Ú
ValueErrorrZ   r[   ÚsplitÚint)r]   ÚwidthÚheights      rK   Úparse_resolutionrf   ‡   sf   € Ý˜uÑ%Ô%ð QÝÐOÑPÔPÐPØ—K’K‘M”M×'Ò'Ñ)Ô)×/Ò/°°QÑ7Ô7�M€Eˆ6Ýˆu‰:Œ:•s˜6‘{”{Ð"Ð"rM   c                 ó"  — | €d S t          | t          ¦  «        s |d|› d�¦  «         d S g }| D ]ß}t          |t          t          f¦  «        rIt          |¦  «        dk    s6t          |d         t          ¦  «        rt          |d         t          ¦  «        s |d|› d|› �¦  «          d S t          |d         ¦  «        s |d|› d|d         › �¦  «          d S |                     |d         |d                              ¦   «         f¦  «         Œà|S )Nú"z6" should be a list of 2 elements lists ["Label","WxH"]é   r   rH   z," contains an invalid list of two elements: z?" contains a resolution value that is not in the format "WxH": )rV   ÚlistÚtupleÚlenrW   r^   Úappendr[   )Úresolution_choicesÚsource_nameÚprinterÚ
normalizedÚtups        rK   Únormalize_resolution_choicesrs   Ž   sD  € ØÐ!ØˆtÝÐ(­$Ñ/Ô/ð ØˆÐW�KÐWÐWÐWÑXÔXÐXØˆtà€JØ!ð 4ð 4ˆÝ˜#¥¥e˜}Ñ-Ô-ð 	µ°S±´¸Q²°ÅjÐQTÐUVÔQWÕY\ÑF]ÔF]°ÕeoÐpsÐtuÔpvÕx{Ñe|Ôe|°ØˆGÐV˜ÐVÐVÐQTÐVÐVÑWÔWÐWØ�4�4Ý" 3 q¤6Ñ*Ô*ð 	ØˆGÐl˜ÐlÐlÐdgÐhiÔdjÐlÐlÑmÔmÐmØ�4�4Ø×Ò˜3˜qœ6 3 q¤6§<¢<¡>¤>Ð2Ñ3Ô3Ð3Ð3ØÐrM   c                 óp  — t           �t           S t          j                             | ¦  «        sg S 	 t	          | dd¬¦  «        5 }t          j        |¦  «        }d d d ¦  «         n# 1 swxY w Y   n*# t          $ r} |d| › d|› �¦  «         d }Y d }~nd }~ww xY wt          || |¦  «        }|€g S |a t           S )NÚrzutf-8)Úencodingz	Invalid "z" : )	Ú_custom_resolutionsÚosÚpathÚisfileÚopenÚjsonÚloadÚ	Exceptionrs   )Úresolution_filerp   Úfrn   Úerq   s         rK   Úload_custom_resolution_choicesr‚   ¡   s%  € åÐ&Ý"Ð"ÝŒ7�>Š>˜/Ñ*Ô*ð Øˆ	ð"Ý�/ 3°Ð9Ñ9Ô9ð 	.¸QÝ!%¤¨1¡¤Ðð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.øøåð "ð "ð "ØˆÐ4˜OÐ4Ð4°Ð4Ð4Ñ5Ô5Ð5Ø!ÐÐÐÐÐÐøøøøð"øøøõ .Ð.@À/ÐSZÑ[Ô[€JØÐØˆ	Ø$ÐÝÐs;   ±A0 ÁA$ÁA0 Á$A(Á(A0 Á+A(Á,A0 Á0
BÁ:BÂBc                  ó
   — d a d S ©N)rw   rI   rM   rK   Úreset_custom_resolution_cacher…   µ   s   € àÐÐÐrM   c                 ó˜   — t          ¦   «         }g }| D ]6\  }}||v rŒ
|                     |¦  «         |                     ||f¦  «         Œ7|S r„   )ÚsetÚaddrm   )rn   ÚseenÚdedupedÚlabelÚ
resolutions        rK   Údedupe_resolution_choicesr�   º   sc   € Ý‰5Œ5€DØ€GØ/ð ,ð ,ÑˆˆzØ˜ÐÐØØ�Š�ÑÔÐØ�Š˜˜zÐ*Ñ+Ô+Ð+Ð+Ø€NrM   c                 óT   — t          | ¦  «        } | dk     rt          d| › �¦  «        ‚| S )NrH   zInvalid resolution block size: )rc   ra   )Ú
block_sizes    rK   Únormalize_block_sizer�   Å   s3   € Ý�Z‘”€JØ�A‚~€~ÝÐG¸:ÐGÐGÑHÔHÐHØÐrM   c                 ó>   — |dk    r| S t          || |z  |z  ¦  «        S rG   )Úmax)r]   r�   s     rK   Úalign_dimension_to_blockr“   Ì   s*   € Ø�Q‚€ØˆÝˆz˜5 JÑ.°Ñ;Ñ<Ô<Ð<rM   c                 óŠ   — t          |¦  «        }t          | ¦  «        \  }}t          ||¦  «        › dt          ||¦  «        › �S )Nr`   )r�   rf   r“   )rŒ   r�   rd   re   s       rK   Úalign_resolution_valuer•   Ò   sK   € Ý% jÑ1Ô1€JÝ$ ZÑ0Ô0�M€Eˆ6Ý& u¨jÑ9Ô9ÐjÐjÕ<TÐU[Ð]gÑ<hÔ<hÐjÐjÐjrM   c                 ó  — ||k    r| S t          j        t          j        |¦  «        t           j        ¦  «        }|                     | ¦  «        r|                     || d¬¦  «        S t          j        d|| dt           j        ¬¦  «        S )NrH   )Úcountz\d+x\d+)r—   Úflags)rX   ÚcompileÚescapeÚ
IGNORECASEÚsearchÚsub)r‹   rŒ   Úaligned_resolutionÚexact_patterns       rK   Úalign_resolution_labelr    Ø   s�   € ØÐ'Ò'Ð'ØˆÝ”J�rœy¨Ñ4Ô4µb´mÑDÔD€MØ×Ò˜EÑ"Ô"ð EØ× Ò Ð!3°UÀ!Ð ÑDÔDÐDÝŒ6�*Ð0°%¸qÍÌÐVÑVÔVÐVrM   c                 óh   ‡— t          ‰¦  «        Š‰dk    r| S t          ˆfd„| D ¦   «         ¦  «        S )NrH   c              3   ód   •K  — | ]*\  }}t          |‰¦  «        }t          |||¦  «        |fV — Œ+d S r„   )r•   r    )Ú.0r‹   rŒ   rž   r�   s       €rK   ú	<genexpr>z+align_resolution_choices.<locals>.<genexpr>å   s^   øè è € ð %ð %áˆE�:Ý#9¸*ÀjÑ#QÔ#QÐõ 
   zÐ3EÑ	FÔ	FÐHZÐ[ð%ð %ð %ð %ð %ð %rM   )r�   r�   )rn   r�   s    `rK   Úalign_resolution_choicesr¥   á   sW   ø€ Ý% jÑ1Ô1€JØ�Q‚€Ø!Ð!Ý$ð %ð %ð %ð %à!3ð%ñ %ô %ñ ô ð rM   Fc                 ó\   — t          | rt          ng ¦  «        t          t          ¦  «        z   S r„   )rj   ÚDEFAULT_RESOLUTION_CHOICES_4KÚDEFAULT_RESOLUTION_CHOICES©Ú
include_4ks    rK   Úbuiltin_resolution_choicesr«   ì   s)   € Ý°ÐCÕ-Ð-ÀÑDÔDÅtÕLfÑGgÔGgÑgÐgrM   c                  óZ   — t          t          d¬¦  «        t          ¦   «         z   ¦  «        S )NTr©   ©r�   r«   r‚   rI   rM   rK   Úall_global_resolution_choicesr®   ð   s(   € Ý$Õ%?È4Ð%PÑ%PÔ%PÕSqÑSsÔSsÑ%sÑtÔtÐtrM   c                 óZ   — t          t          | ¬¦  «        t          ¦   «         z   ¦  «        S )Nr©   r­   )Úenable_4k_resolutionss    rK   Ú!default_global_resolution_choicesr±   ô   sA   € Ý$Õ%?ÐK`Ð%aÑ%aÔ%aõ  eCñ  eEô  eEñ  &Eñ  Fô  Fð  FrM   c                 ó„   — t          | t          ¦  «        r(|                      ¦   «                              ¦   «         dvS | dvS )N>   Ú0ÚnoÚoffÚfalse)Fr   )rV   rW   rZ   Úcasefoldr\   s    rK   Ú'keep_resolution_on_model_switch_enabledr¸   ø   s@   € Ý�%�ÑÔð KØ�{Š{‰}Œ}×%Ò%Ñ'Ô'Ð/JÐJÐJØ˜
Ð"Ð"rM   c                 óÄ   — t          | ¦  «        \  }}||z  }t                               ¦   «         D ]\  }}||k    r|c S Œt          t	          t          ¦  «        ¦  «        S r„   )rf   ÚGROUP_THRESHOLDSÚitemsÚnextÚreversed)Úresolution_strrd   re   Úpixel_countÚgroupÚ	thresholds         rK   Úcategorize_resolutionrÂ   þ   sl   € Ý$ ^Ñ4Ô4�M€Eˆ6Ø˜&‘.€Kå,×2Ò2Ñ4Ô4ð ð ÑˆˆyØ˜)Ò#Ð#ØˆLˆLˆLð $å•Õ)Ñ*Ô*Ñ+Ô+Ð+rM   c                 ó†  — t          | ¦  «                             ¦   «                              ¦   «         }|t          v rt          |         S |t          v rt          |         S |                     d¦  «        r
|d d…         }|                     ¦   «         sd S t          |¦  «        }|t                               ¦   «         v r|nd S )NÚpéÿÿÿÿ)	rW   rZ   r[   ÚGROUP_TIERSÚCATEGORY_ALIASESÚendswithÚisdigitrc   Úvalues)ÚcategoryrO   Útiers      rK   Ú_category_tierrÍ     s³   € Ý
ˆh‰-Œ-×
Ò
Ñ
Ô
×
%Ò
%Ñ
'Ô
'€CØ
�kÐÐÝ˜3ÔÐØ
ÕÐÐÝ Ô$Ð$Ø
‡|‚|�CÑÔð Ø�#�2�#ŒhˆØ�;Š;‰=Œ=ð ØˆtÝˆs‰8Œ8€DØ�;×-Ò-Ñ/Ô/Ð/Ð/ˆ4ˆ4°TÐ9rM   c                 ó–   — d„ }t          j        d|t          | ¦  «                             ¦   «                              ¦   «         ¦  «        S )Nc                 ó’   — t          |                      d¦  «        ¦  «        }|�t          |¦  «        n|                      d¦  «        S )Nr   )rÍ   rÀ   rW   )ÚmatchrÌ   s     rK   Úreplace_tokenz5_normalize_category_expression.<locals>.replace_token  s8   € Ý˜eŸkšk¨!™nœnÑ-Ô-ˆØ Ð,�s�4‰yŒyˆy°%·+²+¸a±.´.Ð@rM   z	[a-z0-9]+)rX   r�   rW   rZ   r[   )Ú
expressionrÑ   s     rK   Ú_normalize_category_expressionrÓ     sH   € ðAð Að Aõ Œ6�, ­s°:©¬×/DÒ/DÑ/FÔ/F×/LÒ/LÑ/NÔ/NÑOÔOÐOrM   c                 óŽ   — | €g S t          | t          ¦  «        r| gS t          | t          t          f¦  «        rd„ | D ¦   «         S g S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS rI   )rW   )r£   rÒ   s     rK   ú
<listcomp>z2normalize_category_expressions.<locals>.<listcomp>$  s   € ÐGÐGÐG J•�J‘”ÐGÐGÐGrM   )rV   rW   rj   rk   )Úcategory_expressionss    rK   Únormalize_category_expressionsrØ     s[   € ØÐ#Øˆ	ÝÐ&­Ñ,Ô,ð &Ø$Ð%Ð%ÝÐ&­­u¨Ñ6Ô6ð HØGÐGÐ2FÐGÑGÔGÐGØ€IrM   c                 óŠ   ‡— t          |¦  «        }|sdS | dk    rdS t          |          Št          ˆfd„|D ¦   «         ¦  «        S )NTrP   Fc              3   óV   •K  — | ]#}t          t          |¦  «        d i‰¦  «        V — Œ$dS )TN)r   rÓ   )r£   rÒ   rÌ   s     €rK   r¤   z#category_allowed.<locals>.<genexpr>/  sW   øè è € ð  Bð  BÐgqÕ(Õ*HÈÑ*TÔ*TÐVZÐ)[Ð]aÑbÔbð  Bð  Bð  Bð  Bð  Bð  BrM   )rØ   rÆ   Úany)rË   r×   ÚexpressionsrÌ   s      @rK   Úcategory_allowedrÝ   (  s~   ø€ Ý0Ð1EÑFÔF€KØð ØˆtØ�8ÒÐØˆuÝ�xÔ €DÝð  Bð  Bð  Bð  Bð  vAð  Bñ  Bô  Bñ  Bô  Bð  BrM   c                 óœ  ‡‡	— t          |¦  «        }|st          | ¦  «        S g }| D ]¤}t          |d         ¦  «        \  Š	Š|D ]‡}t          j        d|t          j        ¦  «        rt          nt          }t          ˆˆ	fd„| 	                    ¦   «         D ¦   «         d¦  «        }t          ||g¦  «        r|                     |¦  «          nŒˆŒ¥|S )NrH   z\b(?:2048|4096)sq\bc              3   ó4   •K  — | ]\  }}‰‰z  |k    ¯|V — Œd S r„   rI   )r£   rÀ   Úareare   rd   s      €€rK   r¤   z:filter_resolution_choices_by_categories.<locals>.<genexpr>;  s7   øè è € Ð`Ð`¡K E¨4ÈÐQWÉÐ[_ÒI_ÐI_˜%ÐI_ÐI_ÐI_ÐI_Ð`Ð`rM   rP   )rØ   rj   rf   rX   rœ   ÚIrº   ÚLEGACY_GROUP_THRESHOLDSr¼   r»   rÝ   rm   )
rn   r×   rÜ   ÚresultÚchoicerÒ   Ú
thresholdsrÀ   re   rd   s
           @@rK   Ú'filter_resolution_choices_by_categoriesræ   2  sñ   øø€ Ý0Ð1EÑFÔF€KØð (ÝÐ&Ñ'Ô'Ð'Ø€FØ$ð ð ˆÝ(¨°¬Ñ3Ô3‰ˆˆvØ%ð 	ð 	ˆJÝ-/¬YÐ7MÈzÕ[]Ô[_Ñ-`Ô-`Ð}Õ)Ð)Õf}ˆJÝÐ`Ð`Ð`Ð`Ð`°:×3CÒ3CÑ3EÔ3EÐ`Ñ`Ô`ÐbjÑkÔkˆEÝ ¨
 |Ñ4Ô4ð Ø—’˜fÑ%Ô%Ð%Ø�ðøð €MrM   c                 óò  ‡‡	‡
‡‡— |s| S t          | pd¦  «        s|d         d         S t          | ¦  «        \  }}||z  Š||z  Št          | ¦  «        Š	t          t          ¦  «        Š‰                     ‰	¦  «        Š
i }|D ]>}|                     t          |d         ¦  «        g ¦  «                             |¦  «         Œ?t          |ˆˆ	ˆ
fd„¬¦  «        }ˆˆfd„}t          ||         |¬¦  «        d         S )NÚ r   rH   c                 óž   •— t          ‰                     | ¦  «        ‰z
  ¦  «        t          t          |          t          ‰         z
  ¦  «        fS r„   )ÚabsÚindexrº   )rÀ   Úgroup_orderÚtarget_groupÚtarget_group_indexs    €€€rK   rL   z$closest_resolution.<locals>.<lambda>Q  sl   ø€ ½CÀ×@QÒ@QÐRWÑ@XÔ@XÐ[mÑ@mÑ<nÔ<nÕpsõ  uEð  FKô  uLõ  O_ð  `lô  Omñ  umñ  qnô  qnð  <o€ rM   rN   c                 óº   •— t          | d         ¦  «        \  }}t          t          j        ||z  ‰z  ¦  «        ¦  «        }t          ||z  ‰z
  ¦  «        ‰z  }||fS rG   )rf   rê   ÚmathÚlog)rä   rd   re   Úratio_scoreÚpixel_scoreÚtarget_pixelsÚtarget_ratios        €€rK   Úscorez!closest_resolution.<locals>.scoreS  s^   ø€ Ý(¨°¬Ñ3Ô3‰ˆˆvÝ�$œ( E¨F¡N°lÑ#BÑCÔCÑDÔDˆÝ˜5 6™>¨]Ñ:Ñ;Ô;¸mÑKˆØ˜KÐ'Ð'rM   )	r^   rf   rÂ   rj   rº   rë   Ú
setdefaultrm   Úmin)Útarget_resolutionrn   Útarget_widthÚtarget_heightÚgrouped_choicesrä   Úclosest_grouprö   rì   rí   rî   rô   rõ   s           @@@@@rK   Úclosest_resolutionrþ   B  sW  øøøøø€ Øð !Ø Ð ÝÐ0Ð6°BÑ7Ô7ð (Ø! !Ô$ QÔ'Ð'å"2Ð3DÑ"EÔ"EÑ€L�-Ø -Ñ/€LØ  =Ñ0€MÝ(Ð):Ñ;Ô;€LÝÕ'Ñ(Ô(€KØ$×*Ò*¨<Ñ8Ô8ÐØ€OØ$ð Xð XˆØ×"Ò"Õ#8¸À¼Ñ#CÔ#CÀRÑHÔH×OÒOÐPVÑWÔWÐWÐWÝ˜ð  .oð  .oð  .oð  .oð  .oð  .oð  pñ  pô  p€Mð(ð (ð (ð (ð (ð (õ ˆ˜}Ô-°5Ð9Ñ9Ô9¸!Ô<Ð<rM   c                 ó>  ‡ ‡‡‡	— t          ‰¦  «        Št          ‰                     d¦  «        d¦  «        pg }‰                     dd¦  «        }|r|}n¾|r t          t	          d¦  «        |z   ¦  «        }nœt          ‰¦  «        rnt          t          ‰¦  «                             ¦   «         d¬¦  «        Šˆfd„t          d¬	¦  «        D ¦   «         }t          ||z   t          ¦   «         z   ¦  «        }nt          t	          |¦  «        |z   ¦  «        }t          ||€‰                     d
d¦  «        n|¦  «        }|s|s$t          ‰                     d¦  «        ¦  «        pdndŠ	ˆ	ˆfd„|D ¦   «         }t          ‰ ¦  «        r†t          t          ‰‰ ¦  «        ¦  «        }|s*|s(t          ‰ |€‰                     d
d¦  «        n|¦  «        Š t!          ˆ fd„|D ¦   «         ¦  «        s!|s|rd Š n.|                     ‰ › d�‰ f¦  «         n|r|d         d         Š nd Š |‰ fS )NÚresolutionsúmodel.resolutionsÚlock_resolutionsFTr   )Údefaultc                 ój   •— g | ]/}t          j        t          |d          ¦  «        ¦  «        ‰k    ¯-|‘Œ0S ©rH   ©rð   Úprodrf   )r£   rä   Ú
max_pixelss     €rK   rÖ   z.resolve_resolution_choices.<locals>.<listcomp>f  s}   ø€ ð  Xð  Xð  X¨ÕbfÔbkÕl|ð  ~Dð  EFô  ~Gñ  mHô  mHñ  cIô  cIð  MWò  cWð  cW˜fð  cWð  cWð  cWrM   r©   Úvae_block_sizeé   Úresolution_minc                 ó–   •— g | ]E}t          j        t          |d          ¦  «        ¦  «        ‰k    ¯-t          ‰|d          ¦  «        °C|‘ŒFS r  ©rð   r  rf   Úresolution_dimension_error)r£   rä   ÚminimumÚ	model_defs     €€rK   rÖ   z.resolve_resolution_choices.<locals>.<listcomp>l  s{   ø€ ð  qð  qð  q VÅTÄYÕO_Ð`fÐghÔ`iÑOjÔOjÑEkÔEkÐovÒEvÐEvõ  @Zð  [dð  flð  mnô  foñ  @pô  @pÐEv˜&ÐEvÐEvÐEvrM   c              3   ó0   •K  — | ]}‰|d          k    V — ŒdS )rH   NrI   )r£   rŒ   Úcurrent_resolution_choices     €rK   r¤   z-resolve_resolution_choices.<locals>.<genexpr>r  s-   øè è € ÐcÐcÀ*Ð,°
¸1´Ò=ÐcÐcÐcÐcÐcÐcrM   z
 (Current)rH   )Úmigrate_resolution_definitionrs   Úgetr�   r±   Úavailable_resolution_budgetsr’   rÊ   r«   r‚   r¥   Úresolution_pixelsr^   Úboolr  r•   rÛ   rm   )
r  r  r°   r�   ÚcustomÚlockedrn   Úexceeds_limitsr  r  s
   ``      @@rK   Úresolve_resolution_choicesr  \  sç  øøøø€ Ý-¨iÑ8Ô8€IÝ)¨)¯-ª-¸Ñ*FÔ*FÐH[Ñ\Ô\ÐbÐ`b€FØ�]Š]Ð-¨uÑ5Ô5€FØð 	zØ#ÐÐØ	ð zÝ6Õ7XÐY]Ñ7^Ô7^ÐagÑ7gÑhÔhÐÐÝ	% iÑ	0Ô	0ð zÝÕ5°iÑ@Ô@×GÒGÑIÔIÐSTÐUÑUÔUˆ
ð Xð  Xð  Xð  XÕ3MÐY]Ð3^Ñ3^Ô3^ð  Xñ  Xô  XÐÝ6Ð7IÈFÑ7RÕUsÑUuÔUuÑ7uÑvÔvÐÐå6Õ7XÐYnÑ7oÔ7oÐrxÑ7xÑyÔyÐÝ1Ð2DÐmwÐmÀiÇmÂmÐTdÐfhÑFiÔFiÐFið  FPñ  Qô  QÐØKQÐuÐYnÐuÕ  §¢Ð/?Ñ!@Ô!@ÑAÔAÐFÀQøÐtu€Gð qð  qð  qð  qð  qÐ/Að  qñ  qô  qÐåÐ4Ñ5Ô5ð )ÝÕ8¸ÐD]Ñ^Ô^Ñ_Ô_ˆØð 	e˜nð 	eÝ(>Ð?Xð  BLð  BTÐZc×ZgÒZgÐhxÐz|ÑZ}ÔZ}ÐZ}ð  Zdñ  )eô  )eÐ%ÝÐcÐcÐcÐcÐPbÐcÑcÔcÑcÔcð 	qØð q˜ð qØ,0Ð)Ð)à"×)Ò)Ð.GÐ+SÐ+SÐ+SÐUnÐ*oÑpÔpÐpøØ	ð )Ø$6°qÔ$9¸!Ô$<Ð!Ð!à$(Ð!àÐ8Ð8Ð8rM   c                 óX   — t          | pd¦  «        sd S t          | |||¦  «        d         S )Nrè   rH   )r^   r  )Úsource_resolutionÚtarget_model_defr°   r�   s       rK   Úresolve_model_switch_resolutionr    s;   € ÝÐ0Ð6°BÑ7Ô7ð ØˆtÝ%Ð&7Ð9IÐK`ÐblÑmÔmÐnoÔpÐprM   c                 óp  ‡— i Š| D ]@}t          |d         ¦  «        }‰                     |g ¦  «                             |¦  «         ŒA‰sg g d fS ˆfd„t          D ¦   «         }|                     ¦   «          |€|r	|d         }nt          |¦  «        }|‰vr
|r|d         }|‰                     |g ¦  «        |fS )NrH   c                 ó   •— g | ]}|‰v ¯|‘Œ	S rI   rI   )r£   rÀ   Úgrouped_resolutionss     €rK   rÖ   z,group_resolution_choices.<locals>.<listcomp>Ž  s$   ø€ Ð\Ð\Ð\ %¸uÐH[Ð?[Ð?[˜Ð?[Ð?[Ð?[rM   r   )rÂ   r÷   rm   rº   Úreverser  )rn   Úselected_resolutionrŒ   rÀ   Úavailable_groupsÚselected_groupr"  s         @rK   Úgroup_resolution_choicesr'  …  só   ø€ ØÐØ(ð Eð Eˆ
Ý% j°¤mÑ4Ô4ˆØ×&Ò& u¨bÑ1Ô1×8Ò8¸ÑDÔDÐDÐDàð Ø�2�tˆ|Ðà\Ð\Ð\Ð\Õ+;Ð\Ñ\Ô\ÐØ×ÒÑÔÐàÐ"Ð'7Ð"Ø)¨!Ô,ˆˆå.Ð/BÑCÔCˆØÐ!4Ð4Ð4Ð9IÐ4Ø-¨aÔ0ˆNàÐ0×4Ò4°^ÀRÑHÔHÈ.ÐXÐXrM   c                 ó    ‡— ˆfd„| D ¦   «         S )Nc                 óF   •— g | ]}t          |d          ¦  «        ‰k    ¯|‘ŒS r  ©rÂ   )r£   rŒ   r&  s     €rK   rÖ   z!group_choices.<locals>.<listcomp>œ  s4   ø€ ÐvÐvÐv˜:Õ?TÐU_Ð`aÔUbÑ?cÔ?cÐguÒ?uÐ?uˆJÐ?uÐ?uÐ?urM   rI   )rn   r&  s    `rK   Úgroup_choicesr+  ›  s   ø€ ØvÐvÐvÐvÐ);ÐvÑvÔvÐvrM   c                 ó*   — || t          |¦  «        <   | S r„   r*  )Úlast_resolution_per_grouprŒ   s     rK   Úremember_last_resolutionr.  Ÿ  s   € ØCMÐÕ3°JÑ?Ô?Ñ@Ø$Ð$rM   c                 óˆ  — i }|                       di ¦  «                             ¦   «         D ]!}t          |¦  «        rt          ||¦  «         Œ"t          |                       d¦  «        ¦  «        rt          || d         ¦  «         i }||                       di ¦  «        k    r||d<   |                       d¦  «        dvrd|d<   |S )zLRekey remembered groups by dimensions, never rewrite saved generation sizes.r-  Úlast_resolution_choiceÚresolution_picker_mode)ÚpresetsÚmpr2  )r  rÊ   r^   r.  )ÚconfigÚ
rememberedrŒ   Úupdatess       rK   Úmigrate_resolution_preferencesr7  ¤  sÙ   € à€JØ—j’jÐ!<¸bÑAÔA×HÒHÑJÔJð =ð =ˆ
Ý˜zÑ*Ô*ð 	=Ý$ Z°Ñ<Ô<Ð<øÝ˜6Ÿ:š:Ð&>Ñ?Ô?Ñ@Ô@ð OÝ  ¨VÐ4LÔ-MÑNÔNÐNØ€GØ�V—Z’ZÐ ;¸RÑ@Ô@Ò@Ð@Ø/9ˆÐ+Ñ,Ø‡z‚zÐ*Ñ+Ô+Ð3DÐDÐDØ,5ˆÐ(Ñ)Ø€NrM   c                 óì   — | €dS t          | t          ¦  «        rt          | t          ¦  «        s| dk    r| S t          | ¦  «        r!t	          j        t          | ¦  «        ¦  «        S t          d¦  «        ‚)zEParse the public area shorthand; WxH does not constrain aspect ratio.Nr   zDResolution bounds must be positive integer pixels or "WIDTHxHEIGHT".)rV   rc   r  r^   rð   r  rf   ra   r\   s    rK   r  r  ´  st   € à€}ØˆtÝ�%�ÑÔð ¥j°½Ñ&=Ô&=ð À%È!Â)À)ØˆÝ˜5Ñ!Ô!ð 2ÝŒyÕ)¨%Ñ0Ô0Ñ1Ô1Ð1Ý
Ð[Ñ
\Ô
\Ð\rM   c                 óŒ  — t          | ¦  «        }|                     dd¦  «        }|�mt          |                     d¦  «        d¦  «        pg }t	          |t          t          d¬¦  «        |¦  «        z   ¦  «        |d<   |                     dd¦  «         n |r|                     d¦  «        r	d|vrd|d<   |                     d	¦  «        }t          |t           ¦  «        re|                     d
|                     d¦  «        ¦  «        }|                     d	¦  «         |�||d	<   d|v r|                     d|d         ¦  «         |S )zJExpand old menu rules without declaring their ceiling as model capability.Úresolutions_categoriesNr   r  Tr©   r  FÚresolution_budgetÚ
two_phasesr  Útwo_phases_tiledÚresolution_budget_tiled)	ÚdictÚpoprs   r  r�   ræ   r«   r÷   rV   )r  Úlegacy_listsrã   Úrulesr  ÚbudgetÚordinarys          rK   r  r  ¿  sƒ  € å�)‰_Œ_€FØ�JŠJÐ/°Ñ6Ô6€EØÐÝ-¨f¯jªj¸Ñ.GÔ.GÐI\Ñ]Ô]ÐcÐacˆÝ 9¸&ÕCjõ  lFð  RVð  lWñ  lWô  lWð  Y^ñ  D_ô  D_ñ  ;_ñ  !`ô  !`ˆˆ}ÑØ×ÒÐ,¨eÑ4Ô4Ð4Ð4Ø	ð *˜&Ÿ*š* ]Ñ3Ô3ð *Ð8JÐRXÐ8XÐ8XØ%)ˆÐ!Ñ"Ø�ZŠZÐ+Ñ,Ô,€FÝ�&�$ÑÔð UØ—:’:˜l¨F¯JªJ°yÑ,AÔ,AÑBÔBˆØ�
Š
Ð&Ñ'Ô'Ð'ØÐØ*2ˆFÐ&Ñ'Ø Ð'Ð'Ø×ÒÐ7¸Ð@RÔ9SÑTÔTÐTØ€MrM   c                 ó~   — |                       dd¦  «        dk     r d| v rt          | d         d¬¦  «        | d<   d S d S d S )NÚsettings_versionr   gffffff@ÚmodelT)rA  )r  r  )Úsettingss    rK   Úfix_resolution_settingsrI  Ô  sW   € Ø‡|‚|Ð&¨Ñ*Ô*¨TÒ1Ð1°gÀÐ6IÐ6IÝ9¸(À7Ô:KÐZ^Ð_Ñ_Ô_ˆ�ÑÐÐð 2Ð1Ð6IÐ6IrM   c                 óú   ‡ ‡— t          ‰                      d¦  «        d¦  «        pg }t          ‰                      d¦  «        ¦  «        pdŠˆˆ fd„t          |‰                      dd¦  «        ¦  «        D ¦   «         S )Nr   r  r  r   c                 ó„   •— g | ]<\  }}t          j        t          |¦  «        ¦  «        ‰k    ¯*t          ‰|¦  «        °:|‘Œ=S rI   r  )r£   Ú_r]   r  r  s      €€rK   rÖ   z,locked_resolution_values.<locals>.<listcomp>Ý  s¡   ø€ ð  Pð  Pð  P‘h�a˜ÕlpÔluõ  wGð  HMñ  wNô  wNñ  mOô  mOð  SZò  mZð  mZõ  c}ð  ~Gð  INñ  cOô  cOð  mZˆEð  mZð  mZð  mZrM   r	  r
  )rs   r  r  r¥   )r  Úchoicesr  s   ` @rK   Úlocked_resolution_valuesrN  Ú  s˜   øø€ Ý*¨9¯=ª=¸Ñ+GÔ+GÐI\Ñ]Ô]ÐcÐac€GÝ 	§¢Ð.>Ñ ?Ô ?Ñ@Ô@ÐEÀA€Gð Pð  Pð  Pð  Pð  PÕ":¸7ÀIÇMÂMÐRbÐdfÑDgÔDgÑ"hÔ"hð  Pñ  Pô  Pð  PrM   c                 óš   ‡ — t          dt          |¦  «        ¦  «        }ˆ fd„|D ¦   «         }|rd|› dd                     |¦  «        › d�ndS )N)rd   re   c                 óˆ   •— g | ]>\  }}‰                      d |z   ¦  «        ®|‰d |z            k    ¯,d|› d‰d |z            › d�‘Œ?S )Úmax_Nzmaximum z of z pixels©r  )r£   Úaxisr]   r  s      €rK   rÖ   z.resolution_dimension_error.<locals>.<listcomp>â  s·   ø€ ð  wð  wð  wÉ;È4ÐQVÐhq×huÒhuÐv|ð  @Dñ  wDñ  iEô  iEð  iQð  V[ð  ^gð  hnð  quñ  huô  ^vò  Vvð  VvÐF˜4ÐFÐF Y¨v¸©}Ô%=ÐFÐFÐFð  Vvð  Vvð  VvrM   úResolution z exceeds this model's z and ú.rè   )Úziprf   Újoin)r  rŒ   Ú
dimensionsÚexceededs   `   rK   r  r  à  s|   ø€ ÝÐ(Õ*:¸:Ñ*FÔ*FÑGÔG€Jð wð  wð  wð  wÐZdð  wñ  wô  w€HØX`ÐhÐT˜ÐTÐT¸7¿<º<ÈÑ;QÔ;QÐTÐTÐTÐTÐfhÐhrM   c                 ó~  — dD ]h}|                       |¦  «        }|�Ot          |¦  «        t          us'|t          |                       dd¦  «        ¦  «        k     rt	          |› d�¦  «        ‚ŒidD ]$}t          |                       |¦  «        ¦  «         Œ%t          |                       d¦  «        ¦  «        pd}dD ]N}t          |                       |¦  «        p|d	k    rt          nd ¦  «        }|�||k    rt	          d
|› d�¦  «        ‚ŒO|                       d¦  «        rt          | ¦  «        st	          d¦  «        ‚d S d S )N©Ú	max_widthÚ
max_heightr	  r
  zN must be an integer at least as large as vae_block_size, or null for no limit.)r;  r>  r  r  r   )r;  r>  r;  zresolution_min exceeds rU  r  zqLock Resolutions requires at least one custom resolution within the dimension limits and at or above the minimum.)r  Útyperc   r�   ra   r  ÚDEFAULT_RESOLUTION_BUDGETrN  )r  rO   r]   r  Úmaximums        rK   Úvalidate_resolution_definitionra  æ  sˆ  € Ø*ð uð uˆØ—’˜cÑ"Ô"ˆØÐ¥$ u¡+¤+µSÐ"8Ð"8¸EÕDXÐYb×YfÒYfÐgwÐy{ÑY|ÔY|ÑD}ÔD}Ò<}Ð<}Ý ÐsÐsÐsÑtÔtÐtøØQð .ð .ˆÝ˜)Ÿ-š-¨Ñ,Ô,Ñ-Ô-Ð-Ð-Ý 	§¢Ð.>Ñ ?Ô ?Ñ@Ô@ÐEÀA€GØ?ð ?ð ?ˆÝ# I§M¢M°#Ñ$6Ô$6Ð$}ÐX[Ð_rÒXrÐXrÕ;TÐ;TÐx|Ñ~Ô~ˆØÐ 7¨WÒ#4Ð#4ÝÐ=°sÐ=Ð=Ð=Ñ>Ô>Ð>øØ‡}‚}Ð'Ñ(Ô(ð NÕ1IÈ)Ñ1TÔ1Tð NÝð  Mñ  Nô  Nð  	NðNð Nð Nð NrM   c                 ó
  — t          | |¦  «        }|rt          |¦  «        ‚|                      d¦  «        rJt          | ¦  «        }|                     ¦   «         |vr't          dd                     |¦  «        z   ¦  «        ‚d S d S )Nr  z4Resolution is locked for this model. Choose one of: z, )r  ra   r  rN  r[   rW  )r  rŒ   ÚerrorÚalloweds       rK   Úvalidate_resolutionre  ö  s—   € Ý& y°*Ñ=Ô=€EØð  Ý˜ÑÔÐØ‡}‚}Ð'Ñ(Ô(ð jÝ*¨9Ñ5Ô5ˆØ×ÒÑÔ WÐ,Ð,ÝÐSÐVZ×V_ÒV_Ð`gÑVhÔVhÑhÑiÔiÐiðjð jà,Ð,rM   rH   rè   c                 ó°  — |                       d¦  «        s|                       d¦  «        rdS t          | |¦  «         t          j        t	          |¦  «        ¦  «        }t          |                       d¦  «        ¦  «        pd}t          | ||¦  «        }t          | ¦  «                              |t          | ¦  «        d         ¦  «        }||k     s||k    r�t          | |||¦  «        }|                      d¦  «        rdt          j        |d         ¦  «        › d	�nd
}	t          d|› dt          |         › d|d›d|d›d|dz  d›d|dz  d›d�|	z   ¦  «        ‚dS )zIAgent requests must fit the selected workflow; UI overrides are separate.Ú
audio_onlyÚmesh_outputsNr  r   r  rH  z Use settings z for this size.z$ Choose another resolution or model.rT  z# is outside the accepted range for z: ú,ú to z	 pixels (é@B ú.2fu   â€“z MP).)r  re  rð   r  rf   r  Úresolution_moder  r;  Úassess_resolutionr|   Údumpsra   ÚRESOLUTION_MODE_LABELS)
r  rŒ   Úguidance_phasesÚvideo_prompt_typeÚpixelsr  Úmoder`  Ú
assessmentÚhints
             rK   Úvalidate_agent_resolutionrw     só  € à‡}‚}�\Ñ"Ô"ð  i§m¢m°NÑ&CÔ&Cð ØˆÝ˜	 :Ñ.Ô.Ð.ÝŒYÕ'¨
Ñ3Ô3Ñ4Ô4€FÝ 	§¢Ð.>Ñ ?Ô ?Ñ@Ô@ÐEÀA€GÝ˜9 oÐ7HÑIÔI€DÝ*¨9Ñ5Ô5×9Ò9¸$Õ@QÐR[Ñ@\Ô@\Ð]fÔ@gÑhÔh€GØ�ÒÐ˜6 GÒ+Ð+Ý& y°*¸oÐO`ÑaÔaˆ
ØWa×WeÒWeÐfpÑWqÔWqð  ^ÐS¥¤
¨:°jÔ+AÑ BÔ BÐSÐSÐSÐSð  x^ˆÝð  T zð  Tð  TÕVlÐmqÔVrð  Tð  TÐv}ð  Tð  Tð  Tð  FMð  Tð  Tð  Tð  Zað  dmñ  Zmð  Tð  Tð  Tð  v}ð  @Iñ  vIð  Tð  Tð  Tð  Tð  W[ñ  [ñ  \ô  \ð  	\ð ,Ð+rM   c                 óØ   — dt          |                      d¦  «        ¦  «        pt          t          ¦  «        i}dD ].\  }}t          |                      |¦  «        ¦  «        }|�|||<   Œ/|S )zKNormalized recommendations; unlocked custom presets do not imply a ceiling.r  r;  ))r;  r  )r>  r=  )r  r  r_  )r  rã   rO   rt  r]   s        rK   r;  r;    sr   € àÕ*¨9¯=ª=Ð9LÑ+MÔ+MÑNÔNÐ~ÕRcÕd}ÑR~ÔR~Ð€FØhð !ð !‰	ˆˆTÝ! )§-¢-°Ñ"4Ô"4Ñ5Ô5ˆØÐØ ˆF�4‰LøØ€MrM   c                 óh  — t          | ¦  «        }i }|                      dd¦  «        }|                      dd¦  «        }d|v r|r|dk    s|d         |d<   |dk    rW|r|dk    rO|                     d¦  «        }|�||d<   |                      dd¦  «        r|                     d	|¦  «        }|�||d	<   |S )
NÚguidance_max_phasesr   Úlock_guidance_phasesFr  ri   r<  Úphase_2_spatial_tilingr=  )r;  r  )r  rC  rã   Ú
max_phasesr  ÚtwoÚtileds          rK   r  r    sÙ   € Ý˜yÑ)Ô)€FØ€FØ—’Ð4°aÑ8Ô8€JØ�]Š]Ð1°5Ñ9Ô9€FØ�FÐÐ FÐ¨z¸Qª¨Ø" 9Ô-ˆˆyÑØ�Q‚€ €¨*¸ª/¨/Ø�jŠj˜Ñ#Ô#ˆØˆ?Ø#&ˆF�<Ñ Ø�=Š=Ð1°5Ñ9Ô9ð 	3Ø—J’JÐ1°3Ñ7Ô7ˆEØÐ Ø-2�Ð)Ñ*Ø€MrM   c                 ó$  — |                       dd¦  «        r7|dk    r|                       d¦  «        dk    rdn|                       dd¦  «        }|                       dd¦  «        dk    r(|dv r$|                       dd¦  «        r|dk    sd	|v rd
S dS dS )Nr{  Fú2~rz  ri   r   )ri   Ú2r�  r|  Ú~r=  r<  r  rR  ©r  rq  rr  s      rK   rm  rm  +  sÊ   € Ø‡}‚}Ð+¨UÑ3Ô3ð UØ"1°TÒ"9Ð"9¸i¿mºmÐLaÑ>bÔ>bÐfgÒ>gÐ>g˜$˜$Ðmv×mzÒmzð  |Qð  STñ  nUô  nUˆØ‡}‚}Ð*¨AÑ.Ô.°!Ò3Ð3¸È>Ð8YÐ8YØ�=Š=Ð1°5Ñ9Ô9ð 	&¸ÐRVÒ?VÐ?VÐZ]ÐarÐZrÐZrØ%Ð%Øˆ|Øˆ9rM   c                 óì   — |dk    r9d}|                       dd¦  «        r
d|vr|dz  }nI|                     dd¦  «        }n2|dk    s|                       dd¦  «        s|                     dd¦  «        }||fS )Nr�  ri   r|  Frƒ  rè   )r  Úreplacer„  s      rK   Ú"normalize_phase_2_tiling_selectionr‡  5  sœ   € Ø˜$ÒÐØˆØ�=Š=Ð1°5Ñ9Ô9ð 	CØÐ+Ð+Ð+Ø! SÑ(Ð!øà 1× 9Ò 9¸#¸rÑ BÔ BÐÐØ	˜AÒ	Ð	 Y§]¢]Ð3KÈUÑ%SÔ%SÐ	Ø-×5Ò5°c¸2Ñ>Ô>ÐØÐ-Ð-Ð-rM   c                 óÆ  ‡‡‡— t          |¦  «        \  ŠŠ‰› d‰› �}t          | ¦  «        }t          | ||¦  «        }t          |                      d¦  «        ¦  «        pdŠ|                      dd¦  «        }|rt          | ¦  «        ng }ˆˆˆfd„|                     ¦   «         D ¦   «         }	||	v r|nt          t          |	¦  «        d¦  «        }
|t          ||                      dd	¦  «        ¦  «        |	rd
n|rdnddœ}t          | |¦  «        }|r	i |¥d|dœ¥S |r||vr	i |¥d|dœ¥S ‰‰z  ‰k     ri |¥ddi¥S |r|sd
|d<   |
�|
|d<   |
|k    rdddddœ|
         i|d<   |S )zGAssess an exact canvas without replacing it with a preset or MP target.r`   r  r   r  Fc                 ó@   •— g | ]\  }}‰‰‰z  cxk    r|k    ¯n n|‘ŒS rI   rI   )r£   rt  rC  re   r  rd   s      €€€rK   rÖ   z%assess_resolution.<locals>.<listcomp>K  sC   ø€ Ð`Ð`Ð`™˜˜v¸GÀuÈvÁ~Ð<_Ð<_Ò<_Ð<_ÐY_Ò<_Ð<_Ð<_Ð<_Ð<_�Ð<_Ð<_Ð<_rM   Nr	  r
  ÚrecommendedÚabove_recommendationÚunknown)Ú	requestedÚalignedÚstatusÚnot_allowed)r�  Úreason)r�  Úallowed_resolutionsr�  Úbelow_recommendationrt  rq  rH   ri   r�  ©r  r<  r=  rH  )rf   r  rm  r  r  rN  r»   r¼   Úiterr•   r  )r  rŒ   rq  rr  r�  ÚbudgetsÚcurrentr  rd  ÚmatchingÚselectedrã   Údimension_errorre   r  rd   s                @@@rK   rn  rn  B  s&  øøø€ å$ ZÑ0Ô0�M€Eˆ6ØÐ#Ð#˜6Ð#Ð#€IÝ*¨9Ñ5Ô5€GÝ˜i¨Ð:KÑLÔL€GÝ 	§¢Ð.>Ñ ?Ô ?Ñ@Ô@ÐEÀA€GØ�]Š]Ð-¨uÑ5Ô5€FØ5;ÐCÕ& yÑ1Ô1Ð1À€GØ`Ð`Ð`Ð`Ð`Ð`¨¯ª©¬Ð`Ñ`Ô`€HØ! XÐ-Ð-ˆwˆwµ4½¸X¹¼ÈÑ3MÔ3M€HØ$Õ1GÈ	ÐS\×S`ÒS`ÐaqÐsuÑSvÔSvÑ1wÔ1wð  U]ð  DSð  DQð  DQð  }Dð  cSð  cyð  cyð  JSð  Tð  T€FÝ0°¸IÑFÔF€OØð NØM�&ÐM M¸_ÐMÐMÐMÐMØð S�) 7Ð*Ð*ØR�&ÐR MÈ'ÐRÐRÐRÐRØˆv�~˜ÒÐØ;�&Ð;˜(Ð$:Ð;Ð;Ð;Øð )�gð )Ø(ˆˆxÑØÐØ!ˆˆv‰Ø�wÒÐØ"3ÀÐRSÐimÐ5nÐ5nÐowÔ5xÐ!yˆF�:ÑØ€MrM   c                 óª  ‡ — t          ‰ ¦  «        }t          ‰ ¦  «        d         ‰                      dd¦  «        dœ}|                     ˆ fd„dD ¦   «         ¦  «         d|v r|d         |d<   ‰                      d	¦  «        �t	          ‰ d	         ¦  «        |d	<   ‰                      d
¦  «        r$|                     dt          ‰ ¦  «        ¬¦  «         |S )Nr  r	  r
  )r;  r	  c                 óL   •— i | ] }‰                      |¦  «        ®|‰|         “Œ!S r„   rR  ©r£   rO   r  s     €rK   ú
<dictcomp>z'resolution_metadata.<locals>.<dictcomp>a  s4   ø€ ÐpÐpÐp¨3ÐQZ×Q^ÒQ^Ð_bÑQcÔQcÐQo�3˜	 #œÐQoÐQoÐQorM   r[  r=  r>  r  r  T)r  r’  )r  r;  r  Úupdater  rN  )r  r–  rã   s   `  rK   Úresolution_metadatar   ^  sú   ø€ Ý*¨9Ñ5Ô5€GÝ#4°YÑ#?Ô#?À	Ô#JÐ^g×^kÒ^kÐl|ð  Añ  _Bô  _Bð  Cð  C€FØ
‡M‚MÐpÐpÐpÐpÐ2MÐpÑpÔpÑqÔqÐqØ˜WÐ$Ð$Ø,3Ð4FÔ,GˆÐ(Ñ)Ø‡}‚}Ð%Ñ&Ô&Ð2Ý#4°YÐ?OÔ5PÑ#QÔ#QˆÐÑ Ø‡}‚}Ð'Ñ(Ô(ð fØ�Š tÕAYÐZcÑAdÔAdˆÑeÔeÐeØ€MrM   zDefault Modez
Two PhaseszTwo Phases with Tilingr”  )z1:1z4:3z3:4z3:2z2:3z16:9z9:16z21:9z9:21z4:1z1:4z8:3z3:8z4:7z7:4c                 óæ  ‡‡
— t          t          |                     d¦  «        ¦  «        \  }}t          j        | ¦  «        r| dk    st          ||¦  «        dk    rt          d¦  «        ‚t          |¦  «        Š
| dz  ||z  }}‰�)t          |gˆ
ˆfd„dd|z  fd|ffD ¦   «         z   ¦  «        }ˆ
fd	„t          j        ||z  ¦  «        t          j        ||z  ¦  «        fD ¦   «         \  }}	|› d
|	› �S )Nú:r   z-Megapixels and aspect ratio must be positive.rk  c                 óx   •— g | ]6\  }}‰                      |¦  «        ®t          ‰|         ‰¦  «        dz  |z  ‘Œ7S )Nri   )r  r“   )r£   rO   ÚfactorÚblockr  s      €€rK   rÖ   z,megapixels_to_resolution.<locals>.<listcomp>v  s�   ø€ ð  Cð  Cð  CÑ_jÐ_bÐdjð  dm÷  dqò  dqð  ruñ  dvô  dvð  dBÕ5°iÀ´nÀeÑLÔLÐPQÑQÐTZÑZð  dBð  dBð  dBrM   r\  rH   r]  c              3   ón   •K  — | ]/}t          ‰t          j        |‰z  d z   ¦  «        ‰z  ¦  «        V — Œ0dS )g      à?N)r’   rð   Úfloor)r£   r]   r¥  s     €rK   r¤   z+megapixels_to_resolution.<locals>.<genexpr>w  s]   øè è € ð  Jð  JÈU•S˜¥¤
¨5°5©=¸3Ñ+>Ñ ?Ô ?À%Ñ GÑHÔHð  Jð  Jð  Jð  Jð  Jð  JrM   r`   )	Úmaprc   rb   rð   Úisfiniterø   ra   r�   Úsqrt)Ú
megapixelsÚaspect_ratior�   r  Úratio_widthÚratio_heightrà   Úratiord   re   r¥  s      `      @rK   Úmegapixels_to_resolutionr°  o  s’  øø€ Ý #¥C¨×);Ò);¸CÑ)@Ô)@Ñ AÔ AÑ€K�ÝŒ=˜Ñ$Ô$ð J¨
°aª¨½3¸{ÈLÑ;YÔ;YÐ]^Ò;^Ð;^ÝÐHÑIÔIÐIÝ  Ñ,Ô,€EØ˜yÑ(¨+¸Ñ*Dˆ%€DØÐÝ�D�6ð  Cð  Cð  Cð  Cð  CÐp{Ð}~ð  BGñ  ~Gð  pHð  KWð  Y^ð  J_ð  o`ð  Cñ  Cô  Cñ  Cñ  Dô  Dˆð Jð  Jð  Jð  JÕW[ÔW`ÐaeÐhmÑamÑWnÔWnÕptÔpyÐz~ð  BGñ  {Gñ  qHô  qHð  WIð  Jñ  Jô  J�M€Eˆ6ØÐÐ�fÐÐÐrM   c                 ó  ‡ ‡‡‡‡— t          ‰ ¦  «        \  ŠŠt          j        ‰‰¦  «        }‰|z  › d‰|z  › �}d„ t          D ¦   «         }t	          ˆ fd„|D ¦   «         d¦  «        }t          j        d|¦  «        }|r|d         t          v r	|d         }n€|t          vrwd„ t          D ¦   «         Št          ‰ˆˆˆfd„¬	¦  «        }	t          ‰ 	                    d
d¦  «        ¦  «        dz  }
‰|
z
  ‰|
z   z  ‰|	         cxk    r‰|
z   ‰|
z
  z  k    rn n|	}|t          vr| 
                    ||f¦  «         ‰‰z  dz  }t          |dgd„ |D ¦   «         z   d„ t          ‰¦  «                             ¦   «         D ¦   «         z   ¦  «        }|r‰ 	                    d¦  «        sdn#t          ‰ 	                    d¦  «        ¦  «        pddz  }t          |dz   t          j        |dz  ¦  «        dz  ¦  «        }t!          ||‰ 	                    d
d¦  «        ‰¦  «        }t#          ˆfd„dD ¦   «         ¦  «        r2t          |t          j        t          |¦  «        ¦  «        dz  ¦  «        }||t          ||¦  «        t          |||¦  «        |dœS )Nr¢  c                 ó   — g | ]}||f‘ŒS rI   rI   ©r£   r]   s     rK   rÖ   z&megapixel_controls.<locals>.<listcomp>  s   € Ð8Ð8Ð8 ˆu�eˆnÐ8Ð8Ð8rM   c              3   ó.   •K  — | ]\  }}|‰k    ¯|V — Œd S r„   rI   )r£   r‹   r]   rŒ   s      €rK   r¤   z%megapixel_controls.<locals>.<genexpr>�  s1   øè è € ÐVÐV™L˜E 5À%È:ÒBUÐBU�%ÐBUÐBUÐBUÐBUÐVÐVrM   rè   z\((\d+:\d+)\)rH   c           	      ó²   — i | ]T}|t          |                     d ¦  «        d         ¦  «        t          |                     d ¦  «        d         ¦  «        z  “ŒUS )r¢  r   rH   )rc   rb   r³  s     rK   rž  z&megapixel_controls.<locals>.<dictcomp>ˆ  sR   € ÐhÐhÐhÐQV�%�˜UŸ[š[¨Ñ-Ô-¨aÔ0Ñ1Ô1µC¸¿ºÀCÑ8HÔ8HÈÔ8KÑ4LÔ4LÑLÐhÐhÐhrM   c                 ó^   •— t          t          j        ‰‰z  ‰|          z  ¦  «        ¦  «        S r„   )rê   rð   rñ   )r]   Úcommonre   rd   s    €€€rK   rL   z$megapixel_controls.<locals>.<lambda>‰  s)   ø€ µµD´H¸eÀf¹nÐPVÐW\ÔP]Ñ=]Ñ4^Ô4^Ñ0_Ô0_€ rM   rN   r	  r
  ri   rk  gš™™™™™¹?c                 ó\   — g | ])\  }}t          j        t          |¦  «        ¦  «        d z  ‘Œ*S ©rk  r  )r£   rL  r]   s      rK   rÖ   z&megapixel_controls.<locals>.<listcomp>�  s7   € ÐqÐqÐqÑRZÐRSÐUZ�tœyÕ)9¸%Ñ)@Ô)@ÑAÔAÀIÑMÐqÐqÐqrM   c                 ó   — g | ]}|d z  ‘ŒS r¹  rI   r³  s     rK   rÖ   z&megapixel_controls.<locals>.<listcomp>�  sD   € ð  uFð  uFð  uFð  LQÐuzð  ~Gñ  vGð  uFð  uFð  uFrM   r  i † r  gš™™™™™©?c              3   óF   •K  — | ]}‰                      |¦  «        d uV — Œd S r„   rR  r�  s     €rK   r¤   z%megapixel_controls.<locals>.<genexpr>”  s4   øè è € Ð
QÐ
Q¨cˆ9�=Š=˜ÑÔ TÐ)Ð
QÐ
QÐ
QÐ
QÐ
QÐ
QrM   r[  )r¯  Úratiosr]   r  r`  )rf   rð   ÚgcdÚASPECT_RATIOSr¼   rX   rœ   rø   r�   r  rm   r’   r  rÊ   r  Úceilr°  rÛ   r  )rŒ   rn   r  r°   Údivisorr¯  r¼  r‹   ÚnominalÚnearestÚ
half_blockr3  r`  r  Úlimit_resolutionr·  re   rd   s   ` `            @@@rK   Úmegapixel_controlsrÅ  {  sd  øøøøø€ Ý$ ZÑ0Ô0�M€Eˆ6ÝŒh�u˜fÑ%Ô%€GØ˜ÑÐ5Ð5 &¨GÑ"3Ð5Ð5€EØ8Ð8­-Ð8Ñ8Ô8€FåÐVÐVÐVÐVÐ,>ÐVÑVÔVÐXZÑ[Ô[€EÝŒiÐ(¨%Ñ0Ô0€GØð 	�7˜1”:¥Ð.Ð.Ø˜”
ˆˆØ	•mÐ	#Ð	#ð iÐhÕZgÐhÑhÔhˆÝ�fÐ"_Ð"_Ð"_Ð"_Ð"_Ð"_Ð`Ñ`Ô`ˆÝ)¨)¯-ª-Ð8HÈ"Ñ*MÔ*MÑNÔNÐQRÑRˆ
Ø�JÑ 6¨JÑ#6Ñ7¸6À'¼?ÐzÐzÒzÐzÈuÐWaÑOaÐflÐoyÑfyÑNzÒzÐzÐzÐzÐzØˆEØ•MÐ!Ð!Ø�Š�u˜e�nÑ%Ô%Ð%Ø	�‰˜)Ñ	#€BÝ�2�s�)ÐqÐqÐ^pÐqÑqÔqÑqð  uFð  uFõ  Uqð  r{ñ  U|ô  U|÷  UCò  UCñ  UEô  UEð  uFñ  uFô  uFñ  Fñ  Gô  G€GØ.ð  [°y·}²}ÐEWÑ7XÔ7Xð  [ˆvˆvÕ^oÐpy×p}Òp}ð  Oñ  qPô  qPñ  _Qô  _Qð  _[ð  U[ð  _hñ  h€GÝ�'˜D‘.¥$¤)¨G°d©NÑ";Ô";¸dÑ"BÑCÔC€GÝ/°¸À	ÇÂÐN^Ð`bÑ@cÔ@cÐenÑoÔoÐÝ
Ð
QÐ
QÐ
QÐ
QÐ5PÐ
QÑ
QÔ
QÑQÔQð ZÝ�g�tœyÕ)9Ð:JÑ)KÔ)KÑLÔLÈyÑXÑYÔYˆØ fµs¸2¸wÑ7GÔ7GÕTWÐX_ÐacÐelÑTmÔTmð  {Bð  Cð  Cð  CrM   c                 ó  — |                       d¦  «        s$|                       d¦  «        st          |¦  «        sdS t          | |||¦  «        }t          | ¦  «        }t	          | ||¦  «        }|                      |¦  «        }|rd|dz  d›dt
          |         › d�nd	}d	}	|d
         |d         k    rd|d         › d|d
         › d�}	|d         dk    rt          | |d
         ||¦  «        }|d         dk    r|	d|dz  d›d�z  }	ns|d         dk    r|	dz  }	na|d         dk    r|	|                      dd¦  «        z  }	n;|                      d|¦  «        |k    r!|	d|dz  d›dt
          |d                  › d�z  }	||	                     ¦   «         fS )Nrg  rh  )rè   rè   zRecommended Maximum: rk  rl  z MP (z).rè   rŽ  r�  zCanvas aligned from rj  z. r�  r�  r‹  z-This size exceeds the recommended maximum of z MP; quality may degrade.r“  z3This size is below the model's recommended minimum.r‘  z2Choose a resolution from this model's locked list.rt  z<This size exceeds the current mode's recommended maximum of z MP. z is recommended for this size.)r  r^   rn  r  rm  rp  rZ   )
r  rŒ   rq  rr  ru  r–  r—  rC  ÚsummaryÚwarnings
             rK   Úresolution_advicerÉ  ™  s#  € Ø‡}‚}�\Ñ"Ô"ð  i§m¢m°NÑ&CÔ&Cð ÕK^Ð_iÑKjÔKjð ØˆvÝ" 9¨j¸/ÐK\Ñ]Ô]€JÝ*¨9Ñ5Ô5€GÝ˜i¨Ð:KÑLÔL€GØ�[Š[˜Ñ!Ô!€FØjpÐxÐf f¨yÑ&8ÐfÐfÐfÕCYÐZaÔCbÐfÐfÐfÐfÐvx€GØ€GØ�)Ô 
¨;Ô 7Ò7Ð7Ø_¨°KÔ)@Ð_Ð_ÀjÐQZÔF[Ð_Ð_Ð_ˆà�(Ô˜}Ò,Ð,Ý& y°*¸YÔ2GÈÐZkÑlÔlˆ
Ø�(ÔÐ5Ò5Ð5ØÐtÀ6ÈIÑCUÐtÐtÐtÐtÑtˆˆØ	�HÔ	Ð!7Ò	7Ð	7ØÐHÑHˆˆØ	�HÔ	 Ò	.Ð	.Ø�:—>’> (Ð,`ÑaÔaÑaˆˆØ	�Š˜ Ñ	(Ô	(¨GÒ	3Ð	3Øð  zÐRXÐ[dÑRdð  zð  zð  zõ  pFð  GQð  RXô  GYô  pZð  zð  zð  zñ  	zˆØ�G—M’M‘O”OÐ#Ð#rM   )F)FN)rH   rè   r„   )Er|   rð   rx   rX   Úshared.match_archir   ÚRESOLUTION_FILEr_  r§   r¨   râ   rº   r@  r?  Úsortedr»   ÚinfÚGROUP_LABELSrÆ   rÇ   rw   r^   rf   Úprintrs   r‚   r…   r�   r�   r“   r•   r    r¥   r«   r®   r±   r¸   rÂ   rÍ   rÓ   rØ   rÝ   ræ   rþ   r  r  r'  r+  r.  r7  r  r  rI  rN  r  ra  re  rw  r;  r  rm  r‡  rn  r   rp  r¾  r°  rÅ  rÉ  rI   rM   rK   ú<module>rÐ     sÞ  ðà €€€Ø €€€Ø 	€	€	€	Ø 	€	€	€	à 8Ð 8Ð 8Ð 8Ð 8Ð 8ð %€à'Ð ð!ð !ð !Ð ð2+ð +ð +Ð ð` ØØØØØØØØØðð Ð ð /Ð-Ð.Ð Ø × Ò �WÑ Ô Ð Ø × Ò �WÑ Ô Ð Ø(Ð �Ñ Ø(Ð �Ñ Ø�4˜˜Ð/×5Ò5Ñ7Ô7Ð=QÐ=QÐRÑRÔRÑSÔSÐ Ø!œXÐ �Ñ Ø"¨XÀÐV^Ð_Ð_€ð ØØØØØØØØØØØðð €ð  Ø
ðð Ð ð
 Ð ðlð lð lð#ð #ð #ð KPð ð ð ð ð& 4CÈEð ð ð ð ð(ð ð ð
ð ð ðð ð ð=ð =ð =ðkð kð kðWð Wð Wðð ð ðhð hð hð hðuð uð uðFð Fð Fð Fð#ð #ð #ð,ð ,ð ,ð:ð :ð :ðPð Pð Pðð ð ðBð Bð Bðð ð ð =ð =ð =ð4 9ð  9ð  9ð  9ðFqð qð qð qðYð Yð Yð,wð wð wð%ð %ð %ð
ð ð ð ]ð ]ð ]ðð ð ð ð*`ð `ð `ðPð Pð Pðið ið iðNð Nð Nð jð jð jð\ð \ð \ð \ðð ð ðð ð ð$ð ð ð ð
.ð 
.ð 
.ðð ð ð ð8
ð 
ð 
ð &4À<Ðe}Ð~Ð~Ð Ø}Ð}Ð}€ð	ð 	ð 	ð 	ðCð Cð Cð Cð<$ð $ð $ð $ð $ð $rM   