Ë Ð@˜;¨ÞÓ„ã óè—dZddlZddlZddlZddlZddlmZddlmZm Z m Z ddl m Z ddl mZmZmZmZmZmZmZmZmZmZmZmZddlmZmZddlmZmZ dd l m Z e jBiZ#ejHe#«Z$e$d d e rd nd d¬«dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1ddddddd d!e+zgZ2d log` to automatically overlay a bundle on top of the existing repository). * Various other features don't work. This extension should work for basic clone/pull, update, and commit workflows. Some history rewriting operations may fail due to lack of support for bundle repositories. To use, activate the extension and set the ``storage.new-repo-backend`` config option to ``sqlite`` to enable new repositories to use SQLite for storage. éN)Ú_)ÚnullrevÚsha1nodeconstantsÚshort)Úattr) ÚancestorÚdagopÚencodingÚerrorÚ extensionsÚ localrepoÚmdiffÚpycompatÚ registrarÚ requirementsÚutilÚverify)Ú repositoryr)ÚhashutilÚ storageutil)Úzstdóstorageósqlite.compressionózstdózlibT)ÚdefaultÚ experimentalsships-with-hg-coresexp-sqlite-001sexp-sqlite-comp-001=zstdsexp-sqlite-comp-001=zlibsexp-sqlite-comp-001=nonesexp-sqlite-shallow-filesééééz“CREATE TABLE delta ( id INTEGER PRIMARY KEY, compression INTEGER NOT NULL, hash BLOB UNIQUE ON CONFLICT ABORT, delta BLOB NOT NULL )zKCREATE TABLE filepath ( id INTEGER PRIMARY KEY, path BLOB NOT NULL )z4CREATE UNIQUE INDEX filepath_path ON filepath (path)acCREATE TABLE fileindex ( id INTEGER PRIMARY KEY, pathid INTEGER REFERENCES filepath(id), revnum INTEGER NOT NULL, p1rev INTEGER NOT NULL, p2rev INTEGER NOT NULL, linkrev INTEGER NOT NULL, flags INTEGER NOT NULL, deltaid INTEGER REFERENCES delta(id), deltabaseid INTEGER REFERENCES fileindex(id), node BLOB NOT NULL )zJCREATE UNIQUE INDEX fileindex_pathrevnum ON fileindex (pathid, revnum)zBCREATE UNIQUE INDEX fileindex_pathnode ON fileindex (pathid, node)a«CREATE VIEW filedata AS SELECT fileindex.id AS id, filepath.id AS pathid, filepath.path AS path, fileindex.revnum AS revnum, fileindex.node AS node, fileindex.p1rev AS p1rev, fileindex.p2rev AS p2rev, fileindex.linkrev AS linkrev, fileindex.flags AS flags, fileindex.deltaid AS deltaid, fileindex.deltabaseid AS deltabaseid FROM filepath, fileindex WHERE fileindex.pathid=filepath.idzPRAGMA user_version=%dc ót—|jdjdjdgt|«z«¬«t ||gt |j ««z««}g}d}|D]m\} } } | }| tk(r|j| «} n9| tk(r| } n-| tk(rtj| «} ntd| z«‚|j| «Œo||vr |||} n|j«} |j«t!j"| |«} t%| t&«s t' «} | S)z&Resolve a delta chain for a file node.aWITH RECURSIVE deltachain(deltaid, baseid) AS ( SELECT deltaid, deltabaseid FROM fileindex WHERE pathid=? AND node=? UNION ALL SELECT fileindex.deltaid, deltabaseid FROM fileindex, deltachain WHERE fileindex.id=deltachain.baseid AND deltachain.baseid IS NOT NULL AND fileindex.id NOT IN ({stops}) ) SELECT deltachain.baseid, compression, delta FROM deltachain, delta WHERE delta.id=deltachain.deltaidÚ,Ú?)ÚstopsNsunhandled compression type: %d)ÚexecuteÚformatÚjoinÚlenÚtupleÚlistÚkeysÚCOMPRESSION_ZSTDÚ decompressÚCOMPRESSION_NONEÚCOMPRESSION_ZLIBÚzlibÚSQLiteStoreErrorÚappendÚpopÚreverserÚpatchesÚ isinstanceÚbytes)ÚdbÚpathidÚnodeÚ revisioncacheÚstopridsÚzstddctxÚresÚdeltasÚlastdeltabaseidÚ deltabaseidÚ compressionÚdeltaÚbasetextÚfulltexts ú5usr/lib/python3.12/site-packages/hgext/sqlitestore.pyÚresolvedeltachainrH¹s8€ð �*‰*ð ,÷-3©FØ—(‘(˜C˜5¤3 x£=Ñ0Ó1ð-3ó- ô ˆv�tˆnœt H§M¡M£OÓ4Ñ4Ó5ó% €Cð*€FØ€Oã+.Ñ'ˆ �[ %Ø%ˆà Ô*Ò *Ø×'Ñ'¨Ó.‰EØ Ô,Ò ,؉EØ Ô,Ò ,Ü—O‘O EÓ*‰Eä"Ø1°KÑ?óð ð � ‰ �eÕð,/ð ˜(Ñ"Ø  ¨/Ñ!:Ñ;‰à—:‘:“<ˆà ‡N�NÔÜ�}‰}˜X vÓ.€Hô �h¤Ô &ܘ“<ˆà €Oócó¼— |jd|||f«jS#tj$r'|jd|f«j «dcYSwxYw)Nz=INSERT INTO delta (compression, hash, delta) VALUES (?, ?, ?)z!SELECT id FROM delta WHERE hash=?r)r&Ú lastrowidÚsqlite3ÚIntegrityErrorÚfetchone)r9rCÚhashrDs rGÚ insertdeltarPúsi€ðØ�z‰zØ KØ ˜$ Ð &ó ÷ ‰)ð øô × !Ñ !òØ�z‰zØ /°$°ó ç ‰(‹*�Qñò ðús‚!¡7AÁAcó —eZdZy)r2N)Ú__name__Ú __module__Ú __qualname__©rIrGr2r2s„ØrIr2có>—eZdZej«Zej«Zej«Zej«Zej«Z ej«Z ej«Z ej«Z ej«Z y)Ú revisionentryN)rRrSrTrÚibÚridÚrevr;Úp1revÚp2revÚp1nodeÚp2nodeÚlinkrevÚflagsrUrIrGrWrW sw„à ˆ$�'‰'‹)€CØ ˆ$�'‰'‹)€CØ ˆ4�7‰7‹9€DØ ˆD�G‰G‹I€EØ ˆD�G‰G‹I€EØ ˆT�W‰W‹Y€FØ ˆT�W‰W‹Y€F؈d�g‰g‹i€GØ ˆD�G‰G‹I�ErIrW)Úslotscó†—eZdZej«Zej«Zej«Zej«Zej«Z ej«Z ej«Z ej«Z ej«Z ej«Zejd¬«Zy)ÚsqliterevisiondeltaN©r)rRrSrTrrXr;r]r^Úbasenoder`ÚbaserevisionsizeÚrevisionrDÚsidedataÚprotocol_flagsÚlinknoderUrIrGrcrcs—„ð ˆ4�7‰7‹9€DØ ˆT�W‰W‹Y€FØ ˆT�W‰W‹Y€F؈t�w‰w‹y€HØ ˆD�G‰G‹I€EØ�t—w‘w“yÐØˆt�w‰w‹y€HØ ˆD�G‰G‹I€E؈t�w‰w‹y€HØ�T—W‘W“Y€N؈t�w‰w˜tÔ$�HrIrc)Úfrozencó~—eZdZejd¬«Zejd¬«Zejd¬«Zy)Ú sqliteproblemNrd)rRrSrTrrXÚwarningr r;rUrIrGrmrm's4„ðˆd�g‰g˜dÔ#€GØ ˆD�G‰G˜DÔ !€EØ ˆ4�7‰7˜4Ô �DrIrmcó@—eZdZdZd„Zd„Zd„Zd„Zd„Zd)d„Z d „Z d „Z d*d „Z d „Z d„Zd„Zd„Zd„Zd„Zd„Zd+d„Zd„Zd„Zd,d„Zd„Zd„Zd„Zd„Zdd d ej:ddfd„Zd„Z d-d„Z d.d„Z!d/d „Z"d!„Z#d"„Z$d#„Z%d0d$„Z& d1d%„Z'd&„Z(d+d'„Z) d2d(„Z*y)3Úsqlitefilestorez2Implements storage for an individual tracked path.cót—tj|_||_||_d|_i|_i|_i|_tjd«|_ ||_ |dk(r5tjd¬«|_tj«|_nd|_d|_|j#«y)Né rr )Úlevel)rÚnullidÚ_dbÚ_pathÚ_pathidÚ _revtonodeÚ _nodetorevÚ _revisionsrÚ lrucachedictÚ_revisioncacheÚ _compenginerÚZstdCompressorÚ_cctxÚZstdDecompressorÚ_dctxÚ _refreshindex)Úselfr9ÚpathrCs rGÚ__init__zsqlitefilestore.__init__3sš€Ü'×.Ñ.ˆŒ ؈ŒØˆŒ àˆŒ ðˆŒàˆŒàˆŒä"×/Ñ/°Ó3ˆÔà&ˆÔà ˜'Ò !Ü×,Ñ,°1Ô5ˆDŒJÜ×.Ñ.Ó0ˆD�JàˆDŒJ؈DŒJà ×ÑÕrIc óœ—i|_i|_i|_t|jj d|j f««}|sd|_y|dd|_|jj d|jf«}t|«D]»\}}|\}}}}}} } ||k7rttd««‚|tk(rtj} n|j|} |tk(rtj} n|j|} t|||||| | | | ¬« } ||j|<||j|<| |j|<Œ½y)Nz$SELECT id FROM filepath WHERE path=?rzgSELECT id, revnum, node, p1rev, p2rev, linkrev, flags FROM fileindex WHERE pathid=? ORDER BY revnum ASCs1sqlite database has inconsistent revision numbers© rYrZr;r[r\r]r^r_r`)rxryrzr+rur&rvrwÚ enumerater2rrrrtrW)rƒr?ÚiÚrowrYrZr;r[r\r_r`r]r^Úentrys rGr‚zsqlitefilestore._refreshindexNs[€ØˆŒØˆŒØˆŒäØ �H‰H× Ñ Ø6¸¿¹¸ ó ó ˆñ ؈DŒLØ à˜1‘v˜a‘yˆŒ à�h‰h×Ñð "ð�\‰\ˆOó  ˆô  –n‰FˆAˆsØ;>Ñ 8ˆC��d˜E 5¨'°5à�CŠxÜ&ÜÐJÓKóððœÒÜ*×1Ñ1‘àŸ™¨Ñ/�àœÒÜ*×1Ñ1‘àŸ™¨Ñ/�ä!ØØØØØØØØØô ˆEð$(ˆD�O‰O˜CÑ Ø$'ˆD�O‰O˜DÑ !Ø$)ˆD�O‰O˜DÒ !ñA%rIcó,—t|j«S©N)r)rz©rƒs rGÚ__len__zsqlitefilestore.__len__‹s€Ü�4—?‘?Ó#Ð#rIcóP—ttt|j«««Sr�)ÚiterÚranger)rzrŽs rGÚ__iter__zsqlitefilestore.__iter__Žs€Ü”Eœ#˜dŸo™oÓ.Ó/Ó0Ð0rIcóF—|tjk(ry||jvS©NF)rrtry©rƒr;s rGÚhasnodezsqlitefilestore.hasnode‘s#€Ø Ô$×+Ñ+Ò +Øà�t—‘Ð&Ð&rINcóX—tjt|j«||¬«S)N)ÚstartÚstop)rÚiterrevsr)rz)rƒr™ršs rGÚrevszsqlitefilestore.revs—s%€Ü×#Ñ#Ü �—‘Ó ¨°Dô ð rIcó&—|tjk(r tjtjfS||jvr*tj||j t d««‚|j|}|j|jfS©Nóno node) rrtrzr Ú LookupErrorrvrr]r^)rƒr;r‹s rGÚparentszsqlitefilestore.parentsœss€Ø Ô$×+Ñ+Ò +Ü$×+Ñ+Ô->×-EÑ-EÐEÐ Eà �t—‘Ñ &Ü×#Ñ# D¨$¯*©*´a¸ ³mÓDÐ Dà—‘ Ñ%ˆØ�|‰|˜UŸ\™\Ð)Ð)rIcóÆ—|tk(r ttfS||jvr t|«‚|j|j|}|j|j fSr�)rrxÚ IndexErrorrzr[r\©rƒrZr‹s rGÚ parentrevszsqlitefilestore.parentrevs¦sT€Ø ”'Š>ÜœGÐ#Ð #à �d—o‘oÑ %ܘS“/Ð !à—‘ §¡°Ñ 4Ñ5ˆØ�{‰{˜EŸK™KÐ'Ð'rIFcó”—t|«}|j}|D] }||«Œ tj|j|||¬«S)zºGenerate the ancestors of 'revs' in reverse revision order. Does not generate revs lower than stoprev. See the documentation for ancestor.lazyancestors for more details.)ÚstoprevÚ inclusive)r+r;rÚ lazyancestorsr¥)rƒrœr§r¨ÚcheckrevÚrs rGÚ ancestorszsqlitefilestore.ancestors°sL€ô�D‹zˆØ—9‘9ˆÛˆAÙ �Q�Kðô×%Ñ%Ø �O‰OØ ØØô  ð rIcó—|tjk(rtS||jvr*t j ||j td««‚|j|Srž)rrtrryr r rvrr–s rGrZzsqlitefilestore.revÃsN€Ø Ô$×+Ñ+Ò +܈Nà �t—‘Ñ &Ü×#Ñ# D¨$¯*©*´a¸ ³mÓDÐ Dà�‰˜tÑ$Ð$rIcó„—|tk(rtjS||jvr t |«‚|j|Sr�)rrrtrxr£©rƒrZs rGr;zsqlitefilestore.nodeÌs:€Ø ”'Š>Ü$×+Ñ+Ð +à �d—o‘oÑ %ܘS“/Ð !à�‰˜sÑ#Ð#rIcóD—tj|||j«Sr�)rÚ fileidlookuprvr–s rGÚlookupzsqlitefilestore.lookupÕs€Ü×'Ñ'¨¨d°D·J±JÓ?Ð?rIcó¢—|tk(rtS||jvr t|«‚|j|j|}|jSr�)rrxr£rzr_r¤s rGr_zsqlitefilestore.linkrevØsE€Ø ”'Š>܈Nà �d—o‘oÑ %ܘS“/Ð !à—‘ §¡°Ñ 4Ñ5ˆØ�}‰}ÐrIcó¢—|tk(ry||jvr t|«‚|j|j|jt zSr•)rrxr£rzr`Ú FLAG_CENSOREDr¯s rGÚ iscensoredzsqlitefilestore.iscensoredâsE€Ø ”'Š>Øà �d—o‘oÑ %ܘS“/Ð !à�‰˜tŸ™¨sÑ3Ñ4×:Ñ:¼]ÑJÐJrIcóÈ—|j|«}|j|«}tj|j||«}t j |j |«Sr�)rZrÚcommonancestorsheadsr¥rÚmaplistr;)rƒÚnode1Únode2Úrev1Úrev2r¬s rGr¸z$sqlitefilestore.commonancestorsheadsësK€Ø�x‰x˜‹ˆØ�x‰x˜‹ˆä×1Ñ1°$·/±/À4ÈÓNˆ Ü×Ñ § ¡ ¨9Ó5Ð5rIcóX—tj||j|j«Sr�)r Údescendantrevsrœr¥)rƒrœs rGÚ descendantszsqlitefilestore.descendantsòs!€ô×#Ñ# D¨$¯)©)°T·_±_ÓEÐErIcód—|€|€t|«stjgS|�|j|«nt}|xsgD�chc]}|j|«’Œ}}t j |j|j||¬«}|D�cgc]}|j|«‘Œc}Scc}wcc}w)N)ÚstartrevÚstoprevs) r)rrtrZrr Úheadrevssubsetrœr¥r;)rƒr™ršrÂÚnrÃrœrZs rGÚheadszsqlitefilestore.heads÷s¡€Ø ˆ=˜T˜\Ü�t”9Ü)×0Ñ0Ð1Ð1à&+Ð&7�4—8‘8˜E”?¼WˆØ)-ª°¨Ó4© A�D—H‘H˜Q•K¨ˆÐ4ä×#Ñ#Ø �I‰I�t—‘°ÀHô ˆñ+/Ó/©$ 3�— ‘ ˜#•¨$Ñ/Ð/ùò 5ùò 0s ÁB( B-có¦—|j|«}|jjd|j||f«}|D�cgc]}|d‘Œ c}Scc}w)NzZSELECT node FROM filedata WHERE path=? AND (p1rev=? OR p2rev=?) ORDER BY revnum ASCr)rZrur&rv)rƒr;rZr?rŠs rGÚchildrenzsqlitefilestore.childrensV€Ø�h‰h�t‹nˆà�h‰h×Ñð $ð �Z‰Z˜˜cÐ "ó  ˆñ#&Ó&¡#˜3��A“ #Ñ&Ð&ùÒ&s¿ Acóð—|tk(ry||jvr t|«‚|j|}|j|«rt |j |««St |j |««S©Nr)rrxr£Úrenamedr)Úreadrg)rƒrZr;s rGÚsizezsqlitefilestore.sizesc€Ø ”'Š>Øà �d—o‘oÑ %ܘS“/Ð !à�‰˜sÑ#ˆà �<‰<˜Ô Ü�t—y‘y “Ó'Ð 'ä�4—=‘= Ó&Ó'Ð'rIcó¨—|tjtfvryt|t«r|j |«}||j vr*tj||jtd««‚||jvr|j|S|jD�cic]}|j|j|“Œ}}|sd|d<t|j|j ||j||j"¬«}|j|j$t&t(zzrd}|r!|j+||«||j|<|Scc}w)NrIrŸéÿÿÿÿ©r>F)rrtrr7Úintr;ryr r rvrr|rzrYrHrurwr�r`ÚFLAG_MISSING_P1ÚFLAG_MISSING_P2Ú _checkhash)rƒr;ÚrawÚ _verifyhashrÅr=rFs rGrgzsqlitefilestore.revision%s3€Ø Ô%×,Ñ,¬gÐ6Ñ 6Øä �dœCÔ Ø—9‘9˜T“?ˆDà �t—‘Ñ &Ü×#Ñ# D¨$¯*©*´a¸ ³mÓDÐ Dà �4×&Ñ&Ñ &Ø×&Ñ& tÑ,Ð ,ð 8<×7JÒ7JÓKÑ7J°!�D—O‘O AÑ&×*Ñ*¨AÑ-Ð7JˆÐKáØˆH�R‰Lä$Ø �H‰HØ �L‰LØ Ø × Ñ Ø Ø—Z‘Zô  ˆð �?‰?˜4Ñ × &Ñ &¬/¼OÑ*KÒ L؈Ká Ø �O‰O˜H dÔ +Ø(0ˆD× Ñ  Ñ %àˆùò/LsÂ!Ecó&—|j|i|¤ŽSr�)rg)rƒÚargsÚkwargss rGÚrawdatazsqlitefilestore.rawdataOs€Øˆt�}‰}˜dÐ- fÑ-Ð-rIcóJ—tj|j|««Sr�)rÚfiltermetadatargr–s rGrÌzsqlitefilestore.readRs€Ü×)Ñ)¨$¯-©-¸Ó*=Ó>Ð>rIcó.—tj||«Sr�)rÚfilerevisioncopiedr–s rGrËzsqlitefilestore.renamedUs€Ü×-Ñ-¨d°DÓ9Ð9rIcó2—tj|||« Sr�)rÚfiledataequivalent)rƒr;rFs rGÚcmpzsqlitefilestore.cmpXs€Ü×1Ñ1°$¸¸hÓGÐGÐGrIc #ó<K—|dvrtjd|z«‚|D�cgc]}|tjk7sŒ|‘Œ}}|sy|jj ddj dgt|«z«zt|jg|z««} i} | D]C\} } |jj d|j| f«} | j«d| | <ŒEtj|||t| j||||¬« D]} | –—Œycc}w­w) N)snodesrslinearNs"unhandled value for nodesorder: %szISELECT revnum, deltaid FROM fileindex WHERE pathid=? AND node in (%s)r#r$z9SELECT revnum from fileindex WHERE pathid=? AND deltaid=?r)Ú deltaparentfnÚ revisiondataÚassumehaveparentrevisionsÚ deltamodeÚsidedata_helpers)r ÚProgrammingErrorrrtrur&r(r)r*rwrNrÚ emitrevisionsrcÚ __getitem__)rƒÚnodesÚ nodesorderrärårærçÚ debug_inforÅr?Ú deltabasesrZÚdeltaidrDs rGrézsqlitefilestore.emitrevisions[s6èø€ð ÐDÑ DÜ×(Ñ(Ø5¸ ÑBóð ñ"ÓC™E�q QÔ*;×*BÑ*BÓ%B’˜EˆÐCáØ ð�h‰h×Ñð #à&)§h¡h°¨u´s¸5³zÑ/AÓ&Bñ Dô �4—<‘<�. 5Ñ(Ó )ó  ˆðˆ ã‰LˆC�Ø—(‘(×"Ñ"ØKØ—‘˜wÐ'óˆCð"Ÿl™l›n¨QÑ/ˆJ�sŠOð  ô!×.Ñ.Ø Ø Ø Ü Ø$×0Ñ0Ø%Ø&?ØØ-÷  ˆEð‹Kñ  ùò/Dùs‚!D£D¼DÁCDcó —|s|jd«rtj||«}|j|||||«}|j |«S)Ns )Ú startswithrÚpackmetaÚ addrevisionr;)rƒÚfiledataÚmetaÚ transactionr_Úp1Úp2rZs rGÚaddzsqlitefilestore.add“sJ€Ù �8×&Ñ& yÔ1Ü"×+Ñ+¨D°(Ó;ˆHà×јx¨°g¸rÀ2ÓFˆØ�y‰y˜‹~ÐrIc ó$—|rttd««‚|du} |xstj|||«}| r|j ||||«|j j |«} | �| S|j||||||«} ||j|<| S)Ns flags not supported on revisions) r2rrÚhashrevisionsha1rÔryÚgetÚ_addrawrevisionr|) rƒrärör_r÷rør;r`Ú cachedeltaÚ validatehashrZs rGrózsqlitefilestore.addrevisionšs¢€ñ Ü"¤1Ð%HÓ#IÓJÐ Jà 4Ð'ˆ ØÒI”{×3Ñ3°LÀ"ÀbÓIˆá Ø �O‰O˜L¨$°°BÔ 7à�o‰o×!Ñ! $Ó'ˆØ ˆ?؈Jà×"Ñ"Ø �,  ¨W°b¸"ó ˆð%1ˆ×јDÑ!؈ rIc ó쇗d}|D�]i\}} } } } } }}d}|tjzr |tz}|tjzr td«‚|rz| tj k7r*‰j | «stj } |tz}| tj k7r*‰j | «stj } |tz}‰j| «}|tk7rŒ‰j|«r{tjd«}t‰j| d¬««}t| «|z }| d|t!j"||«k7r t%j&‰j(| «‚|tzs#t+j,| |ˆfd„«r |tz}|| «}|‰j.v�rc‰j.|}|j0tzrˆ| tj k7ru| |_‰j4| |_|xj0tzc_‰j8j;d‰j4| |j0|j<f«|j0tzrˆ| tj k7ru| |_‰j4| |_ |xj0tzc_‰j8j;d ‰j4| |j0|j<f«|r|‰‰j|««d}�Œ| tj k(rt!jBd | «}d}nd}| | f}‰jE||||| | ||¬ «}|r |‰|«d}�Œl| S) NTrsunhandled revision flags>lllF)rÖcó8•—t‰j|««Sr�)r)rÚ)Úxrƒs €rGÚz*sqlitefilestore.addgroup..ìsø€¬#¨d¯l©l¸1«oÔ*>rIz0UPDATE fileindex SET p1rev=?, flags=? WHERE id=?z0UPDATE fileindex SET p2rev=?, flags=? WHERE id=?rI)Ú storedeltar`)#rÚREVISION_FLAG_CENSOREDrµr2rrtr—rÒrÓrZrr¶ÚstructÚcalcsizer)rÚrÚreplacediffheaderr ÚCensoredBaseErrorrvrÚdeltaiscensoredrzr`r]ryr[rur&rYr^r\Úpatchrý)rƒr@Ú linkmapperröÚ addrevisioncbÚduplicaterevisioncbÚmaybemissingparentsÚemptyr;r÷rørjÚ deltabaserDÚ wireflagsrhÚ storeflagsÚbaserevÚhlenÚoldlenÚnewlenr_r‹ÚtextrrZs` rGÚaddgroupzsqlitefilestore.addgroup¹s*ø€ðˆôñ Ø Ø Ø Ø Ø Ø Ø Ø àˆJàœ:×<Ñ<Ò<ØœmÑ+� àœJ×=Ñ=Ð=Ò=Ü&Ð'AÓBÐBá"ØÔ*×1Ñ1Ò1¸$¿,¹,ÀrÔ:JÜ*×1Ñ1�Bؤ/Ñ1�JàÔ*×1Ñ1Ò1¸$¿,¹,ÀrÔ:JÜ*×1Ñ1�Bؤ/Ñ1�Jà—h‘h˜yÓ)ˆGðœ'Ò! d§o¡o°gÔ&>Ü—‘ wÓ/�ܘTŸ\™\¨)À˜\ÓGÓH�ܘU› dÑ*�à˜˜$�<¤5×#:Ñ#:¸6À6Ó#JÒJÜ×1Ñ1°$·*±*¸iÓHÐHà¤Ò.´K×4OÑ4OØ�wÓ >ô5ðœmÑ+� á  Ó*ˆGà�t—‘Ò&àŸ™¨Ñ-�ð—K‘K¤/Ò1ØÔ/×6Ñ6Ò6à#%�E”LØ"&§/¡/°"Ñ"5�E”KØ—K’K¤OÐ#3Ñ3•Kà—H‘H×$Ñ$ØJØŸ™¨Ñ,¨e¯k©k¸5¿9¹9ÐEôð —K‘K¤/Ò1ØÔ/×6Ñ6Ò6à#%�E”LØ"&§/¡/°"Ñ"5�E”KØ—K’K¤OÐ#3Ñ3•Kà—H‘H×$Ñ$ØJØŸ™¨Ñ,¨e¯k©k¸5¿9¹9ÐEôñ 'Ù'¨¨d¯h©h°t«nÔ=Ø�ÙàÔ-×4Ñ4Ò4Ü—{‘{ 3¨Ó.�Ø!‘ à�Ø'¨Ð/� à×&Ñ&ØØØØØØØ%Ø ð'ó ˆCñÙ˜d CÔ(ØŠEðyð|ˆyÐrIc óÀ—tjd|id«}t|«t|j|««kDrt j t d««‚|jjd|j|jf«j«d}t|jjd||f««}|D�]>}|\}}} t|j|| iddi|j¬«} tj | «j#«} |j$d k(r"|j&j)| «} t*} ne|j$d k(rt-j(| «} t.} n:|j$d k(r | } t0} n"t j2d |j$z«‚t| «t| «k\r| } t0} t5|j| | | «}|jjd ||f«�ŒAtj |«j#«} t5|jt0| |«}|j|j6}|t8z}|jjd|||j:|f«|jjd|f«|j=«|j>jA«y)NscensoredrIs5censor tombstone must be no longer than censored dataz(SELECT deltaid FROM fileindex WHERE id=?rzGSELECT id, pathid, node FROM fileindex WHERE deltabaseid=? OR deltaid=?rÏrÐrrónoneó unhandled compression engine: %sz;UPDATE fileindex SET deltaid=?, deltabaseid=NULL WHERE id=?zSUPDATE fileindex SET flags=?, deltaid=?, deltabaseid=NULL WHERE pathid=? AND node=?zDELETE FROM delta WHERE id=?)!rròr)rÚr ÚAbortrrur&rzrYrNr+rHr�rÚsha1Údigestr}rÚcompressr-r1r0r/rèrPr`rµrwr‚r|Úclear)rƒÚtrÚ censornodeÚ tombstoneÚcensoreddeltaidÚrowsrŠrYr:r;rFÚ deltahashÚ deltablobrCrïÚtombstonedeltaidr`s rGÚcensorrevisionzsqlitefilestore.censorrevision-sŽ€Ü×(Ñ(¨+°yÐ)AÀ3ÓGˆ ô ˆy‹>œC § ¡ ¨ZÓ 8Ó9Ò 9Ü—+‘+ÜÐJÓKóð ðŸ(™(×*Ñ*Ø 6Ø �_‰_˜ZÑ (× ,Ñ ,Ð .ó ÷ ‰(‹*�QñˆôØ �H‰H× Ñ ð3à  /Ð2ó ó ˆôˆCØ #Ñ ˆC�˜ä(Ø—‘˜& $¨¨R°¨JÀÇÁôˆHô!Ÿ ™  hÓ/×6Ñ6Ó8ˆIà×Ñ 7Ò*Ø ŸJ™J×/Ñ/°Ó9� Ü.‘ Ø×!Ñ! WÒ,Ü ŸM™M¨(Ó3� Ü.‘ Ø×!Ñ! WÒ,Ø$� Ü.‘ ä×,Ñ,Ø7¸$×:JÑ:JÑJóðô�9‹~¤ X£Ò.Ø$� Ü.� ä! $§(¡(¨K¸ÀIÓNˆGà �H‰H× Ñ ðà˜#�ö ð;ôJ—M‘M )Ó,×3Ñ3Ó5ˆ Ü&Ø �H‰HÔ&¨ °9ó Ðð—‘  Ñ+×1Ñ1ˆØ ”шà �‰×Ñð (à Ð$ d§l¡l°JÐ ?ô ð �‰×ÑÐ7¸/Ð9KÔLà ×ÑÔØ ×Ñ×!Ñ!Õ#rIc óÔ—tj|t|«dz |j«D�cgc]}|j |«‘Œc}|j |j «Scc}w)Nr)rÚresolvestripinfor)rÆrZr_r¥)rƒÚminlinkrÅs rGÚ getstrippointzsqlitefilestore.getstrippointŠsV€Ü×+Ñ+Ø Ü �‹I˜‰MØ"&§*¡*¤,Ó /¡,˜QˆT�X‰X�a�[ ,Ñ /Ø �L‰LØ �O‰Oó  ð ùò 0s°A% có—t|«sy|j|«\}}|t|«k(ry|j|«D]9}|jj d|j |j |«f«Œ;|j«y)Nz/DELETE FROM fileindex WHERE pathid=? AND node=?)r)r.rœrur&rwr;r‚)rƒr-rörZÚ_ignoreds rGÚstripzsqlitefilestore.strip“sx€Ü�4ŒyØ à×*Ñ*¨7Ó3‰ ˆˆXà ”#�d“)Ò Ø à—9‘9˜S–>ˆCØ �H‰H× Ñ ØAØ—‘˜tŸy™y¨›~Ð.õ ð"ð ×ÑÕrIcó—gSr�rUrŽs rGÚfileszsqlitefilestore.filesªs€Øˆ rIcó—iSr�rU)rƒÚ nodeorrevÚ_dfs rGrhzsqlitefilestore.sidedata­s€àˆ rIc󜇗i}|rg|d<|rg|d<|rt‰«|d<|r!tˆfd„‰jD««|d<|rd|d<|S)Nsexclusivefiless sharedfilessrevisionscountc3óR•K—|]}t‰j|««–—Œ y­wr�)r)rg)Ú.0r;rƒs €rGÚ z.sqlitefilestore.storageinfo..Æs#øèø€ð$Ù5D¨T”�D—M‘M $Ó'×(±_ùsƒ$'s trackedsizes storedsize)r)Úsumry)rƒÚexclusivefilesÚ sharedfilesÚrevisionscountÚ trackedsizeÚ storedsizeÚds` rGÚ storageinfozsqlitefilestore.storageinfo±snø€ð ˆá Ø#%ˆAÐÑ á à "ˆAˆnÑ á Ü#& t£9ˆAÐÑ á Ü #ó$Ø59·_²_ó$ó!ˆAˆnÑ ñ à#ˆAˆmÑ àˆrIc#óK—t«|d<|D]%}|j|«} |j|«Œ'y#t$rD}t t d«t |«|fz|¬«–—|dj|«Yd}~Œqd}~wwxYw­w)Nsskipreadsunpacking %s: %s)r r;)Úsetr;rgÚ Exceptionrmrrrù)rƒÚstaterZr;Úes rGÚverifyintegrityzsqlitefilestore.verifyintegrityÐs‰èø€Ü ›UˆˆkÑãˆCØ—9‘9˜S“>ˆDð -Ø— ‘ ˜dÕ#ñ øô ò -Ü#ÜÐ/Ó0´E¸$³KÀÐ3CÑCÈ$ôòð�kÑ"×&Ñ& t×,Ñ,ûð  -üs+‚$B §;¸B » BÁ:BÁ>B ÂBÂB cóP—|€|€|j|«\}}|tj|||«k(ry |j|=tj |«r!t j|j||«‚ttd«|jz«‚#t$rYŒbwxYw)Nsintegrity check failed on %s) r¡rrûr|ÚKeyErrorÚiscensoredtextr ÚCensoredNodeErrorrvr2r)rƒrFr;r÷røs rGrÔzsqlitefilestore._checkhashás¡€Ø ˆ:˜"˜*Ø—\‘\ $Ó'‰FˆB�à ”;×/Ñ/°¸"¸bÓAÒ AØ ð Ø×#Ñ# DÐ)ô × %Ñ % hÔ /Ü×)Ñ)¨$¯*©*°d¸HÓEÐ EäœqÐ!@ÓAÀDÇJÁJÑNÓOÐOøô ò Ù ð úsµ B B%Â$B%c ól—|j€8|jjd|jf«} | j|_|r'|\} } t | t «rb|j| «} nP|€J‚|} | tjk(r|} n4tj|j|j| ««|«} | tjk(rd} n|j| j} t!j"| «j%«} |j&dk(r"|j(j+| «}t,}ne|j&dk(rt/j*| «}t0}n:|j&dk(r | }t2}n"t5j6d|j&z«‚t9|«t9| «k\r| }t2}t;|j|| |«}t9|«}|tjk(rt<}n|j>|}|tjk(rt<}n|j>|}|jjd|j|||||||| f «j}tA|||||||||¬« }||j>|<||jB|<||j|<|S)Nz&INSERT INTO filepath (path) VALUES (?)rrrrz�INSERT INTO fileindex ( pathid, revnum, node, p1rev, p2rev, linkrev, flags, deltaid, deltabaseid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)r‡)"rwrur&rvrKr7rÑr;rrtrÚtextdiffrgrZrzrYrrrr}rr r-r1r0r/r rèr)rPrryrWrx)rƒr;rärör_r÷rørr`r?rrDÚbaseidr'r(rCrïrZr[r\rYr‹s rGrýzsqlitefilestore._addrawrevisionòs�€ð �<‰<Ð Ø—(‘(×"Ñ"Ø8¸4¿:¹:¸-óˆCðŸ=™=ˆDŒLñ Ø)Ñ ˆI�uä˜)¤SÔ)Ø ŸI™I iÓ0‘ ð Ð+Ð +Ð+؈IàÔ-×4Ñ4Ò4Ø$‘䟙ؗM‘M $§(¡(¨9Ó"5Ó6¸ ó�ð Ô)×0Ñ0Ò 0؉Fà—_‘_ YÑ/×3Ñ3ˆFô —M‘M %Ó(×/Ñ/Ó1ˆ à × Ñ ˜wÒ &ØŸ ™ ×+Ñ+¨EÓ2ˆIÜ*‰KØ × Ñ  Ò (ÜŸ ™  eÓ,ˆIÜ*‰KØ × Ñ  Ò (؈IÜ*‰Kä×(Ñ(Ø3°d×6FÑ6FÑFóð ô ˆy‹>œS ›ZÒ '؈IÜ*ˆKä˜dŸh™h¨ °YÀ ÓJˆä�$‹iˆà Ô"×)Ñ)Ò )܉Eà—O‘O BÑ'ˆEà Ô"×)Ñ)Ò )܉Eà—O‘O BÑ'ˆEà�h‰h×Ñð 5ð — ‘ ØØØØØØØØð ó  ÷ ‰)ð! ô$ØØØØØØØØØô  ˆð!$ˆ�‰˜ÑØ#ˆ�‰˜ÑØ %ˆ�‰˜Ñàˆ rI)rN)rF)NN)FT)NrN)NNF)rIr�)FFFFFrÊ)+rRrSrTÚ__doc__r…r‚r�r“r—rœr¡r¥r¬rZr;r²r_r¶r¸rÀrÆrÈrÍrgrÚrÌrËrárÚCG_DELTAMODE_STDrérùrórr*r.r1r3rhrBrHrÔrýrUrIrGrprp/s„á<òò69*òz$ò1ò'ó  ò *ò(ó ò&%ò$ò@òòKò6òFó 0ò 'ò$ (ó(òT.ò?ò:òHð ØØ"'Ø×-Ñ-ØØó2òpðØØóðHØ Ø!óróh[$òz òò.óð ØØØØó ò> -ó"Pð2ØôurIrpcó4‡—eZdZd„Zˆfd„Zed„«ZˆxZS)Úsqliterepositorycó—yr•rUrŽs rGÚcancopyzsqliterepository.cancopyks€ØrIc󼕇—‰j«}tt‰�|i|¤Ž}|r|S‰jj d«ˆfd„}|j d|«|S)NzBEGIN TRANSACTIONcó:•—‰jj«yr�)Ú_dbconnÚcommit)rrƒs €rGÚcommittransactionz7sqliterepository.transaction..committransactionxsø€Ø �L‰L× Ñ Õ !rIs sqlitestore)ÚcurrenttransactionÚsuperrSrörXr&Ú addfinalize)rƒrØrÙÚcurrentr"rZÚ __class__s` €rGrözsqliterepository.transactionns^ù€Ø×)Ñ)Ó+ˆä Ô# TÑ 6¸Ð GÀÑ Gˆá ؈Ià � ‰ ×ÑÐ0Ô1ô "ð �‰�~Ð'8Ô9àˆ rIcóö—tj«j}|jr!|jd|k(r|jdSt |j j d««}||f|_|S)Nrrs db.sqlite)Ú threadingÚcurrent_threadÚidentruÚmakedbÚsvfsr()rƒÚtidr9s rGrXzsqliterepository._dbconnsd€ô ×&Ñ&Ó(×.Ñ.ˆà �8Š8Ø�x‰x˜‰{˜cÒ!Ø—x‘x ‘{Ð"ä �D—I‘I—N‘N <Ó0Ó 1ˆØ˜�9ˆŒàˆ rI)rRrSrTrUröÚpropertyrXÚ __classcell__)r_s@rGrSrSjs!ø„òôð"ñ óô rIrScó†—tjtj|««}t|_|j d«j«d}|dk(r-tD]}|j |«Œ|j«n(|tk(rntjtd««‚|j d«|S)z3Construct a database handle for a database at path.zPRAGMA user_versionrs(sqlite database has unrecognized versionzPRAGMA journal_mode=WAL)rLÚconnectr Ú strfromlocalr8Ú text_factoryr&rNÚ CREATE_SCHEMArYÚCURRENT_SCHEMA_VERSIONr rr)r„r9r?Ú statements rGrdrd�s €ô �‰œ×.Ñ.¨tÓ4Ó 5€BÜ€B„Oà �*‰*Ð*Ó +× 4Ñ 4Ó 6°qÑ 9€Cð ˆa‚xß&ˆIØ �J‰J�yÕ !ð'ð � ‰ � à Ô&Ò &Ø ô�k‰kœ!ÐGÓHÓIÐIà‡J�JÐ(Ô)à €IrIcó —|jt«tr|jt«|jt«|jt «|jt «|jtj«yr�) rùÚ REQUIREMENTrÚREQUIREMENT_ZSTDÚREQUIREMENT_ZLIBÚREQUIREMENT_NONEÚREQUIREMENT_SHALLOW_FILESrÚNARROW_REQUIREMENT)ÚuiÚ supporteds rGÚ featuresetupryªsW€Ø ‡M�M”+Ôå Ø� ‰ Ô&Ô'à ‡M�MÔ"Ô#Ø ‡M�MÔ"Ô#Ø ‡M�MÔ+Ô,Ø ‡M�M”,×1Ñ1Õ2rIcóü—|ddk7r |||«Sd|vrtjtd««‚hd£}t|«|z }|r9tjtd«dj t |««z«‚d|d<|||«}|j t«|jd d «}|d k(r$tstjtd ««‚|d k(r|j t«nY|d k(r|j t«n=|dk(r|j t«n!tjtd«|z«‚|jd«r|j t«|S)Nóbackendssqlites sharedrepos3shared repositories not supported with SQLite store>ó narrowfilesr{óshallowfilestores6SQLite store does not support repo creation option: %ss, srevlogv1rrrsjstorage.sqlite.compression set to "zstd" but zstandard compression not available to this Mercurial installrrsDunknown compression engine defined in storage.sqlite.compression: %sr})r rrrDr(ÚsortedrùrqÚconfigrrrrsrtrüru)ÚorigrwÚ createoptsÚknownÚ unsupportedrrCs rGÚnewreporequirementsr„¶s†€Ø�*Ñ Ò*Ù�B˜ Ó#Ð#ð˜ Ñ"Ü�k‰kÜ ÐDÓ Eó ð ò €Eô �j“/ EÑ)€KÙÜ�k‰kÜ ÐGÓ HØ�j‰jœ  Ó,Ó-ñ .ó ð ð)€JˆzÑÙ˜˜JÓ'€LØ€L×Ñ”[Ô!à—)‘)˜JÐ(=Ó>€Kà�gÒ¥dÜ�k‰kÜ ð%ó ó ð ð�gÒØˆ ×ÑÔ)Õ*Ø ˜Ò ؈ ×ÑÔ)Õ*Ø ˜Ò ؈ ×ÑÔ)Õ*ä�k‰kÜ ð2ó ðñ  ó ð ð‡~�~Ð)Ô*؈ ×ÑÔ2Ô3à ÐrIcó—eZdZdZd„Zy)Úsqlitefilestoragez)Repository file storage backed by SQLite.có—|ddk(r|dd}t|jvrd}nHt|jvrd}n3t|jvrd}nt j t d««‚t|j||«S)Nró/rrrrsEunable to determine what compression engine to use for SQLite storage) rrrrsrtr rrrprX)rƒr„rCs rGÚfilezsqlitefilestorage.fileûs„€Ø �‰7�dŠ?ؘ˜�8ˆDä ˜t×0Ñ0Ñ 0Ø!‰KÜ  ×!2Ñ!2Ñ 2Ø!‰KÜ  ×!2Ñ!2Ñ 2Ø!‰Kä—+‘+Üð1óóð ô˜tŸ|™|¨T°;Ó?Ð?rIN)rRrSrTrPr‰rUrIrGr†r†÷s „á3ó@rIr†c ó‚—t|vr-t|vr|jtj«t S|d||dœ|¤ŽS)z=Produce a type conforming to ``ilocalrepositoryfilestorage``.)rÚfeaturesrU)rqrurùrÚ!REPO_FEATURE_SHALLOW_FILE_STORAGEr†)r€rr‹rÙs rGÚmakefilestorager�s?€ä�lÑ"Ü $¨ Ñ 4Ø �L‰Lœ×EÑEÔ Fä Ð áÐK ¸ÑKÀFÑKÐKrIc óŠ—t|vr2t|vr$tstjt d««‚t S|dd|i|¤ŽS)NsWrepository uses zstandard compression, which is not available to this Mercurial installrrU)rqrrrr rrrS)r€rwrrÙs rGÚmakemainr�sN€Ü�lÑ"Ü ˜|Ñ +µDÜ—+‘+ÜðBóóð ô Ðá Ñ 4˜\Ð 4¨VÑ 4Ð4rIcó*—||g|¢­i|¤Žd|_yr•)Úwarnorphanstorefiles)r€rƒrØrÙs rGÚ verifierinitr’*s€ÙˆÐ�Ò˜Òð!&€DÕrIcóV—tjjt«t j tdt «t j tdt«t j tdt«t j tjdt«y)Nsnewreporequirementssmakefilestoragesmakemains__init__) r Úfeaturesetupfuncsrùryr Ú wrapfunctionr„r�r�rÚverifierr’)rws rGÚextsetupr—2sj€Ü ×Ñ×#Ñ#¤LÔ1Ü×ÑÜÐ)Ô+>ôô×ÑœIÐ'9¼?ÔKÜ×ÑœI {´HÔ=Ü×ÑœFŸO™O¨[¼,ÕGrIcó4—t|t«rd|_yyr�)r7rSru)rwÚrepos rGÚ reposetuprš<s€Ü�$Ô(Ô)؈�ð*rIr�)LrPrLrrar1Úmercurial.i18nrÚmercurial.noderrrÚmercurial.thirdpartyrÚ mercurialrr r r r r rrrrrrÚmercurial.interfacesrÚ interfaceutilÚmercurial.utilsrrrÚ __version__Ú ImportErrorÚ configtableÚ configitemÚ testedwithrqrrrsrtrurnr/r-r0rµrÒrÓrmrHrPÚ StorageErrorr2ÚsrWÚ implementerÚirevisiondeltarcÚiverifyproblemrmÚ ifilestoragerpÚlocalrepositoryrSrdryr„Úilocalrepositoryfilestorager†r�r�r’r—ršrUrIrGÚr¯szðñóNÛ ÛÛ å÷ñõ &÷ ÷ ÷ ó ÷÷ð Ýà×Òð€ Ø !ˆY× !Ñ ! +Ó .€ ñ ØØÙ‰G Øõ ð#€ à€ Ø.ÐØ.ÐØ.ÐØ7ÐàÐàÐØÐØÐà€ Ø€Ø€ð ðð;ð ð(àHð)ðÐ5Ñ5ðw<€ ó~>òB ô �u×)Ñ)ô ð‡�÷ ð óð ð€×ј:×4Ñ4Ó5Ø€‡�ˆdÔ÷ %ð %óó6ð %ð€×ј:×4Ñ4Ó5Ø€‡�ˆtÔ÷!ð!óó6ð!ð €×ј:×2Ñ2Ó3÷w ðw ó4ðw ôt#�y×0Ñ0ô#òLò4 3ò>ðB€×ј:×AÑAÓB÷@ð@óCð@ò0Lò 5ò&òHóøðM'òØ ƒDðúsÁG&Ç&G1Ç0G1