§
    oF§j!5  ã                   ó<  — d dl Z d dlZd dlZd dlZd dlmZ dZg d¢Zg d¢Zdddd	d
ddddddœ
Z	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d „ Zd!„ Zd"„ Zd#„ Zd$„ Zd%„ Zd&„ Zd8d(„Zd)„ Zd8d*„Zd+„ Zd,„ Zd-„ Zd.„ Zd/„ Z d0„ Z!d1„ Z"d2„ Z#d9d3„Z$d9d4„Z%d5„ Z&d6„ Z'd7„ Z(dS ):é    N)Úmatch_nvidia_architecturezresolutions.json))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)Ú	1920x1088)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Ú4096pé   i@  i€  ià  i  iÐ  i8  i   ip  i   )Ú2kÚ4kc                 ó¢   — t          | t          ¦  «        o:t          j        d|                      ¦   «                              ¦   «         ¦  «        d uS )Nú\d+x\d+)Ú
isinstanceÚstrÚreÚ	fullmatchÚstripÚlower©Úvalues    ú+C:\Users\johnn\Wan2GP\shared\resolutions.pyÚis_resolution_valuerR   s   s=   € Ý�e�SÑ!Ô!Ða¥b¤l°:¸u¿{º{¹}¼}×?RÒ?RÑ?TÔ?TÑ&UÔ&UÐ]aÐ&aÐaó    c                 ó”   — |                       ¦   «                              dd¦  «        \  }}t          |¦  «        t          |¦  «        fS )NÚxé   )rN   ÚsplitÚint)rP   ÚwidthÚheights      rQ   Úparse_resolutionr[   w   s:   € Ø—K’K‘M”M×'Ò'¨¨QÑ/Ô/�M€Eˆ6Ýˆu‰:Œ:•s˜6‘{”{Ð"Ð"rS   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   rV   z," contains an invalid list of two elements: z?" contains a resolution value that is not in the format "WxH": )rI   ÚlistÚtupleÚlenrJ   rR   ÚappendrN   )Úresolution_choicesÚsource_nameÚprinterÚ
normalizedÚtups        rQ   Únormalize_resolution_choicesrh   |   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ØÐrS   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Ú	Exceptionrh   )Úresolution_filere   Úfrc   Úerf   s         rQ   Úload_custom_resolution_choicesrw   �   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)rl   © rS   rQ   Úreset_custom_resolution_cacher{   £   s   € àÐÐÐrS   c                 ó˜   — t          ¦   «         }g }| D ]6\  }}||v rŒ
|                     |¦  «         |                     ||f¦  «         Œ7|S ry   )ÚsetÚaddrb   )rc   ÚseenÚdedupedÚlabelÚ
resolutions        rQ   Údedupe_resolution_choicesrƒ   ¨   sc   € Ý‰5Œ5€DØ€GØ/ð ,ð ,ÑˆˆzØ˜ÐÐØØ�Š�ÑÔÐØ�Š˜˜zÐ*Ñ+Ô+Ð+Ð+Ø€NrS   c                 óT   — t          | ¦  «        } | dk     rt          d| › �¦  «        ‚| S )NrV   zInvalid resolution block size: )rX   Ú
ValueError)Ú
block_sizes    rQ   Únormalize_block_sizer‡   ³   s3   € Ý�Z‘”€JØ�A‚~€~ÝÐG¸:ÐGÐGÑHÔHÐHØÐrS   c                 ó>   — |dk    r| S t          || |z  |z  ¦  «        S ©NrV   )Úmax)rP   r†   s     rQ   Úalign_dimension_to_blockr‹   º   s*   € Ø�Q‚€ØˆÝˆz˜5 JÑ.°Ñ;Ñ<Ô<Ð<rS   c                 óŠ   — t          |¦  «        }t          | ¦  «        \  }}t          ||¦  «        › dt          ||¦  «        › �S )NrU   )r‡   r[   r‹   )r‚   r†   rY   rZ   s       rQ   Ú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ÐjrS   c                 ó  — ||k    r| S t          j        t          j        |¦  «        t           j        ¦  «        }|                     | ¦  «        r|                     || d¬¦  «        S t          j        d|| dt           j        ¬¦  «        S )NrV   )ÚcountrH   )r�   Úflags)rK   ÚcompileÚescapeÚ
IGNORECASEÚsearchÚsub)r�   r‚   Úaligned_resolutionÚexact_patterns       rQ   Ú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ÐVrS   c                 óh   ‡— t          ‰¦  «        Š‰dk    r| S t          ˆfd„| D ¦   «         ¦  «        S )NrV   c              3   ód   •K  — | ]*\  }}t          |‰¦  «        }t          |||¦  «        |fV — Œ+d S ry   )r�   r˜   )Ú.0r�   r‚   r–   r†   s       €rQ   ú	<genexpr>z+align_resolution_choices.<locals>.<genexpr>Ó   s^   øè è € ð %ð %áˆE�:Ý#9¸*ÀjÑ#QÔ#QÐõ 
   zÐ3EÑ	FÔ	FÐHZÐ[ð%ð %ð %ð %ð %ð %rS   )r‡   rƒ   )rc   r†   s    `rQ   Úalign_resolution_choicesr�   Ï   sW   ø€ Ý% jÑ1Ô1€JØ�Q‚€Ø!Ð!Ý$ð %ð %ð %ð %à!3ð%ñ %ô %ñ ô ð rS   Fc                 ó\   — t          | rt          ng ¦  «        t          t          ¦  «        z   S ry   )r_   ÚDEFAULT_RESOLUTION_CHOICES_4KÚDEFAULT_RESOLUTION_CHOICES©Ú
include_4ks    rQ   Úbuiltin_resolution_choicesr£   Ú   s)   € Ý°ÐCÕ-Ð-ÀÑDÔDÅtÕLfÑGgÔGgÑgÐgrS   c                  óZ   — t          t          d¬¦  «        t          ¦   «         z   ¦  «        S )NTr¡   ©rƒ   r£   rw   rz   rS   rQ   Úall_global_resolution_choicesr¦   Þ   s(   € Ý$Õ%?È4Ð%PÑ%PÔ%PÕSqÑSsÔSsÑ%sÑtÔtÐtrS   c                 óZ   — t          t          | ¬¦  «        t          ¦   «         z   ¦  «        S )Nr¡   r¥   )Úenable_4k_resolutionss    rQ   Ú!default_global_resolution_choicesr©   â   sA   € Ý$Õ%?ÐK`Ð%aÑ%aÔ%aõ  eCñ  eEô  eEñ  &Eñ  Fô  Fð  FrS   c                 ó„   — t          | t          ¦  «        r(|                      ¦   «                              ¦   «         dvS | dvS )N>   Ú0ÚnoÚoffÚfalse)Fr   )rI   rJ   rM   ÚcasefoldrO   s    rQ   Ú'keep_resolution_on_model_switch_enabledr°   æ   s@   € Ý�%�ÑÔð KØ�{Š{‰}Œ}×%Ò%Ñ'Ô'Ð/JÐJÐJØ˜
Ð"Ð"rS   c                 óÄ   — t          | ¦  «        \  }}||z  }t                               ¦   «         D ]\  }}||k    r|c S Œt          t	          t          ¦  «        ¦  «        S ry   )r[   ÚGROUP_THRESHOLDSÚitemsÚnextÚreversed)Úresolution_strrY   rZ   Úpixel_countÚgroupÚ	thresholds         rQ   Úcategorize_resolutionrº   ì   sl   € Ý$ ^Ñ4Ô4�M€Eˆ6Ø˜&‘.€Kå,×2Ò2Ñ4Ô4ð ð ÑˆˆyØ˜)Ò#Ð#ØˆLˆLˆLð $å•Õ)Ñ*Ô*Ñ+Ô+Ð+rS   c                 óZ  — t          | ¦  «                             ¦   «                              ¦   «         }|t          v rt          |         S |                     d¦  «        r
|d d…         }|                     ¦   «         sd S t          |¦  «        }|t                               ¦   «         v r|nd S )NÚpéÿÿÿÿ)	rJ   rM   rN   ÚCATEGORY_ALIASESÚendswithÚisdigitrX   ÚGROUP_TIERSÚvalues)ÚcategoryÚkeyÚtiers      rQ   Ú_category_tierrÆ   ö   s�   € Ý
ˆh‰-Œ-×
Ò
Ñ
Ô
×
%Ò
%Ñ
'Ô
'€CØ
ÕÐÐÝ Ô$Ð$Ø
‡|‚|�CÑÔð Ø�#�2�#ŒhˆØ�;Š;‰=Œ=ð ØˆtÝˆs‰8Œ8€DØ�;×-Ò-Ñ/Ô/Ð/Ð/ˆ4ˆ4°TÐ9rS   c                 ó–   — d„ }t          j        d|t          | ¦  «                             ¦   «                              ¦   «         ¦  «        S )Nc                 ó’   — t          |                      d¦  «        ¦  «        }|�t          |¦  «        n|                      d¦  «        S )Nr   )rÆ   r¸   rJ   )ÚmatchrÅ   s     rQ   Úreplace_tokenz5_normalize_category_expression.<locals>.replace_token  s8   € Ý˜eŸkšk¨!™nœnÑ-Ô-ˆØ Ð,�s�4‰yŒyˆy°%·+²+¸a±.´.Ð@rS   z	[a-z0-9]+)rK   r•   rJ   rM   rN   )Ú
expressionrÊ   s     rQ   Ú_normalize_category_expressionrÌ     sH   € ðAð Að Aõ Œ6�, ­s°:©¬×/DÒ/DÑ/FÔ/F×/LÒ/LÑ/NÔ/NÑOÔOÐOrS   c                 óŽ   — | €g S t          | t          ¦  «        r| gS t          | t          t          f¦  «        rd„ | D ¦   «         S g S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS rz   )rJ   )r›   rË   s     rQ   ú
<listcomp>z2normalize_category_expressions.<locals>.<listcomp>  s   € ÐGÐGÐG J•�J‘”ÐGÐGÐGrS   )rI   rJ   r_   r`   )Úcategory_expressionss    rQ   Únormalize_category_expressionsrÑ   
  s[   € ØÐ#Øˆ	ÝÐ&­Ñ,Ô,ð &Ø$Ð%Ð%ÝÐ&­­u¨Ñ6Ô6ð HØGÐGÐ2FÐGÑGÔGÐGØ€IrS   c                 óz   ‡— t          |¦  «        }|sdS t          |          Št          ˆfd„|D ¦   «         ¦  «        S )NTc              3   óV   •K  — | ]#}t          t          |¦  «        d i‰¦  «        V — Œ$dS )TN)r   rÌ   )r›   rË   rÅ   s     €rQ   rœ   z#category_allowed.<locals>.<genexpr>  sW   øè è € ð  Bð  BÐgqÕ(Õ*HÈÑ*TÔ*TÐVZÐ)[Ð]aÑbÔbð  Bð  Bð  Bð  Bð  Bð  BrS   )rÑ   rÁ   Úany)rÃ   rÐ   ÚexpressionsrÅ   s      @rQ   Úcategory_allowedrÖ     sn   ø€ Ý0Ð1EÑFÔF€KØð ØˆtÝ�xÔ €DÝð  Bð  Bð  Bð  Bð  vAð  Bñ  Bô  Bñ  Bô  Bð  BrS   c                 ó    ‡— ˆfd„| D ¦   «         S )Nc                 óZ   •— g | ]'}t          t          |d          ¦  «        ‰¦  «        ¯%|‘Œ(S ©rV   )rÖ   rº   )r›   r‚   rÐ   s     €rQ   rÏ   z;filter_resolution_choices_by_categories.<locals>.<listcomp>  sG   ø€ ð ð ð àÝÕ1°*¸Q´-Ñ@Ô@ÐBVÑWÔWðØðð ð rS   rz   )rc   rÐ   s    `rQ   Ú'filter_resolution_choices_by_categoriesrÚ     s.   ø€ ðð ð ð à,ðñ ô ð rS   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   rV   c                 óž   •— t          ‰                     | ¦  «        ‰z
  ¦  «        t          t          |          t          ‰         z
  ¦  «        fS ry   )ÚabsÚindexr²   )r¸   Úgroup_orderÚtarget_groupÚtarget_group_indexs    €€€rQ   ú<lambda>z$closest_resolution.<locals>.<lambda>3  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€ rS   )rÄ   c                 óº   •— t          | d         ¦  «        \  }}t          t          j        ||z  ‰z  ¦  «        ¦  «        }t          ||z  ‰z
  ¦  «        ‰z  }||fS r‰   )r[   rÞ   ÚmathÚlog)ÚchoicerY   rZ   Úratio_scoreÚpixel_scoreÚtarget_pixelsÚtarget_ratios        €€rQ   Úscorez!closest_resolution.<locals>.score5  s^   ø€ Ý(¨°¬Ñ3Ô3‰ˆˆvÝ�$œ( E¨F¡N°lÑ#BÑCÔCÑDÔDˆÝ˜5 6™>¨]Ñ:Ñ;Ô;¸mÑKˆØ˜KÐ'Ð'rS   )	rR   r[   rº   r_   r²   rß   Ú
setdefaultrb   Úmin)Útarget_resolutionrc   Útarget_widthÚtarget_heightÚgrouped_choicesrç   Úclosest_grouprì   rà   rá   râ   rê   rë   s           @@@@@rQ   Úclosest_resolutionrô   $  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¸!Ô<Ð<rS   c                 ó^  ‡ — |                      dd ¦  «        }|�[t          |d¦  «        pg }|                      dd ¦  «        �2t          |t          t	          ¦   «         |d         ¦  «        z   ¦  «        }nH|                      dd ¦  «        �#t          t	          ¦   «         |d         ¦  «        }nt          |¦  «        }t          ||€|                      dd¦  «        n|¦  «        }|sg d fS ‰ �,t          ˆ fd„|D ¦   «         ¦  «        st          ‰ |¦  «        Š n‰ €|r|d         d         Š |‰ fS )	NÚresolutionszmodel.resolutionsÚresolutions_categoriesÚvae_block_sizeé   c              3   ó0   •K  — | ]}‰|d          k    V — ŒdS )rV   Nrz   )r›   r‚   Úcurrent_resolution_choices     €rQ   rœ   z-resolve_resolution_choices.<locals>.<genexpr>L  sI   øè è € ð  9Jð  9JÐhrÐ9RÐV`ÐabÔVcÒ9cð  9Jð  9Jð  9Jð  9Jð  9Jð  9JrS   r   rV   )	Úgetrh   rƒ   rÚ   r¦   r©   r�   rÔ   rô   )rû   Ú	model_defr¨   r†   Úmodel_resolutionsrc   s   `     rQ   Úresolve_resolution_choicesrÿ   >  sÁ  ø€ Ø!Ÿš m°TÑ:Ô:ÐØÐ$Ý9Ð:KÐM`ÑaÔaÐgÐegÐØ�=Š=Ð1°4Ñ8Ô8ÐDÝ!:Ð;MÕPwõ  yVñ  yXô  yXð  Zcð  d|ô  Z}ñ  Q~ô  Q~ñ  <~ñ  "ô  "ÐøØ	�ŠÐ/°Ñ	6Ô	6Ð	BÝDÕEbÑEdÔEdÐfoð  qIô  gJñ  Kô  KÐÐå>Ð?TÑUÔUÐÝ1Ð2DÐmwÐmÀiÇmÂmÐTdÐfhÑFiÔFiÐFið  FPñ  Qô  QÐàð Ø�4ˆxˆØ Ð,µSð  9Jð  9Jð  9Jð  9Jð  wIð  9Jñ  9Jô  9Jñ  6Jô  6JÐ,Ý$6Ð7PÐRdÑ$eÔ$eÐ!Ð!Ø	"Ð	*Ð/AÐ	*Ø$6°qÔ$9¸!Ô$<Ð!àÐ8Ð8Ð8rS   c                 óX   — t          | pd¦  «        sd S t          | |||¦  «        d         S )NrÜ   rV   )rR   rÿ   )Úsource_resolutionÚtarget_model_defr¨   r†   s       rQ   Úresolve_model_switch_resolutionr  T  s;   € ÝÐ0Ð6°BÑ7Ô7ð ØˆtÝ%Ð&7Ð9IÐK`ÐblÑmÔmÐnoÔpÐprS   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 )NrV   c                 ó   •— g | ]}|‰v ¯|‘Œ	S rz   rz   )r›   r¸   Úgrouped_resolutionss     €rQ   rÏ   z,group_resolution_choices.<locals>.<listcomp>c  s$   ø€ Ð\Ð\Ð\ %¸uÐH[Ð?[Ð?[˜Ð?[Ð?[Ð?[rS   r   )rº   rí   rb   r²   Úreverserü   )rc   Úselected_resolutionr‚   r¸   Úavailable_groupsÚselected_groupr  s         @rQ   Úgroup_resolution_choicesr  Z  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ÐXrS   c                 ó    ‡— ˆfd„| D ¦   «         S )Nc                 óF   •— g | ]}t          |d          ¦  «        ‰k    ¯|‘ŒS rÙ   ©rº   )r›   r‚   r
  s     €rQ   rÏ   z!group_choices.<locals>.<listcomp>q  s4   ø€ ÐvÐvÐv˜:Õ?TÐU_Ð`aÔUbÑ?cÔ?cÐguÒ?uÐ?uˆJÐ?uÐ?uÐ?urS   rz   )rc   r
  s    `rQ   Úgroup_choicesr  p  s   ø€ ØvÐvÐvÐvÐ);ÐvÑvÔvÐvrS   c                 ó*   — || t          |¦  «        <   | S ry   r  )Úlast_resolution_per_groupr‚   s     rQ   Úremember_last_resolutionr  t  s   € ØCMÐÕ3°JÑ?Ô?Ñ@Ø$Ð$rS   )F)FN))rq   rå   rm   rK   Úshared.match_archir   ÚRESOLUTION_FILErŸ   r    r²   rÁ   r¾   rl   rR   r[   Úprintrh   rw   r{   rƒ   r‡   r‹   r�   r˜   r�   r£   r¦   r©   r°   rº   rÆ   rÌ   rÑ   rÖ   rÚ   rô   rÿ   r  r  r  r  rz   rS   rQ   ú<module>r     sÍ  ðØ €€€Ø €€€Ø 	€	€	€	Ø 	€	€	€	à 8Ð 8Ð 8Ð 8Ð 8Ð 8ð %€ð!ð !ð !Ð ð2+ð +ð +Ð ð\ ØØØØØØØØØðð Ð ð ØØØØØØØØØðð €ð Ø
ðð Ð ð
 Ð ðbð bð bð#ð #ð #ð
 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ð,qð qð qð qðYð Yð Yð,wð wð wð%ð %ð %ð %ð %rS   