Ë ²6®t�4Êã ó’—UddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddlm Z m Z m Z m Z mZmZmZmZmZmZmZmZddlmZddlmZddlmZmZmZmZmZmZej@d«Z!ejDZ#ejHZ$ejJZ%ejLZ&ejNZ'ejPZ(ejRZ)ejTZ*ejVZ+ejXZ,ejZZ-ej\j^Z/ej`Z0ejbZ1ejdr de3d ee3e3ffd „Z/d Z4e5e6d <Gd „d«Z7Gd„d«Z8d]d„Z9e!jtZ:d e3fd„Z;Gd„dejx«Z=d e>fd„Z?de3d e3fd„Z@de3de3dee3dee3d e3f d„ZAde3de>de>d dfd „ZB d^d!e3d"e3d#ee3d$e>d df d%„ZCd&e3d e>fd'„ZDd&e3d e>fd(„ZEd_d)„ZFd&e3d e3fd*„ZGd&e3d e3fd+„ZHd&e3d e3fd,„ZId&e3d e3fd-„ZJej–d.«ZLee3e6d/<ej–d0«ZMeeNe6d1<d&e d e fd2„ZOej j¢ZRe5e6d3<ej¦ZTd4ejªd5ejªd e>fd6„ZVd&e3d7ee3e3fd e3fd8„ZWdaXeee3e6d9<daYd:e3d e3fd;„ZZd:e3d e3fd<„Z[d:e3d ee3fd=„Z\d>ejªd e>fd?„Z]d@e3d ee3fdA„Z^ej¾ejÀhZadBee3d e eejªfdC„Zbd`dDee5d ee3fdE„Zcd`dFee5d ee3fdG„ZddHe3d e3fdI„ZedJe3d dfdK„Zfd!e3d"e3d dfdL„Zgd ee3fdM„ZhdJe3d ee3fdN„Zide3d e>fdO„ZjGdP„dQ«Zk dadRe3dSee3dTeee5e e5fd ee3fdU„ZldVZme>e6dW<d>eejªd e>fdX„Znd>eejªd e>fdY„Zod efdZ„Zpd e3fd[„Zqd&e3d efd\„Zry)béN) ÚAnyStrÚBinaryIOÚIterableÚIteratorÚListÚMappingÚNoReturnÚOptionalÚPatternÚSequenceÚTupleÚUnioné)Ú_)Úgetattr)ÚencodingÚerrorÚpolicyÚpycompatÚtypelibÚwin32ÚosutilÚpÚreturncó—t‚©N©ÚNotImplementedError)rs ú5usr/lib/python3.12/site-packages/mercurial/windows.pyÚsplitr Hs€Ü!Ð!óéÚumaskcód—eZdZdZdZdZdZd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„Zy)Úmixedfilemodewrappera)Wraps a file handle when it is opened in read/write mode. fopen() and fdopen() on Windows have a specific-to-Windows requirement that files opened with mode r+, w+, or a+ make a call to a file positioning function when switching between reads and writes. Without this extra call, Python will raise a not very intuitive "IOError: [Errno 0] Error." This class wraps posixfile instances when the file is opened in read/write mode and automatically adds checks or inserts appropriate file positioning calls when necessary. rrécó`—tj|d|«tj|dd«y)NÚ_fpÚ_lastopr)ÚobjectÚ __setattr__©ÚselfÚfps rÚ__init__zmixedfilemodewrapper.__init__`s&€Ü×ј4 ¨Ô+Ü×ј4 ¨AÕ.r!có:—|jj«|Sr©r(Ú __enter__©r-s rr2zmixedfilemodewrapper.__enter__ds€Ø �‰×ÑÔØˆ r!có>—|jj|||«yr©r(Ú__exit__)r-Úexc_typeÚexc_valÚexc_tbs rr6zmixedfilemodewrapper.__exit__hs€Ø �‰×ј( G¨VÕ4r!có.—t|j|«Sr©rr(©r-Únames rÚ __getattr__z mixedfilemodewrapper.__getattr__kó€Ü�t—x‘x Ó&Ð&r!có:—|jj||«Sr)r(r+)r-r=Úvalues rr+z mixedfilemodewrapper.__setattr__ns€Ø�x‰x×#Ñ# D¨%Ó0Ð0r!cóX—|jjdtj«y)Nr)r(ÚseekÚosÚSEEK_CURr3s rÚ _noopseekzmixedfilemodewrapper._noopseekqs€Ø �‰� ‰ �aœŸ™Õ%r!có|—tj|d|j«|jj|i|¤ŽS©Nr))r*r+ÚOPNONEr(rC©r-ÚargsÚkwargss rrCzmixedfilemodewrapper.seekts2€Ü×ј4 ¨D¯K©KÔ8؈t�x‰x�}‰}˜dÐ- fÑ-Ð-r!cóÌ—|j|jk(r|j«tj |d|j «|j j|«SrH)r)ÚOPREADrFr*r+ÚOPWRITEr(Úwrite)r-Úds rrPzmixedfilemodewrapper.writexsE€Ø �<‰<˜4Ÿ;™;Ò &Ø �N‰NÔ ä×ј4 ¨D¯L©LÔ9Ø�x‰x�~‰~˜aÓ Ð r!cóΗ|j|jk(r|j«tj |d|j «|j j|i|¤ŽSrH)r)rNÚ _noopeseekr*r+rOr(Ú writelinesrJs rrTzmixedfilemodewrapper.writelinessN€Ø �<‰<˜4Ÿ;™;Ò &Ø �O‰OÔ ä×ј4 ¨D¯L©LÔ9Ø"ˆt�x‰x×"Ñ" DÐ3¨FÑ3Ð3r!cóΗ|j|jk(r|j«tj |d|j «|j j|i|¤ŽSrH)r)rOrFr*r+rNr(ÚreadrJs rrVzmixedfilemodewrapper.read†sL€Ø �<‰<˜4Ÿ<™<Ò 'Ø �N‰NÔ ä×ј4 ¨D¯K©KÔ8؈t�x‰x�}‰}˜dÐ- fÑ-Ð-r!cóΗ|j|jk(r|j«tj |d|j «|j j|i|¤ŽSrH)r)rOrFr*r+rNr(ÚreadlinerJs rrXzmixedfilemodewrapper.readline�sN€Ø �<‰<˜4Ÿ<™<Ò 'Ø �N‰NÔ ä×ј4 ¨D¯K©KÔ8Ø ˆt�x‰x× Ñ  $Ð1¨&Ñ1Ð1r!cóΗ|j|jk(r|j«tj |d|j «|j j|i|¤ŽSrH)r)rOrFr*r+rNr(Ú readlinesrJs rrZzmixedfilemodewrapper.readlines”sN€Ø �<‰<˜4Ÿ<™<Ò 'Ø �N‰NÔ ä×ј4 ¨D¯K©KÔ8Ø!ˆt�x‰x×!Ñ! 4Ð2¨6Ñ2Ð2r!N)Ú__name__Ú __module__Ú __qualname__Ú__doc__rIrNrOr/r2r6r>r+rFrCrPrTrVrXrZ©r!rr%r%OsT„ñ ð€FØ €FØ€Gò/òò5ò'ò1ò&ò.ò!ò4ò.ò2ó3r!r%có.—eZdZdZd„Zd„Zd„Zd„Zd„Zy)ÚfdproxyzeWraps osutil.posixfile() to override the name attribute to reflect the underlying file name. có —||_||_yr)r=r()r-r=r.s rr/zfdproxy.__init__¡s€ØˆŒ ؈�r!có:—|jj«|Srr1r3s rr2zfdproxy.__enter__¥s€Ø �‰×ÑÔðˆ r!có>—|jj|||«yrr5)r-r7Ú exc_valueÚ tracebacks rr6zfdproxy.__exit__«s€Ø �‰×ј( I¨yÕ9r!có,—t|j«Sr)Úiterr(r3s rÚ__iter__zfdproxy.__iter__®s€Ü�D—H‘H‹~Ðr!có.—t|j|«Srr;r<s rr>zfdproxy.__getattr__±r?r!N) r[r\r]r^r/r2r6rir>r_r!rraraœs „ñòòò :òó'r!racóF— tj|||«}t||«}d|vr |jdtj «d|vr t |«S|S#t$r=}t|jtj|«›d|j›�«‚d}~wwxYw)z/Open a file with even more POSIX-like semanticsóaró+z: N) rÚ posixfilerarCrDÚSEEK_ENDr%Ú WindowsErrorÚIOErrorÚerrnorÚ strfromlocalÚstrerror)r=ÚmodeÚ bufferingr.Úerrs rrnrnµs•€ð Ü × Ñ ˜d D¨)Ó 4ˆô�T˜2Ó ˆð �4‰<Ø �G‰G�A”r—{‘{Ô #à �4‰<Ü'¨Ó+Ð +àˆ øÜ ò äØ �I‰I¤8×#8Ñ#8¸Õ#>ÀÇ Â ÐMó ð ûð ús‚AAÁAÁ B Á#8BÂB cóü—d} tj«}|dk(s|dk(rn|dk(rt‚|dk(r|dd}n||z}Œ;tjd«tjd«t j |«S)zºPrompt for password with echo off, using Windows getch(). This shouldn't be called directly- use ``ui.getpass()`` instead, which checks if the session is interactive first. ÚÚ Ú ÚÚNéÿÿÿÿ)ÚmsvcrtÚgetwchÚKeyboardInterruptÚputwchrÚ unitolocal)ÚpwÚcs rÚ get_passwordr†Òs€ð €BØ Ü �M‰M‹OˆØ �Š:˜˜e𨠨 �Š<Ü#Ð #Ø �Š:Ø�C�R�‰Bà�a‘ˆBð ô ‡M�M�%ÔÜ ‡M�M�%ÔÜ × Ñ ˜rÓ "Ð"r!có4—eZdZdZdefd„Zd„Zd„Zd„Zd„Z y) Ú winstdoutzúSome files on Windows misbehave. When writing to a broken pipe, EINVAL instead of EPIPE may be raised. When writing too many bytes to a console at the same, a "Not enough space" error may happen. Python 3 already works around that. r.có—||_yr)r.r,s rr/zwinstdout.__init__ñs €Øˆ�r!có.—t|j|«Sr)rr.)r-Úkeys rr>zwinstdout.__getattr__ôs€Ü�t—w‘w Ó$Ð$r!cóX— |jj«y#t$rYywxYwr)r.Úcloserqr3s rr�zwinstdout.close÷s&€ð Ø �G‰G�M‰M�OøÜò Ù ð ús ‚� )¨)cóú— |jj|«S#t$rT}|jdk7rt j |«s‚|j «ttjd«‚d}~wwxYw)Nrú Broken pipe)r.rPrqrrrÚlasterrorwaspipeerrorr�ÚEPIPE)r-ÚsÚinsts rrPzwinstdout.writeýs_€ð 6Ø—7‘7—=‘= Ó#Ð #øÜò 6Ø�z‰z˜QФu×'BÑ'BÀ4Ô'HØØ �J‰JŒLÜœ%Ÿ+™+ }Ó5Ð 5ûð  6ús‚� A:¦AA5Á5A:cóº— |jj«S#t$r5}tj|«s‚tt j d«‚d}~wwxYw)Nr�)r.Úflushrqrr�rrr‘)r-r“s rr•zwinstdout.flushsI€ð 6Ø—7‘7—=‘=“?Ð "øÜò 6Ü×.Ñ.¨tÔ4ØÜœ%Ÿ+™+ }Ó5Ð 5ûð 6ús‚œ A¥0AÁAN) r[r\r]r^rr/r>r�rPr•r_r!rrˆrˆès'„ñð˜8óò%òò 6ó6r!rˆcó—y©NTr_r_r!rÚ openhardlinksr˜ó€Ø r!Ú output_linecó*—|dd}|ddk(r|dd}|S)z‰>˜$Ó Ðr!s^[a-z]:Ú DRIVE_RE_Bz^[a-z]:Ú DRIVE_RE_Scó —tjj|«}t|t«r0t j |«r|ddj«|ddz}|Stj |«r|ddj«|ddz}|S)Nrr) rDr·ÚabspathÚ isinstanceÚbytesrÒÚmatchrÐrÓ)r·Úabs_paths rrÕrÕ^sˆ€Ü�w‰w�‰˜tÓ$€Hô �(œEÔ"Ü × Ñ ˜HÔ %Ø  !�}×*Ñ*Ó,¨x¸¸¨|Ñ;ˆHð €Oô × Ñ ˜(Ô #ؘA˜a�=×&Ñ&Ó(¨8°A°B¨<Ñ7ˆØ €Or!Ú normcasespecÚs1Ús2có—yr¹r_)rÛrÜs rÚsamestatrÞrr¼r!ÚenvcóÒ‡—tˆfd„dD««s‰Stjtjtj z«dz}d}d}t ‰«}||k�r¯‰||dz}|dk(r5‰|dzdŠt ‰«} ‰jd«}|d ‰d|zd zz }�na|d k(r7‰|dzdŠt ‰«} ‰jd «}‰d|}|d |zd zz }�n%|d k(r͉|dz|d zd k(rW‰|d zdŠt ‰«} ‰jd«}‰d|}|j|d«dk7r |d |zd zz }n |d|zdzz }n»d}|dz }‰||dz}|dk7r ||vr||z }|dz }‰||dz}|dk7r||vrŒ|j|d«dk7r |d |zd zz }n|d |zz }|dk7rY|dz}nS|dk(r|dz|kr‰|dz|d zdvr|dz }n3|dk(r)|dz|kr!‰|dz|d zdvr|‰|dz|d zz }|dz }n||z }|dz }||kr�Œ¯|S#t$r||‰zz }|dz }YŒ&wxYw#t$r|d ‰zz }|dz }YŒBwxYw#t$r|d‰zz }|dz }YŒ^wxYw)a•Convert shell variables in the form $var and ${var} inside ``path`` to %var% form. Existing Windows style variables are left unchanged. The variables are limited to the given environment. Unknown variables are left unchanged. >>> e = {b'var1': b'v1', b'var2': b'v2', b'var3': b'v3'} >>> # Only valid values are expanded >>> shelltocmdexe(b'cmd $var1 ${var2} %var3% $missing ${missing} %missing%', ... e) 'cmd %var1% %var2% %var3% $missing ${missing} %missing%' >>> # Single quote prevents expansion, as does \$ escaping >>> shelltocmdexe(b"cmd '$var1 ${var2} %var3%' \$var1 \${var2} \\", e) 'cmd "$var1 ${var2} %var3%" $var1 ${var2} \\' >>> # $$ is not special. %% is not special either, but can be the end and >>> # start of consecutive variables >>> shelltocmdexe(b"cmd $$ %% %var1%%var2%", e) 'cmd $$ %% %var1%%var2%' >>> # No double substitution >>> shelltocmdexe(b"$var1 %var1%", {b'var1': b'%var2%', b'var2': b'boom'}) '%var1% %var1%' >>> # Tilde expansion >>> shelltocmdexe(b"~/dir ~\dir2 ~tmpfile \~/", {}) '%USERPROFILE%/dir %USERPROFILE%\\dir2 ~tmpfile ~/' c3ó&•K—|]}|‰v–—Œ y­wrr_)Ú.0r…r·s €rÚ z shelltocmdexe..�søèø€Ð)¡&˜Qˆq�DŒy¡&ùsƒs$'~s_-r!rró'Nó"ó%ó$r&ó{ó}s${ó~)rËr¦s %USERPROFILE%rË)rçrê) ÚanyrÚsysbytesÚstringÚ ascii_lettersÚdigitsÚlenÚindexÚ ValueErrorÚget)r·rßÚvarcharsÚresrñÚpathlenr…Úvars` rÚ shelltocmdexerøvsZø€ô4 Ó)¡&Ó)Ô )؈ ä× Ñ ¤×!5Ñ!5¼¿ ¹ Ñ!EÓFÈÑN€Hà €CØ €EÜ�$‹i€GØ �'‹/Ø �˜ ™Ð #ˆØ �Š:ؘ ™ ˜ Ð$ˆDܘ$“iˆGð $ØŸ ™  5Ó)�Ø�t˜d 6 E˜lÑ*¨TÑ1Ñ1’ð�$ŠYؘ ™ ˜ Ð$ˆDܘ$“iˆGð )ØŸ ™  4Ó(�ð ˜6˜E�l�Ø�t˜c‘z DÑ(Ñ(’Ø �$ŠYØ�E˜A‘I ¨¡ Ð*¨dÒ2ؘE A™I˜KÐ(�ܘd›)�ð (Ø ŸJ™J tÓ,�Eؘv ˜,�Cð—w‘w˜s CÓ(¨CÒ/ؘt c™z¨DÑ0Ñ0™à˜u s™{¨TÑ1Ñ1˜øð �ؘ‘ �ؘ ¨¡Ð+�ؘ3’h 1¨¡=ؘ1‘H�CؘQ‘J�EؘU U¨Q¡YÐ/�Að˜3’h 1¨¢=ð—7‘7˜3 Ó$¨Ò+ؘ4 #™:¨Ñ,Ñ,‘Cà˜4 #™:Ñ%�Cà˜’8ؘQ‘J‘Eà �ŠIؘ‘ ˜GÒ#Ø�U˜Q‘Y ¨¡Ð+¨}Ñ<à Ð#Ñ #‰Cà �ŠJؘ‘ ˜GÒ#Ø�U˜Q‘Y ¨¡Ð+¨|Ñ;ð �4˜ ™  E¨A¡IÐ.Ñ .ˆCØ �Q‰J‰Eà �1‰HˆCà �‰ ˆðY �'Œ/ðZ €JøôKò $Ø�q˜4‘x‘�Ø !™ ’ð $ûôò $Ø�t˜d‘{Ñ"�Ø !™ ’ð $ûô&"ò(ؘ5 4™<Ñ'�CØ# a™K’Eð(ús7ÂHÂ?H1Ä AI ÈH.È-H.È1I É I É I&É%I&Ú_quoterer’cóü—t€tjd«at€tjd«ja|r"t|«stj |«s|Sdtj d|«zS)a„ >>> shellquote(br'C:\Users\xyz') '"C:\\Users\\xyz"' >>> shellquote(br'C:\Users\xyz/mixed') '"C:\\Users\\xyz/mixed"' >>> # Would be safe not to quote too, since it is all double backslashes >>> shellquote(br'C:\\Users\\xyz') '"C:\\\\Users\\\\xyz"' >>> # But this must be quoted >>> shellquote(br'C:\\Users\\xyz/abc') '"C:\\\\Users\\\\xyz/abc"' s (\\*)("|\\$)s[^a-zA-Z0-9._:/-]s"%s"s\1\1\\\2)rùÚreÚcompileÚ_needsshellquoteÚsearchÚsub©r’s rrªrª÷sh€ôÐÜ—:‘:Ð.Ó/ˆäÐô Ÿ:™:Ð&;Ó<×CÑCÐÙÔ! !Ô$¬X¯_©_¸QÔ-?àˆØ ”X—\‘\ ,°Ó2Ñ 2Ð2r!cóT—|jd«r|jd«r|ddS|S)Nrårr~)r¨Úendswithrs rÚ_unquoters)€Ø‡|�|�DÔ˜aŸj™j¨Ô.Ø��2ˆwˆØ €Hr!có`—tjttj|d¬««S)z3Parse a command string in cmd.exe way (best-effort)F)Úposix)rÚmaplistrÚ shlexsplitrs rÚ shellsplitrs"€ä × Ñ œH¤h×&9Ñ&9¸!À5Ô&IÓ JÐJr!Ústcó—yr—r_©r s rÚisownerr "r™r!Úcommandcóô‡—tjjdd«}|j«j t j «D�cgc]}|‘Œc}Štjj|«dj«‰vrdgŠdtdttfˆfd„ }t j|vr||«Stjjdd«j t j «D].}|tjj||««}|€Œ,|cS|tjjtjj|«««Scc}w) a*Find executable for command searching like cmd.exe does. If command is a basename then PATH is searched for command. PATH isn't searched if command is an absolute or relative path. An extension from PATHEXT is found and added if not present. If command isn't found None is returned.sPATHEXTs.COM;.EXE;.BAT;.CMDrr!Ú pathcommandrcód•—‰D]*}||z}tjj|«sŒ(|cSy)z:Will append extension (if needed) and return existing fileN)rDr·Úexists)rÚextÚ executableÚpathextss €rÚ findexistingzfindexe..findexisting1s2ø€ãˆCØ$ sÑ*ˆJÜ�w‰w�~‰~˜jÕ)Ø!Ò!ððr!sPATH)rÚenvironrór§r rÚ ospathseprDr·Úsplitextr×r rÈÚjoinÚ expanduserÚ expandvars)r Úpathextrrr·rrs @rÚfindexer&s,ø€ô ×Ñ×"Ñ" :Ð/EÓF€GØ&Ÿ}™}›×4Ñ4´X×5GÑ5GÔHÓIÑH˜’ÐHÑI€HÜ ‡w�w×Ñ˜Ó  Ñ#×)Ñ)Ó+¨xÑ7Ø�5ˆð¤%ð¬H´U©Oõô‡~�~˜Ñ Ù˜GÓ$Ð$ä× Ñ ×$Ñ$ W¨cÓ2×8Ñ8¼×9KÑ9KÖLˆÙ!¤"§'¡'§,¡,¨t°WÓ"=Ó>ˆ Ø Ñ !ØÒ ðMñ œŸ™×*Ñ*¬2¯7©7×+=Ñ+=¸gÓ+FÓGÓ HÐHùò'JsÁ E5Úfilesc #óØK—i}tj}|D]±}t|«}tjj |«\}}|sd}|j |d«}|€V t|d«D��� cic]*\}}} || j«tvr t|«| “Œ,} }}} |j|| «}|j |d«–—Œ³ycc} }}w#ttf$ri} YŒCwxYw­w)zÀStat each file in files. Yield each stat, or None if a file does not exist or has a type we don't care about. Cluster and cache stat per directory to minimize number of OS stat calls.ó.NT) ÚstatÚS_IFMTrÑrDr·r róÚlistdirÚst_modeÚ _wantedkindsÚFileNotFoundErrorÚNotADirectoryErrorÚ setdefault) rÚdircacheÚgetkindÚnfÚdirÚbaseÚcacheÚnÚkr’Údmaps rÚ statfilesr2Fsîèø€ð €HÜ�k‰k€GÛˆÜ �b‹\ˆÜ—G‘G—M‘M "Ó%‰ ˆˆTÙØˆCØ— ‘ ˜S $Ó'ˆØ ˆ=ð ô$+¨3°Ô#5õá#5™˜˜1˜aÙ˜qŸy™yÓ)¬\Ñ9ô˜Q“K ‘NØ#5ðòð×'Ñ'¨¨TÓ2ˆEØ�i‰i˜˜dÓ#Ó#ñ!ùôøô &Ô'9Ð:ò Ø’ð üs<‚AC*Á CÁ0/C ÂCÂ#)C*à CÃC'Ã$C*Ã&C'Ã'C*Úuidcóv—|s( tjtj««Sy#t$rYywxYw)ziReturn the name of the user with the given uid. If uid is None, return the name of the current user.N)rÚfsencodeÚgetpassÚgetuserÚModuleNotFoundError)r3s rÚusernamer9`sB€ñ ð Ü×$Ñ$¤W§_¡_Ó%6Ó7Ð 7ð øô #ò ð Ø ð  ús „&,¬ 8·8Úgidcó—y)zkReturn the name of the group with the given gid. If gid is None, return the name of the current group.Nr_)r:s rÚ groupnamer<os€ð r!Úpathnamecóº—tj|«} tj|«}tj |«S#t$r}t |«‚d}~wwxYwr)rÚfsdecoderDÚreadlinkròÚAttributeErrorr5)r=r·ÚlinkÚes rr@r@vsW€Ü × Ñ ˜XÓ &€Dð Ü�{‰{˜4Ó ˆô × Ñ ˜TÓ "Ð"øô ò ô ˜QÓÐûð  ús—AÁ AÁ AÁAr=cóœ—t|«rytj|«tjj |«\}}|s"tjj |«\}}|rN|rK t|«rytj|«tjj |«\}}|r|rŒIyyyy#t t f$rYywxYw)z�special version of os.removedirs that does not remove symlinked directories or junction points if they actually contain filesN)r#rDÚrmdirr·r ròÚOSError)r=ÚheadÚtails rÚ removedirsrIƒs¥€ôˆt„}ØÜ‡H�HˆT„NÜ—‘—‘˜tÓ$�J€Dˆ$Ù Ü—W‘W—]‘] 4Ó(‰ ˆˆdÙ ‘4ð Ü�tŒ}ØÜ �H‰H�TŒNô—W‘W—]‘] 4Ó(‰ ˆˆdñ “4ˆ$�4ˆ$øô œGÐ$ò Ù ð úsÁ- B9Á9B9Â9C à C có’— tj||«y#t$r$t|«tj||«YywxYw)z=atomically rename file src to dst, replacing dst if it existsN)rDÚrenameÚFileExistsErrorÚunlink)r²r³s rrKrK–s9€ðÜ � ‰ �#�sÕøÜ ò܈sŒ Ü � ‰ �#�sÖðús‚™*AÁAcó˜—tjgtjddzD�cgc]}tj|«‘Œc}Scc}w)Nr)ÚsysrÚargvrÚ strtolocal)Úargs rÚgethgcmdrSŸs=€Ü14·±Ð0@Ä3Ç8Á8ÈBÈQÀ<Ò0OÓ PÑ0O¨ŒH× Ñ  Õ $Ð0OÑ PÐPùÒ Ps¨Acó—t‚r)ÚKeyError)r=s rÚ groupmembersrV£s€ä €Nr!có—yr¹r_)r­s rÚisexecrX¨r¼r!có(—eZdZdeddfd„Zdefd„Zy)Ú cachestatr·rNcó—yrr_)r-r·s rr/zcachestat.__init__­s€Ø r!có—yr¹r_r3s rÚ cacheablezcachestat.cacheable°s€Ør!)r[r\r]r×r/Úboolr]r_r!rrZrZ¬s!„ð ˜Uð  tó ð˜4ôr!rZr‹ÚvalnameÚscopecóº—|€!tjtjf}nt|tt f«s|f}|D]~} tj |tj|««5}d}|�tj|«}tj||«d}tj|«cddd«cSy#1swYnxYwŒ�#t$rYŒšwxYw)a)Look up a key/value name in the Windows registry. valname: value name. If unspecified, the default value for the key is used. scope: optionally specify scope for registry lookup, this can be a sequence of scopes to look up in order. Default (CURRENT_USER, LOCAL_MACHINE). Nr) ÚwinregÚHKEY_CURRENT_USERÚHKEY_LOCAL_MACHINErÖÚlistÚtupleÚOpenKeyrrsÚ QueryValueExrƒÚEnvironmentError)r‹r_r`r’Úhkeyr=Úvals rÚ lookupregrl´sÈ€ð €}ä×)Ñ)¬6×+DÑ+DÐE‰ä ˜¤¤e˜}Ô -Ø�ˆÛ ˆð ä—‘ ¤8×#8Ñ#8¸Ó#=Ô>À$à�ØÐ&Ü#×0Ñ0°Ó9�Dä×)Ñ)¨$°Ó5°aÑ8�ô ×*Ñ*¨3Ó/÷?Ó>ñ÷?Ð>úÐ>øô ò Ù ð ús+Á)CÁ,ACÂ3 CÃC ÃCà CÃCTÚ expandglobscó—y)z(check whether a stat result is a symlinkFr_r s rÚ statislinkroÜó€à r!có—y)z1check whether a stat result is an executable fileFr_r s rÚ statisexecrrárpr!có—t«‚rr)Úfdss rÚpollruæs €ä Ó Ðr!có¦—g} tj|«}|sn&|j|«}|sn|j|«Œ>dj |«S)z$Read all available data from a pipe.r!)rÚpeekpiperVÚappendr)ÚpipeÚchunksÚsizer’s rÚreadpiper|ësS€à €FØ Ü�~‰~˜dÓ#ˆÙØ à �I‰I�d‹OˆÙØ Ø� ‰ �aÔð ð �8‰8�FÓ Ðr!có—td«‚)Nzunsupported platformr)Úsockr·s rÚbindunixsocketrûs€Ü Ð4Ó 5Ð5r!)órr~r¹)rNr)NN)srrr6rrDrûr!rírOÚtypingrbrrrrrrr r r r r rÚi18nrrrryrrrrrÚ importmodrÚ getvolumenameÚgetfsmountpointÚ getfstyper7Ú hidewindowÚmakedirÚnlinksÚoslinkÚ samedeviceÚsamefileÚsetsignalhandlerÚ spawndetachedr·r ÚtestpidrMÚ TYPE_CHECKINGr×r#ÚintÚ__annotations__r%rarnr#r†ÚBinaryIO_Proxyrˆr^r˜rŸr¬r±r¶r»r¾rÅrÉrÌrÎrÑrürÒrÓÚstrrÕÚ normcasespecsrÐrÚÚ upperfallbackÚnormcasefallbackÚ stat_resultrÞrørùrýrªrrr rÚS_IFREGÚS_IFLNKr%r2r9r<r@rIrKrSrVrXrZrlrmrorrrur|rr_r!rÚr›s€ðô ÛÛ Û Û Û Û Û Û Û ÷ ÷ ÷ ó õÝ÷÷ð ˆ× Ñ ˜(Ó #€à×%Ñ%€Ø �O‰O€ Ø �-‰-€Ø × Ñ € Ø �-‰-€Ø �‰€Ø �‰€Ø × Ñ € Ø �>‰>€Ø×)Ñ)ÐØ×#Ñ#€ Ø �‰� ‰ €Ø �-‰-€Ø �‰€à ×Òð"�ð"˜5 ¨ Ñ.ó"ð€€sÓ÷J3ñJ3÷Z'ñ'ó2 ð4 �.‰.€ð#�eó#ô,$6�×&Ñ&ô$6ðN�tóð %ð¨EóðØ ðØðØ&.¨u¡oðØ=EÀe¹_ðà óð" �ð ˜$ð  4ð ¨Dó ð!Ø!ñ  Ø ð à ð ð �5‰/ð ðð  ð  ó  ð�Eð˜dóð�Eð˜dóó+ð.�5ð.˜Uó.ð%�Eð%˜eó%ð,�5ð,˜Uó,ð �5ð ˜Uó ð(˜RŸZ™Z¨ Ó3€ ˆG�E‰NÓ3Ø%˜2Ÿ:™: iÓ0€ ˆG�C‰LÓ0ð �&ð ˜Vó ð ×*Ñ*×0Ñ0€ ˆcÓ0Ø×)Ñ)Ðð�—‘ð R§^¡^ð¸óðo˜ðo G¨E°5¨LÑ$9ðo¸eóoðz&*€ˆ(�7˜5‘>Ñ "Ó)ØÐð3�%ð3˜Eó3ð< �ð ˜%ó ð K�%ðK˜D ™KóKð�—‘ð 4óðI�UðI˜x¨™óIð:— ‘ ˜dŸl™lÐ+€ ð$�X˜e‘_ð$¨°(¸2¿>¹>Ñ2JÑ)Kó$ñ4 �(˜3‘-ð ¨8°E©?ó ñ�8˜C‘=ð¨H°U©Oóð #�uð # ó #ð)�Uð)˜tó)ð&�ð˜Eð dóðQ�$�u‘+óQð�uð  e¡óð ˆeð˜ó÷ñð $Ø15ñ"Ø ð"à �e‰_ð"ð �E˜#˜x¨™}Ð,Ñ-Ñ .ð"ðˆe�_ó "ðJ€ ˆTÓð�8˜BŸN™NÑ+ð°óð �8˜BŸN™NÑ+ð°óð  �ó ð �eó ð 6˜uð6¨ô6r!