SQLite format 3 @ +_MTN- (8 (mR'#Gwi$:z?  l ; e `&)){tablemanifest_certsmanifest_certs'CREATE TABLE manifest_certs ( hash not null unique, -- hash of remaining fields separated by ":" id not null, -- joins with manifests.id or manifest_deltas.id name not null, -- opaque string chosen by user value not null, -- opaque blob keypair not null, -- joins with public_keys.id signature not null, -- RSA/SHA1 signature of "[name@id:val]" unique(name, id, value, keypair, signature) );(O)indexsqlite_autoindex_manifest_certs_2manifest_certs);'O)indexsqlite_autoindex_manifest_certs_1manifest_certs('$++tablemanifest_deltasmanifest_deltas%CREATE TABLE manifest_deltas ( id not null, -- strong hash of all the entries in a manifest base not null, -- joins with either manifest.id or manifest_deltas.id delta not null, -- rdiff to construct current from base unique(id, base) )=%Q+indexsqlite_autoindex_manifest_deltas_1manifest_deltas&E"Ytablemanifestsmanifests#CREATE TABLE manifests ( id primary key, -- strong hash of all the entries in a manifest data not null -- compressed, encoded contents of a manifest )1#Eindexsqlite_autoindex_manifests_1manifests$s =tabledb_varsdb_vars!CREATE TABLE db_vars ( domain not null, -- scope of application of a var name not null, -- var key value not null, -- var value unique(domain, name) )-!Aindexsqlite_autoindex_db_vars_1db_vars"w''-tablebranch_leavesbranch_leavesCREATE TABLE branch_leaves ( branch not null, -- joins with revision_certs.value revision_id not null, -- joins with revisions.id unique(branch, revision_id) )9M'indexsqlite_autoindex_branch_leaves_1branch_leaves ''Otablebranch_epochsbranch_epochsCREATE TABLE branch_epochs ( hash not null unique, -- hash of remaining fields separated by ":" branch not null unique, -- joins with revision_certs.value epoch not null -- random binary id )9M'indexsqlite_autoindex_branch_epochs_2branch_epochs9M'indexsqlite_autoindex_branch_epochs_1branch_epochs'A)qindexrevision_certs__revnamevalrevision_certsCREATE INDEX revision_certs__revnameval ON revision_certs (revision_id, name, value, keypair_id, signature)V))gtablerevision_certsrevision_certsCREATE TABLE revision_certs ( hash not null unique, -- hash of remaining fields separated by ":" revision_id not null, -- joins with revisions.id name not null, -- opaque string chosen by user value not null, -- opaque blob keypair_id not null, -- joins with public_keys.id signature not null, -- RSA/SHA1 signature of "[name@id:val]" unique(name, value, revision_id, keypair_id, signature) );O)indexsqlite_autoindex_revision_certs_2revision_certs;O)indexsqlite_autoindex_revision_certs_1revision_certso##%tablepublic_keyspublic_keysCREATE TABLE public_keys ( id primary key, -- hash of remaining fields separated by ":" name not null, -- key identifier chosen by user keydata not null -- RSA public params )5I#indexsqlite_autoindex_public_keys_1public_keys$;;_tablenext_roster_node_numbernext_roster_node_numberCREATE TABLE next_roster_node_number ( node primary key -- only one entry in this table, ever )Ma;indexsqlite_autoindex_next_roster_node_number_1next_roster_node_numberS''etableroster_deltasroster_deltasCREATE TABLE roster_deltas ( id primary key, -- a revision id checksum not null, -- checksum of 'delta', to protect against disk corruption base not null, -- joins with either rosters.id or roster_deltas.id delta not null -- rdiff to construct current from base )9M'indexsqlite_autoindex_roster_deltas_1roster_deltasyItablerostersrostersCREATE TABLE rosters ( id primary key, -- a revision id checksum not null, -- checksum of 'data', to protect against disk corruption data not null -- compressed, encoded contents of the roster )-Aindexsqlite_autoindex_rosters_1rostersR+mindexheights__heightheightsCREATE INDEX heights__height ON heights (height)D _tableheightsheights CREATE TABLE heights ( revision not null, -- joins with revisions.id height not null, -- complex height, array of big endian u32 integers unique(revision, height) )- Aindexsqlite_autoindex_heights_1heightsx =/indexrevision_ancestry__childrevision_ancestry CREATE INDEX revision_ancestry__child ON revision_ancestry (child)L //Gtablerevision_ancestryrevision_ancestry CREATE TABLE revision_ancestry ( parent not null, -- joins with revisions.id child not null, -- joins with revisions.id unique(parent, child) )A U/indexsqlite_autoindex_revision_ancestry_1revision_ancestry /-tablerevisionsrevisionsCREATE TABLE revisions ( id primary key, -- SHA1(text of revision) data not null -- compressed, encoded contents of a revision )1Eindexsqlite_autoindex_revisions_1revisions 1!!-tablefile_sizesfile_sizesCREATE TABLE file_sizes ( id primary key, -- joins with files.id or file_deltas.id size not null -- the size of the file in byte )3G!indexsqlite_autoindex_file_sizes_1file_sizes##Wtablefile_deltasfile_deltasCREATE TABLE file_deltas ( id not null, -- strong hash of file contents base not null, -- joins with files.id or file_deltas.id delta not null, -- compressed rdiff to construct current from base unique(id, base) )5I#indexsqlite_autoindex_file_deltas_1file_deltas tablefilesfilesCREATE TABLE files ( id primary key, -- strong hash of file contents data not null -- compressed contents of a file ))=indexsqlite_autoindex_files_1files 99xD4d|"/|tHt/HyC|OU= 0=B;6tɂCq 9j &%{S=$ v>eLW j'y9 4|"/|tHt/HyC|O 9_9?440ƀsb:DP6*zב舒 X )$I[wsV0P044T012JJMRPP(-KPHW(/IQҴq9+Z(Zpv$?-V44` X )$I[w|"/|tHt/HyC|OsV0P0T02rV0Q046'GIu44g)Ҳ67D\ X )$I[wsV0P0T06232RPPK,R1B* Rl lE58XO44R Ƕm9ʹlKYЙ|"/|tHt/HyC|OsV0P045r \ewJ44n]70*2;0ͯMO Ƕm9ʹlKYЙT040*,PpLI I(̷V(-NE*(ONM)-JUp,NM.Q,JJMRPP(-KPHW(/IQҴJKm vH-44ƀsb:DP6*zב舒 X )$I[w-44 X )$I[w|"/|tHt/HyC|O-44g)Ҳ67D\ X )$I[w.-44 Ƕm9ʹlKYЙ|"/|tHt/HyC|O-44]70*2;0ͯMO Ƕm9ʹlKYЙ _z_4ƀsb:DP6*zב4g)Ҳ67D\4 X )$I[w4|"/|tHt/HyC|O4 Ƕm9ʹlKYЙ4]70*2;0ͯMOf jj4ƀsb:DP6*zב4g)Ҳ67D\4 X )$I[w4|"/|tHt/HyC|O4 Ƕm9ʹlKYЙ4]70*2;0ͯMO E^v 4`=(Dd 8UAj1 E>YXYB$Ӂ&S&Cz:uBy{G\nwylßgБ`jyU͆e~ aOuY+,ˑsOd@$^i7o``&{Mu׈prlER0-$sǗ-gW/KņjѩT\eFO-~ơWC !ylU`& &6Ќ?=}<Ί2QeB|8Qf5Q%/%e4&Im6jwI0Wͬ[n0CTa!4T.{_-۶]˻线0νgZ?/?R@Rj8ZH2@-Y"ٹG (d)%h$K"y;O f dx&'Z2Z+ǞsR0XK$iwpKdEk5ue4&cDv|ӠD*[0 E -% [ L!1 眫X_ryM^w:6{عL\A4DMB0.Ɯ?^U'I }10ը%vџvj-},˖}Od@$^i7o8έ˻z~ s{Y_u1b%H"5ʣD)Vٹ˖ԫW buXSХah%&LJ0=wO^]f29?cB-`Eg0hRdJcvxR,0РXb9 {v.Mb)e4&At!;5d%Kn0 9E*89 Bȱc<*@]Ռ/?ɹ;6:&`{4sǏxo9). Ґ#X 2[ ¹9o 4 R{l=z皸 CJRBc|R$QI?yd4$^xAkbxi*0_1V[j@@^EB?"" B#qto=x)NνLeTBnI'VDX0k%ŹGSjNc0`K%-A-,Z1U>ZT˾'̄>D T9Ǩu3휺z̉KnTer9rvRdx~@0ADbTe:+{|" 8jQ4=(Dd 8 4Xi4b3BCv4Д=cMq|{?y454Im6jwI0Wͬ4cDv|ӠD*4*Q+#\?^Ӣ4At!;5d%4^xAkbxi*0_1V4*rLjժ? %`3R%+ 44Д=cMq|{?y45=(Dd 8+ 44Xi4b3BCv=(Dd 8+ 44cDv|ӠD*Xi4b3BCv+44Im6jwI0WͬXi4b3BCv+44*Q+#\?^ӢД=cMq|{?y45+44*Q+#\?^ӢIm6jwI0Wͬ+44*Q+#\?^ӢcDv|ӠD*+44At!;5d%*Q+#\?^Ӣ+44^xAkbxi*0_1VAt!;5d%+44*rLjժ?^xAkbxi*0_1V 4*rLjժ? .Hv\-44Д=cMq|{?y45=(Dd 8 -44Xi4b3BCv=(Dd 8 -44cDv|ӠD*Xi4b3BCv -44Im6jwI0WͬXi4b3BCv-44*Q+#\?^ӢД=cMq|{?y45-44*Q+#\?^ӢIm6jwI0Wͬ-44*Q+#\?^ӢcDv|ӠD*-44At!;5d%*Q+#\?^Ӣ-44^xAkbxi*0_1VAt!;5d%-44*rLjժ?^xAkbxi*0_1V 4*rLjժ? 8jQ4=(Dd 8 4=(Dd 8 4Xi4b3BCv 4Xi4b3BCv4Д=cMq|{?y454Im6jwI0Wͬ4cDv|ӠD*4*Q+#\?^Ӣ4At!;5d%4^xAkbxi*0_1V4*rLjժ? oJ% 4=(Dd 84Xi4b3BCv#4$Д=cMq|{?y45#4$Im6jwI0Wͬ4cDv|ӠD*4*Q+#\?^Ӣ4At!;5d%4^xAkbxi*0_1V4*rLjժ? Dj4=(Dd 8 4Xi4b3BCv%4$Д=cMq|{?y45%4$Im6jwI0Wͬ4cDv|ӠD*4*Q+#\?^Ӣ4At!;5d%4^xAkbxi*0_1V4*rLjժ?  $$  446=(Dd 8Ad;upy)an L` gʱAE[4cXÖd/NLQ]iI%*ϥH۩vSL=bge&6ZoRzB\[y$n$ۯ%^.90c@}. 1c^>40Cx+ =ˑ޳CHZm444bcDv|ӠD*QgB31SyXi4b3BCvQ BrWUBY׵ m?mB.Sٌnuݺ(Zt9Y۪+.5(J&P `xD˜}1kC!|?W|@]]΂#@¥&E Uqv$kWl444`Im6jwI0Wͬ{~kJ!'pUXi4b3BCv] 0 s ׎Rpd-ۺQr֖^`z>P gu0TI1[ ' #SؕXh z\ 9i *EE)S%8T eVlq<@_`N_L#ciaSP&ې(c`1i^Kk444^*Q+#\?^ӢY:BQ,펉vicDv|ӠD*K0 D=E$n>Y 9vL+*B#Ȍ0[ݛ3X hŲcւPb(IԎa0=:n~=%'0lG[ Is$.8f@"Ihk.zQ[/O{# N Ls@?zM*DP>{oDOm444bAt!;5d% ԫ}ĆG!9*Q+#\?^ӢQ 0 CsԎ$g)e8Nm(?kK/0}H C֖box3Y{]# ZPD=@LQ6ce{.ㄜylG*Tc"ʮAjFJuDKjE.%PY\v^&% ִ}l444`^xAkbxi*0_1Vu q^Id[(}At!;5d%K 0 > ,d,!Y6-$}ˁ@`6t0ukΒ*QꋴH5Ԗ-e6y㌜X`rpA["Ef$!1#YUa>B_h]//j Kco;rb(i6?V#T4440*rLjժ?H@{BF:ʺnp!^xAkbxi*0_1VQ O1g lv&%xZC/Hy6ߵ`#'D%)!kP1mD'Eǜ%el)Iҡ֭+˻/BX3 8Qj84Д=cMq|{?y454Xi4b3BCv4cDv|ӠD*4Im6jwI0Wͬ4*Q+#\?^Ӣ4At!;5d%4^xAkbxi*0_1V4*rLjժ? 2 2 ,,Q49Pg$xۨқqzti}zj v,D7tS`*HֲC.xZcv4>d2)LFZÔ\T 4g$xۨ]v 8pD+Q4<5D7bSD>$4ԍ/'Ia; Pk-c9#4Dj|bE]=KH33T"4"D#tDRmdN|H^!4Ʒj[BeZ}EL 4J'56(Kt }4$1Pw`]9Ğb4ϤVFK@}INz4Lz`-Noq 4Aqd3!2-ߡ 34K*;?eUr4]QFLK.) 9wt}4 7D7RMBD4y !uyISgpF4.خ'S+1wH:'&4FD3fq*UP6x4m]'hHWN_:4YɖѷgHϭ]4#:j{NA Ԣκ4WB{Z`m>AmON4Sis񚭻4&|V  5QUJ4(IGqеfo@Uh4wq+vml<qN 4FQYj?ɒOkJ;L 4 H1bi43Lt> 4|6W#xH?l\  4 _;~.mMXK) 4t@.ɸ=j Y4#>Q~(|!4 %th@~{ {u54gG*wXʟY4 Ϋ0q⤋&CW&41$Cuq^q4MK;7w,mI4M{PhFq֤ $]3 : <ov MKq" NJX, M844 authorfrederic.praca@free.fr=(Dd 8g$xۨz#x0B9*B`?$BCXLs !)%\ܱ襔SX +_&҆ 5acń0^$H244 date2012-12-20T21:38:33=(Dd 8g$xۨnY_:>Cұz?gӐJ,8mm ĕL>Yv){## \44 changelogmerge of '5806c469e33462b8aee6c5df33ad0442438976df' and 'efedd0943da4b2634da6717c7b01fa3f79c03435' =(Dd 8g$xۨ1!tNGl❮ъ * slu&l z:ȼ{?KBӿ"B"44 branchbisect_test=(Dd 8g$xۨk!Kfv67K|Ȥ.Q;T$2=9t?qyrf.ȇ'$^3,2۷gG>v9fבS^)^M844 authorfrederic.praca@free.frcDv|ӠD*g$xۨQ\\LDOI"v$ݳ ΦbKJ} xMm//eCejw/gP>B>`&5֣Pȡ6>BpZg}GH244 date2012-12-20T20:51:39cDv|ӠD*g$xۨ"+'u.wUyB"44 branchbisect_testcDv|ӠD*g$xۨ (xa]U(Ih=*|UW}U\dpO^>yX.UKq?&M844 authorfrederic.praca@free.fr*Q+#\?^Ӣg$xۨ%tIiFOMa~gN7%뚂PMCM/~H244 date2012-12-20T20:51:19*Q+#\?^Ӣg$xۨONb9Y T1-e]JYGI_4p%"Pu Q; >F"7 3o8*YOXuw*xn6L(=B"44 branchbisect_test*Q+#\?^Ӣg$xۨyl:/|OQ#iEDhx-b_T i,@}LB1WIάi Taۖi^e'bj"WZnÏE0Ǯ;QcSzj M844 authorfrederic.praca@free.frAt!;5d%g$xۨK iwI&=o'q' j+qpe4nB_y-&/M1cFSc(DG7[Kμ^(<ǫJx] M844 authorfrederic.praca@free.fr^xAkbxi*0_1Vg$xۨe×ԙ5֥KbP"|\~"1Û޿ZSD]ǯMVra@Tحaa6 F80eġM844 authorfrederic.praca@free.fr*rLjժ?g$xۨgI*44 changelog- First import *rLjժ?g$xۨz#x0B9*B`?$BCXLs !)%\ܱ襔SX +_&҆ 5acń0^$H424 =(Dd 8date2012-12-20T21:38:33g$xۨnY_:>Cұz?gӐJ,8mm ĕL>Yv){## 4\4 =(Dd 8changelogmerge of '5806c469e33462b8aee6c5df33ad0442438976df' and 'efedd0943da4b2634da6717c7b01fa3f79c03435' g$xۨ1!tNGl❮ъ * slu&l z:ȼ{?KBӿ"B4"4 =(Dd 8branchbisect_testg$xۨk!Kfv67K|Ȥ.Q;T$2=9t?qyrf.ȇ'$^3,2۷gG>v9fבS^)^M484 cDv|ӠD*authorfrederic.praca@free.frg$xۨQ\\LDOI"v$ݳ ΦbKJ} xMm//eCejw/gP>B>`&5֣Pȡ6>BpZg}GH424 cDv|ӠD*date2012-12-20T20:51:39g$xۨ"+'u.wUyB4"4 cDv|ӠD*branchbisect_testg$xۨ (xa]U(Ih=*|UW}U\dpO^>yX.UKq?&M484 *Q+#\?^Ӣauthorfrederic.praca@free.frg$xۨ%tIiFOMa~gN7%뚂PMCM/~H424 *Q+#\?^Ӣdate2012-12-20T20:51:19g$xۨONb9Y T1-e]JYGI_4p%"Pu Q; >F"7 3o8*YOXuw*xn6L(=B4"4 *Q+#\?^Ӣbranchbisect_testg$xۨyl:/|OQ#iEDhx-b_T i,@}LB1WIάi Taۖi^e'bj"WZnÏE0Ǯ;QcSzj M484 At!;5d%authorfrederic.praca@free.frg$xۨK iwI&=o'q' j+qpe4nB_y-&/M1cFSc(DG7[Kμ^(<ǫJx] M484 ^xAkbxi*0_1Vauthorfrederic.praca@free.frg$xۨe×ԙ5֥KbP"|\~"1Û޿ZSD]ǯMVra@Tحaa6 F80eġM484 *rLjժ?authorfrederic.praca@free.frg$xۨgI4*4 *rLjժ?changelog- First import g$xۨnY_:>Cұz?gӐJ,8mm ĕL>Yv){ق6" 44\4 Dj|bE]=KH33T=(Dd 8changelogmerge of '5806c469e33462b8aee6c5df33ad0442438976df' and 'efedd0943da4b2634da6717c7b01fa3f79c03435' g$xۨ1!tNGl❮ъ * slu&l z:ȼ{?KBӿU!44"4 "D#tDRmdN|H^=(Dd 8branchbisect_testg$xۨk!Kfv67K|Ȥ.Q;T$2=9t?qyrf.ȇ'$^3,2۷gG>v9fבS^)^`4484 m]'hHWN_:cDv|ӠD*authorfrederic.praca@free.frg$xۨQ\\LDOI"v$ݳ ΦbKJ} xMm//eCejw/gP>B>`&5֣Pȡ6>BpZg}G܁[4424 YɖѷgHϭ]cDv|ӠD*date2012-12-20T20:51:39g$xۨ"+'u.wUyU44"4 WB{Z`m>AmONcDv|ӠD*branchbisect_testg$xۨ (xa]U(Ih=*|UW}U\dpO^>yX.UKq?&`4484 Sis񚭻*Q+#\?^Ӣauthorfrederic.praca@free.frg$xۨ%tIiFOMa~gN7%뚂PMCM/~[4424 &|V  5QUJ*Q+#\?^Ӣdate2012-12-20T20:51:19g$xۨONb9Y T1-e]JYGI_4p%"Pu Q; >F"7 3o8*YOXuw*xn6L(=U 44"4 wq+vml<qN*Q+#\?^Ӣbranchbisect_testg$xۨyl:/|OQ#iEDhx-b_T i,@}LB1WIάi Taۖi^e'bj"WZnÏE0Ǯ;QcSzj` 4484 FQYj?ɒOkJ;LAt!;5d%authorfrederic.praca@free.frg$xۨAt!;5d%date2012-12-20T20:50:33g$xۨK iwI&=o'q' j+qpe4nB_y-&/M1cFSc(DG7[Kμ^(<ǫJx]`4484 t@.ɸ=j Y^xAkbxi*0_1Vauthorfrederic.praca@free.frg$xۨQ~(|!^xAkbxi*0_1Vdate2012-12-20T20:49:13g$xۨe×ԙ5֥KbP"|\~"1Û޿ZSD]ǯMVra@Tحaa6 F80eġ`4484 Ϋ0q⤋&CW&*rLjժ?authorfrederic.praca@free.frg$xۨg\44*4 MK;7w,mI*rLjժ?changelog- First import g$xۨ=(Dd 8authorfrederic.praca@free.frg$xۨz#x0B9*B`?$BCXLs !)%\ܱ襔SX +_&҆ 5acń0^