Ë «¸Ú~;>mãój—dZddlZddlZddlmZddlmZejd«ZGd„de «Z ejGd „d ««Z ejGd „d ««Z Gd „d«ZGd„de«ZGd„de«ZGd„de«ZGd„de«ZGd„de«Zd„ZGd„d«Zy)a•linelog is an efficient cache for annotate data inspired by SCCS Weaves. SCCS Weaves are an implementation of https://en.wikipedia.org/wiki/Interleaved_deltas. See mercurial/helptext/internals/linelog.txt for an exploration of SCCS weaves and how linelog works in detail. Here's a hacker's summary: a linelog is a program which is executed in the context of a revision. Executing the program emits information about lines, including the revision that introduced them and the line number in the file at the introducing revision. When an insertion or deletion is performed on the file, a jump instruction is used to patch in a new body of annotate information. éNé)Úattr)Úpycompats>IIcó—eZdZdZy)Ú LineLogErrorz>Error raised when something bad happens internally in linelog.N)Ú__name__Ú __module__Ú __qualname__Ú__doc__©óú5usr/lib/python3.12/site-packages/mercurial/linelog.pyrrs„ÚHr rcór—eZdZej«Zej«Zej«Zy)ÚlineinfoN)rr r rÚibÚrevÚlinenumÚ_offsetr r rrr#s+„ð ˆ$�'‰'‹)€Càˆd�g‰g‹i€Gàˆd�g‰g‹i�Gr rcóx—eZdZej«Zej«Zej«Zd„Zy)Úannotateresultcó,—t|j«S©N)ÚiterÚlines©Úselfs rÚ__iter__zannotateresult.__iter__3s€Ü�D—J‘JÓÐr N) rr r rrrrÚ_eofrr r rrr-s.„à ˆ$�'‰'‹)€CØ ˆD�G‰G‹I€EØ ˆ4�7‰7‹9€Dó r rcóÞ—eZdZejZej d„«Zej d„«Zd„Z ej d„«Z ej d„«Z ej d„«Z y)Ú_llinstructioncó—yrr ©rÚop1Úop2s rÚ__init__z_llinstruction.__init__;ó€à r có—yrr rs rÚ__str__z_llinstruction.__str__?r&r có—t|«Sr)Ústrrs rÚ__repr__z_llinstruction.__repr__Cs €Ü�4‹yÐr có—yrr ©rÚothers rÚ__eq__z_llinstruction.__eq__Fr&r có—y)z5Encode this instruction to the binary linelog format.Nr rs rÚencodez_llinstruction.encodeJó�r có—y)agExecute this instruction. Args: rev: The revision we're annotating. pc: The current offset in the linelog program. emit: A function that accepts a single lineinfo object. Returns: The new value of pc. Returns None if exeuction should stop (that is, we've found the end of the file.) Nr ©rrÚpcÚemits rÚexecutez_llinstruction.executeNr2r N) rr r ÚabcÚABCMetaÚ __metaclass__Úabstractmethodr%r(r+r/r1r7r r rr r 7s’„à—K‘K€Mà×Ññ óð ð ×Ññ óð òð ×Ññ óð ð ×ÑñDóðDð ×Ññ  óñ  r r có.—eZdZdZd„Zd„Zd„Zd„Zd„Zy)Ú_jgez@If the current rev is greater than or equal to op1, jump to op2.có —||_||_yr©Ú_cmprevÚ_targetr"s rr%z _jge.__init__`ó€ØˆŒ ؈� r có8—d|j|jfzS)Nz JGE %d %dr?rs rr(z _jge.__str__ds€Ø˜dŸl™l¨D¯L©LÐ9Ñ9Ð9r cóœ—t|«t|«k(xr4|j|jk(xr|j|jk(Sr©Útyper@rAr-s rr/z _jge.__eq__góA€ä �‹Jœ$˜u›+Ñ %ò .Ø— ‘  § ¡ Ñ-ò .à— ‘  § ¡ Ñ-ð r có\—tj|jdz|j«S©Né©Ú_llentryÚpackr@rArs rr1z _jge.encodens €Ü�}‰}˜TŸ\™\¨QÑ.°· ± Ó=Ð=r cóB—||jk\r |jS|dzS©Nrr?r4s rr7z _jge.executeqs!€Ø �$—,‘,Ò Ø—<‘<Ð Ø�A‰vˆ r N© rr r r r%r(r/r1r7r r rr=r=]s„ÙJòò:ò ò>ór r=có.—eZdZdZd„Zd„Zd„Zd„Zd„Zy)Ú_jumpz=Unconditional jumps are expressed as a JGE with op1 set to 0.có8—|dk7rtd|z«‚||_y)Nrs%malformed JUMP, op1 must be 0, got %d)rrAr"s rr%z_jump.__init__zs!€Ø �!Š8ÜÐGÈ#ÑMÓNÐ N؈� r có —d|jzS)NzJUMP %d©rArs rr(z _jump.__str__s€Ø˜DŸL™LÑ)Ð)r cóf—t|«t|«k(xr|j|jk(Sr)rFrAr-s rr/z _jump.__eq__‚s'€Ü�D‹zœT %›[Ñ(ÒJ¨T¯\©\¸U¿]¹]Ñ-JÐJr cóB—tjd|j«S©Nr)rLrMrArs rr1z _jump.encode…s€Ü�}‰}˜Q § ¡ Ó-Ð-r có—|jSrrUr4s rr7z _jump.executeˆs €Ø�|‰|Ðr NrPr r rrRrRws„ÙGòò *òKò.ór rRcó.—eZdZdZd„Zd„Zd„Zd„Zd„Zy)rz1EOF is expressed as a JGE that always jumps to 0.cóP—|dk7rtd|z«‚|dk7rtd|z«‚y)Nrs$malformed EOF, op1 must be 0, got %ds$malformed EOF, op2 must be 0, got %d)rr"s rr%z _eof.__init__�s7€Ø �!Š8ÜÐFÈÑLÓMÐ MØ �!Š8ÜÐFÈÑLÓMÐ Mð r có—y)NÚEOFr rs rr(z _eof.__str__•s€Ør có0—t|«t|«k(Sr)rFr-s rr/z _eof.__eq__˜s€Ü�D‹zœT %›[Ñ(Ð(r có.—tjdd«SrX)rLrMrs rr1z _eof.encode›s€Ü�}‰}˜Q Ó"Ð"r có—yrr r4s rr7z _eof.executežs€Ør NrPr r rrrŒs„Ù;òNò ò)ò#ór rcó.—eZdZdZd„Zd„Zd„Zd„Zd„Zy)Ú_jlz1If the current rev is less than op1, jump to op2.có —||_||_yrr?r"s rr%z _jl.__init__¥rBr có8—d|j|jfzS)NzJL %d %dr?rs rr(z _jl.__str__©s€Ø˜TŸ\™\¨4¯<©<Ð8Ñ8Ð8r cóœ—t|«t|«k(xr4|j|jk(xr|j|jk(SrrEr-s rr/z _jl.__eq__¬rGr cób—tjd|jdzz|j«S)NrrJrKrs rr1z _jl.encode³s%€Ü�}‰}˜Q $§,¡,°!Ñ"3Ñ4°d·l±lÓCÐCr cóB—||jkr |jS|dzSrOr?r4s rr7z _jl.execute¶s!€Ø �—‘Ò Ø—<‘<Ð Ø�A‰vˆ r NrPr r rrbrb¢s„Ù;òò9ò òDór rbcó.—eZdZdZd„Zd„Zd„Zd„Zd„Zy)Ú_linez Emit a line.có —||_||_yr©Ú_revÚ _origlinenor"s rr%z_line.__init__¿s€àˆŒ àˆÕr có8—d|j|jfzS)Nz LINE %d %drkrs rr(z _line.__str__Ås€Ø˜tŸy™y¨$×*:Ñ*:Ð;Ñ;Ð;r cóœ—t|«t|«k(xr4|j|jk(xr|j|jk(Sr)rFrlrmr-s rr/z _line.__eq__ÈsE€ä �‹Jœ$˜u›+Ñ %ò 6Ø— ‘ ˜UŸZ™ZÑ'ò 6à× Ñ  E×$5Ñ$5Ñ5ð r cób—tjd|jdzz|j«SrI)rLrMrlrmrs rr1z _line.encodeÏs&€Ü�}‰}˜Q $§)¡)¨q¡.Ñ1°4×3CÑ3CÓDÐDr cóZ—|t|j|j|««|dzSrO)rrlrmr4s rr7z _line.executeÒs&€Ù ŒX�d—i‘i ×!1Ñ!1°2Ó 6Ô7Ø�A‰vˆ r NrPr r rriri¼s„Ùòò <ò òEór ricób— tj||«\}}|dz}|dz }|dk(r.|dk(r|dk(r t ||«St ||«St||«S|dk(r t||«S|dk(r t||«Std|z«‚#tj$r}t d|z«‚d}~wwxYw)z?Decode a single linelog instruction from an offset in a buffer.s!reading an instruction failed: %rNérJrrsUnimplemented opcode %r) rLÚ unpack_fromÚstructÚerrorrrrRr=rbriÚNotImplementedError)ÚdataÚoffsetr#r$ÚeÚopcodes rÚ _decodeoner|×sË€ðEÜ×'Ñ'¨¨fÓ5‰ˆˆSð�4‰Z€FØ �‰(€CØ �‚{Ø �!Š8Ø�aŠxܘC “~Ð%ܘ˜c“?Ð "Ü�C˜‹~ÐØ �1ŠÜ�3˜‹}ÐØ �1ŠÜ�S˜#‹ÐÜ Ð8¸6ÑAÓ BÐBøô �<‰<òEÜÐ?À!ÑCÓDÐDûðEús‚BÂB.ÂB)Â)B.cóˆ—eZdZdZdd„Zd„Zd„Zd„Zed„«Z d„Z d „Z d „Z dd „Z d „Zed „«Zed„«Zd„Zdd„Zy)Úlinelogz1Efficient cache for per-line history information.Ncób—|€tdd«tdd«g}||_d|_||_yrX)rÚ_programÚ _lastannotateÚ_maxrev)rÚprogramÚmaxrevs rr%zlinelog.__init__ïs5€Ø ˆ?ô˜A˜q“z¤4¨¨1£:Ð.ˆG؈Œ Ø!ˆÔ؈� r cóœ—t|«t|«k(xr4|j|jk(xr|j|jk(Sr)rFr€r‚r-s rr/zlinelog.__eq__ùsA€ä �‹Jœ$˜u›+Ñ %ò .Ø— ‘  §¡Ñ/ò .à— ‘  § ¡ Ñ-ð r cóp—dtt|««|jt|j«fzS)Nz")ÚhexÚidr‚Úlenr€rs rr+zlinelog.__repr__s2€Ø3Ü ”�4“‹MØ �L‰LÜ �— ‘ Ó ð7 ñ ð r cóà‡—dttt|j«««zŠtjd«j ˆfd„t |jddd«D««S)Nz %%%dd %%só c3ó2•K—|]\}}‰||fz–—Œy­wrr )Ú.0ÚidxÚiÚfmts €rÚ z#linelog.debugstr.. s"øèø€ð+ Ù)H™v˜s AˆC�3˜�(�NÑ)Hùsƒr)r‰r*r€rÚsysstrÚjoinÚ enumerate)rr�s @rÚdebugstrzlinelog.debugstrs[ø€ØœC¤¤C¨¯ © Ó$6Ó 7Ó8Ñ8ˆÜ�‰˜uÓ%×*Ñ*ó+ Ü)2°4·=±=ÀÀÐ3DÀaÔ)Hó+ ó ð r có°—t|«tjzdk7r'tdt|«tjfz«‚t|«tjz }t |d«}t |t «rd}nDt |ttf«r |j}n!tdt|«jz«‚t |t ttf«sJ‚|j}||k7rtd||fz«‚tdd«g}td|«D].}|jt ||tjz««Œ0|||¬«S)Nrs9invalid linelog buffer size %d (must be a multiple of %d)z,Expected one of _jump, _jge, or _jl. Got %s.sFcorrupt linelog data: claimed %d entries but given data for %d entriesr)r„)r‰rLÚsizerr|Ú isinstancerRr=rbr@rFrrArÚrangeÚappend)ÚclsÚbufÚexpectedÚfakejger„Ú numentriesÚ instructionsrys rÚfromdatazlinelog.fromdata s8€ä ˆs‹8”h—m‘mÑ # qÒ (ÜØLÜ�s“8œXŸ]™]Ð+ñ,óð ô�s“8œhŸm™mÑ+ˆÜ˜S !Ó$ˆÜ �gœuÔ %؉FÜ ˜¤$¬ Ô -Ø—_‘_‰FäØ>Ü�w“-×(Ñ(ñ)óð ô˜'¤E¬4´Ð#5Ô6Ð6Ð6Ø—_‘_ˆ Ø �zÒ !Üð=à˜ZÐ(ñ)óð ô ˜Q › �|ˆ ܘA˜zÖ*ˆFØ × Ñ ¤ ¨3°¼¿¹Ñ0FÓ GÕ Hð+á�<¨Ô/Ð/r cóÀ—t|jt|j««j «}|dj d„|jddD««zS)Nr c3ó<K—|]}|j«–—Œy­wr)r1)r�r�s rr‘z!linelog.encode...sèø€ÐDÑ2C¨Q˜aŸh™hŸjÑ2Cùs‚r)r=r‚r‰r€r1r“)rÚhdrs rr1zlinelog.encode,sI€Ü�4—<‘<¤ T§]¡]Ó!3Ó4×;Ñ;Ó=ˆØ�S—X‘XÑD°$·-±-ÀÀÑ2CÓDÓDÑDÐDr có.—g|_d|_d|_yrX)r€r‚r�rs rÚclearz linelog.clear0s€ØˆŒ ؈Œ Ø!ˆÕr c óB—|j|||dt|«|¬«S)Nr)Ú_internal_blines)Ú replacelinesr‰)rrÚa1Úa2Úbliness rÚreplacelines_veczlinelog.replacelines_vec5s+€Ø× Ñ Ø ��R˜œC ›K¸&ð!ó ð r c ó—|jr |j}n|j|«}|t|j«kDr$t d|t|j«|fz«‚|t|j«k(r$t dd«}t dd|j «} n(|j|} |j| j}|jj} | «} |jj} g} | j}||kr�| ||z dzz}| t||««t||«D]a}|€+|t ||| «««| t||««Œ0||\}}|t ||| «««| t||««Œc||kr¿|t|j«kDr$t d|t|j«|fz«‚|t|j«k(r |j }n|j|j}|dkDr.||jkr|j|dz jdz}| t||««| «}| |«t!|t"t f«s| t#d| jdz««t#d| «|j| j<t|jj«|kDr||jj|_n#t!|t «sJ‚||j_| |jj||t%|jj&|«|j_||jkDr||_yy)z+Replace lines [a1, a2) with lines [b1, b2).s-%d contains %d lines, tried to access line %drrN)r�Úannotater‰rrrrr€rÚ__len__ršrbr™rir‚r=r˜rRÚmaxr)rrrªr«Úb1Úb2r¨ÚarÚa1instÚa1infoÚ programlenÚ oldproglenÚ appendinstÚ blineinfosÚbappendÚtgtrÚnewrevÚ newlinenumÚendaddrÚa1instpcs rr©zlinelog.replacelines:s€à × Ò ð ×#Ñ#‰Bà—‘˜sÓ#ˆBà ”�B—H‘H“ Ò ÜØ@Øœ˜BŸH™H›  rÐ*ñ+óð ð”3�r—x‘x“=Ò ô˜!˜Q“ZˆFܘa  B§G¡GÓ,‰Fà—X‘X˜b‘\ˆFØ—]‘] 6§>¡>Ñ2ˆFØ—]‘]×*Ñ*ˆ Ù“\ˆ Ø—]‘]×)Ñ)ˆ ðˆ Ø×#Ñ#ˆØ �Š7ð  R¡¨!¡ Ñ,ˆCá ”s˜3 “}Ô %Ü   Rž=�Ø#Ð+ÙœH S¨'±:³<Ó@ÔAÙœu S¨'Ó2Õ3à)9¸'Ñ)BÑ&�F˜JÙœH V¨Z¹»ÓFÔGÙœu V¨ZÓ8Õ9ð)ð �Š7Ø”C˜Ÿ™“MÒ!Ü"ØDØœC §¡›M¨2Ð.ñ/óðð”s˜2Ÿ8™8“}Ò$ØŸ'™'‘àŸ(™( 2™,×.Ñ.�Ø�AŠv˜# § ¡ Ò,ð Ÿ(™( 2¨¡6Ñ*×2Ñ2°QÑ6�Ù ”t˜C Ó)Ô *á“<ˆÙ�6Ôô˜&¤5¬$ -Ô0Ù ”u˜Q §¡°Ñ 2Ó3Ô 4ä(-¨a°Ó(<ˆ� ‰ �f—n‘nÑ%ô ˆt×!Ñ!×'Ñ'Ó (¨2Ò -Ø3;ˆD× Ñ × $Ñ $ RÑ (Õ 0ä˜f¤dÔ+Ð +Ð+Ø&.ˆD× Ñ Ô #Ø*4ˆ×Ñ× Ñ   BÐ'Ü!$ T×%7Ñ%7×%;Ñ%;¸SÓ!Aˆ×ÑÔà �—‘Ò ØˆD�Lð r cóF—d}g}d}|�f|t|j«krN|j|}|}|j|||j«}|dz }|�|t|j«krŒN|�t d|j «z«‚t ||«}||_|S)Nrrz4Probably hit an infinite loop in linelog. Program:\n)r‰r€r7ršrr•rr�)rrr5rÚexecutedÚinstÚlastpcr´s rr¯zlinelog.annotate’s³€Ø ˆØˆØˆðˆn ¬C°· ± Ó,>Ò!>Ø—=‘= Ñ$ˆD؈FØ—‘˜c 2 u§|¡|Ó4ˆBØ ˜‰MˆHð ˆn ¬C°· ± Ó,>Ó!>ð ˆ>ÜØGØ—-‘-“/ñ"óð ô˜C ¨Ó /ˆØˆÔ؈ r có—|jSr)r‚rs rr„zlinelog.maxrev§s €à�|‰|Ðr có€—|jjD�cgc]}|j|jf‘Œc}Scc}w)z?Return the last annotation result. C linelog code exposed this.)r�rrr)rÚls rrzlinelog.annotateresult®s7€ð-1×,>Ñ,>×,DÒ,DÓEÑ,D q�—‘˜Ÿ ™ Ò"Ð,DÑEÐEùÒEs™;cóH—|jj|jSr)r�rr)rÚlines rÚ getoffsetzlinelog.getoffset³s€Ø×!Ñ!×'Ñ'¨Ñ-×5Ñ5Ð5r cóÈ—|xsd}g}tt|j««D]¯}|j|}|dz}t|t«r |j }nqt|t «r|cSt|ttf«rnFt|t«r(|j|j|jf«ntd|z«‚||k(r|cS|}Œ±td«‚)zÃGet all lines that ever occurred in [start, end). Passing start == end == 0 means "all lines ever". This works in terms of *internal* program offsets, not line numbers. rsIllegal instruction %rsFailed to perform getalllines)r™r‰r€r˜rRrArrbr=riršrlrmr)rÚstartÚendr5rÚsteprÃÚnextpcs rÚ getalllineszlinelog.getalllines¶sË€ðŠZ�aˆØˆôœ#˜dŸm™mÓ,Ö-ˆDØ—=‘= Ñ$ˆDؘ!‘VˆFܘ$¤Ô&ØŸ™‘ܘD¤$Ô'Ø’ ܘD¤3¬ +Ô.ØÜ˜D¤%Ô(Ø— ‘ ˜dŸi™i¨×)9Ñ)9Ð:Õ;ä"Ð#<¸tÑ#CÓDÐDؘŠ}Ø’ ؉Bð.ô Ð;Ó<ÐrØsÉðñ ó Û åÝà ˆ6�=‰=˜Ó €ôI�9ôIð‡�÷ðóðð‡�÷ ð óð ÷# ñ# ôLˆ>ôô4ˆNôô*ˆ>ôô,ˆ.ôô4ˆNôò6C÷*f=òf=r