aboutsummaryrefslogtreecommitdiff
path: root/advtrains/textures/advtrains_dtrack_shared_detector_off.png
blob: 724d907b9f5af337d7988630d8607bb1182d5ff8 (plain)
ofshex dumpascii
0000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 00 80 00 00 00 80 08 06 00 00 00 c3 3e 61 .PNG........IHDR..............>a
0020 cb 00 00 00 06 62 4b 47 44 00 ff 00 ff 00 ff a0 bd a7 93 00 00 00 09 70 48 59 73 00 00 0b 13 00 .....bKGD..............pHYs.....
0040 00 0b 13 01 00 9a 9c 18 00 00 00 07 74 49 4d 45 07 e1 03 08 14 2d 29 ea 6f f9 97 00 00 1b 99 49 ............tIME.....-).o......I
0060 44 41 54 78 da ed 5d cb 8e 24 49 56 3d f6 70 73 f7 78 66 56 66 65 57 d1 33 d3 b3 00 06 89 05 4b DATx..]..$IV=.ps.xfVfeW.3......K
0080 58 b0 43 e2 13 10 12 3b d6 48 fc 09 2b d6 6c d8 f3 01 48 7c 04 ab d1 08 d4 82 ae ee 7a e6 33 1e X.C....;.H..+.l...H|........z.3.
00a0 fe 36 33 16 c7 3c 3d 1f 91 11 91 39 33 15 11 c8 4d 2a 75 b4 65 b8 87 b9 9b d9 b5 7b cf bd e7 5e .63..<=....93...M*u.e......{...^
00c0 81 27 da df fe 51 ec 6b 2b e0 9b 06 4a 02 16 1e 12 80 8e 34 ee f6 ff e3 bf fe c7 53 b7 c0 3f fd .'...Q.k+...J......4.......S..?.
00e0 dd 5f ad bd f6 61 bf ab 1a 40 01 c2 7b 28 01 58 a9 01 6b 9f 75 8f 55 fd ff f0 2f ff 8e 75 ed 9f ._...a...@..{(.X..k.u.U.../..u..
0100 ff fe af 5f 34 ae 7f fb a1 11 f8 8a ed cf 4f e0 2f 6e 50 fd ea 17 80 56 c0 fb 1b a0 68 80 9f 4f ..._4.........O./nP....V....h..O
0120 81 ff 7c 07 fc c5 1f 02 d6 03 8b 1c f8 fe 47 e0 ec 18 f8 d9 19 70 9d 01 df 5f 00 7f f6 16 f8 f1 ..|...........G......p..._......
0140 8a d7 fc f1 5b a0 ae 61 e4 53 3f b6 28 01 ef f8 43 71 0c f8 06 b0 ee 71 ff ba b6 e9 da 87 fd 42 ....[..a.S?.(...Cq.....q.......B
0160 02 5a 00 0e 1c a4 d1 cf bf c7 aa fe 4d ed a5 e3 fa da ed ec 08 98 8e 60 9a 06 46 78 98 37 63 18 .Z..........M..........`..Fx.7c.
0180 ed 60 6c 03 f3 ed 14 c6 59 98 3c 87 49 35 cc eb 63 18 13 c1 94 25 cc 24 86 79 15 c1 64 25 cc 40 .`l.....Y.<.I5..c....%.$.y..d%.@
01a0 c3 9c 0c 60 ca 02 a6 ac 00 fd d4 8f c5 90 88 94 00 9c 44 99 03 a9 06 84 f0 28 ec fd fe 75 4d 62 ...`..............D......(...uMb
01c0 fd b5 0f fb 2b 17 ae 93 80 96 2f bb c7 aa fe 4d 6d d3 b3 3e 35 ae af dd 92 08 50 0a 28 6b 8e 25 ....+...../....Mm..>5.....P.(k.%
01e0 d6 40 96 01 e7 1e 58 16 40 55 00 b1 01 de bc 02 e2 88 d7 64 25 30 51 80 6b 80 2f d7 5c d8 75 0d .@....X.@U.........d%0Q.k./.\.u.
0200 cc 0d 30 1e ae 59 00 51 cc 55 6f 9d 47 64 24 84 77 88 a5 80 d5 f7 fb d7 35 81 f5 d7 3e ec 77 0e ..0..Y.Q.Uo.Gd$.w.......5...>.w.
0220 30 06 58 2e 01 2b 81 a2 04 c6 ea 79 f7 58 d5 bf a9 6d 7a d6 a7 c6 b5 8b 26 05 30 1a 00 69 04 58 0.X..+.....y.X...mz.....&.0..i.X
0240 0b 0c 53 e0 78 0a 0c 12 60 9c 06 29 66 00 bf e0 22 98 0e b9 68 b5 06 a6 63 20 9c 66 18 24 5c 4c ..S.x...`..)f..."...h...c..f.$\L
0260 4f cf a0 17 70 0d e0 2d e0 ad 87 73 12 f3 4a 3c ea 5f d7 36 5d fb b0 9f bb 5d 22 d5 0a 03 25 11 O...p..-...s..J<._.6]....]"...%.
0280 43 3e fb 1e ab fa 37 b6 17 8e eb ab 37 0f 08 c1 23 28 36 80 07 27 71 92 52 2a 64 25 20 00 24 a6 C>....7.....7...#(6..'q.R*d%..$.
02a0 93 58 89 e1 77 9c 07 8e 46 40 a4 82 b4 a8 80 c9 60 8d 04 48 95 80 55 12 8d 6f 60 e2 18 56 69 e8 .X..w...F@......`..H..U..o`..Vi.
02c0 ba 84 16 f7 fb d7 ae 56 25 d6 5e fb b0 bf ae ea 47 3b 50 36 cf bb c7 aa fe 4d 6d d3 b3 3e 35 ae .......V%.^.....G;P6.....Mm..>5.
02e0 5d 34 e7 b8 8b a5 e0 64 bb a0 a3 d4 0d 90 8c c2 ae 16 80 f7 14 f7 45 45 09 60 2d 17 8f f7 fc 17 ]4.....d..............EE.`-.....
0300 69 f6 3f 29 01 aa 46 40 58 0f 29 80 34 72 50 79 01 e5 1e f7 6f 12 57 eb ae 7d d8 bf 6a 07 3e f7 i.?)..F@X.).4rPy....o.W..}..j.>.
0320 1e ab fa 37 b5 97 8e 6b 27 4d f0 bd aa a0 94 5a c7 c9 b7 8e 3b 7c 94 72 82 c3 57 b9 50 04 ad 83 ...7...k'M.....Z....;|.r..W.P...
0340 76 f1 c4 11 70 3c 61 ff 93 12 40 a9 08 c2 d5 68 3c 50 96 0a 4a f1 02 87 fb fd eb da a6 6b 1f f6 v...p<a...@....h<P..J........k..
0360 af 92 18 b9 7d de 3d 56 f5 6f 6a 9b 9e f5 a9 71 ed a2 29 41 65 d0 44 40 e3 80 44 73 c2 95 e4 3f ....}.=V.oj....q..)Ae.D@..Ds...?
0380 21 b8 20 84 e0 b9 9f c6 9c f8 24 e2 82 40 38 36 b4 04 ca 6a 8d 04 b0 b6 86 07 95 a0 38 b6 b0 d6 !.........$..@86...j........8...
03a0 a1 71 fe 51 ff 5a 33 70 c3 b5 0f fb 57 ed c0 e7 de 63 55 ff a6 f6 d2 71 ed aa 49 49 5b 5f 78 20 .q.Q.Z3p....W....cU....q..II[_x.
03c0 8a 38 f1 83 84 3b bb b1 40 d3 50 3f 68 45 7e 56 f2 6f ce 53 27 18 c4 fc 5b 59 af 59 00 4a 45 10 .8...;..@.P?hE~V.o.S'...[Y.Y.JE.
03e0 f7 76 b1 84 96 e2 51 ff 76 12 60 f5 b5 db f4 ff 2e ee b1 95 04 78 c1 b8 76 a2 03 50 17 44 d9 50 .v....Q.v.`..........x..v..P.D.P
0400 99 5b e6 14 ff 65 c5 09 56 82 d2 a1 d5 17 ac 07 f2 12 58 64 9c 70 e7 f9 5f ef 29 1d 9e 3c 02 f2 .[...e..V.........Xd.p.._.)..<..
0420 a6 86 f1 0d 06 e3 11 8c 6f 50 62 82 a2 5c 02 f5 02 26 11 70 b5 43 56 65 6b 07 5b 78 05 db 34 48 ........oPb..\...&.p.CVek.[x..4H
0440 22 81 a6 aa 60 92 1a 59 e9 20 05 70 59 d5 88 a4 80 72 15 0a 38 44 52 a0 76 40 61 2d 94 f5 80 07 "...`..Y...pY....r..8DR.v@a-....
0460 a4 aa 57 f6 6d 33 ae 02 11 22 29 10 45 9b 67 4a a8 e5 8b c6 b5 33 09 00 e0 68 08 7c bc a4 38 57 ..W.m3...").E.gJ.....3...h.|..8W
0480 92 ca de f9 0d 35 fb 48 df 1a 0d 48 34 17 84 0d bb 7f 91 03 cb 0c 58 0c 37 e0 00 28 32 20 36 a8 .....5.H...H4.........X.7..(2.6.
04a0 17 4b 38 9d c0 bb 25 6c 95 a3 82 c7 62 ee 11 69 bf 11 0a a9 6a 07 44 02 aa b4 28 dc fd eb da bf .K8...%l....b..i....j.D...(.....
04c0 79 f8 db cf 8d 8b d0 2c 4a 24 4a 22 d2 02 28 0a 34 2a 7d d4 b7 cd b8 da 7b 22 2b 36 be d0 cb b9 y......,J$J"..(.4*}.....{"+6....
04e0 7b d1 b8 80 6a 37 52 c0 03 d7 33 e0 c3 0d a0 62 2e 80 34 06 26 c1 e6 bf ab 04 16 35 f0 e1 12 b8 {...j7R...3....b..4.&......5....
0500 08 e0 91 94 c0 78 00 a4 09 bf f7 34 12 68 22 24 46 c2 4b 8d c8 7b 98 c9 08 62 e1 d0 14 05 b4 02 .....x.....4.h"$F.K..{...b......
0520 6c 4d 50 64 2d c2 96 f2 07 12 19 a1 aa aa 7b d7 b5 7f 6b aa ee 33 7c 0d 3d 8a a1 ac 87 f3 80 4c lMPd-.........{...k..3|.=......L
0540 22 18 a1 30 49 00 5b 39 28 ad 83 6d bb 79 5c ed 3d 5f 1f 1f 6f 46 02 a3 97 8d 6b 57 4d 08 e2 fc "..0I.[9(..m.y\.=_..oF....kWM...
0560 8d 04 7e b8 0e c7 ad 25 40 95 97 04 7f 6e 25 80 01 7e 71 06 7c 28 3a 9d a0 ae 81 cb 19 9f fb c9 ..~....%@....n%..~q.|(:.........
0580 05 50 a0 c1 72 d9 40 68 0b 48 81 51 96 63 9e 15 80 03 ac a2 ed a9 36 28 42 c2 52 f4 cc 45 c0 d7 .P..r.@h.H.Q.c........6(B.R..E..
05a0 ef 5c 67 c3 df f4 9d cf ab 76 5a 2e 62 88 c4 41 08 8b ca d5 50 f0 5b 8d ab bd e7 22 5f 6e 56 02 .\g......vZ.b..A....P.[...."_nV.
05c0 dd cb c6 b5 93 e6 a9 e4 2d 33 2e 5a 51 02 79 10 44 a3 01 c5 7d 0b 57 0b 0f 64 39 cf ff d4 12 0a ........-3.ZQ.y.D...}.W..d9.....
05e0 d6 0a f0 9a 26 23 c4 3a 2b a0 01 84 02 62 e1 30 8e 1d 8a e5 1c b1 7c ec 18 59 d7 8c 0e 2f 56 ae ....&#.:+....b.0......|..Y.../V.
0600 76 a8 08 79 ff b3 31 1a af 26 31 e2 48 21 8a 0c 62 13 e1 d5 a4 73 ce c0 6e 3f ae f6 9e e3 74 b8 v..y..1..&1.H!..b....s..n?....t.
0620 f1 9d be 74 5c bb c2 01 5a 45 ae 69 80 61 c4 cf 71 04 a4 86 d6 80 94 9d 04 68 2c 8f 81 48 f2 ef ...t\...ZE.i.a..q........h,..H..
0640 b3 8c 90 f1 30 a5 2f 41 af 59 68 50 12 c8 ed c3 33 5f 3c 72 8c 6c 1e b4 bb 67 c2 dc bd 2e be a3 ....0./A.YhP....3_<r.l...g......
0660 a4 e7 45 f5 78 b7 cf 0d 06 11 a0 1c 90 59 20 7a e6 b8 2e 97 e5 76 8a d5 0b c6 b5 ab a6 15 70 3c ..E.x........Y.z.....v........p<
0680 06 44 46 91 5f 35 9c d8 1f 3e d1 f6 1f 26 dd 62 19 24 c0 b1 07 ae e6 54 0e 6f 96 9c 0e e7 a8 37 .DF._5...>...&.b.$.....T.o.....7
06a0 c8 75 e6 86 6d bd 4e 51 b7 0b 1f ba 4c b7 71 b3 36 6b 5c ad 77 3f af da ed 34 c4 09 e9 7b bf fd .u..m.NQ....L.q.6k\.w?...4...{..
06c0 b8 6e 5d bc c9 e6 17 fa e2 71 ed 10 07 18 24 04 77 3c b8 a3 13 c3 5d 3d 4a 3a 57 b5 00 71 82 41 .n]......q....$.w<....]=J:W..q.A
06e0 c2 ff d1 12 38 1e d1 8f 30 4a 29 11 e4 5a f1 ad ba 07 6f 45 ec 43 c7 c8 26 37 ab 51 12 42 ac 76 ....8...0J)..Z....oE.C..&7.Q.B.v
0700 a8 18 25 ef 7d be 9c 77 bf 53 39 3e dc dd 97 1f 9b ed c7 75 fb db 5b 20 76 2f 1d d7 4e 54 80 b0 ..%.}..w.S9>.......u..[.v/..NT..
0720 e9 94 ec 30 ff d8 04 c8 57 02 37 19 95 41 78 1e 15 52 f0 bb 08 ef 2a 0d aa 4b d9 00 57 8b 35 47 ...0....W.7..Ax..R....*..K..W.5G
0740 80 6d 00 0b ae 1a 25 80 da 13 62 1c 99 fb 2e d3 6d dc ac ce 3d ed 1a 36 77 3e df ee f6 e0 b0 70 .m....%...b.....m...=..6w>.....p
0760 02 38 9f 01 23 c3 23 a0 b1 9c f4 6d c6 75 7b ff 2d 94 f5 c8 88 17 8d 6b 17 da 7f 12 36 81 b5 14 .8..#.#....m.u{.-......k....6...
0780 fd 5a 71 7c d6 86 89 0e c3 d5 8a 3b 5c 04 ad 5f c8 70 48 86 67 10 c1 9c 7c 5a 07 d0 06 b1 14 d0 .Zq|.......;\.._.pH.g...|Z......
07a0 be 86 49 04 f2 cc 41 46 08 6e 50 0f 0f 89 79 b3 85 9b d5 72 35 79 2f ee 5d a7 22 fe 6d 6e c5 ed ..I...AF.nP...y....r5y/.].".mn..
07c0 e7 57 13 20 cf 38 b0 d8 00 ca 03 43 d1 84 df 07 62 09 14 72 bb 71 b5 f7 3c 9f e5 9b 77 95 7d d9 .W...8.....C....b..r.q..<...w.}.
07e0 b8 be fa ee f7 40 55 03 9f af e8 d6 4d 8c c0 20 a6 69 ea 40 f1 df 2e 0e e7 68 01 fc d4 70 d1 4c .....@U.....M....i.@.....h...p.L
0800 06 5c 18 ce 73 71 bc 0a b1 01 7a 13 88 53 3f 00 70 8c 92 f7 1c 23 db b8 59 0b e7 91 48 b9 d2 d5 .\..sq....z..S?.p....#..Y...H...
0820 aa 34 6e 3f 7f 9a 35 8f 76 7b 23 57 03 3c 9b c6 d5 de b3 5a 54 5b e8 00 2f 1b d7 2e 16 40 5e 01 .4n?..5.v{#W.<.....ZT[../....@^.
0840 52 1b 68 e1 70 a2 2d 15 b9 e0 20 2a 2b e2 fe 91 06 6a 0b 94 8d 44 e5 0d 3c 2a a4 86 48 67 a4 b9 R.h.p.-....*+....j...D..<*..Hg..
0860 59 96 79 38 22 d6 81 38 91 7e ac 6c 3d 74 8c 6c e3 66 f5 cd d3 ae e1 bb 9f 5f 99 06 a3 c4 43 80 Y.y8"..8.~.l=t.l.f......._....C.
0880 bb dd 6b f3 e8 f7 b7 1d 57 7b cf 38 dd fc 62 5f 3a ae dd 1c 01 02 6f 5f c7 88 8d c2 fb 73 0f e7 ..k.....W{.8..b_:.....o_.....s..
08a0 a8 17 44 1a b8 5a 02 9f ae 08 0b 2b 05 4c 46 02 6f ce 12 cc 96 c0 a2 08 31 01 41 37 f8 74 0d 5c ..D..Z.....+.LF.o.......1.A7.t.\
08c0 ce d7 48 80 16 c4 79 08 e0 3c 74 99 6e e3 66 15 f2 69 d7 b0 96 e2 f6 f3 43 d3 ae aa 1d 62 b1 1a ..H...y..<t.n.f..i......C....b..
08e0 e0 d9 34 ae f6 9e 5b 29 81 2f 1c d7 6e 50 40 0f ed 97 d0 34 48 90 57 01 6c cb 80 ef ce 82 83 27 ..4...[)./..nP@....4H.W.l......'
0900 04 8b 28 e1 60 dc 1c 42 78 94 35 9d 47 b3 8c d2 e2 cd 09 8f 09 bd ce 0a a8 2d 95 9f bb ca d6 70 ..(.`..Bx.5.G............-.....p
0920 20 70 d3 54 b7 21 d4 6b cd c0 62 0e 25 79 3e 2d 2b 0b e8 f2 4e f8 75 89 da 79 c6 b5 0d 1a d4 4e .p.T.!.k..b.%y>-+...N.u..y.....N
0940 d0 16 7f 00 e7 8a ea e1 ef 6f 37 ae da 15 e1 de 9b 83 02 33 ff b2 71 ed 08 08 84 77 0e e3 01 17 .........o7........3..q....w....
0960 c0 32 07 06 29 a0 e6 61 8c 8e 26 1f cf 7b 0f 25 2c 4e a6 c0 c7 0b 7e 2f af 18 13 18 29 a0 5a a7 .2..)..a..&..{.%,N....~/....).Z.
0980 04 6e 02 4a 9e 6b b7 ae ba f6 61 ff 2a b8 f8 b9 f7 f8 7d 8c 77 dd b8 76 e5 0d b4 a0 9f cb ba 30 .n.J.k....a.*.....}.w..v.......0
09a0 99 35 f0 9b 77 80 54 c0 1f bc ea 70 00 01 2a 7b 79 45 34 50 08 2a 91 f3 1c 38 99 ac d1 01 7a 5e .5..w.T....p..*{yE4P.*...8....z^
09c0 c0 fe f1 02 da c9 97 c1 05 1c 29 da fc d7 0b ea 00 df be e6 e4 b7 28 a6 92 fc 6e 14 30 83 4f 57 ..........)...........(...n.0.OW
09e0 94 96 47 63 e0 e7 67 04 85 7a 5e 00 0e 87 17 d0 7a fd be 7f 1f e2 fa c6 40 56 11 fa 9d 2d a9 07 ..Gc..g..z^.....z.......@V...-..
0a00 44 3a d8 ff 00 6e 16 c0 d5 0d 77 7a 12 03 93 11 30 5f 12 3e 9e 65 c0 d9 b4 e7 05 6c f5 ac fb c4 D:...n....wz....0_.>.e.....l....
0a20 0b 10 82 01 9d 03 d3 89 79 25 29 b1 86 29 77 7b ab 03 18 c3 c0 91 58 01 17 c1 17 e0 c3 42 9e 0c ........y%)..)w{......X......B..
0a40 c2 82 de 04 e2 3c 05 b0 b4 fd eb 01 96 f5 d7 3e ec 5f b5 db bd 75 cf ba c7 aa fe cd 9a d5 4b c7 .....<.........>._...u........K.
0a60 b5 9b 05 30 1e 70 01 94 15 c5 b8 0c 28 df 6c 49 30 68 10 8e e6 28 38 8d 6c c3 ef 19 cd a3 a0 aa ...0.p......(.lI0h...(8.l.......
0a80 29 2d c6 49 cf 0b d8 ea 59 f7 89 17 00 74 71 18 b3 9c 61 60 27 82 93 7e 76 7c 5f a9 13 21 7c 3c )-.I....Y....tq...a`'..~v|_..!|<
0aa0 6f 28 01 9a 10 3d 7c 3c 06 4e c6 41 47 d8 04 e2 f4 bc 80 3d e5 05 04 df 44 1d 2c 92 45 0e 7c b8 o(...=|<.N.AG......=....D.,.E.|.
0ac0 20 b8 d3 f6 89 20 ee 65 08 15 97 92 16 c1 c5 0d 15 c2 45 d1 f3 02 b6 7a d6 7d e2 05 78 4f 51 df .......e..........E....z.}..xOQ.
0ae0 58 02 3a 52 04 44 34 10 3f 5a 87 15 c0 49 bf 9c d1 62 11 a0 0b b8 a8 f8 3d e7 37 c4 04 5a 5b 93 X.:R.D4.?Z...I...b......=.7..Z[.
0b00 5c 10 62 e5 f3 25 f1 56 eb ef f7 6f 8a b4 59 77 ed c3 fe 76 07 e6 cb 02 90 02 95 17 cf be c7 aa \.b..%.V...o..Yw...v............
0b20 fe 4d 6d d3 b3 3e 35 ae 1d 09 00 d8 b0 f3 6b 4b 8d 3f 8e e8 a4 fa ee 1b 2e 5c f1 c0 6a 70 9e d0 .Mm..>5.......kK.?.......\..jp..
0b40 70 12 75 ac a0 9f 9d 06 d2 e8 3e 49 80 55 fd 55 5d ed 5c 02 3c 35 ae 5d 46 04 01 34 e5 b4 a6 52 p.u.......>I.U.U].\.<5.]F..4...R
0b60 d7 04 ee 5f 56 50 db 17 e8 d8 41 cb 82 e2 bf a8 68 2d f8 40 27 2b 5d cf 0b e0 ae 3a 20 5e 80 f7 ..._VP....A.....h-.@'+]....:.^..
0b80 9c 48 29 a9 c9 03 9c 64 6b 69 e3 9f cf 68 f7 43 70 51 64 05 17 c0 22 0b c1 22 15 83 43 ce af 09 .H)....dki...h.CpQd...".."..C...
0ba0 6c f5 bc 00 1c 16 2f 40 08 60 3a e2 0e ff e9 0b 6d ff 41 c2 fe 41 02 9c 29 9a 7b 7e 4e 1c e0 64 l...../@.`:.....m.A..A..).{~N..d
0bc0 ca 49 f7 9e b6 7f dd dc 89 b4 12 3d 2f 80 e3 3c 24 5e 40 88 ed 53 12 38 3d 0a 14 6f 41 d1 7e 31 .I.........=/..<$^@..S.8=..oA.~1
0be0 63 f0 47 eb 02 17 82 58 c0 38 05 ea 69 c0 0b 04 b5 ff 59 06 bc 39 ee 79 01 54 02 0f 88 17 e0 2c c.G....X.8..i.....Y..9.y.T.....,
0c00 6d ff 48 32 d8 f6 32 03 be 0b d9 3e ce 8e 5a 6f 21 77 7c 59 01 1f ce f9 7c 9f 97 c0 c9 11 ef 31 m.H2..2....>..Zo!w|Y....|......1
0c20 4a 81 d7 d3 70 7c 3c f9 52 ee c4 df 9b 58 20 0f f1 f7 15 ee bb 61 d7 b5 d6 a5 ac 04 e0 e5 6a b7 J...p|<.R....X.......a........j.
0c40 6e 51 76 9f 8d d2 8f 76 bb 49 bb 70 ac db c9 da 62 5c ed 3d b7 e5 05 bc 64 5c f8 69 07 ce 20 49 nQv....v.I.p....b\.=....d\.i...I
0c60 b1 9f 68 40 19 ba 74 5b cd bf 6a e8 1e 1e 86 23 21 8a 78 5c 38 07 5c 96 9d 1f c3 7b 7a 03 e5 3a ..h@..t[..j....#!.x\8.\....{z..:
0c80 62 48 8b 19 e7 d6 e3 72 ee d0 08 8f e6 0e f4 db 46 e4 6c 27 b6 dc 93 d7 3d 8c bf 2f 5d 03 2b 6a bH.....r........F.l'....=../].+j
0ca0 e4 2e 47 81 66 65 44 ee 73 c6 f5 1c 5e c0 73 c7 b5 ab 23 20 8e a8 f8 5d dd 00 75 c1 89 15 a0 cd ..G.feD.s...^.s...#....]..u.....
0cc0 8f 30 f1 ed 11 90 1a ea 00 d9 92 0b 3c 35 c0 b2 a4 6a d4 f3 02 da c9 3e 24 5e 40 08 ea 54 21 59 .0..........<5...j.....>$^@..T!Y
0ce0 54 5e 02 1f af 78 04 9c 1c 51 d1 6b d1 6f 19 2c 84 d8 30 3a fa a7 0b 5a 0e 93 21 2d 05 ad 7b 5e T^...x...Q.k.o.,..0:...Z..!-..{^
0d00 00 80 03 e3 05 00 b8 5c 70 3c 71 88 4b f0 e0 2e af ca 4e 1a b4 47 c2 d5 82 8a a1 00 49 a3 37 19 .......\p<q.K.....N..G......I.7.
0d20 13 44 b5 3e 85 9e 17 80 c3 e1 05 b4 41 1e 2e 38 75 da 2c 20 32 04 87 64 15 09 1f e3 20 05 94 e2 .D.>........A..8u.,.2..d........
0d40 3b 53 01 13 18 24 61 d3 08 52 c5 1a d7 f3 02 82 db fa 30 78 01 2d be 5f 95 74 fe c4 46 e0 64 02 ;S...$a..R........0x.-._.t..F.d.
0d60 18 e3 31 cb 38 c1 ce 71 41 b8 00 18 45 12 a8 63 e0 64 2a 90 1a 8f 61 ca c5 9c c4 94 1e 3d 2f 00 ..1.8..qA...E..c.d*...a......=/.
0d80 87 c3 0b 00 38 c1 4a 00 1e 02 5a 09 c2 d3 f0 68 82 de 22 40 68 d8 7b 6e 8a 48 51 4c a4 b1 44 56 ....8.J...Z....h.."@h.{n.HQL..DV
0da0 58 a4 26 70 0b 64 80 88 d7 81 38 3d 2f 60 bf 78 01 00 a0 b4 42 92 c6 10 42 60 91 79 54 75 78 7e X.&p.d....8=/`.x....B...B`.yTux~
0dc0 47 1a b8 56 e1 c8 15 40 9c 1a c4 c6 a0 ac 81 a2 f2 9c 78 11 94 58 6c a0 86 f5 bc 80 3d e4 05 08 G..V...@..........x..Xl.....=...
0de0 20 8d 24 bc 37 b8 5a d4 70 d6 43 49 0f 13 dc c1 8d ed 48 a3 4a 0a 8c e3 08 b3 1c f0 b6 82 6d 3c ..$.7.Z.p.CI......H.J.........m<
0e00 46 13 5a 01 d6 f2 fb 49 d4 f3 02 00 1c 16 2f 60 80 06 aa 5e 22 6b 1c 8e 86 21 13 a8 ea 14 be cf F.Z....I....../`...^"k...!......
0e20 57 34 0f b5 f0 98 fa 1c ef 4a 46 0b a5 21 81 c4 22 a7 f4 bc 5e 04 33 f1 39 08 54 cf 0b d8 3d 2f W4.......JF..!.."...^.3.9.T...=/
0e40 a0 80 c7 d1 c0 23 01 cf f8 38 58 03 c7 23 e0 74 c2 60 91 36 66 60 29 1c de 1e 85 6c a2 9e 5a 7f .....#...8X..#.t.`.6f`)....l..Z.
0e60 1c 11 06 36 3a 78 15 37 81 38 3d 2f 60 8f 78 01 81 1c 9a 15 14 e5 bf 7e 07 fc 78 ce 89 6c 71 81 ...6:x.7.8=/`.x........~..x..lq.
0e80 d3 29 b1 fe c6 01 37 39 9d a7 3f 9e 03 ff fd 11 b8 b8 0e 8b 58 11 0c 3a 3b ee 79 01 5b 3d eb 3e .)....79..?.........X..:;.y.[=.>
0ea0 f1 02 ca 1a 78 7f 09 0c 0d f0 cb b7 c4 44 9c 67 2c c0 e0 6d b0 52 2c 17 ee f5 02 58 82 fe 80 e9 ....x........D.g,..m.R,....X....
0ec0 84 ba c1 b2 e8 f2 05 59 d7 f3 02 b6 7a d6 7d e2 05 24 06 38 1d 77 d1 3f 56 74 b1 7e ff f5 8e f0 .......Y....z.}..$.8.w.?Vt.~....
0ee0 ee d9 11 17 eb f1 84 0b a5 ac 79 34 9c 1c 01 28 a9 27 14 15 f0 cd 51 5f 2f 60 ab 67 dd 9b 7a 01 ..........y4...(.'....Q_/`.g..z.
0f00 ad 83 27 21 cc 7b 93 03 85 eb 62 fe c6 03 04 93 af 3b 82 93 18 98 17 c0 bc 0e ba 81 a3 52 18 c9 ..'!.{....b......;...........R..
0f20 10 52 b6 09 c4 e9 79 01 7b 56 2f 20 1c 45 d3 91 86 50 1e 65 6d 31 0c d9 42 5f 8d 99 27 b0 65 00 .R....y.{V/..E...P.em1..B_..'.e.
0f40 31 39 b4 c0 e9 91 86 bf 69 30 4c 3c 96 05 d9 c1 67 c7 d4 13 7a 5e 00 0e 8c 17 e0 69 e3 bf 7a 95 19......i0L<....g...z^.....i..z.
0f60 60 3a d6 a8 aa 50 0b c8 12 a6 9e 8e a8 0c de 2e ee 44 e3 f4 95 41 1c 49 7c be 62 82 49 2d 69 2a `:...P...........D...A.I|.b.I-i*
0f80 8e d3 9e 17 b0 d5 b3 ee 13 2f 00 a0 22 f7 25 f3 98 cf 01 6b 35 92 b8 41 62 88 04 5e ce 3a 6a 98 ........./..".%....k5..Ab..^.:j.
0fa0 75 c0 a7 6b 8f f3 25 30 5f 28 9c 4e 2c a2 88 8c e1 cb 39 17 4d 5f 2f 00 07 58 2f 40 30 d5 4b 92 u..k..%0_(.N,.....9.M_/..X/@0.K.
0fc0 c6 78 7d 3a 40 6c ba 68 a0 38 a2 a9 d7 49 0b 40 49 89 d3 93 21 c6 43 6e d8 65 4e 7d 60 ad 33 a8 .x}:@l.h.8...I.@I...!.Cn.eN}`.3.
0fe0 e7 05 ec 27 2f c0 03 c8 4b 0f a9 6a 9c 4e d9 51 58 7a 5a 5b 57 2f 7c 07 06 e5 85 c3 38 69 60 62 ...'/...K..j.N.QXzZ[W/|.....8i`b
1000 01 19 fe ee 02 8b 08 a2 e7 05 50 b3 3e b0 7a 01 95 05 b4 af 20 9a 06 59 49 7f 40 9b 17 60 96 75 ..........P.>.z........YI.@..`.u
1020 20 15 03 43 1d 06 b2 40 b1 2c 31 88 1d 54 a8 24 d6 16 95 ea 79 01 38 30 5e 00 80 e9 a0 8d f2 71 ...C...@.,1..T.$....y.80^......q
1040 10 21 28 b4 69 02 3f 20 44 04 79 d0 15 fc 7a 0a 48 e1 71 bd f0 f4 14 86 aa 22 93 e1 86 05 d0 f3 .!(.i.?.D.y...z.H.q......"......
1060 02 f6 b7 5e 80 52 ad f5 12 5c c1 77 cc c3 58 77 b1 9a 42 50 1a d4 75 c7 11 f4 ed e2 d0 74 21 f7 ...^.R...\.w..Xw..BP..u......t!.
1080 bc 00 1c 10 2f 40 74 21 60 17 33 a6 80 b1 9e 29 df 6e cd d2 10 10 d8 52 c3 1b 0b fc 78 01 5c cf ..../@t!`.3....).n.....R....x.\.
10a0 81 c8 74 f5 06 3b b8 fe a9 97 d2 d7 0b d8 bf 7a 01 81 a9 dc a6 8b 8f 43 55 50 21 ba d8 8c db 72 ..t..;.........z.......CUP!....r
10c0 31 a1 2f 89 19 0c da 06 d1 3c 64 0f f7 f5 02 7e 8b 71 7d ed f6 e1 0a f8 7c 49 b4 2f d6 80 8e 80 1./......<d....~.q}.....|I./....
10e0 65 c3 64 0f 5f 32 e0 fd 15 75 01 e7 81 4f 97 24 90 88 10 10 aa 63 62 04 57 59 c8 1c 76 19 e2 07 e.d._2...u...O.$.....cb.WY..v...
1100 d7 41 8e 3d 2f 60 bf 78 01 75 cd 9f 1d c4 dc fd b3 92 14 ef 93 71 08 97 8b 42 31 28 30 48 c6 68 .A.=/`.x.u...........q...B1(0H.h
1120 7e d7 01 b8 c8 f9 bd 34 58 00 69 42 02 49 cf 0b c0 e1 f0 02 be 39 22 d4 db 34 04 82 de 8c 01 ed ~......4X.iB.I.......9"..4......
1140 b8 20 bf 9d d2 99 95 07 77 f6 eb 63 4a 8a b2 04 26 31 70 14 91 44 32 d0 c0 c9 00 28 43 01 e9 9e ........w..cJ...&1p..D2....(C...
1160 17 80 c3 e1 05 c4 11 cf fc b2 ee 34 fe 2c 03 ce 7d a8 08 4e 0b 19 6f ee 24 8b cc 4a 60 12 36 cc ...........4.,..}..N..o.$..J`.6.
1180 97 eb 10 1d 54 03 73 b3 a1 6e 60 cf 0b d8 4f 5e 80 0c 94 b0 34 a2 95 32 4c 81 e3 29 31 80 71 1a ....T.s..n`...O^....4..2L..)1.q.
11a0 8e 42 03 f8 05 17 c1 34 d4 12 d4 1a 98 86 1a 01 0a fc be ea 79 01 ad 0e 70 20 bc 80 00 fa 98 c0 .B.....4............y...p.......
11c0 f7 5b e6 21 bc 2b 05 7e 5c 50 39 6e 41 a2 56 b1 6d 51 3f e7 59 2a ee 6a ce e8 21 2d 81 6f 4e 7a .[.!.+.~\P9nA.V.mQ?.Y*.j..!-.oNz
11e0 5e 00 17 ea 01 f1 02 da 12 f0 45 15 ca be 04 3d a8 6e 18 e6 ad 54 57 4b c8 ba 90 17 28 84 89 b5 ^.........E....=.n...TWK....(...
1200 85 23 bd e7 3b 5c 9b 24 aa e7 05 ec 67 bd 80 db 3c 81 02 68 02 88 55 87 4d 70 34 c2 2d 47 a0 35 .#..;\.$....g...<..h..U.Mp4.-G.5
1220 8c 65 c0 03 ac ef 16 4f 9b 29 4c 88 9e 17 40 45 e9 80 78 01 2a 94 87 31 11 cd eb 44 73 c2 55 0b .e.....O.)L...@E..x.*..1...Ds.U.
1240 b8 85 a4 90 6d 86 b0 34 e6 c4 27 51 07 00 29 c5 dd 5f ae 0b 0b 5f 05 94 6c 9d 10 62 cb 6b 1f f6 ....m..4..'Q..).._..._..l..b.k..
1260 3f 34 ed 84 7d fe 3d 7e 1f e3 5d 37 ae df e2 38 f7 cf fd 77 77 7c 8b 9c a6 60 14 71 e2 07 09 c7 ?4..}.=~..]7...8...ww|...`.q....
1280 dc 58 9a 89 2d 73 d8 7b 5a 02 71 d4 86 88 11 1b 10 22 58 13 9b 40 9c 9e 17 b0 5f f5 02 5c b0 4a .X..-s.{Z.q......"X..@...._..\.J
12a0 cb 86 a6 df 32 e7 58 cb aa f3 f4 99 a8 d3 17 ac a7 fd bf c8 38 e1 6d d9 59 ef 43 79 99 75 20 4e ....2.X.............8.m.Y.Cy.u.N
12c0 cf 0b d8 3f 5e 40 eb c0 39 1a 02 1f 2f 29 ce 55 48 02 79 7e c3 0c 21 91 ee e0 fc 44 73 41 d8 b0 ...?^@..9.../).UH.y~..!....DsA..
12e0 fb 17 39 e3 02 17 43 e2 00 72 2d 88 a3 5a 00 47 40 28 8f 58 8b 47 fd eb f5 95 f5 d7 3e ec 5f b5 ..9...C..r-..Z.G@(.X.G......>._.
1300 03 9f 7b 8f 55 fd 1b 81 a0 17 8e 6b 57 cd 79 26 7c fe 70 03 e4 21 71 74 1a d3 c7 af d5 7d 25 b0 ..{.U......kW.y&|.p..!qt.....}%.
1320 a8 81 0f 97 c0 45 00 8f a4 64 f8 78 9a 6c c8 15 dc d7 0b d8 cf 7a 01 ad a7 ef ec 18 68 24 f0 c3 .....E...d.x.l.......z......h$..
1340 35 fb 9a 90 d9 2c 2f 09 fe dc 4a 00 03 fc e2 0c f8 50 74 3a 41 1d 82 47 e3 a8 e7 05 6c f5 ac 7b 5....,/...J......Pt:A..G....l..{
1360 55 2f c0 53 c9 5b 66 b4 4a 44 49 be 20 40 84 d0 44 dd 31 25 3c ab 87 2e 32 20 b5 84 82 b5 02 bc U/.S.[f.JDI..@..D.1%<...2.......
1380 a6 c9 08 d1 f3 02 b6 7a d6 7d ab 17 d0 2a 72 4d 03 0c 23 7e 8e 03 fd 7b 90 e0 16 a4 f2 ad 64 a8 .......z.}...*rM..#~...{......d.
13a0 3b 3e e0 2c 23 64 3c 4c 83 4b 79 13 88 d3 f3 02 f6 8f 17 d0 06 84 88 8c 22 bf 6a 38 b1 3f 7c a2 ;>.,#d<L.Ky.............".j8.?|.
13c0 ed 3f 4c ba c5 32 48 80 63 4f 08 38 d2 c0 cd 92 e1 19 ce 6d c8 13 d8 f3 02 f6 98 17 10 ec fe 24 .?L..2H.cO.8.......m...........$
13e0 e2 2e 1f a7 3c eb 87 29 6b 06 b5 26 aa 00 71 82 41 82 db 1c c3 c7 23 fa 11 46 29 25 42 cf 0b c0 ....<..)k..&..q.A.....#..F)%B...
1400 81 f1 02 c2 a9 db a6 82 f1 c1 43 29 05 f1 8a 9b 2c 54 14 0b 0e a0 b6 bc 0c 02 9e 91 c6 74 f5 b7 ..........C)....,T...........t..
1420 38 42 cf 0b c0 e1 f0 02 58 3c ba 2b 11 5f 35 61 b7 7b fe bf ba 73 f6 6b 15 ea 07 06 ad bf 0d 17 8B......X<.+._5a.{...s.k........
1440 6f 21 48 81 0d 49 a2 7a 5e c0 fe f1 02 bc 67 0a b8 cf 57 8c f9 4f 8c c0 20 66 a8 ba 03 c5 7f bb o!H..I.z^.....g...W..O...f......
1460 38 9c a3 05 f0 53 c3 45 33 19 74 8c 61 ad c8 24 ae 9a 9e 17 70 1b 69 f3 52 5e 80 ff 8a d1 81 3e 8....S.E3.t.a..$....p.i.R^.....>
1480 a4 88 91 da 40 0b 87 13 6d a9 c8 05 07 51 59 11 f7 8f 82 23 af 6c 24 2a 6f e0 51 21 35 94 70 91 ....@...m....QY....#.l$*o.Q!5.p.
14a0 26 de b1 cc 37 48 80 9e 17 b0 7f bc 00 1e 01 02 6f 5f c7 98 cd 2a bc 3f 6f 30 19 51 2f 88 34 70 &...7H..........o_...*.?o0.Q/.4p
14c0 b5 64 fc ff e9 94 10 f1 28 11 38 3e 4e f0 fe a7 8a ca e2 90 47 82 f5 c0 a7 6b 1e 19 7d bd 00 1c .d......(.8>N.......G....k..}...
14e0 56 bd 00 21 3c b4 5f 42 83 b1 91 79 15 36 59 06 7c 77 16 1c 3c 21 f6 5f 09 07 e3 e6 10 c2 a3 ac V..!<._B...y.6Y.|w..<!._........
1500 a9 f4 cd 32 4a 8b 37 27 3c 26 7a 5e c0 6f 31 ae 1d 01 81 f0 ce 61 3c e0 02 58 e6 c0 20 05 d4 3c ...2J.7'<&z^.o1......a<..X.....<
1520 c4 2c 04 d6 2f cf 7b 0f 25 2c 4e a6 c0 c7 0b 7e 2f af 18 13 18 29 16 9b e8 79 01 38 b0 7a 01 c1 .,../.{.%,N....~/....)...y.8.z..
1540 1b e8 11 92 44 b9 30 99 35 f0 9b 77 c0 0f 5f 3a c9 7c 37 6d 7c 1e 12 47 0b 01 7c be e6 77 67 cb ....D.0.5..w.._:.|7m|..G..|..wg.
1560 0d 11 41 6e 45 e8 d5 43 c7 c8 36 6e d6 1a 0e d2 af 76 b5 2a 21 6f 3f 5f ce fd a3 dd be 2a 22 77 ..AnE..C..6n.....v.*!o?_.....*"w
1580 9b 71 b5 f7 dc 9e 17 f0 fc 71 ed a4 64 0c c8 ec 41 98 f8 45 c6 74 70 91 06 be 7d cd 09 6f a5 97 .q.......q..d...A..E.tp...}..o..
15a0 92 81 05 14 30 83 4f 57 3c d2 8e c6 cc 24 16 eb 0d dc c0 c6 3e 0e 86 78 e8 32 dd c6 cd aa c4 d3 ....0.OW<....$......>..x.2......
15c0 ae d6 bb 9f 57 ed f6 f3 59 37 86 76 f7 6d 33 ae f6 9e 5b f3 02 5e 30 ae 5d b4 c6 02 df bf 67 9d ....W...Y7.v.m3...[..^0.].....g.
15e0 e0 e9 90 d2 6b 18 42 bc e7 19 6e 13 42 0b 90 3c fa eb ff a1 32 9b c4 c0 24 54 10 6f 2c 75 81 b5 ....k.B...n.B..<....2...$T.o,u..
1600 31 81 3d 2f 60 3f 79 01 42 30 a0 73 60 3a 31 af 24 8f 82 61 ca dd de ea 00 c6 30 70 24 56 ac 1e 1.=/`?y.B0.s`:1.$..a......0p$V..
1620 de 66 0f 93 92 b8 80 94 3d 2f 20 e8 00 87 53 2f 40 08 06 74 0c 0c ed fe e3 51 60 fd 82 67 fa 28 .f......=/....S/@..t.....Q`..g.(
1640 e9 92 44 45 c1 69 64 1b 7e cf 68 4a 87 aa a6 b4 18 27 3d 2f 80 0b f5 80 78 01 40 87 bf cc 72 86 ..DE.id.~.hJ.....'=/....x.@...r.
1660 81 e5 21 23 f8 d9 31 9d 3c 77 17 8b 12 a1 64 fc 9c e5 62 95 e4 a2 38 99 6c c0 01 7a 5e c0 9e f3 ..!#..1.<w....d...b...8.l..z^...
1680 02 02 57 b1 0e cf b7 c8 a9 17 a4 86 30 6f 7b 3c c8 a0 00 d6 4d 57 40 7a be 64 2c c1 eb 69 cf 0b ..W.........0o{<....MW@z.d,..i..
16a0 00 70 58 bc 00 ef 29 ea 1b 4b 40 47 86 3a 82 3e 10 3f da 18 72 80 ef e5 72 d6 c6 3b 76 39 85 5d .pX...)..K@G.:.>.?..r...r..;v9.]
16c0 48 2f bb 3e 26 70 03 50 f2 5c ff 75 5f 2f e0 77 26 00 60 c3 ce af 2d 77 7c 1c 51 39 fd ee 9b c7 H/.>&p.P.\.u_/.w&.`...-w|.Q9....
16e0 19 40 da dc 40 4a 71 c1 b4 ac a0 9f 9d 86 ba c3 9b 40 9c 9e 17 b0 5f bc 80 f6 bd 02 21 25 9c a6 .@..@Jq..........@...._.....!%..
1700 52 d7 d8 2e 83 78 d5 04 10 28 b0 83 da 22 51 45 c5 e7 f2 81 4e b6 36 1e a0 e7 05 ec 27 2f c0 87 R....x...(..."QE....N.6.....'/..
1720 72 70 52 52 93 07 38 c9 d6 f2 6c 3f 9f 51 c1 43 48 0d 93 15 9c e8 45 c6 60 91 a2 22 88 74 7e cd rpRR..8...l?.Q.CH.....E.`..".t~.
1740 05 bd c3 c0 a6 ff 1f ed 6b ba 83 ff e6 57 c0 bb 0b 86 79 0b 00 bf fe 5f da fe af 8f 81 1f 3e 02 ........k....W....y...._......>.
1760 7f fa 1d 03 40 8d 06 de 9d d3 32 78 f3 0a f8 e9 0b 7d 01 7f f2 4b 66 17 f3 96 fd 5e 60 87 f4 96 ....@.....2x.....}...Kf....^`...
1780 be bd 58 09 d0 92 93 7c 7a c4 78 40 29 28 da 2f 66 21 6b f8 9d e2 d1 91 e2 77 4e a6 5d 96 b0 d6 ..X....|z.x@)(./f!k......wN.]...
17a0 2b 38 34 fd 02 38 b8 e6 2c 6d ff cb 1b 3a d9 3e 2f 02 3b 58 11 df 1f 0f 78 c6 33 4d 2c f0 e1 9c +84..8..,m...:.>/.;X....x.3M,...
17c0 38 c1 e7 60 39 20 58 03 af a7 e1 f8 e8 5f e9 61 35 29 29 f6 13 0d 28 43 97 6e ab f9 b7 19 c3 87 8..`9.X......_.a5))...(C.n......
17e0 49 d8 fd 11 93 4a 39 07 5c 96 9d fe e2 3d 30 cf 29 39 7a 09 70 80 47 40 1c 51 f1 bb ba 01 ea a2 I....J9.\....=0.)9z.p.G@.Q......
1800 ab 18 7e 39 e3 df a3 3b 47 40 6a a8 f8 65 4b 6a fe a9 01 96 25 95 c3 b5 ec e0 be ed af d6 d9 7a ..~9...;G@j..eKj....%..........z
1820 58 47 03 42 bc 1f af 78 04 9c 84 22 50 2d 42 2b 83 85 10 1b 7a 45 7f ba 20 16 30 19 d2 52 d0 ba XG.B...x..."P-B+....zE....0..R..
1840 97 00 87 38 ff b8 5c 74 75 02 b5 62 5f 51 b1 aa 78 2b 0d da 23 e1 6a d1 66 16 a7 fb f8 26 63 7e ...8..\tu..b_Q..x+..#.j.f....&c~
1860 40 80 8b a8 97 00 07 d6 54 28 0d af 64 97 05 44 4a 6a fb 59 45 c2 c7 78 10 1c 41 a1 9c ac 0a 98 @.......T(..d..DJj.YE..x..A.....
1880 c0 20 c1 6d 51 89 ab f9 86 a2 51 7d db cf 56 37 dc e9 8b 1c 88 8d c0 c9 44 60 98 b0 7e e0 20 e9 ...mQ.....Q}..V7........D`..~...
18a0 3c a5 2e 00 46 65 45 c8 f8 64 2a 90 06 fa 18 24 03 44 b4 ea 17 c0 e1 99 81 2e 44 59 43 40 2b 01 <...FeE..d*....$.D........DYC@+.
18c0 a5 04 04 b8 9b db 18 cd 2a a4 80 71 0d 25 03 84 40 1a 4b 2a 7e 86 52 42 4a e2 01 fd 02 38 b4 23 ........*..q.%..@.K*~.RBJ....8.#
18e0 40 2b 24 69 0c 21 04 16 99 47 55 87 78 08 47 14 50 ab 90 3b 50 00 71 6a 10 1b 13 8a 49 fa db 70 @+$i.!...GU.x.G.P..;P.qj....I..p
1900 31 1b 82 99 9c ef 75 80 83 33 01 d3 48 c2 7b 83 ab 45 0d 67 59 2f a8 cd 0d d8 d8 8e 34 aa a4 c0 1.....u..3..H.{..E.gY/......4...
1920 38 8e 30 cb 01 6f 2b d8 c6 63 34 a1 ff c0 5a 7e 3f 89 7a 09 70 70 6d 80 06 aa 5e a2 ae 1d 69 e1 8.0..o+..c4...Z~?.z.ppm...^...i.
1940 c1 12 68 15 be cf 57 f4 fe 69 e1 31 f5 39 ca 32 27 51 34 24 90 68 95 c6 eb 05 70 35 eb 25 c0 c1 ..h...W..i.1.9.2'Q4$.h....p5.%..
1960 b5 02 1e 47 03 8f 04 74 ea c4 c1 1a 38 1e 01 a7 13 06 8b b4 31 03 4b e1 f0 f6 28 64 13 f5 d4 13 ...G...t....8.......1.K...(d....
1980 e2 88 30 b0 d1 54 12 fb 05 70 60 20 40 5e 11 c5 ab 1d f0 ee 33 c5 f8 c9 69 87 0b 9c 4e b9 00 2e ..0..T...p`.@^......3...i...N...
19a0 16 2c 2e 3d b1 c0 a7 19 30 5f 00 af 5e 01 83 01 99 41 93 61 c8 2a d6 bf d5 c3 6a 65 0d bc bf a4 .,.=....0_..^....A.a.*....je....
19c0 27 ef 97 6f 49 0f 73 9e b1 00 83 b7 21 6a d9 d2 21 74 bd 00 96 a0 3f 60 3a a1 6e b0 2c ba 7c 41 '..oI.s.....!j..!t....?`:.n.,.|A
19e0 eb eb 06 f6 6d 2f 5b 62 80 d3 71 17 fd 63 45 17 eb f7 5f ef 08 ef 9e 1d f1 9c 3f 9e 70 a1 94 35 ....m/[b..q..cE..._.......?.p..5
1a00 8f 86 93 23 00 25 f5 84 a2 62 05 92 5e 09 3c 34 43 40 30 c9 63 d5 50 c4 17 ae 8b f9 1b 0f 10 4c ...#.%...b..^.<4C@0.c.P........L
1a20 3e 7e 57 2b 02 3e f3 02 98 d7 41 37 70 0c 14 89 64 08 29 eb 5f e9 81 01 41 e0 ee 9e 8e 34 84 f2 >~W+.>....A7p...d.)._...A....4..
1a40 28 6b 8b 61 4c f3 ef d5 98 79 02 5b 06 10 93 43 0b 9c 1e 69 f8 9b 06 c3 c4 63 59 50 07 38 3b 0e (k.aL....y.[...C...i.....cYP.8;.
1a60 a4 dd fe 95 1e 9e 22 a8 a4 c0 64 9a 40 cc 6a fc f8 d1 b2 16 90 0d b4 35 dd 01 3d 00 90 26 1a 3a ......"...d.@.j........5..=..&.:
1a80 31 98 65 0e 9f af 2c e3 05 62 7a 12 ad ed 17 c0 41 b6 65 01 7c c9 3c e6 73 c0 5a 8d 24 6e 90 18 1.e...,..bz.....A.e.|.<.s.Z.$n..
1aa0 22 81 97 b3 8e 1a 66 1d f0 e9 da e3 7c 09 cc 17 0a a7 13 cb 52 71 0a b8 9c 73 01 f4 3a c0 01 36 ".....f.....|.......Rq...s..:..6
1ac0 29 98 ea 25 49 63 bc 3e 1d 20 36 5d 34 50 1c d1 24 ec a4 05 a0 a4 c4 e9 c9 10 e3 21 e3 c9 97 39 )..%Ic.>..6]4P..$..........!...9
1ae0 f5 01 ad 7a 09 70 88 27 00 f2 d2 43 aa 1a a7 53 76 14 96 cc eb d6 d5 0b df 81 41 79 e1 30 4e 1a ...z.p.'...C...Sv.........Ay.0N.
1b00 98 58 40 86 bf bb c0 22 42 1f 12 76 98 ad b2 80 6b 2a 88 26 47 9e 65 90 c2 23 d2 b4 ed ab ba cb .X@...."B..v....k*.&G.e..#......
1b20 a7 c4 c0 50 07 61 0b 14 cb 05 e0 2c d4 9d 4a 62 4d af 03 1c a0 19 88 ae 34 9c 80 83 08 41 a1 4d ...P.a.....,..JbM.......4....A.M
1b40 c3 78 80 36 21 a4 07 5d c1 af a7 80 14 1e d7 0b 4f 4f 61 a8 2a 32 19 76 a5 e7 fb 76 60 4d 05 6a .x.6!..]........OOa.*2.v...v`M.j
1b60 58 15 28 6c fe 8e 79 18 eb 2e 63 a8 08 95 c6 ad ed 38 82 be 5d 1c 3a 94 8e eb 5f e7 61 6d ff d6 X.(l..y...c......8..].:..._.am..
1b80 9b 77 31 63 0a 18 eb 99 f2 ed 36 7d 7d 08 08 6c a9 e1 8d 05 7e bc 60 fe c0 c8 74 e9 63 6e 15 ca .w1c......6}}..l....~.`...t.cn..
1ba0 fe ad 1e de 02 50 21 f3 47 6c 70 9b d7 a0 8d 04 f6 77 88 6a 42 10 09 9c 0e bb 50 b1 96 43 d0 7e .....P!.Glp......w.jB.....P..C.~
1bc0 ad 97 00 bf 83 39 f9 5a bf f5 97 57 f0 5f 2e 51 c5 51 60 28 1b 60 d9 30 fb d7 97 0c 78 7f 05 34 .....9.Z...W._.Q.Q`(.`.0....x..4
1be0 35 8f 83 cf d7 c4 0b da 70 31 9d 10 23 b8 ca 42 e6 b0 4b c0 39 98 ff 03 a3 89 b0 a5 66 18 25 07 5.......p1..#..B..K.9.......f.%.
1c00 00 00 00 00 49 45 4e 44 ae 42 60 82 ....IEND.B`.
span>const_iterator iter = knownNodes.begin(); iter != knownNodes.end(); ++iter) { if (iter->name == name) { return iter->id; } } SQLOK(sqlite3_bind_text(stmt_knownNode_insert, 1, name.c_str(), name.size(), NULL)); SQLRES(sqlite3_step(stmt_knownNode_insert), SQLITE_DONE); SQLOK(sqlite3_reset(stmt_knownNode_insert)); int id = sqlite3_last_insert_rowid(db); registerNewNode(id, name); return id; } const char * RollbackManager::getActorName(const int id) { for (std::vector<Entity>::const_iterator iter = knownActors.begin(); iter != knownActors.end(); ++iter) { if (iter->id == id) { return iter->name.c_str(); } } return ""; } const char * RollbackManager::getNodeName(const int id) { for (std::vector<Entity>::const_iterator iter = knownNodes.begin(); iter != knownNodes.end(); ++iter) { if (iter->id == id) { return iter->name.c_str(); } } return ""; } bool RollbackManager::createTables() { SQLOK(sqlite3_exec(db, "CREATE TABLE IF NOT EXISTS `actor` (\n" " `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\n" " `name` TEXT NOT NULL\n" ");\n" "CREATE TABLE IF NOT EXISTS `node` (\n" " `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\n" " `name` TEXT NOT NULL\n" ");\n" "CREATE TABLE IF NOT EXISTS `action` (\n" " `id` INTEGER PRIMARY KEY AUTOINCREMENT,\n" " `actor` INTEGER NOT NULL,\n" " `timestamp` TIMESTAMP NOT NULL,\n" " `type` INTEGER NOT NULL,\n" " `list` TEXT,\n" " `index` INTEGER,\n" " `add` INTEGER,\n" " `stackNode` INTEGER,\n" " `stackQuantity` INTEGER,\n" " `nodeMeta` INTEGER,\n" " `x` INT,\n" " `y` INT,\n" " `z` INT,\n" " `oldNode` INTEGER,\n" " `oldParam1` INTEGER,\n" " `oldParam2` INTEGER,\n" " `oldMeta` TEXT,\n" " `newNode` INTEGER,\n" " `newParam1` INTEGER,\n" " `newParam2` INTEGER,\n" " `newMeta` TEXT,\n" " `guessedActor` INTEGER,\n" " FOREIGN KEY (`actor`) REFERENCES `actor`(`id`),\n" " FOREIGN KEY (`stackNode`) REFERENCES `node`(`id`),\n" " FOREIGN KEY (`oldNode`) REFERENCES `node`(`id`),\n" " FOREIGN KEY (`newNode`) REFERENCES `node`(`id`)\n" ");\n" "CREATE INDEX IF NOT EXISTS `actionIndex` ON `action`(`x`,`y`,`z`,`timestamp`,`actor`);\n", NULL, NULL, NULL)); verbosestream << "SQL Rollback: SQLite3 database structure was created" << std::endl; return true; } bool RollbackManager::initDatabase() { verbosestream << "RollbackManager: Database connection setup" << std::endl; bool needs_create = !fs::PathExists(database_path); SQLOK(sqlite3_open_v2(database_path.c_str(), &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL)); if (needs_create) { createTables(); } SQLOK(sqlite3_prepare_v2(db, "INSERT INTO `action` (\n" " `actor`, `timestamp`, `type`,\n" " `list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodeMeta`,\n" " `x`, `y`, `z`,\n" " `oldNode`, `oldParam1`, `oldParam2`, `oldMeta`,\n" " `newNode`, `newParam1`, `newParam2`, `newMeta`,\n" " `guessedActor`\n" ") VALUES (\n" " ?, ?, ?,\n" " ?, ?, ?, ?, ?, ?,\n" " ?, ?, ?,\n" " ?, ?, ?, ?,\n" " ?, ?, ?, ?,\n" " ?" ");", -1, &stmt_insert, NULL)); SQLOK(sqlite3_prepare_v2(db, "REPLACE INTO `action` (\n" " `actor`, `timestamp`, `type`,\n" " `list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodeMeta`,\n" " `x`, `y`, `z`,\n" " `oldNode`, `oldParam1`, `oldParam2`, `oldMeta`,\n" " `newNode`, `newParam1`, `newParam2`, `newMeta`,\n" " `guessedActor`, `id`\n" ") VALUES (\n" " ?, ?, ?,\n" " ?, ?, ?, ?, ?, ?,\n" " ?, ?, ?,\n" " ?, ?, ?, ?,\n" " ?, ?, ?, ?,\n" " ?, ?\n" ");", -1, &stmt_replace, NULL)); SQLOK(sqlite3_prepare_v2(db, "SELECT\n" " `actor`, `timestamp`, `type`,\n" " `list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodemeta`,\n" " `x`, `y`, `z`,\n" " `oldNode`, `oldParam1`, `oldParam2`, `oldMeta`,\n" " `newNode`, `newParam1`, `newParam2`, `newMeta`,\n" " `guessedActor`\n" " FROM `action`\n" " WHERE `timestamp` >= ?\n" " ORDER BY `timestamp` DESC, `id` DESC", -1, &stmt_select, NULL)); SQLOK(sqlite3_prepare_v2(db, "SELECT\n" " `actor`, `timestamp`, `type`,\n" " `list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodemeta`,\n" " `x`, `y`, `z`,\n" " `oldNode`, `oldParam1`, `oldParam2`, `oldMeta`,\n" " `newNode`, `newParam1`, `newParam2`, `newMeta`,\n" " `guessedActor`\n" "FROM `action`\n" "WHERE `timestamp` >= ?\n" " AND `x` IS NOT NULL\n" " AND `y` IS NOT NULL\n" " AND `z` IS NOT NULL\n" " AND `x` BETWEEN ? AND ?\n" " AND `y` BETWEEN ? AND ?\n" " AND `z` BETWEEN ? AND ?\n" "ORDER BY `timestamp` DESC, `id` DESC\n" "LIMIT 0,?", -1, &stmt_select_range, NULL)); SQLOK(sqlite3_prepare_v2(db, "SELECT\n" " `actor`, `timestamp`, `type`,\n" " `list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodemeta`,\n" " `x`, `y`, `z`,\n" " `oldNode`, `oldParam1`, `oldParam2`, `oldMeta`,\n" " `newNode`, `newParam1`, `newParam2`, `newMeta`,\n" " `guessedActor`\n" "FROM `action`\n" "WHERE `timestamp` >= ?\n" " AND `actor` = ?\n" "ORDER BY `timestamp` DESC, `id` DESC\n", -1, &stmt_select_withActor, NULL)); SQLOK(sqlite3_prepare_v2(db, "SELECT `id`, `name` FROM `actor`", -1, &stmt_knownActor_select, NULL)); SQLOK(sqlite3_prepare_v2(db, "INSERT INTO `actor` (`name`) VALUES (?)", -1, &stmt_knownActor_insert, NULL)); SQLOK(sqlite3_prepare_v2(db, "SELECT `id`, `name` FROM `node`", -1, &stmt_knownNode_select, NULL)); SQLOK(sqlite3_prepare_v2(db, "INSERT INTO `node` (`name`) VALUES (?)", -1, &stmt_knownNode_insert, NULL)); verbosestream << "SQL prepared statements setup correctly" << std::endl; while (sqlite3_step(stmt_knownActor_select) == SQLITE_ROW) { registerNewActor( sqlite3_column_int(stmt_knownActor_select, 0), reinterpret_cast<const char *>(sqlite3_column_text(stmt_knownActor_select, 1)) ); } SQLOK(sqlite3_reset(stmt_knownActor_select)); while (sqlite3_step(stmt_knownNode_select) == SQLITE_ROW) { registerNewNode( sqlite3_column_int(stmt_knownNode_select, 0), reinterpret_cast<const char *>(sqlite3_column_text(stmt_knownNode_select, 1)) ); } SQLOK(sqlite3_reset(stmt_knownNode_select)); return needs_create; } bool RollbackManager::registerRow(const ActionRow & row) { sqlite3_stmt * stmt_do = (row.id) ? stmt_replace : stmt_insert; bool nodeMeta = false; SQLOK(sqlite3_bind_int (stmt_do, 1, row.actor)); SQLOK(sqlite3_bind_int64(stmt_do, 2, row.timestamp)); SQLOK(sqlite3_bind_int (stmt_do, 3, row.type)); if (row.type == RollbackAction::TYPE_MODIFY_INVENTORY_STACK) { const std::string & loc = row.location; nodeMeta = (loc.substr(0, 9) == "nodemeta:"); SQLOK(sqlite3_bind_text(stmt_do, 4, row.list.c_str(), row.list.size(), NULL)); SQLOK(sqlite3_bind_int (stmt_do, 5, row.index)); SQLOK(sqlite3_bind_int (stmt_do, 6, row.add)); SQLOK(sqlite3_bind_int (stmt_do, 7, row.stack.id)); SQLOK(sqlite3_bind_int (stmt_do, 8, row.stack.count)); SQLOK(sqlite3_bind_int (stmt_do, 9, (int) nodeMeta)); if (nodeMeta) { std::string::size_type p1, p2; p1 = loc.find(':') + 1; p2 = loc.find(','); std::string x = loc.substr(p1, p2 - p1); p1 = p2 + 1; p2 = loc.find(',', p1); std::string y = loc.substr(p1, p2 - p1); std::string z = loc.substr(p2 + 1); SQLOK(sqlite3_bind_int(stmt_do, 10, atoi(x.c_str()))); SQLOK(sqlite3_bind_int(stmt_do, 11, atoi(y.c_str()))); SQLOK(sqlite3_bind_int(stmt_do, 12, atoi(z.c_str()))); } } else { SQLOK(sqlite3_bind_null(stmt_do, 4)); SQLOK(sqlite3_bind_null(stmt_do, 5)); SQLOK(sqlite3_bind_null(stmt_do, 6)); SQLOK(sqlite3_bind_null(stmt_do, 7)); SQLOK(sqlite3_bind_null(stmt_do, 8)); SQLOK(sqlite3_bind_null(stmt_do, 9)); } if (row.type == RollbackAction::TYPE_SET_NODE) { SQLOK(sqlite3_bind_int (stmt_do, 10, row.x)); SQLOK(sqlite3_bind_int (stmt_do, 11, row.y)); SQLOK(sqlite3_bind_int (stmt_do, 12, row.z)); SQLOK(sqlite3_bind_int (stmt_do, 13, row.oldNode)); SQLOK(sqlite3_bind_int (stmt_do, 14, row.oldParam1)); SQLOK(sqlite3_bind_int (stmt_do, 15, row.oldParam2)); SQLOK(sqlite3_bind_text(stmt_do, 16, row.oldMeta.c_str(), row.oldMeta.size(), NULL)); SQLOK(sqlite3_bind_int (stmt_do, 17, row.newNode)); SQLOK(sqlite3_bind_int (stmt_do, 18, row.newParam1)); SQLOK(sqlite3_bind_int (stmt_do, 19, row.newParam2)); SQLOK(sqlite3_bind_text(stmt_do, 20, row.newMeta.c_str(), row.newMeta.size(), NULL)); SQLOK(sqlite3_bind_int (stmt_do, 21, row.guessed ? 1 : 0)); } else { if (!nodeMeta) { SQLOK(sqlite3_bind_null(stmt_do, 10)); SQLOK(sqlite3_bind_null(stmt_do, 11)); SQLOK(sqlite3_bind_null(stmt_do, 12)); } SQLOK(sqlite3_bind_null(stmt_do, 13)); SQLOK(sqlite3_bind_null(stmt_do, 14)); SQLOK(sqlite3_bind_null(stmt_do, 15)); SQLOK(sqlite3_bind_null(stmt_do, 16)); SQLOK(sqlite3_bind_null(stmt_do, 17)); SQLOK(sqlite3_bind_null(stmt_do, 18)); SQLOK(sqlite3_bind_null(stmt_do, 19)); SQLOK(sqlite3_bind_null(stmt_do, 20)); SQLOK(sqlite3_bind_null(stmt_do, 21)); } if (row.id) { SQLOK(sqlite3_bind_int(stmt_do, 22, row.id)); } int written = sqlite3_step(stmt_do); SQLOK(sqlite3_reset(stmt_do)); return written == SQLITE_DONE; } const std::list<ActionRow> RollbackManager::actionRowsFromSelect(sqlite3_stmt* stmt) { std::list<ActionRow> rows; const unsigned char * text; size_t size; while (sqlite3_step(stmt) == SQLITE_ROW) { ActionRow row; row.actor = sqlite3_column_int (stmt, 0); row.timestamp = sqlite3_column_int64(stmt, 1); row.type = sqlite3_column_int (stmt, 2); row.nodeMeta = 0; if (row.type == RollbackAction::TYPE_MODIFY_INVENTORY_STACK) { text = sqlite3_column_text (stmt, 3); size = sqlite3_column_bytes(stmt, 3); row.list = std::string(reinterpret_cast<const char*>(text), size); row.index = sqlite3_column_int(stmt, 4); row.add = sqlite3_column_int(stmt, 5); row.stack.id = sqlite3_column_int(stmt, 6); row.stack.count = sqlite3_column_int(stmt, 7); row.nodeMeta = sqlite3_column_int(stmt, 8); } if (row.type == RollbackAction::TYPE_SET_NODE || row.nodeMeta) { row.x = sqlite3_column_int(stmt, 9); row.y = sqlite3_column_int(stmt, 10); row.z = sqlite3_column_int(stmt, 11); } if (row.type == RollbackAction::TYPE_SET_NODE) { row.oldNode = sqlite3_column_int(stmt, 12); row.oldParam1 = sqlite3_column_int(stmt, 13); row.oldParam2 = sqlite3_column_int(stmt, 14); text = sqlite3_column_text (stmt, 15); size = sqlite3_column_bytes(stmt, 15); row.oldMeta = std::string(reinterpret_cast<const char*>(text), size); row.newNode = sqlite3_column_int(stmt, 16); row.newParam1 = sqlite3_column_int(stmt, 17); row.newParam2 = sqlite3_column_int(stmt, 18); text = sqlite3_column_text(stmt, 19); size = sqlite3_column_bytes(stmt, 19); row.newMeta = std::string(reinterpret_cast<const char*>(text), size); row.guessed = sqlite3_column_int(stmt, 20); } if (row.nodeMeta) { row.location = "nodemeta:"; row.location += itos(row.x); row.location += ','; row.location += itos(row.y); row.location += ','; row.location += itos(row.z); } else { row.location = getActorName(row.actor); } rows.push_back(row); } SQLOK(sqlite3_reset(stmt)); return rows; } ActionRow RollbackManager::actionRowFromRollbackAction(const RollbackAction & action) { ActionRow row; row.id = 0; row.actor = getActorId(action.actor); row.timestamp = action.unix_time; row.type = action.type; if (row.type == RollbackAction::TYPE_MODIFY_INVENTORY_STACK) { row.location = action.inventory_location; row.list = action.inventory_list; row.index = action.inventory_index; row.add = action.inventory_add; row.stack = action.inventory_stack; row.stack.id = getNodeId(row.stack.name); } else { row.x = action.p.X; row.y = action.p.Y; row.z = action.p.Z; row.oldNode = getNodeId(action.n_old.name); row.oldParam1 = action.n_old.param1; row.oldParam2 = action.n_old.param2; row.oldMeta = action.n_old.meta; row.newNode = getNodeId(action.n_new.name); row.newParam1 = action.n_new.param1; row.newParam2 = action.n_new.param2; row.newMeta = action.n_new.meta; row.guessed = action.actor_is_guess; } return row; } const std::list<RollbackAction> RollbackManager::rollbackActionsFromActionRows( const std::list<ActionRow> & rows) { std::list<RollbackAction> actions; for (const ActionRow &row : rows) { RollbackAction action; action.actor = (row.actor) ? getActorName(row.actor) : ""; action.unix_time = row.timestamp; action.type = static_cast<RollbackAction::Type>(row.type); switch (action.type) { case RollbackAction::TYPE_MODIFY_INVENTORY_STACK: action.inventory_location = row.location; action.inventory_list = row.list; action.inventory_index = row.index; action.inventory_add = row.add; action.inventory_stack = row.stack; if (action.inventory_stack.name.empty()) { action.inventory_stack.name = getNodeName(row.stack.id); } break; case RollbackAction::TYPE_SET_NODE: action.p = v3s16(row.x, row.y, row.z); action.n_old.name = getNodeName(row.oldNode); action.n_old.param1 = row.oldParam1; action.n_old.param2 = row.oldParam2; action.n_old.meta = row.oldMeta; action.n_new.name = getNodeName(row.newNode); action.n_new.param1 = row.newParam1; action.n_new.param2 = row.newParam2; action.n_new.meta = row.newMeta; break; default: throw ("W.T.F."); break; } actions.push_back(action); } return actions; } const std::list<ActionRow> RollbackManager::getRowsSince(time_t firstTime, const std::string & actor) { sqlite3_stmt *stmt_stmt = actor.empty() ? stmt_select : stmt_select_withActor; sqlite3_bind_int64(stmt_stmt, 1, firstTime); if (!actor.empty()) { sqlite3_bind_int(stmt_stmt, 2, getActorId(actor)); } const std::list<ActionRow> & rows = actionRowsFromSelect(stmt_stmt); sqlite3_reset(stmt_stmt); return rows; } const std::list<ActionRow> RollbackManager::getRowsSince_range( time_t start_time, v3s16 p, int range, int limit) { sqlite3_bind_int64(stmt_select_range, 1, start_time); sqlite3_bind_int (stmt_select_range, 2, static_cast<int>(p.X - range)); sqlite3_bind_int (stmt_select_range, 3, static_cast<int>(p.X + range)); sqlite3_bind_int (stmt_select_range, 4, static_cast<int>(p.Y - range)); sqlite3_bind_int (stmt_select_range, 5, static_cast<int>(p.Y + range)); sqlite3_bind_int (stmt_select_range, 6, static_cast<int>(p.Z - range)); sqlite3_bind_int (stmt_select_range, 7, static_cast<int>(p.Z + range)); sqlite3_bind_int (stmt_select_range, 8, limit); const std::list<ActionRow> & rows = actionRowsFromSelect(stmt_select_range); sqlite3_reset(stmt_select_range); return rows; } const std::list<RollbackAction> RollbackManager::getActionsSince_range( time_t start_time, v3s16 p, int range, int limit) { return rollbackActionsFromActionRows(getRowsSince_range(start_time, p, range, limit)); } const std::list<RollbackAction> RollbackManager::getActionsSince( time_t start_time, const std::string & actor) { return rollbackActionsFromActionRows(getRowsSince(start_time, actor)); } void RollbackManager::migrate(const std::string & file_path) { std::cout << "Migrating from rollback.txt to rollback.sqlite." << std::endl; std::ifstream fh(file_path.c_str(), std::ios::in | std::ios::ate); if (!fh.good()) { throw FileNotGoodException("Unable to open rollback.txt"); } std::streampos file_size = fh.tellg(); if (file_size < 10) { errorstream << "Empty rollback log." << std::endl; return; } fh.seekg(0); sqlite3_stmt *stmt_begin; sqlite3_stmt *stmt_commit; SQLOK(sqlite3_prepare_v2(db, "BEGIN", -1, &stmt_begin, NULL)); SQLOK(sqlite3_prepare_v2(db, "COMMIT", -1, &stmt_commit, NULL)); std::string bit; int i = 0; time_t start = time(0); time_t t = start; SQLRES(sqlite3_step(stmt_begin), SQLITE_DONE); sqlite3_reset(stmt_begin); do { ActionRow row; row.id = 0; // Get the timestamp std::getline(fh, bit, ' '); bit = trim(bit); if (!atoi(bit.c_str())) {