ó
    ™“,jz¸  ã                   ó„  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKr\R                  S:  a  SSKJr  OSSKJr  SSKrSSKrSSKrSSKrSSKr SSKJr  SSKr\
R6                  " S5      rSSKr\R<                  rS	r%\RL                  RN                  r'\RL                  RP                  r(Sq)\R                  S   S
:¬  r*\RV                  " 5       S:H  r,\RV                  " 5       R[                  S5      r.Sq/S r0 " S S\15      r2\3" S \" \4" \25      5       5       5      \2l5        S r6S r7S r8S r9S r:\:" 5       r;S r<SGS jr=S r>S r?SHS jr@  SIS jrAS rBS rCS rDS  rES! rF\RŽ                  S" 5       rHSJS# jrIS$ rJS% rKSKS& jrLS' rMS( rNS) rOS* rPS+ rQS, rRS- rSS. rTS/ rUS0 rVS1 rWS2 rXS3 rYSLS4 jrZS5 r[S6 r\S7 r]S8 r^S9S:S;.r_S<S=S;.r`S>raS?rbS@rcSArdSBreSCrfSDrgSErh\iSF:X  a  \^" 5         gg! \ a<    SSK Jr  SSK!J"r  \
R6                  " S5      rSSK#r#\#RH                  R<                  r GN©f = f)Mz‚
nodeenv
~~~~~~~
Node.js virtual environment

:copyright: (c) 2014 by Eugene Kalinin
:license: BSD, see LICENSE for more details.
é    N)é   r   )Úquote)ÚSafeConfigParserÚ	iteritems)ÚConfigParserÚitemsz1.10.0r   ÚWindows)ÚCYGWINÚMSYSFc                 ó$  • U (       a  [         (       a  U $  U R                  S5      $ ! [         a^     U R                  S5        U s $ ! [         a7     U R                  S5      R                  S5      s s $ ! [         a      Of = ff = f U $ f = f)z:Convert given text to UTF-8 encoding (as far as possible).Úutf8Úcp1252)Úis_PY3ÚencodeÚUnicodeDecodeErrorÚdecode)Útexts    Ú•C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\nodeenv.pyÚto_utf8r   D   s‘   € æ—6’6Øˆð
Ø�{‰{˜6Ó"Ð"øÜó ð	Ø�K‰K˜ÔØŠKøÜ!ó 	ðØ—{‘{ 8Ó,×3Ñ3°FÓ;Ô;øÜ%ó Úðúð	úð à€KðúsV   –' §
B²AÁBÁ
BÁA6Á1BÁ2BÁ6
BÂ BÂBÂBÂBÂBÂBc                   óh   • \ rS rSrSrSrSrSrSrSr	Sr
SrSrSrSrSr\SS	 j5       r\S
 5       rSrg)ÚConfigéX   z
Configuration namespace.
ÚlatestFÚ2ÚmakeTNc           	      óÂ  • [        U5       GHL  n[        R                  R                  U5      n[        R                  R	                  U5      (       d  MI  [        5       nUR                  U5        SnUR                  U5      (       d  M~  [        [        U 5      5       H¶  u  pgUR                  S5      (       d  UR                  XV5      (       d  M3  [        U[        5      (       a  UR                  XV5      nOUR                  XV5      nU(       a8  [!        SR#                  [        R                  R%                  U5      Xg5      5        ['        XU5        M¸     GMO     [        R                  R	                  S5      (       aN  [)        SS5       n['        U SUR+                  5       R-                  5       R/                  S5      5        SSS5        gg! , (       d  f       g= f)	z¥
Load configuration from the given files in reverse order,
if they exist and have a [nodeenv] section.
Additionally, load version from .node-version if file exists.
ÚnodeenvÚ_zCONFIG {0}: {1} = {2}z.node-versionÚrÚnodeÚvN)ÚreversedÚosÚpathÚ
expanduserÚexistsr   ÚreadÚhas_sectionr   ÚvarsÚ
startswithÚ
has_optionÚ
isinstanceÚboolÚ
getbooleanÚgetÚprintÚformatÚbasenameÚsetattrÚopenÚreadlineÚstripÚlstrip)	ÚclsÚconfigfilesÚverboseÚ
configfileÚini_fileÚsectionÚattrÚvalÚv_files	            r   Ú_loadÚConfig._loadj   sa  € ô # ;×/ˆJÜŸ™×+Ñ+¨JÓ7ˆJÜ—7‘7—>‘> *×-Ñ-Ùä#“~ˆHØ�M‰M˜*Ô%ØˆGØ×'Ñ'¨×0Ñ0Ùä&¤t¨C£yÖ1‘	�Ø—?‘? 3×'Ñ'Ø×&Ñ& w×5Ñ5Ùä˜c¤4×(Ñ(Ø"×-Ñ-¨gÓ<‘Cà"Ÿ,™, wÓ5�CæÜÐ1×8Ñ8ÜŸ™×(Ñ(¨Ó4°dóAô Bä˜ 3Ö'ô 2ñ 0ô4 �7‰7�>‰>˜/×*Ñ*Ü�o sÔ+¨vÜ˜˜V V§_¡_Ó%6×%<Ñ%<Ó%>×%EÑ%EÀcÓ%JÔK÷ ,Ð+ð +ß+Õ+ús   Æ9GÇ
Gc                 ó˜   • [        S5        [        SSR                  S [        [        [	        U 5      5      5       5       5      -   5        g)z 
Print defaults for the README.
z    [nodeenv]z    z
    c              3   óh   #   • U  H(  u  pUR                  S 5      (       a  M  U< SU< 3v •  M*     g7f)r   z = N©r*   )Ú.0Úkr!   s      r   Ú	<genexpr>ÚConfig._dump.<locals>.<genexpr>•   s,   é € ð %&Ú+G¡4 1Ø—<‘< ×$ó ›šAÕÒ+Gùs   ‚2¢2N)r0   ÚjoinÚsortedr   r)   )r8   s    r   Ú_dumpÚConfig._dump�   sA   € ô
 	ˆoÔÜˆf�x—}‘}ñ %&Ü+1´)¼DÀ»IÓ2FÔ+Gó%&ó &ñ &õ 	'ó    © ©F)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r    ÚnpmÚwith_npmÚjobsÚwithout_sslÚdebugÚprofiler   ÚprebuiltÚignore_ssl_certsÚmirrorÚclassmethodrA   rL   Ú__static_attributes__rO   rN   r   r   r   X   sj   † ñð
 €DØ
€CØ€HØ€DØ€KØ€EØ€GØ€DØ€HØÐØ€Fàó"Ló ð"LðH ñ'ó ó'rN   r   c              #   ó\   #   • U  H"  u  pUR                  S 5      (       a  M  X4v •  M$     g7f)r   NrE   )rF   r>   r?   s      r   rH   rH   š   s)   é € ð Ú!8‘I�DØ�?‰?˜3×ó €T…KÒ!8ùs   ‚,¢
,c                 óD   • U R                  S5      R                  SS5      $ )z
Remove new-lines and
úutf-8Ú
Ú )r   Úreplace)Úouts    r   Úclear_outputrh       s    € ð �:‰:�gÓ×&Ñ& t¨RÓ0Ð0rN   c                 ó,   • U R                  US-   S5      $ )z;
Remove bin directory of the current environment from PATH
Ú:re   )rf   )ÚenvÚenv_bin_dirs     r   Úremove_env_bin_from_pathrm   §   s   € ð �;‰;�{ SÑ(¨"Ó-Ð-rN   c                 óÎ   • U R                  SS5      R                  S5      SS n[        U5      S:¼  a  US   R                  S5      S   US'   [        [	        [
        U5      5      $ )	z2
Parse version string to a tuple of integer parts
r!   re   Ú.Nr   é   Ú+r   )rf   ÚsplitÚlenÚtupleÚmapÚint)Úversion_strr!   s     r   Úparse_versionrx   ®   s^   € ð 	×Ñ˜C Ó$×*Ñ*¨3Ó/°°Ð3€Aä
ˆ1ƒv�ƒ{Ø�‰t�z‰z˜#‹˜qÑ!ˆˆ!‰Ü””S˜!“ÓÐrN   c                 óÞ   • U R                   S:X  aI  [        R                  " SS/[        R                  S9R	                  5       u  p[        [        U5      5      $ [        U R                   5      $ )z/
Parse the node version from the argparse args
Úsystemr    ú	--version)Ústdout)r    Ú
subprocessÚPopenÚPIPEÚcommunicaterx   rh   )Úargsrg   Úerrs      r   Únode_version_from_argsrƒ   ¹   sY   € ð ‡y�y�HÓÜ×#Ò#Ø�[Ð!¬*¯/©/ñ;ß;F¹;»=ñ 	ˆäœ\¨#Ó.Ó/Ð/ä˜Ÿ™Ó#Ð#rN   c                  ót  • [         R                  " S5      n U R                  [         R                  5        S nU[         R                  l        [         R                  " 5       nUR                  [         R                  5        [         R                  " SS9nUR                  U5        U R                  U5        U $ )z
Create logger for diagnostic
r   c                 óÀ   • U R                  U5      n[        USS5      (       a  SOSnU R                  R                  U[	        U5      -  5        U R                  5         g )NÚ	continuedFz%sz%s
)r1   ÚgetattrÚstreamÚwriter   Úflush)ÚselfÚrecordÚmsgÚfss       r   ÚemitÚcreate_logger.<locals>.emitÎ   sI   € Ø�k‰k˜&Ó!ˆÜ˜V [°%×8Ñ8‰T¸fˆØ�‰×Ñ˜"œw s›|Ñ+Ô,Ø�
‰
�rN   z%(message)s)Úfmt)
ÚloggingÚ	getLoggerÚsetLevelÚINFOÚStreamHandlerr�   ÚDEBUGÚ	FormatterÚsetFormatterÚ
addHandler)Úloggrr�   ÚchÚ	formatters       r   Úcreate_loggerrž   Å   sŽ   € ô
 ×Ò˜iÓ(€EØ	‡N�N”7—<‘<Ô òð
 "&„G×ÑÔô 
×	Ò	Ó	 €BØ‡K�K”—‘Ôô ×!Ò! mÑ4€Ið ‡O�O�IÔð 
×Ñ�RÔØ€LrN   c            	      óz  • [         R                  " SS9n U R                  SS[        S9  U R                  SSSS	[        R
                  S
S9  U R                  SSS[        R                  SS9  [        (       dØ  U R                  SSS[        R                  SS9  U R                  SSSS9  U R                  SSS[        R                  SS9  U R                  SS S[        R                  S!S9  U R                  S"S#S[        R                  S$S9  U R                  S%S&S'S(S)[        R                  S*9  U R                  S+S,S-[        R                  S.S9  U R                  S/S0SS1S2S3S9  U R                  S4S5SS6S2S7S9  U R                  S8S9S:S;S<S9  U R                  S=S>S?S@SASBSC9  U R                  SDSESFS9  U R                  SGSHSISS2SJS9  U R                  SKSLSS2SMS9  U R                  SNSOS[        R                  SPS9  U R                  SQSRSS[        R                  STS9  U R                  SUSVSS2SWS9  U R                  SXSYSZSS2S[S9  U R                  S\S]S^SS2S_S9  U R                  S`SaSS2SbS9  U R                  ScS,S[        R                  SdS9  U R                  SeSfS[        R                   SgS9  U R                  ShSiSjSkSl9  U $ )mz&
Make a command line argument parser.
z%(prog)s [OPTIONS] DEST_DIR)Úusager{   Úversion)Úactionr¡   z-nz--noder    ÚNODE_VERzäThe node.js version to use, e.g., --node=0.4.3 will use the node-v0.4.3 to create the new environment. The default is last stable version (`latest`). Use `lts` to use the latest LTS release. Use `system` to use system-wide node.)ÚdestÚmetavarÚdefaultÚhelpz--mirrorÚstorer^   z1Set mirror server of nodejs.org to download from.)r¢   r¤   r¦   r§   z-jz--jobsrX   zOSets number of parallel commands at node.js compilation. The default is 2 jobs.)r¤   r¦   r§   z--load-averageÚload_averagezQSets maximum load average for executing parallel commands at node.js compilation.)r¤   r§   ú--without-sslrY   Ú
store_truez!Build node.js without SSL support)r¤   r¢   r¦   r§   ú--debugrZ   z"Build debug variant of the node.jsú	--profiler[   zEnable profiling for node.jsz--makez-mÚ	make_pathÚ	MAKE_PATHzPath to make command)r¤   r¥   r§   r¦   z--sourcer\   Ústore_falsezInstall node.js from the sourcez-vz	--verboser:   FzVerbose modez-qz--quietÚquietz
Quiet modez-Cz--config-fileÚconfig_fileNzfLoad a different file than '~/.nodeenvrc'. Pass an empty string for no config (use built-in defaults).z-rz--requirementsÚrequirementsre   ÚFILENAMEz?Install all the packages listed in the given requirements file.)r¤   r¦   r¥   r§   z--promptÚpromptz:Provides an alternative prompt prefix for this environmentz-lz--listÚlistz Lists available node.js versionsz--updateÚupdatez+Install npm packages from file without nodez
--with-npmrW   zµBuild without installing npm into the new virtual environment. Required for node.js < 0.6.3. By default, the npm included with node.js is used. Under Windows, this defaults to true.z--npmrV   ÚNPM_VERzŒThe npm version to use, e.g., --npm=0.3.18 will use the npm-0.3.18.tgz tarball to install. The default is last available version (`latest`).z--no-npm-cleanÚno_npm_cleanz9Skip the npm 0.x cleanup.  Cleanup is enabled by default.z--python-virtualenvz-pÚpython_virtualenvzUse current python virtualenvz--clean-srcú-cÚ	clean_srcz)Remove "src" directory after installationz--forceÚforcez.Force installation in a pre-existing directoryz
--prebuiltz/Install node.js from prebuilt package (default)z--ignore_ssl_certsr]   z5Ignore certificates for package downloads. - UNSAFE -ÚDEST_DIRÚenv_dirÚ?zDestination directory)r¥   r¤   Únargsr§   )ÚargparseÚArgumentParserÚadd_argumentÚnodeenv_versionr   r    r^   Úis_WINrX   rY   rZ   r[   r   r\   rW   rV   r]   )Úparsers    r   Úmake_parserrÈ   ç   sà  € ô ×$Ò$Ø+ñ-€Fð ×ÑØ˜I¬ð ñ @ð ×ÑØˆh˜V¨ZÄÇÁð0ð ñ 1ð ×ÑØØ˜X¬v¯}©}Ø@ð ñ B÷
 Š6Ø×ÑØ�( ´·±ð%ð 	ñ 	&ð
 	×ÑØ >ð&ð 	ñ 	'ð
 	×ÑØ -Ø¬×);Ñ);Ø4ð 	ñ 	6ð
 	×ÑØ˜GØ¬¯©Ø5ð 	ñ 	7ð
 	×ÑØ˜iØ¬¯©Ø/ð 	ñ 	1ð
 	×ÑØ�d ØØ'Ü—K‘Kð	 	ñ 	!ð 	×ÑØ˜ZØ ¬&¯/©/Ø2ð 	ñ 	4ð
 ×ÑØˆkØ )°UØð ñ ð
 ×ÑØˆiØ '°5Øð ñ ð
 ×ÑØˆo M¸4ðFð ñ Gð
 ×ÑØÐØ R°ØNð ñ Pð
 ×ÑØ˜ØIð ñ Kð ×ÑØˆh˜VØ UØ/ð ñ 1ð
 ×ÑØ˜Ø UØ:ð ñ <ð
 ×ÑØ˜:Ø¤V§_¡_ðAð ñ Bð ×ÑØ�eØ¤6§:¡:ð<ð ñ =ð ×ÑØ˜~Ø UØHð ñ Jð
 ×ÑØ˜tÐ*=Ø UØ,ð ñ .ð
 ×ÑØ�t +Ø UØ8ð ñ :ð
 ×ÑØ˜Ø UØ=ð ñ ?ð
 ×ÑØ˜:Ø¤V§_¡_Ø>ð ñ @ð
 ×ÑØÐ#5Ø¤V×%<Ñ%<ØDð ñ Fð
 ×ÑØ °#Ø$ð ñ &ð €MrN   c                 ó  • [        5       nUR                  5       nUR                  c
  / SQUl        OƒUR                  (       d  / Ul        Oj[        R                  R                  UR                  5      (       d*  UR                  SR                  UR                  5      5        UR                  /Ul        U (       d  U$ UR                  (       d3  UR                  (       d"  UR                  (       d  UR                  S5        U$ )zQ
Parses command line arguments.

Set `check` to False to skip validation checks.
)z	./tox.iniz./setup.cfgz~/.nodeenvrcz Config file '{0}' doesn't exist!z<You must provide a DEST_DIR or use current python virtualenv)rÈ   Ú
parse_argsr²   r#   r$   r&   Úerrorr1   r¶   rº   r¿   )ÚcheckrÇ   r�   s      r   rÊ   rÊ   z  sÃ   € ô ‹]€FØ×ÑÓ€Dà×ÑÑÚGˆÕØ××ØˆÕô �w‰w�~‰~˜d×.Ñ.×/Ñ/Ø�L‰LÐ;×BÑBØ× Ñ ó"ô #à ×,Ñ,Ð-ˆÔæØˆà�9�9Ø×%×%¨d¯l¯lØ�L‰Lð 9ô :ð €KrN   c                 ó  • [         R                  R                  U 5      (       dH  [        R	                  SU [        SS9S9  [         R                  " U 5        [        R	                  S5        g[        R	                  SU 5        g)z
Create directory
z * Creating: %s ... T©r†   ©Úextraúdone.z * Directory %s already existsN)r#   r$   r&   ÚloggerrZ   ÚdictÚmakedirs©r$   s    r   ÚmkdirrÖ   ™  sV   € ô �7‰7�>‰>˜$×ÑÜ�‰Ð+¨T¼ÈÑ9MˆÑNÜ
�Š�DÔÜ�‰�WÕä�‰Ð5°tÕ<rN   c                 óØ   • [         R                  [         R                  -  [         R                  -  [         R                  -  [         R
                  -  n[        R                  " X5        g ©N)ÚstatÚS_IRWXUÚS_IXGRPÚS_IRGRPÚS_IROTHÚS_IXOTHr#   Úchmod)ÚfilenameÚ	mode_0755s     r   Úmake_executablerâ   ¥  sD   € Ü—‘¤§¡Ñ,Ü—‘ñÜ $§¡ñ-Ü/3¯|©|ñ<€Iä‡H‚HˆXÕ!rN   c                 óÊ  • [        U5      n[        (       a!  [        U[        5      (       d  [        US5      n[        R
                  R                  U 5      (       dc  [        R                  SU [        SS9S9  [        U S5       nUR                  U5        SSS5        [        U 5        [        R                  S5        g[        U S	5       nUR                  5       nSSS5        UW;   a  [        R                  S
U 5        gU(       d  [        R                  SU 5        gU(       a=  [        R                  SU 5        [        U S5       nUR                  U5        SSS5        g[        R                  SU 5        [        U S5       nUR                  U5        SSS5        g! , (       d  f       GN= f! , (       d  f       NÜ= f! , (       d  f       g= f! , (       d  f       g= f)z%
Create file and write content in it
rc   z * Writing %s ... TrÎ   rÏ   ÚwbNrÑ   Úrbz * Content %s already in placez: * File %s exists with different content;  not overwritingz * Appending data to %sÚabz" * Overwriting %s with new content)r   r   r,   Úbytesr#   r$   r&   rÒ   rZ   rÓ   r4   r‰   râ   r'   Úinfo)r¤   ÚcontentÚ	overwriteÚappendÚfÚcs         r   Ú	writefilerî   ¬  sa  € ô �gÓ€Gß‚v”j ¬%×0Ñ0Ü˜ Ó)ˆÜ�7‰7�>‰>˜$×ÑÜ�‰Ð)¨4´tÀdÑ7KˆÑLÜ�$˜Ô Ø�G‰G�GÔ÷ ä˜ÔÜ�‰�WÔØä�$˜Ô Ø—‘“ˆA÷ à�a‹<Ü�L‰LÐ9¸4Ô@ØæÜ�K‰Kð +Ø,0ô2àæÜ�K‰KÐ1°4Ô8Ü�d˜DÔ! QØ—‘˜Ô ÷ "àä�‰Ð8¸$Ô?Ü�$˜Ô Ø�G‰G�GÔ÷ Ð÷1 Öú÷ Õú÷ "Ô!àú÷ Õús0   ÂF ÃF2ÅGÆGÆ 
F/Æ2
G Ç
GÇ
G"c           
      óh  • / n/ nU  H^  n[        U5      S:”  a  USS S-   USS -   nSU;   d  SU;   d  SU;   d  S	U;   a  S
UR                  SS5      -  nUR                  U5        M`     SR                  U5      n[        R                  SU-  5        U(       a  SR                  U 5      n [        R                  n	U(       a7  [        R                  R                  5       n
U(       a  U
R                  U5        OSn
 [        R                  " U [        R                  SU	X:US9nUR$                  n	U	(       aš  U	R'                  5       nU(       d  O‚ [(        (       a   UR+                  S5      R-                  5       nO UR+                  S5      R-                  5       n UR                  U5        U(       a  [        R1                  U5        U	(       a  Mš  UR3                  5         UR4                  (       aB  U(       a  U H  n[        R7                  U5        M     [9        SU< SUR4                  < 35      eUR4                  U4$ ! [         a7    [        R                   " 5       S   n[        R#                  SU< SU< 35        e f = f! [.         a#    UR+                  S5      R-                  5       n GNf = f)z
Execute cmd line in sub-shell
é-   Né   z...iìÿÿÿÚ rd   Ú"Ú'z"%s"z\"z ** Running command %s)ÚstderrÚstdinr|   Úcwdrk   Úshellé   zError z while executing command Úmbcsr   Úcp866zCommand z failed with error code )rs   rf   rë   rJ   rÒ   rZ   r}   r   r#   ÚenvironÚcopyr·   r~   ÚSTDOUTÚ	ExceptionÚsysÚexc_inforË   r|   r5   rÆ   r   Úrstripr   rè   ÚwaitÚ
returncodeÚcriticalÚOSError)ÚcmdÚshow_stdoutÚin_shellr÷   Ú	extra_envÚ
all_outputÚ	cmd_partsÚpartÚcmd_descr|   rk   ÚprocÚeÚlineÚss                  r   Úcallitr  Ñ  s=  € ð
 €JØ€IãˆÜˆt‹9�r‹>Ø˜˜�9˜uÑ$ t¨C¨D zÑ1ˆDØ�$‹;˜$ $›,¨#°«+¸À»Ø˜DŸL™L¨¨eÓ4Ñ4ˆDØ×Ñ˜Öñ ð �x‰x˜	Ó"€HÜ
‡L�LÐ)¨HÑ4Ô5æØ�h‰h�s‹mˆô �_‰_€Fö Ü�j‰j�o‰oÓˆÞØ�J‰J�yÔ!øàˆðÜ×ÒØœ
×)Ñ)°¸fØ Hñ.ˆð �[‰[€FÞ
Ø�‰Ó ˆÞØð	1ßŠvØ—{‘{ 6Ó*×1Ñ1Ó3‘à—{‘{ 6Ó*×1Ñ1Ó3‘ð 	×Ñ˜$ÔÞÜ�K‰K˜Ô÷ ˆ&ð 	‡I�I„Kð ‡‡ÞÛ�Ü—‘ Ö"ñ  åÛ! 4§?£?ð4ó 5ð 	5ð �?‰?˜JÐ&Ð&øô= ó Ü�LŠL‹N˜1ÑˆÜ�Š»aÂÐJÔKØðûô "ó 	1Ø—;‘;˜wÓ'×.Ñ.Ó0‹Dð	1ús%   Ã;'I  Å*J Å9J É AJÊ)J1Ê0J1c                 óH   • [        U 5      S:”  a  [        < SU < S3$ [        $ )N)r   é   z/vÚ/)rx   Úsrc_base_url)rw   s    r   Úget_root_urlr    s    € Ü�[Ó! FÓ*ß(«+Ð6Ð6äÐrN   c                  ó4   • [         R                  " S5      S:H  $ )NÚHOST_GNU_TYPEzx86_64-pc-linux-musl)Ú	sysconfigÚget_config_varrO   rN   r   Úis_x86_64_muslr    s   € Ü×#Ò# OÓ4Ð8NÑNÐNrN   c                  ó2   • [         R                  " 5       S:H  $ )NÚriscv64)ÚplatformÚmachinerO   rN   r   Ú
is_riscv64r"  !  s   € Ü×ÒÓ Ñ*Ð*rN   c                 óŽ  • 0 SS_SS_SS_SS_SS_SS_SS_SS_S	S
_S
S
_SS
_SS
_SS
_SS_SS_SS_n[         R                  " 5       R                  5       U[         R                  " 5       R                  5          S.n[        (       d  [
        (       a  SU-  nO[        5       (       a  SnOSU-  nSU < U< 3n[        U 5      U-   $ )NÚx86Úi686Úx86_64Úx64Úamd64Úarmv6lÚarmv7lÚarmv8lÚaarch64Úarm64zarm64/v8Úarmv8zarmv8.4Úppc64leÚs390xr  )rz   Úarchz-win-%(arch)s.zipz-linux-x64-musl.tar.gzz-%(system)s-%(arch)s.tar.gzznode-v)r   rz   Úlowerr!  rÆ   Ú	is_CYGWINr  r  )r¡   ÚarchmapÚsysinfoÚpostfixrà   s        r   Úget_node_bin_urlr7  %  sC  € ðØ�%ðà�%ðð 	�%ðð 	�%ð	ð
 	�%ðð 	�(ðð 	�(ðð 	�(ðð 	�7ðð 	�ðð 	�Gðð 	�ðð 	�7ðð 	�9ðð 	�ðð  	�9ð!€Gô& —/’/Ó#×)Ñ)Ó+Øœ×(Ò(Ó*×0Ñ0Ó2Ñ3ñ€G÷ ‚v—’Ø%¨Ñ/‰Ü	×	Ñ	Ø*‰à/°'Ñ9ˆøÚ&ªÐ0€HÜ˜Ó  8Ñ+Ð+rN   c                 ó(   • SU -  n[        U 5      U-   $ )Nznode-v%s.tar.gz)r  )r¡   Útar_names     r   Úget_node_src_urlr:  F  s   € Ø  7Ñ*€HÜ˜Ó  8Ñ+Ð+rN   c               /   óŒ   #   • [         R                  " U 0 UD6n Uv •  UR                  5         g! UR                  5         f = f7f)z!Compatibility layer because py26.N)Útarfiler4   Úclose)r�   ÚkwargsÚtfs      r   Útarfile_openr@  K  s6   é € ô 
�Š�tÐ	&˜vÑ	&€BðØŠà
�‰�
øˆ�‰�
üs   ‚Aš/ žA¯AÁAc                 ó  • US:”  a.   [         R                  " [        U 5      R                  5       5      $ g! [         a;  n[
        R                  SR                  X5      5        US-  nUS:X  a  Ue SnAOSnAff = fUS:”  a  M  g)zIDo multiple attempts to avoid incomplete data in case
of unstable networkr   z*Incomplete read while reading from {} - {}rù   N)ÚioÚBytesIOÚurlopenr'   ÚIncompleteReadrÒ   Úwarningr1   )Únode_urlÚ	n_attemptr  s      r   Ú_download_node_filerI  U  s„   € ð �a‹-ð		Ü—:’:œg hÓ/×4Ñ4Ó6Ó7Ð7ð øô ó 	Ü�N‰Nðß%™v hÓ2ôð ˜‰NˆIØ˜A‹~Ø�ô ûð	úð �aŽ-s   ˆ,6 ¶
A;Á 1A6Á6A;c           
      ó˜  • [         R                  S[        SS9S9  [        U 5      n[         R                  S[        SS9S9  [        (       d  [
        (       a0  [        R                  " U5      n[        R                  " S5      nS nO5[        US9n[        R                  " S5      n[        R                  " S	5      nU n[        R                  " UR                  5      nS
U-  n	U" U5       V
s/ s H$  n
[        R                  " X–" U
5      5      b  M"  U
PM&     nn
UR!                  X5        SSS5        gs  sn
f ! , (       d  f       g= f)z
Download source code
ro   TrÎ   rÏ   Únamelistc                 ó   • U $ rØ   rO   )r  s    r   Ú<lambda>Ú#download_node_src.<locals>.<lambda>p  s   € ¡rN   )ÚfileobjÚ
getmembersÚnamez0node-v%s[^/]*/(README\.md|CHANGELOG\.md|LICENSE)N)rÒ   rè   rÓ   rI  rÆ   r3  ÚzipfileÚZipFileÚoperatorÚmethodcallerr@  Ú
attrgetterÚreÚescaper    ÚmatchÚ
extractall)rG  Úsrc_dirr�   Údl_contentsÚctxÚmembersÚmember_nameÚarchiveÚnode_verÚrexp_stringÚmemberÚextract_lists               r   Údownload_node_srcre  e  s  € ô ‡K�K�œ4¨$Ñ/€KÑ0Ü% hÓ/€KÜ
‡K�K�œ4¨$Ñ/€KÑ0ç‚v—’Ü�oŠo˜kÓ*ˆÜ×'Ò'¨
Ó3ˆÙ!‰ä ;Ñ/ˆÜ×'Ò'¨Ó5ˆÜ×)Ò)¨&Ó1ˆá	�Ü—9’9˜TŸY™YÓ'ˆØIØñˆñ " 'Ô*ó
â*�Ü�xŠx˜ [°Ó%8Ó9÷ Ù*ð 	ð 
ð
 	×Ñ˜7Ô1÷ 
ˆùò
÷	 
�ús$   Â?0D;Ã/!D6ÄD6ÄD;Ä6D;Ä;
E	c                 ó4  • SnSS[         < SU< S30n[        R                  " U S U5      n[        (       aM  [        R
                  " [        R                  5      n[        R                  Ul        [        R                  " X4S9$ [        R                  " U5      $ )Nz$https://github.com/ekalinin/nodeenv/z
User-Agentznodeenv/z (Ú))Úcontext)
rÅ   Úurllib2ÚRequestr]   ÚsslÚ
SSLContextÚPROTOCOL_TLSÚ	CERT_NONEÚverify_moderD  )ÚurlÚhome_urlÚheadersÚreqrh  s        r   rD  rD  ‚  sn   € Ø5€HÙ·/Ã8ÐLÐM€GÜ
�/Š/˜#˜t WÓ
-€CßÒô —.’.¤×!1Ñ!1Ó2ˆÜ!Ÿm™mˆÔÜ�Š˜sÑ4Ð4Ü�?Š?˜3ÓÐrN   c                 ó�  • [         R                  " U 5       GH  n[         R                  R                  X5      n[         R                  R                  X5      n[         R                  R	                  U5      (       a   [
        R                  " XVX#5        M€  [         R                  R                  U5      (       aS  [         R                  R                  U5      (       d-  [         R                  " [         R                  " U5      U5        Mõ  M÷  [
        R                  " XV5        GM     g ! [         a    [        XVX#5         GM-  f = frØ   )r#   Úlistdirr$   rJ   ÚisdirÚshutilÚcopytreer  ÚislinkÚsymlinkÚreadlinkÚcopy2)ÚsrcÚdstÚsymlinksÚignoreÚitemr  Úds          r   rx  rx  ’  sÍ   € Ü—
’
˜3—ˆÜ�G‰G�L‰L˜Ó#ˆÜ�G‰G�L‰L˜Ó#ˆÜ�7‰7�=‰=˜×Ñð1Ü—’  hÖ7ô �w‰w�~‰~˜a× Ñ ä—w‘w—~‘~ a×(Ñ(Ü—J’JœrŸ{š{¨1›~¨qÖ1ñ )ô —’˜Q×"ò  øô ó 1Ü˜˜x×0Ð0ð1ús   Á>D*Ä*EÅEc                 óD  • [         R                  S[        SS9S9  [        (       a  [	        U S5      n[        U5        O@[        (       a3  [	        U S5      n[        U5        [        [	        U SS5      [        5        OU nU[        SU-  5      -   n[        R                  " U5      u  n[        XSS5        [        (       aG  S	 HA  n[	        U SU5      n[        R                  R                  U5      (       d  M6  [        U5        MC     [         R                  S[        SS9S9  g
)z)
Copy prebuilt binaries into environment
ro   TrÎ   rÏ   ÚScriptsÚbinr    z
/node-v%s*)rV   Únpxúnode.exeN)rÒ   rè   rÓ   rÆ   rJ   rÖ   r3  rî   ÚCYGWIN_NODEr   Úglobrx  r#   r$   r&   râ   )r¿   r[  Únode_versionr¤   Úsrc_folder_tplÚ
src_folderrà   s          r   Úcopy_node_from_prebuiltr�  ¤  sÞ   € ô ‡K�K�œ4¨$Ñ/€KÑ0ß‚vÜ�G˜YÓ'ˆÜˆd�ß	ŠÜ�G˜UÓ#ˆÜˆdŒä”$�w  vÓ.´Õ<àˆàœw |°lÑ'BÓCÑC€NÜ—)’)˜NÓ+�K€JÜˆZ˜tÔ$ç‚yÛ2ˆHÜ˜G U¨HÓ5ˆHÜ�w‰w�~‰~˜h×'Ó'Ü Ö)ñ 3ô
 ‡K�K�œ4¨$Ñ/€KÒ0rN   c                 óà  ^• 0 nSS/n[        U4S jU5      n[        XV5       VVs/ s H;  u  pxUc  M
  [        U5      S:”  a  SR                  Xx5      OSR                  U5      PM=     n	nn[	        [
        R                  S[
        R                  S   5      S:”  aÆ  [        R                  " S	5      n
U
(       d  [        S
5      e[        R                  SU
5        [        US5      n[        US5      n[        U5        [        R                  R!                  U5      (       d  [#        SSX¬/5        SR                  U[        R$                  R'                  SS5      5      US'   SS[)        U 5      -  /nTR*                  (       a  UR-                  S5        TR                  (       a  UR-                  S5        TR.                  (       a  UR-                  S5        TR0                  n[#        UTR2                  SX$5        [        R5                  S[7        SS9S9  [#        U/U	-   TR2                  SX$5        [        R5                  S[7        SS9S9  [#        US-   /TR2                  SX$5        g s  snnf )Nzload-averagerX   c                 ó<   >• [        TU R                  SS5      5      $ )NÚ-r   )r‡   rf   )Úxr�   s    €r   rM  Ú%build_node_from_src.<locals>.<lambda>Å  s   ø€ ”'˜$ §	¡	¨#¨sÓ 3Ô4rN   r   z	--{0}={1}z--{0}Úmajorrp   Úpython2zbPython >=3.0 virtualenv detected, but no python2 command (required for building node.js) was foundz$ * Temporarily pointing python to %sÚtmpbinÚpythonÚlnz-sz{}:{}ÚPATHre   z./configurez--prefix=%srª   r¬   r­   Tro   rÎ   rÏ   z install)ru   Úziprs   r1   r‡   r   Úversion_inforw  Úwhichr  rÒ   rZ   rJ   rÖ   r#   r$   r&   r  rü   r/   Ú_quoterY   rë   r[   r®   r:   rè   rÓ   )r¿   r[  Únode_src_dirr�   rk   Úmake_param_namesÚmake_param_valuesrQ  ÚvalueÚ	make_optsÚpython2_pathÚnode_tmpbin_dirÚnode_tmpbin_linkÚconf_cmdÚmake_cmds      `           r   Úbuild_node_from_srcr§  Á  s  ø€ Ø
€CØ&¨Ð/ÐÜÜ4ØóÐô Ð/ÔCôò D‰KˆDØó	4Üˆu‹:˜‹>ð 	×Ñ˜4Ô'Ø&Ÿ~™~¨dÓ3ò	4áCð ñ ô Œs×Ñ ¬#×*:Ñ*:¸1Ñ*=Ó>ÀÓBô —|’| IÓ.ˆÞÜðDóð ô 	�‰Ð;¸\ÔJÜ˜w¨Ó1ˆÜ °Ó:ÐÜˆoÔÜ�w‰w�~‰~Ð.×/Ñ/Ü�D˜$ Ð?Ô@Ø—n‘n _Ü%'§Z¡Z§^¡^°F¸BÓ%?óAˆˆF‰ð 	Øœ˜w›Ñ'ð€Hð ××Ø�‰˜Ô(Ø‡z‡zØ�‰˜	Ô"Ø‡|‡|Ø�‰˜Ô$à�~‰~€Hä
ˆ8�T—\‘\ 4¨Ô;Ü
‡K�K�œ4¨$Ñ/€KÑ0Ü
ˆHˆ:˜	Ñ! 4§<¡<°°|ÔIÜ
‡K�K�œ4¨$Ñ/€KÑ0Ü
ˆH�zÑ!Ð" D§L¡L°$¸ÕJùóWs
   ¦	I*³5I*c                 óf   •  [        XU5        g! [         a    [        R                  S5        e f = f)zT
Download source code for node.js, unpack it
and install it in virtual environment.
re   N)Úinstall_node_wrappedÚBaseExceptionrÒ   rè   )r¿   r[  r�   s      r   Úinstall_noder«  õ  s.   € ð
Ü˜W¨tÕ4øÜó ä�‰�BŒØðús   ‚ �!0c                 ó2  • [        U 5      n [        U[        SUR                  -  5      5      nUR                  (       a  SOSn[
        R                  SU< SUR                  < S3[        SS9S	9  UR                  (       a  [        UR                  5      nO[        UR                  5      n[        R                  R                  U5      (       d   [        XQU5        [
        R                  S[        SS9S	9  UR                  (       a  [%        XUR                  5        O['        XX25        [
        R                  S5        g ! [        R                   a?    S
U;   a  [        UR!                  S
S5      X5         N�[
        R#                  SU-  5         N·f = f)Nznode-v%sr\   Úsourcez * Install z node (z) TrÎ   rÏ   r-  r'  zFailed to download from %sro   z done.)ÚabspathrJ   r   r    r\   rÒ   rè   rÓ   r7  r:  r#   r$   r&   re  ri  Ú	HTTPErrorrf   rF  r�  r§  )r¿   r[  r�   r�  Úsrc_typerG  s         r   r©  r©    s2  € Ü�gÓ€GÜ˜¤¨°d·i±iÑ)?Ó!@ÓA€LØ!Ÿ]Ÿ]‰z°€Hä
‡K‚K«h¸¿	¼	ÐBÜ TÑ*ð ñ ,ð ‡}‡}Ü# D§I¡IÓ.‰ä# D§I¡IÓ.ˆô �7‰7�>‰>˜,×'Ñ'ð	HÜ˜h°Ô6ô ‡K�K�œ4¨$Ñ/€KÑ0à‡}‡}Ü °$·)±)Õ<ä˜G¨lÔAä
‡K�K�Õøô × Ñ ó 	HØ˜(Ó"ä! (×"2Ñ"2°7¸EÓ"BØ")ö1ô —‘Ð;¸hÑFÖGð	Hús   ÃE Å6FÅ;FÆFc                 ó@  • [         R                  SUR                  -  [        SS9S9  [        [        R
                  UR                  (       a  SOSUR                  S9n[        R                  " SS	S
R                  [        [        U SS5      5      UR                  5      4U[        R                  [        R                  [        R                  S9nUR                  5       u  pVUR                  (       a  [         R                  U5        [         R                  S5        g)úP
Download source code for npm, unpack it
and install it in virtual environment.
ú * Install npm.js (%s) ... TrÎ   rÏ   ÚnoÚyes)ÚcleanÚnpm_installÚshr»   z. {0} && npm install -g npm@{1}r…  Úactivate)rk   rö   r|   rõ   rÑ   N)rÒ   rè   rV   rÓ   r#   rü   r¹   r}   r~   r1   rœ  rJ   r   rþ   r€   r:   )r¿   Ú_src_dirr�   rk   r  rg   r   s          r   Úinstall_npmr»  %  sÝ   € ô
 ‡K�KÐ-°·±Ñ8Ü TÑ*ð ñ ,ä
Ü
�
‰
Ø×'×'‰d¨UØ—H‘Hñ€Cô
 ×Òà�$Ø-×4Ñ4Ü”t˜G U¨JÓ7Ó8Ø—‘óð	
ð Ü�o‰oÜ�‰Ü× Ñ ñ€Dð ×ÑÓ�F€CØ‡|‡|Ü�‰�CÔÜ
‡K�K�ÕrN   c                 óœ  • [         R                  SUR                  -  [        SS9S9  SUR                  -  n[        R
                  " [        U5      R                  5       5      n[        U S5      n[        USS5      n[        R                  R                  U5      (       a  [        R                  " U5        [        R                  R                  [        US	5      5      (       a   [        R                  " [        US	5      5        [        R                  R                  [        US
5      5      (       a   [        R                  " [        US
5      5        [        R                   " US5       nUR#                  U5        SSS5        SUR                  -  n[        R$                  " [        X5      U5        [        R&                  " [        XSS	5      [        US	5      5        [        R&                  " [        XSS
5      [        US
5      5        [(        (       a¤  [        R&                  " [        US
5      [        U SS
5      5        [        R$                  " [        US5      [        U SS5      5        Sn	SR+                  X’R                  5      n
[-        [        U SS5      [        U
5      R                  5       5        gg! , (       d  f       GNF= f)r²  r³  TrÎ   rÏ   z*https://github.com/npm/cli/archive/v%s.zipr„  Únode_modulesrV   znpm.cmdz
npm-cli.jsr   Nzcli-%sr…  z)https://raw.githubusercontent.com/npm/cliz{}/{}/bin/npm)rÒ   rè   rV   rÓ   rB  rC  rD  r'   rJ   r#   r$   r&   rw  ÚrmtreeÚremoverR  rS  rZ  rx  rý   r3  r1   rî   )r¿   r[  r�   Únpm_urlÚnpm_contentsÚbin_pathÚnode_modules_pathÚzipfÚnpm_verÚ
npm_gh_urlÚnpm_bin_urls              r   Úinstall_npm_winrÈ  D  s  € ô
 ‡K�KÐ-°·±Ñ8Ü TÑ*ð ñ ,à:¸T¿X¹XÑE€GÜ—:’:œg gÓ.×3Ñ3Ó5Ó6€Lä�G˜YÓ'€HÜ˜X ~°uÓ=Ðä	‡w�w‡~�~Ð'×(Ñ(Ü�ŠÐ'Ô(ä	‡w�w‡~�~”d˜8 YÓ/×0Ñ0Ü
�	Š	”$�x Ó+Ô,ä	‡w�w‡~�~”d˜8 \Ó2×3Ñ3Ü
�	Š	”$�x Ó.Ô/ä	�Š˜ sÔ	+¨tØ�‰˜Ô ÷ 
,ð ˜Ÿ™Ñ!€GÜ
‡O‚O”D˜Ó*Ð,=Ô>Ü
‡K‚K”�W u¨iÓ8Ü�X˜yÓ)ô+ä
‡K‚K”�W u¨lÓ;Ü�X˜|Ó,ô.÷ ‚yÜ�Š”D˜ <Ó0Ü˜ %¨Ó6ô	8ä�Šœ˜X ~Ó6Ü˜W e¨^Ó<ô	>à@ˆ
Ø%×,Ñ,¨Z¿¹ÓBˆÜ”$�w  uÓ-¬w°{Ó/C×/HÑ/HÓ/JÕKð ÷ 
,Ö	+ús   Å+J<Ê<
Kc                 óN  • [         R                  S[        SS9S9  [        UR                  5      R                  5        Vs/ s H  o"R                  5       PM     nn[        U SS5      nUR                  R                  S5      S:X  a  UR                  OUR                  S	-   nUR                  S
:X  d  US:¼  a  S[        U5      -   S-   nOS[        U5      -   S-   S-   nU H'  nU(       d  M  [        USU0-  /UR                  SS9  M)     [         R                  S5        gs  snf )z"
Install node.js packages via npm
z  * Install node.js packages ... TrÎ   rÏ   r…  r¹  ro   rp   z.0r   z1.0.0z. z && npm install -g %(pack)sz && npm install %(pack)sz && npm activate %(pack)sÚpack)r  r  r	  rÑ   N)rÒ   rè   rÓ   r4   r³   Ú	readlinesr6   rJ   rV   Úcountrœ  r  r:   )r¿   r�   ÚpackageÚpackagesÚactivate_pathÚreal_npm_verr  s          r   Úinstall_packagesrÑ  n  s#  € ô ‡K�KÐ2Ü TÑ*ð ñ ,ô �T×&Ñ&Ó'×1Ñ1Ô3ó5Ú3ð %,—‘–Ù3ð ð 5ä˜ %¨Ó4€MØ#Ÿx™xŸ~™~¨cÓ2°aÓ7�4—8’8¸T¿X¹XÈ¹_€LØ‡x�x�8Ó˜|¨wÓ6Ø”V˜MÓ*Ñ*Ø+ñ,‰ð ”V˜MÓ*Ñ*Ø(ñ)à)ñ*ˆó ˆÞÙÜØ�6˜7Ð#Ñ#ð%Ø26·,±,Èô	Oñ ô ‡K�K�Õùò%5s   ÁD"c                 ó°  • [         (       a7  [        [        [        S.n[	        U S5      n[	        US5      n[	        US5      nO6[
        [        [        S.n[	        U S5      n[	        US5      n[	        US5      n[        (       a  [        U5        UR                  S	:X  a	  [        US'   [	        S
S5      nUR                  =(       d?    S[        R                  R                  [        R                  R                  U 5      5      -  nUR                  S	:X  aM  [!        [        R"                  S   U5      nS H  n	[$        R&                  " X˜S9nUc  M    O   U(       d   S5       eUR)                  5        GHa  u  p«[	        X:5      nUR+                  SU5      nUR+                  S[        R                  R                  U 5      5      nUR+                  SU5      nUR+                  S[        R                  R                  U5      5      nUR+                  SU5      n[        (       aC  [-        SS[        R                  R                  U5      /SSS9u  pÞUR+                  SUS   5      nOUR+                  SS5      nSnUR.                  (       a?  [0        R3                  U
S5      n[4        R3                  U
S5      nUU-   U-   n[7        U5      n[9        XËUS9  GMd     [        R                  R;                  U5      (       d5  [         (       a   [-        S US/S!S!5        g[        RB                  " SU5        gg! [<         a    [>        RA                  S"5         gf = f)#z/
Install virtual environment activation script
)zactivate.batzdeactivate.batzActivate.ps1r„  r‡  z
nodejs.exe)r¹  úactivate.fishÚshimr…  r    Únodejsrz   Úlibr½  z(%s)r˜  )rÕ  r    rÕ   Nz-Did not find nodejs or node system executableÚ__NODE_VIRTUAL_PROMPT__Ú__NODE_VIRTUAL_ENV__Ú__SHIM_NODE__Ú__BIN_NAME__Ú__MOD_NAME__Úcygpathz-wF)r  r	  Ú__NPM_CONFIG_PREFIX__r   z$NODE_VIRTUAL_ENVre   )rë   ÚmklinkTz'Error: Failed to create nodejs.exe link)"rÆ   ÚACTIVATE_BATÚDEACTIVATE_BATÚACTIVATE_PS1rJ   ÚACTIVATE_SHÚACTIVATE_FISHÚSHIMr3  rÖ   r    rµ   r#   r$   r2   r®  rm   rü   rw  r›  r   rf   r  rº   ÚDISABLE_PROMPTr/   ÚENABLE_PROMPTr-   rî   r&   r  rÒ   rË   rz  )r¿   r�   ÚfilesÚbin_dirÚ	shim_nodeÚshim_nodejsÚmod_dirrµ   Úpath_varÚ	candidaterQ  ré   Ú	file_pathr   Úcyg_bin_dirÚneed_appendÚdisable_promptÚenable_prompts                     r   Úinstall_activateró  ‰  sÉ  € ÷ ‚vä(Ü,Ü(ñ
ˆô
 �w 	Ó*ˆÜ˜ *Ó-ˆ	Ü˜7 LÓ1‰ô $Ü*Üñ
ˆô
 �w Ó&ˆÜ˜ &Ó)ˆ	Ü˜7 HÓ-ˆß‚yÜˆgŒà‡y�y�HÓÜˆˆf‰ä�5˜.Ó)€GØ�[‰[×O˜F¤R§W¡W×%5Ñ%5´b·g±g·o±oÀgÓ6NÓ%OÑO€Fà‡y�y�HÓÜ+¬B¯J©J°vÑ,>ÀÓHˆÛ+ˆIÜŸš YÑ>ˆIØÓ$Ùñ ,ö ÐIÐIÓIˆyàŸ™Ÿ‰ˆÜ˜Ó'ˆ	Ø—/‘/Ð";¸VÓDˆØ—/‘/Ð"8Ü"$§'¡'§/¡/°'Ó":ó<ˆà—/‘/ /°9Ó=ˆØ—/‘/ .´"·'±'×2BÑ2BÀ7Ó2KÓLˆØ—/‘/ .°'Ó:ˆßŠ9Ü#Ø˜D¤"§'¡'§/¡/°'Ó":Ð;Ø!¨Eñ3‰NˆAð —o‘oÐ&=¸{È1¹~ÓN‰Gà—o‘oÐ&=Ø&9ó;ˆGð ˆØ×!×!Ü+×/Ñ/°°bÓ9ˆNÜ)×-Ñ-¨d°BÓ7ˆMØ$ wÑ.°Ñ>ˆGÜ˜~Ó.ˆKÜ�)¨[Õ9ñ9 'ô< �7‰7�>‰>˜+×&Ñ&ßŠ6ðHÜ˜ +¨zÐ:¸DÀ$ÕGô �JŠJ�v˜{Õ+ð 'øô ó HÜ—‘ÐFÖGðHús   Ì	L3 Ì3MÍMc                 ó¨   • [         (       d6  [        [        U SS5      S5       nUR                  [        5        S S S 5        g g ! , (       d  f       g = f)Nr…  ÚpredeactivateÚa)rÆ   r4   rJ   r‰   ÚPREDEACTIVATE_SH)r¿   Úhooks     r   Úset_predeactivate_hookrù  Ø  s=   € ßŠ6Ü”$�w  Ó7¸Ô=ÀØ�J‰JÔ'Ô(÷ >Ð=ð ß=Õ=ús   £AÁ
Ac                 ó`  • [         R                  R                  U 5      (       aN  UR                  (       d=  [        R                  SU 5        UR                  (       d  [        R                  " S5        [        [        [        U S5      5      5      n[        U5        UR                  S:w  a  [        XU5        O@[        [        U S5      5        [        [        U S5      5        [        [        U SS5      5        [        X5        [!        U5      S:  d  UR"                  (       a+  [$        (       d  [&        (       a  [(        O[*        nU" XU5        UR,                  (       a  [/        X5        UR                  (       a  [1        U 5        UR2                  (       a  [4        R6                  " U5        g	g	)
z+
Creates a new environment in ``env_dir``.
z! * Environment already exists: %srp   r}  rz   r…  rÖ  r½  )r   é   r   N)r#   r$   r&   rº   rÒ   rè   r½   r   Úexitr   r®  rJ   rÖ   r    r«  ró  rƒ   rW   rÆ   r3  rÈ  r»  r³   rÑ  rù  r¼   rw  r¾  )r¿   r�   r[  Úinstfuncs       r   Úcreate_environmentrþ  Þ  s  € ô 
‡w�w‡~�~�g×Ñ t×'=×'=Ü�‰Ð7¸ÔAØ�z�zÜ�HŠH�QŒKÜ”gœd 7¨EÓ2Ó3Ó4€GÜ	ˆ'„Nà‡y�y�HÓÜ�W tÕ,äŒd�7˜EÓ"Ô#ÜŒd�7˜EÓ"Ô#ÜŒd�7˜E >Ó2Ô3ô �WÔ#Ü˜dÓ# iÓ/°4·=·=ß&,¢f·	²	•?¼{ˆÙ� 4Ô(Ø××Ü˜Ô'Ø××Ü˜wÔ'à‡~‡~Ü�Š�gÕð rN   c                  óŒ   • [        S[        -  5      n [        R                  " U R	                  5       R                  S5      5      $ )Nz%s/index.jsonzUTF-8)rD  r  ÚjsonÚloadsr'   r   )Úresponses    r   Ú_get_versions_jsonr  ÿ  s1   € Ü�¬Ñ5Ó6€HÜ�:Š:�h—m‘m“o×,Ñ,¨WÓ5Ó6Ð6rN   c                  óp   • [        5        V s/ s H  o S   R                  S5      PM     sn S S S2   $ s  sn f )Nr¡   r!   éÿÿÿÿ)r  r7   )Údcts    r   Úget_node_versionsr    s5   € Ü2DÔ2FÓGÒ2F¨3�	‰N×!Ñ! #Ö&Ñ2FÑGÉÈ"ÈÑMÐMùÒGs   �3c                  óÐ   • [        5       n [        S[        U 5      S5       Vs/ s H	  oXS-    PM     nnU H'  n[        R	                  SR                  U5      5        M)     gs  snf )z3
Prints into stdout all available node.js versions
r   é   Ú	N)r  Úrangers   rÒ   rè   rJ   )ÚversionsÚposÚchunks_of_8Úchunks       r   Úprint_node_versionsr    sc   € ô !Ó"€Hä).¨q´#°h³-ÀÔ)CóÚ)C #�˜1‘WÓÑ)Cð ð ó ˆÜ�‰�D—I‘I˜eÓ$Ö%ò ùòs   £A#c                 óŒ   ^ ^• [        [        5       [        5       T S.5        U 4S jm[        U4S j[	        5        5       S5      $ )z1
Return last node.js version matching the filter
)r$  ÚriscÚltsc                 óŽ   >• T(       a  U S   (       d  g[        5       (       a
  SU S   ;  a  g[        5       (       a
  SU S   ;  a  gg)Nr  Fzlinux-x64-muslrç  zlinux-riscv64T)r  r"  )r!   r  s    €r   Úversion_filterÚ._get_last_node_version.<locals>.version_filter  s?   ø€ Þ�q˜—xØä×ÑÐ 0¸¸'¹
Ó BØÜ�\‰\˜o°Q°w±ZÓ?ØàrN   c              3   ój   >#   • U  H(  nT" U5      (       d  M  US    R                  S5      v •  M*     g7f)r¡   r!   N)r7   )rF   r!   r  s     €r   rH   Ú)_get_last_node_version.<locals>.<genexpr>%  s4   øé € ð EÚ.�Q±.À×2Có *��9‘×$Ñ$ S×)Ð)Ú.ùs   ƒ3˜3N)r0   r  r"  Únextr  )r  r  s   `@r   Ú_get_last_node_versionr    sD   ù€ ô 
”.Ó"¬J«LÀÑ
EÔFõ	ô ô EÜ,Ô.óEØFJóLð LrN   c                  ó   • [        5       $ )z$
Return last stable node.js version
©r  rO   rN   r   Úget_last_stable_node_versionr  )  s   € ô "Ó#Ð#rN   c                  ó   • [        SS9$ )z/
Return the last node.js version marked as LTS
T)r  r  rO   rN   r   Úget_last_lts_node_versionr  0  s   € ô " dÑ+Ð+rN   c                 ó   • U R                   (       aç  [        [        S5      (       a  [        R                  nOÍ[        [        S5      (       a3  [        R                  [        R                  :w  a  [        R                  nO…S[
        R                  ;   a  [        R                  nO`S[
        R                  ;   a  [
        R                  S   nO8[        R                  S5        [        R                  " S5        OU R                  n[        W5      $ )NÚreal_prefixÚbase_prefixÚCONDA_PREFIXÚVIRTUAL_ENVz!No python virtualenv is availablerp   )rº   Úhasattrr   Úprefixr"  r#   rü   rÒ   rË   rü  r¿   r   )r�   Úress     r   Úget_env_dirr(  7  s    € Ø××Ü”3˜×&Ñ&Ü—*‘*‰CÜ”S˜-×(Ñ(¬S¯_©_ÄÇ
Á
Ó-JÜ—*‘*‰CØœrŸz™zÓ)Ü—*‘*‰CØœbŸj™jÓ(Ü—*‘*˜]Ñ+‰Cä�L‰LÐ<Ô=Ü�HŠH�Q�Kà�l‰lˆÜ�3‹<ÐrN   c                  óÞ  • S[         R                  ;   a  [        R                  5         g[	        SS9n [        R                  U R                  U R                  5        [	        5       n U R                  R                  5       S:X  a+  [        (       a   [        R                  S5        [        S5        U R                  qSnU R                  (       a*  SU R                  ;   a  U R                  qO0U R                  nO#[#        5       (       d  [%        5       (       a  S	nOS
n[         c  SU-  qU R                  (       a  U R                  R                  5       S:X  a  ['        5       U l        O-U R                  R                  5       S:X  a  [)        5       U l        U R*                  (       a  [-        5         gU R.                  (       a  [1        U 5      n[3        X 5        g[1        U 5      n[5        X 5        g)z
Entry point
z--dump-config-defaultsNF)rÌ   rz   z4Installing system node.js on win32 is not supported!rù   z://zunofficial-builds.nodejs.orgz
nodejs.orgzhttps://%s/download/releaser   r  )r   Úargvr   rL   rÊ   rA   r²   r:   r    r2  rÆ   rÒ   rË   rü  r]   r^   r  r  r"  r  r  r¶   r  r·   r(  rÑ  rþ  )r�   Ú
src_domainr¿   s      r   Úmainr,  J  sI  € ð
  ¤3§8¡8Ó+Ü�‰ŒØä˜EÑ"€Dä
‡L�L�×!Ñ! 4§<¡<Ô0ä‹<€Dà‡y�y‡�Ó˜HÓ$¯ªÜ�‰ÐKÔLÜˆQŒð
 ×,Ñ,Ðà€JØ‡{‡{Ø�D—K‘KÓØŸ;™;‰LàŸ™‰Jä	×	Ñ	œZŸ\™\Ø3‰
à!ˆ
ÜÑØ4°zÑAˆà�9�9˜Ÿ	™	Ÿ™Ó)¨XÓ5Ü0Ó2ˆ�	Ø	�‰�‰Ó	˜eÓ	#Ü-Ó/ˆŒ	à‡y‡yÜÕØ	��Ü˜dÓ#ˆÜ˜Õ'ä˜dÓ#ˆÜ˜7Õ)rN   z©
# disable nodeenv's prompt
# (prompt already changed by original virtualenv's script)
# https://github.com/ekalinin/nodeenv/issues/26
NODE_VIRTUAL_ENV_DISABLE_PROMPT=1
z­
# disable nodeenv's prompt
# (prompt already changed by original virtualenv's script)
# https://github.com/ekalinin/nodeenv/issues/26
set NODE_VIRTUAL_ENV_DISABLE_PROMPT 1
)r¹  rÓ  z'
unset NODE_VIRTUAL_ENV_DISABLE_PROMPT
z(
set -e NODE_VIRTUAL_ENV_DISABLE_PROMPT
zÅ#!/usr/bin/env sh
export NODE_PATH='__NODE_VIRTUAL_ENV__/lib/node_modules'
export NPM_CONFIG_PREFIX='__NODE_VIRTUAL_ENV__'
export npm_config_prefix='__NODE_VIRTUAL_ENV__'
exec '__SHIM_NODE__' "$@"
aQ  
@echo off
set "NODE_VIRTUAL_ENV=__NODE_VIRTUAL_ENV__"
if not defined PROMPT (
    set "PROMPT=$P$G"
)
if defined _OLD_VIRTUAL_PROMPT (
    set "PROMPT=%_OLD_VIRTUAL_PROMPT%"
)
if defined _OLD_VIRTUAL_NODE_PATH (
    set "NODE_PATH=%_OLD_VIRTUAL_NODE_PATH%"
)
set "_OLD_VIRTUAL_PROMPT=%PROMPT%"
set "PROMPT=__NODE_VIRTUAL_PROMPT__ %PROMPT%"
if defined NODE_PATH (
    set "_OLD_VIRTUAL_NODE_PATH=%NODE_PATH%"
    set NODE_PATH=
)
if defined _OLD_VIRTUAL_PATH (
    set "PATH=%_OLD_VIRTUAL_PATH%"
) else (
    set "_OLD_VIRTUAL_PATH=%PATH%"
)
set "PATH=%NODE_VIRTUAL_ENV%\Scripts;%PATH%"
:END

aV  @echo off
if defined _OLD_VIRTUAL_PROMPT (
    set "PROMPT=%_OLD_VIRTUAL_PROMPT%"
)
set _OLD_VIRTUAL_PROMPT=
if defined _OLD_VIRTUAL_NODE_PATH (
    set "NODE_PATH=%_OLD_VIRTUAL_NODE_PATH%"
    set _OLD_VIRTUAL_NODE_PATH=
)
if defined _OLD_VIRTUAL_PATH (
    set "PATH=%_OLD_VIRTUAL_PATH%"
)
set _OLD_VIRTUAL_PATH=
set NODE_VIRTUAL_ENV=
:END
aj  
function global:deactivate ([switch]$NonDestructive) {
    # Revert to original values
    if (Test-Path function:_OLD_VIRTUAL_PROMPT) {
        copy-item function:_OLD_VIRTUAL_PROMPT function:prompt
        remove-item function:_OLD_VIRTUAL_PROMPT
    }
    if (Test-Path env:_OLD_VIRTUAL_NODE_PATH) {
        copy-item env:_OLD_VIRTUAL_NODE_PATH env:NODE_PATH
        remove-item env:_OLD_VIRTUAL_NODE_PATH
    }
    if (Test-Path env:_OLD_VIRTUAL_PATH) {
        copy-item env:_OLD_VIRTUAL_PATH env:PATH
        remove-item env:_OLD_VIRTUAL_PATH
    }
    if (Test-Path env:NODE_VIRTUAL_ENV) {
        remove-item env:NODE_VIRTUAL_ENV
    }
    if (!$NonDestructive) {
        # Self destruct!
        remove-item function:deactivate
    }
}

deactivate -nondestructive
$env:NODE_VIRTUAL_ENV="__NODE_VIRTUAL_ENV__"

# Set the prompt to include the env name
# Make sure _OLD_VIRTUAL_PROMPT is global
function global:_OLD_VIRTUAL_PROMPT {""}
copy-item function:prompt function:_OLD_VIRTUAL_PROMPT
function global:prompt {
    Write-Host -NoNewline -ForegroundColor Green '__NODE_VIRTUAL_PROMPT__ '
    _OLD_VIRTUAL_PROMPT
}

# Clear NODE_PATH
if (Test-Path env:NODE_PATH) {
    copy-item env:NODE_PATH env:_OLD_VIRTUAL_NODE_PATH
    remove-item env:NODE_PATH
}

# Add the venv to the PATH
copy-item env:PATH env:_OLD_VIRTUAL_PATH
$env:PATH = "$env:NODE_VIRTUAL_ENV\Scripts;$env:PATH"
a¼  

# This file must be used with "source bin/activate" *from sh*
# you cannot run it directly

deactivate_node () {
    # reset old environment variables
    if [ -n "${_OLD_NODE_VIRTUAL_PATH:-}" ] ; then
        PATH="${_OLD_NODE_VIRTUAL_PATH:-}"
        export PATH
        unset _OLD_NODE_VIRTUAL_PATH

        NODE_PATH="${_OLD_NODE_PATH:-}"
        export NODE_PATH
        unset _OLD_NODE_PATH

        NPM_CONFIG_PREFIX="${_OLD_NPM_CONFIG_PREFIX:-}"
        npm_config_prefix="${_OLD_npm_config_prefix:-}"
        export NPM_CONFIG_PREFIX
        export npm_config_prefix
        unset _OLD_NPM_CONFIG_PREFIX
        unset _OLD_npm_config_prefix
    fi

    # This should detect bash and zsh, which have a hash command that must
    # be called to get it to forget past commands.  Without forgetting
    # past commands the $PATH changes we made may not be respected
    if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
        hash -r
    fi

    if [ -n "${_OLD_NODE_VIRTUAL_PS1:-}" ] ; then
        PS1="${_OLD_NODE_VIRTUAL_PS1:-}"
        export PS1
        unset _OLD_NODE_VIRTUAL_PS1
    fi

    unset NODE_VIRTUAL_ENV
    if [ ! "${1:-}" = "nondestructive" ] ; then
    # Self destruct!
        unset -f deactivate_node
    fi
}

freeze () {
    local NPM_VER=`npm -v | cut -d '.' -f 1`
    local re="[a-zA-Z0-9\.\-]+@[0-9]+\.[0-9]+\.[0-9]+([\+\-][a-zA-Z0-9\.\-]+)*"
    if [ "$NPM_VER" = '0' ]; then
        NPM_LIST=`npm list installed active 2>/dev/null | \
                  cut -d ' ' -f 1 | grep -v npm`
    else
        local npmls="npm ls -g"
        if [ "${1:-}" = "-l" ]; then
            npmls="npm ls"
            shift
        fi
        NPM_LIST=$(eval ${npmls} | grep -E '^.{4}\w{1}'| \
                                   grep -o -E "$re"| grep -v npm)
    fi

    if [ -z "$@" ]; then
        echo "$NPM_LIST"
    else
        echo "$NPM_LIST" > $@
    fi
}

# unset irrelevant variables
deactivate_node nondestructive

# find the directory of this script
# http://stackoverflow.com/a/246128
if [ "${BASH_SOURCE:-}" ] ; then
    SOURCE="${BASH_SOURCE[0]}"

    while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
    DIR="$( command cd -P "$( dirname "$SOURCE" )" > /dev/null && pwd )"

    NODE_VIRTUAL_ENV="$(dirname "$DIR")"
else
    # dash not movable. fix use case:
    #   dash -c " . node-env/bin/activate && node -v"
    NODE_VIRTUAL_ENV="__NODE_VIRTUAL_ENV__"
fi

# NODE_VIRTUAL_ENV is the parent of the directory where this script is
export NODE_VIRTUAL_ENV

_OLD_NODE_VIRTUAL_PATH="$PATH"
PATH="$NODE_VIRTUAL_ENV/lib/node_modules/.bin:$NODE_VIRTUAL_ENV/__BIN_NAME__:$PATH"
export PATH

_OLD_NODE_PATH="${NODE_PATH:-}"
NODE_PATH="$NODE_VIRTUAL_ENV/__MOD_NAME__"
export NODE_PATH

_OLD_NPM_CONFIG_PREFIX="${NPM_CONFIG_PREFIX:-}"
_OLD_npm_config_prefix="${npm_config_prefix:-}"
NPM_CONFIG_PREFIX="__NPM_CONFIG_PREFIX__"
npm_config_prefix="__NPM_CONFIG_PREFIX__"
export NPM_CONFIG_PREFIX
export npm_config_prefix

if [ -z "${NODE_VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
    _OLD_NODE_VIRTUAL_PS1="${PS1:-}"
    if [ "x__NODE_VIRTUAL_PROMPT__" != x ] ; then
        PS1="__NODE_VIRTUAL_PROMPT__ ${PS1:-}"
    else
    if [ "`basename \"$NODE_VIRTUAL_ENV\"`" = "__" ] ; then
        # special case for Aspen magic directories
        # see http://www.zetadev.com/software/aspen/
        PS1="[`basename \`dirname \"$NODE_VIRTUAL_ENV\"\``] ${PS1:-}"
    else
        PS1="(`basename \"$NODE_VIRTUAL_ENV\"`) ${PS1:-}"
    fi
    fi
    export PS1
fi

# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands.  Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
    hash -r
fi
a  

# This file must be used with "source bin/activate.fish" *from fish*
# you cannot run it directly

function deactivate_node -d 'Exit nodeenv and return to normal environment.'
    # reset old environment variables
    if test -n "$_OLD_NODE_VIRTUAL_PATH"
        set -gx PATH $_OLD_NODE_VIRTUAL_PATH
        set -e _OLD_NODE_VIRTUAL_PATH
    end

    if test -n "$_OLD_NODE_PATH"
        set -gx NODE_PATH $_OLD_NODE_PATH
        set -e _OLD_NODE_PATH
    else
        set -e NODE_PATH
    end

    if test -n "$_OLD_NPM_CONFIG_PREFIX"
        set -gx NPM_CONFIG_PREFIX $_OLD_NPM_CONFIG_PREFIX
        set -e _OLD_NPM_CONFIG_PREFIX
    else
        set -e NPM_CONFIG_PREFIX
    end

    if test -n "$_OLD_npm_config_prefix"
        set -gx npm_config_prefix $_OLD_npm_config_prefix
        set -e _OLD_npm_config_prefix
    else
        set -e npm_config_prefix
    end

    if test -n "$_OLD_NODE_FISH_PROMPT_OVERRIDE"
        # Set an empty local `$fish_function_path` to allow the removal of
        # `fish_prompt` using `functions -e`.
        set -l fish_function_path

        # Prevents error when using nested fish instances
        if functions -q _node_old_fish_prompt
            # Erase virtualenv's `fish_prompt` and restore the original.
            functions -e fish_prompt
            functions -c _node_old_fish_prompt fish_prompt
            functions -e _node_old_fish_prompt
        end
        set -e _OLD_NODE_FISH_PROMPT_OVERRIDE
    end

    set -e NODE_VIRTUAL_ENV

    if test (count $argv) = 0 -o "$argv[1]" != "nondestructive"
        # Self destruct!
        functions -e deactivate_node
    end
end

function freeze -d 'Show a list of installed packages - like `pip freeze`'
    set -l NPM_VER (npm -v | cut -d '.' -f 1)
    set -l RE "[a-zA-Z0-9\.\-]+@[0-9]+\.[0-9]+\.[0-9]+([\+\-][a-zA-Z0-9\.\-]+)*"

    if test "$NPM_VER" = "0"
        set -g NPM_LIST (npm list installed active >/dev/null ^/dev/null |                          cut -d ' ' -f 1 | grep -v npm)
    else
        set -l NPM_LS "npm ls -g"
        if test (count $argv) -gt 0 -a "$argv[1]" = "-l"
            set NPM_LS "npm ls"
            set -e argv[1]
        end
        set -l NPM_LIST (eval $NPM_LS | grep -E '^.{4}\w{1}' |                                         grep -o -E "$re" |                                         grep -v npm)
    end

    if test (count $argv) = 0
        echo $NPM_LIST
    else
        echo $NPM_LIST > $argv[1]
    end
end

# unset irrelevant variables
deactivate_node nondestructive

# find the directory of this script
begin
    set -l SOURCE (status filename)
    while test -L "$SOURCE"
        set SOURCE (readlink "$SOURCE")
    end
    set -l DIR (dirname (realpath "$SOURCE"))

    # NODE_VIRTUAL_ENV is the parent of the directory where this script is
    set -gx NODE_VIRTUAL_ENV (dirname "$DIR")
end

set -gx _OLD_NODE_VIRTUAL_PATH $PATH
# The node_modules/.bin path doesn't exists and it will print a warning, and
# that's why we redirect stderr to /dev/null :)
set -gx PATH "$NODE_VIRTUAL_ENV/lib/node_modules/.bin" "$NODE_VIRTUAL_ENV/__BIN_NAME__" $PATH ^/dev/null

if set -q NODE_PATH
    set -gx _OLD_NODE_PATH $NODE_PATH
    set -gx NODE_PATH "$NODE_VIRTUAL_ENV/__MOD_NAME__" $NODE_PATH
else
    set -gx NODE_PATH "$NODE_VIRTUAL_ENV/__MOD_NAME__"
end

if set -q NPM_CONFIG_PREFIX
    set -gx _OLD_NPM_CONFIG_PREFIX $NPM_CONFIG_PREFIX
end
set -gx NPM_CONFIG_PREFIX "__NPM_CONFIG_PREFIX__"

if set -q npm_config_prefix
    set -gx _OLD_npm_config_prefix $npm_config_prefix
end
set -gx npm_config_prefix "__NPM_CONFIG_PREFIX__"

if test -z "$NODE_VIRTUAL_ENV_DISABLE_PROMPT"
    # Copy the current `fish_prompt` function as `_node_old_fish_prompt`.
    functions -c fish_prompt _node_old_fish_prompt

    function fish_prompt
        # Save the current $status, for fish_prompts that display it.
        set -l old_status $status

        # Prompt override provided?
        # If not, just prepend the environment name.
        if test -n "__NODE_VIRTUAL_PROMPT__"
            printf '%s%s ' "__NODE_VIRTUAL_PROMPT__" (set_color normal)
        else
            printf '%s(%s) ' (set_color normal) (basename "$NODE_VIRTUAL_ENV")
        end

        # Restore the original $status
        echo "exit $old_status" | source
        _node_old_fish_prompt
    end

    set -gx _OLD_NODE_FISH_PROMPT_OVERRIDE "$NODE_VIRTUAL_ENV"
end
zA
if type -p deactivate_node > /dev/null; then deactivate_node;fi
z¤#!/bin/sh

if [ -r "$1" ]; then
    SCRIPT_PATH=$(cygpath -w "$1")
    shift
    set - $SCRIPT_PATH $@
    unset SCRIPT_PATH
fi

exec $(dirname "$0")/node.exe "$@"
Ú__main__)T)TF)TFNN)r   )FNrP   )jrU   Ú
contextlibrB  r   r   r#   rW  rk  rÙ   r’   rT  rÂ   r}   r<  rš  Úpipesr   rœ  Úshlexr   rR  rw  r  r‰  r   r   ri  rU  r   ÚhttplibrE  ÚImportErrorÚconfigparserÚurllib.requestÚrequestÚhttpÚclientrÅ   r$   rJ   r®  r  r   rz   rÆ   r*   r3  r]   r   Úobjectr   rÓ   r)   Ú_defaultrh   rm   rx   rƒ   rž   rÒ   rÈ   rÊ   rÖ   râ   rî   r  r  r  r"  r7  r:  Úcontextmanagerr@  rI  re  rD  rx  r�  r§  r«  r©  r»  rÈ  rÑ  ró  rù  rþ  r  r  r  r  r  r  r(  r,  rå  ræ  rä  rß  rà  rá  râ  rã  r÷  rˆ  rQ   rO   rN   r   Ú<module>r;     sÈ  ðñó Û 	Û Û 
Û 	Û 	Û 
Û Û Û Û Û Û Ø×Ñ�fÓÞ%å%Û Û Û Û Û ð0Ý=ãØ×%Ò% kÓ2€IÛØ×+Ñ+€Nð €à	‡w�w‡|�|€Ø
�'‰'�/‰/€Ø€à	×	Ñ	˜!Ñ	 Ñ	!€Ø	�ŠÓ	˜iÑ	'€Ø�OŠOÓ×(Ñ(Ð);Ó<€	àÐ òô(?'ˆVô ?'ñD ñ Ù!*©4°«<Ô!8óó €„ò1ò.òò	$òñ> 
‹€òPôfò>	=ò"ô"ðJ ,1Ø#ôB'òJòOò+ò,òB,ð
 ×Ññó ðôò 2ò:
 ô #ò$1ò:1Kòh
ò òFò>'LòTò6L,ò^)òòB7ò
Nò	&ôLò*$ò,òò&2*ðrðñ€ð ðñ	€ð€ð€ð8€ð$-€ð^}€ð@M€ð^Ð ð
€ð ˆzÓÙ…Fð øðe/ ó 0Ý)å$Ø×%Ò% gÓ.€IÛØ—[‘[×/Ñ/ƒNð0ús   Á),G= Ç=>H?È>H?