+
    ÖÇÜhvq ã            	       ó¬  € R t  ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIHtHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIt ! R R4      t ! R R	4      t ! R
 R4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t  ! R R]4      t! ! R R]4      t" ! R R]4      t# ! R  R!]4      t$ ! R" R#]4      t% ! R$ R%]4      t& ! R& R'4      t' ! R( R)4      t( ! R* R+4      t)R, t*R- t+R. t,R/ t-R[R0 lt.R[R1 lt/R2 t0R\R3 lt1R4 t2R5 t3R6 t4R7 t5]'! 4       t6]6Pn                  t7R8 t8R9 t9R: t:];R;8X  Edl   ^ R<I<H=t= ]=! 4       t>]>P                  R=R>R?R@RARB7       ]>P                  RCRDRERFRGRHRI7       ]>P                  RJRKRLRFRGRMRI7       ]>P                  RNRORPRFRGRQRI7       ]>P                  RRRSRT]P€                  Pƒ                  RU4      RVRW7       ]>P…                  4       w  tCtD]'! ]CPŠ                  RX7      tF]D'       dh   ]D F_  tG]FPo                  ]G]CP�                  ]CP’                  ]CP”                  ]CP–                  RY7      tL]LRG8X  g   KJ  ]CP–                  '       g   K^   R# 	  R# ]FPo                  ]CP�                  ]CP’                  ]CP”                  ]CP–                  RZ7       R# R# )]aH	  
The NLTK corpus and module downloader.  This module defines several
interfaces which can be used to download corpora, models, and other
data packages that can be used with NLTK.

Downloading Packages
====================
If called with no arguments, ``download()`` will display an interactive
interface which can be used to download and install new packages.
If Tkinter is available, then a graphical interface will be shown,
otherwise a simple text interface will be provided.

Individual packages can be downloaded by calling the ``download()``
function with a single argument, giving the package identifier for the
package that should be downloaded:

    >>> download('treebank') # doctest: +SKIP
    [nltk_data] Downloading package 'treebank'...
    [nltk_data]   Unzipping corpora/treebank.zip.

NLTK also provides a number of "package collections", consisting of
a group of related packages.  To download all packages in a
colleciton, simply call ``download()`` with the collection's
identifier:

    >>> download('all-corpora') # doctest: +SKIP
    [nltk_data] Downloading package 'abc'...
    [nltk_data]   Unzipping corpora/abc.zip.
    [nltk_data] Downloading package 'alpino'...
    [nltk_data]   Unzipping corpora/alpino.zip.
      ...
    [nltk_data] Downloading package 'words'...
    [nltk_data]   Unzipping corpora/words.zip.

Download Directory
==================
By default, packages are installed in either a system-wide directory
(if Python has sufficient access to write to it); or in the current
user's home directory.  However, the ``download_dir`` argument may be
used to specify a different installation target, if desired.

See ``Downloader.default_download_dir()`` for more a detailed
description of how the default download directory is chosen.

NLTK Download Server
====================
Before downloading any packages, the corpus and module downloader
contacts the NLTK download server, to retrieve an index file
describing the available packages.  By default, this index file is
loaded from ``https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml``.
If necessary, it is possible to create a new ``Downloader`` object,
specifying a different URL for the package index file.

Usage::

    python nltk/downloader.py [-d DATADIR] [-q] [-f] [-k] PACKAGE_IDS

or::

    python -m nltk.downloader [-d DATADIR] [-q] [-f] [-k] PACKAGE_IDS
N)Úmd5Úsha256)Ú	HTTPErrorÚURLError)Úurlopen)ÚElementTreec                   óJ   a € ] tR t^»t o RtRR lt]R 4       tR tR t	Rt
V tR# )	ÚPackagea  
A directory entry for a downloadable package.  These entries are
extracted from the XML index file that is downloaded by
``Downloader``.  Each package consists of a single file; but if
that file is a zip file, then it can be automatically decompressed
when the package is installed.
Nc                ó&  € Wn          T;'       g    TV n         W@n         W n         \	        V4      V n         \	        V4      V n         Wpn         W€n         W�n	         W n
         W°n         WÀn         \        P                  P                  VP!                  R 4      R,          4      ^,          p\        P                  P#                  WAV,           4      V n         \'        \	        V4      4      V n         V P*                  P-                  V4       R# )Ú/Néÿÿÿÿ)ÚidÚnameÚsubdirÚurlÚintÚsizeÚunzipped_sizeÚchecksumÚsvn_revisionÚ	copyrightÚcontactÚlicenseÚauthorÚosÚpathÚsplitextÚsplitÚjoinÚfilenameÚboolÚunzipÚ__dict__Úupdate)Úselfr   r   r   r   r   r   r   r   r   r   r   r   r!   ÚkwÚexts   &&&&&&&&&&&&&&, Ú1/usr/lib/python3/dist-packages/nltk/downloader.pyÚ__init__ÚPackage.__init__Ä   sõ   € ð" ŒØ3à—J�J˜BˆŒ	Ø-àŒð	4ð ŒØEä˜“IˆŒ	Ø:ä  Ó/ˆÔð	ð !ŒØ4à(ÔØ<à"ŒØ0àŒð	,ð ŒØ3àŒØ%ä�g‰g×Ñ˜sŸy™y¨›~¨bÕ1Ó2°1Õ5ˆÜŸ™Ÿ™ V°#­XÓ6ˆŒð	3ô œ#˜e›*Ó%ˆŒ
ð	ð 	�‰×Ñ˜RÖ ó    c                óü   € \        V \        4      '       d   \        P                  ! V 4      p V P                   F,  p\        V P                  V,          4      V P                  V&   K.  	  \        R/ V P                  B # )N© )Ú
isinstanceÚstrr   ÚparseÚattribr	   )ÚxmlÚkeys   & r'   ÚfromxmlÚPackage.fromxml	  sY   € ä�cœ3×ÒÜ×#Ò# CÓ(ˆCØ—:”:ˆCÜ! #§*¡*¨S¥/Ó2ˆC�J‰J�s‹Oñ äÑ$˜Ÿ™Ñ$Ð$r*   c                ó4   € V P                   VP                   8  # ©N©r   ©r$   Úothers   &&r'   Ú__lt__ÚPackage.__lt__  ó   € Ø�w‰w˜Ÿ™Ñ!Ð!r*   c                ó(   € R V P                   ,          # )z<Package %s>r7   ©r$   s   &r'   Ú__repr__ÚPackage.__repr__  s   € Ø §¡Õ'Ð'r*   )r   r   r   r   r   r   r   r   r   r   r   r!   r   r   )NÚ NNNNÚUnknownrB   rB   rB   T©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r(   Ústaticmethodr3   r:   r?   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r'   r	   r	   »   s4   ø‡ € ñôC!ðJ ñ%ó ð%ò"÷(ð (r*   r	   c                   óJ   a € ] tR tRt o RtR	R lt]R 4       tR tR t	Rt
V tR# )
Ú
Collectioni  z˜
A directory entry for a collection of downloadable packages.
These entries are extracted from the XML index file that is
downloaded by ``Downloader``.
Nc                óŒ   € Wn          T;'       g    TV n         W n         R V n         V P                  P                  V4       R # r6   )r   r   ÚchildrenÚpackagesr"   r#   )r$   r   rQ   r   r%   s   &&&&,r'   r(   ÚCollection.__init__  sF   € ØŒØ6à—J�J˜BˆŒ	Ø0à Œð	,ð ˆŒð	3ð 	�‰×Ñ˜RÖ r*   c                óf  € \        V \        4      '       d   \        P                  ! V 4      p V P                   F,  p\        V P                  V,          4      V P                  V&   K.  	  V P                  R 4       Uu. uF  q"P                  R4      NK  	  pp\        RRV/V P                  B # u upi )ÚitemÚrefrQ   r,   )r-   r.   r   r/   r0   ÚfindallÚgetrO   )r1   r2   ÚchildrQ   s   &   r'   r3   ÚCollection.fromxml1  sŠ   € ä�cœ3×ÒÜ×#Ò# CÓ(ˆCØ—:”:ˆCÜ! #§*¡*¨S¥/Ó2ˆC�J‰J�s‹Oñ à25·+±+¸fÔ2EÓFÑ2E¨—I‘I˜eÖ$Ñ2EˆÐFÜÑ: 8Ð:¨s¯z©zÑ:Ð:ùò Gs   Á<B.c                ó4   € V P                   VP                   8  # r6   r7   r8   s   &&r'   r:   ÚCollection.__lt__:  r<   r*   c                ó(   € R V P                   ,          # )z<Collection %s>r7   r>   s   &r'   r?   ÚCollection.__repr__=  s   € Ø  4§7¡7Õ*Ð*r*   )rQ   r   r   rR   r6   rC   rL   s   @r'   rO   rO     s2   ø‡ € ñô!ð$ ñ;ó ð;ò"÷+ð +r*   rO   c                   ó   € ] tR tRtRtRtR# )ÚDownloaderMessageiF  zOA status message object, used by ``incr_download`` to
communicate its progress.r,   N)rD   rE   rF   rG   rH   rJ   r,   r*   r'   r`   r`   F  s   † õ!r*   r`   c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚStartCollectionMessageiK  z<Data server has started working on a collection of packages.c                ó   € Wn         R # r6   ©Ú
collection©r$   re   s   &&r'   r(   ÚStartCollectionMessage.__init__N  ó   € Ø$Žr*   rd   N©rD   rE   rF   rG   rH   r(   rJ   rK   rL   s   @r'   rb   rb   K  s   ø‡ € ÙF÷%ð %r*   rb   c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚFinishCollectionMessageiR  z=Data server has finished working on a collection of packages.c                ó   € Wn         R # r6   rd   rf   s   &&r'   r(   Ú FinishCollectionMessage.__init__U  rh   r*   rd   Nri   rL   s   @r'   rk   rk   R  s   ø‡ € ÙG÷%ð %r*   rk   c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚStartPackageMessageiY  z-Data server has started working on a package.c                ó   € Wn         R # r6   ©Úpackage©r$   rr   s   &&r'   r(   ÚStartPackageMessage.__init__\  ó   € ØŽr*   rq   Nri   rL   s   @r'   ro   ro   Y  ó   ø‡ € Ù7÷ð r*   ro   c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚFinishPackageMessagei`  z.Data server has finished working on a package.c                ó   € Wn         R # r6   rq   rs   s   &&r'   r(   ÚFinishPackageMessage.__init__c  ru   r*   rq   Nri   rL   s   @r'   rx   rx   `  ó   ø‡ € Ù8÷ð r*   rx   c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚStartDownloadMessageig  z.Data server has started downloading a package.c                ó   € Wn         R # r6   rq   rs   s   &&r'   r(   ÚStartDownloadMessage.__init__j  ru   r*   rq   Nri   rL   s   @r'   r}   r}   g  r{   r*   r}   c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚFinishDownloadMessagein  z/Data server has finished downloading a package.c                ó   € Wn         R # r6   rq   rs   s   &&r'   r(   ÚFinishDownloadMessage.__init__q  ru   r*   rq   Nri   rL   s   @r'   r�   r�   n  ó   ø‡ € Ù9÷ð r*   r�   c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚStartUnzipMessageiu  z,Data server has started unzipping a package.c                ó   € Wn         R # r6   rq   rs   s   &&r'   r(   ÚStartUnzipMessage.__init__x  ru   r*   rq   Nri   rL   s   @r'   r†   r†   u  s   ø‡ € Ù6÷ð r*   r†   c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚFinishUnzipMessagei|  z-Data server has finished unzipping a package.c                ó   € Wn         R # r6   rq   rs   s   &&r'   r(   ÚFinishUnzipMessage.__init__  ru   r*   rq   Nri   rL   s   @r'   rŠ   rŠ   |  rv   r*   rŠ   c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚUpToDateMessageiƒ  z/The package download file is already up-to-datec                ó   € Wn         R # r6   rq   rs   s   &&r'   r(   ÚUpToDateMessage.__init__†  ru   r*   rq   Nri   rL   s   @r'   rŽ   rŽ   ƒ  r„   r*   rŽ   c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚStaleMessageiŠ  z3The package download file is out-of-date or corruptc                ó   € Wn         R # r6   rq   rs   s   &&r'   r(   ÚStaleMessage.__init__�  ru   r*   rq   Nri   rL   s   @r'   r’   r’   Š  s   ø‡ € Ù=÷ð r*   r’   c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚErrorMessagei‘  z Data server encountered an errorc                ón   € Wn         \        V\        4      '       d   \        V4      V n        R # W n        R # r6   )rr   r-   Ú	Exceptionr.   Úmessage)r$   rr   r™   s   &&&r'   r(   ÚErrorMessage.__init__”  s$   € ØŒÜ�gœy×)Ò)Ü˜w›<ˆDŽLà"ŽLr*   )r™   rr   Nri   rL   s   @r'   r–   r–   ‘  s   ø‡ € Ù*÷#ð #r*   r–   c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚProgressMessageiœ  z4Indicates how much progress the data server has madec                ó   € Wn         R # r6   ©Úprogress)r$   rŸ   s   &&r'   r(   ÚProgressMessage.__init__Ÿ  s   € Ø Žr*   rž   Nri   rL   s   @r'   rœ   rœ   œ  s   ø‡ € Ù>÷!ð !r*   rœ   c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚSelectDownloadDirMessagei£  z:Indicates what download directory the data server is usingc                ó   € Wn         R # r6   ©Údownload_dir©r$   r¥   s   &&r'   r(   Ú!SelectDownloadDirMessage.__init__¦  s   € Ø(Ör*   r¤   Nri   rL   s   @r'   r¢   r¢   £  s   ø‡ € ÙD÷)ð )r*   r¢   c                   ó`  a € ] tR tRt o RtR)t Rt Rt Rt Rt	 Rt
 R*R	 ltR+R ltR tR tR tR tR tR,R ltR tR tR tRRRRRR
R]P.                  3R ltR-R ltR-R ltR-R ltR-R ltR tR.R ltR-R ltR t R  t!R! t"R" t#R# t$]%! ]#]$4      t&R$ t'R% t(R& t)]%! ](])4      t*R' t+R(t,V t-R# )/Ú
Downloaderi¯  zm
A class used to access the NLTK data server, which can be used to
download corpora and other data packages.
zChttps://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xmlÚ	installedznot installedzout of dateÚpartialNc                óö   € T;'       g    V P                   V n         / V n         / V n         W n         R V n         R V n         / V n         R V n         V P                  f   V P                  4       V n        R # R # r6   )
ÚDEFAULT_URLÚ_urlÚ_collectionsÚ	_packagesÚ_download_dirÚ_indexÚ_index_timestampÚ_status_cacheÚ_errorsÚdefault_download_dir)r$   Úserver_index_urlr¥   s   &&&r'   r(   ÚDownloader.__init__Ø  s�   € Ø$×8Ð8¨×(8Ñ(8ˆŒ	Ø7àˆÔØEàˆŒØ?à)ÔØIàˆŒØ@à $ˆÔð	Lð  ˆÔð	ð
 ˆŒØRð ×ÑÒ%Ø!%×!:Ñ!:Ó!<ˆDÖñ &r*   TFc                óè  € ^ pVf   V P                   p\        RV,          4       V'       d~   \        R^\        V P                  4      ,           ,          4       \        RV P                  ,          4       \        R^\        V P                  4      ,           ,          4       V^,          pR;r‰. p
V'       d   V
P	                  R4       V'       d   V
P	                  R4       V
 EF½  p\        RVP                  4       ,          4       V^,          p\        \        W4      ! 4       \        R	7       EFb  pV P                  WÁ4      pWÐP                  8X  d   V'       d   K/  WÐP                  8X  d   R
pWÐP                  8X  d   R
p	V P                  RV P                  RV P                  RV P                  R/V,          p\        P                  ! RVP                   ;'       g    VP"                  ,           ^KRR7      R,          p\        RP%                  WìP"                  P'                  ^R4      V4      4       V\        VP)                  R4      4      ,          pV'       g   EK2  V^8”  g   EK<  \+        R4      pVP-                  4       R9   d     R# ^ pEKe  	  \        4        EKÀ  	  RpV'       d
   VR,          pV	'       d
   VR,          p\        \        P                  ! VR,           R^LR7      4       R# )é    Nz!Using default data directory (%s)Ú=z Data server index for <%s>FrR   Úcollectionsz%s:©r2   TÚ*Ú-ÚPÚ ©Úsubsequent_indentºé   NNz  [{}] {} {}Ú.Ú
