§
    0ÛÀj5/  ã                   óò   — d Z ddlZddlmZmZmZ ej                             d¦  «        ZdZ	dZ
dZdZd	Zd
\  ZZdZdZdZdZdZdZdZdZdZd\  ZZi Zd„ Zd„ Z G d„ d¦  «        Zdefd„Z de!de"fd„Z#d„ Z$dS )uë  ss_carousel_lib.py â€” ENGINE STANDAR carousel StudioSoft (FIXED 16 Sep 2026).

Mengikuti standar kartu Threads SS yang sudah di-approve Bos (gen_uky_center.py):
  â€¢ RATA KIRI
  â€¢ SATU BLOK DI TENGAH VERTIKAL (jarak atas = jarak bawah) -> tidak ada void
    besar di bawah seperti versi lama
  â€¢ TANPA garis separator (tick "-----" dihapus)
  â€¢ Judul Poppins-Bold 85 / body Poppins-Regular 36 / sub 30 â€” konsisten semua slide
  â€¢ Line advance = standar Bos: judul size+8, body size+12 (JANGAN pakai metrics
    penuh 1.41Ã—size â€” bikin kendur & overflow ke footer)
  â€¢ Judul auto-fit: ukuran diturunkan otomatis supaya tidak melebihi lebar kanvas

WARNA (perintah Bos 16 Sep 2026): BIRU TUA #122B63 sebagai background (atau sebagai
teks kalau background putih â€” versi bergantian).

AUTO-FIT: kalau isi slide kepanjangan, engine mengecilkan jarak (air) lalu ukuran
huruf bertahap sampai pasti tidak menabrak footer.

Cara pakai:
    from ss_carousel_lib import Slide, SKY
    s = Slide(num=1, total=4, tag="", bg=(18, 43, 99))
    s.title(["CEPAT =", "RANKING"])
    s.para("Kecepatan website penentu halaman pertama.", size=30)
    s.bullets(["LCP: loading konten utama", "INP: respons terhadap klik"])
    s.render("01.png", out_dir="...")
