Ë ‡9Ü¡e?µãóV—ddlZddlmZddlmZmZdZed«Zd„ZGd„d «Z y) éNé)Ú_)ÚerrorÚutilisCpartial read of revlog %s; expected %d bytes from offset %d, got %dcó&—||dz zdk(xr|dk7S)Nér©)Úns úJusr/lib/python3.12/site-packages/mercurial/revlogutils/randomaccessfile.pyÚ_is_power_of_twor s€Ø ��Q‘‰K˜1Ñ Ò ( ! q¡&Ð(ócóˆ—eZdZdZ d d„Zd„Zd d„Zejd d„«Z ejd„«Z d d„Z d d „Z d „Z y) ÚrandomaccessfilezDAccessing arbitrary chuncks of data within a file, with some cachingNcó¤—t|«sJ‚||_||_||_d|_d|_d|_d|_|r|\|_|_yy©Nr r)r ÚopenerÚfilenameÚdefault_cached_chunk_sizeÚwriting_handleÚreading_handleÚ _cached_chunkÚ_cached_chunk_position)ÚselfrrrÚ initial_caches r Ú__init__zrandomaccessfile.__init__sa€ô Ð 9Ô:Ð:Ð:àˆŒ Ø ˆŒ Ø)BˆÔ&Ø"ˆÔØ"ˆÔØ ˆÔØ&'ˆÔ#Ù Ø>KÑ ;ˆDÔ '¨Õ);ð r có —d|_d|_yr)rr)rs r Ú clear_cachezrandomaccessfile.clear_cache1s€Ø ˆÔØ&'ˆÕ#r có<—|j|j|¬«S)zReturn a file object)Úmode)rr)rrs r Ú_openzrandomaccessfile._open5s€à�{‰{˜4Ÿ=™=¨tˆ{Ó4Ð4r c#óØK—|�|–—y|jr|j–—y|jr|j–—y|j«5}|–—ddd«y#1swYyxYw­w)z%File object suitable for reading dataN)rrr )rÚexisting_file_objÚfps r Ú _open_readzrandomaccessfile._open_read9s[èø€ð Ð (Ø#Ó #ð × Ò Ø×%Ñ%Ó %à × Ò Ø×%Ñ%Ó %ð—‘” Ø’÷—‘üs‚AA*ÁAÁ A*ÁA'Á#A*c#óèK—|j€F|j€:|j�.|j«5}||_ d–—d|_ ddd«yd–—y#d|_wxYw#1swYyxYw­w)z4Context manager that keeps the file open for readingN)rrrr )rr#s r Úreadingzrandomaccessfile.readingOslèø€ð × Ñ Ð 'Ø×#Ñ#Ð+Ø— ‘ Ð)à—‘” Ø&(�Ô#ð/Ûà*.�DÕ'÷ �ô øð+/�DÕ'ú÷ �üs4‚5A2·A&ÁAÁA&Á A2Á A#Á#A&Á&A/Á+A2có—||z}|j}|t|j«z}||krA||kr<||k(r||k(r |jS||z }tj|j||«S|j |||«S)a’Read a chunk of bytes from the file. Accepts an absolute offset, length to read, and an optional existing file handle to read from. If an existing file handle is passed, it will be seeked and the original seek position will NOT be restored. Returns a str or buffer of raw byte data. Raises if the requested number of bytes could not be read. )rÚlenrrÚbufferÚ_read_and_update_cache)rÚoffsetÚlengthr"ÚendÚ cache_startÚ cache_endÚrelative_starts r Ú read_chunkzrandomaccessfile.read_chunk`s�€ð�v‰oˆØ×1Ñ1ˆ ؤ# d×&8Ñ&8Ó"9Ñ9ˆ à ˜&Ò  S¨IÒ%5ؘfÒ$¨° Ò)9Ø×)Ñ)Ð)Ø# kÑ1ˆNÜ—;‘;˜t×1Ñ1°>À6ÓJÐ Jà×*Ñ*¨6°6Ð;LÓMÐMr cóö—||jdz z}||z|jz|jdz z|z }|j|«5}|j|«|j|«}ddd«|j |«||z }t |«|z } | |kr,t |j||| fz} tj| «‚||k7s||k7rtj|||«S|S#1swYŒ‚xYw)Nr) rr$ÚseekÚreadÚ_add_cached_chunkr(ÚPARTIAL_READ_MSGrrÚ RevlogErrorrr)) rr+r,r"Ú real_offsetÚ real_lengthÚfile_objÚdataÚrelative_offsetÚgotÚmessages r r*z'randomaccessfile._read_and_update_cacheys€ð ×!?Ñ!?À!Ñ!CÐDÑDˆ à �f‰_˜t×=Ñ=Ñ =Ø×.Ñ.°Ñ2Ð3ñ 4à ñˆ ð�_‰_Ð.Ô /°8Ø �M‰M˜+Ô &Ø—=‘= Ó-ˆD÷0ð ×ј{¨DÔ1à  ;Ñ.ˆÜ�$‹i˜/Ñ)ˆØ �Š<Ü&¨$¯-©-¸ÀÈÐ)MÑMˆGÜ×#Ñ# GÓ,Ð ,à �[Ò  K°6Ò$9Ü—;‘;˜t _°fÓ=Ð =؈ ÷0Ð /ús Á #C/Ã/C8cóæ—|jt|j«z|k(r>t|j«t|«ztkr|xj|z c_y||_||_y)z|Add to or replace the cached data chunk. Accepts an absolute offset and the data that is at that location. N)rr(rÚ_MAX_CACHED_CHUNK_SIZE)rr+r;s r r5z"randomaccessfile._add_cached_chunk’sb€ð × 'Ñ '¬#¨d×.@Ñ.@Ó*AÑ AÀVÒ KÜ�D×&Ñ&Ó'¬#¨d«)Ñ3Ô6LÒLð × Ò  $Ñ &Ö à!%ˆDÔ Ø*0ˆDÕ 'r )N)ór)Ú__name__Ú __module__Ú __qualname__Ú__doc__rrr Ú contextlibÚcontextmanagerr$r&r1r*r5r r r rrs^„ÙNðó Lò((ó5ð×Ñòóðð*×Ññóðó Nó2ó2 1r r) rFÚi18nrÚrrr@r6r rr r r ÚrJs9ðó å÷ð !ÐáØJóÐò )÷E1òE1r