zHit Enter to continue: z([*] marks installed packagesz+; [-] marks out-of-date or corrupt packagesz+; [P] marks partially installed collectionsÚ))rÃ   Úwidthú---------------------------ú                           )ÚxÚq)r±   ÚprintÚlenr®   ÚappendÚ
capitalizeÚsortedÚgetattrr.   ÚstatusÚ	INSTALLEDÚSTALEÚPARTIALÚNOT_INSTALLEDÚtextwrapÚfillr   r   ÚformatÚljustr   ÚinputÚlower)r$   r¥   Úshow_packagesÚshow_collectionsÚheaderÚmore_promptÚskip_installedÚlinesÚstaler«   Ú
categoriesÚcategoryÚinforÔ   Úprefixr   Ú
user_inputÚmsgs   &&&&&&&           r'   ÚlistÚDownloader.listý  sE  € ð ˆØÒØ×-Ñ-ˆLÜÐ5¸ÕDÔEßÜ�#˜œc $§)¡)›nÕ,Õ-Ô.ÜÐ/°$·)±)Õ;Ô<Ü�#˜œc $§)¡)›nÕ,Õ-Ô.Ø�Q�JˆEØÐˆàˆ
ßØ×Ñ˜jÔ)ßØ×Ñ˜mÔ,Ü"ˆHÜ�%˜(×-Ñ-Ó/Õ/Ô0Ø�Q�JˆEÜœw tÔ6Ó8¼c×BÐB�ØŸ™ TÓ8�ØŸ^™^Ô+·ÙØŸZ™ZÔ'Ø �EØŸ\™\Ô)Ø"�Gà—N‘N CØ—J‘J Ø—L‘L #Ø×&Ñ&¨ð	ð
 õ�ô  —}’}Ø §	¡	× 4Ð 4¨T¯W©WÕ5°rÈXôàõ�ô �n×+Ñ+¨F·G±G·M±MÀ"ÀcÓ4JÈDÓQÔRØœ˜TŸZ™Z¨Ó-Ó.Õ.�ß’; 5¨2§:Ü!&Ð'@Ó!A�JØ!×'Ñ'Ó)¨ZÔ7ÛØ“Eñ/ Cô0 �Gñ7 #ð8 .ˆßØÐ@Õ@ˆCßØÐ@Õ@ˆCÜŒh�mŠm˜C #�I¸ÀBÔGÖHr*   c                óV   € V P                  4        V P                  P                  4       # r6   )Ú_update_indexr°   Úvaluesr>   s   &r'   rR   ÚDownloader.packages9  s!   € Ø×ÑÔØ�~‰~×$Ñ$Ó&Ð&r*   c                ó°   € V P                  4        V P                  P                  4        UUu. uF  w  rVP                  R 8X  g   K  VNK  	  upp# u uppi ©Úcorpora©rï   r°   Úitemsr   ©r$   r   Úpkgs   &  r'   rô   ÚDownloader.corpora=  óD   € Ø×ÑÔØ%)§^¡^×%9Ñ%9Ô%;ÔWÑ%;™	˜¸s¿z¹zÈYÑ?V—�Ñ%;ÒWÐWùÓWó   ®AÁAc                ó°   € V P                  4        V P                  P                  4        UUu. uF  w  rVP                  R 8w  g   K  VNK  	  upp# u uppi ró   rõ   r÷   s   &  r'   ÚmodelsÚDownloader.modelsA  rú   rû   c                óV   € V P                  4        V P                  P                  4       # r6   )rï   r¯   rð   r>   s   &r'   r¼   ÚDownloader.collectionsE  s#   € Ø×ÑÔØ× Ñ ×'Ñ'Ó)Ð)r*   c                óT   € \        V\        4      '       d   V P                  V4      # V# r6   )r-   r.   rè   )r$   Ú
info_or_ids   &&r'   Ú_info_or_idÚDownloader._info_or_idM  s$   € Ü�j¤#×&Ò&Ø—9‘9˜ZÓ(Ð(àÐr*   c              #  ó.  "  € Vf   V P                   p\        V4      x € \        V\        \        34      '       d   V P                  WV4       R j  x€L
  R #  V P                  V4      p\        T\        4      '       dA   \        T4      x € T P                  TP                  Y#4       R j  x€L
  \        T4      x € R # T P                  YBT4       R j  x€L
  R #  LŠ  \        \        3 d    p\        R RT RT 24      x €  R p?R # R p?ii ; i Ld L=5i)NzError loading ú: )r±   r¢   r-   rì   ÚtupleÚ_download_listr  ÚOSErrorÚ
ValueErrorr–   rO   rb   Úincr_downloadrQ   rk   Ú_download_package)r$   r  r¥   Úforcerè   Úes   &&&&  r'   r  ÚDownloader.incr_download\  sÿ   é € àÒØ×-Ñ-ˆLÜ*¨<Ó8Ò8ô �j¤4¬ -×0Ò0Ø×*Ñ*¨:ÀUÓK×KÐKÙð	Ø×#Ñ# JÓ/ˆDô �dœJ×'Ò'Ü(¨Ó.Ò.Ø×)Ñ)¨$¯-©-¸ÓM×MÐMÜ)¨$Ó/Ô/ð ×-Ñ-¨dÀ%ÓH×HÒHñ% Løô œÐ$ô 	Ü˜t ~°j°\ÀÀAÀ3Ð%GÓHÒHÝûð	úñ Nñ
 Iùs[   ‚ADÁCÁDÁC Á*ADÂ,DÂ-(DÃDÃDÃDÃ/D	ÄDÄ	DÄDÄDc                ó\   € \        V\        4      '       d   ^# \        VP                  4      # )é   )r-   r	   rÏ   rR   )r$   rU   s   &&r'   Ú_num_packagesÚDownloader._num_packagesx  s!   € Ü�dœG×$Ò$Ùä�t—}‘}Ó%Ð%r*   c              #  ó‚  a "  € \        \        V4      4       F  p S P                  W,          4      W&   K  	  \        V 3R lV 4       4      p^ p\        V4       Fª  w  rH\        V\        4      '       d   RV,          p	M\        VP                  4      V,          p	S P                  W‚V4       FC  p
\        V
\        4      '       d'   \        WzP                  V	,          ,           4      x € K?  V
x € KE  	  V^dV	,          ,          pK¬  	  R #   \        \        3 d!   p\        Y,          T4      x €  R p? R # R p?ii ; i5i)Nc              3   óF   <"  € T F  pSP                  V4      x € K  	  R # 5ir6   )r  )Ú.0rU   r$   s   & €r'   Ú	<genexpr>Ú,Downloader._download_list.<locals>.<genexpr>ˆ  s   øé € ÐFÁ¸˜4×-Ñ-¨d×3Ð3Ãùs   ƒ!g      ð?)ÚrangerÏ   r  r	  r
  r–   ÚsumÚ	enumerater-   r	   rR   r  rœ   rŸ   )r$   rö   r¥   r  Úir  Únum_packagesrŸ   rU   Údeltarë   s   f&&&       r'   r  ÚDownloader._download_list~  sý   øé € ä”s˜5“zÖ"ˆAðØ×+Ñ+¨E­HÓ5�“ñ #ô ÔFÁÓFÓFˆØˆÜ  Ö'‰GˆAÜ˜$¤×(Ò(Ø˜lÕ*‘ä˜DŸM™MÓ*¨\Õ9�Ø×)Ñ)¨$¸eÖD�Ü˜c¤?×3Ò3Ü)¨(·\±\ÀEÕ5IÕ*IÓJÔJà”Iñ	 Eð ˜˜e�Õ#ŠHó (øô œZÐ(ô Ü" 5¥8¨QÓ/Ò/Þûðüs.   ƒD?œDµCD?ÄD<ÄD7Ä0D?Ä7D<Ä<D?c              #  ó   "  € \        V4      x € \        ^ 4      x € V P                  W4      pV'       g:   W@P                  8X  d*   \	        V4      x € \        ^d4      x € \        V4      x € R# V P                  P                  VP                  R4       \        P                  P                  W!P                  4      p\        P                  P                  V4      '       d4   W@P                  8X  d   \        V4      x € \        P                   ! V4       \        P"                  ! VRR7       \        P"                  ! \        P                  P                  W!P$                  4      RR7       \'        V4      x € \        ^4      x €  \)        VP*                  4      p\-        VR4      ;_uu_ 4       p\/        ^VP0                  R,          4      p\2        P4                  ! 4        Fj  p	VP7                  R4      p
VP9                  V
4       V
'       g    M?V	^,          ^ 8X  g   K?  \        \;        ^P^^KW˜,          ,          ,           4      4      x € Kl  	  RRR4       VP=                  4        \C        T4      x € \        ^P4      x € TP                  PE                  R4      '       dÀ   \        P                  P                  Y!P$                  4      pTPF                  '       gM   \        P                  P                  \        P                  P                  YÁP                  4      4      '       d9   \I        T4      x € \K        Y\R	R
7       F  pYn&        Tx € K  	  \O        T4      x € \        T4      x € R#   + '       g   i     EL*; i  \>         d:   p\A        TRTP                  : RTP*                  : RT: 24      x €  Rp?R# Rp?ii ; i5i)rº   NT)Úexist_okÚwbzError downloading z from <ú>:
  ú.zipF)Úverboseé @  )(ro   rœ   rÔ   rÕ   rŽ   rx   r´   Úpopr   r   r   r   r   ÚexistsrÖ   r’   ÚremoveÚmakedirsr   r}   r   r   ÚopenÚmaxr   Ú	itertoolsÚcountÚreadÚwriteÚminÚcloser	  r–   r�   Úendswithr!   r†   Ú_unzip_iterrr   rŠ   )r$   rè   r¥   r  rÔ   ÚfilepathÚinfileÚoutfileÚ
num_blocksÚblockÚsr  Úzipdirrë   s   &&&&          r'   r  ÚDownloader._download_package—  s£  é € Ü! $Ó'Ò'Ü˜aÓ Ò ð —‘˜TÓ0ˆß˜§>¡>Ô1Ü! $Ó'Ò'Ü! #Ó&Ò&Ü& tÓ,Ò,Ùð 	×Ñ×Ñ˜tŸw™w¨Ô-ô —7‘7—<‘< ¯m©mÓ<ˆÜ�7‰7�>‰>˜(×#Ò#ØŸ™Ô#Ü" 4Ó(Ò(Ü�IŠI�hÔô 	�Š�L¨4Õ0Ü
�Š”B—G‘G—L‘L ¯{©{Ó;ÀdÕKô # 4Ó(Ò(Ü˜aÓ Ò ð	Ü˜TŸX™XÓ&ˆFÜ�h ×%Ô%¨Ü   D§I¡I°Õ$;Ó<�
Ü&Ÿ_š_Ö.�EØŸ™ IÓ.�AØ—M‘M !Ô$ßÙØ˜q•y A–~Ü-¬c°"°a¸"ÀÕ@RÕ:SÕ6SÓ.TÓUÔUñ /÷ &ð �L‰LŒNô $ DÓ)Ò)Ü˜bÓ!Ò!ð �=‰=×!Ñ! &×)Ò)Ü—W‘W—\‘\ ,·±Ó<ˆFð �z�zˆzœRŸW™WŸ^™^¬B¯G©G¯L©L¸ÇÁÓ,I×JÒJÜ'¨Ó-Ò-Ü& xÀ×G�Cà"&”KØ”Iñ Hô )¨Ó.Ò.ä" 4Ó(Ô(÷A &×%Ð%ûô ô 	ÜÙØ>B¿g¼gÀtÇxÄxÒQRÐSóò õ ûð	üsP   ‚FOÆ)N Æ1A-M3È#/M3ÉN É*D	OÍ3N	Í>	N ÎOÎ.OÏ OÏOÏOú[nltk_data] c	           
     ó¾  aa€ \         P                  ! \        VR 7      oVf   Ve   W n        V P	                  4        R# RVV3R llp	V P                  WV4       EF~  p
\        V
\        4      '       d°   V	! V
P                  4       V'       d   \        V
P                  4      hV'       d    R# RV n
        V'       gg   S! R4       \        4       P                  4       pVR9   d6   V P                  V
P                  P                  VVVSVV4      '       g    R# M
VR9   d    R# V'       d   KÓ  \        V
\         4      '       d8   V	! RV
P"                  P                  ,          4       SR,          oS! S4       EK   \        V
\$        4      '       dl   S! S4       SRR oV P                  '       d'   V	! RV
P"                  P                  ,          4       EK{  V	! R	V
P"                  P                  ,          4       EK¡  \        V
\&        4      '       d)   V	! R
V
P                  P                  : RV: R24       EKß  \        V
\(        4      '       d(   V	! RV
P                  P                  ,          R4       EK  \        V
\*        4      '       d(   V	! RV
P                  P,                  ,          R4       EKY  \        V
\.        4      '       g   EKr  V
P0                  pEK�  	  R# ))ÚfileNTc                 óp   <€ S! \         P                  ! V SV,           SV,           R,           R7      4       R# )rÁ   )Úinitial_indentrÃ   Nú    )rÙ   rÚ   )r:  Úprefix2ré   Úprint_tos   &&€€r'   ÚshowÚ!Downloader.download.<locals>.showñ  s/   ø€ ÙÜ—M’MØØ'-°Õ'7Ø*0°7Õ*:¸WÕ*Dôör*   Fz(Error installing package. Retry? [n/y/e]úDownloading collection %rz   | z$Downloaded collection %r with errorszDone downloading collection %szDownloading package z to z...z!Package %s is already up-to-date!ú  zUnzipping %s.©rA   )ÚyÚY)r  ÚEéüÿÿÿ)Ú	functoolsr«   rÎ   r±   Ú_interactive_downloadr  r-   r–   r™   r
  rµ   rÝ   ÚstripÚdownloadrr   r   rb   re   rk   ro   rŽ   r†   r   r¢   r¥   )r$   r  r¥   Úquietr  ré   Úhalt_on_errorÚraise_on_errorÚprint_error_torE  rë   ÚchoicerD  s   &&&&&f&&&   @r'   rQ  ÚDownloader.downloadÙ  s9  ù€ ô ×$Ò$¤U°Ô@ˆàÒð Ò'Ø%1Ô"Ø×&Ñ&Ô(Ù÷ð ð ×)Ñ)¨*ÀE×J�ä˜c¤<×0Ò0Ù˜Ÿ™Ô%ß%Ü(¨¯©Ó5Ð5ß$Ú$Ø#'�D”Lß Ù Ð!KÔLÜ!&£§¡£˜Ø! ZÔ/Ø#'§=¡=Ø #§¡§¡Ø ,Ø %Ø %Ø &Ø -Ø .÷$ò $ò (-ð$ð $ zÔ1Ú#(÷ ‘uä! #Ô'=×>Ò>ÙÐ8¸3¿>¹>×;LÑ;LÕLÔMØ 'Õ)˜Ù  ×(Ü# CÔ)@×AÒAÙ  Ô(Ø!'¨¨ ˜ØŸ<Ÿ<˜<Ù Ø FØ"%§.¡.×"3Ñ"3õ!4÷ñ
 !Ð!AÀCÇNÁN×DUÑDUÕ!U×Vô $ CÔ)<×=Ò=Úà"Ÿ{™{Ÿ~œ~«|ð=÷ô $ C¬×9Ò9ÙÐ@À3Ç;Á;Ç>Á>ÕQÐSW×Xô $ CÔ):×;Ò;Ù˜_¨s¯{©{×/CÑ/CÕCÀT×Jô $ CÔ)A×BÕBØ'*×'7Ñ'7›ñy Kñz r*   c                ó>   € V P                  W4      V P                  8H  # r6   )rÔ   rÖ   ©r$   r  r¥   s   &&&r'   Úis_staleÚDownloader.is_stale9  s   € Ø�{‰{˜:Ó4¸¿
