Ë ƒEÛÝ4J»0ãó&—dZddlZddlZddlZddlZddlmZddlmZddl m Z ddl m Z m Z mZmZmZmZmZmZmZmZmZddlmZddlmZd Zed zZd Zej@d;d „«Z!dd„Z,d>d„Z-d„Z.d„Z/d„Z0d„Z1d„Z2d„Z3d?d „Z4d!„Z5d"„Z6d#„Z7d$„Z8d%„Z9d&„Z:d'„Z;d(„Zd+„Z?d,„Z@d-„ZAd.„ZBd/„ZCGd0„d1eD«ZEd2„ZFd3„ZGd4„ZHd5„ZId6„ZJd7„ZKGd8„d9«ZLd?d:„ZMy)@zGlargefiles utility code: must not import other modules in this package.éN)Ú_)Úhex)Úopen) ÚdirstateÚencodingÚerrorÚhttpconnectionÚmatchÚpycompatÚ requirementsÚscmutilÚsparseÚutilÚvfs)Úhashutil)Ú timestamps.hglfó/ó largefilesc#ódK—t|dd«}||_ d–—||_y#||_wxYw­w)NÚlfstatusF)Úgetattrr)ÚrepoÚvalueÚoldvalues ú;usr/lib/python3.12/site-packages/hgext/largefiles/lfutil.pyrr+s1èø€ä�t˜Z¨Ó/€HØ€D„Mð!Û à ˆ� ø˜ˆ� üs‚0˜$œ0¤ -­0cóú—|}|s|r|jtd|¬«}|r t|«}|€t j t d««‚|S#t$r"t j t d«|z«‚wxYw)Nsminsize)Údefaults)largefiles: size must be number (not %s) s-minimum size for largefiles must be specified)ÚconfigÚlongnameÚfloatÚ ValueErrorrÚAbortr)ÚuiÚ assumelfilesÚoptrÚlfsizes rÚ getminsizer'5s‚€Ø €FÙ ‘lØ—‘œ8 Z¸�ÓAˆÙ ð ܘ6“]ˆFð €~Ü�k‰kœ!ÐLÓMÓNÐNØ €Møô ò Ü—+‘+ÜÐ?Ó@À6ÑIóð ð ús ¢ AÁ+A:có —tjtjj |«« tj ||«y#t $r¯t|d«5}tj|«5}tj|«D]}|j|«Œ ddd«n #1swYnxYwddd«n #1swYnxYwtj|tj|«j«YywxYw)z@Try to create hardlink - if that fails, efficiently make a copy.órbN)rÚmakedirsÚosÚpathÚdirnameÚoslinkÚOSErrorrÚatomictempfileÚ filechunkiterÚwriteÚchmodÚstatÚst_mode)ÚsrcÚdestÚsrcfÚdstfÚchunks rÚlinkr;Es®€ä‡M�M”"—'‘'—/‘/ $Ó'Ô(ð-Ü � ‰ �C˜ÕøÜ ò-ä �#�uÔ  ¤t×':Ñ':¸4Ô'@ÀDÜ×+Ñ+¨DÖ1�Ø— ‘ ˜5Õ!ñ2÷(A×'@Ñ'@ú× × Ñ úô �‰�”r—w‘w˜s“|×+Ñ+Ö,ð -úsA´A Á DÁ CÁ6,B,Â# CÂ,B5 Â1CÂ8 DÃC Ã:DÄDcóT—tjjt|«|«S)zâReturn the correct location in the "global" largefiles cache for a file with the given hash. This cache is used for sharing of largefiles across repositories - both to preserve download bandwidth and storage space.)r+r,ÚjoinÚ _usercachedir)r#Úhashs rÚ usercachepathr@Rs€ô �7‰7�<‰<œ  bÓ)¨4Ó 0Ð0ócóì—|j|d«}|r|Sd}tjrrtjj dtjj d««}|r t jj||«Std«dd|fz}�n8tjrTtjj d«}|r"t jj|dd|«Std «d|fz}nÔtjr•tjj d «}|r t jj||«Stjj d«}|r!t jj|d |«Std«d d|fz}n/tjtd «tjz«‚tjtd «|z|¬«‚)z5Return the location of the "global" largefiles cache.s usercacheNs LOCALAPPDATAsAPPDATAs7define %s or %s in the environment, or set %s.usercachesHOMEsLibrarysCachess1define %s in the environment, or set %s.usercachesXDG_CACHE_HOMEs.cachesunknown operating system: %s sunknown %s usercache location)Úhint)Ú configpathr Ú iswindowsrÚenvironÚgetr+r,r=rÚisdarwinÚisposixrr"Úosname)r#Únamer,rCÚappdataÚhomes rr>r>Zs²€à �=‰=˜˜|Ó ,€D٠؈ à €Dä×ÒÜ×"Ñ"×&Ñ&Ø œX×-Ñ-×1Ñ1°*Ó=ó ˆñ Ü—7‘7—<‘< ¨Ó.Ð .äÐKÓLØ Ø Ø ðP ñ Šô × Ò Ü×Ñ×#Ñ# GÓ,ˆÙ Ü—7‘7—<‘<  j°)¸TÓBÐ BäÐEÓFØ Ø ðJ ñ ‰ô × Ò Ü×Ñ×#Ñ#Ð$5Ó6ˆÙ Ü—7‘7—<‘<  dÓ+Ð +Ü×Ñ×#Ñ# GÓ,ˆÙ Ü—7‘7—<‘<  i°Ó6Ð 6äÐKÓLØ Ø Ø ðP ñ ‰ô �k‰kÜ Ð/Ó 0´8·?±?Ñ Bó ð ô �+‰+”aÐ8Ó9¸DÑ@ÀtÔ LÐLrAcóX—t||«}tjj|«S©N)r@r+r,Úexists)r#r?r,s rÚ inusercacherQŒs!€Ü ˜˜TÓ "€DÜ �7‰7�>‰>˜$Ó ÐrAcóN—t||«\}}|r)|jjtd«|z«|St |j|«rU|jjtd«|z«t ||«}t t|j|«|«|Sy)z¯Return store path of the largefile with the specified hash. As a side effect, the file might be linked from user cache. Return None if the file can't be found locally.sfound %s in store sfound %s in system cache N)Ú findstorepathr#ÚnoterrQÚ storepathr;r@)rr?r,rPs rÚfindfilerV‘s‰€ô!  tÓ,�L€Dˆ&Ù Ø �‰� ‰ ”QÐ-Ó.°Ñ5Ô6؈ Ü �T—W‘W˜dÔ #Ø �‰� ‰ ”QÐ4Ó5¸Ñ<Ô=ܘ˜tÓ$ˆÜ Œ]˜4Ÿ7™7 DÓ )¨4Ô0؈ Ø rAc󈇗eZdZdZdZˆfd„Zˆfd„Zˆfd„Zdˆfd„ Zˆfd„Z ˆfd„Z ˆfd „Z ˆfd „Z ˆfd „Z d „Zˆfd „ZˆxZS)ÚlargefilesdirstateTs -large-filescó<•—tt|� t|««SrO)ÚsuperrXÚ __getitem__Úunixpath)ÚselfÚkeyÚ __class__s €rr[zlargefilesdirstate.__getitem__¥sø€ÜÔ'¨Ñ:¼8ÀC»=ÓIÐIrAcó<•—tt|� t|««SrO)rZrXÚ set_trackedr\©r]Úfr_s €rrazlargefilesdirstate.set_tracked¨sø€ÜÔ'¨Ñ:¼8ÀA»;ÓGÐGrAcó<•—tt|� t|««SrO)rZrXÚ set_untrackedr\rbs €rrez largefilesdirstate.set_untracked«sø€ÜÔ'¨Ñ<¼XÀa»[ÓIÐIrAcó<•—tt|� t|««SrO)rZrXÚnormalr\)r]rcÚparentfiledatar_s €rrgzlargefilesdirstate.normal®sø€ôÔ'¨Ñ5´h¸q³kÓBÐBrAcó<•—tt|� t|««SrO)rZrXÚremover\rbs €rrjzlargefilesdirstate.remove³óø€ÜÔ'¨Ñ5´h¸q³kÓBÐBrAcó<•—tt|� t|««SrO)rZrXÚaddr\rbs €rrmzlargefilesdirstate.add¶sø€ÜÔ'¨Ñ2´8¸A³;Ó?Ð?rAcó<•—tt|� t|««SrO)rZrXÚdropr\rbs €rrozlargefilesdirstate.drop¹sø€ÜÔ'¨Ñ3´H¸Q³KÓ@Ð@rAcó<•—tt|� t|««SrO)rZrXÚforgetr\rbs €rrqzlargefilesdirstate.forget¼rkrAcó<•—tt|� t|««SrO)rZrXÚ normallookupr\rbs €rrszlargefilesdirstate.normallookup¿sø€ÜÔ'¨Ñ;¼HÀQ»KÓHÐHrAcó—y©NF©)r]rcs rÚ_ignorezlargefilesdirstate._ignoreÂs€ØrAcóV•—|r|jdd¬«tt|�d«y)Nslargefiles/dirstatesplain)Úlocation)Ú addbackuprZrXr2)r]Útrr_s €rr2zlargefilesdirstate.writeÅs)ø€ñ Ø �L‰LÐ/¸(ˆLÔ CÜ Ô  $Ñ-¨dÕ3rArO)Ú__name__Ú __module__Ú __qualname__Ú_large_file_dirstateÚ_tr_key_suffixr[rarergrjrmrorqrsrwr2Ú __classcell__)r_s@rrXrX¡sSø„ØÐØ$€NôJôHôJõCô Cô@ôAôCôIò÷4ð4rArXc óX‡—t‰jdd«}|�|S‰j}t}t j|j |««}t j‰j v}t||‰j‰jjˆfd„‰j|«}|rÊ|j|j |d««s© ‰jd¬«5|j‰«5t‰«} ‰jj!| gdd¬«} t#| «dkDr|j%|«| D]"} t'| «} |j)| d d d ¬ «Œ$ ddd«ddd«|S|S#1swYŒxYw#1swY|SxYw#t*j,$rY|SwxYw) zú Return a dirstate object that tracks largefiles: i.e. its root is the repo root, but it is saved in .hg/largefiles/dirstate. If a dirstate object already exists and is being used for a 'changing_*' context, it will be returned. Ú _sub_dirstateNcó.•—tj‰«SrO)rÚmatcher)rs€rÚz openlfdirstate..âsø€”—‘˜tÔ$rAsdirstateF)Úwait©ÚsubreposÚunknownÚignoredrT)Ú p1_trackedÚ wc_trackedÚpossibly_dirty)rrrrÚvfsmodr=r ÚDIRSTATE_V2_REQUIREMENTrXÚrootÚ _validateÚ nodeconstantsrPÚwlockÚchanging_filesÚgetstandinmatcherÚwalkÚlenr*Ú splitstandinÚhacky_extension_update_filerÚ LockError) r#rÚcreateÚ sub_dirstaterÚ lfstoredirÚopenerÚuse_dirstate_v2Ú lfdirstater…ÚstandinsÚstandinÚlfiles ` rÚopenlfdirstater¥Îs�ø€ô˜4Ÿ=™=¨/¸4Ó@€LØÐØÐØ �(‰(€CÜ€JÜ �Z‰Z˜Ÿ™ Ó,Ó -€FÜ"×:Ñ:¸d×>OÑ>OÐO€OÜ#ØØ Ø � ‰ Ø � ‰ ×ÑÛ$Ø ×ÑØó€Jñ�c—j‘j §¡¨*°kÓ!BÔCð Ø—‘ �Õ'¨×)BÑ)BÀ4Õ)HÜ+¨DÓ1�ØŸ=™=×-Ñ-Ø b°%Àð.ó�ô�x“= 1Ò$Ø—L‘L Ô,ã'�GÜ(¨Ó1�EØ×:Ñ:ØØ#'Ø#'Ø'+ð ;õñ (÷*I×'ð, Ј:Ð÷-*IÐ)Hú×'ð, Ðûô �‰ò ð Ø Ðð  úsIÃFÃ!FÃ3A1E9Å%FÅ-FÅ9F Å>FÆFÆ FÆFÆF)Æ(F)có@—|d}tj«}|j|gddd¬«\}}}|j|j}}|d} |D]·} |t | «} | r&t| «t|j| ««k7r|j| «ŒL|j| «| | j«} | j} | j}tj| |«}|€Œ¡| ||f}|j!| |«Œ¹|S#t $rd} YŒ·wxYw)Nó.F©r‰r‹ÚcleanrŠ)ÚmatchmodÚalwaysÚstatusÚmodifiedr©r£Ú LookupErrorÚ readasstandinÚhashfileÚwjoinÚappendÚlstatr5Úst_sizerÚreliable_mtime_ofÚ set_clean)r¡rÚpctxr ÚunsureÚsÚmtime_boundaryr­r©Úwctxr¤ÚfctxÚstÚmodeÚsizeÚmtimeÚ cache_datas rÚlfdirstatestatusrÂs#€Ø �‰:€DÜ �O‰OÓ €EØ *× 1Ñ 1Ø ˜ E°Àð!2ó!Ñ€FˆAˆ~ð—j‘j !§'¡'ˆe€HØ �‰:€DÛˆð Øœ ›Ñ'ˆDñ”} TÓ*¬h°t·z±zÀ%Ó7HÓ.IÒIØ �O‰O˜EÕ "à �L‰L˜Ô Ø�e‘×"Ñ"Ó$ˆBØ—:‘:ˆDØ—:‘:ˆDÜ×/Ñ/°°NÓCˆEØÑ Ø" D¨%Ð0� Ø×$Ñ$ U¨JÕ7ðð €Høôò ØŠDð úsÁDÄ DÄDcóÊ—|€ t|«}||j|«D�cgc]4}|€%|jj|«jr t |«‘Œ6c}Scc}w)zNreturn a list of largefiles in the working copy or the specified changeset)r–r—rÚ get_entryÚ any_trackedr™)rÚrevr…rcs rÚ listlfilesrÇ sg€ð€Ü# DÓ)ˆð �c‘—‘ Ô(ó á(ˆAØ ˆ?˜dŸm™m×5Ñ5°aÓ8×DÒDô �Q�Ø(ñ ðùò s¤9A cóV—tjjt|||««S)zBReturn true if a largefile with the given hash exists in the store)r+r,rPrU©rr?Ú forcelocals rÚinstorerË/s€ä �7‰7�>‰>œ) D¨$° Ó;Ó <ÐÜ ˜˜c 8¨XÕ 6ñ rAcóD—t|j|«r+tt|j|«t ||««yt j tjjt ||«««t|d«5}t jt ||«|jj¬«5}t j|«D]}|j|«Œ ddd«ddd«t!||«y#1swYŒxYw#1swYŒ"xYw)Nr))Ú createmode)rQr#r;r@rUrr*r+r,r-rr0Ústorerér1r2Úlinktousercache)rrßr?r8r9r:s rrÝrÝsÊ€Ü�4—7‘7˜DÔ!Ü Œ]˜4Ÿ7™7 DÓ )¬9°T¸4Ó+@ÕAä � ‰ ”b—g‘g—o‘o¤i°°dÓ&;Ó<Ô=Ü �$˜Ô  $Ü×$Ñ$ܘ$ Ó%°$·*±*×2GÑ2GõàÜ!×/Ñ/°Ö5�EØ—J‘J˜uÕ%ñ6÷÷ô ˜˜dÕ#÷ ðú÷Ð ús$ 6DÃ,D Ã-DÄ D ÄDÄDcó\—t|j|«}tt||«|«y)zRLink / copy the largefile with the specified hash from the store to the cache.N)r@r#r;rUrÑs rrërë�s%€ô ˜Ÿ™ $Ó '€DÜŒ�4˜Ó  Õ%rAcóp—|j}t}d„}|rn|j«s^|j«D�cgc]}|j ||«‘Œ}}|s|j |«g}t j |d||¬«}|St j |d|j |«g|¬«}|Scc}w)zDReturn a match object that applies rmatcher to the standin directorycó—yrOrv)rcÚmsgs rr†z#getstandinmatcher..šs€˜4rAN)Úbadfn)rÓÚ shortnamer«rãr=r r )rÚrmatcherrÓÚ standindirrðÚpatÚpatsr s rr–r–”s«€à �9‰9€DÜ€Jñ €Eᘟ™Ô)Ø6>·n±nÔ6FÓGÑ6F¨s�— ‘ ˜* cÕ*Ð6FˆÐGÙØ—I‘I˜jÓ)Ð*ˆDÜ— ‘ ˜d 4™j¨$°eÔ<ˆð €Lô— ‘ ˜d 4™j¨4¯9©9°ZÓ+@Ð*AÈÔOˆØ €LùòHsºB3cóT‡‡—t|‰«}|jŠˆˆfd„}||_|S)z©Return a matcher that accepts standins corresponding to the files accepted by rmatcher. Pass the list of files in the matcher as the paths specified by the user.cóL•—‰|«xr‰jt|««SrO)Úmatchfnr™)rcÚ isstandinròs €€rÚcomposedmatchfnz.composestandinmatcher..composedmatchfn®s!ø€Ù˜‹|ÒA × 0Ñ 0´¸a³Ó AÐArA)r–rø)rròÚsmatcherrúrùs ` @rÚcomposestandinmatcherrü§s1ù€ô!  xÓ0€HØ× Ñ €IõBð'€HÔà €OrAcó:—ttj|«zS)zLReturn the repo-relative path to the standin for the specified big file.)ÚshortnameslashrÚpconvert©r×s rr£r£¶s€ô œDŸM™M¨(Ó3Ñ 3Ð3rAcó,—|jt«S)zsReturn true if filename is a big file standin. filename must be in Mercurial's internal form (slash-separated).)Ú startswithrþrs rrùrùÃs€ð × Ñ œ~Ó .Ð.rAcóŒ—tj|«jdd«}t|«dk(r|dtk(r|dSy)Nréér)rrÿÚsplitr˜rñ)r×Úbitss rr™r™ÉsA€ô �=‰=˜Ó "× (Ñ (¨¨qÓ 1€DÜ ˆ4ƒy�A‚~˜$˜q™'¤YÒ.Ø�A‰wˆàrAcóæ—|j|«}|jj|«r%t|«}t |«}t ||||«yt jtd«|z«‚)zŠRe-calculate hash value of lfile and write it into standin This assumes that "lfutil.standin(lfile) == standin", for efficiency. s%s: file not found!N) r±rÓrPr°Ú getexecutableÚ writestandinrr"r)rr¤r£rßr?Ú executables rÚ updatestandinr Ôs_€ð �:‰:�eÓ €DØ ‡y�y×јÔܘ‹~ˆÜ" 4Ó(ˆ Ü�T˜7 D¨*Õ5ä�k‰kœ!Ð2Ó3°eÑ;Ó<З|j«j«S)zxread hex hash from given filectx of standin file This encapsulates how "standin" data is stored into storage layer.)ÚdataÚstrip)r¼s rr¯r¯âs€ð �9‰9‹;× Ñ Ó ÐrAcó@—|j||dz|xrdxsd«y)z#write hash to /ó óxrAN)Úwwrite)rr£r?r s rr r és €à‡K�K�˜ ™ zÒ':°dÒ'A¸cÕBrAcó°—tjd«}|D]$}|j|«|j|«Œ&t |j ««S)z‡Read bytes from instream (iterable) and write them to outfile, computing the SHA-1 hash of the data along the way. Return the hash.rA)rÚsha1Úupdater2rÚdigest)ÚinstreamÚoutfileÚhasherrs rrÔrÔîsG€ô�]‰]˜3Ó €FÛˆØ� ‰ �dÔØ� ‰ �dÕðô ˆv�}‰}‹Ó ÐrAcóœ—tjj|«syt|d«5}t |«cddd«S#1swYyxYw)NrAr))r+r,rPrÚhexsha1)rßÚfds rr°r°øs4€Ü �7‰7�>‰>˜$Ô ØÜ ˆd�EÔ ˜bÜ�r‹{÷ × Ò ús ­ AÁA cóº—tj|«j}|tjzxr(|tjzxr|tj zSrO)r+r4r5ÚS_IXUSRÚS_IXGRPÚS_IXOTH)r×r¾s rr r ÿsI€Ü �7‰7�8Ó × $Ñ $€Dà ”— ‘ Ñ ò "Ø ”D—L‘LÑ ò "à ”D—L‘LÑ ðrAcó>—d„}|||«}|D] }|||«}Œ |S)Ncód—|jd«s|dz }|jd«r|dd}||zS)Nrr)Úendswithr)ÚleftÚrights rr=zurljoin..join s:€Ø�}‰}˜TÔ"Ø �D‰LˆDØ × Ñ ˜DÔ !ؘ!˜"�IˆEØ�e‰|ÐrArv)ÚfirstÚsecondÚargr=ÚurlÚas rÚurljoinr,s/€òñ ˆu�fÓ €CÛ ˆÙ�3˜‹l‰ðà €JrAcó²—tj«}tj|«D]}|j |«Œt |j ««S)zUhexsha1 returns the hex-encoded sha1 sum of the data in the file-like object data)rrrr1rrr)ÚfileobjÚhr:s rrrs?€ô � ‰ ‹€AÜ×#Ñ# GÖ,ˆØ �‰��ð-ä ˆq�x‰x‹z‹?ÐrAcó0—tj||d«S)Nr))r Ú httpsendfile)r#r×s rr1r1s€Ü × &Ñ & r¨8°UÓ ;Ð;rAcóf—tjtjj |««S)z@Return a version of path normalized for use with the lfdirstate.)rrÿr+r,Únormpath)r,s rr\r\#s €ä �=‰=œŸ™×)Ñ)¨$Ó/Ó 0Ð0rAcóÞ—d|jvr@|jj«D]#}|jsŒt|j vsŒ#yt t|j|d««S)z,Return true if the repo is a largefile repo.rTF) r rêÚ data_entriesÚ is_revlogrþÚ target_idÚanyr¥r#)rÚentrys rÚ islfilesrepor:(sV€à˜×)Ñ)Ñ)Ø—Z‘Z×,Ñ,Ö.ˆEØ�‹¤>°U·_±_Ò#DÙð/ô Œ~˜dŸg™g t¨UÓ3Ó 4Ð4rAcó—eZdZd„Zy)Ústoreprotonotcapablecó—||_yrO)Ú storetypes)r]r>s rÚ__init__zstoreprotonotcapable.__init__3s €Ø$ˆ�rAN)r|r}r~r?rvrArr<r<2s„ó%rAr<cóî—g}t|«}|d}|jj|gdd¬«D]/}t|«} t ||«}|j ||f«Œ1|S#t $rd}YŒ$wxYw)NFrˆ)r–rr—r™r¯ÚIOErrorr²)rr¢r…r»r£r¤r?s rÚgetstandinsstaterB7s�€Ø€HÜ Ó%€GØ �‰:€DØ—=‘=×%Ñ%ؘ" e°Uð&öˆô˜WÓ%ˆð Ü   g¡Ó/ˆDð �‰˜ ˜ Õ&ðð €Oøôò ØŠDð úsÁA&Á& A4Á3A4cóþ—t|«}||jvr|j|dd¬«y|jj|«}|j||j|j |j d¬«y)NF)rŒr�T)r�rŒÚp2_inforŽ)r£rršrÄÚtrackedrŒrD)rr¡r¤rsÚ lfstandinr9s rÚsynclfdirstaterGGsy€Ü˜“€IؘŸ ™ Ñ%Ø×.Ñ.Ø ØØð /õ ð — ‘ ×'Ñ'¨ Ó2ˆØ×.Ñ.Ø Ø—}‘}Ø×'Ñ'Ø—M‘MØð /õ rAcó<—|j«}|jj|«5||«t|j|«}|j «D]}t |«}|€Œt|||d«Œ  ddd«t||«y#1swYŒxYwru) rrÚchanging_parentsr¥r#rãr™rGrç)ÚorigrÞrårr¡rcr¤s rÚ markcommittedrKZs€Ø �8‰8‹:€Dà �‰× 'Ñ '¨Õ -Ù ˆTŒ ô$ D§G¡G¨TÓ2ˆ Ø—‘–ˆAÜ  “OˆEØÑ ܘt Z°¸Õ>ñ÷ .ô0�4˜Õ÷1 .Ð -ús¬?BÁ,BÂBcó–—t|«jt|««}g}|D]}|d|vsŒ |j|d«Œ |S)Nr)ÚsetÚsymmetric_differencer²)Ú oldstandinsÚ newstandinsÚchangedstandinsÚfilelistrcs rÚgetlfilestoupdaterSxsN€Ü˜+Ó&×;Ñ;¼CÀ Ó.matchfnsø€Ù �qŒ>ؘF�?Ð "à˜�=Ð rA)r#r«rªrÚrunning_statusr¥r¬r­ÚaddedÚremovedrÇr£rÓrPr Ú _subdirlfsrãÚ_filesrür—r™rÄrEÚcopyrøÚsortedrÅr²)rr r#Ú dirtymatchr¡r¸r¹rºÚ modifiedfilesr¤ràrûÚ actualfilesrcrørjrkr¢s @@@rÚupdatestandinsbymatchrv¢suú€ð �‰€Bð  €}˜Ÿ ™ œô —_‘_Ó&ˆ Ø �]‰]× )Ñ )¨$Õ /Ü'¨¨DÓ1ˆJØ(2×(9Ñ(9ØØØØØð ):ó)Ñ %ˆF�A�~÷0ð §¡Ñ+¨a¯g©gÑ5¸¿ ¹ ÑAˆ ܘDÓ!ˆóˆEؘ Ò%Ü" 5›>�Ø—9‘9×#Ñ# HÕ-ð—y‘y×'Ñ'¨Õ.Ü% d¨E°8Õ<ððˆ ä ˜Ó €FØ—?‘? 5§;¡;£=°&Ó9€E„Lô% T¨5Ó1€HØ�}‰}×!Ñ!ؘ2 u°eð"ó€Hñ ؈ ô   DÓ)€JۈܘXÓ&ˆØ × Ñ  Ó &× .Ó .Ü ˜$  xÕ 0ðô �I‰I�eÓ €EØ—-‘-€Kð  ‡L‚L”F˜8Ó$Ñ$…Là€KØ �\Œ\ˆÜ˜1“:ˆð �‰;˜( hÑ.Ø—=‘=×*Ñ*¨8Ó4×<Ò<Ø—}‘}×.Ñ.¨qÓ1×9Ò9ØØ—]‘]×,Ñ,¨QÓ/×;Ò;Øà×ј1Õðð€E„Lö!ð €E„Mà €L÷s0Ñ /ús Á'J6Ê6Kcó—eZdZdZd„Zd„Zy)Úautomatedcommithooka®Stateful hook to update standins at the 1st commit of resuming For efficiency, updating standins in the working directory should be avoided while automated committing (like rebase, transplant and so on), because they should be updated before committing. But the 1st commit of resuming automated committing (e.g. ``rebase --continue``) should update them, because largefiles may be modified manually. có—||_yrO)Úresuming)r]rzs rr?zautomatedcommithook.__init__s €Ø ˆ� rAcóD—|jrd|_t||«S|Sru)rzrv)r]rr s rÚ__call__zautomatedcommithook.__call__ s"€Ø �=Š=Ø!ˆDŒMÜ(¨¨uÓ5Ð 5àˆLrAN)r|r}r~Ú__doc__r?r|rvrArrxrxs„ñ ò!órArxcór—|€%tj|d«r|jdS|r |jSd„S)a)Return the function to write largefiles specific status out If ``forcibly`` is ``None``, this returns the last element of ``repo._lfstatuswriters`` as "default" writer function. Otherwise, this returns the function to always write out (or ignore if ``not forcibly``) status. s_largefilesenabledéÿÿÿÿcó—yrOrv)rïÚoptss rr†z!getstatuswriter..7s€¨rA)rÚ safehasattrÚ_lfstatuswritersr¬)r#rÚforciblys rÚgetstatuswriterr…(s>€ðМD×,Ñ,¨TÐ3HÔIØ×$Ñ$ RÑ(Ð(á Ø—9‘9Ð á,Ð ,rA)T)é )NN)FrO)Nr}Ú contextlibrqr+r4Úmercurial.i18nrÚmercurial.noderÚmercurial.pycompatrÚ mercurialrrrr r rªr r r rrrr�Úmercurial.utilsrÚmercurial.dirstateutilsrrñrþrÚcontextmanagerrr'r;r@r>rQrVrXr¥rÂrÇrËrUrSrÛrárçrÝrër–rür£rùr™r r¯r rÔr°r r,rr1r\r:Ú Exceptionr<rBrGrKrSrgrvrxr…rvrArÚr�sgðñNãÛ Û Û åÝÝ#÷ ÷ ÷ ñ õ%Ý-à € ؘTÑ!€Ø €ð  ×Ñò!óð!ó ò -ò1ð$ó/Mòd ò ô *4˜×*Ñ*ô*4óZ4òn ó6 ó=ó )òò$ò2  ò7ò $ò&óò& ò 4ò/ò ò =òòCò  òòò òò<ò1ò 5ô%˜9ô%ò ò  ò&ò<ò8òBl÷^ñô.-rA