é    N)ÚImageÚ	ImageDrawÚ	ImageFontz~/.fonts)é   éG   éa   )é   é+   éc   )é8   é½   éø   )éÿ   r   r   )é%   r   éë   )i8  iF  éF   éU   é$   é   é.   é(   é4   é   )é–   iÄ  c                 ó¶   — | |f}|t           vr@t          j        t          j                             t          | ¦  «        |¦  «        t           |<   t           |         S ©N)Ú_cacher   ÚtruetypeÚosÚpathÚjoinÚFONT_DIR)ÚnameÚsizeÚkeys      úB/home/mantapman/.hermes/profiles/atun/workspace/ss_carousel_lib.pyÚFr'   7   sF   € Ø�ˆ,€CØ
•&ÐÐÝÔ(­¬¯ªµhÀÑ)EÔ)EÀtÑLÔL�ˆs‰Ý�#Œ;Ðó    c                 ó  — g d}}|                       ¦   «         D ]P}|›d|›�                     ¦   «         }|                     |¦  «        |k    r|}Œ7|r|                     |¦  «         |}ŒQ|r|                     |¦  «         |S )NÚ Ú )ÚsplitÚstripÚ	getlengthÚappend)ÚtextÚfontÚmax_wÚlinesÚcurÚwordÚtests          r&   Úwrapr7   >   sœ   € Ø�Rˆ3€EØ—
’
‘”ð ð ˆØ˜3˜3  Ð%×,Ò,Ñ.Ô.ˆØ�>Š>˜$ÑÔ 5Ò(Ð(ØˆCˆCàð "Ø—’˜SÑ!Ô!Ð!ØˆCˆCØ
ð Ø�Š�SÑÔÐØ€Lr(   c                   óŽ   — e Zd ZdZddeddedfd„Zeddfd	„Ze	e
d
fd„Zedddfd„Zeddfd„Zddeefd„Zd„ Zdd„Zd„ Zdd„ZdS )ÚSlidezISatu kartu. Semua blok dikumpulkan dulu, baru digambar terpusat vertikal.é   z#edukasikesehatanÚ
STUDIOSOFTzwww.studiosoft.idNc	                 óÀ   — || _         || _        |p|| _        t          |¦  «        t          |¦  «        |c| _        | _        | _        ||c| _        | _        g | _	        d S r   )
ÚbgÚfgÚ	dot_colorÚstrÚnumÚtotalÚtagÚbrandÚfooter_leftÚitems)	ÚselfrA   rB   rC   r=   rD   rE   r>   r?   s	            r&   Ú__init__zSlide.__init__P   s[   € ð ˆŒØˆŒØ"˜ bˆŒÝ),¨S©¬µ3°u±:´:¸sÐ&ˆŒ�$”*˜dœhØ',¨kÐ$ˆŒ
�DÔ$ØˆŒ
ˆ
ˆ
r(   é0   c                 ó„   — t          |t          ¦  «        r|g}| j                             d|||p| j        |dœ¦  «         | S )zHparts: str atau list; tiap elemen jadi satu baris (boleh (teks, warna)).r3   ©ÚkindÚpartsr$   Údefault_colorÚafter)Ú
isinstancer@   rF   r/   r>   )rG   rM   r$   rO   Úcolors        r&   ÚtitlezSlide.title[   s[   € å�e�SÑ!Ô!ð 	Ø�GˆEØŒ
×Ò 7°UÀDØ,1Ð,<°T´WÀuðNð Nñ 	Oô 	Oð 	Oàˆr(   é   c                 óv   — t          |t          ¦  «        r|g}| j                             d||||dœ¦  «         | S )Nr3   rK   )rP   r@   rF   r/   )rG   rM   r$   rQ   rO   s        r&   Úh2zSlide.h2c   sT   € Ý�e�SÑ!Ô!ð 	Ø�GˆEØŒ
×Ò 7°UÀDØ,1¸EðCð Cñ 	Dô 	Dð 	Dàˆr(   r   Fc           	      óV   — | j                              d|||p| j        ||dœ¦  «         | S )NÚpara)rL   r0   r$   rQ   ÚboldrO   )rF   r/   r>   )rG   r0   r$   rQ   rO   rX   s         r&   rW   z
Slide.paraj   sD   € ØŒ
×Ò 6°4ÀØ$)Ð$4¨T¬W¸dÈUðTð Tñ 	Uô 	Uð 	Uàˆr(   c                 ó6   — |                       ||||d¬¦  «        S )NT)r$   rQ   rO   rX   )rW   )rG   r0   r$   rQ   rO   s        r&   Úleadz
Slide.leado   s   € Ø�yŠy˜ D°¸UÈˆyÑNÔNÐNr(   é   c           	      ó`   — d„ |D ¦   «         }| j                              d|||||dœ¦  «         | S )u@   pairs: [(nama, keterangan)] atau [nama] â€” keterangan boleh "".c                 ó`   — g | ]+}t          |t          ¦  «        r|d fn|d         |d         f‘Œ,S )r*   r   é   )rP   r@   )Ú.0Úps     r&   ú
<listcomp>z!Slide.bullets.<locals>.<listcomp>t   s;   € ÐOÐOÐOÀA�: a­Ñ-Ô-Ð?��B��°A°a´D¸!¸A¼$°<ÐOÐOÐOr(   Úbullets)rL   ÚpairsÚ	name_sizeÚ	desc_sizeÚgaprO   ©rF   r/   )rG   rc   rO   rf   rd   re   Únorms          r&   rb   zSlide.bulletsr   sP   € àOÐOÈÐOÑOÔOˆØŒ
×Ò 9°tÈ)Ø(1¸#ÈðOð Oñ 	Pô 	Pð 	Pàˆr(   c                 ó@   — | j                              d|dœ¦  «         | S )Nrf   )rL   Úpxrg   )rG   rj   s     r&   rf   z	Slide.gapy   s%   € ØŒ
×Ò 5°Ð3Ð3Ñ4Ô4Ð4Øˆr(   ç      ð?c                 óØ  ‡‡— g }| j         D �]\Š‰d         }|dk    r0|                     dt          ‰d         |z  ¦  «        ddœ¦  «         ŒAt          ‰                     dd¦  «        |z  ¦  «        }|dk    rºˆfd„‰d	         D ¦   «         }t	          d
t          ‰d         |z  ¦  «        ¦  «        }|dk    r7t          d|¦  «        Št          ˆfd„|D ¦   «         ¦  «        rn|dz  }|dk    °7t          d|¦  «        Š|dz   }|                     d|‰|||t          |¦  «        z  dœ¦  «         �Œ'|dk    r®t	          d
t          ‰d         |z  ¦  «        ¦  «        }t          ‰                     d¦  «        rdnd|¦  «        Št          ‰d         ‰t          dt          z  z
  ¦  «        }	|d