¹
ÑBÐBr*   c                ó>   € V P                  W4      V P                  8H  # r6   )rÔ   rÕ   rY  s   &&&r'   Úis_installedÚDownloader.is_installed<  s   € Ø�{‰{˜:Ó4¸¿¹ÑFÐFr*   c                ó~   € Vf   V P                   P                  4        R # V P                   P                  VR 4       R # r6   )r´   Úclearr'  ©r$   r   s   &&r'   Úclear_status_cacheÚDownloader.clear_status_cache?  s/   € ØŠ:Ø×Ñ×$Ñ$Ö&à×Ñ×"Ñ" 2 tÖ,r*   c                óV  € Vf   V P                   pV P                  V4      p\        V\        4      '       dÅ   VP                   Uu. uF  q@P                  VP                  4      NK  	  ppV P                  V9   d   V P                  # V P                  V9   d   V P                  # V P                  V9   d   V P                  V9   d   V P                  # V P                  V9   d   V P                  # V P                  # \        P                  P                  W#P                  4      pW P                   8w  d   V P                  W64      # VP                  V P                   9  d)   V P                  W64      V P                   VP                  &   V P                   VP                  ,          # u upi )z 
Return a constant describing the status of the given package
or collection.  Status can be one of ``INSTALLED``,
``NOT_INSTALLED``, ``STALE``, or ``PARTIAL``.
)r±   r  r-   rO   rR   rÔ   r   rÖ   r×   rÕ   rØ   r   r   r   r   Ú_pkg_statusr´   )r$   r  r¥   rè   rø   Ú
pkg_statusr5  s   &&&    r'   rÔ   ÚDownloader.statusE  sK  € ð ÒØ×-Ñ-ˆLØ×Ñ 
Ó+ˆô �dœJ×'Ò'Ø9=¿ºÓG¹°#Ÿ+™+ c§f¡fÖ-¹ˆJÐGØ�z‰z˜ZÔ'Ø—z‘zÐ!Ø—‘ Ô+Ø—|‘|Ð#Ø—‘ :Ô-°$×2DÑ2DÈ
Ô2RØ—|‘|Ð#Ø×#Ñ# zÔ1Ø×)Ñ)Ð)à—~‘~Ð%ô —w‘w—|‘| L·-±-Ó@ˆHØ×1Ñ1Ô1Ø×'Ñ'¨Ó7Ð7à—7‘7 $×"4Ñ"4Ô4Ø26×2BÑ2BÀ4Ó2R�D×&Ñ& t§w¡wÑ/Ø×)Ñ)¨$¯'©'Õ2Ð2ùò) Hs   Á#F&c                ó  € \         P                  P                  V4      '       g   V P                  #  \         P                  ! V4      pTP                  \        TP                  4      8w  d   T P                  # \        T4      TP                  8w  d   T P                  # TP                  R 4      '       dª   TRR p\         P                  P                  T4      '       g   T P                  # \         P                  P                  T4      '       g   T P                  # \        R \         P                   ! T4       4       4      pYQP"                  8w  d   T P                  # T P                  #   \
         d    T P                  u # i ; i)r$  Nc              3   ó´   "  € T FN  w  rpV FB  p\         P                  ! \         P                  P                  W4      4      P                  x € KD  	  KP  	  R # 5ir6   )r   Ústatr   r   Úst_size)r  ÚdÚ_ÚfilesÚfs   &    r'   r  Ú)Downloader._pkg_status.<locals>.<genexpr>€  sD   é € ð  á#4‘K�A˜%Û�Aô —’œŸ™Ÿ™ QÓ*Ó+×3Ö3áñ 4Û#4ùs   ‚AArM  )r   r   r(  rØ   rj  r	  rk  r   r   rÖ   Úmd5_hexdigestr   r3  rÕ   Úisdirr  Úwalkr   )r$   rè   r5  ÚfilestatÚunzipdirr   s   &&&   r'   re  ÚDownloader._pkg_statusg  s,  € Ü�w‰w�~‰~˜h×'Ò'Ø×%Ñ%Ð%ð	&Ü—w’w˜xÓ(ˆHð ×Ñœs 4§9¡9›~Ô-Ø—:‘:Ðô ˜Ó" d§m¡mÔ3Ø—:‘:Ðð ×Ñ˜V×$Ò$Ø  �}ˆHÜ—7‘7—>‘> (×+Ò+Ø—~‘~Ð%Ü—7‘7—=‘= ×*Ò*Ø—z‘zÐ!äñ  ä#%§7¢7¨8Ô#4ó ó ˆMð
 × 2Ñ 2Ô2Ø—z‘zÐ!ð �~‰~Ðøô7 ô 	&Ø×%Ñ%Ò%ð	&ús   ³E+ Å+FÆFc                ó¾   € V P                  4        V P                  4        F8  pV P                  V4      V P                  8X  g   K%  V P	                  W1VR7       K:  	  R# )z1
Re-download any packages whose status is STALE.
)rR  ré   N)rb  rR   rÔ   rÖ   rQ  )r$   rR  ré   rø   s   &&& r'   r#   ÚDownloader.update‹  sE   € ð 	×ÑÔ!Ø—=‘=–?ˆCØ�{‰{˜3Ó 4§:¡:Ö-Ø—‘˜c°v�Ö>ó #r*   c                óV  € V P                   e<   Vf8   \        P                  ! 4       V P                  ,
          V P                  8”  g   R# T;'       g    V P                  V n        \
        P                  P                  \        P                  ! \        V P                  4      4      P                  4       4      V n         \        P                  ! 4       V n        V P                   P                  R4       Uu. uF  p\        P                  V4      NK  	  ppV Uu/ uF  q"P                  VbK  	  upV n        V P                   P                  R4       Uu. uF  p\"        P                  V4      NK  	  ppV Uu/ uF  qDP                  VbK  	  upV n        V P$                  P'                  4        F¬  p\)        VP*                  4       F�  w  rxW€P                   9   d#   V P                   V,          VP*                  V&   K7  W€P$                  9   d#   V P$                  V,          VP*                  V&   Ki  \-        RP/                  V4      4       VP*                  V K’  	  K®  	  V P$                  P'                  4        F  p/ pV.p	V	 F\  p
\1        V
\"        4      '       d   V	P3                  V
P*                  4       K6  \1        V
\        4      '       d   W£V
P                  &   K\  K^  	  VP'                  4       Vn        K�  	  V P6                  P9                  4        R# u upi u upi u upi u upi )z†A helper function that ensures that self._index is
up-to-date.  If the index is older than self.INDEX_TIMEOUT,
then download it again.Núpackages/packageúcollections/collectionz.removing collection member with no package: {})r²   Útimer³   ÚINDEX_TIMEOUTr®   ÚnltkÚ	internalsÚElementWrapperr   r/   r   ÚgetrootrW   r	   r3   r   r°   rO   r¯   rð   r  rQ   rÎ   rÛ   r-   ÚextendrR   r´   r`  )r$   r   ÚprR   Úcr¼   re   r  Úchild_idÚqueuerY   s   &&         r'   rï   ÚDownloader._update_index˜  s€  € ð �K‰KÒØŠÜ�yŠy‹{˜T×2Ñ2Õ2°T×5GÑ5GÔGáð ×$Ð$˜4Ÿ9™9ˆŒ	ô —n‘n×3Ñ3Ü×Òœg d§i¡iÓ0Ó1×9Ñ9Ó;ó
ˆŒô !%§	¢	£ˆÔð 15·±×0CÑ0CÐDVÔ0WÓXÑ0W¨1”G—O‘O AÖ&Ñ0WˆÐXÙ+3Ó4©8 aŸ$™$ š'©8Ñ4ˆŒð ,0¯;©;×+>Ñ+>Ð?WÔ+Xó
Ù+X aŒJ×Ñ˜qÖ!Ñ+Xð 	ð 
ñ /:Ó:©k¨ŸT™T 1šW©kÑ:ˆÔð ×+Ñ+×2Ñ2Ö4ˆJÜ(¨×)<Ñ)<Ö=‘�ØŸ~™~Ô-Ø-1¯^©^¸HÕ-E�J×'Ñ'¨Ó*Ø×!2Ñ!2Ô2Ø-1×->Ñ->¸xÕ-H�J×'Ñ'¨Ó*äØH×OÑOØ$óôð
 #×+Ñ+¨AÒ.ó  >ñ 5ð ×+Ñ+×2Ñ2Ö4ˆJØˆHØ�LˆEÛ�Ü˜e¤Z×0Ò0Ø—L‘L §¡Ö0Ü ¤w×/Ò/Ø).˜UŸX™XÓ&áñ ð #+§/¡/Ó"3ˆJÖñ 5ð 	×Ñ× Ñ Ö"ùòM YùÚ4ùò
ùò ;s   Ã5LÄLÅL!Å7L&c                ó:   € V P                  4        V P                  # )z‘
Return the XML index describing the packages available from
the data server.  If necessary, this index will be downloaded
from the data server.
)rï   r²   r>   s   &r'   ÚindexÚDownloader.indexÖ  s   € ð 	×ÑÔØ�{‰{Ðr*   c                óÒ   € V P                  4        WP                  9   d   V P                  V,          # WP                  9   d   V P                  V,          # \        RV,          4      h)zCReturn the ``Package`` or ``Collection`` record for the
given item.úPackage %r not found in index)rï   r°   r¯   r
  ra  s   &&r'   rè   ÚDownloader.infoß  sW   € ð 	×ÑÔØ—‘ÔØ—>‘> "Õ%Ð%Ø×"Ñ"Ô"Ø×$Ñ$ RÕ(Ð(ÜÐ8¸2Õ=Ó>Ð>r*   c                ó6  € V P                  4        V P                  P                  R4       F  pVP                  R4      V8X  g   K  Vu # 	  V P                  P                  R4       F  pVP                  R4      V8X  g   K  Vu # 	  \	        RV,          4      h)z-Return the XML info record for the given itemrz  r   r{  rŒ  )rï   r²   rW   rX   r
  )r$   r   rr   re   s   &&  r'   ÚxmlinfoÚDownloader.xmlinfoé  s…   € à×ÑÔØ—{‘{×*Ñ*Ð+=Ö>ˆGØ�{‰{˜4Ó  BÖ&Ø’ñ ?ð Ÿ+™+×-Ñ-Ð.FÖGˆJØ�~‰~˜dÓ# rÖ)Ø!Ò!ñ Hô Ð8¸2Õ=Ó>Ð>r*   c                ó   € V P                   # )z)The URL for the data server's index file.)r®   r>   s   &r'   Ú_get_urlÚDownloader._get_urlø  s   € à�y‰yÐr*   c                óZ   € V P                   p V P                  V4       R#    Y n         h ; i)zm
Set a new URL for the data server. If we're unable to contact
the given url, then the original url is kept.
N)r®   rï   )r$   r   Úoriginal_urls   && r'   Ú_set_urlÚDownloader._set_urlü  s/   € ð
 —y‘yˆð	Ø×Ñ˜sÖ#øð	Ø$ŒIØús   Ž! ¡	*c                ó8  € R\         P                  9   d   R# \        P                  P                   FS  p\         P                  P                  V4      '       g   K*  \        P                  P                  V4      '       g   KQ  Vu # 	  \        P                  R8X  d.   R\         P                  9   d   \         P                  R,          pM1\         P                  P                  R4      pVR8X  d   \        R4      h\         P                  P                  VR4      # )aw  
Return the directory to which packages will be downloaded by
default.  This value can be overridden using the constructor,
or on a case-by-case basis using the ``download_dir`` argument when
calling ``download()``.

On Windows, the default download directory is
``PYTHONHOME/lib/nltk``, where *PYTHONHOME* is the
directory containing Python, e.g. ``C:\Python25``.

On all other platforms, the default directory is the first of
the following which exists or which can be created with write
permission: ``/usr/share/nltk_data``, ``/usr/local/share/nltk_data``,
``/usr/lib/nltk_data``, ``/usr/local/lib/nltk_data``, ``~/nltk_data``.
ÚAPPENGINE_RUNTIMENÚwin32ÚAPPDATAz~/z+Could not find a default download directoryÚ	nltk_data)r   Úenvironr~  Údatar   r(  r  Úis_writableÚsysÚplatformÚ
expanduserr
  r   )r$   ÚnltkdirÚhomedirs   &  r'   r¶   ÚDownloader.default_download_dir
  sº   € ð" ¤"§*¡*Ô,Ùô —y‘y—~”~ˆGÜ�w‰w�~‰~˜g×&Ô&¬4¯>©>×+EÑ+EÀg×+NÔ+NØ’ñ &ô
 �<‰<˜7Ô" y´B·J±JÔ'>Ü—j‘j Õ+‰Gô —g‘g×(Ñ(¨Ó.ˆGØ˜$ŒÜ Ð!NÓOÐOô �w‰w�|‰|˜G [Ó1Ð1r*   c                ó   € V P                   # )zñ
The default directory to which packages will be downloaded.
This defaults to the value returned by ``default_download_dir()``.
To override this default on a case-by-case basis, use the
``download_dir`` argument when calling ``download()``.
)r±   r>   s   &r'   Ú_get_download_dirÚDownloader._get_download_dir1  s   € ð ×!Ñ!Ð!r*   c                óF   € Wn         V P                  P                  4        R # r6   )r±   r´   r`  r¦   s   &&r'   Ú_set_download_dirÚDownloader._set_download_dir:  s   € Ø)Ôà×Ñ× Ñ Ö"r*   c                ó˜  € \         P                  P                  R R4      P                  4       R8X  d   \	        V 4      P                  4        R#  ^ RIp \        T 4      P                  4        R#   \         d    \	        T 4      P                  4         R# i ; i  TP                   d    \	        T 4      P                  4         R# i ; i)Ú'NLTK_DOWNLOADER_FORCE_INTERACTIVE_SHELLÚfalseÚtrueN)r   r�  rX   rÞ   ÚDownloaderShellÚrunÚtkinterÚImportErrorÚDownloaderGUIÚmainloopÚTclError)r$   r²  s   & r'   rO  Ú Downloader._interactive_downloadE  s¨   € ô �J‰J�N‰NÐDÀgÓN×TÑTÓVØôô ˜DÓ!×%Ñ%Ô'Ùð	Ûð
	(Ü˜$Ó×(Ñ(Ö*øô ô 	Ü˜DÓ!×%Ñ%Ô'Úð	ûð ×Ñô 	(Ü˜DÓ!×%Ñ%×'ð	(ús$   ÁA0 ÁB Á0$BÂBÂ*C	ÃC	)r¯   r±   rµ   r²   r³   r°   r´   r®   i  )NN)NTTTFF)NFr6   )Fr=  ).rD   rE   rF   rG   rH   r}  r­   rÕ   rØ   rÖ   r×   r(   rì   rR   rô   rý   r¼   r  r  r  r  r  r   ÚstderrrQ  rZ  r]  rb  rÔ   re  r#   rï   r‰  rè   r�  r’  r–  Úpropertyr   r¶   r§  rª  r¥   rO  rJ   rK   rL   s   @r'   r©   r©   ¯  s+  ø‡ € ñð €Mðð X€Kð!ð €Ið$à#€Mðà€Eð"à€GðEô=ôJ:Iòx'òXòXò*òôIò8&ò$ò2@)ðH ØØØØØØØ—z‘zô^ô@CôGô-ô 3òD"ôH?ô<#ò|ò?ò	?òò
ñ �8˜XÓ
&€Cò%2òN"ò#ñ
 Ð-Ð/@ÓA€L÷(ð (r*   r©   c                   óP   a € ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
tV tR# )r°  i]  c                ó   € Wn         R # r6   ©Ú_ds)r$   Ú
dataservers   &&r'   r(   ÚDownloaderShell.__init__^  s   € ØŽr*   c                óâ   € \        R4       ^D\        R V 4       4      ,
          \        V4      ^,
          ,          R,          p\        RVP                  V4      ,           4       \        R4       R# )r¿   c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5ir6   )rÏ   )r  Úos   & r'   r  Ú;DownloaderShell._simple_interactive_menu.<locals>.<genexpr>c  s   é € Ð0© 1œ˜AŸ˜«ùó   ‚rÁ   rB  NzK---------------------------------------------------------------------------)rÎ   r  rÏ   r   )r$   ÚoptionsÚspcs   &* r'   Ú_simple_interactive_menuÚ(DownloaderShell._simple_interactive_menua  sN   € ÜˆhŒØ”CÑ0©Ó0Ó0Õ0´c¸'³lÀQÕ6FÕGÈ#ÕMˆÜˆf�s—x‘x Ó(Õ(Ô)ÜˆhŽr*   c                óh  € \        R 4        V P                  RRRRRR4       \        R4      P                  4       pV'       g   \        4        KD  VP	                  4       P                  4       ^ ,          pVP                  4       R	,          p VR
8X  d>   \        4        V P                  P                  V P                  P                  RRR7       M}VR8X  d   V P                  4        MeVR8X  d   V P                  4        MMVR9   d   R# VR8X  d   V P                  V4       M+VR8X  d   V P                  4        M\        RV,          4        \        4        EKO    \         d   p\        RT,          4        Rp?L/Rp?i\         d'   p\        RTP                  ,          4        Rp?L^Rp?ii ; i)úNLTK DownloaderTzd) Downloadzl) Listz
 u) Updatez	c) Configzh) Helpzq) QuitzDownloader> ºr  NNÚlF)rá   râ   Úhr„  Nrl  ÚuzCommand %r unrecognizedzError reading from server: %szError connecting to server: %s)rÍ   rÌ   )rÎ   rÇ  rÝ   rP  rÞ   r   r½  rì   r¥   Ú_simple_interactive_helpÚ_simple_interactive_configÚ_simple_interactive_downloadÚ_simple_interactive_updater   r   Úreason)r$   rê   ÚcommandÚargsr  s   &    r'   r±  ÚDownloaderShell.rung  sa  € ÜÐÔ ØØ×)Ñ)ØØØØØØôô ˜~Ó.×4Ñ4Ó6ˆJßÜ”ÙØ ×&Ñ&Ó(×.Ñ.Ó0°Õ3ˆGØ×#Ñ#Ó% bÕ)ˆDðCØ˜c”>Ü”GØ—H‘H—M‘M $§(¡(×"7Ñ"7ÀÐSW�MÕXØ ”^Ø×1Ñ1Õ3Ø ”^Ø×3Ñ3Õ5Ø 
Ô*ÙØ ”^Ø×5Ñ5°dÕ;Ø ”^Ø×3Ñ3Õ5äÐ3°jÕ@ÕAô �Gøô ô ;ÜÐ5¸Õ9×:Ñ:ûÜô CÜÐ6¸¿¹ÕA×BÑBûðCúsO   ÂAE ÃE Ã)E ÄE Ä
E Ä#E Ä;E ÅF1Å&E=Å=F1Æ
F1ÆF,Æ,F1c                ó”  € V'       d*   V F!  p V P                   P                  VR R7       K#  	  R#  \	        4        \	        R4       \        R4      pVP                  4       R8X  d6   V P                   P                  V P                   P                  RRRR7       Kk  VP                  4       R	9   d   R# V'       g   KŒ  VP                  4        F!  p V P                   P                  VR R7       K#  	  R#   \        \        3 d   p\	        T4        Rp?EK  Rp?ii ; i  \        \        3 d   p\	        T4        Rp?Kt  Rp?ii ; i)
rB  ©ré   NTz*Download which package (l=list; x=cancel)?ú  Identifier> rÌ  F)rá   râ   rã   ©rÌ   rÍ   rA   )
r½  rQ  r	  r
  rÎ   rÝ   rÞ   rì   r¥   r   )r$   rÕ  Úargr  rê   r   s   &&    r'   rÑ  Ú,DownloaderShell._simple_interactive_download�  s  € ßÛ�ðØ—H‘H×%Ñ% c°&Ð%Ö9ó ð Ü”ÜÐBÔCÜ"Ð#3Ó4�
Ø×#Ñ#Ó%¨Ô,Ø—H‘H—M‘MØŸ™×-Ñ-Ø$Ø$(Ø'+ð	 "ô ñ Ø×%Ñ%Ó'¨>Ô9Ùß‘ZØ(×.Ñ.Ö0˜ð%Ø ŸH™H×-Ñ-¨b¸Ð-Ö@ñ 1ñ
 øô/  ¤Ð,ô Ü˜!—H“Hûðûô* !(¬Ð4ô %Ü! !ŸHšHûð%ús/   �C5ÃD Ã5DÄDÄDÄ EÄ1EÅEc           	     ój  €  . pR;r#\        \        V P                  R4      ! 4       \        R7       F`  pV P                  P	                  V4      V P                  P
                  8X  g   K9  VP                  VP                  VP                  34       Kb  	  \        4        V'       dØ   \        R4       V FW  w  rV\        P                  ! RV,           ^KRR7      R,          p\        RP                  VP                  ^R4      V4      4       KY  	  \        4        \        R	4      pVP                  4       R
8X  d,   V F#  w  rV V P                  P!                  VRR7       K%  	  R# VP                  4       R9   d   R# EK}  \        R4       R#   \"        \$        3 d   p	\        T	4        Rp	?	Kr  Rp	?	ii ; i)TFrR   r½   z/Will update following packages (o=ok; x=cancel)rÂ   rÄ   z  [ ] {} {}rÆ   rÙ  rÂ  rB  rØ  NzNothing to update.rÊ   rË   rÚ  )rÒ   rÓ   r½  r.   rÔ   rÖ   rÐ   r   r   rÎ   rÙ   rÚ   rÛ   rÜ   rÝ   rÞ   rQ  r	  r
  )
r$   Ústale_packagesrå   r«   rè   ÚpidÚpnamer   rê   r  s
   &         r'   rÒ  Ú*DownloaderShell._simple_interactive_update®  sd  € ØØˆNØ#Ð#ˆEÜœw t§x¡x°Ô<Ó>ÄC×H�Ø—8‘8—?‘? 4Ó(¨D¯H©H¯N©NÖ:Ø"×)Ñ)¨4¯7©7°D·I±IÐ*>Ö?ñ Iô ŒGßÜÐGÔHÛ"0‘J�CÜ#Ÿ=š=Ø  EÕ*¨BÀ(ôàõ�Dô ˜-×.Ñ.¨s¯y©y¸¸SÓ/AÀ4ÓHÖIñ	 #1ô
 ”ä"Ð#3Ó4�
Ø×#Ñ#Ó%¨Ô,Û&4™
˜ð%Ø ŸH™H×-Ñ-¨c¸&Ð-ÖAñ '5ñ
 Ø×%Ñ%Ó'¨>Ô9Ùò :ô Ð*Ô+Ùøô !(¬Ð4ô %Ü! !ŸHšHûð%ús   ÅFÆF2ÆF-Æ-F2c                ór   € \        4        \        R 4       \        R4       \        R4       \        R4       R# )z	Commands:zH  d) Download a package or collection     u) Update out of date packagesz1  l) List packages & collections          h) Helpz1  c) View & Modify Configuration          q) QuitN)rÎ   r>   s   &r'   rÏ  Ú(DownloaderShell._simple_interactive_helpÎ  s.   € ÜŒÜˆkÔÜØVô	
ô 	ÐAÔBÜÐAÖBr*   c                ó¾  € \        4        \        R 4       \        RV P                  P                  ,          4       \        R\        V P                  P	                  4       4      ,          4       \        R\        V P                  P                  4       4      ,          4       \        4        \        R4       \        RV P                  P                  ,          4       R# )zData Server:z  - URL: <%s>z$  - %d Package Collections Availablez$  - %d Individual Packages AvailablezLocal Machine:z  - Data directory: %sN)rÎ   r½  r   rÏ   r¼   rR   r¥   r>   s   &r'   Ú_show_configÚDownloaderShell._show_config×  sŠ   € ÜŒÜˆnÔÜˆo §¡§¡Õ,Ô-ÜÐ4´s¸4¿8¹8×;OÑ;OÓ;QÓ7RÕRÔSÜÐ4´s¸4¿8¹8×;LÑ;LÓ;NÓ7OÕOÔPÜŒÜÐÔÜÐ&¨¯©×)>Ñ)>Õ>Ö?r*   c                ó   € V P                  4         \        4        V P                  RRRR4       \        R4      P	                  4       P                  4       pVR8X  d   V P                  4        K_  VR8X  dy   \        R4      P	                  4       pVR9   d   \        R	4       K“  \        P                  P                  V4      '       d   W P                  n
        KÊ  \        R
V,          4       KÞ  VR8X  dc   \        R4      P	                  4       pVR9   d   \        R	4       EK  VP                  R4      '       g
   RV,           p W0P                  n        EKG  VR8X  g   EKQ  R#   \         d   p\        RT: RT 24        Rp?EKw  Rp?ii ; i)Tzs) Show Configzu) Set Server URLzd) Set Data Dirzm) Main MenuzConfig> r:  rl  z  New Directory> z  Cancelled!z)Directory %r not found!  Create it first.rÎ  z  New URL> úhttps://zError reading <r#  NÚm)rA   rÌ   rÍ   ÚXÚQ)zhttp://rè  )rå  rÎ   rÇ  rÝ   rP  rÞ   r   r   rr  r½  r¥   Ú
startswithr   r˜   )r$   rê   Ú
new_dl_dirÚnew_urlr  s   &    r'   rÐ  Ú*DownloaderShell._simple_interactive_configá  sI  € Ø×ÑÔØÜŒGØ×)Ñ)Ø Ð"5Ð7HÈ.ôô ˜zÓ*×0Ñ0Ó2×8Ñ8Ó:ˆJØ˜SÔ Ø×!Ñ!Ö#Ø˜sÔ"Ü"Ð#6Ó7×=Ñ=Ó?�
ØÐ!9Ô9Ü˜.Ö)Ü—W‘W—]‘] :×.Ò.Ø,6—H‘HÖ)äÐEÈ
ÕRÖSØ˜sÔ"Ü Ó.×4Ñ4Ó6�ØÐ6Ô6Ü˜.×)à"×-Ñ-Ð.E×FÒFØ",¨wÕ"6˜ðFØ'.Ÿ™Ÿð ˜s×"Ùøô %ô FÜ °©{¸&ÀÀÐD×EÓEûðFús   ÅE$ Å$FÅ/FÆFr¼  N)rD   rE   rF   rG   r(   rÇ  r±  rÑ  rÒ  rÏ  rå  rÐ  rJ   rK   rL   s   @r'   r°  r°  ]  s6   ø‡ € òòò'òRò<ò@Cò@÷ð r*   r°  c                   ó¢  a € ] tR tRt o Rt. R5Ot R^ R^R^ R^ /t R^R^R^-R^
R^
R^/t ^t . R6Ot	 ] F  t
]
]9   d   K  Q h	  ] F  t
]
]9   d   K  Q h	  ]	 F  t
]
]9   d   K  Q h	  R7t]P                  R8]P                  R9]P                  R:]P                   R;/tR7tR<tR=tR>tR	tR?R
 ltR tR tR tR tR tR tR@R ltR tR t R t!R t"R t#R t$R t%Rt&Rt'R t(R t)R t*^
t+R t,R t-R  t.R! t/R" t0R# t1R$ t2R% t3R& t4R' t5R( t6]7Pp                  ! R)4      t9R* t:R+ t;^t<R, t=R- t>R. t?R/ t@R0 tA ! R1 R2]BP†                  4      tD^dtER3 tFR4tGV tHR# )Ar´  i  zI
Graphical interface for downloading packages from the NLTK data
server.
rA   Ú
IdentifierÚNameÚSizeÚStatusúUnzipped Sizezhelvetica -16 boldc                óÐ  € ^ RI p^ RIHp Wn        W n        \
        P                  ! 4       V n        . V n        . V n	        RV n
        / V n        . V n        ^ V n        V P                  R4       VP                  4       ;qPn        VP#                  R4       VP%                  R4       VP'                  V P(                  ^,          R7       VP+                  RV P,                  4       VP+                  R	V P,                  4       RV n        / V n        V P3                  4        V P5                  4         V P7                  4        V P?                  4        V PA                  4        V PB                  PE                  ^ 4       V PB                  P+                  RV PF                  4       R#   \8         d   pT! R
T4        Rp?L|Rp?i\:         d   pT! RTP<                  4        Rp?L¢Rp?ii ; i)rº   N©Ú	showerrorFzNLTK Downloader Started!z+50+50rÊ  )Ú
backgroundz<Control-q>z<Control-x>úError reading from serverúError connecting to serverz	<Destroy>)$r²  Útkinter.messageboxrø  r½  Ú_use_threadsÚ	threadingÚLockÚ_download_lockÚ_download_msg_queueÚ_download_abort_queueÚ_downloadingÚ_afteridÚ_log_messagesÚ_log_indentÚ_logÚTkÚtopÚgeometryÚtitleÚ	configureÚ_BACKDROP_COLORÚbindÚdestroyÚ
_destroyedÚ_column_varsÚ_init_widgetsÚ
_init_menuÚ_fill_tabler   r   rÓ  Ú
_show_infoÚ_select_columnsÚ_tableÚselectÚ_destroy)r$   r¾  Úuse_threadsr²  rø  r	  r  s   &&&    r'   r(   ÚDownloaderGUI.__init__\  s‡  € ó 	Ý0àŒØ'Ôô (ŸnšnÓ.ˆÔØ#%ˆÔ Ø%'ˆÔ"Ø!ˆÔð ˆŒð  ˆÔØˆÔØ�	‰	Ð,Ô-ð !Ÿ™›Ð%ˆŒhØ�‰�XÔØ�	‰	Ð#Ô$Ø�‰ ×!5Ñ!5°aÕ!8ˆÔ9ð 	�‰� §¡Ô-Ø�‰� §¡Ô-ØˆŒàˆÔð 	×ÑÔØ�‰Ôð	>Ø×ÑÔð 	�‰ÔØ×ÑÔØ�‰×Ñ˜1Ôð 	�‰×Ñ˜ d§m¡mÖ4øô ô 	6ÙÐ1°1×5Ñ5ûÜô 	>ÙÐ2°A·H±H×=Ñ=ûð	>ús*   Ä.F! Æ!G%Æ,	F:Æ:G%ÇG%ÇG Ç G%c                ó¦   € V P                   P                  R P                  \        P                  ! 4       RV P
                  ,          V4      4       R# )z{} {}{}z | N)r  rÐ   rÛ   r|  Úctimer  ©r$   rë   s   &&r'   r  ÚDownloaderGUI._log’  s9   € Ø×Ñ×!Ñ!Ø×ÑœTŸZšZ›\¨5°4×3CÑ3CÕ+CÀSÓIö	
r*   c           	     óv  a € ^ RI p^ RIHp VP                  S P                  R^^^ R7      pVP                  RRRR7       VP                  ^^R	7       VP                  ^ ^R	7       VP                  V^R
7      P                  ^ ^ R7       VP                  V4      pVP                  ^ ^RR7       VP                  V4      pVP                  ^ ^RR7       VP                  V4      pVP                  ^ ^RR7       VP                  V^R
7      P                  ^ ^R7       VP                  V4      pVP                  ^ ^RR7       VP                  V^R
7      P                  ^ ^R7       VP                  S P                  ^^S P                  ^,          R7      pVP                  RRR7       ^ S P                  R&   ^ S P                  R&   . R7OS n
        / S n        \        S P                  4       Fƒ  w  ršVP                  WJS P                  R7      pVP                  RV	^,           ^,          ^
,          R7       VP                  RS P                   4       VS P                  V
P#                  4       &   K…  	  S P$                   Uu. uF  pS P&                  P)                  V^4      NK!  	  ppV! VS P$                  V^ ^S P*                  R7      S n        S P,                  P/                  ^ S P0                  ^ ,          R7       \        S P$                  4       FG  w  rœS P2                  P)                  VS P4                  4      pS P,                  P/                  WžR7       KI  	  S P,                  P                  RRR7       S P,                  P7                  4        S P,                  P9                  RS P:                  4       S P,                  P                  RS P<                  4       S P,                  P                  RS P:                  4       S P,                  P                  RS P>                  4       S P,                  P                  R S P@                  4       S P,                  P                  R!S PB                  4       VP                  ^^R	7       R"R#S PD                  3R$R%S PF                  3.p/ S n$        \        V4       Fž  w  p	w  pppVP                  W{R&7      P                  ^ V	R'R7       VPK                  VR(R)R*R*R+7      pVV3S PH                  V&   VP                  RS PL                  4       VP                  RV3V 3R, ll4       VP                  ^V	R-R7       K   	  S P                  P                  RS PL                  4       VPO                  VR.S P:                  ^R/7      S n(        S PP                  P                  RR07       VPO                  VR1S PR                  ^R/7      S n*        S PT                  P                  R2R07       VP                  VR3S P                  ^ ,          S P                  ^,          R47      S n+        VPY                  V^È^S PZ                  ^,          R5^R67      S n.        S P_                  4        S P\                  P                  R2R07       S PV                  P                  RR07       R# u upi )8rº   N)ÚTableÚraised)ÚreliefÚborderÚpadxÚpadyr	  TÚboth)ÚsidÚexpandrÚ   )Úweight)Úheight)ÚcolumnÚrowÚnews)r,  r-  Ústicky)r%  r&  rù  ÚbottomrÌ   )ÚsiderÚ   r$  Úhighlightthickness)ÚtextÚfontÚleft)r1  r%  z
<Button-1>)Úcolumn_weightsr2  Úlistbox_heightÚreprfunc)Ú
foreground©rÉ   )r)  rÚ   z<Double-Button-1>z<space>z<Return>z<Left>z<Right>z<Control-a>r   zServer Index:r¥   zDownload Directory:)r3  r  ÚcourierÚgroovez#007aff)r4  r#  Údisabledforegroundr9  c                 ó&   <€ SP                  V4      # r6   ©Ú
_info_edit)r  r2   r$   s   &&€r'   Ú<lambda>Ú-DownloaderGUI._init_widgets.<locals>.<lambda>ì  s   ø€ ¸¿¹ÈÔ8Lr*   ÚewÚDownload)r3  rÔ  rÉ   )r1  ÚRefreshÚrightrA   )r3  r9  rù  Úsunken)rÉ   r+  rù  r#  r$  )ÚCollectionsÚCorporaÚModelszAll Packages)0r²  Únltk.draw.tabler!  ÚFramer	  ÚpackÚgrid_rowconfigureÚgrid_columnconfigureÚgridr  Ú
_tab_namesÚ_tabsr  ÚLabelÚ	_TAB_FONTr  Ú_select_tabrÞ   ÚCOLUMNSÚCOLUMN_WEIGHTSrX   Ú_table_reprfuncr  ÚcolumnconfigÚ_MARK_COLORÚCOLUMN_WIDTHSÚDEFAULT_COLUMN_WIDTHÚfocusÚbind_to_listboxesÚ	_downloadÚ_table_markÚ	_prev_tabÚ	_next_tabÚ	_mark_allr–  rª  Ú_infoÚEntryÚ
_info_saveÚButtonÚ_download_buttonÚ_refreshÚ_refresh_buttonÚ_progresslabelÚCanvasÚ_PROGRESS_COLORÚ_progressbarÚ_init_progressbar)r$   r²  r!  Úf1ÚtabframeÚ
tableframeÚbuttonframeÚ	infoframeÚprogressframer  ÚtabÚlabelr,  r6  rÉ   rè   r2   ÚcallbackÚentrys   f                  r'   r  ÚDownloaderGUI._init_widgets›  sÐ  ø€ ó 	å)ð �]‰]˜4Ÿ8™8¨H¸QÀQÈQˆ]ÓOˆØ
�‰�E $¨VˆÔ4Ø
×Ñ˜Q qÐÔ)Ø
×Ñ ¨!ÐÔ,Ø�‰�b ˆÓ#×(Ñ(°°qÐ(Ô9Ø—=‘= Ó$ˆØ�‰˜Q A¨fˆÔ5Ø—]‘] 2Ó&ˆ
Ø�‰˜q a°ˆÔ7Ø—m‘m BÓ'ˆØ×Ñ  q°ÐÔ8Ø�‰�b ˆÓ#×(Ñ(°°qÐ(Ô9Ø—M‘M "Ó%ˆ	Ø�‰˜a Q¨vˆÔ6Ø�‰�b ˆÓ#×(Ñ(°°qÐ(Ô9ØŸ™Ø�H‰H˜1 1°×1EÑ1EÀaÕ1Hð &ó 
ˆð 	×Ñ ¨sÐÔ3Øˆ�‰�ÑØ)*ˆ�‰Ð%Ñ&ò OˆŒØˆŒ
Ü §¡Ö0‰FˆAØ—M‘M (¸4¿>¹>�MÓJˆEØ�J‰J˜F¨1¨q­5°A­+¸Õ);ˆJÔ<Ø�J‰J�| T×%5Ñ%5Ô6Ø&+ˆD�J‰J�s—y‘y“{Ó#ñ	 1ð LPÏ<Ê<ÓXÉ<À˜$×-Ñ-×1Ñ1°&¸!Ö<É<ˆÐXÙØØ�L‰LØ)Ø ØØ×)Ñ)ô
ˆŒð 	�‰× Ñ  ¨t×/?Ñ/?ÀÕ/BÐ ÔCÜ" 4§<¡<Ö0‰IˆAØ×&Ñ&×*Ñ*¨6°4×3LÑ3LÓMˆEØ�K‰K×$Ñ$ QÐ$Ö4ñ 1ð 	�‰×Ñ ¨6ÐÔ2Ø�‰×ÑÔØ�‰×%Ñ%Ð&9¸4¿>¹>ÔJØ�‰×Ñ˜ D×$4Ñ$4Ô5Ø�‰×Ñ˜ T§^¡^Ô4Ø�‰×Ñ˜ 4§>¡>Ô2Ø�‰×Ñ˜ D§N¡NÔ3Ø�‰×Ñ˜¨¯©Ô7ð 	×&Ñ& q°Ð&Ô3ð �O T§]¡]Ð3ØÐ2°D×4JÑ4JÐKð
ˆð ˆŒ
Ü)2°4®Ñ%ˆAÑ%��U˜HØ�M‰M˜)ˆMÓ0×5Ñ5¸QÀAÈcÐ5ÔRØ—M‘MØØØØ#,Ø$ð "ó ˆEð  % hÐ/ˆD�J‰J�s‰OØ�J‰J�z 4§?¡?Ô3Ø�J‰J�|°3Ö%LÔMØ�J‰J˜a Q¨tˆJÖ4ñ *9ð  	�‰�‰�l D§O¡OÔ4ð !(§¡Ø˜j°$·.±.Èð !/ó !
ˆÔð 	×Ñ×"Ñ"¨Ð"Ô/Ø&Ÿ~™~Ø˜i°·±Àað  .ó  
ˆÔð 	×Ñ×!Ñ! wÐ!Ô/ð &Ÿm™mØØØ×+Ñ+¨AÕ.Ø×+Ñ+¨AÕ.ð	 ,ó 
ˆÔð $ŸN™NØØØØ×+Ñ+¨AÕ.ØØð +ó 
ˆÔð 	×ÑÔ Ø×Ñ×Ñ GÐÔ,Ø×Ñ× Ñ  fÐ Ö-ùòW Ys   Ê%Z6c                ól  a € ^ RI pVP                  S P                  4      pVP                  V^ R7      pVP                  R^ S P                  RR7       VP                  4        VP                  R^V 3R lR7       VP                  R	^ V 3R
 lR7       VP                  4        VP                  R^S P                  R7       VP                  4        VP                  R^S P                  RR7       VP                  R^ VR7       VP                  V^ R7      pS P                  P                  R,           F�  pVP                  S P                  4      pVS P                  9  g   Q hVS P                  V&   VS P                  9   d   VP                  ^4       VP                  V^ VS P                   R7       Kƒ  	  VP                  R^ VR7       VP                  V^ R7      pS P                  P                  R,           F$  pVP                  RV,          V3V 3R llR7       K&  	  VP                  4        S P                  P                  R,           F$  pVP                  RV,          V3V 3R llR7       K&  	  VP                  R^ VR7       VP                  V^ R7      pVP                  R^ S P"                  R7       VP                  R^ S P$                  RR7       VP                  R^ VR7       S P                  P'                  RS P$                  4       S P                  P)                  VR7       R# ) rº   N)ÚtearoffrD  ÚReturn)rw  Ú	underlinerÔ  ÚacceleratorzChange Server Indexc                  ó&   <€ S P                  R 4      # )r   r?  r>   s   €r'   rA  Ú*DownloaderGUI._init_menu.<locals>.<lambda>  s   ø€ ˜DŸO™O¨EÔ2r*   )rw  r~  rÔ  zChange Download Directoryc                  ó&   <€ S P                  R 4      # r¤   r?  r>   s   €r'   rA  r�  "  s   ø€ ˜DŸO™O¨NÔ;r*   zShow LogÚExitzCtrl-xÚFile)rw  r~  Úmenu:é   NN)rw  r~  ÚvariablerÔ  ÚViewrË  z