z   }|                     d|	‰‰d         |||t          |	¦  «        z  dœ¦  «         �ŒÛ|dk    �rzt	          d
t          ‰d         |z  ¦  «        ¦  «        }
t	          d
t          ‰d         |z  ¦  «        ¦  «        }t          d|
¦  «        t          d|¦  «        }}|
dz   |d
z   }}t          ‰d         |z  ¦  «        }t          t          z
  t          z
  t          z
  }g }‰d         D ]f\  }}t          |||¦  «        }|rt          |||¦  «        ng }|                     |||t          |¦  «        z  |t          |¦  «        z  z   f¦  «         Œgt          d„ |D ¦   «         ¦  «        |t	          dt          |¦  «        dz
  ¦  «        z  z   }|                     d||||||||dœ	¦  «         �Œ^|S ) NrL   rf   rj   r   )rL   ÚhrO   rO   r3   c                 ón   •— g | ]1}t          |t          ¦  «        r|d          |d         fn	|‰d         f‘Œ2S )r   r^   rN   )rP   Útuple)r_   r`   Úits     €r&   ra   z Slide._build.<locals>.<listcomp>‡   sR   ø€ ð -ð -ð -Øõ (2°!µUÑ';Ô';ÐY˜˜!œ˜a œd�|�|À!ÀRÈÔEXÐAYð -ð -ð -r(   rM   é   r$   rS   úPoppins-Bold.ttfc              3   óp   •K  — | ]0\  }}‰                      |¦  «        t          d t          z  z
  k    V — Œ1dS ©é   N)r.   ÚWÚM)r_   ÚtÚ_Úfs      €r&   ú	<genexpr>zSlide._build.<locals>.<genexpr>Œ   s>   øè è € ÐGÐG¹4¸1¸a˜1Ÿ;š; q™>œ>­Q°µQ±©YÒ6ÐGÐGÐGÐGÐGÐGr(   ru   r   )rL   r3   r1   ÚsteprO   rm   rW   rX   zPoppins-SemiBold.ttfúPoppins-Regular.ttfr0   rQ   )rL   r3   r1   rQ   r|   rO   rm   rb   rd   re   rc   c              3   ó&   K  — | ]}|d          V — ŒdS rt   © )r_   Úbs     r&   r{   zSlide._build.<locals>.<genexpr>¦   s&   è è € Ð-Ð- ˜˜!œÐ-Ð-Ð-Ð-Ð-Ð-r(   r^   )	rL   ÚblocksÚfnÚfdÚnsÚdsrf   rO   rm   )rF   r/   ÚintÚgetÚmaxr'   ÚallÚlenr7   rv   rw   ÚBULLET_INDENTÚsum)rG   ÚairÚshrinkÚoutÚkrO   Úrawr$   r|   r3   ÚnszÚdszr‚   rƒ   r„   r…   ÚgÚavailr�   r#   ÚdescÚnlÚdlrm   rz   rp   s                           @@r&   Ú_buildzSlide._build~   sß  øø€ ØˆØ”*ð (	Sñ (	SˆBØ�6”
ˆAØ�EŠzˆzØ—
’
 Eµ°B°t´H¸s±NÑ0CÔ0CÈaÐPÐPÑQÔQÐQØÝ˜Ÿš˜w¨Ñ*Ô*¨SÑ0Ñ1Ô1ˆEØ�GŠ|ˆ|ð-ð -ð -ð -Ø " 7¤ð-ñ -ô -�å˜2�s 2 f¤:°Ñ#6Ñ7Ô7Ñ8Ô8�Ø˜R’i�iÝÐ,¨dÑ3Ô3�AÝÐGÐGÐGÐGÀ3ÐGÑGÔGÑGÔGð ØØ˜A‘I�Dð	 ˜R’i�iõ
 Ð(¨$Ñ/Ô/�Ø˜a‘x�Ø—
’
 G°cÀ1Ø$(°5¸tÅcÈ#ÁhÄh¹ðPð Pñ Qô Qð Qñ Qà�f’�Ý˜2�s 2 f¤:°Ñ#6Ñ7Ô7Ñ8Ô8�Ý°·²°v±´ÐYÐ,Ð,ÐDYÐ[_Ñ`Ô`�Ý˜R œZ¨­A°µA±©IÑ6Ô6�Ø˜b‘y�Ø—
’
 F°UÀAÐPRÐSZÔP[Ø$(°5¸tÅcÈ%ÁjÄjÑ?PðRð Rñ Sô Sð Sñ Sà�i’‘Ý˜"�c " [¤/°FÑ":Ñ;Ô;Ñ<Ô<�Ý˜"�c " [¤/°FÑ":Ñ;Ô;Ñ<Ô<�ÝÐ1°3Ñ7Ô7½Ð;PÐRUÑ9VÔ9V�B�Ø˜q™ #¨¡(�B�Ý˜˜5œ	 C™Ñ(Ô(�Ý�A™¥Ñ-µÑ1�Ø�Ø"$ W¤+ð Ið I‘J�D˜$Ý˜d B¨Ñ.Ô.�BØ26Ð>�˜d B¨Ñ.Ô.Ð.¸B�BØ—M’M 2 r¨2µ°B±´©<¸"½sÀ2¹w¼w¹,Ñ+FÐ"GÑHÔHÐHÐHÝÐ-Ð- fÐ-Ñ-Ô-Ñ-Ô-°µC¸½3¸v¹;¼;È¹?Ñ4KÔ4KÑ0KÑK�Ø—
’
 I¸ÀrÐQSØ"$¨B°qÀ5ÈqðRð Rñ Sô Sð Sùàˆ
r(   c                 ó˜  — t           t          z
  }d }dD ]c}dD ]Z}|                      ||¬¦  «        }t          d„ |D ¦   «         ¦  «        t          d„ |D ¦   «         ¦  «        z   }||k    r||||f} nŒ[|r nŒd|€P|                      dd¬¦  «        }t          d„ |D ¦   «         ¦  «        t          d	„ |D ¦   «         ¦  «        z   }||ddf}|S )
N)rk   g®Gázî?g)\�Âõ(ì?g=
×£p=ê?çR¸…ëQè?)rk   g333333ë?g
×£p=
ç?g333333ã?ç      à?)r�   rŽ   c              3   ó&   K  — | ]}|d          V — ŒdS ©rm   Nr   ©r_   rp   s     r&   r{   zSlide._fit.<locals>.<genexpr>±   s&   è è € Ð4Ð4¨˜B˜sœGÐ4Ð4Ð4Ð4Ð4Ð4r(   c              3   ó&   K  — | ]}|d          V — ŒdS ©rO   Nr   rŸ   s     r&   r{   zSlide._fit.<locals>.<genexpr>±   s&   è è € Ð:WÐ:WÈ2¸2¸g¼;Ð:WÐ:WÐ:WÐ:WÐ:WÐ:Wr(   rœ   r›   c              3   ó&   K  — | ]}|d          V — ŒdS rž   r   rŸ   s     r&   r{   zSlide._fit.<locals>.<genexpr>¹   s&   è è € Ð0Ð0 B˜˜3œÐ0Ð0Ð0Ð0Ð0Ð0r(   c              3   ó&   K  — | ]}|d          V — ŒdS r¡   r   rŸ   s     r&   r{   zSlide._fit.<locals>.<genexpr>¹   s&   è è € Ð6SÐ6SÀr°r¸'´{Ð6SÐ6SÐ6SÐ6SÐ6SÐ6Sr(   )ÚBOT_LIMÚTOP_LIMr™   rŒ   )rG   ÚareaÚbestrŽ   r�   rF   rB   s          r&   Ú_fitz
Slide._fit«   s  € Ý�Ñ ˆØˆØ3ð 	ð 	ˆFØ4ð ð �ØŸš¨°F˜Ñ;Ô;�ÝÐ4Ð4¨eÐ4Ñ4Ô4Ñ4Ô4µsÐ:WÐ:WÐQVÐ:WÑ:WÔ:WÑ7WÔ7WÑW�Ø˜D’=�=Ø! 5¨#¨vÐ6�DØ�Eð !ð ð Ø�ðàˆ<Ø—K’K C°�KÑ5Ô5ˆEÝÐ0Ð0¨%Ð0Ñ0Ô0Ñ0Ô0µ3Ð6SÐ6SÈUÐ6SÑ6SÔ6SÑ3SÔ3SÑSˆEØ˜5 # tÐ,ˆDØˆr(   ú.Tc           	      ór  — |                       ¦   «         \  }}}}t          j        dt          t          f| j        ¦  «        }t          j        |¦  «        }	t          t          t          z   |z
  dz  ¦  «        }
t          t          t          |
t          |z
  ¦  «        ¦  «        }
|D �]}|d         dk    r|
|d         z  }
Œ|d         dk    rA|d         D ]6\  }}|	                     t          |
f||d         |¬¦  «         |
|d	         z  }
Œ7�n“|d         d
k    rD|d         D ]9}|	                     t          |
f||d         |d         ¬¦  «         |
|d	         z  }
Œ:�nC|d         dk    �r6t          |d         ¦  «        D �]\  }\  }}}|
|d         dz  z   dz
  }|	                     t          dz   t"          z
  |t"          z
  t          dz   t"          z   |t"          z   g| j        ¬¦  «         |
}|D ]@}|	                     t          t&          z   |f||d         | j        ¬¦  «         ||d         z  }ŒA|D ]@}|	                     t          t&          z   |f||d         | j        ¬¦  «         ||d         z  }ŒA|
|z   |t+          |d         ¦  «        dz
  k     r|d         ndz   }
�Œ!|
|d         z  }
�Œ|	                     t          df| j        t/          dd¦  «        | j        ¬¦  «         |	                     t          t          z
  df| j        ›d| j        ›�t/          dd¦  «        | j        d¬¦  «         |	                     t          t          d z
  f| j        t/          dd!¦  «        | j        ¬¦  «         | j        rI|	                     t          t          z
  t          d z
  f| j        t/          dd!¦  «        | j        d¬¦  «         |rvt9          j        |d"¬#¦  «         t8          j                             ||¦  «        }|                      |d$¦  «         |s&tC          d%|||t          t          z
  |z
  fz  ¦  «         |S |S )&NÚRGBru   rL   rf   rm   r3   r1   )r1   Úfillr|   rW   rQ   rb   r�   r„   r   )r¬   r‚   rƒ   r…   r^   r   rO   é"   rr   r   é&   ú/r}   rS   Úrt)r1   r¬   Úanchoré:   é   T)Úexist_okÚPNGz-   air=%.2f shrink=%.2f tinggi=%dpx sisa=%dpx)"r¨   r   Únewrv   ÚHr=   r   ÚDrawr†   r¥   r¤   rˆ   Úminr0   rw   Ú	enumerateÚellipseÚDOT_Rr?   r‹   r>   rŠ   rD   r'   rA   rB   rE   rC   r   Úmakedirsr    r!   ÚsaveÚprint)rG   ÚfilenameÚout_dirÚquietrF   Úblock_hr�   rŽ   ÚimgÚdÚyrp   ÚtxtÚcolÚlnÚir—   r˜   ÚhhÚcyÚyyr    s                         r&   ÚrenderzSlide.render½   sX  € Ø&*§i¢i¡k¤kÑ#ˆˆw˜˜VÝŒi˜¥¥1˜v t¤wÑ/Ô/ˆÝŒN˜3ÑÔˆå•�7Ñ" WÑ,°Ñ1Ñ2Ô2ˆÝ•�˜Q¥¨'Ñ 1Ñ2Ô2Ñ3Ô3ˆàð 	ñ 	ˆBØ�&Œz˜UÒ"Ð"Ø�R˜”W‘�ØØ�&Œz˜WÒ$Ð$Ø " 7¤ð $ð $‘H�C˜Ø—F’F�A˜q˜6 3¨R°¬Z¸c�FÑBÔBÐBØ˜˜Fœ‘O�A�Añ$ð �F”˜vÒ%Ð%Ø˜Wœ+ð $ð $�BØ—F’F�A˜q˜6 2¨B¨v¬J¸RÀ¼[�FÑIÔIÐIØ˜˜Fœ‘O�A�Añ$ð �F”˜yÒ(Ñ(Ý'0°°H´Ñ'>Ô'>ð Qñ Q‘O�A‘|˜˜B Ø˜R œX¨™]Ñ*¨QÑ.�BØ—I’I�q 1™u¥u™}¨bµ5©j½!¸a¹%Å%¹-ÈÍeÉÐTØ#'¤>ð ñ 3ô 3ð 3à�BØ ð 'ð '˜ØŸš¥¥MÑ 1°2Ð6¸ÀÀDÄÐPTÔPW˜ÑXÔXÐXØ˜b œh™˜˜Ø ð 'ð '˜ØŸš¥¥MÑ 1°2Ð6¸ÀÀDÄÐPTÔPW˜ÑXÔXÐXØ˜b œh™˜˜Ø˜B™¨qµ3°r¸(´|Ñ3DÔ3DÀqÑ3HÒ/HÐ/H " U¤) )ÈaÑP�A‘AØ��G”ÑˆA‰Aà	�Š•�2ˆw˜œ
­Ð+=¸rÑ)BÔ)BÈÌˆÑQÔQÐQØ	�Š••A‘�rˆ{ t¤x x x°´°Ð<ÝÐ+¨RÑ0Ô0°t´wÀtð 	ñ 	Mô 	Mð 	Mà	�Š••1�r‘6ˆ{˜DÔ,µ1Ð5JÈBÑ3OÔ3OÐVZÔV]ˆÑ^Ô^Ð^ØŒ8ð 	.Ø�FŠF•A�‘E�1˜r™6�? D¤Hµ1Ð5JÈBÑ3OÔ3OØœ¨ð ñ .ô .ð .ð ð 	ÝŒK˜¨$Ð/Ñ/Ô/Ð/Ý”7—<’< ¨Ñ2Ô2ˆDØ�HŠH�T˜5Ñ!Ô!Ð!Øð MÝÐEØ˜f g­w½Ñ/@À7Ñ/JÐKñLñ Mô Mð MàˆKØˆ
r(   )rk   rk   )Nr©   T)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚBIRU_TUAÚWHITErH   ÚTITLErR   ÚH2ÚSKYrU   ÚSUBrW   ÚLEADrZ   ÚNAMEÚDESCrb   rf   r™   r¨   rÎ   r   r(   r&   r9   r9   M   s!  € € € € € ØSÐSà"#Ð)<ÀØ#Ð1DØ Tðð ð ð ð !&¨R°tð ð ð ð ð   s°"ð ð ð ð ð "¨°Q¸Uð ð ð ð ð
 #¨$°að Oð Oð Oð Oð $%¨"¸Èð ð ð ð ðð ð ð
+ð +ð +ð +ðZð ð ð$3ð 3ð 3ð 3ð 3ð 3r(   r9   Úreturnc                 ó   — | j         dz  dk    S )z:True kalau tanggal genap (warna pertama hari itu = putih).ru   r   )Úday)Útgls    r&   Úmulai_putihrà   ý   s   € àŒ7�Q‰;˜!ÒÐr(   Úurutanc                 óV   — t          | ¦  «        rdnd}|dk    rdnd}|dz  dk    r|n|S )z=Warna untuk posisi `urutan` (1 = pertama) pada tanggal `tgl`.ÚputihÚbiruru   r^   )rà   )rß   rá   Úar€   s       r&   Úwarna_keræ     s?   € å˜sÑ#Ô#Ð/ˆˆ¨€AØ�w’,�,ˆˆ G€AØ˜‘
˜a’�ˆ1ˆ1 QÐ&r(   c                 óÂ   — t          || ¦  «        dk    r)t          | ||ft          t          t          dœ|¤Žt          fS t          | ||ft          t          dœ|¤Žt
          fS )z�Slide ke-`num` (1-based) dengan BG ikut pola harian + warna aksen yang cocok.

    Contoh: for i in 1..10: s, aksen = slide_pola(i, 10, "#seo", tanggal)
    rã   )r=   r>   r?   )r=   r>   )ræ   r9   rÔ   rÓ   ÚAKSEN_PUTIHr×   )rA   rB   rC   rß   Úkws        r&   Ú
slide_polarê   	  si   € õ
 ��SÑÔ˜WÒ$Ð$Ý�S˜% ÐV­µ8ÅxÐVÐVÐSUÐVÐVÕXcÐcÐcÝ��e˜SÐ>¥Xµ%Ð>Ð>¸2Ð>Ð>ÅÐCÐCr(   )%rÒ   r   ÚPILr   r   r   r    Ú
expanduserr"   ÚNAVYrÓ   r×   rÔ   rè   rv   r·   rw   rÕ   rÙ   rØ   rÖ   rÚ   rÛ   r‹   r¼   r¥   r¤   r   r'   r7   r9   Úboolrà   r†   r@   ræ   rê   r   r(   r&   ú<module>rï      sU  ððð ð4 
€	€	€	à +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +àŒ7×Ò˜jÑ)Ô)€à€Ø€Ø€Ø€Ø€à�€€1Ø€Ø
€Ø	€Ø€Ø€Ø	€Ø	€Ø€Ø	€ØÑ €ˆà	€ðð ð ðð ð ðcð cð cð cð cñ cô cð cð`˜ð ð ð ð ð
'˜#ð ' #ð 'ð 'ð 'ð 'ðDð Dð Dð Dð Dr(   