Sort by %sc                 ó<   <€ SP                   P                  V R 4      # )Ú	ascending©r  Úsort_by©r„  r$   s   &€r'   rA  r�  B  s   ø€ ¨$¯+©+×*=Ñ*=¸aÀÔ*Mr*   )rw  rÔ  zReverse sort by %sc                 ó<   <€ SP                   P                  V R 4      # )Ú
descendingr‹  r�  s   &€r'   rA  r�  I  s   ø€ ¨$¯+©+×*=Ñ*=¸aÀÔ*Nr*   ÚSortÚAboutÚInstructionsÚF1ÚHelpz<F1>)r…  )r²  ÚMenur	  Úadd_commandr_  Úadd_separatorÚ	_show_logr  Úadd_cascader  Úcolumn_namesÚIntVarr  ÚINITIAL_COLUMNSÚsetÚadd_checkbuttonr  ÚaboutÚhelpr  Úconfig)	r$   r²  ÚmenubarÚfilemenuÚviewmenur,  ÚvarÚsortmenuÚhelpmenus	   f        r'   r  ÚDownloaderGUI._init_menu  sñ  ø€ Ûà—,‘,˜tŸx™xÓ(ˆà—<‘< °�<Ó3ˆØ×ÑØ¨°4·>±>Èxð 	ô 	
ð 	×ÑÔ Ø×ÑØ'ØÜ2ð 	ô 	
ð
 	×ÑØ-ØÜ;ð 	ô 	
ð
 	×ÑÔ Ø×Ñ :¸ÀDÇNÁNÐÔSØ×ÑÔ Ø×ÑØ A¨t¯|©|Èð 	ô 	
ð 	×Ñ &°A¸HÐÔEð
 —<‘< °�<Ó3ˆØ—k‘k×.Ñ.¨r×2Ð2ˆFØ—.‘. §¡Ó*ˆCØ ×!2Ñ!2Ô2Ð2Ð2Ø(+ˆD×Ñ˜fÑ%Ø˜×-Ñ-Ô-Ø—‘˜”
Ø×$Ñ$Ø¨°CÀ×AUÑAUð %ö ñ 3ð 	×Ñ &°A¸HÐÔEð
 —<‘< °�<Ó3ˆØ—k‘k×.Ñ.¨r×2Ð2ˆFØ× Ñ Ø" VÕ+Ø"(ÖMð !ö ñ 3ð
 	×ÑÔ à—k‘k×.Ñ.¨r×2Ð2ˆFØ× Ñ Ø*¨VÕ3Ø"(ÖNð !ö ñ 3ð
 	×Ñ &°A¸HÐÔEà—<‘< °�<Ó3ˆØ×Ñ 7°aÀÇÁÐÔLØ×ÑØ ¨A°t·y±yÈdð 	ô 	
ð 	×Ñ &°A¸HÐÔEØ�‰�‰�f˜dŸi™iÔ(à�‰�‰˜WˆÖ%r*   c                óè   € V P                   P                  4        FS  w  rVP                  4       '       d   V P                  P	                  V4       K8  V P                  P                  V4       KU  	  R # r6   )r  rö   rX   r  Úshow_columnÚhide_column)r$   r,  r¥  s   &  r'   r  ÚDownloaderGUI._select_columnsW  sL   € Ø×,Ñ,×2Ñ2Ö4‰KˆFØ�w‰w�yŠyØ—‘×'Ñ'¨Ö/à—‘×'Ñ'¨Ö/ó	 5r*   c                ó,  € ^ RI Hp V P                  P                  4         V P	                  4        V P                  P                  ^ 4       R#   \
         d   pT! RT4        Rp?L6Rp?i\         d   pT! RTP                  4        Rp?L\Rp?ii ; i©rº   r÷  rú  Nrû  )
rü  rø  r½  rb  r  r   r   rÓ  r  r  )r$   rø  r  s   &  r'   ri  ÚDownloaderGUI._refresh^  su   € Ý0à�‰×#Ñ#Ô%ð	>Ø×ÑÔð
 	�‰×Ñ˜1Öøô	 ô 	6ÙÐ1°1×5Ñ5ûÜô 	>ÙÐ2°A·H±H×=Ñ=ûð	>ús)   ¢A ÁBÁ	A(Á(BÁ5BÁ6BÂBc                ó„   € V P                  4        V P                  V,          w  r#R VR&   RVR&   VP                  4        R# )ÚnormalÚstaterG  r#  N)rf  rd  r]  )r$   Úinfo_keyry  rx  s   &&  r'   r@  ÚDownloaderGUI._info_editj  s8   € Ø�‰ÔØ ŸJ™J xÕ0ÑˆØ!ˆˆg‰Ø"ˆˆh‰Ø�‰Žr*   Nc                ó6  € V P                   pV P                  P                  4        F^  w  r4VR ,          R8X  d   K  Ve&   VP                  VJ d   VP                  R8w  d   TpK>  RVR &   RVR&   V! VP                  4       4       K`  	  VP                  4        R# )r²  ÚdisabledNr}  r<  r#  )r  rd  rð   ÚwidgetÚkeysymrX   r]  )r$   r  r]  ry  rx  s   &&   r'   rf  ÚDownloaderGUI._info_saveq  s~   € Ø—‘ˆØ#Ÿz™z×0Ñ0Ö2‰OˆEØ�W�~ Ô+ÙØŠ} §¡¨UÓ!2°q·x±xÀ8Ô7KØ’à!+��g‘Ø"*��h‘Ù˜Ÿ™›Ö%ñ  3ð 	�‰Žr*   c                óV  € V P                   P                  V,          P                  R 4      '       d^   \        V\        4      '       d
   RV,          # VR8  d   RVR,          ,          # VR8  d   RVR,          ,          # RVR	,          ,          # VR
9   d   \	        V4      # RV,          # )ró  z  %sz	  %.1f KBg      �@z	  %.1f MBz	  %.1f GBi   i   @g      0Ag      ÐA)rº   rA   )r  rš  r3  r-   r.   )r$   r-  ÚcolÚvals   &&&&r'   rX  ÚDownloaderGUI._table_reprfunc~  sŽ   € Ø�;‰;×#Ñ# CÕ(×1Ñ1°&×9Ò9Ü˜#œs×#Ò#Ø •|Ð#Ø�w”Ø" c¨I¥oÕ6Ð6Ø�w”Ø" c¨I¥oÕ6Ð6à" c¨I¥oÕ6Ð6à�'Œ>Ü�s“8ˆOà˜C•<Ðr*   c                ó   € ^ RI Hp WP                  P                  8X  d   R#  WP                  n        V P	                  4        V P                  4        R#   \
         d   pT! R\        T4      4        Rp?L4Rp?ii ; i)rº   r÷  NzError Setting Server Index)rü  rø  r½  r   r  r	  r.   r  )r$   r   rø  r  s   &&  r'   r–  ÚDownloaderGUI._set_urlŽ  s`   € Ý0à—(‘(—,‘,ÔÙð	<Ø�H‰HŒLØ×ÑÔð 	�‰Öøô ô 	<ÙÐ2´C¸³F×;Ñ;ûð	<ús   ¤ A ÁA=Á!A8Á8A=c                ó<  € ^ RI Hp V P                  P                  V8X  d   R# WP                  n         V P	                  4        V P                  4        R#   \
         d   pT! RT4        Rp?L+Rp?i\         d   pT! RTP                  4        Rp?LQRp?ii ; i)rº   r÷  Nrú  rû  )	rü  rø  r½  r¥   r  r   r   rÓ  r  )r$   r¥   rø  r  s   &&  r'   rª  ÚDownloaderGUI._set_download_dirš  s~   € Ý0à�8‰8× Ñ  LÔ0Ùð !-�‰Ôð	>Ø×ÑÔð
 	�‰Öøô	 ô 	6ÙÐ1°1×5Ñ5ûÜô 	>ÙÐ2°A·H±H×=Ñ=ûð	>ús)   µA ÁBÁ"	A0Á0BÁ=BÁ>BÂBc                ó  € \        R V P                  P                  4       V P                  P	                  4        F  w  rRVR&   VP                  ^ R4       K  	  V P                  R,          ^ ,          P                  ^ V P                  P                  4       V P                  R,          ^ ,          P                  ^ V P                  P                  4       V P                  P	                  4        F
  w  rRVR&   K  	  R# )zshowing infor±  r²  Úendr   r¥   r¶  N)rÎ   r½  r   rd  rð   ÚdeleteÚinsertr¥   )r$   ry  Úcbs   &  r'   r  ÚDownloaderGUI._show_info«  s¶   € Üˆn˜dŸh™hŸl™lÔ+ØŸ™×*Ñ*Ö,‰IˆEØ%ˆE�'‰NØ�L‰L˜˜EÖ"ñ -ð 	�
‰
�5Õ˜!Õ×#Ñ# A t§x¡x§|¡|Ô4Ø�
‰
�>Õ" 1Õ%×,Ñ,¨Q°·±×0EÑ0EÔFØŸ™×*Ñ*Ö,‰IˆEØ'ˆE�'‹Nó -r*   c                ó°  € ^ RI Hp \        V P                  4       Fm  w  r4VP	                  4       V P
                  8X  g   K&  V^ 8”  g   K/  V P                  V^,
          ,          P	                  4       V n         V P                  4       u # 	  R#   \         d   pT! RT4        Rp?K�  Rp?i\         d   pT! RTP                  4        Rp?K´  Rp?ii ; ir®  )
rü  rø  r  rQ  rÞ   Ú_tabr  r   r   rÓ  ©r$   r  rø  r  rv  s   &*   r'   ra  ÚDownloaderGUI._prev_tabµ  s¡   € Ý0ä §¡Ö0‰FˆAØ�y‰y‹{˜dŸi™iÖ'¨A°®EØ ŸO™O¨A°­EÕ2×8Ñ8Ó:�”	ðFØ×+Ñ+Ó-Ò-ó	 1øô
 !ô >ÙÐ9¸1×=Ò=ûÜô FÙÐ:¸A¿H¹H×EÒEûðFús*   Á9BÂCÂ	B)Â)CÂ6CÂ7CÃCc                óä  € ^ RI Hp \        V P                  4       F‡  w  r4VP	                  4       V P
                  8X  g   K&  V\        V P                  4      ^,
          8  g   KI  V P                  V^,           ,          P	                  4       V n         V P                  4       u # 	  R#   \         d   pT! RT4        Rp?K§  Rp?i\         d   pT! RTP                  4        Rp?KÎ  Rp?ii ; ir®  )rü  rø  r  rQ  rÞ   rÉ  rÏ   rR  r  r   r   rÓ  rÊ  s   &*   r'   rb  ÚDownloaderGUI._next_tabÂ  s¯   € Ý0ä §¡Ö0‰FˆAØ�y‰y‹{˜dŸi™iÖ'¨A´°T·Z±Z³À1Õ1DÖ,EØ ŸO™O¨A°­EÕ2×8Ñ8Ó:�”	ðFØ×+Ñ+Ó-Ò-ó	 1øô
 !ô >ÙÐ9¸1×=Ò=ûÜô FÙÐ:¸A¿H¹H×EÒEûðFús*   ÂB)Â)C/Â4	CÃC/ÃC/ÃC*Ã*C/c                ó  € ^ RI Hp VP                  R,          P                  4       V n         V P                  4        R#   \         d   pT! RT4        Rp?R# Rp?i\         d   pT! RTP                  4        Rp?R# Rp?ii ; i)rº   r÷  r3  rú  Nrû  )	rü  rø  r·  rÞ   rÉ  r  r   r   rÓ  )r$   Úeventrø  r  s   &&  r'   rU  ÚDownloaderGUI._select_tabÏ  sh   € Ý0à—L‘L Õ(×.Ñ.Ó0ˆŒ	ð	>Ø×ÑÖøÜô 	6ÙÐ1°1×5Ò5ûÜô 	>ÙÐ2°A·H±H×=Ò=ûð	>ús)   ®A  Á BÁ	AÁBÁ'BÁ(BÂBr¼   c                óÆ  € V P                   P                  4       pV P                   P                  4        V P                  R 8X  d   V P                  P                  4       pMœV P                  R8X  d   V P                  P                  4       pMpV P                  R8X  d   V P                  P                  4       pMDV P                  R8X  d   V P                  P                  4       pMQ RT P                  ,          4       hV Uu. uF  q0P                  V4      NK  	  ppV P                   P                  V4       V P                  P                  4        F�  w  rVWPP                  8X  d8   VP                  V P                  ^ ,          V P                  ^,          R7       KL  VP                  V P                  ^ ,          V P                  ^,          R7       Kƒ  	  V P                   P!                  RRR7       V P#                  4        V P                   P%                  V4       V P&                  P(                  ! ^–V P                   P*                  P,                  .V P                   P.                  P1                  4       O5!   V P&                  P(                  ! R	V P                   P*                  P,                  .V P                   P.                  P1                  4       O5!   R
# u upi )zall packagesrô   rý   r¼   zbad tab value %r©r9  rù  rñ  rŠ  )Úorderi,  N)r  Úselected_rowr`  rÉ  r½  rR   rô   rý   r¼   Ú_package_to_columnsr‚  rR  rö   r  Ú_FRONT_TAB_COLORÚ_BACK_TAB_COLORrŒ  Ú_color_tabler  r	  ÚafterÚ
_scrollbarr�  Ú_mlbÚyview)r$   rÔ  rö   rU   Úrowsrv  rw  s   &      r'   r  ÚDownloaderGUI._fill_tableÞ  s  € Ø—{‘{×/Ñ/Ó1ˆØ�‰×ÑÔØ�9‰9˜Ô&Ø—H‘H×%Ñ%Ó'‰EØ�Y‰Y˜)Ô#Ø—H‘H×$Ñ$Ó&‰EØ�Y‰Y˜(Ô"Ø—H‘H—O‘OÓ%‰EØ�Y‰Y˜-Ô'Ø—H‘H×(Ñ(Ó*‰Eà4Ð(¨4¯9©9Õ4Ó4�1Ù;@ÓA¹5°4×(Ñ(¨Ö.¹5ˆÐAØ�‰×Ñ˜4Ô ð Ÿ*™*×*Ñ*Ö,‰JˆCØ—i‘iÔØ—‘Ø#×4Ñ4°QÕ7Ø#×4Ñ4°QÕ7ð  ö ð
 —‘Ø#×3Ñ3°AÕ6Ø#×3Ñ3°AÕ6ð  ö ñ -ð 	�‰×Ñ˜L°ÐÔ<Ø×ÑÔØ�‰×Ñ˜<Ô(ð 	�‰�Š�s˜DŸK™K×2Ñ2×6Ñ6ÐR¸¿¹×9IÑ9I×9OÑ9OÓ9QÔRØ�‰�Š�s˜DŸK™K×2Ñ2×6Ñ6ÐR¸¿¹×9IÑ9I×9OÑ9OÓ9QÖRùò5 Bs   ÄKc                óì   € \        \        V P                  4      4       FA  pV P                  P	                  V P                  VR 3,          4      pW P                  VR3&   KC  	  V P                  4        R# )rñ  rô  N)r  rÏ   r  r½  rÔ   rØ  )r$   Úrow_numrÔ   s   &  r'   Ú_update_table_statusÚ"DownloaderGUI._update_table_status  sY   € ÜœS §¡Ó-Ö.ˆGØ—X‘X—_‘_ T§[¡[°¸,Ð1FÕ%GÓHˆFØ-3�K‰K˜ Ð)Ó*ñ /ð 	×ÑÖr*   c                ó  € V P                   '       d   V P                  ! V!  # \        \        V P                  4      4       Uu. uF4  pV P                  V^ 3,          R8w  g   K  V P                  VR3,          NK6  	  ppV P                  P                  4       pV'       g   Ve   V P                  VR3,          .pV P                  P                  W0P                  P                  4      p^ V n	        V P                  WS4       R# u upi )rº   rA   rñ  N)rý  Ú_download_threadedr  rÏ   r  rÔ  r½  r  r¥   r  Ú_download_cb)r$   r  r-  ÚmarkedÚ	selectionÚdownload_iters   &*    r'   r_  ÚDownloaderGUI._download  sä   € ð ××ÐØ×*Ò*¨AÑ.Ð.ô œS §¡Ó-Ô.ó
á.�Ø�{‰{˜3 ˜6Õ" bÑ(ô +ˆD�K‰K˜˜\Ð)×*Ð*Ù.ð 	ð 
ð
 —K‘K×,Ñ,Ó.ˆ	ß˜)Ò/Ø—k‘k )¨\Ð"9Õ:Ð;ˆFàŸ™×.Ñ.¨v·x±x×7LÑ7LÓMˆØˆÔØ×Ñ˜-Ö0ùò
s   ÁDÁ$Dc                ó€  a €  \        V4      pT 3R lp\        T\        4      '       d   S P                  TP                  4       EM_\        T\        4      '       dY   T! TP                  4       TP                  e&   S P                  TP                  P                  4       S P                  R4       R# \        T\        4      '       d?   T! RTP                   P                  ,          4       S ;P"                  ^,          un        EM�\        T\$        4      '       d&   T! RTP                  P                  ,          4       EMb\        T\&        4      '       d&   T! RTP                  P                  ,          4       EM'\        T\(        4      '       d%   T! RTP                  P                  ,          4       Mí\        T\*        4      '       d%   T! RTP                  P,                  ,          4       M³\        T\.        4      '       dc   S ;P"                  ^,          un        T! R	TP                   P                  ,          4       S P1                  TP                   P                  4       M;\        T\2        4      '       d&   S P1                  TP                  P                  4       S P                  P	                  S P4                  S P6                  Y4      pTS P                  R&   R#   \         dK    S P                  4        S P                  P	                  ^
S P
                  ^ 4      pTS P                  R&    R# i ; i)
é
   rå  Nc                 óH   <€ V SP                   R &   SP                  V 4       R# ©r3  N©rk  r  ©r:  r$   s   &€r'   rE  Ú(DownloaderGUI._download_cb.<locals>.show,  ó   ø€ Ø*+ˆD×Ñ Ñ'Ø�I‰I�aŽLr*   zDownloading collection %szDownloading package %súPackage %s is up-to-date!úFinished downloading %r.úUnzipping %sú#Finished downloading collection %r.)ÚnextÚStopIterationrá  r	  rÙ  Ú_show_progressr  r-   rœ   rŸ   r–   r™   rr   Ú_selectr   rb   re   r  ro   rŽ   r�   r†   r   rk   Ú_clear_markrx   Ú	_DL_DELAYrå  )r$   rè  Úidsrë   ÚafteridrE  s   f&&   r'   rå  ÚDownloaderGUI._download_cb"  s5  ø€ ð	Ü�}Ó%ˆCõ	ô �cœ?×+Ò+Ø×Ñ §¡Ö-Ü˜œ\×*Ò*Ù�—‘ÔØ�{‰{Ò&Ø—‘˜SŸ[™[Ÿ^™^Ô,Ø×Ñ Ô%ÙÜ˜Ô3×4Ò4ÙÐ,¨s¯~©~×/@Ñ/@Õ@ÔAØ×Ò Õ!×Ü˜Ô0×1Ò1ÙÐ)¨C¯K©K¯N©NÕ:Ö;Ü˜œ_×-Ò-ÙÐ,¨s¯{©{¯~©~Õ=Ö>ô ˜Ô2×3Ò3ÙÐ+¨c¯k©k¯n©nÕ<Õ=Ü˜Ô.×/Ò/Ù� #§+¡+×"6Ñ"6Õ6Õ7Ü˜Ô4×5Ò5Ø×Ò Õ!ÕÙÐ6¸¿¹×9JÑ9JÕJÔKØ×Ñ˜SŸ^™^×.Ñ.Õ/Ü˜Ô1×2Ò2Ø×Ñ˜SŸ[™[Ÿ^™^Ô,Ø—(‘(—.‘. §¡°×1BÑ1BÀMÓWˆØ(/ˆ�‰�nÓ%øôO ô 	à×%Ñ%Ô'Ø—h‘h—n‘n R¨×)<Ñ)<¸aÓ@ˆGØ,3ˆD�M‰M˜.Ñ)Úð	ús   ƒK( Ë(AL=Ì<L=c                óÀ   € \        \        V P                  4      4       F;  pV P                  VR 3,          V8X  g   K  V P                  P                  V4        R# 	  R# )rñ  N)r  rÏ   r  r  ©r$   r   r-  s   && r'   rù  ÚDownloaderGUI._selectN  sE   € Üœ˜TŸ[™[Ó)Ö*ˆCØ�{‰{˜3 Ð,Õ-°Ö3Ø—‘×"Ñ" 3Ô'Úó +r*   c           	     óh  € \        \        V P                  4      4       F�  pV P                  V P                  VR 3,          ,          w  r#RRrTV P                  P	                  VVVVVR7       V P                  P                  V^ V P                  ^ ,          V P                  ^,          R7       K‘  	  R# )rô  ÚblackÚwhite)r9  Úselectforegroundrù  ÚselectbackgroundrÒ  N)r  rÏ   r  Ú
_ROW_COLORÚ	rowconfigÚitemconfigurerZ  )r$   r-  ÚbgÚsbgÚfgÚsfgs   &     r'   rØ  ÚDownloaderGUI._color_tableT  s�   € äœ˜TŸ[™[Ó)Ö*ˆCØ—o‘o d§k¡k°#°x°-Õ&@ÕA‰GˆBØ �Ø�K‰K×!Ñ!ØØØ!$ØØ!$ð "ô ð �K‰K×%Ñ%Ø�Q 4×#3Ñ#3°AÕ#6À4×CSÑCSÐTUÕCVð &ö ó +r*   c                óª   € \        \        V P                  4      4       F0  pV P                  VR 3,          V8X  g   K  RV P                  V^ 3&   K2  	  R# )rñ  rA   N©r  rÏ   r  r   s   && r'   rú  ÚDownloaderGUI._clear_marke  sB   € Üœ˜TŸ[™[Ó)Ö*ˆCØ�{‰{˜3 Ð,Õ-°Ö3Ø&(�—‘˜C ˜FÓ#ó +r*   c                ór   € \        \        V P                  4      4       F  pR V P                  V^ 3&   K  	  R# )rê  Nr  )r$   r  r-  s   &* r'   rc  ÚDownloaderGUI._mark_allj  s,   € Üœ˜TŸ[™[Ó)Ö*ˆCØ"%ˆD�K‰K˜˜Q˜Óó +r*   c                ó  € V P                   P                  4       pV^ 8¼  dC   V P                   V,          ^ ,          R8w  d   RV P                   V^ 3&   MRV P                   V^ 3&   V P                   P                  ^R7       R# )rº   rA   rê  )r  N)r  rÔ  r  )r$   r  rç  s   &* r'   r`  ÚDownloaderGUI._table_markn  sj   € Ø—K‘K×,Ñ,Ó.ˆ	Ø˜Œ>Ø�{‰{˜9Õ% aÕ(¨BÔ.Ø,.�—‘˜I q˜LÒ)à,/�—‘˜I q˜LÑ)Ø�‰×Ñ ÐÖ#r*   c                óp   € ^ RI Hp RP                  V P                  4      pV! V P                  RV4       R# )rº   ©ÚShowTextrÇ   zNLTK Downloader LogN)Únltk.draw.utilr  r   r  r	  )r$   r  r3  s   &  r'   r˜  ÚDownloaderGUI._show_logw  s*   € Ý+à�y‰y˜×+Ñ+Ó,ˆÙ�—‘Ð0°$Ö7r*   c                óž  € . p\        V P                  4       F±  w  r4V^ 8X  d   VP                  R4       K  VR8X  d   VP                  VP                  4       KC  VR8X  d-   VP                  V P                  P                  V4      4       Kv  VP                  4       P                  RR4      pVP                  \        WR4      4       K³  	  V# )zl
Given a package, return a list of values describing that
package, one for each column in ``self.COLUMNS``.
rA   rñ  rô  rÁ   rm  zn/a)	r  rV  rÐ   r   r½  rÔ   rÞ   ÚreplacerÓ   )r$   rø   r-  Úcolumn_indexÚcolumn_nameÚattrs   &&    r'   rÕ  Ú!DownloaderGUI._package_to_columns}  s¡   € ð
 ˆÜ)2°4·<±<Ö)@Ñ%ˆLØ˜qÔ Ø—
‘
˜2–Ø Ô,Ø—
‘
˜3Ÿ6™6Ö"Ø Ô(Ø—
‘
˜4Ÿ8™8Ÿ?™?¨3Ó/Ö0à"×(Ñ(Ó*×2Ñ2°3¸Ó<�Ø—
‘
œ7 3¨eÓ4Ö5ñ *Að ˆ
r*   c                óp   € V P                   '       d   R # V P                  P                  4        RV n         R # )NT)r  r	  r  )r$   r  s   &*r'   r  ÚDownloaderGUI.destroy“  s%   € Ø�?�?ˆ?ÙØ�‰×ÑÔØˆŽr*   c                ó6  € V P                   e=   V P                  P                  4        F  pV P                   P                  V4       K   	  V P                  '       d#   V P
                  '       d   V P                  4        V P                  P                  4        R # r6   )	r	  r  rð   Úafter_cancelr  rý  Ú_abort_downloadr  r`  )r$   r  rý  s   &* r'   r  ÚDownloaderGUI._destroy™  sn   € Ø�8‰8ÒØŸ=™=×/Ñ/Ö1�Ø—‘×%Ñ% gÖ.ñ 2ð ××Ð ×!2×!2Ð!2Ø× Ñ Ô"ð
 	×Ñ×ÑÖ!r*   c                ó>   € V P                   P                  ! V/ VB  R # r6   )r	  rµ  )r$   rÕ  Úkwargss   &*,r'   rµ  ÚDownloaderGUI.mainloop§  s   € Ø�‰×Ò˜4Ð* 6Ô*r*   an      This tool can be used to download a variety of corpora and models
    that can be used with NLTK.  Each corpus or model is distributed
    in a single zip file, known as a "package file."  You can
    download packages individually, or you can download pre-defined
    collections of packages.

    When you download a package, it will be saved to the "download
    directory."  A default download directory is chosen when you run

    the downloader; but you may also select a different download
    directory.  On Windows, the default download directory is


    "package."

    The NLTK downloader can be used to download a variety of corpora,
    models, and other data packages.

    Keyboard shortcuts::
      [return]	 Download
      [up]	 Select previous package
      [down]	 Select next package
      [left]	 Select previous tab
      [right]	 Select next tab
    c                óÞ   € ^ RI Hp  V! V P                  RV P                  P	                  4       ^KRR7       R#    T! T P                  RT P                  P	                  4       ^KR7        R# ; i)rº   r  zHelp: NLTK DownloaderÚfixed)rÉ   r4  r:  N)r  r  r	  ÚHELPrP  )r$   r  r  s   &* r'   r   ÚDownloaderGUI.helpË  s[   € Ý+ð		UÙØ—‘Ø'Ø—	‘	—‘Ó!ØØ÷øð	UÙ�T—X‘XÐ6¸¿	¹	¿¹Ó8IÐQS×TÐTús	   ˆ/9 ¹0A,c                ó    € ^ RI Hp RpRp ^ RIHp V! W4R7      P	                  4        R#   \
         d    T! T P                  YC4        R# i ; i)rº   r  zAbout: NLTK Downloader)ÚMessage)r™   r  Nz'NLTK Downloader
Written by Edward Loper)r  r  rü  r/  rE  r³  r	  )r$   r  r  ÚABOUTÚTITLEr/  s   &*    r'   rŸ  ÚDownloaderGUI.aboutÚ  sE   € Ý+à?ˆØ(ˆð	-Ý2á˜EÔ/×4Ñ4Ö6øÜô 	-Ù�T—X‘X˜u×,ð	-ús   Œ+ «AÁAc                ó¢  € V P                   p\        VR ,          4      \        VR,          4      r2\        ^ \        VR ,          4      ^,          V P                  ,          4       FŒ  pVP	                  W@P                  ,          ^,           R
W@P                  ,          V,
          ^,
          V^,           V P                  R^P\        V^,          ^,
          4      ^,          ,           ,          R7       KŽ  	  VP                  R4       VP                  RRR7       VP                  RVP                  ^ ^ ^ ^ V P                  ^ ,          R7      4       R	# )rÉ   r+  z	#%02x0000)rÉ   rÚ   ÚgradientÚhidden©r²  Úredbox)rÚ   Niìÿÿÿ)rn  r   r  Ú_gradient_widthÚcreate_lineÚabsÚ
addtag_allÚ
itemconfigÚaddtag_withtagÚcreate_rectanglerm  )r$   r„  rÉ   r+  r  s   &    r'   ro  ÚDownloaderGUI._init_progressbarì  s  € Ø×ÑˆÜ˜A˜g�J›¬¨Q¨x­[Ó)9ˆvÜ�qœ3˜q �z›?¨QÕ.°4×3GÑ3GÕGÖHˆAØ�M‰MØ×(Ñ(Õ(¨2Õ-ØØ×(Ñ(Õ(¨6Õ1°BÕ6Ø˜•Ø×*Ñ*Ø  B¬¨Q°­U°Q­Y«¸"Õ)<Õ$<Õ=ð ö ñ Ið 	
�‰�ZÔ Ø	�‰�Z xˆÔ0ð 	
×ÑØ�a×(Ñ(¨¨A¨q°!¸$×:NÑ:NÈqÕ:QÐ(ÓRö	
r*   c                ó6  € V P                   pVf+   VP                  R^ ^ ^ ^ 4       VP                  RRR7       R # \        VR,          4      \        VR,          4      rCV\        V4      ,          ^d,          ^,           pVP                  R^ ^ WT^,           4       R # )Nr7  r4  r5  r6  rÉ   r+  )rn  Úcoordsr<  r   )r$   Úpercentr„  rÉ   r+  rÌ   s   &&    r'   rø  ÚDownloaderGUI._show_progress   s|   € Ø×ÑˆØŠ?Ø�H‰H�X˜q ! Q¨Ô*Ø�L‰L˜¨8ˆLÖ4ä  '¥
›O¬S°°8µÓ-=�6Øœ#˜e›*Õ$¨Õ+¨aÕ/ˆAØ�H‰H�X˜q ! Q°­
Ö3r*   c                ó®  € V P                   pV P                  '       g   VP                  R RR7       R# VP                  R RR7       VP                  R 4      w  r#rEVR8:  d-   VP	                  R V P
                  ^,          ^,
          ^ 4       MVP	                  R R^ 4       V P                  P                  ^ÈV P                  4      pW`P                  R&   R# )r4  r5  r6  r±  Ú_progress_aliveNiœÿÿÿrM  )
rn  r  r<  ÚbboxÚmover8  r	  rÙ  rE  r  )r$   r„  Úx1Úy1Úx2Úy2rý  s   &      r'   rE  ÚDownloaderGUI._progress_alive
  s©   € Ø×ÑˆØ× × Ð Ø�L‰L˜¨8ˆLÖ4à�L‰L˜¨8ˆLÔ4ØŸV™V JÓ/‰NˆB�BØ�TŒzØ—‘�z D×$8Ñ$8¸1Õ$<ÀÕ#AÀ1ÕEà—‘�z 2 qÔ)Ø—h‘h—n‘n S¨$×*>Ñ*>Ó?ˆGØ/6�M‰MÐ+Ó,r*   c                ó8  € V P                   '       d   V P                  4        R # RV P                  R&   \        \	        V P
                  4      4       Uu. uF4  pV P
                  V^ 3,          R8w  g   K  V P
                  VR3,          NK6  	  ppV P
                  P                  4       pV'       g   Ve   V P
                  VR3,          .p\        V P                  P                  V P                  P                  4      pV P                  . 8X  g   Q hV P                  . 8X  g   Q hV P                  VVV P                  V P                  V P                  4      P                  4        ^ V n        RV n         V P#                  4        V P%                  4        R # u upi )NÚCancelr3  rA   rñ  T)r  r%  rh  r  rÏ   r  rÔ  r©   r½  r   r¥   r  r  Ú_DownloadThreadr   Ústartr  Ú_monitor_message_queuerE  )r$   r  r-  ræ  rç  Údss   &*    r'   rä  Ú DownloaderGUI._download_threaded  so  € ð ××ÐØ× Ñ Ô"Ùð )1ˆ×Ñ˜fÑ%ô œS §¡Ó-Ô.ó
á.�Ø�{‰{˜3 ˜6Õ" bÑ(ô +ˆD�K‰K˜˜\Ð)×*Ð*Ù.ð 	ð 
ð
 —K‘K×,Ñ,Ó.ˆ	ß˜)Ò/Ø—k‘k )¨\Ð"9Õ:Ð;ˆFô
 ˜Ÿ™Ÿ™ d§h¡h×&;Ñ&;Ó<ˆð ×'Ñ'¨2Ô-Ð-Ð-Ø×)Ñ)¨RÔ/Ð/Ð/Ø×ÑØØØ×ÑØ×$Ñ$Ø×&Ñ&ó	
÷ ‰%Œ'ð ˆÔØ ˆÔØ×#Ñ#Ô%ð 	×ÑÖùòA
s   ÁFÁ5Fc                óÌ   € V P                   '       dR   V P                  P                  4        V P                  P	                  R 4       V P                  P                  4        R# R# )ÚabortN)r  r   Úacquirer  rÐ   Úreleaser>   s   &r'   r%  ÚDownloaderGUI._abort_downloadH  sK   € Ø××ÐØ×Ñ×'Ñ'Ô)Ø×&Ñ&×-Ñ-¨gÔ6Ø×Ñ×'Ñ'Ö)ñ r*   c                   ó,   a € ] tR tRt o R tR tRtV tR# )ÚDownloaderGUI._DownloadThreadiN  c                ó€   € Wn         W n        W0n        W@n        WPn        \
        P                  P                  V 4       R # r6   )Údata_serverrö   ÚlockÚmessage_queuerU  rþ  ÚThreadr(   )r$   r\  rö   r]  r^  rU  s   &&&&&&r'   r(   Ú&DownloaderGUI._DownloadThread.__init__O  s1   € Ø*ÔØŒJØŒIØ!.ÔØŒJÜ×Ñ×%Ñ% dÖ+r*   c                ó.  € V P                   P                  V P                  4       Fœ  pV P                  P	                  4        V P
                  P                  V4       V P                  '       d9   V P
                  P                  R 4       V P                  P                  4         R# V P                  P                  4        Kž  	  V P                  P	                  4        V P
                  P                  R4       V P                  P                  4        R# )ÚabortedNÚfinished)	r\  r  rö   r]  rV  r^  rÐ   rU  rW  r  s   & r'   r±  Ú!DownloaderGUI._DownloadThread.runW  s¼   € Ø×'Ñ'×5Ñ5°d·j±jÖA�Ø—	‘	×!Ñ!Ô#Ø×"Ñ"×)Ñ)¨#Ô.à—:—:�:Ø×&Ñ&×-Ñ-¨iÔ8Ø—I‘I×%Ñ%Ô'ÚØ—	‘	×!Ñ!Ö#ñ Bð �I‰I×ÑÔØ×Ñ×%Ñ% jÔ1Ø�I‰I×ÑÖr*   )rU  r\  rö   r]  r^  N)rD   rE   rF   rG   r(   r±  rJ   rK   rL   s   @r'   rO  rZ  N  s   ø‡ € ò	,÷	 ð 	 r*   rO  c                óZ	  a € V 3R  lpS P                   P                  4       '       g   R# S P                   EFé  pVR8X  g   VR8X  d·   S P                  4        RS n        RS P
                  R&   S P                  R S P                  R S P                   P                  4        VR8X  d   V! R4       S P                  R4        R# S P                  P                  ^dS P                  R4      pVS P                  R	&    R# \        V\        4      '       d   S P                  VP                  4       Kû  \        V\        4      '       da   V! VP                   4       VP"                  e&   S P%                  VP"                  P&                  4       S P                  R4       RS n         R# \        V\(        4      '       d@   V! R
VP*                  P&                  ,          4       S ;P,                  ^,          un        EKÆ  \        V\.        4      '       dV   S P0                  P3                  VP"                  P&                  4       V! RVP"                  P&                  ,          4       EK1  \        V\4        4      '       d'   V! RVP"                  P&                  ,          4       EKm  \        V\6        4      '       d'   V! RVP"                  P&                  ,          4       EK©  \        V\8        4      '       d'   V! RVP"                  P:                  ,          4       EKå  \        V\<        4      '       d'   V! RVP"                  P&                  ,          4       EK!  \        V\>        4      '       de   S ;P,                  ^,          un        V! RVP*                  P&                  ,          4       S PA                  VP*                  P&                  4       EK›  \        V\B        4      '       g   EK´  S P                  4        S PA                  VP"                  P&                  4       EKì  	  S P                  '       d   RS PD                  R&   S P                  R S P                   P                  4        S P                  P                  S PF                  S PH                  4      pVS P                  R	&   R# )c                 óH   <€ V SP                   R &   SP                  V 4       R# rí  rî  rï  s   &€r'   rE  Ú2DownloaderGUI._monitor_message_queue.<locals>.showh  rñ  r*   Nrc  rb  FrD  r3  :NNNzDownload aborted!rQ  rG  zDownloading package %rrò  ró  rô  zFinished installing %srõ  zAborting download...)%r   rV  r  rá  r  rh  r  rW  rø  r	  rÙ  r  r-   rœ   rŸ   r–   r™   rr   rù  r   rb   re   r  ro   r½  rb  rŽ   r�   r†   r   rŠ   rk   rú  rx   rk  Ú_MONITOR_QUEUE_DELAYrQ  )r$   rE  rë   rý  s   f   r'   rQ  Ú$DownloaderGUI._monitor_message_queueg  sT  ø€ õ	ð
 ×"Ñ"×*Ñ*×,Ò,ÙØ×+Õ+ˆCà�jÔ  C¨9Ô$4à×)Ñ)Ô+Ø$)�Ô!Ø0:�×%Ñ% fÑ-Ø×,Ñ,¨QÐ/Ø×.Ñ.¨qÐ1Ø×#Ñ#×+Ñ+Ô-Ø˜)Ô#ÙÐ,Ô-Ø×'Ñ'¨Ô-ò ð #Ÿh™hŸn™n¨S°$×2EÑ2EÀtÓL�GØ>E�D—M‘MÐ":Ñ;Úô ˜C¤×1Ò1Ø×#Ñ# C§L¡LÖ1Ü˜C¤×.Ò.Ù�S—[‘[Ô!Ø—;‘;Ò*Ø—L‘L §¡§¡Ô0Ø×#Ñ# DÔ)Ø$)�Ô!ÚÜ˜CÔ!7×8Ò8ÙÐ0°3·>±>×3DÑ3DÕDÔEØ× Ò  AÕ%× Ð Ü˜CÔ!4×5Ò5Ø—‘×+Ñ+¨C¯K©K¯N©NÔ;ÙÐ-°·±·±Õ>×?Ü˜C¤×1Ò1ÙÐ0°3·;±;·>±>ÕA×Bô ˜CÔ!6×7Ò7ÙÐ/°#·+±+·.±.Õ@×AÜ˜CÔ!2×3Ò3Ù�^ c§k¡k×&:Ñ&:Õ:×;Ü˜CÔ!3×4Ò4ÙÐ-°·±·±Õ>×?Ü˜CÔ!8×9Ò9Ø× Ò  AÕ%Õ ÙÐ:¸S¿^¹^×=NÑ=NÕNÔOØ× Ñ  §¡×!2Ñ!2×3Ü˜CÔ!5×6Õ6Ø×)Ñ)Ô+Ø× Ñ  §¡§¡×0ñg ,ðp ×%×%Ð%Ø*@ˆD×Ñ Ñ'ð ×$Ñ$ QÐ'Ø×Ñ×#Ñ#Ô%ð —(‘(—.‘. ×!:Ñ!:¸D×<WÑ<WÓXˆØ29ˆ�‰Ð.Ó/r*   )r  r  r  r  rh  r   r  r  r½  rd  r  r  rn  rk  rj  rÉ  rQ  r  rR  rý  r	  )rA   rñ  rò  ró  rô  rõ  Ú	CopyrightÚContactÚLicenseÚAuthorÚSubdirÚChecksum)rA   rñ  rò  ró  rô  )z#000z#ccc)z#afaz#080)z#ffaz#880)z#faaz#800)ú#fffz#888)rp  z#45c)ú#aaaz#67a)z#f00rq  ©Tr6   )IrD   rE   rF   rG   rH   rV  rW  r[  r\  rœ  r„  r  r©   rÕ   r×   rÖ   rØ   r  rZ  rÖ  r×  rm  rT  r(   r  r  r  r  ri  r@  rf  rX  r–  rª  r  ra  rb  rU  rÉ  Ú_rowsr  rá  r_  rû  rå  rù  rØ  rú  rc  r`  r˜  rÕ  r  r  rµ  rÙ   Údedentr,  r   rŸ  r8  ro  rø  rE  rä  r%  rþ  r_  rO  rh  rQ  rJ   rK   rL   s   @r'   r´  r´    s0  ø‡ € ñò€GðDð ˜!˜V Q¨°°8¸QÐ?€NðCð 	ˆAØ�bØ�Ø�Ø˜Ø�"ð€Mð<ð Ðð ò C€OØAó ˆØ�GŽ|Ðˆ|ñ ãˆØ�GŽ|Ðˆ|ñ ãˆØ�GŽ|Ðˆ|ñ ð '€Oð 	×ÑÐ.Ø×ÑÐ,Ø×ÑÐ*Ø× Ñ Ð"2ð	€Jð #€Kð (ÐØ&€Oà&€Oà$€Iô45òl
òs.òjE&òN0ò
òôò ò 
òò"(òFòFò	>ð €Dà€Eò'SòRò1ð& €Iò*0òXòò")ò
&ò$ò8òò,ò"ò+ð �?Š?ð	ó€Dò:Uò
-ð  €Oò
ò(4ò7ò$*òX*ô ˜)×*Ñ*ô  ð. Ð÷I:ð I:r*   r´  c                ó¾   € \        V \        4      '       d+   \        V R4      ;_uu_ 4       p\        V4      uuRRR4       # \        V 4      #   + '       g   i     L; i)zn
Calculate and return the MD5 checksum for a given file.
``file`` may either be a filename or an open stream.
ÚrbN)r-   r.   r+  Ú_md5_hexdigest©r?  r6  s   & r'   rq  rq  ¹  sD   € ô
 �$œ×ÒÜ�$˜×Ô Ü! &Ó)÷ Òä˜$ÓÐ÷ ×úó   «AÁA	c                 ó’   € \        4       p V P                  R4      pV'       g    VP                  4       # VP                  V4       K>  ©Tr&  )r   r/  r#   Ú	hexdigest)ÚfpÚ
md5_digestr9  s   &  r'   rw  rw  Ä  s?   € Ü“€JØ
Ø—‘˜	Ó"ˆßØà×ÑÓ!Ð!ð 	×Ñ˜%Ö r*   c                ó¾   € \        V \        4      '       d+   \        V R4      ;_uu_ 4       p\        V4      uuRRR4       # \        V 4      #   + '       g   i     L; i)zr
Calculate and return the SHA-256 checksum for a given file.
``file`` may either be a filename or an open stream.
rv  N)r-   r.   r+  Ú_sha256_hexdigestrx  s   & r'   Úsha256_hexdigestr�  Î  sD   € ô
 �$œ×ÒÜ�$˜×Ô Ü$ VÓ,÷ Òä˜TÓ"Ð"÷ ×úry  c                 ó’   € \        4       p V P                  R4      pV'       g    VP                  4       # VP                  V4       K>  r{  )r   r/  r#   r|  )r}  Úsha256_digestr9  s   &  r'   r€  r€  Ù  s?   € Ü“H€MØ
Ø—‘˜	Ó"ˆßØà×"Ñ"Ó$Ð$ð 	×Ñ˜UÖ#r*   c                ón   € \        WV4       F$  p\        V\        4      '       g   K  \        V4      h	  R# )zP
Extract the contents of the zip file ``filename`` into the
directory ``root``.
N)r4  r-   r–   r˜   )r   Úrootr%  r™   s   &&& r'   r!   r!   æ  s-   € ô
 ˜x¨wÖ7ˆÜ�gœ|×,Ô,Ü˜GÓ$Ð$ó 8r*   c              #   óü  "  € V'       di   \         P                  P                  R \        P                  P                  V 4      ^,          ,          4       \         P                  P                  4         \        P                  ! V 4      pTP                  T4       T'       d   \        4        R# R#   \        P                   d    \        T R4      x €  R# \         d   p\        Y4      x €  Rp?R# Rp?ii ; i5i)rô  zError with downloaded zip fileN)r   Ústdoutr0  r   r   r   ÚflushÚzipfileÚZipFileÚ
BadZipFiler–   r˜   Ú
extractallrÎ   )r   r…  r%  Úzfr  s   &&&  r'   r4  r4  ð  s­   é € ßÜ�
‰
×Ñ˜¬"¯'©'¯-©-¸Ó*AÀ!Õ*DÕDÔEÜ�
‰
×ÑÔðÜ�_Š_˜XÓ&ˆð ‡M�M�$ÔçÜŽñ øô ×Ñô Ü˜8Ð%EÓFÒFÚÜô Ü˜8Ó'Ò'ÝûðüsH   ‚A1C<Á4B1 Â
C<Â#C<Â1#C9ÃC<ÃC9Ã C9Ã!C4Ã.C<Ã4C9Ã9C<c                óÎ  € . p\        \        P                  P                  V R4      4       EF_  w  r4p\        P                  ! VP
                  4      pV RV R\        P                  P                  VP
                  4      ^,           2p\        R VP                  4        4       4      pVP                  RRV,          4       VP                  RRVP                  ,          4       VP                  RR\        VP
                  4      ,          4       VP                  RR\        VP
                  4      ,          4       VP                  R	V4       VP                  R
4      '       g   VP                  R
V4       VP                  V4       EKb  	  \        \!        \        P                  P                  V R4      4      4      p	\        4       p
W),            FZ  pVP                  R4      V
9   d"   \#        RVP                  R4      ,          4      hV
P%                  VP                  R4      4       K\  	  \&        P(                  ! R4      pVP                  \&        P(                  ! R4      4       V^ ,          P+                  \-        VR R7      4       VP                  \&        P(                  ! R4      4       V^,          P+                  \-        V	R R7      4       \/        V4       V# )a  
Create a new data.xml index file, by combining the xml description
files for various packages and collections.  ``root`` should be the
path to a directory containing the package xml and zip files; and
the collection xml files.  The ``root`` directory is expected to
have the following subdirectories::

  root/
    packages/ .................. subdirectory for packages
      corpora/ ................. zip & xml files for corpora
      grammars/ ................ zip & xml files for grammars
      taggers/ ................. zip & xml files for taggers
      tokenizers/ .............. zip & xml files for tokenizers
      etc.
    collections/ ............... xml files for collections

For each package, there should be two files: ``package.zip``
(where *package* is the package name)
which contains the package itself as a compressed zip file; and
``package.xml``, which is an xml description of the package.  The
zipfile ``package.zip`` should expand to a single subdirectory
named ``package/``.  The base filename ``package`` must match
the identifier given in the package's xml file.

For each collection, there should be a single file ``collection.zip``
describing the collection, where *collection* is the name of the collection.

All identifiers (for both packages and collections) must be unique.
rR   r   c              3   ó8   "  € T F  qP                   x € K  	  R # 5ir6   )Ú	file_size)r  Úzf_infos   & r'   r  Úbuild_index.<locals>.<genexpr>-	  s   é € ÐK¹]°'×-Ö-»]ùrÄ  r   z%sr   r   Úsha256_checksumr   r   r¼   r   zDuplicate UID: %srœ  c                 ó$   € V P                  R 4      # r7   ©rX   rq   s   &r'   rA  Úbuild_index.<locals>.<lambda>I	  s   € ¸7¿;¹;ÀtÔ;Lr*   r½   c                 ó$   € V P                  R 4      # r7   r•  rd   s   &r'   rA  r–  K	  s   € ÀÇÁÐPTÔAUr*   )Ú_find_packagesr   r   r   rj  r   r   r  Úinfolistr�  rk  rq  r�  rX   rÐ   rì   Ú_find_collectionsr
  Úaddr   ÚElementr‚  rÒ   Ú_indent_xml)r…  Úbase_urlrR   Úpkg_xmlr�  r   Úzipstatr   r   r¼   ÚuidsrU   Útop_elts   &&           r'   Úbuild_indexr£  
	  s  € ð> €HÜ-¬b¯g©g¯l©l¸4ÀÓ.L×MÑˆ�VÜ—'’'˜"Ÿ+™+Ó&ˆØ�
˜!˜F˜8 1¤R§W¡W§]¡]°2·;±;Ó%?ÀÕ%BÐ$CÐDˆÜÑK¸R¿[¹[¼]ÓKÓKˆð 	�‰�O T¨MÕ%9Ô:Ø�‰�F˜D 7§?¡?Õ2Ô3Ø�‰�J ¤}°R·[±[Ó'AÕ AÔBØ�‰Ð% tÔ.>¸r¿{¹{Ó.KÕ'KÔLØ�‰�H˜fÔ%à�{‰{˜5×!Ò!Ø�K‰K˜˜sÔ#ð 	�‰˜× ñ!  Nô& Ô(¬¯©¯©°d¸MÓ)JÓKÓL€Kô ‹5€DØ×&Ð&ˆØ�8‰8�D‹>˜TÔ!ÜÐ0°4·8±8¸D³>ÕAÓBÐBØ�‰�—‘˜$“Ö ñ 'ô ×!Ò! +Ó.€GØ‡N�N”;×&Ò& zÓ2Ô3ØˆA…J×Ñ”f˜XÑ+LÔMÔNØ‡N�N”;×&Ò& }Ó5Ô6ØˆA…J×Ñ”f˜[Ñ.UÔVÔWä�ÔØ€Nr*   c                óú  € \        V 4      ^ 8”  dë   V P                  ;'       g    RP                  4       R,           V,           R,           V n        V  F  p\        W!R,           4       K  	  V RR  FA  pVP                  ;'       g    RP                  4       R,           V,           R,           Vn        KC  	  V R,          P                  ;'       g    RP                  4       R,           V,           V R,          n        R# R# )zê
Helper for ``build_index()``: Given an XML ``ElementTree``, modify it
(and its descendents) ``text`` and ``tail`` attributes to generate
an indented tree, where each nested element is indented by 2
spaces with respect to its parent.
rA   rÇ   rH  Nr   )rÏ   r3  rP  r�  Útail)r1   ré   rY   s   && r'   r�  r�  Q	  s¼   € ô ˆ3ƒx�!„|Ø—H‘H—N�N ×)Ñ)Ó+¨dÕ2°VÕ;¸dÕBˆŒÛˆEÜ˜¨�}Ö-ñ à˜˜"“XˆEØŸ*™*×*Ð*¨×1Ñ1Ó3°dÕ:¸VÕCÀdÕJˆEŽJñ à˜B�Ÿ™×*Ð*¨×1Ñ1Ó3°dÕ:¸VÕCˆˆB�Žñ r*   c                ó–  a€ \         P                  P                  \         P                  P                  V4      ^,          4      ^ ,          oV P	                  R4      S8w  d+   \        RP                  V P	                  R4      S4      4      h\        V3R lVP                  4        4       4      '       d   \        RS: RS: R24      hR# )zf
Helper for ``build_index()``: Perform some checks to make sure that
the given package is consistent.
r   z&package identifier mismatch ({} vs {})c              3   óv   <"  € T F.  qS8g  ;'       d    VP                  SR ,           4      '       * x € K0  	  R# 5i©r   N©rì  ©r  r   Úuids   & €r'   r  Ú!_check_package.<locals>.<genexpr>n	  s.   øé € Ð
VÉÀ�C‰K×:Ð: §¡°°cµ	Ó :Ô:Ô:Ëùs   ƒ9“&9úZipfile ú..zip does not expand to a single subdirectory r   N)	r   r   r   r   rX   r
  rÛ   r  Únamelist)rŸ  Úzipfilenamer�  r«  s   &&&@r'   Ú_check_packager±  a	  s�   ø€ ô �'‰'×
Ñ
œ2Ÿ7™7Ÿ=™=¨Ó5°aÕ8Ó
9¸!Õ
<€CØ‡{�{�4Ó˜CÔÜØ4×;Ñ;¸G¿K¹KÈÓ<MÈsÓSó
ð 	
ô
 Ô
VÈÏÉÌÓ
V×VÒVÝã"%£sð,ó
ð 	
ñ Wr*   c                óž  € \         P                  ! RRRV .\         P                  \         P                  R7      pVP                  4       w  r#VP                  ^ 8w  g   V'       g	   V'       gL   \        R\        P                  P                  V 4      ^,          : R\        P                  ! V4      : 24      hVP                  4       ^,          # )zƒ
Helper for ``build_index()``: Calculate the subversion revision
number for a given file (by using ``subprocess`` to run ``svn``).
ÚsvnrÔ   z-v)r‡  r¸  z#Error determining svn_revision for r  )Ú
subprocessÚPopenÚPIPEÚcommunicateÚ
returncoder
  r   r   r   rÙ   rÚ   )r   rƒ  r‡  r¸  s   &   r'   Ú_svn_revisionr¹  v	  s—   € ô
 	×ÒØ	�˜$ Ð)Ü�‰Ü�‰ô	€Að
 —}‘}“Ñ€VØ‡|�|�qÔŸF¯&Ýä�w‰w�}‰}˜XÓ& q×)Ð)¬8¯=ª=¸Õ+@ðBó
ð 	
ð �<‰<‹>˜!ÕÐr*   c              #  ó  "  € \         P                  ! V 4       Fm  w  rpV Fa  pVP                  R4      '       g   K  \         P                  P	                  W4      p\
        P                  ! V4      P                  4       x € Kc  	  Ko  	  R# 5i)z‚
Helper for ``build_index()``: Yield a list of ElementTree.Element
objects, each holding the xml for a single package collection.
ú.xmlN)r   rs  r3  r   r   r   r/   r�  )r…  ÚdirnameÚ_subdirsrn  r   Úxmlfiles   &     r'   rš  rš  ‰	  se   é € ô
 %'§G¢G¨D¦MÑ ˆ˜5ÛˆHØ× Ñ  ×(Ô(ÜŸ'™'Ÿ,™, wÓ9�Ü!×'Ò'¨Ó0×8Ñ8Ó:Ô:ó ó %2ùs   ‚6B½ABc           
   #  óD  a"  € ^ RI Hp . p\        P                  ! V 4       EF  w  r4pRP	                  V! W4      4      pV EFá  pVP                  R4      '       Ed   \        P                  P	                  W74      pVRR R,           p	 \        P                  ! V	4      p
 \        P                  ! T4      P                  4       p\        P                  P                  TRR 4      ^,          oTP                  R4      S8w  d$   \        R	TP                  R4      : R
S: R24      h\!        T3R lT
P#                  4        4       4      '       d   \        RS: RS: R24      hYÊT3x € EK+  VP                  R4      '       g   EKE  \        P                  P%                  V4      ^ ,          p\        P                  P	                  W=R,           4      p\        P                  P'                  V4      '       d   EK¹  \(        P*                  ! V RVR,            RV R2^R7       EKä  	   VP-                  R4       EK  	  R#   \         d   p\        RT	: RT 24      ThRp?ii ; i  \         d   p\        RT: RT 24      ThRp?ii ; i  \         d     EKz  i ; i5i)ab  
Helper for ``build_index()``: Yield a list of tuples
``(pkg_xml, zf, subdir)``, where:
  - ``pkg_xml`` is an ``ElementTree.Element`` holding the xml for a
    package
  - ``zf`` is a ``zipfile.ZipFile`` for the package's contents.
  - ``subdir`` is the subdirectory (relative to ``root``) where
    the package was found (e.g. 'corpora' or 'grammars').
)Ú
_path_fromr   r»  Nr$  zError reading file z!
r   zpackage identifier mismatch (z vs rÈ   c              3   óx   <"  € T F/  pVS8g  ;'       d    VP                  SR ,           4      '       * x € K1  	  R# 5ir¨  r©  rª  s   & €r'   r  Ú!_find_packages.<locals>.<genexpr>¼	  s7   øé € ð á -˜ð ˜S‘[×CÐC¨¯©¸¸s½Ó)CÔ%CÔCÛ -ùs   ƒ:”&:r­  r®  z exists, but z' cannot be found! This could mean that z can not be downloaded.)Ú
stacklevelz.svnrM  )Únltk.corpus.reader.utilrÀ  r   rs  r   r3  r   r‰  rŠ  r˜   r
  r   r/   r�  r   rX   r  r¯  r   r(  ÚwarningsÚwarnr)  )r…  rÀ  rR   r¼  Úsubdirsrn  Úrelpathr   Úxmlfilenamer°  r�  r  rŸ  Úresourcenamer«  s   &             @r'   r˜  r˜  •	  sY  øé € õ 3ð €HÜ#%§7¢7¨4§=Ñˆ˜%Ø—(‘(™: dÓ4Ó5ˆÜˆHØ× Ñ  ×(Ó(Ü Ÿg™gŸl™l¨7Ó=�Ø)¨#¨2Ð.°Õ7�ðYÜ Ÿš¨Ó5�BðYÜ)×/Ò/°Ó<×DÑDÓF�Gô
 —g‘g—m‘m K°°Ð$4Ó5°aÕ8�Ø—;‘;˜tÓ$¨Ô+Ý$à$+§K¡K°Ö$5³sð<óð ô ô à "§¡¤ó÷ ò õ %ã58»#ð?óð ð
  7Ð*Õ*à×"Ñ" 6×*Õ*ä!Ÿw™w×/Ñ/°Ó9¸!Õ<�Ü Ÿg™gŸl™l¨7À6Õ4IÓJ�Ü—w‘w—~‘~ k×2Õ2Ü—M’MØ#˜* M°,ÀÕ2GÐ1Hð I0Ø0<¨~Ð=TðVà#$÷ð ñO ð\	Ø�N‰N˜6×"óc $1øô !ô YÜ$Ð':¸;¹/ÈÈQÈCÐ%PÓQÐWXÐXûðYûô !ô YÜ$Ð':¸;¹/ÈÈQÈCÐ%PÓQÐWXÐXûðYûôL ô 	Ûð	üsz   ƒBJ Â
IÂ!$I'ÃB<J ÆA.J Ç;-J È)JÈ:J ÉI$ÉIÉI$É$J É'J
É2JÊJ
Ê
J ÊJÊJ ÊJÊJ c                  ó@   € \        \        4      P                  4        R # r6   )r°  Ú_downloaderr±  r,   r*   r'   Údownload_shellrÍ  ä	  s   € Ü”KÓ ×$Ñ$Ö&r*   c                  ó@   € \        \        4      P                  4        R # r6   )r´  rÌ  rµ  r,   r*   r'   Údownload_guirÏ  è	  s   € Ü”+Ó×'Ñ'Ö)r*   c                  ó.   € \         P                  4        R # r6   )rÌ  r#   r,   r*   r'   r#   r#   ì	  s   € Ü×ÑÖr*   Ú__main__)ÚOptionParserz-dz--dirÚdirz!download package to directory DIRÚDIR)Údestr   Úmetavarz-qz--quietrR  Ú
store_trueFzwork quietly)rÕ  ÚactionÚdefaultr   z-fz--forcer  z"download even if already installedz-ez--exit-on-errorrS  zexit if an error occursz-uz--urlr·   ÚNLTK_DOWNLOAD_URLzdownload server index url)rÕ  rÙ  r   )r·   )r  r¥   rR  r  rS  )r¥   rR  r  rS  rr  rI  )MrH   rN  r-  r   Úshutilr´  r   rÙ   rþ  r|  rÅ  r‰  Úhashlibr   r   Úurllib.errorr   r   Úurllib.requestr   Ú	xml.etreer   r~  r	   rO   r`   rb   rk   ro   rx   r}   r�   r†   rŠ   rŽ   r’   r–   rœ   r¢   r©   r°  r´  rq  rw  r�  r€  r!   r4  r£  r�  r±  r¹  rš  r˜  rÌ  rQ  rÍ  rÏ  r#   rD   ÚoptparserÒ  ÚparserÚ
add_optionr�  rX   Ú
parse_argsrÅ  rÕ  r·   Ú
downloaderÚpkg_idrÓ  rR  r  rS  Úrvr,   r*   r'   Ú<module>rç     s.  ðñ<ð~Yót Û Û 	Û Û Û 
Û Û Û Û Û ß ß ,Ý "Ý !ã ÷Z(ñ Z(÷z&+ñ &+÷\!ñ !ô
%Ð.ô %ô%Ð/ô %ôÐ+ô ôÐ,ô ôÐ,ô ôÐ-ô ôÐ)ô ôÐ*ô ôÐ'ô ôÐ$ô ô#Ð$ô #ô!Ð'ô !ô)Ð0ô )÷k
(ñ k
(÷\bñ b÷Jn:ñ n:òn ò"ò#ò%ô%ôò4DôNDò 
ò*ò&	;òAñV ‹l€Ø×Ñ€ò'ò*òð ˆzÕÝ%á‹^€FØ
×ÑØØØØ0Øð ô ð ×ÑØØØØØØð ô ð ×ÑØØØØØØ1ð ô ð ×ÑØØØØØØ&ð ô ð ×ÑØØØØ—
‘
—‘Ð2Ó3Ø(ð ô ð ×'Ñ'Ó)�O€Wˆdá¨W×-EÑ-EÔF€JçÛˆFØ×$Ñ$Ø!Ø$Ÿ[™[Ø—m‘mØ—m‘mØ%×3Ñ3ð %ó ˆBð �UŽ{˜w×4×4Ò4Úó ð 	×ÑØ Ÿ™Ø—-‘-Ø—-‘-Ø!×/Ñ/ð	 	ö 	
ñw r*   